@tricoteuses/assemblee 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/lib/bugs/acteur-00010/plugin.test.js +53 -55
  2. package/lib/bugs/acteur-00010.js +26 -30
  3. package/lib/bugs/agenda-00002/plugin.test.js +78 -82
  4. package/lib/bugs/agenda-00002.js +206 -214
  5. package/lib/bugs/agenda-00008/plugin.test.js +54 -56
  6. package/lib/bugs/agenda-00008.js +38 -42
  7. package/lib/bugs/agenda-00011/plugin.test.js +204 -214
  8. package/lib/bugs/agenda-00011.js +117 -131
  9. package/lib/bugs.js +212 -232
  10. package/lib/cleaners/actes_legislatifs.js +1 -1
  11. package/lib/cleaners/acteurs.js +2 -2
  12. package/lib/cleaners/amendements.js +1 -1
  13. package/lib/cleaners/documents.js +1 -1
  14. package/lib/cleaners/dossiers_legislatifs.js +1 -1
  15. package/lib/cleaners/reunions.js +1 -1
  16. package/lib/cleaners/scrutins.js +1 -1
  17. package/lib/cleaners/xml.js +2 -2
  18. package/lib/datasets.js +2 -2
  19. package/lib/dossiers_legislatifs.js +1 -1
  20. package/lib/file_systems.js +48 -50
  21. package/lib/git.js +1 -1
  22. package/lib/inserters.js +1 -1
  23. package/lib/loaders.js +1 -1
  24. package/lib/parsers/documents.js +29 -31
  25. package/lib/parsers/recherche_amendements.js +284 -288
  26. package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
  27. package/lib/raw_types/acteurs_et_organes.js +3 -2
  28. package/lib/raw_types/acteurs_et_organes.mjs +3 -2
  29. package/lib/scripts/bugs_helper.js +301 -317
  30. package/lib/scripts/clean_data.js +1 -1
  31. package/lib/scripts/clean_reorganized_data.js +13 -15
  32. package/lib/scripts/diff_amendements.js +1 -1
  33. package/lib/scripts/document_dossiers_legislatifs.js +2 -2
  34. package/lib/scripts/merge_scrutins.js +1 -1
  35. package/lib/scripts/parse_textes_lois.js +1 -1
  36. package/lib/scripts/raw_types_from_amendements.js +133 -135
  37. package/lib/scripts/reorganize_data.js +13 -15
  38. package/lib/scripts/retrieve_deputes_photos.js +169 -171
  39. package/lib/scripts/retrieve_documents.js +266 -278
  40. package/lib/scripts/retrieve_open_data.js +140 -144
  41. package/lib/scripts/retrieve_pending_amendments.js +118 -120
  42. package/lib/scripts/retrieve_senateurs_photos.js +167 -169
  43. package/lib/scripts/retrieve_textes_lois.js +129 -131
  44. package/lib/scripts/validate_json.js +87 -91
  45. package/lib/shared_types/codes_actes.d.ts +2 -0
  46. package/lib/shared_types/codes_actes.js +2 -1
  47. package/lib/shared_types/codes_actes.mjs +2 -1
  48. package/lib/types/acteurs_et_organes.d.ts +1 -0
  49. package/lib/types/acteurs_et_organes.js +3 -2
  50. package/lib/types/acteurs_et_organes.mjs +3 -2
  51. package/package.json +6 -6
@@ -27,7 +27,7 @@ var _chai = require("chai");
27
27
  var _agenda = require("../agenda-00011");
28
28
  var _fetchMock = _interopRequireDefault(require("fetch-mock"));
29
29
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
30
- 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 exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
30
+ 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 exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
31
31
  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); } }
32
32
  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); }); }; }
33
33
  var id = "00011";
@@ -35,243 +35,233 @@ suite("Plugin".concat(id));
35
35
  test("#Plugin".concat(id, "FindSession"), /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
36
36
  var plugin, sessions;
37
37
  return _regeneratorRuntime().wrap(function _callee$(_context) {
38
- while (1) {
39
- switch (_context.prev = _context.next) {
40
- case 0:
41
- plugin = new _agenda.Plugin({});
42
- sessions = [{
43
- debut: "2019-09-10",
44
- fin: "2019-09-27"
45
- }, {
46
- debut: "2019-10-01",
47
- fin: "2020-06-30"
48
- }, {
49
- debut: "2020-06-31",
50
- fin: "2020-07-31"
51
- }, {
52
- debut: "2020-08-01",
53
- fin: "2020-08-31"
54
- }, {
55
- debut: "2020-09-01",
56
- fin: "2020-09-30"
57
- }];
58
- plugin.sessions = sessions.slice(0, 2);
59
- // between sessions
60
- _chai.assert.strictEqual(plugin.lookupSession("2019-09-28"), null);
61
- _chai.assert.strictEqual(plugin.lookupSession("2017-01-01"), null);
62
- _chai.assert.deepEqual(plugin.lookupSession("2019-09-15"), plugin.sessions[0]);
63
- _chai.assert.deepEqual(plugin.lookupSession("2020-02-02"), plugin.sessions[1]);
64
- _chai.assert.strictEqual(plugin.lookupSession("2022-01-01"), null);
65
- plugin.sessions = sessions.slice(0, 1);
66
- _chai.assert.strictEqual(plugin.lookupSession("2017-01-01"), null);
67
- _chai.assert.deepEqual(plugin.lookupSession("2019-09-15"), plugin.sessions[0]);
68
- _chai.assert.strictEqual(plugin.lookupSession("2020-02-02"), null);
69
- _chai.assert.strictEqual(plugin.lookupSession("2022-01-01"), null);
70
- plugin.sessions = sessions;
71
- _chai.assert.strictEqual(plugin.lookupSession("2017-01-01"), null);
72
- _chai.assert.deepEqual(plugin.lookupSession("2019-09-15"), plugin.sessions[0]);
73
- _chai.assert.deepEqual(plugin.lookupSession("2020-02-02"), plugin.sessions[1]);
74
- _chai.assert.deepEqual(plugin.lookupSession("2020-09-01"), plugin.sessions[4]);
75
- _chai.assert.deepEqual(plugin.lookupSession("2020-09-30"), plugin.sessions[4]);
76
- _chai.assert.strictEqual(plugin.lookupSession("2022-01-01"), null);
77
- case 20:
78
- case "end":
79
- return _context.stop();
80
- }
38
+ while (1) switch (_context.prev = _context.next) {
39
+ case 0:
40
+ plugin = new _agenda.Plugin({});
41
+ sessions = [{
42
+ debut: "2019-09-10",
43
+ fin: "2019-09-27"
44
+ }, {
45
+ debut: "2019-10-01",
46
+ fin: "2020-06-30"
47
+ }, {
48
+ debut: "2020-06-31",
49
+ fin: "2020-07-31"
50
+ }, {
51
+ debut: "2020-08-01",
52
+ fin: "2020-08-31"
53
+ }, {
54
+ debut: "2020-09-01",
55
+ fin: "2020-09-30"
56
+ }];
57
+ plugin.sessions = sessions.slice(0, 2);
58
+ // between sessions
59
+ _chai.assert.strictEqual(plugin.lookupSession("2019-09-28"), null);
60
+ _chai.assert.strictEqual(plugin.lookupSession("2017-01-01"), null);
61
+ _chai.assert.deepEqual(plugin.lookupSession("2019-09-15"), plugin.sessions[0]);
62
+ _chai.assert.deepEqual(plugin.lookupSession("2020-02-02"), plugin.sessions[1]);
63
+ _chai.assert.strictEqual(plugin.lookupSession("2022-01-01"), null);
64
+ plugin.sessions = sessions.slice(0, 1);
65
+ _chai.assert.strictEqual(plugin.lookupSession("2017-01-01"), null);
66
+ _chai.assert.deepEqual(plugin.lookupSession("2019-09-15"), plugin.sessions[0]);
67
+ _chai.assert.strictEqual(plugin.lookupSession("2020-02-02"), null);
68
+ _chai.assert.strictEqual(plugin.lookupSession("2022-01-01"), null);
69
+ plugin.sessions = sessions;
70
+ _chai.assert.strictEqual(plugin.lookupSession("2017-01-01"), null);
71
+ _chai.assert.deepEqual(plugin.lookupSession("2019-09-15"), plugin.sessions[0]);
72
+ _chai.assert.deepEqual(plugin.lookupSession("2020-02-02"), plugin.sessions[1]);
73
+ _chai.assert.deepEqual(plugin.lookupSession("2020-09-01"), plugin.sessions[4]);
74
+ _chai.assert.deepEqual(plugin.lookupSession("2020-09-30"), plugin.sessions[4]);
75
+ _chai.assert.strictEqual(plugin.lookupSession("2022-01-01"), null);
76
+ case 20:
77
+ case "end":
78
+ return _context.stop();
81
79
  }
82
80
  }, _callee);
83
81
  })));
84
82
  test("#Plugin".concat(id, "Load"), /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
85
83
  var plugin, d, wikidata, expected;
86
84
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
87
- while (1) {
88
- switch (_context2.prev = _context2.next) {
89
- case 0:
90
- plugin = new _agenda.Plugin({});
91
- d = "src/bugs/agenda-".concat(id);
92
- wikidata = (0, _file_systems.load)("".concat(d, "/wikidata.json"));
93
- plugin.fetch = _fetchMock["default"].sandbox().mock(/query\.wikidata\.org/, {
94
- body: wikidata,
95
- status: 200
96
- });
97
- _context2.next = 6;
98
- return plugin.preFix();
99
- case 6:
100
- expected = [{
101
- debut: "2019-09-10",
102
- fin: "2019-09-27",
103
- label: "SESSION02"
104
- }, {
105
- debut: "2019-10-01",
106
- fin: "2020-06-30",
107
- label: "SESSION01"
108
- }];
109
- _chai.assert.deepEqual(plugin.sessions, expected);
110
- _fetchMock["default"].restore();
111
- case 9:
112
- case "end":
113
- return _context2.stop();
114
- }
85
+ while (1) switch (_context2.prev = _context2.next) {
86
+ case 0:
87
+ plugin = new _agenda.Plugin({});
88
+ d = "src/bugs/agenda-".concat(id);
89
+ wikidata = (0, _file_systems.load)("".concat(d, "/wikidata.json"));
90
+ plugin.fetch = _fetchMock["default"].sandbox().mock(/query\.wikidata\.org/, {
91
+ body: wikidata,
92
+ status: 200
93
+ });
94
+ _context2.next = 6;
95
+ return plugin.preFix();
96
+ case 6:
97
+ expected = [{
98
+ debut: "2019-09-10",
99
+ fin: "2019-09-27",
100
+ label: "SESSION02"
101
+ }, {
102
+ debut: "2019-10-01",
103
+ fin: "2020-06-30",
104
+ label: "SESSION01"
105
+ }];
106
+ _chai.assert.deepEqual(plugin.sessions, expected);
107
+ _fetchMock["default"].restore();
108
+ case 9:
109
+ case "end":
110
+ return _context2.stop();
115
111
  }
116
112
  }, _callee2);
117
113
  })));
118
114
  test("#Plugin".concat(id, "Fix"), /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
119
115
  var plugin, d, wikidata, f, content, _f, _content, _f2, _content2, _f3, _content3, _f4, _content4, _f5, _content5;
120
116
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
121
- while (1) {
122
- switch (_context3.prev = _context3.next) {
123
- case 0:
124
- plugin = new _agenda.Plugin({});
125
- d = "src/bugs/agenda-".concat(id);
126
- wikidata = (0, _file_systems.load)("".concat(d, "/wikidata.json"));
127
- plugin.fetch = _fetchMock["default"].sandbox().mock(/query\.wikidata\.org/, {
128
- body: wikidata,
129
- status: 200
130
- });
131
- _context3.next = 6;
132
- return plugin.preFix();
133
- case 6:
134
- (0, _chai.assert)(plugin.sessions != undefined);
135
- f = "".concat(d, "/ok.json");
136
- content = (0, _file_systems.load)(f);
137
- (0, _chai.assert)("sessionRef" in content, content);
138
- _context3.t0 = _chai.assert;
139
- _context3.next = 13;
140
- return plugin.fix(content, f);
141
- case 13:
142
- _context3.t1 = _context3.sent;
143
- _context3.t2 = f;
144
- _context3.t0.equal.call(_context3.t0, _context3.t1, true, _context3.t2);
145
- (0, _chai.assert)(!("sessionRef" in content), content);
146
- (0, _chai.assert)(content.session.label, "SESSION01");
147
- _f = "".concat(d, "/oldschema.json");
148
- _content = (0, _file_systems.load)(_f);
149
- _chai.assert.equal(_content.schemaVersion, "agenda-1.0");
150
- _context3.t3 = _chai.assert;
151
- _context3.next = 24;
152
- return plugin.fix(_content, _f);
153
- case 24:
154
- _context3.t4 = _context3.sent;
155
- _context3.t5 = _f;
156
- _context3.t3.equal.call(_context3.t3, _context3.t4, true, _context3.t5);
157
- _chai.assert.equal(_content.schemaVersion, "agenda-1.1");
158
- _f2 = "".concat(d, "/noschema.json");
159
- _content2 = (0, _file_systems.load)(_f2);
160
- _chai.assert.strictEqual(_content2.schemaVersion, undefined);
161
- _context3.t6 = _chai.assert;
162
- _context3.next = 34;
163
- return plugin.fix(_content2, _f2);
164
- case 34:
165
- _context3.t7 = _context3.sent;
166
- _context3.t8 = _f2;
167
- _context3.t6.equal.call(_context3.t6, _context3.t7, true, _context3.t8);
168
- _chai.assert.equal(_content2.schemaVersion, "agenda-1.1");
169
- _f3 = "".concat(d, "/nosessionref.json");
170
- _content3 = (0, _file_systems.load)(_f3);
171
- _context3.t9 = _chai.assert;
172
- _context3.next = 43;
173
- return plugin.fix(_content3, _f3);
174
- case 43:
175
- _context3.t10 = _context3.sent;
176
- _context3.t11 = _f3;
177
- _context3.t9.equal.call(_context3.t9, _context3.t10, true, _context3.t11);
178
- _chai.assert.equal(_content3.session.label, "SESSION01");
179
- _f4 = "".concat(d, "/session.json");
180
- _content4 = (0, _file_systems.load)(_f4);
181
- _chai.assert.equal(_content4.session.label, "SOMETHING");
182
- _context3.t12 = _chai.assert;
183
- _context3.next = 53;
184
- return plugin.fix(_content4, _f4);
185
- case 53:
186
- _context3.t13 = _context3.sent;
187
- _context3.t14 = _f4;
188
- _context3.t12.equal.call(_context3.t12, _context3.t13, true, _context3.t14);
189
- _chai.assert.equal(_content4.session.label, "SESSION01");
190
- _f5 = "".concat(d, "/not_seance_type.json");
191
- _content5 = (0, _file_systems.load)(_f5);
192
- _context3.t15 = _chai.assert;
193
- _context3.next = 62;
194
- return plugin.fix(_content5, _f5);
195
- case 62:
196
- _context3.t16 = _context3.sent;
197
- _context3.t17 = _f5;
198
- _context3.t15.equal.call(_context3.t15, _context3.t16, null, _context3.t17);
199
- _fetchMock["default"].restore();
200
- case 66:
201
- case "end":
202
- return _context3.stop();
203
- }
117
+ while (1) switch (_context3.prev = _context3.next) {
118
+ case 0:
119
+ plugin = new _agenda.Plugin({});
120
+ d = "src/bugs/agenda-".concat(id);
121
+ wikidata = (0, _file_systems.load)("".concat(d, "/wikidata.json"));
122
+ plugin.fetch = _fetchMock["default"].sandbox().mock(/query\.wikidata\.org/, {
123
+ body: wikidata,
124
+ status: 200
125
+ });
126
+ _context3.next = 6;
127
+ return plugin.preFix();
128
+ case 6:
129
+ (0, _chai.assert)(plugin.sessions != undefined);
130
+ f = "".concat(d, "/ok.json");
131
+ content = (0, _file_systems.load)(f);
132
+ (0, _chai.assert)("sessionRef" in content, content);
133
+ _context3.t0 = _chai.assert;
134
+ _context3.next = 13;
135
+ return plugin.fix(content, f);
136
+ case 13:
137
+ _context3.t1 = _context3.sent;
138
+ _context3.t2 = f;
139
+ _context3.t0.equal.call(_context3.t0, _context3.t1, true, _context3.t2);
140
+ (0, _chai.assert)(!("sessionRef" in content), content);
141
+ (0, _chai.assert)(content.session.label, "SESSION01");
142
+ _f = "".concat(d, "/oldschema.json");
143
+ _content = (0, _file_systems.load)(_f);
144
+ _chai.assert.equal(_content.schemaVersion, "agenda-1.0");
145
+ _context3.t3 = _chai.assert;
146
+ _context3.next = 24;
147
+ return plugin.fix(_content, _f);
148
+ case 24:
149
+ _context3.t4 = _context3.sent;
150
+ _context3.t5 = _f;
151
+ _context3.t3.equal.call(_context3.t3, _context3.t4, true, _context3.t5);
152
+ _chai.assert.equal(_content.schemaVersion, "agenda-1.1");
153
+ _f2 = "".concat(d, "/noschema.json");
154
+ _content2 = (0, _file_systems.load)(_f2);
155
+ _chai.assert.strictEqual(_content2.schemaVersion, undefined);
156
+ _context3.t6 = _chai.assert;
157
+ _context3.next = 34;
158
+ return plugin.fix(_content2, _f2);
159
+ case 34:
160
+ _context3.t7 = _context3.sent;
161
+ _context3.t8 = _f2;
162
+ _context3.t6.equal.call(_context3.t6, _context3.t7, true, _context3.t8);
163
+ _chai.assert.equal(_content2.schemaVersion, "agenda-1.1");
164
+ _f3 = "".concat(d, "/nosessionref.json");
165
+ _content3 = (0, _file_systems.load)(_f3);
166
+ _context3.t9 = _chai.assert;
167
+ _context3.next = 43;
168
+ return plugin.fix(_content3, _f3);
169
+ case 43:
170
+ _context3.t10 = _context3.sent;
171
+ _context3.t11 = _f3;
172
+ _context3.t9.equal.call(_context3.t9, _context3.t10, true, _context3.t11);
173
+ _chai.assert.equal(_content3.session.label, "SESSION01");
174
+ _f4 = "".concat(d, "/session.json");
175
+ _content4 = (0, _file_systems.load)(_f4);
176
+ _chai.assert.equal(_content4.session.label, "SOMETHING");
177
+ _context3.t12 = _chai.assert;
178
+ _context3.next = 53;
179
+ return plugin.fix(_content4, _f4);
180
+ case 53:
181
+ _context3.t13 = _context3.sent;
182
+ _context3.t14 = _f4;
183
+ _context3.t12.equal.call(_context3.t12, _context3.t13, true, _context3.t14);
184
+ _chai.assert.equal(_content4.session.label, "SESSION01");
185
+ _f5 = "".concat(d, "/not_seance_type.json");
186
+ _content5 = (0, _file_systems.load)(_f5);
187
+ _context3.t15 = _chai.assert;
188
+ _context3.next = 62;
189
+ return plugin.fix(_content5, _f5);
190
+ case 62:
191
+ _context3.t16 = _context3.sent;
192
+ _context3.t17 = _f5;
193
+ _context3.t15.equal.call(_context3.t15, _context3.t16, null, _context3.t17);
194
+ _fetchMock["default"].restore();
195
+ case 66:
196
+ case "end":
197
+ return _context3.stop();
204
198
  }
205
199
  }, _callee3);
206
200
  })));
207
201
  test("#Plugin".concat(id, "Check"), /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
208
202
  var plugin, d, wikidata, f, content, result, _f6, _content6, _result;
209
203
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
210
- while (1) {
211
- switch (_context4.prev = _context4.next) {
212
- case 0:
213
- plugin = new _agenda.Plugin({});
214
- d = "src/bugs/agenda-".concat(id);
215
- wikidata = (0, _file_systems.load)("".concat(d, "/wikidata.json"));
216
- plugin.fetch = _fetchMock["default"].sandbox().mock(/query\.wikidata\.org/, {
217
- body: wikidata,
218
- status: 200
219
- });
220
- _context4.next = 6;
221
- return plugin.preCheck();
222
- case 6:
223
- (0, _chai.assert)(plugin.sessions != undefined);
224
- f = "".concat(d, "/ok.json");
225
- content = (0, _file_systems.load)(f);
226
- _context4.next = 11;
227
- return plugin.check(content, f);
228
- case 11:
229
- result = _context4.sent;
230
- _chai.assert.deepEqual(result, {
231
- status: "ok",
232
- info: [""]
233
- }, f);
234
- _f6 = "".concat(d, "/badtimestamp.json");
235
- _content6 = (0, _file_systems.load)(_f6);
236
- _context4.next = 17;
237
- return plugin.check(_content6, _f6);
238
- case 17:
239
- _result = _context4.sent;
240
- _chai.assert.deepEqual(_result, {
241
- status: "needs-fixing",
242
- info: ["2017-06-20 is not in a session"]
243
- }, _f6);
244
- _fetchMock["default"].restore();
245
- case 20:
246
- case "end":
247
- return _context4.stop();
248
- }
204
+ while (1) switch (_context4.prev = _context4.next) {
205
+ case 0:
206
+ plugin = new _agenda.Plugin({});
207
+ d = "src/bugs/agenda-".concat(id);
208
+ wikidata = (0, _file_systems.load)("".concat(d, "/wikidata.json"));
209
+ plugin.fetch = _fetchMock["default"].sandbox().mock(/query\.wikidata\.org/, {
210
+ body: wikidata,
211
+ status: 200
212
+ });
213
+ _context4.next = 6;
214
+ return plugin.preCheck();
215
+ case 6:
216
+ (0, _chai.assert)(plugin.sessions != undefined);
217
+ f = "".concat(d, "/ok.json");
218
+ content = (0, _file_systems.load)(f);
219
+ _context4.next = 11;
220
+ return plugin.check(content, f);
221
+ case 11:
222
+ result = _context4.sent;
223
+ _chai.assert.deepEqual(result, {
224
+ status: "ok",
225
+ info: [""]
226
+ }, f);
227
+ _f6 = "".concat(d, "/badtimestamp.json");
228
+ _content6 = (0, _file_systems.load)(_f6);
229
+ _context4.next = 17;
230
+ return plugin.check(_content6, _f6);
231
+ case 17:
232
+ _result = _context4.sent;
233
+ _chai.assert.deepEqual(_result, {
234
+ status: "needs-fixing",
235
+ info: ["2017-06-20 is not in a session"]
236
+ }, _f6);
237
+ _fetchMock["default"].restore();
238
+ case 20:
239
+ case "end":
240
+ return _context4.stop();
249
241
  }
250
242
  }, _callee4);
251
243
  })));
252
244
  test("#Plugin".concat(id, "FetchFail"), /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
253
245
  var plugin, status;
254
246
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
255
- while (1) {
256
- switch (_context5.prev = _context5.next) {
257
- case 0:
258
- plugin = new _agenda.Plugin({});
259
- plugin.fetch = _fetchMock["default"].sandbox().mock(/query\.wikidata\.org/, 500);
260
- status = "unexpected";
261
- _context5.next = 5;
262
- return plugin.preFix().then(function () {
263
- return status = "exception not thrown";
264
- })["catch"](function (e) {
265
- return status = String(e.status);
266
- });
267
- case 5:
268
- _chai.assert.equal(status, "500");
269
- _fetchMock["default"].restore();
270
- case 7:
271
- case "end":
272
- return _context5.stop();
273
- }
247
+ while (1) switch (_context5.prev = _context5.next) {
248
+ case 0:
249
+ plugin = new _agenda.Plugin({});
250
+ plugin.fetch = _fetchMock["default"].sandbox().mock(/query\.wikidata\.org/, 500);
251
+ status = "unexpected";
252
+ _context5.next = 5;
253
+ return plugin.preFix().then(function () {
254
+ return status = "exception not thrown";
255
+ })["catch"](function (e) {
256
+ return status = String(e.status);
257
+ });
258
+ case 5:
259
+ _chai.assert.equal(status, "500");
260
+ _fetchMock["default"].restore();
261
+ case 7:
262
+ case "end":
263
+ return _context5.stop();
274
264
  }
275
265
  }, _callee5);
276
266
  })));
277
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpZCIsInN1aXRlIiwidGVzdCIsInBsdWdpbiIsIlBsdWdpbiIsInNlc3Npb25zIiwiZGVidXQiLCJmaW4iLCJzbGljZSIsImFzc2VydCIsInN0cmljdEVxdWFsIiwibG9va3VwU2Vzc2lvbiIsImRlZXBFcXVhbCIsImQiLCJ3aWtpZGF0YSIsImxvYWQiLCJmZXRjaCIsImZldGNoTW9jayIsInNhbmRib3giLCJtb2NrIiwiYm9keSIsInN0YXR1cyIsInByZUZpeCIsImV4cGVjdGVkIiwibGFiZWwiLCJyZXN0b3JlIiwidW5kZWZpbmVkIiwiZiIsImNvbnRlbnQiLCJmaXgiLCJlcXVhbCIsInNlc3Npb24iLCJzY2hlbWFWZXJzaW9uIiwicHJlQ2hlY2siLCJjaGVjayIsInJlc3VsdCIsImluZm8iLCJ0aGVuIiwiZSIsIlN0cmluZyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idWdzL2FnZW5kYS0wMDAxMS9wbHVnaW4udGVzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2FkIH0gZnJvbSBcIi4uLy4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiY2hhaVwiXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tIFwiLi4vYWdlbmRhLTAwMDExXCJcbmltcG9ydCBmZXRjaE1vY2sgZnJvbSBcImZldGNoLW1vY2tcIlxuXG5jb25zdCBpZCA9IFwiMDAwMTFcIlxuXG5zdWl0ZShgUGx1Z2luJHtpZH1gKVxuXG50ZXN0KGAjUGx1Z2luJHtpZH1GaW5kU2Vzc2lvbmAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgcGx1Z2luID0gbmV3IFBsdWdpbih7fSlcblxuICBjb25zdCBzZXNzaW9ucyA9IFtcbiAgICB7XG4gICAgICBkZWJ1dDogXCIyMDE5LTA5LTEwXCIsXG4gICAgICBmaW46IFwiMjAxOS0wOS0yN1wiLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVidXQ6IFwiMjAxOS0xMC0wMVwiLFxuICAgICAgZmluOiBcIjIwMjAtMDYtMzBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlYnV0OiBcIjIwMjAtMDYtMzFcIixcbiAgICAgIGZpbjogXCIyMDIwLTA3LTMxXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZWJ1dDogXCIyMDIwLTA4LTAxXCIsXG4gICAgICBmaW46IFwiMjAyMC0wOC0zMVwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVidXQ6IFwiMjAyMC0wOS0wMVwiLFxuICAgICAgZmluOiBcIjIwMjAtMDktMzBcIixcbiAgICB9LFxuICBdXG5cbiAgcGx1Z2luLnNlc3Npb25zID0gc2Vzc2lvbnMuc2xpY2UoMCwgMilcbiAgLy8gYmV0d2VlbiBzZXNzaW9uc1xuICBhc3NlcnQuc3RyaWN0RXF1YWwocGx1Z2luLmxvb2t1cFNlc3Npb24oXCIyMDE5LTA5LTI4XCIpLCBudWxsKVxuICBhc3NlcnQuc3RyaWN0RXF1YWwocGx1Z2luLmxvb2t1cFNlc3Npb24oXCIyMDE3LTAxLTAxXCIpLCBudWxsKVxuICBhc3NlcnQuZGVlcEVxdWFsKHBsdWdpbi5sb29rdXBTZXNzaW9uKFwiMjAxOS0wOS0xNVwiKSwgcGx1Z2luLnNlc3Npb25zWzBdKVxuICBhc3NlcnQuZGVlcEVxdWFsKHBsdWdpbi5sb29rdXBTZXNzaW9uKFwiMjAyMC0wMi0wMlwiKSwgcGx1Z2luLnNlc3Npb25zWzFdKVxuICBhc3NlcnQuc3RyaWN0RXF1YWwocGx1Z2luLmxvb2t1cFNlc3Npb24oXCIyMDIyLTAxLTAxXCIpLCBudWxsKVxuXG4gIHBsdWdpbi5zZXNzaW9ucyA9IHNlc3Npb25zLnNsaWNlKDAsIDEpXG4gIGFzc2VydC5zdHJpY3RFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMTctMDEtMDFcIiksIG51bGwpXG4gIGFzc2VydC5kZWVwRXF1YWwocGx1Z2luLmxvb2t1cFNlc3Npb24oXCIyMDE5LTA5LTE1XCIpLCBwbHVnaW4uc2Vzc2lvbnNbMF0pXG4gIGFzc2VydC5zdHJpY3RFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMjAtMDItMDJcIiksIG51bGwpXG4gIGFzc2VydC5zdHJpY3RFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMjItMDEtMDFcIiksIG51bGwpXG5cbiAgcGx1Z2luLnNlc3Npb25zID0gc2Vzc2lvbnNcbiAgYXNzZXJ0LnN0cmljdEVxdWFsKHBsdWdpbi5sb29rdXBTZXNzaW9uKFwiMjAxNy0wMS0wMVwiKSwgbnVsbClcbiAgYXNzZXJ0LmRlZXBFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMTktMDktMTVcIiksIHBsdWdpbi5zZXNzaW9uc1swXSlcbiAgYXNzZXJ0LmRlZXBFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMjAtMDItMDJcIiksIHBsdWdpbi5zZXNzaW9uc1sxXSlcbiAgYXNzZXJ0LmRlZXBFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMjAtMDktMDFcIiksIHBsdWdpbi5zZXNzaW9uc1s0XSlcbiAgYXNzZXJ0LmRlZXBFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMjAtMDktMzBcIiksIHBsdWdpbi5zZXNzaW9uc1s0XSlcbiAgYXNzZXJ0LnN0cmljdEVxdWFsKHBsdWdpbi5sb29rdXBTZXNzaW9uKFwiMjAyMi0wMS0wMVwiKSwgbnVsbClcbn0pXG5cbnRlc3QoYCNQbHVnaW4ke2lkfUxvYWRgLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHBsdWdpbiA9IG5ldyBQbHVnaW4oe30pXG4gIGNvbnN0IGQgPSBgc3JjL2J1Z3MvYWdlbmRhLSR7aWR9YFxuXG4gIGNvbnN0IHdpa2lkYXRhID0gbG9hZChgJHtkfS93aWtpZGF0YS5qc29uYClcbiAgcGx1Z2luLmZldGNoID0gZmV0Y2hNb2NrXG4gICAgLnNhbmRib3goKVxuICAgIC5tb2NrKC9xdWVyeVxcLndpa2lkYXRhXFwub3JnLywgeyBib2R5OiB3aWtpZGF0YSwgc3RhdHVzOiAyMDAgfSlcbiAgYXdhaXQgcGx1Z2luLnByZUZpeCgpXG5cbiAgY29uc3QgZXhwZWN0ZWQgPSBbXG4gICAge1xuICAgICAgZGVidXQ6IFwiMjAxOS0wOS0xMFwiLFxuICAgICAgZmluOiBcIjIwMTktMDktMjdcIixcbiAgICAgIGxhYmVsOiBcIlNFU1NJT04wMlwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVidXQ6IFwiMjAxOS0xMC0wMVwiLFxuICAgICAgZmluOiBcIjIwMjAtMDYtMzBcIixcbiAgICAgIGxhYmVsOiBcIlNFU1NJT04wMVwiLFxuICAgIH0sXG4gIF1cbiAgYXNzZXJ0LmRlZXBFcXVhbChwbHVnaW4uc2Vzc2lvbnMsIGV4cGVjdGVkKVxuXG4gIGZldGNoTW9jay5yZXN0b3JlKClcbn0pXG5cbnRlc3QoYCNQbHVnaW4ke2lkfUZpeGAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgcGx1Z2luID0gbmV3IFBsdWdpbih7fSlcbiAgY29uc3QgZCA9IGBzcmMvYnVncy9hZ2VuZGEtJHtpZH1gXG5cbiAgY29uc3Qgd2lraWRhdGEgPSBsb2FkKGAke2R9L3dpa2lkYXRhLmpzb25gKVxuICBwbHVnaW4uZmV0Y2ggPSBmZXRjaE1vY2tcbiAgICAuc2FuZGJveCgpXG4gICAgLm1vY2soL3F1ZXJ5XFwud2lraWRhdGFcXC5vcmcvLCB7IGJvZHk6IHdpa2lkYXRhLCBzdGF0dXM6IDIwMCB9KVxuXG4gIGF3YWl0IHBsdWdpbi5wcmVGaXgoKVxuICBhc3NlcnQocGx1Z2luLnNlc3Npb25zICE9IHVuZGVmaW5lZClcblxuICB7XG4gICAgY29uc3QgZiA9IGAke2R9L29rLmpzb25gXG4gICAgY29uc3QgY29udGVudCA9IGxvYWQoZilcbiAgICBhc3NlcnQoXCJzZXNzaW9uUmVmXCIgaW4gY29udGVudCwgY29udGVudClcbiAgICBhc3NlcnQuZXF1YWwoYXdhaXQgcGx1Z2luLmZpeChjb250ZW50LCBmKSwgdHJ1ZSwgZilcbiAgICBhc3NlcnQoIShcInNlc3Npb25SZWZcIiBpbiBjb250ZW50KSwgY29udGVudClcbiAgICBhc3NlcnQoY29udGVudC5zZXNzaW9uLmxhYmVsLCBcIlNFU1NJT04wMVwiKVxuICB9XG5cbiAge1xuICAgIGNvbnN0IGYgPSBgJHtkfS9vbGRzY2hlbWEuanNvbmBcbiAgICBjb25zdCBjb250ZW50ID0gbG9hZChmKVxuICAgIGFzc2VydC5lcXVhbChjb250ZW50LnNjaGVtYVZlcnNpb24sIFwiYWdlbmRhLTEuMFwiKVxuICAgIGFzc2VydC5lcXVhbChhd2FpdCBwbHVnaW4uZml4KGNvbnRlbnQsIGYpLCB0cnVlLCBmKVxuICAgIGFzc2VydC5lcXVhbChjb250ZW50LnNjaGVtYVZlcnNpb24sIFwiYWdlbmRhLTEuMVwiKVxuICB9XG5cbiAge1xuICAgIGNvbnN0IGYgPSBgJHtkfS9ub3NjaGVtYS5qc29uYFxuICAgIGNvbnN0IGNvbnRlbnQgPSBsb2FkKGYpXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnQuc2NoZW1hVmVyc2lvbiwgdW5kZWZpbmVkKVxuICAgIGFzc2VydC5lcXVhbChhd2FpdCBwbHVnaW4uZml4KGNvbnRlbnQsIGYpLCB0cnVlLCBmKVxuICAgIGFzc2VydC5lcXVhbChjb250ZW50LnNjaGVtYVZlcnNpb24sIFwiYWdlbmRhLTEuMVwiKVxuICB9XG5cbiAge1xuICAgIGNvbnN0IGYgPSBgJHtkfS9ub3Nlc3Npb25yZWYuanNvbmBcbiAgICBjb25zdCBjb250ZW50ID0gbG9hZChmKVxuICAgIGFzc2VydC5lcXVhbChhd2FpdCBwbHVnaW4uZml4KGNvbnRlbnQsIGYpLCB0cnVlLCBmKVxuICAgIGFzc2VydC5lcXVhbChjb250ZW50LnNlc3Npb24ubGFiZWwsIFwiU0VTU0lPTjAxXCIpXG4gIH1cblxuICB7XG4gICAgY29uc3QgZiA9IGAke2R9L3Nlc3Npb24uanNvbmBcbiAgICBjb25zdCBjb250ZW50ID0gbG9hZChmKVxuICAgIGFzc2VydC5lcXVhbChjb250ZW50LnNlc3Npb24ubGFiZWwsIFwiU09NRVRISU5HXCIpXG4gICAgYXNzZXJ0LmVxdWFsKGF3YWl0IHBsdWdpbi5maXgoY29udGVudCwgZiksIHRydWUsIGYpXG4gICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnQuc2Vzc2lvbi5sYWJlbCwgXCJTRVNTSU9OMDFcIilcbiAgfVxuXG4gIHtcbiAgICBjb25zdCBmID0gYCR7ZH0vbm90X3NlYW5jZV90eXBlLmpzb25gXG4gICAgY29uc3QgY29udGVudCA9IGxvYWQoZilcbiAgICBhc3NlcnQuZXF1YWwoYXdhaXQgcGx1Z2luLmZpeChjb250ZW50LCBmKSwgbnVsbCwgZilcbiAgfVxuXG4gIGZldGNoTW9jay5yZXN0b3JlKClcbn0pXG5cbnRlc3QoYCNQbHVnaW4ke2lkfUNoZWNrYCwgYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCBwbHVnaW4gPSBuZXcgUGx1Z2luKHt9KVxuICBjb25zdCBkID0gYHNyYy9idWdzL2FnZW5kYS0ke2lkfWBcblxuICBjb25zdCB3aWtpZGF0YSA9IGxvYWQoYCR7ZH0vd2lraWRhdGEuanNvbmApXG4gIHBsdWdpbi5mZXRjaCA9IGZldGNoTW9ja1xuICAgIC5zYW5kYm94KClcbiAgICAubW9jaygvcXVlcnlcXC53aWtpZGF0YVxcLm9yZy8sIHsgYm9keTogd2lraWRhdGEsIHN0YXR1czogMjAwIH0pXG5cbiAgYXdhaXQgcGx1Z2luLnByZUNoZWNrKClcbiAgYXNzZXJ0KHBsdWdpbi5zZXNzaW9ucyAhPSB1bmRlZmluZWQpXG5cbiAge1xuICAgIGNvbnN0IGYgPSBgJHtkfS9vay5qc29uYFxuICAgIGNvbnN0IGNvbnRlbnQgPSBsb2FkKGYpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGx1Z2luLmNoZWNrKGNvbnRlbnQsIGYpXG4gICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHQsIHsgc3RhdHVzOiBcIm9rXCIsIGluZm86IFtcIlwiXSB9LCBmKVxuICB9XG5cbiAge1xuICAgIGNvbnN0IGYgPSBgJHtkfS9iYWR0aW1lc3RhbXAuanNvbmBcbiAgICBjb25zdCBjb250ZW50ID0gbG9hZChmKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBsdWdpbi5jaGVjayhjb250ZW50LCBmKVxuICAgIGFzc2VydC5kZWVwRXF1YWwoXG4gICAgICByZXN1bHQsXG4gICAgICB7IHN0YXR1czogXCJuZWVkcy1maXhpbmdcIiwgaW5mbzogW1wiMjAxNy0wNi0yMCBpcyBub3QgaW4gYSBzZXNzaW9uXCJdIH0sXG4gICAgICBmLFxuICAgIClcbiAgfVxuXG4gIGZldGNoTW9jay5yZXN0b3JlKClcbn0pXG5cbnRlc3QoYCNQbHVnaW4ke2lkfUZldGNoRmFpbGAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgcGx1Z2luID0gbmV3IFBsdWdpbih7fSlcblxuICBwbHVnaW4uZmV0Y2ggPSBmZXRjaE1vY2suc2FuZGJveCgpLm1vY2soL3F1ZXJ5XFwud2lraWRhdGFcXC5vcmcvLCA1MDApXG5cbiAgbGV0IHN0YXR1cyA9IFwidW5leHBlY3RlZFwiXG4gIGF3YWl0IHBsdWdpblxuICAgIC5wcmVGaXgoKVxuICAgIC50aGVuKCgpID0+IChzdGF0dXMgPSBcImV4Y2VwdGlvbiBub3QgdGhyb3duXCIpKVxuICAgIC5jYXRjaCgoZSkgPT4gKHN0YXR1cyA9IFN0cmluZyhlLnN0YXR1cykpKVxuICBhc3NlcnQuZXF1YWwoc3RhdHVzLCBcIjUwMFwiKVxuXG4gIGZldGNoTW9jay5yZXN0b3JlKClcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQWtDO0FBQUEsK0NBRmxDO0FBQUE7QUFBQTtBQUlBLElBQU1BLEVBQUUsR0FBRyxPQUFPO0FBRWxCQyxLQUFLLGlCQUFVRCxFQUFFLEVBQUc7QUFFcEJFLElBQUksa0JBQVdGLEVBQUUsMEZBQWU7RUFBQTtFQUFBO0lBQUE7TUFBQTtRQUFBO1VBQ3hCRyxNQUFNLEdBQUcsSUFBSUMsY0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBRXZCQyxRQUFRLEdBQUcsQ0FDZjtZQUNFQyxLQUFLLEVBQUUsWUFBWTtZQUNuQkMsR0FBRyxFQUFFO1VBQ1AsQ0FBQyxFQUNEO1lBQ0VELEtBQUssRUFBRSxZQUFZO1lBQ25CQyxHQUFHLEVBQUU7VUFDUCxDQUFDLEVBQ0Q7WUFDRUQsS0FBSyxFQUFFLFlBQVk7WUFDbkJDLEdBQUcsRUFBRTtVQUNQLENBQUMsRUFDRDtZQUNFRCxLQUFLLEVBQUUsWUFBWTtZQUNuQkMsR0FBRyxFQUFFO1VBQ1AsQ0FBQyxFQUNEO1lBQ0VELEtBQUssRUFBRSxZQUFZO1lBQ25CQyxHQUFHLEVBQUU7VUFDUCxDQUFDLENBQ0Y7VUFFREosTUFBTSxDQUFDRSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ0csS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7VUFDdEM7VUFDQUMsWUFBTSxDQUFDQyxXQUFXLENBQUNQLE1BQU0sQ0FBQ1EsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQztVQUM1REYsWUFBTSxDQUFDQyxXQUFXLENBQUNQLE1BQU0sQ0FBQ1EsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQztVQUM1REYsWUFBTSxDQUFDRyxTQUFTLENBQUNULE1BQU0sQ0FBQ1EsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFUixNQUFNLENBQUNFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUN4RUksWUFBTSxDQUFDRyxTQUFTLENBQUNULE1BQU0sQ0FBQ1EsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFUixNQUFNLENBQUNFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUN4RUksWUFBTSxDQUFDQyxXQUFXLENBQUNQLE1BQU0sQ0FBQ1EsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQztVQUU1RFIsTUFBTSxDQUFDRSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ0csS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7VUFDdENDLFlBQU0sQ0FBQ0MsV0FBVyxDQUFDUCxNQUFNLENBQUNRLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUM7VUFDNURGLFlBQU0sQ0FBQ0csU0FBUyxDQUFDVCxNQUFNLENBQUNRLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRVIsTUFBTSxDQUFDRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDeEVJLFlBQU0sQ0FBQ0MsV0FBVyxDQUFDUCxNQUFNLENBQUNRLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUM7VUFDNURGLFlBQU0sQ0FBQ0MsV0FBVyxDQUFDUCxNQUFNLENBQUNRLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUM7VUFFNURSLE1BQU0sQ0FBQ0UsUUFBUSxHQUFHQSxRQUFRO1VBQzFCSSxZQUFNLENBQUNDLFdBQVcsQ0FBQ1AsTUFBTSxDQUFDUSxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDO1VBQzVERixZQUFNLENBQUNHLFNBQVMsQ0FBQ1QsTUFBTSxDQUFDUSxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUVSLE1BQU0sQ0FBQ0UsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQ3hFSSxZQUFNLENBQUNHLFNBQVMsQ0FBQ1QsTUFBTSxDQUFDUSxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUVSLE1BQU0sQ0FBQ0UsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQ3hFSSxZQUFNLENBQUNHLFNBQVMsQ0FBQ1QsTUFBTSxDQUFDUSxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUVSLE1BQU0sQ0FBQ0UsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQ3hFSSxZQUFNLENBQUNHLFNBQVMsQ0FBQ1QsTUFBTSxDQUFDUSxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUVSLE1BQU0sQ0FBQ0UsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQ3hFSSxZQUFNLENBQUNDLFdBQVcsQ0FBQ1AsTUFBTSxDQUFDUSxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQUE7UUFBQTtVQUFBO01BQUE7SUFBQTtFQUFBO0FBQUEsQ0FDN0QsR0FBQztBQUVGVCxJQUFJLGtCQUFXRixFQUFFLG1GQUFRO0VBQUE7RUFBQTtJQUFBO01BQUE7UUFBQTtVQUNqQkcsTUFBTSxHQUFHLElBQUlDLGNBQU0sQ0FBQyxD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
267
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpZCIsInN1aXRlIiwidGVzdCIsInBsdWdpbiIsIlBsdWdpbiIsInNlc3Npb25zIiwiZGVidXQiLCJmaW4iLCJzbGljZSIsImFzc2VydCIsInN0cmljdEVxdWFsIiwibG9va3VwU2Vzc2lvbiIsImRlZXBFcXVhbCIsImQiLCJ3aWtpZGF0YSIsImxvYWQiLCJmZXRjaCIsImZldGNoTW9jayIsInNhbmRib3giLCJtb2NrIiwiYm9keSIsInN0YXR1cyIsInByZUZpeCIsImV4cGVjdGVkIiwibGFiZWwiLCJyZXN0b3JlIiwidW5kZWZpbmVkIiwiZiIsImNvbnRlbnQiLCJmaXgiLCJlcXVhbCIsInNlc3Npb24iLCJzY2hlbWFWZXJzaW9uIiwicHJlQ2hlY2siLCJjaGVjayIsInJlc3VsdCIsImluZm8iLCJ0aGVuIiwiZSIsIlN0cmluZyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idWdzL2FnZW5kYS0wMDAxMS9wbHVnaW4udGVzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2FkIH0gZnJvbSBcIi4uLy4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiY2hhaVwiXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tIFwiLi4vYWdlbmRhLTAwMDExXCJcbmltcG9ydCBmZXRjaE1vY2sgZnJvbSBcImZldGNoLW1vY2tcIlxuXG5jb25zdCBpZCA9IFwiMDAwMTFcIlxuXG5zdWl0ZShgUGx1Z2luJHtpZH1gKVxuXG50ZXN0KGAjUGx1Z2luJHtpZH1GaW5kU2Vzc2lvbmAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgcGx1Z2luID0gbmV3IFBsdWdpbih7fSlcblxuICBjb25zdCBzZXNzaW9ucyA9IFtcbiAgICB7XG4gICAgICBkZWJ1dDogXCIyMDE5LTA5LTEwXCIsXG4gICAgICBmaW46IFwiMjAxOS0wOS0yN1wiLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVidXQ6IFwiMjAxOS0xMC0wMVwiLFxuICAgICAgZmluOiBcIjIwMjAtMDYtMzBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlYnV0OiBcIjIwMjAtMDYtMzFcIixcbiAgICAgIGZpbjogXCIyMDIwLTA3LTMxXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZWJ1dDogXCIyMDIwLTA4LTAxXCIsXG4gICAgICBmaW46IFwiMjAyMC0wOC0zMVwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVidXQ6IFwiMjAyMC0wOS0wMVwiLFxuICAgICAgZmluOiBcIjIwMjAtMDktMzBcIixcbiAgICB9LFxuICBdXG5cbiAgcGx1Z2luLnNlc3Npb25zID0gc2Vzc2lvbnMuc2xpY2UoMCwgMilcbiAgLy8gYmV0d2VlbiBzZXNzaW9uc1xuICBhc3NlcnQuc3RyaWN0RXF1YWwocGx1Z2luLmxvb2t1cFNlc3Npb24oXCIyMDE5LTA5LTI4XCIpLCBudWxsKVxuICBhc3NlcnQuc3RyaWN0RXF1YWwocGx1Z2luLmxvb2t1cFNlc3Npb24oXCIyMDE3LTAxLTAxXCIpLCBudWxsKVxuICBhc3NlcnQuZGVlcEVxdWFsKHBsdWdpbi5sb29rdXBTZXNzaW9uKFwiMjAxOS0wOS0xNVwiKSwgcGx1Z2luLnNlc3Npb25zWzBdKVxuICBhc3NlcnQuZGVlcEVxdWFsKHBsdWdpbi5sb29rdXBTZXNzaW9uKFwiMjAyMC0wMi0wMlwiKSwgcGx1Z2luLnNlc3Npb25zWzFdKVxuICBhc3NlcnQuc3RyaWN0RXF1YWwocGx1Z2luLmxvb2t1cFNlc3Npb24oXCIyMDIyLTAxLTAxXCIpLCBudWxsKVxuXG4gIHBsdWdpbi5zZXNzaW9ucyA9IHNlc3Npb25zLnNsaWNlKDAsIDEpXG4gIGFzc2VydC5zdHJpY3RFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMTctMDEtMDFcIiksIG51bGwpXG4gIGFzc2VydC5kZWVwRXF1YWwocGx1Z2luLmxvb2t1cFNlc3Npb24oXCIyMDE5LTA5LTE1XCIpLCBwbHVnaW4uc2Vzc2lvbnNbMF0pXG4gIGFzc2VydC5zdHJpY3RFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMjAtMDItMDJcIiksIG51bGwpXG4gIGFzc2VydC5zdHJpY3RFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMjItMDEtMDFcIiksIG51bGwpXG5cbiAgcGx1Z2luLnNlc3Npb25zID0gc2Vzc2lvbnNcbiAgYXNzZXJ0LnN0cmljdEVxdWFsKHBsdWdpbi5sb29rdXBTZXNzaW9uKFwiMjAxNy0wMS0wMVwiKSwgbnVsbClcbiAgYXNzZXJ0LmRlZXBFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMTktMDktMTVcIiksIHBsdWdpbi5zZXNzaW9uc1swXSlcbiAgYXNzZXJ0LmRlZXBFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMjAtMDItMDJcIiksIHBsdWdpbi5zZXNzaW9uc1sxXSlcbiAgYXNzZXJ0LmRlZXBFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMjAtMDktMDFcIiksIHBsdWdpbi5zZXNzaW9uc1s0XSlcbiAgYXNzZXJ0LmRlZXBFcXVhbChwbHVnaW4ubG9va3VwU2Vzc2lvbihcIjIwMjAtMDktMzBcIiksIHBsdWdpbi5zZXNzaW9uc1s0XSlcbiAgYXNzZXJ0LnN0cmljdEVxdWFsKHBsdWdpbi5sb29rdXBTZXNzaW9uKFwiMjAyMi0wMS0wMVwiKSwgbnVsbClcbn0pXG5cbnRlc3QoYCNQbHVnaW4ke2lkfUxvYWRgLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHBsdWdpbiA9IG5ldyBQbHVnaW4oe30pXG4gIGNvbnN0IGQgPSBgc3JjL2J1Z3MvYWdlbmRhLSR7aWR9YFxuXG4gIGNvbnN0IHdpa2lkYXRhID0gbG9hZChgJHtkfS93aWtpZGF0YS5qc29uYClcbiAgcGx1Z2luLmZldGNoID0gZmV0Y2hNb2NrXG4gICAgLnNhbmRib3goKVxuICAgIC5tb2NrKC9xdWVyeVxcLndpa2lkYXRhXFwub3JnLywgeyBib2R5OiB3aWtpZGF0YSwgc3RhdHVzOiAyMDAgfSlcbiAgYXdhaXQgcGx1Z2luLnByZUZpeCgpXG5cbiAgY29uc3QgZXhwZWN0ZWQgPSBbXG4gICAge1xuICAgICAgZGVidXQ6IFwiMjAxOS0wOS0xMFwiLFxuICAgICAgZmluOiBcIjIwMTktMDktMjdcIixcbiAgICAgIGxhYmVsOiBcIlNFU1NJT04wMlwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVidXQ6IFwiMjAxOS0xMC0wMVwiLFxuICAgICAgZmluOiBcIjIwMjAtMDYtMzBcIixcbiAgICAgIGxhYmVsOiBcIlNFU1NJT04wMVwiLFxuICAgIH0sXG4gIF1cbiAgYXNzZXJ0LmRlZXBFcXVhbChwbHVnaW4uc2Vzc2lvbnMsIGV4cGVjdGVkKVxuXG4gIGZldGNoTW9jay5yZXN0b3JlKClcbn0pXG5cbnRlc3QoYCNQbHVnaW4ke2lkfUZpeGAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgcGx1Z2luID0gbmV3IFBsdWdpbih7fSlcbiAgY29uc3QgZCA9IGBzcmMvYnVncy9hZ2VuZGEtJHtpZH1gXG5cbiAgY29uc3Qgd2lraWRhdGEgPSBsb2FkKGAke2R9L3dpa2lkYXRhLmpzb25gKVxuICBwbHVnaW4uZmV0Y2ggPSBmZXRjaE1vY2tcbiAgICAuc2FuZGJveCgpXG4gICAgLm1vY2soL3F1ZXJ5XFwud2lraWRhdGFcXC5vcmcvLCB7IGJvZHk6IHdpa2lkYXRhLCBzdGF0dXM6IDIwMCB9KVxuXG4gIGF3YWl0IHBsdWdpbi5wcmVGaXgoKVxuICBhc3NlcnQocGx1Z2luLnNlc3Npb25zICE9IHVuZGVmaW5lZClcblxuICB7XG4gICAgY29uc3QgZiA9IGAke2R9L29rLmpzb25gXG4gICAgY29uc3QgY29udGVudCA9IGxvYWQoZilcbiAgICBhc3NlcnQoXCJzZXNzaW9uUmVmXCIgaW4gY29udGVudCwgY29udGVudClcbiAgICBhc3NlcnQuZXF1YWwoYXdhaXQgcGx1Z2luLmZpeChjb250ZW50LCBmKSwgdHJ1ZSwgZilcbiAgICBhc3NlcnQoIShcInNlc3Npb25SZWZcIiBpbiBjb250ZW50KSwgY29udGVudClcbiAgICBhc3NlcnQoY29udGVudC5zZXNzaW9uLmxhYmVsLCBcIlNFU1NJT04wMVwiKVxuICB9XG5cbiAge1xuICAgIGNvbnN0IGYgPSBgJHtkfS9vbGRzY2hlbWEuanNvbmBcbiAgICBjb25zdCBjb250ZW50ID0gbG9hZChmKVxuICAgIGFzc2VydC5lcXVhbChjb250ZW50LnNjaGVtYVZlcnNpb24sIFwiYWdlbmRhLTEuMFwiKVxuICAgIGFzc2VydC5lcXVhbChhd2FpdCBwbHVnaW4uZml4KGNvbnRlbnQsIGYpLCB0cnVlLCBmKVxuICAgIGFzc2VydC5lcXVhbChjb250ZW50LnNjaGVtYVZlcnNpb24sIFwiYWdlbmRhLTEuMVwiKVxuICB9XG5cbiAge1xuICAgIGNvbnN0IGYgPSBgJHtkfS9ub3NjaGVtYS5qc29uYFxuICAgIGNvbnN0IGNvbnRlbnQgPSBsb2FkKGYpXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnQuc2NoZW1hVmVyc2lvbiwgdW5kZWZpbmVkKVxuICAgIGFzc2VydC5lcXVhbChhd2FpdCBwbHVnaW4uZml4KGNvbnRlbnQsIGYpLCB0cnVlLCBmKVxuICAgIGFzc2VydC5lcXVhbChjb250ZW50LnNjaGVtYVZlcnNpb24sIFwiYWdlbmRhLTEuMVwiKVxuICB9XG5cbiAge1xuICAgIGNvbnN0IGYgPSBgJHtkfS9ub3Nlc3Npb25yZWYuanNvbmBcbiAgICBjb25zdCBjb250ZW50ID0gbG9hZChmKVxuICAgIGFzc2VydC5lcXVhbChhd2FpdCBwbHVnaW4uZml4KGNvbnRlbnQsIGYpLCB0cnVlLCBmKVxuICAgIGFzc2VydC5lcXVhbChjb250ZW50LnNlc3Npb24ubGFiZWwsIFwiU0VTU0lPTjAxXCIpXG4gIH1cblxuICB7XG4gICAgY29uc3QgZiA9IGAke2R9L3Nlc3Npb24uanNvbmBcbiAgICBjb25zdCBjb250ZW50ID0gbG9hZChmKVxuICAgIGFzc2VydC5lcXVhbChjb250ZW50LnNlc3Npb24ubGFiZWwsIFwiU09NRVRISU5HXCIpXG4gICAgYXNzZXJ0LmVxdWFsKGF3YWl0IHBsdWdpbi5maXgoY29udGVudCwgZiksIHRydWUsIGYpXG4gICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnQuc2Vzc2lvbi5sYWJlbCwgXCJTRVNTSU9OMDFcIilcbiAgfVxuXG4gIHtcbiAgICBjb25zdCBmID0gYCR7ZH0vbm90X3NlYW5jZV90eXBlLmpzb25gXG4gICAgY29uc3QgY29udGVudCA9IGxvYWQoZilcbiAgICBhc3NlcnQuZXF1YWwoYXdhaXQgcGx1Z2luLmZpeChjb250ZW50LCBmKSwgbnVsbCwgZilcbiAgfVxuXG4gIGZldGNoTW9jay5yZXN0b3JlKClcbn0pXG5cbnRlc3QoYCNQbHVnaW4ke2lkfUNoZWNrYCwgYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCBwbHVnaW4gPSBuZXcgUGx1Z2luKHt9KVxuICBjb25zdCBkID0gYHNyYy9idWdzL2FnZW5kYS0ke2lkfWBcblxuICBjb25zdCB3aWtpZGF0YSA9IGxvYWQoYCR7ZH0vd2lraWRhdGEuanNvbmApXG4gIHBsdWdpbi5mZXRjaCA9IGZldGNoTW9ja1xuICAgIC5zYW5kYm94KClcbiAgICAubW9jaygvcXVlcnlcXC53aWtpZGF0YVxcLm9yZy8sIHsgYm9keTogd2lraWRhdGEsIHN0YXR1czogMjAwIH0pXG5cbiAgYXdhaXQgcGx1Z2luLnByZUNoZWNrKClcbiAgYXNzZXJ0KHBsdWdpbi5zZXNzaW9ucyAhPSB1bmRlZmluZWQpXG5cbiAge1xuICAgIGNvbnN0IGYgPSBgJHtkfS9vay5qc29uYFxuICAgIGNvbnN0IGNvbnRlbnQgPSBsb2FkKGYpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGx1Z2luLmNoZWNrKGNvbnRlbnQsIGYpXG4gICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHQsIHsgc3RhdHVzOiBcIm9rXCIsIGluZm86IFtcIlwiXSB9LCBmKVxuICB9XG5cbiAge1xuICAgIGNvbnN0IGYgPSBgJHtkfS9iYWR0aW1lc3RhbXAuanNvbmBcbiAgICBjb25zdCBjb250ZW50ID0gbG9hZChmKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBsdWdpbi5jaGVjayhjb250ZW50LCBmKVxuICAgIGFzc2VydC5kZWVwRXF1YWwoXG4gICAgICByZXN1bHQsXG4gICAgICB7IHN0YXR1czogXCJuZWVkcy1maXhpbmdcIiwgaW5mbzogW1wiMjAxNy0wNi0yMCBpcyBub3QgaW4gYSBzZXNzaW9uXCJdIH0sXG4gICAgICBmLFxuICAgIClcbiAgfVxuXG4gIGZldGNoTW9jay5yZXN0b3JlKClcbn0pXG5cbnRlc3QoYCNQbHVnaW4ke2lkfUZldGNoRmFpbGAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgcGx1Z2luID0gbmV3IFBsdWdpbih7fSlcblxuICBwbHVnaW4uZmV0Y2ggPSBmZXRjaE1vY2suc2FuZGJveCgpLm1vY2soL3F1ZXJ5XFwud2lraWRhdGFcXC5vcmcvLCA1MDApXG5cbiAgbGV0IHN0YXR1cyA9IFwidW5leHBlY3RlZFwiXG4gIGF3YWl0IHBsdWdpblxuICAgIC5wcmVGaXgoKVxuICAgIC50aGVuKCgpID0+IChzdGF0dXMgPSBcImV4Y2VwdGlvbiBub3QgdGhyb3duXCIpKVxuICAgIC5jYXRjaCgoZSkgPT4gKHN0YXR1cyA9IFN0cmluZyhlLnN0YXR1cykpKVxuICBhc3NlcnQuZXF1YWwoc3RhdHVzLCBcIjUwMFwiKVxuXG4gIGZldGNoTW9jay5yZXN0b3JlKClcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQWtDO0FBQUEsK0NBRmxDO0FBQUE7QUFBQTtBQUlBLElBQU1BLEVBQUUsR0FBRyxPQUFPO0FBRWxCQyxLQUFLLGlCQUFVRCxFQUFFLEVBQUc7QUFFcEJFLElBQUksa0JBQVdGLEVBQUUsMEZBQWU7RUFBQTtFQUFBO0lBQUE7TUFBQTtRQUN4QkcsTUFBTSxHQUFHLElBQUlDLGNBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2QkMsUUFBUSxHQUFHLENBQ2Y7VUFDRUMsS0FBSyxFQUFFLFlBQVk7VUFDbkJDLEdBQUcsRUFBRTtRQUNQLENBQUMsRUFDRDtVQUNFRCxLQUFLLEVBQUUsWUFBWTtVQUNuQkMsR0FBRyxFQUFFO1FBQ1As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