@jupyterlite/pyodide-kernel 0.1.3 → 0.2.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/worker.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../node_modules/@lumino/algorithm/src/array.ts", "../../../node_modules/@lumino/algorithm/src/iter.ts", "../../../node_modules/@lumino/algorithm/src/chain.ts", "../../../node_modules/@lumino/algorithm/src/empty.ts", "../../../node_modules/@lumino/algorithm/src/enumerate.ts", "../../../node_modules/@lumino/algorithm/src/filter.ts", "../../../node_modules/@lumino/algorithm/src/find.ts", "../../../node_modules/@lumino/algorithm/src/map.ts", "../../../node_modules/@lumino/algorithm/src/range.ts", "../../../node_modules/@lumino/algorithm/src/reduce.ts", "../../../node_modules/@lumino/algorithm/src/repeat.ts", "../../../node_modules/@lumino/algorithm/src/retro.ts", "../../../node_modules/@lumino/algorithm/src/sort.ts", "../../../node_modules/@lumino/algorithm/src/stride.ts", "../../../node_modules/@lumino/algorithm/src/string.ts", "../../../node_modules/@lumino/algorithm/src/take.ts", "../../../node_modules/@lumino/algorithm/src/zip.ts", "../../../node_modules/@lumino/properties/src/index.ts", "../../../node_modules/@lumino/signaling/src/index.ts", "../../../node_modules/@jupyterlab/coreutils/src/activitymonitor.ts", "../../../node_modules/@jupyterlab/coreutils/src/markdowncodeblocks.ts", "../../../node_modules/@lumino/coreutils/src/json.ts", "../../../node_modules/@lumino/coreutils/src/mime.ts", "../../../node_modules/@lumino/coreutils/src/promise.ts", "../../../node_modules/@lumino/coreutils/src/token.ts", "../../../node_modules/@lumino/coreutils/src/random.ts", "../../../node_modules/@lumino/coreutils/src/random.browser.ts", "../../../node_modules/@lumino/coreutils/src/uuid.ts", "../../../node_modules/@lumino/coreutils/src/uuid.browser.ts", "../../../node_modules/minimist/index.js", "../../../node_modules/path-browserify/index.js", "../../../node_modules/requires-port/index.js", "../../../node_modules/querystringify/index.js", "../../../node_modules/url-parse/index.js", "../../../node_modules/@jupyterlab/coreutils/src/url.ts", "../../../node_modules/@jupyterlab/coreutils/src/pageconfig.ts", "../../../node_modules/@jupyterlab/coreutils/src/path.ts", "../../../node_modules/@jupyterlab/coreutils/src/text.ts", "../../../node_modules/moment/moment.js", "../../../node_modules/@jupyterlab/coreutils/src/time.ts", "../../../node_modules/@jupyterlab/coreutils/src/index.ts", "../../../node_modules/mime/Mime.js", "../../../node_modules/mime/types/standard.js", "../../../node_modules/mime/types/other.js", "../../../node_modules/mime/index.js", "../../../node_modules/@jupyterlite/contents/src/tokens.ts", "../../../node_modules/@jupyterlite/contents/src/contents.ts", "../../../node_modules/@jupyterlite/contents/src/emscripten.ts", "../../../node_modules/@jupyterlite/contents/src/drivefs.ts", "../../../node_modules/@jupyterlite/contents/src/broadcast.ts", "../../../node_modules/@jupyterlite/contents/src/index.ts", "../src/worker.ts"],
4
- "sourcesContent": ["// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * The namespace for array-specific algorithms.\n */\nexport namespace ArrayExt {\n /**\n * Find the index of the first occurrence of a value in an array.\n *\n * @param array - The array-like object to search.\n *\n * @param value - The value to locate in the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first occurrence of the value, or `-1`\n * if the value is not found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four', 'one'];\n * ArrayExt.firstIndexOf(data, 'red'); // -1\n * ArrayExt.firstIndexOf(data, 'one'); // 0\n * ArrayExt.firstIndexOf(data, 'one', 1); // 4\n * ArrayExt.firstIndexOf(data, 'two', 2); // -1\n * ArrayExt.firstIndexOf(data, 'two', 2, 1); // 1\n * ```\n */\n export function firstIndexOf<T>(\n array: ArrayLike<T>,\n value: T,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let span: number;\n if (stop < start) {\n span = stop + 1 + (n - start);\n } else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start + i) % n;\n if (array[j] === value) {\n return j;\n }\n }\n return -1;\n }\n\n /**\n * Find the index of the last occurrence of a value in an array.\n *\n * @param array - The array-like object to search.\n *\n * @param value - The value to locate in the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the last occurrence of the value, or `-1`\n * if the value is not found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four', 'one'];\n * ArrayExt.lastIndexOf(data, 'red'); // -1\n * ArrayExt.lastIndexOf(data, 'one'); // 4\n * ArrayExt.lastIndexOf(data, 'one', 1); // 0\n * ArrayExt.lastIndexOf(data, 'two', 0); // -1\n * ArrayExt.lastIndexOf(data, 'two', 0, 1); // 1\n * ```\n */\n export function lastIndexOf<T>(\n array: ArrayLike<T>,\n value: T,\n start = -1,\n stop = 0\n ): number {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let span: number;\n if (start < stop) {\n span = start + 1 + (n - stop);\n } else {\n span = start - stop + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start - i + n) % n;\n if (array[j] === value) {\n return j;\n }\n }\n return -1;\n }\n\n /**\n * Find the index of the first value which matches a predicate.\n *\n * @param array - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first matching value, or `-1` if no\n * matching value is found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findFirstIndex(data, isEven); // 1\n * ArrayExt.findFirstIndex(data, isEven, 4); // 5\n * ArrayExt.findFirstIndex(data, isEven, 6); // -1\n * ArrayExt.findFirstIndex(data, isEven, 6, 5); // 1\n * ```\n */\n export function findFirstIndex<T>(\n array: ArrayLike<T>,\n fn: (value: T, index: number) => boolean,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let span: number;\n if (stop < start) {\n span = stop + 1 + (n - start);\n } else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start + i) % n;\n if (fn(array[j], j)) {\n return j;\n }\n }\n return -1;\n }\n\n /**\n * Find the index of the last value which matches a predicate.\n *\n * @param object - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the last matching value, or `-1` if no\n * matching value is found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findLastIndex(data, isEven); // 5\n * ArrayExt.findLastIndex(data, isEven, 4); // 3\n * ArrayExt.findLastIndex(data, isEven, 0); // -1\n * ArrayExt.findLastIndex(data, isEven, 0, 1); // 5\n * ```\n */\n export function findLastIndex<T>(\n array: ArrayLike<T>,\n fn: (value: T, index: number) => boolean,\n start = -1,\n stop = 0\n ): number {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let d: number;\n if (start < stop) {\n d = start + 1 + (n - stop);\n } else {\n d = start - stop + 1;\n }\n for (let i = 0; i < d; ++i) {\n let j = (start - i + n) % n;\n if (fn(array[j], j)) {\n return j;\n }\n }\n return -1;\n }\n\n /**\n * Find the first value which matches a predicate.\n *\n * @param array - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The first matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findFirstValue(data, isEven); // 2\n * ArrayExt.findFirstValue(data, isEven, 2); // 4\n * ArrayExt.findFirstValue(data, isEven, 6); // undefined\n * ArrayExt.findFirstValue(data, isEven, 6, 5); // 2\n * ```\n */\n export function findFirstValue<T>(\n array: ArrayLike<T>,\n fn: (value: T, index: number) => boolean,\n start = 0,\n stop = -1\n ): T | undefined {\n let index = findFirstIndex(array, fn, start, stop);\n return index !== -1 ? array[index] : undefined;\n }\n\n /**\n * Find the last value which matches a predicate.\n *\n * @param object - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The last matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findLastValue(data, isEven); // 2\n * ArrayExt.findLastValue(data, isEven, 4); // 4\n * ArrayExt.findLastValue(data, isEven, 0); // undefined\n * ArrayExt.findLastValue(data, isEven, 0, 1); // 2\n * ```\n */\n export function findLastValue<T>(\n array: ArrayLike<T>,\n fn: (value: T, index: number) => boolean,\n start = -1,\n stop = 0\n ): T | undefined {\n let index = findLastIndex(array, fn, start, stop);\n return index !== -1 ? array[index] : undefined;\n }\n\n /**\n * Find the index of the first element which compares `>=` to a value.\n *\n * @param array - The sorted array-like object to search.\n *\n * @param value - The value to locate in the array.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if an element is less than a value, `0` if\n * an element is equal to a value, or `> 0` if an element is greater\n * than a value.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first element which compares `>=` to the\n * value, or `length` if there is no such element. If the computed\n * index for `stop` is less than `start`, then the computed index\n * for `start` is returned.\n *\n * #### Notes\n * The array must already be sorted in ascending order according to\n * the comparison function.\n *\n * #### Complexity\n * Logarithmic.\n *\n * #### Undefined Behavior\n * Searching a range which is not sorted in ascending order.\n *\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.lowerBound(data, 0, numberCmp); // 0\n * ArrayExt.lowerBound(data, 6, numberCmp); // 3\n * ArrayExt.lowerBound(data, 7, numberCmp); // 3\n * ArrayExt.lowerBound(data, -1, numberCmp); // 0\n * ArrayExt.lowerBound(data, 10, numberCmp); // 6\n * ```\n */\n export function lowerBound<T, U>(\n array: ArrayLike<T>,\n value: U,\n fn: (element: T, value: U) => number,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let begin = start;\n let span = stop - start + 1;\n while (span > 0) {\n let half = span >> 1;\n let middle = begin + half;\n if (fn(array[middle], value) < 0) {\n begin = middle + 1;\n span -= half + 1;\n } else {\n span = half;\n }\n }\n return begin;\n }\n\n /**\n * Find the index of the first element which compares `>` than a value.\n *\n * @param array - The sorted array-like object to search.\n *\n * @param value - The value to locate in the array.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if an element is less than a value, `0` if\n * an element is equal to a value, or `> 0` if an element is greater\n * than a value.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first element which compares `>` than the\n * value, or `length` if there is no such element. If the computed\n * index for `stop` is less than `start`, then the computed index\n * for `start` is returned.\n *\n * #### Notes\n * The array must already be sorted in ascending order according to\n * the comparison function.\n *\n * #### Complexity\n * Logarithmic.\n *\n * #### Undefined Behavior\n * Searching a range which is not sorted in ascending order.\n *\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.upperBound(data, 0, numberCmp); // 1\n * ArrayExt.upperBound(data, 6, numberCmp); // 3\n * ArrayExt.upperBound(data, 7, numberCmp); // 5\n * ArrayExt.upperBound(data, -1, numberCmp); // 0\n * ArrayExt.upperBound(data, 10, numberCmp); // 6\n * ```\n */\n export function upperBound<T, U>(\n array: ArrayLike<T>,\n value: U,\n fn: (element: T, value: U) => number,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let begin = start;\n let span = stop - start + 1;\n while (span > 0) {\n let half = span >> 1;\n let middle = begin + half;\n if (fn(array[middle], value) > 0) {\n span = half;\n } else {\n begin = middle + 1;\n span -= half + 1;\n }\n }\n return begin;\n }\n\n /**\n * Test whether two arrays are shallowly equal.\n *\n * @param a - The first array-like object to compare.\n *\n * @param b - The second array-like object to compare.\n *\n * @param fn - The comparison function to apply to the elements. It\n * should return `true` if the elements are \"equal\". The default\n * compares elements using strict `===` equality.\n *\n * @returns Whether the two arrays are shallowly equal.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * Modifying the length of the arrays while comparing.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let d1 = [0, 3, 4, 7, 7, 9];\n * let d2 = [0, 3, 4, 7, 7, 9];\n * let d3 = [42];\n * ArrayExt.shallowEqual(d1, d2); // true\n * ArrayExt.shallowEqual(d2, d3); // false\n * ```\n */\n export function shallowEqual<T>(\n a: ArrayLike<T>,\n b: ArrayLike<T>,\n fn?: (a: T, b: T) => boolean\n ): boolean {\n // Check for object identity first.\n if (a === b) {\n return true;\n }\n\n // Bail early if the lengths are different.\n if (a.length !== b.length) {\n return false;\n }\n\n // Compare each element for equality.\n for (let i = 0, n = a.length; i < n; ++i) {\n if (fn ? !fn(a[i], b[i]) : a[i] !== b[i]) {\n return false;\n }\n }\n\n // The array are shallowly equal.\n return true;\n }\n\n /**\n * Create a slice of an array subject to an optional step.\n *\n * @param array - The array-like object of interest.\n *\n * @param options - The options for configuring the slice.\n *\n * @returns A new array with the specified values.\n *\n * @throws An exception if the slice `step` is `0`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start`, `stop`, or `step` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.slice(data); // [0, 3, 4, 7, 7, 9]\n * ArrayExt.slice(data, { start: 2 }); // [4, 7, 7, 9]\n * ArrayExt.slice(data, { start: 0, stop: 4 }); // [0, 3, 4, 7]\n * ArrayExt.slice(data, { step: 2 }); // [0, 4, 7]\n * ArrayExt.slice(data, { step: -1 }); // [9, 7, 7, 4, 3, 0]\n * ```\n */\n export function slice<T>(\n array: ArrayLike<T>,\n options: slice.IOptions = {}\n ): T[] {\n // Extract the options.\n let { start, stop, step } = options;\n\n // Set up the `step` value.\n if (step === undefined) {\n step = 1;\n }\n\n // Validate the step size.\n if (step === 0) {\n throw new Error('Slice `step` cannot be zero.');\n }\n\n // Look up the length of the array.\n let n = array.length;\n\n // Set up the `start` value.\n if (start === undefined) {\n start = step < 0 ? n - 1 : 0;\n } else if (start < 0) {\n start = Math.max(start + n, step < 0 ? -1 : 0);\n } else if (start >= n) {\n start = step < 0 ? n - 1 : n;\n }\n\n // Set up the `stop` value.\n if (stop === undefined) {\n stop = step < 0 ? -1 : n;\n } else if (stop < 0) {\n stop = Math.max(stop + n, step < 0 ? -1 : 0);\n } else if (stop >= n) {\n stop = step < 0 ? n - 1 : n;\n }\n\n // Compute the slice length.\n let length;\n if ((step < 0 && stop >= start) || (step > 0 && start >= stop)) {\n length = 0;\n } else if (step < 0) {\n length = Math.floor((stop - start + 1) / step + 1);\n } else {\n length = Math.floor((stop - start - 1) / step + 1);\n }\n\n // Compute the sliced result.\n let result: T[] = [];\n for (let i = 0; i < length; ++i) {\n result[i] = array[start + i * step];\n }\n\n // Return the result.\n return result;\n }\n\n /**\n * The namespace for the `slice` function statics.\n */\n export namespace slice {\n /**\n * The options for the `slice` function.\n */\n export interface IOptions {\n /**\n * The starting index of the slice, inclusive.\n *\n * Negative values are taken as an offset from the end\n * of the array.\n *\n * The default is `0` if `step > 0` else `n - 1`.\n */\n start?: number;\n\n /**\n * The stopping index of the slice, exclusive.\n *\n * Negative values are taken as an offset from the end\n * of the array.\n *\n * The default is `n` if `step > 0` else `-n - 1`.\n */\n stop?: number;\n\n /**\n * The step value for the slice.\n *\n * This must not be `0`.\n *\n * The default is `1`.\n */\n step?: number;\n }\n }\n\n /**\n * An array-like object which supports item assignment.\n */\n export type MutableArrayLike<T> = {\n readonly length: number;\n [index: number]: T;\n };\n\n /**\n * Move an element in an array from one index to another.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param fromIndex - The index of the element to move. Negative\n * values are taken as an offset from the end of the array.\n *\n * @param toIndex - The target index of the element. Negative\n * values are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `fromIndex` or `toIndex` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.move(data, 1, 2); // [0, 2, 1, 3, 4]\n * ArrayExt.move(data, 4, 2); // [0, 2, 4, 1, 3]\n * ```\n */\n export function move<T>(\n array: MutableArrayLike<T>,\n fromIndex: number,\n toIndex: number\n ): void {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (fromIndex < 0) {\n fromIndex = Math.max(0, fromIndex + n);\n } else {\n fromIndex = Math.min(fromIndex, n - 1);\n }\n if (toIndex < 0) {\n toIndex = Math.max(0, toIndex + n);\n } else {\n toIndex = Math.min(toIndex, n - 1);\n }\n if (fromIndex === toIndex) {\n return;\n }\n let value = array[fromIndex];\n let d = fromIndex < toIndex ? 1 : -1;\n for (let i = fromIndex; i !== toIndex; i += d) {\n array[i] = array[i + d];\n }\n array[toIndex] = value;\n }\n\n /**\n * Reverse an array in-place.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param start - The index of the first element in the range to be\n * reversed, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * reversed, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` index which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.reverse(data, 1, 3); // [0, 3, 2, 1, 4]\n * ArrayExt.reverse(data, 3); // [0, 3, 2, 4, 1]\n * ArrayExt.reverse(data); // [1, 4, 2, 3, 0]\n * ```\n */\n export function reverse<T>(\n array: MutableArrayLike<T>,\n start = 0,\n stop = -1\n ): void {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n while (start < stop) {\n let a = array[start];\n let b = array[stop];\n array[start++] = b;\n array[stop--] = a;\n }\n }\n\n /**\n * Rotate the elements of an array in-place.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param delta - The amount of rotation to apply to the elements. A\n * positive value will rotate the elements to the left. A negative\n * value will rotate the elements to the right.\n *\n * @param start - The index of the first element in the range to be\n * rotated, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * rotated, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `delta`, `start`, or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.rotate(data, 2); // [2, 3, 4, 0, 1]\n * ArrayExt.rotate(data, -2); // [0, 1, 2, 3, 4]\n * ArrayExt.rotate(data, 10); // [0, 1, 2, 3, 4]\n * ArrayExt.rotate(data, 9); // [4, 0, 1, 2, 3]\n * ArrayExt.rotate(data, 2, 1, 3); // [4, 2, 0, 1, 3]\n * ```\n */\n export function rotate<T>(\n array: MutableArrayLike<T>,\n delta: number,\n start = 0,\n stop = -1\n ): void {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n if (start >= stop) {\n return;\n }\n let length = stop - start + 1;\n if (delta > 0) {\n delta = delta % length;\n } else if (delta < 0) {\n delta = ((delta % length) + length) % length;\n }\n if (delta === 0) {\n return;\n }\n let pivot = start + delta;\n reverse(array, start, pivot - 1);\n reverse(array, pivot, stop);\n reverse(array, start, stop);\n }\n\n /**\n * Fill an array with a static value.\n *\n * @param array - The mutable array-like object to fill.\n *\n * @param value - The static value to use to fill the array.\n *\n * @param start - The index of the first element in the range to be\n * filled, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * filled, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Notes\n * If `stop < start` the fill will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four'];\n * ArrayExt.fill(data, 'r'); // ['r', 'r', 'r', 'r']\n * ArrayExt.fill(data, 'g', 1); // ['r', 'g', 'g', 'g']\n * ArrayExt.fill(data, 'b', 2, 3); // ['r', 'g', 'b', 'b']\n * ArrayExt.fill(data, 'z', 3, 1); // ['z', 'z', 'b', 'z']\n * ```\n */\n export function fill<T>(\n array: MutableArrayLike<T>,\n value: T,\n start = 0,\n stop = -1\n ): void {\n let n = array.length;\n if (n === 0) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let span: number;\n if (stop < start) {\n span = stop + 1 + (n - start);\n } else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n array[(start + i) % n] = value;\n }\n }\n\n /**\n * Insert a value into an array at a specific index.\n *\n * @param array - The array of interest.\n *\n * @param index - The index at which to insert the value. Negative\n * values are taken as an offset from the end of the array.\n *\n * @param value - The value to set at the specified index.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * An `index` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2];\n * ArrayExt.insert(data, 0, -1); // [-1, 0, 1, 2]\n * ArrayExt.insert(data, 2, 12); // [-1, 0, 12, 1, 2]\n * ArrayExt.insert(data, -1, 7); // [-1, 0, 12, 1, 7, 2]\n * ArrayExt.insert(data, 6, 19); // [-1, 0, 12, 1, 7, 2, 19]\n * ```\n */\n export function insert<T>(array: Array<T>, index: number, value: T): void {\n let n = array.length;\n if (index < 0) {\n index = Math.max(0, index + n);\n } else {\n index = Math.min(index, n);\n }\n for (let i = n; i > index; --i) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n }\n\n /**\n * Remove and return a value at a specific index in an array.\n *\n * @param array - The array of interest.\n *\n * @param index - The index of the value to remove. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The value at the specified index, or `undefined` if the\n * index is out of range.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * An `index` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeAt(data, 2); // 23\n * ArrayExt.removeAt(data, -2); // 12\n * ArrayExt.removeAt(data, 10); // undefined;\n * ```\n */\n export function removeAt<T>(array: Array<T>, index: number): T | undefined {\n let n = array.length;\n if (index < 0) {\n index += n;\n }\n if (index < 0 || index >= n) {\n return undefined;\n }\n let value = array[index];\n for (let i = index + 1; i < n; ++i) {\n array[i - 1] = array[i];\n }\n array.length = n - 1;\n return value;\n }\n\n /**\n * Remove the first occurrence of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the removed value, or `-1` if the value\n * is not contained in the array.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeFirstOf(data, 12); // 1\n * ArrayExt.removeFirstOf(data, 17); // -1\n * ArrayExt.removeFirstOf(data, 39, 3); // -1\n * ArrayExt.removeFirstOf(data, 39, 3, 2); // 2\n * ```\n */\n export function removeFirstOf<T>(\n array: Array<T>,\n value: T,\n start = 0,\n stop = -1\n ): number {\n let index = firstIndexOf(array, value, start, stop);\n if (index !== -1) {\n removeAt(array, index);\n }\n return index;\n }\n\n /**\n * Remove the last occurrence of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the removed value, or `-1` if the value\n * is not contained in the array.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeLastOf(data, 12); // 5\n * ArrayExt.removeLastOf(data, 17); // -1\n * ArrayExt.removeLastOf(data, 39, 2); // -1\n * ArrayExt.removeLastOf(data, 39, 2, 3); // 3\n * ```\n */\n export function removeLastOf<T>(\n array: Array<T>,\n value: T,\n start = -1,\n stop = 0\n ): number {\n let index = lastIndexOf(array, value, start, stop);\n if (index !== -1) {\n removeAt(array, index);\n }\n return index;\n }\n\n /**\n * Remove all occurrences of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The number of elements removed from the array.\n *\n * #### Notes\n * If `stop < start` the search will conceptually wrap at the end of\n * the array, however the array will be traversed front-to-back.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [14, 12, 23, 39, 14, 12, 19, 14];\n * ArrayExt.removeAllOf(data, 12); // 2\n * ArrayExt.removeAllOf(data, 17); // 0\n * ArrayExt.removeAllOf(data, 14, 1, 4); // 1\n * ```\n */\n export function removeAllOf<T>(\n array: Array<T>,\n value: T,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let count = 0;\n for (let i = 0; i < n; ++i) {\n if (start <= stop && i >= start && i <= stop && array[i] === value) {\n count++;\n } else if (\n stop < start &&\n (i <= stop || i >= start) &&\n array[i] === value\n ) {\n count++;\n } else if (count > 0) {\n array[i - count] = array[i];\n }\n }\n if (count > 0) {\n array.length = n - count;\n }\n return count;\n }\n\n /**\n * Remove the first occurrence of a value which matches a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The removed `{ index, value }`, which will be `-1` and\n * `undefined` if the value is not contained in the array.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeFirstWhere(data, isEven); // { index: 0, value: 0 }\n * ArrayExt.removeFirstWhere(data, isEven, 2); // { index: 3, value: 14 }\n * ArrayExt.removeFirstWhere(data, isEven, 4); // { index: -1, value: undefined }\n * ```\n */\n export function removeFirstWhere<T>(\n array: Array<T>,\n fn: (value: T, index: number) => boolean,\n start = 0,\n stop = -1\n ): { index: number; value: T | undefined } {\n let value: T | undefined;\n let index = findFirstIndex(array, fn, start, stop);\n if (index !== -1) {\n value = removeAt(array, index);\n }\n return { index, value };\n }\n\n /**\n * Remove the last occurrence of a value which matches a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The removed `{ index, value }`, which will be `-1` and\n * `undefined` if the value is not contained in the array.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeLastWhere(data, isEven); // { index: 5, value: 12 }\n * ArrayExt.removeLastWhere(data, isEven, 2); // { index: 1, value: 12 }\n * ArrayExt.removeLastWhere(data, isEven, 2, 1); // { index: -1, value: undefined }\n * ```\n */\n export function removeLastWhere<T>(\n array: Array<T>,\n fn: (value: T, index: number) => boolean,\n start = -1,\n stop = 0\n ): { index: number; value: T | undefined } {\n let value: T | undefined;\n let index = findLastIndex(array, fn, start, stop);\n if (index !== -1) {\n value = removeAt(array, index);\n }\n return { index, value };\n }\n\n /**\n * Remove all occurrences of values which match a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The number of elements removed from the array.\n *\n * #### Notes\n * If `stop < start` the search will conceptually wrap at the end of\n * the array, however the array will be traversed front-to-back.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * function isNegative(value: number): boolean {\n * return value < 0;\n * }\n *\n * let data = [0, 12, -13, -9, 23, 39, 14, -15, 12, 75];\n * ArrayExt.removeAllWhere(data, isEven); // 4\n * ArrayExt.removeAllWhere(data, isNegative, 0, 3); // 2\n * ```\n */\n export function removeAllWhere<T>(\n array: Array<T>,\n fn: (value: T, index: number) => boolean,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let count = 0;\n for (let i = 0; i < n; ++i) {\n if (start <= stop && i >= start && i <= stop && fn(array[i], i)) {\n count++;\n } else if (stop < start && (i <= stop || i >= start) && fn(array[i], i)) {\n count++;\n } else if (count > 0) {\n array[i - count] = array[i];\n }\n }\n if (count > 0) {\n array.length = n - count;\n }\n return count;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * An object which can produce an iterator over its values.\n */\nexport interface IIterable<T> {\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n *\n * #### Notes\n * Depending on the iterable, the returned iterator may or may not be\n * a new object. A collection or other container-like object should\n * typically return a new iterator, while an iterator itself should\n * normally return `this`.\n */\n iter(): IIterator<T>;\n}\n\n/**\n * An object which traverses a collection of values.\n *\n * #### Notes\n * An `IIterator` is itself an `IIterable`. Most implementations of\n * `IIterator` should simply return `this` from the `iter()` method.\n */\nexport interface IIterator<T> extends IIterable<T> {\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n *\n * #### Notes\n * The cloned iterator can be consumed independently of the current\n * iterator. In essence, it is a copy of the iterator value stream\n * which starts at the current location.\n *\n * This can be useful for lookahead and stream duplication.\n */\n clone(): IIterator<T>;\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n *\n * #### Notes\n * The `undefined` value is used to signal the end of iteration and\n * should therefore not be used as a value in a collection.\n *\n * The use of the `undefined` sentinel is an explicit design choice\n * which favors performance over purity. The ES6 iterator design of\n * returning a `{ value, done }` pair is suboptimal, as it requires\n * an object allocation on each iteration; and an `isDone()` method\n * would increase implementation and runtime complexity.\n */\n next(): T | undefined;\n}\n\n/**\n * A type alias for an iterable or builtin array-like object.\n */\nexport type IterableOrArrayLike<T> = IIterable<T> | ArrayLike<T>;\n\n/**\n * Create an iterator for an iterable object.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @returns A new iterator for the given object.\n *\n * #### Notes\n * This function allows iteration algorithms to operate on user-defined\n * iterable types and builtin array-like objects in a uniform fashion.\n */\nexport function iter<T>(object: IterableOrArrayLike<T>): IIterator<T> {\n let it: IIterator<T>;\n if (typeof (object as any).iter === 'function') {\n it = (object as IIterable<T>).iter();\n } else {\n it = new ArrayIterator<T>(object as ArrayLike<T>);\n }\n return it;\n}\n\n/**\n * Create an iterator for the keys in an object.\n *\n * @param object - The object of interest.\n *\n * @returns A new iterator for the keys in the given object.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { each, keys } from '@lumino/algorithm';\n *\n * let data = { one: 1, two: 2, three: 3 };\n *\n * each(keys(data), key => { console.log(key); }); // 'one', 'two', 'three'\n * ```\n */\nexport function iterKeys<T>(object: {\n readonly [key: string]: T;\n}): IIterator<string> {\n return new KeyIterator(object);\n}\n\n/**\n * Create an iterator for the values in an object.\n *\n * @param object - The object of interest.\n *\n * @returns A new iterator for the values in the given object.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { each, values } from '@lumino/algorithm';\n *\n * let data = { one: 1, two: 2, three: 3 };\n *\n * each(values(data), value => { console.log(value); }); // 1, 2, 3\n * ```\n */\nexport function iterValues<T>(object: {\n readonly [key: string]: T;\n}): IIterator<T> {\n return new ValueIterator<T>(object);\n}\n\n/**\n * Create an iterator for the items in an object.\n *\n * @param object - The object of interest.\n *\n * @returns A new iterator for the items in the given object.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { each, items } from '@lumino/algorithm';\n *\n * let data = { one: 1, two: 2, three: 3 };\n *\n * each(items(data), value => { console.log(value); }); // ['one', 1], ['two', 2], ['three', 3]\n * ```\n */\nexport function iterItems<T>(object: {\n readonly [key: string]: T;\n}): IIterator<[string, T]> {\n return new ItemIterator<T>(object);\n}\n\n/**\n * Create an iterator for an iterator-like function.\n *\n * @param fn - A function which behaves like an iterator `next` method.\n *\n * @returns A new iterator for the given function.\n *\n * #### Notes\n * The returned iterator **cannot** be cloned.\n *\n * #### Example\n * ```typescript\n * import { each, iterFn } from '@lumino/algorithm';\n *\n * let it = iterFn((() => {\n * let i = 0;\n * return () => i > 3 ? undefined : i++;\n * })());\n *\n * each(it, v => { console.log(v); }); // 0, 1, 2, 3\n * ```\n */\nexport function iterFn<T>(fn: () => T | undefined): IIterator<T> {\n return new FnIterator<T>(fn);\n}\n\n/**\n * Invoke a function for each value in an iterable.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @param fn - The callback function to invoke for each value.\n *\n * #### Notes\n * Iteration can be terminated early by returning `false` from the\n * callback function.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { each } from '@lumino/algorithm';\n *\n * let data = [5, 7, 0, -2, 9];\n *\n * each(data, value => { console.log(value); });\n * ```\n */\nexport function each<T>(\n object: IterableOrArrayLike<T>,\n fn: (value: T, index: number) => boolean | void\n): void {\n let index = 0;\n let it = iter(object);\n let value: T | undefined;\n while ((value = it.next()) !== undefined) {\n if (fn(value, index++) === false) {\n return;\n }\n }\n}\n\n/**\n * Test whether all values in an iterable satisfy a predicate.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns `true` if all values pass the test, `false` otherwise.\n *\n * #### Notes\n * Iteration terminates on the first `false` predicate result.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { every } from '@lumino/algorithm';\n *\n * let data = [5, 7, 1];\n *\n * every(data, value => value % 2 === 0); // false\n * every(data, value => value % 2 === 1); // true\n * ```\n */\nexport function every<T>(\n object: IterableOrArrayLike<T>,\n fn: (value: T, index: number) => boolean\n): boolean {\n let index = 0;\n let it = iter(object);\n let value: T | undefined;\n while ((value = it.next()) !== undefined) {\n if (!fn(value, index++)) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Test whether any value in an iterable satisfies a predicate.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns `true` if any value passes the test, `false` otherwise.\n *\n * #### Notes\n * Iteration terminates on the first `true` predicate result.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { some } from '@lumino/algorithm';\n *\n * let data = [5, 7, 1];\n *\n * some(data, value => value === 7); // true\n * some(data, value => value === 3); // false\n * ```\n */\nexport function some<T>(\n object: IterableOrArrayLike<T>,\n fn: (value: T, index: number) => boolean\n): boolean {\n let index = 0;\n let it = iter(object);\n let value: T | undefined;\n while ((value = it.next()) !== undefined) {\n if (fn(value, index++)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Create an array from an iterable of values.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @returns A new array of values from the given object.\n *\n * #### Example\n * ```typescript\n * import { iter, toArray } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = iter(data);\n *\n * toArray(stream); // [1, 2, 3, 4, 5, 6];\n * ```\n */\nexport function toArray<T>(object: IterableOrArrayLike<T>): T[] {\n let index = 0;\n let result: T[] = [];\n let it = iter(object);\n let value: T | undefined;\n while ((value = it.next()) !== undefined) {\n result[index++] = value;\n }\n return result;\n}\n\n/**\n * Create an object from an iterable of key/value pairs.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @returns A new object mapping keys to values.\n *\n * #### Example\n * ```typescript\n * import { toObject } from '@lumino/algorithm';\n *\n * let data = [['one', 1], ['two', 2], ['three', 3]];\n *\n * toObject(data); // { one: 1, two: 2, three: 3 }\n * ```\n */\nexport function toObject<T>(\n object: IterableOrArrayLike<[string, T]>\n): { [key: string]: T } {\n let it = iter(object);\n let pair: [string, T] | undefined;\n let result: { [key: string]: T } = {};\n while ((pair = it.next()) !== undefined) {\n result[pair[0]] = pair[1];\n }\n return result;\n}\n\n/**\n * An iterator for an array-like object.\n *\n * #### Notes\n * This iterator can be used for any builtin JS array-like object.\n */\nexport class ArrayIterator<T> implements IIterator<T> {\n /**\n * Construct a new array iterator.\n *\n * @param source - The array-like object of interest.\n */\n constructor(source: ArrayLike<T>) {\n this._source = source;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T> {\n let result = new ArrayIterator<T>(this._source);\n result._index = this._index;\n return result;\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T | undefined {\n if (this._index >= this._source.length) {\n return undefined;\n }\n return this._source[this._index++];\n }\n\n private _index = 0;\n private _source: ArrayLike<T>;\n}\n\n/**\n * An iterator for the keys in an object.\n *\n * #### Notes\n * This iterator can be used for any JS object.\n */\nexport class KeyIterator implements IIterator<string> {\n /**\n * Construct a new key iterator.\n *\n * @param source - The object of interest.\n *\n * @param keys - The keys to iterate, if known.\n */\n constructor(\n source: { readonly [key: string]: any },\n keys = Object.keys(source)\n ) {\n this._source = source;\n this._keys = keys;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<string> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<string> {\n let result = new KeyIterator(this._source, this._keys);\n result._index = this._index;\n return result;\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): string | undefined {\n if (this._index >= this._keys.length) {\n return undefined;\n }\n let key = this._keys[this._index++];\n if (key in this._source) {\n return key;\n }\n return this.next();\n }\n\n private _index = 0;\n private _keys: string[];\n private _source: { readonly [key: string]: any };\n}\n\n/**\n * An iterator for the values in an object.\n *\n * #### Notes\n * This iterator can be used for any JS object.\n */\nexport class ValueIterator<T> implements IIterator<T> {\n /**\n * Construct a new value iterator.\n *\n * @param source - The object of interest.\n *\n * @param keys - The keys to iterate, if known.\n */\n constructor(\n source: { readonly [key: string]: T },\n keys = Object.keys(source)\n ) {\n this._source = source;\n this._keys = keys;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T> {\n let result = new ValueIterator<T>(this._source, this._keys);\n result._index = this._index;\n return result;\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T | undefined {\n if (this._index >= this._keys.length) {\n return undefined;\n }\n let key = this._keys[this._index++];\n if (key in this._source) {\n return this._source[key];\n }\n return this.next();\n }\n\n private _index = 0;\n private _keys: string[];\n private _source: { readonly [key: string]: T };\n}\n\n/**\n * An iterator for the items in an object.\n *\n * #### Notes\n * This iterator can be used for any JS object.\n */\nexport class ItemIterator<T> implements IIterator<[string, T]> {\n /**\n * Construct a new item iterator.\n *\n * @param source - The object of interest.\n *\n * @param keys - The keys to iterate, if known.\n */\n constructor(\n source: { readonly [key: string]: T },\n keys = Object.keys(source)\n ) {\n this._source = source;\n this._keys = keys;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<[string, T]> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<[string, T]> {\n let result = new ItemIterator<T>(this._source, this._keys);\n result._index = this._index;\n return result;\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): [string, T] | undefined {\n if (this._index >= this._keys.length) {\n return undefined;\n }\n let key = this._keys[this._index++];\n if (key in this._source) {\n return [key, this._source[key]];\n }\n return this.next();\n }\n\n private _index = 0;\n private _keys: string[];\n private _source: { readonly [key: string]: T };\n}\n\n/**\n * An iterator for an iterator-like function.\n */\nexport class FnIterator<T> implements IIterator<T> {\n /**\n * Construct a new function iterator.\n *\n * @param fn - The iterator-like function of interest.\n */\n constructor(fn: () => T | undefined) {\n this._fn = fn;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T> {\n throw new Error('An `FnIterator` cannot be cloned.');\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T | undefined {\n return this._fn.call(undefined);\n }\n\n private _fn: () => T | undefined;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator, iter, IterableOrArrayLike } from './iter';\n\n/**\n * Chain together several iterables.\n *\n * @param objects - The iterable or array-like objects of interest.\n *\n * @returns An iterator which yields the values of the iterables\n * in the order in which they are supplied.\n *\n * #### Example\n * ```typescript\n * import { chain, toArray } from '@lumino/algorithm';\n *\n * let data1 = [1, 2, 3];\n * let data2 = [4, 5, 6];\n *\n * let stream = chain(data1, data2);\n *\n * toArray(stream); // [1, 2, 3, 4, 5, 6]\n * ```\n */\nexport function chain<T>(...objects: IterableOrArrayLike<T>[]): IIterator<T> {\n return new ChainIterator<T>(iter(objects.map(iter)));\n}\n\n/**\n * An iterator which chains together several iterators.\n */\nexport class ChainIterator<T> implements IIterator<T> {\n /**\n * Construct a new chain iterator.\n *\n * @param source - The iterator of iterators of interest.\n */\n constructor(source: IIterator<IIterator<T>>) {\n this._source = source;\n this._active = undefined;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T> {\n let result = new ChainIterator<T>(this._source.clone());\n result._active = this._active && this._active.clone();\n result._cloned = true;\n this._cloned = true;\n return result;\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T | undefined {\n if (this._active === undefined) {\n let active = this._source.next();\n if (active === undefined) {\n return undefined;\n }\n this._active = this._cloned ? active.clone() : active;\n }\n let value = this._active.next();\n if (value !== undefined) {\n return value;\n }\n this._active = undefined;\n return this.next();\n }\n\n private _source: IIterator<IIterator<T>>;\n private _active: IIterator<T> | undefined;\n private _cloned = false;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator } from './iter';\n\n/**\n * Create an empty iterator.\n *\n * @returns A new iterator which yields nothing.\n *\n * #### Example\n * ```typescript\n * import { empty, toArray } from '@lumino/algorithm';\n *\n * let stream = empty<number>();\n *\n * toArray(stream); // []\n * ```\n */\nexport function empty<T>(): IIterator<T> {\n return new EmptyIterator<T>();\n}\n\n/**\n * An iterator which is always empty.\n */\nexport class EmptyIterator<T> implements IIterator<T> {\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T> {\n return new EmptyIterator<T>();\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T | undefined {\n return undefined;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator, iter, IterableOrArrayLike } from './iter';\n\n/**\n * Enumerate an iterable object.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @param start - The starting enum value. The default is `0`.\n *\n * @returns An iterator which yields the enumerated values.\n *\n * #### Example\n * ```typescript\n * import { enumerate, toArray } from '@lumino/algorithm';\n *\n * let data = ['foo', 'bar', 'baz'];\n *\n * let stream = enumerate(data, 1);\n *\n * toArray(stream); // [[1, 'foo'], [2, 'bar'], [3, 'baz']]\n * ```\n */\nexport function enumerate<T>(\n object: IterableOrArrayLike<T>,\n start = 0\n): IIterator<[number, T]> {\n return new EnumerateIterator<T>(iter(object), start);\n}\n\n/**\n * An iterator which enumerates the source values.\n */\nexport class EnumerateIterator<T> implements IIterator<[number, T]> {\n /**\n * Construct a new enumerate iterator.\n *\n * @param source - The iterator of values of interest.\n *\n * @param start - The starting enum value.\n */\n constructor(source: IIterator<T>, start: number) {\n this._source = source;\n this._index = start;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<[number, T]> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<[number, T]> {\n return new EnumerateIterator<T>(this._source.clone(), this._index);\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): [number, T] | undefined {\n let value = this._source.next();\n if (value === undefined) {\n return undefined;\n }\n return [this._index++, value];\n }\n\n private _source: IIterator<T>;\n private _index: number;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator, iter, IterableOrArrayLike } from './iter';\n\n/**\n * Filter an iterable for values which pass a test.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns An iterator which yields the values which pass the test.\n *\n * #### Example\n * ```typescript\n * import { filter, toArray } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = filter(data, value => value % 2 === 0);\n *\n * toArray(stream); // [2, 4, 6]\n * ```\n */\nexport function filter<T>(\n object: IterableOrArrayLike<T>,\n fn: (value: T, index: number) => boolean\n): IIterator<T> {\n return new FilterIterator<T>(iter(object), fn);\n}\n\n/**\n * An iterator which yields values which pass a test.\n */\nexport class FilterIterator<T> implements IIterator<T> {\n /**\n * Construct a new filter iterator.\n *\n * @param source - The iterator of values of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n */\n constructor(source: IIterator<T>, fn: (value: T, index: number) => boolean) {\n this._source = source;\n this._fn = fn;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T> {\n let result = new FilterIterator<T>(this._source.clone(), this._fn);\n result._index = this._index;\n return result;\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T | undefined {\n let fn = this._fn;\n let it = this._source;\n let value: T | undefined;\n while ((value = it.next()) !== undefined) {\n if (fn(value, this._index++)) {\n return value;\n }\n }\n return undefined;\n }\n\n private _index = 0;\n private _source: IIterator<T>;\n private _fn: (value: T, index: number) => boolean;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { iter, IterableOrArrayLike } from './iter';\n\n/**\n * Find the first value in an iterable which matches a predicate.\n *\n * @param object - The iterable or array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @returns The first matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { find } from '@lumino/algorithm';\n *\n * interface IAnimal { species: string, name: string };\n *\n * function isCat(value: IAnimal): boolean {\n * return value.species === 'cat';\n * }\n *\n * let data: IAnimal[] = [\n * { species: 'dog', name: 'spot' },\n * { species: 'cat', name: 'fluffy' },\n * { species: 'alligator', name: 'pocho' }\n * ];\n *\n * find(data, isCat).name; // 'fluffy'\n * ```\n */\nexport function find<T>(\n object: IterableOrArrayLike<T>,\n fn: (value: T, index: number) => boolean\n): T | undefined {\n let index = 0;\n let it = iter(object);\n let value: T | undefined;\n while ((value = it.next()) !== undefined) {\n if (fn(value, index++)) {\n return value;\n }\n }\n return undefined;\n}\n\n/**\n * Find the index of the first value which matches a predicate.\n *\n * @param object - The iterable or array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @returns The index of the first matching value, or `-1` if no\n * matching value is found.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { findIndex } from '@lumino/algorithm';\n *\n * interface IAnimal { species: string, name: string };\n *\n * function isCat(value: IAnimal): boolean {\n * return value.species === 'cat';\n * }\n *\n * let data: IAnimal[] = [\n * { species: 'dog', name: 'spot' },\n * { species: 'cat', name: 'fluffy' },\n * { species: 'alligator', name: 'pocho' }\n * ];\n *\n * findIndex(data, isCat); // 1\n * ```\n */\nexport function findIndex<T>(\n object: IterableOrArrayLike<T>,\n fn: (value: T, index: number) => boolean\n): number {\n let index = 0;\n let it = iter(object);\n let value: T | undefined;\n while ((value = it.next()) !== undefined) {\n if (fn(value, index++)) {\n return index - 1;\n }\n }\n return -1;\n}\n\n/**\n * Find the minimum value in an iterable.\n *\n * @param object - The iterable or array-like object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns The minimum value in the iterable. If multiple values are\n * equivalent to the minimum, the left-most value is returned. If\n * the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { min } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * min([7, 4, 0, 3, 9, 4], numberCmp); // 0\n * ```\n */\nexport function min<T>(\n object: IterableOrArrayLike<T>,\n fn: (first: T, second: T) => number\n): T | undefined {\n let it = iter(object);\n let value = it.next();\n if (value === undefined) {\n return undefined;\n }\n let result = value;\n while ((value = it.next()) !== undefined) {\n if (fn(value, result) < 0) {\n result = value;\n }\n }\n return result;\n}\n\n/**\n * Find the maximum value in an iterable.\n *\n * @param object - The iterable or array-like object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns The maximum value in the iterable. If multiple values are\n * equivalent to the maximum, the left-most value is returned. If\n * the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { max } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * max([7, 4, 0, 3, 9, 4], numberCmp); // 9\n * ```\n */\nexport function max<T>(\n object: IterableOrArrayLike<T>,\n fn: (first: T, second: T) => number\n): T | undefined {\n let it = iter(object);\n let value = it.next();\n if (value === undefined) {\n return undefined;\n }\n let result = value;\n while ((value = it.next()) !== undefined) {\n if (fn(value, result) > 0) {\n result = value;\n }\n }\n return result;\n}\n\n/**\n * Find the minimum and maximum values in an iterable.\n *\n * @param object - The iterable or array-like object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns A 2-tuple of the `[min, max]` values in the iterable. If\n * multiple values are equivalent, the left-most values are returned.\n * If the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { minmax } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * minmax([7, 4, 0, 3, 9, 4], numberCmp); // [0, 9]\n * ```\n */\nexport function minmax<T>(\n object: IterableOrArrayLike<T>,\n fn: (first: T, second: T) => number\n): [T, T] | undefined {\n let it = iter(object);\n let value = it.next();\n if (value === undefined) {\n return undefined;\n }\n let vmin = value;\n let vmax = value;\n while ((value = it.next()) !== undefined) {\n if (fn(value, vmin) < 0) {\n vmin = value;\n } else if (fn(value, vmax) > 0) {\n vmax = value;\n }\n }\n return [vmin, vmax];\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator, iter, IterableOrArrayLike } from './iter';\n\n/**\n * Transform the values of an iterable with a mapping function.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @param fn - The mapping function to invoke for each value.\n *\n * @returns An iterator which yields the transformed values.\n *\n * #### Example\n * ```typescript\n * import { map, toArray } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3];\n *\n * let stream = map(data, value => value * 2);\n *\n * toArray(stream); // [2, 4, 6]\n * ```\n */\nexport function map<T, U>(\n object: IterableOrArrayLike<T>,\n fn: (value: T, index: number) => U\n): IIterator<U> {\n return new MapIterator<T, U>(iter(object), fn);\n}\n\n/**\n * An iterator which transforms values using a mapping function.\n */\nexport class MapIterator<T, U> implements IIterator<U> {\n /**\n * Construct a new map iterator.\n *\n * @param source - The iterator of values of interest.\n *\n * @param fn - The mapping function to invoke for each value.\n */\n constructor(source: IIterator<T>, fn: (value: T, index: number) => U) {\n this._source = source;\n this._fn = fn;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<U> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<U> {\n let result = new MapIterator<T, U>(this._source.clone(), this._fn);\n result._index = this._index;\n return result;\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): U | undefined {\n let value = this._source.next();\n if (value === undefined) {\n return undefined;\n }\n return this._fn.call(undefined, value, this._index++);\n }\n\n private _index = 0;\n private _source: IIterator<T>;\n private _fn: (value: T, index: number) => U;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator } from './iter';\n\n/**\n * Create an iterator of evenly spaced values.\n *\n * @param start - The starting value for the range, inclusive.\n *\n * @param stop - The stopping value for the range, exclusive.\n *\n * @param step - The distance between each value.\n *\n * @returns An iterator which produces evenly spaced values.\n *\n * #### Notes\n * In the single argument form of `range(stop)`, `start` defaults to\n * `0` and `step` defaults to `1`.\n *\n * In the two argument form of `range(start, stop)`, `step` defaults\n * to `1`.\n */\nexport function range(\n start: number,\n stop?: number,\n step?: number\n): IIterator<number> {\n if (stop === undefined) {\n return new RangeIterator(0, start, 1);\n }\n if (step === undefined) {\n return new RangeIterator(start, stop, 1);\n }\n return new RangeIterator(start, stop, step);\n}\n\n/**\n * An iterator which produces a range of evenly spaced values.\n */\nexport class RangeIterator implements IIterator<number> {\n /**\n * Construct a new range iterator.\n *\n * @param start - The starting value for the range, inclusive.\n *\n * @param stop - The stopping value for the range, exclusive.\n *\n * @param step - The distance between each value.\n */\n constructor(start: number, stop: number, step: number) {\n this._start = start;\n this._stop = stop;\n this._step = step;\n this._length = Private.rangeLength(start, stop, step);\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<number> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<number> {\n let result = new RangeIterator(this._start, this._stop, this._step);\n result._index = this._index;\n return result;\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): number | undefined {\n if (this._index >= this._length) {\n return undefined;\n }\n return this._start + this._step * this._index++;\n }\n\n private _index = 0;\n private _length: number;\n private _start: number;\n private _stop: number;\n private _step: number;\n}\n\n/**\n * The namespace for the module implementation details.\n */\nnamespace Private {\n /**\n * Compute the effective length of a range.\n *\n * @param start - The starting value for the range, inclusive.\n *\n * @param stop - The stopping value for the range, exclusive.\n *\n * @param step - The distance between each value.\n *\n * @returns The number of steps need to traverse the range.\n */\n export function rangeLength(\n start: number,\n stop: number,\n step: number\n ): number {\n if (step === 0) {\n return Infinity;\n }\n if (start > stop && step > 0) {\n return 0;\n }\n if (start < stop && step < 0) {\n return 0;\n }\n return Math.ceil((stop - start) / step);\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { iter, IterableOrArrayLike } from './iter';\n\n/**\n * Summarize all values in an iterable using a reducer function.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @param fn - The reducer function to invoke for each value.\n *\n * @param initial - The initial value to start accumulation.\n *\n * @returns The final accumulated value.\n *\n * #### Notes\n * The `reduce` function follows the conventions of `Array#reduce`.\n *\n * If the iterator is empty, an initial value is required. That value\n * will be used as the return value. If no initial value is provided,\n * an error will be thrown.\n *\n * If the iterator contains a single item and no initial value is\n * provided, the single item is used as the return value.\n *\n * Otherwise, the reducer is invoked for each element in the iterable.\n * If an initial value is not provided, the first element will be used\n * as the initial accumulated value.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { reduce } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5];\n *\n * let sum = reduce(data, (a, value) => a + value); // 15\n * ```\n */\nexport function reduce<T>(\n object: IterableOrArrayLike<T>,\n fn: (accumulator: T, value: T, index: number) => T\n): T;\nexport function reduce<T, U>(\n object: IterableOrArrayLike<T>,\n fn: (accumulator: U, value: T, index: number) => U,\n initial: U\n): U;\nexport function reduce<T>(\n object: IterableOrArrayLike<T>,\n fn: (accumulator: any, value: T, index: number) => any,\n initial?: any\n): any {\n // Setup the iterator and fetch the first value.\n let index = 0;\n let it = iter(object);\n let first = it.next();\n\n // An empty iterator and no initial value is an error.\n if (first === undefined && initial === undefined) {\n throw new TypeError('Reduce of empty iterable with no initial value.');\n }\n\n // If the iterator is empty, return the initial value.\n if (first === undefined) {\n return initial;\n }\n\n // If the iterator has a single item and no initial value, the\n // reducer is not invoked and the first item is the return value.\n let second = it.next();\n if (second === undefined && initial === undefined) {\n return first;\n }\n\n // If iterator has a single item and an initial value is provided,\n // the reducer is invoked and that result is the return value.\n if (second === undefined) {\n return fn(initial, first, index++);\n }\n\n // Setup the initial accumlated value.\n let accumulator: any;\n if (initial === undefined) {\n accumulator = fn(first, second, index++);\n } else {\n accumulator = fn(fn(initial, first, index++), second, index++);\n }\n\n // Iterate the rest of the values, updating the accumulator.\n let next: T | undefined;\n while ((next = it.next()) !== undefined) {\n accumulator = fn(accumulator, next, index++);\n }\n\n // Return the final accumulated value.\n return accumulator;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator } from './iter';\n\n/**\n * Create an iterator which repeats a value a number of times.\n *\n * @param value - The value to repeat.\n *\n * @param count - The number of times to repeat the value.\n *\n * @returns A new iterator which repeats the specified value.\n *\n * #### Example\n * ```typescript\n * import { repeat, toArray } from '@lumino/algorithm';\n *\n * let stream = repeat(7, 3);\n *\n * toArray(stream); // [7, 7, 7]\n * ```\n */\nexport function repeat<T>(value: T, count: number): IIterator<T> {\n return new RepeatIterator<T>(value, count);\n}\n\n/**\n * Create an iterator which yields a value a single time.\n *\n * @param value - The value to wrap in an iterator.\n *\n * @returns A new iterator which yields the value a single time.\n *\n * #### Example\n * ```typescript\n * import { once, toArray } from '@lumino/algorithm';\n *\n * let stream = once(7);\n *\n * toArray(stream); // [7]\n * ```\n */\nexport function once<T>(value: T): IIterator<T> {\n return new RepeatIterator<T>(value, 1);\n}\n\n/**\n * An iterator which repeats a value a specified number of times.\n */\nexport class RepeatIterator<T> implements IIterator<T> {\n /**\n * Construct a new repeat iterator.\n *\n * @param value - The value to repeat.\n *\n * @param count - The number of times to repeat the value.\n */\n constructor(value: T, count: number) {\n this._value = value;\n this._count = count;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T> {\n return new RepeatIterator<T>(this._value, this._count);\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T | undefined {\n if (this._count <= 0) {\n return undefined;\n }\n this._count--;\n return this._value;\n }\n\n private _value: T;\n private _count: number;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator } from './iter';\n\n/**\n * An object which can produce a reverse iterator over its values.\n */\nexport interface IRetroable<T> {\n /**\n * Get a reverse iterator over the object's values.\n *\n * @returns An iterator which yields the object's values in reverse.\n */\n retro(): IIterator<T>;\n}\n\n/**\n * A type alias for a retroable or builtin array-like object.\n */\nexport type RetroableOrArrayLike<T> = IRetroable<T> | ArrayLike<T>;\n\n/**\n * Create an iterator for a retroable object.\n *\n * @param object - The retroable or array-like object of interest.\n *\n * @returns An iterator which traverses the object's values in reverse.\n *\n * #### Example\n * ```typescript\n * import { retro, toArray } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = retro(data);\n *\n * toArray(stream); // [6, 5, 4, 3, 2, 1]\n * ```\n */\nexport function retro<T>(object: RetroableOrArrayLike<T>): IIterator<T> {\n let it: IIterator<T>;\n if (typeof (object as any).retro === 'function') {\n it = (object as IRetroable<T>).retro();\n } else {\n it = new RetroArrayIterator<T>(object as ArrayLike<T>);\n }\n return it;\n}\n\n/**\n * An iterator which traverses an array-like object in reverse.\n *\n * #### Notes\n * This iterator can be used for any builtin JS array-like object.\n */\nexport class RetroArrayIterator<T> implements IIterator<T> {\n /**\n * Construct a new retro iterator.\n *\n * @param source - The array-like object of interest.\n */\n constructor(source: ArrayLike<T>) {\n this._source = source;\n this._index = source.length - 1;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T> {\n let result = new RetroArrayIterator<T>(this._source);\n result._index = this._index;\n return result;\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T | undefined {\n if (this._index < 0 || this._index >= this._source.length) {\n return undefined;\n }\n return this._source[this._index--];\n }\n\n private _index: number;\n private _source: ArrayLike<T>;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { each, IterableOrArrayLike } from './iter';\n\n/**\n * Topologically sort an iterable of edges.\n *\n * @param edges - The iterable or array-like object of edges to sort.\n * An edge is represented as a 2-tuple of `[fromNode, toNode]`.\n *\n * @returns The topologically sorted array of nodes.\n *\n * #### Notes\n * If a cycle is present in the graph, the cycle will be ignored and\n * the return value will be only approximately sorted.\n *\n * #### Example\n * ```typescript\n * import { topologicSort } from '@lumino/algorithm';\n *\n * let data = [\n * ['d', 'e'],\n * ['c', 'd'],\n * ['a', 'b'],\n * ['b', 'c']\n * ];\n *\n * topologicSort(data); // ['a', 'b', 'c', 'd', 'e']\n * ```\n */\nexport function topologicSort<T>(edges: IterableOrArrayLike<[T, T]>): T[] {\n // Setup the shared sorting state.\n let sorted: T[] = [];\n let visited = new Set<T>();\n let graph = new Map<T, T[]>();\n\n // Add the edges to the graph.\n each(edges, addEdge);\n\n // Visit each node in the graph.\n graph.forEach((v, k) => {\n visit(k);\n });\n\n // Return the sorted results.\n return sorted;\n\n // Add an edge to the graph.\n function addEdge(edge: [T, T]): void {\n let [fromNode, toNode] = edge;\n let children = graph.get(toNode);\n if (children) {\n children.push(fromNode);\n } else {\n graph.set(toNode, [fromNode]);\n }\n }\n\n // Recursively visit the node.\n function visit(node: T): void {\n if (visited.has(node)) {\n return;\n }\n visited.add(node);\n let children = graph.get(node);\n if (children) {\n children.forEach(visit);\n }\n sorted.push(node);\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator, iter, IterableOrArrayLike } from './iter';\n\n/**\n * Iterate over an iterable using a stepped increment.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @param step - The distance to step on each iteration. A value\n * of less than `1` will behave the same as a value of `1`.\n *\n * @returns An iterator which traverses the iterable step-wise.\n *\n * #### Example\n * ```typescript\n * import { stride, toArray } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = stride(data, 2);\n *\n * toArray(stream); // [1, 3, 5];\n * ```\n */\nexport function stride<T>(\n object: IterableOrArrayLike<T>,\n step: number\n): IIterator<T> {\n return new StrideIterator<T>(iter(object), step);\n}\n\n/**\n * An iterator which traverses a source iterator step-wise.\n */\nexport class StrideIterator<T> implements IIterator<T> {\n /**\n * Construct a new stride iterator.\n *\n * @param source - The iterator of values of interest.\n *\n * @param step - The distance to step on each iteration. A value\n * of less than `1` will behave the same as a value of `1`.\n */\n constructor(source: IIterator<T>, step: number) {\n this._source = source;\n this._step = step;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T> {\n return new StrideIterator<T>(this._source.clone(), this._step);\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T | undefined {\n let value = this._source.next();\n for (let n = this._step - 1; n > 0; --n) {\n this._source.next();\n }\n return value;\n }\n\n private _source: IIterator<T>;\n private _step: number;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * The namespace for string-specific algorithms.\n */\nexport namespace StringExt {\n /**\n * Find the indices of characters in a source text.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The matched indices, or `null` if there is no match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * In order for there to be a match, all of the characters in `query`\n * **must** appear in `source` in the order given by `query`.\n *\n * Characters are matched using strict `===` equality.\n */\n export function findIndices(\n source: string,\n query: string,\n start = 0\n ): number[] | null {\n let indices = new Array<number>(query.length);\n for (let i = 0, j = start, n = query.length; i < n; ++i, ++j) {\n j = source.indexOf(query[i], j);\n if (j === -1) {\n return null;\n }\n indices[i] = j;\n }\n return indices;\n }\n\n /**\n * The result of a string match function.\n */\n export interface IMatchResult {\n /**\n * A score which indicates the strength of the match.\n *\n * The documentation of a given match function should specify\n * whether a lower or higher score is a stronger match.\n */\n score: number;\n\n /**\n * The indices of the matched characters in the source text.\n *\n * The indices will appear in increasing order.\n */\n indices: number[];\n }\n\n /**\n * A string matcher which uses a sum-of-squares algorithm.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The match result, or `null` if there is no match.\n * A lower `score` represents a stronger match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * This scoring algorithm uses a sum-of-squares approach to determine\n * the score. In order for there to be a match, all of the characters\n * in `query` **must** appear in `source` in order. The index of each\n * matching character is squared and added to the score. This means\n * that early and consecutive character matches are preferred, while\n * late matches are heavily penalized.\n */\n export function matchSumOfSquares(\n source: string,\n query: string,\n start = 0\n ): IMatchResult | null {\n let indices = findIndices(source, query, start);\n if (!indices) {\n return null;\n }\n let score = 0;\n for (let i = 0, n = indices.length; i < n; ++i) {\n let j = indices[i] - start;\n score += j * j;\n }\n return { score, indices };\n }\n\n /**\n * A string matcher which uses a sum-of-deltas algorithm.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The match result, or `null` if there is no match.\n * A lower `score` represents a stronger match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * This scoring algorithm uses a sum-of-deltas approach to determine\n * the score. In order for there to be a match, all of the characters\n * in `query` **must** appear in `source` in order. The delta between\n * the indices are summed to create the score. This means that groups\n * of matched characters are preferred, while fragmented matches are\n * penalized.\n */\n export function matchSumOfDeltas(\n source: string,\n query: string,\n start = 0\n ): IMatchResult | null {\n let indices = findIndices(source, query, start);\n if (!indices) {\n return null;\n }\n let score = 0;\n let last = start - 1;\n for (let i = 0, n = indices.length; i < n; ++i) {\n let j = indices[i];\n score += j - last - 1;\n last = j;\n }\n return { score, indices };\n }\n\n /**\n * Highlight the matched characters of a source text.\n *\n * @param source - The text which should be highlighted.\n *\n * @param indices - The indices of the matched characters. They must\n * appear in increasing order and must be in bounds of the source.\n *\n * @param fn - The function to apply to the matched chunks.\n *\n * @returns An array of unmatched and highlighted chunks.\n */\n export function highlight<T>(\n source: string,\n indices: ReadonlyArray<number>,\n fn: (chunk: string) => T\n ): Array<string | T> {\n // Set up the result array.\n let result: Array<string | T> = [];\n\n // Set up the counter variables.\n let k = 0;\n let last = 0;\n let n = indices.length;\n\n // Iterator over each index.\n while (k < n) {\n // Set up the chunk indices.\n let i = indices[k];\n let j = indices[k];\n\n // Advance the right chunk index until it's non-contiguous.\n while (++k < n && indices[k] === j + 1) {\n j++;\n }\n\n // Extract the unmatched text.\n if (last < i) {\n result.push(source.slice(last, i));\n }\n\n // Extract and highlight the matched text.\n if (i < j + 1) {\n result.push(fn(source.slice(i, j + 1)));\n }\n\n // Update the last visited index.\n last = j + 1;\n }\n\n // Extract any remaining unmatched text.\n if (last < source.length) {\n result.push(source.slice(last));\n }\n\n // Return the highlighted result.\n return result;\n }\n\n /**\n * A 3-way string comparison function.\n *\n * @param a - The first string of interest.\n *\n * @param b - The second string of interest.\n *\n * @returns `-1` if `a < b`, else `1` if `a > b`, else `0`.\n */\n export function cmp(a: string, b: string): number {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator, iter, IterableOrArrayLike } from './iter';\n\n/**\n * Take a fixed number of items from an iterable.\n *\n * @param object - The iterable or array-like object of interest.\n *\n * @param count - The number of items to take from the iterable.\n *\n * @returns An iterator which yields the specified number of items\n * from the source iterable.\n *\n * #### Notes\n * The returned iterator will exhaust early if the source iterable\n * contains an insufficient number of items.\n */\nexport function take<T>(\n object: IterableOrArrayLike<T>,\n count: number\n): IIterator<T> {\n return new TakeIterator<T>(iter(object), count);\n}\n\n/**\n * An iterator which takes a fixed number of items from a source.\n */\nexport class TakeIterator<T> implements IIterator<T> {\n /**\n * Construct a new take iterator.\n *\n * @param source - The iterator of interest.\n *\n * @param count - The number of items to take from the source.\n */\n constructor(source: IIterator<T>, count: number) {\n this._source = source;\n this._count = count;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T> {\n return new TakeIterator<T>(this._source.clone(), this._count);\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T | undefined {\n if (this._count <= 0) {\n return undefined;\n }\n let value = this._source.next();\n if (value === undefined) {\n return undefined;\n }\n this._count--;\n return value;\n }\n\n private _count: number;\n private _source: IIterator<T>;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { IIterator, iter, IterableOrArrayLike } from './iter';\n\n/**\n * Iterate several iterables in lockstep.\n *\n * @param objects - The iterable or array-like objects of interest.\n *\n * @returns An iterator which yields successive tuples of values where\n * each value is taken in turn from the provided iterables. It will\n * be as long as the shortest provided iterable.\n *\n * #### Example\n * ```typescript\n * import { zip, toArray } from '@lumino/algorithm';\n *\n * let data1 = [1, 2, 3];\n * let data2 = [4, 5, 6];\n *\n * let stream = zip(data1, data2);\n *\n * toArray(stream); // [[1, 4], [2, 5], [3, 6]]\n * ```\n */\nexport function zip<T>(...objects: IterableOrArrayLike<T>[]): IIterator<T[]> {\n return new ZipIterator<T>(objects.map(iter));\n}\n\n/**\n * An iterator which iterates several sources in lockstep.\n */\nexport class ZipIterator<T> implements IIterator<T[]> {\n /**\n * Construct a new zip iterator.\n *\n * @param source - The iterators of interest.\n */\n constructor(source: IIterator<T>[]) {\n this._source = source;\n }\n\n /**\n * Get an iterator over the object's values.\n *\n * @returns An iterator which yields the object's values.\n */\n iter(): IIterator<T[]> {\n return this;\n }\n\n /**\n * Create an independent clone of the iterator.\n *\n * @returns A new independent clone of the iterator.\n */\n clone(): IIterator<T[]> {\n return new ZipIterator<T>(this._source.map(it => it.clone()));\n }\n\n /**\n * Get the next value from the iterator.\n *\n * @returns The next value from the iterator, or `undefined`.\n */\n next(): T[] | undefined {\n let result = new Array<T>(this._source.length);\n for (let i = 0, n = this._source.length; i < n; ++i) {\n let value = this._source[i].next();\n if (value === undefined) {\n return undefined;\n }\n result[i] = value;\n }\n return result;\n }\n\n private _source: IIterator<T>[];\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * A class which attaches a value to an external object.\n *\n * #### Notes\n * Attached properties are used to extend the state of an object with\n * semantic data from an unrelated class. They also encapsulate value\n * creation, coercion, and notification.\n *\n * Because attached property values are stored in a hash table, which\n * in turn is stored in a WeakMap keyed on the owner object, there is\n * non-trivial storage overhead involved in their use. The pattern is\n * therefore best used for the storage of rare data.\n */\nexport class AttachedProperty<T, U> {\n /**\n * Construct a new attached property.\n *\n * @param options - The options for initializing the property.\n */\n constructor(options: AttachedProperty.IOptions<T, U>) {\n this.name = options.name;\n this._create = options.create;\n this._coerce = options.coerce || null;\n this._compare = options.compare || null;\n this._changed = options.changed || null;\n }\n\n /**\n * The human readable name for the property.\n */\n readonly name: string;\n\n /**\n * Get the current value of the property for a given owner.\n *\n * @param owner - The property owner of interest.\n *\n * @returns The current value of the property.\n *\n * #### Notes\n * If the value has not yet been set, the default value will be\n * computed and assigned as the current value of the property.\n */\n get(owner: T): U {\n let value: U;\n let map = Private.ensureMap(owner);\n if (this._pid in map) {\n value = map[this._pid];\n } else {\n value = map[this._pid] = this._createValue(owner);\n }\n return value;\n }\n\n /**\n * Set the current value of the property for a given owner.\n *\n * @param owner - The property owner of interest.\n *\n * @param value - The value for the property.\n *\n * #### Notes\n * If the value has not yet been set, the default value will be\n * computed and used as the previous value for the comparison.\n */\n set(owner: T, value: U): void {\n let oldValue: U;\n let map = Private.ensureMap(owner);\n if (this._pid in map) {\n oldValue = map[this._pid];\n } else {\n oldValue = map[this._pid] = this._createValue(owner);\n }\n let newValue = this._coerceValue(owner, value);\n this._maybeNotify(owner, oldValue, (map[this._pid] = newValue));\n }\n\n /**\n * Explicitly coerce the current property value for a given owner.\n *\n * @param owner - The property owner of interest.\n *\n * #### Notes\n * If the value has not yet been set, the default value will be\n * computed and used as the previous value for the comparison.\n */\n coerce(owner: T): void {\n let oldValue: U;\n let map = Private.ensureMap(owner);\n if (this._pid in map) {\n oldValue = map[this._pid];\n } else {\n oldValue = map[this._pid] = this._createValue(owner);\n }\n let newValue = this._coerceValue(owner, oldValue);\n this._maybeNotify(owner, oldValue, (map[this._pid] = newValue));\n }\n\n /**\n * Get or create the default value for the given owner.\n */\n private _createValue(owner: T): U {\n let create = this._create;\n return create(owner);\n }\n\n /**\n * Coerce the value for the given owner.\n */\n private _coerceValue(owner: T, value: U): U {\n let coerce = this._coerce;\n return coerce ? coerce(owner, value) : value;\n }\n\n /**\n * Compare the old value and new value for equality.\n */\n private _compareValue(oldValue: U, newValue: U): boolean {\n let compare = this._compare;\n return compare ? compare(oldValue, newValue) : oldValue === newValue;\n }\n\n /**\n * Run the change notification if the given values are different.\n */\n private _maybeNotify(owner: T, oldValue: U, newValue: U): void {\n let changed = this._changed;\n if (changed && !this._compareValue(oldValue, newValue)) {\n changed(owner, oldValue, newValue);\n }\n }\n\n private _pid = Private.nextPID();\n private _create: (owner: T) => U;\n private _coerce: ((owner: T, value: U) => U) | null;\n private _compare: ((oldValue: U, newValue: U) => boolean) | null;\n private _changed: ((owner: T, oldValue: U, newValue: U) => void) | null;\n}\n\n/**\n * The namespace for the `AttachedProperty` class statics.\n */\nexport namespace AttachedProperty {\n /**\n * The options object used to initialize an attached property.\n */\n export interface IOptions<T, U> {\n /**\n * The human readable name for the property.\n *\n * #### Notes\n * By convention, this should be the same as the name used to define\n * the public accessor for the property value.\n *\n * This **does not** have an effect on the property lookup behavior.\n * Multiple properties may share the same name without conflict.\n */\n name: string;\n\n /**\n * A factory function used to create the default property value.\n *\n * #### Notes\n * This will be called whenever the property value is required,\n * but has not yet been set for a given owner.\n */\n create: (owner: T) => U;\n\n /**\n * A function used to coerce a supplied value into the final value.\n *\n * #### Notes\n * This will be called whenever the property value is changed, or\n * when the property is explicitly coerced. The return value will\n * be used as the final value of the property.\n *\n * This will **not** be called for the initial default value.\n */\n coerce?: (owner: T, value: U) => U;\n\n /**\n * A function used to compare two values for equality.\n *\n * #### Notes\n * This is called to determine if the property value has changed.\n * It should return `true` if the given values are equivalent, or\n * `false` if they are different.\n *\n * If this is not provided, it defaults to the `===` operator.\n */\n compare?: (oldValue: U, newValue: U) => boolean;\n\n /**\n * A function called when the property value has changed.\n *\n * #### Notes\n * This will be invoked when the property value is changed and the\n * comparator indicates that the old value is not equal to the new\n * value.\n *\n * This will **not** be called for the initial default value.\n */\n changed?: (owner: T, oldValue: U, newValue: U) => void;\n }\n\n /**\n * Clear the stored property data for the given owner.\n *\n * @param owner - The property owner of interest.\n *\n * #### Notes\n * This will clear all property values for the owner, but it will\n * **not** run the change notification for any of the properties.\n */\n export function clearData(owner: any): void {\n Private.ownerData.delete(owner);\n }\n}\n\n/**\n * The namespace for the module implementation details.\n */\nnamespace Private {\n /**\n * A typedef for a mapping of property id to property value.\n */\n export type PropertyMap = { [key: string]: any };\n\n /**\n * A weak mapping of property owner to property map.\n */\n export const ownerData = new WeakMap<any, PropertyMap>();\n\n /**\n * A function which computes successive unique property ids.\n */\n export const nextPID = (() => {\n let id = 0;\n return () => {\n let rand = Math.random();\n let stem = `${rand}`.slice(2);\n return `pid-${stem}-${id++}`;\n };\n })();\n\n /**\n * Lookup the data map for the property owner.\n *\n * This will create the map if one does not already exist.\n */\n export function ensureMap(owner: any): PropertyMap {\n let map = ownerData.get(owner);\n if (map) {\n return map;\n }\n map = Object.create(null) as PropertyMap;\n ownerData.set(owner, map);\n return map;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { ArrayExt, each, find } from '@lumino/algorithm';\nimport { AttachedProperty } from '@lumino/properties';\n\n/**\n * A type alias for a slot function.\n *\n * @param sender - The object emitting the signal.\n *\n * @param args - The args object emitted with the signal.\n *\n * #### Notes\n * A slot is invoked when a signal to which it is connected is emitted.\n */\nexport type Slot<T, U> = (sender: T, args: U) => void;\n\n/**\n * An object used for type-safe inter-object communication.\n *\n * #### Notes\n * Signals provide a type-safe implementation of the publish-subscribe\n * pattern. An object (publisher) declares which signals it will emit,\n * and consumers connect callbacks (subscribers) to those signals. The\n * subscribers are invoked whenever the publisher emits the signal.\n */\nexport interface ISignal<T, U> {\n /**\n * Block the signal during the execution of a callback.\n *\n * ### Notes\n * The callback function must be synchronous.\n *\n * @deprecated This feature will be removed in Lumino 2.\n *\n * @param fn The callback during which the signal is blocked\n */\n block?(fn: () => void): void;\n\n /**\n * Connect a slot to the signal.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n *\n * #### Notes\n * Slots are invoked in the order in which they are connected.\n *\n * Signal connections are unique. If a connection already exists for\n * the given `slot` and `thisArg`, this method returns `false`.\n *\n * A newly connected slot will not be invoked until the next time the\n * signal is emitted, even if the slot is connected while the signal\n * is dispatching.\n */\n connect(slot: Slot<T, U>, thisArg?: any): boolean;\n\n /**\n * Disconnect a slot from the signal.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n *\n * #### Notes\n * If no connection exists for the given `slot` and `thisArg`, this\n * method returns `false`.\n *\n * A disconnected slot will no longer be invoked, even if the slot\n * is disconnected while the signal is dispatching.\n */\n disconnect(slot: Slot<T, U>, thisArg?: any): boolean;\n}\n\n/**\n * A concrete implementation of `ISignal`.\n *\n * #### Example\n * ```typescript\n * import { ISignal, Signal } from '@lumino/signaling';\n *\n * class SomeClass {\n *\n * constructor(name: string) {\n * this.name = name;\n * }\n *\n * readonly name: string;\n *\n * get valueChanged: ISignal<this, number> {\n * return this._valueChanged;\n * }\n *\n * get value(): number {\n * return this._value;\n * }\n *\n * set value(value: number) {\n * if (value === this._value) {\n * return;\n * }\n * this._value = value;\n * this._valueChanged.emit(value);\n * }\n *\n * private _value = 0;\n * private _valueChanged = new Signal<this, number>(this);\n * }\n *\n * function logger(sender: SomeClass, value: number): void {\n * console.log(sender.name, value);\n * }\n *\n * let m1 = new SomeClass('foo');\n * let m2 = new SomeClass('bar');\n *\n * m1.valueChanged.connect(logger);\n * m2.valueChanged.connect(logger);\n *\n * m1.value = 42; // logs: foo 42\n * m2.value = 17; // logs: bar 17\n * ```\n */\nexport class Signal<T, U> implements ISignal<T, U> {\n /**\n * Construct a new signal.\n *\n * @param sender - The sender which owns the signal.\n */\n constructor(sender: T) {\n this.sender = sender;\n }\n\n /**\n * The sender which owns the signal.\n */\n readonly sender: T;\n\n /**\n * Block the signal during the execution of a callback.\n *\n * ### Notes\n * The callback function must be synchronous.\n *\n * @deprecated This feature will be removed in Lumino 2.\n *\n * @param fn The callback during which the signal is blocked\n */\n block(fn: () => void): void {\n this._blockedCount++;\n try {\n fn();\n } finally {\n this._blockedCount--;\n }\n }\n\n /**\n * Connect a slot to the signal.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n */\n connect(slot: Slot<T, U>, thisArg?: any): boolean {\n return Private.connect(this, slot, thisArg);\n }\n\n /**\n * Disconnect a slot from the signal.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n */\n disconnect(slot: Slot<T, U>, thisArg?: any): boolean {\n return Private.disconnect(this, slot, thisArg);\n }\n\n /**\n * Emit the signal and invoke the connected slots.\n *\n * @param args - The args to pass to the connected slots.\n *\n * #### Notes\n * Slots are invoked synchronously in connection order.\n *\n * Exceptions thrown by connected slots will be caught and logged.\n */\n emit(args: U): void {\n if (!this._blockedCount) {\n Private.emit(this, args);\n }\n }\n\n private _blockedCount = 0;\n}\n\n/**\n * The namespace for the `Signal` class statics.\n */\nexport namespace Signal {\n /**\n * Block all signals emitted by an object during\n * the execution of a callback.\n *\n * ### Notes\n * The callback function must be synchronous.\n *\n * @deprecated This feature will be removed in Lumino 2.\n *\n * @param sender The signals sender\n * @param fn The callback during which all signals are blocked\n */\n export function blockAll(sender: unknown, fn: () => void): void {\n const { blockedProperty } = Private;\n blockedProperty.set(sender, blockedProperty.get(sender) + 1);\n try {\n fn();\n } finally {\n blockedProperty.set(sender, blockedProperty.get(sender) - 1);\n }\n }\n\n /**\n * Remove all connections between a sender and receiver.\n *\n * @param sender - The sender object of interest.\n *\n * @param receiver - The receiver object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n export function disconnectBetween(sender: any, receiver: any): void {\n Private.disconnectBetween(sender, receiver);\n }\n\n /**\n * Remove all connections where the given object is the sender.\n *\n * @param sender - The sender object of interest.\n */\n export function disconnectSender(sender: any): void {\n Private.disconnectSender(sender);\n }\n\n /**\n * Remove all connections where the given object is the receiver.\n *\n * @param receiver - The receiver object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n export function disconnectReceiver(receiver: any): void {\n Private.disconnectReceiver(receiver);\n }\n\n /**\n * Remove all connections where an object is the sender or receiver.\n *\n * @param object - The object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n export function disconnectAll(object: any): void {\n Private.disconnectAll(object);\n }\n\n /**\n * Clear all signal data associated with the given object.\n *\n * @param object - The object for which the data should be cleared.\n *\n * #### Notes\n * This removes all signal connections and any other signal data\n * associated with the object.\n */\n export function clearData(object: any): void {\n Private.disconnectAll(object);\n }\n\n /**\n * A type alias for the exception handler function.\n */\n export type ExceptionHandler = (err: Error) => void;\n\n /**\n * Get the signal exception handler.\n *\n * @returns The current exception handler.\n *\n * #### Notes\n * The default exception handler is `console.error`.\n */\n export function getExceptionHandler(): ExceptionHandler {\n return Private.exceptionHandler;\n }\n\n /**\n * Set the signal exception handler.\n *\n * @param handler - The function to use as the exception handler.\n *\n * @returns The old exception handler.\n *\n * #### Notes\n * The exception handler is invoked when a slot throws an exception.\n */\n export function setExceptionHandler(\n handler: ExceptionHandler\n ): ExceptionHandler {\n let old = Private.exceptionHandler;\n Private.exceptionHandler = handler;\n return old;\n }\n}\n\n/**\n * The namespace for the module implementation details.\n */\nnamespace Private {\n /**\n * The signal exception handler function.\n */\n export let exceptionHandler: Signal.ExceptionHandler = (err: Error) => {\n console.error(err);\n };\n\n /**\n * Connect a slot to a signal.\n *\n * @param signal - The signal of interest.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n */\n export function connect<T, U>(\n signal: Signal<T, U>,\n slot: Slot<T, U>,\n thisArg?: any\n ): boolean {\n // Coerce a `null` `thisArg` to `undefined`.\n thisArg = thisArg || undefined;\n\n // Ensure the sender's array of receivers is created.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers) {\n receivers = [];\n receiversForSender.set(signal.sender, receivers);\n }\n\n // Bail if a matching connection already exists.\n if (findConnection(receivers, signal, slot, thisArg)) {\n return false;\n }\n\n // Choose the best object for the receiver.\n let receiver = thisArg || slot;\n\n // Ensure the receiver's array of senders is created.\n let senders = sendersForReceiver.get(receiver);\n if (!senders) {\n senders = [];\n sendersForReceiver.set(receiver, senders);\n }\n\n // Create a new connection and add it to the end of each array.\n let connection = { signal, slot, thisArg };\n receivers.push(connection);\n senders.push(connection);\n\n // Indicate a successful connection.\n return true;\n }\n\n /**\n * Disconnect a slot from a signal.\n *\n * @param signal - The signal of interest.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n */\n export function disconnect<T, U>(\n signal: Signal<T, U>,\n slot: Slot<T, U>,\n thisArg?: any\n ): boolean {\n // Coerce a `null` `thisArg` to `undefined`.\n thisArg = thisArg || undefined;\n\n // Lookup the list of receivers, and bail if none exist.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers || receivers.length === 0) {\n return false;\n }\n\n // Bail if no matching connection exits.\n let connection = findConnection(receivers, signal, slot, thisArg);\n if (!connection) {\n return false;\n }\n\n // Choose the best object for the receiver.\n let receiver = thisArg || slot;\n\n // Lookup the array of senders, which is now known to exist.\n let senders = sendersForReceiver.get(receiver)!;\n\n // Clear the connection and schedule cleanup of the arrays.\n connection.signal = null;\n scheduleCleanup(receivers);\n scheduleCleanup(senders);\n\n // Indicate a successful disconnection.\n return true;\n }\n\n /**\n * Remove all connections between a sender and receiver.\n *\n * @param sender - The sender object of interest.\n *\n * @param receiver - The receiver object of interest.\n */\n export function disconnectBetween(sender: any, receiver: any): void {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n\n // If there are no senders, there is nothing to do.\n let senders = sendersForReceiver.get(receiver);\n if (!senders || senders.length === 0) {\n return;\n }\n\n // Clear each connection between the sender and receiver.\n each(senders, connection => {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n return;\n }\n\n // Clear the connection if it matches the sender.\n if (connection.signal.sender === sender) {\n connection.signal = null;\n }\n });\n\n // Schedule a cleanup of the senders and receivers.\n scheduleCleanup(receivers);\n scheduleCleanup(senders);\n }\n\n /**\n * Remove all connections where the given object is the sender.\n *\n * @param sender - The sender object of interest.\n */\n export function disconnectSender(sender: any): void {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n\n // Clear each receiver connection.\n each(receivers, connection => {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n return;\n }\n\n // Choose the best object for the receiver.\n let receiver = connection.thisArg || connection.slot;\n\n // Clear the connection.\n connection.signal = null;\n\n // Cleanup the array of senders, which is now known to exist.\n scheduleCleanup(sendersForReceiver.get(receiver)!);\n });\n\n // Schedule a cleanup of the receivers.\n scheduleCleanup(receivers);\n }\n\n /**\n * Remove all connections where the given object is the receiver.\n *\n * @param receiver - The receiver object of interest.\n */\n export function disconnectReceiver(receiver: any): void {\n // If there are no senders, there is nothing to do.\n let senders = sendersForReceiver.get(receiver);\n if (!senders || senders.length === 0) {\n return;\n }\n\n // Clear each sender connection.\n each(senders, connection => {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n return;\n }\n\n // Lookup the sender for the connection.\n let sender = connection.signal.sender;\n\n // Clear the connection.\n connection.signal = null;\n\n // Cleanup the array of receivers, which is now known to exist.\n scheduleCleanup(receiversForSender.get(sender)!);\n });\n\n // Schedule a cleanup of the list of senders.\n scheduleCleanup(senders);\n }\n\n /**\n * Remove all connections where an object is the sender or receiver.\n *\n * @param object - The object of interest.\n */\n export function disconnectAll(object: any): void {\n // Remove all connections where the given object is the sender.\n disconnectSender(object);\n // Remove all connections where the given object is the receiver.\n disconnectReceiver(object);\n }\n\n /**\n * Emit a signal and invoke its connected slots.\n *\n * @param signal - The signal of interest.\n *\n * @param args - The args to pass to the connected slots.\n *\n * #### Notes\n * Slots are invoked synchronously in connection order.\n *\n * Exceptions thrown by connected slots will be caught and logged.\n */\n export function emit<T, U>(signal: Signal<T, U>, args: U): void {\n if (Private.blockedProperty.get(signal.sender) > 0) {\n return;\n }\n\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n\n // Invoke the slots for connections with a matching signal.\n // Any connections added during emission are not invoked.\n for (let i = 0, n = receivers.length; i < n; ++i) {\n let connection = receivers[i];\n if (connection.signal === signal) {\n invokeSlot(connection, args);\n }\n }\n }\n\n /**\n * An object which holds connection data.\n */\n interface IConnection {\n /**\n * The signal for the connection.\n *\n * A `null` signal indicates a cleared connection.\n */\n signal: Signal<any, any> | null;\n\n /**\n * The slot connected to the signal.\n */\n readonly slot: Slot<any, any>;\n\n /**\n * The `this` context for the slot.\n */\n readonly thisArg: any;\n }\n\n /**\n * A weak mapping of sender to array of receiver connections.\n */\n const receiversForSender = new WeakMap<any, IConnection[]>();\n\n /**\n * A weak mapping of receiver to array of sender connections.\n */\n const sendersForReceiver = new WeakMap<any, IConnection[]>();\n\n /**\n * A set of connection arrays which are pending cleanup.\n */\n const dirtySet = new Set<IConnection[]>();\n\n /**\n * A function to schedule an event loop callback.\n */\n const schedule = (() => {\n let ok = typeof requestAnimationFrame === 'function';\n // @ts-ignore\n return ok ? requestAnimationFrame : setImmediate;\n })();\n\n /**\n * Find a connection which matches the given parameters.\n */\n function findConnection(\n connections: IConnection[],\n signal: Signal<any, any>,\n slot: Slot<any, any>,\n thisArg: any\n ): IConnection | undefined {\n return find(\n connections,\n connection =>\n connection.signal === signal &&\n connection.slot === slot &&\n connection.thisArg === thisArg\n );\n }\n\n /**\n * Invoke a slot with the given parameters.\n *\n * The connection is assumed to be valid.\n *\n * Exceptions in the slot will be caught and logged.\n */\n function invokeSlot(connection: IConnection, args: any): void {\n let { signal, slot, thisArg } = connection;\n try {\n slot.call(thisArg, signal!.sender, args);\n } catch (err) {\n exceptionHandler(err);\n }\n }\n\n /**\n * Schedule a cleanup of a connection array.\n *\n * This will add the array to the dirty set and schedule a deferred\n * cleanup of the array contents. On cleanup, any connection with a\n * `null` signal will be removed from the array.\n */\n function scheduleCleanup(array: IConnection[]): void {\n if (dirtySet.size === 0) {\n schedule(cleanupDirtySet);\n }\n dirtySet.add(array);\n }\n\n /**\n * Cleanup the connection lists in the dirty set.\n *\n * This function should only be invoked asynchronously, when the\n * stack frame is guaranteed to not be on the path of user code.\n */\n function cleanupDirtySet(): void {\n dirtySet.forEach(cleanupConnections);\n dirtySet.clear();\n }\n\n /**\n * Cleanup the dirty connections in a connections array.\n *\n * This will remove any connection with a `null` signal.\n *\n * This function should only be invoked asynchronously, when the\n * stack frame is guaranteed to not be on the path of user code.\n */\n function cleanupConnections(connections: IConnection[]): void {\n ArrayExt.removeAllWhere(connections, isDeadConnection);\n }\n\n /**\n * Test whether a connection is dead.\n *\n * A dead connection has a `null` signal.\n */\n function isDeadConnection(connection: IConnection): boolean {\n return connection.signal === null;\n }\n\n /**\n * A property indicating a sender has been blocked if its value is not 0.\n */\n export const blockedProperty = new AttachedProperty<unknown, number>({\n name: 'blocked',\n create: () => 0\n });\n}\n", null, null, "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * A type alias for a JSON primitive.\n */\nexport type JSONPrimitive = boolean | number | string | null;\n\n/**\n * A type alias for a JSON value.\n */\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray;\n\n/**\n * A type definition for a JSON object.\n */\nexport interface JSONObject {\n [key: string]: JSONValue;\n}\n\n/**\n * A type definition for a JSON array.\n */\nexport interface JSONArray extends Array<JSONValue> {}\n\n/**\n * A type definition for a readonly JSON object.\n */\nexport interface ReadonlyJSONObject {\n readonly [key: string]: ReadonlyJSONValue;\n}\n\n/**\n * A type definition for a readonly JSON array.\n */\nexport interface ReadonlyJSONArray extends ReadonlyArray<ReadonlyJSONValue> {}\n\n/**\n * A type alias for a readonly JSON value.\n */\nexport type ReadonlyJSONValue =\n | JSONPrimitive\n | ReadonlyJSONObject\n | ReadonlyJSONArray;\n\n/**\n * A type alias for a partial JSON value.\n *\n * Note: Partial here means that JSON object attributes can be `undefined`.\n */\nexport type PartialJSONValue =\n | JSONPrimitive\n | PartialJSONObject\n | PartialJSONArray;\n\n/**\n * A type definition for a partial JSON object.\n *\n * Note: Partial here means that the JSON object attributes can be `undefined`.\n */\nexport interface PartialJSONObject {\n [key: string]: PartialJSONValue | undefined;\n}\n\n/**\n * A type definition for a partial JSON array.\n *\n * Note: Partial here means that JSON object attributes can be `undefined`.\n */\nexport interface PartialJSONArray extends Array<PartialJSONValue> {}\n\n/**\n * A type definition for a readonly partial JSON object.\n *\n * Note: Partial here means that JSON object attributes can be `undefined`.\n */\nexport interface ReadonlyPartialJSONObject {\n readonly [key: string]: ReadonlyPartialJSONValue | undefined;\n}\n\n/**\n * A type definition for a readonly partial JSON array.\n *\n * Note: Partial here means that JSON object attributes can be `undefined`.\n */\nexport interface ReadonlyPartialJSONArray\n extends ReadonlyArray<ReadonlyPartialJSONValue> {}\n\n/**\n * A type alias for a readonly partial JSON value.\n *\n * Note: Partial here means that JSON object attributes can be `undefined`.\n */\nexport type ReadonlyPartialJSONValue =\n | JSONPrimitive\n | ReadonlyPartialJSONObject\n | ReadonlyPartialJSONArray;\n\n/**\n * The namespace for JSON-specific functions.\n */\nexport namespace JSONExt {\n /**\n * A shared frozen empty JSONObject\n */\n export const emptyObject = Object.freeze({}) as ReadonlyJSONObject;\n\n /**\n * A shared frozen empty JSONArray\n */\n export const emptyArray = Object.freeze([]) as ReadonlyJSONArray;\n\n /**\n * Test whether a JSON value is a primitive.\n *\n * @param value - The JSON value of interest.\n *\n * @returns `true` if the value is a primitive,`false` otherwise.\n */\n export function isPrimitive(\n value: ReadonlyPartialJSONValue\n ): value is JSONPrimitive {\n return (\n value === null ||\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string'\n );\n }\n\n /**\n * Test whether a JSON value is an array.\n *\n * @param value - The JSON value of interest.\n *\n * @returns `true` if the value is a an array, `false` otherwise.\n */\n export function isArray(value: JSONValue): value is JSONArray;\n export function isArray(value: ReadonlyJSONValue): value is ReadonlyJSONArray;\n export function isArray(value: PartialJSONValue): value is PartialJSONArray;\n export function isArray(\n value: ReadonlyPartialJSONValue\n ): value is ReadonlyPartialJSONArray;\n export function isArray(value: ReadonlyPartialJSONValue): boolean {\n return Array.isArray(value);\n }\n\n /**\n * Test whether a JSON value is an object.\n *\n * @param value - The JSON value of interest.\n *\n * @returns `true` if the value is a an object, `false` otherwise.\n */\n export function isObject(value: JSONValue): value is JSONObject;\n export function isObject(\n value: ReadonlyJSONValue\n ): value is ReadonlyJSONObject;\n export function isObject(value: PartialJSONValue): value is PartialJSONObject;\n export function isObject(\n value: ReadonlyPartialJSONValue\n ): value is ReadonlyPartialJSONObject;\n export function isObject(value: ReadonlyPartialJSONValue): boolean {\n return !isPrimitive(value) && !isArray(value);\n }\n\n /**\n * Compare two JSON values for deep equality.\n *\n * @param first - The first JSON value of interest.\n *\n * @param second - The second JSON value of interest.\n *\n * @returns `true` if the values are equivalent, `false` otherwise.\n */\n export function deepEqual(\n first: ReadonlyPartialJSONValue,\n second: ReadonlyPartialJSONValue\n ): boolean {\n // Check referential and primitive equality first.\n if (first === second) {\n return true;\n }\n\n // If one is a primitive, the `===` check ruled out the other.\n if (isPrimitive(first) || isPrimitive(second)) {\n return false;\n }\n\n // Test whether they are arrays.\n let a1 = isArray(first);\n let a2 = isArray(second);\n\n // Bail if the types are different.\n if (a1 !== a2) {\n return false;\n }\n\n // If they are both arrays, compare them.\n if (a1 && a2) {\n return deepArrayEqual(\n first as ReadonlyPartialJSONArray,\n second as ReadonlyPartialJSONArray\n );\n }\n\n // At this point, they must both be objects.\n return deepObjectEqual(\n first as ReadonlyPartialJSONObject,\n second as ReadonlyPartialJSONObject\n );\n }\n\n /**\n * Create a deep copy of a JSON value.\n *\n * @param value - The JSON value to copy.\n *\n * @returns A deep copy of the given JSON value.\n */\n export function deepCopy<T extends ReadonlyPartialJSONValue>(value: T): T {\n // Do nothing for primitive values.\n if (isPrimitive(value)) {\n return value;\n }\n\n // Deep copy an array.\n if (isArray(value)) {\n return deepArrayCopy(value);\n }\n\n // Deep copy an object.\n return deepObjectCopy(value);\n }\n\n /**\n * Compare two JSON arrays for deep equality.\n */\n function deepArrayEqual(\n first: ReadonlyPartialJSONArray,\n second: ReadonlyPartialJSONArray\n ): boolean {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n\n // Test the arrays for equal length.\n if (first.length !== second.length) {\n return false;\n }\n\n // Compare the values for equality.\n for (let i = 0, n = first.length; i < n; ++i) {\n if (!deepEqual(first[i], second[i])) {\n return false;\n }\n }\n\n // At this point, the arrays are equal.\n return true;\n }\n\n /**\n * Compare two JSON objects for deep equality.\n */\n function deepObjectEqual(\n first: ReadonlyPartialJSONObject,\n second: ReadonlyPartialJSONObject\n ): boolean {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n\n // Check for the first object's keys in the second object.\n for (let key in first) {\n if (first[key] !== undefined && !(key in second)) {\n return false;\n }\n }\n\n // Check for the second object's keys in the first object.\n for (let key in second) {\n if (second[key] !== undefined && !(key in first)) {\n return false;\n }\n }\n\n // Compare the values for equality.\n for (let key in first) {\n // Get the values.\n let firstValue = first[key];\n let secondValue = second[key];\n\n // If both are undefined, ignore the key.\n if (firstValue === undefined && secondValue === undefined) {\n continue;\n }\n\n // If only one value is undefined, the objects are not equal.\n if (firstValue === undefined || secondValue === undefined) {\n return false;\n }\n\n // Compare the values.\n if (!deepEqual(firstValue, secondValue)) {\n return false;\n }\n }\n\n // At this point, the objects are equal.\n return true;\n }\n\n /**\n * Create a deep copy of a JSON array.\n */\n function deepArrayCopy(value: any): any {\n let result = new Array<any>(value.length);\n for (let i = 0, n = value.length; i < n; ++i) {\n result[i] = deepCopy(value[i]);\n }\n return result;\n }\n\n /**\n * Create a deep copy of a JSON object.\n */\n function deepObjectCopy(value: any): any {\n let result: any = {};\n for (let key in value) {\n // Ignore undefined values.\n let subvalue = value[key];\n if (subvalue === undefined) {\n continue;\n }\n result[key] = deepCopy(subvalue);\n }\n return result;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * An object which stores MIME data for general application use.\n *\n * #### Notes\n * This class does not attempt to enforce \"correctness\" of MIME types\n * and their associated data. Since this class is designed to transfer\n * arbitrary data and objects within the same application, it assumes\n * that the user provides correct and accurate data.\n */\nexport class MimeData {\n /**\n * Get an array of the MIME types contained within the dataset.\n *\n * @returns A new array of the MIME types, in order of insertion.\n */\n types(): string[] {\n return this._types.slice();\n }\n\n /**\n * Test whether the dataset has an entry for the given type.\n *\n * @param mime - The MIME type of interest.\n *\n * @returns `true` if the dataset contains a value for the given\n * MIME type, `false` otherwise.\n */\n hasData(mime: string): boolean {\n return this._types.indexOf(mime) !== -1;\n }\n\n /**\n * Get the data value for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * @returns The value for the given MIME type, or `undefined` if\n * the dataset does not contain a value for the type.\n */\n getData(mime: string): any | undefined {\n let i = this._types.indexOf(mime);\n return i !== -1 ? this._values[i] : undefined;\n }\n\n /**\n * Set the data value for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * @param data - The data value for the given MIME type.\n *\n * #### Notes\n * This will overwrite any previous entry for the MIME type.\n */\n setData(mime: string, data: any): void {\n this.clearData(mime);\n this._types.push(mime);\n this._values.push(data);\n }\n\n /**\n * Remove the data entry for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * #### Notes\n * This is a no-op if there is no entry for the given MIME type.\n */\n clearData(mime: string): void {\n let i = this._types.indexOf(mime);\n if (i !== -1) {\n this._types.splice(i, 1);\n this._values.splice(i, 1);\n }\n }\n\n /**\n * Remove all data entries from the dataset.\n */\n clear(): void {\n this._types.length = 0;\n this._values.length = 0;\n }\n\n private _types: string[] = [];\n private _values: any[] = [];\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * A class which wraps a promise into a delegate object.\n *\n * #### Notes\n * This class is useful when the logic to resolve or reject a promise\n * cannot be defined at the point where the promise is created.\n */\nexport class PromiseDelegate<T> {\n /**\n * Construct a new promise delegate.\n */\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n /**\n * The promise wrapped by the delegate.\n */\n readonly promise: Promise<T>;\n\n /**\n * Resolve the wrapped promise with the given value.\n *\n * @param value - The value to use for resolving the promise.\n */\n resolve(value: T | PromiseLike<T>): void {\n let resolve = this._resolve;\n resolve(value);\n }\n\n /**\n * Reject the wrapped promise with the given value.\n *\n * @reason - The reason for rejecting the promise.\n */\n reject(reason: any): void {\n let reject = this._reject;\n reject(reason);\n }\n\n private _resolve: (value: T | PromiseLike<T>) => void;\n private _reject: (reason: any) => void;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * A runtime object which captures compile-time type information.\n *\n * #### Notes\n * A token captures the compile-time type of an interface or class in\n * an object which can be used at runtime in a type-safe fashion.\n */\nexport class Token<T> {\n /**\n * Construct a new token.\n *\n * @param name - A human readable name for the token.\n */\n constructor(name: string) {\n this.name = name;\n this._tokenStructuralPropertyT = null!;\n }\n\n /**\n * The human readable name for the token.\n *\n * #### Notes\n * This can be useful for debugging and logging.\n */\n readonly name: string;\n\n // @ts-ignore\n private _tokenStructuralPropertyT: T;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n// Fallback\nexport function fallbackRandomValues(buffer: Uint8Array): void {\n let value = 0;\n for (let i = 0, n = buffer.length; i < n; ++i) {\n if (i % 4 === 0) {\n value = (Math.random() * 0xffffffff) >>> 0;\n }\n buffer[i] = value & 0xff;\n value >>>= 8;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\nimport { fallbackRandomValues } from './random';\n\n// Declare ambient variables for `window` and `require` to avoid a\n// hard dependency on both. This package must run on node.\ndeclare let window: any;\n\n/**\n * The namespace for random number related functionality.\n */\nexport namespace Random {\n /**\n * A function which generates random bytes.\n *\n * @param buffer - The `Uint8Array` to fill with random bytes.\n *\n * #### Notes\n * A cryptographically strong random number generator will be used if\n * available. Otherwise, `Math.random` will be used as a fallback for\n * randomness.\n *\n * The following RNGs are supported, listed in order of precedence:\n * - `window.crypto.getRandomValues`\n * - `window.msCrypto.getRandomValues`\n * - `require('crypto').randomFillSync\n * - `require('crypto').randomBytes\n * - `Math.random`\n */\n export const getRandomValues = (() => {\n // Look up the crypto module if available.\n const crypto: any =\n (typeof window !== 'undefined' && (window.crypto || window.msCrypto)) ||\n null;\n\n // Modern browsers and IE 11\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return function getRandomValues(buffer: Uint8Array): void {\n return crypto.getRandomValues(buffer);\n };\n }\n\n // Fallback\n return fallbackRandomValues;\n })();\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * A function which creates a function that generates UUID v4 identifiers.\n *\n * @returns A new function that creates a UUID v4 string.\n *\n * #### Notes\n * This implementation complies with RFC 4122.\n *\n * This uses `Random.getRandomValues()` for random bytes, which in\n * turn will use the underlying `crypto` module of the platform if\n * it is available. The fallback for randomness is `Math.random`.\n */\nexport function uuid4Factory(\n getRandomValues: (bytes: Uint8Array) => void\n): () => string {\n // Create a 16 byte array to hold the random values.\n const bytes = new Uint8Array(16);\n\n // Create a look up table from bytes to hex strings.\n const lut = new Array<string>(256);\n\n // Pad the single character hex digits with a leading zero.\n for (let i = 0; i < 16; ++i) {\n lut[i] = '0' + i.toString(16);\n }\n\n // Populate the rest of the hex digits.\n for (let i = 16; i < 256; ++i) {\n lut[i] = i.toString(16);\n }\n\n // Return a function which generates the UUID.\n return function uuid4(): string {\n // Get a new batch of random values.\n getRandomValues(bytes);\n\n // Set the UUID version number to 4.\n bytes[6] = 0x40 | (bytes[6] & 0x0f);\n\n // Set the clock sequence bit to the RFC spec.\n bytes[8] = 0x80 | (bytes[8] & 0x3f);\n\n // Assemble the UUID string.\n return (\n lut[bytes[0]] +\n lut[bytes[1]] +\n lut[bytes[2]] +\n lut[bytes[3]] +\n '-' +\n lut[bytes[4]] +\n lut[bytes[5]] +\n '-' +\n lut[bytes[6]] +\n lut[bytes[7]] +\n '-' +\n lut[bytes[8]] +\n lut[bytes[9]] +\n '-' +\n lut[bytes[10]] +\n lut[bytes[11]] +\n lut[bytes[12]] +\n lut[bytes[13]] +\n lut[bytes[14]] +\n lut[bytes[15]]\n );\n };\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { Random } from './random.browser';\nimport { uuid4Factory } from './uuid';\n\n/**\n * The namespace for UUID related functionality.\n */\nexport namespace UUID {\n /**\n * A function which generates UUID v4 identifiers.\n *\n * @returns A new UUID v4 string.\n *\n * #### Notes\n * This implementation complies with RFC 4122.\n *\n * This uses `Random.getRandomValues()` for random bytes, which in\n * turn will use the underlying `crypto` module of the platform if\n * it is available. The fallback for randomness is `Math.random`.\n */\n export const uuid4 = uuid4Factory(Random.getRandomValues);\n}\n", "'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n", "// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n", "'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n", "'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n", null, null, null, null, "//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n", null, null, "'use strict';\n\n/**\n * @param typeMap [Object] Map of MIME type -> Array[extensions]\n * @param ...\n */\nfunction Mime() {\n this._types = Object.create(null);\n this._extensions = Object.create(null);\n\n for (let i = 0; i < arguments.length; i++) {\n this.define(arguments[i]);\n }\n\n this.define = this.define.bind(this);\n this.getType = this.getType.bind(this);\n this.getExtension = this.getExtension.bind(this);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * If a type declares an extension that has already been defined, an error will\n * be thrown. To suppress this error and force the extension to be associated\n * with the new type, pass `force`=true. Alternatively, you may prefix the\n * extension with \"*\" to map the type to extension, without mapping the\n * extension to the type.\n *\n * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});\n *\n *\n * @param map (Object) type definitions\n * @param force (Boolean) if true, force overriding of existing definitions\n */\nMime.prototype.define = function(typeMap, force) {\n for (let type in typeMap) {\n let extensions = typeMap[type].map(function(t) {\n return t.toLowerCase();\n });\n type = type.toLowerCase();\n\n for (let i = 0; i < extensions.length; i++) {\n const ext = extensions[i];\n\n // '*' prefix = not the preferred type for this extension. So fixup the\n // extension, and skip it.\n if (ext[0] === '*') {\n continue;\n }\n\n if (!force && (ext in this._types)) {\n throw new Error(\n 'Attempt to change mapping for \"' + ext +\n '\" extension from \"' + this._types[ext] + '\" to \"' + type +\n '\". Pass `force=true` to allow this, otherwise remove \"' + ext +\n '\" from the list of extensions for \"' + type + '\".'\n );\n }\n\n this._types[ext] = type;\n }\n\n // Use first extension as default\n if (force || !this._extensions[type]) {\n const ext = extensions[0];\n this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);\n }\n }\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.getType = function(path) {\n path = String(path);\n let last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n let ext = last.replace(/^.*\\./, '').toLowerCase();\n\n let hasPath = last.length < path.length;\n let hasDot = ext.length < last.length - 1;\n\n return (hasDot || !hasPath) && this._types[ext] || null;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.getExtension = function(type) {\n type = /^\\s*([^;\\s]*)/.test(type) && RegExp.$1;\n return type && this._extensions[type.toLowerCase()] || null;\n};\n\nmodule.exports = Mime;\n", "module.exports = {\"application/andrew-inset\":[\"ez\"],\"application/applixware\":[\"aw\"],\"application/atom+xml\":[\"atom\"],\"application/atomcat+xml\":[\"atomcat\"],\"application/atomdeleted+xml\":[\"atomdeleted\"],\"application/atomsvc+xml\":[\"atomsvc\"],\"application/atsc-dwd+xml\":[\"dwd\"],\"application/atsc-held+xml\":[\"held\"],\"application/atsc-rsat+xml\":[\"rsat\"],\"application/bdoc\":[\"bdoc\"],\"application/calendar+xml\":[\"xcs\"],\"application/ccxml+xml\":[\"ccxml\"],\"application/cdfx+xml\":[\"cdfx\"],\"application/cdmi-capability\":[\"cdmia\"],\"application/cdmi-container\":[\"cdmic\"],\"application/cdmi-domain\":[\"cdmid\"],\"application/cdmi-object\":[\"cdmio\"],\"application/cdmi-queue\":[\"cdmiq\"],\"application/cu-seeme\":[\"cu\"],\"application/dash+xml\":[\"mpd\"],\"application/davmount+xml\":[\"davmount\"],\"application/docbook+xml\":[\"dbk\"],\"application/dssc+der\":[\"dssc\"],\"application/dssc+xml\":[\"xdssc\"],\"application/ecmascript\":[\"es\",\"ecma\"],\"application/emma+xml\":[\"emma\"],\"application/emotionml+xml\":[\"emotionml\"],\"application/epub+zip\":[\"epub\"],\"application/exi\":[\"exi\"],\"application/express\":[\"exp\"],\"application/fdt+xml\":[\"fdt\"],\"application/font-tdpfr\":[\"pfr\"],\"application/geo+json\":[\"geojson\"],\"application/gml+xml\":[\"gml\"],\"application/gpx+xml\":[\"gpx\"],\"application/gxf\":[\"gxf\"],\"application/gzip\":[\"gz\"],\"application/hjson\":[\"hjson\"],\"application/hyperstudio\":[\"stk\"],\"application/inkml+xml\":[\"ink\",\"inkml\"],\"application/ipfix\":[\"ipfix\"],\"application/its+xml\":[\"its\"],\"application/java-archive\":[\"jar\",\"war\",\"ear\"],\"application/java-serialized-object\":[\"ser\"],\"application/java-vm\":[\"class\"],\"application/javascript\":[\"js\",\"mjs\"],\"application/json\":[\"json\",\"map\"],\"application/json5\":[\"json5\"],\"application/jsonml+json\":[\"jsonml\"],\"application/ld+json\":[\"jsonld\"],\"application/lgr+xml\":[\"lgr\"],\"application/lost+xml\":[\"lostxml\"],\"application/mac-binhex40\":[\"hqx\"],\"application/mac-compactpro\":[\"cpt\"],\"application/mads+xml\":[\"mads\"],\"application/manifest+json\":[\"webmanifest\"],\"application/marc\":[\"mrc\"],\"application/marcxml+xml\":[\"mrcx\"],\"application/mathematica\":[\"ma\",\"nb\",\"mb\"],\"application/mathml+xml\":[\"mathml\"],\"application/mbox\":[\"mbox\"],\"application/mediaservercontrol+xml\":[\"mscml\"],\"application/metalink+xml\":[\"metalink\"],\"application/metalink4+xml\":[\"meta4\"],\"application/mets+xml\":[\"mets\"],\"application/mmt-aei+xml\":[\"maei\"],\"application/mmt-usd+xml\":[\"musd\"],\"application/mods+xml\":[\"mods\"],\"application/mp21\":[\"m21\",\"mp21\"],\"application/mp4\":[\"mp4s\",\"m4p\"],\"application/msword\":[\"doc\",\"dot\"],\"application/mxf\":[\"mxf\"],\"application/n-quads\":[\"nq\"],\"application/n-triples\":[\"nt\"],\"application/node\":[\"cjs\"],\"application/octet-stream\":[\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"],\"application/oda\":[\"oda\"],\"application/oebps-package+xml\":[\"opf\"],\"application/ogg\":[\"ogx\"],\"application/omdoc+xml\":[\"omdoc\"],\"application/onenote\":[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],\"application/oxps\":[\"oxps\"],\"application/p2p-overlay+xml\":[\"relo\"],\"application/patch-ops-error+xml\":[\"xer\"],\"application/pdf\":[\"pdf\"],\"application/pgp-encrypted\":[\"pgp\"],\"application/pgp-signature\":[\"asc\",\"sig\"],\"application/pics-rules\":[\"prf\"],\"application/pkcs10\":[\"p10\"],\"application/pkcs7-mime\":[\"p7m\",\"p7c\"],\"application/pkcs7-signature\":[\"p7s\"],\"application/pkcs8\":[\"p8\"],\"application/pkix-attr-cert\":[\"ac\"],\"application/pkix-cert\":[\"cer\"],\"application/pkix-crl\":[\"crl\"],\"application/pkix-pkipath\":[\"pkipath\"],\"application/pkixcmp\":[\"pki\"],\"application/pls+xml\":[\"pls\"],\"application/postscript\":[\"ai\",\"eps\",\"ps\"],\"application/provenance+xml\":[\"provx\"],\"application/pskc+xml\":[\"pskcxml\"],\"application/raml+yaml\":[\"raml\"],\"application/rdf+xml\":[\"rdf\",\"owl\"],\"application/reginfo+xml\":[\"rif\"],\"application/relax-ng-compact-syntax\":[\"rnc\"],\"application/resource-lists+xml\":[\"rl\"],\"application/resource-lists-diff+xml\":[\"rld\"],\"application/rls-services+xml\":[\"rs\"],\"application/route-apd+xml\":[\"rapd\"],\"application/route-s-tsid+xml\":[\"sls\"],\"application/route-usd+xml\":[\"rusd\"],\"application/rpki-ghostbusters\":[\"gbr\"],\"application/rpki-manifest\":[\"mft\"],\"application/rpki-roa\":[\"roa\"],\"application/rsd+xml\":[\"rsd\"],\"application/rss+xml\":[\"rss\"],\"application/rtf\":[\"rtf\"],\"application/sbml+xml\":[\"sbml\"],\"application/scvp-cv-request\":[\"scq\"],\"application/scvp-cv-response\":[\"scs\"],\"application/scvp-vp-request\":[\"spq\"],\"application/scvp-vp-response\":[\"spp\"],\"application/sdp\":[\"sdp\"],\"application/senml+xml\":[\"senmlx\"],\"application/sensml+xml\":[\"sensmlx\"],\"application/set-payment-initiation\":[\"setpay\"],\"application/set-registration-initiation\":[\"setreg\"],\"application/shf+xml\":[\"shf\"],\"application/sieve\":[\"siv\",\"sieve\"],\"application/smil+xml\":[\"smi\",\"smil\"],\"application/sparql-query\":[\"rq\"],\"application/sparql-results+xml\":[\"srx\"],\"application/srgs\":[\"gram\"],\"application/srgs+xml\":[\"grxml\"],\"application/sru+xml\":[\"sru\"],\"application/ssdl+xml\":[\"ssdl\"],\"application/ssml+xml\":[\"ssml\"],\"application/swid+xml\":[\"swidtag\"],\"application/tei+xml\":[\"tei\",\"teicorpus\"],\"application/thraud+xml\":[\"tfi\"],\"application/timestamped-data\":[\"tsd\"],\"application/toml\":[\"toml\"],\"application/trig\":[\"trig\"],\"application/ttml+xml\":[\"ttml\"],\"application/ubjson\":[\"ubj\"],\"application/urc-ressheet+xml\":[\"rsheet\"],\"application/urc-targetdesc+xml\":[\"td\"],\"application/voicexml+xml\":[\"vxml\"],\"application/wasm\":[\"wasm\"],\"application/widget\":[\"wgt\"],\"application/winhlp\":[\"hlp\"],\"application/wsdl+xml\":[\"wsdl\"],\"application/wspolicy+xml\":[\"wspolicy\"],\"application/xaml+xml\":[\"xaml\"],\"application/xcap-att+xml\":[\"xav\"],\"application/xcap-caps+xml\":[\"xca\"],\"application/xcap-diff+xml\":[\"xdf\"],\"application/xcap-el+xml\":[\"xel\"],\"application/xcap-ns+xml\":[\"xns\"],\"application/xenc+xml\":[\"xenc\"],\"application/xhtml+xml\":[\"xhtml\",\"xht\"],\"application/xliff+xml\":[\"xlf\"],\"application/xml\":[\"xml\",\"xsl\",\"xsd\",\"rng\"],\"application/xml-dtd\":[\"dtd\"],\"application/xop+xml\":[\"xop\"],\"application/xproc+xml\":[\"xpl\"],\"application/xslt+xml\":[\"*xsl\",\"xslt\"],\"application/xspf+xml\":[\"xspf\"],\"application/xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],\"application/yang\":[\"yang\"],\"application/yin+xml\":[\"yin\"],\"application/zip\":[\"zip\"],\"audio/3gpp\":[\"*3gpp\"],\"audio/adpcm\":[\"adp\"],\"audio/amr\":[\"amr\"],\"audio/basic\":[\"au\",\"snd\"],\"audio/midi\":[\"mid\",\"midi\",\"kar\",\"rmi\"],\"audio/mobile-xmf\":[\"mxmf\"],\"audio/mp3\":[\"*mp3\"],\"audio/mp4\":[\"m4a\",\"mp4a\"],\"audio/mpeg\":[\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"],\"audio/ogg\":[\"oga\",\"ogg\",\"spx\",\"opus\"],\"audio/s3m\":[\"s3m\"],\"audio/silk\":[\"sil\"],\"audio/wav\":[\"wav\"],\"audio/wave\":[\"*wav\"],\"audio/webm\":[\"weba\"],\"audio/xm\":[\"xm\"],\"font/collection\":[\"ttc\"],\"font/otf\":[\"otf\"],\"font/ttf\":[\"ttf\"],\"font/woff\":[\"woff\"],\"font/woff2\":[\"woff2\"],\"image/aces\":[\"exr\"],\"image/apng\":[\"apng\"],\"image/avif\":[\"avif\"],\"image/bmp\":[\"bmp\"],\"image/cgm\":[\"cgm\"],\"image/dicom-rle\":[\"drle\"],\"image/emf\":[\"emf\"],\"image/fits\":[\"fits\"],\"image/g3fax\":[\"g3\"],\"image/gif\":[\"gif\"],\"image/heic\":[\"heic\"],\"image/heic-sequence\":[\"heics\"],\"image/heif\":[\"heif\"],\"image/heif-sequence\":[\"heifs\"],\"image/hej2k\":[\"hej2\"],\"image/hsj2\":[\"hsj2\"],\"image/ief\":[\"ief\"],\"image/jls\":[\"jls\"],\"image/jp2\":[\"jp2\",\"jpg2\"],\"image/jpeg\":[\"jpeg\",\"jpg\",\"jpe\"],\"image/jph\":[\"jph\"],\"image/jphc\":[\"jhc\"],\"image/jpm\":[\"jpm\"],\"image/jpx\":[\"jpx\",\"jpf\"],\"image/jxr\":[\"jxr\"],\"image/jxra\":[\"jxra\"],\"image/jxrs\":[\"jxrs\"],\"image/jxs\":[\"jxs\"],\"image/jxsc\":[\"jxsc\"],\"image/jxsi\":[\"jxsi\"],\"image/jxss\":[\"jxss\"],\"image/ktx\":[\"ktx\"],\"image/ktx2\":[\"ktx2\"],\"image/png\":[\"png\"],\"image/sgi\":[\"sgi\"],\"image/svg+xml\":[\"svg\",\"svgz\"],\"image/t38\":[\"t38\"],\"image/tiff\":[\"tif\",\"tiff\"],\"image/tiff-fx\":[\"tfx\"],\"image/webp\":[\"webp\"],\"image/wmf\":[\"wmf\"],\"message/disposition-notification\":[\"disposition-notification\"],\"message/global\":[\"u8msg\"],\"message/global-delivery-status\":[\"u8dsn\"],\"message/global-disposition-notification\":[\"u8mdn\"],\"message/global-headers\":[\"u8hdr\"],\"message/rfc822\":[\"eml\",\"mime\"],\"model/3mf\":[\"3mf\"],\"model/gltf+json\":[\"gltf\"],\"model/gltf-binary\":[\"glb\"],\"model/iges\":[\"igs\",\"iges\"],\"model/mesh\":[\"msh\",\"mesh\",\"silo\"],\"model/mtl\":[\"mtl\"],\"model/obj\":[\"obj\"],\"model/step+xml\":[\"stpx\"],\"model/step+zip\":[\"stpz\"],\"model/step-xml+zip\":[\"stpxz\"],\"model/stl\":[\"stl\"],\"model/vrml\":[\"wrl\",\"vrml\"],\"model/x3d+binary\":[\"*x3db\",\"x3dbz\"],\"model/x3d+fastinfoset\":[\"x3db\"],\"model/x3d+vrml\":[\"*x3dv\",\"x3dvz\"],\"model/x3d+xml\":[\"x3d\",\"x3dz\"],\"model/x3d-vrml\":[\"x3dv\"],\"text/cache-manifest\":[\"appcache\",\"manifest\"],\"text/calendar\":[\"ics\",\"ifb\"],\"text/coffeescript\":[\"coffee\",\"litcoffee\"],\"text/css\":[\"css\"],\"text/csv\":[\"csv\"],\"text/html\":[\"html\",\"htm\",\"shtml\"],\"text/jade\":[\"jade\"],\"text/jsx\":[\"jsx\"],\"text/less\":[\"less\"],\"text/markdown\":[\"markdown\",\"md\"],\"text/mathml\":[\"mml\"],\"text/mdx\":[\"mdx\"],\"text/n3\":[\"n3\"],\"text/plain\":[\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"],\"text/richtext\":[\"rtx\"],\"text/rtf\":[\"*rtf\"],\"text/sgml\":[\"sgml\",\"sgm\"],\"text/shex\":[\"shex\"],\"text/slim\":[\"slim\",\"slm\"],\"text/spdx\":[\"spdx\"],\"text/stylus\":[\"stylus\",\"styl\"],\"text/tab-separated-values\":[\"tsv\"],\"text/troff\":[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],\"text/turtle\":[\"ttl\"],\"text/uri-list\":[\"uri\",\"uris\",\"urls\"],\"text/vcard\":[\"vcard\"],\"text/vtt\":[\"vtt\"],\"text/xml\":[\"*xml\"],\"text/yaml\":[\"yaml\",\"yml\"],\"video/3gpp\":[\"3gp\",\"3gpp\"],\"video/3gpp2\":[\"3g2\"],\"video/h261\":[\"h261\"],\"video/h263\":[\"h263\"],\"video/h264\":[\"h264\"],\"video/iso.segment\":[\"m4s\"],\"video/jpeg\":[\"jpgv\"],\"video/jpm\":[\"*jpm\",\"jpgm\"],\"video/mj2\":[\"mj2\",\"mjp2\"],\"video/mp2t\":[\"ts\"],\"video/mp4\":[\"mp4\",\"mp4v\",\"mpg4\"],\"video/mpeg\":[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"],\"video/ogg\":[\"ogv\"],\"video/quicktime\":[\"qt\",\"mov\"],\"video/webm\":[\"webm\"]};", "module.exports = {\"application/prs.cww\":[\"cww\"],\"application/vnd.1000minds.decision-model+xml\":[\"1km\"],\"application/vnd.3gpp.pic-bw-large\":[\"plb\"],\"application/vnd.3gpp.pic-bw-small\":[\"psb\"],\"application/vnd.3gpp.pic-bw-var\":[\"pvb\"],\"application/vnd.3gpp2.tcap\":[\"tcap\"],\"application/vnd.3m.post-it-notes\":[\"pwn\"],\"application/vnd.accpac.simply.aso\":[\"aso\"],\"application/vnd.accpac.simply.imp\":[\"imp\"],\"application/vnd.acucobol\":[\"acu\"],\"application/vnd.acucorp\":[\"atc\",\"acutc\"],\"application/vnd.adobe.air-application-installer-package+zip\":[\"air\"],\"application/vnd.adobe.formscentral.fcdt\":[\"fcdt\"],\"application/vnd.adobe.fxp\":[\"fxp\",\"fxpl\"],\"application/vnd.adobe.xdp+xml\":[\"xdp\"],\"application/vnd.adobe.xfdf\":[\"xfdf\"],\"application/vnd.ahead.space\":[\"ahead\"],\"application/vnd.airzip.filesecure.azf\":[\"azf\"],\"application/vnd.airzip.filesecure.azs\":[\"azs\"],\"application/vnd.amazon.ebook\":[\"azw\"],\"application/vnd.americandynamics.acc\":[\"acc\"],\"application/vnd.amiga.ami\":[\"ami\"],\"application/vnd.android.package-archive\":[\"apk\"],\"application/vnd.anser-web-certificate-issue-initiation\":[\"cii\"],\"application/vnd.anser-web-funds-transfer-initiation\":[\"fti\"],\"application/vnd.antix.game-component\":[\"atx\"],\"application/vnd.apple.installer+xml\":[\"mpkg\"],\"application/vnd.apple.keynote\":[\"key\"],\"application/vnd.apple.mpegurl\":[\"m3u8\"],\"application/vnd.apple.numbers\":[\"numbers\"],\"application/vnd.apple.pages\":[\"pages\"],\"application/vnd.apple.pkpass\":[\"pkpass\"],\"application/vnd.aristanetworks.swi\":[\"swi\"],\"application/vnd.astraea-software.iota\":[\"iota\"],\"application/vnd.audiograph\":[\"aep\"],\"application/vnd.balsamiq.bmml+xml\":[\"bmml\"],\"application/vnd.blueice.multipass\":[\"mpm\"],\"application/vnd.bmi\":[\"bmi\"],\"application/vnd.businessobjects\":[\"rep\"],\"application/vnd.chemdraw+xml\":[\"cdxml\"],\"application/vnd.chipnuts.karaoke-mmd\":[\"mmd\"],\"application/vnd.cinderella\":[\"cdy\"],\"application/vnd.citationstyles.style+xml\":[\"csl\"],\"application/vnd.claymore\":[\"cla\"],\"application/vnd.cloanto.rp9\":[\"rp9\"],\"application/vnd.clonk.c4group\":[\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"],\"application/vnd.cluetrust.cartomobile-config\":[\"c11amc\"],\"application/vnd.cluetrust.cartomobile-config-pkg\":[\"c11amz\"],\"application/vnd.commonspace\":[\"csp\"],\"application/vnd.contact.cmsg\":[\"cdbcmsg\"],\"application/vnd.cosmocaller\":[\"cmc\"],\"application/vnd.crick.clicker\":[\"clkx\"],\"application/vnd.crick.clicker.keyboard\":[\"clkk\"],\"application/vnd.crick.clicker.palette\":[\"clkp\"],\"application/vnd.crick.clicker.template\":[\"clkt\"],\"application/vnd.crick.clicker.wordbank\":[\"clkw\"],\"application/vnd.criticaltools.wbs+xml\":[\"wbs\"],\"application/vnd.ctc-posml\":[\"pml\"],\"application/vnd.cups-ppd\":[\"ppd\"],\"application/vnd.curl.car\":[\"car\"],\"application/vnd.curl.pcurl\":[\"pcurl\"],\"application/vnd.dart\":[\"dart\"],\"application/vnd.data-vision.rdz\":[\"rdz\"],\"application/vnd.dbf\":[\"dbf\"],\"application/vnd.dece.data\":[\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"],\"application/vnd.dece.ttml+xml\":[\"uvt\",\"uvvt\"],\"application/vnd.dece.unspecified\":[\"uvx\",\"uvvx\"],\"application/vnd.dece.zip\":[\"uvz\",\"uvvz\"],\"application/vnd.denovo.fcselayout-link\":[\"fe_launch\"],\"application/vnd.dna\":[\"dna\"],\"application/vnd.dolby.mlp\":[\"mlp\"],\"application/vnd.dpgraph\":[\"dpg\"],\"application/vnd.dreamfactory\":[\"dfac\"],\"application/vnd.ds-keypoint\":[\"kpxx\"],\"application/vnd.dvb.ait\":[\"ait\"],\"application/vnd.dvb.service\":[\"svc\"],\"application/vnd.dynageo\":[\"geo\"],\"application/vnd.ecowin.chart\":[\"mag\"],\"application/vnd.enliven\":[\"nml\"],\"application/vnd.epson.esf\":[\"esf\"],\"application/vnd.epson.msf\":[\"msf\"],\"application/vnd.epson.quickanime\":[\"qam\"],\"application/vnd.epson.salt\":[\"slt\"],\"application/vnd.epson.ssf\":[\"ssf\"],\"application/vnd.eszigno3+xml\":[\"es3\",\"et3\"],\"application/vnd.ezpix-album\":[\"ez2\"],\"application/vnd.ezpix-package\":[\"ez3\"],\"application/vnd.fdf\":[\"fdf\"],\"application/vnd.fdsn.mseed\":[\"mseed\"],\"application/vnd.fdsn.seed\":[\"seed\",\"dataless\"],\"application/vnd.flographit\":[\"gph\"],\"application/vnd.fluxtime.clip\":[\"ftc\"],\"application/vnd.framemaker\":[\"fm\",\"frame\",\"maker\",\"book\"],\"application/vnd.frogans.fnc\":[\"fnc\"],\"application/vnd.frogans.ltf\":[\"ltf\"],\"application/vnd.fsc.weblaunch\":[\"fsc\"],\"application/vnd.fujitsu.oasys\":[\"oas\"],\"application/vnd.fujitsu.oasys2\":[\"oa2\"],\"application/vnd.fujitsu.oasys3\":[\"oa3\"],\"application/vnd.fujitsu.oasysgp\":[\"fg5\"],\"application/vnd.fujitsu.oasysprs\":[\"bh2\"],\"application/vnd.fujixerox.ddd\":[\"ddd\"],\"application/vnd.fujixerox.docuworks\":[\"xdw\"],\"application/vnd.fujixerox.docuworks.binder\":[\"xbd\"],\"application/vnd.fuzzysheet\":[\"fzs\"],\"application/vnd.genomatix.tuxedo\":[\"txd\"],\"application/vnd.geogebra.file\":[\"ggb\"],\"application/vnd.geogebra.tool\":[\"ggt\"],\"application/vnd.geometry-explorer\":[\"gex\",\"gre\"],\"application/vnd.geonext\":[\"gxt\"],\"application/vnd.geoplan\":[\"g2w\"],\"application/vnd.geospace\":[\"g3w\"],\"application/vnd.gmx\":[\"gmx\"],\"application/vnd.google-apps.document\":[\"gdoc\"],\"application/vnd.google-apps.presentation\":[\"gslides\"],\"application/vnd.google-apps.spreadsheet\":[\"gsheet\"],\"application/vnd.google-earth.kml+xml\":[\"kml\"],\"application/vnd.google-earth.kmz\":[\"kmz\"],\"application/vnd.grafeq\":[\"gqf\",\"gqs\"],\"application/vnd.groove-account\":[\"gac\"],\"application/vnd.groove-help\":[\"ghf\"],\"application/vnd.groove-identity-message\":[\"gim\"],\"application/vnd.groove-injector\":[\"grv\"],\"application/vnd.groove-tool-message\":[\"gtm\"],\"application/vnd.groove-tool-template\":[\"tpl\"],\"application/vnd.groove-vcard\":[\"vcg\"],\"application/vnd.hal+xml\":[\"hal\"],\"application/vnd.handheld-entertainment+xml\":[\"zmm\"],\"application/vnd.hbci\":[\"hbci\"],\"application/vnd.hhe.lesson-player\":[\"les\"],\"application/vnd.hp-hpgl\":[\"hpgl\"],\"application/vnd.hp-hpid\":[\"hpid\"],\"application/vnd.hp-hps\":[\"hps\"],\"application/vnd.hp-jlyt\":[\"jlt\"],\"application/vnd.hp-pcl\":[\"pcl\"],\"application/vnd.hp-pclxl\":[\"pclxl\"],\"application/vnd.hydrostatix.sof-data\":[\"sfd-hdstx\"],\"application/vnd.ibm.minipay\":[\"mpy\"],\"application/vnd.ibm.modcap\":[\"afp\",\"listafp\",\"list3820\"],\"application/vnd.ibm.rights-management\":[\"irm\"],\"application/vnd.ibm.secure-container\":[\"sc\"],\"application/vnd.iccprofile\":[\"icc\",\"icm\"],\"application/vnd.igloader\":[\"igl\"],\"application/vnd.immervision-ivp\":[\"ivp\"],\"application/vnd.immervision-ivu\":[\"ivu\"],\"application/vnd.insors.igm\":[\"igm\"],\"application/vnd.intercon.formnet\":[\"xpw\",\"xpx\"],\"application/vnd.intergeo\":[\"i2g\"],\"application/vnd.intu.qbo\":[\"qbo\"],\"application/vnd.intu.qfx\":[\"qfx\"],\"application/vnd.ipunplugged.rcprofile\":[\"rcprofile\"],\"application/vnd.irepository.package+xml\":[\"irp\"],\"application/vnd.is-xpr\":[\"xpr\"],\"application/vnd.isac.fcs\":[\"fcs\"],\"application/vnd.jam\":[\"jam\"],\"application/vnd.jcp.javame.midlet-rms\":[\"rms\"],\"application/vnd.jisp\":[\"jisp\"],\"application/vnd.joost.joda-archive\":[\"joda\"],\"application/vnd.kahootz\":[\"ktz\",\"ktr\"],\"application/vnd.kde.karbon\":[\"karbon\"],\"application/vnd.kde.kchart\":[\"chrt\"],\"application/vnd.kde.kformula\":[\"kfo\"],\"application/vnd.kde.kivio\":[\"flw\"],\"application/vnd.kde.kontour\":[\"kon\"],\"application/vnd.kde.kpresenter\":[\"kpr\",\"kpt\"],\"application/vnd.kde.kspread\":[\"ksp\"],\"application/vnd.kde.kword\":[\"kwd\",\"kwt\"],\"application/vnd.kenameaapp\":[\"htke\"],\"application/vnd.kidspiration\":[\"kia\"],\"application/vnd.kinar\":[\"kne\",\"knp\"],\"application/vnd.koan\":[\"skp\",\"skd\",\"skt\",\"skm\"],\"application/vnd.kodak-descriptor\":[\"sse\"],\"application/vnd.las.las+xml\":[\"lasxml\"],\"application/vnd.llamagraphics.life-balance.desktop\":[\"lbd\"],\"application/vnd.llamagraphics.life-balance.exchange+xml\":[\"lbe\"],\"application/vnd.lotus-1-2-3\":[\"123\"],\"application/vnd.lotus-approach\":[\"apr\"],\"application/vnd.lotus-freelance\":[\"pre\"],\"application/vnd.lotus-notes\":[\"nsf\"],\"application/vnd.lotus-organizer\":[\"org\"],\"application/vnd.lotus-screencam\":[\"scm\"],\"application/vnd.lotus-wordpro\":[\"lwp\"],\"application/vnd.macports.portpkg\":[\"portpkg\"],\"application/vnd.mapbox-vector-tile\":[\"mvt\"],\"application/vnd.mcd\":[\"mcd\"],\"application/vnd.medcalcdata\":[\"mc1\"],\"application/vnd.mediastation.cdkey\":[\"cdkey\"],\"application/vnd.mfer\":[\"mwf\"],\"application/vnd.mfmp\":[\"mfm\"],\"application/vnd.micrografx.flo\":[\"flo\"],\"application/vnd.micrografx.igx\":[\"igx\"],\"application/vnd.mif\":[\"mif\"],\"application/vnd.mobius.daf\":[\"daf\"],\"application/vnd.mobius.dis\":[\"dis\"],\"application/vnd.mobius.mbk\":[\"mbk\"],\"application/vnd.mobius.mqy\":[\"mqy\"],\"application/vnd.mobius.msl\":[\"msl\"],\"application/vnd.mobius.plc\":[\"plc\"],\"application/vnd.mobius.txf\":[\"txf\"],\"application/vnd.mophun.application\":[\"mpn\"],\"application/vnd.mophun.certificate\":[\"mpc\"],\"application/vnd.mozilla.xul+xml\":[\"xul\"],\"application/vnd.ms-artgalry\":[\"cil\"],\"application/vnd.ms-cab-compressed\":[\"cab\"],\"application/vnd.ms-excel\":[\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"],\"application/vnd.ms-excel.addin.macroenabled.12\":[\"xlam\"],\"application/vnd.ms-excel.sheet.binary.macroenabled.12\":[\"xlsb\"],\"application/vnd.ms-excel.sheet.macroenabled.12\":[\"xlsm\"],\"application/vnd.ms-excel.template.macroenabled.12\":[\"xltm\"],\"application/vnd.ms-fontobject\":[\"eot\"],\"application/vnd.ms-htmlhelp\":[\"chm\"],\"application/vnd.ms-ims\":[\"ims\"],\"application/vnd.ms-lrm\":[\"lrm\"],\"application/vnd.ms-officetheme\":[\"thmx\"],\"application/vnd.ms-outlook\":[\"msg\"],\"application/vnd.ms-pki.seccat\":[\"cat\"],\"application/vnd.ms-pki.stl\":[\"*stl\"],\"application/vnd.ms-powerpoint\":[\"ppt\",\"pps\",\"pot\"],\"application/vnd.ms-powerpoint.addin.macroenabled.12\":[\"ppam\"],\"application/vnd.ms-powerpoint.presentation.macroenabled.12\":[\"pptm\"],\"application/vnd.ms-powerpoint.slide.macroenabled.12\":[\"sldm\"],\"application/vnd.ms-powerpoint.slideshow.macroenabled.12\":[\"ppsm\"],\"application/vnd.ms-powerpoint.template.macroenabled.12\":[\"potm\"],\"application/vnd.ms-project\":[\"mpp\",\"mpt\"],\"application/vnd.ms-word.document.macroenabled.12\":[\"docm\"],\"application/vnd.ms-word.template.macroenabled.12\":[\"dotm\"],\"application/vnd.ms-works\":[\"wps\",\"wks\",\"wcm\",\"wdb\"],\"application/vnd.ms-wpl\":[\"wpl\"],\"application/vnd.ms-xpsdocument\":[\"xps\"],\"application/vnd.mseq\":[\"mseq\"],\"application/vnd.musician\":[\"mus\"],\"application/vnd.muvee.style\":[\"msty\"],\"application/vnd.mynfc\":[\"taglet\"],\"application/vnd.neurolanguage.nlu\":[\"nlu\"],\"application/vnd.nitf\":[\"ntf\",\"nitf\"],\"application/vnd.noblenet-directory\":[\"nnd\"],\"application/vnd.noblenet-sealer\":[\"nns\"],\"application/vnd.noblenet-web\":[\"nnw\"],\"application/vnd.nokia.n-gage.ac+xml\":[\"*ac\"],\"application/vnd.nokia.n-gage.data\":[\"ngdat\"],\"application/vnd.nokia.n-gage.symbian.install\":[\"n-gage\"],\"application/vnd.nokia.radio-preset\":[\"rpst\"],\"application/vnd.nokia.radio-presets\":[\"rpss\"],\"application/vnd.novadigm.edm\":[\"edm\"],\"application/vnd.novadigm.edx\":[\"edx\"],\"application/vnd.novadigm.ext\":[\"ext\"],\"application/vnd.oasis.opendocument.chart\":[\"odc\"],\"application/vnd.oasis.opendocument.chart-template\":[\"otc\"],\"application/vnd.oasis.opendocument.database\":[\"odb\"],\"application/vnd.oasis.opendocument.formula\":[\"odf\"],\"application/vnd.oasis.opendocument.formula-template\":[\"odft\"],\"application/vnd.oasis.opendocument.graphics\":[\"odg\"],\"application/vnd.oasis.opendocument.graphics-template\":[\"otg\"],\"application/vnd.oasis.opendocument.image\":[\"odi\"],\"application/vnd.oasis.opendocument.image-template\":[\"oti\"],\"application/vnd.oasis.opendocument.presentation\":[\"odp\"],\"application/vnd.oasis.opendocument.presentation-template\":[\"otp\"],\"application/vnd.oasis.opendocument.spreadsheet\":[\"ods\"],\"application/vnd.oasis.opendocument.spreadsheet-template\":[\"ots\"],\"application/vnd.oasis.opendocument.text\":[\"odt\"],\"application/vnd.oasis.opendocument.text-master\":[\"odm\"],\"application/vnd.oasis.opendocument.text-template\":[\"ott\"],\"application/vnd.oasis.opendocument.text-web\":[\"oth\"],\"application/vnd.olpc-sugar\":[\"xo\"],\"application/vnd.oma.dd2+xml\":[\"dd2\"],\"application/vnd.openblox.game+xml\":[\"obgx\"],\"application/vnd.openofficeorg.extension\":[\"oxt\"],\"application/vnd.openstreetmap.data+xml\":[\"osm\"],\"application/vnd.openxmlformats-officedocument.presentationml.presentation\":[\"pptx\"],\"application/vnd.openxmlformats-officedocument.presentationml.slide\":[\"sldx\"],\"application/vnd.openxmlformats-officedocument.presentationml.slideshow\":[\"ppsx\"],\"application/vnd.openxmlformats-officedocument.presentationml.template\":[\"potx\"],\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\":[\"xlsx\"],\"application/vnd.openxmlformats-officedocument.spreadsheetml.template\":[\"xltx\"],\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\":[\"docx\"],\"application/vnd.openxmlformats-officedocument.wordprocessingml.template\":[\"dotx\"],\"application/vnd.osgeo.mapguide.package\":[\"mgp\"],\"application/vnd.osgi.dp\":[\"dp\"],\"application/vnd.osgi.subsystem\":[\"esa\"],\"application/vnd.palm\":[\"pdb\",\"pqa\",\"oprc\"],\"application/vnd.pawaafile\":[\"paw\"],\"application/vnd.pg.format\":[\"str\"],\"application/vnd.pg.osasli\":[\"ei6\"],\"application/vnd.picsel\":[\"efif\"],\"application/vnd.pmi.widget\":[\"wg\"],\"application/vnd.pocketlearn\":[\"plf\"],\"application/vnd.powerbuilder6\":[\"pbd\"],\"application/vnd.previewsystems.box\":[\"box\"],\"application/vnd.proteus.magazine\":[\"mgz\"],\"application/vnd.publishare-delta-tree\":[\"qps\"],\"application/vnd.pvi.ptid1\":[\"ptid\"],\"application/vnd.quark.quarkxpress\":[\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"],\"application/vnd.rar\":[\"rar\"],\"application/vnd.realvnc.bed\":[\"bed\"],\"application/vnd.recordare.musicxml\":[\"mxl\"],\"application/vnd.recordare.musicxml+xml\":[\"musicxml\"],\"application/vnd.rig.cryptonote\":[\"cryptonote\"],\"application/vnd.rim.cod\":[\"cod\"],\"application/vnd.rn-realmedia\":[\"rm\"],\"application/vnd.rn-realmedia-vbr\":[\"rmvb\"],\"application/vnd.route66.link66+xml\":[\"link66\"],\"application/vnd.sailingtracker.track\":[\"st\"],\"application/vnd.seemail\":[\"see\"],\"application/vnd.sema\":[\"sema\"],\"application/vnd.semd\":[\"semd\"],\"application/vnd.semf\":[\"semf\"],\"application/vnd.shana.informed.formdata\":[\"ifm\"],\"application/vnd.shana.informed.formtemplate\":[\"itp\"],\"application/vnd.shana.informed.interchange\":[\"iif\"],\"application/vnd.shana.informed.package\":[\"ipk\"],\"application/vnd.simtech-mindmapper\":[\"twd\",\"twds\"],\"application/vnd.smaf\":[\"mmf\"],\"application/vnd.smart.teacher\":[\"teacher\"],\"application/vnd.software602.filler.form+xml\":[\"fo\"],\"application/vnd.solent.sdkm+xml\":[\"sdkm\",\"sdkd\"],\"application/vnd.spotfire.dxp\":[\"dxp\"],\"application/vnd.spotfire.sfs\":[\"sfs\"],\"application/vnd.stardivision.calc\":[\"sdc\"],\"application/vnd.stardivision.draw\":[\"sda\"],\"application/vnd.stardivision.impress\":[\"sdd\"],\"application/vnd.stardivision.math\":[\"smf\"],\"application/vnd.stardivision.writer\":[\"sdw\",\"vor\"],\"application/vnd.stardivision.writer-global\":[\"sgl\"],\"application/vnd.stepmania.package\":[\"smzip\"],\"application/vnd.stepmania.stepchart\":[\"sm\"],\"application/vnd.sun.wadl+xml\":[\"wadl\"],\"application/vnd.sun.xml.calc\":[\"sxc\"],\"application/vnd.sun.xml.calc.template\":[\"stc\"],\"application/vnd.sun.xml.draw\":[\"sxd\"],\"application/vnd.sun.xml.draw.template\":[\"std\"],\"application/vnd.sun.xml.impress\":[\"sxi\"],\"application/vnd.sun.xml.impress.template\":[\"sti\"],\"application/vnd.sun.xml.math\":[\"sxm\"],\"application/vnd.sun.xml.writer\":[\"sxw\"],\"application/vnd.sun.xml.writer.global\":[\"sxg\"],\"application/vnd.sun.xml.writer.template\":[\"stw\"],\"application/vnd.sus-calendar\":[\"sus\",\"susp\"],\"application/vnd.svd\":[\"svd\"],\"application/vnd.symbian.install\":[\"sis\",\"sisx\"],\"application/vnd.syncml+xml\":[\"xsm\"],\"application/vnd.syncml.dm+wbxml\":[\"bdm\"],\"application/vnd.syncml.dm+xml\":[\"xdm\"],\"application/vnd.syncml.dmddf+xml\":[\"ddf\"],\"application/vnd.tao.intent-module-archive\":[\"tao\"],\"application/vnd.tcpdump.pcap\":[\"pcap\",\"cap\",\"dmp\"],\"application/vnd.tmobile-livetv\":[\"tmo\"],\"application/vnd.trid.tpt\":[\"tpt\"],\"application/vnd.triscape.mxs\":[\"mxs\"],\"application/vnd.trueapp\":[\"tra\"],\"application/vnd.ufdl\":[\"ufd\",\"ufdl\"],\"application/vnd.uiq.theme\":[\"utz\"],\"application/vnd.umajin\":[\"umj\"],\"application/vnd.unity\":[\"unityweb\"],\"application/vnd.uoml+xml\":[\"uoml\"],\"application/vnd.vcx\":[\"vcx\"],\"application/vnd.visio\":[\"vsd\",\"vst\",\"vss\",\"vsw\"],\"application/vnd.visionary\":[\"vis\"],\"application/vnd.vsf\":[\"vsf\"],\"application/vnd.wap.wbxml\":[\"wbxml\"],\"application/vnd.wap.wmlc\":[\"wmlc\"],\"application/vnd.wap.wmlscriptc\":[\"wmlsc\"],\"application/vnd.webturbo\":[\"wtb\"],\"application/vnd.wolfram.player\":[\"nbp\"],\"application/vnd.wordperfect\":[\"wpd\"],\"application/vnd.wqd\":[\"wqd\"],\"application/vnd.wt.stf\":[\"stf\"],\"application/vnd.xara\":[\"xar\"],\"application/vnd.xfdl\":[\"xfdl\"],\"application/vnd.yamaha.hv-dic\":[\"hvd\"],\"application/vnd.yamaha.hv-script\":[\"hvs\"],\"application/vnd.yamaha.hv-voice\":[\"hvp\"],\"application/vnd.yamaha.openscoreformat\":[\"osf\"],\"application/vnd.yamaha.openscoreformat.osfpvg+xml\":[\"osfpvg\"],\"application/vnd.yamaha.smaf-audio\":[\"saf\"],\"application/vnd.yamaha.smaf-phrase\":[\"spf\"],\"application/vnd.yellowriver-custom-menu\":[\"cmp\"],\"application/vnd.zul\":[\"zir\",\"zirz\"],\"application/vnd.zzazz.deck+xml\":[\"zaz\"],\"application/x-7z-compressed\":[\"7z\"],\"application/x-abiword\":[\"abw\"],\"application/x-ace-compressed\":[\"ace\"],\"application/x-apple-diskimage\":[\"*dmg\"],\"application/x-arj\":[\"arj\"],\"application/x-authorware-bin\":[\"aab\",\"x32\",\"u32\",\"vox\"],\"application/x-authorware-map\":[\"aam\"],\"application/x-authorware-seg\":[\"aas\"],\"application/x-bcpio\":[\"bcpio\"],\"application/x-bdoc\":[\"*bdoc\"],\"application/x-bittorrent\":[\"torrent\"],\"application/x-blorb\":[\"blb\",\"blorb\"],\"application/x-bzip\":[\"bz\"],\"application/x-bzip2\":[\"bz2\",\"boz\"],\"application/x-cbr\":[\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"],\"application/x-cdlink\":[\"vcd\"],\"application/x-cfs-compressed\":[\"cfs\"],\"application/x-chat\":[\"chat\"],\"application/x-chess-pgn\":[\"pgn\"],\"application/x-chrome-extension\":[\"crx\"],\"application/x-cocoa\":[\"cco\"],\"application/x-conference\":[\"nsc\"],\"application/x-cpio\":[\"cpio\"],\"application/x-csh\":[\"csh\"],\"application/x-debian-package\":[\"*deb\",\"udeb\"],\"application/x-dgc-compressed\":[\"dgc\"],\"application/x-director\":[\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"],\"application/x-doom\":[\"wad\"],\"application/x-dtbncx+xml\":[\"ncx\"],\"application/x-dtbook+xml\":[\"dtb\"],\"application/x-dtbresource+xml\":[\"res\"],\"application/x-dvi\":[\"dvi\"],\"application/x-envoy\":[\"evy\"],\"application/x-eva\":[\"eva\"],\"application/x-font-bdf\":[\"bdf\"],\"application/x-font-ghostscript\":[\"gsf\"],\"application/x-font-linux-psf\":[\"psf\"],\"application/x-font-pcf\":[\"pcf\"],\"application/x-font-snf\":[\"snf\"],\"application/x-font-type1\":[\"pfa\",\"pfb\",\"pfm\",\"afm\"],\"application/x-freearc\":[\"arc\"],\"application/x-futuresplash\":[\"spl\"],\"application/x-gca-compressed\":[\"gca\"],\"application/x-glulx\":[\"ulx\"],\"application/x-gnumeric\":[\"gnumeric\"],\"application/x-gramps-xml\":[\"gramps\"],\"application/x-gtar\":[\"gtar\"],\"application/x-hdf\":[\"hdf\"],\"application/x-httpd-php\":[\"php\"],\"application/x-install-instructions\":[\"install\"],\"application/x-iso9660-image\":[\"*iso\"],\"application/x-iwork-keynote-sffkey\":[\"*key\"],\"application/x-iwork-numbers-sffnumbers\":[\"*numbers\"],\"application/x-iwork-pages-sffpages\":[\"*pages\"],\"application/x-java-archive-diff\":[\"jardiff\"],\"application/x-java-jnlp-file\":[\"jnlp\"],\"application/x-keepass2\":[\"kdbx\"],\"application/x-latex\":[\"latex\"],\"application/x-lua-bytecode\":[\"luac\"],\"application/x-lzh-compressed\":[\"lzh\",\"lha\"],\"application/x-makeself\":[\"run\"],\"application/x-mie\":[\"mie\"],\"application/x-mobipocket-ebook\":[\"prc\",\"mobi\"],\"application/x-ms-application\":[\"application\"],\"application/x-ms-shortcut\":[\"lnk\"],\"application/x-ms-wmd\":[\"wmd\"],\"application/x-ms-wmz\":[\"wmz\"],\"application/x-ms-xbap\":[\"xbap\"],\"application/x-msaccess\":[\"mdb\"],\"application/x-msbinder\":[\"obd\"],\"application/x-mscardfile\":[\"crd\"],\"application/x-msclip\":[\"clp\"],\"application/x-msdos-program\":[\"*exe\"],\"application/x-msdownload\":[\"*exe\",\"*dll\",\"com\",\"bat\",\"*msi\"],\"application/x-msmediaview\":[\"mvb\",\"m13\",\"m14\"],\"application/x-msmetafile\":[\"*wmf\",\"*wmz\",\"*emf\",\"emz\"],\"application/x-msmoney\":[\"mny\"],\"application/x-mspublisher\":[\"pub\"],\"application/x-msschedule\":[\"scd\"],\"application/x-msterminal\":[\"trm\"],\"application/x-mswrite\":[\"wri\"],\"application/x-netcdf\":[\"nc\",\"cdf\"],\"application/x-ns-proxy-autoconfig\":[\"pac\"],\"application/x-nzb\":[\"nzb\"],\"application/x-perl\":[\"pl\",\"pm\"],\"application/x-pilot\":[\"*prc\",\"*pdb\"],\"application/x-pkcs12\":[\"p12\",\"pfx\"],\"application/x-pkcs7-certificates\":[\"p7b\",\"spc\"],\"application/x-pkcs7-certreqresp\":[\"p7r\"],\"application/x-rar-compressed\":[\"*rar\"],\"application/x-redhat-package-manager\":[\"rpm\"],\"application/x-research-info-systems\":[\"ris\"],\"application/x-sea\":[\"sea\"],\"application/x-sh\":[\"sh\"],\"application/x-shar\":[\"shar\"],\"application/x-shockwave-flash\":[\"swf\"],\"application/x-silverlight-app\":[\"xap\"],\"application/x-sql\":[\"sql\"],\"application/x-stuffit\":[\"sit\"],\"application/x-stuffitx\":[\"sitx\"],\"application/x-subrip\":[\"srt\"],\"application/x-sv4cpio\":[\"sv4cpio\"],\"application/x-sv4crc\":[\"sv4crc\"],\"application/x-t3vm-image\":[\"t3\"],\"application/x-tads\":[\"gam\"],\"application/x-tar\":[\"tar\"],\"application/x-tcl\":[\"tcl\",\"tk\"],\"application/x-tex\":[\"tex\"],\"application/x-tex-tfm\":[\"tfm\"],\"application/x-texinfo\":[\"texinfo\",\"texi\"],\"application/x-tgif\":[\"*obj\"],\"application/x-ustar\":[\"ustar\"],\"application/x-virtualbox-hdd\":[\"hdd\"],\"application/x-virtualbox-ova\":[\"ova\"],\"application/x-virtualbox-ovf\":[\"ovf\"],\"application/x-virtualbox-vbox\":[\"vbox\"],\"application/x-virtualbox-vbox-extpack\":[\"vbox-extpack\"],\"application/x-virtualbox-vdi\":[\"vdi\"],\"application/x-virtualbox-vhd\":[\"vhd\"],\"application/x-virtualbox-vmdk\":[\"vmdk\"],\"application/x-wais-source\":[\"src\"],\"application/x-web-app-manifest+json\":[\"webapp\"],\"application/x-x509-ca-cert\":[\"der\",\"crt\",\"pem\"],\"application/x-xfig\":[\"fig\"],\"application/x-xliff+xml\":[\"*xlf\"],\"application/x-xpinstall\":[\"xpi\"],\"application/x-xz\":[\"xz\"],\"application/x-zmachine\":[\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"],\"audio/vnd.dece.audio\":[\"uva\",\"uvva\"],\"audio/vnd.digital-winds\":[\"eol\"],\"audio/vnd.dra\":[\"dra\"],\"audio/vnd.dts\":[\"dts\"],\"audio/vnd.dts.hd\":[\"dtshd\"],\"audio/vnd.lucent.voice\":[\"lvp\"],\"audio/vnd.ms-playready.media.pya\":[\"pya\"],\"audio/vnd.nuera.ecelp4800\":[\"ecelp4800\"],\"audio/vnd.nuera.ecelp7470\":[\"ecelp7470\"],\"audio/vnd.nuera.ecelp9600\":[\"ecelp9600\"],\"audio/vnd.rip\":[\"rip\"],\"audio/x-aac\":[\"aac\"],\"audio/x-aiff\":[\"aif\",\"aiff\",\"aifc\"],\"audio/x-caf\":[\"caf\"],\"audio/x-flac\":[\"flac\"],\"audio/x-m4a\":[\"*m4a\"],\"audio/x-matroska\":[\"mka\"],\"audio/x-mpegurl\":[\"m3u\"],\"audio/x-ms-wax\":[\"wax\"],\"audio/x-ms-wma\":[\"wma\"],\"audio/x-pn-realaudio\":[\"ram\",\"ra\"],\"audio/x-pn-realaudio-plugin\":[\"rmp\"],\"audio/x-realaudio\":[\"*ra\"],\"audio/x-wav\":[\"*wav\"],\"chemical/x-cdx\":[\"cdx\"],\"chemical/x-cif\":[\"cif\"],\"chemical/x-cmdf\":[\"cmdf\"],\"chemical/x-cml\":[\"cml\"],\"chemical/x-csml\":[\"csml\"],\"chemical/x-xyz\":[\"xyz\"],\"image/prs.btif\":[\"btif\"],\"image/prs.pti\":[\"pti\"],\"image/vnd.adobe.photoshop\":[\"psd\"],\"image/vnd.airzip.accelerator.azv\":[\"azv\"],\"image/vnd.dece.graphic\":[\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"],\"image/vnd.djvu\":[\"djvu\",\"djv\"],\"image/vnd.dvb.subtitle\":[\"*sub\"],\"image/vnd.dwg\":[\"dwg\"],\"image/vnd.dxf\":[\"dxf\"],\"image/vnd.fastbidsheet\":[\"fbs\"],\"image/vnd.fpx\":[\"fpx\"],\"image/vnd.fst\":[\"fst\"],\"image/vnd.fujixerox.edmics-mmr\":[\"mmr\"],\"image/vnd.fujixerox.edmics-rlc\":[\"rlc\"],\"image/vnd.microsoft.icon\":[\"ico\"],\"image/vnd.ms-dds\":[\"dds\"],\"image/vnd.ms-modi\":[\"mdi\"],\"image/vnd.ms-photo\":[\"wdp\"],\"image/vnd.net-fpx\":[\"npx\"],\"image/vnd.pco.b16\":[\"b16\"],\"image/vnd.tencent.tap\":[\"tap\"],\"image/vnd.valve.source.texture\":[\"vtf\"],\"image/vnd.wap.wbmp\":[\"wbmp\"],\"image/vnd.xiff\":[\"xif\"],\"image/vnd.zbrush.pcx\":[\"pcx\"],\"image/x-3ds\":[\"3ds\"],\"image/x-cmu-raster\":[\"ras\"],\"image/x-cmx\":[\"cmx\"],\"image/x-freehand\":[\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"],\"image/x-icon\":[\"*ico\"],\"image/x-jng\":[\"jng\"],\"image/x-mrsid-image\":[\"sid\"],\"image/x-ms-bmp\":[\"*bmp\"],\"image/x-pcx\":[\"*pcx\"],\"image/x-pict\":[\"pic\",\"pct\"],\"image/x-portable-anymap\":[\"pnm\"],\"image/x-portable-bitmap\":[\"pbm\"],\"image/x-portable-graymap\":[\"pgm\"],\"image/x-portable-pixmap\":[\"ppm\"],\"image/x-rgb\":[\"rgb\"],\"image/x-tga\":[\"tga\"],\"image/x-xbitmap\":[\"xbm\"],\"image/x-xpixmap\":[\"xpm\"],\"image/x-xwindowdump\":[\"xwd\"],\"message/vnd.wfa.wsc\":[\"wsc\"],\"model/vnd.collada+xml\":[\"dae\"],\"model/vnd.dwf\":[\"dwf\"],\"model/vnd.gdl\":[\"gdl\"],\"model/vnd.gtw\":[\"gtw\"],\"model/vnd.mts\":[\"mts\"],\"model/vnd.opengex\":[\"ogex\"],\"model/vnd.parasolid.transmit.binary\":[\"x_b\"],\"model/vnd.parasolid.transmit.text\":[\"x_t\"],\"model/vnd.sap.vds\":[\"vds\"],\"model/vnd.usdz+zip\":[\"usdz\"],\"model/vnd.valve.source.compiled-map\":[\"bsp\"],\"model/vnd.vtu\":[\"vtu\"],\"text/prs.lines.tag\":[\"dsc\"],\"text/vnd.curl\":[\"curl\"],\"text/vnd.curl.dcurl\":[\"dcurl\"],\"text/vnd.curl.mcurl\":[\"mcurl\"],\"text/vnd.curl.scurl\":[\"scurl\"],\"text/vnd.dvb.subtitle\":[\"sub\"],\"text/vnd.fly\":[\"fly\"],\"text/vnd.fmi.flexstor\":[\"flx\"],\"text/vnd.graphviz\":[\"gv\"],\"text/vnd.in3d.3dml\":[\"3dml\"],\"text/vnd.in3d.spot\":[\"spot\"],\"text/vnd.sun.j2me.app-descriptor\":[\"jad\"],\"text/vnd.wap.wml\":[\"wml\"],\"text/vnd.wap.wmlscript\":[\"wmls\"],\"text/x-asm\":[\"s\",\"asm\"],\"text/x-c\":[\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"],\"text/x-component\":[\"htc\"],\"text/x-fortran\":[\"f\",\"for\",\"f77\",\"f90\"],\"text/x-handlebars-template\":[\"hbs\"],\"text/x-java-source\":[\"java\"],\"text/x-lua\":[\"lua\"],\"text/x-markdown\":[\"mkd\"],\"text/x-nfo\":[\"nfo\"],\"text/x-opml\":[\"opml\"],\"text/x-org\":[\"*org\"],\"text/x-pascal\":[\"p\",\"pas\"],\"text/x-processing\":[\"pde\"],\"text/x-sass\":[\"sass\"],\"text/x-scss\":[\"scss\"],\"text/x-setext\":[\"etx\"],\"text/x-sfv\":[\"sfv\"],\"text/x-suse-ymp\":[\"ymp\"],\"text/x-uuencode\":[\"uu\"],\"text/x-vcalendar\":[\"vcs\"],\"text/x-vcard\":[\"vcf\"],\"video/vnd.dece.hd\":[\"uvh\",\"uvvh\"],\"video/vnd.dece.mobile\":[\"uvm\",\"uvvm\"],\"video/vnd.dece.pd\":[\"uvp\",\"uvvp\"],\"video/vnd.dece.sd\":[\"uvs\",\"uvvs\"],\"video/vnd.dece.video\":[\"uvv\",\"uvvv\"],\"video/vnd.dvb.file\":[\"dvb\"],\"video/vnd.fvt\":[\"fvt\"],\"video/vnd.mpegurl\":[\"mxu\",\"m4u\"],\"video/vnd.ms-playready.media.pyv\":[\"pyv\"],\"video/vnd.uvvu.mp4\":[\"uvu\",\"uvvu\"],\"video/vnd.vivo\":[\"viv\"],\"video/x-f4v\":[\"f4v\"],\"video/x-fli\":[\"fli\"],\"video/x-flv\":[\"flv\"],\"video/x-m4v\":[\"m4v\"],\"video/x-matroska\":[\"mkv\",\"mk3d\",\"mks\"],\"video/x-mng\":[\"mng\"],\"video/x-ms-asf\":[\"asf\",\"asx\"],\"video/x-ms-vob\":[\"vob\"],\"video/x-ms-wm\":[\"wm\"],\"video/x-ms-wmv\":[\"wmv\"],\"video/x-ms-wmx\":[\"wmx\"],\"video/x-ms-wvx\":[\"wvx\"],\"video/x-msvideo\":[\"avi\"],\"video/x-sgi-movie\":[\"movie\"],\"video/x-smv\":[\"smv\"],\"x-conference/x-cooltalk\":[\"ice\"]};", "'use strict';\n\nlet Mime = require('./Mime');\nmodule.exports = new Mime(require('./types/standard'), require('./types/other'));\n", null, null, null, null, null, null, "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport type Pyodide from 'pyodide';\n\nimport type { DriveFS } from '@jupyterlite/contents';\n\nimport type { IPyodideWorkerKernel } from './tokens';\n\nexport class PyodideRemoteKernel {\n constructor() {\n this._initialized = new Promise((resolve, reject) => {\n this._initializer = { resolve, reject };\n });\n }\n\n /**\n * Accept the URLs from the host\n **/\n async initialize(options: IPyodideWorkerKernel.IOptions): Promise<void> {\n this._options = options;\n\n if (options.location.includes(':')) {\n const parts = options.location.split(':');\n this._driveName = parts[0];\n this._localPath = parts[1];\n } else {\n this._driveName = '';\n this._localPath = options.location;\n }\n\n await this.initRuntime(options);\n await this.initFilesystem(options);\n await this.initPackageManager(options);\n await this.initKernel(options);\n await this.initGlobals(options);\n this._initializer?.resolve();\n }\n\n protected async initRuntime(options: IPyodideWorkerKernel.IOptions): Promise<void> {\n const { pyodideUrl, indexUrl } = options;\n let loadPyodide: typeof Pyodide.loadPyodide;\n if (pyodideUrl.endsWith('.mjs')) {\n // note: this does not work at all in firefox\n const pyodideModule: typeof Pyodide = await import(\n /* webpackIgnore: true */ pyodideUrl\n );\n loadPyodide = pyodideModule.loadPyodide;\n } else {\n importScripts(pyodideUrl);\n loadPyodide = (self as any).loadPyodide;\n }\n this._pyodide = await loadPyodide({ indexURL: indexUrl });\n }\n\n protected async initPackageManager(\n options: IPyodideWorkerKernel.IOptions,\n ): Promise<void> {\n if (!this._options) {\n throw new Error('Uninitialized');\n }\n\n const { pipliteWheelUrl, disablePyPIFallback, pipliteUrls } = this._options;\n\n await this._pyodide.loadPackage(['micropip']);\n\n // get piplite early enough to impact pyodide dependencies\n await this._pyodide.runPythonAsync(`\n import micropip\n await micropip.install('${pipliteWheelUrl}', keep_going=True)\n import piplite.piplite\n piplite.piplite._PIPLITE_DISABLE_PYPI = ${disablePyPIFallback ? 'True' : 'False'}\n piplite.piplite._PIPLITE_URLS = ${JSON.stringify(pipliteUrls)}\n `);\n }\n\n protected async initKernel(options: IPyodideWorkerKernel.IOptions): Promise<void> {\n // from this point forward, only use piplite (but not %pip)\n await this._pyodide.runPythonAsync(`\n await piplite.install(['sqlite3'], keep_going=True);\n await piplite.install(['ipykernel'], keep_going=True);\n await piplite.install(['comm'], keep_going=True);\n await piplite.install(['pyodide_kernel'], keep_going=True);\n await piplite.install(['ipython'], keep_going=True);\n import pyodide_kernel\n `);\n // cd to the kernel location\n if (options.mountDrive && this._localPath) {\n await this._pyodide.runPythonAsync(`\n import os;\n os.chdir(\"${this._localPath}\");\n `);\n }\n }\n\n protected async initGlobals(options: IPyodideWorkerKernel.IOptions): Promise<void> {\n const { globals } = this._pyodide;\n this._kernel = globals.get('pyodide_kernel').kernel_instance.copy();\n this._stdout_stream = globals.get('pyodide_kernel').stdout_stream.copy();\n this._stderr_stream = globals.get('pyodide_kernel').stderr_stream.copy();\n this._interpreter = this._kernel.interpreter.copy();\n this._interpreter.send_comm = this.sendComm.bind(this);\n }\n\n /**\n * Setup custom Emscripten FileSystem\n */\n protected async initFilesystem(\n options: IPyodideWorkerKernel.IOptions,\n ): Promise<void> {\n if (options.mountDrive) {\n const mountpoint = '/drive';\n const { FS, PATH, ERRNO_CODES } = this._pyodide;\n const { baseUrl } = options;\n const { DriveFS } = await import('@jupyterlite/contents');\n\n const driveFS = new DriveFS({\n FS,\n PATH,\n ERRNO_CODES,\n baseUrl,\n driveName: this._driveName,\n mountpoint,\n });\n FS.mkdir(mountpoint);\n FS.mount(driveFS, {}, mountpoint);\n FS.chdir(mountpoint);\n this._driveFS = driveFS;\n }\n }\n\n /**\n * Recursively convert a Map to a JavaScript object\n * @param obj A Map, Array, or other object to convert\n */\n mapToObject(obj: any) {\n const out: any = obj instanceof Array ? [] : {};\n obj.forEach((value: any, key: string) => {\n out[key] =\n value instanceof Map || value instanceof Array\n ? this.mapToObject(value)\n : value;\n });\n return out;\n }\n\n /**\n * Format the response from the Pyodide evaluation.\n *\n * @param res The result object from the Pyodide evaluation\n */\n formatResult(res: any): any {\n if (!(res instanceof this._pyodide.ffi.PyProxy)) {\n return res;\n }\n // TODO: this is a bit brittle\n const m = res.toJs();\n const results = this.mapToObject(m);\n return results;\n }\n\n /**\n * Makes sure pyodide is ready before continuing, and cache the parent message.\n */\n async setup(parent: any): Promise<void> {\n await this._initialized;\n this._kernel._parent_header = this._pyodide.toPy(parent);\n }\n\n /**\n * Execute code with the interpreter.\n *\n * @param content The incoming message with the code to execute.\n */\n async execute(content: any, parent: any) {\n await this.setup(parent);\n\n const publishExecutionResult = (\n prompt_count: any,\n data: any,\n metadata: any,\n ): void => {\n const bundle = {\n execution_count: prompt_count,\n data: this.formatResult(data),\n metadata: this.formatResult(metadata),\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'execute_result',\n });\n };\n\n const publishExecutionError = (ename: any, evalue: any, traceback: any): void => {\n const bundle = {\n ename: ename,\n evalue: evalue,\n traceback: traceback,\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'execute_error',\n });\n };\n\n const clearOutputCallback = (wait: boolean): void => {\n const bundle = {\n wait: this.formatResult(wait),\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'clear_output',\n });\n };\n\n const displayDataCallback = (data: any, metadata: any, transient: any): void => {\n const bundle = {\n data: this.formatResult(data),\n metadata: this.formatResult(metadata),\n transient: this.formatResult(transient),\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'display_data',\n });\n };\n\n const updateDisplayDataCallback = (\n data: any,\n metadata: any,\n transient: any,\n ): void => {\n const bundle = {\n data: this.formatResult(data),\n metadata: this.formatResult(metadata),\n transient: this.formatResult(transient),\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'update_display_data',\n });\n };\n\n const publishStreamCallback = (name: any, text: any): void => {\n const bundle = {\n name: this.formatResult(name),\n text: this.formatResult(text),\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'stream',\n });\n };\n\n this._stdout_stream.publish_stream_callback = publishStreamCallback;\n this._stderr_stream.publish_stream_callback = publishStreamCallback;\n this._interpreter.display_pub.clear_output_callback = clearOutputCallback;\n this._interpreter.display_pub.display_data_callback = displayDataCallback;\n this._interpreter.display_pub.update_display_data_callback =\n updateDisplayDataCallback;\n this._interpreter.displayhook.publish_execution_result = publishExecutionResult;\n this._interpreter.input = this.input.bind(this);\n this._interpreter.getpass = this.getpass.bind(this);\n\n const res = await this._kernel.run(content.code);\n const results = this.formatResult(res);\n\n if (results['status'] === 'error') {\n publishExecutionError(results['ename'], results['evalue'], results['traceback']);\n }\n\n return results;\n }\n\n /**\n * Complete the code submitted by a user.\n *\n * @param content The incoming message with the code to complete.\n */\n async complete(content: any, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.complete(content.code, content.cursor_pos);\n const results = this.formatResult(res);\n return results;\n }\n\n /**\n * Inspect the code submitted by a user.\n *\n * @param content The incoming message with the code to inspect.\n */\n async inspect(\n content: { code: string; cursor_pos: number; detail_level: 0 | 1 },\n parent: any,\n ) {\n await this.setup(parent);\n\n const res = this._kernel.inspect(\n content.code,\n content.cursor_pos,\n content.detail_level,\n );\n const results = this.formatResult(res);\n return results;\n }\n\n /**\n * Check code for completeness submitted by a user.\n *\n * @param content The incoming message with the code to check.\n */\n async isComplete(content: { code: string }, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.is_complete(content.code);\n const results = this.formatResult(res);\n return results;\n }\n\n /**\n * Respond to the commInfoRequest.\n *\n * @param content The incoming message with the comm target name.\n */\n async commInfo(content: any, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.comm_info(content.target_name);\n const results = this.formatResult(res);\n\n return {\n comms: results,\n status: 'ok',\n };\n }\n\n /**\n * Respond to the commOpen.\n *\n * @param content The incoming message with the comm open.\n */\n async commOpen(content: any, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.comm_manager.comm_open(\n this._pyodide.toPy(null),\n this._pyodide.toPy(null),\n this._pyodide.toPy(content),\n );\n const results = this.formatResult(res);\n\n return results;\n }\n\n /**\n * Respond to the commMsg.\n *\n * @param content The incoming message with the comm msg.\n */\n async commMsg(content: any, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.comm_manager.comm_msg(\n this._pyodide.toPy(null),\n this._pyodide.toPy(null),\n this._pyodide.toPy(content),\n );\n const results = this.formatResult(res);\n\n return results;\n }\n\n /**\n * Respond to the commClose.\n *\n * @param content The incoming message with the comm close.\n */\n async commClose(content: any, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.comm_manager.comm_close(\n this._pyodide.toPy(null),\n this._pyodide.toPy(null),\n this._pyodide.toPy(content),\n );\n const results = this.formatResult(res);\n\n return results;\n }\n\n /**\n * Resolve the input request by getting back the reply from the main thread\n *\n * @param content The incoming message with the reply\n */\n async inputReply(content: any, parent: any) {\n await this.setup(parent);\n\n this._resolveInputReply(content);\n }\n\n /**\n * Send a input request to the front-end.\n *\n * @param prompt the text to show at the prompt\n * @param password Is the request for a password?\n */\n async sendInputRequest(prompt: string, password: boolean) {\n const content = {\n prompt,\n password,\n };\n postMessage({\n type: 'input_request',\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n content,\n });\n }\n\n async getpass(prompt: string) {\n prompt = typeof prompt === 'undefined' ? '' : prompt;\n await this.sendInputRequest(prompt, true);\n const replyPromise = new Promise((resolve) => {\n this._resolveInputReply = resolve;\n });\n const result: any = await replyPromise;\n return result['value'];\n }\n\n async input(prompt: string) {\n prompt = typeof prompt === 'undefined' ? '' : prompt;\n await this.sendInputRequest(prompt, false);\n const replyPromise = new Promise((resolve) => {\n this._resolveInputReply = resolve;\n });\n const result: any = await replyPromise;\n return result['value'];\n }\n\n /**\n * Send a comm message to the front-end.\n *\n * @param type The type of the comm message.\n * @param content The content.\n * @param metadata The metadata.\n * @param ident The ident.\n * @param buffers The binary buffers.\n */\n async sendComm(type: string, content: any, metadata: any, ident: any, buffers: any) {\n postMessage({\n type: type,\n content: this.formatResult(content),\n metadata: this.formatResult(metadata),\n ident: this.formatResult(ident),\n buffers: this.formatResult(buffers),\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n });\n }\n\n /**\n * Initialization options.\n */\n protected _options: IPyodideWorkerKernel.IOptions | null = null;\n /**\n * A promise that resolves when all initiaization is complete.\n */\n protected _initialized: Promise<void>;\n private _initializer: {\n reject: () => void;\n resolve: () => void;\n } | null = null;\n protected _pyodide: Pyodide.PyodideInterface = null as any;\n /** TODO: real typing */\n protected _localPath = '';\n protected _driveName = '';\n protected _kernel: any;\n protected _interpreter: any;\n protected _stdout_stream: any;\n protected _stderr_stream: any;\n protected _resolveInputReply: any;\n protected _driveFS: DriveFS | null = null;\n}\n"],
5
- "mappings": "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",
6
- "names": ["ArrayExt", "firstIndexOf", "array", "value", "start", "stop", "n", "span", "i", "j", "lastIndexOf", "findFirstIndex", "fn", "findLastIndex", "d", "findFirstValue", "index", "findLastValue", "lowerBound", "begin", "half", "middle", "upperBound", "shallowEqual", "a", "b", "slice", "options", "step", "length", "result", "move", "fromIndex", "toIndex", "reverse", "rotate", "delta", "pivot", "fill", "insert", "removeAt", "removeFirstOf", "removeLastOf", "removeAllOf", "count", "removeFirstWhere", "removeLastWhere", "removeAllWhere", "iter", "object", "it", "ArrayIterator", "iterKeys", "KeyIterator", "iterValues", "ValueIterator", "iterItems", "ItemIterator", "iterFn", "FnIterator", "each", "every", "some", "toArray", "toObject", "pair", "source", "keys", "key", "chain", "objects", "_i", "ChainIterator", "active", "empty", "EmptyIterator", "enumerate", "EnumerateIterator", "filter", "FilterIterator", "find", "findIndex", "min", "max", "minmax", "vmin", "vmax", "map", "MapIterator", "range", "RangeIterator", "Private", "rangeLength", "reduce", "initial", "first", "second", "accumulator", "next", "repeat", "RepeatIterator", "once", "retro", "RetroArrayIterator", "topologicSort", "edges", "sorted", "visited", "graph", "addEdge", "v", "k", "visit", "edge", "fromNode", "toNode", "children", "node", "stride", "StrideIterator", "StringExt", "findIndices", "query", "indices", "matchSumOfSquares", "score", "matchSumOfDeltas", "last", "highlight", "cmp", "take", "TakeIterator", "zip", "ZipIterator", "AttachedProperty", "options", "Private", "owner", "value", "map", "oldValue", "newValue", "create", "coerce", "compare", "changed", "clearData", "id", "rand", "stem", "ensureMap", "Signal", "sender", "fn", "slot", "thisArg", "Private", "args", "blockAll", "blockedProperty", "disconnectBetween", "receiver", "disconnectSender", "disconnectReceiver", "disconnectAll", "object", "clearData", "getExceptionHandler", "setExceptionHandler", "handler", "old", "err", "connect", "signal", "receivers", "receiversForSender", "findConnection", "senders", "sendersForReceiver", "connection", "disconnect", "scheduleCleanup", "each", "emit", "i", "n", "invokeSlot", "dirtySet", "schedule", "ok", "connections", "find", "array", "cleanupDirtySet", "cleanupConnections", "ArrayExt", "isDeadConnection", "AttachedProperty", "signaling_1", "ActivityMonitor", "options", "value", "sender", "args", "exports", "MarkdownCodeBlocks", "markdownExtensions", "MarkdownCodeBlock", "startLine", "isMarkdown", "extension", "findMarkdownCodeBlocks", "text", "lines", "codeBlocks", "currentBlock", "lineIndex", "line", "lineContainsMarker", "constructingBlock", "firstIndex", "lastIndex", "exports", "JSONExt", "isPrimitive", "value", "isArray", "isObject", "deepEqual", "first", "second", "a1", "a2", "deepArrayEqual", "deepObjectEqual", "deepCopy", "deepArrayCopy", "deepObjectCopy", "i", "n", "key", "firstValue", "secondValue", "result", "subvalue", "MimeData", "mime", "data", "PromiseDelegate", "_this", "resolve", "reject", "reason", "Token", "name", "fallbackRandomValues", "buffer", "Random", "crypto", "uuid4Factory", "getRandomValues", "bytes", "lut", "UUID", "require_minimist", "__commonJSMin", "exports", "module", "hasKey", "obj", "keys", "o", "key", "isNumber", "x", "isConstructorOrProto", "args", "opts", "flags", "aliases", "aliasIsBoolean", "y", "k", "defaults", "argv", "argDefined", "arg", "setKey", "value", "i", "lastKey", "setArg", "val", "notFlags", "next", "m", "letters", "broken", "j", "require_path_browserify", "__commonJSMin", "exports", "module", "assertPath", "path", "normalizeStringPosix", "allowAboveRoot", "res", "lastSegmentLength", "lastSlash", "dots", "code", "i", "lastSlashIndex", "_format", "sep", "pathObject", "dir", "base", "posix", "resolvedPath", "resolvedAbsolute", "cwd", "isAbsolute", "trailingSeparator", "joined", "arg", "from", "to", "fromStart", "fromEnd", "fromLen", "toStart", "toEnd", "toLen", "length", "lastCommonSep", "fromCode", "toCode", "out", "hasRoot", "end", "matchedSlash", "ext", "start", "extIdx", "firstNonSlashEnd", "startDot", "startPart", "preDotState", "ret", "require_requires_port", "__commonJSMin", "exports", "module", "port", "protocol", "require_querystringify", "__commonJSMin", "exports", "has", "undef", "decode", "input", "encode", "querystring", "query", "parser", "result", "part", "key", "value", "querystringify", "obj", "prefix", "pairs", "require_url_parse", "__commonJSMin", "exports", "module", "required", "qs", "controlOrWhitespace", "CRHTLF", "slashes", "port", "protocolre", "windowsDriveLetter", "trimLeft", "str", "rules", "address", "url", "isSpecial", "ignore", "lolcation", "loc", "globalVar", "location", "finaldestination", "type", "key", "Url", "scheme", "extractProtocol", "match", "protocol", "forwardSlashes", "otherSlashes", "slashesCount", "rest", "resolve", "relative", "base", "path", "i", "last", "unshift", "up", "parser", "extracted", "parse", "instruction", "index", "instructions", "set", "part", "value", "fn", "char", "ins", "toString", "stringify", "query", "host", "result", "path_1", "url_parse_1", "__importDefault", "URLExt", "parse", "url", "a", "getHostName", "normalize", "join", "parts", "u", "prefix", "path", "encodeParts", "objectToQueryString", "value", "keys", "key", "content", "queryStringToObject", "acc", "val", "isLocal", "protocol", "exports", "el", "e", "key", "name", "value", "last", "options", "path", "mode", "_a", "workspace", "_b", "labOrDoc", "_c", "treePath", "_d", "baseUrl", "wsUrl", "format", "download", "notebookPath", "url", "notebookVersion", "val", "Extension", "populate", "raw", "error", "isDeferred", "id", "separatorIndex", "extName", "isDisabled", "path_1", "PathExt", "join", "paths", "path", "removeSlash", "basename", "ext", "dirname", "dir", "extname", "normalize", "resolve", "parts", "relative", "from", "to", "normalizeExtension", "extension", "exports", "Text", "HAS_SURROGATES", "jsIndexToCharIndex", "jsIdx", "text", "charIdx", "i", "charCode", "nextCharCode", "charIndexToJsIndex", "camelCase", "str", "upper", "match", "p1", "p2", "titleCase", "word", "exports", "require_moment", "__commonJSMin", "exports", "module", "global", "factory", "hookCallback", "hooks", "setHookCallback", "callback", "isArray", "input", "isObject", "hasOwnProp", "a", "b", "isObjectEmpty", "obj", "k", "isUndefined", "isNumber", "isDate", "map", "arr", "fn", "res", "i", "arrLen", "extend", "createUTC", "format", "locale", "strict", "createLocalOrUTC", "defaultParsingFlags", "getParsingFlags", "m", "some", "fun", "len", "isValid", "flags", "parsedParts", "isNowValid", "createInvalid", "momentProperties", "updateInProgress", "copyConfig", "to", "from", "prop", "val", "momentPropertiesLen", "Moment", "config", "isMoment", "warn", "msg", "deprecate", "firstTime", "args", "arg", "key", "argLen", "deprecations", "deprecateSimple", "name", "isFunction", "set", "mergeConfigs", "parentConfig", "childConfig", "Locale", "keys", "defaultCalendar", "calendar", "mom", "now", "output", "zeroFill", "number", "targetLength", "forceSign", "absNumber", "zerosToFill", "sign", "formattingTokens", "localFormattingTokens", "formatFunctions", "formatTokenFunctions", "addFormatToken", "token", "padded", "ordinal", "func", "removeFormattingTokens", "makeFormatFunction", "array", "length", "formatMoment", "expandFormat", "replaceLongDateFormatTokens", "defaultLongDateFormat", "longDateFormat", "formatUpper", "tok", "defaultInvalidDate", "invalidDate", "defaultOrdinal", "defaultDayOfMonthOrdinalParse", "defaultRelativeTime", "relativeTime", "withoutSuffix", "string", "isFuture", "pastFuture", "diff", "aliases", "addUnitAlias", "unit", "shorthand", "lowerCase", "normalizeUnits", "units", "normalizeObjectUnits", "inputObject", "normalizedInput", "normalizedProp", "priorities", "addUnitPriority", "priority", "getPrioritizedUnits", "unitsObj", "u", "isLeapYear", "year", "absFloor", "toInt", "argumentForCoercion", "coercedNumber", "value", "makeGetSet", "keepTime", "set$1", "get", "daysInMonth", "stringGet", "stringSet", "prioritized", "prioritizedLen", "match1", "match2", "match3", "match4", "match6", "match1to2", "match3to4", "match5to6", "match1to3", "match1to4", "match1to6", "matchUnsigned", "matchSigned", "matchOffset", "matchShortOffset", "matchTimestamp", "matchWord", "regexes", "addRegexToken", "regex", "strictRegex", "isStrict", "localeData", "getParseRegexForToken", "unescapeFormat", "s", "regexEscape", "matched", "p1", "p2", "p3", "p4", "tokens", "addParseToken", "tokenLen", "addWeekParseToken", "addTimeToArrayFromToken", "YEAR", "MONTH", "DATE", "HOUR", "MINUTE", "SECOND", "MILLISECOND", "WEEK", "WEEKDAY", "mod", "n", "x", "indexOf", "o", "month", "modMonth", "defaultLocaleMonths", "defaultLocaleMonthsShort", "MONTHS_IN_FORMAT", "defaultMonthsShortRegex", "defaultMonthsRegex", "localeMonths", "localeMonthsShort", "handleStrictParse", "monthName", "ii", "llc", "localeMonthsParse", "setMonth", "dayOfMonth", "getSetMonth", "getDaysInMonth", "monthsShortRegex", "computeMonthsParse", "monthsRegex", "cmpLenRev", "shortPieces", "longPieces", "mixedPieces", "y", "daysInYear", "getSetYear", "getIsLeapYear", "createDate", "d", "h", "M", "ms", "date", "createUTCDate", "firstWeekOffset", "dow", "doy", "fwd", "fwdlw", "dayOfYearFromWeeks", "week", "weekday", "localWeekday", "weekOffset", "dayOfYear", "resYear", "resDayOfYear", "weekOfYear", "resWeek", "weeksInYear", "weekOffsetNext", "localeWeek", "defaultLocaleWeek", "localeFirstDayOfWeek", "localeFirstDayOfYear", "getSetWeek", "getSetISOWeek", "parseWeekday", "parseIsoWeekday", "shiftWeekdays", "ws", "defaultLocaleWeekdays", "defaultLocaleWeekdaysShort", "defaultLocaleWeekdaysMin", "defaultWeekdaysRegex", "defaultWeekdaysShortRegex", "defaultWeekdaysMinRegex", "localeWeekdays", "weekdays", "localeWeekdaysShort", "localeWeekdaysMin", "handleStrictParse$1", "weekdayName", "localeWeekdaysParse", "getSetDayOfWeek", "day", "getSetLocaleDayOfWeek", "getSetISODayOfWeek", "weekdaysRegex", "computeWeekdaysParse", "weekdaysShortRegex", "weekdaysMinRegex", "minPieces", "minp", "shortp", "longp", "hFormat", "kFormat", "meridiem", "lowercase", "matchMeridiem", "kInput", "pos", "pos1", "pos2", "localeIsPM", "defaultLocaleMeridiemParse", "getSetHour", "localeMeridiem", "hours", "minutes", "isLower", "baseConfig", "locales", "localeFamilies", "globalLocale", "commonPrefix", "arr1", "arr2", "minl", "normalizeLocale", "chooseLocale", "names", "j", "next", "split", "loadLocale", "isLocaleNameSane", "oldLocale", "aliasedRequire", "__require", "getSetGlobalLocale", "values", "data", "getLocale", "defineLocale", "updateLocale", "tmpLocale", "listLocales", "checkOverflow", "overflow", "extendedIsoRegex", "basicIsoRegex", "tzRegex", "isoDates", "isoTimes", "aspNetJsonRegex", "rfc2822", "obsOffsets", "configFromISO", "l", "match", "allowTime", "dateFormat", "timeFormat", "tzFormat", "isoDatesLen", "isoTimesLen", "configFromStringAndFormat", "extractFromRFC2822Strings", "yearStr", "monthStr", "dayStr", "hourStr", "minuteStr", "secondStr", "result", "untruncateYear", "preprocessRFC2822", "checkWeekday", "weekdayStr", "parsedInput", "weekdayProvided", "weekdayActual", "calculateOffset", "obsOffset", "militaryOffset", "numOffset", "hm", "configFromRFC2822", "parsedArray", "configFromString", "defaults", "c", "currentDateArray", "nowValue", "configFromArray", "currentDate", "expectedWeekday", "yearToUse", "dayOfYearFromWeekInfo", "w", "weekYear", "temp", "weekdayOverflow", "curWeek", "createLocal", "skipped", "stringLength", "totalParsedInputLength", "era", "meridiemFixWrap", "hour", "isPm", "configFromStringAndArray", "tempConfig", "bestMoment", "scoreToBeat", "currentScore", "validFormatFound", "bestFormatIsValid", "configfLen", "configFromObject", "dayOrDate", "createFromConfig", "prepareConfig", "configFromInput", "isUTC", "prototypeMin", "other", "prototypeMax", "pickBy", "moments", "min", "max", "ordering", "isDurationValid", "unitHasDecimal", "orderLen", "isValid$1", "createInvalid$1", "createDuration", "Duration", "duration", "years", "quarters", "months", "weeks", "days", "seconds", "milliseconds", "isDuration", "absRound", "compareArrays", "array1", "array2", "dontConvert", "lengthDiff", "diffs", "offset", "separator", "offsetFromString", "chunkOffset", "matcher", "matches", "chunk", "parts", "cloneWithOffset", "model", "getDateOffset", "getSetOffset", "keepLocalTime", "keepMinutes", "localAdjust", "addSubtract", "getSetZone", "setOffsetToUTC", "setOffsetToLocal", "setOffsetToParsedOffset", "tZone", "hasAlignedHourOffset", "isDaylightSavingTime", "isDaylightSavingTimeShifted", "isLocal", "isUtcOffset", "isUtc", "aspNetRegex", "isoRegex", "ret", "diffRes", "parseIso", "momentsDifference", "inp", "positiveMomentsDifference", "base", "createAdder", "direction", "period", "dur", "tmp", "isAdding", "updateOffset", "add", "subtract", "isString", "isMomentInput", "isNumberOrStringArray", "isMomentInputObject", "objectTest", "propertyTest", "properties", "property", "propertyLen", "arrayTest", "dataTypeTest", "item", "isCalendarSpec", "getCalendarFormat", "myMoment", "calendar$1", "time", "formats", "sod", "clone", "isAfter", "localInput", "isBefore", "isBetween", "inclusivity", "localFrom", "localTo", "isSame", "inputMs", "isSameOrAfter", "isSameOrBefore", "asFloat", "that", "zoneDelta", "monthDiff", "wholeMonthDiff", "anchor", "anchor2", "adjust", "toString", "toISOString", "keepOffset", "utc", "inspect", "zone", "prefix", "datetime", "suffix", "inputString", "fromNow", "toNow", "newLocaleData", "lang", "MS_PER_SECOND", "MS_PER_MINUTE", "MS_PER_HOUR", "MS_PER_400_YEARS", "mod$1", "dividend", "divisor", "localStartOfDate", "utcStartOfDate", "startOf", "startOfDate", "endOf", "valueOf", "unix", "toDate", "toArray", "toObject", "toJSON", "isValid$2", "parsingFlags", "invalidAt", "creationData", "matchEraAbbr", "matchEraName", "matchEraNarrow", "matchEraYearOrdinal", "localeEras", "eras", "localeErasParse", "eraName", "abbr", "narrow", "localeErasConvertYear", "dir", "getEraName", "getEraNarrow", "getEraAbbr", "getEraYear", "erasNameRegex", "computeErasParse", "erasAbbrRegex", "erasNarrowRegex", "abbrPieces", "namePieces", "narrowPieces", "addWeekYearFormatToken", "getter", "getSetWeekYear", "getSetWeekYearHelper", "getSetISOWeekYear", "getISOWeeksInYear", "getISOWeeksInISOWeekYear", "getWeeksInYear", "weekInfo", "getWeeksInWeekYear", "weeksTarget", "setWeekAll", "dayOfYearData", "getSetQuarter", "getSetDayOfMonth", "getSetDayOfYear", "getSetMinute", "getSetSecond", "getSetMillisecond", "parseMs", "getZoneAbbr", "getZoneName", "proto", "createUnix", "createInZone", "preParsePostFormat", "proto$1", "get$1", "index", "field", "setter", "listMonthsImpl", "out", "listWeekdaysImpl", "localeSorted", "shift", "listMonths", "listMonthsShort", "listWeekdays", "listWeekdaysShort", "listWeekdaysMin", "mathAbs", "abs", "addSubtract$1", "add$1", "subtract$1", "absCeil", "bubble", "monthsFromDays", "monthsToDays", "daysToMonths", "as", "valueOf$1", "makeAs", "alias", "asMilliseconds", "asSeconds", "asMinutes", "asHours", "asDays", "asWeeks", "asMonths", "asQuarters", "asYears", "clone$1", "get$2", "makeGetter", "round", "thresholds", "substituteTimeAgo", "relativeTime$1", "posNegDuration", "getSetRelativeTimeRounding", "roundingFunction", "getSetRelativeTimeThreshold", "threshold", "limit", "humanize", "argWithSuffix", "argThresholds", "withSuffix", "th", "abs$1", "toISOString$1", "total", "totalSign", "ymSign", "daysSign", "hmsSign", "proto$2", "moment_1", "__importDefault", "Time", "formatHuman", "value", "time", "format", "timeFormat", "exports", "__exportStar", "exports", "require_Mime", "__commonJSMin", "exports", "module", "Mime", "i", "typeMap", "force", "type", "extensions", "t", "ext", "path", "last", "hasPath", "require_standard", "__commonJSMin", "exports", "module", "require_other", "__commonJSMin", "exports", "module", "require_mime", "__commonJSMin", "exports", "module", "Mime", "import_coreutils", "import_mime", "IContents", "MIME", "FILE", "IBroadcastChannelWrapper", "init_tokens", "__esmMin", "TYPES", "getType", "ext", "defaultType", "fileType", "fileExt", "mime", "hasFormat", "fileFormat", "import_coreutils", "DEFAULT_STORAGE_NAME", "N_CHECKPOINTS", "Contents", "Private", "init_contents", "__esmMin", "init_tokens", "options", "data", "byte", "driver", "path", "_a", "type", "_b", "created", "dirname", "basename", "extname", "item", "name", "file", "counter", "MIME", "ext", "_c", "mimetype", "FILE", "format", "key", "toDir", "toPath", "storage", "serverItem", "model", "contentMap", "serverContents", "content", "oldLocalPath", "newLocalPath", "modified", "newFile", "child", "chunk", "chunked", "originalContent", "lastChunk", "slashed", "toDelete", "checkpoints", "copies", "id", "checkpointID", "newContent", "escaped", "fileUrl", "response", "contentText", "contentBytes", "contentBuffer", "apiURL", "json", "err", "counters", "DIR_MODE", "FILE_MODE", "SEEK_CUR", "SEEK_END", "init_emscripten", "__esmMin", "DRIVE_SEPARATOR", "DRIVE_API_PATH", "BLOCK_SIZE", "encoder", "decoder", "flagNeedsWrite", "DriveFSEmscriptenStreamOps", "DriveFSEmscriptenNodeOps", "ContentsAPI", "DriveFS", "init_drivefs", "__esmMin", "fs", "stream", "path", "flags", "parsedFlags", "needsWrite", "buffer", "offset", "length", "position", "size", "_a", "oldData", "whence", "node", "attr", "key", "value", "parent", "name", "result", "mode", "dev", "oldNode", "newDir", "newName", "oldPath", "baseUrl", "driveName", "mountpoint", "FS", "ERRNO_CODES", "data", "xhr", "e", "newPath", "dirlist", "response", "serializedContent", "format", "binString", "len", "i", "binary", "stats", "options", "mount", "parts", "currentNode", "import_coreutils", "BroadcastChannelWrapper", "init_broadcast", "__esmMin", "init_drivefs", "options", "event", "_contents", "request", "path", "response", "model", "subcontent", "BLOCK_SIZE", "DRIVE_API_PATH", "lib_exports", "__export", "BLOCK_SIZE", "BroadcastChannelWrapper", "Contents", "ContentsAPI", "DIR_MODE", "DRIVE_API_PATH", "DRIVE_SEPARATOR", "DriveFS", "DriveFSEmscriptenNodeOps", "DriveFSEmscriptenStreamOps", "FILE", "FILE_MODE", "IBroadcastChannelWrapper", "IContents", "MIME", "SEEK_CUR", "SEEK_END", "init_lib", "__esmMin", "init_contents", "init_drivefs", "init_tokens", "init_broadcast", "init_emscripten", "PyodideRemoteKernel", "resolve", "reject", "options", "_a", "parts", "pyodideUrl", "indexUrl", "loadPyodide", "pipliteWheelUrl", "disablePyPIFallback", "pipliteUrls", "globals", "mountpoint", "FS", "PATH", "ERRNO_CODES", "baseUrl", "DriveFS", "driveFS", "obj", "out", "value", "key", "res", "m", "parent", "content", "publishExecutionResult", "prompt_count", "data", "metadata", "bundle", "publishExecutionError", "ename", "evalue", "traceback", "clearOutputCallback", "wait", "displayDataCallback", "transient", "updateDisplayDataCallback", "publishStreamCallback", "name", "text", "results", "prompt", "password", "type", "ident", "buffers"]
3
+ "sources": ["../../../node_modules/@lumino/algorithm/src/array.ts", "../../../node_modules/@lumino/algorithm/src/chain.ts", "../../../node_modules/@lumino/algorithm/src/empty.ts", "../../../node_modules/@lumino/algorithm/src/enumerate.ts", "../../../node_modules/@lumino/algorithm/src/filter.ts", "../../../node_modules/@lumino/algorithm/src/find.ts", "../../../node_modules/@lumino/algorithm/src/iter.ts", "../../../node_modules/@lumino/algorithm/src/map.ts", "../../../node_modules/@lumino/algorithm/src/range.ts", "../../../node_modules/@lumino/algorithm/src/reduce.ts", "../../../node_modules/@lumino/algorithm/src/repeat.ts", "../../../node_modules/@lumino/algorithm/src/retro.ts", "../../../node_modules/@lumino/algorithm/src/sort.ts", "../../../node_modules/@lumino/algorithm/src/stride.ts", "../../../node_modules/@lumino/algorithm/src/string.ts", "../../../node_modules/@lumino/algorithm/src/take.ts", "../../../node_modules/@lumino/algorithm/src/zip.ts", "../../../node_modules/@lumino/coreutils/src/json.ts", "../../../node_modules/@lumino/coreutils/src/mime.ts", "../../../node_modules/@lumino/coreutils/src/promise.ts", "../../../node_modules/@lumino/coreutils/src/token.ts", "../../../node_modules/@lumino/coreutils/src/random.ts", "../../../node_modules/@lumino/coreutils/src/random.browser.ts", "../../../node_modules/@lumino/coreutils/src/uuid.ts", "../../../node_modules/@lumino/coreutils/src/uuid.browser.ts", "../../../node_modules/@lumino/signaling/src/index.ts", "../../../node_modules/@jupyterlab/coreutils/src/activitymonitor.ts", "../../../node_modules/@jupyterlab/coreutils/src/markdowncodeblocks.ts", "../../../node_modules/minimist/index.js", "../../../node_modules/path-browserify/index.js", "../../../node_modules/requires-port/index.js", "../../../node_modules/querystringify/index.js", "../../../node_modules/url-parse/index.js", "../../../node_modules/@jupyterlab/coreutils/src/url.ts", "../../../node_modules/@jupyterlab/coreutils/src/pageconfig.ts", "../../../node_modules/@jupyterlab/coreutils/src/path.ts", "../../../node_modules/@jupyterlab/coreutils/src/signal.ts", "../../../node_modules/@jupyterlab/coreutils/src/text.ts", "../../../node_modules/@jupyterlab/coreutils/src/time.ts", "../../../node_modules/@jupyterlab/coreutils/src/index.ts", "../../../node_modules/mime/Mime.js", "../../../node_modules/mime/types/standard.js", "../../../node_modules/mime/types/other.js", "../../../node_modules/mime/index.js", "../../../node_modules/@jupyterlite/contents/src/tokens.ts", "../../../node_modules/@jupyterlite/contents/src/contents.ts", "../../../node_modules/@jupyterlite/contents/src/emscripten.ts", "../../../node_modules/@jupyterlite/contents/src/drivefs.ts", "../../../node_modules/@jupyterlite/contents/src/broadcast.ts", "../../../node_modules/@jupyterlite/contents/src/index.ts", "../src/worker.ts"],
4
+ "sourcesContent": ["// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * The namespace for array-specific algorithms.\n */\nexport namespace ArrayExt {\n /**\n * Find the index of the first occurrence of a value in an array.\n *\n * @param array - The array-like object to search.\n *\n * @param value - The value to locate in the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first occurrence of the value, or `-1`\n * if the value is not found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four', 'one'];\n * ArrayExt.firstIndexOf(data, 'red'); // -1\n * ArrayExt.firstIndexOf(data, 'one'); // 0\n * ArrayExt.firstIndexOf(data, 'one', 1); // 4\n * ArrayExt.firstIndexOf(data, 'two', 2); // -1\n * ArrayExt.firstIndexOf(data, 'two', 2, 1); // 1\n * ```\n */\n export function firstIndexOf<T>(\n array: ArrayLike<T>,\n value: T,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let span: number;\n if (stop < start) {\n span = stop + 1 + (n - start);\n } else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start + i) % n;\n if (array[j] === value) {\n return j;\n }\n }\n return -1;\n }\n\n /**\n * Find the index of the last occurrence of a value in an array.\n *\n * @param array - The array-like object to search.\n *\n * @param value - The value to locate in the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the last occurrence of the value, or `-1`\n * if the value is not found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four', 'one'];\n * ArrayExt.lastIndexOf(data, 'red'); // -1\n * ArrayExt.lastIndexOf(data, 'one'); // 4\n * ArrayExt.lastIndexOf(data, 'one', 1); // 0\n * ArrayExt.lastIndexOf(data, 'two', 0); // -1\n * ArrayExt.lastIndexOf(data, 'two', 0, 1); // 1\n * ```\n */\n export function lastIndexOf<T>(\n array: ArrayLike<T>,\n value: T,\n start = -1,\n stop = 0\n ): number {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let span: number;\n if (start < stop) {\n span = start + 1 + (n - stop);\n } else {\n span = start - stop + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start - i + n) % n;\n if (array[j] === value) {\n return j;\n }\n }\n return -1;\n }\n\n /**\n * Find the index of the first value which matches a predicate.\n *\n * @param array - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first matching value, or `-1` if no\n * matching value is found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findFirstIndex(data, isEven); // 1\n * ArrayExt.findFirstIndex(data, isEven, 4); // 5\n * ArrayExt.findFirstIndex(data, isEven, 6); // -1\n * ArrayExt.findFirstIndex(data, isEven, 6, 5); // 1\n * ```\n */\n export function findFirstIndex<T>(\n array: ArrayLike<T>,\n fn: (value: T, index: number) => boolean,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let span: number;\n if (stop < start) {\n span = stop + 1 + (n - start);\n } else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start + i) % n;\n if (fn(array[j], j)) {\n return j;\n }\n }\n return -1;\n }\n\n /**\n * Find the index of the last value which matches a predicate.\n *\n * @param object - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the last matching value, or `-1` if no\n * matching value is found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findLastIndex(data, isEven); // 5\n * ArrayExt.findLastIndex(data, isEven, 4); // 3\n * ArrayExt.findLastIndex(data, isEven, 0); // -1\n * ArrayExt.findLastIndex(data, isEven, 0, 1); // 5\n * ```\n */\n export function findLastIndex<T>(\n array: ArrayLike<T>,\n fn: (value: T, index: number) => boolean,\n start = -1,\n stop = 0\n ): number {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let d: number;\n if (start < stop) {\n d = start + 1 + (n - stop);\n } else {\n d = start - stop + 1;\n }\n for (let i = 0; i < d; ++i) {\n let j = (start - i + n) % n;\n if (fn(array[j], j)) {\n return j;\n }\n }\n return -1;\n }\n\n /**\n * Find the first value which matches a predicate.\n *\n * @param array - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The first matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findFirstValue(data, isEven); // 2\n * ArrayExt.findFirstValue(data, isEven, 2); // 4\n * ArrayExt.findFirstValue(data, isEven, 6); // undefined\n * ArrayExt.findFirstValue(data, isEven, 6, 5); // 2\n * ```\n */\n export function findFirstValue<T>(\n array: ArrayLike<T>,\n fn: (value: T, index: number) => boolean,\n start = 0,\n stop = -1\n ): T | undefined {\n let index = findFirstIndex(array, fn, start, stop);\n return index !== -1 ? array[index] : undefined;\n }\n\n /**\n * Find the last value which matches a predicate.\n *\n * @param object - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The last matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findLastValue(data, isEven); // 2\n * ArrayExt.findLastValue(data, isEven, 4); // 4\n * ArrayExt.findLastValue(data, isEven, 0); // undefined\n * ArrayExt.findLastValue(data, isEven, 0, 1); // 2\n * ```\n */\n export function findLastValue<T>(\n array: ArrayLike<T>,\n fn: (value: T, index: number) => boolean,\n start = -1,\n stop = 0\n ): T | undefined {\n let index = findLastIndex(array, fn, start, stop);\n return index !== -1 ? array[index] : undefined;\n }\n\n /**\n * Find the index of the first element which compares `>=` to a value.\n *\n * @param array - The sorted array-like object to search.\n *\n * @param value - The value to locate in the array.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if an element is less than a value, `0` if\n * an element is equal to a value, or `> 0` if an element is greater\n * than a value.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first element which compares `>=` to the\n * value, or `length` if there is no such element. If the computed\n * index for `stop` is less than `start`, then the computed index\n * for `start` is returned.\n *\n * #### Notes\n * The array must already be sorted in ascending order according to\n * the comparison function.\n *\n * #### Complexity\n * Logarithmic.\n *\n * #### Undefined Behavior\n * Searching a range which is not sorted in ascending order.\n *\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.lowerBound(data, 0, numberCmp); // 0\n * ArrayExt.lowerBound(data, 6, numberCmp); // 3\n * ArrayExt.lowerBound(data, 7, numberCmp); // 3\n * ArrayExt.lowerBound(data, -1, numberCmp); // 0\n * ArrayExt.lowerBound(data, 10, numberCmp); // 6\n * ```\n */\n export function lowerBound<T, U>(\n array: ArrayLike<T>,\n value: U,\n fn: (element: T, value: U) => number,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let begin = start;\n let span = stop - start + 1;\n while (span > 0) {\n let half = span >> 1;\n let middle = begin + half;\n if (fn(array[middle], value) < 0) {\n begin = middle + 1;\n span -= half + 1;\n } else {\n span = half;\n }\n }\n return begin;\n }\n\n /**\n * Find the index of the first element which compares `>` than a value.\n *\n * @param array - The sorted array-like object to search.\n *\n * @param value - The value to locate in the array.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if an element is less than a value, `0` if\n * an element is equal to a value, or `> 0` if an element is greater\n * than a value.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first element which compares `>` than the\n * value, or `length` if there is no such element. If the computed\n * index for `stop` is less than `start`, then the computed index\n * for `start` is returned.\n *\n * #### Notes\n * The array must already be sorted in ascending order according to\n * the comparison function.\n *\n * #### Complexity\n * Logarithmic.\n *\n * #### Undefined Behavior\n * Searching a range which is not sorted in ascending order.\n *\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.upperBound(data, 0, numberCmp); // 1\n * ArrayExt.upperBound(data, 6, numberCmp); // 3\n * ArrayExt.upperBound(data, 7, numberCmp); // 5\n * ArrayExt.upperBound(data, -1, numberCmp); // 0\n * ArrayExt.upperBound(data, 10, numberCmp); // 6\n * ```\n */\n export function upperBound<T, U>(\n array: ArrayLike<T>,\n value: U,\n fn: (element: T, value: U) => number,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let begin = start;\n let span = stop - start + 1;\n while (span > 0) {\n let half = span >> 1;\n let middle = begin + half;\n if (fn(array[middle], value) > 0) {\n span = half;\n } else {\n begin = middle + 1;\n span -= half + 1;\n }\n }\n return begin;\n }\n\n /**\n * Test whether two arrays are shallowly equal.\n *\n * @param a - The first array-like object to compare.\n *\n * @param b - The second array-like object to compare.\n *\n * @param fn - The comparison function to apply to the elements. It\n * should return `true` if the elements are \"equal\". The default\n * compares elements using strict `===` equality.\n *\n * @returns Whether the two arrays are shallowly equal.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * Modifying the length of the arrays while comparing.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let d1 = [0, 3, 4, 7, 7, 9];\n * let d2 = [0, 3, 4, 7, 7, 9];\n * let d3 = [42];\n * ArrayExt.shallowEqual(d1, d2); // true\n * ArrayExt.shallowEqual(d2, d3); // false\n * ```\n */\n export function shallowEqual<T>(\n a: ArrayLike<T>,\n b: ArrayLike<T>,\n fn?: (a: T, b: T) => boolean\n ): boolean {\n // Check for object identity first.\n if (a === b) {\n return true;\n }\n\n // Bail early if the lengths are different.\n if (a.length !== b.length) {\n return false;\n }\n\n // Compare each element for equality.\n for (let i = 0, n = a.length; i < n; ++i) {\n if (fn ? !fn(a[i], b[i]) : a[i] !== b[i]) {\n return false;\n }\n }\n\n // The array are shallowly equal.\n return true;\n }\n\n /**\n * Create a slice of an array subject to an optional step.\n *\n * @param array - The array-like object of interest.\n *\n * @param options - The options for configuring the slice.\n *\n * @returns A new array with the specified values.\n *\n * @throws An exception if the slice `step` is `0`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start`, `stop`, or `step` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.slice(data); // [0, 3, 4, 7, 7, 9]\n * ArrayExt.slice(data, { start: 2 }); // [4, 7, 7, 9]\n * ArrayExt.slice(data, { start: 0, stop: 4 }); // [0, 3, 4, 7]\n * ArrayExt.slice(data, { step: 2 }); // [0, 4, 7]\n * ArrayExt.slice(data, { step: -1 }); // [9, 7, 7, 4, 3, 0]\n * ```\n */\n export function slice<T>(\n array: ArrayLike<T>,\n options: slice.IOptions = {}\n ): T[] {\n // Extract the options.\n let { start, stop, step } = options;\n\n // Set up the `step` value.\n if (step === undefined) {\n step = 1;\n }\n\n // Validate the step size.\n if (step === 0) {\n throw new Error('Slice `step` cannot be zero.');\n }\n\n // Look up the length of the array.\n let n = array.length;\n\n // Set up the `start` value.\n if (start === undefined) {\n start = step < 0 ? n - 1 : 0;\n } else if (start < 0) {\n start = Math.max(start + n, step < 0 ? -1 : 0);\n } else if (start >= n) {\n start = step < 0 ? n - 1 : n;\n }\n\n // Set up the `stop` value.\n if (stop === undefined) {\n stop = step < 0 ? -1 : n;\n } else if (stop < 0) {\n stop = Math.max(stop + n, step < 0 ? -1 : 0);\n } else if (stop >= n) {\n stop = step < 0 ? n - 1 : n;\n }\n\n // Compute the slice length.\n let length;\n if ((step < 0 && stop >= start) || (step > 0 && start >= stop)) {\n length = 0;\n } else if (step < 0) {\n length = Math.floor((stop - start + 1) / step + 1);\n } else {\n length = Math.floor((stop - start - 1) / step + 1);\n }\n\n // Compute the sliced result.\n let result: T[] = [];\n for (let i = 0; i < length; ++i) {\n result[i] = array[start + i * step];\n }\n\n // Return the result.\n return result;\n }\n\n /**\n * The namespace for the `slice` function statics.\n */\n export namespace slice {\n /**\n * The options for the `slice` function.\n */\n export interface IOptions {\n /**\n * The starting index of the slice, inclusive.\n *\n * Negative values are taken as an offset from the end\n * of the array.\n *\n * The default is `0` if `step > 0` else `n - 1`.\n */\n start?: number;\n\n /**\n * The stopping index of the slice, exclusive.\n *\n * Negative values are taken as an offset from the end\n * of the array.\n *\n * The default is `n` if `step > 0` else `-n - 1`.\n */\n stop?: number;\n\n /**\n * The step value for the slice.\n *\n * This must not be `0`.\n *\n * The default is `1`.\n */\n step?: number;\n }\n }\n\n /**\n * An array-like object which supports item assignment.\n */\n export type MutableArrayLike<T> = {\n readonly length: number;\n [index: number]: T;\n };\n\n /**\n * Move an element in an array from one index to another.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param fromIndex - The index of the element to move. Negative\n * values are taken as an offset from the end of the array.\n *\n * @param toIndex - The target index of the element. Negative\n * values are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `fromIndex` or `toIndex` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.move(data, 1, 2); // [0, 2, 1, 3, 4]\n * ArrayExt.move(data, 4, 2); // [0, 2, 4, 1, 3]\n * ```\n */\n export function move<T>(\n array: MutableArrayLike<T>,\n fromIndex: number,\n toIndex: number\n ): void {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (fromIndex < 0) {\n fromIndex = Math.max(0, fromIndex + n);\n } else {\n fromIndex = Math.min(fromIndex, n - 1);\n }\n if (toIndex < 0) {\n toIndex = Math.max(0, toIndex + n);\n } else {\n toIndex = Math.min(toIndex, n - 1);\n }\n if (fromIndex === toIndex) {\n return;\n }\n let value = array[fromIndex];\n let d = fromIndex < toIndex ? 1 : -1;\n for (let i = fromIndex; i !== toIndex; i += d) {\n array[i] = array[i + d];\n }\n array[toIndex] = value;\n }\n\n /**\n * Reverse an array in-place.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param start - The index of the first element in the range to be\n * reversed, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * reversed, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` index which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.reverse(data, 1, 3); // [0, 3, 2, 1, 4]\n * ArrayExt.reverse(data, 3); // [0, 3, 2, 4, 1]\n * ArrayExt.reverse(data); // [1, 4, 2, 3, 0]\n * ```\n */\n export function reverse<T>(\n array: MutableArrayLike<T>,\n start = 0,\n stop = -1\n ): void {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n while (start < stop) {\n let a = array[start];\n let b = array[stop];\n array[start++] = b;\n array[stop--] = a;\n }\n }\n\n /**\n * Rotate the elements of an array in-place.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param delta - The amount of rotation to apply to the elements. A\n * positive value will rotate the elements to the left. A negative\n * value will rotate the elements to the right.\n *\n * @param start - The index of the first element in the range to be\n * rotated, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * rotated, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `delta`, `start`, or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.rotate(data, 2); // [2, 3, 4, 0, 1]\n * ArrayExt.rotate(data, -2); // [0, 1, 2, 3, 4]\n * ArrayExt.rotate(data, 10); // [0, 1, 2, 3, 4]\n * ArrayExt.rotate(data, 9); // [4, 0, 1, 2, 3]\n * ArrayExt.rotate(data, 2, 1, 3); // [4, 2, 0, 1, 3]\n * ```\n */\n export function rotate<T>(\n array: MutableArrayLike<T>,\n delta: number,\n start = 0,\n stop = -1\n ): void {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n if (start >= stop) {\n return;\n }\n let length = stop - start + 1;\n if (delta > 0) {\n delta = delta % length;\n } else if (delta < 0) {\n delta = ((delta % length) + length) % length;\n }\n if (delta === 0) {\n return;\n }\n let pivot = start + delta;\n reverse(array, start, pivot - 1);\n reverse(array, pivot, stop);\n reverse(array, start, stop);\n }\n\n /**\n * Fill an array with a static value.\n *\n * @param array - The mutable array-like object to fill.\n *\n * @param value - The static value to use to fill the array.\n *\n * @param start - The index of the first element in the range to be\n * filled, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * filled, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Notes\n * If `stop < start` the fill will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four'];\n * ArrayExt.fill(data, 'r'); // ['r', 'r', 'r', 'r']\n * ArrayExt.fill(data, 'g', 1); // ['r', 'g', 'g', 'g']\n * ArrayExt.fill(data, 'b', 2, 3); // ['r', 'g', 'b', 'b']\n * ArrayExt.fill(data, 'z', 3, 1); // ['z', 'z', 'b', 'z']\n * ```\n */\n export function fill<T>(\n array: MutableArrayLike<T>,\n value: T,\n start = 0,\n stop = -1\n ): void {\n let n = array.length;\n if (n === 0) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let span: number;\n if (stop < start) {\n span = stop + 1 + (n - start);\n } else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n array[(start + i) % n] = value;\n }\n }\n\n /**\n * Insert a value into an array at a specific index.\n *\n * @param array - The array of interest.\n *\n * @param index - The index at which to insert the value. Negative\n * values are taken as an offset from the end of the array.\n *\n * @param value - The value to set at the specified index.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * An `index` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2];\n * ArrayExt.insert(data, 0, -1); // [-1, 0, 1, 2]\n * ArrayExt.insert(data, 2, 12); // [-1, 0, 12, 1, 2]\n * ArrayExt.insert(data, -1, 7); // [-1, 0, 12, 1, 7, 2]\n * ArrayExt.insert(data, 6, 19); // [-1, 0, 12, 1, 7, 2, 19]\n * ```\n */\n export function insert<T>(array: Array<T>, index: number, value: T): void {\n let n = array.length;\n if (index < 0) {\n index = Math.max(0, index + n);\n } else {\n index = Math.min(index, n);\n }\n for (let i = n; i > index; --i) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n }\n\n /**\n * Remove and return a value at a specific index in an array.\n *\n * @param array - The array of interest.\n *\n * @param index - The index of the value to remove. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The value at the specified index, or `undefined` if the\n * index is out of range.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * An `index` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeAt(data, 2); // 23\n * ArrayExt.removeAt(data, -2); // 12\n * ArrayExt.removeAt(data, 10); // undefined;\n * ```\n */\n export function removeAt<T>(array: Array<T>, index: number): T | undefined {\n let n = array.length;\n if (index < 0) {\n index += n;\n }\n if (index < 0 || index >= n) {\n return undefined;\n }\n let value = array[index];\n for (let i = index + 1; i < n; ++i) {\n array[i - 1] = array[i];\n }\n array.length = n - 1;\n return value;\n }\n\n /**\n * Remove the first occurrence of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the removed value, or `-1` if the value\n * is not contained in the array.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeFirstOf(data, 12); // 1\n * ArrayExt.removeFirstOf(data, 17); // -1\n * ArrayExt.removeFirstOf(data, 39, 3); // -1\n * ArrayExt.removeFirstOf(data, 39, 3, 2); // 2\n * ```\n */\n export function removeFirstOf<T>(\n array: Array<T>,\n value: T,\n start = 0,\n stop = -1\n ): number {\n let index = firstIndexOf(array, value, start, stop);\n if (index !== -1) {\n removeAt(array, index);\n }\n return index;\n }\n\n /**\n * Remove the last occurrence of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the removed value, or `-1` if the value\n * is not contained in the array.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeLastOf(data, 12); // 5\n * ArrayExt.removeLastOf(data, 17); // -1\n * ArrayExt.removeLastOf(data, 39, 2); // -1\n * ArrayExt.removeLastOf(data, 39, 2, 3); // 3\n * ```\n */\n export function removeLastOf<T>(\n array: Array<T>,\n value: T,\n start = -1,\n stop = 0\n ): number {\n let index = lastIndexOf(array, value, start, stop);\n if (index !== -1) {\n removeAt(array, index);\n }\n return index;\n }\n\n /**\n * Remove all occurrences of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The number of elements removed from the array.\n *\n * #### Notes\n * If `stop < start` the search will conceptually wrap at the end of\n * the array, however the array will be traversed front-to-back.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [14, 12, 23, 39, 14, 12, 19, 14];\n * ArrayExt.removeAllOf(data, 12); // 2\n * ArrayExt.removeAllOf(data, 17); // 0\n * ArrayExt.removeAllOf(data, 14, 1, 4); // 1\n * ```\n */\n export function removeAllOf<T>(\n array: Array<T>,\n value: T,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let count = 0;\n for (let i = 0; i < n; ++i) {\n if (start <= stop && i >= start && i <= stop && array[i] === value) {\n count++;\n } else if (\n stop < start &&\n (i <= stop || i >= start) &&\n array[i] === value\n ) {\n count++;\n } else if (count > 0) {\n array[i - count] = array[i];\n }\n }\n if (count > 0) {\n array.length = n - count;\n }\n return count;\n }\n\n /**\n * Remove the first occurrence of a value which matches a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The removed `{ index, value }`, which will be `-1` and\n * `undefined` if the value is not contained in the array.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeFirstWhere(data, isEven); // { index: 0, value: 0 }\n * ArrayExt.removeFirstWhere(data, isEven, 2); // { index: 3, value: 14 }\n * ArrayExt.removeFirstWhere(data, isEven, 4); // { index: -1, value: undefined }\n * ```\n */\n export function removeFirstWhere<T>(\n array: Array<T>,\n fn: (value: T, index: number) => boolean,\n start = 0,\n stop = -1\n ): { index: number; value: T | undefined } {\n let value: T | undefined;\n let index = findFirstIndex(array, fn, start, stop);\n if (index !== -1) {\n value = removeAt(array, index);\n }\n return { index, value };\n }\n\n /**\n * Remove the last occurrence of a value which matches a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The removed `{ index, value }`, which will be `-1` and\n * `undefined` if the value is not contained in the array.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeLastWhere(data, isEven); // { index: 5, value: 12 }\n * ArrayExt.removeLastWhere(data, isEven, 2); // { index: 1, value: 12 }\n * ArrayExt.removeLastWhere(data, isEven, 2, 1); // { index: -1, value: undefined }\n * ```\n */\n export function removeLastWhere<T>(\n array: Array<T>,\n fn: (value: T, index: number) => boolean,\n start = -1,\n stop = 0\n ): { index: number; value: T | undefined } {\n let value: T | undefined;\n let index = findLastIndex(array, fn, start, stop);\n if (index !== -1) {\n value = removeAt(array, index);\n }\n return { index, value };\n }\n\n /**\n * Remove all occurrences of values which match a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The number of elements removed from the array.\n *\n * #### Notes\n * If `stop < start` the search will conceptually wrap at the end of\n * the array, however the array will be traversed front-to-back.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * function isNegative(value: number): boolean {\n * return value < 0;\n * }\n *\n * let data = [0, 12, -13, -9, 23, 39, 14, -15, 12, 75];\n * ArrayExt.removeAllWhere(data, isEven); // 4\n * ArrayExt.removeAllWhere(data, isNegative, 0, 3); // 2\n * ```\n */\n export function removeAllWhere<T>(\n array: Array<T>,\n fn: (value: T, index: number) => boolean,\n start = 0,\n stop = -1\n ): number {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n } else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n } else {\n stop = Math.min(stop, n - 1);\n }\n let count = 0;\n for (let i = 0; i < n; ++i) {\n if (start <= stop && i >= start && i <= stop && fn(array[i], i)) {\n count++;\n } else if (stop < start && (i <= stop || i >= start) && fn(array[i], i)) {\n count++;\n } else if (count > 0) {\n array[i - count] = array[i];\n }\n }\n if (count > 0) {\n array.length = n - count;\n }\n return count;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Chain together several iterables.\n *\n * @deprecated\n *\n * @param objects - The iterable objects of interest.\n *\n * @returns An iterator which yields the values of the iterables\n * in the order in which they are supplied.\n *\n * #### Example\n * ```typescript\n * import { chain } from '@lumino/algorithm';\n *\n * let data1 = [1, 2, 3];\n * let data2 = [4, 5, 6];\n *\n * let stream = chain(data1, data2);\n *\n * Array.from(stream); // [1, 2, 3, 4, 5, 6]\n * ```\n */\nexport function* chain<T>(...objects: Iterable<T>[]): IterableIterator<T> {\n for (const object of objects) {\n yield* object;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Create an empty iterator.\n *\n * @returns A new iterator which yields nothing.\n *\n * #### Example\n * ```typescript\n * import { empty } from '@lumino/algorithm';\n *\n * let stream = empty<number>();\n *\n * Array.from(stream); // []\n * ```\n */\n// eslint-disable-next-line require-yield\nexport function* empty<T>(): IterableIterator<T> {\n return;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Enumerate an iterable object.\n *\n * @param object - The iterable object of interest.\n *\n * @param start - The starting enum value. The default is `0`.\n *\n * @returns An iterator which yields the enumerated values.\n *\n * #### Example\n * ```typescript\n * import { enumerate } from '@lumino/algorithm';\n *\n * let data = ['foo', 'bar', 'baz'];\n *\n * let stream = enumerate(data, 1);\n *\n * Array.from(stream); // [[1, 'foo'], [2, 'bar'], [3, 'baz']]\n * ```\n */\nexport function* enumerate<T>(\n object: Iterable<T>,\n start = 0\n): IterableIterator<[number, T]> {\n for (const value of object) {\n yield [start++, value];\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Filter an iterable for values which pass a test.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns An iterator which yields the values which pass the test.\n *\n * #### Example\n * ```typescript\n * import { filter } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = filter(data, value => value % 2 === 0);\n *\n * Array.from(stream); // [2, 4, 6]\n * ```\n */\nexport function* filter<T>(\n object: Iterable<T>,\n fn: (value: T, index: number) => boolean\n): IterableIterator<T> {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n yield value;\n }\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Find the first value in an iterable which matches a predicate.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @returns The first matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { find } from '@lumino/algorithm';\n *\n * interface IAnimal { species: string, name: string };\n *\n * function isCat(value: IAnimal): boolean {\n * return value.species === 'cat';\n * }\n *\n * let data: IAnimal[] = [\n * { species: 'dog', name: 'spot' },\n * { species: 'cat', name: 'fluffy' },\n * { species: 'alligator', name: 'pocho' }\n * ];\n *\n * find(data, isCat).name; // 'fluffy'\n * ```\n */\nexport function find<T>(\n object: Iterable<T>,\n fn: (value: T, index: number) => boolean\n): T | undefined {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n return value;\n }\n }\n return undefined;\n}\n\n/**\n * Find the index of the first value which matches a predicate.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @returns The index of the first matching value, or `-1` if no\n * matching value is found.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { findIndex } from '@lumino/algorithm';\n *\n * interface IAnimal { species: string, name: string };\n *\n * function isCat(value: IAnimal): boolean {\n * return value.species === 'cat';\n * }\n *\n * let data: IAnimal[] = [\n * { species: 'dog', name: 'spot' },\n * { species: 'cat', name: 'fluffy' },\n * { species: 'alligator', name: 'pocho' }\n * ];\n *\n * findIndex(data, isCat); // 1\n * ```\n */\nexport function findIndex<T>(\n object: Iterable<T>,\n fn: (value: T, index: number) => boolean\n): number {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n return index - 1;\n }\n }\n return -1;\n}\n\n/**\n * Find the minimum value in an iterable.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns The minimum value in the iterable. If multiple values are\n * equivalent to the minimum, the left-most value is returned. If\n * the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { min } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * min([7, 4, 0, 3, 9, 4], numberCmp); // 0\n * ```\n */\nexport function min<T>(\n object: Iterable<T>,\n fn: (first: T, second: T) => number\n): T | undefined {\n let result: T | undefined = undefined;\n for (const value of object) {\n if (result === undefined) {\n result = value;\n continue;\n }\n if (fn(value, result) < 0) {\n result = value;\n }\n }\n return result;\n}\n\n/**\n * Find the maximum value in an iterable.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns The maximum value in the iterable. If multiple values are\n * equivalent to the maximum, the left-most value is returned. If\n * the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { max } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * max([7, 4, 0, 3, 9, 4], numberCmp); // 9\n * ```\n */\nexport function max<T>(\n object: Iterable<T>,\n fn: (first: T, second: T) => number\n): T | undefined {\n let result: T | undefined = undefined;\n for (const value of object) {\n if (result === undefined) {\n result = value;\n continue;\n }\n if (fn(value, result) > 0) {\n result = value;\n }\n }\n return result;\n}\n\n/**\n * Find the minimum and maximum values in an iterable.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns A 2-tuple of the `[min, max]` values in the iterable. If\n * multiple values are equivalent, the left-most values are returned.\n * If the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { minmax } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * minmax([7, 4, 0, 3, 9, 4], numberCmp); // [0, 9]\n * ```\n */\nexport function minmax<T>(\n object: Iterable<T>,\n fn: (first: T, second: T) => number\n): [T, T] | undefined {\n let empty = true;\n let vmin: T;\n let vmax: T;\n for (const value of object) {\n if (empty) {\n vmin = value;\n vmax = value;\n empty = false;\n } else if (fn(value, vmin!) < 0) {\n vmin = value;\n } else if (fn(value, vmax!) > 0) {\n vmax = value;\n }\n }\n return empty ? undefined : [vmin!, vmax!];\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Create an array from an iterable of values.\n *\n * @deprecated\n *\n * @param object - The iterable object of interest.\n *\n * @returns A new array of values from the given object.\n *\n * #### Example\n * ```typescript\n * import { toArray } from '@lumino/algorithm';\n *\n * let stream = [1, 2, 3, 4, 5, 6][Symbol.iterator]();\n *\n * toArray(stream); // [1, 2, 3, 4, 5, 6];\n * ```\n */\nexport function toArray<T>(object: Iterable<T>): T[] {\n return Array.from(object);\n}\n\n/**\n * Create an object from an iterable of key/value pairs.\n *\n * @param object - The iterable object of interest.\n *\n * @returns A new object mapping keys to values.\n *\n * #### Example\n * ```typescript\n * import { toObject } from '@lumino/algorithm';\n *\n * let data: [string, number][] = [['one', 1], ['two', 2], ['three', 3]];\n *\n * toObject(data); // { one: 1, two: 2, three: 3 }\n * ```\n */\nexport function toObject<T>(object: Iterable<[string, T]>): {\n [key: string]: T;\n} {\n const result: { [key: string]: T } = {};\n for (const [key, value] of object) {\n result[key] = value;\n }\n return result;\n}\n\n/**\n * Invoke a function for each value in an iterable.\n *\n * @deprecated\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The callback function to invoke for each value.\n *\n * #### Notes\n * Iteration can be terminated early by returning `false` from the\n * callback function.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { each } from '@lumino/algorithm';\n *\n * let data = [5, 7, 0, -2, 9];\n *\n * each(data, value => { console.log(value); });\n * ```\n */\nexport function each<T>(\n object: Iterable<T>,\n fn: (value: T, index: number) => boolean | void\n): void {\n let index = 0;\n for (const value of object) {\n if (false === fn(value, index++)) {\n return;\n }\n }\n}\n\n/**\n * Test whether all values in an iterable satisfy a predicate.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns `true` if all values pass the test, `false` otherwise.\n *\n * #### Notes\n * Iteration terminates on the first `false` predicate result.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { every } from '@lumino/algorithm';\n *\n * let data = [5, 7, 1];\n *\n * every(data, value => value % 2 === 0); // false\n * every(data, value => value % 2 === 1); // true\n * ```\n */\nexport function every<T>(\n object: Iterable<T>,\n fn: (value: T, index: number) => boolean\n): boolean {\n let index = 0;\n for (const value of object) {\n if (false === fn(value, index++)) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Test whether any value in an iterable satisfies a predicate.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns `true` if any value passes the test, `false` otherwise.\n *\n * #### Notes\n * Iteration terminates on the first `true` predicate result.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { some } from '@lumino/algorithm';\n *\n * let data = [5, 7, 1];\n *\n * some(data, value => value === 7); // true\n * some(data, value => value === 3); // false\n * ```\n */\nexport function some<T>(\n object: Iterable<T>,\n fn: (value: T, index: number) => boolean\n): boolean {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n return true;\n }\n }\n return false;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Transform the values of an iterable with a mapping function.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The mapping function to invoke for each value.\n *\n * @returns An iterator which yields the transformed values.\n *\n * #### Example\n * ```typescript\n * import { map } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3];\n *\n * let stream = map(data, value => value * 2);\n *\n * Array.from(stream); // [2, 4, 6]\n * ```\n */\nexport function* map<T, U>(\n object: Iterable<T>,\n fn: (value: T, index: number) => U\n): IterableIterator<U> {\n let index = 0;\n for (const value of object) {\n yield fn(value, index++);\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an iterator of evenly spaced values.\n *\n * @param start - The starting value for the range, inclusive.\n *\n * @param stop - The stopping value for the range, exclusive.\n *\n * @param step - The distance between each value.\n *\n * @returns An iterator which produces evenly spaced values.\n *\n * #### Notes\n * In the single argument form of `range(stop)`, `start` defaults to\n * `0` and `step` defaults to `1`.\n *\n * In the two argument form of `range(start, stop)`, `step` defaults\n * to `1`.\n *\n * #### Example\n * ```typescript\n * import { range } from '@lumino/algorithm';\n *\n * let stream = range(2, 4);\n *\n * Array.from(stream); // [2, 3]\n * ```\n */\nexport function* range(\n start: number,\n stop?: number,\n step?: number\n): IterableIterator<number> {\n if (stop === undefined) {\n stop = start;\n start = 0;\n step = 1;\n } else if (step === undefined) {\n step = 1;\n }\n const length = Private.rangeLength(start, stop, step);\n for (let index = 0; index < length; index++) {\n yield start + step * index;\n }\n}\n\n/**\n * The namespace for the module implementation details.\n */\nnamespace Private {\n /**\n * Compute the effective length of a range.\n *\n * @param start - The starting value for the range, inclusive.\n *\n * @param stop - The stopping value for the range, exclusive.\n *\n * @param step - The distance between each value.\n *\n * @returns The number of steps need to traverse the range.\n */\n export function rangeLength(\n start: number,\n stop: number,\n step: number\n ): number {\n if (step === 0) {\n return Infinity;\n }\n if (start > stop && step > 0) {\n return 0;\n }\n if (start < stop && step < 0) {\n return 0;\n }\n return Math.ceil((stop - start) / step);\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Summarize all values in an iterable using a reducer function.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The reducer function to invoke for each value.\n *\n * @param initial - The initial value to start accumulation.\n *\n * @returns The final accumulated value.\n *\n * #### Notes\n * The `reduce` function follows the conventions of `Array#reduce`.\n *\n * If the iterator is empty, an initial value is required. That value\n * will be used as the return value. If no initial value is provided,\n * an error will be thrown.\n *\n * If the iterator contains a single item and no initial value is\n * provided, the single item is used as the return value.\n *\n * Otherwise, the reducer is invoked for each element in the iterable.\n * If an initial value is not provided, the first element will be used\n * as the initial accumulated value.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { reduce } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5];\n *\n * let sum = reduce(data, (a, value) => a + value); // 15\n * ```\n */\nexport function reduce<T>(\n object: Iterable<T>,\n fn: (accumulator: T, value: T, index: number) => T\n): T;\nexport function reduce<T, U>(\n object: Iterable<T>,\n fn: (accumulator: U, value: T, index: number) => U,\n initial: U\n): U;\nexport function reduce<T>(\n object: Iterable<T>,\n fn: (accumulator: any, value: T, index: number) => any,\n initial?: unknown\n): any {\n // Setup the iterator and fetch the first value.\n const it = object[Symbol.iterator]();\n let index = 0;\n let first = it.next();\n\n // An empty iterator and no initial value is an error.\n if (first.done && initial === undefined) {\n throw new TypeError('Reduce of empty iterable with no initial value.');\n }\n\n // If the iterator is empty, return the initial value.\n if (first.done) {\n return initial;\n }\n\n // If the iterator has a single item and no initial value, the\n // reducer is not invoked and the first item is the return value.\n let second = it.next();\n if (second.done && initial === undefined) {\n return first.value;\n }\n\n // If iterator has a single item and an initial value is provided,\n // the reducer is invoked and that result is the return value.\n if (second.done) {\n return fn(initial, first.value, index++);\n }\n\n // Setup the initial accumlated value.\n let accumulator: any;\n if (initial === undefined) {\n accumulator = fn(first.value, second.value, index++);\n } else {\n accumulator = fn(fn(initial, first.value, index++), second.value, index++);\n }\n\n // Iterate the rest of the values, updating the accumulator.\n let next: IteratorResult<T>;\n while (!(next = it.next()).done) {\n accumulator = fn(accumulator, next.value, index++);\n }\n\n // Return the final accumulated value.\n return accumulator;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Create an iterator which repeats a value a number of times.\n *\n * @deprecated\n *\n * @param value - The value to repeat.\n *\n * @param count - The number of times to repeat the value.\n *\n * @returns A new iterator which repeats the specified value.\n *\n * #### Example\n * ```typescript\n * import { repeat } from '@lumino/algorithm';\n *\n * let stream = repeat(7, 3);\n *\n * Array.from(stream); // [7, 7, 7]\n * ```\n */\nexport function* repeat<T>(value: T, count: number): IterableIterator<T> {\n while (0 < count--) {\n yield value;\n }\n}\n\n/**\n * Create an iterator which yields a value a single time.\n *\n * @deprecated\n *\n * @param value - The value to wrap in an iterator.\n *\n * @returns A new iterator which yields the value a single time.\n *\n * #### Example\n * ```typescript\n * import { once } from '@lumino/algorithm';\n *\n * let stream = once(7);\n *\n * Array.from(stream); // [7]\n * ```\n */\nexport function* once<T>(value: T): IterableIterator<T> {\n yield value;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * An object which can produce a reverse iterator over its values.\n */\nexport interface IRetroable<T> {\n /**\n * Get a reverse iterator over the object's values.\n *\n * @returns An iterator which yields the object's values in reverse.\n */\n retro(): IterableIterator<T>;\n}\n\n/**\n * Create an iterator for a retroable object.\n *\n * @param object - The retroable or array-like object of interest.\n *\n * @returns An iterator which traverses the object's values in reverse.\n *\n * #### Example\n * ```typescript\n * import { retro } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = retro(data);\n *\n * Array.from(stream); // [6, 5, 4, 3, 2, 1]\n * ```\n */\nexport function* retro<T>(\n object: IRetroable<T> | ArrayLike<T>\n): IterableIterator<T> {\n if (typeof (object as IRetroable<T>).retro === 'function') {\n yield* (object as IRetroable<T>).retro();\n } else {\n for (let index = (object as ArrayLike<T>).length - 1; index > -1; index--) {\n yield (object as ArrayLike<T>)[index];\n }\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Topologically sort an iterable of edges.\n *\n * @param edges - The iterable object of edges to sort.\n * An edge is represented as a 2-tuple of `[fromNode, toNode]`.\n *\n * @returns The topologically sorted array of nodes.\n *\n * #### Notes\n * If a cycle is present in the graph, the cycle will be ignored and\n * the return value will be only approximately sorted.\n *\n * #### Example\n * ```typescript\n * import { topologicSort } from '@lumino/algorithm';\n *\n * let data = [\n * ['d', 'e'],\n * ['c', 'd'],\n * ['a', 'b'],\n * ['b', 'c']\n * ];\n *\n * topologicSort(data); // ['a', 'b', 'c', 'd', 'e']\n * ```\n */\nexport function topologicSort<T>(edges: Iterable<[T, T]>): T[] {\n // Setup the shared sorting state.\n let sorted: T[] = [];\n let visited = new Set<T>();\n let graph = new Map<T, T[]>();\n\n // Add the edges to the graph.\n for (const edge of edges) {\n addEdge(edge);\n }\n\n // Visit each node in the graph.\n for (const [k] of graph) {\n visit(k);\n }\n\n // Return the sorted results.\n return sorted;\n\n // Add an edge to the graph.\n function addEdge(edge: [T, T]): void {\n let [fromNode, toNode] = edge;\n let children = graph.get(toNode);\n if (children) {\n children.push(fromNode);\n } else {\n graph.set(toNode, [fromNode]);\n }\n }\n\n // Recursively visit the node.\n function visit(node: T): void {\n if (visited.has(node)) {\n return;\n }\n visited.add(node);\n let children = graph.get(node);\n if (children) {\n for (const child of children) {\n visit(child);\n }\n }\n sorted.push(node);\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Iterate over an iterable using a stepped increment.\n *\n * @param object - The iterable object of interest.\n *\n * @param step - The distance to step on each iteration. A value\n * of less than `1` will behave the same as a value of `1`.\n *\n * @returns An iterator which traverses the iterable step-wise.\n *\n * #### Example\n * ```typescript\n * import { stride } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = stride(data, 2);\n *\n * Array.from(stream); // [1, 3, 5];\n * ```\n */\nexport function* stride<T>(\n object: Iterable<T>,\n step: number\n): IterableIterator<T> {\n let count = 0;\n for (const value of object) {\n if (0 === count++ % step) {\n yield value;\n }\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * The namespace for string-specific algorithms.\n */\nexport namespace StringExt {\n /**\n * Find the indices of characters in a source text.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The matched indices, or `null` if there is no match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * In order for there to be a match, all of the characters in `query`\n * **must** appear in `source` in the order given by `query`.\n *\n * Characters are matched using strict `===` equality.\n */\n export function findIndices(\n source: string,\n query: string,\n start = 0\n ): number[] | null {\n let indices = new Array<number>(query.length);\n for (let i = 0, j = start, n = query.length; i < n; ++i, ++j) {\n j = source.indexOf(query[i], j);\n if (j === -1) {\n return null;\n }\n indices[i] = j;\n }\n return indices;\n }\n\n /**\n * The result of a string match function.\n */\n export interface IMatchResult {\n /**\n * A score which indicates the strength of the match.\n *\n * The documentation of a given match function should specify\n * whether a lower or higher score is a stronger match.\n */\n score: number;\n\n /**\n * The indices of the matched characters in the source text.\n *\n * The indices will appear in increasing order.\n */\n indices: number[];\n }\n\n /**\n * A string matcher which uses a sum-of-squares algorithm.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The match result, or `null` if there is no match.\n * A lower `score` represents a stronger match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * This scoring algorithm uses a sum-of-squares approach to determine\n * the score. In order for there to be a match, all of the characters\n * in `query` **must** appear in `source` in order. The index of each\n * matching character is squared and added to the score. This means\n * that early and consecutive character matches are preferred, while\n * late matches are heavily penalized.\n */\n export function matchSumOfSquares(\n source: string,\n query: string,\n start = 0\n ): IMatchResult | null {\n let indices = findIndices(source, query, start);\n if (!indices) {\n return null;\n }\n let score = 0;\n for (let i = 0, n = indices.length; i < n; ++i) {\n let j = indices[i] - start;\n score += j * j;\n }\n return { score, indices };\n }\n\n /**\n * A string matcher which uses a sum-of-deltas algorithm.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The match result, or `null` if there is no match.\n * A lower `score` represents a stronger match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * This scoring algorithm uses a sum-of-deltas approach to determine\n * the score. In order for there to be a match, all of the characters\n * in `query` **must** appear in `source` in order. The delta between\n * the indices are summed to create the score. This means that groups\n * of matched characters are preferred, while fragmented matches are\n * penalized.\n */\n export function matchSumOfDeltas(\n source: string,\n query: string,\n start = 0\n ): IMatchResult | null {\n let indices = findIndices(source, query, start);\n if (!indices) {\n return null;\n }\n let score = 0;\n let last = start - 1;\n for (let i = 0, n = indices.length; i < n; ++i) {\n let j = indices[i];\n score += j - last - 1;\n last = j;\n }\n return { score, indices };\n }\n\n /**\n * Highlight the matched characters of a source text.\n *\n * @param source - The text which should be highlighted.\n *\n * @param indices - The indices of the matched characters. They must\n * appear in increasing order and must be in bounds of the source.\n *\n * @param fn - The function to apply to the matched chunks.\n *\n * @returns An array of unmatched and highlighted chunks.\n */\n export function highlight<T>(\n source: string,\n indices: ReadonlyArray<number>,\n fn: (chunk: string) => T\n ): Array<string | T> {\n // Set up the result array.\n let result: Array<string | T> = [];\n\n // Set up the counter variables.\n let k = 0;\n let last = 0;\n let n = indices.length;\n\n // Iterator over each index.\n while (k < n) {\n // Set up the chunk indices.\n let i = indices[k];\n let j = indices[k];\n\n // Advance the right chunk index until it's non-contiguous.\n while (++k < n && indices[k] === j + 1) {\n j++;\n }\n\n // Extract the unmatched text.\n if (last < i) {\n result.push(source.slice(last, i));\n }\n\n // Extract and highlight the matched text.\n if (i < j + 1) {\n result.push(fn(source.slice(i, j + 1)));\n }\n\n // Update the last visited index.\n last = j + 1;\n }\n\n // Extract any remaining unmatched text.\n if (last < source.length) {\n result.push(source.slice(last));\n }\n\n // Return the highlighted result.\n return result;\n }\n\n /**\n * A 3-way string comparison function.\n *\n * @param a - The first string of interest.\n *\n * @param b - The second string of interest.\n *\n * @returns `-1` if `a < b`, else `1` if `a > b`, else `0`.\n */\n export function cmp(a: string, b: string): number {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * Take a fixed number of items from an iterable.\n *\n * @param object - The iterable object of interest.\n *\n * @param count - The number of items to take from the iterable.\n *\n * @returns An iterator which yields the specified number of items\n * from the source iterable.\n *\n * #### Notes\n * The returned iterator will exhaust early if the source iterable\n * contains an insufficient number of items.\n *\n * #### Example\n * ```typescript\n * import { take } from '@lumino/algorithm';\n *\n * let stream = take([5, 4, 3, 2, 1, 0, -1], 3);\n *\n * Array.from(stream); // [5, 4, 3]\n * ```\n */\nexport function* take<T>(\n object: Iterable<T>,\n count: number\n): IterableIterator<T> {\n if (count < 1) {\n return;\n }\n const it = object[Symbol.iterator]();\n let item: IteratorResult<T>;\n while (0 < count-- && !(item = it.next()).done) {\n yield item.value;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { every } from './iter';\n\n/**\n * Iterate several iterables in lockstep.\n *\n * @param objects - The iterable objects of interest.\n *\n * @returns An iterator which yields successive tuples of values where\n * each value is taken in turn from the provided iterables. It will\n * be as long as the shortest provided iterable.\n *\n * #### Example\n * ```typescript\n * import { zip } from '@lumino/algorithm';\n *\n * let data1 = [1, 2, 3];\n * let data2 = [4, 5, 6];\n *\n * let stream = zip(data1, data2);\n *\n * Array.from(stream); // [[1, 4], [2, 5], [3, 6]]\n * ```\n */\nexport function* zip<T>(...objects: Iterable<T>[]): IterableIterator<T[]> {\n const iters = objects.map(obj => obj[Symbol.iterator]());\n let tuple = iters.map(it => it.next());\n for (; every(tuple, item => !item.done); tuple = iters.map(it => it.next())) {\n yield tuple.map(item => item.value);\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * A type alias for a JSON primitive.\n */\nexport type JSONPrimitive = boolean | number | string | null;\n\n/**\n * A type alias for a JSON value.\n */\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray;\n\n/**\n * A type definition for a JSON object.\n */\nexport interface JSONObject {\n [key: string]: JSONValue;\n}\n\n/**\n * A type definition for a JSON array.\n */\nexport interface JSONArray extends Array<JSONValue> {}\n\n/**\n * A type definition for a readonly JSON object.\n */\nexport interface ReadonlyJSONObject {\n readonly [key: string]: ReadonlyJSONValue;\n}\n\n/**\n * A type definition for a readonly JSON array.\n */\nexport interface ReadonlyJSONArray extends ReadonlyArray<ReadonlyJSONValue> {}\n\n/**\n * A type alias for a readonly JSON value.\n */\nexport type ReadonlyJSONValue =\n | JSONPrimitive\n | ReadonlyJSONObject\n | ReadonlyJSONArray;\n\n/**\n * A type alias for a partial JSON value.\n *\n * Note: Partial here means that JSON object attributes can be `undefined`.\n */\nexport type PartialJSONValue =\n | JSONPrimitive\n | PartialJSONObject\n | PartialJSONArray;\n\n/**\n * A type definition for a partial JSON object.\n *\n * Note: Partial here means that the JSON object attributes can be `undefined`.\n */\nexport interface PartialJSONObject {\n [key: string]: PartialJSONValue | undefined;\n}\n\n/**\n * A type definition for a partial JSON array.\n *\n * Note: Partial here means that JSON object attributes can be `undefined`.\n */\nexport interface PartialJSONArray extends Array<PartialJSONValue> {}\n\n/**\n * A type definition for a readonly partial JSON object.\n *\n * Note: Partial here means that JSON object attributes can be `undefined`.\n */\nexport interface ReadonlyPartialJSONObject {\n readonly [key: string]: ReadonlyPartialJSONValue | undefined;\n}\n\n/**\n * A type definition for a readonly partial JSON array.\n *\n * Note: Partial here means that JSON object attributes can be `undefined`.\n */\nexport interface ReadonlyPartialJSONArray\n extends ReadonlyArray<ReadonlyPartialJSONValue> {}\n\n/**\n * A type alias for a readonly partial JSON value.\n *\n * Note: Partial here means that JSON object attributes can be `undefined`.\n */\nexport type ReadonlyPartialJSONValue =\n | JSONPrimitive\n | ReadonlyPartialJSONObject\n | ReadonlyPartialJSONArray;\n\n/**\n * The namespace for JSON-specific functions.\n */\nexport namespace JSONExt {\n /**\n * A shared frozen empty JSONObject\n */\n export const emptyObject = Object.freeze({}) as ReadonlyJSONObject;\n\n /**\n * A shared frozen empty JSONArray\n */\n export const emptyArray = Object.freeze([]) as ReadonlyJSONArray;\n\n /**\n * Test whether a JSON value is a primitive.\n *\n * @param value - The JSON value of interest.\n *\n * @returns `true` if the value is a primitive,`false` otherwise.\n */\n export function isPrimitive(\n value: ReadonlyPartialJSONValue\n ): value is JSONPrimitive {\n return (\n value === null ||\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string'\n );\n }\n\n /**\n * Test whether a JSON value is an array.\n *\n * @param value - The JSON value of interest.\n *\n * @returns `true` if the value is a an array, `false` otherwise.\n */\n export function isArray(value: JSONValue): value is JSONArray;\n export function isArray(value: ReadonlyJSONValue): value is ReadonlyJSONArray;\n export function isArray(value: PartialJSONValue): value is PartialJSONArray;\n export function isArray(\n value: ReadonlyPartialJSONValue\n ): value is ReadonlyPartialJSONArray;\n export function isArray(value: ReadonlyPartialJSONValue): boolean {\n return Array.isArray(value);\n }\n\n /**\n * Test whether a JSON value is an object.\n *\n * @param value - The JSON value of interest.\n *\n * @returns `true` if the value is a an object, `false` otherwise.\n */\n export function isObject(value: JSONValue): value is JSONObject;\n export function isObject(\n value: ReadonlyJSONValue\n ): value is ReadonlyJSONObject;\n export function isObject(value: PartialJSONValue): value is PartialJSONObject;\n export function isObject(\n value: ReadonlyPartialJSONValue\n ): value is ReadonlyPartialJSONObject;\n export function isObject(value: ReadonlyPartialJSONValue): boolean {\n return !isPrimitive(value) && !isArray(value);\n }\n\n /**\n * Compare two JSON values for deep equality.\n *\n * @param first - The first JSON value of interest.\n *\n * @param second - The second JSON value of interest.\n *\n * @returns `true` if the values are equivalent, `false` otherwise.\n */\n export function deepEqual(\n first: ReadonlyPartialJSONValue,\n second: ReadonlyPartialJSONValue\n ): boolean {\n // Check referential and primitive equality first.\n if (first === second) {\n return true;\n }\n\n // If one is a primitive, the `===` check ruled out the other.\n if (isPrimitive(first) || isPrimitive(second)) {\n return false;\n }\n\n // Test whether they are arrays.\n let a1 = isArray(first);\n let a2 = isArray(second);\n\n // Bail if the types are different.\n if (a1 !== a2) {\n return false;\n }\n\n // If they are both arrays, compare them.\n if (a1 && a2) {\n return deepArrayEqual(\n first as ReadonlyPartialJSONArray,\n second as ReadonlyPartialJSONArray\n );\n }\n\n // At this point, they must both be objects.\n return deepObjectEqual(\n first as ReadonlyPartialJSONObject,\n second as ReadonlyPartialJSONObject\n );\n }\n\n /**\n * Create a deep copy of a JSON value.\n *\n * @param value - The JSON value to copy.\n *\n * @returns A deep copy of the given JSON value.\n */\n export function deepCopy<T extends ReadonlyPartialJSONValue>(value: T): T {\n // Do nothing for primitive values.\n if (isPrimitive(value)) {\n return value;\n }\n\n // Deep copy an array.\n if (isArray(value)) {\n return deepArrayCopy(value);\n }\n\n // Deep copy an object.\n return deepObjectCopy(value);\n }\n\n /**\n * Compare two JSON arrays for deep equality.\n */\n function deepArrayEqual(\n first: ReadonlyPartialJSONArray,\n second: ReadonlyPartialJSONArray\n ): boolean {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n\n // Test the arrays for equal length.\n if (first.length !== second.length) {\n return false;\n }\n\n // Compare the values for equality.\n for (let i = 0, n = first.length; i < n; ++i) {\n if (!deepEqual(first[i], second[i])) {\n return false;\n }\n }\n\n // At this point, the arrays are equal.\n return true;\n }\n\n /**\n * Compare two JSON objects for deep equality.\n */\n function deepObjectEqual(\n first: ReadonlyPartialJSONObject,\n second: ReadonlyPartialJSONObject\n ): boolean {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n\n // Check for the first object's keys in the second object.\n for (let key in first) {\n if (first[key] !== undefined && !(key in second)) {\n return false;\n }\n }\n\n // Check for the second object's keys in the first object.\n for (let key in second) {\n if (second[key] !== undefined && !(key in first)) {\n return false;\n }\n }\n\n // Compare the values for equality.\n for (let key in first) {\n // Get the values.\n let firstValue = first[key];\n let secondValue = second[key];\n\n // If both are undefined, ignore the key.\n if (firstValue === undefined && secondValue === undefined) {\n continue;\n }\n\n // If only one value is undefined, the objects are not equal.\n if (firstValue === undefined || secondValue === undefined) {\n return false;\n }\n\n // Compare the values.\n if (!deepEqual(firstValue, secondValue)) {\n return false;\n }\n }\n\n // At this point, the objects are equal.\n return true;\n }\n\n /**\n * Create a deep copy of a JSON array.\n */\n function deepArrayCopy(value: any): any {\n let result = new Array<any>(value.length);\n for (let i = 0, n = value.length; i < n; ++i) {\n result[i] = deepCopy(value[i]);\n }\n return result;\n }\n\n /**\n * Create a deep copy of a JSON object.\n */\n function deepObjectCopy(value: any): any {\n let result: any = {};\n for (let key in value) {\n // Ignore undefined values.\n let subvalue = value[key];\n if (subvalue === undefined) {\n continue;\n }\n result[key] = deepCopy(subvalue);\n }\n return result;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * An object which stores MIME data for general application use.\n *\n * #### Notes\n * This class does not attempt to enforce \"correctness\" of MIME types\n * and their associated data. Since this class is designed to transfer\n * arbitrary data and objects within the same application, it assumes\n * that the user provides correct and accurate data.\n */\nexport class MimeData {\n /**\n * Get an array of the MIME types contained within the dataset.\n *\n * @returns A new array of the MIME types, in order of insertion.\n */\n types(): string[] {\n return this._types.slice();\n }\n\n /**\n * Test whether the dataset has an entry for the given type.\n *\n * @param mime - The MIME type of interest.\n *\n * @returns `true` if the dataset contains a value for the given\n * MIME type, `false` otherwise.\n */\n hasData(mime: string): boolean {\n return this._types.indexOf(mime) !== -1;\n }\n\n /**\n * Get the data value for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * @returns The value for the given MIME type, or `undefined` if\n * the dataset does not contain a value for the type.\n */\n getData(mime: string): any | undefined {\n let i = this._types.indexOf(mime);\n return i !== -1 ? this._values[i] : undefined;\n }\n\n /**\n * Set the data value for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * @param data - The data value for the given MIME type.\n *\n * #### Notes\n * This will overwrite any previous entry for the MIME type.\n */\n setData(mime: string, data: unknown): void {\n this.clearData(mime);\n this._types.push(mime);\n this._values.push(data);\n }\n\n /**\n * Remove the data entry for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * #### Notes\n * This is a no-op if there is no entry for the given MIME type.\n */\n clearData(mime: string): void {\n let i = this._types.indexOf(mime);\n if (i !== -1) {\n this._types.splice(i, 1);\n this._values.splice(i, 1);\n }\n }\n\n /**\n * Remove all data entries from the dataset.\n */\n clear(): void {\n this._types.length = 0;\n this._values.length = 0;\n }\n\n private _types: string[] = [];\n private _values: any[] = [];\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * A class which wraps a promise into a delegate object.\n *\n * #### Notes\n * This class is useful when the logic to resolve or reject a promise\n * cannot be defined at the point where the promise is created.\n */\nexport class PromiseDelegate<T> {\n /**\n * Construct a new promise delegate.\n */\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n /**\n * The promise wrapped by the delegate.\n */\n readonly promise: Promise<T>;\n\n /**\n * Resolve the wrapped promise with the given value.\n *\n * @param value - The value to use for resolving the promise.\n */\n resolve(value: T | PromiseLike<T>): void {\n let resolve = this._resolve;\n resolve(value);\n }\n\n /**\n * Reject the wrapped promise with the given value.\n *\n * @reason - The reason for rejecting the promise.\n */\n reject(reason: unknown): void {\n let reject = this._reject;\n reject(reason);\n }\n\n private _resolve: (value: T | PromiseLike<T>) => void;\n private _reject: (reason: any) => void;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n/**\n * A runtime object which captures compile-time type information.\n *\n * #### Notes\n * A token captures the compile-time type of an interface or class in\n * an object which can be used at runtime in a type-safe fashion.\n */\nexport class Token<T> {\n /**\n * Construct a new token.\n *\n * @param name - A human readable name for the token.\n * @param description - Token purpose description for documentation.\n */\n constructor(name: string, description?: string) {\n this.name = name;\n this.description = description ?? '';\n this._tokenStructuralPropertyT = null!;\n }\n\n /**\n * Token purpose description.\n */\n readonly description?: string; // FIXME remove `?` for the next major version\n\n /**\n * The human readable name for the token.\n *\n * #### Notes\n * This can be useful for debugging and logging.\n */\n readonly name: string;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private _tokenStructuralPropertyT: T;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n// Fallback\nexport function fallbackRandomValues(buffer: Uint8Array): void {\n let value = 0;\n for (let i = 0, n = buffer.length; i < n; ++i) {\n if (i % 4 === 0) {\n value = (Math.random() * 0xffffffff) >>> 0;\n }\n buffer[i] = value & 0xff;\n value >>>= 8;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\nimport { fallbackRandomValues } from './random';\n\n// Declare ambient variables for `window` and `require` to avoid a\n// hard dependency on both. This package must run on node.\ndeclare let window: any;\n\n/**\n * The namespace for random number related functionality.\n */\nexport namespace Random {\n /**\n * A function which generates random bytes.\n *\n * @param buffer - The `Uint8Array` to fill with random bytes.\n *\n * #### Notes\n * A cryptographically strong random number generator will be used if\n * available. Otherwise, `Math.random` will be used as a fallback for\n * randomness.\n *\n * The following RNGs are supported, listed in order of precedence:\n * - `window.crypto.getRandomValues`\n * - `window.msCrypto.getRandomValues`\n * - `require('crypto').randomFillSync\n * - `require('crypto').randomBytes\n * - `Math.random`\n */\n export const getRandomValues = (() => {\n // Look up the crypto module if available.\n const crypto: any =\n (typeof window !== 'undefined' && (window.crypto || window.msCrypto)) ||\n null;\n\n // Modern browsers and IE 11\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return function getRandomValues(buffer: Uint8Array): void {\n return crypto.getRandomValues(buffer);\n };\n }\n\n // Fallback\n return fallbackRandomValues;\n })();\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * A function which creates a function that generates UUID v4 identifiers.\n *\n * @returns A new function that creates a UUID v4 string.\n *\n * #### Notes\n * This implementation complies with RFC 4122.\n *\n * This uses `Random.getRandomValues()` for random bytes, which in\n * turn will use the underlying `crypto` module of the platform if\n * it is available. The fallback for randomness is `Math.random`.\n */\nexport function uuid4Factory(\n getRandomValues: (bytes: Uint8Array) => void\n): () => string {\n // Create a 16 byte array to hold the random values.\n const bytes = new Uint8Array(16);\n\n // Create a look up table from bytes to hex strings.\n const lut = new Array<string>(256);\n\n // Pad the single character hex digits with a leading zero.\n for (let i = 0; i < 16; ++i) {\n lut[i] = '0' + i.toString(16);\n }\n\n // Populate the rest of the hex digits.\n for (let i = 16; i < 256; ++i) {\n lut[i] = i.toString(16);\n }\n\n // Return a function which generates the UUID.\n return function uuid4(): string {\n // Get a new batch of random values.\n getRandomValues(bytes);\n\n // Set the UUID version number to 4.\n bytes[6] = 0x40 | (bytes[6] & 0x0f);\n\n // Set the clock sequence bit to the RFC spec.\n bytes[8] = 0x80 | (bytes[8] & 0x3f);\n\n // Assemble the UUID string.\n return (\n lut[bytes[0]] +\n lut[bytes[1]] +\n lut[bytes[2]] +\n lut[bytes[3]] +\n '-' +\n lut[bytes[4]] +\n lut[bytes[5]] +\n '-' +\n lut[bytes[6]] +\n lut[bytes[7]] +\n '-' +\n lut[bytes[8]] +\n lut[bytes[9]] +\n '-' +\n lut[bytes[10]] +\n lut[bytes[11]] +\n lut[bytes[12]] +\n lut[bytes[13]] +\n lut[bytes[14]] +\n lut[bytes[15]]\n );\n };\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nimport { Random } from './random.browser';\nimport { uuid4Factory } from './uuid';\n\n/**\n * The namespace for UUID related functionality.\n */\nexport namespace UUID {\n /**\n * A function which generates UUID v4 identifiers.\n *\n * @returns A new UUID v4 string.\n *\n * #### Notes\n * This implementation complies with RFC 4122.\n *\n * This uses `Random.getRandomValues()` for random bytes, which in\n * turn will use the underlying `crypto` module of the platform if\n * it is available. The fallback for randomness is `Math.random`.\n */\n export const uuid4 = uuid4Factory(Random.getRandomValues);\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * @packageDocumentation\n * @module signaling\n */\nimport { ArrayExt, find } from '@lumino/algorithm';\nimport { PromiseDelegate } from '@lumino/coreutils';\n\n/**\n * A type alias for a slot function.\n *\n * @param sender - The object emitting the signal.\n *\n * @param args - The args object emitted with the signal.\n *\n * #### Notes\n * A slot is invoked when a signal to which it is connected is emitted.\n */\nexport type Slot<T, U> = (sender: T, args: U) => void;\n\n/**\n * An object used for type-safe inter-object communication.\n *\n * #### Notes\n * Signals provide a type-safe implementation of the publish-subscribe\n * pattern. An object (publisher) declares which signals it will emit,\n * and consumers connect callbacks (subscribers) to those signals. The\n * subscribers are invoked whenever the publisher emits the signal.\n */\nexport interface ISignal<T, U> {\n /**\n * Connect a slot to the signal.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n *\n * #### Notes\n * Slots are invoked in the order in which they are connected.\n *\n * Signal connections are unique. If a connection already exists for\n * the given `slot` and `thisArg`, this method returns `false`.\n *\n * A newly connected slot will not be invoked until the next time the\n * signal is emitted, even if the slot is connected while the signal\n * is dispatching.\n */\n connect(slot: Slot<T, U>, thisArg?: any): boolean;\n\n /**\n * Disconnect a slot from the signal.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n *\n * #### Notes\n * If no connection exists for the given `slot` and `thisArg`, this\n * method returns `false`.\n *\n * A disconnected slot will no longer be invoked, even if the slot\n * is disconnected while the signal is dispatching.\n */\n disconnect(slot: Slot<T, U>, thisArg?: any): boolean;\n}\n\n/**\n * An object that is both a signal and an async iterable.\n */\nexport interface IStream<T, U> extends ISignal<T, U>, AsyncIterable<U> {}\n\n/**\n * A concrete implementation of `ISignal`.\n *\n * #### Example\n * ```typescript\n * import { ISignal, Signal } from '@lumino/signaling';\n *\n * class SomeClass {\n *\n * constructor(name: string) {\n * this.name = name;\n * }\n *\n * readonly name: string;\n *\n * get valueChanged: ISignal<this, number> {\n * return this._valueChanged;\n * }\n *\n * get value(): number {\n * return this._value;\n * }\n *\n * set value(value: number) {\n * if (value === this._value) {\n * return;\n * }\n * this._value = value;\n * this._valueChanged.emit(value);\n * }\n *\n * private _value = 0;\n * private _valueChanged = new Signal<this, number>(this);\n * }\n *\n * function logger(sender: SomeClass, value: number): void {\n * console.log(sender.name, value);\n * }\n *\n * let m1 = new SomeClass('foo');\n * let m2 = new SomeClass('bar');\n *\n * m1.valueChanged.connect(logger);\n * m2.valueChanged.connect(logger);\n *\n * m1.value = 42; // logs: foo 42\n * m2.value = 17; // logs: bar 17\n * ```\n */\nexport class Signal<T, U> implements ISignal<T, U> {\n /**\n * Construct a new signal.\n *\n * @param sender - The sender which owns the signal.\n */\n constructor(sender: T) {\n this.sender = sender;\n }\n\n /**\n * The sender which owns the signal.\n */\n readonly sender: T;\n\n /**\n * Connect a slot to the signal.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n */\n connect(slot: Slot<T, U>, thisArg?: unknown): boolean {\n return Private.connect(this, slot, thisArg);\n }\n\n /**\n * Disconnect a slot from the signal.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n */\n disconnect(slot: Slot<T, U>, thisArg?: unknown): boolean {\n return Private.disconnect(this, slot, thisArg);\n }\n\n /**\n * Emit the signal and invoke the connected slots.\n *\n * @param args - The args to pass to the connected slots.\n *\n * #### Notes\n * Slots are invoked synchronously in connection order.\n *\n * Exceptions thrown by connected slots will be caught and logged.\n */\n emit(args: U): void {\n Private.emit(this, args);\n }\n}\n\n/**\n * The namespace for the `Signal` class statics.\n */\nexport namespace Signal {\n /**\n * Remove all connections between a sender and receiver.\n *\n * @param sender - The sender object of interest.\n *\n * @param receiver - The receiver object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n export function disconnectBetween(sender: unknown, receiver: unknown): void {\n Private.disconnectBetween(sender, receiver);\n }\n\n /**\n * Remove all connections where the given object is the sender.\n *\n * @param sender - The sender object of interest.\n */\n export function disconnectSender(sender: unknown): void {\n Private.disconnectSender(sender);\n }\n\n /**\n * Remove all connections where the given object is the receiver.\n *\n * @param receiver - The receiver object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n export function disconnectReceiver(receiver: unknown): void {\n Private.disconnectReceiver(receiver);\n }\n\n /**\n * Remove all connections where an object is the sender or receiver.\n *\n * @param object - The object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n export function disconnectAll(object: unknown): void {\n Private.disconnectAll(object);\n }\n\n /**\n * Clear all signal data associated with the given object.\n *\n * @param object - The object for which the data should be cleared.\n *\n * #### Notes\n * This removes all signal connections and any other signal data\n * associated with the object.\n */\n export function clearData(object: unknown): void {\n Private.disconnectAll(object);\n }\n\n /**\n * A type alias for the exception handler function.\n */\n export type ExceptionHandler = (err: Error) => void;\n\n /**\n * Get the signal exception handler.\n *\n * @returns The current exception handler.\n *\n * #### Notes\n * The default exception handler is `console.error`.\n */\n export function getExceptionHandler(): ExceptionHandler {\n return Private.exceptionHandler;\n }\n\n /**\n * Set the signal exception handler.\n *\n * @param handler - The function to use as the exception handler.\n *\n * @returns The old exception handler.\n *\n * #### Notes\n * The exception handler is invoked when a slot throws an exception.\n */\n export function setExceptionHandler(\n handler: ExceptionHandler\n ): ExceptionHandler {\n let old = Private.exceptionHandler;\n Private.exceptionHandler = handler;\n return old;\n }\n}\n\n/**\n * A concrete implementation of `IStream`.\n *\n * #### Example\n * ```typescript\n * import { IStream, Stream } from '@lumino/signaling';\n *\n * class SomeClass {\n *\n * constructor(name: string) {\n * this.name = name;\n * }\n *\n * readonly name: string;\n *\n * get pings(): IStream<this, string> {\n * return this._pings;\n * }\n *\n * ping(value: string) {\n * this._pings.emit(value);\n * }\n *\n * private _pings = new Stream<this, string>(this);\n * }\n *\n * let m1 = new SomeClass('foo');\n *\n * m1.pings.connect((_, value: string) => {\n * console.log('connect', value);\n * });\n *\n * void (async () => {\n * for await (const ping of m1.pings) {\n * console.log('iterator', ping);\n * }\n * })();\n *\n * m1.ping('alpha'); // logs: connect alpha\n * // logs: iterator alpha\n * m1.ping('beta'); // logs: connect beta\n * // logs: iterator beta\n * ```\n */\nexport class Stream<T, U> extends Signal<T, U> implements IStream<T, U> {\n /**\n * Return an async iterator that yields every emission.\n */\n async *[Symbol.asyncIterator](): AsyncIterableIterator<U> {\n let pending = this._pending;\n while (true) {\n try {\n const { args, next } = await pending.promise;\n pending = next;\n yield args;\n } catch (_) {\n return; // Any promise rejection stops the iterator.\n }\n }\n }\n\n /**\n * Emit the signal, invoke the connected slots, and yield the emission.\n *\n * @param args - The args to pass to the connected slots.\n */\n emit(args: U): void {\n const pending = this._pending;\n const next = (this._pending = new PromiseDelegate());\n pending.resolve({ args, next });\n super.emit(args);\n }\n\n /**\n * Stop the stream's async iteration.\n */\n stop(): void {\n this._pending.promise.catch(() => undefined);\n this._pending.reject('stop');\n this._pending = new PromiseDelegate();\n }\n\n private _pending: Private.Pending<U> = new PromiseDelegate();\n}\n\n/**\n * The namespace for the module implementation details.\n */\nnamespace Private {\n /**\n * A pending promise in a promise chain underlying a stream.\n */\n export type Pending<U> = PromiseDelegate<{ args: U; next: Pending<U> }>;\n\n /**\n * The signal exception handler function.\n */\n export let exceptionHandler: Signal.ExceptionHandler = (err: Error) => {\n console.error(err);\n };\n\n /**\n * Connect a slot to a signal.\n *\n * @param signal - The signal of interest.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n */\n export function connect<T, U>(\n signal: Signal<T, U>,\n slot: Slot<T, U>,\n thisArg?: unknown\n ): boolean {\n // Coerce a `null` `thisArg` to `undefined`.\n thisArg = thisArg || undefined;\n\n // Ensure the sender's array of receivers is created.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers) {\n receivers = [];\n receiversForSender.set(signal.sender, receivers);\n }\n\n // Bail if a matching connection already exists.\n if (findConnection(receivers, signal, slot, thisArg)) {\n return false;\n }\n\n // Choose the best object for the receiver.\n let receiver = thisArg || slot;\n\n // Ensure the receiver's array of senders is created.\n let senders = sendersForReceiver.get(receiver);\n if (!senders) {\n senders = [];\n sendersForReceiver.set(receiver, senders);\n }\n\n // Create a new connection and add it to the end of each array.\n let connection = { signal, slot, thisArg };\n receivers.push(connection);\n senders.push(connection);\n\n // Indicate a successful connection.\n return true;\n }\n\n /**\n * Disconnect a slot from a signal.\n *\n * @param signal - The signal of interest.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n */\n export function disconnect<T, U>(\n signal: Signal<T, U>,\n slot: Slot<T, U>,\n thisArg?: unknown\n ): boolean {\n // Coerce a `null` `thisArg` to `undefined`.\n thisArg = thisArg || undefined;\n\n // Lookup the list of receivers, and bail if none exist.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers || receivers.length === 0) {\n return false;\n }\n\n // Bail if no matching connection exits.\n let connection = findConnection(receivers, signal, slot, thisArg);\n if (!connection) {\n return false;\n }\n\n // Choose the best object for the receiver.\n let receiver = thisArg || slot;\n\n // Lookup the array of senders, which is now known to exist.\n let senders = sendersForReceiver.get(receiver)!;\n\n // Clear the connection and schedule cleanup of the arrays.\n connection.signal = null;\n scheduleCleanup(receivers);\n scheduleCleanup(senders);\n\n // Indicate a successful disconnection.\n return true;\n }\n\n /**\n * Remove all connections between a sender and receiver.\n *\n * @param sender - The sender object of interest.\n *\n * @param receiver - The receiver object of interest.\n */\n export function disconnectBetween(sender: unknown, receiver: unknown): void {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n\n // If there are no senders, there is nothing to do.\n let senders = sendersForReceiver.get(receiver);\n if (!senders || senders.length === 0) {\n return;\n }\n\n // Clear each connection between the sender and receiver.\n for (const connection of senders) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n continue;\n }\n\n // Clear the connection if it matches the sender.\n if (connection.signal.sender === sender) {\n connection.signal = null;\n }\n }\n\n // Schedule a cleanup of the senders and receivers.\n scheduleCleanup(receivers);\n scheduleCleanup(senders);\n }\n\n /**\n * Remove all connections where the given object is the sender.\n *\n * @param sender - The sender object of interest.\n */\n export function disconnectSender(sender: unknown): void {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n\n // Clear each receiver connection.\n for (const connection of receivers) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n continue;\n }\n\n // Choose the best object for the receiver.\n let receiver = connection.thisArg || connection.slot;\n\n // Clear the connection.\n connection.signal = null;\n\n // Cleanup the array of senders, which is now known to exist.\n scheduleCleanup(sendersForReceiver.get(receiver)!);\n }\n\n // Schedule a cleanup of the receivers.\n scheduleCleanup(receivers);\n }\n\n /**\n * Remove all connections where the given object is the receiver.\n *\n * @param receiver - The receiver object of interest.\n */\n export function disconnectReceiver(receiver: unknown): void {\n // If there are no senders, there is nothing to do.\n let senders = sendersForReceiver.get(receiver);\n if (!senders || senders.length === 0) {\n return;\n }\n\n // Clear each sender connection.\n for (const connection of senders) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n continue;\n }\n\n // Lookup the sender for the connection.\n let sender = connection.signal.sender;\n\n // Clear the connection.\n connection.signal = null;\n\n // Cleanup the array of receivers, which is now known to exist.\n scheduleCleanup(receiversForSender.get(sender)!);\n }\n\n // Schedule a cleanup of the list of senders.\n scheduleCleanup(senders);\n }\n\n /**\n * Remove all connections where an object is the sender or receiver.\n *\n * @param object - The object of interest.\n */\n export function disconnectAll(object: unknown): void {\n // Remove all connections where the given object is the sender.\n disconnectSender(object);\n // Remove all connections where the given object is the receiver.\n disconnectReceiver(object);\n }\n\n /**\n * Emit a signal and invoke its connected slots.\n *\n * @param signal - The signal of interest.\n *\n * @param args - The args to pass to the connected slots.\n *\n * #### Notes\n * Slots are invoked synchronously in connection order.\n *\n * Exceptions thrown by connected slots will be caught and logged.\n */\n export function emit<T, U>(signal: Signal<T, U>, args: U): void {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n\n // Invoke the slots for connections with a matching signal.\n // Any connections added during emission are not invoked.\n for (let i = 0, n = receivers.length; i < n; ++i) {\n let connection = receivers[i];\n if (connection.signal === signal) {\n invokeSlot(connection, args);\n }\n }\n }\n\n /**\n * An object which holds connection data.\n */\n interface IConnection {\n /**\n * The signal for the connection.\n *\n * A `null` signal indicates a cleared connection.\n */\n signal: Signal<any, any> | null;\n\n /**\n * The slot connected to the signal.\n */\n readonly slot: Slot<any, any>;\n\n /**\n * The `this` context for the slot.\n */\n readonly thisArg: any;\n }\n\n /**\n * A weak mapping of sender to array of receiver connections.\n */\n const receiversForSender = new WeakMap<any, IConnection[]>();\n\n /**\n * A weak mapping of receiver to array of sender connections.\n */\n const sendersForReceiver = new WeakMap<any, IConnection[]>();\n\n /**\n * A set of connection arrays which are pending cleanup.\n */\n const dirtySet = new Set<IConnection[]>();\n\n /**\n * A function to schedule an event loop callback.\n */\n const schedule = (() => {\n let ok = typeof requestAnimationFrame === 'function';\n return ok ? requestAnimationFrame : setImmediate;\n })();\n\n /**\n * Find a connection which matches the given parameters.\n */\n function findConnection(\n connections: IConnection[],\n signal: Signal<any, any>,\n slot: Slot<any, any>,\n thisArg: any\n ): IConnection | undefined {\n return find(\n connections,\n connection =>\n connection.signal === signal &&\n connection.slot === slot &&\n connection.thisArg === thisArg\n );\n }\n\n /**\n * Invoke a slot with the given parameters.\n *\n * The connection is assumed to be valid.\n *\n * Exceptions in the slot will be caught and logged.\n */\n function invokeSlot(connection: IConnection, args: any): void {\n let { signal, slot, thisArg } = connection;\n try {\n slot.call(thisArg, signal!.sender, args);\n } catch (err) {\n exceptionHandler(err);\n }\n }\n\n /**\n * Schedule a cleanup of a connection array.\n *\n * This will add the array to the dirty set and schedule a deferred\n * cleanup of the array contents. On cleanup, any connection with a\n * `null` signal will be removed from the array.\n */\n function scheduleCleanup(array: IConnection[]): void {\n if (dirtySet.size === 0) {\n schedule(cleanupDirtySet);\n }\n dirtySet.add(array);\n }\n\n /**\n * Cleanup the connection lists in the dirty set.\n *\n * This function should only be invoked asynchronously, when the\n * stack frame is guaranteed to not be on the path of user code.\n */\n function cleanupDirtySet(): void {\n dirtySet.forEach(cleanupConnections);\n dirtySet.clear();\n }\n\n /**\n * Cleanup the dirty connections in a connections array.\n *\n * This will remove any connection with a `null` signal.\n *\n * This function should only be invoked asynchronously, when the\n * stack frame is guaranteed to not be on the path of user code.\n */\n function cleanupConnections(connections: IConnection[]): void {\n ArrayExt.removeAllWhere(connections, isDeadConnection);\n }\n\n /**\n * Test whether a connection is dead.\n *\n * A dead connection has a `null` signal.\n */\n function isDeadConnection(connection: IConnection): boolean {\n return connection.signal === null;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { IDisposable } from '@lumino/disposable';\nimport { ISignal, Signal } from '@lumino/signaling';\n\n/**\n * A class that monitors activity on a signal.\n */\nexport class ActivityMonitor<Sender, Args> implements IDisposable {\n /**\n * Construct a new activity monitor.\n */\n constructor(options: ActivityMonitor.IOptions<Sender, Args>) {\n options.signal.connect(this._onSignalFired, this);\n this._timeout = options.timeout || 1000;\n }\n\n /**\n * A signal emitted when activity has ceased.\n */\n get activityStopped(): ISignal<\n this,\n ActivityMonitor.IArguments<Sender, Args>\n > {\n return this._activityStopped;\n }\n\n /**\n * The timeout associated with the monitor, in milliseconds.\n */\n get timeout(): number {\n return this._timeout;\n }\n set timeout(value: number) {\n this._timeout = value;\n }\n\n /**\n * Test whether the monitor has been disposed.\n *\n * #### Notes\n * This is a read-only property.\n */\n get isDisposed(): boolean {\n return this._isDisposed;\n }\n\n /**\n * Dispose of the resources used by the activity monitor.\n */\n dispose(): void {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n Signal.clearData(this);\n }\n\n /**\n * A signal handler for the monitored signal.\n */\n private _onSignalFired(sender: Sender, args: Args): void {\n clearTimeout(this._timer);\n this._sender = sender;\n this._args = args;\n this._timer = setTimeout(() => {\n this._activityStopped.emit({\n sender: this._sender,\n args: this._args\n });\n }, this._timeout);\n }\n\n private _timer: any = -1;\n private _timeout = -1;\n private _sender: Sender;\n private _args: Args;\n private _isDisposed = false;\n private _activityStopped = new Signal<\n this,\n ActivityMonitor.IArguments<Sender, Args>\n >(this);\n}\n\n/**\n * The namespace for `ActivityMonitor` statics.\n */\nexport namespace ActivityMonitor {\n /**\n * The options used to construct a new `ActivityMonitor`.\n */\n export interface IOptions<Sender, Args> {\n /**\n * The signal to monitor.\n */\n signal: ISignal<Sender, Args>;\n\n /**\n * The activity timeout in milliseconds.\n *\n * The default is 1 second.\n */\n timeout?: number;\n }\n\n /**\n * The argument object for an activity timeout.\n *\n */\n export interface IArguments<Sender, Args> {\n /**\n * The most recent sender object.\n */\n sender: Sender;\n\n /**\n * The most recent argument object.\n */\n args: Args;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/**\n * The namespace for code block functions which help\n * in extract code from markdown text\n */\nexport namespace MarkdownCodeBlocks {\n export const CODE_BLOCK_MARKER = '```';\n const markdownExtensions: string[] = [\n '.markdown',\n '.mdown',\n '.mkdn',\n '.md',\n '.mkd',\n '.mdwn',\n '.mdtxt',\n '.mdtext',\n '.text',\n '.txt',\n '.Rmd'\n ];\n\n export class MarkdownCodeBlock {\n startLine: number;\n endLine: number;\n code: string;\n constructor(startLine: number) {\n this.startLine = startLine;\n this.code = '';\n this.endLine = -1;\n }\n }\n\n /**\n * Check whether the given file extension is a markdown extension\n * @param extension - A file extension\n *\n * @returns true/false depending on whether this is a supported markdown extension\n */\n export function isMarkdown(extension: string): boolean {\n return markdownExtensions.indexOf(extension) > -1;\n }\n\n /**\n * Construct all code snippets from current text\n * (this could be potentially optimized if we can cache and detect differences)\n * @param text - A string to parse codeblocks from\n *\n * @returns An array of MarkdownCodeBlocks.\n */\n export function findMarkdownCodeBlocks(text: string): MarkdownCodeBlock[] {\n if (!text || text === '') {\n return [];\n }\n\n const lines = text.split('\\n');\n const codeBlocks: MarkdownCodeBlock[] = [];\n let currentBlock = null;\n for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {\n const line = lines[lineIndex];\n const lineContainsMarker = line.indexOf(CODE_BLOCK_MARKER) === 0;\n const constructingBlock = currentBlock != null;\n // Skip this line if it is not part of any code block and doesn't contain a marker.\n if (!lineContainsMarker && !constructingBlock) {\n continue;\n }\n\n // Check if we are already constructing a code block.\n if (!constructingBlock) {\n // Start constructing a new code block.\n currentBlock = new MarkdownCodeBlock(lineIndex);\n\n // Check whether this is a single line code block of the form ```a = 10```.\n const firstIndex = line.indexOf(CODE_BLOCK_MARKER);\n const lastIndex = line.lastIndexOf(CODE_BLOCK_MARKER);\n const isSingleLine = firstIndex !== lastIndex;\n if (isSingleLine) {\n currentBlock.code = line.substring(\n firstIndex + CODE_BLOCK_MARKER.length,\n lastIndex\n );\n currentBlock.endLine = lineIndex;\n codeBlocks.push(currentBlock);\n currentBlock = null;\n }\n } else if (currentBlock) {\n if (lineContainsMarker) {\n // End of block, finish it up.\n currentBlock.endLine = lineIndex - 1;\n codeBlocks.push(currentBlock);\n currentBlock = null;\n } else {\n // Append the current line.\n currentBlock.code += line + '\\n';\n }\n }\n }\n return codeBlocks;\n }\n}\n", "'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n", "// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n", "'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n", "'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { PartialJSONObject } from '@lumino/coreutils';\nimport { posix } from 'path';\nimport urlparse from 'url-parse';\n\n/**\n * The namespace for URL-related functions.\n */\nexport namespace URLExt {\n /**\n * Parse a url into a URL object.\n *\n * @param urlString - The URL string to parse.\n *\n * @returns A URL object.\n */\n export function parse(url: string): IUrl {\n if (typeof document !== 'undefined' && document) {\n const a = document.createElement('a');\n a.href = url;\n return a;\n }\n return urlparse(url);\n }\n\n /**\n * Parse URL and retrieve hostname\n *\n * @param url - The URL string to parse\n *\n * @returns a hostname string value\n */\n export function getHostName(url: string): string {\n return urlparse(url).hostname;\n }\n /**\n * Normalize a url.\n */\n export function normalize(url: string): string;\n export function normalize(url: undefined): undefined;\n export function normalize(url: string | undefined): string | undefined;\n export function normalize(url: string | undefined): string | undefined {\n return url && parse(url).toString();\n }\n\n /**\n * Join a sequence of url components and normalizes as in node `path.join`.\n *\n * @param parts - The url components.\n *\n * @returns the joined url.\n */\n export function join(...parts: string[]): string {\n let u = urlparse(parts[0], {});\n // Schema-less URL can be only parsed as relative to a base URL\n // see https://github.com/unshiftio/url-parse/issues/219#issuecomment-1002219326\n const isSchemaLess = u.protocol === '' && u.slashes;\n if (isSchemaLess) {\n u = urlparse(parts[0], 'https:' + parts[0]);\n }\n const prefix = `${isSchemaLess ? '' : u.protocol}${u.slashes ? '//' : ''}${\n u.auth\n }${u.auth ? '@' : ''}${u.host}`;\n // If there was a prefix, then the first path must start at the root.\n const path = posix.join(\n `${!!prefix && u.pathname[0] !== '/' ? '/' : ''}${u.pathname}`,\n ...parts.slice(1)\n );\n return `${prefix}${path === '.' ? '' : path}`;\n }\n\n /**\n * Encode the components of a multi-segment url.\n *\n * @param url - The url to encode.\n *\n * @returns the encoded url.\n *\n * #### Notes\n * Preserves the `'/'` separators.\n * Should not include the base url, since all parts are escaped.\n */\n export function encodeParts(url: string): string {\n return join(...url.split('/').map(encodeURIComponent));\n }\n\n /**\n * Return a serialized object string suitable for a query.\n *\n * @param object - The source object.\n *\n * @returns an encoded url query.\n *\n * #### Notes\n * Modified version of [stackoverflow](http://stackoverflow.com/a/30707423).\n */\n export function objectToQueryString(value: PartialJSONObject): string {\n const keys = Object.keys(value).filter(key => key.length > 0);\n\n if (!keys.length) {\n return '';\n }\n\n return (\n '?' +\n keys\n .map(key => {\n const content = encodeURIComponent(String(value[key]));\n\n return key + (content ? '=' + content : '');\n })\n .join('&')\n );\n }\n\n /**\n * Return a parsed object that represents the values in a query string.\n */\n export function queryStringToObject(value: string): {\n [key: string]: string | undefined;\n } {\n return value\n .replace(/^\\?/, '')\n .split('&')\n .reduce(\n (acc, val) => {\n const [key, value] = val.split('=');\n\n if (key.length > 0) {\n acc[key] = decodeURIComponent(value || '');\n }\n\n return acc;\n },\n {} as { [key: string]: string }\n );\n }\n\n /**\n * Test whether the url is a local url.\n *\n * #### Notes\n * This function returns `false` for any fully qualified url, including\n * `data:`, `file:`, and `//` protocol URLs.\n */\n export function isLocal(url: string): boolean {\n const { protocol } = parse(url);\n\n return (\n (!protocol || url.toLowerCase().indexOf(protocol) !== 0) &&\n url.indexOf('/') !== 0\n );\n }\n\n /**\n * The interface for a URL object\n */\n export interface IUrl {\n /**\n * The full URL string that was parsed with both the protocol and host\n * components converted to lower-case.\n */\n href: string;\n\n /**\n * Identifies the URL's lower-cased protocol scheme.\n */\n protocol: string;\n\n /**\n * The full lower-cased host portion of the URL, including the port if\n * specified.\n */\n host: string;\n\n /**\n * The lower-cased host name portion of the host component without the\n * port included.\n */\n hostname: string;\n\n /**\n * The numeric port portion of the host component.\n */\n port: string;\n\n /**\n * The entire path section of the URL.\n */\n pathname: string;\n\n /**\n * The \"fragment\" portion of the URL including the leading ASCII hash\n * `(#)` character\n */\n hash: string;\n\n /**\n * The search element, including leading question mark (`'?'`), if any,\n * of the URL.\n */\n search?: string;\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { JSONExt } from '@lumino/coreutils';\nimport minimist from 'minimist';\nimport { URLExt } from './url';\n\n/**\n * Declare stubs for the node variables.\n */\ndeclare let process: any;\ndeclare let require: any;\n\n/**\n * The namespace for `PageConfig` functions.\n */\nexport namespace PageConfig {\n /**\n * Get global configuration data for the Jupyter application.\n *\n * @param name - The name of the configuration option.\n *\n * @returns The config value or an empty string if not found.\n *\n * #### Notes\n * All values are treated as strings.\n * For browser based applications, it is assumed that the page HTML\n * includes a script tag with the id `jupyter-config-data` containing the\n * configuration as valid JSON. In order to support the classic Notebook,\n * we fall back on checking for `body` data of the given `name`.\n *\n * For node applications, it is assumed that the process was launched\n * with a `--jupyter-config-data` option pointing to a JSON settings\n * file.\n */\n export function getOption(name: string): string {\n if (configData) {\n return configData[name] || getBodyData(name);\n }\n configData = Object.create(null);\n let found = false;\n\n // Use script tag if available.\n if (typeof document !== 'undefined' && document) {\n const el = document.getElementById('jupyter-config-data');\n\n if (el) {\n configData = JSON.parse(el.textContent || '') as {\n [key: string]: string;\n };\n found = true;\n }\n }\n // Otherwise use CLI if given.\n if (!found && typeof process !== 'undefined' && process.argv) {\n try {\n const cli = minimist(process.argv.slice(2));\n const path: any = require('path');\n let fullPath = '';\n if ('jupyter-config-data' in cli) {\n fullPath = path.resolve(cli['jupyter-config-data']);\n } else if ('JUPYTER_CONFIG_DATA' in process.env) {\n fullPath = path.resolve(process.env['JUPYTER_CONFIG_DATA']);\n }\n if (fullPath) {\n // Force Webpack to ignore this require.\n // eslint-disable-next-line\n configData = eval('require')(fullPath) as { [key: string]: string };\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n if (!JSONExt.isObject(configData)) {\n configData = Object.create(null);\n } else {\n for (const key in configData) {\n // PageConfig expects strings\n if (typeof configData[key] !== 'string') {\n configData[key] = JSON.stringify(configData[key]);\n }\n }\n }\n return configData![name] || getBodyData(name);\n }\n\n /**\n * Set global configuration data for the Jupyter application.\n *\n * @param name - The name of the configuration option.\n * @param value - The value to set the option to.\n *\n * @returns The last config value or an empty string if it doesn't exist.\n */\n export function setOption(name: string, value: string): string {\n const last = getOption(name);\n\n configData![name] = value;\n return last;\n }\n\n /**\n * Get the base url for a Jupyter application, or the base url of the page.\n */\n export function getBaseUrl(): string {\n return URLExt.normalize(getOption('baseUrl') || '/');\n }\n\n /**\n * Get the tree url for a JupyterLab application.\n */\n export function getTreeUrl(): string {\n return URLExt.join(getBaseUrl(), getOption('treeUrl'));\n }\n\n /**\n * Get the base url for sharing links (usually baseUrl)\n */\n export function getShareUrl(): string {\n return URLExt.normalize(getOption('shareUrl') || getBaseUrl());\n }\n\n /**\n * Get the tree url for shareable links.\n * Usually the same as treeUrl,\n * but overrideable e.g. when sharing with JupyterHub.\n */\n export function getTreeShareUrl(): string {\n return URLExt.normalize(URLExt.join(getShareUrl(), getOption('treeUrl')));\n }\n\n /**\n * Create a new URL given an optional mode and tree path.\n *\n * This is used to create URLS when the mode or tree path change as the user\n * changes mode or the current document in the main area. If fields in\n * options are omitted, the value in PageConfig will be used.\n *\n * @param options - IGetUrlOptions for the new path.\n */\n export function getUrl(options: IGetUrlOptions): string {\n let path = options.toShare ? getShareUrl() : getBaseUrl();\n const mode = options.mode ?? getOption('mode');\n const workspace = options.workspace ?? getOption('workspace');\n const labOrDoc = mode === 'single-document' ? 'doc' : 'lab';\n path = URLExt.join(path, labOrDoc);\n if (workspace !== defaultWorkspace) {\n path = URLExt.join(\n path,\n 'workspaces',\n encodeURIComponent(getOption('workspace') ?? defaultWorkspace)\n );\n }\n const treePath = options.treePath ?? getOption('treePath');\n if (treePath) {\n path = URLExt.join(path, 'tree', URLExt.encodeParts(treePath));\n }\n return path;\n }\n\n export const defaultWorkspace: string = 'default';\n\n /**\n * Options for getUrl\n */\n\n export interface IGetUrlOptions {\n /**\n * The optional mode as a string 'single-document' or 'multiple-document'. If\n * the mode argument is missing, it will be provided from the PageConfig.\n */\n mode?: string;\n\n /**\n * The optional workspace as a string. If this argument is missing, the value will\n * be pulled from PageConfig. To use the default workspace (no /workspaces/<name>\n * URL segment will be included) pass the string PageConfig.defaultWorkspace.\n */\n workspace?: string;\n\n /**\n * Whether the url is meant to be shared or not; default false.\n */\n toShare?: boolean;\n\n /**\n * The optional tree path as as string. If treePath is not provided it will be\n * provided from the PageConfig. If an empty string, the resulting path will not\n * contain a tree portion.\n */\n treePath?: string;\n }\n\n /**\n * Get the base websocket url for a Jupyter application, or an empty string.\n */\n export function getWsUrl(baseUrl?: string): string {\n let wsUrl = getOption('wsUrl');\n if (!wsUrl) {\n baseUrl = baseUrl ? URLExt.normalize(baseUrl) : getBaseUrl();\n if (baseUrl.indexOf('http') !== 0) {\n return '';\n }\n wsUrl = 'ws' + baseUrl.slice(4);\n }\n return URLExt.normalize(wsUrl);\n }\n\n /**\n * Returns the URL converting this notebook to a certain\n * format with nbconvert.\n */\n export function getNBConvertURL({\n path,\n format,\n download\n }: {\n path: string;\n format: string;\n download: boolean;\n }): string {\n const notebookPath = URLExt.encodeParts(path);\n const url = URLExt.join(getBaseUrl(), 'nbconvert', format, notebookPath);\n if (download) {\n return url + '?download=true';\n }\n return url;\n }\n\n /**\n * Get the authorization token for a Jupyter application.\n */\n export function getToken(): string {\n return getOption('token') || getBodyData('jupyterApiToken');\n }\n\n /**\n * Get the Notebook version info [major, minor, patch].\n */\n export function getNotebookVersion(): [number, number, number] {\n const notebookVersion = getOption('notebookVersion');\n if (notebookVersion === '') {\n return [0, 0, 0];\n }\n return JSON.parse(notebookVersion);\n }\n\n /**\n * Private page config data for the Jupyter application.\n */\n let configData: { [key: string]: string } | null = null;\n\n /**\n * Get a url-encoded item from `body.data` and decode it\n * We should never have any encoded URLs anywhere else in code\n * until we are building an actual request.\n */\n function getBodyData(key: string): string {\n if (typeof document === 'undefined' || !document.body) {\n return '';\n }\n const val = document.body.dataset[key];\n if (typeof val === 'undefined') {\n return '';\n }\n return decodeURIComponent(val);\n }\n\n /**\n * The namespace for page config `Extension` functions.\n */\n export namespace Extension {\n /**\n * Populate an array from page config.\n *\n * @param key - The page config key (e.g., `deferredExtensions`).\n *\n * #### Notes\n * This is intended for `deferredExtensions` and `disabledExtensions`.\n */\n function populate(key: string): string[] {\n try {\n const raw = getOption(key);\n if (raw) {\n return JSON.parse(raw);\n }\n } catch (error) {\n console.warn(`Unable to parse ${key}.`, error);\n }\n return [];\n }\n\n /**\n * The collection of deferred extensions in page config.\n */\n export const deferred = populate('deferredExtensions');\n\n /**\n * The collection of disabled extensions in page config.\n */\n export const disabled = populate('disabledExtensions');\n\n /**\n * Returns whether a plugin is deferred.\n *\n * @param id - The plugin ID.\n */\n export function isDeferred(id: string): boolean {\n // Check for either a full plugin id match or an extension\n // name match.\n const separatorIndex = id.indexOf(':');\n let extName = '';\n if (separatorIndex !== -1) {\n extName = id.slice(0, separatorIndex);\n }\n return deferred.some(val => val === id || (extName && val === extName));\n }\n\n /**\n * Returns whether a plugin is disabled.\n *\n * @param id - The plugin ID.\n */\n export function isDisabled(id: string): boolean {\n // Check for either a full plugin id match or an extension\n // name match.\n const separatorIndex = id.indexOf(':');\n let extName = '';\n if (separatorIndex !== -1) {\n extName = id.slice(0, separatorIndex);\n }\n return disabled.some(val => val === id || (extName && val === extName));\n }\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { posix } from 'path';\n\n/**\n * The namespace for path-related functions.\n *\n * Note that Jupyter server paths do not start with a leading slash.\n */\nexport namespace PathExt {\n /**\n * Join all arguments together and normalize the resulting path.\n * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown.\n *\n * @param paths - The string paths to join.\n */\n export function join(...paths: string[]): string {\n const path = posix.join(...paths);\n return path === '.' ? '' : removeSlash(path);\n }\n\n /**\n * Return the last portion of a path. Similar to the Unix basename command.\n * Often used to extract the file name from a fully qualified path.\n *\n * @param path - The path to evaluate.\n *\n * @param ext - An extension to remove from the result.\n */\n export function basename(path: string, ext?: string): string {\n return posix.basename(path, ext);\n }\n\n /**\n * Get the directory name of a path, similar to the Unix dirname command.\n * When an empty path is given, returns the root path.\n *\n * @param path - The file path.\n */\n export function dirname(path: string): string {\n const dir = removeSlash(posix.dirname(path));\n return dir === '.' ? '' : dir;\n }\n\n /**\n * Get the extension of the path.\n *\n * @param path - The file path.\n *\n * @returns the extension of the file.\n *\n * #### Notes\n * The extension is the string from the last occurrence of the `.`\n * character to end of string in the last portion of the path, inclusive.\n * If there is no `.` in the last portion of the path, or if the first\n * character of the basename of path [[basename]] is `.`, then an\n * empty string is returned.\n */\n export function extname(path: string): string {\n return posix.extname(path);\n }\n\n /**\n * Normalize a string path, reducing '..' and '.' parts.\n * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used.\n * When an empty path is given, returns the root path.\n *\n * @param path - The string path to normalize.\n */\n export function normalize(path: string): string {\n if (path === '') {\n return '';\n }\n return removeSlash(posix.normalize(path));\n }\n\n /**\n * Resolve a sequence of paths or path segments into an absolute path.\n * The root path in the application has no leading slash, so it is removed.\n *\n * @param parts - The paths to join.\n *\n * #### Notes\n * The right-most parameter is considered \\{to\\}. Other parameters are considered an array of \\{from\\}.\n *\n * Starting from leftmost \\{from\\} parameter, resolves \\{to\\} to an absolute path.\n *\n * If \\{to\\} isn't already absolute, \\{from\\} arguments are prepended in right to left order, until an absolute path is found. If after using all \\{from\\} paths still no absolute path is found, the current working directory is used as well. The resulting path is normalized, and trailing slashes are removed unless the path gets resolved to the root directory.\n */\n export function resolve(...parts: string[]): string {\n return removeSlash(posix.resolve(...parts));\n }\n\n /**\n * Solve the relative path from \\{from\\} to \\{to\\}.\n *\n * @param from - The source path.\n *\n * @param to - The target path.\n *\n * #### Notes\n * If from and to each resolve to the same path (after calling\n * path.resolve() on each), a zero-length string is returned.\n * If a zero-length string is passed as from or to, `/`\n * will be used instead of the zero-length strings.\n */\n export function relative(from: string, to: string): string {\n return removeSlash(posix.relative(from, to));\n }\n\n /**\n * Normalize a file extension to be of the type `'.foo'`.\n *\n * @param extension - the file extension.\n *\n * #### Notes\n * Adds a leading dot if not present and converts to lower case.\n */\n export function normalizeExtension(extension: string): string {\n if (extension.length > 0 && extension.indexOf('.') !== 0) {\n extension = `.${extension}`;\n }\n return extension;\n }\n\n /**\n * Remove the leading slash from a path.\n *\n * @param path: the path from which to remove a leading slash.\n */\n export function removeSlash(path: string): string {\n if (path.indexOf('/') === 0) {\n path = path.slice(1);\n }\n return path;\n }\n}\n", "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { PromiseDelegate } from '@lumino/coreutils';\nimport { ISignal } from '@lumino/signaling';\n\n/**\n * Convert a signal into a promise for the first emitted value.\n *\n * @param signal - The signal we are listening to.\n * @param timeout - Timeout to wait for signal in ms (not timeout if not defined or 0)\n *\n * @returns a Promise that resolves with a `(sender, args)` pair.\n */\nexport function signalToPromise<T, U>(\n signal: ISignal<T, U>,\n timeout?: number\n): Promise<[T, U]> {\n const waitForSignal = new PromiseDelegate<[T, U]>();\n\n function cleanup() {\n signal.disconnect(slot);\n }\n\n function slot(sender: T, args: U) {\n cleanup();\n waitForSignal.resolve([sender, args]);\n }\n signal.connect(slot);\n\n if ((timeout ?? 0) > 0) {\n setTimeout(() => {\n cleanup();\n waitForSignal.reject(`Signal not emitted within ${timeout} ms.`);\n }, timeout);\n }\n return waitForSignal.promise;\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/**\n * The namespace for text-related functions.\n */\nexport namespace Text {\n // javascript stores text as utf16 and string indices use \"code units\",\n // which stores high-codepoint characters as \"surrogate pairs\",\n // which occupy two indices in the javascript string.\n // We need to translate cursor_pos in the Jupyter protocol (in characters)\n // to js offset (with surrogate pairs taking two spots).\n\n const HAS_SURROGATES: boolean = '\uD835\uDC1A'.length > 1;\n\n /**\n * Convert a javascript string index into a unicode character offset\n *\n * @param jsIdx - The javascript string index (counting surrogate pairs)\n *\n * @param text - The text in which the offset is calculated\n *\n * @returns The unicode character offset\n */\n export function jsIndexToCharIndex(jsIdx: number, text: string): number {\n if (HAS_SURROGATES) {\n // not using surrogates, nothing to do\n return jsIdx;\n }\n let charIdx = jsIdx;\n for (let i = 0; i + 1 < text.length && i < jsIdx; i++) {\n const charCode = text.charCodeAt(i);\n // check for surrogate pair\n if (charCode >= 0xd800 && charCode <= 0xdbff) {\n const nextCharCode = text.charCodeAt(i + 1);\n if (nextCharCode >= 0xdc00 && nextCharCode <= 0xdfff) {\n charIdx--;\n i++;\n }\n }\n }\n return charIdx;\n }\n\n /**\n * Convert a unicode character offset to a javascript string index.\n *\n * @param charIdx - The index in unicode characters\n *\n * @param text - The text in which the offset is calculated\n *\n * @returns The js-native index\n */\n export function charIndexToJsIndex(charIdx: number, text: string): number {\n if (HAS_SURROGATES) {\n // not using surrogates, nothing to do\n return charIdx;\n }\n let jsIdx = charIdx;\n for (let i = 0; i + 1 < text.length && i < jsIdx; i++) {\n const charCode = text.charCodeAt(i);\n // check for surrogate pair\n if (charCode >= 0xd800 && charCode <= 0xdbff) {\n const nextCharCode = text.charCodeAt(i + 1);\n if (nextCharCode >= 0xdc00 && nextCharCode <= 0xdfff) {\n jsIdx++;\n i++;\n }\n }\n }\n return jsIdx;\n }\n\n /**\n * Given a 'snake-case', 'snake_case', 'snake:case', or\n * 'snake case' string, will return the camel case version: 'snakeCase'.\n *\n * @param str: the snake-case input string.\n *\n * @param upper: default = false. If true, the first letter of the\n * returned string will be capitalized.\n *\n * @returns the camel case version of the input string.\n */\n export function camelCase(str: string, upper: boolean = false): string {\n return str.replace(/^(\\w)|[\\s-_:]+(\\w)/g, function (match, p1, p2) {\n if (p2) {\n return p2.toUpperCase();\n } else {\n return upper ? p1.toUpperCase() : p1.toLowerCase();\n }\n });\n }\n\n /**\n * Given a string, title case the words in the string.\n *\n * @param str: the string to title case.\n *\n * @returns the same string, but with each word capitalized.\n */\n export function titleCase(str: string): string {\n return (str || '')\n .toLowerCase()\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/**\n * A list of time units with their associated value in milliseconds.\n */\nconst UNITS: { name: Intl.RelativeTimeFormatUnit; milliseconds: number }[] = [\n { name: 'years', milliseconds: 365 * 24 * 60 * 60 * 1000 },\n { name: 'months', milliseconds: 30 * 24 * 60 * 60 * 1000 },\n { name: 'days', milliseconds: 24 * 60 * 60 * 1000 },\n { name: 'hours', milliseconds: 60 * 60 * 1000 },\n { name: 'minutes', milliseconds: 60 * 1000 },\n { name: 'seconds', milliseconds: 1000 }\n];\n\n/**\n * The namespace for date functions.\n */\nexport namespace Time {\n /**\n * Convert a timestring to a human readable string (e.g. 'two minutes ago').\n *\n * @param value - The date timestring or date object.\n *\n * @returns A formatted date.\n */\n export function formatHuman(value: string | Date): string {\n const lang = document.documentElement.lang || 'en';\n const formatter = new Intl.RelativeTimeFormat(lang, { numeric: 'auto' });\n const delta = new Date(value).getTime() - Date.now();\n for (let unit of UNITS) {\n const amount = Math.ceil(delta / unit.milliseconds);\n if (amount === 0) {\n continue;\n }\n return formatter.format(amount, unit.name);\n }\n return formatter.format(0, 'seconds');\n }\n\n /**\n * Convenient helper to convert a timestring to a date format.\n *\n * @param value - The date timestring or date object.\n *\n * @returns A formatted date.\n */\n export function format(value: string | Date): string {\n const lang = document.documentElement.lang || 'en';\n const formatter = new Intl.DateTimeFormat(lang, {\n dateStyle: 'short',\n timeStyle: 'short'\n });\n return formatter.format(new Date(value));\n }\n}\n", "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDocumentation\n * @module coreutils\n */\n\nexport * from './activitymonitor';\nexport * from './interfaces';\nexport * from './markdowncodeblocks';\nexport * from './pageconfig';\nexport * from './path';\nexport * from './signal';\nexport * from './text';\nexport * from './time';\nexport * from './url';\n", "'use strict';\n\n/**\n * @param typeMap [Object] Map of MIME type -> Array[extensions]\n * @param ...\n */\nfunction Mime() {\n this._types = Object.create(null);\n this._extensions = Object.create(null);\n\n for (let i = 0; i < arguments.length; i++) {\n this.define(arguments[i]);\n }\n\n this.define = this.define.bind(this);\n this.getType = this.getType.bind(this);\n this.getExtension = this.getExtension.bind(this);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * If a type declares an extension that has already been defined, an error will\n * be thrown. To suppress this error and force the extension to be associated\n * with the new type, pass `force`=true. Alternatively, you may prefix the\n * extension with \"*\" to map the type to extension, without mapping the\n * extension to the type.\n *\n * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});\n *\n *\n * @param map (Object) type definitions\n * @param force (Boolean) if true, force overriding of existing definitions\n */\nMime.prototype.define = function(typeMap, force) {\n for (let type in typeMap) {\n let extensions = typeMap[type].map(function(t) {\n return t.toLowerCase();\n });\n type = type.toLowerCase();\n\n for (let i = 0; i < extensions.length; i++) {\n const ext = extensions[i];\n\n // '*' prefix = not the preferred type for this extension. So fixup the\n // extension, and skip it.\n if (ext[0] === '*') {\n continue;\n }\n\n if (!force && (ext in this._types)) {\n throw new Error(\n 'Attempt to change mapping for \"' + ext +\n '\" extension from \"' + this._types[ext] + '\" to \"' + type +\n '\". Pass `force=true` to allow this, otherwise remove \"' + ext +\n '\" from the list of extensions for \"' + type + '\".'\n );\n }\n\n this._types[ext] = type;\n }\n\n // Use first extension as default\n if (force || !this._extensions[type]) {\n const ext = extensions[0];\n this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);\n }\n }\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.getType = function(path) {\n path = String(path);\n let last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n let ext = last.replace(/^.*\\./, '').toLowerCase();\n\n let hasPath = last.length < path.length;\n let hasDot = ext.length < last.length - 1;\n\n return (hasDot || !hasPath) && this._types[ext] || null;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.getExtension = function(type) {\n type = /^\\s*([^;\\s]*)/.test(type) && RegExp.$1;\n return type && this._extensions[type.toLowerCase()] || null;\n};\n\nmodule.exports = Mime;\n", "module.exports = {\"application/andrew-inset\":[\"ez\"],\"application/applixware\":[\"aw\"],\"application/atom+xml\":[\"atom\"],\"application/atomcat+xml\":[\"atomcat\"],\"application/atomdeleted+xml\":[\"atomdeleted\"],\"application/atomsvc+xml\":[\"atomsvc\"],\"application/atsc-dwd+xml\":[\"dwd\"],\"application/atsc-held+xml\":[\"held\"],\"application/atsc-rsat+xml\":[\"rsat\"],\"application/bdoc\":[\"bdoc\"],\"application/calendar+xml\":[\"xcs\"],\"application/ccxml+xml\":[\"ccxml\"],\"application/cdfx+xml\":[\"cdfx\"],\"application/cdmi-capability\":[\"cdmia\"],\"application/cdmi-container\":[\"cdmic\"],\"application/cdmi-domain\":[\"cdmid\"],\"application/cdmi-object\":[\"cdmio\"],\"application/cdmi-queue\":[\"cdmiq\"],\"application/cu-seeme\":[\"cu\"],\"application/dash+xml\":[\"mpd\"],\"application/davmount+xml\":[\"davmount\"],\"application/docbook+xml\":[\"dbk\"],\"application/dssc+der\":[\"dssc\"],\"application/dssc+xml\":[\"xdssc\"],\"application/ecmascript\":[\"es\",\"ecma\"],\"application/emma+xml\":[\"emma\"],\"application/emotionml+xml\":[\"emotionml\"],\"application/epub+zip\":[\"epub\"],\"application/exi\":[\"exi\"],\"application/express\":[\"exp\"],\"application/fdt+xml\":[\"fdt\"],\"application/font-tdpfr\":[\"pfr\"],\"application/geo+json\":[\"geojson\"],\"application/gml+xml\":[\"gml\"],\"application/gpx+xml\":[\"gpx\"],\"application/gxf\":[\"gxf\"],\"application/gzip\":[\"gz\"],\"application/hjson\":[\"hjson\"],\"application/hyperstudio\":[\"stk\"],\"application/inkml+xml\":[\"ink\",\"inkml\"],\"application/ipfix\":[\"ipfix\"],\"application/its+xml\":[\"its\"],\"application/java-archive\":[\"jar\",\"war\",\"ear\"],\"application/java-serialized-object\":[\"ser\"],\"application/java-vm\":[\"class\"],\"application/javascript\":[\"js\",\"mjs\"],\"application/json\":[\"json\",\"map\"],\"application/json5\":[\"json5\"],\"application/jsonml+json\":[\"jsonml\"],\"application/ld+json\":[\"jsonld\"],\"application/lgr+xml\":[\"lgr\"],\"application/lost+xml\":[\"lostxml\"],\"application/mac-binhex40\":[\"hqx\"],\"application/mac-compactpro\":[\"cpt\"],\"application/mads+xml\":[\"mads\"],\"application/manifest+json\":[\"webmanifest\"],\"application/marc\":[\"mrc\"],\"application/marcxml+xml\":[\"mrcx\"],\"application/mathematica\":[\"ma\",\"nb\",\"mb\"],\"application/mathml+xml\":[\"mathml\"],\"application/mbox\":[\"mbox\"],\"application/mediaservercontrol+xml\":[\"mscml\"],\"application/metalink+xml\":[\"metalink\"],\"application/metalink4+xml\":[\"meta4\"],\"application/mets+xml\":[\"mets\"],\"application/mmt-aei+xml\":[\"maei\"],\"application/mmt-usd+xml\":[\"musd\"],\"application/mods+xml\":[\"mods\"],\"application/mp21\":[\"m21\",\"mp21\"],\"application/mp4\":[\"mp4s\",\"m4p\"],\"application/msword\":[\"doc\",\"dot\"],\"application/mxf\":[\"mxf\"],\"application/n-quads\":[\"nq\"],\"application/n-triples\":[\"nt\"],\"application/node\":[\"cjs\"],\"application/octet-stream\":[\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"],\"application/oda\":[\"oda\"],\"application/oebps-package+xml\":[\"opf\"],\"application/ogg\":[\"ogx\"],\"application/omdoc+xml\":[\"omdoc\"],\"application/onenote\":[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],\"application/oxps\":[\"oxps\"],\"application/p2p-overlay+xml\":[\"relo\"],\"application/patch-ops-error+xml\":[\"xer\"],\"application/pdf\":[\"pdf\"],\"application/pgp-encrypted\":[\"pgp\"],\"application/pgp-signature\":[\"asc\",\"sig\"],\"application/pics-rules\":[\"prf\"],\"application/pkcs10\":[\"p10\"],\"application/pkcs7-mime\":[\"p7m\",\"p7c\"],\"application/pkcs7-signature\":[\"p7s\"],\"application/pkcs8\":[\"p8\"],\"application/pkix-attr-cert\":[\"ac\"],\"application/pkix-cert\":[\"cer\"],\"application/pkix-crl\":[\"crl\"],\"application/pkix-pkipath\":[\"pkipath\"],\"application/pkixcmp\":[\"pki\"],\"application/pls+xml\":[\"pls\"],\"application/postscript\":[\"ai\",\"eps\",\"ps\"],\"application/provenance+xml\":[\"provx\"],\"application/pskc+xml\":[\"pskcxml\"],\"application/raml+yaml\":[\"raml\"],\"application/rdf+xml\":[\"rdf\",\"owl\"],\"application/reginfo+xml\":[\"rif\"],\"application/relax-ng-compact-syntax\":[\"rnc\"],\"application/resource-lists+xml\":[\"rl\"],\"application/resource-lists-diff+xml\":[\"rld\"],\"application/rls-services+xml\":[\"rs\"],\"application/route-apd+xml\":[\"rapd\"],\"application/route-s-tsid+xml\":[\"sls\"],\"application/route-usd+xml\":[\"rusd\"],\"application/rpki-ghostbusters\":[\"gbr\"],\"application/rpki-manifest\":[\"mft\"],\"application/rpki-roa\":[\"roa\"],\"application/rsd+xml\":[\"rsd\"],\"application/rss+xml\":[\"rss\"],\"application/rtf\":[\"rtf\"],\"application/sbml+xml\":[\"sbml\"],\"application/scvp-cv-request\":[\"scq\"],\"application/scvp-cv-response\":[\"scs\"],\"application/scvp-vp-request\":[\"spq\"],\"application/scvp-vp-response\":[\"spp\"],\"application/sdp\":[\"sdp\"],\"application/senml+xml\":[\"senmlx\"],\"application/sensml+xml\":[\"sensmlx\"],\"application/set-payment-initiation\":[\"setpay\"],\"application/set-registration-initiation\":[\"setreg\"],\"application/shf+xml\":[\"shf\"],\"application/sieve\":[\"siv\",\"sieve\"],\"application/smil+xml\":[\"smi\",\"smil\"],\"application/sparql-query\":[\"rq\"],\"application/sparql-results+xml\":[\"srx\"],\"application/srgs\":[\"gram\"],\"application/srgs+xml\":[\"grxml\"],\"application/sru+xml\":[\"sru\"],\"application/ssdl+xml\":[\"ssdl\"],\"application/ssml+xml\":[\"ssml\"],\"application/swid+xml\":[\"swidtag\"],\"application/tei+xml\":[\"tei\",\"teicorpus\"],\"application/thraud+xml\":[\"tfi\"],\"application/timestamped-data\":[\"tsd\"],\"application/toml\":[\"toml\"],\"application/trig\":[\"trig\"],\"application/ttml+xml\":[\"ttml\"],\"application/ubjson\":[\"ubj\"],\"application/urc-ressheet+xml\":[\"rsheet\"],\"application/urc-targetdesc+xml\":[\"td\"],\"application/voicexml+xml\":[\"vxml\"],\"application/wasm\":[\"wasm\"],\"application/widget\":[\"wgt\"],\"application/winhlp\":[\"hlp\"],\"application/wsdl+xml\":[\"wsdl\"],\"application/wspolicy+xml\":[\"wspolicy\"],\"application/xaml+xml\":[\"xaml\"],\"application/xcap-att+xml\":[\"xav\"],\"application/xcap-caps+xml\":[\"xca\"],\"application/xcap-diff+xml\":[\"xdf\"],\"application/xcap-el+xml\":[\"xel\"],\"application/xcap-ns+xml\":[\"xns\"],\"application/xenc+xml\":[\"xenc\"],\"application/xhtml+xml\":[\"xhtml\",\"xht\"],\"application/xliff+xml\":[\"xlf\"],\"application/xml\":[\"xml\",\"xsl\",\"xsd\",\"rng\"],\"application/xml-dtd\":[\"dtd\"],\"application/xop+xml\":[\"xop\"],\"application/xproc+xml\":[\"xpl\"],\"application/xslt+xml\":[\"*xsl\",\"xslt\"],\"application/xspf+xml\":[\"xspf\"],\"application/xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],\"application/yang\":[\"yang\"],\"application/yin+xml\":[\"yin\"],\"application/zip\":[\"zip\"],\"audio/3gpp\":[\"*3gpp\"],\"audio/adpcm\":[\"adp\"],\"audio/amr\":[\"amr\"],\"audio/basic\":[\"au\",\"snd\"],\"audio/midi\":[\"mid\",\"midi\",\"kar\",\"rmi\"],\"audio/mobile-xmf\":[\"mxmf\"],\"audio/mp3\":[\"*mp3\"],\"audio/mp4\":[\"m4a\",\"mp4a\"],\"audio/mpeg\":[\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"],\"audio/ogg\":[\"oga\",\"ogg\",\"spx\",\"opus\"],\"audio/s3m\":[\"s3m\"],\"audio/silk\":[\"sil\"],\"audio/wav\":[\"wav\"],\"audio/wave\":[\"*wav\"],\"audio/webm\":[\"weba\"],\"audio/xm\":[\"xm\"],\"font/collection\":[\"ttc\"],\"font/otf\":[\"otf\"],\"font/ttf\":[\"ttf\"],\"font/woff\":[\"woff\"],\"font/woff2\":[\"woff2\"],\"image/aces\":[\"exr\"],\"image/apng\":[\"apng\"],\"image/avif\":[\"avif\"],\"image/bmp\":[\"bmp\"],\"image/cgm\":[\"cgm\"],\"image/dicom-rle\":[\"drle\"],\"image/emf\":[\"emf\"],\"image/fits\":[\"fits\"],\"image/g3fax\":[\"g3\"],\"image/gif\":[\"gif\"],\"image/heic\":[\"heic\"],\"image/heic-sequence\":[\"heics\"],\"image/heif\":[\"heif\"],\"image/heif-sequence\":[\"heifs\"],\"image/hej2k\":[\"hej2\"],\"image/hsj2\":[\"hsj2\"],\"image/ief\":[\"ief\"],\"image/jls\":[\"jls\"],\"image/jp2\":[\"jp2\",\"jpg2\"],\"image/jpeg\":[\"jpeg\",\"jpg\",\"jpe\"],\"image/jph\":[\"jph\"],\"image/jphc\":[\"jhc\"],\"image/jpm\":[\"jpm\"],\"image/jpx\":[\"jpx\",\"jpf\"],\"image/jxr\":[\"jxr\"],\"image/jxra\":[\"jxra\"],\"image/jxrs\":[\"jxrs\"],\"image/jxs\":[\"jxs\"],\"image/jxsc\":[\"jxsc\"],\"image/jxsi\":[\"jxsi\"],\"image/jxss\":[\"jxss\"],\"image/ktx\":[\"ktx\"],\"image/ktx2\":[\"ktx2\"],\"image/png\":[\"png\"],\"image/sgi\":[\"sgi\"],\"image/svg+xml\":[\"svg\",\"svgz\"],\"image/t38\":[\"t38\"],\"image/tiff\":[\"tif\",\"tiff\"],\"image/tiff-fx\":[\"tfx\"],\"image/webp\":[\"webp\"],\"image/wmf\":[\"wmf\"],\"message/disposition-notification\":[\"disposition-notification\"],\"message/global\":[\"u8msg\"],\"message/global-delivery-status\":[\"u8dsn\"],\"message/global-disposition-notification\":[\"u8mdn\"],\"message/global-headers\":[\"u8hdr\"],\"message/rfc822\":[\"eml\",\"mime\"],\"model/3mf\":[\"3mf\"],\"model/gltf+json\":[\"gltf\"],\"model/gltf-binary\":[\"glb\"],\"model/iges\":[\"igs\",\"iges\"],\"model/mesh\":[\"msh\",\"mesh\",\"silo\"],\"model/mtl\":[\"mtl\"],\"model/obj\":[\"obj\"],\"model/step+xml\":[\"stpx\"],\"model/step+zip\":[\"stpz\"],\"model/step-xml+zip\":[\"stpxz\"],\"model/stl\":[\"stl\"],\"model/vrml\":[\"wrl\",\"vrml\"],\"model/x3d+binary\":[\"*x3db\",\"x3dbz\"],\"model/x3d+fastinfoset\":[\"x3db\"],\"model/x3d+vrml\":[\"*x3dv\",\"x3dvz\"],\"model/x3d+xml\":[\"x3d\",\"x3dz\"],\"model/x3d-vrml\":[\"x3dv\"],\"text/cache-manifest\":[\"appcache\",\"manifest\"],\"text/calendar\":[\"ics\",\"ifb\"],\"text/coffeescript\":[\"coffee\",\"litcoffee\"],\"text/css\":[\"css\"],\"text/csv\":[\"csv\"],\"text/html\":[\"html\",\"htm\",\"shtml\"],\"text/jade\":[\"jade\"],\"text/jsx\":[\"jsx\"],\"text/less\":[\"less\"],\"text/markdown\":[\"markdown\",\"md\"],\"text/mathml\":[\"mml\"],\"text/mdx\":[\"mdx\"],\"text/n3\":[\"n3\"],\"text/plain\":[\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"],\"text/richtext\":[\"rtx\"],\"text/rtf\":[\"*rtf\"],\"text/sgml\":[\"sgml\",\"sgm\"],\"text/shex\":[\"shex\"],\"text/slim\":[\"slim\",\"slm\"],\"text/spdx\":[\"spdx\"],\"text/stylus\":[\"stylus\",\"styl\"],\"text/tab-separated-values\":[\"tsv\"],\"text/troff\":[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],\"text/turtle\":[\"ttl\"],\"text/uri-list\":[\"uri\",\"uris\",\"urls\"],\"text/vcard\":[\"vcard\"],\"text/vtt\":[\"vtt\"],\"text/xml\":[\"*xml\"],\"text/yaml\":[\"yaml\",\"yml\"],\"video/3gpp\":[\"3gp\",\"3gpp\"],\"video/3gpp2\":[\"3g2\"],\"video/h261\":[\"h261\"],\"video/h263\":[\"h263\"],\"video/h264\":[\"h264\"],\"video/iso.segment\":[\"m4s\"],\"video/jpeg\":[\"jpgv\"],\"video/jpm\":[\"*jpm\",\"jpgm\"],\"video/mj2\":[\"mj2\",\"mjp2\"],\"video/mp2t\":[\"ts\"],\"video/mp4\":[\"mp4\",\"mp4v\",\"mpg4\"],\"video/mpeg\":[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"],\"video/ogg\":[\"ogv\"],\"video/quicktime\":[\"qt\",\"mov\"],\"video/webm\":[\"webm\"]};", "module.exports = {\"application/prs.cww\":[\"cww\"],\"application/vnd.1000minds.decision-model+xml\":[\"1km\"],\"application/vnd.3gpp.pic-bw-large\":[\"plb\"],\"application/vnd.3gpp.pic-bw-small\":[\"psb\"],\"application/vnd.3gpp.pic-bw-var\":[\"pvb\"],\"application/vnd.3gpp2.tcap\":[\"tcap\"],\"application/vnd.3m.post-it-notes\":[\"pwn\"],\"application/vnd.accpac.simply.aso\":[\"aso\"],\"application/vnd.accpac.simply.imp\":[\"imp\"],\"application/vnd.acucobol\":[\"acu\"],\"application/vnd.acucorp\":[\"atc\",\"acutc\"],\"application/vnd.adobe.air-application-installer-package+zip\":[\"air\"],\"application/vnd.adobe.formscentral.fcdt\":[\"fcdt\"],\"application/vnd.adobe.fxp\":[\"fxp\",\"fxpl\"],\"application/vnd.adobe.xdp+xml\":[\"xdp\"],\"application/vnd.adobe.xfdf\":[\"xfdf\"],\"application/vnd.ahead.space\":[\"ahead\"],\"application/vnd.airzip.filesecure.azf\":[\"azf\"],\"application/vnd.airzip.filesecure.azs\":[\"azs\"],\"application/vnd.amazon.ebook\":[\"azw\"],\"application/vnd.americandynamics.acc\":[\"acc\"],\"application/vnd.amiga.ami\":[\"ami\"],\"application/vnd.android.package-archive\":[\"apk\"],\"application/vnd.anser-web-certificate-issue-initiation\":[\"cii\"],\"application/vnd.anser-web-funds-transfer-initiation\":[\"fti\"],\"application/vnd.antix.game-component\":[\"atx\"],\"application/vnd.apple.installer+xml\":[\"mpkg\"],\"application/vnd.apple.keynote\":[\"key\"],\"application/vnd.apple.mpegurl\":[\"m3u8\"],\"application/vnd.apple.numbers\":[\"numbers\"],\"application/vnd.apple.pages\":[\"pages\"],\"application/vnd.apple.pkpass\":[\"pkpass\"],\"application/vnd.aristanetworks.swi\":[\"swi\"],\"application/vnd.astraea-software.iota\":[\"iota\"],\"application/vnd.audiograph\":[\"aep\"],\"application/vnd.balsamiq.bmml+xml\":[\"bmml\"],\"application/vnd.blueice.multipass\":[\"mpm\"],\"application/vnd.bmi\":[\"bmi\"],\"application/vnd.businessobjects\":[\"rep\"],\"application/vnd.chemdraw+xml\":[\"cdxml\"],\"application/vnd.chipnuts.karaoke-mmd\":[\"mmd\"],\"application/vnd.cinderella\":[\"cdy\"],\"application/vnd.citationstyles.style+xml\":[\"csl\"],\"application/vnd.claymore\":[\"cla\"],\"application/vnd.cloanto.rp9\":[\"rp9\"],\"application/vnd.clonk.c4group\":[\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"],\"application/vnd.cluetrust.cartomobile-config\":[\"c11amc\"],\"application/vnd.cluetrust.cartomobile-config-pkg\":[\"c11amz\"],\"application/vnd.commonspace\":[\"csp\"],\"application/vnd.contact.cmsg\":[\"cdbcmsg\"],\"application/vnd.cosmocaller\":[\"cmc\"],\"application/vnd.crick.clicker\":[\"clkx\"],\"application/vnd.crick.clicker.keyboard\":[\"clkk\"],\"application/vnd.crick.clicker.palette\":[\"clkp\"],\"application/vnd.crick.clicker.template\":[\"clkt\"],\"application/vnd.crick.clicker.wordbank\":[\"clkw\"],\"application/vnd.criticaltools.wbs+xml\":[\"wbs\"],\"application/vnd.ctc-posml\":[\"pml\"],\"application/vnd.cups-ppd\":[\"ppd\"],\"application/vnd.curl.car\":[\"car\"],\"application/vnd.curl.pcurl\":[\"pcurl\"],\"application/vnd.dart\":[\"dart\"],\"application/vnd.data-vision.rdz\":[\"rdz\"],\"application/vnd.dbf\":[\"dbf\"],\"application/vnd.dece.data\":[\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"],\"application/vnd.dece.ttml+xml\":[\"uvt\",\"uvvt\"],\"application/vnd.dece.unspecified\":[\"uvx\",\"uvvx\"],\"application/vnd.dece.zip\":[\"uvz\",\"uvvz\"],\"application/vnd.denovo.fcselayout-link\":[\"fe_launch\"],\"application/vnd.dna\":[\"dna\"],\"application/vnd.dolby.mlp\":[\"mlp\"],\"application/vnd.dpgraph\":[\"dpg\"],\"application/vnd.dreamfactory\":[\"dfac\"],\"application/vnd.ds-keypoint\":[\"kpxx\"],\"application/vnd.dvb.ait\":[\"ait\"],\"application/vnd.dvb.service\":[\"svc\"],\"application/vnd.dynageo\":[\"geo\"],\"application/vnd.ecowin.chart\":[\"mag\"],\"application/vnd.enliven\":[\"nml\"],\"application/vnd.epson.esf\":[\"esf\"],\"application/vnd.epson.msf\":[\"msf\"],\"application/vnd.epson.quickanime\":[\"qam\"],\"application/vnd.epson.salt\":[\"slt\"],\"application/vnd.epson.ssf\":[\"ssf\"],\"application/vnd.eszigno3+xml\":[\"es3\",\"et3\"],\"application/vnd.ezpix-album\":[\"ez2\"],\"application/vnd.ezpix-package\":[\"ez3\"],\"application/vnd.fdf\":[\"fdf\"],\"application/vnd.fdsn.mseed\":[\"mseed\"],\"application/vnd.fdsn.seed\":[\"seed\",\"dataless\"],\"application/vnd.flographit\":[\"gph\"],\"application/vnd.fluxtime.clip\":[\"ftc\"],\"application/vnd.framemaker\":[\"fm\",\"frame\",\"maker\",\"book\"],\"application/vnd.frogans.fnc\":[\"fnc\"],\"application/vnd.frogans.ltf\":[\"ltf\"],\"application/vnd.fsc.weblaunch\":[\"fsc\"],\"application/vnd.fujitsu.oasys\":[\"oas\"],\"application/vnd.fujitsu.oasys2\":[\"oa2\"],\"application/vnd.fujitsu.oasys3\":[\"oa3\"],\"application/vnd.fujitsu.oasysgp\":[\"fg5\"],\"application/vnd.fujitsu.oasysprs\":[\"bh2\"],\"application/vnd.fujixerox.ddd\":[\"ddd\"],\"application/vnd.fujixerox.docuworks\":[\"xdw\"],\"application/vnd.fujixerox.docuworks.binder\":[\"xbd\"],\"application/vnd.fuzzysheet\":[\"fzs\"],\"application/vnd.genomatix.tuxedo\":[\"txd\"],\"application/vnd.geogebra.file\":[\"ggb\"],\"application/vnd.geogebra.tool\":[\"ggt\"],\"application/vnd.geometry-explorer\":[\"gex\",\"gre\"],\"application/vnd.geonext\":[\"gxt\"],\"application/vnd.geoplan\":[\"g2w\"],\"application/vnd.geospace\":[\"g3w\"],\"application/vnd.gmx\":[\"gmx\"],\"application/vnd.google-apps.document\":[\"gdoc\"],\"application/vnd.google-apps.presentation\":[\"gslides\"],\"application/vnd.google-apps.spreadsheet\":[\"gsheet\"],\"application/vnd.google-earth.kml+xml\":[\"kml\"],\"application/vnd.google-earth.kmz\":[\"kmz\"],\"application/vnd.grafeq\":[\"gqf\",\"gqs\"],\"application/vnd.groove-account\":[\"gac\"],\"application/vnd.groove-help\":[\"ghf\"],\"application/vnd.groove-identity-message\":[\"gim\"],\"application/vnd.groove-injector\":[\"grv\"],\"application/vnd.groove-tool-message\":[\"gtm\"],\"application/vnd.groove-tool-template\":[\"tpl\"],\"application/vnd.groove-vcard\":[\"vcg\"],\"application/vnd.hal+xml\":[\"hal\"],\"application/vnd.handheld-entertainment+xml\":[\"zmm\"],\"application/vnd.hbci\":[\"hbci\"],\"application/vnd.hhe.lesson-player\":[\"les\"],\"application/vnd.hp-hpgl\":[\"hpgl\"],\"application/vnd.hp-hpid\":[\"hpid\"],\"application/vnd.hp-hps\":[\"hps\"],\"application/vnd.hp-jlyt\":[\"jlt\"],\"application/vnd.hp-pcl\":[\"pcl\"],\"application/vnd.hp-pclxl\":[\"pclxl\"],\"application/vnd.hydrostatix.sof-data\":[\"sfd-hdstx\"],\"application/vnd.ibm.minipay\":[\"mpy\"],\"application/vnd.ibm.modcap\":[\"afp\",\"listafp\",\"list3820\"],\"application/vnd.ibm.rights-management\":[\"irm\"],\"application/vnd.ibm.secure-container\":[\"sc\"],\"application/vnd.iccprofile\":[\"icc\",\"icm\"],\"application/vnd.igloader\":[\"igl\"],\"application/vnd.immervision-ivp\":[\"ivp\"],\"application/vnd.immervision-ivu\":[\"ivu\"],\"application/vnd.insors.igm\":[\"igm\"],\"application/vnd.intercon.formnet\":[\"xpw\",\"xpx\"],\"application/vnd.intergeo\":[\"i2g\"],\"application/vnd.intu.qbo\":[\"qbo\"],\"application/vnd.intu.qfx\":[\"qfx\"],\"application/vnd.ipunplugged.rcprofile\":[\"rcprofile\"],\"application/vnd.irepository.package+xml\":[\"irp\"],\"application/vnd.is-xpr\":[\"xpr\"],\"application/vnd.isac.fcs\":[\"fcs\"],\"application/vnd.jam\":[\"jam\"],\"application/vnd.jcp.javame.midlet-rms\":[\"rms\"],\"application/vnd.jisp\":[\"jisp\"],\"application/vnd.joost.joda-archive\":[\"joda\"],\"application/vnd.kahootz\":[\"ktz\",\"ktr\"],\"application/vnd.kde.karbon\":[\"karbon\"],\"application/vnd.kde.kchart\":[\"chrt\"],\"application/vnd.kde.kformula\":[\"kfo\"],\"application/vnd.kde.kivio\":[\"flw\"],\"application/vnd.kde.kontour\":[\"kon\"],\"application/vnd.kde.kpresenter\":[\"kpr\",\"kpt\"],\"application/vnd.kde.kspread\":[\"ksp\"],\"application/vnd.kde.kword\":[\"kwd\",\"kwt\"],\"application/vnd.kenameaapp\":[\"htke\"],\"application/vnd.kidspiration\":[\"kia\"],\"application/vnd.kinar\":[\"kne\",\"knp\"],\"application/vnd.koan\":[\"skp\",\"skd\",\"skt\",\"skm\"],\"application/vnd.kodak-descriptor\":[\"sse\"],\"application/vnd.las.las+xml\":[\"lasxml\"],\"application/vnd.llamagraphics.life-balance.desktop\":[\"lbd\"],\"application/vnd.llamagraphics.life-balance.exchange+xml\":[\"lbe\"],\"application/vnd.lotus-1-2-3\":[\"123\"],\"application/vnd.lotus-approach\":[\"apr\"],\"application/vnd.lotus-freelance\":[\"pre\"],\"application/vnd.lotus-notes\":[\"nsf\"],\"application/vnd.lotus-organizer\":[\"org\"],\"application/vnd.lotus-screencam\":[\"scm\"],\"application/vnd.lotus-wordpro\":[\"lwp\"],\"application/vnd.macports.portpkg\":[\"portpkg\"],\"application/vnd.mapbox-vector-tile\":[\"mvt\"],\"application/vnd.mcd\":[\"mcd\"],\"application/vnd.medcalcdata\":[\"mc1\"],\"application/vnd.mediastation.cdkey\":[\"cdkey\"],\"application/vnd.mfer\":[\"mwf\"],\"application/vnd.mfmp\":[\"mfm\"],\"application/vnd.micrografx.flo\":[\"flo\"],\"application/vnd.micrografx.igx\":[\"igx\"],\"application/vnd.mif\":[\"mif\"],\"application/vnd.mobius.daf\":[\"daf\"],\"application/vnd.mobius.dis\":[\"dis\"],\"application/vnd.mobius.mbk\":[\"mbk\"],\"application/vnd.mobius.mqy\":[\"mqy\"],\"application/vnd.mobius.msl\":[\"msl\"],\"application/vnd.mobius.plc\":[\"plc\"],\"application/vnd.mobius.txf\":[\"txf\"],\"application/vnd.mophun.application\":[\"mpn\"],\"application/vnd.mophun.certificate\":[\"mpc\"],\"application/vnd.mozilla.xul+xml\":[\"xul\"],\"application/vnd.ms-artgalry\":[\"cil\"],\"application/vnd.ms-cab-compressed\":[\"cab\"],\"application/vnd.ms-excel\":[\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"],\"application/vnd.ms-excel.addin.macroenabled.12\":[\"xlam\"],\"application/vnd.ms-excel.sheet.binary.macroenabled.12\":[\"xlsb\"],\"application/vnd.ms-excel.sheet.macroenabled.12\":[\"xlsm\"],\"application/vnd.ms-excel.template.macroenabled.12\":[\"xltm\"],\"application/vnd.ms-fontobject\":[\"eot\"],\"application/vnd.ms-htmlhelp\":[\"chm\"],\"application/vnd.ms-ims\":[\"ims\"],\"application/vnd.ms-lrm\":[\"lrm\"],\"application/vnd.ms-officetheme\":[\"thmx\"],\"application/vnd.ms-outlook\":[\"msg\"],\"application/vnd.ms-pki.seccat\":[\"cat\"],\"application/vnd.ms-pki.stl\":[\"*stl\"],\"application/vnd.ms-powerpoint\":[\"ppt\",\"pps\",\"pot\"],\"application/vnd.ms-powerpoint.addin.macroenabled.12\":[\"ppam\"],\"application/vnd.ms-powerpoint.presentation.macroenabled.12\":[\"pptm\"],\"application/vnd.ms-powerpoint.slide.macroenabled.12\":[\"sldm\"],\"application/vnd.ms-powerpoint.slideshow.macroenabled.12\":[\"ppsm\"],\"application/vnd.ms-powerpoint.template.macroenabled.12\":[\"potm\"],\"application/vnd.ms-project\":[\"mpp\",\"mpt\"],\"application/vnd.ms-word.document.macroenabled.12\":[\"docm\"],\"application/vnd.ms-word.template.macroenabled.12\":[\"dotm\"],\"application/vnd.ms-works\":[\"wps\",\"wks\",\"wcm\",\"wdb\"],\"application/vnd.ms-wpl\":[\"wpl\"],\"application/vnd.ms-xpsdocument\":[\"xps\"],\"application/vnd.mseq\":[\"mseq\"],\"application/vnd.musician\":[\"mus\"],\"application/vnd.muvee.style\":[\"msty\"],\"application/vnd.mynfc\":[\"taglet\"],\"application/vnd.neurolanguage.nlu\":[\"nlu\"],\"application/vnd.nitf\":[\"ntf\",\"nitf\"],\"application/vnd.noblenet-directory\":[\"nnd\"],\"application/vnd.noblenet-sealer\":[\"nns\"],\"application/vnd.noblenet-web\":[\"nnw\"],\"application/vnd.nokia.n-gage.ac+xml\":[\"*ac\"],\"application/vnd.nokia.n-gage.data\":[\"ngdat\"],\"application/vnd.nokia.n-gage.symbian.install\":[\"n-gage\"],\"application/vnd.nokia.radio-preset\":[\"rpst\"],\"application/vnd.nokia.radio-presets\":[\"rpss\"],\"application/vnd.novadigm.edm\":[\"edm\"],\"application/vnd.novadigm.edx\":[\"edx\"],\"application/vnd.novadigm.ext\":[\"ext\"],\"application/vnd.oasis.opendocument.chart\":[\"odc\"],\"application/vnd.oasis.opendocument.chart-template\":[\"otc\"],\"application/vnd.oasis.opendocument.database\":[\"odb\"],\"application/vnd.oasis.opendocument.formula\":[\"odf\"],\"application/vnd.oasis.opendocument.formula-template\":[\"odft\"],\"application/vnd.oasis.opendocument.graphics\":[\"odg\"],\"application/vnd.oasis.opendocument.graphics-template\":[\"otg\"],\"application/vnd.oasis.opendocument.image\":[\"odi\"],\"application/vnd.oasis.opendocument.image-template\":[\"oti\"],\"application/vnd.oasis.opendocument.presentation\":[\"odp\"],\"application/vnd.oasis.opendocument.presentation-template\":[\"otp\"],\"application/vnd.oasis.opendocument.spreadsheet\":[\"ods\"],\"application/vnd.oasis.opendocument.spreadsheet-template\":[\"ots\"],\"application/vnd.oasis.opendocument.text\":[\"odt\"],\"application/vnd.oasis.opendocument.text-master\":[\"odm\"],\"application/vnd.oasis.opendocument.text-template\":[\"ott\"],\"application/vnd.oasis.opendocument.text-web\":[\"oth\"],\"application/vnd.olpc-sugar\":[\"xo\"],\"application/vnd.oma.dd2+xml\":[\"dd2\"],\"application/vnd.openblox.game+xml\":[\"obgx\"],\"application/vnd.openofficeorg.extension\":[\"oxt\"],\"application/vnd.openstreetmap.data+xml\":[\"osm\"],\"application/vnd.openxmlformats-officedocument.presentationml.presentation\":[\"pptx\"],\"application/vnd.openxmlformats-officedocument.presentationml.slide\":[\"sldx\"],\"application/vnd.openxmlformats-officedocument.presentationml.slideshow\":[\"ppsx\"],\"application/vnd.openxmlformats-officedocument.presentationml.template\":[\"potx\"],\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\":[\"xlsx\"],\"application/vnd.openxmlformats-officedocument.spreadsheetml.template\":[\"xltx\"],\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\":[\"docx\"],\"application/vnd.openxmlformats-officedocument.wordprocessingml.template\":[\"dotx\"],\"application/vnd.osgeo.mapguide.package\":[\"mgp\"],\"application/vnd.osgi.dp\":[\"dp\"],\"application/vnd.osgi.subsystem\":[\"esa\"],\"application/vnd.palm\":[\"pdb\",\"pqa\",\"oprc\"],\"application/vnd.pawaafile\":[\"paw\"],\"application/vnd.pg.format\":[\"str\"],\"application/vnd.pg.osasli\":[\"ei6\"],\"application/vnd.picsel\":[\"efif\"],\"application/vnd.pmi.widget\":[\"wg\"],\"application/vnd.pocketlearn\":[\"plf\"],\"application/vnd.powerbuilder6\":[\"pbd\"],\"application/vnd.previewsystems.box\":[\"box\"],\"application/vnd.proteus.magazine\":[\"mgz\"],\"application/vnd.publishare-delta-tree\":[\"qps\"],\"application/vnd.pvi.ptid1\":[\"ptid\"],\"application/vnd.quark.quarkxpress\":[\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"],\"application/vnd.rar\":[\"rar\"],\"application/vnd.realvnc.bed\":[\"bed\"],\"application/vnd.recordare.musicxml\":[\"mxl\"],\"application/vnd.recordare.musicxml+xml\":[\"musicxml\"],\"application/vnd.rig.cryptonote\":[\"cryptonote\"],\"application/vnd.rim.cod\":[\"cod\"],\"application/vnd.rn-realmedia\":[\"rm\"],\"application/vnd.rn-realmedia-vbr\":[\"rmvb\"],\"application/vnd.route66.link66+xml\":[\"link66\"],\"application/vnd.sailingtracker.track\":[\"st\"],\"application/vnd.seemail\":[\"see\"],\"application/vnd.sema\":[\"sema\"],\"application/vnd.semd\":[\"semd\"],\"application/vnd.semf\":[\"semf\"],\"application/vnd.shana.informed.formdata\":[\"ifm\"],\"application/vnd.shana.informed.formtemplate\":[\"itp\"],\"application/vnd.shana.informed.interchange\":[\"iif\"],\"application/vnd.shana.informed.package\":[\"ipk\"],\"application/vnd.simtech-mindmapper\":[\"twd\",\"twds\"],\"application/vnd.smaf\":[\"mmf\"],\"application/vnd.smart.teacher\":[\"teacher\"],\"application/vnd.software602.filler.form+xml\":[\"fo\"],\"application/vnd.solent.sdkm+xml\":[\"sdkm\",\"sdkd\"],\"application/vnd.spotfire.dxp\":[\"dxp\"],\"application/vnd.spotfire.sfs\":[\"sfs\"],\"application/vnd.stardivision.calc\":[\"sdc\"],\"application/vnd.stardivision.draw\":[\"sda\"],\"application/vnd.stardivision.impress\":[\"sdd\"],\"application/vnd.stardivision.math\":[\"smf\"],\"application/vnd.stardivision.writer\":[\"sdw\",\"vor\"],\"application/vnd.stardivision.writer-global\":[\"sgl\"],\"application/vnd.stepmania.package\":[\"smzip\"],\"application/vnd.stepmania.stepchart\":[\"sm\"],\"application/vnd.sun.wadl+xml\":[\"wadl\"],\"application/vnd.sun.xml.calc\":[\"sxc\"],\"application/vnd.sun.xml.calc.template\":[\"stc\"],\"application/vnd.sun.xml.draw\":[\"sxd\"],\"application/vnd.sun.xml.draw.template\":[\"std\"],\"application/vnd.sun.xml.impress\":[\"sxi\"],\"application/vnd.sun.xml.impress.template\":[\"sti\"],\"application/vnd.sun.xml.math\":[\"sxm\"],\"application/vnd.sun.xml.writer\":[\"sxw\"],\"application/vnd.sun.xml.writer.global\":[\"sxg\"],\"application/vnd.sun.xml.writer.template\":[\"stw\"],\"application/vnd.sus-calendar\":[\"sus\",\"susp\"],\"application/vnd.svd\":[\"svd\"],\"application/vnd.symbian.install\":[\"sis\",\"sisx\"],\"application/vnd.syncml+xml\":[\"xsm\"],\"application/vnd.syncml.dm+wbxml\":[\"bdm\"],\"application/vnd.syncml.dm+xml\":[\"xdm\"],\"application/vnd.syncml.dmddf+xml\":[\"ddf\"],\"application/vnd.tao.intent-module-archive\":[\"tao\"],\"application/vnd.tcpdump.pcap\":[\"pcap\",\"cap\",\"dmp\"],\"application/vnd.tmobile-livetv\":[\"tmo\"],\"application/vnd.trid.tpt\":[\"tpt\"],\"application/vnd.triscape.mxs\":[\"mxs\"],\"application/vnd.trueapp\":[\"tra\"],\"application/vnd.ufdl\":[\"ufd\",\"ufdl\"],\"application/vnd.uiq.theme\":[\"utz\"],\"application/vnd.umajin\":[\"umj\"],\"application/vnd.unity\":[\"unityweb\"],\"application/vnd.uoml+xml\":[\"uoml\"],\"application/vnd.vcx\":[\"vcx\"],\"application/vnd.visio\":[\"vsd\",\"vst\",\"vss\",\"vsw\"],\"application/vnd.visionary\":[\"vis\"],\"application/vnd.vsf\":[\"vsf\"],\"application/vnd.wap.wbxml\":[\"wbxml\"],\"application/vnd.wap.wmlc\":[\"wmlc\"],\"application/vnd.wap.wmlscriptc\":[\"wmlsc\"],\"application/vnd.webturbo\":[\"wtb\"],\"application/vnd.wolfram.player\":[\"nbp\"],\"application/vnd.wordperfect\":[\"wpd\"],\"application/vnd.wqd\":[\"wqd\"],\"application/vnd.wt.stf\":[\"stf\"],\"application/vnd.xara\":[\"xar\"],\"application/vnd.xfdl\":[\"xfdl\"],\"application/vnd.yamaha.hv-dic\":[\"hvd\"],\"application/vnd.yamaha.hv-script\":[\"hvs\"],\"application/vnd.yamaha.hv-voice\":[\"hvp\"],\"application/vnd.yamaha.openscoreformat\":[\"osf\"],\"application/vnd.yamaha.openscoreformat.osfpvg+xml\":[\"osfpvg\"],\"application/vnd.yamaha.smaf-audio\":[\"saf\"],\"application/vnd.yamaha.smaf-phrase\":[\"spf\"],\"application/vnd.yellowriver-custom-menu\":[\"cmp\"],\"application/vnd.zul\":[\"zir\",\"zirz\"],\"application/vnd.zzazz.deck+xml\":[\"zaz\"],\"application/x-7z-compressed\":[\"7z\"],\"application/x-abiword\":[\"abw\"],\"application/x-ace-compressed\":[\"ace\"],\"application/x-apple-diskimage\":[\"*dmg\"],\"application/x-arj\":[\"arj\"],\"application/x-authorware-bin\":[\"aab\",\"x32\",\"u32\",\"vox\"],\"application/x-authorware-map\":[\"aam\"],\"application/x-authorware-seg\":[\"aas\"],\"application/x-bcpio\":[\"bcpio\"],\"application/x-bdoc\":[\"*bdoc\"],\"application/x-bittorrent\":[\"torrent\"],\"application/x-blorb\":[\"blb\",\"blorb\"],\"application/x-bzip\":[\"bz\"],\"application/x-bzip2\":[\"bz2\",\"boz\"],\"application/x-cbr\":[\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"],\"application/x-cdlink\":[\"vcd\"],\"application/x-cfs-compressed\":[\"cfs\"],\"application/x-chat\":[\"chat\"],\"application/x-chess-pgn\":[\"pgn\"],\"application/x-chrome-extension\":[\"crx\"],\"application/x-cocoa\":[\"cco\"],\"application/x-conference\":[\"nsc\"],\"application/x-cpio\":[\"cpio\"],\"application/x-csh\":[\"csh\"],\"application/x-debian-package\":[\"*deb\",\"udeb\"],\"application/x-dgc-compressed\":[\"dgc\"],\"application/x-director\":[\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"],\"application/x-doom\":[\"wad\"],\"application/x-dtbncx+xml\":[\"ncx\"],\"application/x-dtbook+xml\":[\"dtb\"],\"application/x-dtbresource+xml\":[\"res\"],\"application/x-dvi\":[\"dvi\"],\"application/x-envoy\":[\"evy\"],\"application/x-eva\":[\"eva\"],\"application/x-font-bdf\":[\"bdf\"],\"application/x-font-ghostscript\":[\"gsf\"],\"application/x-font-linux-psf\":[\"psf\"],\"application/x-font-pcf\":[\"pcf\"],\"application/x-font-snf\":[\"snf\"],\"application/x-font-type1\":[\"pfa\",\"pfb\",\"pfm\",\"afm\"],\"application/x-freearc\":[\"arc\"],\"application/x-futuresplash\":[\"spl\"],\"application/x-gca-compressed\":[\"gca\"],\"application/x-glulx\":[\"ulx\"],\"application/x-gnumeric\":[\"gnumeric\"],\"application/x-gramps-xml\":[\"gramps\"],\"application/x-gtar\":[\"gtar\"],\"application/x-hdf\":[\"hdf\"],\"application/x-httpd-php\":[\"php\"],\"application/x-install-instructions\":[\"install\"],\"application/x-iso9660-image\":[\"*iso\"],\"application/x-iwork-keynote-sffkey\":[\"*key\"],\"application/x-iwork-numbers-sffnumbers\":[\"*numbers\"],\"application/x-iwork-pages-sffpages\":[\"*pages\"],\"application/x-java-archive-diff\":[\"jardiff\"],\"application/x-java-jnlp-file\":[\"jnlp\"],\"application/x-keepass2\":[\"kdbx\"],\"application/x-latex\":[\"latex\"],\"application/x-lua-bytecode\":[\"luac\"],\"application/x-lzh-compressed\":[\"lzh\",\"lha\"],\"application/x-makeself\":[\"run\"],\"application/x-mie\":[\"mie\"],\"application/x-mobipocket-ebook\":[\"prc\",\"mobi\"],\"application/x-ms-application\":[\"application\"],\"application/x-ms-shortcut\":[\"lnk\"],\"application/x-ms-wmd\":[\"wmd\"],\"application/x-ms-wmz\":[\"wmz\"],\"application/x-ms-xbap\":[\"xbap\"],\"application/x-msaccess\":[\"mdb\"],\"application/x-msbinder\":[\"obd\"],\"application/x-mscardfile\":[\"crd\"],\"application/x-msclip\":[\"clp\"],\"application/x-msdos-program\":[\"*exe\"],\"application/x-msdownload\":[\"*exe\",\"*dll\",\"com\",\"bat\",\"*msi\"],\"application/x-msmediaview\":[\"mvb\",\"m13\",\"m14\"],\"application/x-msmetafile\":[\"*wmf\",\"*wmz\",\"*emf\",\"emz\"],\"application/x-msmoney\":[\"mny\"],\"application/x-mspublisher\":[\"pub\"],\"application/x-msschedule\":[\"scd\"],\"application/x-msterminal\":[\"trm\"],\"application/x-mswrite\":[\"wri\"],\"application/x-netcdf\":[\"nc\",\"cdf\"],\"application/x-ns-proxy-autoconfig\":[\"pac\"],\"application/x-nzb\":[\"nzb\"],\"application/x-perl\":[\"pl\",\"pm\"],\"application/x-pilot\":[\"*prc\",\"*pdb\"],\"application/x-pkcs12\":[\"p12\",\"pfx\"],\"application/x-pkcs7-certificates\":[\"p7b\",\"spc\"],\"application/x-pkcs7-certreqresp\":[\"p7r\"],\"application/x-rar-compressed\":[\"*rar\"],\"application/x-redhat-package-manager\":[\"rpm\"],\"application/x-research-info-systems\":[\"ris\"],\"application/x-sea\":[\"sea\"],\"application/x-sh\":[\"sh\"],\"application/x-shar\":[\"shar\"],\"application/x-shockwave-flash\":[\"swf\"],\"application/x-silverlight-app\":[\"xap\"],\"application/x-sql\":[\"sql\"],\"application/x-stuffit\":[\"sit\"],\"application/x-stuffitx\":[\"sitx\"],\"application/x-subrip\":[\"srt\"],\"application/x-sv4cpio\":[\"sv4cpio\"],\"application/x-sv4crc\":[\"sv4crc\"],\"application/x-t3vm-image\":[\"t3\"],\"application/x-tads\":[\"gam\"],\"application/x-tar\":[\"tar\"],\"application/x-tcl\":[\"tcl\",\"tk\"],\"application/x-tex\":[\"tex\"],\"application/x-tex-tfm\":[\"tfm\"],\"application/x-texinfo\":[\"texinfo\",\"texi\"],\"application/x-tgif\":[\"*obj\"],\"application/x-ustar\":[\"ustar\"],\"application/x-virtualbox-hdd\":[\"hdd\"],\"application/x-virtualbox-ova\":[\"ova\"],\"application/x-virtualbox-ovf\":[\"ovf\"],\"application/x-virtualbox-vbox\":[\"vbox\"],\"application/x-virtualbox-vbox-extpack\":[\"vbox-extpack\"],\"application/x-virtualbox-vdi\":[\"vdi\"],\"application/x-virtualbox-vhd\":[\"vhd\"],\"application/x-virtualbox-vmdk\":[\"vmdk\"],\"application/x-wais-source\":[\"src\"],\"application/x-web-app-manifest+json\":[\"webapp\"],\"application/x-x509-ca-cert\":[\"der\",\"crt\",\"pem\"],\"application/x-xfig\":[\"fig\"],\"application/x-xliff+xml\":[\"*xlf\"],\"application/x-xpinstall\":[\"xpi\"],\"application/x-xz\":[\"xz\"],\"application/x-zmachine\":[\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"],\"audio/vnd.dece.audio\":[\"uva\",\"uvva\"],\"audio/vnd.digital-winds\":[\"eol\"],\"audio/vnd.dra\":[\"dra\"],\"audio/vnd.dts\":[\"dts\"],\"audio/vnd.dts.hd\":[\"dtshd\"],\"audio/vnd.lucent.voice\":[\"lvp\"],\"audio/vnd.ms-playready.media.pya\":[\"pya\"],\"audio/vnd.nuera.ecelp4800\":[\"ecelp4800\"],\"audio/vnd.nuera.ecelp7470\":[\"ecelp7470\"],\"audio/vnd.nuera.ecelp9600\":[\"ecelp9600\"],\"audio/vnd.rip\":[\"rip\"],\"audio/x-aac\":[\"aac\"],\"audio/x-aiff\":[\"aif\",\"aiff\",\"aifc\"],\"audio/x-caf\":[\"caf\"],\"audio/x-flac\":[\"flac\"],\"audio/x-m4a\":[\"*m4a\"],\"audio/x-matroska\":[\"mka\"],\"audio/x-mpegurl\":[\"m3u\"],\"audio/x-ms-wax\":[\"wax\"],\"audio/x-ms-wma\":[\"wma\"],\"audio/x-pn-realaudio\":[\"ram\",\"ra\"],\"audio/x-pn-realaudio-plugin\":[\"rmp\"],\"audio/x-realaudio\":[\"*ra\"],\"audio/x-wav\":[\"*wav\"],\"chemical/x-cdx\":[\"cdx\"],\"chemical/x-cif\":[\"cif\"],\"chemical/x-cmdf\":[\"cmdf\"],\"chemical/x-cml\":[\"cml\"],\"chemical/x-csml\":[\"csml\"],\"chemical/x-xyz\":[\"xyz\"],\"image/prs.btif\":[\"btif\"],\"image/prs.pti\":[\"pti\"],\"image/vnd.adobe.photoshop\":[\"psd\"],\"image/vnd.airzip.accelerator.azv\":[\"azv\"],\"image/vnd.dece.graphic\":[\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"],\"image/vnd.djvu\":[\"djvu\",\"djv\"],\"image/vnd.dvb.subtitle\":[\"*sub\"],\"image/vnd.dwg\":[\"dwg\"],\"image/vnd.dxf\":[\"dxf\"],\"image/vnd.fastbidsheet\":[\"fbs\"],\"image/vnd.fpx\":[\"fpx\"],\"image/vnd.fst\":[\"fst\"],\"image/vnd.fujixerox.edmics-mmr\":[\"mmr\"],\"image/vnd.fujixerox.edmics-rlc\":[\"rlc\"],\"image/vnd.microsoft.icon\":[\"ico\"],\"image/vnd.ms-dds\":[\"dds\"],\"image/vnd.ms-modi\":[\"mdi\"],\"image/vnd.ms-photo\":[\"wdp\"],\"image/vnd.net-fpx\":[\"npx\"],\"image/vnd.pco.b16\":[\"b16\"],\"image/vnd.tencent.tap\":[\"tap\"],\"image/vnd.valve.source.texture\":[\"vtf\"],\"image/vnd.wap.wbmp\":[\"wbmp\"],\"image/vnd.xiff\":[\"xif\"],\"image/vnd.zbrush.pcx\":[\"pcx\"],\"image/x-3ds\":[\"3ds\"],\"image/x-cmu-raster\":[\"ras\"],\"image/x-cmx\":[\"cmx\"],\"image/x-freehand\":[\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"],\"image/x-icon\":[\"*ico\"],\"image/x-jng\":[\"jng\"],\"image/x-mrsid-image\":[\"sid\"],\"image/x-ms-bmp\":[\"*bmp\"],\"image/x-pcx\":[\"*pcx\"],\"image/x-pict\":[\"pic\",\"pct\"],\"image/x-portable-anymap\":[\"pnm\"],\"image/x-portable-bitmap\":[\"pbm\"],\"image/x-portable-graymap\":[\"pgm\"],\"image/x-portable-pixmap\":[\"ppm\"],\"image/x-rgb\":[\"rgb\"],\"image/x-tga\":[\"tga\"],\"image/x-xbitmap\":[\"xbm\"],\"image/x-xpixmap\":[\"xpm\"],\"image/x-xwindowdump\":[\"xwd\"],\"message/vnd.wfa.wsc\":[\"wsc\"],\"model/vnd.collada+xml\":[\"dae\"],\"model/vnd.dwf\":[\"dwf\"],\"model/vnd.gdl\":[\"gdl\"],\"model/vnd.gtw\":[\"gtw\"],\"model/vnd.mts\":[\"mts\"],\"model/vnd.opengex\":[\"ogex\"],\"model/vnd.parasolid.transmit.binary\":[\"x_b\"],\"model/vnd.parasolid.transmit.text\":[\"x_t\"],\"model/vnd.sap.vds\":[\"vds\"],\"model/vnd.usdz+zip\":[\"usdz\"],\"model/vnd.valve.source.compiled-map\":[\"bsp\"],\"model/vnd.vtu\":[\"vtu\"],\"text/prs.lines.tag\":[\"dsc\"],\"text/vnd.curl\":[\"curl\"],\"text/vnd.curl.dcurl\":[\"dcurl\"],\"text/vnd.curl.mcurl\":[\"mcurl\"],\"text/vnd.curl.scurl\":[\"scurl\"],\"text/vnd.dvb.subtitle\":[\"sub\"],\"text/vnd.fly\":[\"fly\"],\"text/vnd.fmi.flexstor\":[\"flx\"],\"text/vnd.graphviz\":[\"gv\"],\"text/vnd.in3d.3dml\":[\"3dml\"],\"text/vnd.in3d.spot\":[\"spot\"],\"text/vnd.sun.j2me.app-descriptor\":[\"jad\"],\"text/vnd.wap.wml\":[\"wml\"],\"text/vnd.wap.wmlscript\":[\"wmls\"],\"text/x-asm\":[\"s\",\"asm\"],\"text/x-c\":[\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"],\"text/x-component\":[\"htc\"],\"text/x-fortran\":[\"f\",\"for\",\"f77\",\"f90\"],\"text/x-handlebars-template\":[\"hbs\"],\"text/x-java-source\":[\"java\"],\"text/x-lua\":[\"lua\"],\"text/x-markdown\":[\"mkd\"],\"text/x-nfo\":[\"nfo\"],\"text/x-opml\":[\"opml\"],\"text/x-org\":[\"*org\"],\"text/x-pascal\":[\"p\",\"pas\"],\"text/x-processing\":[\"pde\"],\"text/x-sass\":[\"sass\"],\"text/x-scss\":[\"scss\"],\"text/x-setext\":[\"etx\"],\"text/x-sfv\":[\"sfv\"],\"text/x-suse-ymp\":[\"ymp\"],\"text/x-uuencode\":[\"uu\"],\"text/x-vcalendar\":[\"vcs\"],\"text/x-vcard\":[\"vcf\"],\"video/vnd.dece.hd\":[\"uvh\",\"uvvh\"],\"video/vnd.dece.mobile\":[\"uvm\",\"uvvm\"],\"video/vnd.dece.pd\":[\"uvp\",\"uvvp\"],\"video/vnd.dece.sd\":[\"uvs\",\"uvvs\"],\"video/vnd.dece.video\":[\"uvv\",\"uvvv\"],\"video/vnd.dvb.file\":[\"dvb\"],\"video/vnd.fvt\":[\"fvt\"],\"video/vnd.mpegurl\":[\"mxu\",\"m4u\"],\"video/vnd.ms-playready.media.pyv\":[\"pyv\"],\"video/vnd.uvvu.mp4\":[\"uvu\",\"uvvu\"],\"video/vnd.vivo\":[\"viv\"],\"video/x-f4v\":[\"f4v\"],\"video/x-fli\":[\"fli\"],\"video/x-flv\":[\"flv\"],\"video/x-m4v\":[\"m4v\"],\"video/x-matroska\":[\"mkv\",\"mk3d\",\"mks\"],\"video/x-mng\":[\"mng\"],\"video/x-ms-asf\":[\"asf\",\"asx\"],\"video/x-ms-vob\":[\"vob\"],\"video/x-ms-wm\":[\"wm\"],\"video/x-ms-wmv\":[\"wmv\"],\"video/x-ms-wmx\":[\"wmx\"],\"video/x-ms-wvx\":[\"wvx\"],\"video/x-msvideo\":[\"avi\"],\"video/x-sgi-movie\":[\"movie\"],\"video/x-smv\":[\"smv\"],\"x-conference/x-cooltalk\":[\"ice\"]};", "'use strict';\n\nlet Mime = require('./Mime');\nmodule.exports = new Mime(require('./types/standard'), require('./types/other'));\n", null, null, null, null, null, null, "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport type Pyodide from 'pyodide';\n\nimport type { DriveFS } from '@jupyterlite/contents';\n\nimport type { IPyodideWorkerKernel } from './tokens';\n\nexport class PyodideRemoteKernel {\n constructor() {\n this._initialized = new Promise((resolve, reject) => {\n this._initializer = { resolve, reject };\n });\n }\n\n /**\n * Accept the URLs from the host\n **/\n async initialize(options: IPyodideWorkerKernel.IOptions): Promise<void> {\n this._options = options;\n\n if (options.location.includes(':')) {\n const parts = options.location.split(':');\n this._driveName = parts[0];\n this._localPath = parts[1];\n } else {\n this._driveName = '';\n this._localPath = options.location;\n }\n\n await this.initRuntime(options);\n await this.initFilesystem(options);\n await this.initPackageManager(options);\n await this.initKernel(options);\n await this.initGlobals(options);\n this._initializer?.resolve();\n }\n\n protected async initRuntime(options: IPyodideWorkerKernel.IOptions): Promise<void> {\n const { pyodideUrl, indexUrl } = options;\n let loadPyodide: typeof Pyodide.loadPyodide;\n if (pyodideUrl.endsWith('.mjs')) {\n // note: this does not work at all in firefox\n const pyodideModule: typeof Pyodide = await import(\n /* webpackIgnore: true */ pyodideUrl\n );\n loadPyodide = pyodideModule.loadPyodide;\n } else {\n importScripts(pyodideUrl);\n loadPyodide = (self as any).loadPyodide;\n }\n this._pyodide = await loadPyodide({ indexURL: indexUrl });\n }\n\n protected async initPackageManager(\n options: IPyodideWorkerKernel.IOptions,\n ): Promise<void> {\n if (!this._options) {\n throw new Error('Uninitialized');\n }\n\n const { pipliteWheelUrl, disablePyPIFallback, pipliteUrls } = this._options;\n\n await this._pyodide.loadPackage(['micropip']);\n\n // get piplite early enough to impact pyodide dependencies\n await this._pyodide.runPythonAsync(`\n import micropip\n await micropip.install('${pipliteWheelUrl}', keep_going=True)\n import piplite.piplite\n piplite.piplite._PIPLITE_DISABLE_PYPI = ${disablePyPIFallback ? 'True' : 'False'}\n piplite.piplite._PIPLITE_URLS = ${JSON.stringify(pipliteUrls)}\n `);\n }\n\n protected async initKernel(options: IPyodideWorkerKernel.IOptions): Promise<void> {\n // from this point forward, only use piplite (but not %pip)\n await this._pyodide.runPythonAsync(`\n await piplite.install(['sqlite3'], keep_going=True);\n await piplite.install(['ipykernel'], keep_going=True);\n await piplite.install(['comm'], keep_going=True);\n await piplite.install(['pyodide_kernel'], keep_going=True);\n await piplite.install(['ipython'], keep_going=True);\n import pyodide_kernel\n `);\n // cd to the kernel location\n if (options.mountDrive && this._localPath) {\n await this._pyodide.runPythonAsync(`\n import os;\n os.chdir(\"${this._localPath}\");\n `);\n }\n }\n\n protected async initGlobals(options: IPyodideWorkerKernel.IOptions): Promise<void> {\n const { globals } = this._pyodide;\n this._kernel = globals.get('pyodide_kernel').kernel_instance.copy();\n this._stdout_stream = globals.get('pyodide_kernel').stdout_stream.copy();\n this._stderr_stream = globals.get('pyodide_kernel').stderr_stream.copy();\n this._interpreter = this._kernel.interpreter.copy();\n this._interpreter.send_comm = this.sendComm.bind(this);\n }\n\n /**\n * Setup custom Emscripten FileSystem\n */\n protected async initFilesystem(\n options: IPyodideWorkerKernel.IOptions,\n ): Promise<void> {\n if (options.mountDrive) {\n const mountpoint = '/drive';\n const { FS, PATH, ERRNO_CODES } = this._pyodide;\n const { baseUrl } = options;\n const { DriveFS } = await import('@jupyterlite/contents');\n\n const driveFS = new DriveFS({\n FS,\n PATH,\n ERRNO_CODES,\n baseUrl,\n driveName: this._driveName,\n mountpoint,\n });\n FS.mkdir(mountpoint);\n FS.mount(driveFS, {}, mountpoint);\n FS.chdir(mountpoint);\n this._driveFS = driveFS;\n }\n }\n\n /**\n * Recursively convert a Map to a JavaScript object\n * @param obj A Map, Array, or other object to convert\n */\n mapToObject(obj: any) {\n const out: any = obj instanceof Array ? [] : {};\n obj.forEach((value: any, key: string) => {\n out[key] =\n value instanceof Map || value instanceof Array\n ? this.mapToObject(value)\n : value;\n });\n return out;\n }\n\n /**\n * Format the response from the Pyodide evaluation.\n *\n * @param res The result object from the Pyodide evaluation\n */\n formatResult(res: any): any {\n if (!(res instanceof this._pyodide.ffi.PyProxy)) {\n return res;\n }\n // TODO: this is a bit brittle\n const m = res.toJs();\n const results = this.mapToObject(m);\n return results;\n }\n\n /**\n * Makes sure pyodide is ready before continuing, and cache the parent message.\n */\n async setup(parent: any): Promise<void> {\n await this._initialized;\n this._kernel._parent_header = this._pyodide.toPy(parent);\n }\n\n /**\n * Execute code with the interpreter.\n *\n * @param content The incoming message with the code to execute.\n */\n async execute(content: any, parent: any) {\n await this.setup(parent);\n\n const publishExecutionResult = (\n prompt_count: any,\n data: any,\n metadata: any,\n ): void => {\n const bundle = {\n execution_count: prompt_count,\n data: this.formatResult(data),\n metadata: this.formatResult(metadata),\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'execute_result',\n });\n };\n\n const publishExecutionError = (ename: any, evalue: any, traceback: any): void => {\n const bundle = {\n ename: ename,\n evalue: evalue,\n traceback: traceback,\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'execute_error',\n });\n };\n\n const clearOutputCallback = (wait: boolean): void => {\n const bundle = {\n wait: this.formatResult(wait),\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'clear_output',\n });\n };\n\n const displayDataCallback = (data: any, metadata: any, transient: any): void => {\n const bundle = {\n data: this.formatResult(data),\n metadata: this.formatResult(metadata),\n transient: this.formatResult(transient),\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'display_data',\n });\n };\n\n const updateDisplayDataCallback = (\n data: any,\n metadata: any,\n transient: any,\n ): void => {\n const bundle = {\n data: this.formatResult(data),\n metadata: this.formatResult(metadata),\n transient: this.formatResult(transient),\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'update_display_data',\n });\n };\n\n const publishStreamCallback = (name: any, text: any): void => {\n const bundle = {\n name: this.formatResult(name),\n text: this.formatResult(text),\n };\n postMessage({\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n bundle,\n type: 'stream',\n });\n };\n\n this._stdout_stream.publish_stream_callback = publishStreamCallback;\n this._stderr_stream.publish_stream_callback = publishStreamCallback;\n this._interpreter.display_pub.clear_output_callback = clearOutputCallback;\n this._interpreter.display_pub.display_data_callback = displayDataCallback;\n this._interpreter.display_pub.update_display_data_callback =\n updateDisplayDataCallback;\n this._interpreter.displayhook.publish_execution_result = publishExecutionResult;\n this._interpreter.input = this.input.bind(this);\n this._interpreter.getpass = this.getpass.bind(this);\n\n const res = await this._kernel.run(content.code);\n const results = this.formatResult(res);\n\n if (results['status'] === 'error') {\n publishExecutionError(results['ename'], results['evalue'], results['traceback']);\n }\n\n return results;\n }\n\n /**\n * Complete the code submitted by a user.\n *\n * @param content The incoming message with the code to complete.\n */\n async complete(content: any, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.complete(content.code, content.cursor_pos);\n const results = this.formatResult(res);\n return results;\n }\n\n /**\n * Inspect the code submitted by a user.\n *\n * @param content The incoming message with the code to inspect.\n */\n async inspect(\n content: { code: string; cursor_pos: number; detail_level: 0 | 1 },\n parent: any,\n ) {\n await this.setup(parent);\n\n const res = this._kernel.inspect(\n content.code,\n content.cursor_pos,\n content.detail_level,\n );\n const results = this.formatResult(res);\n return results;\n }\n\n /**\n * Check code for completeness submitted by a user.\n *\n * @param content The incoming message with the code to check.\n */\n async isComplete(content: { code: string }, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.is_complete(content.code);\n const results = this.formatResult(res);\n return results;\n }\n\n /**\n * Respond to the commInfoRequest.\n *\n * @param content The incoming message with the comm target name.\n */\n async commInfo(content: any, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.comm_info(content.target_name);\n const results = this.formatResult(res);\n\n return {\n comms: results,\n status: 'ok',\n };\n }\n\n /**\n * Respond to the commOpen.\n *\n * @param content The incoming message with the comm open.\n */\n async commOpen(content: any, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.comm_manager.comm_open(\n this._pyodide.toPy(null),\n this._pyodide.toPy(null),\n this._pyodide.toPy(content),\n );\n const results = this.formatResult(res);\n\n return results;\n }\n\n /**\n * Respond to the commMsg.\n *\n * @param content The incoming message with the comm msg.\n */\n async commMsg(content: any, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.comm_manager.comm_msg(\n this._pyodide.toPy(null),\n this._pyodide.toPy(null),\n this._pyodide.toPy(content),\n );\n const results = this.formatResult(res);\n\n return results;\n }\n\n /**\n * Respond to the commClose.\n *\n * @param content The incoming message with the comm close.\n */\n async commClose(content: any, parent: any) {\n await this.setup(parent);\n\n const res = this._kernel.comm_manager.comm_close(\n this._pyodide.toPy(null),\n this._pyodide.toPy(null),\n this._pyodide.toPy(content),\n );\n const results = this.formatResult(res);\n\n return results;\n }\n\n /**\n * Resolve the input request by getting back the reply from the main thread\n *\n * @param content The incoming message with the reply\n */\n async inputReply(content: any, parent: any) {\n await this.setup(parent);\n\n this._resolveInputReply(content);\n }\n\n /**\n * Send a input request to the front-end.\n *\n * @param prompt the text to show at the prompt\n * @param password Is the request for a password?\n */\n async sendInputRequest(prompt: string, password: boolean) {\n const content = {\n prompt,\n password,\n };\n postMessage({\n type: 'input_request',\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n content,\n });\n }\n\n async getpass(prompt: string) {\n prompt = typeof prompt === 'undefined' ? '' : prompt;\n await this.sendInputRequest(prompt, true);\n const replyPromise = new Promise((resolve) => {\n this._resolveInputReply = resolve;\n });\n const result: any = await replyPromise;\n return result['value'];\n }\n\n async input(prompt: string) {\n prompt = typeof prompt === 'undefined' ? '' : prompt;\n await this.sendInputRequest(prompt, false);\n const replyPromise = new Promise((resolve) => {\n this._resolveInputReply = resolve;\n });\n const result: any = await replyPromise;\n return result['value'];\n }\n\n /**\n * Send a comm message to the front-end.\n *\n * @param type The type of the comm message.\n * @param content The content.\n * @param metadata The metadata.\n * @param ident The ident.\n * @param buffers The binary buffers.\n */\n async sendComm(type: string, content: any, metadata: any, ident: any, buffers: any) {\n postMessage({\n type: type,\n content: this.formatResult(content),\n metadata: this.formatResult(metadata),\n ident: this.formatResult(ident),\n buffers: this.formatResult(buffers),\n parentHeader: this.formatResult(this._kernel._parent_header)['header'],\n });\n }\n\n /**\n * Initialization options.\n */\n protected _options: IPyodideWorkerKernel.IOptions | null = null;\n /**\n * A promise that resolves when all initiaization is complete.\n */\n protected _initialized: Promise<void>;\n private _initializer: {\n reject: () => void;\n resolve: () => void;\n } | null = null;\n protected _pyodide: Pyodide.PyodideInterface = null as any;\n /** TODO: real typing */\n protected _localPath = '';\n protected _driveName = '';\n protected _kernel: any;\n protected _interpreter: any;\n protected _stdout_stream: any;\n protected _stderr_stream: any;\n protected _resolveInputReply: any;\n protected _driveFS: DriveFS | null = null;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["ArrayExt", "firstIndexOf", "array", "value", "start", "stop", "n", "span", "i", "j", "lastIndexOf", "findFirstIndex", "fn", "findLastIndex", "d", "findFirstValue", "index", "findLastValue", "lowerBound", "begin", "half", "middle", "upperBound", "shallowEqual", "a", "b", "slice", "options", "step", "length", "result", "move", "fromIndex", "toIndex", "reverse", "rotate", "delta", "pivot", "fill", "insert", "removeAt", "removeFirstOf", "removeLastOf", "removeAllOf", "count", "removeFirstWhere", "removeLastWhere", "removeAllWhere", "chain", "objects", "object", "empty", "enumerate", "filter", "find", "findIndex", "min", "max", "minmax", "vmin", "vmax", "toArray", "toObject", "key", "each", "every", "some", "map", "range", "Private", "rangeLength", "reduce", "initial", "it", "first", "second", "accumulator", "next", "repeat", "once", "retro", "topologicSort", "edges", "sorted", "visited", "graph", "edge", "addEdge", "k", "visit", "fromNode", "toNode", "children", "node", "child", "stride", "StringExt", "findIndices", "source", "query", "indices", "matchSumOfSquares", "score", "matchSumOfDeltas", "last", "highlight", "cmp", "take", "item", "zip", "iters", "obj", "tuple", "JSONExt", "isPrimitive", "value", "isArray", "isObject", "deepEqual", "first", "second", "a1", "a2", "deepArrayEqual", "deepObjectEqual", "deepCopy", "deepArrayCopy", "deepObjectCopy", "i", "n", "key", "firstValue", "secondValue", "result", "subvalue", "MimeData", "mime", "data", "PromiseDelegate", "resolve", "reject", "reason", "Token", "name", "description", "fallbackRandomValues", "buffer", "Random", "crypto", "uuid4Factory", "getRandomValues", "bytes", "lut", "UUID", "Signal", "sender", "slot", "thisArg", "Private", "args", "disconnectBetween", "receiver", "disconnectSender", "disconnectReceiver", "disconnectAll", "object", "clearData", "getExceptionHandler", "setExceptionHandler", "handler", "old", "Stream", "PromiseDelegate", "pending", "next", "err", "connect", "signal", "receivers", "receiversForSender", "findConnection", "senders", "sendersForReceiver", "connection", "disconnect", "scheduleCleanup", "emit", "i", "n", "invokeSlot", "dirtySet", "schedule", "connections", "find", "array", "cleanupDirtySet", "cleanupConnections", "ArrayExt", "isDeadConnection", "signaling_1", "ActivityMonitor", "options", "value", "sender", "args", "exports", "MarkdownCodeBlocks", "markdownExtensions", "MarkdownCodeBlock", "startLine", "isMarkdown", "extension", "findMarkdownCodeBlocks", "text", "lines", "codeBlocks", "currentBlock", "lineIndex", "line", "lineContainsMarker", "constructingBlock", "firstIndex", "lastIndex", "exports", "require_minimist", "__commonJSMin", "exports", "module", "hasKey", "obj", "keys", "o", "key", "isNumber", "x", "isConstructorOrProto", "args", "opts", "flags", "aliases", "aliasIsBoolean", "y", "k", "defaults", "argv", "argDefined", "arg", "setKey", "value", "i", "lastKey", "setArg", "val", "notFlags", "next", "m", "letters", "broken", "j", "require_path_browserify", "__commonJSMin", "exports", "module", "assertPath", "path", "normalizeStringPosix", "allowAboveRoot", "res", "lastSegmentLength", "lastSlash", "dots", "code", "i", "lastSlashIndex", "_format", "sep", "pathObject", "dir", "base", "posix", "resolvedPath", "resolvedAbsolute", "cwd", "isAbsolute", "trailingSeparator", "joined", "arg", "from", "to", "fromStart", "fromEnd", "fromLen", "toStart", "toEnd", "toLen", "length", "lastCommonSep", "fromCode", "toCode", "out", "hasRoot", "end", "matchedSlash", "ext", "start", "extIdx", "firstNonSlashEnd", "startDot", "startPart", "preDotState", "ret", "require_requires_port", "__commonJSMin", "exports", "module", "port", "protocol", "require_querystringify", "__commonJSMin", "exports", "has", "undef", "decode", "input", "encode", "querystring", "query", "parser", "result", "part", "key", "value", "querystringify", "obj", "prefix", "pairs", "require_url_parse", "__commonJSMin", "exports", "module", "required", "qs", "controlOrWhitespace", "CRHTLF", "slashes", "port", "protocolre", "windowsDriveLetter", "trimLeft", "str", "rules", "address", "url", "isSpecial", "ignore", "lolcation", "loc", "globalVar", "location", "finaldestination", "type", "key", "Url", "scheme", "extractProtocol", "match", "protocol", "forwardSlashes", "otherSlashes", "slashesCount", "rest", "resolve", "relative", "base", "path", "last", "unshift", "up", "parser", "extracted", "parse", "instruction", "index", "instructions", "i", "set", "part", "value", "fn", "char", "ins", "toString", "stringify", "query", "host", "result", "path_1", "url_parse_1", "__importDefault", "URLExt", "parse", "url", "a", "getHostName", "normalize", "join", "parts", "u", "isSchemaLess", "prefix", "path", "encodeParts", "objectToQueryString", "value", "keys", "key", "content", "queryStringToObject", "acc", "val", "isLocal", "protocol", "exports", "el", "e", "key", "name", "value", "last", "options", "path", "mode", "_a", "workspace", "_b", "labOrDoc", "_c", "treePath", "_d", "baseUrl", "wsUrl", "format", "download", "notebookPath", "url", "notebookVersion", "val", "Extension", "populate", "raw", "error", "isDeferred", "id", "separatorIndex", "extName", "isDisabled", "path_1", "PathExt", "join", "paths", "path", "removeSlash", "basename", "ext", "dirname", "dir", "extname", "normalize", "resolve", "parts", "relative", "from", "to", "normalizeExtension", "extension", "exports", "coreutils_1", "signalToPromise", "signal", "timeout", "waitForSignal", "cleanup", "slot", "sender", "args", "exports", "Text", "HAS_SURROGATES", "jsIndexToCharIndex", "jsIdx", "text", "charIdx", "i", "charCode", "nextCharCode", "charIndexToJsIndex", "camelCase", "str", "upper", "match", "p1", "p2", "titleCase", "word", "exports", "UNITS", "Time", "formatHuman", "value", "lang", "formatter", "delta", "unit", "amount", "format", "exports", "__exportStar", "exports", "require_Mime", "__commonJSMin", "exports", "module", "Mime", "i", "typeMap", "force", "type", "extensions", "t", "ext", "path", "last", "hasPath", "require_standard", "__commonJSMin", "exports", "module", "require_other", "__commonJSMin", "exports", "module", "require_mime", "__commonJSMin", "exports", "module", "Mime", "import_coreutils", "import_mime", "IContents", "MIME", "FILE", "IBroadcastChannelWrapper", "init_tokens", "__esmMin", "TYPES", "getType", "ext", "defaultType", "fileType", "fileExt", "mime", "hasFormat", "fileFormat", "import_coreutils", "DEFAULT_STORAGE_NAME", "N_CHECKPOINTS", "Contents", "Private", "init_contents", "__esmMin", "init_tokens", "options", "data", "byte", "driver", "path", "_a", "type", "_b", "created", "dirname", "basename", "extname", "item", "name", "file", "counter", "MIME", "ext", "_c", "mimetype", "FILE", "format", "key", "toDir", "toPath", "storage", "serverItem", "model", "contentMap", "serverContents", "content", "oldLocalPath", "newLocalPath", "modified", "newFile", "child", "chunk", "chunked", "originalContent", "lastChunk", "slashed", "toDelete", "checkpoints", "copies", "id", "checkpointID", "newContent", "escaped", "fileUrl", "response", "contentText", "contentBytes", "contentBuffer", "apiURL", "json", "err", "counters", "DIR_MODE", "FILE_MODE", "SEEK_CUR", "SEEK_END", "init_emscripten", "__esmMin", "DRIVE_SEPARATOR", "DRIVE_API_PATH", "BLOCK_SIZE", "encoder", "decoder", "flagNeedsWrite", "DriveFSEmscriptenStreamOps", "DriveFSEmscriptenNodeOps", "ContentsAPI", "DriveFS", "init_drivefs", "__esmMin", "fs", "stream", "path", "flags", "parsedFlags", "needsWrite", "buffer", "offset", "length", "position", "size", "_a", "oldData", "whence", "node", "attr", "key", "value", "parent", "name", "result", "mode", "dev", "oldNode", "newDir", "newName", "oldPath", "baseUrl", "driveName", "mountpoint", "FS", "ERRNO_CODES", "data", "xhr", "e", "newPath", "dirlist", "response", "serializedContent", "format", "binString", "len", "i", "binary", "stats", "options", "mount", "parts", "currentNode", "import_coreutils", "BroadcastChannelWrapper", "init_broadcast", "__esmMin", "init_drivefs", "options", "event", "_contents", "request", "path", "response", "model", "subcontent", "BLOCK_SIZE", "DRIVE_API_PATH", "lib_exports", "__export", "BLOCK_SIZE", "BroadcastChannelWrapper", "Contents", "ContentsAPI", "DIR_MODE", "DRIVE_API_PATH", "DRIVE_SEPARATOR", "DriveFS", "DriveFSEmscriptenNodeOps", "DriveFSEmscriptenStreamOps", "FILE", "FILE_MODE", "IBroadcastChannelWrapper", "IContents", "MIME", "SEEK_CUR", "SEEK_END", "init_lib", "__esmMin", "init_contents", "init_drivefs", "init_tokens", "init_broadcast", "init_emscripten", "PyodideRemoteKernel", "resolve", "reject", "options", "_a", "parts", "pyodideUrl", "indexUrl", "loadPyodide", "pipliteWheelUrl", "disablePyPIFallback", "pipliteUrls", "globals", "mountpoint", "FS", "PATH", "ERRNO_CODES", "baseUrl", "DriveFS", "driveFS", "obj", "out", "value", "key", "res", "m", "parent", "content", "publishExecutionResult", "prompt_count", "data", "metadata", "bundle", "publishExecutionError", "ename", "evalue", "traceback", "clearOutputCallback", "wait", "displayDataCallback", "transient", "updateDisplayDataCallback", "publishStreamCallback", "name", "text", "results", "prompt", "password", "type", "ident", "buffers"]
7
7
  }