@tricoteuses/assemblee 1.0.6 → 1.1.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.
- package/lib/api.js +3 -9
- package/lib/api.mjs +4 -5
- package/lib/bugs/acteur-00010/plugin.test.js +3 -50
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +2 -57
- package/lib/bugs/acteur-00010.mjs +1 -6
- package/lib/bugs/agenda-00002/plugin.test.js +3 -53
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -3
- package/lib/bugs/agenda-00002.js +3 -148
- package/lib/bugs/agenda-00002.mjs +1 -28
- package/lib/bugs/agenda-00008/plugin.test.js +3 -52
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +2 -61
- package/lib/bugs/agenda-00008.mjs +1 -5
- package/lib/bugs/agenda-00011/plugin.test.js +5 -99
- package/lib/bugs/agenda-00011/plugin.test.mjs +3 -3
- package/lib/bugs/agenda-00011.js +4 -105
- package/lib/bugs/agenda-00011.mjs +3 -29
- package/lib/bugs.js +3 -164
- package/lib/bugs.mjs +1 -26
- package/lib/cleaners/actes_legislatifs.js +11 -115
- package/lib/cleaners/actes_legislatifs.mjs +7 -82
- package/lib/cleaners/acteurs.js +12 -92
- package/lib/cleaners/acteurs.mjs +7 -38
- package/lib/cleaners/amendements.js +10 -103
- package/lib/cleaners/amendements.mjs +4 -58
- package/lib/cleaners/documents.js +5 -67
- package/lib/cleaners/documents.mjs +1 -37
- package/lib/cleaners/dossiers_legislatifs.js +5 -61
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -29
- package/lib/cleaners/index.js +1 -9
- package/lib/cleaners/index.mjs +1 -1
- package/lib/cleaners/organes.js +1 -33
- package/lib/cleaners/organes.mjs +1 -17
- package/lib/cleaners/reunions.js +4 -119
- package/lib/cleaners/reunions.mjs +1 -64
- package/lib/cleaners/scrutins.js +10 -102
- package/lib/cleaners/scrutins.mjs +1 -48
- package/lib/cleaners/xml.js +8 -42
- package/lib/cleaners/xml.mjs +6 -8
- package/lib/datasets.js +14 -113
- package/lib/datasets.mjs +6 -46
- package/lib/dates.js +7 -37
- package/lib/dates.mjs +9 -14
- package/lib/dossiers_legislatifs.js +6 -68
- package/lib/dossiers_legislatifs.mjs +5 -36
- package/lib/file_systems.js +56 -139
- package/lib/file_systems.mjs +1 -9
- package/lib/git.js +4 -53
- package/lib/git.mjs +1 -12
- package/lib/index.js +1 -15
- package/lib/index.mjs +1 -1
- package/lib/inserters.js +23 -146
- package/lib/inserters.mjs +6 -87
- package/lib/loaders.js +44 -316
- package/lib/loaders.mjs +12 -135
- package/lib/organes.js +1 -7
- package/lib/organes.mjs +1 -4
- package/lib/parsers/documents.js +22 -151
- package/lib/parsers/documents.mjs +19 -81
- package/lib/parsers/index.js +1 -4
- package/lib/parsers/index.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +302 -527
- package/lib/parsers/recherche_amendements.mjs +8 -31
- package/lib/raw_types/acteurs_et_organes.d.ts +1 -30
- package/lib/raw_types/acteurs_et_organes.js +5 -124
- package/lib/raw_types/acteurs_et_organes.mjs +5 -105
- package/lib/raw_types/agendas.js +6 -89
- package/lib/raw_types/agendas.mjs +9 -65
- package/lib/raw_types/amendements.d.ts +2 -0
- package/lib/raw_types/amendements.js +10 -90
- package/lib/raw_types/amendements.mjs +11 -69
- package/lib/raw_types/dossiers_legislatifs.d.ts +16 -115
- package/lib/raw_types/dossiers_legislatifs.js +26 -435
- package/lib/raw_types/dossiers_legislatifs.mjs +26 -412
- package/lib/raw_types/scrutins.js +6 -81
- package/lib/raw_types/scrutins.mjs +9 -57
- package/lib/scripts/bugs_helper.js +2 -181
- package/lib/scripts/bugs_helper.mjs +2 -39
- package/lib/scripts/clean_data.js +27 -143
- package/lib/scripts/clean_data.mjs +15 -34
- package/lib/scripts/clean_reorganized_data.js +76 -240
- package/lib/scripts/clean_reorganized_data.mjs +36 -99
- package/lib/scripts/diff_amendements.js +19 -79
- package/lib/scripts/diff_amendements.mjs +17 -35
- package/lib/scripts/document_dossiers_legislatifs.js +17 -142
- package/lib/scripts/document_dossiers_legislatifs.mjs +6 -90
- package/lib/scripts/get_today_reunions.js +4 -22
- package/lib/scripts/get_today_reunions.mjs +1 -7
- package/lib/scripts/merge_scrutins.js +3 -47
- package/lib/scripts/merge_scrutins.mjs +1 -9
- package/lib/scripts/parse_textes_lois.js +15 -44
- package/lib/scripts/parse_textes_lois.mjs +18 -19
- package/lib/scripts/raw_types_from_amendements.js +3 -95
- package/lib/scripts/raw_types_from_amendements.mjs +1 -16
- package/lib/scripts/reorganize_data.js +74 -294
- package/lib/scripts/reorganize_data.mjs +22 -133
- package/lib/scripts/retrieve_deputes_photos.js +6 -119
- package/lib/scripts/retrieve_deputes_photos.mjs +7 -33
- package/lib/scripts/retrieve_documents.js +4 -192
- package/lib/scripts/retrieve_documents.mjs +2 -50
- package/lib/scripts/retrieve_open_data.js +44 -116
- package/lib/scripts/retrieve_open_data.mjs +14 -19
- package/lib/scripts/retrieve_pending_amendments.js +4 -98
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -14
- package/lib/scripts/retrieve_senateurs_photos.js +18 -114
- package/lib/scripts/retrieve_senateurs_photos.mjs +20 -48
- package/lib/scripts/retrieve_textes_lois.js +3 -122
- package/lib/scripts/retrieve_textes_lois.mjs +3 -21
- package/lib/scripts/test_load.js +2 -10
- package/lib/scripts/test_load.mjs +2 -1
- package/lib/scripts/test_load_big_files.js +2 -10
- package/lib/scripts/test_load_big_files.mjs +2 -1
- package/lib/scripts/validate_json.js +4 -119
- package/lib/scripts/validate_json.mjs +2 -36
- package/lib/shared_types/codes_actes.js +1 -24
- package/lib/shared_types/codes_actes.mjs +3 -10
- package/lib/strings.js +1 -5
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +9 -84
- package/lib/types/acteurs_et_organes.mjs +10 -63
- package/lib/types/agendas.js +8 -90
- package/lib/types/agendas.mjs +11 -66
- package/lib/types/amendements.d.ts +2 -0
- package/lib/types/amendements.js +12 -92
- package/lib/types/amendements.mjs +15 -70
- package/lib/types/dossiers_legislatifs.js +8 -96
- package/lib/types/dossiers_legislatifs.mjs +10 -72
- package/lib/types/legislatures.js +1 -3
- package/lib/types/legislatures.mjs +1 -2
- package/lib/types/scrutins.js +8 -82
- package/lib/types/scrutins.mjs +11 -58
- package/lib/urls.js +3 -27
- package/lib/urls.mjs +3 -21
- package/package.json +1 -1
|
@@ -1,118 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.object.define-property.js");
|
|
6
|
-
|
|
7
5
|
require("core-js/modules/es.object.to-string.js");
|
|
8
|
-
|
|
9
6
|
require("core-js/modules/es.function.name.js");
|
|
10
|
-
|
|
11
7
|
require("core-js/modules/es.array.from.js");
|
|
12
|
-
|
|
13
8
|
require("core-js/modules/es.string.iterator.js");
|
|
14
|
-
|
|
15
9
|
require("core-js/modules/es.symbol.js");
|
|
16
|
-
|
|
17
10
|
require("core-js/modules/es.symbol.description.js");
|
|
18
|
-
|
|
19
11
|
require("core-js/modules/es.symbol.iterator.js");
|
|
20
|
-
|
|
21
12
|
require("core-js/modules/es.array.iterator.js");
|
|
22
|
-
|
|
23
13
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
24
|
-
|
|
25
14
|
require("core-js/modules/es.array.is-array.js");
|
|
26
|
-
|
|
27
15
|
require("core-js/modules/es.promise.js");
|
|
28
|
-
|
|
29
16
|
require("core-js/modules/es.symbol.async-iterator.js");
|
|
30
|
-
|
|
31
17
|
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
32
|
-
|
|
33
18
|
require("core-js/modules/es.json.to-string-tag.js");
|
|
34
|
-
|
|
35
19
|
require("core-js/modules/es.math.to-string-tag.js");
|
|
36
|
-
|
|
37
20
|
require("core-js/modules/es.object.create.js");
|
|
38
|
-
|
|
39
21
|
require("core-js/modules/es.object.get-prototype-of.js");
|
|
40
|
-
|
|
41
22
|
require("core-js/modules/es.array.for-each.js");
|
|
42
|
-
|
|
43
23
|
require("core-js/modules/web.dom-collections.for-each.js");
|
|
44
|
-
|
|
45
24
|
require("core-js/modules/es.object.set-prototype-of.js");
|
|
46
|
-
|
|
47
25
|
require("core-js/modules/es.array.reverse.js");
|
|
48
|
-
|
|
49
26
|
require("core-js/modules/es.weak-map.js");
|
|
50
|
-
|
|
51
27
|
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
52
|
-
|
|
53
28
|
require("core-js/modules/es.array.includes.js");
|
|
54
|
-
|
|
55
29
|
require("core-js/modules/es.string.includes.js");
|
|
56
|
-
|
|
57
30
|
require("core-js/modules/es.array.join.js");
|
|
58
|
-
|
|
59
31
|
require("core-js/modules/es.array.concat.js");
|
|
60
|
-
|
|
61
32
|
require("core-js/modules/es.array.slice.js");
|
|
62
|
-
|
|
63
33
|
require("core-js/modules/es.regexp.exec.js");
|
|
64
|
-
|
|
65
34
|
require("core-js/modules/es.string.replace.js");
|
|
66
|
-
|
|
67
35
|
require("core-js/modules/es.string.ends-with.js");
|
|
68
|
-
|
|
69
36
|
var _ajv = _interopRequireDefault(require("ajv"));
|
|
70
|
-
|
|
71
37
|
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
72
|
-
|
|
73
38
|
var _commandLineUsage = _interopRequireDefault(require("command-line-usage"));
|
|
74
|
-
|
|
75
39
|
var _file_systems = require("../file_systems");
|
|
76
|
-
|
|
77
40
|
var git = _interopRequireWildcard(require("../git"));
|
|
78
|
-
|
|
79
41
|
var _temp = _interopRequireDefault(require("temp"));
|
|
80
|
-
|
|
81
42
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
82
|
-
|
|
83
43
|
var _path = _interopRequireDefault(require("path"));
|
|
84
|
-
|
|
85
44
|
var _datasets = require("../../src/datasets");
|
|
86
|
-
|
|
87
45
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
88
|
-
|
|
89
46
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
90
|
-
|
|
91
47
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
92
|
-
|
|
93
|
-
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, $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 generator._invoke = function (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); } }; }(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; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return 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, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), 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 (object) { var 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; }
|
|
94
|
-
|
|
48
|
+
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 method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return 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; }
|
|
95
49
|
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); } }
|
|
96
|
-
|
|
97
50
|
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); }); }; }
|
|
98
|
-
|
|
99
51
|
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; } } }; }
|
|
100
|
-
|
|
101
52
|
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); }
|
|
102
|
-
|
|
103
53
|
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; }
|
|
104
|
-
|
|
105
54
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
106
|
-
|
|
107
55
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
108
|
-
|
|
109
56
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
110
|
-
|
|
111
57
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
112
|
-
|
|
113
58
|
// Automatically track and cleanup files at exit
|
|
114
59
|
_temp["default"].track();
|
|
115
|
-
|
|
116
60
|
function parseArgs(argv) {
|
|
117
61
|
var optionsDefinitions = [{
|
|
118
62
|
description: "pathname to the directory containing the dataset",
|
|
@@ -154,45 +98,35 @@ function parseArgs(argv) {
|
|
|
154
98
|
var options = (0, _commandLineArgs["default"])(optionsDefinitions, {
|
|
155
99
|
argv: argv
|
|
156
100
|
});
|
|
157
|
-
|
|
158
101
|
if (options.dataset) {
|
|
159
102
|
if (!(0, _datasets.validDataset)(options.dataset)) {
|
|
160
103
|
console.error("--dataset ".concat(options.dataset));
|
|
161
104
|
options.help = true;
|
|
162
105
|
}
|
|
163
106
|
}
|
|
164
|
-
|
|
165
107
|
if (options.schema) {
|
|
166
108
|
if (!(0, _datasets.getSchemas)().includes(options.schema)) {
|
|
167
109
|
console.error("--schema ".concat(options.schema));
|
|
168
110
|
options.help = true;
|
|
169
111
|
}
|
|
170
112
|
}
|
|
171
|
-
|
|
172
113
|
if ("help" in options) {
|
|
173
114
|
var usage = (0, _commandLineUsage["default"])(sections);
|
|
174
115
|
console.warn(usage);
|
|
175
116
|
return null;
|
|
176
117
|
}
|
|
177
|
-
|
|
178
118
|
return options;
|
|
179
119
|
}
|
|
180
|
-
|
|
181
120
|
var Validate = /*#__PURE__*/function () {
|
|
182
121
|
function Validate(options) {
|
|
183
122
|
_classCallCheck(this, Validate);
|
|
184
|
-
|
|
185
123
|
_defineProperty(this, "options", void 0);
|
|
186
|
-
|
|
187
124
|
_defineProperty(this, "version2schema", void 0);
|
|
188
|
-
|
|
189
125
|
_defineProperty(this, "tmpDir", void 0);
|
|
190
|
-
|
|
191
126
|
this.options = options;
|
|
192
127
|
this.version2schema = {};
|
|
193
128
|
this.tmpDir = _temp["default"].mkdirSync("validation");
|
|
194
129
|
}
|
|
195
|
-
|
|
196
130
|
_createClass(Validate, [{
|
|
197
131
|
key: "getSchemaDir",
|
|
198
132
|
value: function getSchemaDir(tag) {
|
|
@@ -200,21 +134,15 @@ var Validate = /*#__PURE__*/function () {
|
|
|
200
134
|
if (this.options.verbose) console.log("--dev: use src/schemas");
|
|
201
135
|
return "src/schemas";
|
|
202
136
|
}
|
|
203
|
-
|
|
204
137
|
var repositoryDir = _path["default"].join(this.tmpDir, "tricoteuses-assemblee");
|
|
205
|
-
|
|
206
138
|
var tagDir = _path["default"].join(this.tmpDir, tag);
|
|
207
|
-
|
|
208
139
|
if (!_fsExtra["default"].existsSync(tagDir)) {
|
|
209
140
|
if (!_fsExtra["default"].existsSync(repositoryDir)) {
|
|
210
141
|
git.run(this.tmpDir, "clone --quiet ".concat(this.options.repository, " ").concat(repositoryDir));
|
|
211
142
|
}
|
|
212
|
-
|
|
213
143
|
git.run(repositoryDir, "checkout tags/".concat(tag, " -- src/schemas > /dev/null 2>&1"));
|
|
214
|
-
|
|
215
144
|
_fsExtra["default"].renameSync(_path["default"].join(repositoryDir, "src/schemas"), tagDir);
|
|
216
145
|
}
|
|
217
|
-
|
|
218
146
|
return tagDir;
|
|
219
147
|
}
|
|
220
148
|
}, {
|
|
@@ -224,10 +152,8 @@ var Validate = /*#__PURE__*/function () {
|
|
|
224
152
|
var ajv = new _ajv["default"]();
|
|
225
153
|
var dir = this.getSchemaDir("schema-".concat(version));
|
|
226
154
|
var references = [];
|
|
227
|
-
|
|
228
155
|
var _iterator = _createForOfIteratorHelper((0, _file_systems.getFiles)(["".concat(dir, "/").concat(this.options.schema, "/*.json")])),
|
|
229
|
-
|
|
230
|
-
|
|
156
|
+
_step;
|
|
231
157
|
try {
|
|
232
158
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
233
159
|
var reference = _step.value;
|
|
@@ -238,10 +164,8 @@ var Validate = /*#__PURE__*/function () {
|
|
|
238
164
|
} finally {
|
|
239
165
|
_iterator.f();
|
|
240
166
|
}
|
|
241
|
-
|
|
242
167
|
var _iterator2 = _createForOfIteratorHelper((0, _file_systems.getFiles)(references)),
|
|
243
|
-
|
|
244
|
-
|
|
168
|
+
_step2;
|
|
245
169
|
try {
|
|
246
170
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
247
171
|
var file = _step2.value;
|
|
@@ -253,14 +177,12 @@ var Validate = /*#__PURE__*/function () {
|
|
|
253
177
|
} finally {
|
|
254
178
|
_iterator2.f();
|
|
255
179
|
}
|
|
256
|
-
|
|
257
180
|
var schema = this.options.schema;
|
|
258
181
|
var Schema = schema.charAt(0).toUpperCase() + schema.slice(1);
|
|
259
182
|
var s = "".concat(dir, "/").concat(schema, "/").concat(Schema, ".json");
|
|
260
183
|
if (this.options.verbose) console.log("schema ".concat(s));
|
|
261
184
|
this.version2schema[version] = ajv.compile((0, _file_systems.load)(s));
|
|
262
185
|
}
|
|
263
|
-
|
|
264
186
|
return this.version2schema[version];
|
|
265
187
|
}
|
|
266
188
|
}, {
|
|
@@ -288,7 +210,6 @@ var Validate = /*#__PURE__*/function () {
|
|
|
288
210
|
var validator = this.getValidator(tag);
|
|
289
211
|
var valid = validator(content);
|
|
290
212
|
var schemaURL = this.getSchemaURL(tag);
|
|
291
|
-
|
|
292
213
|
if (!valid) {
|
|
293
214
|
console.error("".concat(schemaURL, " finds ").concat(filename, " is invalid"));
|
|
294
215
|
console.error(validator.errors);
|
|
@@ -303,14 +224,12 @@ var Validate = /*#__PURE__*/function () {
|
|
|
303
224
|
value: function () {
|
|
304
225
|
var _process = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
305
226
|
var status, _iterator3, _step3, file, content;
|
|
306
|
-
|
|
307
227
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
308
228
|
while (1) {
|
|
309
229
|
switch (_context.prev = _context.next) {
|
|
310
230
|
case 0:
|
|
311
231
|
status = 0;
|
|
312
232
|
_iterator3 = _createForOfIteratorHelper((0, _file_systems.getFiles)([this.options.data]));
|
|
313
|
-
|
|
314
233
|
try {
|
|
315
234
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
316
235
|
file = _step3.value;
|
|
@@ -322,9 +241,7 @@ var Validate = /*#__PURE__*/function () {
|
|
|
322
241
|
} finally {
|
|
323
242
|
_iterator3.f();
|
|
324
243
|
}
|
|
325
|
-
|
|
326
244
|
return _context.abrupt("return", status);
|
|
327
|
-
|
|
328
245
|
case 4:
|
|
329
246
|
case "end":
|
|
330
247
|
return _context.stop();
|
|
@@ -332,79 +249,60 @@ var Validate = /*#__PURE__*/function () {
|
|
|
332
249
|
}
|
|
333
250
|
}, _callee, this);
|
|
334
251
|
}));
|
|
335
|
-
|
|
336
252
|
function process() {
|
|
337
253
|
return _process.apply(this, arguments);
|
|
338
254
|
}
|
|
339
|
-
|
|
340
255
|
return process;
|
|
341
256
|
}()
|
|
342
257
|
}]);
|
|
343
|
-
|
|
344
258
|
return Validate;
|
|
345
259
|
}();
|
|
346
|
-
|
|
347
260
|
function main(_x) {
|
|
348
261
|
return _main.apply(this, arguments);
|
|
349
262
|
}
|
|
350
263
|
/* istanbul ignore if */
|
|
351
|
-
|
|
352
|
-
|
|
353
264
|
function _main() {
|
|
354
265
|
_main = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(argv) {
|
|
355
266
|
var options, directorySchema, _iterator4, _step4, d, validate, status;
|
|
356
|
-
|
|
357
267
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
358
268
|
while (1) {
|
|
359
269
|
switch (_context2.prev = _context2.next) {
|
|
360
270
|
case 0:
|
|
361
271
|
options = parseArgs(argv);
|
|
362
|
-
|
|
363
272
|
if (!(options === null)) {
|
|
364
273
|
_context2.next = 3;
|
|
365
274
|
break;
|
|
366
275
|
}
|
|
367
|
-
|
|
368
276
|
return _context2.abrupt("return", 1);
|
|
369
|
-
|
|
370
277
|
case 3:
|
|
371
278
|
directorySchema = [];
|
|
372
|
-
|
|
373
279
|
if (!options.schema) {
|
|
374
280
|
_context2.next = 8;
|
|
375
281
|
break;
|
|
376
282
|
}
|
|
377
|
-
|
|
378
283
|
directorySchema = [[options.data, options.schema]];
|
|
379
284
|
_context2.next = 14;
|
|
380
285
|
break;
|
|
381
|
-
|
|
382
286
|
case 8:
|
|
383
287
|
if (!options.dataset) {
|
|
384
288
|
_context2.next = 12;
|
|
385
289
|
break;
|
|
386
290
|
}
|
|
387
|
-
|
|
388
291
|
directorySchema = (0, _datasets.datasetDirectorySchema)(options.dataset);
|
|
389
292
|
_context2.next = 14;
|
|
390
293
|
break;
|
|
391
|
-
|
|
392
294
|
case 12:
|
|
393
295
|
console.error("either --schema or --dataset is required");
|
|
394
296
|
return _context2.abrupt("return", 1);
|
|
395
|
-
|
|
396
297
|
case 14:
|
|
397
298
|
_iterator4 = _createForOfIteratorHelper(directorySchema);
|
|
398
299
|
_context2.prev = 15;
|
|
399
|
-
|
|
400
300
|
_iterator4.s();
|
|
401
|
-
|
|
402
301
|
case 17:
|
|
403
302
|
if ((_step4 = _iterator4.n()).done) {
|
|
404
303
|
_context2.next = 30;
|
|
405
304
|
break;
|
|
406
305
|
}
|
|
407
|
-
|
|
408
306
|
d = _step4.value;
|
|
409
307
|
options.schema = d[1];
|
|
410
308
|
options.data = d[0];
|
|
@@ -412,41 +310,29 @@ function _main() {
|
|
|
412
310
|
validate = new Validate(options);
|
|
413
311
|
_context2.next = 25;
|
|
414
312
|
return validate.process();
|
|
415
|
-
|
|
416
313
|
case 25:
|
|
417
314
|
status = _context2.sent;
|
|
418
|
-
|
|
419
315
|
if (!(status != 0)) {
|
|
420
316
|
_context2.next = 28;
|
|
421
317
|
break;
|
|
422
318
|
}
|
|
423
|
-
|
|
424
319
|
return _context2.abrupt("return", status);
|
|
425
|
-
|
|
426
320
|
case 28:
|
|
427
321
|
_context2.next = 17;
|
|
428
322
|
break;
|
|
429
|
-
|
|
430
323
|
case 30:
|
|
431
324
|
_context2.next = 35;
|
|
432
325
|
break;
|
|
433
|
-
|
|
434
326
|
case 32:
|
|
435
327
|
_context2.prev = 32;
|
|
436
328
|
_context2.t0 = _context2["catch"](15);
|
|
437
|
-
|
|
438
329
|
_iterator4.e(_context2.t0);
|
|
439
|
-
|
|
440
330
|
case 35:
|
|
441
331
|
_context2.prev = 35;
|
|
442
|
-
|
|
443
332
|
_iterator4.f();
|
|
444
|
-
|
|
445
333
|
return _context2.finish(35);
|
|
446
|
-
|
|
447
334
|
case 38:
|
|
448
335
|
return _context2.abrupt("return", 0);
|
|
449
|
-
|
|
450
336
|
case 39:
|
|
451
337
|
case "end":
|
|
452
338
|
return _context2.stop();
|
|
@@ -456,11 +342,10 @@ function _main() {
|
|
|
456
342
|
}));
|
|
457
343
|
return _main.apply(this, arguments);
|
|
458
344
|
}
|
|
459
|
-
|
|
460
345
|
if (process.argv[1].endsWith("validate_json.ts")) main(process.argv).then(function (status) {
|
|
461
346
|
process.exit(status);
|
|
462
347
|
})["catch"](function (error) {
|
|
463
348
|
console.error(error);
|
|
464
349
|
process.exit(1);
|
|
465
350
|
});
|
|
466
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0ZW1wIiwidHJhY2siLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJkZWZhdWx0VmFsdWUiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJCb29sZWFuIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJkYXRhc2V0IiwidmFsaWREYXRhc2V0IiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInNjaGVtYSIsImluY2x1ZGVzIiwidXNhZ2UiLCJjb21tYW5kTGluZVVzYWdlIiwid2FybiIsIlZhbGlkYXRlIiwidmVyc2lvbjJzY2hlbWEiLCJ0bXBEaXIiLCJta2RpclN5bmMiLCJ0YWciLCJkZXYiLCJ2ZXJib3NlIiwibG9nIiwicmVwb3NpdG9yeURpciIsInBhdGgiLCJqb2luIiwidGFnRGlyIiwiZnMiLCJleGlzdHNTeW5jIiwiZ2l0IiwicnVuIiwicmVwb3NpdG9yeSIsInJlbmFtZVN5bmMiLCJ2ZXJzaW9uIiwiYWp2IiwiQWp2IiwiZGlyIiwiZ2V0U2NoZW1hRGlyIiwicmVmZXJlbmNlcyIsImdldEZpbGVzIiwicmVmZXJlbmNlIiwicHVzaCIsImZpbGUiLCJhZGRTY2hlbWEiLCJsb2FkIiwiU2NoZW1hIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInMiLCJjb21waWxlIiwic2NoZW1hVmVyc2lvbiIsInVuZGVmaW5lZCIsInJlcGxhY2UiLCJmaWxlbmFtZSIsImdldFZlcnNpb24iLCJ2YWxpZGF0b3IiLCJnZXRWYWxpZGF0b3IiLCJ2YWxpZCIsInNjaGVtYVVSTCIsImdldFNjaGVtYVVSTCIsImVycm9ycyIsInN0YXR1cyIsImRhdGEiLCJ2YWxpZGF0ZSIsIm1haW4iLCJkaXJlY3RvcnlTY2hlbWEiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZCIsInByb2Nlc3MiLCJlbmRzV2l0aCIsInRoZW4iLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvdmFsaWRhdGVfanNvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWp2IGZyb20gXCJhanZcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHRlbXAgZnJvbSBcInRlbXBcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICB2YWxpZERhdGFzZXQsXG4gIGdldERhdGFzZXRzLFxuICBnZXRTY2hlbWFzLFxuICBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vc3JjL2RhdGFzZXRzXCJcblxuLy8gQXV0b21hdGljYWxseSB0cmFjayBhbmQgY2xlYW51cCBmaWxlcyBhdCBleGl0XG50ZW1wLnRyYWNrKClcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZGF0YXNldFwiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiVVJMIG9yIHBhdGggdG8gdGhlIHRyaWNvdGV1c2VzLWFzc2VtYmxlZSBnaXQgcmVwb3NpdG9yeVwiLFxuICAgICAgZGVmYXVsdFZhbHVlOlxuICAgICAgICBcImh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS5naXRcIixcbiAgICAgIG5hbWU6IFwicmVwb3NpdG9yeVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBkYXRhc2V0IChwb3NzaWJsZSB2YWx1ZXMgbXVzdCBpbmNsdWRlIGV4YWN0bHkgb25lIG9mICR7Z2V0RGF0YXNldHMoKX0pYCxcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBzY2hlbWEgKHBvc3NpYmxlIHZhbHVlcyBhcmUgJHtnZXRTY2hlbWFzKCl9KWAsXG4gICAgICBuYW1lOiBcInNjaGVtYVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiaWdub3JlIHNjaGVtYVZlcnNpb24gZnJvbSBKU09OIGZpbGVzIGFuZCB1c2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIC0tcmVwb3NpdG9yeVwiLFxuICAgICAgbmFtZTogXCJkZXZcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJWYWxpZGF0ZSBKU09OIGZpbGVzXCIsXG4gICAgICBjb250ZW50OiBcIlZhbGlkYXRlIEpTT04gZmlsZXNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGlmICghdmFsaWREYXRhc2V0KG9wdGlvbnMuZGF0YXNldCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tZGF0YXNldCAke29wdGlvbnMuZGF0YXNldH1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGlmICghZ2V0U2NoZW1hcygpLmluY2x1ZGVzKG9wdGlvbnMuc2NoZW1hKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgLS1zY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmNsYXNzIFZhbGlkYXRlIHtcbiAgb3B0aW9uczogYW55XG4gIHZlcnNpb24yc2NoZW1hOiBhbnlcbiAgdG1wRGlyOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy52ZXJzaW9uMnNjaGVtYSA9IHt9XG4gICAgdGhpcy50bXBEaXIgPSB0ZW1wLm1rZGlyU3luYyhcInZhbGlkYXRpb25cIilcbiAgfVxuXG4gIGdldFNjaGVtYURpcih0YWc6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coXCItLWRldjogdXNlIHNyYy9zY2hlbWFzXCIpXG4gICAgICByZXR1cm4gXCJzcmMvc2NoZW1hc1wiXG4gICAgfVxuICAgIGNvbnN0IHJlcG9zaXRvcnlEaXIgPSBwYXRoLmpvaW4odGhpcy50bXBEaXIsIFwidHJpY290ZXVzZXMtYXNzZW1ibGVlXCIpXG4gICAgY29uc3QgdGFnRGlyID0gcGF0aC5qb2luKHRoaXMudG1wRGlyLCB0YWcpXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhZ0RpcikpIHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhyZXBvc2l0b3J5RGlyKSkge1xuICAgICAgICBnaXQucnVuKFxuICAgICAgICAgIHRoaXMudG1wRGlyLFxuICAgICAgICAgIGBjbG9uZSAtLXF1aWV0ICR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9ICR7cmVwb3NpdG9yeURpcn1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBnaXQucnVuKFxuICAgICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgICBgY2hlY2tvdXQgdGFncy8ke3RhZ30gLS0gc3JjL3NjaGVtYXMgPiAvZGV2L251bGwgMj4mMWAsXG4gICAgICApXG4gICAgICBmcy5yZW5hbWVTeW5jKHBhdGguam9pbihyZXBvc2l0b3J5RGlyLCBcInNyYy9zY2hlbWFzXCIpLCB0YWdEaXIpXG4gICAgfVxuICAgIHJldHVybiB0YWdEaXJcbiAgfVxuXG4gIGdldFZhbGlkYXRvcih2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghKHZlcnNpb24gaW4gdGhpcy52ZXJzaW9uMnNjaGVtYSkpIHtcbiAgICAgIGNvbnN0IGFqdiA9IG5ldyBBanYoKVxuICAgICAgY29uc3QgZGlyID0gdGhpcy5nZXRTY2hlbWFEaXIoYHNjaGVtYS0ke3ZlcnNpb259YClcbiAgICAgIGxldCByZWZlcmVuY2VzID0gW11cbiAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldEZpbGVzKFtcbiAgICAgICAgYCR7ZGlyfS8ke3RoaXMub3B0aW9ucy5zY2hlbWF9LyouanNvbmAsXG4gICAgICBdKSlcbiAgICAgICAgcmVmZXJlbmNlcy5wdXNoKHJlZmVyZW5jZSlcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhyZWZlcmVuY2VzKSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGByZWZlcmVuY2U6ICR7ZmlsZX1gKVxuICAgICAgICBhanYuYWRkU2NoZW1hKGxvYWQoZmlsZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLm9wdGlvbnMuc2NoZW1hXG4gICAgICBjb25zdCBTY2hlbWEgPSBzY2hlbWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzY2hlbWEuc2xpY2UoMSlcbiAgICAgIGNvbnN0IHMgPSBgJHtkaXJ9LyR7c2NoZW1hfS8ke1NjaGVtYX0uanNvbmBcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYHNjaGVtYSAke3N9YClcbiAgICAgIHRoaXMudmVyc2lvbjJzY2hlbWFbdmVyc2lvbl0gPSBhanYuY29tcGlsZShsb2FkKHMpKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uMnNjaGVtYVt2ZXJzaW9uXVxuICB9XG5cbiAgZ2V0VmVyc2lvbihjb250ZW50OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjb250ZW50LnNjaGVtYVZlcnNpb24gIT0gdW5kZWZpbmVkKSByZXR1cm4gY29udGVudC5zY2hlbWFWZXJzaW9uXG4gICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucy5zY2hlbWF9LTEuMGBcbiAgfVxuXG4gIGdldFNjaGVtYVVSTCh2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHJldHVybiBcInNyYy9zY2hlbWFzXCJcbiAgICBlbHNlIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRoaXMub3B0aW9ucy5yZXBvc2l0b3J5KSkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9L3NyYy9zY2hlbWFzIGF0IHRhZyBzY2hlbWEtJHt2ZXJzaW9ufWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLm9wdGlvbnMucmVwb3NpdG9yeS5yZXBsYWNlKC9cXC5naXQkLywgXCJcIilcbiAgICAgICAgcmV0dXJuIGAke3JlcG9zaXRvcnl9L3RyZWUvc2NoZW1hLSR7dmVyc2lvbn0vc3JjL3NjaGVtYXNgXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoY29udGVudDogYW55LCBmaWxlbmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YWcgPSB0aGlzLmdldFZlcnNpb24oY29udGVudClcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLmdldFZhbGlkYXRvcih0YWcpXG4gICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0b3IoY29udGVudClcbiAgICBjb25zdCBzY2hlbWFVUkwgPSB0aGlzLmdldFNjaGVtYVVSTCh0YWcpXG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIGludmFsaWRgKVxuICAgICAgY29uc29sZS5lcnJvcih2YWxpZGF0b3IuZXJyb3JzKVxuICAgICAgcmV0dXJuIDFcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIHZhbGlkYClcbiAgICAgIHJldHVybiAwXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHJvY2VzcygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCBzdGF0dXMgPSAwXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGdldEZpbGVzKFt0aGlzLm9wdGlvbnMuZGF0YV0pKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gbG9hZChmaWxlKVxuICAgICAgc3RhdHVzIHw9IHRoaXMudmFsaWRhdGUoY29udGVudCwgZmlsZSlcbiAgICB9XG4gICAgcmV0dXJuIHN0YXR1c1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRpcmVjdG9yeVNjaGVtYSA9IFtdXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGRpcmVjdG9yeVNjaGVtYSA9IFtbb3B0aW9ucy5kYXRhLCBvcHRpb25zLnNjaGVtYV1dXG4gIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gZGF0YXNldERpcmVjdG9yeVNjaGVtYShvcHRpb25zLmRhdGFzZXQpXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcImVpdGhlciAtLXNjaGVtYSBvciAtLWRhdGFzZXQgaXMgcmVxdWlyZWRcIilcbiAgICByZXR1cm4gMVxuICB9XG4gIGZvciAoY29uc3QgZCBvZiBkaXJlY3RvcnlTY2hlbWEpIHtcbiAgICBvcHRpb25zLnNjaGVtYSA9IGRbMV1cbiAgICBvcHRpb25zLmRhdGEgPSBkWzBdXG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSlcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgd29ya2luZyBvbiBmaWxlcyAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gLFxuICAgICAgKVxuICAgIGNvbnN0IHZhbGlkYXRlID0gbmV3IFZhbGlkYXRlKG9wdGlvbnMpXG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdmFsaWRhdGUucHJvY2VzcygpXG4gICAgaWYgKHN0YXR1cyAhPSAwKSByZXR1cm4gc3RhdHVzXG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwidmFsaWRhdGVfanNvbi50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKHN0YXR1cykgPT4ge1xuICAgICAgcHJvY2Vzcy5leGl0KHN0YXR1cylcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OzsrQ0FQQSxvSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQTtBQUNBQSxnQkFBQSxDQUFLQyxLQUFMOztBQUVBLFNBQVNDLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXdDO0VBQ3RDLElBQU1DLGtCQUFrQixHQUFHLENBQ3pCO0lBQ0VDLFdBQVcsRUFBRSxrREFEZjtJQUVFQyxhQUFhLEVBQUUsSUFGakI7SUFHRUMsSUFBSSxFQUFFLE1BSFI7SUFJRUMsSUFBSSxFQUFFQztFQUpSLENBRHlCLEVBT3pCO0lBQ0VKLFdBQVcsRUFBRSx5REFEZjtJQUVFSyxZQUFZLEVBQ1YsK0RBSEo7SUFJRUgsSUFBSSxFQUFFLFlBSlI7SUFLRUMsSUFBSSxFQUFFQztFQUxSLENBUHlCLEVBY3pCO0lBQ0VKLFdBQVcsaUVBQTBELElBQUFNLHFCQUFBLEdBQTFELE1BRGI7SUFFRUosSUFBSSxFQUFFLFNBRlI7SUFHRUMsSUFB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
|
|
351
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0ZW1wIiwidHJhY2siLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJkZWZhdWx0VmFsdWUiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJCb29sZWFuIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJkYXRhc2V0IiwidmFsaWREYXRhc2V0IiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInNjaGVtYSIsImluY2x1ZGVzIiwidXNhZ2UiLCJjb21tYW5kTGluZVVzYWdlIiwid2FybiIsIlZhbGlkYXRlIiwidmVyc2lvbjJzY2hlbWEiLCJ0bXBEaXIiLCJta2RpclN5bmMiLCJ0YWciLCJkZXYiLCJ2ZXJib3NlIiwibG9nIiwicmVwb3NpdG9yeURpciIsInBhdGgiLCJqb2luIiwidGFnRGlyIiwiZnMiLCJleGlzdHNTeW5jIiwiZ2l0IiwicnVuIiwicmVwb3NpdG9yeSIsInJlbmFtZVN5bmMiLCJ2ZXJzaW9uIiwiYWp2IiwiQWp2IiwiZGlyIiwiZ2V0U2NoZW1hRGlyIiwicmVmZXJlbmNlcyIsImdldEZpbGVzIiwicmVmZXJlbmNlIiwicHVzaCIsImZpbGUiLCJhZGRTY2hlbWEiLCJsb2FkIiwiU2NoZW1hIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInMiLCJjb21waWxlIiwic2NoZW1hVmVyc2lvbiIsInVuZGVmaW5lZCIsInJlcGxhY2UiLCJmaWxlbmFtZSIsImdldFZlcnNpb24iLCJ2YWxpZGF0b3IiLCJnZXRWYWxpZGF0b3IiLCJ2YWxpZCIsInNjaGVtYVVSTCIsImdldFNjaGVtYVVSTCIsImVycm9ycyIsInN0YXR1cyIsImRhdGEiLCJ2YWxpZGF0ZSIsIm1haW4iLCJkaXJlY3RvcnlTY2hlbWEiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZCIsInByb2Nlc3MiLCJlbmRzV2l0aCIsInRoZW4iLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvdmFsaWRhdGVfanNvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWp2IGZyb20gXCJhanZcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHRlbXAgZnJvbSBcInRlbXBcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICB2YWxpZERhdGFzZXQsXG4gIGdldERhdGFzZXRzLFxuICBnZXRTY2hlbWFzLFxuICBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vc3JjL2RhdGFzZXRzXCJcblxuLy8gQXV0b21hdGljYWxseSB0cmFjayBhbmQgY2xlYW51cCBmaWxlcyBhdCBleGl0XG50ZW1wLnRyYWNrKClcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZGF0YXNldFwiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiVVJMIG9yIHBhdGggdG8gdGhlIHRyaWNvdGV1c2VzLWFzc2VtYmxlZSBnaXQgcmVwb3NpdG9yeVwiLFxuICAgICAgZGVmYXVsdFZhbHVlOlxuICAgICAgICBcImh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS5naXRcIixcbiAgICAgIG5hbWU6IFwicmVwb3NpdG9yeVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBkYXRhc2V0IChwb3NzaWJsZSB2YWx1ZXMgbXVzdCBpbmNsdWRlIGV4YWN0bHkgb25lIG9mICR7Z2V0RGF0YXNldHMoKX0pYCxcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBzY2hlbWEgKHBvc3NpYmxlIHZhbHVlcyBhcmUgJHtnZXRTY2hlbWFzKCl9KWAsXG4gICAgICBuYW1lOiBcInNjaGVtYVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiaWdub3JlIHNjaGVtYVZlcnNpb24gZnJvbSBKU09OIGZpbGVzIGFuZCB1c2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIC0tcmVwb3NpdG9yeVwiLFxuICAgICAgbmFtZTogXCJkZXZcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJWYWxpZGF0ZSBKU09OIGZpbGVzXCIsXG4gICAgICBjb250ZW50OiBcIlZhbGlkYXRlIEpTT04gZmlsZXNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGlmICghdmFsaWREYXRhc2V0KG9wdGlvbnMuZGF0YXNldCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tZGF0YXNldCAke29wdGlvbnMuZGF0YXNldH1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGlmICghZ2V0U2NoZW1hcygpLmluY2x1ZGVzKG9wdGlvbnMuc2NoZW1hKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgLS1zY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmNsYXNzIFZhbGlkYXRlIHtcbiAgb3B0aW9uczogYW55XG4gIHZlcnNpb24yc2NoZW1hOiBhbnlcbiAgdG1wRGlyOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy52ZXJzaW9uMnNjaGVtYSA9IHt9XG4gICAgdGhpcy50bXBEaXIgPSB0ZW1wLm1rZGlyU3luYyhcInZhbGlkYXRpb25cIilcbiAgfVxuXG4gIGdldFNjaGVtYURpcih0YWc6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coXCItLWRldjogdXNlIHNyYy9zY2hlbWFzXCIpXG4gICAgICByZXR1cm4gXCJzcmMvc2NoZW1hc1wiXG4gICAgfVxuICAgIGNvbnN0IHJlcG9zaXRvcnlEaXIgPSBwYXRoLmpvaW4odGhpcy50bXBEaXIsIFwidHJpY290ZXVzZXMtYXNzZW1ibGVlXCIpXG4gICAgY29uc3QgdGFnRGlyID0gcGF0aC5qb2luKHRoaXMudG1wRGlyLCB0YWcpXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhZ0RpcikpIHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhyZXBvc2l0b3J5RGlyKSkge1xuICAgICAgICBnaXQucnVuKFxuICAgICAgICAgIHRoaXMudG1wRGlyLFxuICAgICAgICAgIGBjbG9uZSAtLXF1aWV0ICR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9ICR7cmVwb3NpdG9yeURpcn1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBnaXQucnVuKFxuICAgICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgICBgY2hlY2tvdXQgdGFncy8ke3RhZ30gLS0gc3JjL3NjaGVtYXMgPiAvZGV2L251bGwgMj4mMWAsXG4gICAgICApXG4gICAgICBmcy5yZW5hbWVTeW5jKHBhdGguam9pbihyZXBvc2l0b3J5RGlyLCBcInNyYy9zY2hlbWFzXCIpLCB0YWdEaXIpXG4gICAgfVxuICAgIHJldHVybiB0YWdEaXJcbiAgfVxuXG4gIGdldFZhbGlkYXRvcih2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghKHZlcnNpb24gaW4gdGhpcy52ZXJzaW9uMnNjaGVtYSkpIHtcbiAgICAgIGNvbnN0IGFqdiA9IG5ldyBBanYoKVxuICAgICAgY29uc3QgZGlyID0gdGhpcy5nZXRTY2hlbWFEaXIoYHNjaGVtYS0ke3ZlcnNpb259YClcbiAgICAgIGxldCByZWZlcmVuY2VzID0gW11cbiAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldEZpbGVzKFtcbiAgICAgICAgYCR7ZGlyfS8ke3RoaXMub3B0aW9ucy5zY2hlbWF9LyouanNvbmAsXG4gICAgICBdKSlcbiAgICAgICAgcmVmZXJlbmNlcy5wdXNoKHJlZmVyZW5jZSlcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhyZWZlcmVuY2VzKSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGByZWZlcmVuY2U6ICR7ZmlsZX1gKVxuICAgICAgICBhanYuYWRkU2NoZW1hKGxvYWQoZmlsZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLm9wdGlvbnMuc2NoZW1hXG4gICAgICBjb25zdCBTY2hlbWEgPSBzY2hlbWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzY2hlbWEuc2xpY2UoMSlcbiAgICAgIGNvbnN0IHMgPSBgJHtkaXJ9LyR7c2NoZW1hfS8ke1NjaGVtYX0uanNvbmBcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYHNjaGVtYSAke3N9YClcbiAgICAgIHRoaXMudmVyc2lvbjJzY2hlbWFbdmVyc2lvbl0gPSBhanYuY29tcGlsZShsb2FkKHMpKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uMnNjaGVtYVt2ZXJzaW9uXVxuICB9XG5cbiAgZ2V0VmVyc2lvbihjb250ZW50OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjb250ZW50LnNjaGVtYVZlcnNpb24gIT0gdW5kZWZpbmVkKSByZXR1cm4gY29udGVudC5zY2hlbWFWZXJzaW9uXG4gICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucy5zY2hlbWF9LTEuMGBcbiAgfVxuXG4gIGdldFNjaGVtYVVSTCh2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHJldHVybiBcInNyYy9zY2hlbWFzXCJcbiAgICBlbHNlIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRoaXMub3B0aW9ucy5yZXBvc2l0b3J5KSkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9L3NyYy9zY2hlbWFzIGF0IHRhZyBzY2hlbWEtJHt2ZXJzaW9ufWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLm9wdGlvbnMucmVwb3NpdG9yeS5yZXBsYWNlKC9cXC5naXQkLywgXCJcIilcbiAgICAgICAgcmV0dXJuIGAke3JlcG9zaXRvcnl9L3RyZWUvc2NoZW1hLSR7dmVyc2lvbn0vc3JjL3NjaGVtYXNgXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoY29udGVudDogYW55LCBmaWxlbmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YWcgPSB0aGlzLmdldFZlcnNpb24oY29udGVudClcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLmdldFZhbGlkYXRvcih0YWcpXG4gICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0b3IoY29udGVudClcbiAgICBjb25zdCBzY2hlbWFVUkwgPSB0aGlzLmdldFNjaGVtYVVSTCh0YWcpXG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIGludmFsaWRgKVxuICAgICAgY29uc29sZS5lcnJvcih2YWxpZGF0b3IuZXJyb3JzKVxuICAgICAgcmV0dXJuIDFcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIHZhbGlkYClcbiAgICAgIHJldHVybiAwXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHJvY2VzcygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCBzdGF0dXMgPSAwXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGdldEZpbGVzKFt0aGlzLm9wdGlvbnMuZGF0YV0pKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gbG9hZChmaWxlKVxuICAgICAgc3RhdHVzIHw9IHRoaXMudmFsaWRhdGUoY29udGVudCwgZmlsZSlcbiAgICB9XG4gICAgcmV0dXJuIHN0YXR1c1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRpcmVjdG9yeVNjaGVtYSA9IFtdXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGRpcmVjdG9yeVNjaGVtYSA9IFtbb3B0aW9ucy5kYXRhLCBvcHRpb25zLnNjaGVtYV1dXG4gIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gZGF0YXNldERpcmVjdG9yeVNjaGVtYShvcHRpb25zLmRhdGFzZXQpXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcImVpdGhlciAtLXNjaGVtYSBvciAtLWRhdGFzZXQgaXMgcmVxdWlyZWRcIilcbiAgICByZXR1cm4gMVxuICB9XG4gIGZvciAoY29uc3QgZCBvZiBkaXJlY3RvcnlTY2hlbWEpIHtcbiAgICBvcHRpb25zLnNjaGVtYSA9IGRbMV1cbiAgICBvcHRpb25zLmRhdGEgPSBkWzBdXG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSlcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgd29ya2luZyBvbiBmaWxlcyAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gLFxuICAgICAgKVxuICAgIGNvbnN0IHZhbGlkYXRlID0gbmV3IFZhbGlkYXRlKG9wdGlvbnMpXG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdmFsaWRhdGUucHJvY2VzcygpXG4gICAgaWYgKHN0YXR1cyAhPSAwKSByZXR1cm4gc3RhdHVzXG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwidmFsaWRhdGVfanNvbi50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKHN0YXR1cykgPT4ge1xuICAgICAgcHJvY2Vzcy5leGl0KHN0YXR1cylcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUsyQjtBQUFBO0FBQUE7QUFBQSwrQ0FaM0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQTtBQUNBQSxnQkFBSSxDQUFDQyxLQUFLLEVBQUU7QUFFWixTQUFTQyxTQUFTLENBQUNDLElBQWMsRUFBTztFQUN0QyxJQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtJQUNFQyxXQUFXLEVBQUUsa0RBQWtEO0lBQy9EQyxhQUFhLEVBQUUsSUFBSTtJQUNuQkMsSUFBSSxFQUFFLE1BQU07SUFDWkMsSUFBSSxFQUFFQztFQUNSLENBQUMsRUFDRDtJQUNFSixXQUFXLEVBQUUseURBQXlEO0lBQ3RFSyxZQUFZLEVBQ1YsK0RBQStEO0lBQ2pFSCxJQUFJLEVBQUUsWUFBWTtJQUNsQkMsSUFBSSxFQUFFQztFQUNSLENBQUMsRUFDRDtJQUNFSixXQUFXLGlFQUEwRCxJQUFBTSxxQkFBVyxHQUFFLE1BQUc7SUFDckZKLElBQUksRUFBRSxTQUFTO0lBQ2ZDLElB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
|