j1-template 2022.4.0 → 2022.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_article_navigator.html +1 -1
  3. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +1 -1
  4. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +1 -1
  5. data/assets/themes/j1/adapter/js/nbinteract.js +21 -10
  6. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  7. data/assets/themes/j1/modules/bokeh/README.md +380 -0
  8. data/assets/themes/j1/modules/bokeh/js/v2.4.3/bokeh.min.js +596 -0
  9. data/assets/themes/j1/modules/nbInteract/css/theme/uno/nbinteract-core.css +7 -0
  10. data/assets/themes/j1/modules/nbInteract/css/theme/uno/nbinteract-core.min.css +1 -1
  11. data/assets/themes/j1/modules/vega/js/vega/LICENSE +27 -0
  12. data/assets/themes/j1/modules/vega/js/vega/README.md +42 -0
  13. data/assets/themes/j1/modules/vega/js/vega/vega-core.js +34550 -0
  14. data/assets/themes/j1/modules/vega/js/vega/vega-core.min.js +2 -0
  15. data/assets/themes/j1/modules/vega/js/vega/vega-core.min.js.map +1 -0
  16. data/assets/themes/j1/modules/vega/js/vega/vega.js +49095 -0
  17. data/assets/themes/j1/modules/vega/js/vega/vega.min.js +2 -0
  18. data/assets/themes/j1/modules/vega/js/vega/vega.min.js.map +1 -0
  19. data/assets/themes/j1/modules/vega/js/vega-embed/LICENSE +27 -0
  20. data/assets/themes/j1/modules/vega/js/vega-embed/README.md +230 -0
  21. data/assets/themes/j1/modules/vega/js/vega-embed/vega-embed.js +6607 -0
  22. data/assets/themes/j1/modules/vega/js/vega-embed/vega-embed.js.map +1 -0
  23. data/assets/themes/j1/modules/vega/js/vega-embed/vega-embed.min.js +21 -0
  24. data/assets/themes/j1/modules/vega/js/vega-embed/vega-embed.min.js.map +1 -0
  25. data/assets/themes/j1/modules/vega/js/vega-lite/LICENSE +27 -0
  26. data/assets/themes/j1/modules/vega/js/vega-lite/README.md +21 -0
  27. data/assets/themes/j1/modules/vega/js/vega-lite/vega-lite-schema.json +30999 -0
  28. data/assets/themes/j1/modules/vega/js/vega-lite/vega-lite.js +24585 -0
  29. data/assets/themes/j1/modules/vega/js/vega-lite/vega-lite.js.map +1 -0
  30. data/assets/themes/j1/modules/vega/js/vega-lite/vega-lite.min.js +2 -0
  31. data/assets/themes/j1/modules/vega/js/vega-lite/vega-lite.min.js.map +1 -0
  32. data/lib/j1/version.rb +1 -1
  33. data/lib/starter_web/Gemfile +1 -1
  34. data/lib/starter_web/_config.yml +1 -1
  35. data/lib/starter_web/_data/modules/defaults/nbinteract.yml +5 -1
  36. data/lib/starter_web/_data/modules/navigator_menu.yml +60 -56
  37. data/lib/starter_web/_data/modules/nbinteract.yml +83 -87
  38. data/lib/starter_web/_data/resources.yml +101 -0
  39. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  40. data/lib/starter_web/assets/images/modules/attics/shubham-dhage-2-1920x1280.jpg +0 -0
  41. data/lib/starter_web/assets/images/modules/attics/wrongtog-1920x1280.jpg +0 -0
  42. data/lib/starter_web/assets/images/modules/attics/yellow-cactus-1920x1280.jpg +0 -0
  43. data/lib/starter_web/assets/images/modules/icons/bokeh/bokeh-32x32.ico +0 -0
  44. data/lib/starter_web/assets/images/modules/icons/bokeh/bokeh.ico +0 -0
  45. data/lib/starter_web/assets/images/modules/icons/bokeh/logo-160x160.png +0 -0
  46. data/lib/starter_web/package.json +1 -1
  47. data/lib/starter_web/pages/public/jupyter/examples/{j1-circular-times-table.adoc → distributed/j1-circular-times-table.adoc} +7 -2
  48. data/lib/starter_web/pages/public/jupyter/examples/{j1-interactive-widgets.adoc → distributed/j1-common-used-widgets.adoc} +14 -6
  49. data/lib/starter_web/pages/public/jupyter/examples/{j1-odes-in-python.adoc → distributed/j1-odes-in-python.adoc} +7 -2
  50. data/lib/starter_web/pages/public/jupyter/examples/{j1_climate-change-forecast.adoc → localized/j1_climate-change-forecast.adoc} +10 -5
  51. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_altair_interactive.html +2216 -0
  52. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_altair_non_interactive.html +1170 -0
  53. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_bokeh_01_basic_plotting.html +1479 -0
  54. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_bokeh_02_styling_and_theming.html +1524 -0
  55. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_bokeh_03_data_sources_and_transformations.html +983 -0
  56. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_bokeh_04_adding_annotations.html +1280 -0
  57. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_bokeh_05_presentation_layouts.html +660 -0
  58. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_bokeh_06_linking_and_interactions.html +1563 -0
  59. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_bokeh_07_bar_and_categorical_data_plots.html +1888 -0
  60. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_bokeh_08_graph_and_network_plots.html +689 -0
  61. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_bokeh_09_geographic_plots.html +767 -0
  62. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_circular_times_table.html +2 -1
  63. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_interactive_widgets.html +21 -0
  64. data/lib/starter_web/pages/public/jupyter/where_to_go.adoc +239 -0
  65. data/lib/starter_web/pages/public/learn/where_to_go.adoc +23 -7
  66. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  67. data/lib/starter_web/utilsrv/package.json +1 -1
  68. metadata +47 -42
  69. data/lib/starter_web/pages/public/jupyter/docs/_includes/attributes.asciidoc +0 -58
  70. data/lib/starter_web/pages/public/jupyter/docs/_includes/documents/j1_docs_example_static.asciidoc +0 -232
  71. data/lib/starter_web/pages/public/jupyter/docs/j1-nbinteract-doc.adoc +0 -563
  72. data/lib/starter_web/pages/public/jupyter/docs/nbi-widget-manual.adoc +0 -465
  73. data/lib/starter_web/pages/public/jupyter/docs/nbinteract-doc.adoc +0 -473
  74. data/lib/starter_web/pages/public/jupyter/examples/j1-testing-plotly.adoc +0 -94
  75. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-checkpoint.ipynb +0 -12387
  76. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_climate_change_forecast-checkpoint.ipynb +0 -1058
  77. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_docs_example_dynamic-checkpoint.ipynb +0 -14478
  78. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-checkpoint.ipynb +0 -738
  79. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_ode_selected-checkpoint.ipynb +0 -14478
  80. data/lib/starter_web/pages/public/jupyter/notebooks/j1/.ipynb_checkpoints/j1_odes_in_python-checkpoint.ipynb +0 -15227
  81. data/lib/starter_web/pages/public/jupyter/notebooks/j1/factor_by_factor.mp4 +0 -0
  82. data/lib/starter_web/pages/public/jupyter/notebooks/j1/line_by_line.mp4 +0 -0
  83. data/lib/starter_web/pages/public/jupyter/notebooks/j1/point_by_point.mp4 +0 -0
  84. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_central_limit_theorem-checkpoint.ipynb +0 -247
  85. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_variability_of_the_sample_mean-checkpoint.ipynb +0 -323
  86. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_graphing-checkpoint.ipynb +0 -387
  87. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_interactive_questions-checkpoint.ipynb +0 -185
  88. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_layout-checkpoint.ipynb +0 -384
  89. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_interact-checkpoint.ipynb +0 -254
  90. data/lib/starter_web/pages/public/jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_monty_hall-checkpoint.ipynb +0 -732
  91. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_examples_central_limit_theorem.html +0 -290
  92. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_examples_correlation.html +0 -818
  93. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_examples_empirical_distributions.html +0 -351
  94. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_examples_linear_regression.html +0 -106
  95. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_examples_probability_distribution_plots.html +0 -228
  96. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_examples_sampling_from_a_population.html +0 -518
  97. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_examples_variability_of_the_sample_mean.html +0 -372
  98. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_recipes_graphing.html +0 -473
  99. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_recipes_interactive_questions.html +0 -242
  100. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_recipes_layout.html +0 -496
  101. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_tutorial_interact.html +0 -329
  102. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_tutorial_monty_hall.html +0 -866
  103. data/lib/starter_web/pages/public/jupyter/services/binderhub.adoc +0 -564
  104. data/lib/starter_web/pages/public/jupyter/services/jupyterhub.adoc +0 -244
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vega-embed.min.js","sources":["../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/fast-json-patch/module/helpers.mjs","../node_modules/fast-json-patch/module/core.mjs","../node_modules/fast-json-patch/module/duplex.mjs","../node_modules/fast-json-patch/index.mjs","../node_modules/json-stringify-pretty-compact/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/yallist/yallist.js","../node_modules/lru-cache/index.js","../node_modules/semver/internal/parse-options.js","../node_modules/semver/internal/constants.js","../node_modules/semver/internal/debug.js","../node_modules/semver/internal/re.js","../node_modules/semver/internal/identifiers.js","../node_modules/semver/classes/semver.js","../node_modules/semver/functions/compare.js","../node_modules/semver/functions/eq.js","../node_modules/semver/functions/neq.js","../node_modules/semver/functions/gt.js","../node_modules/semver/functions/gte.js","../node_modules/semver/functions/lt.js","../node_modules/semver/functions/lte.js","../node_modules/semver/functions/cmp.js","../node_modules/semver/classes/comparator.js","../node_modules/semver/classes/range.js","../node_modules/semver/functions/satisfies.js","../node_modules/vega-interpreter/build/vega-interpreter.module.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/vega-schema-url-parser/dist/parser.module.js","../node_modules/vega-themes/build/vega-themes.module.js","../node_modules/vega-util/build/vega-util.module.js","../node_modules/vega-tooltip/build/vega-tooltip.module.js","../src/post.ts","../src/util.ts","../src/embed.ts","../src/container.ts","../src/index.ts"],"sourcesContent":["export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\"use strict\";\n\nvar Op = Object.prototype;\nvar hasOwn = Op.hasOwnProperty;\nvar undefined; // More compressible than void 0.\nvar $Symbol = typeof Symbol === \"function\" ? Symbol : {};\nvar iteratorSymbol = $Symbol.iterator || \"@@iterator\";\nvar asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\nvar toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\nfunction wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n}\n\n// Try/catch helper to minimize deoptimizations. Returns a completion\n// record like context.tryEntries[i].completion. This interface could\n// have been (and was previously) designed to take a closure to be\n// invoked without arguments, but in all the cases we care about we\n// already have an existing method we want to call, so there's no need\n// to create a new function object. We can even get away with assuming\n// the method takes exactly one argument, since that happens to be true\n// in every case, so we don't have to touch the arguments object. The\n// only additional allocation required is the completion record, which\n// has a stable shape and so hopefully should be cheap to allocate.\nfunction tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n}\n\nvar GenStateSuspendedStart = \"suspendedStart\";\nvar GenStateSuspendedYield = \"suspendedYield\";\nvar GenStateExecuting = \"executing\";\nvar GenStateCompleted = \"completed\";\n\n// Returning this object from the innerFn has the same effect as\n// breaking out of the dispatch switch statement.\nvar ContinueSentinel = {};\n\n// Dummy constructor functions that we use as the .constructor and\n// .constructor.prototype properties for functions that return Generator\n// objects. For full spec compliance, you may wish to configure your\n// minifier not to mangle the names of these two functions.\nfunction Generator() {}\nfunction GeneratorFunction() {}\nfunction GeneratorFunctionPrototype() {}\n\n// This is a polyfill for %IteratorPrototype% for environments that\n// don't natively support it.\nvar IteratorPrototype = {};\nIteratorPrototype[iteratorSymbol] = function () {\n return this;\n};\n\nvar getProto = Object.getPrototypeOf;\nvar NativeIteratorPrototype = getProto && getProto(getProto(values([])));\nif (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n}\n\nvar Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\nGeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\nGeneratorFunctionPrototype.constructor = GeneratorFunction;\nGeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n// Helper for defining the .next, .throw, and .return methods of the\n// Iterator interface in terms of a single ._invoke method.\nfunction defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n}\n\nfunction isGeneratorFunction (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n};\n\nfunction mark (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n};\n\n// Within the body of any async function, `await x` is transformed to\n// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n// `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n// meant to be awaited.\nfunction awrap (arg) {\n return { __await: arg };\n};\n\nfunction AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n}\n\ndefineIteratorMethods(AsyncIterator.prototype);\nAsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n};\n\n// Note that simple async functions are implemented on top of\n// AsyncIterator objects; they just return a Promise for the value of\n// the final result produced by the iterator.\n function async (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n};\n\nfunction makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n}\n\n// Call delegate.iterator[context.method](context.arg) and handle the\n// result, either by returning a { value, done } result from the\n// delegate iterator, or by modifying context.method and context.arg,\n// setting context.delegate to null, and returning the ContinueSentinel.\nfunction maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n}\n\n// Define Generator.prototype.{next,throw,return} in terms of the\n// unified ._invoke helper method.\ndefineIteratorMethods(Gp);\n\nGp[toStringTagSymbol] = \"Generator\";\n\n// A Generator should always return itself as the iterator object when the\n// @@iterator function is called on it. Some browsers' implementations of the\n// iterator prototype chain incorrectly implement this, causing the Generator\n// object to not be returned from this call. This ensures that doesn't happen.\n// See https://github.com/facebook/regenerator/issues/274 for more details.\nGp[iteratorSymbol] = function() {\n return this;\n};\n\nGp.toString = function() {\n return \"[object Generator]\";\n};\n\nfunction pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n}\n\nfunction resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n}\n\nfunction Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n}\n\nfunction keys (object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n};\n\nfunction values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n}\n\nfunction doneResult() {\n return { value: undefined, done: true };\n}\n\nContext.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n};\n\n// Export a default namespace that plays well with Rollup\nexport default {\n wrap,\n isGeneratorFunction,\n AsyncIterator,\n mark,\n awrap,\n async,\n keys,\n values\n};\n","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017 Joachim Wester\n * MIT license\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys = new Array(obj.length);\n for (var k = 0; k < keys.length; k++) {\n keys[k] = \"\" + k;\n }\n return keys;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null; //this is how JSON.stringify behaves for array items\n default:\n return obj; //no need to clone primitives\n }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n var found;\n for (var key in root) {\n if (hasOwnProperty(root, key)) {\n if (root[key] === obj) {\n return escapePathComponent(key) + '/';\n }\n else if (typeof root[key] === 'object') {\n found = _getPathRecursive(root[key], obj);\n if (found != '') {\n return escapePathComponent(key) + '/' + found;\n }\n }\n }\n }\n return '';\n}\nexport function getPath(root, obj) {\n if (root === obj) {\n return '/';\n }\n var path = _getPathRecursive(root, obj);\n if (path === '') {\n throw new Error(\"Object not found in root\");\n }\n return '/' + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i = 0, len = obj.length; i < len; i++) {\n if (hasUndefined(obj[i])) {\n return true;\n }\n }\n }\n else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n return _this;\n }\n return PatchError;\n}(Error));\nexport { PatchError };\n","import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function (obj, key, document) {\n obj[key] = this.value;\n return { newDocument: document };\n },\n remove: function (obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return { newDocument: document, removed: removed };\n },\n replace: function (obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: function (obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = _deepClone(removed);\n }\n var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n return { newDocument: document, removed: removed };\n },\n copy: function (obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, { op: \"add\", path: this.path, value: _deepClone(valueToCopy) });\n return { newDocument: document };\n },\n test: function (obj, key, document) {\n return { newDocument: document, test: _areEquals(obj[key], this.value) };\n },\n _get: function (obj, key, document) {\n this.value = obj[key];\n return { newDocument: document };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function (arr, i, document) {\n if (isInteger(i)) {\n arr.splice(i, 0, this.value);\n }\n else { // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return { newDocument: document, index: i };\n },\n remove: function (arr, i, document) {\n var removedList = arr.splice(i, 1);\n return { newDocument: document, removed: removedList[0] };\n },\n replace: function (arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = { op: \"_get\", path: pointer };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) { validateOperation = false; }\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (index === void 0) { index = 0; }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n }\n else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = { newDocument: document };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n }\n else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n }\n else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') { // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n }\n else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n }\n else if (operation.op === 'remove') { // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n }\n else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n }\n else { /* bad operation */\n if (validateOperation) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */\n else {\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n }\n else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = unescapePathComponent(key);\n }\n if (banPrototypeModifications && key == '__proto__') {\n throw new TypeError('JSON-Patch: modifying `__proto__` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n }\n else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n }\n else {\n if (validateOperation && !isInteger(key)) {\n throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (isInteger(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n results.newDocument = document;\n return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) { // failed test\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n }\n else if (!objOps[operation.op]) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else if (typeof operation.path !== 'string') {\n throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n }\n else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n }\n else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n }\n else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n }\n catch (e) {\n if (e instanceof JsonPatchError) {\n return e;\n }\n else {\n throw e;\n }\n }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!_areEquals(a[i], b[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!b.hasOwnProperty(keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\n;\n","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}());\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n }\n else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = _deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function () {\n generate(observer);\n };\n var fastCheck = function () {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') { //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n if (invertible === void 0) { invertible = false; }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = _objectKeys(obj);\n var oldKeys = _objectKeys(mirror);\n var changed = false;\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n }\n else {\n if (oldVal !== newVal) {\n changed = true;\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"replace\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(newVal) });\n }\n }\n }\n else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"remove\", path: path + \"/\" + escapePathComponent(key) });\n deleted = true; // property has been deleted\n }\n else {\n if (invertible) {\n patches.push({ op: \"test\", path: path, value: mirror });\n }\n patches.push({ op: \"replace\", path: path, value: obj });\n changed = true;\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({ op: \"add\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(obj[key]) });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n if (invertible === void 0) { invertible = false; }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}\n","export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\nexport default Object.assign({}, core, duplex, {\n JsonPatchError,\n deepClone,\n escapePathComponent,\n unescapePathComponent\n});","\"use strict\";\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nmodule.exports = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n\n options = options || {};\n indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n replacer = options.replacer;\n\n return (function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n prettified = string.replace(\n stringOrChar,\n function (match, stringLiteral) {\n return stringLiteral || match + \" \";\n }\n );\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\n \"\\n\" + currentIndent\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n};\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n} catch (er) {}\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n !options ? {}\n : typeof options !== 'object' ? { loose: true }\n : opts.filter(k => options[k]).reduce((options, k) => {\n options[k] = true\n return options\n }, {})\nmodule.exports = parseOptions\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\.0\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\.0\\.0-0\\\\s*$')\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n const sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n const sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n const sameSemVer = this.semver.version === comp.semver.version\n const differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n const oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<')\n const oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>')\n\n return (\n sameDirectionIncreasing ||\n sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan ||\n oppositeDirectionsGreaterThan\n )\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst {re, t} = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split(/\\s*\\|\\|\\s*/)\n // map the range to a 2d array of comparators\n .map(range => this.parseRange(range.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0)\n this.set = [first]\n else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = Object.keys(this.options).join(',')\n const memoKey = `parseRange:${memoOpts}:${range}`\n const cached = cache.get(memoKey)\n if (cached)\n return cached\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n // in loose mode, throw out any that are not valid comparators\n .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)\n .map(comp => new Comparator(comp, this.options))\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const l = rangeList.length\n const rangeMap = new Map()\n for (const comp of rangeList) {\n if (isNullSet(comp))\n return [comp]\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has(''))\n rangeMap.delete('')\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceTilde(comp, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceCaret(comp, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((comp) => {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<')\n pr = '-0'\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","function adjustSpatial (item, encode, swap) {\n let t;\n\n if (encode.x2) {\n if (encode.x) {\n if (swap && item.x > item.x2) {\n t = item.x;\n item.x = item.x2;\n item.x2 = t;\n }\n\n item.width = item.x2 - item.x;\n } else {\n item.x = item.x2 - (item.width || 0);\n }\n }\n\n if (encode.xc) {\n item.x = item.xc - (item.width || 0) / 2;\n }\n\n if (encode.y2) {\n if (encode.y) {\n if (swap && item.y > item.y2) {\n t = item.y;\n item.y = item.y2;\n item.y2 = t;\n }\n\n item.height = item.y2 - item.y;\n } else {\n item.y = item.y2 - (item.height || 0);\n }\n }\n\n if (encode.yc) {\n item.y = item.yc - (item.height || 0) / 2;\n }\n}\n\nvar Constants = {\n NaN: NaN,\n E: Math.E,\n LN2: Math.LN2,\n LN10: Math.LN10,\n LOG2E: Math.LOG2E,\n LOG10E: Math.LOG10E,\n PI: Math.PI,\n SQRT1_2: Math.SQRT1_2,\n SQRT2: Math.SQRT2,\n MIN_VALUE: Number.MIN_VALUE,\n MAX_VALUE: Number.MAX_VALUE\n};\n\nvar Ops = {\n '*': (a, b) => a * b,\n '+': (a, b) => a + b,\n '-': (a, b) => a - b,\n '/': (a, b) => a / b,\n '%': (a, b) => a % b,\n '>': (a, b) => a > b,\n '<': (a, b) => a < b,\n '<=': (a, b) => a <= b,\n '>=': (a, b) => a >= b,\n '==': (a, b) => a == b,\n '!=': (a, b) => a != b,\n '===': (a, b) => a === b,\n '!==': (a, b) => a !== b,\n '&': (a, b) => a & b,\n '|': (a, b) => a | b,\n '^': (a, b) => a ^ b,\n '<<': (a, b) => a << b,\n '>>': (a, b) => a >> b,\n '>>>': (a, b) => a >>> b\n};\n\nvar Unary = {\n '+': a => +a,\n '-': a => -a,\n '~': a => ~a,\n '!': a => !a\n};\n\nconst slice = Array.prototype.slice;\n\nconst apply = (m, args, cast) => {\n const obj = cast ? cast(args[0]) : args[0];\n return obj[m].apply(obj, slice.call(args, 1));\n};\n\nconst datetime = (y, m, d, H, M, S, ms) => new Date(y, m || 0, d != null ? d : 1, H || 0, M || 0, S || 0, ms || 0);\n\nvar Functions = {\n // math functions\n isNaN: Number.isNaN,\n isFinite: Number.isFinite,\n abs: Math.abs,\n acos: Math.acos,\n asin: Math.asin,\n atan: Math.atan,\n atan2: Math.atan2,\n ceil: Math.ceil,\n cos: Math.cos,\n exp: Math.exp,\n floor: Math.floor,\n log: Math.log,\n max: Math.max,\n min: Math.min,\n pow: Math.pow,\n random: Math.random,\n round: Math.round,\n sin: Math.sin,\n sqrt: Math.sqrt,\n tan: Math.tan,\n clamp: (a, b, c) => Math.max(b, Math.min(c, a)),\n // date functions\n now: Date.now,\n utc: Date.UTC,\n datetime: datetime,\n date: d => new Date(d).getDate(),\n day: d => new Date(d).getDay(),\n year: d => new Date(d).getFullYear(),\n month: d => new Date(d).getMonth(),\n hours: d => new Date(d).getHours(),\n minutes: d => new Date(d).getMinutes(),\n seconds: d => new Date(d).getSeconds(),\n milliseconds: d => new Date(d).getMilliseconds(),\n time: d => new Date(d).getTime(),\n timezoneoffset: d => new Date(d).getTimezoneOffset(),\n utcdate: d => new Date(d).getUTCDate(),\n utcday: d => new Date(d).getUTCDay(),\n utcyear: d => new Date(d).getUTCFullYear(),\n utcmonth: d => new Date(d).getUTCMonth(),\n utchours: d => new Date(d).getUTCHours(),\n utcminutes: d => new Date(d).getUTCMinutes(),\n utcseconds: d => new Date(d).getUTCSeconds(),\n utcmilliseconds: d => new Date(d).getUTCMilliseconds(),\n // sequence functions\n length: x => x.length,\n join: function () {\n return apply('join', arguments);\n },\n indexof: function () {\n return apply('indexOf', arguments);\n },\n lastindexof: function () {\n return apply('lastIndexOf', arguments);\n },\n slice: function () {\n return apply('slice', arguments);\n },\n reverse: x => x.slice().reverse(),\n // string functions\n parseFloat: parseFloat,\n parseInt: parseInt,\n upper: x => String(x).toUpperCase(),\n lower: x => String(x).toLowerCase(),\n substring: function () {\n return apply('substring', arguments, String);\n },\n split: function () {\n return apply('split', arguments, String);\n },\n replace: function () {\n return apply('replace', arguments, String);\n },\n trim: x => String(x).trim(),\n // regexp functions\n regexp: RegExp,\n test: (r, t) => RegExp(r).test(t)\n};\n\nconst EventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'];\nconst Visitors = {\n Literal: ($, n) => n.value,\n Identifier: ($, n) => {\n const id = n.name;\n return $.memberDepth > 0 ? id : id === 'datum' ? $.datum : id === 'event' ? $.event : id === 'item' ? $.item : Constants[id] || $.params['$' + id];\n },\n MemberExpression: ($, n) => {\n const d = !n.computed,\n o = $(n.object);\n if (d) $.memberDepth += 1;\n const p = $(n.property);\n if (d) $.memberDepth -= 1;\n return o[p];\n },\n CallExpression: ($, n) => {\n const args = n.arguments;\n let name = n.callee.name; // handle special internal functions used by encoders\n // re-route to corresponding standard function\n\n if (name.startsWith('_')) {\n name = name.slice(1);\n } // special case \"if\" due to conditional evaluation of branches\n\n\n return name === 'if' ? $(args[0]) ? $(args[1]) : $(args[2]) : ($.fn[name] || Functions[name]).apply($.fn, args.map($));\n },\n ArrayExpression: ($, n) => n.elements.map($),\n BinaryExpression: ($, n) => Ops[n.operator]($(n.left), $(n.right)),\n UnaryExpression: ($, n) => Unary[n.operator]($(n.argument)),\n ConditionalExpression: ($, n) => $(n.test) ? $(n.consequent) : $(n.alternate),\n LogicalExpression: ($, n) => n.operator === '&&' ? $(n.left) && $(n.right) : $(n.left) || $(n.right),\n ObjectExpression: ($, n) => n.properties.reduce((o, p) => {\n $.memberDepth += 1;\n const k = $(p.key);\n $.memberDepth -= 1;\n o[k] = $(p.value);\n return o;\n }, {})\n};\nfunction interpret (ast, fn, params, datum, event, item) {\n const $ = n => Visitors[n.type]($, n);\n\n $.memberDepth = 0;\n $.fn = Object.create(fn);\n $.params = params;\n $.datum = datum;\n $.event = event;\n $.item = item; // route event functions to annotated vega event context\n\n EventFunctions.forEach(f => $.fn[f] = (...args) => event.vega[f](...args));\n return $(ast);\n}\n\nvar expression = {\n /**\n * Parse an expression used to update an operator value.\n */\n operator(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return _ => interpret(ast, fn, _);\n },\n\n /**\n * Parse an expression provided as an operator parameter value.\n */\n parameter(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return (datum, _) => interpret(ast, fn, _, datum);\n },\n\n /**\n * Parse an expression applied to an event stream.\n */\n event(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return event => interpret(ast, fn, undefined, undefined, event);\n },\n\n /**\n * Parse an expression used to handle an event-driven operator update.\n */\n handler(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return (_, event) => {\n const datum = event.item && event.item.datum;\n return interpret(ast, fn, _, datum, event);\n };\n },\n\n /**\n * Parse an expression that performs visual encoding.\n */\n encode(ctx, encode) {\n const {\n marktype,\n channels\n } = encode,\n fn = ctx.functions,\n swap = marktype === 'group' || marktype === 'image' || marktype === 'rect';\n return (item, _) => {\n const datum = item.datum;\n let m = 0,\n v;\n\n for (const name in channels) {\n v = interpret(channels[name].ast, fn, _, datum, undefined, item);\n\n if (item[name] !== v) {\n item[name] = v;\n m = 1;\n }\n }\n\n if (marktype !== 'rule') {\n adjustSpatial(item, channels, swap);\n }\n\n return m;\n };\n }\n\n};\n\nexport { expression as expressionInterpreter };\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function e(e){const[n,r]=/schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g.exec(e).slice(1,3);return{library:n,version:r}}export default e;\n//# sourceMappingURL=parser.module.js.map\n","var name = \"vega-themes\";\nvar version = \"2.10.0\";\nvar description = \"Themes for stylized Vega and Vega-Lite visualizations.\";\nvar keywords = [\n\t\"vega\",\n\t\"vega-lite\",\n\t\"themes\",\n\t\"style\"\n];\nvar license = \"BSD-3-Clause\";\nvar author = {\n\tname: \"UW Interactive Data Lab\",\n\turl: \"https://idl.cs.washington.edu\"\n};\nvar contributors = [\n\t{\n\t\tname: \"Emily Gu\",\n\t\turl: \"https://github.com/emilygu\"\n\t},\n\t{\n\t\tname: \"Arvind Satyanarayan\",\n\t\turl: \"http://arvindsatya.com\"\n\t},\n\t{\n\t\tname: \"Jeffrey Heer\",\n\t\turl: \"https://idl.cs.washington.edu\"\n\t},\n\t{\n\t\tname: \"Dominik Moritz\",\n\t\turl: \"https://www.domoritz.de\"\n\t}\n];\nvar main = \"build/vega-themes.js\";\nvar module = \"build/vega-themes.module.js\";\nvar unpkg = \"build/vega-themes.min.js\";\nvar jsdelivr = \"build/vega-themes.min.js\";\nvar types = \"build/vega-themes.module.d.ts\";\nvar repository = {\n\ttype: \"git\",\n\turl: \"https://github.com/vega/vega-themes.git\"\n};\nvar files = [\n\t\"src\",\n\t\"build\"\n];\nvar scripts = {\n\tprebuild: \"yarn clean\",\n\tbuild: \"rollup -c\",\n\tclean: \"rimraf build && rimraf examples/build\",\n\t\"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n\t\"copy:build\": \"rsync -r build/* examples/build\",\n\t\"deploy:gh\": \"yarn build && mkdir -p examples/build && rsync -r build/* examples/build && gh-pages -d examples\",\n\tprepublishOnly: \"yarn clean && yarn build\",\n\tpreversion: \"yarn lint\",\n\tserve: \"browser-sync start -s -f build examples --serveStatic examples\",\n\tstart: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n\tprepare: \"beemo create-config\",\n\teslintbase: \"beemo eslint .\",\n\tformat: \"yarn eslintbase --fix\",\n\tlint: \"yarn eslintbase\"\n};\nvar devDependencies = {\n\t\"@rollup/plugin-json\": \"^4.1.0\",\n\t\"@rollup/plugin-node-resolve\": \"^11.2.0\",\n\t\"@wessberg/rollup-plugin-ts\": \"^1.3.8\",\n\t\"browser-sync\": \"^2.26.14\",\n\tconcurrently: \"^6.0.0\",\n\t\"gh-pages\": \"^3.1.0\",\n\trollup: \"^2.39.1\",\n\t\"rollup-plugin-bundle-size\": \"^1.0.3\",\n\t\"rollup-plugin-terser\": \"^7.0.2\",\n\ttypescript: \"^4.2.2\",\n\tvega: \"^5.19.1\",\n\t\"vega-lite\": \"^5.0.0\",\n\t\"vega-lite-dev-config\": \"^0.16.1\"\n};\nvar peerDependencies = {\n\tvega: \"*\",\n\t\"vega-lite\": \"*\"\n};\nvar pkg = {\n\tname: name,\n\tversion: version,\n\tdescription: description,\n\tkeywords: keywords,\n\tlicense: license,\n\tauthor: author,\n\tcontributors: contributors,\n\tmain: main,\n\tmodule: module,\n\tunpkg: unpkg,\n\tjsdelivr: jsdelivr,\n\ttypes: types,\n\trepository: repository,\n\tfiles: files,\n\tscripts: scripts,\n\tdevDependencies: devDependencies,\n\tpeerDependencies: peerDependencies\n};\n\nconst lightColor = '#fff';\nconst medColor = '#888';\nconst darkTheme = {\n background: '#333',\n title: {\n color: lightColor,\n subtitleColor: lightColor\n },\n style: {\n 'guide-label': {\n fill: lightColor,\n },\n 'guide-title': {\n fill: lightColor,\n },\n },\n axis: {\n domainColor: lightColor,\n gridColor: medColor,\n tickColor: lightColor,\n },\n};\n\nconst markColor = '#4572a7';\nconst excelTheme = {\n background: '#fff',\n arc: { fill: markColor },\n area: { fill: markColor },\n line: { stroke: markColor, strokeWidth: 2 },\n path: { stroke: markColor },\n rect: { fill: markColor },\n shape: { stroke: markColor },\n symbol: { fill: markColor, strokeWidth: 1.5, size: 50 },\n axis: {\n bandPosition: 0.5,\n grid: true,\n gridColor: '#000000',\n gridOpacity: 1,\n gridWidth: 0.5,\n labelPadding: 10,\n tickSize: 5,\n tickWidth: 0.5,\n },\n axisBand: {\n grid: false,\n tickExtra: true,\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 50,\n symbolType: 'square',\n },\n range: {\n category: [\n '#4572a7',\n '#aa4643',\n '#8aa453',\n '#71598e',\n '#4598ae',\n '#d98445',\n '#94aace',\n '#d09393',\n '#b9cc98',\n '#a99cbc',\n ],\n },\n};\n\nconst markColor$1 = '#30a2da';\nconst axisColor = '#cbcbcb';\nconst guideLabelColor = '#999';\nconst guideTitleColor = '#333';\nconst backgroundColor = '#f0f0f0';\nconst blackTitle = '#333';\nconst fiveThirtyEightTheme = {\n arc: { fill: markColor$1 },\n area: { fill: markColor$1 },\n axis: {\n domainColor: axisColor,\n grid: true,\n gridColor: axisColor,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n titleColor: guideTitleColor,\n tickColor: axisColor,\n tickSize: 10,\n titleFontSize: 14,\n titlePadding: 10,\n labelPadding: 4,\n },\n axisBand: {\n grid: false,\n },\n background: backgroundColor,\n group: {\n fill: backgroundColor,\n },\n legend: {\n labelColor: blackTitle,\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n titleColor: blackTitle,\n titleFontSize: 14,\n titlePadding: 10,\n },\n line: {\n stroke: markColor$1,\n strokeWidth: 2,\n },\n path: { stroke: markColor$1, strokeWidth: 0.5 },\n rect: { fill: markColor$1 },\n range: {\n category: [\n '#30a2da',\n '#fc4f30',\n '#e5ae38',\n '#6d904f',\n '#8b8b8b',\n '#b96db8',\n '#ff9e27',\n '#56cc60',\n '#52d2ca',\n '#52689e',\n '#545454',\n '#9fe4f8',\n ],\n diverging: ['#cc0020', '#e77866', '#f6e7e1', '#d6e8ed', '#91bfd9', '#1d78b5'],\n heatmap: ['#d6e8ed', '#cee0e5', '#91bfd9', '#549cc6', '#1d78b5'],\n },\n point: {\n filled: true,\n shape: 'circle',\n },\n shape: { stroke: markColor$1 },\n bar: {\n binSpacing: 2,\n fill: markColor$1,\n stroke: null,\n },\n title: {\n anchor: 'start',\n fontSize: 24,\n fontWeight: 600,\n offset: 20,\n },\n};\n\nconst markColor$2 = '#000';\nconst ggplot2Theme = {\n group: {\n fill: '#e5e5e5',\n },\n arc: { fill: markColor$2 },\n area: { fill: markColor$2 },\n line: { stroke: markColor$2 },\n path: { stroke: markColor$2 },\n rect: { fill: markColor$2 },\n shape: { stroke: markColor$2 },\n symbol: { fill: markColor$2, size: 40 },\n axis: {\n domain: false,\n grid: true,\n gridColor: '#FFFFFF',\n gridOpacity: 1,\n labelColor: '#7F7F7F',\n labelPadding: 4,\n tickColor: '#7F7F7F',\n tickSize: 5.67,\n titleFontSize: 16,\n titleFontWeight: 'normal',\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 40,\n },\n range: {\n category: [\n '#000000',\n '#7F7F7F',\n '#1A1A1A',\n '#999999',\n '#333333',\n '#B0B0B0',\n '#4D4D4D',\n '#C9C9C9',\n '#666666',\n '#DCDCDC',\n ],\n },\n};\n\nconst headlineFontSize = 22;\nconst headlineFontWeight = 'normal';\nconst labelFont = 'Benton Gothic, sans-serif';\nconst labelFontSize = 11.5;\nconst labelFontWeight = 'normal';\nconst markColor$3 = '#82c6df';\n// const markHighlight = '#006d8f';\n// const markDemocrat = '#5789b8';\n// const markRepublican = '#d94f54';\nconst titleFont = 'Benton Gothic Bold, sans-serif';\nconst titleFontWeight = 'normal';\nconst titleFontSize = 13;\nconst colorSchemes = {\n 'category-6': ['#ec8431', '#829eb1', '#c89d29', '#3580b1', '#adc839', '#ab7fb4'],\n 'fire-7': ['#fbf2c7', '#f9e39c', '#f8d36e', '#f4bb6a', '#e68a4f', '#d15a40', '#ab4232'],\n 'fireandice-6': ['#e68a4f', '#f4bb6a', '#f9e39c', '#dadfe2', '#a6b7c6', '#849eae'],\n 'ice-7': ['#edefee', '#dadfe2', '#c4ccd2', '#a6b7c6', '#849eae', '#607785', '#47525d'],\n};\nconst latimesTheme = {\n background: '#ffffff',\n title: {\n anchor: 'start',\n color: '#000000',\n font: titleFont,\n fontSize: headlineFontSize,\n fontWeight: headlineFontWeight,\n },\n arc: { fill: markColor$3 },\n area: { fill: markColor$3 },\n line: { stroke: markColor$3, strokeWidth: 2 },\n path: { stroke: markColor$3 },\n rect: { fill: markColor$3 },\n shape: { stroke: markColor$3 },\n symbol: { fill: markColor$3, size: 30 },\n axis: {\n labelFont,\n labelFontSize,\n labelFontWeight,\n titleFont,\n titleFontSize,\n titleFontWeight,\n },\n axisX: {\n labelAngle: 0,\n labelPadding: 4,\n tickSize: 3,\n },\n axisY: {\n labelBaseline: 'middle',\n maxExtent: 45,\n minExtent: 45,\n tickSize: 2,\n titleAlign: 'left',\n titleAngle: 0,\n titleX: -45,\n titleY: -11,\n },\n legend: {\n labelFont,\n labelFontSize,\n symbolType: 'square',\n titleFont,\n titleFontSize,\n titleFontWeight,\n },\n range: {\n category: colorSchemes['category-6'],\n diverging: colorSchemes['fireandice-6'],\n heatmap: colorSchemes['fire-7'],\n ordinal: colorSchemes['fire-7'],\n ramp: colorSchemes['fire-7'],\n },\n};\n\nconst markColor$4 = '#ab5787';\nconst axisColor$1 = '#979797';\nconst quartzTheme = {\n background: '#f9f9f9',\n arc: { fill: markColor$4 },\n area: { fill: markColor$4 },\n line: { stroke: markColor$4 },\n path: { stroke: markColor$4 },\n rect: { fill: markColor$4 },\n shape: { stroke: markColor$4 },\n symbol: { fill: markColor$4, size: 30 },\n axis: {\n domainColor: axisColor$1,\n domainWidth: 0.5,\n gridWidth: 0.2,\n labelColor: axisColor$1,\n tickColor: axisColor$1,\n tickWidth: 0.2,\n titleColor: axisColor$1,\n },\n axisBand: {\n grid: false,\n },\n axisX: {\n grid: true,\n tickSize: 10,\n },\n axisY: {\n domain: false,\n grid: true,\n tickSize: 0,\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n },\n range: {\n category: [\n '#ab5787',\n '#51b2e5',\n '#703c5c',\n '#168dd9',\n '#d190b6',\n '#00609f',\n '#d365ba',\n '#154866',\n '#666666',\n '#c4c4c4',\n ],\n },\n};\n\nconst markColor$5 = '#3e5c69';\nconst voxTheme = {\n background: '#fff',\n arc: { fill: markColor$5 },\n area: { fill: markColor$5 },\n line: { stroke: markColor$5 },\n path: { stroke: markColor$5 },\n rect: { fill: markColor$5 },\n shape: { stroke: markColor$5 },\n symbol: { fill: markColor$5 },\n axis: {\n domainWidth: 0.5,\n grid: true,\n labelPadding: 2,\n tickSize: 5,\n tickWidth: 0.5,\n titleFontWeight: 'normal',\n },\n axisBand: {\n grid: false,\n },\n axisX: {\n gridWidth: 0.2,\n },\n axisY: {\n gridDash: [3],\n gridWidth: 0.4,\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolType: 'square',\n },\n range: {\n category: ['#3e5c69', '#6793a6', '#182429', '#0570b0', '#3690c0', '#74a9cf', '#a6bddb', '#e2ddf2'],\n },\n};\n\nconst markColor$6 = '#1696d2';\nconst axisColor$2 = '#000000';\nconst backgroundColor$1 = '#FFFFFF';\nconst font = 'Lato';\nconst labelFont$1 = 'Lato';\nconst sourceFont = 'Lato';\nconst gridColor = '#DEDDDD';\nconst titleFontSize$1 = 18;\nconst colorSchemes$1 = {\n 'main-colors': ['#1696d2', '#d2d2d2', '#000000', '#fdbf11', '#ec008b', '#55b748', '#5c5859', '#db2b27'],\n 'shades-blue': ['#CFE8F3', '#A2D4EC', '#73BFE2', '#46ABDB', '#1696D2', '#12719E', '#0A4C6A', '#062635'],\n 'shades-gray': ['#F5F5F5', '#ECECEC', '#E3E3E3', '#DCDBDB', '#D2D2D2', '#9D9D9D', '#696969', '#353535'],\n 'shades-yellow': ['#FFF2CF', '#FCE39E', '#FDD870', '#FCCB41', '#FDBF11', '#E88E2D', '#CA5800', '#843215'],\n 'shades-magenta': ['#F5CBDF', '#EB99C2', '#E46AA7', '#E54096', '#EC008B', '#AF1F6B', '#761548', '#351123'],\n 'shades-green': ['#DCEDD9', '#BCDEB4', '#98CF90', '#78C26D', '#55B748', '#408941', '#2C5C2D', '#1A2E19'],\n 'shades-black': ['#D5D5D4', '#ADABAC', '#848081', '#5C5859', '#332D2F', '#262223', '#1A1717', '#0E0C0D'],\n 'shades-red': ['#F8D5D4', '#F1AAA9', '#E9807D', '#E25552', '#DB2B27', '#A4201D', '#6E1614', '#370B0A'],\n 'one-group': ['#1696d2', '#000000'],\n 'two-groups-cat-1': ['#1696d2', '#000000'],\n 'two-groups-cat-2': ['#1696d2', '#fdbf11'],\n 'two-groups-cat-3': ['#1696d2', '#db2b27'],\n 'two-groups-seq': ['#a2d4ec', '#1696d2'],\n 'three-groups-cat': ['#1696d2', '#fdbf11', '#000000'],\n 'three-groups-seq': ['#a2d4ec', '#1696d2', '#0a4c6a'],\n 'four-groups-cat-1': ['#000000', '#d2d2d2', '#fdbf11', '#1696d2'],\n 'four-groups-cat-2': ['#1696d2', '#ec0008b', '#fdbf11', '#5c5859'],\n 'four-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a'],\n 'five-groups-cat-1': ['#1696d2', '#fdbf11', '#d2d2d2', '#ec008b', '#000000'],\n 'five-groups-cat-2': ['#1696d2', '#0a4c6a', '#d2d2d2', '#fdbf11', '#332d2f'],\n 'five-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a', '#000000'],\n 'six-groups-cat-1': ['#1696d2', '#ec008b', '#fdbf11', '#000000', '#d2d2d2', '#55b748'],\n 'six-groups-cat-2': ['#1696d2', '#d2d2d2', '#ec008b', '#fdbf11', '#332d2f', '#0a4c6a'],\n 'six-groups-seq': ['#cfe8f3', '#a2d4ec', '#73bfe2', '#46abdb', '#1696d2', '#12719e'],\n 'diverging-colors': ['#ca5800', '#fdbf11', '#fdd870', '#fff2cf', '#cfe8f3', '#73bfe2', '#1696d2', '#0a4c6a'],\n};\nconst urbanInstituteTheme = {\n background: backgroundColor$1,\n title: {\n anchor: 'start',\n fontSize: titleFontSize$1,\n font: font,\n },\n axisX: {\n domain: true,\n domainColor: axisColor$2,\n domainWidth: 1,\n grid: false,\n labelFontSize: 12,\n labelFont: labelFont$1,\n labelAngle: 0,\n tickColor: axisColor$2,\n tickSize: 5,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n },\n axisY: {\n domain: false,\n domainWidth: 1,\n grid: true,\n gridColor: gridColor,\n gridWidth: 1,\n labelFontSize: 12,\n labelFont: labelFont$1,\n labelPadding: 8,\n ticks: false,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n titleAngle: 0,\n titleY: -10,\n titleX: 18,\n },\n legend: {\n labelFontSize: 12,\n labelFont: labelFont$1,\n symbolSize: 100,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n orient: 'right',\n offset: 10,\n },\n view: {\n stroke: 'transparent',\n },\n range: {\n category: colorSchemes$1['six-groups-cat-1'],\n diverging: colorSchemes$1['diverging-colors'],\n heatmap: colorSchemes$1['diverging-colors'],\n ordinal: colorSchemes$1['six-groups-seq'],\n ramp: colorSchemes$1['shades-blue'],\n },\n area: {\n fill: markColor$6,\n },\n rect: {\n fill: markColor$6,\n },\n line: {\n color: markColor$6,\n stroke: markColor$6,\n strokeWidth: 5,\n },\n trail: {\n color: markColor$6,\n stroke: markColor$6,\n strokeWidth: 0,\n size: 1,\n },\n path: {\n stroke: markColor$6,\n strokeWidth: 0.5,\n },\n point: {\n filled: true,\n },\n text: {\n font: sourceFont,\n color: markColor$6,\n fontSize: 11,\n align: 'center',\n fontWeight: 400,\n size: 11,\n },\n style: {\n bar: {\n fill: markColor$6,\n stroke: null,\n },\n },\n arc: { fill: markColor$6 },\n shape: { stroke: markColor$6 },\n symbol: { fill: markColor$6, size: 30 },\n};\n\n/**\n * Copyright 2020 Google LLC.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file or at\n * https://developers.google.com/open-source/licenses/bsd\n */\nconst markColor$7 = '#3366CC';\nconst gridColor$1 = '#ccc';\nconst defaultFont = 'Arial, sans-serif';\nconst googlechartsTheme = {\n arc: { fill: markColor$7 },\n area: { fill: markColor$7 },\n path: { stroke: markColor$7 },\n rect: { fill: markColor$7 },\n shape: { stroke: markColor$7 },\n symbol: { stroke: markColor$7 },\n circle: { fill: markColor$7 },\n background: '#fff',\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10,\n },\n style: {\n 'guide-label': {\n font: defaultFont,\n fontSize: 12,\n },\n 'guide-title': {\n font: defaultFont,\n fontSize: 12,\n },\n 'group-title': {\n font: defaultFont,\n fontSize: 12,\n },\n },\n title: {\n font: defaultFont,\n fontSize: 14,\n fontWeight: 'bold',\n dy: -3,\n anchor: 'start',\n },\n axis: {\n gridColor: gridColor$1,\n tickColor: gridColor$1,\n domain: false,\n grid: true,\n },\n range: {\n category: [\n '#4285F4',\n '#DB4437',\n '#F4B400',\n '#0F9D58',\n '#AB47BC',\n '#00ACC1',\n '#FF7043',\n '#9E9D24',\n '#5C6BC0',\n '#F06292',\n '#00796B',\n '#C2185B',\n ],\n heatmap: ['#c6dafc', '#5e97f6', '#2a56c6'],\n },\n};\n\nconst version$1 = pkg.version;\n\nexport { darkTheme as dark, excelTheme as excel, fiveThirtyEightTheme as fivethirtyeight, ggplot2Theme as ggplot2, googlechartsTheme as googlecharts, latimesTheme as latimes, quartzTheme as quartz, urbanInstituteTheme as urbaninstitute, version$1 as version, voxTheme as vox };\n","function accessor (fn, fields, name) {\n fn.fields = fields || [];\n fn.fname = name;\n return fn;\n}\nfunction accessorName(fn) {\n return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n return obj[field];\n};\n\nconst getN = path => {\n const len = path.length;\n return function (obj) {\n for (let i = 0; i < len; ++i) {\n obj = obj[path[i]];\n }\n\n return obj;\n };\n};\n\nfunction error (message) {\n throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n const path = [],\n n = p.length;\n let q = null,\n b = 0,\n s = '',\n i,\n j,\n c;\n p = p + '';\n\n function push() {\n path.push(s + p.substring(i, j));\n s = '';\n i = j + 1;\n }\n\n for (i = j = 0; j < n; ++j) {\n c = p[j];\n\n if (c === '\\\\') {\n s += p.substring(i, j);\n s += p.substring(++j, ++j);\n i = j;\n } else if (c === q) {\n push();\n q = null;\n b = -1;\n } else if (q) {\n continue;\n } else if (i === b && c === '\"') {\n i = j + 1;\n q = c;\n } else if (i === b && c === \"'\") {\n i = j + 1;\n q = c;\n } else if (c === '.' && !b) {\n if (j > i) {\n push();\n } else {\n i = j + 1;\n }\n } else if (c === '[') {\n if (j > i) push();\n b = i = j + 1;\n } else if (c === ']') {\n if (!b) error('Access path missing open bracket: ' + p);\n if (b > 0) push();\n b = 0;\n i = j + 1;\n }\n }\n\n if (b) error('Access path missing closing bracket: ' + p);\n if (q) error('Access path missing closing quote: ' + p);\n\n if (j > i) {\n j++;\n push();\n }\n\n return path;\n}\n\nfunction field (field, name, opt) {\n const path = splitAccessPath(field);\n field = path.length === 1 ? path[0] : field;\n return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n const args = [level].concat([].slice.call(input));\n console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method, handler = log$1) {\n let level = _ || None;\n return {\n level(_) {\n if (arguments.length) {\n level = +_;\n return this;\n } else {\n return level;\n }\n },\n\n error() {\n if (level >= Error$1) handler(method || 'error', 'ERROR', arguments);\n return this;\n },\n\n warn() {\n if (level >= Warn) handler(method || 'warn', 'WARN', arguments);\n return this;\n },\n\n info() {\n if (level >= Info) handler(method || 'log', 'INFO', arguments);\n return this;\n },\n\n debug() {\n if (level >= Debug) handler(method || 'log', 'DEBUG', arguments);\n return this;\n }\n\n };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n return configs.reduce((out, source) => {\n for (const key in source) {\n if (key === 'signals') {\n // for signals, we merge the signals arrays\n // source signals take precedence over\n // existing signals with the same name\n out.signals = mergeNamed(out.signals, source.signals);\n } else {\n // otherwise, merge objects subject to recursion constraints\n // for legend block, recurse for the layout entry only\n // for style block, recurse for all properties\n // otherwise, no recursion: objects overwrite, no merging\n const r = key === 'legend' ? {\n layout: 1\n } : key === 'style' ? true : null;\n writeConfig(out, key, source[key], r);\n }\n }\n\n return out;\n }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n if (!isLegalKey(key)) return;\n let k, o;\n\n if (isObject(value) && !isArray(value)) {\n o = isObject(output[key]) ? output[key] : output[key] = {};\n\n for (k in value) {\n if (recurse && (recurse === true || recurse[k])) {\n writeConfig(o, k, value[k]);\n } else if (isLegalKey(k)) {\n o[k] = value[k];\n }\n }\n } else {\n output[key] = value;\n }\n}\n\nfunction mergeNamed(a, b) {\n if (a == null) return b;\n const map = {},\n out = [];\n\n function add(_) {\n if (!map[_.name]) {\n map[_.name] = 1;\n out.push(_);\n }\n }\n\n b.forEach(add);\n a.forEach(add);\n return out;\n}\n\nfunction peek (array) {\n return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n const d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n dd = (d1 - d0) * delta;\n return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n var sign = Math.sign(domain[0]);\n return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n const d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n const sign = Math.sign(domain[0]);\n return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n let lo = range[0],\n hi = range[1],\n span;\n\n if (hi < lo) {\n span = hi;\n hi = lo;\n lo = span;\n }\n\n span = hi - lo;\n return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n opt = opt || {};\n orders = array(orders) || [];\n const ord = [],\n get = [],\n fmap = {},\n gen = opt.comparator || comparator;\n array(fields).forEach((f, i) => {\n if (f == null) return;\n ord.push(orders[i] === DESCENDING ? -1 : 1);\n get.push(f = isFunction(f) ? f : field(f, null, opt));\n (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n });\n return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n orders.push(0); // pad zero for convenient lookup\n\n return function (a, b) {\n let f,\n c = 0,\n i = -1;\n\n while (c === 0 && ++i < n) {\n f = fields[i];\n c = ascending(f(a), f(b));\n }\n\n return c * orders[i];\n };\n};\n\nfunction constant (_) {\n return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n let tid;\n return e => {\n if (tid) clearTimeout(tid);\n tid = setTimeout(() => (handler(e), tid = null), delay);\n };\n}\n\nfunction extend (_) {\n for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n x = arguments[i];\n\n for (k in x) {\n _[k] = x[k];\n }\n }\n\n return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n let i = 0,\n n,\n v,\n min,\n max;\n\n if (array && (n = array.length)) {\n if (f == null) {\n // find first valid value\n for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n min = max = v; // visit all other values\n\n for (; i < n; ++i) {\n v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n } else {\n // find first valid value\n for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n min = max = v; // visit all other values\n\n for (; i < n; ++i) {\n v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n }\n }\n\n return [min, max];\n}\n\nfunction extentIndex (array, f) {\n const n = array.length;\n let i = -1,\n a,\n b,\n c,\n u,\n v;\n\n if (f == null) {\n while (++i < n) {\n b = array[i];\n\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n\n if (i === n) return [-1, -1];\n u = v = i;\n\n while (++i < n) {\n b = array[i];\n\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n } else {\n while (++i < n) {\n b = f(array[i], i, array);\n\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n\n if (i === n) return [-1, -1];\n u = v = i;\n\n while (++i < n) {\n b = f(array[i], i, array);\n\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n }\n\n return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n let obj = {},\n test;\n\n function has$1(key) {\n return has(obj, key) && obj[key] !== NULL;\n }\n\n const map = {\n size: 0,\n empty: 0,\n object: obj,\n has: has$1,\n\n get(key) {\n return has$1(key) ? obj[key] : undefined;\n },\n\n set(key, value) {\n if (!has$1(key)) {\n ++map.size;\n if (obj[key] === NULL) --map.empty;\n }\n\n obj[key] = value;\n return this;\n },\n\n delete(key) {\n if (has$1(key)) {\n --map.size;\n ++map.empty;\n obj[key] = NULL;\n }\n\n return this;\n },\n\n clear() {\n map.size = map.empty = 0;\n map.object = obj = {};\n },\n\n test(_) {\n if (arguments.length) {\n test = _;\n return map;\n } else {\n return test;\n }\n },\n\n clean() {\n const next = {};\n let size = 0;\n\n for (const key in obj) {\n const value = obj[key];\n\n if (value !== NULL && (!test || !test(value))) {\n next[key] = value;\n ++size;\n }\n }\n\n map.size = size;\n map.empty = 0;\n map.object = obj = next;\n }\n\n };\n if (input) Object.keys(input).forEach(key => {\n map.set(key, input[key]);\n });\n return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n if (!threshold && threshold !== 0) return center;\n const t = +threshold;\n let a = range[0],\n b = peek(range),\n l; // swap endpoints if range is reversed\n\n if (b < a) {\n l = a;\n a = b;\n b = l;\n } // compare value to endpoints\n\n\n l = Math.abs(value - a);\n const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n const proto = child.prototype = Object.create(parent.prototype);\n Object.defineProperty(proto, 'constructor', {\n value: child,\n writable: true,\n enumerable: true,\n configurable: true\n });\n return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n let r0 = range[0],\n r1 = range[range.length - 1],\n t;\n\n if (r0 > r1) {\n t = r0;\n r0 = r1;\n r1 = t;\n }\n\n left = left === undefined || left;\n right = right === undefined || right;\n return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n if (fields) {\n fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n }\n\n const len = fields && fields.length,\n gen = opt && opt.get || getter,\n map = f => gen(flat ? [f] : splitAccessPath(f));\n\n let fn;\n\n if (!len) {\n fn = function () {\n return '';\n };\n } else if (len === 1) {\n const get = map(fields[0]);\n\n fn = function (_) {\n return '' + get(_);\n };\n } else {\n const get = fields.map(map);\n\n fn = function (_) {\n let s = '' + get[0](_),\n i = 0;\n\n while (++i < len) s += '|' + get[i](_);\n\n return s;\n };\n }\n\n return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n const lo = array[0],\n hi = peek(array),\n f = +frac;\n return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n maxsize = +maxsize || DEFAULT_MAX_SIZE;\n let curr, prev, size;\n\n const clear = () => {\n curr = {};\n prev = {};\n size = 0;\n };\n\n const update = (key, value) => {\n if (++size > maxsize) {\n prev = curr;\n curr = {};\n size = 1;\n }\n\n return curr[key] = value;\n };\n\n clear();\n return {\n clear,\n has: key => has(curr, key) || has(prev, key),\n get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n };\n}\n\nfunction merge (compare, array0, array1, output) {\n const n0 = array0.length,\n n1 = array1.length;\n if (!n1) return array0;\n if (!n0) return array1;\n const merged = output || new array0.constructor(n0 + n1);\n let i0 = 0,\n i1 = 0,\n i = 0;\n\n for (; i0 < n0 && i1 < n1; ++i) {\n merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n }\n\n for (; i0 < n0; ++i0, ++i) {\n merged[i] = array0[i0];\n }\n\n for (; i1 < n1; ++i1, ++i) {\n merged[i] = array1[i1];\n }\n\n return merged;\n}\n\nfunction repeat (str, reps) {\n let s = '';\n\n while (--reps >= 0) s += str;\n\n return s;\n}\n\nfunction pad (str, length, padchar, align) {\n const c = padchar || ' ',\n s = str + '',\n n = length - s.length;\n return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n // See http://timelessrepo.com/json-isnt-a-javascript-subset\n JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n parser = parser || defaultParser;\n return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n const s = {},\n n = _.length;\n\n for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n const e = ellipsis != null ? ellipsis : '\\u2026',\n s = str + '',\n n = s.length,\n l = Math.max(0, length - e.length);\n return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n if (array) {\n if (filter) {\n const n = array.length;\n\n for (let i = 0; i < n; ++i) {\n const t = filter(array[i]);\n if (t) visitor(t, i, array);\n }\n } else {\n array.forEach(visitor);\n }\n }\n}\n\nexport { Debug, Error$1 as Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, has as hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, $ as stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog };\n","import { isArray, isString, isObject } from 'vega-util';\n\nvar name = \"vega-tooltip\";\nvar version$1 = \"0.28.0\";\nvar description = \"A tooltip plugin for Vega-Lite and Vega visualizations.\";\nvar keywords = [\n\t\"vega-lite\",\n\t\"vega\",\n\t\"tooltip\"\n];\nvar repository = {\n\ttype: \"git\",\n\turl: \"https://github.com/vega/vega-tooltip.git\"\n};\nvar author = {\n\tname: \"UW Interactive Data Lab\",\n\turl: \"https://idl.cs.washington.edu\"\n};\nvar collaborators = [\n\t\"Dominik Moritz\",\n\t\"Sira Horradarn\",\n\t\"Zening Qu\",\n\t\"Kanit Wongsuphasawat\",\n\t\"Yuri Astrakhan\",\n\t\"Jeffrey Heer\"\n];\nvar license = \"BSD-3-Clause\";\nvar bugs = {\n\turl: \"https://github.com/vega/vega-tooltip/issues\"\n};\nvar homepage = \"https://github.com/vega/vega-tooltip#readme\";\nvar main = \"build/vega-tooltip.js\";\nvar module = \"build/vega-tooltip.module.js\";\nvar unpkg = \"build/vega-tooltip.min.js\";\nvar jsdelivr = \"build/vega-tooltip.min.js\";\nvar types = \"build/vega-tooltip.module.d.ts\";\nvar files = [\n\t\"src\",\n\t\"build\",\n\t\"types\"\n];\nvar scripts = {\n\tprebuild: \"yarn clean && yarn build:style\",\n\tbuild: \"rollup -c\",\n\t\"build:style\": \"./build-style.sh\",\n\tclean: \"rimraf build && rimraf src/style.ts\",\n\t\"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n\t\"copy:build\": \"rsync -r build/* examples/build\",\n\t\"deploy:gh\": \"yarn build && yarn copy:build && gh-pages -d examples && yarn clean\",\n\tprepublishOnly: \"yarn clean && yarn build\",\n\tpreversion: \"yarn lint && yarn test\",\n\tserve: \"browser-sync start -s -f build examples --serveStatic examples\",\n\tstart: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n\tpretest: \"yarn build:style\",\n\ttest: \"beemo jest\",\n\t\"test:inspect\": \"node --inspect-brk ./node_modules/.bin/jest --runInBand\",\n\tprepare: \"beemo create-config && yarn copy:data\",\n\tprettierbase: \"beemo prettier '*.{css,scss,html}'\",\n\teslintbase: \"beemo eslint .\",\n\tformat: \"yarn eslintbase --fix && yarn prettierbase --write\",\n\tlint: \"yarn eslintbase && yarn prettierbase --check\",\n\trelease: \"yarn run prebuild && yarn build && auto shipit\"\n};\nvar devDependencies = {\n\t\"@auto-it/conventional-commits\": \"^10.32.3\",\n\t\"@auto-it/first-time-contributor\": \"^10.32.3\",\n\t\"@rollup/plugin-json\": \"^4.1.0\",\n\t\"@rollup/plugin-node-resolve\": \"^13.0.6\",\n\t\"rollup-plugin-ts\": \"^2.0.4\",\n\tauto: \"^10.32.3\",\n\t\"browser-sync\": \"^2.27.7\",\n\tconcurrently: \"^6.4.0\",\n\t\"gh-pages\": \"^3.2.3\",\n\tsass: \"^1.44.0\",\n\tpath: \"^0.12.7\",\n\trollup: \"^2.60.2\",\n\t\"rollup-plugin-bundle-size\": \"^1.0.3\",\n\t\"rollup-plugin-terser\": \"^7.0.2\",\n\ttypescript: \"~4.5.2\",\n\t\"vega-datasets\": \"^2.2.0\",\n\t\"vega-lite-dev-config\": \"^0.20.0\",\n\t\"vega-typings\": \"^0.22.1\"\n};\nvar dependencies = {\n\t\"vega-util\": \"^1.17.0\"\n};\nvar pkg = {\n\tname: name,\n\tversion: version$1,\n\tdescription: description,\n\tkeywords: keywords,\n\trepository: repository,\n\tauthor: author,\n\tcollaborators: collaborators,\n\tlicense: license,\n\tbugs: bugs,\n\thomepage: homepage,\n\tmain: main,\n\tmodule: module,\n\tunpkg: unpkg,\n\tjsdelivr: jsdelivr,\n\ttypes: types,\n\tfiles: files,\n\tscripts: scripts,\n\tdevDependencies: devDependencies,\n\tdependencies: dependencies\n};\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\n/**\n * Format the value to be shown in the tooltip.\n *\n * @param value The value to show in the tooltip.\n * @param valueToHtml Function to convert a single cell value to an HTML string\n */\nfunction formatValue(value, valueToHtml, maxDepth) {\n if (isArray(value)) {\n return `[${value.map((v) => valueToHtml(isString(v) ? v : stringify(v, maxDepth))).join(', ')}]`;\n }\n if (isObject(value)) {\n let content = '';\n const _a = value, { title, image } = _a, rest = __rest(_a, [\"title\", \"image\"]);\n if (title) {\n content += `<h2>${valueToHtml(title)}</h2>`;\n }\n if (image) {\n content += `<img src=\"${valueToHtml(image)}\">`;\n }\n const keys = Object.keys(rest);\n if (keys.length > 0) {\n content += '<table>';\n for (const key of keys) {\n let val = rest[key];\n // ignore undefined properties\n if (val === undefined) {\n continue;\n }\n if (isObject(val)) {\n val = stringify(val, maxDepth);\n }\n content += `<tr><td class=\"key\">${valueToHtml(key)}:</td><td class=\"value\">${valueToHtml(val)}</td></tr>`;\n }\n content += `</table>`;\n }\n return content || '{}'; // show empty object if there are no properties\n }\n return valueToHtml(value);\n}\nfunction replacer(maxDepth) {\n const stack = [];\n return function (key, value) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n const pos = stack.indexOf(this) + 1;\n stack.length = pos;\n if (stack.length > maxDepth) {\n return '[Object]';\n }\n if (stack.indexOf(value) >= 0) {\n return '[Circular]';\n }\n stack.push(value);\n return value;\n };\n}\n/**\n * Stringify any JS object to valid JSON\n */\nfunction stringify(obj, maxDepth) {\n return JSON.stringify(obj, replacer(maxDepth));\n}\n\n// generated with build-style.sh\nvar defaultStyle = `#vg-tooltip-element {\n visibility: hidden;\n padding: 8px;\n position: fixed;\n z-index: 1000;\n font-family: sans-serif;\n font-size: 11px;\n border-radius: 3px;\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\n /* The default theme is the light theme. */\n background-color: rgba(255, 255, 255, 0.95);\n border: 1px solid #d9d9d9;\n color: black;\n}\n#vg-tooltip-element.visible {\n visibility: visible;\n}\n#vg-tooltip-element h2 {\n margin-top: 0;\n margin-bottom: 10px;\n font-size: 13px;\n}\n#vg-tooltip-element img {\n max-width: 200px;\n max-height: 200px;\n}\n#vg-tooltip-element table {\n border-spacing: 0;\n}\n#vg-tooltip-element table tr {\n border: none;\n}\n#vg-tooltip-element table tr td {\n overflow: hidden;\n text-overflow: ellipsis;\n padding-top: 2px;\n padding-bottom: 2px;\n}\n#vg-tooltip-element table tr td.key {\n color: #808080;\n max-width: 150px;\n text-align: right;\n padding-right: 4px;\n}\n#vg-tooltip-element table tr td.value {\n display: block;\n max-width: 300px;\n max-height: 7em;\n text-align: left;\n}\n#vg-tooltip-element.dark-theme {\n background-color: rgba(32, 32, 32, 0.9);\n border: 1px solid #f5f5f5;\n color: white;\n}\n#vg-tooltip-element.dark-theme td.key {\n color: #bfbfbf;\n}\n`;\n\nconst EL_ID = 'vg-tooltip-element';\nconst DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n /**\n * Y offset.\n */\n offsetY: 10,\n /**\n * ID of the tooltip element.\n */\n id: EL_ID,\n /**\n * ID of the tooltip CSS style.\n */\n styleId: 'vega-tooltip-style',\n /**\n * The name of the theme. You can use the CSS class called [THEME]-theme to style the tooltips.\n *\n * There are two predefined themes: \"light\" (default) and \"dark\".\n */\n theme: 'light',\n /**\n * Do not use the default styles provided by Vega Tooltip. If you enable this option, you need to use your own styles. It is not necessary to disable the default style when using a custom theme.\n */\n disableDefaultStyle: false,\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML,\n /**\n * The maximum recursion depth when printing objects in the tooltip.\n */\n maxDepth: 2,\n /**\n * A function to customize the rendered HTML of the tooltip.\n * @param value A value string, or object of value strings keyed by field\n * @param sanitize The `sanitize` function from `options.sanitize`\n * @returns {string} The returned string will become the `innerHTML` of the tooltip element\n */\n formatTooltip: formatValue,\n};\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nfunction escapeHTML(value) {\n return String(value).replace(/&/g, '&amp;').replace(/</g, '&lt;');\n}\nfunction createDefaultStyle(id) {\n // Just in case this id comes from a user, ensure these is no security issues\n if (!/^[A-Za-z]+[-:.\\w]*$/.test(id)) {\n throw new Error('Invalid HTML ID');\n }\n return defaultStyle.toString().replace(EL_ID, id);\n}\n\n/**\n * Position the tooltip\n *\n * @param event The mouse event.\n * @param tooltipBox\n * @param offsetX Horizontal offset.\n * @param offsetY Vertical offset.\n */\nfunction calculatePosition(event, tooltipBox, offsetX, offsetY) {\n let x = event.clientX + offsetX;\n if (x + tooltipBox.width > window.innerWidth) {\n x = +event.clientX - offsetX - tooltipBox.width;\n }\n let y = event.clientY + offsetY;\n if (y + tooltipBox.height > window.innerHeight) {\n y = +event.clientY - offsetY - tooltipBox.height;\n }\n return { x, y };\n}\n\n/**\n * The tooltip handler class.\n */\nclass Handler {\n /**\n * Create the tooltip handler and initialize the element and style.\n *\n * @param options Tooltip Options\n */\n constructor(options) {\n this.options = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n const elementId = this.options.id;\n this.el = null;\n // bind this to call\n this.call = this.tooltipHandler.bind(this);\n // prepend a default stylesheet for tooltips to the head\n if (!this.options.disableDefaultStyle && !document.getElementById(this.options.styleId)) {\n const style = document.createElement('style');\n style.setAttribute('id', this.options.styleId);\n style.innerHTML = createDefaultStyle(elementId);\n const head = document.head;\n if (head.childNodes.length > 0) {\n head.insertBefore(style, head.childNodes[0]);\n }\n else {\n head.appendChild(style);\n }\n }\n }\n /**\n * The tooltip handler function.\n */\n tooltipHandler(handler, event, item, value) {\n // console.log(handler, event, item, value);\n var _a;\n // append a div element that we use as a tooltip unless it already exists\n this.el = document.getElementById(this.options.id);\n if (!this.el) {\n this.el = document.createElement('div');\n this.el.setAttribute('id', this.options.id);\n this.el.classList.add('vg-tooltip');\n const tooltipContainer = (_a = document.fullscreenElement) !== null && _a !== void 0 ? _a : document.body;\n tooltipContainer.appendChild(this.el);\n }\n // hide tooltip for null, undefined, or empty string values\n if (value == null || value === '') {\n this.el.classList.remove('visible', `${this.options.theme}-theme`);\n return;\n }\n // set the tooltip content\n this.el.innerHTML = this.options.formatTooltip(value, this.options.sanitize, this.options.maxDepth);\n // make the tooltip visible\n this.el.classList.add('visible', `${this.options.theme}-theme`);\n const { x, y } = calculatePosition(event, this.el.getBoundingClientRect(), this.options.offsetX, this.options.offsetY);\n this.el.setAttribute('style', `top: ${y}px; left: ${x}px`);\n }\n}\n\nconst version = pkg.version;\n/**\n * Create a tooltip handler and register it with the provided view.\n *\n * @param view The Vega view.\n * @param opt Tooltip options.\n */\nfunction index (view, opt) {\n const handler = new Handler(opt);\n view.tooltip(handler.call).run();\n return handler;\n}\n\nexport { DEFAULT_OPTIONS, Handler, calculatePosition, createDefaultStyle, index as default, escapeHTML, formatValue, replacer, stringify, version };\n","import {MessageData} from './types';\n\n/**\n * Open editor url in a new window, and pass a message.\n */\nexport default function (window: Window, url: string, data: MessageData) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const editor = window.open(url)!;\n const wait = 10_000;\n const step = 250;\n const {origin} = new URL(url);\n // eslint-disable-next-line no-bitwise\n let count = ~~(wait / step);\n\n function listen(evt: MessageEvent) {\n if (evt.source === editor) {\n count = 0;\n window.removeEventListener('message', listen, false);\n }\n }\n window.addEventListener('message', listen, false);\n\n // send message\n // periodically resend until ack received or timeout\n function send() {\n if (count <= 0) {\n return;\n }\n editor.postMessage(data, origin);\n setTimeout(send, step);\n count -= 1;\n }\n setTimeout(send, step);\n}\n","import {writeConfig} from 'vega';\n\n// polyfill for IE\nif (!String.prototype.startsWith) {\n // eslint-disable-next-line no-extend-native,func-names\n String.prototype.startsWith = function (search, pos) {\n return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n };\n}\n\nexport function isURL(s: string): boolean {\n return s.startsWith('http://') || s.startsWith('https://') || s.startsWith('//');\n}\n\nexport type DeepPartial<T> = {[P in keyof T]?: P extends unknown ? unknown : DeepPartial<T[P]>};\n\nexport function mergeDeep<T>(dest: T, ...src: readonly DeepPartial<T>[]): T {\n for (const s of src) {\n deepMerge_(dest, s);\n }\n return dest;\n}\n\nfunction deepMerge_(dest: any, src: any) {\n for (const property of Object.keys(src)) {\n writeConfig(dest, property, src[property], true);\n }\n}\n","import {applyPatch, Operation} from 'fast-json-patch';\nimport stringify from 'json-stringify-pretty-compact';\n// need this import because of https://github.com/npm/node-semver/issues/381\nimport satisfies from 'semver/functions/satisfies';\nimport * as vegaImport from 'vega';\nimport {\n AutoSize,\n Config as VgConfig,\n EncodeEntryName,\n isBoolean,\n isString,\n Loader,\n LoaderOptions,\n mergeConfig,\n Renderers,\n Spec as VgSpec,\n TooltipHandler,\n View,\n} from 'vega';\nimport {expressionInterpreter} from 'vega-interpreter';\nimport * as vegaLiteImport from 'vega-lite';\nimport {Config as VlConfig, TopLevelSpec as VlSpec} from 'vega-lite';\nimport schemaParser from 'vega-schema-url-parser';\nimport * as themes from 'vega-themes';\nimport {Handler, Options as TooltipOptions} from 'vega-tooltip';\nimport post from './post';\nimport embedStyle from './style';\nimport {Config, Mode} from './types';\nimport {mergeDeep} from './util';\nimport pkg from '../package.json';\n\nexport const version = pkg.version;\n\nexport * from './types';\n\nexport const vega = vegaImport;\nexport let vegaLite = vegaLiteImport;\n\n// For backwards compatibility with Vega-Lite before v4.\nconst w = (typeof window !== 'undefined' ? window : undefined) as any;\nif (vegaLite === undefined && w?.vl?.compile) {\n vegaLite = w.vl;\n}\n\nexport interface Actions {\n export?: boolean | {svg?: boolean; png?: boolean};\n source?: boolean;\n compiled?: boolean;\n editor?: boolean;\n}\n\nexport const DEFAULT_ACTIONS = {export: {svg: true, png: true}, source: true, compiled: true, editor: true};\n\nexport interface Hover {\n hoverSet?: EncodeEntryName;\n updateSet?: EncodeEntryName;\n}\n\nexport type PatchFunc = (spec: VgSpec) => VgSpec;\n\nconst I18N = {\n CLICK_TO_VIEW_ACTIONS: 'Click to view actions',\n COMPILED_ACTION: 'View Compiled Vega',\n EDITOR_ACTION: 'Open in Vega Editor',\n PNG_ACTION: 'Save as PNG',\n SOURCE_ACTION: 'View Source',\n SVG_ACTION: 'Save as SVG',\n};\n\nexport interface EmbedOptions<S = string, R = Renderers> {\n bind?: HTMLElement | string;\n actions?: boolean | Actions;\n mode?: Mode;\n theme?: 'excel' | 'ggplot2' | 'quartz' | 'vox' | 'dark';\n defaultStyle?: boolean | string;\n logLevel?: number;\n loader?: Loader | LoaderOptions;\n renderer?: R;\n tooltip?: TooltipHandler | TooltipOptions | boolean;\n patch?: S | PatchFunc | Operation[];\n width?: number;\n height?: number;\n padding?: number | {left?: number; right?: number; top?: number; bottom?: number};\n scaleFactor?: number;\n config?: S | Config;\n sourceHeader?: string;\n sourceFooter?: string;\n editorUrl?: string;\n hover?: boolean | Hover;\n i18n?: Partial<typeof I18N>;\n downloadFileName?: string;\n formatLocale?: Record<string, unknown>;\n timeFormatLocale?: Record<string, unknown>;\n ast?: boolean;\n expr?: typeof expressionInterpreter;\n viewClass?: typeof View;\n}\n\nconst NAMES: {[key in Mode]: string} = {\n vega: 'Vega',\n 'vega-lite': 'Vega-Lite',\n};\n\nconst VERSION = {\n vega: vega.version,\n 'vega-lite': vegaLite ? vegaLite.version : 'not available',\n};\n\nconst PREPROCESSOR: {[mode in Mode]: (spec: any, config?: Config) => VgSpec} = {\n vega: (vgSpec: VgSpec) => vgSpec,\n 'vega-lite': (vlSpec, config) => vegaLite.compile(vlSpec as VlSpec, {config: config as VlConfig}).spec,\n};\n\nconst SVG_CIRCLES = `\n<svg viewBox=\"0 0 16 16\" fill=\"currentColor\" stroke=\"none\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle r=\"2\" cy=\"8\" cx=\"2\"></circle>\n <circle r=\"2\" cy=\"8\" cx=\"8\"></circle>\n <circle r=\"2\" cy=\"8\" cx=\"14\"></circle>\n</svg>`;\n\nconst CHART_WRAPPER_CLASS = 'chart-wrapper';\n\nexport type VisualizationSpec = VlSpec | VgSpec;\n\nexport interface Result {\n /** The Vega view. */\n view: View;\n\n /** The input specification. */\n spec: VisualizationSpec;\n\n /** The compiled and patched Vega specification. */\n vgSpec: VgSpec;\n\n /** The Vega-Embed options. */\n embedOptions: EmbedOptions;\n\n /** Removes references to unwanted behaviors and memory leaks. Calls Vega's `view.finalize`. */\n finalize: () => void;\n}\n\nfunction isTooltipHandler(h?: boolean | TooltipOptions | TooltipHandler): h is TooltipHandler {\n return typeof h === 'function';\n}\n\nfunction viewSource(source: string, sourceHeader: string, sourceFooter: string, mode: Mode) {\n const header = `<html><head>${sourceHeader}</head><body><pre><code class=\"json\">`;\n const footer = `</code></pre>${sourceFooter}</body></html>`;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const win = window.open('')!;\n win.document.write(header + source + footer);\n win.document.title = `${NAMES[mode]} JSON Source`;\n}\n\n/**\n * Try to guess the type of spec.\n *\n * @param spec Vega or Vega-Lite spec.\n */\nexport function guessMode(spec: VisualizationSpec, providedMode?: Mode): Mode {\n // Decide mode\n if (spec.$schema) {\n const parsed = schemaParser(spec.$schema);\n if (providedMode && providedMode !== parsed.library) {\n console.warn(\n `The given visualization spec is written in ${NAMES[parsed.library]}, but mode argument sets ${\n NAMES[providedMode] ?? providedMode\n }.`\n );\n }\n\n const mode = parsed.library as Mode;\n\n if (!satisfies(VERSION[mode], `^${parsed.version.slice(1)}`)) {\n console.warn(\n `The input spec uses ${NAMES[mode]} ${parsed.version}, but the current version of ${NAMES[mode]} is v${VERSION[mode]}.`\n );\n }\n\n return mode;\n }\n\n // try to guess from the provided spec\n if (\n 'mark' in spec ||\n 'encoding' in spec ||\n 'layer' in spec ||\n 'hconcat' in spec ||\n 'vconcat' in spec ||\n 'facet' in spec ||\n 'repeat' in spec\n ) {\n return 'vega-lite';\n }\n\n if ('marks' in spec || 'signals' in spec || 'scales' in spec || 'axes' in spec) {\n return 'vega';\n }\n\n return providedMode ?? 'vega';\n}\n\nfunction isLoader(o?: LoaderOptions | Loader): o is Loader {\n return !!(o && 'load' in o);\n}\n\nfunction createLoader(opts?: Loader | LoaderOptions) {\n return isLoader(opts) ? opts : vega.loader(opts);\n}\n\nfunction embedOptionsFromUsermeta(parsedSpec: VisualizationSpec) {\n const opts = (parsedSpec.usermeta as any)?.embedOptions ?? {};\n if (isString(opts.defaultStyle)) {\n // we don't allow styles set via usermeta since it would allow injection of logic (we set the style via innerHTML)\n opts.defaultStyle = false;\n }\n return opts;\n}\n\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el DOM element in which to place component (DOM node or CSS selector).\n * @param spec String : A URL string from which to load the Vega specification.\n * Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opts A JavaScript object containing options for embedding.\n */\nexport default async function embed(\n el: HTMLElement | string,\n spec: VisualizationSpec | string,\n opts: EmbedOptions = {}\n): Promise<Result> {\n let parsedSpec: VisualizationSpec;\n let loader: Loader | undefined;\n\n if (isString(spec)) {\n loader = createLoader(opts.loader);\n parsedSpec = JSON.parse(await loader.load(spec));\n } else {\n parsedSpec = spec;\n }\n\n const loadedEmbedOptions = embedOptionsFromUsermeta(parsedSpec);\n const usermetaLoader = loadedEmbedOptions.loader;\n\n // either create the loader for the first time or create a new loader if the spec has new loader options\n if (!loader || usermetaLoader) {\n loader = createLoader(opts.loader ?? usermetaLoader);\n }\n\n const usermetaOpts = await loadOpts(loadedEmbedOptions, loader);\n const parsedOpts = await loadOpts(opts, loader);\n\n const mergedOpts = {\n ...mergeDeep(parsedOpts, usermetaOpts),\n config: mergeConfig(parsedOpts.config ?? {}, usermetaOpts.config ?? {}),\n };\n\n return await _embed(el, parsedSpec, mergedOpts, loader);\n}\n\nasync function loadOpts(opt: EmbedOptions, loader: Loader): Promise<EmbedOptions<never>> {\n const config: Config = isString(opt.config) ? JSON.parse(await loader.load(opt.config)) : opt.config ?? {};\n const patch: PatchFunc | Operation[] = isString(opt.patch) ? JSON.parse(await loader.load(opt.patch)) : opt.patch;\n return {\n ...(opt as any),\n ...(patch ? {patch} : {}),\n ...(config ? {config} : {}),\n };\n}\n\nfunction getRoot(el: Element) {\n const possibleRoot = el.getRootNode ? el.getRootNode() : document;\n return possibleRoot instanceof ShadowRoot\n ? {root: possibleRoot, rootContainer: possibleRoot}\n : {root: document, rootContainer: document.head ?? document.body};\n}\n\nasync function _embed(\n el: HTMLElement | string,\n spec: VisualizationSpec,\n opts: EmbedOptions<never> = {},\n loader: Loader\n): Promise<Result> {\n const config = opts.theme ? mergeConfig(themes[opts.theme], opts.config ?? {}) : opts.config;\n\n const actions = isBoolean(opts.actions) ? opts.actions : mergeDeep<Actions>({}, DEFAULT_ACTIONS, opts.actions ?? {});\n const i18n = {...I18N, ...opts.i18n};\n\n const renderer = opts.renderer ?? 'canvas';\n const logLevel = opts.logLevel ?? vega.Warn;\n const downloadFileName = opts.downloadFileName ?? 'visualization';\n\n const element = typeof el === 'string' ? document.querySelector(el) : el;\n if (!element) {\n throw new Error(`${el} does not exist`);\n }\n\n if (opts.defaultStyle !== false) {\n const ID = 'vega-embed-style';\n const {root, rootContainer} = getRoot(element);\n if (!root.getElementById(ID)) {\n const style = document.createElement('style');\n style.id = ID;\n style.innerHTML =\n opts.defaultStyle === undefined || opts.defaultStyle === true\n ? (embedStyle ?? '').toString()\n : opts.defaultStyle;\n rootContainer.appendChild(style);\n }\n }\n\n const mode = guessMode(spec, opts.mode);\n\n let vgSpec: VgSpec = PREPROCESSOR[mode](spec, config);\n\n if (mode === 'vega-lite') {\n if (vgSpec.$schema) {\n const parsed = schemaParser(vgSpec.$schema);\n\n if (!satisfies(VERSION.vega, `^${parsed.version.slice(1)}`)) {\n console.warn(`The compiled spec uses Vega ${parsed.version}, but current version is v${VERSION.vega}.`);\n }\n }\n }\n\n element.classList.add('vega-embed');\n if (actions) {\n element.classList.add('has-actions');\n }\n element.innerHTML = ''; // clear container\n\n let container = element;\n if (actions) {\n const chartWrapper = document.createElement('div');\n chartWrapper.classList.add(CHART_WRAPPER_CLASS);\n element.appendChild(chartWrapper);\n container = chartWrapper;\n }\n\n const patch = opts.patch;\n if (patch) {\n vgSpec = patch instanceof Function ? patch(vgSpec) : applyPatch(vgSpec, patch, true, false).newDocument;\n }\n\n // Set locale. Note that this is a global setting.\n if (opts.formatLocale) {\n vega.formatLocale(opts.formatLocale);\n }\n\n if (opts.timeFormatLocale) {\n vega.timeFormatLocale(opts.timeFormatLocale);\n }\n\n const {ast} = opts;\n\n // Do not apply the config to Vega when we have already applied it to Vega-Lite.\n // This call may throw an Error if parsing fails.\n const runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : (config as VgConfig), {ast});\n\n const view = new (opts.viewClass || vega.View)(runtime, {\n loader,\n logLevel,\n renderer,\n ...(ast ? {expr: (vega as any).expressionInterpreter ?? opts.expr ?? expressionInterpreter} : {}),\n });\n\n view.addSignalListener('autosize', (_, autosize: Exclude<AutoSize, string>) => {\n const {type} = autosize;\n if (type == 'fit-x') {\n container.classList.add('fit-x');\n container.classList.remove('fit-y');\n } else if (type == 'fit-y') {\n container.classList.remove('fit-x');\n container.classList.add('fit-y');\n } else if (type == 'fit') {\n container.classList.add('fit-x', 'fit-y');\n } else {\n container.classList.remove('fit-x', 'fit-y');\n }\n });\n\n if (opts.tooltip !== false) {\n const handler = isTooltipHandler(opts.tooltip)\n ? opts.tooltip\n : // user provided boolean true or tooltip options\n new Handler(opts.tooltip === true ? {} : opts.tooltip).call;\n\n view.tooltip(handler);\n }\n\n let {hover} = opts;\n\n if (hover === undefined) {\n hover = mode === 'vega';\n }\n\n if (hover) {\n const {hoverSet, updateSet} = (typeof hover === 'boolean' ? {} : hover) as Hover;\n\n view.hover(hoverSet, updateSet);\n }\n\n if (opts) {\n if (opts.width != null) {\n view.width(opts.width);\n }\n if (opts.height != null) {\n view.height(opts.height);\n }\n if (opts.padding != null) {\n view.padding(opts.padding);\n }\n }\n\n await view.initialize(container, opts.bind).runAsync();\n\n let documentClickHandler: ((this: Document, ev: MouseEvent) => void) | undefined;\n\n if (actions !== false) {\n let wrapper = element;\n\n if (opts.defaultStyle !== false) {\n const details = document.createElement('details');\n details.title = i18n.CLICK_TO_VIEW_ACTIONS;\n element.append(details);\n\n wrapper = details;\n const summary = document.createElement('summary');\n summary.innerHTML = SVG_CIRCLES;\n\n details.append(summary);\n\n documentClickHandler = (ev: MouseEvent) => {\n if (!details.contains(ev.target as any)) {\n details.removeAttribute('open');\n }\n };\n document.addEventListener('click', documentClickHandler);\n }\n\n const ctrl = document.createElement('div');\n wrapper.append(ctrl);\n ctrl.classList.add('vega-actions');\n\n // add 'Export' action\n if (actions === true || actions.export !== false) {\n for (const ext of ['svg', 'png'] as const) {\n if (actions === true || actions.export === true || (actions.export as {svg?: boolean; png?: boolean})[ext]) {\n const i18nExportAction = (i18n as {[key: string]: string})[`${ext.toUpperCase()}_ACTION`];\n const exportLink = document.createElement('a');\n\n exportLink.text = i18nExportAction;\n exportLink.href = '#';\n exportLink.target = '_blank';\n exportLink.download = `${downloadFileName}.${ext}`;\n // add link on mousedown so that it's correct when the click happens\n exportLink.addEventListener('mousedown', async function (this, e) {\n e.preventDefault();\n const url = await view.toImageURL(ext, opts.scaleFactor);\n this.href = url;\n });\n\n ctrl.append(exportLink);\n }\n }\n }\n\n // add 'View Source' action\n if (actions === true || actions.source !== false) {\n const viewSourceLink = document.createElement('a');\n\n viewSourceLink.text = i18n.SOURCE_ACTION;\n viewSourceLink.href = '#';\n viewSourceLink.addEventListener('click', function (this, e) {\n viewSource(stringify(spec), opts.sourceHeader ?? '', opts.sourceFooter ?? '', mode);\n e.preventDefault();\n });\n\n ctrl.append(viewSourceLink);\n }\n\n // add 'View Compiled' action\n if (mode === 'vega-lite' && (actions === true || actions.compiled !== false)) {\n const compileLink = document.createElement('a');\n\n compileLink.text = i18n.COMPILED_ACTION;\n compileLink.href = '#';\n compileLink.addEventListener('click', function (this, e) {\n viewSource(stringify(vgSpec), opts.sourceHeader ?? '', opts.sourceFooter ?? '', 'vega');\n e.preventDefault();\n });\n\n ctrl.append(compileLink);\n }\n\n // add 'Open in Vega Editor' action\n if (actions === true || actions.editor !== false) {\n const editorUrl = opts.editorUrl ?? 'https://vega.github.io/editor/';\n const editorLink = document.createElement('a');\n\n editorLink.text = i18n.EDITOR_ACTION;\n editorLink.href = '#';\n editorLink.addEventListener('click', function (this, e) {\n post(window, editorUrl, {\n config: config as Config,\n mode,\n renderer,\n spec: stringify(spec),\n });\n e.preventDefault();\n });\n\n ctrl.append(editorLink);\n }\n }\n\n function finalize() {\n if (documentClickHandler) {\n document.removeEventListener('click', documentClickHandler);\n }\n view.finalize();\n }\n\n return {view, spec, vgSpec, finalize, embedOptions: opts};\n}\n","import {View} from 'vega';\nimport embed, {EmbedOptions, VisualizationSpec} from './embed';\n\n/**\n * Create a promise to an HTML Div element with an embedded Vega-Lite or Vega visualization.\n * The element has a value property with the view. By default all actions except for the editor action are disabled.\n *\n * The main use case is in [Observable](https://observablehq.com/).\n */\nexport default async function (spec: VisualizationSpec | string, opt: EmbedOptions = {}) {\n const wrapper = document.createElement('div') as HTMLDivElement & {value: View};\n wrapper.classList.add('vega-embed-wrapper');\n\n const div = document.createElement('div');\n wrapper.appendChild(div);\n\n const actions =\n opt.actions === true || opt.actions === false\n ? opt.actions\n : {export: true, source: false, compiled: true, editor: true, ...(opt.actions ?? {})};\n\n const result = await embed(div, spec, {\n actions,\n ...(opt ?? {}),\n });\n\n wrapper.value = result.view;\n return wrapper;\n}\n","import {isString} from 'vega';\nimport container from './container';\nimport embed, {vega, vegaLite, version} from './embed';\nimport {isURL} from './util';\n\n/**\n * Returns true if the object is an HTML element.\n */\nfunction isElement(obj: any): obj is HTMLElement {\n return obj instanceof HTMLElement;\n}\n\nexport type Wrapper = typeof embed | typeof container;\n\nconst wrapper: Wrapper = (...args: any[]): any => {\n if (args.length > 1 && ((isString(args[0]) && !isURL(args[0])) || isElement(args[0]) || args.length === 3)) {\n return embed(args[0], args[1], args[2]);\n }\n\n return container(args[0], args[1]);\n};\n\n(wrapper as any).vegaLite = vegaLite;\n(wrapper as any).vl = vegaLite; // backwards compatibility\n(wrapper as any).container = container;\n(wrapper as any).embed = embed;\n(wrapper as any).vega = vega;\n(wrapper as any).default = embed;\n(wrapper as any).version = version;\n\nexport default wrapper;\n"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","_asyncToGenerator","fn","self","this","args","arguments","apply","err","undefined","_typeof","Symbol","iterator","constructor","prototype","Op","hasOwn","hasOwnProperty","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","state","GenStateSuspendedStart","method","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","GenStateSuspendedYield","makeInvokeMethod","call","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","isGeneratorFunction","genFun","ctor","displayName","name","AsyncIterator","PromiseImpl","invoke","result","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","TypeError","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","toString","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","extendStatics","mark","setPrototypeOf","__proto__","awrap","async","iter","keys","object","reverse","pop","__extends","d","b","Array","p","__","_hasOwnProperty","_objectKeys","isArray","k","_deepClone","JSON","parse","stringify","isInteger","str","charCode","len","charCodeAt","escapePathComponent","path","indexOf","replace","unescapePathComponent","hasUndefined","objKeys","objKeysLength","patchErrorMessageFormatter","message","messageParts","join","PatchError","_super","index","operation","tree","_newTarget","_this","JsonPatchError","deepClone","objOps","add","document","newDocument","remove","removed","move","getValueByPointer","originalValue","applyOperation","op","from","copy","valueToCopy","test","_areEquals","_get","arrOps","arr","splice","pointer","getOriginalDestination","validateOperation","mutateDocument","banPrototypeModifications","validator","returnValue","split","t","existingPathFragment","validateFunction","applyPatch","patch","results","length_1","pathLen","existingPathLen","validate","sequence","externalValidator","e","a","arrA","arrB","operationResult","beforeDict","WeakMap","Mirror","observers","Map","ObserverInfo","callback","observer","generate","invertible","mirror","get","_generate","patches","temp","toJSON","newKeys","oldKeys","deleted","oldVal","newVal","root","unobserve","getMirror","observerInfo","getObserverFromMirror","set","dirtyCheck","fastCheck","clearTimeout","setTimeout","window","addEventListener","delete","removeObserverFromMirror","removeEventListener","tree1","tree2","assign","core","duplex","stringOrChar","jsonStringifyPrettyCompact","passedObj","options","indent","maxLength","replacer","Infinity","_stringify","currentIndent","reserved","end","items","keyPart","nextIndent","prettified","start","string","match","stringLiteral","_arrayLikeToArray","arr2","_unsupportedIterableToArray","o","minLen","arrayLikeToArray","n","_toConsumableArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","yallist","Yallist","list","tail","head","item","l","insert","node","inserted","Node","unshift","removeNode","unshiftNode","pushNode","res","shift","thisp","walker","forEachReverse","getReverse","map","mapReverse","reduce","initial","acc","reduceReverse","toArray","toArrayReverse","to","ret","sliceReverse","deleteCount","er","require$$0","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","LRUCache","max","lc","stale","maxAge","dispose","noDisposeOnSet","updateAgeOnGet","mL","trim","allowStale","mA","lC","hit","forEachStep","_this2","isStale","_this3","v","now","filter","h","Date","has","del","Entry","expiresAt","_this4","doUse","diff","lruCache","opts","parseOptions_1","loose","constants","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_INTEGER","Number","MAX_SAFE_COMPONENT_LENGTH","debug","process","env","NODE_DEBUG","console","debug_1","require$$1","re","exports","module","src","R","createToken","isGlobal","RegExp","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","LONECARET","numeric","compareIdentifiers","anum","bnum","identifiers","require$$2","parseOptions","require$$3","require$$4","SemVer","version","includePrerelease","m","LOOSE","FULL","raw","major","minor","prerelease","id","num","build","format","other","compareMain","comparePre","release","identifier","inc","semver","compare_1","compare","eq","neq","gt","gte","lt","lte","cmp_1","ANY","Comparator","comp","operator","r","COMPARATORLOOSE","COMPARATOR","cmp","Range","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","comparator","require$$5","range","parseRange","c","first","isNullSet","isAny","comps","memoOpts","memoKey","cached","cache","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","comparatorTrimReplace","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","compRe","rangeList","parseComparator","replaceGTE0","rangeMap","size","some","thisComparators","isSatisfiable","rangeComparators","every","thisComparator","rangeComparator","intersects","testSet","comparators","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","toLowerCase","replaceTilde","TILDELOOSE","TILDE","_","M","pr","replaceCaret","CARETLOOSE","CARET","z","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","$0","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","tb","allowed","satisfies_1","Constants","NaN","E","Math","LN2","LN10","LOG2E","LOG10E","PI","SQRT1_2","SQRT2","MIN_VALUE","MAX_VALUE","Ops","Unary","cast","Functions","isFinite","abs","acos","asin","atan","atan2","ceil","cos","exp","floor","log","min","pow","random","round","sin","sqrt","tan","clamp","utc","UTC","datetime","y","H","S","ms","date","getDate","day","getDay","year","getFullYear","month","getMonth","hours","getHours","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","time","getTime","timezoneoffset","getTimezoneOffset","utcdate","getUTCDate","utcday","getUTCDay","utcyear","getUTCFullYear","utcmonth","getUTCMonth","utchours","getUTCHours","utcminutes","getUTCMinutes","utcseconds","getUTCSeconds","utcmilliseconds","getUTCMilliseconds","x","indexof","lastindexof","parseFloat","parseInt","upper","String","toUpperCase","lower","substring","regexp","EventFunctions","Visitors","Literal","$","Identifier","memberDepth","datum","event","params","MemberExpression","computed","property","CallExpression","callee","startsWith","ArrayExpression","elements","BinaryExpression","left","right","UnaryExpression","argument","ConditionalExpression","consequent","alternate","LogicalExpression","ObjectExpression","properties","interpret","ast","f","vega","expression","ctx","expr","functions","parameter","handler","encode","marktype","channels","swap","x2","width","xc","y2","height","yc","adjustSpatial","_slicedToArray","arrayWithHoles","_i","_s","_e","_arr","_n","_d","iterableToArrayLimit","nonIterableRest","url","exec","lightColor","darkTheme","background","title","color","subtitleColor","style","fill","axis","domainColor","gridColor","tickColor","markColor","excelTheme","arc","area","line","stroke","strokeWidth","rect","shape","symbol","bandPosition","grid","gridOpacity","gridWidth","labelPadding","tickSize","tickWidth","axisBand","tickExtra","legend","labelBaseline","labelFontSize","symbolSize","symbolType","category","markColor$1","axisColor","backgroundColor","blackTitle","fiveThirtyEightTheme","labelColor","titleColor","titleFontSize","titlePadding","group","padding","diverging","heatmap","point","filled","bar","binSpacing","anchor","fontSize","fontWeight","offset","markColor$2","ggplot2Theme","domain","titleFontWeight","labelFont","markColor$3","titleFont","colorSchemes","latimesTheme","font","labelFontWeight","axisX","labelAngle","axisY","maxExtent","minExtent","titleAlign","titleAngle","titleX","titleY","ordinal","ramp","markColor$4","axisColor$1","quartzTheme","domainWidth","markColor$5","voxTheme","gridDash","markColor$6","axisColor$2","labelFont$1","colorSchemes$1","urbanInstituteTheme","ticks","orient","view","trail","text","align","markColor$7","gridColor$1","defaultFont","googlechartsTheme","circle","top","bottom","dy","version$1","accessor","fields","fname","getter","get1","getN","field","opt","j","q","s","splitAccessPath","isObject","maxDepth","stack","pos","EL_ID","DEFAULT_OPTIONS","offsetX","offsetY","styleId","theme","disableDefaultStyle","sanitize","formatTooltip","valueToHtml","content","_a","image","rest","getOwnPropertySymbols","propertyIsEnumerable","__rest","val","Handler","elementId","el","tooltipHandler","bind","getElementById","createElement","setAttribute","innerHTML","createDefaultStyle","childNodes","insertBefore","appendChild","classList","fullscreenElement","body","tooltipBox","clientX","innerWidth","clientY","innerHeight","calculatePosition","getBoundingClientRect","data","editor","open","origin","URL","count","listen","evt","source","send","postMessage","isURL","mergeDeep","dest","deepMerge_","search","substr","vegaImport","vegaLite","vegaLiteImport","w","vl","_w$vl","compile","DEFAULT_ACTIONS","I18N","NAMES","VERSION","PREPROCESSOR","vgSpec","vlSpec","config","spec","SVG_CIRCLES","CHART_WRAPPER_CLASS","isTooltipHandler","viewSource","sourceHeader","sourceFooter","mode","header","footer","win","write","guessMode","providedMode","$schema","parsed","schemaParser","library","warn","satisfies","createLoader","loader","embedOptionsFromUsermeta","parsedSpec","usermeta","_parsedSpec$usermeta","embedOptions","isString","defaultStyle","embed","load","loadedEmbedOptions","usermetaLoader","loadOpts","parsedOpts","usermetaOpts","mergeConfig","_embed","mergedOpts","getRoot","possibleRoot","getRootNode","ShadowRoot","finalize","documentClickHandler","themes","isBoolean","actions","i18n","renderer","logLevel","Warn","downloadFileName","querySelector","element","rootContainer","ID","chartWrapper","Function","formatLocale","timeFormatLocale","viewClass","View","runtime","expressionInterpreter","addSignalListener","autosize","tooltip","hover","hoverSet","updateSet","initialize","container","runAsync","CLICK_TO_VIEW_ACTIONS","append","details","summary","ev","contains","removeAttribute","ctrl","export","ext","i18nExportAction","exportLink","href","download","preventDefault","toImageURL","scaleFactor","SOURCE_ACTION","viewSourceLink","compiled","COMPILED_ACTION","compileLink","editorUrl","EDITOR_ACTION","editorLink","div","wrapper","isElement","HTMLElement","default"],"mappings":"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"}