@tricoteuses/assemblee 1.9.12 → 1.10.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 (237) hide show
  1. package/README.md +0 -5
  2. package/lib/api.js +1 -1
  3. package/lib/api.mjs +1 -1
  4. package/lib/bugs/acteur-00010/plugin.test.js +5 -5
  5. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  6. package/lib/bugs/acteur-00010.js +17 -18
  7. package/lib/bugs/acteur-00010.mjs +1 -1
  8. package/lib/bugs/agenda-00002/plugin.test.js +6 -6
  9. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
  10. package/lib/bugs/agenda-00002.js +31 -32
  11. package/lib/bugs/agenda-00002.mjs +3 -3
  12. package/lib/bugs/agenda-00008/plugin.test.js +5 -5
  13. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  14. package/lib/bugs/agenda-00008.js +17 -18
  15. package/lib/bugs/agenda-00008.mjs +1 -1
  16. package/lib/bugs/agenda-00011/plugin.test.js +10 -10
  17. package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
  18. package/lib/bugs/agenda-00011.js +28 -29
  19. package/lib/bugs/agenda-00011.mjs +3 -3
  20. package/lib/bugs.js +27 -29
  21. package/lib/bugs.mjs +3 -3
  22. package/lib/cleaners/actes_legislatifs.js +5 -5
  23. package/lib/cleaners/actes_legislatifs.mjs +1 -1
  24. package/lib/cleaners/acteurs.js +5 -5
  25. package/lib/cleaners/acteurs.mjs +1 -1
  26. package/lib/cleaners/amendements.js +5 -5
  27. package/lib/cleaners/amendements.mjs +1 -1
  28. package/lib/cleaners/debats.js +1 -1
  29. package/lib/cleaners/debats.mjs +1 -1
  30. package/lib/cleaners/documents.js +5 -5
  31. package/lib/cleaners/documents.mjs +1 -1
  32. package/lib/cleaners/dossiers_legislatifs.js +5 -5
  33. package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
  34. package/lib/cleaners/index.d.ts +0 -1
  35. package/lib/cleaners/index.js +1 -8
  36. package/lib/cleaners/index.mjs +1 -2
  37. package/lib/cleaners/organes.js +2 -2
  38. package/lib/cleaners/organes.mjs +1 -1
  39. package/lib/cleaners/questions.js +1 -1
  40. package/lib/cleaners/questions.mjs +1 -1
  41. package/lib/cleaners/reunions.js +5 -5
  42. package/lib/cleaners/reunions.mjs +1 -1
  43. package/lib/cleaners/scrutins.js +8 -8
  44. package/lib/cleaners/scrutins.mjs +1 -1
  45. package/lib/cleaners/xml.js +8 -8
  46. package/lib/cleaners/xml.mjs +1 -1
  47. package/lib/datasets.d.ts +1 -13
  48. package/lib/datasets.js +10 -29
  49. package/lib/datasets.mjs +2 -21
  50. package/lib/dates.js +3 -4
  51. package/lib/dates.mjs +1 -1
  52. package/lib/dossiers_legislatifs.js +8 -8
  53. package/lib/dossiers_legislatifs.mjs +1 -1
  54. package/lib/file_systems.js +15 -14
  55. package/lib/file_systems.mjs +3 -3
  56. package/lib/git.js +5 -5
  57. package/lib/git.mjs +1 -1
  58. package/lib/index.d.ts +1 -0
  59. package/lib/index.js +8 -1
  60. package/lib/index.mjs +2 -1
  61. package/lib/inserters.js +4 -4
  62. package/lib/inserters.mjs +1 -1
  63. package/lib/loaders.d.ts +0 -5
  64. package/lib/loaders.js +255 -299
  65. package/lib/loaders.mjs +1 -13
  66. package/lib/logger.js +1 -1
  67. package/lib/logger.mjs +1 -1
  68. package/lib/organes.js +1 -1
  69. package/lib/organes.mjs +1 -1
  70. package/lib/parsers/documents.js +11 -11
  71. package/lib/parsers/documents.mjs +1 -1
  72. package/lib/parsers/index.d.ts +1 -0
  73. package/lib/parsers/index.js +8 -1
  74. package/lib/parsers/index.mjs +2 -1
  75. package/lib/parsers/recherche_amendements.js +17 -15
  76. package/lib/parsers/recherche_amendements.mjs +1 -1
  77. package/lib/parsers/textes_lois.d.ts +22 -15
  78. package/lib/parsers/textes_lois.js +264 -752
  79. package/lib/parsers/textes_lois.mjs +249 -597
  80. package/lib/raw_types/acteurs_et_organes.js +9 -9
  81. package/lib/raw_types/acteurs_et_organes.mjs +1 -1
  82. package/lib/raw_types/agendas.d.ts +1 -0
  83. package/lib/raw_types/agendas.js +11 -10
  84. package/lib/raw_types/agendas.mjs +3 -2
  85. package/lib/raw_types/amendements.js +9 -9
  86. package/lib/raw_types/amendements.mjs +1 -1
  87. package/lib/raw_types/debats.js +9 -9
  88. package/lib/raw_types/debats.mjs +1 -1
  89. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -0
  90. package/lib/raw_types/dossiers_legislatifs.js +13 -9
  91. package/lib/raw_types/dossiers_legislatifs.mjs +5 -1
  92. package/lib/raw_types/questions.js +9 -9
  93. package/lib/raw_types/questions.mjs +1 -1
  94. package/lib/raw_types/scrutins.js +9 -9
  95. package/lib/raw_types/scrutins.mjs +1 -1
  96. package/lib/scripts/bugs_helper.js +25 -26
  97. package/lib/scripts/bugs_helper.mjs +3 -3
  98. package/lib/scripts/clean_reorganized_data.js +256 -245
  99. package/lib/scripts/clean_reorganized_data.mjs +18 -29
  100. package/lib/scripts/diff_amendements.js +9 -8
  101. package/lib/scripts/diff_amendements.mjs +1 -1
  102. package/lib/scripts/document_dossiers_legislatifs.js +24 -27
  103. package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
  104. package/lib/scripts/get_today_reunions.js +3 -2
  105. package/lib/scripts/get_today_reunions.mjs +1 -1
  106. package/lib/scripts/merge_scrutins.js +9 -8
  107. package/lib/scripts/merge_scrutins.mjs +1 -1
  108. package/lib/scripts/parse_textes_lois.js +6 -5
  109. package/lib/scripts/parse_textes_lois.mjs +1 -1
  110. package/lib/scripts/process_open_dataset.d.ts +0 -2
  111. package/lib/scripts/process_open_dataset.js +19 -19
  112. package/lib/scripts/process_open_dataset.mjs +3 -5
  113. package/lib/scripts/raw_types_from_amendements.d.ts +0 -1
  114. package/lib/scripts/raw_types_from_amendements.js +122 -198
  115. package/lib/scripts/raw_types_from_amendements.mjs +105 -60
  116. package/lib/scripts/reorganize_data.js +14 -15
  117. package/lib/scripts/reorganize_data.mjs +3 -3
  118. package/lib/scripts/retrieve_deputes_photos.js +40 -31
  119. package/lib/scripts/retrieve_deputes_photos.mjs +10 -2
  120. package/lib/scripts/retrieve_documents.d.ts +1 -1
  121. package/lib/scripts/retrieve_documents.js +230 -138
  122. package/lib/scripts/retrieve_documents.mjs +87 -38
  123. package/lib/scripts/retrieve_open_data.js +27 -30
  124. package/lib/scripts/retrieve_open_data.mjs +5 -8
  125. package/lib/scripts/retrieve_pending_amendments.js +14 -14
  126. package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
  127. package/lib/scripts/retrieve_senateurs_photos.js +10 -10
  128. package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
  129. package/lib/scripts/retrieve_textes_lois.js +17 -15
  130. package/lib/scripts/retrieve_textes_lois.mjs +1 -1
  131. package/lib/scripts/shared/cli_helpers.d.ts +11 -0
  132. package/lib/scripts/shared/cli_helpers.js +13 -2
  133. package/lib/scripts/shared/cli_helpers.mjs +12 -1
  134. package/lib/scripts/test_iter_load.js +5 -19
  135. package/lib/scripts/test_iter_load.mjs +2 -9
  136. package/lib/scripts/test_load.js +2 -2
  137. package/lib/scripts/test_load.mjs +1 -1
  138. package/lib/scripts/test_load_big_files.js +2 -2
  139. package/lib/scripts/test_load_big_files.mjs +1 -1
  140. package/lib/scripts/validate_json.js +17 -18
  141. package/lib/scripts/validate_json.mjs +3 -3
  142. package/lib/shared_types/codes_actes.d.ts +2 -0
  143. package/lib/shared_types/codes_actes.js +3 -1
  144. package/lib/shared_types/codes_actes.mjs +3 -1
  145. package/lib/strings.js +1 -1
  146. package/lib/strings.mjs +1 -1
  147. package/lib/types/acteurs_et_organes.js +9 -9
  148. package/lib/types/acteurs_et_organes.mjs +1 -1
  149. package/lib/types/agendas.d.ts +1 -0
  150. package/lib/types/agendas.js +11 -10
  151. package/lib/types/agendas.mjs +3 -2
  152. package/lib/types/amendements.js +9 -9
  153. package/lib/types/amendements.mjs +1 -1
  154. package/lib/types/debats.js +9 -9
  155. package/lib/types/debats.mjs +1 -1
  156. package/lib/types/dossiers_legislatifs.d.ts +14 -0
  157. package/lib/types/dossiers_legislatifs.js +51 -9
  158. package/lib/types/dossiers_legislatifs.mjs +43 -1
  159. package/lib/types/legislatures.js +1 -1
  160. package/lib/types/legislatures.mjs +1 -1
  161. package/lib/types/questions.js +9 -9
  162. package/lib/types/questions.mjs +1 -1
  163. package/lib/types/scrutins.js +9 -9
  164. package/lib/types/scrutins.mjs +1 -1
  165. package/lib/urls.js +2 -2
  166. package/lib/urls.mjs +1 -1
  167. package/package.json +14 -20
  168. package/lib/cleaners/textes_loi.d.ts +0 -1
  169. package/lib/cleaners/textes_loi.js +0 -12
  170. package/lib/cleaners/textes_loi.mjs +0 -5
  171. package/lib/examples/PIONANR5L15B0020/input.d.ts +0 -2
  172. package/lib/examples/PIONANR5L15B0020/input.js +0 -10
  173. package/lib/examples/PIONANR5L15B0020/input.mjs +0 -193
  174. package/lib/examples/PIONANR5L15B0020/input.ts +0 -193
  175. package/lib/examples/PIONANR5L15B0020/loi.json +0 -26
  176. package/lib/examples/PIONANR5L15B0020/loi_populated.json +0 -29
  177. package/lib/examples/PIONANR5L15B0020/meta.json +0 -28
  178. package/lib/examples/PIONANR5L15B0020/motifs.json +0 -5
  179. package/lib/examples/PIONANR5L15B0020/motifs_populated.json +0 -6
  180. package/lib/examples/PIONANR5L15B0020/sommaire.json +0 -3
  181. package/lib/examples/PRJLANR5L16B0914/input.d.ts +0 -2
  182. package/lib/examples/PRJLANR5L16B0914/input.js +0 -10
  183. package/lib/examples/PRJLANR5L16B0914/input.mjs +0 -322
  184. package/lib/examples/PRJLANR5L16B0914/input.ts +0 -322
  185. package/lib/examples/PRJLANR5L16B0914/loi.json +0 -14
  186. package/lib/examples/PRJLANR5L16B0914/loi_populated.json +0 -20
  187. package/lib/examples/PRJLANR5L16B0914/meta.json +0 -35
  188. package/lib/examples/PRJLANR5L16B0914/motifs.json +0 -4
  189. package/lib/examples/PRJLANR5L16B0914/motifs_populated.json +0 -5
  190. package/lib/examples/PRJLANR5L16B0914/sommaire.json +0 -3
  191. package/lib/examples/PRJLANR5L16B2014/README.md +0 -2
  192. package/lib/examples/PRJLANR5L16B2014/input.d.ts +0 -2
  193. package/lib/examples/PRJLANR5L16B2014/input.js +0 -10
  194. package/lib/examples/PRJLANR5L16B2014/input.mjs +0 -577
  195. package/lib/examples/PRJLANR5L16B2014/input.ts +0 -577
  196. package/lib/examples/PRJLANR5L16B2014/loi.json +0 -369
  197. package/lib/examples/PRJLANR5L16B2014/meta.json +0 -31
  198. package/lib/examples/PRJLANR5L16B2014/motifs.json +0 -5
  199. package/lib/examples/PRJLANR5L16B2014/sommaire.json +0 -51
  200. package/lib/examples/PRJLANR5L16B2424/alineas.json +0 -44
  201. package/lib/examples/PRJLANR5L16B2424/input.d.ts +0 -2
  202. package/lib/examples/PRJLANR5L16B2424/input.js +0 -10
  203. package/lib/examples/PRJLANR5L16B2424/input.mjs +0 -322
  204. package/lib/examples/PRJLANR5L16B2424/input.ts +0 -322
  205. package/lib/examples/PRJLANR5L16B2424/loi.json +0 -74
  206. package/lib/examples/PRJLANR5L16B2424/loi_populated.json +0 -87
  207. package/lib/examples/PRJLANR5L16B2424/meta.json +0 -31
  208. package/lib/examples/PRJLANR5L16B2424/motifs.json +0 -4
  209. package/lib/examples/PRJLANR5L16B2424/motifs_populated.json +0 -5
  210. package/lib/examples/PRJLANR5L16B2424/sommaire.json +0 -3
  211. package/lib/examples/PRJLANR5L16B2462/input.d.ts +0 -2
  212. package/lib/examples/PRJLANR5L16B2462/input.js +0 -10
  213. package/lib/examples/PRJLANR5L16B2462/input.mjs +0 -1308
  214. package/lib/examples/PRJLANR5L16B2462/input.ts +0 -1308
  215. package/lib/examples/PRJLANR5L16B2462/loi.json +0 -74
  216. package/lib/examples/PRJLANR5L16B2462/loi_populated.json +0 -310
  217. package/lib/examples/PRJLANR5L16B2462/meta.json +0 -29
  218. package/lib/examples/PRJLANR5L16B2462/motifs.json +0 -6
  219. package/lib/examples/PRJLANR5L16B2462/motifs_populated.json +0 -6
  220. package/lib/examples/PRJLANR5L16B2462/sommaire.json +0 -50
  221. package/lib/examples/README.md +0 -3
  222. package/lib/raw_types/textes_loi.d.ts +0 -93
  223. package/lib/raw_types/textes_loi.js +0 -429
  224. package/lib/raw_types/textes_loi.mjs +0 -378
  225. package/lib/schemas/texte_loi/Alinea.json +0 -36
  226. package/lib/schemas/texte_loi/ExposeMotifs.json +0 -24
  227. package/lib/schemas/texte_loi/MetaDonnees.json +0 -126
  228. package/lib/schemas/texte_loi/ProjetLoi.json +0 -64
  229. package/lib/schemas/texte_loi/Sommaire.json +0 -48
  230. package/lib/schemas/texte_loi/TexteLoi.json +0 -225
  231. package/lib/schemas/texte_loi/TexteLoiPartiel.json +0 -237
  232. package/lib/scripts/process_textes_loi_dataset.d.ts +0 -7
  233. package/lib/scripts/process_textes_loi_dataset.js +0 -373
  234. package/lib/scripts/process_textes_loi_dataset.mjs +0 -239
  235. package/lib/types/textes_loi.d.ts +0 -94
  236. package/lib/types/textes_loi.js +0 -429
  237. package/lib/types/textes_loi.mjs +0 -378
@@ -22,15 +22,22 @@ require("core-js/modules/es.object.set-prototype-of.js");
22
22
  require("core-js/modules/es.regexp.exec.js");
23
23
  require("core-js/modules/es.weak-map.js");
24
24
  require("core-js/modules/web.dom-collections.for-each.js");
25
+ Object.defineProperty(exports, "__esModule", {
26
+ value: true
27
+ });
28
+ exports.downloadAndParse = downloadAndParse;
25
29
  require("core-js/modules/es.array.concat.js");
26
30
  require("core-js/modules/es.array.find.js");
27
31
  require("core-js/modules/es.array.includes.js");
28
32
  require("core-js/modules/es.array.iterator.js");
29
33
  require("core-js/modules/es.array.join.js");
34
+ require("core-js/modules/es.date.to-json.js");
30
35
  require("core-js/modules/es.date.to-string.js");
36
+ require("core-js/modules/es.object.keys.js");
31
37
  require("core-js/modules/es.object.to-string.js");
32
38
  require("core-js/modules/es.promise.js");
33
39
  require("core-js/modules/es.regexp.to-string.js");
40
+ require("core-js/modules/es.string.ends-with.js");
34
41
  require("core-js/modules/es.string.includes.js");
35
42
  require("core-js/modules/es.string.iterator.js");
36
43
  require("core-js/modules/es.string.starts-with.js");
@@ -45,51 +52,47 @@ var _path = _interopRequireDefault(require("path"));
45
52
  var _dossiers_legislatifs = require("../dossiers_legislatifs");
46
53
  var git = _interopRequireWildcard(require("../git"));
47
54
  var _loaders = require("../loaders");
55
+ var _parsers = require("../parsers");
48
56
  var _urls = require("../urls");
49
57
  var _cli_helpers = require("./shared/cli_helpers");
50
58
  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); }
51
- 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 && Object.prototype.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; }
52
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
53
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
54
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
55
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
56
- 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 new 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 new 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 new 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; }
57
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
58
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
59
- var optionsDefinitions = [_cli_helpers.commitOption, _cli_helpers.legislatureOption, _cli_helpers.remoteOption, _cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.pullOption, {
60
- alias: "f",
61
- help: "retrieve all documents, even already retrieved ones",
62
- name: "full",
63
- type: Boolean
64
- }, {
65
- alias: "n",
66
- help: "try to also retrieve documents that were previously not found",
67
- name: "not-found",
68
- type: Boolean
69
- }, {
70
- alias: "u",
71
- help: "UID of first Assemblée's document or division to retrieve",
72
- name: "uid",
73
- type: String
74
- }, {
75
- alias: "F",
76
- help: "format of documents to retrieve",
77
- name: "format",
78
- type: String
79
- }, {
80
- alias: "T",
81
- help: "type of documents to retrieve (for example: PION)",
82
- multiple: true,
83
- name: "document-type",
84
- type: String
85
- }];
86
- var options = (0, _commandLineArgs["default"])(optionsDefinitions);
59
+ 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; }
60
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
61
+ 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; } } }; }
62
+ 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; } }
63
+ 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; }
64
+ 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; }
65
+ 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); }
66
+ 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); }); }; }
67
+ function parseArgs(argv) {
68
+ var optionsDefinitions = [_cli_helpers.commitOption, _cli_helpers.legislatureOption, _cli_helpers.remoteOption, _cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.pullOption, {
69
+ alias: "f",
70
+ help: "retrieve all documents, even already retrieved ones",
71
+ name: "full",
72
+ type: Boolean
73
+ }, {
74
+ alias: "n",
75
+ help: "try to also retrieve documents that were previously not found",
76
+ name: "not-found",
77
+ type: Boolean
78
+ }, _cli_helpers.documentFormatOption, {
79
+ alias: "T",
80
+ help: "type of documents to retrieve (for example: PION)",
81
+ multiple: true,
82
+ name: "document-type",
83
+ type: String
84
+ }];
85
+ var options = (0, _commandLineArgs["default"])(optionsDefinitions, {
86
+ argv: argv
87
+ });
88
+ return options;
89
+ }
87
90
  var today = new Date();
88
91
  function fetchWithRetry(_x) {
89
92
  return _fetchWithRetry.apply(this, arguments);
90
93
  }
91
94
  function _fetchWithRetry() {
92
- _fetchWithRetry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(url) {
95
+ _fetchWithRetry = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(url) {
93
96
  var retries,
94
97
  backoff,
95
98
  attempt,
@@ -140,14 +143,86 @@ function _fetchWithRetry() {
140
143
  }));
141
144
  return _fetchWithRetry.apply(this, arguments);
142
145
  }
143
- function retrieveDocuments() {
146
+ function downloadAndParse(_x2, _x3, _x4) {
147
+ return _downloadAndParse.apply(this, arguments);
148
+ }
149
+ function _downloadAndParse() {
150
+ _downloadAndParse = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(document, documentsDir, options) {
151
+ var _options$legislature;
152
+ var dataDir, documentsFilesDir, documentDir, documentFileDir, documentPath, htmlPath, html, parsedDocument, json, documentJson;
153
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
154
+ while (1) switch (_context2.prev = _context2.next) {
155
+ case 0:
156
+ if (!(document.uid.substring(4, 6) === "SN")) {
157
+ _context2.next = 2;
158
+ break;
159
+ }
160
+ return _context2.abrupt("return");
161
+ case 2:
162
+ if (!(((_options$legislature = options.legislature) === null || _options$legislature === void 0 ? void 0 : _options$legislature.toString()) !== document.legislature)) {
163
+ _context2.next = 4;
164
+ break;
165
+ }
166
+ return _context2.abrupt("return");
167
+ case 4:
168
+ if (!options.fetchDocuments) {
169
+ _context2.next = 26;
170
+ break;
171
+ }
172
+ dataDir = options.dataDir;
173
+ documentsFilesDir = _path["default"].join(dataDir, "Documents");
174
+ documentDir = (0, _loaders.pathFromDocumentUid)("".concat(documentsDir, "/documents"), document.uid);
175
+ documentFileDir = (0, _loaders.pathFromDocumentUid)(documentsFilesDir, document.uid);
176
+ _fsExtra["default"].ensureDirSync(documentsFilesDir);
177
+ _context2.next = 12;
178
+ return processDocumentOrDivision(document, documentsFilesDir, options);
179
+ case 12:
180
+ if (!options.parseDocuments) {
181
+ _context2.next = 26;
182
+ break;
183
+ }
184
+ documentPath = "".concat(documentDir, ".json");
185
+ htmlPath = _path["default"].join(documentFileDir, "dyn-opendata.html");
186
+ if (!_fsExtra["default"].existsSync(htmlPath)) {
187
+ _context2.next = 26;
188
+ break;
189
+ }
190
+ html = _fsExtra["default"].readFileSync(htmlPath, {
191
+ encoding: "utf-8"
192
+ });
193
+ _context2.prev = 17;
194
+ parsedDocument = (0, _parsers.parseTexte)("https://www.assemblee-nationale.fr", html);
195
+ if (parsedDocument && _fsExtra["default"].existsSync(documentPath)) {
196
+ json = _fsExtra["default"].readFileSync(documentPath, {
197
+ encoding: "utf-8"
198
+ });
199
+ documentJson = JSON.parse(json);
200
+ documentJson.subdivisions = parsedDocument === null || parsedDocument === void 0 ? void 0 : parsedDocument.subdivisions;
201
+ _fsExtra["default"].writeFileSync(documentPath, JSON.stringify(documentJson, null, 2));
202
+ }
203
+ _context2.next = 26;
204
+ break;
205
+ case 22:
206
+ _context2.prev = 22;
207
+ _context2.t0 = _context2["catch"](17);
208
+ console.log("Unable to parse document ".concat(document.uid));
209
+ return _context2.abrupt("return");
210
+ case 26:
211
+ case "end":
212
+ return _context2.stop();
213
+ }
214
+ }, _callee2, null, [[17, 22]]);
215
+ }));
216
+ return _downloadAndParse.apply(this, arguments);
217
+ }
218
+ function retrieveDocuments(_x5) {
144
219
  return _retrieveDocuments.apply(this, arguments);
145
220
  }
146
221
  function _retrieveDocuments() {
147
- _retrieveDocuments = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
222
+ _retrieveDocuments = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(options) {
148
223
  var dataDir, documentsDir, _iterator, _step, filename, firstUid, skip, _iterator2, _step2, document, _iterator3, _step3, documentOrDivision;
149
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
150
- while (1) switch (_context2.prev = _context2.next) {
224
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
225
+ while (1) switch (_context3.prev = _context3.next) {
151
226
  case 0:
152
227
  (0, _assert["default"])(!options.commit || !options.uid, 'Options "commit" & "uid" are incompatible');
153
228
  dataDir = options.dataDir;
@@ -157,134 +232,134 @@ function _retrieveDocuments() {
157
232
  }
158
233
  _fsExtra["default"].ensureDirSync(documentsDir);
159
234
  if (!(options.full && !options.uid)) {
160
- _context2.next = 24;
235
+ _context3.next = 24;
161
236
  break;
162
237
  }
163
238
  _iterator = _createForOfIteratorHelper(_fsExtra["default"].readdirSync(documentsDir));
164
- _context2.prev = 7;
239
+ _context3.prev = 7;
165
240
  _iterator.s();
166
241
  case 9:
167
242
  if ((_step = _iterator.n()).done) {
168
- _context2.next = 16;
243
+ _context3.next = 16;
169
244
  break;
170
245
  }
171
246
  filename = _step.value;
172
247
  if (!(filename[0] === ".")) {
173
- _context2.next = 13;
248
+ _context3.next = 13;
174
249
  break;
175
250
  }
176
- return _context2.abrupt("continue", 14);
251
+ return _context3.abrupt("continue", 14);
177
252
  case 13:
178
253
  _fsExtra["default"].removeSync(_path["default"].join(documentsDir, filename));
179
254
  case 14:
180
- _context2.next = 9;
255
+ _context3.next = 9;
181
256
  break;
182
257
  case 16:
183
- _context2.next = 21;
258
+ _context3.next = 21;
184
259
  break;
185
260
  case 18:
186
- _context2.prev = 18;
187
- _context2.t0 = _context2["catch"](7);
188
- _iterator.e(_context2.t0);
261
+ _context3.prev = 18;
262
+ _context3.t0 = _context3["catch"](7);
263
+ _iterator.e(_context3.t0);
189
264
  case 21:
190
- _context2.prev = 21;
265
+ _context3.prev = 21;
191
266
  _iterator.f();
192
- return _context2.finish(21);
267
+ return _context3.finish(21);
193
268
  case 24:
194
269
  firstUid = options.uid;
195
270
  skip = Boolean(firstUid);
196
271
  _iterator2 = _createForOfIteratorHelper((0, _loaders.iterLoadAssembleeDocuments)(dataDir, options.legislature));
197
- _context2.prev = 27;
272
+ _context3.prev = 27;
198
273
  _iterator2.s();
199
274
  case 29:
200
275
  if ((_step2 = _iterator2.n()).done) {
201
- _context2.next = 58;
276
+ _context3.next = 58;
202
277
  break;
203
278
  }
204
279
  document = _step2.value.document;
205
280
  _iterator3 = _createForOfIteratorHelper((0, _dossiers_legislatifs.walkDocumentAndDivisions)(document));
206
- _context2.prev = 32;
281
+ _context3.prev = 32;
207
282
  _iterator3.s();
208
283
  case 34:
209
284
  if ((_step3 = _iterator3.n()).done) {
210
- _context2.next = 48;
285
+ _context3.next = 48;
211
286
  break;
212
287
  }
213
288
  documentOrDivision = _step3.value;
214
289
  if (!(documentOrDivision.uid.substring(4, 6) === "SN")) {
215
- _context2.next = 38;
290
+ _context3.next = 38;
216
291
  break;
217
292
  }
218
- return _context2.abrupt("continue", 46);
293
+ return _context3.abrupt("continue", 46);
219
294
  case 38:
220
295
  if (!skip) {
221
- _context2.next = 44;
296
+ _context3.next = 44;
222
297
  break;
223
298
  }
224
299
  if (!(documentOrDivision.uid === firstUid)) {
225
- _context2.next = 43;
300
+ _context3.next = 43;
226
301
  break;
227
302
  }
228
303
  skip = false;
229
- _context2.next = 44;
304
+ _context3.next = 44;
230
305
  break;
231
306
  case 43:
232
- return _context2.abrupt("continue", 46);
307
+ return _context3.abrupt("continue", 46);
233
308
  case 44:
234
- _context2.next = 46;
309
+ _context3.next = 46;
235
310
  return processDocumentOrDivision(documentOrDivision, documentsDir, options);
236
311
  case 46:
237
- _context2.next = 34;
312
+ _context3.next = 34;
238
313
  break;
239
314
  case 48:
240
- _context2.next = 53;
315
+ _context3.next = 53;
241
316
  break;
242
317
  case 50:
243
- _context2.prev = 50;
244
- _context2.t1 = _context2["catch"](32);
245
- _iterator3.e(_context2.t1);
318
+ _context3.prev = 50;
319
+ _context3.t1 = _context3["catch"](32);
320
+ _iterator3.e(_context3.t1);
246
321
  case 53:
247
- _context2.prev = 53;
322
+ _context3.prev = 53;
248
323
  _iterator3.f();
249
- return _context2.finish(53);
324
+ return _context3.finish(53);
250
325
  case 56:
251
- _context2.next = 29;
326
+ _context3.next = 29;
252
327
  break;
253
328
  case 58:
254
- _context2.next = 63;
329
+ _context3.next = 63;
255
330
  break;
256
331
  case 60:
257
- _context2.prev = 60;
258
- _context2.t2 = _context2["catch"](27);
259
- _iterator2.e(_context2.t2);
332
+ _context3.prev = 60;
333
+ _context3.t2 = _context3["catch"](27);
334
+ _iterator2.e(_context3.t2);
260
335
  case 63:
261
- _context2.prev = 63;
336
+ _context3.prev = 63;
262
337
  _iterator2.f();
263
- return _context2.finish(63);
338
+ return _context3.finish(63);
264
339
  case 66:
265
340
  if (!options.commit) {
266
- _context2.next = 68;
341
+ _context3.next = 68;
267
342
  break;
268
343
  }
269
- return _context2.abrupt("return", git.commitAndPush(documentsDir, "Nouvelle moisson", options.remote));
344
+ return _context3.abrupt("return", git.commitAndPush(documentsDir, "Nouvelle moisson", options.remote));
270
345
  case 68:
271
- return _context2.abrupt("return", 0);
346
+ return _context3.abrupt("return", 0);
272
347
  case 69:
273
348
  case "end":
274
- return _context2.stop();
349
+ return _context3.stop();
275
350
  }
276
- }, _callee2, null, [[7, 18, 21, 24], [27, 60, 63, 66], [32, 50, 53, 56]]);
351
+ }, _callee3, null, [[7, 18, 21, 24], [27, 60, 63, 66], [32, 50, 53, 56]]);
277
352
  }));
278
353
  return _retrieveDocuments.apply(this, arguments);
279
354
  }
280
- function processDocumentOrDivision(_x2, _x3, _x4) {
355
+ function processDocumentOrDivision(_x6, _x7, _x8) {
281
356
  return _processDocumentOrDivision.apply(this, arguments);
282
357
  }
283
358
  function _processDocumentOrDivision() {
284
- _processDocumentOrDivision = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(documentOrDivision, documentsDir, options) {
359
+ _processDocumentOrDivision = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(documentOrDivision, documentsDir, options) {
285
360
  var documentDir, filenameBySha256, indexPath, index, _iterator4, _step4, _loop, _ret;
286
- return _regeneratorRuntime().wrap(function _callee3$(_context4) {
287
- while (1) switch (_context4.prev = _context4.next) {
361
+ return _regeneratorRuntime().wrap(function _callee4$(_context5) {
362
+ while (1) switch (_context5.prev = _context5.next) {
288
363
  case 0:
289
364
  documentDir = (0, _loaders.pathFromDocumentUid)(documentsDir, documentOrDivision.uid);
290
365
  _fsExtra["default"].ensureDirSync(documentDir);
@@ -292,29 +367,36 @@ function _processDocumentOrDivision() {
292
367
  indexPath = _path["default"].join(documentDir, "index.json");
293
368
  index = _fsExtra["default"].pathExistsSync(indexPath) ? _fsExtra["default"].readJsonSync(indexPath) : {};
294
369
  _iterator4 = _createForOfIteratorHelper((0, _urls.iterDocumentOrDivisionUrls)(documentOrDivision));
295
- _context4.prev = 6;
370
+ _context5.prev = 6;
296
371
  _loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() {
297
372
  var _documentOrDivision$c, _index$format, _formatFilesInfos$fin, _documentOrDivision$c2;
298
- var _step4$value, format, type, url, filename, documentType, formatFilesInfos, fileInfos, response, filePath, arrayBuffer, buffer, sha256, existingFilename;
299
- return _regeneratorRuntime().wrap(function _loop$(_context3) {
300
- while (1) switch (_context3.prev = _context3.next) {
373
+ var _step4$value, format, type, url, filename, fileExtension, documentType, formatFilesInfos, fileInfos, response, filePath, arrayBuffer, buffer, sha256, existingFilename;
374
+ return _regeneratorRuntime().wrap(function _loop$(_context4) {
375
+ while (1) switch (_context4.prev = _context4.next) {
301
376
  case 0:
302
377
  _step4$value = _step4.value, format = _step4$value.format, type = _step4$value.type, url = _step4$value.url;
303
- filename = "".concat(type, ".").concat(format === _urls.DocumentUrlFormat.Pdf ? "pdf" : "html"); // Filter by format if option is passed
304
- if (!(options.format && options.format !== format)) {
305
- _context3.next = 4;
378
+ filename = "".concat(type, ".").concat(format === _urls.DocumentUrlFormat.Pdf ? "pdf" : "html"); // Filter by file extension if option is passed
379
+ fileExtension = url.split(".").pop();
380
+ if (!(options.format && fileExtension && options.format !== fileExtension)) {
381
+ _context4.next = 5;
306
382
  break;
307
383
  }
308
- return _context3.abrupt("return", 0);
309
- case 4:
384
+ return _context4.abrupt("return", 0);
385
+ case 5:
386
+ if (!(options.legislature && options.legislature.toString() !== documentOrDivision.legislature)) {
387
+ _context4.next = 7;
388
+ break;
389
+ }
390
+ return _context4.abrupt("return", 0);
391
+ case 7:
310
392
  // Filter by document type if option is passed
311
393
  documentType = (_documentOrDivision$c = documentOrDivision.classification) === null || _documentOrDivision$c === void 0 || (_documentOrDivision$c = _documentOrDivision$c.type) === null || _documentOrDivision$c === void 0 ? void 0 : _documentOrDivision$c.code;
312
394
  if (!(options["document-type"] !== undefined && !options["document-type"].includes(documentType))) {
313
- _context3.next = 7;
395
+ _context4.next = 10;
314
396
  break;
315
397
  }
316
- return _context3.abrupt("return", 0);
317
- case 7:
398
+ return _context4.abrupt("return", 0);
399
+ case 10:
318
400
  formatFilesInfos = (_index$format = index[format]) !== null && _index$format !== void 0 ? _index$format : index[format] = [];
319
401
  fileInfos = (_formatFilesInfos$fin = formatFilesInfos.find(function (file) {
320
402
  return file.url === url;
@@ -324,34 +406,34 @@ function _processDocumentOrDivision() {
324
406
  }
325
407
  fileInfos.url = url;
326
408
  if (!(fileInfos.status === 200 && !options.full)) {
327
- _context3.next = 14;
409
+ _context4.next = 17;
328
410
  break;
329
411
  }
330
412
  filenameBySha256[fileInfos.sha256] = filename;
331
- return _context3.abrupt("return", 0);
332
- case 14:
413
+ return _context4.abrupt("return", 0);
414
+ case 17:
333
415
  if (!(fileInfos.status === 404 && !options["not-found"] && (0, _dateFns.differenceInDays)(today, (_documentOrDivision$c2 = documentOrDivision.cycleDeVie.chrono.dateCreation) !== null && _documentOrDivision$c2 !== void 0 ? _documentOrDivision$c2 : documentOrDivision.cycleDeVie.chrono.dateDepot) > 10)) {
334
- _context3.next = 16;
416
+ _context4.next = 19;
335
417
  break;
336
418
  }
337
- return _context3.abrupt("return", 0);
338
- case 16:
419
+ return _context4.abrupt("return", 0);
420
+ case 19:
339
421
  if (!options.silent) {
340
422
  console.log("Retrieving document or division ".concat(documentOrDivision.uid, " at ").concat(url, "\u2026"));
341
423
  }
342
- _context3.next = 19;
424
+ _context4.next = 22;
343
425
  return fetchWithRetry(url);
344
- case 19:
345
- response = _context3.sent;
426
+ case 22:
427
+ response = _context4.sent;
346
428
  filePath = _path["default"].join(documentDir, filename);
347
429
  if (!response.ok) {
348
- _context3.next = 29;
430
+ _context4.next = 32;
349
431
  break;
350
432
  }
351
- _context3.next = 24;
433
+ _context4.next = 27;
352
434
  return response.arrayBuffer();
353
- case 24:
354
- arrayBuffer = _context3.sent;
435
+ case 27:
436
+ arrayBuffer = _context4.sent;
355
437
  buffer = Buffer.from(arrayBuffer);
356
438
  if (format === _urls.DocumentUrlFormat.Pdf && !buffer.subarray(0, 4).toString().startsWith("%PDF")) {
357
439
  // Instead of a PDF, the received data may be an HTML page with a message like
@@ -367,7 +449,9 @@ function _processDocumentOrDivision() {
367
449
  sha256 = (0, _crypto.createHash)("sha256").update(buffer).digest("hex");
368
450
  existingFilename = filenameBySha256[sha256];
369
451
  if (existingFilename === undefined) {
370
- _fsExtra["default"].createWriteStream(filePath).write(buffer);
452
+ _fsExtra["default"].writeFileSync(filePath, buffer, {
453
+ encoding: "utf8"
454
+ });
371
455
  fileInfos.filename = filename;
372
456
  filenameBySha256[sha256] = filename;
373
457
  } else {
@@ -376,9 +460,9 @@ function _processDocumentOrDivision() {
376
460
  fileInfos.sha256 = sha256;
377
461
  fileInfos.status = response.status;
378
462
  }
379
- _context3.next = 34;
463
+ _context4.next = 37;
380
464
  break;
381
- case 29:
465
+ case 32:
382
466
  if (response.status === 404) {
383
467
  if (!options.silent) {
384
468
  console.warn(" Page \"".concat(url, "\" not found."));
@@ -393,40 +477,40 @@ function _processDocumentOrDivision() {
393
477
  delete fileInfos.filename;
394
478
  delete fileInfos.sha256;
395
479
  fileInfos.status = response.status;
396
- case 34:
480
+ case 37:
397
481
  case "end":
398
- return _context3.stop();
482
+ return _context4.stop();
399
483
  }
400
484
  }, _loop);
401
485
  });
402
486
  _iterator4.s();
403
487
  case 9:
404
488
  if ((_step4 = _iterator4.n()).done) {
405
- _context4.next = 16;
489
+ _context5.next = 16;
406
490
  break;
407
491
  }
408
- return _context4.delegateYield(_loop(), "t0", 11);
492
+ return _context5.delegateYield(_loop(), "t0", 11);
409
493
  case 11:
410
- _ret = _context4.t0;
494
+ _ret = _context5.t0;
411
495
  if (!(_ret === 0)) {
412
- _context4.next = 14;
496
+ _context5.next = 14;
413
497
  break;
414
498
  }
415
- return _context4.abrupt("continue", 14);
499
+ return _context5.abrupt("continue", 14);
416
500
  case 14:
417
- _context4.next = 9;
501
+ _context5.next = 9;
418
502
  break;
419
503
  case 16:
420
- _context4.next = 21;
504
+ _context5.next = 21;
421
505
  break;
422
506
  case 18:
423
- _context4.prev = 18;
424
- _context4.t1 = _context4["catch"](6);
425
- _iterator4.e(_context4.t1);
507
+ _context5.prev = 18;
508
+ _context5.t1 = _context5["catch"](6);
509
+ _iterator4.e(_context5.t1);
426
510
  case 21:
427
- _context4.prev = 21;
511
+ _context5.prev = 21;
428
512
  _iterator4.f();
429
- return _context4.finish(21);
513
+ return _context5.finish(21);
430
514
  case 24:
431
515
  _fsExtra["default"].writeJsonSync(indexPath, index, {
432
516
  encoding: "utf-8",
@@ -434,16 +518,24 @@ function _processDocumentOrDivision() {
434
518
  });
435
519
  case 25:
436
520
  case "end":
437
- return _context4.stop();
521
+ return _context5.stop();
438
522
  }
439
- }, _callee3, null, [[6, 18, 21, 24]]);
523
+ }, _callee4, null, [[6, 18, 21, 24]]);
440
524
  }));
441
525
  return _processDocumentOrDivision.apply(this, arguments);
442
526
  }
443
- retrieveDocuments().then(function (exitCode) {
444
- return process.exit(exitCode);
445
- })["catch"](function (error) {
446
- console.log(error);
447
- process.exit(1);
448
- });
449
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2NyeXB0byIsIl9kYXRlRm5zIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2xvYWRlcnMiLCJfdXJscyIsIl9jbGlfaGVscGVycyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm9iaiIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibyIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiX2UiLCJmIiwiVHlwZUVycm9yIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJuZXh0IiwiX2UyIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJhcnIiLCJsZW4iLCJhcnIyIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJoIiwibCIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJ1bmRlZmluZWQiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJjb21taXRPcHRpb24iLCJsZWdpc2xhdHVyZU9wdGlvbiIsInJlbW90ZU9wdGlvbiIsInNpbGVudE9wdGlvbiIsInZlcmJvc2VPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsInB1bGxPcHRpb24iLCJhbGlhcyIsImhlbHAiLCJCb29sZWFuIiwiU3RyaW5nIiwibXVsdGlwbGUiLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwidG9kYXkiLCJEYXRlIiwiZmV0Y2hXaXRoUmV0cnkiLCJfeCIsIl9mZXRjaFdpdGhSZXRyeSIsIl9jYWxsZWUiLCJ1cmwiLCJyZXRyaWVzIiwiYmFja29mZiIsImF0dGVtcHQiLCJfYXJncyIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJmZXRjaCIsInQwIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJzZXRUaW1lb3V0IiwicmV0cmlldmVEb2N1bWVudHMiLCJfcmV0cmlldmVEb2N1bWVudHMiLCJfY2FsbGVlMiIsImRhdGFEaXIiLCJkb2N1bWVudHNEaXIiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImZpbGVuYW1lIiwiZmlyc3RVaWQiLCJza2lwIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImRvY3VtZW50IiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsImRvY3VtZW50T3JEaXZpc2lvbiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImFzc2VydCIsImNvbW1pdCIsInVpZCIsInBhdGgiLCJqb2luIiwicHVsbCIsInJlc2V0QW5kUHVsbCIsImZzIiwiZW5zdXJlRGlyU3luYyIsImZ1bGwiLCJyZWFkZGlyU3luYyIsInJlbW92ZVN5bmMiLCJpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyIsImxlZ2lzbGF0dXJlIiwid2Fsa0RvY3VtZW50QW5kRGl2aXNpb25zIiwic3Vic3RyaW5nIiwicHJvY2Vzc0RvY3VtZW50T3JEaXZpc2lvbiIsInQxIiwidDIiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiX3gyIiwiX3gzIiwiX3g0IiwiX3Byb2Nlc3NEb2N1bWVudE9yRGl2aXNpb24iLCJfY2FsbGVlMyIsImRvY3VtZW50RGlyIiwiZmlsZW5hbWVCeVNoYTI1NiIsImluZGV4UGF0aCIsImluZGV4IiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsIl9sb29wIiwiX3JldCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0NCIsInBhdGhGcm9tRG9jdW1lbnRVaWQiLCJwYXRoRXhpc3RzU3luYyIsInJlYWRKc29uU3luYyIsIml0ZXJEb2N1bWVudE9yRGl2aXNpb25VcmxzIiwiX2RvY3VtZW50T3JEaXZpc2lvbiRjIiwiX2luZGV4JGZvcm1hdCIsIl9mb3JtYXRGaWxlc0luZm9zJGZpbiIsIl9kb2N1bWVudE9yRGl2aXNpb24kYzIiLCJfc3RlcDQkdmFsdWUiLCJmb3JtYXQiLCJkb2N1bWVudFR5cGUiLCJmb3JtYXRGaWxlc0luZm9zIiwiZmlsZUluZm9zIiwicmVzcG9uc2UiLCJmaWxlUGF0aCIsImFycmF5QnVmZmVyIiwiYnVmZmVyIiwic2hhMjU2IiwiZXhpc3RpbmdGaWxlbmFtZSIsIl9sb29wJCIsIl9jb250ZXh0MyIsIkRvY3VtZW50VXJsRm9ybWF0IiwiUGRmIiwiY2xhc3NpZmljYXRpb24iLCJjb2RlIiwiaW5jbHVkZXMiLCJmaW5kIiwiZmlsZSIsInN0YXR1cyIsImRpZmZlcmVuY2VJbkRheXMiLCJjeWNsZURlVmllIiwiY2hyb25vIiwiZGF0ZUNyZWF0aW9uIiwiZGF0ZURlcG90Iiwic2lsZW50IiwibG9nIiwib2siLCJCdWZmZXIiLCJzdWJhcnJheSIsInN0YXJ0c1dpdGgiLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiZGlnZXN0IiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJ3cml0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsIndyaXRlSnNvblN5bmMiLCJlbmNvZGluZyIsInNwYWNlcyIsImV4aXRDb2RlIiwicHJvY2VzcyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZXRyaWV2ZV9kb2N1bWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCJcbmltcG9ydCB7IGRpZmZlcmVuY2VJbkRheXMgfSBmcm9tIFwiZGF0ZS1mbnNcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7XG4gIERvY3VtZW50RmlsZUluZm9zLFxuICBEb2N1bWVudEZpbGVzSW5kZXgsXG4gIHdhbGtEb2N1bWVudEFuZERpdmlzaW9ucyxcbn0gZnJvbSBcIi4uL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7IGl0ZXJMb2FkQXNzZW1ibGVlRG9jdW1lbnRzLCBwYXRoRnJvbURvY3VtZW50VWlkIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgRG9jdW1lbnRVcmxGb3JtYXQsIGl0ZXJEb2N1bWVudE9yRGl2aXNpb25VcmxzIH0gZnJvbSBcIi4uL3VybHNcIlxuaW1wb3J0IHtcbiAgY29tbWl0T3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHB1bGxPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIGNvbW1pdE9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgcHVsbE9wdGlvbixcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcInJldHJpZXZlIGFsbCBkb2N1bWVudHMsIGV2ZW4gYWxyZWFkeSByZXRyaWV2ZWQgb25lc1wiLFxuICAgIG5hbWU6IFwiZnVsbFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJuXCIsXG4gICAgaGVscDogXCJ0cnkgdG8gYWxzbyByZXRyaWV2ZSBkb2N1bWVudHMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgbm90IGZvdW5kXCIsXG4gICAgbmFtZTogXCJub3QtZm91bmRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidVwiLFxuICAgIGhlbHA6IFwiVUlEIG9mIGZpcnN0IEFzc2VtYmzDqWUncyBkb2N1bWVudCBvciBkaXZpc2lvbiB0byByZXRyaWV2ZVwiLFxuICAgIG5hbWU6IFwidWlkXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiRlwiLFxuICAgIGhlbHA6IFwiZm9ybWF0IG9mIGRvY3VtZW50cyB0byByZXRyaWV2ZVwiLFxuICAgIG5hbWU6IFwiZm9ybWF0XCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiVFwiLFxuICAgIGhlbHA6IFwidHlwZSBvZiBkb2N1bWVudHMgdG8gcmV0cmlldmUgKGZvciBleGFtcGxlOiBQSU9OKVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwiZG9jdW1lbnQtdHlwZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpXG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoV2l0aFJldHJ5KFxuICB1cmw6IHN0cmluZyxcbiAgcmV0cmllczogbnVtYmVyID0gMyxcbiAgYmFja29mZjogbnVtYmVyID0gMzAwLFxuKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IHJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZmV0Y2godXJsKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoYXR0ZW1wdCA9PT0gcmV0cmllcyAtIDEpIHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEZldGNoIGF0dGVtcHQgJHthdHRlbXB0ICsgMX0gZm9yICR7dXJsfSBmYWlsZWQuIFJldHJ5aW5nIGluICR7YmFja29mZn1tcy4uLmAsXG4gICAgICApXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBiYWNrb2ZmKSlcbiAgICAgIGJhY2tvZmYgKj0gMlxuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCAke3VybH0gYWZ0ZXIgJHtyZXRyaWVzfSBhdHRlbXB0c2ApXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlRG9jdW1lbnRzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGFzc2VydChcbiAgICAhb3B0aW9ucy5jb21taXQgfHwgIW9wdGlvbnMudWlkLFxuICAgICdPcHRpb25zIFwiY29tbWl0XCIgJiBcInVpZFwiIGFyZSBpbmNvbXBhdGlibGUnLFxuICApXG5cbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgXCJEb2N1bWVudHNcIilcbiAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgIGdpdC5yZXNldEFuZFB1bGwoZG9jdW1lbnRzRGlyKVxuICB9XG4gIGZzLmVuc3VyZURpclN5bmMoZG9jdW1lbnRzRGlyKVxuXG4gIGlmIChvcHRpb25zLmZ1bGwgJiYgIW9wdGlvbnMudWlkKSB7XG4gICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkb2N1bWVudHNEaXIpKSB7XG4gICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkb2N1bWVudHNEaXIsIGZpbGVuYW1lKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBmaXJzdFVpZCA9IG9wdGlvbnMudWlkXG4gIGxldCBza2lwID0gQm9vbGVhbihmaXJzdFVpZClcbiAgZm9yIChjb25zdCB7IGRvY3VtZW50IH0gb2YgaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMoXG4gICAgZGF0YURpcixcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICApKSB7XG4gICAgZm9yIChjb25zdCBkb2N1bWVudE9yRGl2aXNpb24gb2Ygd2Fsa0RvY3VtZW50QW5kRGl2aXNpb25zKGRvY3VtZW50KSkge1xuICAgICAgLy8gSWdub3JlIGRvY3VtZW50cyBmcm9tIFPDqW5hdC5cbiAgICAgIGlmIChkb2N1bWVudE9yRGl2aXNpb24udWlkLnN1YnN0cmluZyg0LCA2KSA9PT0gXCJTTlwiKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChza2lwKSB7XG4gICAgICAgIGlmIChkb2N1bWVudE9yRGl2aXNpb24udWlkID09PSBmaXJzdFVpZCkge1xuICAgICAgICAgIHNraXAgPSBmYWxzZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgcHJvY2Vzc0RvY3VtZW50T3JEaXZpc2lvbihkb2N1bWVudE9yRGl2aXNpb24sIGRvY3VtZW50c0Rpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICByZXR1cm4gZ2l0LmNvbW1pdEFuZFB1c2goZG9jdW1lbnRzRGlyLCBcIk5vdXZlbGxlIG1vaXNzb25cIiwgb3B0aW9ucy5yZW1vdGUpXG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0RvY3VtZW50T3JEaXZpc2lvbihcbiAgZG9jdW1lbnRPckRpdmlzaW9uOiBhbnksXG4gIGRvY3VtZW50c0Rpcjogc3RyaW5nLFxuICBvcHRpb25zOiBhbnksXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZG9jdW1lbnREaXIgPSBwYXRoRnJvbURvY3VtZW50VWlkKGRvY3VtZW50c0RpciwgZG9jdW1lbnRPckRpdmlzaW9uLnVpZClcbiAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudERpcilcblxuICBjb25zdCBmaWxlbmFtZUJ5U2hhMjU2OiB7IFtkaWdlc3Q6IHN0cmluZ106IHN0cmluZyB9ID0ge31cbiAgY29uc3QgaW5kZXhQYXRoID0gcGF0aC5qb2luKGRvY3VtZW50RGlyLCBcImluZGV4Lmpzb25cIilcbiAgY29uc3QgaW5kZXggPSAoXG4gICAgZnMucGF0aEV4aXN0c1N5bmMoaW5kZXhQYXRoKSA/IGZzLnJlYWRKc29uU3luYyhpbmRleFBhdGgpIDoge31cbiAgKSBhcyBEb2N1bWVudEZpbGVzSW5kZXhcblxuICBmb3IgKGNvbnN0IHsgZm9ybWF0LCB0eXBlLCB1cmwgfSBvZiBpdGVyRG9jdW1lbnRPckRpdmlzaW9uVXJscyhcbiAgICBkb2N1bWVudE9yRGl2aXNpb24sXG4gICkpIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGAke3R5cGV9LiR7XG4gICAgICBmb3JtYXQgPT09IERvY3VtZW50VXJsRm9ybWF0LlBkZiA/IFwicGRmXCIgOiBcImh0bWxcIlxuICAgIH1gXG5cbiAgICAvLyBGaWx0ZXIgYnkgZm9ybWF0IGlmIG9wdGlvbiBpcyBwYXNzZWRcbiAgICBpZiAob3B0aW9ucy5mb3JtYXQgJiYgb3B0aW9ucy5mb3JtYXQgIT09IGZvcm1hdCkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBGaWx0ZXIgYnkgZG9jdW1lbnQgdHlwZSBpZiBvcHRpb24gaXMgcGFzc2VkXG4gICAgY29uc3QgZG9jdW1lbnRUeXBlID0gZG9jdW1lbnRPckRpdmlzaW9uLmNsYXNzaWZpY2F0aW9uPy50eXBlPy5jb2RlXG4gICAgaWYgKFxuICAgICAgb3B0aW9uc1tcImRvY3VtZW50LXR5cGVcIl0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgIW9wdGlvbnNbXCJkb2N1bWVudC10eXBlXCJdLmluY2x1ZGVzKGRvY3VtZW50VHlwZSlcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgbGV0IGZvcm1hdEZpbGVzSW5mb3MgPSBpbmRleFtmb3JtYXRdID8/IChpbmRleFtmb3JtYXRdID0gW10pXG4gICAgbGV0IGZpbGVJbmZvcyA9XG4gICAgICBmb3JtYXRGaWxlc0luZm9zLmZpbmQoKGZpbGUpID0+IGZpbGUudXJsID09PSB1cmwpID8/XG4gICAgICAoe30gYXMgRG9jdW1lbnRGaWxlSW5mb3MpXG4gICAgaWYgKCFmb3JtYXRGaWxlc0luZm9zLmluY2x1ZGVzKGZpbGVJbmZvcykpIHtcbiAgICAgIGZvcm1hdEZpbGVzSW5mb3MucHVzaChmaWxlSW5mb3MpXG4gICAgfVxuICAgIGZpbGVJbmZvcy51cmwgPSB1cmxcblxuICAgIGlmIChmaWxlSW5mb3Muc3RhdHVzID09PSAyMDAgJiYgIW9wdGlvbnMuZnVsbCkge1xuICAgICAgZmlsZW5hbWVCeVNoYTI1NltmaWxlSW5mb3Muc2hhMjU2IGFzIHN0cmluZ10gPSBmaWxlbmFtZVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZmlsZUluZm9zLnN0YXR1cyA9PT0gNDA0ICYmXG4gICAgICAhb3B0aW9uc1tcIm5vdC1mb3VuZFwiXSAmJlxuICAgICAgZGlmZmVyZW5jZUluRGF5cyhcbiAgICAgICAgdG9kYXksXG4gICAgICAgIGRvY3VtZW50T3JEaXZpc2lvbi5jeWNsZURlVmllLmNocm9uby5kYXRlQ3JlYXRpb24gPz9cbiAgICAgICAgICAoZG9jdW1lbnRPckRpdmlzaW9uLmN5Y2xlRGVWaWUuY2hyb25vLmRhdGVEZXBvdCBhcyBEYXRlIHwgc3RyaW5nKSxcbiAgICAgICkgPiAxMFxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFJldHJpZXZpbmcgZG9jdW1lbnQgb3IgZGl2aXNpb24gJHtkb2N1bWVudE9yRGl2aXNpb24udWlkfSBhdCAke3VybH3igKZgLFxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hXaXRoUmV0cnkodXJsKVxuICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGRvY3VtZW50RGlyLCBmaWxlbmFtZSlcblxuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpXG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlcilcbiAgICAgIGlmIChcbiAgICAgICAgZm9ybWF0ID09PSBEb2N1bWVudFVybEZvcm1hdC5QZGYgJiZcbiAgICAgICAgIWJ1ZmZlci5zdWJhcnJheSgwLCA0KS50b1N0cmluZygpLnN0YXJ0c1dpdGgoXCIlUERGXCIpXG4gICAgICApIHtcbiAgICAgICAgLy8gSW5zdGVhZCBvZiBhIFBERiwgdGhlIHJlY2VpdmVkIGRhdGEgbWF5IGJlIGFuIEhUTUwgcGFnZSB3aXRoIGEgbWVzc2FnZSBsaWtlXG4gICAgICAgIC8vIFwiRG9jdW1lbnQgbm9uIGVuY29yZSBwdWJsacOpXCIuXG4gICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYCAgUERGIFwiJHt1cmx9XCIgbm90IGZvdW5kLmApXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhmaWxlUGF0aClcbiAgICAgICAgZGVsZXRlIGZpbGVJbmZvcy5maWxlbmFtZVxuICAgICAgICBkZWxldGUgZmlsZUluZm9zLnNoYTI1NlxuICAgICAgICBmaWxlSW5mb3Muc3RhdHVzID0gNDA0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzaGEyNTYgPSBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShidWZmZXIpLmRpZ2VzdChcImhleFwiKVxuICAgICAgICBjb25zdCBleGlzdGluZ0ZpbGVuYW1lID0gZmlsZW5hbWVCeVNoYTI1NltzaGEyNTZdXG4gICAgICAgIGlmIChleGlzdGluZ0ZpbGVuYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmcy5jcmVhdGVXcml0ZVN0cmVhbShmaWxlUGF0aCkud3JpdGUoYnVmZmVyKVxuICAgICAgICAgIGZpbGVJbmZvcy5maWxlbmFtZSA9IGZpbGVuYW1lXG4gICAgICAgICAgZmlsZW5hbWVCeVNoYTI1NltzaGEyNTZdID0gZmlsZW5hbWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWxlSW5mb3MuZmlsZW5hbWUgPSBleGlzdGluZ0ZpbGVuYW1lXG4gICAgICAgIH1cbiAgICAgICAgZmlsZUluZm9zLnNoYTI1NiA9IHNoYTI1NlxuICAgICAgICBmaWxlSW5mb3Muc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGAgIFBhZ2UgXCIke3VybH1cIiBub3QgZm91bmQuYClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgICBFcnJvcjpcXG4ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgeyBjb2RlOiByZXNwb25zZS5zdGF0dXMsIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQgfSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAyLFxuICAgICAgICAgICl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgZnMucmVtb3ZlU3luYyhmaWxlUGF0aClcbiAgICAgIGRlbGV0ZSBmaWxlSW5mb3MuZmlsZW5hbWVcbiAgICAgIGRlbGV0ZSBmaWxlSW5mb3Muc2hhMjU2XG4gICAgICBmaWxlSW5mb3Muc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzXG4gICAgfVxuICB9XG5cbiAgZnMud3JpdGVKc29uU3luYyhpbmRleFBhdGgsIGluZGV4LCB7IGVuY29kaW5nOiBcInV0Zi04XCIsIHNwYWNlczogMiB9KVxufVxuXG5yZXRyaWV2ZURvY3VtZW50cygpXG4gIC50aGVuKChleGl0Q29kZSkgPT4gcHJvY2Vzcy5leGl0KGV4aXRDb2RlKSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGdCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxLQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTSxxQkFBQSxHQUFBTixPQUFBO0FBS0EsSUFBQU8sR0FBQSxHQUFBQyx1QkFBQSxDQUFBUixPQUFBO0FBQ0EsSUFBQVMsUUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsS0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsWUFBQSxHQUFBWCxPQUFBO0FBUTZCLFNBQUFZLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBTCx3QkFBQUssQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLElBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWpCLENBQUEsRUFBQWMsQ0FBQSxTQUFBSSxDQUFBLEdBQUFSLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUksQ0FBQSxLQUFBQSxDQUFBLENBQUFYLEdBQUEsSUFBQVcsQ0FBQSxDQUFBQyxHQUFBLElBQUFSLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUksQ0FBQSxJQUFBVixDQUFBLENBQUFNLENBQUEsSUFBQWQsQ0FBQSxDQUFBYyxDQUFBLFlBQUFOLENBQUEsY0FBQVIsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWdCLEdBQUEsQ0FBQW5CLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBQUEsU0FBQXRCLHVCQUFBa0MsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQWhCLFVBQUEsR0FBQWdCLEdBQUEsZ0JBQUFBLEdBQUE7QUFBQSxTQUFBQywyQkFBQUMsQ0FBQSxFQUFBQyxjQUFBLFFBQUFDLEVBQUEsVUFBQUMsTUFBQSxvQkFBQUgsQ0FBQSxDQUFBRyxNQUFBLENBQUFDLFFBQUEsS0FBQUosQ0FBQSxxQkFBQUUsRUFBQSxRQUFBRyxLQUFBLENBQUFDLE9BQUEsQ0FBQU4sQ0FBQSxNQUFBRSxFQUFBLEdBQUFLLDJCQUFBLENBQUFQLENBQUEsTUFBQUMsY0FBQSxJQUFBRCxDQUFBLFdBQUFBLENBQUEsQ0FBQVEsTUFBQSxxQkFBQU4sRUFBQSxFQUFBRixDQUFBLEdBQUFFLEVBQUEsTUFBQU4sQ0FBQSxVQUFBYSxDQUFBLFlBQUFBLEVBQUEsZUFBQUMsQ0FBQSxFQUFBRCxDQUFBLEVBQUF2QixDQUFBLFdBQUFBLEVBQUEsUUFBQVUsQ0FBQSxJQUFBSSxDQUFBLENBQUFRLE1BQUEsV0FBQUcsSUFBQSxtQkFBQUEsSUFBQSxTQUFBQyxLQUFBLEVBQUFaLENBQUEsQ0FBQUosQ0FBQSxVQUFBbEIsQ0FBQSxXQUFBQSxFQUFBbUMsRUFBQSxVQUFBQSxFQUFBLEtBQUFDLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU0sU0FBQSxpSkFBQUMsZ0JBQUEsU0FBQUMsTUFBQSxVQUFBQyxHQUFBLFdBQUFSLENBQUEsV0FBQUEsRUFBQSxJQUFBUixFQUFBLEdBQUFBLEVBQUEsQ0FBQVAsSUFBQSxDQUFBSyxDQUFBLE1BQUFkLENBQUEsV0FBQUEsRUFBQSxRQUFBaUMsSUFBQSxHQUFBakIsRUFBQSxDQUFBa0IsSUFBQSxJQUFBSixnQkFBQSxHQUFBRyxJQUFBLENBQUFSLElBQUEsU0FBQVEsSUFBQSxLQUFBekMsQ0FBQSxXQUFBQSxFQUFBMkMsR0FBQSxJQUFBSixNQUFBLFNBQUFDLEdBQUEsR0FBQUcsR0FBQSxLQUFBUCxDQUFBLFdBQUFBLEVBQUEsZUFBQUUsZ0JBQUEsSUFBQWQsRUFBQSxvQkFBQUEsRUFBQSw4QkFBQWUsTUFBQSxRQUFBQyxHQUFBO0FBQUEsU0FBQVgsNEJBQUFQLENBQUEsRUFBQXNCLE1BQUEsU0FBQXRCLENBQUEscUJBQUFBLENBQUEsc0JBQUF1QixpQkFBQSxDQUFBdkIsQ0FBQSxFQUFBc0IsTUFBQSxPQUFBcEMsQ0FBQSxHQUFBRyxNQUFBLENBQUFJLFNBQUEsQ0FBQStCLFFBQUEsQ0FBQTdCLElBQUEsQ0FBQUssQ0FBQSxFQUFBeUIsS0FBQSxhQUFBdkMsQ0FBQSxpQkFBQWMsQ0FBQSxDQUFBMEIsV0FBQSxFQUFBeEMsQ0FBQSxHQUFBYyxDQUFBLENBQUEwQixXQUFBLENBQUFDLElBQUEsTUFBQXpDLENBQUEsY0FBQUEsQ0FBQSxtQkFBQW1CLEtBQUEsQ0FBQXVCLElBQUEsQ0FBQTVCLENBQUEsT0FBQWQsQ0FBQSwrREFBQTJDLElBQUEsQ0FBQTNDLENBQUEsVUFBQXFDLGlCQUFBLENBQUF2QixDQUFBLEVBQUFzQixNQUFBO0FBQUEsU0FBQUMsa0JBQUFPLEdBQUEsRUFBQUMsR0FBQSxRQUFBQSxHQUFBLFlBQUFBLEdBQUEsR0FBQUQsR0FBQSxDQUFBdEIsTUFBQSxFQUFBdUIsR0FBQSxHQUFBRCxHQUFBLENBQUF0QixNQUFBLFdBQUFaLENBQUEsTUFBQW9DLElBQUEsT0FBQTNCLEtBQUEsQ0FBQTBCLEdBQUEsR0FBQW5DLENBQUEsR0FBQW1DLEdBQUEsRUFBQW5DLENBQUEsSUFBQW9DLElBQUEsQ0FBQXBDLENBQUEsSUFBQWtDLEdBQUEsQ0FBQWxDLENBQUEsVUFBQW9DLElBQUE7QUFBQSxTQUFBQyxvQkFBQSxrQkF0QjdCLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBdkQsQ0FBQSxTQUFBRyxDQUFBLEVBQUFILENBQUEsT0FBQUUsQ0FBQSxHQUFBUyxNQUFBLENBQUFJLFNBQUEsRUFBQVAsQ0FBQSxHQUFBTixDQUFBLENBQUFjLGNBQUEsRUFBQU0sQ0FBQSxHQUFBWCxNQUFBLENBQUFDLGNBQUEsY0FBQVQsQ0FBQSxFQUFBSCxDQUFBLEVBQUFFLENBQUEsSUFBQUMsQ0FBQSxDQUFBSCxDQUFBLElBQUFFLENBQUEsQ0FBQWdDLEtBQUEsS0FBQWhCLENBQUEsd0JBQUFPLE1BQUEsR0FBQUEsTUFBQSxPQUFBZixDQUFBLEdBQUFRLENBQUEsQ0FBQVEsUUFBQSxrQkFBQThCLENBQUEsR0FBQXRDLENBQUEsQ0FBQXVDLGFBQUEsdUJBQUEzQyxDQUFBLEdBQUFJLENBQUEsQ0FBQXdDLFdBQUEsOEJBQUFDLE9BQUF4RCxDQUFBLEVBQUFILENBQUEsRUFBQUUsQ0FBQSxXQUFBUyxNQUFBLENBQUFDLGNBQUEsQ0FBQVQsQ0FBQSxFQUFBSCxDQUFBLElBQUFrQyxLQUFBLEVBQUFoQyxDQUFBLEVBQUEwRCxVQUFBLE1BQUFDLFlBQUEsTUFBQUMsUUFBQSxTQUFBM0QsQ0FBQSxDQUFBSCxDQUFBLFdBQUEyRCxNQUFBLG1CQUFBeEQsQ0FBQSxJQUFBd0QsTUFBQSxZQUFBQSxPQUFBeEQsQ0FBQSxFQUFBSCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsQ0FBQSxDQUFBSCxDQUFBLElBQUFFLENBQUEsZ0JBQUE2RCxLQUFBNUQsQ0FBQSxFQUFBSCxDQUFBLEVBQUFFLENBQUEsRUFBQU0sQ0FBQSxRQUFBVSxDQUFBLEdBQUFsQixDQUFBLElBQUFBLENBQUEsQ0FBQWUsU0FBQSxZQUFBaUQsU0FBQSxHQUFBaEUsQ0FBQSxHQUFBZ0UsU0FBQSxFQUFBdEQsQ0FBQSxHQUFBQyxNQUFBLENBQUFzRCxNQUFBLENBQUEvQyxDQUFBLENBQUFILFNBQUEsR0FBQXlDLENBQUEsT0FBQVUsT0FBQSxDQUFBMUQsQ0FBQSxnQkFBQWMsQ0FBQSxDQUFBWixDQUFBLGVBQUF3QixLQUFBLEVBQUFpQyxnQkFBQSxDQUFBaEUsQ0FBQSxFQUFBRCxDQUFBLEVBQUFzRCxDQUFBLE1BQUE5QyxDQUFBLGFBQUEwRCxTQUFBakUsQ0FBQSxFQUFBSCxDQUFBLEVBQUFFLENBQUEsbUJBQUFtRSxJQUFBLFlBQUFDLEdBQUEsRUFBQW5FLENBQUEsQ0FBQWMsSUFBQSxDQUFBakIsQ0FBQSxFQUFBRSxDQUFBLGNBQUFDLENBQUEsYUFBQWtFLElBQUEsV0FBQUMsR0FBQSxFQUFBbkUsQ0FBQSxRQUFBSCxDQUFBLENBQUErRCxJQUFBLEdBQUFBLElBQUEsTUFBQVEsQ0FBQSxxQkFBQUMsQ0FBQSxxQkFBQXBDLENBQUEsZ0JBQUFKLENBQUEsZ0JBQUF5QyxDQUFBLGdCQUFBVCxVQUFBLGNBQUFVLGtCQUFBLGNBQUFDLDJCQUFBLFNBQUFDLENBQUEsT0FBQWpCLE1BQUEsQ0FBQWlCLENBQUEsRUFBQWxFLENBQUEscUNBQUFtRSxDQUFBLEdBQUFsRSxNQUFBLENBQUFtRSxjQUFBLEVBQUFDLENBQUEsR0FBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFBLENBQUEsQ0FBQUcsTUFBQSxRQUFBRCxDQUFBLElBQUFBLENBQUEsS0FBQTdFLENBQUEsSUFBQU0sQ0FBQSxDQUFBUyxJQUFBLENBQUE4RCxDQUFBLEVBQUFyRSxDQUFBLE1BQUFrRSxDQUFBLEdBQUFHLENBQUEsT0FBQUUsQ0FBQSxHQUFBTiwwQkFBQSxDQUFBNUQsU0FBQSxHQUFBaUQsU0FBQSxDQUFBakQsU0FBQSxHQUFBSixNQUFBLENBQUFzRCxNQUFBLENBQUFXLENBQUEsWUFBQU0sc0JBQUEvRSxDQUFBLGdDQUFBZ0YsT0FBQSxXQUFBbkYsQ0FBQSxJQUFBMkQsTUFBQSxDQUFBeEQsQ0FBQSxFQUFBSCxDQUFBLFlBQUFHLENBQUEsZ0JBQUFpRixPQUFBLENBQUFwRixDQUFBLEVBQUFHLENBQUEsc0JBQUFrRixjQUFBbEYsQ0FBQSxFQUFBSCxDQUFBLGFBQUFzRixPQUFBcEYsQ0FBQSxFQUFBb0IsQ0FBQSxFQUFBSixDQUFBLEVBQUFSLENBQUEsUUFBQThDLENBQUEsR0FBQVksUUFBQSxDQUFBakUsQ0FBQSxDQUFBRCxDQUFBLEdBQUFDLENBQUEsRUFBQW1CLENBQUEsbUJBQUFrQyxDQUFBLENBQUFhLElBQUEsUUFBQXZELENBQUEsR0FBQTBDLENBQUEsQ0FBQWMsR0FBQSxFQUFBQyxDQUFBLEdBQUF6RCxDQUFBLENBQUFvQixLQUFBLFNBQUFxQyxDQUFBLGdCQUFBbEUsT0FBQSxDQUFBa0UsQ0FBQSxLQUFBL0QsQ0FBQSxDQUFBUyxJQUFBLENBQUFzRCxDQUFBLGVBQUF2RSxDQUFBLENBQUF1RixPQUFBLENBQUFoQixDQUFBLENBQUFpQixPQUFBLEVBQUFDLElBQUEsV0FBQXRGLENBQUEsSUFBQW1GLE1BQUEsU0FBQW5GLENBQUEsRUFBQWUsQ0FBQSxFQUFBUixDQUFBLGdCQUFBUCxDQUFBLElBQUFtRixNQUFBLFVBQUFuRixDQUFBLEVBQUFlLENBQUEsRUFBQVIsQ0FBQSxRQUFBVixDQUFBLENBQUF1RixPQUFBLENBQUFoQixDQUFBLEVBQUFrQixJQUFBLFdBQUF0RixDQUFBLElBQUFXLENBQUEsQ0FBQW9CLEtBQUEsR0FBQS9CLENBQUEsRUFBQWUsQ0FBQSxDQUFBSixDQUFBLGdCQUFBWCxDQUFBLFdBQUFtRixNQUFBLFVBQUFuRixDQUFBLEVBQUFlLENBQUEsRUFBQVIsQ0FBQSxTQUFBQSxDQUFBLENBQUE4QyxDQUFBLENBQUFjLEdBQUEsU0FBQXBFLENBQUEsRUFBQW9CLENBQUEsb0JBQUFZLEtBQUEsV0FBQUEsTUFBQS9CLENBQUEsRUFBQUssQ0FBQSxhQUFBa0YsMkJBQUEsZUFBQTFGLENBQUEsV0FBQUEsQ0FBQSxFQUFBRSxDQUFBLElBQUFvRixNQUFBLENBQUFuRixDQUFBLEVBQUFLLENBQUEsRUFBQVIsQ0FBQSxFQUFBRSxDQUFBLGdCQUFBQSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQSxDQUFBdUYsSUFBQSxDQUFBQywwQkFBQSxFQUFBQSwwQkFBQSxJQUFBQSwwQkFBQSxxQkFBQXZCLGlCQUFBbkUsQ0FBQSxFQUFBRSxDQUFBLEVBQUFNLENBQUEsUUFBQWMsQ0FBQSxHQUFBaUQsQ0FBQSxtQkFBQXJELENBQUEsRUFBQVIsQ0FBQSxRQUFBWSxDQUFBLEtBQUFjLENBQUEsWUFBQXVELEtBQUEsc0NBQUFyRSxDQUFBLEtBQUFVLENBQUEsb0JBQUFkLENBQUEsUUFBQVIsQ0FBQSxXQUFBd0IsS0FBQSxFQUFBL0IsQ0FBQSxFQUFBOEIsSUFBQSxlQUFBekIsQ0FBQSxDQUFBb0YsTUFBQSxHQUFBMUUsQ0FBQSxFQUFBVixDQUFBLENBQUE4RCxHQUFBLEdBQUE1RCxDQUFBLFVBQUE4QyxDQUFBLEdBQUFoRCxDQUFBLENBQUFxRixRQUFBLE1BQUFyQyxDQUFBLFFBQUExQyxDQUFBLEdBQUFnRixtQkFBQSxDQUFBdEMsQ0FBQSxFQUFBaEQsQ0FBQSxPQUFBTSxDQUFBLFFBQUFBLENBQUEsS0FBQTJELENBQUEsbUJBQUEzRCxDQUFBLHFCQUFBTixDQUFBLENBQUFvRixNQUFBLEVBQUFwRixDQUFBLENBQUF1RixJQUFBLEdBQUF2RixDQUFBLENBQUF3RixLQUFBLEdBQUF4RixDQUFBLENBQUE4RCxHQUFBLHNCQUFBOUQsQ0FBQSxDQUFBb0YsTUFBQSxRQUFBdEUsQ0FBQSxLQUFBaUQsQ0FBQSxRQUFBakQsQ0FBQSxHQUFBVSxDQUFBLEVBQUF4QixDQUFBLENBQUE4RCxHQUFBLEVBQUE5RCxDQUFBLENBQUF5RixpQkFBQSxDQUFBekYsQ0FBQSxDQUFBOEQsR0FBQSx1QkFBQTlELENBQUEsQ0FBQW9GLE1BQUEsSUFBQXBGLENBQUEsQ0FBQTBGLE1BQUEsV0FBQTFGLENBQUEsQ0FBQThELEdBQUEsR0FBQWhELENBQUEsR0FBQWMsQ0FBQSxNQUFBd0MsQ0FBQSxHQUFBUixRQUFBLENBQUFwRSxDQUFBLEVBQUFFLENBQUEsRUFBQU0sQ0FBQSxvQkFBQW9FLENBQUEsQ0FBQVAsSUFBQSxRQUFBL0MsQ0FBQSxHQUFBZCxDQUFBLENBQUF5QixJQUFBLEdBQUFELENBQUEsR0FBQXdDLENBQUEsRUFBQUksQ0FBQSxDQUFBTixHQUFBLEtBQUFHLENBQUEscUJBQUF2QyxLQUFBLEVBQUEwQyxDQUFBLENBQUFOLEdBQUEsRUFBQXJDLElBQUEsRUFBQXpCLENBQUEsQ0FBQXlCLElBQUEsa0JBQUEyQyxDQUFBLENBQUFQLElBQUEsS0FBQS9DLENBQUEsR0FBQVUsQ0FBQSxFQUFBeEIsQ0FBQSxDQUFBb0YsTUFBQSxZQUFBcEYsQ0FBQSxDQUFBOEQsR0FBQSxHQUFBTSxDQUFBLENBQUFOLEdBQUEsbUJBQUF3QixvQkFBQTlGLENBQUEsRUFBQUUsQ0FBQSxRQUFBTSxDQUFBLEdBQUFOLENBQUEsQ0FBQTBGLE1BQUEsRUFBQXRFLENBQUEsR0FBQXRCLENBQUEsQ0FBQTBCLFFBQUEsQ0FBQWxCLENBQUEsT0FBQWMsQ0FBQSxLQUFBbkIsQ0FBQSxTQUFBRCxDQUFBLENBQUEyRixRQUFBLHFCQUFBckYsQ0FBQSxJQUFBUixDQUFBLENBQUEwQixRQUFBLGVBQUF4QixDQUFBLENBQUEwRixNQUFBLGFBQUExRixDQUFBLENBQUFvRSxHQUFBLEdBQUFuRSxDQUFBLEVBQUEyRixtQkFBQSxDQUFBOUYsQ0FBQSxFQUFBRSxDQUFBLGVBQUFBLENBQUEsQ0FBQTBGLE1BQUEsa0JBQUFwRixDQUFBLEtBQUFOLENBQUEsQ0FBQTBGLE1BQUEsWUFBQTFGLENBQUEsQ0FBQW9FLEdBQUEsT0FBQWpDLFNBQUEsdUNBQUE3QixDQUFBLGlCQUFBaUUsQ0FBQSxNQUFBdkQsQ0FBQSxHQUFBa0QsUUFBQSxDQUFBOUMsQ0FBQSxFQUFBdEIsQ0FBQSxDQUFBMEIsUUFBQSxFQUFBeEIsQ0FBQSxDQUFBb0UsR0FBQSxtQkFBQXBELENBQUEsQ0FBQW1ELElBQUEsU0FBQW5FLENBQUEsQ0FBQTBGLE1BQUEsWUFBQTFGLENBQUEsQ0FBQW9FLEdBQUEsR0FBQXBELENBQUEsQ0FBQW9ELEdBQUEsRUFBQXBFLENBQUEsQ0FBQTJGLFFBQUEsU0FBQXBCLENBQUEsTUFBQS9ELENBQUEsR0FBQVEsQ0FBQSxDQUFBb0QsR0FBQSxTQUFBNUQsQ0FBQSxHQUFBQSxDQUFBLENBQUF1QixJQUFBLElBQUEvQixDQUFBLENBQUFGLENBQUEsQ0FBQW1HLFVBQUEsSUFBQXpGLENBQUEsQ0FBQXdCLEtBQUEsRUFBQWhDLENBQUEsQ0FBQXdDLElBQUEsR0FBQTFDLENBQUEsQ0FBQW9HLE9BQUEsZUFBQWxHLENBQUEsQ0FBQTBGLE1BQUEsS0FBQTFGLENBQUEsQ0FBQTBGLE1BQUEsV0FBQTFGLENBQUEsQ0FBQW9FLEdBQUEsR0FBQW5FLENBQUEsR0FBQUQsQ0FBQSxDQUFBMkYsUUFBQSxTQUFBcEIsQ0FBQSxJQUFBL0QsQ0FBQSxJQUFBUixDQUFBLENBQUEwRixNQUFBLFlBQUExRixDQUFBLENBQUFvRSxHQUFBLE9BQUFqQyxTQUFBLHNDQUFBbkMsQ0FBQSxDQUFBMkYsUUFBQSxTQUFBcEIsQ0FBQSxjQUFBNEIsYUFBQWxHLENBQUEsUUFBQUgsQ0FBQSxLQUFBc0csTUFBQSxFQUFBbkcsQ0FBQSxZQUFBQSxDQUFBLEtBQUFILENBQUEsQ0FBQXVHLFFBQUEsR0FBQXBHLENBQUEsV0FBQUEsQ0FBQSxLQUFBSCxDQUFBLENBQUF3RyxVQUFBLEdBQUFyRyxDQUFBLEtBQUFILENBQUEsQ0FBQXlHLFFBQUEsR0FBQXRHLENBQUEsV0FBQXVHLFVBQUEsQ0FBQUMsSUFBQSxDQUFBM0csQ0FBQSxjQUFBNEcsY0FBQXpHLENBQUEsUUFBQUgsQ0FBQSxHQUFBRyxDQUFBLENBQUEwRyxVQUFBLFFBQUE3RyxDQUFBLENBQUFxRSxJQUFBLG9CQUFBckUsQ0FBQSxDQUFBc0UsR0FBQSxFQUFBbkUsQ0FBQSxDQUFBMEcsVUFBQSxHQUFBN0csQ0FBQSxhQUFBa0UsUUFBQS9ELENBQUEsU0FBQXVHLFVBQUEsTUFBQUosTUFBQSxhQUFBbkcsQ0FBQSxDQUFBZ0YsT0FBQSxDQUFBa0IsWUFBQSxjQUFBUyxLQUFBLGlCQUFBOUIsT0FBQWhGLENBQUEsUUFBQUEsQ0FBQSxXQUFBQSxDQUFBLFFBQUFFLENBQUEsR0FBQUYsQ0FBQSxDQUFBVSxDQUFBLE9BQUFSLENBQUEsU0FBQUEsQ0FBQSxDQUFBZSxJQUFBLENBQUFqQixDQUFBLDRCQUFBQSxDQUFBLENBQUEwQyxJQUFBLFNBQUExQyxDQUFBLE9BQUErRyxLQUFBLENBQUEvRyxDQUFBLENBQUE4QixNQUFBLFNBQUFSLENBQUEsT0FBQUosQ0FBQSxZQUFBd0IsS0FBQSxhQUFBcEIsQ0FBQSxHQUFBdEIsQ0FBQSxDQUFBOEIsTUFBQSxPQUFBdEIsQ0FBQSxDQUFBUyxJQUFBLENBQUFqQixDQUFBLEVBQUFzQixDQUFBLFVBQUFvQixJQUFBLENBQUFSLEtBQUEsR0FBQWxDLENBQUEsQ0FBQXNCLENBQUEsR0FBQW9CLElBQUEsQ0FBQVQsSUFBQSxPQUFBUyxJQUFBLFNBQUFBLElBQUEsQ0FBQVIsS0FBQSxHQUFBL0IsQ0FBQSxFQUFBdUMsSUFBQSxDQUFBVCxJQUFBLE9BQUFTLElBQUEsWUFBQXhCLENBQUEsQ0FBQXdCLElBQUEsR0FBQXhCLENBQUEsZ0JBQUFtQixTQUFBLENBQUFoQyxPQUFBLENBQUFMLENBQUEsa0NBQUEwRSxpQkFBQSxDQUFBM0QsU0FBQSxHQUFBNEQsMEJBQUEsRUFBQXJELENBQUEsQ0FBQTJELENBQUEsbUJBQUEvQyxLQUFBLEVBQUF5QywwQkFBQSxFQUFBZCxZQUFBLFNBQUF2QyxDQUFBLENBQUFxRCwwQkFBQSxtQkFBQXpDLEtBQUEsRUFBQXdDLGlCQUFBLEVBQUFiLFlBQUEsU0FBQWEsaUJBQUEsQ0FBQXNDLFdBQUEsR0FBQXJELE1BQUEsQ0FBQWdCLDBCQUFBLEVBQUE3RCxDQUFBLHdCQUFBZCxDQUFBLENBQUFpSCxtQkFBQSxhQUFBOUcsQ0FBQSxRQUFBSCxDQUFBLHdCQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQTZDLFdBQUEsV0FBQWhELENBQUEsS0FBQUEsQ0FBQSxLQUFBMEUsaUJBQUEsNkJBQUExRSxDQUFBLENBQUFnSCxXQUFBLElBQUFoSCxDQUFBLENBQUFpRCxJQUFBLE9BQUFqRCxDQUFBLENBQUFrSCxJQUFBLGFBQUEvRyxDQUFBLFdBQUFRLE1BQUEsQ0FBQXdHLGNBQUEsR0FBQXhHLE1BQUEsQ0FBQXdHLGNBQUEsQ0FBQWhILENBQUEsRUFBQXdFLDBCQUFBLEtBQUF4RSxDQUFBLENBQUFNLFNBQUEsR0FBQWtFLDBCQUFBLEVBQUFoQixNQUFBLENBQUF4RCxDQUFBLEVBQUFXLENBQUEseUJBQUFYLENBQUEsQ0FBQVksU0FBQSxHQUFBSixNQUFBLENBQUFzRCxNQUFBLENBQUFnQixDQUFBLEdBQUE5RSxDQUFBLEtBQUFILENBQUEsQ0FBQW9ILEtBQUEsYUFBQWpILENBQUEsYUFBQXFGLE9BQUEsRUFBQXJGLENBQUEsT0FBQStFLHFCQUFBLENBQUFHLGFBQUEsQ0FBQXRFLFNBQUEsR0FBQTRDLE1BQUEsQ0FBQTBCLGFBQUEsQ0FBQXRFLFNBQUEsRUFBQXlDLENBQUEsaUNBQUF4RCxDQUFBLENBQUFxRixhQUFBLEdBQUFBLGFBQUEsRUFBQXJGLENBQUEsQ0FBQXFILEtBQUEsYUFBQWxILENBQUEsRUFBQUQsQ0FBQSxFQUFBTSxDQUFBLEVBQUFjLENBQUEsRUFBQUosQ0FBQSxlQUFBQSxDQUFBLEtBQUFBLENBQUEsR0FBQW9HLE9BQUEsT0FBQTVHLENBQUEsT0FBQTJFLGFBQUEsQ0FBQXRCLElBQUEsQ0FBQTVELENBQUEsRUFBQUQsQ0FBQSxFQUFBTSxDQUFBLEVBQUFjLENBQUEsR0FBQUosQ0FBQSxVQUFBbEIsQ0FBQSxDQUFBaUgsbUJBQUEsQ0FBQS9HLENBQUEsSUFBQVEsQ0FBQSxHQUFBQSxDQUFBLENBQUFnQyxJQUFBLEdBQUErQyxJQUFBLFdBQUF0RixDQUFBLFdBQUFBLENBQUEsQ0FBQThCLElBQUEsR0FBQTlCLENBQUEsQ0FBQStCLEtBQUEsR0FBQXhCLENBQUEsQ0FBQWdDLElBQUEsV0FBQXdDLHFCQUFBLENBQUFELENBQUEsR0FBQXRCLE1BQUEsQ0FBQXNCLENBQUEsRUFBQW5FLENBQUEsZ0JBQUE2QyxNQUFBLENBQUFzQixDQUFBLEVBQUF2RSxDQUFBLGlDQUFBaUQsTUFBQSxDQUFBc0IsQ0FBQSw2REFBQWpGLENBQUEsQ0FBQXVILElBQUEsYUFBQXBILENBQUEsUUFBQUgsQ0FBQSxHQUFBVyxNQUFBLENBQUFSLENBQUEsR0FBQUQsQ0FBQSxnQkFBQU0sQ0FBQSxJQUFBUixDQUFBLEVBQUFFLENBQUEsQ0FBQXlHLElBQUEsQ0FBQW5HLENBQUEsVUFBQU4sQ0FBQSxDQUFBc0gsT0FBQSxhQUFBOUUsS0FBQSxXQUFBeEMsQ0FBQSxDQUFBNEIsTUFBQSxTQUFBM0IsQ0FBQSxHQUFBRCxDQUFBLENBQUF1SCxHQUFBLFFBQUF0SCxDQUFBLElBQUFILENBQUEsU0FBQTBDLElBQUEsQ0FBQVIsS0FBQSxHQUFBL0IsQ0FBQSxFQUFBdUMsSUFBQSxDQUFBVCxJQUFBLE9BQUFTLElBQUEsV0FBQUEsSUFBQSxDQUFBVCxJQUFBLE9BQUFTLElBQUEsUUFBQTFDLENBQUEsQ0FBQWdGLE1BQUEsR0FBQUEsTUFBQSxFQUFBZCxPQUFBLENBQUFuRCxTQUFBLEtBQUFpQyxXQUFBLEVBQUFrQixPQUFBLEVBQUE0QyxLQUFBLFdBQUFBLE1BQUE5RyxDQUFBLGFBQUEwSCxJQUFBLFdBQUFoRixJQUFBLFdBQUFxRCxJQUFBLFFBQUFDLEtBQUEsR0FBQTdGLENBQUEsT0FBQThCLElBQUEsWUFBQTRELFFBQUEsY0FBQUQsTUFBQSxnQkFBQXRCLEdBQUEsR0FBQW5FLENBQUEsT0FBQXVHLFVBQUEsQ0FBQXZCLE9BQUEsQ0FBQXlCLGFBQUEsSUFBQTVHLENBQUEsV0FBQUUsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBeUgsTUFBQSxPQUFBbkgsQ0FBQSxDQUFBUyxJQUFBLE9BQUFmLENBQUEsTUFBQTZHLEtBQUEsRUFBQTdHLENBQUEsQ0FBQTZDLEtBQUEsY0FBQTdDLENBQUEsSUFBQUMsQ0FBQSxNQUFBeUgsSUFBQSxXQUFBQSxLQUFBLFNBQUEzRixJQUFBLFdBQUE5QixDQUFBLFFBQUF1RyxVQUFBLElBQUFHLFVBQUEsa0JBQUExRyxDQUFBLENBQUFrRSxJQUFBLFFBQUFsRSxDQUFBLENBQUFtRSxHQUFBLGNBQUF1RCxJQUFBLEtBQUE1QixpQkFBQSxXQUFBQSxrQkFBQWpHLENBQUEsYUFBQWlDLElBQUEsUUFBQWpDLENBQUEsTUFBQUUsQ0FBQSxrQkFBQTRILE9BQUF0SCxDQUFBLEVBQUFjLENBQUEsV0FBQVosQ0FBQSxDQUFBMkQsSUFBQSxZQUFBM0QsQ0FBQSxDQUFBNEQsR0FBQSxHQUFBdEUsQ0FBQSxFQUFBRSxDQUFBLENBQUF3QyxJQUFBLEdBQUFsQyxDQUFBLEVBQUFjLENBQUEsS0FBQXBCLENBQUEsQ0FBQTBGLE1BQUEsV0FBQTFGLENBQUEsQ0FBQW9FLEdBQUEsR0FBQW5FLENBQUEsS0FBQW1CLENBQUEsYUFBQUEsQ0FBQSxRQUFBb0YsVUFBQSxDQUFBNUUsTUFBQSxNQUFBUixDQUFBLFNBQUFBLENBQUEsUUFBQUosQ0FBQSxRQUFBd0YsVUFBQSxDQUFBcEYsQ0FBQSxHQUFBWixDQUFBLEdBQUFRLENBQUEsQ0FBQTJGLFVBQUEsaUJBQUEzRixDQUFBLENBQUFvRixNQUFBLFNBQUF3QixNQUFBLGFBQUE1RyxDQUFBLENBQUFvRixNQUFBLFNBQUFvQixJQUFBLFFBQUFsRSxDQUFBLEdBQUFoRCxDQUFBLENBQUFTLElBQUEsQ0FBQUMsQ0FBQSxlQUFBSixDQUFBLEdBQUFOLENBQUEsQ0FBQVMsSUFBQSxDQUFBQyxDQUFBLHFCQUFBc0MsQ0FBQSxJQUFBMUMsQ0FBQSxhQUFBNEcsSUFBQSxHQUFBeEcsQ0FBQSxDQUFBcUYsUUFBQSxTQUFBdUIsTUFBQSxDQUFBNUcsQ0FBQSxDQUFBcUYsUUFBQSxnQkFBQW1CLElBQUEsR0FBQXhHLENBQUEsQ0FBQXNGLFVBQUEsU0FBQXNCLE1BQUEsQ0FBQTVHLENBQUEsQ0FBQXNGLFVBQUEsY0FBQWhELENBQUEsYUFBQWtFLElBQUEsR0FBQXhHLENBQUEsQ0FBQXFGLFFBQUEsU0FBQXVCLE1BQUEsQ0FBQTVHLENBQUEsQ0FBQXFGLFFBQUEscUJBQUF6RixDQUFBLFlBQUE2RSxLQUFBLHFEQUFBK0IsSUFBQSxHQUFBeEcsQ0FBQSxDQUFBc0YsVUFBQSxTQUFBc0IsTUFBQSxDQUFBNUcsQ0FBQSxDQUFBc0YsVUFBQSxZQUFBTixNQUFBLFdBQUFBLE9BQUEvRixDQUFBLEVBQUFILENBQUEsYUFBQUUsQ0FBQSxRQUFBd0csVUFBQSxDQUFBNUUsTUFBQSxNQUFBNUIsQ0FBQSxTQUFBQSxDQUFBLFFBQUFvQixDQUFBLFFBQUFvRixVQUFBLENBQUF4RyxDQUFBLE9BQUFvQixDQUFBLENBQUFnRixNQUFBLFNBQUFvQixJQUFBLElBQUFsSCxDQUFBLENBQUFTLElBQUEsQ0FBQUssQ0FBQSx3QkFBQW9HLElBQUEsR0FBQXBHLENBQUEsQ0FBQWtGLFVBQUEsUUFBQXRGLENBQUEsR0FBQUksQ0FBQSxhQUFBSixDQUFBLGlCQUFBZixDQUFBLG1CQUFBQSxDQUFBLEtBQUFlLENBQUEsQ0FBQW9GLE1BQUEsSUFBQXRHLENBQUEsSUFBQUEsQ0FBQSxJQUFBa0IsQ0FBQSxDQUFBc0YsVUFBQSxLQUFBdEYsQ0FBQSxjQUFBUixDQUFBLEdBQUFRLENBQUEsR0FBQUEsQ0FBQSxDQUFBMkYsVUFBQSxjQUFBbkcsQ0FBQSxDQUFBMkQsSUFBQSxHQUFBbEUsQ0FBQSxFQUFBTyxDQUFBLENBQUE0RCxHQUFBLEdBQUF0RSxDQUFBLEVBQUFrQixDQUFBLFNBQUEwRSxNQUFBLGdCQUFBbEQsSUFBQSxHQUFBeEIsQ0FBQSxDQUFBc0YsVUFBQSxFQUFBL0IsQ0FBQSxTQUFBc0QsUUFBQSxDQUFBckgsQ0FBQSxNQUFBcUgsUUFBQSxXQUFBQSxTQUFBNUgsQ0FBQSxFQUFBSCxDQUFBLG9CQUFBRyxDQUFBLENBQUFrRSxJQUFBLFFBQUFsRSxDQUFBLENBQUFtRSxHQUFBLHFCQUFBbkUsQ0FBQSxDQUFBa0UsSUFBQSxtQkFBQWxFLENBQUEsQ0FBQWtFLElBQUEsUUFBQTNCLElBQUEsR0FBQXZDLENBQUEsQ0FBQW1FLEdBQUEsZ0JBQUFuRSxDQUFBLENBQUFrRSxJQUFBLFNBQUF3RCxJQUFBLFFBQUF2RCxHQUFBLEdBQUFuRSxDQUFBLENBQUFtRSxHQUFBLE9BQUFzQixNQUFBLGtCQUFBbEQsSUFBQSx5QkFBQXZDLENBQUEsQ0FBQWtFLElBQUEsSUFBQXJFLENBQUEsVUFBQTBDLElBQUEsR0FBQTFDLENBQUEsR0FBQXlFLENBQUEsS0FBQXVELE1BQUEsV0FBQUEsT0FBQTdILENBQUEsYUFBQUgsQ0FBQSxRQUFBMEcsVUFBQSxDQUFBNUUsTUFBQSxNQUFBOUIsQ0FBQSxTQUFBQSxDQUFBLFFBQUFFLENBQUEsUUFBQXdHLFVBQUEsQ0FBQTFHLENBQUEsT0FBQUUsQ0FBQSxDQUFBc0csVUFBQSxLQUFBckcsQ0FBQSxjQUFBNEgsUUFBQSxDQUFBN0gsQ0FBQSxDQUFBMkcsVUFBQSxFQUFBM0csQ0FBQSxDQUFBdUcsUUFBQSxHQUFBRyxhQUFBLENBQUExRyxDQUFBLEdBQUF1RSxDQUFBLHlCQUFBd0QsT0FBQTlILENBQUEsYUFBQUgsQ0FBQSxRQUFBMEcsVUFBQSxDQUFBNUUsTUFBQSxNQUFBOUIsQ0FBQSxTQUFBQSxDQUFBLFFBQUFFLENBQUEsUUFBQXdHLFVBQUEsQ0FBQTFHLENBQUEsT0FBQUUsQ0FBQSxDQUFBb0csTUFBQSxLQUFBbkcsQ0FBQSxRQUFBSyxDQUFBLEdBQUFOLENBQUEsQ0FBQTJHLFVBQUEsa0JBQUFyRyxDQUFBLENBQUE2RCxJQUFBLFFBQUEvQyxDQUFBLEdBQUFkLENBQUEsQ0FBQThELEdBQUEsRUFBQXNDLGFBQUEsQ0FBQTFHLENBQUEsWUFBQW9CLENBQUEsZ0JBQUFxRSxLQUFBLDhCQUFBdUMsYUFBQSxXQUFBQSxjQUFBbEksQ0FBQSxFQUFBRSxDQUFBLEVBQUFNLENBQUEsZ0JBQUFxRixRQUFBLEtBQUFuRSxRQUFBLEVBQUFzRCxNQUFBLENBQUFoRixDQUFBLEdBQUFtRyxVQUFBLEVBQUFqRyxDQUFBLEVBQUFrRyxPQUFBLEVBQUE1RixDQUFBLG9CQUFBb0YsTUFBQSxVQUFBdEIsR0FBQSxHQUFBbkUsQ0FBQSxHQUFBc0UsQ0FBQSxPQUFBekUsQ0FBQTtBQUFBLFNBQUFtSSxtQkFBQUMsR0FBQSxFQUFBN0MsT0FBQSxFQUFBOEMsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsRUFBQUMsR0FBQSxFQUFBbEUsR0FBQSxjQUFBbUUsSUFBQSxHQUFBTCxHQUFBLENBQUFJLEdBQUEsRUFBQWxFLEdBQUEsT0FBQXBDLEtBQUEsR0FBQXVHLElBQUEsQ0FBQXZHLEtBQUEsV0FBQXdHLEtBQUEsSUFBQUwsTUFBQSxDQUFBSyxLQUFBLGlCQUFBRCxJQUFBLENBQUF4RyxJQUFBLElBQUFzRCxPQUFBLENBQUFyRCxLQUFBLFlBQUFvRixPQUFBLENBQUEvQixPQUFBLENBQUFyRCxLQUFBLEVBQUF1RCxJQUFBLENBQUE2QyxLQUFBLEVBQUFDLE1BQUE7QUFBQSxTQUFBSSxrQkFBQUMsRUFBQSw2QkFBQUMsSUFBQSxTQUFBQyxJQUFBLEdBQUFDLFNBQUEsYUFBQXpCLE9BQUEsV0FBQS9CLE9BQUEsRUFBQThDLE1BQUEsUUFBQUQsR0FBQSxHQUFBUSxFQUFBLENBQUFJLEtBQUEsQ0FBQUgsSUFBQSxFQUFBQyxJQUFBLFlBQUFSLE1BQUFwRyxLQUFBLElBQUFpRyxrQkFBQSxDQUFBQyxHQUFBLEVBQUE3QyxPQUFBLEVBQUE4QyxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxVQUFBckcsS0FBQSxjQUFBcUcsT0FBQS9GLEdBQUEsSUFBQTJGLGtCQUFBLENBQUFDLEdBQUEsRUFBQTdDLE9BQUEsRUFBQThDLE1BQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBLFdBQUEvRixHQUFBLEtBQUE4RixLQUFBLENBQUFXLFNBQUE7QUF3QkEsSUFBTUMsa0JBQWtCLEdBQUcsQ0FDekJDLHlCQUFZLEVBQ1pDLDhCQUFpQixFQUNqQkMseUJBQVksRUFDWkMseUJBQVksRUFDWkMsMEJBQWEsRUFDYkMsaUNBQW9CLEVBQ3BCQyx1QkFBVSxFQUNWO0VBQ0VDLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSxxREFBcUQ7RUFDM0QxRyxJQUFJLEVBQUUsTUFBTTtFQUNab0IsSUFBSSxFQUFFdUY7QUFDUixDQUFDLEVBQ0Q7RUFDRUYsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLCtEQUErRDtFQUNyRTFHLElBQUksRUFBRSxXQUFXO0VBQ2pCb0IsSUFBSSxFQUFFdUY7QUFDUixDQUFDLEVBQ0Q7RUFDRUYsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLDJEQUEyRDtFQUNqRTFHLElBQUksRUFBRSxLQUFLO0VBQ1hvQixJQUFJLEVBQUV3RjtBQUNSLENBQUMsRUFDRDtFQUNFSCxLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsaUNBQWlDO0VBQ3ZDMUcsSUFBSSxFQUFFLFFBQVE7RUFDZG9CLElBQUksRUFBRXdGO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VILEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSxtREFBbUQ7RUFDekRHLFFBQVEsRUFBRSxJQUFJO0VBQ2Q3RyxJQUFJLEVBQUUsZUFBZTtFQUNyQm9CLElBQUksRUFBRXdGO0FBQ1IsQ0FBQyxDQUNGO0FBQ0QsSUFBTUUsT0FBTyxHQUFHLElBQUFDLDJCQUFlLEVBQUNkLGtCQUFrQixDQUFDO0FBQ25ELElBQU1lLEtBQUssR0FBRyxJQUFJQyxJQUFJLENBQUMsQ0FBQztBQUFBLFNBRVRDLGNBQWNBLENBQUFDLEVBQUE7RUFBQSxPQUFBQyxlQUFBLENBQUFyQixLQUFBLE9BQUFELFNBQUE7QUFBQTtBQUFBLFNBQUFzQixnQkFBQTtFQUFBQSxlQUFBLEdBQUExQixpQkFBQSxlQUFBcEYsbUJBQUEsR0FBQTJELElBQUEsQ0FBN0IsU0FBQW9ELFFBQ0VDLEdBQVc7SUFBQSxJQUFBQyxPQUFBO01BQUFDLE9BQUE7TUFBQUMsT0FBQTtNQUFBQyxLQUFBLEdBQUE1QixTQUFBO0lBQUEsT0FBQXhGLG1CQUFBLEdBQUFRLElBQUEsVUFBQTZHLFNBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBbkQsSUFBQSxHQUFBbUQsUUFBQSxDQUFBbkksSUFBQTtRQUFBO1VBQ1g4SCxPQUFlLEdBQUFHLEtBQUEsQ0FBQTdJLE1BQUEsUUFBQTZJLEtBQUEsUUFBQTFCLFNBQUEsR0FBQTBCLEtBQUEsTUFBRyxDQUFDO1VBQ25CRixPQUFlLEdBQUFFLEtBQUEsQ0FBQTdJLE1BQUEsUUFBQTZJLEtBQUEsUUFBQTFCLFNBQUEsR0FBQTBCLEtBQUEsTUFBRyxHQUFHO1VBRVpELE9BQU8sR0FBRyxDQUFDO1FBQUE7VUFBQSxNQUFFQSxPQUFPLEdBQUdGLE9BQU87WUFBQUssUUFBQSxDQUFBbkksSUFBQTtZQUFBO1VBQUE7VUFBQW1JLFFBQUEsQ0FBQW5ELElBQUE7VUFBQW1ELFFBQUEsQ0FBQW5JLElBQUE7VUFBQSxPQUV0Qm9JLEtBQUssQ0FBQ1AsR0FBRyxDQUFDO1FBQUE7VUFBQSxPQUFBTSxRQUFBLENBQUEzRSxNQUFBLFdBQUEyRSxRQUFBLENBQUE5RSxJQUFBO1FBQUE7VUFBQThFLFFBQUEsQ0FBQW5ELElBQUE7VUFBQW1ELFFBQUEsQ0FBQUUsRUFBQSxHQUFBRixRQUFBO1VBQUEsTUFFbkJILE9BQU8sS0FBS0YsT0FBTyxHQUFHLENBQUM7WUFBQUssUUFBQSxDQUFBbkksSUFBQTtZQUFBO1VBQUE7VUFBQSxNQUFBbUksUUFBQSxDQUFBRSxFQUFBO1FBQUE7VUFHM0JDLE9BQU8sQ0FBQ0MsSUFBSSxrQkFBQUMsTUFBQSxDQUNPUixPQUFPLEdBQUcsQ0FBQyxXQUFBUSxNQUFBLENBQVFYLEdBQUcsMkJBQUFXLE1BQUEsQ0FBd0JULE9BQU8sVUFDeEUsQ0FBQztVQUFBSSxRQUFBLENBQUFuSSxJQUFBO1VBQUEsT0FDSyxJQUFJNEUsT0FBTyxDQUFDLFVBQUMvQixPQUFPO1lBQUEsT0FBSzRGLFVBQVUsQ0FBQzVGLE9BQU8sRUFBRWtGLE9BQU8sQ0FBQztVQUFBLEVBQUM7UUFBQTtVQUM1REEsT0FBTyxJQUFJLENBQUM7UUFBQTtVQVh5QkMsT0FBTyxFQUFFO1VBQUFHLFFBQUEsQ0FBQW5JLElBQUE7VUFBQTtRQUFBO1VBQUEsTUFjNUMsSUFBSWlELEtBQUssb0JBQUF1RixNQUFBLENBQW9CWCxHQUFHLGFBQUFXLE1BQUEsQ0FBVVYsT0FBTyxjQUFXLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQUssUUFBQSxDQUFBakQsSUFBQTtNQUFBO0lBQUEsR0FBQTBDLE9BQUE7RUFBQSxDQUNwRTtFQUFBLE9BQUFELGVBQUEsQ0FBQXJCLEtBQUEsT0FBQUQsU0FBQTtBQUFBO0FBQUEsU0FFY3FDLGlCQUFpQkEsQ0FBQTtFQUFBLE9BQUFDLGtCQUFBLENBQUFyQyxLQUFBLE9BQUFELFNBQUE7QUFBQTtBQUFBLFNBQUFzQyxtQkFBQTtFQUFBQSxrQkFBQSxHQUFBMUMsaUJBQUEsZUFBQXBGLG1CQUFBLEdBQUEyRCxJQUFBLENBQWhDLFNBQUFvRSxTQUFBO0lBQUEsSUFBQUMsT0FBQSxFQUFBQyxZQUFBLEVBQUFDLFNBQUEsRUFBQUMsS0FBQSxFQUFBQyxRQUFBLEVBQUFDLFFBQUEsRUFBQUMsSUFBQSxFQUFBQyxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsUUFBQSxFQUFBQyxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsa0JBQUE7SUFBQSxPQUFBNUksbUJBQUEsR0FBQVEsSUFBQSxVQUFBcUksVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUEzRSxJQUFBLEdBQUEyRSxTQUFBLENBQUEzSixJQUFBO1FBQUE7VUFDRSxJQUFBNEosa0JBQU0sRUFDSixDQUFDdkMsT0FBTyxDQUFDd0MsTUFBTSxJQUFJLENBQUN4QyxPQUFPLENBQUN5QyxHQUFHLEVBQy9CLDJDQUNGLENBQUM7VUFFS2pCLE9BQU8sR0FBR3hCLE9BQU8sQ0FBQ3dCLE9BQU87VUFDekJDLFlBQVksR0FBR2lCLGdCQUFJLENBQUNDLElBQUksQ0FBQ25CLE9BQU8sRUFBRSxXQUFXLENBQUM7VUFDcEQsSUFBSXhCLE9BQU8sQ0FBQzRDLElBQUksRUFBRTtZQUNoQmpOLEdBQUcsQ0FBQ2tOLFlBQVksQ0FBQ3BCLFlBQVksQ0FBQztVQUNoQztVQUNBcUIsbUJBQUUsQ0FBQ0MsYUFBYSxDQUFDdEIsWUFBWSxDQUFDO1VBQUEsTUFFMUJ6QixPQUFPLENBQUNnRCxJQUFJLElBQUksQ0FBQ2hELE9BQU8sQ0FBQ3lDLEdBQUc7WUFBQUgsU0FBQSxDQUFBM0osSUFBQTtZQUFBO1VBQUE7VUFBQStJLFNBQUEsR0FBQXBLLDBCQUFBLENBQ1B3TCxtQkFBRSxDQUFDRyxXQUFXLENBQUN4QixZQUFZLENBQUM7VUFBQWEsU0FBQSxDQUFBM0UsSUFBQTtVQUFBK0QsU0FBQSxDQUFBekosQ0FBQTtRQUFBO1VBQUEsS0FBQTBKLEtBQUEsR0FBQUQsU0FBQSxDQUFBakwsQ0FBQSxJQUFBeUIsSUFBQTtZQUFBb0ssU0FBQSxDQUFBM0osSUFBQTtZQUFBO1VBQUE7VUFBeENpSixRQUFRLEdBQUFELEtBQUEsQ0FBQXhKLEtBQUE7VUFBQSxNQUNieUosUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7WUFBQVUsU0FBQSxDQUFBM0osSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBMkosU0FBQSxDQUFBbkcsTUFBQTtRQUFBO1VBR3ZCMkcsbUJBQUUsQ0FBQ0ksVUFBVSxDQUFDUixnQkFBSSxDQUFDQyxJQUFJLENBQUNsQixZQUFZLEVBQUVHLFFBQVEsQ0FBQyxDQUFDO1FBQUE7VUFBQVUsU0FBQSxDQUFBM0osSUFBQTtVQUFBO1FBQUE7VUFBQTJKLFNBQUEsQ0FBQTNKLElBQUE7VUFBQTtRQUFBO1VBQUEySixTQUFBLENBQUEzRSxJQUFBO1VBQUEyRSxTQUFBLENBQUF0QixFQUFBLEdBQUFzQixTQUFBO1VBQUFaLFNBQUEsQ0FBQXpMLENBQUEsQ0FBQXFNLFNBQUEsQ0FBQXRCLEVBQUE7UUFBQTtVQUFBc0IsU0FBQSxDQUFBM0UsSUFBQTtVQUFBK0QsU0FBQSxDQUFBckosQ0FBQTtVQUFBLE9BQUFpSyxTQUFBLENBQUFyRSxNQUFBO1FBQUE7VUFJOUM0RCxRQUFRLEdBQUc3QixPQUFPLENBQUN5QyxHQUFHO1VBQ3hCWCxJQUFJLEdBQUdqQyxPQUFPLENBQUNnQyxRQUFRLENBQUM7VUFBQUUsVUFBQSxHQUFBekssMEJBQUEsQ0FDRCxJQUFBNkwsbUNBQTBCLEVBQ25EM0IsT0FBTyxFQUNQeEIsT0FBTyxDQUFDb0QsV0FDVixDQUFDO1VBQUFkLFNBQUEsQ0FBQTNFLElBQUE7VUFBQW9FLFVBQUEsQ0FBQTlKLENBQUE7UUFBQTtVQUFBLEtBQUErSixNQUFBLEdBQUFELFVBQUEsQ0FBQXRMLENBQUEsSUFBQXlCLElBQUE7WUFBQW9LLFNBQUEsQ0FBQTNKLElBQUE7WUFBQTtVQUFBO1VBSFlzSixRQUFRLEdBQUFELE1BQUEsQ0FBQTdKLEtBQUEsQ0FBUjhKLFFBQVE7VUFBQUMsVUFBQSxHQUFBNUssMEJBQUEsQ0FJYyxJQUFBK0wsOENBQXdCLEVBQUNwQixRQUFRLENBQUM7VUFBQUssU0FBQSxDQUFBM0UsSUFBQTtVQUFBdUUsVUFBQSxDQUFBakssQ0FBQTtRQUFBO1VBQUEsS0FBQWtLLE1BQUEsR0FBQUQsVUFBQSxDQUFBekwsQ0FBQSxJQUFBeUIsSUFBQTtZQUFBb0ssU0FBQSxDQUFBM0osSUFBQTtZQUFBO1VBQUE7VUFBeER5SixrQkFBa0IsR0FBQUQsTUFBQSxDQUFBaEssS0FBQTtVQUFBLE1BRXZCaUssa0JBQWtCLENBQUNLLEdBQUcsQ0FBQ2EsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJO1lBQUFoQixTQUFBLENBQUEzSixJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUEySixTQUFBLENBQUFuRyxNQUFBO1FBQUE7VUFBQSxLQUkvQzJGLElBQUk7WUFBQVEsU0FBQSxDQUFBM0osSUFBQTtZQUFBO1VBQUE7VUFBQSxNQUNGeUosa0JBQWtCLENBQUNLLEdBQUcsS0FBS1osUUFBUTtZQUFBUyxTQUFBLENBQUEzSixJQUFBO1lBQUE7VUFBQTtVQUNyQ21KLElBQUksR0FBRyxLQUFLO1VBQUFRLFNBQUEsQ0FBQTNKLElBQUE7VUFBQTtRQUFBO1VBQUEsT0FBQTJKLFNBQUEsQ0FBQW5HLE1BQUE7UUFBQTtVQUFBbUcsU0FBQSxDQUFBM0osSUFBQTtVQUFBLE9BTVY0Syx5QkFBeUIsQ0FBQ25CLGtCQUFrQixFQUFFWCxZQUFZLEVBQUV6QixPQUFPLENBQUM7UUFBQTtVQUFBc0MsU0FBQSxDQUFBM0osSUFBQTtVQUFBO1FBQUE7VUFBQTJKLFNBQUEsQ0FBQTNKLElBQUE7VUFBQTtRQUFBO1VBQUEySixTQUFBLENBQUEzRSxJQUFBO1VBQUEyRSxTQUFBLENBQUFrQixFQUFBLEdBQUFsQixTQUFBO1VBQUFKLFVBQUEsQ0FBQWpNLENBQUEsQ0FBQXFNLFNBQUEsQ0FBQWtCLEVBQUE7UUFBQTtVQUFBbEIsU0FBQSxDQUFBM0UsSUFBQTtVQUFBdUUsVUFBQSxDQUFBN0osQ0FBQTtVQUFBLE9BQUFpSyxTQUFBLENBQUFyRSxNQUFBO1FBQUE7VUFBQXFFLFNBQUEsQ0FBQTNKLElBQUE7VUFBQTtRQUFBO1VBQUEySixTQUFBLENBQUEzSixJQUFBO1VBQUE7UUFBQTtVQUFBMkosU0FBQSxDQUFBM0UsSUFBQTtVQUFBMkUsU0FBQSxDQUFBbUIsRUFBQSxHQUFBbkIsU0FBQTtVQUFBUCxVQUFBLENBQUE5TCxDQUFBLENBQUFxTSxTQUFBLENBQUFtQixFQUFBO1FBQUE7VUFBQW5CLFNBQUEsQ0FBQTNFLElBQUE7VUFBQW9FLFVBQUEsQ0FBQTFKLENBQUE7VUFBQSxPQUFBaUssU0FBQSxDQUFBckUsTUFBQTtRQUFBO1VBQUEsS0FJMUUrQixPQUFPLENBQUN3QyxNQUFNO1lBQUFGLFNBQUEsQ0FBQTNKLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQTJKLFNBQUEsQ0FBQW5HLE1BQUEsV0FDVHhHLEdBQUcsQ0FBQytOLGFBQWEsQ0FBQ2pDLFlBQVksRUFBRSxrQkFBa0IsRUFBRXpCLE9BQU8sQ0FBQzJELE1BQU0sQ0FBQztRQUFBO1VBQUEsT0FBQXJCLFNBQUEsQ0FBQW5HLE1BQUEsV0FFckUsQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBbUcsU0FBQSxDQUFBekUsSUFBQTtNQUFBO0lBQUEsR0FBQTBELFFBQUE7RUFBQSxDQUNUO0VBQUEsT0FBQUQsa0JBQUEsQ0FBQXJDLEtBQUEsT0FBQUQsU0FBQTtBQUFBO0FBQUEsU0FFY3VFLHlCQUF5QkEsQ0FBQUssR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUE7RUFBQSxPQUFBQywwQkFBQSxDQUFBOUUsS0FBQSxPQUFBRCxTQUFBO0FBQUE7QUFBQSxTQUFBK0UsMkJBQUE7RUFBQUEsMEJBQUEsR0FBQW5GLGlCQUFBLGVBQUFwRixtQkFBQSxHQUFBMkQsSUFBQSxDQUF4QyxTQUFBNkcsU0FDRTVCLGtCQUF1QixFQUN2QlgsWUFBb0IsRUFDcEJ6QixPQUFZO0lBQUEsSUFBQWlFLFdBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsU0FBQSxFQUFBQyxLQUFBLEVBQUFDLFVBQUEsRUFBQUMsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLElBQUE7SUFBQSxPQUFBaEwsbUJBQUEsR0FBQVEsSUFBQSxVQUFBeUssVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUEvRyxJQUFBLEdBQUErRyxTQUFBLENBQUEvTCxJQUFBO1FBQUE7VUFFTnNMLFdBQVcsR0FBRyxJQUFBVSw0QkFBbUIsRUFBQ2xELFlBQVksRUFBRVcsa0JBQWtCLENBQUNLLEdBQUcsQ0FBQztVQUM3RUssbUJBQUUsQ0FBQ0MsYUFBYSxDQUFDa0IsV0FBVyxDQUFDO1VBRXZCQyxnQkFBOEMsR0FBRyxDQUFDLENBQUM7VUFDbkRDLFNBQVMsR0FBR3pCLGdCQUFJLENBQUNDLElBQUksQ0FBQ3NCLFdBQVcsRUFBRSxZQUFZLENBQUM7VUFDaERHLEtBQUssR0FDVHRCLG1CQUFFLENBQUM4QixjQUFjLENBQUNULFNBQVMsQ0FBQyxHQUFHckIsbUJBQUUsQ0FBQytCLFlBQVksQ0FBQ1YsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1VBQUFFLFVBQUEsR0FBQS9NLDBCQUFBLENBRzVCLElBQUF3TixnQ0FBMEIsRUFDNUQxQyxrQkFDRixDQUFDO1VBQUFzQyxTQUFBLENBQUEvRyxJQUFBO1VBQUE0RyxLQUFBLGdCQUFBL0ssbUJBQUEsR0FBQTJELElBQUEsVUFBQW9ILE1BQUE7WUFBQSxJQUFBUSxxQkFBQSxFQUFBQyxhQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBO1lBQUEsSUFBQUMsWUFBQSxFQUFBQyxNQUFBLEVBQUE5SyxJQUFBLEVBQUFrRyxHQUFBLEVBQUFvQixRQUFBLEVBQUF5RCxZQUFBLEVBQUFDLGdCQUFBLEVBQUFDLFNBQUEsRUFBQUMsUUFBQSxFQUFBQyxRQUFBLEVBQUFDLFdBQUEsRUFBQUMsTUFBQSxFQUFBQyxNQUFBLEVBQUFDLGdCQUFBO1lBQUEsT0FBQXJNLG1CQUFBLEdBQUFRLElBQUEsVUFBQThMLE9BQUFDLFNBQUE7Y0FBQSxrQkFBQUEsU0FBQSxDQUFBcEksSUFBQSxHQUFBb0ksU0FBQSxDQUFBcE4sSUFBQTtnQkFBQTtrQkFBQXdNLFlBQUEsR0FBQWIsTUFBQSxDQUFBbk0sS0FBQSxFQUZZaU4sTUFBTSxHQUFBRCxZQUFBLENBQU5DLE1BQU0sRUFBRTlLLElBQUksR0FBQTZLLFlBQUEsQ0FBSjdLLElBQUksRUFBRWtHLEdBQUcsR0FBQTJFLFlBQUEsQ0FBSDNFLEdBQUc7a0JBR3RCb0IsUUFBUSxNQUFBVCxNQUFBLENBQU03RyxJQUFJLE9BQUE2RyxNQUFBLENBQ3RCaUUsTUFBTSxLQUFLWSx1QkFBaUIsQ0FBQ0MsR0FBRyxHQUFHLEtBQUssR0FBRyxNQUFNLEdBR25EO2tCQUFBLE1BQ0lqRyxPQUFPLENBQUNvRixNQUFNLElBQUlwRixPQUFPLENBQUNvRixNQUFNLEtBQUtBLE1BQU07b0JBQUFXLFNBQUEsQ0FBQXBOLElBQUE7b0JBQUE7a0JBQUE7a0JBQUEsT0FBQW9OLFNBQUEsQ0FBQTVKLE1BQUE7Z0JBQUE7a0JBSS9DO2tCQUNNa0osWUFBWSxJQUFBTixxQkFBQSxHQUFHM0Msa0JBQWtCLENBQUM4RCxjQUFjLGNBQUFuQixxQkFBQSxnQkFBQUEscUJBQUEsR0FBakNBLHFCQUFBLENBQW1DekssSUFBSSxjQUFBeUsscUJBQUEsdUJBQXZDQSxxQkFBQSxDQUF5Q29CLElBQUk7a0JBQUEsTUFFaEVuRyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUtkLFNBQVMsSUFDdEMsQ0FBQ2MsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDb0csUUFBUSxDQUFDZixZQUFZLENBQUM7b0JBQUFVLFNBQUEsQ0FBQXBOLElBQUE7b0JBQUE7a0JBQUE7a0JBQUEsT0FBQW9OLFNBQUEsQ0FBQTVKLE1BQUE7Z0JBQUE7a0JBSzlDbUosZ0JBQWdCLElBQUFOLGFBQUEsR0FBR1osS0FBSyxDQUFDZ0IsTUFBTSxDQUFDLGNBQUFKLGFBQUEsY0FBQUEsYUFBQSxHQUFLWixLQUFLLENBQUNnQixNQUFNLENBQUMsR0FBRyxFQUFFO2tCQUN2REcsU0FBUyxJQUFBTixxQkFBQSxHQUNYSyxnQkFBZ0IsQ0FBQ2UsSUFBSSxDQUFDLFVBQUNDLElBQUk7b0JBQUEsT0FBS0EsSUFBSSxDQUFDOUYsR0FBRyxLQUFLQSxHQUFHO2tCQUFBLEVBQUMsY0FBQXlFLHFCQUFBLGNBQUFBLHFCQUFBLEdBQ2hELENBQUMsQ0FBQztrQkFDTCxJQUFJLENBQUNLLGdCQUFnQixDQUFDYyxRQUFRLENBQUNiLFNBQVMsQ0FBQyxFQUFFO29CQUN6Q0QsZ0JBQWdCLENBQUMxSSxJQUFJLENBQUMySSxTQUFTLENBQUM7a0JBQ2xDO2tCQUNBQSxTQUFTLENBQUMvRSxHQUFHLEdBQUdBLEdBQUc7a0JBQUEsTUFFZitFLFNBQVMsQ0FBQ2dCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQ3ZHLE9BQU8sQ0FBQ2dELElBQUk7b0JBQUErQyxTQUFBLENBQUFwTixJQUFBO29CQUFBO2tCQUFBO2tCQUMzQ3VMLGdCQUFnQixDQUFDcUIsU0FBUyxDQUFDSyxNQUFNLENBQVcsR0FBR2hFLFFBQVE7a0JBQUEsT0FBQW1FLFNBQUEsQ0FBQTVKLE1BQUE7Z0JBQUE7a0JBQUEsTUFJdkRvSixTQUFTLENBQUNnQixNQUFNLEtBQUssR0FBRyxJQUN4QixDQUFDdkcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUNyQixJQUFBd0cseUJBQWdCLEVBQ2R0RyxLQUFLLEdBQUFnRixzQkFBQSxHQUNMOUMsa0JBQWtCLENBQUNxRSxVQUFVLENBQUNDLE1BQU0sQ0FBQ0MsWUFBWSxjQUFBekIsc0JBQUEsY0FBQUEsc0JBQUEsR0FDOUM5QyxrQkFBa0IsQ0FBQ3FFLFVBQVUsQ0FBQ0MsTUFBTSxDQUFDRSxTQUMxQyxDQUFDLEdBQUcsRUFBRTtvQkFBQWIsU0FBQSxDQUFBcE4sSUFBQTtvQkFBQTtrQkFBQTtrQkFBQSxPQUFBb04sU0FBQSxDQUFBNUosTUFBQTtnQkFBQTtrQkFLUixJQUFJLENBQUM2RCxPQUFPLENBQUM2RyxNQUFNLEVBQUU7b0JBQ25CNUYsT0FBTyxDQUFDNkYsR0FBRyxvQ0FBQTNGLE1BQUEsQ0FDMEJpQixrQkFBa0IsQ0FBQ0ssR0FBRyxVQUFBdEIsTUFBQSxDQUFPWCxHQUFHLFdBQ3JFLENBQUM7a0JBQ0g7a0JBQUN1RixTQUFBLENBQUFwTixJQUFBO2tCQUFBLE9BRXNCeUgsY0FBYyxDQUFDSSxHQUFHLENBQUM7Z0JBQUE7a0JBQXBDZ0YsUUFBUSxHQUFBTyxTQUFBLENBQUEvSixJQUFBO2tCQUNSeUosUUFBUSxHQUFHL0MsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDc0IsV0FBVyxFQUFFckMsUUFBUSxDQUFDO2tCQUFBLEtBRTdDNEQsUUFBUSxDQUFDdUIsRUFBRTtvQkFBQWhCLFNBQUEsQ0FBQXBOLElBQUE7b0JBQUE7a0JBQUE7a0JBQUFvTixTQUFBLENBQUFwTixJQUFBO2tCQUFBLE9BQ2E2TSxRQUFRLENBQUNFLFdBQVcsQ0FBQyxDQUFDO2dCQUFBO2tCQUExQ0EsV0FBVyxHQUFBSyxTQUFBLENBQUEvSixJQUFBO2tCQUNYMkosTUFBTSxHQUFHcUIsTUFBTSxDQUFDN04sSUFBSSxDQUFDdU0sV0FBVyxDQUFDO2tCQUN2QyxJQUNFTixNQUFNLEtBQUtZLHVCQUFpQixDQUFDQyxHQUFHLElBQ2hDLENBQUNOLE1BQU0sQ0FBQ3NCLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNsTyxRQUFRLENBQUMsQ0FBQyxDQUFDbU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUNwRDtvQkFDQTtvQkFDQTtvQkFDQSxJQUFJLENBQUNsSCxPQUFPLENBQUM2RyxNQUFNLEVBQUU7c0JBQ25CNUYsT0FBTyxDQUFDQyxJQUFJLFlBQUFDLE1BQUEsQ0FBV1gsR0FBRyxrQkFBYyxDQUFDO29CQUMzQztvQkFDQXNDLG1CQUFFLENBQUNJLFVBQVUsQ0FBQ3VDLFFBQVEsQ0FBQztvQkFDdkIsT0FBT0YsU0FBUyxDQUFDM0QsUUFBUTtvQkFDekIsT0FBTzJELFNBQVMsQ0FBQ0ssTUFBTTtvQkFDdkJMLFNBQVMsQ0FBQ2dCLE1BQU0sR0FBRyxHQUFHO2tCQUN4QixDQUFDLE1BQU07b0JBQ0NYLE1BQU0sR0FBRyxJQUFBdUIsa0JBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQ0MsTUFBTSxDQUFDekIsTUFBTSxDQUFDLENBQUMwQixNQUFNLENBQUMsS0FBSyxDQUFDO29CQUMxRHhCLGdCQUFnQixHQUFHM0IsZ0JBQWdCLENBQUMwQixNQUFNLENBQUM7b0JBQ2pELElBQUlDLGdCQUFnQixLQUFLM0csU0FBUyxFQUFFO3NCQUNsQzRELG1CQUFFLENBQUN3RSxpQkFBaUIsQ0FBQzdCLFFBQVEsQ0FBQyxDQUFDOEIsS0FBSyxDQUFDNUIsTUFBTSxDQUFDO3NCQUM1Q0osU0FBUyxDQUFDM0QsUUFBUSxHQUFHQSxRQUFRO3NCQUM3QnNDLGdCQUFnQixDQUFDMEIsTUFBTSxDQUFDLEdBQUdoRSxRQUFRO29CQUNyQyxDQUFDLE1BQU07c0JBQ0wyRCxTQUFTLENBQUMzRCxRQUFRLEdBQUdpRSxnQkFBZ0I7b0JBQ3ZDO29CQUNBTixTQUFTLENBQUNLLE1BQU0sR0FBR0EsTUFBTTtvQkFDekJMLFNBQVMsQ0FBQ2dCLE1BQU0sR0FBR2YsUUFBUSxDQUFDZSxNQUFNO2tCQUNwQztrQkFBQ1IsU0FBQSxDQUFBcE4sSUFBQTtrQkFBQTtnQkFBQTtrQkFFRCxJQUFJNk0sUUFBUSxDQUFDZSxNQUFNLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUN2RyxPQUFPLENBQUM2RyxNQUFNLEVBQUU7c0JBQ25CNUYsT0FBTyxDQUFDQyxJQUFJLGFBQUFDLE1BQUEsQ0FBWVgsR0FBRyxrQkFBYyxDQUFDO29CQUM1QztrQkFDRixDQUFDLE1BQU07b0JBQ0xTLE9BQU8sQ0FBQ3RDLEtBQUssY0FBQXdDLE1BQUEsQ0FDRXFHLElBQUksQ0FBQ0MsU0FBUyxDQUN6QjtzQkFBRXRCLElBQUksRUFBRVgsUUFBUSxDQUFDZSxNQUFNO3NCQUFFbUIsT0FBTyxFQUFFbEMsUUFBUSxDQUFDbUM7b0JBQVcsQ0FBQyxFQUN2RCxJQUFJLEVBQ0osQ0FDRixDQUFDLENBQ0gsQ0FBQztrQkFDSDtrQkFDQTdFLG1CQUFFLENBQUNJLFVBQVUsQ0FBQ3VDLFFBQVEsQ0FBQztrQkFDdkIsT0FBT0YsU0FBUyxDQUFDM0QsUUFBUTtrQkFDekIsT0FBTzJELFNBQVMsQ0FBQ0ssTUFBTTtrQkFDdkJMLFNBQVMsQ0FBQ2dCLE1BQU0sR0FBR2YsUUFBUSxDQUFDZSxNQUFNO2dCQUFBO2dCQUFBO2tCQUFBLE9BQUFSLFNBQUEsQ0FBQWxJLElBQUE7Y0FBQTtZQUFBLEdBQUEwRyxLQUFBO1VBQUE7VUFBQUYsVUFBQSxDQUFBcE0sQ0FBQTtRQUFBO1VBQUEsS0FBQXFNLE1BQUEsR0FBQUQsVUFBQSxDQUFBNU4sQ0FBQSxJQUFBeUIsSUFBQTtZQUFBd00sU0FBQSxDQUFBL0wsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBK0wsU0FBQSxDQUFBdkcsYUFBQSxDQUFBb0csS0FBQTtRQUFBO1VBQUFDLElBQUEsR0FBQUUsU0FBQSxDQUFBMUQsRUFBQTtVQUFBLE1BQUF3RCxJQUFBO1lBQUFFLFNBQUEsQ0FBQS9MLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQStMLFNBQUEsQ0FBQXZJLE1BQUE7UUFBQTtVQUFBdUksU0FBQSxDQUFBL0wsSUFBQTtVQUFBO1FBQUE7VUFBQStMLFNBQUEsQ0FBQS9MLElBQUE7VUFBQTtRQUFBO1VBQUErTCxTQUFBLENBQUEvRyxJQUFBO1VBQUErRyxTQUFBLENBQUFsQixFQUFBLEdBQUFrQixTQUFBO1VBQUFMLFVBQUEsQ0FBQXBPLENBQUEsQ0FBQXlPLFNBQUEsQ0FBQWxCLEVBQUE7UUFBQTtVQUFBa0IsU0FBQSxDQUFBL0csSUFBQTtVQUFBMEcsVUFBQSxDQUFBaE0sQ0FBQTtVQUFBLE9BQUFxTSxTQUFBLENBQUF6RyxNQUFBO1FBQUE7VUFJdEM2RSxtQkFBRSxDQUFDOEUsYUFBYSxDQUFDekQsU0FBUyxFQUFFQyxLQUFLLEVBQUU7WUFBRXlELFFBQVEsRUFBRSxPQUFPO1lBQUVDLE1BQU0sRUFBRTtVQUFFLENBQUMsQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBcEQsU0FBQSxDQUFBN0csSUFBQTtNQUFBO0lBQUEsR0FBQW1HLFFBQUE7RUFBQSxDQUNyRTtFQUFBLE9BQUFELDBCQUFBLENBQUE5RSxLQUFBLE9BQUFELFNBQUE7QUFBQTtBQUVEcUMsaUJBQWlCLENBQUMsQ0FBQyxDQUNoQjNGLElBQUksQ0FBQyxVQUFDcU0sUUFBUTtFQUFBLE9BQUtDLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDRixRQUFRLENBQUM7QUFBQSxFQUFDLFNBQ3JDLENBQUMsVUFBQ3BKLEtBQUssRUFBSztFQUNoQnNDLE9BQU8sQ0FBQzZGLEdBQUcsQ0FBQ25JLEtBQUssQ0FBQztFQUNsQnFKLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUMifQ==
527
+ function main(argv) {
528
+ var options = parseArgs(argv);
529
+ return retrieveDocuments(options);
530
+ }
531
+
532
+ /* istanbul ignore if */
533
+ if (process.argv[1].endsWith("retrieve_documents.ts")) {
534
+ main(process.argv).then(function (exitCode) {
535
+ return process.exit(exitCode);
536
+ })["catch"](function (error) {
537
+ console.log(error);
538
+ process.exit(1);
539
+ });
540
+ }
541
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2NyeXB0byIsIl9kYXRlRm5zIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2xvYWRlcnMiLCJfcGFyc2VycyIsIl91cmxzIiwiX2NsaV9oZWxwZXJzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJwcm90b3R5cGUiLCJjIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiaCIsImwiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiY29tbWl0T3B0aW9uIiwibGVnaXNsYXR1cmVPcHRpb24iLCJyZW1vdGVPcHRpb24iLCJzaWxlbnRPcHRpb24iLCJ2ZXJib3NlT3B0aW9uIiwiZGF0YURpckRlZmF1bHRPcHRpb24iLCJwdWxsT3B0aW9uIiwiYWxpYXMiLCJoZWxwIiwiQm9vbGVhbiIsImRvY3VtZW50Rm9ybWF0T3B0aW9uIiwibXVsdGlwbGUiLCJTdHJpbmciLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwidG9kYXkiLCJEYXRlIiwiZmV0Y2hXaXRoUmV0cnkiLCJfeCIsIl9mZXRjaFdpdGhSZXRyeSIsIl9jYWxsZWUiLCJ1cmwiLCJyZXRyaWVzIiwiYmFja29mZiIsImF0dGVtcHQiLCJfYXJncyIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJ1bmRlZmluZWQiLCJmZXRjaCIsInQwIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJzZXRUaW1lb3V0IiwiZG93bmxvYWRBbmRQYXJzZSIsIl94MiIsIl94MyIsIl94NCIsIl9kb3dubG9hZEFuZFBhcnNlIiwiX2NhbGxlZTIiLCJkb2N1bWVudCIsImRvY3VtZW50c0RpciIsIl9vcHRpb25zJGxlZ2lzbGF0dXJlIiwiZGF0YURpciIsImRvY3VtZW50c0ZpbGVzRGlyIiwiZG9jdW1lbnREaXIiLCJkb2N1bWVudEZpbGVEaXIiLCJkb2N1bWVudFBhdGgiLCJodG1sUGF0aCIsImh0bWwiLCJwYXJzZWREb2N1bWVudCIsImpzb24iLCJkb2N1bWVudEpzb24iLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJ1aWQiLCJzdWJzdHJpbmciLCJsZWdpc2xhdHVyZSIsImZldGNoRG9jdW1lbnRzIiwicGF0aCIsImpvaW4iLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwicHJvY2Vzc0RvY3VtZW50T3JEaXZpc2lvbiIsInBhcnNlRG9jdW1lbnRzIiwiZXhpc3RzU3luYyIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwicGFyc2VUZXh0ZSIsIkpTT04iLCJwYXJzZSIsInN1YmRpdmlzaW9ucyIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJsb2ciLCJyZXRyaWV2ZURvY3VtZW50cyIsIl94NSIsIl9yZXRyaWV2ZURvY3VtZW50cyIsIl9jYWxsZWUzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJmaWxlbmFtZSIsImZpcnN0VWlkIiwic2tpcCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiZG9jdW1lbnRPckRpdmlzaW9uIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiYXNzZXJ0IiwiY29tbWl0IiwicHVsbCIsInJlc2V0QW5kUHVsbCIsImZ1bGwiLCJyZWFkZGlyU3luYyIsInJlbW92ZVN5bmMiLCJpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyIsIndhbGtEb2N1bWVudEFuZERpdmlzaW9ucyIsInQxIiwidDIiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiX3g2IiwiX3g3IiwiX3g4IiwiX3Byb2Nlc3NEb2N1bWVudE9yRGl2aXNpb24iLCJfY2FsbGVlNCIsImZpbGVuYW1lQnlTaGEyNTYiLCJpbmRleFBhdGgiLCJpbmRleCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfbG9vcCIsIl9yZXQiLCJfY2FsbGVlNCQiLCJfY29udGV4dDUiLCJwYXRoRXhpc3RzU3luYyIsInJlYWRKc29uU3luYyIsIml0ZXJEb2N1bWVudE9yRGl2aXNpb25VcmxzIiwiX2RvY3VtZW50T3JEaXZpc2lvbiRjIiwiX2luZGV4JGZvcm1hdCIsIl9mb3JtYXRGaWxlc0luZm9zJGZpbiIsIl9kb2N1bWVudE9yRGl2aXNpb24kYzIiLCJfc3RlcDQkdmFsdWUiLCJmb3JtYXQiLCJmaWxlRXh0ZW5zaW9uIiwiZG9jdW1lbnRUeXBlIiwiZm9ybWF0RmlsZXNJbmZvcyIsImZpbGVJbmZvcyIsInJlc3BvbnNlIiwiZmlsZVBhdGgiLCJhcnJheUJ1ZmZlciIsImJ1ZmZlciIsInNoYTI1NiIsImV4aXN0aW5nRmlsZW5hbWUiLCJfbG9vcCQiLCJfY29udGV4dDQiLCJEb2N1bWVudFVybEZvcm1hdCIsIlBkZiIsInNwbGl0IiwiY2xhc3NpZmljYXRpb24iLCJjb2RlIiwiaW5jbHVkZXMiLCJmaW5kIiwiZmlsZSIsInN0YXR1cyIsImRpZmZlcmVuY2VJbkRheXMiLCJjeWNsZURlVmllIiwiY2hyb25vIiwiZGF0ZUNyZWF0aW9uIiwiZGF0ZURlcG90Iiwic2lsZW50Iiwib2siLCJCdWZmZXIiLCJzdWJhcnJheSIsInN0YXJ0c1dpdGgiLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiZGlnZXN0IiwiZXJyb3IiLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsIndyaXRlSnNvblN5bmMiLCJzcGFjZXMiLCJtYWluIiwicHJvY2VzcyIsImVuZHNXaXRoIiwiZXhpdENvZGUiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfZG9jdW1lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcImNyeXB0b1wiXG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5EYXlzIH0gZnJvbSBcImRhdGUtZm5zXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQge1xuICBEb2N1bWVudEZpbGVJbmZvcyxcbiAgRG9jdW1lbnRGaWxlc0luZGV4LFxuICB3YWxrRG9jdW1lbnRBbmREaXZpc2lvbnMsXG59IGZyb20gXCIuLi9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQgeyBpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cywgcGF0aEZyb21Eb2N1bWVudFVpZCB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IHBhcnNlVGV4dGUgfSBmcm9tIFwiLi4vcGFyc2Vyc1wiXG5pbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgaXRlckRvY3VtZW50T3JEaXZpc2lvblVybHMgfSBmcm9tIFwiLi4vdXJsc1wiXG5pbXBvcnQge1xuICBjb21taXRPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgcHVsbE9wdGlvbixcbiAgcmVtb3RlT3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRvY3VtZW50Rm9ybWF0T3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAgY29tbWl0T3B0aW9uLFxuICAgIGxlZ2lzbGF0dXJlT3B0aW9uLFxuICAgIHJlbW90ZU9wdGlvbixcbiAgICBzaWxlbnRPcHRpb24sXG4gICAgdmVyYm9zZU9wdGlvbixcbiAgICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgICBwdWxsT3B0aW9uLFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImZcIixcbiAgICAgIGhlbHA6IFwicmV0cmlldmUgYWxsIGRvY3VtZW50cywgZXZlbiBhbHJlYWR5IHJldHJpZXZlZCBvbmVzXCIsXG4gICAgICBuYW1lOiBcImZ1bGxcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJuXCIsXG4gICAgICBoZWxwOiBcInRyeSB0byBhbHNvIHJldHJpZXZlIGRvY3VtZW50cyB0aGF0IHdlcmUgcHJldmlvdXNseSBub3QgZm91bmRcIixcbiAgICAgIG5hbWU6IFwibm90LWZvdW5kXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgZG9jdW1lbnRGb3JtYXRPcHRpb24sXG4gICAge1xuICAgICAgYWxpYXM6IFwiVFwiLFxuICAgICAgaGVscDogXCJ0eXBlIG9mIGRvY3VtZW50cyB0byByZXRyaWV2ZSAoZm9yIGV4YW1wbGU6IFBJT04pXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZG9jdW1lbnQtdHlwZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5jb25zdCB0b2RheSA9IG5ldyBEYXRlKClcblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hXaXRoUmV0cnkoXG4gIHVybDogc3RyaW5nLFxuICByZXRyaWVzOiBudW1iZXIgPSAzLFxuICBiYWNrb2ZmOiBudW1iZXIgPSAzMDAsXG4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDwgcmV0cmllczsgYXR0ZW1wdCsrKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmZXRjaCh1cmwpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChhdHRlbXB0ID09PSByZXRyaWVzIC0gMSkge1xuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgRmV0Y2ggYXR0ZW1wdCAke2F0dGVtcHQgKyAxfSBmb3IgJHt1cmx9IGZhaWxlZC4gUmV0cnlpbmcgaW4gJHtiYWNrb2ZmfW1zLi4uYCxcbiAgICAgIClcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIGJhY2tvZmYpKVxuICAgICAgYmFja29mZiAqPSAyXG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoICR7dXJsfSBhZnRlciAke3JldHJpZXN9IGF0dGVtcHRzYClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkQW5kUGFyc2UoXG4gIGRvY3VtZW50OiBhbnksXG4gIGRvY3VtZW50c0Rpcjogc3RyaW5nLFxuICBvcHRpb25zOiBhbnksXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKGRvY3VtZW50LnVpZC5zdWJzdHJpbmcoNCwgNikgPT09IFwiU05cIikge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKG9wdGlvbnMubGVnaXNsYXR1cmU/LnRvU3RyaW5nKCkgIT09IGRvY3VtZW50LmxlZ2lzbGF0dXJlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAob3B0aW9ucy5mZXRjaERvY3VtZW50cykge1xuICAgIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgICBjb25zdCBkb2N1bWVudHNGaWxlc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBcIkRvY3VtZW50c1wiKVxuICAgIGNvbnN0IGRvY3VtZW50RGlyID0gcGF0aEZyb21Eb2N1bWVudFVpZChcbiAgICAgIGAke2RvY3VtZW50c0Rpcn0vZG9jdW1lbnRzYCxcbiAgICAgIGRvY3VtZW50LnVpZCxcbiAgICApXG4gICAgY29uc3QgZG9jdW1lbnRGaWxlRGlyID0gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNGaWxlc0RpciwgZG9jdW1lbnQudWlkKVxuXG4gICAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudHNGaWxlc0RpcilcbiAgICBhd2FpdCBwcm9jZXNzRG9jdW1lbnRPckRpdmlzaW9uKGRvY3VtZW50LCBkb2N1bWVudHNGaWxlc0Rpciwgb3B0aW9ucylcblxuICAgIGlmIChvcHRpb25zLnBhcnNlRG9jdW1lbnRzKSB7XG4gICAgICBjb25zdCBkb2N1bWVudFBhdGggPSBgJHtkb2N1bWVudERpcn0uanNvbmBcbiAgICAgIGNvbnN0IGh0bWxQYXRoID0gcGF0aC5qb2luKGRvY3VtZW50RmlsZURpciwgYGR5bi1vcGVuZGF0YS5odG1sYClcblxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoaHRtbFBhdGgpKSB7XG4gICAgICAgIGNvbnN0IGh0bWwgPSBmcy5yZWFkRmlsZVN5bmMoaHRtbFBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBhcnNlZERvY3VtZW50ID0gcGFyc2VUZXh0ZShcbiAgICAgICAgICAgIFwiaHR0cHM6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mclwiLFxuICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKHBhcnNlZERvY3VtZW50ICYmIGZzLmV4aXN0c1N5bmMoZG9jdW1lbnRQYXRoKSkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IGZzLnJlYWRGaWxlU3luYyhkb2N1bWVudFBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KVxuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uID0gSlNPTi5wYXJzZShqc29uKVxuICAgICAgICAgICAgZG9jdW1lbnRKc29uLnN1YmRpdmlzaW9ucyA9IHBhcnNlZERvY3VtZW50Py5zdWJkaXZpc2lvbnNcbiAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgIGRvY3VtZW50UGF0aCxcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZG9jdW1lbnRKc29uLCBudWxsLCAyKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgVW5hYmxlIHRvIHBhcnNlIGRvY3VtZW50ICR7ZG9jdW1lbnQudWlkfWApXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVEb2N1bWVudHMob3B0aW9uczogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgYXNzZXJ0KFxuICAgICFvcHRpb25zLmNvbW1pdCB8fCAhb3B0aW9ucy51aWQsXG4gICAgJ09wdGlvbnMgXCJjb21taXRcIiAmIFwidWlkXCIgYXJlIGluY29tcGF0aWJsZScsXG4gIClcblxuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIGNvbnN0IGRvY3VtZW50c0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBcIkRvY3VtZW50c1wiKVxuICBpZiAob3B0aW9ucy5wdWxsKSB7XG4gICAgZ2l0LnJlc2V0QW5kUHVsbChkb2N1bWVudHNEaXIpXG4gIH1cbiAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudHNEaXIpXG5cbiAgaWYgKG9wdGlvbnMuZnVsbCAmJiAhb3B0aW9ucy51aWQpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRvY3VtZW50c0RpcikpIHtcbiAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRvY3VtZW50c0RpciwgZmlsZW5hbWUpKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZpcnN0VWlkID0gb3B0aW9ucy51aWRcbiAgbGV0IHNraXAgPSBCb29sZWFuKGZpcnN0VWlkKVxuICBmb3IgKGNvbnN0IHsgZG9jdW1lbnQgfSBvZiBpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyhcbiAgICBkYXRhRGlyLFxuICAgIG9wdGlvbnMubGVnaXNsYXR1cmUsXG4gICkpIHtcbiAgICBmb3IgKGNvbnN0IGRvY3VtZW50T3JEaXZpc2lvbiBvZiB3YWxrRG9jdW1lbnRBbmREaXZpc2lvbnMoZG9jdW1lbnQpKSB7XG4gICAgICAvLyBJZ25vcmUgZG9jdW1lbnRzIGZyb20gU8OpbmF0LlxuICAgICAgaWYgKGRvY3VtZW50T3JEaXZpc2lvbi51aWQuc3Vic3RyaW5nKDQsIDYpID09PSBcIlNOXCIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKHNraXApIHtcbiAgICAgICAgaWYgKGRvY3VtZW50T3JEaXZpc2lvbi51aWQgPT09IGZpcnN0VWlkKSB7XG4gICAgICAgICAgc2tpcCA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBwcm9jZXNzRG9jdW1lbnRPckRpdmlzaW9uKGRvY3VtZW50T3JEaXZpc2lvbiwgZG9jdW1lbnRzRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIHJldHVybiBnaXQuY29tbWl0QW5kUHVzaChkb2N1bWVudHNEaXIsIFwiTm91dmVsbGUgbW9pc3NvblwiLCBvcHRpb25zLnJlbW90ZSlcbiAgfVxuICByZXR1cm4gMFxufVxuXG5hc3luYyBmdW5jdGlvbiBwcm9jZXNzRG9jdW1lbnRPckRpdmlzaW9uKFxuICBkb2N1bWVudE9yRGl2aXNpb246IGFueSxcbiAgZG9jdW1lbnRzRGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBkb2N1bWVudERpciA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyLCBkb2N1bWVudE9yRGl2aXNpb24udWlkKVxuICBmcy5lbnN1cmVEaXJTeW5jKGRvY3VtZW50RGlyKVxuXG4gIGNvbnN0IGZpbGVuYW1lQnlTaGEyNTY6IHsgW2RpZ2VzdDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fVxuICBjb25zdCBpbmRleFBhdGggPSBwYXRoLmpvaW4oZG9jdW1lbnREaXIsIFwiaW5kZXguanNvblwiKVxuICBjb25zdCBpbmRleCA9IChcbiAgICBmcy5wYXRoRXhpc3RzU3luYyhpbmRleFBhdGgpID8gZnMucmVhZEpzb25TeW5jKGluZGV4UGF0aCkgOiB7fVxuICApIGFzIERvY3VtZW50RmlsZXNJbmRleFxuXG4gIGZvciAoY29uc3QgeyBmb3JtYXQsIHR5cGUsIHVybCB9IG9mIGl0ZXJEb2N1bWVudE9yRGl2aXNpb25VcmxzKFxuICAgIGRvY3VtZW50T3JEaXZpc2lvbixcbiAgKSkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gYCR7dHlwZX0uJHtmb3JtYXQgPT09IERvY3VtZW50VXJsRm9ybWF0LlBkZiA/IFwicGRmXCIgOiBcImh0bWxcIn1gXG5cbiAgICAvLyBGaWx0ZXIgYnkgZmlsZSBleHRlbnNpb24gaWYgb3B0aW9uIGlzIHBhc3NlZFxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSB1cmwuc3BsaXQoXCIuXCIpLnBvcCgpXG4gICAgaWYgKG9wdGlvbnMuZm9ybWF0ICYmIGZpbGVFeHRlbnNpb24gJiYgb3B0aW9ucy5mb3JtYXQgIT09IGZpbGVFeHRlbnNpb24pIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy5sZWdpc2xhdHVyZSAmJlxuICAgICAgb3B0aW9ucy5sZWdpc2xhdHVyZS50b1N0cmluZygpICE9PSBkb2N1bWVudE9yRGl2aXNpb24ubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gRmlsdGVyIGJ5IGRvY3VtZW50IHR5cGUgaWYgb3B0aW9uIGlzIHBhc3NlZFxuICAgIGNvbnN0IGRvY3VtZW50VHlwZSA9IGRvY3VtZW50T3JEaXZpc2lvbi5jbGFzc2lmaWNhdGlvbj8udHlwZT8uY29kZVxuICAgIGlmIChcbiAgICAgIG9wdGlvbnNbXCJkb2N1bWVudC10eXBlXCJdICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICFvcHRpb25zW1wiZG9jdW1lbnQtdHlwZVwiXS5pbmNsdWRlcyhkb2N1bWVudFR5cGUpXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGxldCBmb3JtYXRGaWxlc0luZm9zID0gaW5kZXhbZm9ybWF0XSA/PyAoaW5kZXhbZm9ybWF0XSA9IFtdKVxuICAgIGxldCBmaWxlSW5mb3MgPVxuICAgICAgZm9ybWF0RmlsZXNJbmZvcy5maW5kKChmaWxlKSA9PiBmaWxlLnVybCA9PT0gdXJsKSA/P1xuICAgICAgKHt9IGFzIERvY3VtZW50RmlsZUluZm9zKVxuICAgIGlmICghZm9ybWF0RmlsZXNJbmZvcy5pbmNsdWRlcyhmaWxlSW5mb3MpKSB7XG4gICAgICBmb3JtYXRGaWxlc0luZm9zLnB1c2goZmlsZUluZm9zKVxuICAgIH1cbiAgICBmaWxlSW5mb3MudXJsID0gdXJsXG5cbiAgICBpZiAoZmlsZUluZm9zLnN0YXR1cyA9PT0gMjAwICYmICFvcHRpb25zLmZ1bGwpIHtcbiAgICAgIGZpbGVuYW1lQnlTaGEyNTZbZmlsZUluZm9zLnNoYTI1NiBhcyBzdHJpbmddID0gZmlsZW5hbWVcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGZpbGVJbmZvcy5zdGF0dXMgPT09IDQwNCAmJlxuICAgICAgIW9wdGlvbnNbXCJub3QtZm91bmRcIl0gJiZcbiAgICAgIGRpZmZlcmVuY2VJbkRheXMoXG4gICAgICAgIHRvZGF5LFxuICAgICAgICBkb2N1bWVudE9yRGl2aXNpb24uY3ljbGVEZVZpZS5jaHJvbm8uZGF0ZUNyZWF0aW9uID8/XG4gICAgICAgICAgKGRvY3VtZW50T3JEaXZpc2lvbi5jeWNsZURlVmllLmNocm9uby5kYXRlRGVwb3QgYXMgRGF0ZSB8IHN0cmluZyksXG4gICAgICApID4gMTBcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBSZXRyaWV2aW5nIGRvY3VtZW50IG9yIGRpdmlzaW9uICR7ZG9jdW1lbnRPckRpdmlzaW9uLnVpZH0gYXQgJHt1cmx94oCmYCxcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoV2l0aFJldHJ5KHVybClcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihkb2N1bWVudERpciwgZmlsZW5hbWUpXG5cbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKVxuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYXJyYXlCdWZmZXIpXG4gICAgICBpZiAoXG4gICAgICAgIGZvcm1hdCA9PT0gRG9jdW1lbnRVcmxGb3JtYXQuUGRmICYmXG4gICAgICAgICFidWZmZXIuc3ViYXJyYXkoMCwgNCkudG9TdHJpbmcoKS5zdGFydHNXaXRoKFwiJVBERlwiKVxuICAgICAgKSB7XG4gICAgICAgIC8vIEluc3RlYWQgb2YgYSBQREYsIHRoZSByZWNlaXZlZCBkYXRhIG1heSBiZSBhbiBIVE1MIHBhZ2Ugd2l0aCBhIG1lc3NhZ2UgbGlrZVxuICAgICAgICAvLyBcIkRvY3VtZW50IG5vbiBlbmNvcmUgcHVibGnDqVwiLlxuICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGAgIFBERiBcIiR7dXJsfVwiIG5vdCBmb3VuZC5gKVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMoZmlsZVBhdGgpXG4gICAgICAgIGRlbGV0ZSBmaWxlSW5mb3MuZmlsZW5hbWVcbiAgICAgICAgZGVsZXRlIGZpbGVJbmZvcy5zaGEyNTZcbiAgICAgICAgZmlsZUluZm9zLnN0YXR1cyA9IDQwNFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2hhMjU2ID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoYnVmZmVyKS5kaWdlc3QoXCJoZXhcIilcbiAgICAgICAgY29uc3QgZXhpc3RpbmdGaWxlbmFtZSA9IGZpbGVuYW1lQnlTaGEyNTZbc2hhMjU2XVxuICAgICAgICBpZiAoZXhpc3RpbmdGaWxlbmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgYnVmZmVyLCB7XG4gICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBmaWxlSW5mb3MuZmlsZW5hbWUgPSBmaWxlbmFtZVxuICAgICAgICAgIGZpbGVuYW1lQnlTaGEyNTZbc2hhMjU2XSA9IGZpbGVuYW1lXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlsZUluZm9zLmZpbGVuYW1lID0gZXhpc3RpbmdGaWxlbmFtZVxuICAgICAgICB9XG4gICAgICAgIGZpbGVJbmZvcy5zaGEyNTYgPSBzaGEyNTZcbiAgICAgICAgZmlsZUluZm9zLnN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgICBQYWdlIFwiJHt1cmx9XCIgbm90IGZvdW5kLmApXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYCAgRXJyb3I6XFxuJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHsgY29kZTogcmVzcG9uc2Uuc3RhdHVzLCBtZXNzYWdlOiByZXNwb25zZS5zdGF0dXNUZXh0IH0sXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgMixcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGZzLnJlbW92ZVN5bmMoZmlsZVBhdGgpXG4gICAgICBkZWxldGUgZmlsZUluZm9zLmZpbGVuYW1lXG4gICAgICBkZWxldGUgZmlsZUluZm9zLnNoYTI1NlxuICAgICAgZmlsZUluZm9zLnN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c1xuICAgIH1cbiAgfVxuXG4gIGZzLndyaXRlSnNvblN5bmMoaW5kZXhQYXRoLCBpbmRleCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiLCBzcGFjZXM6IDIgfSlcbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIHJldHVybiByZXRyaWV2ZURvY3VtZW50cyhvcHRpb25zKVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJyZXRyaWV2ZV9kb2N1bWVudHMudHNcIikpIHtcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKGV4aXRDb2RlKSA9PiBwcm9jZXNzLmV4aXQoZXhpdENvZGUpKVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSlcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZ0JBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFNLHFCQUFBLEdBQUFOLE9BQUE7QUFLQSxJQUFBTyxHQUFBLEdBQUFDLHVCQUFBLENBQUFSLE9BQUE7QUFDQSxJQUFBUyxRQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxRQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxLQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxZQUFBLEdBQUFaLE9BQUE7QUFTNkIsU0FBQWEseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFOLHdCQUFBTSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEs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