{"version":3,"file":"component---content-blog-01-introductory-post-index-mdx-d8346b2f1eabe6ddaaab.js","mappings":"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","sources":["webpack://the-good-code/./src/components/ui/atoms/Title.tsx","webpack://the-good-code/./src/utils/calcReadingTime.ts","webpack://the-good-code/./node_modules/@code-hike/classer/dist/index.esm.js","webpack://the-good-code/./node_modules/server-side-media-queries-for-react/dist/ssmq.module.js","webpack://the-good-code/./node_modules/@code-hike/scroller/dist/index.esm.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-client/esm/utils.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-client/esm/file-resolver-protocol.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-client/esm/iframe-protocol.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-client/esm/client.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/templates/index.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/templates/react.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/templates/vue.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/templates/vanilla.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/templates/vue3.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/templates/angular.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/utils/sandpackUtils.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/utils/stringUtils.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/contexts/sandpackContext.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/hooks/useSandpack.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/hooks/useCodeSandboxLink.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/node_modules/@code-hike/classer/dist/index.esm.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/hooks/useErrorMessage.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/common/ErrorOverlay.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/hooks/useLoadingOverlayState.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/themes/index.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/contexts/themeContext.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/icons/index.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/common/OpenInCodeSandboxButton.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/hooks/useSandpackTheme.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/common/LoadingOverlay.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/common/Stack.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/components/Navigator/index.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/components/Navigator/utils.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/components/Preview/RefreshButton.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/hooks/useSandpackNavigation.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-react/dist/esm/components/Preview/index.js","webpack://the-good-code/./node_modules/@code-hike/mini-frame/dist/index.esm.js","webpack://the-good-code/./node_modules/@code-hike/utils/dist/index.esm.js","webpack://the-good-code/./node_modules/shiki/dist/index.esm.js","webpack://the-good-code/./node_modules/@code-hike/smooth-code/dist/index.esm.js","webpack://the-good-code/./node_modules/@code-hike/mini-terminal/dist/index.esm.js","webpack://the-good-code/./node_modules/use-spring/dist/use-spring.esm.js","webpack://the-good-code/./node_modules/@code-hike/mini-editor/dist/index.esm.js","webpack://the-good-code/./node_modules/@code-hike/mini-browser/dist/index.esm.js","webpack://the-good-code/./node_modules/@code-hike/scrollycoding/dist/index.esm.js","webpack://the-good-code/./src/components/mdx/CustomLink.tsx","webpack://the-good-code/./src/components/page/ReadingTime.tsx","webpack://the-good-code/./src/components/mdx/CodeBlock.tsx","webpack://the-good-code/./src/components/mdx/CodeHike.tsx","webpack://the-good-code/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://the-good-code/./node_modules/date-fns/esm/isDate/index.js","webpack://the-good-code/./node_modules/date-fns/esm/toDate/index.js","webpack://the-good-code/./node_modules/date-fns/esm/isValid/index.js","webpack://the-good-code/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://the-good-code/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://the-good-code/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://the-good-code/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://the-good-code/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://the-good-code/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://the-good-code/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://the-good-code/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://the-good-code/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://the-good-code/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://the-good-code/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://the-good-code/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://the-good-code/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://the-good-code/./node_modules/date-fns/esm/format/index.js","webpack://the-good-code/./node_modules/@chakra-ui/slider/dist/chakra-ui-slider.esm.js","webpack://the-good-code/./src/components/ui/molecules/FontSizeSlider.tsx","webpack://the-good-code/./src/components/mdx/MdxLayout.tsx","webpack://the-good-code/./content/blog/01-introductory-post/index.mdx","webpack://the-good-code/./node_modules/gatsby/node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://the-good-code/./node_modules/gatsby/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://the-good-code/./node_modules/gatsby/node_modules/@babel/runtime/helpers/createClass.js","webpack://the-good-code/./node_modules/@chakra-ui/button/dist/chakra-ui-button.esm.js","webpack://the-good-code/./node_modules/@codesandbox/sandpack-client/node_modules/codesandbox-import-utils/lib/create-sandbox/templates.js","webpack://the-good-code/./node_modules/codesandbox-import-utils/lib/api/define.js","webpack://the-good-code/./node_modules/diff/dist/diff.js","webpack://the-good-code/./node_modules/lodash.isequal/index.js","webpack://the-good-code/./node_modules/lz-string/libs/lz-string.js","webpack://the-good-code/./node_modules/onigasm/lib/OnigRegExp.js","webpack://the-good-code/./node_modules/onigasm/lib/OnigScanner.js","webpack://the-good-code/./node_modules/onigasm/lib/OnigString.js","webpack://the-good-code/./node_modules/onigasm/lib/index.js","webpack://the-good-code/./node_modules/onigasm/lib/onigasm.js","webpack://the-good-code/./node_modules/onigasm/lib/onigasmH.js","webpack://the-good-code/./node_modules/onigasm/node_modules/lru-cache/index.js","webpack://the-good-code/./node_modules/onigasm/node_modules/yallist/iterator.js","webpack://the-good-code/./node_modules/onigasm/node_modules/yallist/yallist.js","webpack://the-good-code/./node_modules/prismjs/components/prism-jsx.min.js","webpack://the-good-code/./node_modules/prismjs/prism.js","webpack://the-good-code/./node_modules/react-icons/lib/esm/iconsManifest.js","webpack://the-good-code/./node_modules/react-icons/lib/esm/iconContext.js","webpack://the-good-code/./node_modules/react-icons/lib/esm/iconBase.js","webpack://the-good-code/./node_modules/vscode-textmate/release/main.js","webpack://the-good-code/./node_modules/gatsby/node_modules/core-js/internals/string-trim-end.js","webpack://the-good-code/./node_modules/gatsby/node_modules/core-js/internals/string-trim-forced.js","webpack://the-good-code/./node_modules/gatsby/node_modules/core-js/internals/string-trim.js","webpack://the-good-code/./node_modules/gatsby/node_modules/core-js/internals/to-string.js","webpack://the-good-code/./node_modules/gatsby/node_modules/core-js/internals/whitespaces.js","webpack://the-good-code/./node_modules/gatsby/node_modules/core-js/modules/es.string.trim-end.js","webpack://the-good-code/./node_modules/gatsby/node_modules/core-js/modules/es.string.trim-right.js"],"sourcesContent":["import {Heading, useColorModeValue} from \"@chakra-ui/react\";\nimport {Link as GatsbyLink} from \"gatsby\";\nimport React from \"react\";\n\nconst Title = () => {\n return (\n \n \n The Good Code
\n
\n
\n )\n}\n\nexport default Title\n","export function calcReadingTime(mdxBody: string): number {\n const text = mdxBody.match(/mdx\\(\"p\", null, \"(.+)\"/g)?.map(match => match.replace('mdx(\"p\", null, \"', ''))\n const wordCount = text ? text.reduce((prev, curr) => prev + curr.split(' ').length, 0) : 0\n\n console.log('wordCOuntr', wordCount);\n\n return Math.ceil((wordCount / 130));\n}","import React, { createContext, useContext, useMemo, useCallback } from 'react';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nvar ClasserContext = createContext({});\n\nfunction ClasserProvider(_a) {\n var classes = _a.classes,\n children = _a.children;\n var outer = useContext(ClasserContext);\n var mixed = useMerge(outer, classes);\n return React.createElement(ClasserContext.Provider, {\n value: mixed,\n children: children\n });\n}\n\nfunction useClasser(libClassPrefix, innerClasses) {\n var outerClasses = useContext(ClasserContext);\n var classes = useMerge(outerClasses, innerClasses);\n return useCallback(getClasser(libClassPrefix, classes), [libClassPrefix, classes]);\n}\n\nfunction getClasser(libClassPrefix, classes) {\n return function classer() {\n var libClassSuffixList = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n libClassSuffixList[_i] = arguments[_i];\n }\n\n var libClassList = libClassSuffixList.map(function (libClassSuffix) {\n return libClassPrefix + (libClassPrefix && libClassSuffix ? \"-\" : \"\") + libClassSuffix;\n });\n var outputList = libClassList.slice();\n libClassList.forEach(function (libClass) {\n if (libClass in classes) {\n outputList.push(classes[libClass]);\n }\n });\n return outputList.join(\" \");\n };\n}\n\nfunction useMerge(outer, inner) {\n return useMemo(function () {\n return _assign(_assign({}, outer), inner);\n }, [outer, inner]);\n}\n\nexport { ClasserProvider, useClasser };","import e from \"react\";\nvar n = 0;\n\nfunction r(r) {\n var s = r.match,\n c = s.map(function (e) {\n return e[0];\n }),\n i = function (n) {\n var r = \"undefined\" == typeof window,\n t = n.slice(0, -1);\n \"default\" !== n[n.length - 1] && console.warn(\"last media query should be 'default'\");\n var a = e.useState(0)[1],\n l = r ? [] : t.map(function (e) {\n return window.matchMedia(e);\n });\n e.useEffect(function () {\n var e = function e() {\n return a(function (e) {\n return e + 1;\n });\n };\n\n return l.forEach(function (n) {\n return n.addListener(e);\n }), function () {\n return l.forEach(function (n) {\n return n.removeListener(e);\n });\n };\n }, []);\n var s = l.findIndex(function (e) {\n return e.matches;\n });\n return {\n isServer: r,\n matchedIndex: s < 0 ? n.length - 1 : s\n };\n }(c),\n u = i.isServer,\n o = i.matchedIndex,\n m = u ? \"ssmq-\" + n++ : \"\";\n\n return u ? e.createElement(e.Fragment, null, e.createElement(\"style\", {\n className: m,\n dangerouslySetInnerHTML: {\n __html: t(c, m)\n }\n }), s.map(function (n) {\n var r = n[0],\n t = n[1];\n return e.createElement(\"div\", {\n key: r,\n className: m + \" \" + l(r)\n }, t);\n }), e.createElement(\"script\", {\n className: m,\n dangerouslySetInnerHTML: {\n __html: a(s, m)\n }\n })) : e.createElement(e.Fragment, null, e.createElement(\"div\", null, s[o][1]));\n}\n\nfunction t(e, n) {\n return e.slice().reverse().map(function (e) {\n var r = \".\" + n + \".\" + l(e) + \"{display:block}\",\n t = \".\" + n + \":not(.\" + l(e) + \"){display: none;}\";\n return \"default\" === e ? \"\" + r + t : \"@media \" + e + \"{\" + r + t + \"}\";\n }).join(\"\\n\");\n}\n\nfunction a(e, n) {\n var r = e.map(function (e) {\n return e[0];\n }),\n t = r.map(l);\n return \"(function() {\\n var qs = \" + JSON.stringify(r) + \";\\n var clss = \" + JSON.stringify(t) + ';\\n var mainCls = \"' + n + '\";\\n\\n var scrEls = document.getElementsByTagName(\"script\");\\n var scrEl = scrEls[scrEls.length - 1];\\n var parent = scrEl.parentNode;\\n\\n var el = null;\\n for (var i = 0; i < qs.length - 1; i++) {\\n if (window.matchMedia(qs[i]).matches) {\\n el = parent.querySelector(\":scope > .\" + mainCls + \".\" + clss[i]);\\n break;\\n }\\n }\\n if (!el) {\\n var defaultClass = clss.pop();\\n el = parent.querySelector(\":scope > .\" + mainCls + \".\" + defaultClass);\\n }\\n el.removeAttribute(\"class\");\\n\\n parent.querySelectorAll(\":scope > .\" + mainCls).forEach(function (e) {\\n parent.removeChild(e);\\n });\\n})();';\n}\n\nfunction l(e) {\n return \"ssmq-\" + e.replace(/[!\\\"#$%&'\\(\\)\\*\\+,\\.\\/:;<=>\\?\\@\\[\\\\\\]\\^`\\{\\|\\}~\\s]/g, \"\").toLowerCase();\n}\n\nexport { r as Swap };","import React from 'react';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nfunction debugEntries(entries) {\n entries.forEach(showEntry);\n}\n\nfunction showEntry(entry) {\n var _a;\n\n var rootHeight = ((_a = entry.rootBounds) === null || _a === void 0 ? void 0 : _a.height) || 0;\n addFlashingRect(entry.rootBounds, {\n border: Math.min(10, rootHeight / 2) + \"px solid \" + iodOptions.rootColor,\n overflow: \"hidden\",\n boxSizing: \"border-box\"\n });\n addFlashingRect(entry.boundingClientRect, {\n border: Math.min(10, entry.boundingClientRect.height / 2) + \"px solid \" + (entry.isIntersecting ? iodOptions.enterColor : iodOptions.exitColor),\n overflow: \"hidden\",\n boxSizing: \"border-box\"\n });\n addFlashingRect(entry.intersectionRect, {\n backgroundColor: iodOptions.interColor,\n zIndex: 2\n });\n}\n\nfunction addFlashingRect(bounds, style) {\n if (style === void 0) {\n style = {};\n }\n\n var width = bounds.width,\n left = bounds.left,\n height = bounds.height,\n top = bounds.top;\n var div = document.createElement(\"div\");\n div.style.position = \"fixed\";\n div.style.width = width + \"px\";\n div.style.left = left + \"px\";\n div.style.top = top + \"px\";\n div.style.height = height + \"px\";\n div.style.pointerEvents = \"none\";\n div.style.transition = \"opacity 2s ease-in\";\n Object.assign(div.style, style);\n requestAnimationFrame(function () {\n return requestAnimationFrame(function () {\n div.style.opacity = \"0\";\n });\n });\n div.addEventListener(\"transitionend\", function () {\n document.body.removeChild(div);\n });\n document.body.appendChild(div);\n return div;\n}\n\nvar iodOptions = {\n rootColor: \"#9428AB\",\n enterColor: \"#B35C00\",\n exitColor: \"#035570\",\n interColor: \"#9CAF00BB\"\n};\nvar useLayoutEffect$1 = typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nfunction useWindowHeight() {\n var isClient = typeof window === \"object\";\n\n function getHeight() {\n return isClient ? document.documentElement.clientHeight : undefined;\n }\n\n var _a = __read(React.useState(getHeight), 2),\n windowHeight = _a[0],\n setWindowHeight = _a[1];\n\n React.useEffect(function () {\n function handleResize() {\n setWindowHeight(getHeight());\n }\n\n window.addEventListener(\"resize\", handleResize);\n return function () {\n return window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n useLayoutEffect$1(function () {\n // FIX when a horizontal scrollbar is added after the first layout\n setWindowHeight(getHeight());\n }, []);\n return windowHeight;\n}\n\nvar ObserverContext = React.createContext(undefined);\nvar useLayoutEffect = typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nfunction Scroller(_a) {\n var onStepChange = _a.onStepChange,\n children = _a.children,\n _b = _a.getRootMargin,\n getRootMargin = _b === void 0 ? defaultRootMargin : _b,\n _c = _a.debug,\n debug = _c === void 0 ? false : _c;\n\n var _d = __read(React.useState(), 2),\n observer = _d[0],\n setObserver = _d[1];\n\n var vh = useWindowHeight();\n useLayoutEffect(function () {\n var windowHeight = vh || 0;\n\n var handleIntersect = function handleIntersect(entries) {\n if (debug || window.chDebugScroller) {\n debugEntries(entries);\n }\n\n entries.forEach(function (entry) {\n if (entry.intersectionRatio > 0) {\n var stepElement = entry.target;\n onStepChange(+stepElement.stepIndex);\n }\n });\n };\n\n var observer = newIntersectionObserver(handleIntersect, getRootMargin(windowHeight));\n setObserver(observer);\n return function () {\n return observer.disconnect();\n };\n }, [vh]);\n return React.createElement(ObserverContext.Provider, {\n value: observer\n }, children);\n}\n\nfunction Step(_a) {\n var _b = _a.as,\n as = _b === void 0 ? \"section\" : _b,\n index = _a.index,\n props = __rest(_a, [\"as\", \"index\"]);\n\n var ref = React.useRef(null);\n var observer = React.useContext(ObserverContext);\n useLayoutEffect(function () {\n if (observer) {\n observer.observe(ref.current);\n }\n\n return function () {\n return observer && observer.unobserve(ref.current);\n };\n }, [observer]);\n useLayoutEffect(function () {\n var stepElement = ref.current;\n stepElement.stepIndex = index;\n }, [index]);\n return React.createElement(as, _assign(_assign({}, props), {\n ref: ref\n }));\n}\n\nfunction newIntersectionObserver(handleIntersect, rootMargin) {\n return new IntersectionObserver(handleIntersect, {\n rootMargin: rootMargin,\n threshold: 0.000001,\n root: null\n });\n}\n\nfunction defaultRootMargin(vh) {\n return \"-\" + (vh / 2 - 2) + \"px 0px\";\n}\n\nexport { Scroller, Step };","import _defineProperty from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nexport function createPackageJSON() {\n var dependencies = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var entry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"/index.js\";\n return JSON.stringify({\n name: \"sandpack-project\",\n main: entry,\n dependencies: dependencies\n }, null, 2);\n}\nexport function addPackageJSONIfNeeded(files, dependencies, entry) {\n var newFiles = _objectSpread({}, files);\n\n if (!newFiles[\"/package.json\"]) {\n if (!dependencies) {\n throw new Error(\"No dependencies specified, please specify either a package.json or dependencies.\");\n }\n\n if (!entry) {\n throw new Error(\"Missing 'entry' parameter. Either specify an entry point, or pass in a package.json with the 'main' field set.\");\n }\n\n newFiles[\"/package.json\"] = {\n code: createPackageJSON(dependencies, entry)\n };\n }\n\n return newFiles;\n}\nexport function extractErrorDetails(msg) {\n if (msg.title === \"SyntaxError\") {\n var title = msg.title,\n path = msg.path,\n message = msg.message,\n line = msg.line,\n column = msg.column;\n return {\n title: title,\n path: path,\n message: message,\n line: line,\n column: column\n };\n }\n\n var relevantStackFrame = getRelevantStackFrame(msg.payload.frames);\n\n if (!relevantStackFrame) {\n return {\n message: msg.message\n };\n }\n\n var errorInCode = getErrorInOriginalCode(relevantStackFrame);\n var errorLocation = getErrorLocation(relevantStackFrame);\n var errorMessage = formatErrorMessage(relevantStackFrame._originalFileName, msg.message, errorLocation, errorInCode);\n return {\n message: errorMessage,\n title: msg.title,\n path: relevantStackFrame._originalFileName,\n line: relevantStackFrame._originalLineNumber,\n column: relevantStackFrame._originalColumnNumber\n };\n}\n\nfunction getRelevantStackFrame(frames) {\n if (!frames) {\n return;\n }\n\n return frames.find(function (frame) {\n return !!frame._originalFileName;\n });\n}\n\nfunction getErrorLocation(errorFrame) {\n return errorFrame ? \" (\".concat(errorFrame._originalLineNumber, \":\").concat(errorFrame._originalColumnNumber, \")\") : \"\";\n}\n\nfunction getErrorInOriginalCode(errorFrame) {\n var lastScriptLine = errorFrame._originalScriptCode[errorFrame._originalScriptCode.length - 1];\n var numberOfLineNumberCharacters = lastScriptLine.lineNumber.toString().length;\n var leadingCharacterOffset = 2;\n var barSeparatorCharacterOffset = 3;\n var extraLineLeadingSpaces = leadingCharacterOffset + numberOfLineNumberCharacters + barSeparatorCharacterOffset + errorFrame._originalColumnNumber;\n return errorFrame._originalScriptCode.reduce(function (result, scriptLine) {\n var leadingChar = scriptLine.highlight ? \">\" : \" \";\n var lineNumber = scriptLine.lineNumber.toString().length === numberOfLineNumberCharacters ? \"\".concat(scriptLine.lineNumber) : \" \".concat(scriptLine.lineNumber);\n var extraLine = scriptLine.highlight ? \"\\n\" + \" \".repeat(extraLineLeadingSpaces) + \"^\" : \"\";\n return result + // accumulator\n \"\\n\" + leadingChar + // > or \" \"\n \" \" + lineNumber + // line number on equal number of characters\n \" | \" + scriptLine.content + // code\n extraLine // line under the highlighed line to show the column index\n ;\n }, \"\");\n}\n\nfunction formatErrorMessage(filePath, message, location, errorInCode) {\n return \"\".concat(filePath, \": \").concat(message).concat(location, \"\\n\").concat(errorInCode);\n}","import _asyncToGenerator from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport _regeneratorRuntime from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/regenerator\";\n\n/**\n * This file is a copy of the resolver from the `codesandbox-api` package.\n * We wanted to avoid to reference codesandbox-api because of the code that runs on load in the package.\n * The plan is to take some time and refactor codesandbox-api into what it was supposed to be in the first place,\n * an abstraction over the actions that can be dispatched between the bundler and the iframe.\n */\nvar generateId = function generateId() {\n return (// Such a random ID\n Math.floor(Math.random() * 1000000 + Math.random() * 1000000)\n );\n};\n\nvar getConstructorName = function getConstructorName(x) {\n try {\n return x.constructor.name;\n } catch (e) {\n return \"\";\n }\n};\n\nvar Protocol = /*#__PURE__*/function () {\n function Protocol(type, handleMessage, target) {\n var _this = this;\n\n _classCallCheck(this, Protocol);\n\n this.type = type;\n this.handleMessage = handleMessage;\n this.target = target;\n this.outgoingMessages = new Set();\n\n this._messageListener = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(e) {\n var data, result, returnMessage;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n data = e.data;\n\n if (!(data.$type !== _this.getTypeId())) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n if (!_this.outgoingMessages.has(data.$id)) {\n _context.next = 5;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 5:\n _context.next = 7;\n return _this.handleMessage(data.$data);\n\n case 7:\n result = _context.sent;\n returnMessage = {\n $originId: _this.internalId,\n $type: _this.getTypeId(),\n $data: result,\n $id: data.$id\n };\n\n if (e.source) {\n // @ts-ignore\n e.source.postMessage(returnMessage, \"*\");\n } else {\n _this._postMessage(returnMessage);\n }\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.createConnection();\n this.internalId = generateId();\n this.isWorker = getConstructorName(target) === \"Worker\";\n }\n\n _createClass(Protocol, [{\n key: \"getTypeId\",\n value: function getTypeId() {\n return \"p-\".concat(this.type);\n }\n }, {\n key: \"createConnection\",\n value: function createConnection() {\n self.addEventListener(\"message\", this._messageListener);\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n self.removeEventListener(\"message\", this._messageListener);\n }\n }, {\n key: \"sendMessage\",\n value: function sendMessage(data) {\n var _this2 = this;\n\n return new Promise(function (resolve) {\n var messageId = generateId();\n var message = {\n $originId: _this2.internalId,\n $type: _this2.getTypeId(),\n $data: data,\n $id: messageId\n };\n\n _this2.outgoingMessages.add(messageId);\n\n var listenFunction = function listenFunction(e) {\n var data = e.data;\n\n if (data.$type === _this2.getTypeId() && data.$id === messageId && data.$originId !== _this2.internalId) {\n resolve(data.$data);\n self.removeEventListener(\"message\", listenFunction);\n }\n };\n\n self.addEventListener(\"message\", listenFunction);\n\n _this2._postMessage(message);\n });\n }\n }, {\n key: \"_postMessage\",\n value: function _postMessage(m) {\n if (this.isWorker || typeof DedicatedWorkerGlobalScope !== \"undefined\" && // @ts-ignore Unknown to TS\n this.target instanceof DedicatedWorkerGlobalScope) {\n // @ts-ignore\n this.target.postMessage(m);\n } else {\n this.target.postMessage(m, \"*\");\n }\n }\n }]);\n\n return Protocol;\n}();\n\nexport { Protocol as default };","import _defineProperty from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/createClass\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nexport var IFrameProtocol = /*#__PURE__*/function () {\n function IFrameProtocol(iframe, origin) {\n _classCallCheck(this, IFrameProtocol);\n\n // React to messages from any iframe\n this.globalListeners = {};\n this.globalListenersCount = 0; // React to messages from the iframe owned by this instance\n\n this.channelListeners = {};\n this.channelListenersCount = 0; // Random number to identify this instance of the client when messages are coming from multiple iframes\n\n this.channelId = Math.floor(Math.random() * 1000000);\n this.frameWindow = iframe.contentWindow;\n this.origin = origin;\n this.globalListeners = [];\n this.channelListeners = [];\n this.eventListener = this.eventListener.bind(this);\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"message\", this.eventListener);\n }\n }\n\n _createClass(IFrameProtocol, [{\n key: \"cleanup\",\n value: function cleanup() {\n window.removeEventListener(\"message\", this.eventListener);\n this.globalListeners = {};\n this.channelListeners = {};\n this.globalListenersCount = 0;\n this.channelListenersCount = 0;\n } // Sends the channelId and triggers an iframeHandshake promise to resolve,\n // so the iframe can start listening for messages (based on the id)\n\n }, {\n key: \"register\",\n value: function register() {\n if (!this.frameWindow) {\n return;\n }\n\n this.frameWindow.postMessage({\n type: \"register-frame\",\n origin: document.location.origin,\n id: this.channelId\n }, this.origin);\n } // Messages are dispatched from the client directly to the instance iframe\n\n }, {\n key: \"dispatch\",\n value: function dispatch(message) {\n if (!this.frameWindow) {\n return;\n }\n\n this.frameWindow.postMessage(_objectSpread({\n $id: this.channelId,\n codesandbox: true\n }, message), this.origin);\n } // Add a listener that is called on any message coming from an iframe in the page\n // This is needed for the `initialize` message which comes without a channelId\n\n }, {\n key: \"globalListen\",\n value: function globalListen(listener) {\n var _this = this;\n\n if (typeof listener !== \"function\") {\n return function () {\n return;\n };\n }\n\n var listenerId = this.globalListenersCount;\n this.globalListeners[listenerId] = listener;\n this.globalListenersCount++;\n return function () {\n delete _this.globalListeners[listenerId];\n };\n } // Add a listener that is called on any message coming from an iframe with the instance channelId\n // All other messages (eg: from other iframes) are ignored\n\n }, {\n key: \"channelListen\",\n value: function channelListen(listener) {\n var _this2 = this;\n\n if (typeof listener !== \"function\") {\n return function () {\n return;\n };\n }\n\n var listenerId = this.channelListenersCount;\n this.channelListeners[listenerId] = listener;\n this.channelListenersCount++;\n return function () {\n delete _this2.channelListeners[listenerId];\n };\n } // Handles message windows coming from iframes\n\n }, {\n key: \"eventListener\",\n value: function eventListener(message) {\n if (!message.data.codesandbox) {\n return;\n }\n\n Object.values(this.globalListeners).forEach(function (listener) {\n return listener(message.data);\n });\n\n if (message.data.$id !== this.channelId) {\n return;\n }\n\n Object.values(this.channelListeners).forEach(function (listener) {\n return listener(message.data);\n });\n }\n }]);\n\n return IFrameProtocol;\n}();","import _defineProperty from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport _asyncToGenerator from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/createClass\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport _regeneratorRuntime from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/regenerator\";\nimport { getTemplate } from \"codesandbox-import-utils/lib/create-sandbox/templates\";\nimport isEqual from \"lodash.isequal\"; // Muhahaha\n// eslint-disable-next-line\n// @ts-ignore\n\nimport { version } from \"../package.json\";\nimport Protocol from \"./file-resolver-protocol\";\nimport { IFrameProtocol } from \"./iframe-protocol\";\nimport { createPackageJSON, addPackageJSONIfNeeded, extractErrorDetails } from \"./utils\";\nvar BUNDLER_URL = process.env.CODESANDBOX_ENV === \"development\" ? \"http://localhost:3000/\" : \"https://\".concat(version.replace(/\\./g, \"-\"), \"-sandpack.codesandbox.io/\");\nexport var SandpackClient = /*#__PURE__*/function () {\n function SandpackClient(selector, sandboxInfo) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, SandpackClient);\n\n this.getTranspilerContext = function () {\n return new Promise(function (resolve) {\n var unsubscribe = _this.listen(function (message) {\n if (message.type === \"transpiler-context\") {\n resolve(message.data);\n unsubscribe();\n }\n });\n\n _this.dispatch({\n type: \"get-transpiler-context\"\n });\n });\n };\n\n this.options = options;\n this.sandboxInfo = sandboxInfo;\n this.bundlerURL = options.bundlerURL || BUNDLER_URL;\n this.bundlerState = undefined;\n this.errors = [];\n this.status = \"initializing\";\n\n if (typeof selector === \"string\") {\n this.selector = selector;\n var element = document.querySelector(selector);\n\n if (!element) {\n throw new Error(\"No element found for selector '\".concat(selector, \"'\"));\n }\n\n this.element = element;\n this.iframe = document.createElement(\"iframe\");\n this.initializeElement();\n } else {\n this.element = selector;\n this.iframe = selector;\n }\n\n if (!this.iframe.getAttribute(\"sandbox\")) {\n this.iframe.setAttribute(\"sandbox\", \"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\");\n }\n\n this.iframe.src = options.startRoute ? new URL(options.startRoute, this.bundlerURL).toString() : this.bundlerURL;\n this.iframeProtocol = new IFrameProtocol(this.iframe, this.bundlerURL);\n this.unsubscribeGlobalListener = this.iframeProtocol.globalListen(function (mes) {\n if (mes.type !== \"initialized\" || !_this.iframe.contentWindow) {\n return;\n }\n\n _this.iframeProtocol.register();\n\n if (_this.options.fileResolver) {\n // TODO: Find a common place for the Protocol to be implemented for both sandpack-core and sandpack-client\n _this.fileResolverProtocol = new Protocol(\"file-resolver\", /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(data) {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(data.m === \"isFile\")) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\", _this.options.fileResolver.isFile(data.p));\n\n case 2:\n return _context.abrupt(\"return\", _this.options.fileResolver.readFile(data.p));\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }(), _this.iframe.contentWindow);\n }\n\n _this.updatePreview(_this.sandboxInfo, true);\n });\n this.unsubscribeChannelListener = this.iframeProtocol.channelListen(function (mes) {\n switch (mes.type) {\n case \"start\":\n {\n _this.errors = [];\n break;\n }\n\n case \"status\":\n {\n _this.status = mes.status;\n break;\n }\n\n case \"action\":\n {\n if (mes.action === \"show-error\") {\n _this.errors = [].concat(_toConsumableArray(_this.errors), [extractErrorDetails(mes)]);\n }\n\n break;\n }\n\n case \"state\":\n {\n _this.bundlerState = mes.state;\n break;\n }\n }\n });\n }\n\n _createClass(SandpackClient, [{\n key: \"cleanup\",\n value: function cleanup() {\n this.unsubscribeChannelListener();\n this.unsubscribeGlobalListener();\n this.iframeProtocol.cleanup();\n }\n }, {\n key: \"updateOptions\",\n value: function updateOptions(options) {\n if (!isEqual(this.options, options)) {\n this.options = options;\n this.updatePreview();\n }\n }\n }, {\n key: \"updatePreview\",\n value: function updatePreview() {\n var sandboxInfo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.sandboxInfo;\n var isInitializationCompile = arguments.length > 1 ? arguments[1] : undefined;\n\n var _a, _b, _c;\n\n this.sandboxInfo = sandboxInfo;\n var files = this.getFiles();\n var modules = Object.keys(files).reduce(function (prev, next) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, next, {\n code: files[next].code,\n path: next\n }));\n }, {});\n var packageJSON = JSON.parse(createPackageJSON(this.sandboxInfo.dependencies, this.sandboxInfo.entry));\n\n try {\n packageJSON = JSON.parse(files[\"/package.json\"].code);\n } catch (e) {\n console.error(\"Could not parse package.json file: \" + e.message);\n } // TODO move this to a common format\n\n\n var normalizedModules = Object.keys(files).reduce(function (prev, next) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, next, {\n content: files[next].code,\n path: next\n }));\n }, {});\n this.dispatch({\n type: \"compile\",\n codesandbox: true,\n version: 3,\n isInitializationCompile: isInitializationCompile,\n modules: modules,\n externalResources: [],\n hasFileResolver: Boolean(this.options.fileResolver),\n disableDependencyPreprocessing: this.sandboxInfo.disableDependencyPreprocessing,\n template: this.sandboxInfo.template || getTemplate(packageJSON, normalizedModules),\n showOpenInCodeSandbox: (_a = this.options.showOpenInCodeSandbox) !== null && _a !== void 0 ? _a : true,\n showErrorScreen: (_b = this.options.showErrorScreen) !== null && _b !== void 0 ? _b : true,\n showLoadingScreen: (_c = this.options.showLoadingScreen) !== null && _c !== void 0 ? _c : true,\n skipEval: this.options.skipEval || false,\n clearConsoleDisabled: !this.options.clearConsoleOnFirstCompile\n });\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(message) {\n this.iframeProtocol.dispatch(message);\n }\n }, {\n key: \"listen\",\n value: function listen(listener) {\n return this.iframeProtocol.channelListen(listener);\n }\n /**\n * Get the URL of the contents of the current sandbox\n */\n\n }, {\n key: \"getCodeSandboxURL\",\n value: function getCodeSandboxURL() {\n var files = this.getFiles();\n var paramFiles = Object.keys(files).reduce(function (prev, next) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, next.replace(\"/\", \"\"), {\n content: files[next].code,\n isBinary: false\n }));\n }, {});\n return fetch(\"https://codesandbox.io/api/v1/sandboxes/define?json=1\", {\n method: \"POST\",\n body: JSON.stringify({\n files: paramFiles\n }),\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n }\n }).then(function (x) {\n return x.json();\n }).then(function (res) {\n return {\n sandboxId: res.sandbox_id,\n editorUrl: \"https://codesandbox.io/s/\".concat(res.sandbox_id),\n embedUrl: \"https://codesandbox.io/embed/\".concat(res.sandbox_id)\n };\n });\n }\n }, {\n key: \"getFiles\",\n value: function getFiles() {\n var sandboxInfo = this.sandboxInfo;\n\n if (sandboxInfo.files[\"/package.json\"] === undefined) {\n return addPackageJSONIfNeeded(sandboxInfo.files, sandboxInfo.dependencies, sandboxInfo.entry);\n }\n\n return this.sandboxInfo.files;\n }\n }, {\n key: \"initializeElement\",\n value: function initializeElement() {\n this.iframe.style.border = \"0\";\n this.iframe.style.width = this.options.width || \"100%\";\n this.iframe.style.height = this.options.height || \"100%\";\n this.iframe.style.overflow = \"hidden\";\n\n if (!this.element.parentNode) {\n // This should never happen\n throw new Error(\"Given element does not have a parent.\");\n }\n\n this.element.parentNode.replaceChild(this.iframe, this.element);\n }\n }]);\n\n return SandpackClient;\n}();","import { ANGULAR_TEMPLATE } from \"./angular\";\nimport { REACT_TEMPLATE } from \"./react\";\nimport { VANILLA_TEMPLATE } from \"./vanilla\";\nimport { VUE_TEMPLATE } from \"./vue\";\nimport { VUE_TEMPLATE_3 } from \"./vue3\";\nexport var SANDBOX_TEMPLATES = {\n react: REACT_TEMPLATE,\n vue: VUE_TEMPLATE,\n vanilla: VANILLA_TEMPLATE,\n vue3: VUE_TEMPLATE_3,\n angular: ANGULAR_TEMPLATE\n};","export var REACT_TEMPLATE = {\n files: {\n \"/App.js\": {\n code: \"export default function App() {\\n return

Hello World

\\n}\\n\"\n },\n \"/index.js\": {\n code: \"import React, { StrictMode } from \\\"react\\\";\\nimport ReactDOM from \\\"react-dom\\\";\\nimport \\\"./styles.css\\\";\\n\\nimport App from \\\"./App\\\";\\n\\nconst rootElement = document.getElementById(\\\"root\\\");\\nReactDOM.render(\\n \\n \\n ,\\n rootElement\\n);\"\n },\n \"/styles.css\": {\n code: \"body {\\n font-family: sans-serif;\\n -webkit-font-smoothing: auto;\\n -moz-font-smoothing: auto;\\n -moz-osx-font-smoothing: grayscale;\\n font-smoothing: auto;\\n text-rendering: optimizeLegibility;\\n font-smooth: always;\\n -webkit-tap-highlight-color: transparent;\\n -webkit-touch-callout: none;\\n}\\n\\nh1 {\\n font-size: 1.5rem;\\n}\"\n },\n \"/public/index.html\": {\n code: \"\\n\\n \\n \\n \\n Document\\n \\n \\n
\\n \\n\"\n }\n },\n dependencies: {\n react: \"^17.0.0\",\n \"react-dom\": \"^17.0.0\",\n \"react-scripts\": \"^4.0.0\"\n },\n entry: \"/index.js\",\n main: \"/App.js\",\n environment: \"create-react-app\"\n};","export var VUE_TEMPLATE = {\n files: {\n \"/src/App.vue\": {\n code: \"\\n\\n\\n\\n\\n\"\n },\n \"/src/main.js\": {\n code: \"import Vue from \\\"vue\\\";\\nimport App from \\\"./App.vue\\\";\\n\\nVue.config.productionTip = false;\\n\\nnew Vue({\\n render: h => h(App)\\n}).$mount(\\\"#app\\\");\\n\"\n },\n \"/public/index.html\": {\n code: \"\\n\\n \\n \\n \\n \\n favicon.ico\\\" />\\n codesandbox\\n \\n \\n \\n
\\n \\n \\n\\n\"\n }\n },\n dependencies: {\n vue: \"^2.6.11\",\n \"@vue/cli-plugin-babel\": \"4.1.1\"\n },\n entry: \"/src/main.js\",\n main: \"/src/App.vue\",\n environment: \"vue-cli\"\n};","export var VANILLA_TEMPLATE = {\n files: {\n \"/src/index.js\": {\n code: \"import \\\"./styles.css\\\";\\n\\ndocument.getElementById(\\\"app\\\").innerHTML = `\\n

Hello Vanilla!

\\n
\\n We use the same configuration as Parcel to bundle this sandbox, you can find more\\n info about Parcel \\n here.\\n
\\n`;\\n\"\n },\n \"/src/styles.css\": {\n code: \"body {\\n font-family: sans-serif;\\n}\\n \"\n },\n \"/index.html\": {\n code: \"\\n\\n\\n\\n Parcel Sandbox\\n \\n\\n\\n\\n
\\n\\n \\n\\n\\n\"\n }\n },\n dependencies: {},\n entry: \"/src/index.js\",\n main: \"/src/index.js\",\n environment: \"parcel\"\n};","export var VUE_TEMPLATE_3 = {\n files: {\n \"/src/App.vue\": {\n code: \"\\n \\n\\n \\n \\n\"\n },\n \"/src/main.js\": {\n code: \"import { createApp } from 'vue'\\nimport App from './App.vue'\\n \\ncreateApp(App).mount('#app') \\n\"\n },\n \"/public/index.html\": {\n code: \"\\n\\n \\n \\n \\n \\n codesandbox\\n \\n \\n \\n
\\n \\n \\n\\n\"\n }\n },\n dependencies: {\n \"core-js\": \"^3.6.5\",\n vue: \"^3.0.0-0\",\n \"@vue/cli-plugin-babel\": \"4.5.0\"\n },\n entry: \"/src/main.js\",\n main: \"/src/App.vue\",\n environment: \"vue-cli\"\n};","export var ANGULAR_TEMPLATE = {\n files: {\n \"/src/app/app.component.css\": {\n code: \"div {\\n text-align: center;\\n} \\n\"\n },\n \"/src/app/app.component.html\": {\n code: \"
\\n

\\n {{ helloWorld }}\\n

\\n
\\n\"\n },\n \"/src/app/app.component.ts\": {\n code: \"import { Component } from \\\"@angular/core\\\";\\n\\n@Component({\\n selector: \\\"app-root\\\",\\n templateUrl: \\\"./app.component.html\\\",\\n styleUrls: [\\\"./app.component.css\\\"]\\n})\\nexport class AppComponent {\\n helloWorld = \\\"hello world\\\";\\n} \\n\"\n },\n \"/src/app/app.module.ts\": {\n code: \"import { BrowserModule } from \\\"@angular/platform-browser\\\";\\nimport { NgModule } from \\\"@angular/core\\\";\\n \\nimport { AppComponent } from \\\"./app.component\\\";\\n \\n@NgModule({\\n declarations: [AppComponent],\\n imports: [BrowserModule],\\n providers: [],\\n bootstrap: [AppComponent]\\n})\\nexport class AppModule {} \\n\"\n },\n \"/src/index.html\": {\n code: \"\\n\\n \\n\\n \\n Angular\\n \\n \\n \\n \\n\\n \\n\\n \\n\\n \\n\\n\"\n },\n \"/src/main.ts\": {\n code: \"import { enableProdMode } from \\\"@angular/core\\\";\\nimport { platformBrowserDynamic } from \\\"@angular/platform-browser-dynamic\\\";\\n \\nimport { AppModule } from \\\"./app/app.module\\\"; \\n\\nplatformBrowserDynamic()\\n .bootstrapModule(AppModule)\\n .catch(err => console.log(err));\\n \\n\"\n },\n \"/src/polyfills.ts\": {\n code: \"import \\\"core-js/proposals/reflect-metadata\\\"; \\n import \\\"zone.js/dist/zone\\\";\\n\"\n }\n },\n dependencies: {\n \"@angular/core\": \"^11.2.0\",\n \"@angular/platform-browser\": \"^11.2.0\",\n \"@angular/platform-browser-dynamic\": \"^11.2.0\",\n \"@angular/common\": \"^11.2.0\",\n \"@angular/compiler\": \"^11.2.0\",\n \"zone.js\": \"0.11.3\",\n \"core-js\": \"3.8.3\",\n rxjs: \"6.6.3\"\n },\n entry: \"/src/main.ts\",\n main: \"/src/app/app.component.ts\",\n environment: \"angular-cli\"\n};","import _defineProperty from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { addPackageJSONIfNeeded } from \"@codesandbox/sandpack-client\";\nimport { SANDBOX_TEMPLATES } from \"../templates\";\nexport var getSandpackStateFromProps = function getSandpackStateFromProps(props) {\n var _a, _b; // Merge predefined template with custom setup\n\n\n var projectSetup = getSetup(props.template, props.customSetup); // openPaths and activePath override the setup flags\n\n var openPaths = (_a = props.openPaths) !== null && _a !== void 0 ? _a : [];\n var activePath = props.activePath;\n\n if (openPaths.length === 0 && ((_b = props.customSetup) === null || _b === void 0 ? void 0 : _b.files)) {\n var inputFiles = props.customSetup.files; // extract open and active files from the custom input files\n\n Object.keys(inputFiles).forEach(function (filePath) {\n var file = inputFiles[filePath];\n\n if (typeof file === \"string\") {\n openPaths.push(filePath);\n return;\n }\n\n if (!activePath && file.active) {\n activePath = filePath;\n\n if (file.hidden === true) {\n openPaths.push(filePath); // active file needs to be available even if someone sets it as hidden by accident\n }\n }\n\n if (!file.hidden) {\n openPaths.push(filePath);\n }\n });\n }\n\n if (openPaths.length === 0) {\n // If no files are received, use the project setup / template\n openPaths = Object.keys(projectSetup.files);\n } // If no activePath is specified, use the first open file\n\n\n if (!activePath) {\n activePath = projectSetup.main || openPaths[0];\n } // If for whatever reason the active path was not set as open, set it\n\n\n if (!openPaths.includes(activePath)) {\n openPaths.push(activePath);\n }\n\n if (!projectSetup.files[activePath]) {\n throw new Error(\"\".concat(activePath, \" was set as the active file but was not provided\"));\n }\n\n var files = addPackageJSONIfNeeded(projectSetup.files, projectSetup.dependencies || {}, projectSetup.entry);\n var environment = projectSetup.environment;\n return {\n openPaths: openPaths,\n activePath: activePath,\n files: files,\n environment: environment\n };\n}; // The template is predefined (eg: react, vue, vanilla)\n// The setup can overwrite anything from the template (eg: files, dependencies, environment, etc.)\n\nexport var getSetup = function getSetup(template, inputSetup) {\n // The input setup might have files in the simple form Record\n // so we convert them to the sandbox template format\n var setup = createSetupFromUserInput(inputSetup);\n\n if (!template) {\n // If not input, default to vanilla\n if (!setup) {\n return SANDBOX_TEMPLATES.vanilla;\n }\n\n if (!setup.files || Object.keys(setup.files).length === 0) {\n throw new Error(\"When using the customSetup without a template, you must pass at least one file for sandpack to work\");\n } // If not template specified, use the setup entirely\n\n\n return setup;\n }\n\n var baseTemplate = SANDBOX_TEMPLATES[template];\n\n if (!baseTemplate) {\n throw new Error(\"Invalid template '\".concat(template, \"' provided.\"));\n } // If no setup, the template is used entirely\n\n\n if (!setup) {\n return baseTemplate;\n } // Merge the setup on top of the template\n\n\n return {\n files: _objectSpread(_objectSpread({}, baseTemplate.files), setup.files),\n dependencies: _objectSpread(_objectSpread({}, baseTemplate.dependencies), setup.dependencies),\n entry: setup.entry || baseTemplate.entry,\n main: setup.main || baseTemplate.main,\n environment: setup.environment || baseTemplate.environment\n };\n};\n\nvar createSetupFromUserInput = function createSetupFromUserInput(setup) {\n if (!setup) {\n return null;\n }\n\n if (!setup.files) {\n return setup;\n }\n\n var files = setup.files;\n var convertedFiles = Object.keys(files).reduce(function (acc, key) {\n if (typeof files[key] === \"string\") {\n acc[key] = {\n code: files[key]\n };\n } else {\n acc[key] = files[key];\n }\n\n return acc;\n }, {});\n return _objectSpread(_objectSpread({}, setup), {}, {\n files: convertedFiles\n });\n};","export var getFileName = function getFileName(filePath) {\n var lastIndexOfSlash = filePath.lastIndexOf(\"/\");\n return filePath.slice(lastIndexOfSlash + 1);\n};\nexport var hexToRGB = function hexToRGB(hex) {\n var r = \"0\";\n var g = \"0\";\n var b = \"0\";\n\n if (hex.length === 4) {\n r = \"0x\" + hex[1] + hex[1];\n g = \"0x\" + hex[2] + hex[2];\n b = \"0x\" + hex[3] + hex[3];\n } else if (hex.length === 7) {\n r = \"0x\" + hex[1] + hex[2];\n g = \"0x\" + hex[3] + hex[4];\n b = \"0x\" + hex[5] + hex[6];\n }\n\n return {\n red: +r,\n green: +g,\n blue: +b\n };\n};\nexport var hexToCSSRGBa = function hexToCSSRGBa(hex, alpha) {\n if (hex.startsWith(\"#\") && (hex.length === 4 || hex.length === 7)) {\n var _hexToRGB = hexToRGB(hex),\n red = _hexToRGB.red,\n green = _hexToRGB.green,\n blue = _hexToRGB.blue;\n\n return \"rgba(\".concat(red, \", \").concat(green, \", \").concat(blue, \", \").concat(alpha, \")\");\n }\n\n return hex;\n}; // Checks both rgb and hex colors for contrast and returns true if the color is in the dark spectrum\n\nexport var isDarkColor = function isDarkColor(color) {\n var r = 0;\n var g = 0;\n var b = 0;\n\n if (color.startsWith(\"#\")) {\n if (color.length < 7) {\n return true;\n }\n\n r = parseInt(color.substr(1, 2), 16);\n g = parseInt(color.substr(3, 2), 16);\n b = parseInt(color.substr(5, 2), 16);\n } else {\n var rgbValues = color.replace(\"rgb(\", \"\").replace(\"rgba(\", \"\").replace(\")\", \"\").split(\",\");\n\n if (rgbValues.length < 3) {\n return true;\n }\n\n r = parseInt(rgbValues[0], 10);\n g = parseInt(rgbValues[1], 10);\n b = parseInt(rgbValues[2], 10);\n }\n\n var yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq < 128;\n};\nexport var generateRandomId = function generateRandomId() {\n return Math.floor(Math.random() * 10000).toString();\n};","import _toConsumableArray from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport { SandpackClient, extractErrorDetails } from \"@codesandbox/sandpack-client\";\nimport * as React from \"react\";\nimport { getSandpackStateFromProps } from \"../utils/sandpackUtils\";\nimport { generateRandomId } from \"../utils/stringUtils\";\nvar Sandpack = React.createContext(null);\nvar BUNDLER_TIMEOUT = 30000; // 30 seconds timeout for the bundler to respond.\n\nvar SandpackProvider = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(SandpackProvider, _React$PureComponent);\n\n var _super = _createSuper(SandpackProvider);\n\n function SandpackProvider(props) {\n var _this;\n\n _classCallCheck(this, SandpackProvider);\n\n _this = _super.call(this, props);\n _this.timeoutHook = null;\n\n _this.handleMessage = function (msg) {\n if (_this.timeoutHook) {\n clearTimeout(_this.timeoutHook);\n }\n\n if (msg.type === \"state\") {\n _this.setState({\n bundlerState: msg.state\n });\n } else if (msg.type === \"done\" && !msg.compilatonError) {\n _this.setState({\n error: null\n });\n } else if (msg.type === \"action\" && msg.action === \"show-error\") {\n _this.setState({\n error: extractErrorDetails(msg)\n });\n } else if (msg.type === \"action\" && msg.action === \"notification\" && msg.notificationType === \"error\") {\n _this.setState({\n error: {\n message: msg.title\n }\n });\n }\n };\n\n _this.updateCurrentFile = function (newCode) {\n _this.updateFile(_this.state.activePath, newCode);\n };\n\n _this.updateFile = function (path, newCode) {\n var _a;\n\n if (newCode === ((_a = _this.state.files[_this.state.activePath]) === null || _a === void 0 ? void 0 : _a.code)) {\n return;\n }\n\n var _this$state = _this.state,\n files = _this$state.files,\n sandpackStatus = _this$state.sandpackStatus;\n var _this$props = _this.props,\n recompileMode = _this$props.recompileMode,\n recompileDelay = _this$props.recompileDelay;\n\n var newFiles = _objectSpread(_objectSpread({}, files), {}, _defineProperty({}, path, {\n code: newCode\n }));\n\n _this.setState({\n files: newFiles\n });\n\n if (sandpackStatus !== \"running\") {\n return;\n }\n\n if (recompileMode === \"immediate\") {\n Object.values(_this.clients).forEach(function (client) {\n client.updatePreview({\n files: newFiles\n });\n });\n }\n\n if (recompileMode === \"delayed\") {\n window.clearTimeout(_this.debounceHook);\n _this.debounceHook = window.setTimeout(function () {\n Object.values(_this.clients).forEach(function (client) {\n client.updatePreview({\n files: _this.state.files\n });\n });\n }, recompileDelay);\n }\n };\n\n _this.createClient = function (iframe, clientId) {\n var client = new SandpackClient(iframe, {\n files: _this.state.files,\n template: _this.state.environment\n }, {\n bundlerURL: _this.props.bundlerURL,\n startRoute: _this.props.startRoute,\n fileResolver: _this.props.fileResolver,\n skipEval: _this.props.skipEval,\n showOpenInCodeSandbox: !_this.openInCSBRegistered.current,\n showErrorScreen: !_this.errorScreenRegistered.current,\n showLoadingScreen: !_this.loadingScreenRegistered.current\n }); // Subscribe inside the context with the first client that gets instantiated.\n // This subscription is for global states like error and timeout, so no need for a per client listen\n // Also, set the timeout timer only when the first client is instantiated\n\n if (typeof _this.unsubscribe !== \"function\") {\n _this.unsubscribe = client.listen(_this.handleMessage);\n _this.timeoutHook = setTimeout(function () {\n _this.setState({\n sandpackStatus: \"timeout\"\n });\n }, BUNDLER_TIMEOUT);\n }\n /**\n * Register any potential listeners that subscribed before sandpack ran\n */\n\n\n if (_this.queuedListeners[clientId]) {\n Object.keys(_this.queuedListeners[clientId]).forEach(function (listenerId) {\n var listener = _this.queuedListeners[clientId][listenerId];\n var unsubscribe = client.listen(listener);\n _this.unsubscribeQueuedListeners[clientId][listenerId] = unsubscribe;\n }); // Clear the queued listeners after they were registered\n\n _this.queuedListeners[clientId] = {};\n }\n /**\n * Register global listeners\n */\n\n\n var globalListeners = Object.entries(_this.queuedListeners.global);\n globalListeners.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n listenerId = _ref2[0],\n listener = _ref2[1];\n\n var unsubscribe = client.listen(listener);\n _this.unsubscribeQueuedListeners[clientId][listenerId] = unsubscribe;\n /**\n * Important: Do not clean the global queue\n * Instead of cleaning the queue, keep it there for the\n * following clients that might be created\n */\n });\n return client;\n };\n\n _this.runSandpack = function () {\n Object.keys(_this.preregisteredIframes).forEach(function (clientId) {\n var iframe = _this.preregisteredIframes[clientId];\n _this.clients[clientId] = _this.createClient(iframe, clientId);\n });\n\n _this.setState({\n sandpackStatus: \"running\"\n });\n };\n\n _this.registerBundler = function (iframe, clientId) {\n if (_this.state.sandpackStatus === \"running\") {\n _this.clients[clientId] = _this.createClient(iframe, clientId);\n } else {\n _this.preregisteredIframes[clientId] = iframe;\n }\n };\n\n _this.unregisterBundler = function (clientId) {\n var client = _this.clients[clientId];\n\n if (client) {\n client.cleanup();\n delete _this.clients[clientId];\n } else {\n delete _this.preregisteredIframes[clientId];\n }\n };\n\n _this.setActiveFile = function (path) {\n _this.setState({\n activePath: path,\n editorState: \"dirty\"\n });\n };\n\n _this.openFile = function (path) {\n _this.setState(function (_ref3) {\n var openPaths = _ref3.openPaths;\n var newPaths = openPaths.includes(path) ? openPaths : [].concat(_toConsumableArray(openPaths), [path]);\n return {\n activePath: path,\n openPaths: newPaths,\n editorState: \"dirty\"\n };\n });\n };\n\n _this.dispatchMessage = function (message, clientId) {\n if (_this.state.sandpackStatus !== \"running\") {\n console.warn(\"dispatch cannot be called while in idle mode\");\n return;\n }\n\n if (clientId) {\n _this.clients[clientId].dispatch(message);\n } else {\n Object.values(_this.clients).forEach(function (client) {\n client.dispatch(message);\n });\n }\n };\n\n _this.addListener = function (listener, clientId) {\n if (clientId) {\n if (_this.clients[clientId]) {\n var unsubscribeListener = _this.clients[clientId].listen(listener);\n\n return unsubscribeListener;\n } else {\n // When listeners are added before the client is instantiated, they are stored with an unique id\n // When the client is eventually instantiated, the listeners are registered on the spot\n // Their unsubscribe functions are stored in unsubscribeQueuedListeners for future cleanup\n var listenerId = generateRandomId();\n _this.queuedListeners[clientId] = _this.queuedListeners[clientId] || {};\n _this.unsubscribeQueuedListeners[clientId] = _this.unsubscribeQueuedListeners[clientId] || {};\n _this.queuedListeners[clientId][listenerId] = listener;\n\n var _unsubscribeListener = function _unsubscribeListener() {\n if (_this.queuedListeners[clientId][listenerId]) {\n // unsubscribe was called before the client was instantiated\n // common example - a component with autorun=false that unmounted\n delete _this.queuedListeners[clientId][listenerId];\n } else if (_this.unsubscribeQueuedListeners[clientId][listenerId]) {\n // unsubscribe was called for a listener that got added before the client was instantiated\n // call the unsubscribe function and remove it from memory\n _this.unsubscribeQueuedListeners[clientId][listenerId]();\n\n delete _this.unsubscribeQueuedListeners[clientId][listenerId];\n }\n };\n\n return _unsubscribeListener;\n }\n } else {\n // Push to the **global** queue\n var _listenerId = generateRandomId();\n\n _this.queuedListeners.global[_listenerId] = listener; // Add to the current clients\n\n var clients = Object.values(_this.clients);\n var currentClientUnsubscribeListeners = clients.map(function (client) {\n return client.listen(listener);\n });\n\n var _unsubscribeListener2 = function _unsubscribeListener2() {\n var unsubscribeQueuedClients = Object.values(_this.unsubscribeQueuedListeners); // Unsubscribing all listener registered\n\n unsubscribeQueuedClients.forEach(function (listenerOfClient) {\n var listenerFunctions = Object.values(listenerOfClient);\n listenerFunctions.forEach(function (unsubscribe) {\n return unsubscribe();\n });\n }); // Unsubscribing from the clients already created\n\n currentClientUnsubscribeListeners.forEach(function (unsubscribe) {\n return unsubscribe();\n });\n };\n\n return _unsubscribeListener2;\n }\n };\n\n _this._getSandpackState = function () {\n var _this$state2 = _this.state,\n files = _this$state2.files,\n activePath = _this$state2.activePath,\n openPaths = _this$state2.openPaths,\n startRoute = _this$state2.startRoute,\n bundlerState = _this$state2.bundlerState,\n editorState = _this$state2.editorState,\n error = _this$state2.error,\n sandpackStatus = _this$state2.sandpackStatus,\n environment = _this$state2.environment;\n return {\n files: files,\n environment: environment,\n openPaths: openPaths,\n activePath: activePath,\n startRoute: startRoute,\n error: error,\n bundlerState: bundlerState,\n status: sandpackStatus,\n editorState: editorState,\n setActiveFile: _this.setActiveFile,\n openFile: _this.openFile,\n updateCurrentFile: _this.updateCurrentFile,\n updateFile: _this.updateFile,\n runSandpack: _this.runSandpack,\n registerBundler: _this.registerBundler,\n unregisterBundler: _this.unregisterBundler,\n dispatch: _this.dispatchMessage,\n listen: _this.addListener,\n lazyAnchorRef: _this.lazyAnchorRef,\n errorScreenRegisteredRef: _this.errorScreenRegistered,\n openInCSBRegisteredRef: _this.openInCSBRegistered,\n loadingScreenRegisteredRef: _this.loadingScreenRegistered\n };\n };\n\n var _getSandpackStateFrom = getSandpackStateFromProps(props),\n activePath = _getSandpackStateFrom.activePath,\n openPaths = _getSandpackStateFrom.openPaths,\n files = _getSandpackStateFrom.files,\n environment = _getSandpackStateFrom.environment;\n\n _this.state = {\n files: files,\n environment: environment,\n openPaths: openPaths,\n activePath: activePath,\n startRoute: _this.props.startRoute,\n bundlerState: undefined,\n error: null,\n sandpackStatus: _this.props.autorun ? \"initial\" : \"idle\",\n editorState: \"pristine\",\n renderHiddenIframe: false\n };\n /**\n * List of functions to be registered in the client, once it has been created\n *\n * Use cases:\n * - Set a listener, but the client hasn't been created yet;\n * - Set a listener, but the client has already been created;\n * - A client already exists, set a new listener and then one more client has been created;\n */\n\n _this.queuedListeners = {\n global: {}\n };\n /**\n * Global list of unsubscribe function for the listeners\n */\n\n _this.unsubscribeQueuedListeners = {};\n _this.preregisteredIframes = {};\n _this.clients = {};\n _this.lazyAnchorRef = React.createRef();\n _this.errorScreenRegistered = React.createRef();\n _this.openInCSBRegistered = React.createRef();\n _this.loadingScreenRegistered = React.createRef();\n return _this;\n }\n\n _createClass(SandpackProvider, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (!this.props.autorun) {\n return;\n }\n\n if (this.lazyAnchorRef.current) {\n // If any component registerd a lazy anchor ref component, use that for the intersection observer\n var options = {\n rootMargin: \"600px 0px\",\n threshold: 0.1\n };\n this.intersectionObserver = new IntersectionObserver(function (entries) {\n var _a, _b;\n\n if (((_a = entries[0]) === null || _a === void 0 ? void 0 : _a.intersectionRatio) > 0) {\n // Delay a cycle so all hooks register the refs for the sub-components (open in csb, loading, error overlay)\n setTimeout(function () {\n _this2.runSandpack();\n }, 50);\n (_b = _this2.intersectionObserver) === null || _b === void 0 ? void 0 : _b.unobserve(_this2.lazyAnchorRef.current);\n }\n }, options);\n this.intersectionObserver.observe(this.lazyAnchorRef.current);\n } else {\n // else run the sandpack on mount, with a slight delay to allow all subcomponents to mount/register components\n setTimeout(function () {\n return _this2.runSandpack();\n }, 50);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.template !== this.props.template || prevProps.activePath !== this.props.activePath || JSON.stringify(prevProps.openPaths) !== JSON.stringify(this.props.openPaths) || JSON.stringify(prevProps.customSetup) !== JSON.stringify(this.props.customSetup)) {\n var _getSandpackStateFrom2 = getSandpackStateFromProps(this.props),\n activePath = _getSandpackStateFrom2.activePath,\n openPaths = _getSandpackStateFrom2.openPaths,\n files = _getSandpackStateFrom2.files,\n environment = _getSandpackStateFrom2.environment;\n /* eslint-disable react/no-did-update-set-state */\n\n\n this.setState({\n activePath: activePath,\n openPaths: openPaths,\n files: files,\n environment: environment\n });\n\n if (this.state.sandpackStatus !== \"running\") {\n return;\n }\n\n Object.values(this.clients).forEach(function (client) {\n return client.updatePreview({\n files: files,\n template: environment\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (typeof this.unsubscribe === \"function\") {\n this.unsubscribe();\n }\n\n if (this.timeoutHook) {\n clearTimeout(this.timeoutHook);\n }\n\n if (this.debounceHook) {\n clearTimeout(this.debounceHook);\n }\n\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return React.createElement(Sandpack.Provider, {\n value: this._getSandpackState()\n }, children);\n }\n }]);\n\n return SandpackProvider;\n}(React.PureComponent);\n\nSandpackProvider.defaultProps = {\n skipEval: false,\n recompileMode: \"delayed\",\n recompileDelay: 500,\n autorun: true\n};\nvar SandpackConsumer = Sandpack.Consumer;\nexport { SandpackProvider, SandpackConsumer, Sandpack as SandpackReactContext };","import _defineProperty from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"dispatch\", \"listen\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from \"react\";\nimport { SandpackReactContext } from \"../contexts/sandpackContext\";\nexport function useSandpack() {\n var sandpack = React.useContext(SandpackReactContext);\n\n if (sandpack === null) {\n throw new Error(\"useSandpack can only be used inside components wrapped by 'SandpackProvider'\");\n }\n\n var dispatch = sandpack.dispatch,\n listen = sandpack.listen,\n rest = _objectWithoutProperties(sandpack, _excluded);\n\n return {\n sandpack: _objectSpread({}, rest),\n dispatch: dispatch,\n listen: listen\n };\n}","import _defineProperty from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { getParameters } from \"codesandbox-import-utils/lib/api/define\";\nimport * as React from \"react\";\nimport { useSandpack } from \"./useSandpack\";\n\nvar getFileParameters = function getFileParameters(files, environment) {\n var normalized = Object.keys(files).reduce(function (prev, next) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, next.replace(\"/\", \"\"), {\n content: files[next].code,\n isBinary: false\n }));\n }, {});\n return getParameters(_objectSpread({\n files: normalized\n }, environment ? {\n template: environment\n } : null));\n};\n\nexport var useCodeSandboxLink = function useCodeSandboxLink() {\n var _useSandpack = useSandpack(),\n sandpack = _useSandpack.sandpack;\n\n var params = getFileParameters(sandpack.files, sandpack.environment); // Register the usage of the codesandbox link\n\n React.useEffect(function () {\n sandpack.openInCSBRegisteredRef.current = true;\n }, []);\n return \"https://codesandbox.io/api/v1/sandboxes/define?parameters=\".concat(params, \"&query=file=\").concat(sandpack.activePath, \"%26from-sandpack=true\");\n};","import React, { createContext, useContext, useMemo, useCallback } from 'react';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nvar ClasserContext = createContext({});\n\nfunction ClasserProvider(_a) {\n var classes = _a.classes,\n children = _a.children;\n var outer = useContext(ClasserContext);\n var mixed = useMerge(outer, classes);\n return React.createElement(ClasserContext.Provider, {\n value: mixed,\n children: children\n });\n}\n\nfunction useClasser(libClassPrefix, innerClasses) {\n var outerClasses = useContext(ClasserContext);\n var classes = useMerge(outerClasses, innerClasses);\n return useCallback(getClasser(libClassPrefix, classes), [libClassPrefix, classes]);\n}\n\nfunction getClasser(libClassPrefix, classes) {\n return function classer() {\n var libClassSuffixList = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n libClassSuffixList[_i] = arguments[_i];\n }\n\n var libClassList = libClassSuffixList.map(function (libClassSuffix) {\n return libClassPrefix + (libClassPrefix && libClassSuffix ? \"-\" : \"\") + libClassSuffix;\n });\n var outputList = libClassList.slice();\n libClassList.forEach(function (libClass) {\n if (libClass in classes) {\n outputList.push(classes[libClass]);\n }\n });\n return outputList.join(\" \");\n };\n}\n\nfunction useMerge(outer, inner) {\n return useMemo(function () {\n return _assign(_assign({}, outer), inner);\n }, [outer, inner]);\n}\n\nexport { ClasserProvider, useClasser };","import * as React from \"react\";\nimport { useSandpack } from \"./useSandpack\";\nexport var useErrorMessage = function useErrorMessage() {\n var _a;\n\n var _useSandpack = useSandpack(),\n sandpack = _useSandpack.sandpack;\n\n var error = sandpack.error;\n React.useEffect(function () {\n sandpack.errorScreenRegisteredRef.current = true;\n }, []);\n return (_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : null;\n};","import { useClasser } from \"@code-hike/classer\";\nimport * as React from \"react\";\nimport { useErrorMessage } from \"../hooks/useErrorMessage\";\nexport var ErrorOverlay = function ErrorOverlay() {\n var errorMessage = useErrorMessage();\n var c = useClasser(\"sp\");\n\n if (!errorMessage) {\n return null;\n }\n\n return React.createElement(\"div\", {\n className: c(\"overlay\", \"error\")\n }, React.createElement(\"div\", {\n className: c(\"error-message\")\n }, errorMessage));\n};","import _slicedToArray from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from \"react\";\nimport { useSandpack } from \"./useSandpack\";\nvar FADE_DELAY = 1000; // 1 second delay one initial load, only relevant if the loading overlay is visible.\n\nvar FADE_ANIMATION_DURATION = 500; // 500 ms fade animation\n\nexport var useLoadingOverlayState = function useLoadingOverlayState(clientId) {\n var _useSandpack = useSandpack(),\n sandpack = _useSandpack.sandpack,\n listen = _useSandpack.listen;\n\n var _React$useState = React.useState(\"visible\"),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n loadingOverlayState = _React$useState2[0],\n setLoadingOverlayState = _React$useState2[1];\n\n React.useEffect(function () {\n sandpack.loadingScreenRegisteredRef.current = true;\n var innerHook;\n var outerHook;\n var unsub = listen(function (message) {\n if (message.type === \"start\" && message.firstLoad === true) {\n setLoadingOverlayState(\"visible\");\n }\n\n if (message.type === \"done\") {\n outerHook = setTimeout(function () {\n setLoadingOverlayState(function (prev) {\n return prev === \"visible\" ? \"fading\" : \"hidden\";\n } // Only set 'fading' if the current state is 'visible'\n );\n innerHook = setTimeout(function () {\n return setLoadingOverlayState(\"hidden\");\n }, FADE_ANIMATION_DURATION);\n }, FADE_DELAY);\n }\n }, clientId);\n return function () {\n clearTimeout(outerHook);\n clearTimeout(innerHook);\n unsub();\n };\n }, []);\n\n if (sandpack.status === \"timeout\") {\n return \"timeout\";\n }\n\n if (sandpack.status !== \"running\") {\n return \"hidden\";\n }\n\n return loadingOverlayState;\n};","import _defineProperty from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { getDarkModePreference } from \"../utils/domUtils\";\nimport { hexToCSSRGBa } from \"../utils/stringUtils\";\nexport var codesandboxLightTheme = {\n palette: {\n activeText: \"#1f2933\",\n defaultText: \"#757678\",\n inactiveText: \"#e4e7eb\",\n activeBackground: \"#e4e7eb\",\n defaultBackground: \"#f8f9fb\",\n inputBackground: \"#ffffff\",\n accent: \"#64D2FF\",\n errorBackground: \"#ffcdca\",\n errorForeground: \"#811e18\"\n },\n syntax: {\n plain: \"#151515\",\n comment: {\n color: \"#999\",\n fontStyle: \"italic\"\n },\n keyword: \"#0971F1\",\n tag: \"#0971F1\",\n punctuation: \"#151515\",\n definition: \"#151515\",\n property: \"#151515\",\n static: \"#FF453A\",\n string: \"#BF5AF2\"\n },\n typography: {\n bodyFont: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n monoFont: '\"Fira Mono\", \"DejaVu Sans Mono\", Menlo, Consolas, \"Liberation Mono\", Monaco, \"Lucida Console\", monospace',\n fontSize: \"14px\"\n }\n};\nexport var aquaBlueTheme = {\n palette: {\n activeText: \"#1f2933\",\n defaultText: \"#737373\",\n inactiveText: \"#e4e7eb\",\n activeBackground: \"#e4e7eb\",\n defaultBackground: \"#f8f9fb\",\n inputBackground: \"#ffffff\",\n accent: \"#6caedd\",\n errorBackground: \"#ffcdca\",\n errorForeground: \"#811e18\"\n },\n syntax: {\n plain: \"#1F2933\",\n comment: {\n color: \"#A7B6C2\",\n fontStyle: \"italic\"\n },\n keyword: \"#1A56DB\",\n tag: \"#1A56DB\",\n punctuation: \"#394b59\",\n definition: \"#A23DAD\",\n property: \"#14919B\",\n static: \"#1A56DB\",\n string: \"#1992D4\"\n },\n typography: {\n bodyFont: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n monoFont: '\"Fira Mono\", \"DejaVu Sans Mono\", Menlo, Consolas, \"Liberation Mono\", Monaco, \"Lucida Console\", monospace',\n fontSize: \"14px\"\n }\n};\nexport var codesandboxDarkTheme = {\n palette: {\n activeText: \"#FFFFFF\",\n defaultText: \"#999999\",\n inactiveText: \"#343434\",\n activeBackground: \"#343434\",\n defaultBackground: \"#040404\",\n inputBackground: \"#242424\",\n accent: \"#6caedd\",\n errorBackground: \"#ffcdca\",\n errorForeground: \"#811e18\"\n },\n syntax: {\n plain: \"#FFFFFF\",\n comment: {\n color: \"#757575\",\n fontStyle: \"italic\"\n },\n keyword: \"#77B7D7\",\n tag: \"#DFAB5C\",\n punctuation: \"#ffffff\",\n definition: \"#86D9CA\",\n property: \"#77B7D7\",\n static: \"#C64640\",\n string: \"#977CDC\"\n },\n typography: {\n bodyFont: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n monoFont: '\"Fira Mono\", \"DejaVu Sans Mono\", Menlo, Consolas, \"Liberation Mono\", Monaco, \"Lucida Console\", monospace',\n fontSize: \"14px\"\n }\n};\nexport var nightOwlTheme = {\n palette: {\n activeText: \"rgb(197, 228, 253)\",\n defaultText: \"rgb(105, 136, 161)\",\n inactiveText: \"rgb(78, 82, 97)\",\n activeBackground: \"rgb(58, 62, 77)\",\n defaultBackground: \"rgb(1, 22, 39)\",\n inputBackground: \"rgb(11, 41, 66)\",\n accent: \"#7fdbca\",\n errorBackground: \"#ffcdca\",\n errorForeground: \"#811e18\"\n },\n syntax: {\n plain: \"#d6deeb\",\n comment: {\n color: \"#999999\",\n fontStyle: \"italic\"\n },\n keyword: {\n color: \"#c792ea\",\n fontStyle: \"italic\"\n },\n tag: \"#7fdbca\",\n punctuation: \"#7fdbca\",\n definition: \"#82aaff\",\n property: {\n color: \"#addb67\",\n fontStyle: \"italic\"\n },\n static: \"#f78c6c\",\n string: \"#ecc48d\"\n },\n typography: {\n bodyFont: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n monoFont: '\"Fira Mono\", \"DejaVu Sans Mono\", Menlo, Consolas, \"Liberation Mono\", Monaco, \"Lucida Console\", monospace',\n fontSize: \"14px\"\n }\n};\nexport var monokaiProTheme = {\n palette: {\n activeText: \"rgb(252, 252, 250)\",\n defaultText: \"rgb(147, 146, 147)\",\n inactiveText: \"#444344\",\n activeBackground: \"#444344\",\n defaultBackground: \"rgb(45, 42, 46)\",\n inputBackground: \"rgb(25, 24, 26)\",\n accent: \"rgb(255, 216, 102)\",\n errorBackground: \"#ffcdca\",\n errorForeground: \"#811e18\"\n },\n syntax: {\n plain: \"rgb(252, 252, 250)\",\n comment: {\n color: \"#757575\",\n fontStyle: \"italic\"\n },\n keyword: \"rgb(255, 97, 136)\",\n tag: \"rgb(120, 220, 232)\",\n punctuation: \"rgb(147, 146, 147)\",\n definition: \"rgb(169, 220, 118)\",\n property: {\n color: \"rgb(120, 220, 232)\",\n fontStyle: \"italic\"\n },\n static: \"rgb(171, 157, 242)\",\n string: \"rgb(255, 216, 102)\"\n },\n typography: {\n bodyFont: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n monoFont: '\"Fira Mono\", \"DejaVu Sans Mono\", Menlo, Consolas, \"Liberation Mono\", Monaco, \"Lucida Console\", monospace',\n fontSize: \"14px\"\n }\n};\nexport var SANDPACK_THEMES = {\n \"codesandbox-light\": codesandboxLightTheme,\n \"codesandbox-dark\": codesandboxDarkTheme,\n \"night-owl\": nightOwlTheme,\n \"aqua-blue\": aquaBlueTheme,\n \"monokai-pro\": monokaiProTheme\n};\nexport var createThemeObject = function createThemeObject(inputTheme) {\n var defaultLightTheme = codesandboxLightTheme;\n var defaultLightThemeKey = \"codesandbox-light\";\n var defaultDarkTheme = codesandboxDarkTheme;\n var defaultDarkThemeKey = \"codesandbox-dark\";\n\n if (inputTheme === undefined) {\n return {\n theme: defaultLightTheme,\n id: defaultLightThemeKey\n };\n }\n\n if (inputTheme === \"auto\") {\n return getDarkModePreference() ? {\n theme: defaultDarkTheme,\n id: defaultDarkThemeKey\n } : {\n theme: defaultLightTheme,\n id: defaultLightThemeKey\n };\n }\n\n if (typeof inputTheme === \"string\") {\n var predefinedTheme = SANDPACK_THEMES[inputTheme];\n\n if (!predefinedTheme) {\n throw new Error(\"Invalid theme '\".concat(inputTheme, \"' provided.\"));\n }\n\n return {\n theme: predefinedTheme,\n id: inputTheme !== null && inputTheme !== void 0 ? inputTheme : defaultLightThemeKey\n };\n }\n\n var theme = {\n palette: _objectSpread(_objectSpread({}, defaultLightTheme.palette), inputTheme === null || inputTheme === void 0 ? void 0 : inputTheme.palette),\n syntax: _objectSpread(_objectSpread({}, defaultLightTheme.syntax), inputTheme === null || inputTheme === void 0 ? void 0 : inputTheme.syntax),\n typography: _objectSpread(_objectSpread({}, defaultLightTheme.typography), inputTheme === null || inputTheme === void 0 ? void 0 : inputTheme.typography)\n };\n var id = simpleHashFunction(JSON.stringify(theme));\n return {\n theme: theme,\n id: \"sp-\".concat(id)\n };\n};\n\nvar simpleHashFunction = function simpleHashFunction(str) {\n var hash = 0;\n\n for (var i = 0; i < str.length; hash &= hash) {\n hash = 31 * hash + str.charCodeAt(i++);\n }\n\n return Math.abs(hash);\n}; // inactive fg and active bg are interchangable to limit the number of colors in the theme\n// bg-default-overlay is determined by adjusting the alpha channel on the default bg to 80%\n\n\nexport var getThemeStyleSheet = function getThemeStyleSheet(theme, themeId) {\n return \"\\n.sp-wrapper.sp-\".concat(themeId, \" {\\n --sp-colors-fg-active: \").concat(theme.palette.activeText, \";\\n --sp-colors-fg-default: \").concat(theme.palette.defaultText, \";\\n --sp-colors-fg-inactive: \").concat(theme.palette.inactiveText || theme.palette.activeBackground, \";\\n --sp-colors-bg-active: \").concat(theme.palette.activeBackground || theme.palette.inactiveText, \";\\n --sp-colors-bg-default: \").concat(theme.palette.defaultBackground, \";\\n --sp-colors-bg-default-overlay: \").concat(hexToCSSRGBa(theme.palette.defaultBackground, 0.8), \";\\n --sp-colors-bg-input: \").concat(theme.palette.inputBackground, \";\\n --sp-colors-accent: \").concat(theme.palette.accent, \";\\n --sp-colors-bg-error: \").concat(theme.palette.errorBackground, \";\\n --sp-colors-fg-error: \").concat(theme.palette.errorForeground, \";\\n --sp-font-size: \").concat(theme.typography.fontSize, \";\\n --sp-font-body: \").concat(theme.typography.bodyFont, \";\\n --sp-font-mono: \").concat(theme.typography.monoFont, \";\\n\");\n};\nexport var getSyntaxStyle = function getSyntaxStyle(token) {\n if (typeof token === \"string\") {\n return {\n color: token\n };\n }\n\n return token;\n};","import { useClasser } from \"@code-hike/classer\";\nimport * as React from \"react\";\nimport { createThemeObject, codesandboxLightTheme } from \"../themes\";\nimport { injectThemeStyleSheet } from \"../utils/domUtils\";\nvar SandpackThemeContext = React.createContext({\n theme: codesandboxLightTheme,\n id: \"codesandbox-light\"\n});\n\nvar SandpackThemeProvider = function SandpackThemeProvider(props) {\n var _createThemeObject = createThemeObject(props.theme),\n theme = _createThemeObject.theme,\n id = _createThemeObject.id;\n\n var c = useClasser(\"sp\"); // If theme is not explicitly set, don't inject any stylesheet\n\n if (props.theme) {\n injectThemeStyleSheet(theme, id);\n }\n\n return React.createElement(SandpackThemeContext.Provider, {\n value: {\n theme: theme,\n id: id\n }\n }, React.createElement(\"div\", {\n className: c(\"wrapper\", id)\n }, props.children));\n};\n\nvar SandpackThemeConsumer = SandpackThemeContext.Consumer;\nexport { SandpackThemeProvider, SandpackThemeConsumer, SandpackThemeContext };","import * as React from \"react\";\nexport var RunIcon = function RunIcon() {\n return React.createElement(\"svg\", {\n fill: \"currentColor\",\n height: \"24\",\n viewBox: \"0 0 17 16\",\n width: \"24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"path\", {\n d: \"M11.0792 8.1078C11.2793 8.25007 11.27 8.55012 11.0616 8.67981L6.02535 11.8135C5.79638 11.956 5.5 11.7913 5.5 11.5216L5.5 8.40703L5.5 4.80661C5.5 4.52735 5.81537 4.36463 6.04296 4.52647L11.0792 8.1078Z\"\n }));\n};\nexport var BackwardIcon = function BackwardIcon() {\n return React.createElement(\"svg\", {\n fill: \"currentColor\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"path\", {\n d: \"M8.99126 12.2106L14.0455 6.98196L13.2998 6.21057L7.5 12.2106L13.2998 18.2106L14.0455 17.3924L8.99126 12.2106Z\"\n }));\n};\nexport var ForwardIcon = function ForwardIcon() {\n return React.createElement(\"svg\", {\n fill: \"currentColor\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"path\", {\n d: \"M13.5087 12.2105L8.45455 17.4392L9.2002 18.2106L15 12.2106L9.2002 6.21057L8.45455 7.02875L13.5087 12.2105Z\"\n }));\n};\nexport var RefreshIcon = function RefreshIcon() {\n return React.createElement(\"svg\", {\n fill: \"currentColor\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M16.48 12.8571C16.0883 15.1705 14.1389 16.9286 11.7931 16.9286C9.16499 16.9286 7.03448 14.722 7.03448 12C7.03448 9.27803 9.16499 7.07143 11.7931 7.07143C13.6797 7.07143 15.3099 8.20855 16.0796 9.85714L14.2759 9.85714V11.1429H16.48H16.7586H17.5275H18V6.85714L16.7586 6.85714V8.90778C15.7449 7.16536 13.9004 6 11.7931 6C8.59366 6 6 8.68629 6 12C6 15.3137 8.59366 18 11.7931 18C14.7116 18 17.126 15.7648 17.5275 12.8571H16.48Z\",\n fillRule: \"evenodd\"\n }));\n};\nexport var FullScreenIcon = function FullScreenIcon() {\n return React.createElement(\"svg\", {\n fill: \"currentColor\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M11 5H6H5.70715H5V6V11H6L6 6.70706L10.2238 10.9309L10.9309 10.2238L6.70715 6H11V5ZM12.9957 18.9956L17.9957 18.9956H18.2886H18.9957V17.9956L18.9957 12.9956H17.9957V17.2885L13.8252 13.118L13.1181 13.8251L17.2886 17.9956L12.9957 17.9956V18.9956Z\",\n fillRule: \"evenodd\"\n }));\n};\nexport var CSBIcon = function CSBIcon() {\n return React.createElement(\"svg\", {\n fill: \"currentColor\",\n height: \"24\",\n viewBox: \"0 0 18 18\",\n width: \"24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"path\", {\n d: \"M3.24284 5.11427L8.63639 2.17808C8.92945 2.01854 9.28432 2.02264 9.57361 2.18889L14.7726 5.17673C15.011 5.3137 15.1579 5.56762 15.1579 5.84251V12.1884C15.1579 12.4639 15.0103 12.7183 14.7711 12.8551L9.38463 15.9346C9.1466 16.0707 8.85406 16.0696 8.61711 15.9316L3.22361 12.7912C2.9874 12.6537 2.8421 12.4009 2.8421 12.1276V5.7887C2.8421 5.50747 2.99584 5.24873 3.24284 5.11427Z\"\n }), React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M8.99649 9.06298V15.1165C9.10189 15.1165 9.17115 15.0936 9.26577 15.0396L14.113 12.2698C14.3044 12.1601 14.3824 11.9902 14.3824 11.7696V6.15302C14.3824 6.04235 14.3591 5.97615 14.3053 5.88373L9.15154 8.79576C9.05567 8.85054 8.99649 8.95253 8.99649 9.06298ZM11.6894 12.539C11.6894 12.6929 11.6317 12.7698 11.497 12.8468L9.88129 13.7701C9.76591 13.847 9.61201 13.8086 9.61201 13.6546V9.53835C9.61201 9.42824 9.7089 9.28555 9.80434 9.2306L13.4975 7.11477C13.6001 7.05573 13.6898 7.15029 13.6898 7.26865V9.46146C13.6898 9.5751 13.6362 9.67725 13.5359 9.73074L11.8817 10.6155C11.7814 10.669 11.6894 10.7711 11.6894 10.8848V12.539Z\",\n fill: \"#fff\",\n fillRule: \"evenodd\"\n }), React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M3.61069 11.7696V6.15297C3.61069 5.93209 3.72667 5.72398 3.91845 5.61439L8.61177 2.95996C8.71289 2.90638 8.88105 2.88303 8.99648 2.88303C9.11191 2.88303 9.28993 2.91161 9.38119 2.95997L14.036 5.61439C14.1281 5.66881 14.2533 5.79415 14.3053 5.88368L9.15033 8.8074C9.05447 8.86219 8.99648 8.96624 8.99648 9.07668V15.1165C8.89108 15.1165 8.78334 15.0936 8.68872 15.0395L3.95692 12.3082C3.76514 12.1985 3.61069 11.9904 3.61069 11.7696ZM4.30315 7.26859V9.46139C4.30315 9.61524 4.34162 9.6922 4.4955 9.76915L6.11123 10.6924C6.26511 10.7694 6.30358 10.8848 6.30358 11.0002V12.539C6.30358 12.6928 6.34205 12.7698 6.49593 12.8467L8.11167 13.77C8.26553 13.847 8.38096 13.8085 8.38096 13.6546V9.53835C8.38096 9.42292 8.34249 9.30749 8.18863 9.23059L4.57243 7.15319C4.45703 7.07625 4.30315 7.11472 4.30315 7.26859ZM10.6122 4.65264L9.18881 5.46051C9.07343 5.53745 8.91953 5.53745 8.80415 5.46051L7.38074 4.65264C7.28705 4.59968 7.16683 4.59995 7.07298 4.65264L5.30337 5.65286C5.14949 5.7298 5.14949 5.88368 5.30337 5.96062L8.84257 7.99953C8.9373 8.05375 9.05566 8.05375 9.15033 7.99953L12.6896 5.96062C12.805 5.88368 12.8435 5.7298 12.6896 5.65286L10.92 4.65264C10.8261 4.59995 10.7059 4.59968 10.6122 4.65264Z\",\n fill: \"#fff\",\n fillRule: \"evenodd\"\n }));\n};\nexport var DirectoryIcon = function DirectoryIcon(props) {\n return React.createElement(\"svg\", {\n height: \"20\",\n viewBox: \"0 0 1024 1024\",\n width: \"20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props.isOpen ? React.createElement(\"path\", {\n d: \"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2c-1.5-1.4-3.5-2.2-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32z m-180 0H238c-13 0-24.8 7.9-29.7 20L136 643.2V256h188.5l119.6 114.4H748V444z\",\n fill: \"currentColor\"\n }) : React.createElement(\"path\", {\n d: \"M880 298.4H521L403.7 186.2c-1.5-1.4-3.5-2.2-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32z\",\n fill: \"currentColor\"\n }));\n};\nexport var FileIcon = function FileIcon() {\n return React.createElement(\"svg\", {\n fill: \"currentColor\",\n height: \"20\",\n viewBox: \"0 0 1024 1024\",\n width: \"20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"path\", {\n d: \"M309.333333 192a32 32 0 0 0-32 32v576c0 17.664 14.336 32 32 32h384a32 32 0 0 0 32-32v-384h-128a96 96 0 0 1-96-96v-128h-192z m256 45.226667l114.773334 114.773333H597.333333a32 32 0 0 1-32-32V237.226667zM213.333333 224A96 96 0 0 1 309.333333 128h224a32 32 0 0 1 22.613334 9.386667l224 224c6.016 5.973333 9.386667 14.122667 9.386666 22.613333v416A96 96 0 0 1 693.333333 896h-384A96 96 0 0 1 213.333333 800V224z\"\n }));\n};","import { useClasser } from \"@code-hike/classer\";\nimport * as React from \"react\";\nimport { useCodeSandboxLink } from \"../hooks/useCodeSandboxLink\";\nimport { useSandpackTheme } from \"../hooks/useSandpackTheme\";\nimport { CSBIcon } from \"../icons\";\nimport { isDarkColor } from \"../utils/stringUtils\";\nexport var OpenInCodeSandboxButton = function OpenInCodeSandboxButton() {\n var url = useCodeSandboxLink();\n\n var _useSandpackTheme = useSandpackTheme(),\n theme = _useSandpackTheme.theme;\n\n var c = useClasser(\"sp\");\n var csbIconClass = isDarkColor(theme.palette.defaultBackground) ? \"csb-icon-dark\" : \"csb-icon-light\";\n return React.createElement(\"a\", {\n className: c(\"button\", \"icon-standalone\", csbIconClass),\n href: url,\n rel: \"noreferrer noopener\",\n target: \"_blank\",\n title: \"Open in CodeSandbox\"\n }, React.createElement(CSBIcon, null));\n};","import * as React from \"react\";\nimport { SandpackThemeContext } from \"../contexts/themeContext\";\nexport var useSandpackTheme = function useSandpackTheme() {\n var _React$useContext = React.useContext(SandpackThemeContext),\n theme = _React$useContext.theme,\n id = _React$useContext.id;\n\n return {\n theme: theme,\n themeId: id\n };\n};","import { useClasser } from \"@code-hike/classer\";\nimport * as React from \"react\";\nimport { useLoadingOverlayState } from \"../hooks/useLoadingOverlayState\";\nimport { OpenInCodeSandboxButton } from \"./OpenInCodeSandboxButton\";\nexport var LoadingOverlay = function LoadingOverlay(_ref) {\n var clientId = _ref.clientId;\n var loadingOverlayState = useLoadingOverlayState(clientId);\n var c = useClasser(\"sp\");\n\n if (loadingOverlayState === \"hidden\") {\n return null;\n }\n\n if (loadingOverlayState === \"timeout\") {\n return React.createElement(\"div\", {\n className: c(\"overlay\", \"error\")\n }, React.createElement(\"div\", {\n className: c(\"error-message\")\n }, \"Unable to establish connection with the sandpack bundler. Make sure you are online or try again later. If the problem persists, please report it via\", \" \", React.createElement(\"a\", {\n className: c(\"error-message\"),\n href: \"mailto:hello@codesandbox.io?subject=Sandpack Timeout Error\"\n }, \"email\"), \" \", \"or submit an issue on\", \" \", React.createElement(\"a\", {\n className: c(\"error-message\"),\n href: \"https://github.com/codesandbox/sandpack/issues\",\n rel: \"noreferrer noopener\",\n target: \"_blank\"\n }, \"GitHub.\")));\n }\n\n return React.createElement(\"div\", {\n className: c(\"overlay\", \"loading\"),\n style: {\n opacity: loadingOverlayState === \"visible\" ? 1 : 0,\n transition: \"opacity 0.5s ease-out\"\n }\n }, React.createElement(\"div\", {\n className: \"sp-cube-wrapper\",\n title: \"Open in CodeSandbox\"\n }, React.createElement(OpenInCodeSandboxButton, null), React.createElement(\"div\", {\n className: \"sp-cube\"\n }, React.createElement(\"div\", {\n className: \"sp-sides\"\n }, React.createElement(\"div\", {\n className: \"sp-top\"\n }), React.createElement(\"div\", {\n className: \"sp-right\"\n }), React.createElement(\"div\", {\n className: \"sp-bottom\"\n }), React.createElement(\"div\", {\n className: \"sp-left\"\n }), React.createElement(\"div\", {\n className: \"sp-front\"\n }), React.createElement(\"div\", {\n className: \"sp-back\"\n })))));\n};","import { useClasser } from \"@code-hike/classer\";\nimport * as React from \"react\";\nexport var SandpackStack = function SandpackStack(_ref) {\n var children = _ref.children,\n customStyle = _ref.customStyle;\n var c = useClasser(\"sp\");\n return React.createElement(\"div\", {\n className: c(\"stack\"),\n style: customStyle\n }, children);\n};","import _slicedToArray from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport { useClasser } from \"@code-hike/classer\";\nimport * as React from \"react\";\nimport { useSandpack } from \"../../hooks/useSandpack\";\nimport { BackwardIcon, ForwardIcon, RefreshIcon } from \"../../icons\";\nimport { splitUrl } from \"./utils\";\nexport var Navigator = function Navigator(_ref) {\n var clientId = _ref.clientId,\n onURLChange = _ref.onURLChange;\n\n var _a;\n\n var _React$useState = React.useState(\"\"),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n baseUrl = _React$useState2[0],\n setBaseUrl = _React$useState2[1];\n\n var _useSandpack = useSandpack(),\n sandpack = _useSandpack.sandpack,\n dispatch = _useSandpack.dispatch,\n listen = _useSandpack.listen;\n\n var _React$useState3 = React.useState((_a = sandpack.startRoute) !== null && _a !== void 0 ? _a : \"/\"),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n relativeUrl = _React$useState4[0],\n setRelativeUrl = _React$useState4[1];\n\n var _React$useState5 = React.useState(false),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n backEnabled = _React$useState6[0],\n setBackEnabled = _React$useState6[1];\n\n var _React$useState7 = React.useState(false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n forwardEnabled = _React$useState8[0],\n setForwardEnabled = _React$useState8[1];\n\n var c = useClasser(\"sp\");\n React.useEffect(function () {\n var unsub = listen(function (message) {\n if (message.type === \"urlchange\") {\n var url = message.url,\n back = message.back,\n forward = message.forward;\n\n var _splitUrl = splitUrl(url),\n _splitUrl2 = _slicedToArray(_splitUrl, 2),\n newBaseUrl = _splitUrl2[0],\n newRelativeUrl = _splitUrl2[1];\n\n setBaseUrl(newBaseUrl);\n setRelativeUrl(newRelativeUrl);\n setBackEnabled(back);\n setForwardEnabled(forward);\n }\n }, clientId);\n return function () {\n return unsub();\n };\n }, []);\n\n var handleInputChange = function handleInputChange(e) {\n var path = e.target.value.startsWith(\"/\") ? e.target.value : \"/\".concat(e.target.value);\n setRelativeUrl(path);\n };\n\n var handleKeyDown = function handleKeyDown(e) {\n if (e.code === \"Enter\") {\n // Enter\n e.preventDefault();\n e.stopPropagation();\n\n if (typeof onURLChange === \"function\") {\n onURLChange(baseUrl + e.currentTarget.value);\n }\n }\n };\n\n var handleRefresh = function handleRefresh() {\n dispatch({\n type: \"refresh\"\n });\n };\n\n var handleBack = function handleBack() {\n dispatch({\n type: \"urlback\"\n });\n };\n\n var handleForward = function handleForward() {\n dispatch({\n type: \"urlforward\"\n });\n };\n\n return React.createElement(\"div\", {\n className: c(\"navigator\")\n }, React.createElement(\"button\", {\n \"aria-label\": \"Go back one page\",\n className: c(\"button\", \"icon\"),\n disabled: !backEnabled,\n onClick: handleBack,\n type: \"button\"\n }, React.createElement(BackwardIcon, null)), React.createElement(\"button\", {\n \"aria-label\": \"Go forward one page\",\n className: c(\"button\", \"icon\"),\n disabled: !forwardEnabled,\n onClick: handleForward,\n type: \"button\"\n }, React.createElement(ForwardIcon, null)), React.createElement(\"button\", {\n \"aria-label\": \"Refresh page\",\n className: c(\"button\", \"icon\"),\n onClick: handleRefresh,\n type: \"button\"\n }, React.createElement(RefreshIcon, null)), React.createElement(\"input\", {\n \"aria-label\": \"Current Sandpack URL\",\n className: c(\"input\"),\n name: \"Current Sandpack URL\",\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n type: \"text\",\n value: relativeUrl\n }));\n};","export var splitUrl = function splitUrl(url) {\n var match = url.match(/(https?:\\/\\/.*?)\\//);\n\n if (match && match[1]) {\n return [match[1], url.replace(match[1], \"\")];\n }\n\n return [url, \"/\"];\n};","import { useClasser } from \"@code-hike/classer\";\nimport * as React from \"react\";\nimport { useSandpackNavigation } from \"../../hooks/useSandpackNavigation\";\nimport { RefreshIcon } from \"../../icons\";\nexport var RefreshButton = function RefreshButton(_ref) {\n var clientId = _ref.clientId;\n\n var _useSandpackNavigatio = useSandpackNavigation(clientId),\n refresh = _useSandpackNavigatio.refresh;\n\n var c = useClasser(\"sp\");\n return React.createElement(\"button\", {\n className: c(\"button\", \"icon-standalone\"),\n onClick: refresh,\n title: \"Refresh Sandpack\",\n type: \"button\"\n }, React.createElement(RefreshIcon, null));\n};","import { useSandpack } from \"./useSandpack\";\nexport var useSandpackNavigation = function useSandpackNavigation(clientId) {\n var _useSandpack = useSandpack(),\n dispatch = _useSandpack.dispatch;\n\n return {\n refresh: function refresh() {\n return dispatch({\n type: \"refresh\"\n }, clientId);\n },\n back: function back() {\n return dispatch({\n type: \"urlback\"\n }, clientId);\n },\n forward: function forward() {\n return dispatch({\n type: \"urlforward\"\n }, clientId);\n }\n };\n};","import _defineProperty from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useClasser } from \"@code-hike/classer\";\nimport * as React from \"react\";\nimport { ErrorOverlay } from \"../../common/ErrorOverlay\";\nimport { LoadingOverlay } from \"../../common/LoadingOverlay\";\nimport { OpenInCodeSandboxButton } from \"../../common/OpenInCodeSandboxButton\";\nimport { SandpackStack } from \"../../common/Stack\";\nimport { useSandpack } from \"../../hooks/useSandpack\";\nimport { generateRandomId } from \"../../utils/stringUtils\";\nimport { Navigator } from \"../Navigator\";\nimport { RefreshButton } from \"./RefreshButton\";\nexport { RefreshButton };\nexport var SandpackPreview = function SandpackPreview(_ref) {\n var customStyle = _ref.customStyle,\n _ref$showNavigator = _ref.showNavigator,\n showNavigator = _ref$showNavigator === void 0 ? false : _ref$showNavigator,\n _ref$showRefreshButto = _ref.showRefreshButton,\n showRefreshButton = _ref$showRefreshButto === void 0 ? true : _ref$showRefreshButto,\n _ref$showOpenInCodeSa = _ref.showOpenInCodeSandbox,\n showOpenInCodeSandbox = _ref$showOpenInCodeSa === void 0 ? true : _ref$showOpenInCodeSa,\n _ref$showSandpackErro = _ref.showSandpackErrorOverlay,\n showSandpackErrorOverlay = _ref$showSandpackErro === void 0 ? true : _ref$showSandpackErro,\n _ref$viewportSize = _ref.viewportSize,\n viewportSize = _ref$viewportSize === void 0 ? \"auto\" : _ref$viewportSize,\n _ref$viewportOrientat = _ref.viewportOrientation,\n viewportOrientation = _ref$viewportOrientat === void 0 ? \"portrait\" : _ref$viewportOrientat;\n\n var _useSandpack = useSandpack(),\n sandpack = _useSandpack.sandpack,\n listen = _useSandpack.listen;\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n iframeComputedHeight = _React$useState2[0],\n setComputedAutoHeight = _React$useState2[1];\n\n var status = sandpack.status,\n registerBundler = sandpack.registerBundler,\n unregisterBundler = sandpack.unregisterBundler,\n errorScreenRegisteredRef = sandpack.errorScreenRegisteredRef,\n openInCSBRegisteredRef = sandpack.openInCSBRegisteredRef,\n loadingScreenRegisteredRef = sandpack.loadingScreenRegisteredRef;\n var c = useClasser(\"sp\");\n var clientId = React.useRef(generateRandomId());\n var iframeRef = React.useRef(null); // SandpackPreview immediately registers the custom screens/components so the bundler does not render any of them\n\n openInCSBRegisteredRef.current = true;\n errorScreenRegisteredRef.current = true;\n loadingScreenRegisteredRef.current = true;\n React.useEffect(function () {\n var iframeElement = iframeRef.current;\n registerBundler(iframeElement, clientId.current);\n var unsub = listen(function (message) {\n if (message.type === \"resize\") {\n setComputedAutoHeight(message.height);\n }\n }, clientId.current);\n return function () {\n unsub();\n unregisterBundler(clientId.current);\n };\n }, []);\n\n var handleNewURL = function handleNewURL(newUrl) {\n if (!iframeRef.current) {\n return;\n }\n\n iframeRef.current.src = newUrl;\n };\n\n var viewportStyle = computeViewportSize(viewportSize, viewportOrientation);\n return React.createElement(SandpackStack, {\n customStyle: _objectSpread(_objectSpread(_objectSpread({}, customStyle), viewportStyle), {}, {\n display: status !== \"idle\" ? \"flex\" : \"none\"\n })\n }, showNavigator ? React.createElement(Navigator, {\n clientId: clientId.current,\n onURLChange: handleNewURL\n }) : null, React.createElement(\"div\", {\n className: c(\"preview-container\")\n }, React.createElement(\"iframe\", {\n ref: iframeRef,\n className: c(\"preview-iframe\"),\n style: {\n // set height based on the content only in auto mode\n // and when the computed height was returned by the bundler\n height: viewportSize === \"auto\" && iframeComputedHeight ? iframeComputedHeight : undefined\n },\n title: \"Sandpack Preview\"\n }), showSandpackErrorOverlay ? React.createElement(ErrorOverlay, null) : null, React.createElement(\"div\", {\n className: c(\"preview-actions\")\n }, !showNavigator && showRefreshButton && status === \"running\" ? React.createElement(RefreshButton, {\n clientId: clientId.current\n }) : null, showOpenInCodeSandbox ? React.createElement(OpenInCodeSandboxButton, null) : null), React.createElement(LoadingOverlay, {\n clientId: clientId.current\n })));\n};\nvar VIEWPORT_SIZE_PRESET_MAP = {\n \"iPhone X\": {\n x: 375,\n y: 812\n },\n iPad: {\n x: 768,\n y: 1024\n },\n \"Pixel 2\": {\n x: 411,\n y: 731\n },\n \"Moto G4\": {\n x: 360,\n y: 640\n },\n \"Surface Duo\": {\n x: 540,\n y: 720\n }\n};\n\nvar computeViewportSize = function computeViewportSize(viewport, orientation) {\n if (viewport === \"auto\") {\n return {};\n }\n\n if (typeof viewport === \"string\") {\n var _VIEWPORT_SIZE_PRESET = VIEWPORT_SIZE_PRESET_MAP[viewport],\n x = _VIEWPORT_SIZE_PRESET.x,\n y = _VIEWPORT_SIZE_PRESET.y;\n return orientation === \"portrait\" ? {\n width: x,\n height: y\n } : {\n width: y,\n height: x\n };\n }\n\n return viewport;\n};","import React from 'react';\nimport { useClasser, ClasserProvider } from '@code-hike/classer';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nvar MiniFrame = React.forwardRef(function (_a, ref) {\n var title = _a.title,\n children = _a.children,\n titleBar = _a.titleBar,\n classes = _a.classes,\n _b = _a.zoom,\n zoom = _b === void 0 ? 1 : _b,\n overflow = _a.overflow,\n props = __rest(_a, [\"title\", \"children\", \"titleBar\", \"classes\", \"zoom\", \"overflow\"]);\n\n var c = useClasser(\"ch-frame\", classes);\n var bar = titleBar || React.createElement(DefaultTitleBar, {\n title: title\n });\n var zoomStyle = {\n \"--ch-frame-zoom\": zoom,\n overflow: overflow\n };\n return React.createElement(ClasserProvider, {\n classes: classes\n }, React.createElement(\"div\", _assign({}, props, {\n ref: ref\n }), React.createElement(\"div\", {\n className: c(\"\")\n }, React.createElement(\"div\", {\n className: c(\"title-bar\")\n }, bar), React.createElement(\"div\", {\n className: c(\"content\")\n }, React.createElement(\"div\", {\n className: c(\"zoom\"),\n style: zoomStyle\n }, children)))));\n});\n\nfunction DefaultTitleBar(_a) {\n var title = _a.title;\n var c = useClasser(\"ch-frame\");\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: c(\"left-bar\")\n }, React.createElement(FrameButtons, null)), React.createElement(\"div\", {\n className: c(\"middle-bar\")\n }, title), React.createElement(\"div\", {\n className: c(\"right-bar\")\n }));\n}\n\nfunction FrameButtons() {\n var c = useClasser(\"ch-frame\");\n return React.createElement(\"div\", {\n className: c(\"buttons\")\n }, React.createElement(\"div\", {\n className: c(\"button\", \"button-left\")\n }), React.createElement(\"div\", {\n className: c(\"button-space\")\n }), React.createElement(\"div\", {\n className: c(\"button\", \"button-middle\")\n }), React.createElement(\"div\", {\n className: c(\"button-space\")\n }), React.createElement(\"div\", {\n className: c(\"button\", \"button-right\")\n }));\n}\n\nexport { FrameButtons, MiniFrame };","function map(tween, fn) {\n return {\n prev: fn(tween.prev, \"prev\"),\n next: fn(tween.next, \"next\")\n };\n}\n\nfunction withDefault(t, deft) {\n return {\n prev: (t === null || t === void 0 ? void 0 : t.prev) === undefined ? deft : t.prev,\n next: (t === null || t === void 0 ? void 0 : t.next) === undefined ? deft : t.next\n };\n}\n\nfunction mapWithDefault(tween, deft, fn) {\n return map(withDefault(tween, deft), fn);\n}\n\nexport { map, mapWithDefault, withDefault };","import _inherits from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _asyncToGenerator from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _classCallCheck from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/createClass\";\n\nvar _FONT_STYLE_TO_CSS;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport _regeneratorRuntime from \"/workspace/node_modules/gatsby/node_modules/@babel/runtime/regenerator\";\nimport { loadWASM, OnigScanner, OnigString } from 'onigasm';\nimport { INITIAL, Registry as Registry$1 } from 'vscode-textmate';\nvar themes = ['css-variables', 'dark-plus', 'dracula-soft', 'dracula', 'github-dark-dimmed', 'github-dark', 'github-light', 'light-plus', 'material-darker', 'material-default', 'material-lighter', 'material-ocean', 'material-palenight', 'min-dark', 'min-light', 'monokai', 'nord', 'one-dark-pro', 'poimandres', 'slack-dark', 'slack-ochin', 'solarized-dark', 'solarized-light', 'vitesse-dark', 'vitesse-light'];\nvar languages = [{\n id: 'abap',\n scopeName: 'source.abap',\n path: 'abap.tmLanguage.json',\n samplePath: 'abap.sample'\n}, {\n id: 'actionscript-3',\n scopeName: 'source.actionscript.3',\n path: 'actionscript-3.tmLanguage.json',\n samplePath: 'actionscript-3.sample'\n}, {\n id: 'ada',\n scopeName: 'source.ada',\n path: 'ada.tmLanguage.json',\n samplePath: 'ada.sample'\n}, {\n id: 'apache',\n scopeName: 'source.apacheconf',\n path: 'apache.tmLanguage.json'\n}, {\n id: 'apex',\n scopeName: 'source.apex',\n path: 'apex.tmLanguage.json',\n samplePath: 'apex.sample'\n}, {\n id: 'apl',\n scopeName: 'source.apl',\n path: 'apl.tmLanguage.json',\n embeddedLangs: ['html', 'xml', 'css', 'javascript', 'json']\n}, {\n id: 'applescript',\n scopeName: 'source.applescript',\n path: 'applescript.tmLanguage.json',\n samplePath: 'applescript.sample'\n}, {\n id: 'asm',\n scopeName: 'source.asm.x86_64',\n path: 'asm.tmLanguage.json',\n samplePath: 'asm.sample'\n}, {\n id: 'astro',\n scopeName: 'text.html.astro',\n path: 'astro.tmLanguage.json',\n embeddedLangs: ['css', 'sass', 'scss', 'tsx']\n}, {\n id: 'awk',\n scopeName: 'source.awk',\n path: 'awk.tmLanguage.json',\n samplePath: 'awk.sample'\n}, {\n id: 'bat',\n scopeName: 'source.batchfile',\n path: 'bat.tmLanguage.json',\n samplePath: 'bat.sample',\n aliases: ['batch']\n}, {\n id: 'c',\n scopeName: 'source.c',\n path: 'c.tmLanguage.json',\n samplePath: 'c.sample'\n}, {\n id: 'clojure',\n scopeName: 'source.clojure',\n path: 'clojure.tmLanguage.json',\n samplePath: 'clojure.sample',\n aliases: ['clj']\n}, {\n id: 'cobol',\n scopeName: 'source.cobol',\n path: 'cobol.tmLanguage.json',\n samplePath: 'cobol.sample',\n embeddedLangs: ['sql', 'html', 'java']\n}, {\n id: 'coffee',\n scopeName: 'source.coffee',\n path: 'coffee.tmLanguage.json',\n samplePath: 'coffee.sample',\n embeddedLangs: ['javascript']\n}, {\n id: 'cpp',\n scopeName: 'source.cpp',\n path: 'cpp.tmLanguage.json',\n samplePath: 'cpp.sample',\n embeddedLangs: ['sql']\n}, {\n id: 'crystal',\n scopeName: 'source.crystal',\n path: 'crystal.tmLanguage.json',\n samplePath: 'crystal.sample',\n embeddedLangs: ['html', 'sql', 'css', 'c', 'javascript', 'shellscript']\n}, {\n id: 'csharp',\n scopeName: 'source.cs',\n path: 'csharp.tmLanguage.json',\n samplePath: 'csharp.sample',\n aliases: ['c#']\n}, {\n id: 'css',\n scopeName: 'source.css',\n path: 'css.tmLanguage.json',\n samplePath: 'css.sample'\n}, {\n id: 'd',\n scopeName: 'source.d',\n path: 'd.tmLanguage.json',\n samplePath: 'd.sample'\n}, {\n id: 'dart',\n scopeName: 'source.dart',\n path: 'dart.tmLanguage.json',\n samplePath: 'dart.sample'\n}, {\n id: 'diff',\n scopeName: 'source.diff',\n path: 'diff.tmLanguage.json',\n samplePath: 'diff.sample'\n}, {\n id: 'docker',\n scopeName: 'source.dockerfile',\n path: 'docker.tmLanguage.json',\n samplePath: 'docker.sample'\n}, {\n id: 'dream-maker',\n scopeName: 'source.dm',\n path: 'dream-maker.tmLanguage.json'\n}, {\n id: 'elixir',\n scopeName: 'source.elixir',\n path: 'elixir.tmLanguage.json',\n samplePath: 'elixir.sample',\n embeddedLangs: ['html']\n}, {\n id: 'elm',\n scopeName: 'source.elm',\n path: 'elm.tmLanguage.json',\n samplePath: 'elm.sample'\n}, {\n id: 'erb',\n scopeName: 'text.html.erb',\n path: 'erb.tmLanguage.json',\n samplePath: 'erb.sample',\n embeddedLangs: ['html', 'ruby']\n}, {\n id: 'erlang',\n scopeName: 'source.erlang',\n path: 'erlang.tmLanguage.json',\n samplePath: 'erlang.sample'\n}, {\n id: 'fish',\n scopeName: 'source.fish',\n path: 'fish.tmLanguage.json',\n samplePath: 'fish.sample'\n}, {\n id: 'fsharp',\n scopeName: 'source.fsharp',\n path: 'fsharp.tmLanguage.json',\n samplePath: 'fsharp.sample',\n aliases: ['f#'],\n embeddedLangs: ['markdown']\n}, {\n id: 'gherkin',\n scopeName: 'text.gherkin.feature',\n path: 'gherkin.tmLanguage.json'\n}, {\n id: 'git-commit',\n scopeName: 'text.git-commit',\n path: 'git-commit.tmLanguage.json',\n embeddedLangs: ['diff']\n}, {\n id: 'git-rebase',\n scopeName: 'text.git-rebase',\n path: 'git-rebase.tmLanguage.json',\n embeddedLangs: ['shellscript']\n}, {\n id: 'gnuplot',\n scopeName: 'source.gnuplot',\n path: 'gnuplot.tmLanguage.json'\n}, {\n id: 'go',\n scopeName: 'source.go',\n path: 'go.tmLanguage.json',\n samplePath: 'go.sample'\n}, {\n id: 'graphql',\n scopeName: 'source.graphql',\n path: 'graphql.tmLanguage.json',\n embeddedLangs: ['javascript', 'typescript', 'jsx', 'tsx']\n}, {\n id: 'groovy',\n scopeName: 'source.groovy',\n path: 'groovy.tmLanguage.json'\n}, {\n id: 'hack',\n scopeName: 'source.hack',\n path: 'hack.tmLanguage.json',\n embeddedLangs: ['html', 'sql']\n}, {\n id: 'haml',\n scopeName: 'text.haml',\n path: 'haml.tmLanguage.json',\n embeddedLangs: ['ruby', 'javascript', 'sass', 'coffee', 'markdown', 'css']\n}, {\n id: 'handlebars',\n scopeName: 'text.html.handlebars',\n path: 'handlebars.tmLanguage.json',\n aliases: ['hbs'],\n embeddedLangs: ['html', 'css', 'javascript', 'yaml']\n}, {\n id: 'haskell',\n scopeName: 'source.haskell',\n path: 'haskell.tmLanguage.json'\n}, {\n id: 'hcl',\n scopeName: 'source.hcl',\n path: 'hcl.tmLanguage.json'\n}, {\n id: 'hlsl',\n scopeName: 'source.hlsl',\n path: 'hlsl.tmLanguage.json'\n}, {\n id: 'html',\n scopeName: 'text.html.basic',\n path: 'html.tmLanguage.json',\n samplePath: 'html.sample',\n embeddedLangs: ['javascript', 'css']\n}, {\n id: 'ini',\n scopeName: 'source.ini',\n path: 'ini.tmLanguage.json'\n}, {\n id: 'java',\n scopeName: 'source.java',\n path: 'java.tmLanguage.json',\n samplePath: 'java.sample'\n}, {\n id: 'javascript',\n scopeName: 'source.js',\n path: 'javascript.tmLanguage.json',\n samplePath: 'javascript.sample',\n aliases: ['js']\n}, {\n id: 'jinja-html',\n scopeName: 'text.html.jinja',\n path: 'jinja-html.tmLanguage.json',\n embeddedLangs: ['html']\n}, {\n id: 'json',\n scopeName: 'source.json',\n path: 'json.tmLanguage.json'\n}, {\n id: 'jsonc',\n scopeName: 'source.json.comments',\n path: 'jsonc.tmLanguage.json'\n}, {\n id: 'jsonnet',\n scopeName: 'source.jsonnet',\n path: 'jsonnet.tmLanguage.json'\n}, {\n id: 'jssm',\n scopeName: 'source.jssm',\n path: 'jssm.tmLanguage.json',\n samplePath: 'jssm.sample',\n aliases: ['fsl']\n}, {\n id: 'jsx',\n scopeName: 'source.js.jsx',\n path: 'jsx.tmLanguage.json'\n}, {\n id: 'julia',\n scopeName: 'source.julia',\n path: 'julia.tmLanguage.json',\n embeddedLangs: ['cpp', 'python', 'javascript', 'r', 'sql']\n}, {\n id: 'jupyter',\n scopeName: 'source.jupyter',\n path: 'jupyter.tmLanguage.json',\n embeddedLangs: ['json']\n}, {\n id: 'kotlin',\n scopeName: 'source.kotlin',\n path: 'kotlin.tmLanguage.json'\n}, {\n id: 'latex',\n scopeName: 'text.tex.latex',\n path: 'latex.tmLanguage.json',\n embeddedLangs: ['tex', 'css', 'html', 'java', 'javascript', 'typescript', 'lua', 'python', 'julia', 'ruby', 'xml', 'yaml', 'cpp', 'haskell', 'scala', 'gnuplot']\n}, {\n id: 'less',\n scopeName: 'source.css.less',\n path: 'less.tmLanguage.json',\n embeddedLangs: ['css']\n}, {\n id: 'lisp',\n scopeName: 'source.lisp',\n path: 'lisp.tmLanguage.json'\n}, {\n id: 'logo',\n scopeName: 'source.logo',\n path: 'logo.tmLanguage.json'\n}, {\n id: 'lua',\n scopeName: 'source.lua',\n path: 'lua.tmLanguage.json',\n embeddedLangs: ['c']\n}, {\n id: 'make',\n scopeName: 'source.makefile',\n path: 'make.tmLanguage.json',\n aliases: ['makefile']\n}, {\n id: 'markdown',\n scopeName: 'text.html.markdown',\n path: 'markdown.tmLanguage.json',\n aliases: ['md'],\n embeddedLangs: ['css', 'html', 'ini', 'java', 'lua', 'make', 'perl', 'r', 'ruby', 'php', 'sql', 'vb', 'xml', 'xsl', 'yaml', 'bat', 'clojure', 'coffee', 'c', 'cpp', 'diff', 'docker', 'git-commit', 'git-rebase', 'go', 'groovy', 'pug', 'javascript', 'json', 'jsonc', 'less', 'objective-c', 'swift', 'scss', 'raku', 'powershell', 'python', 'rust', 'scala', 'shellscript', 'typescript', 'tsx', 'csharp', 'fsharp', 'dart', 'handlebars', 'erlang', 'elixir']\n}, {\n id: 'matlab',\n scopeName: 'source.matlab',\n path: 'matlab.tmLanguage.json'\n}, {\n id: 'mdx',\n scopeName: 'text.html.markdown.jsx',\n path: 'mdx.tmLanguage.json',\n embeddedLangs: ['jsx', 'markdown']\n}, {\n id: 'nginx',\n scopeName: 'source.nginx',\n path: 'nginx.tmLanguage.json'\n}, {\n id: 'nim',\n scopeName: 'source.nim',\n path: 'nim.tmLanguage.json',\n embeddedLangs: ['c', 'html', 'xml', 'javascript', 'css', 'markdown']\n}, {\n id: 'nix',\n scopeName: 'source.nix',\n path: 'nix.tmLanguage.json'\n}, {\n id: 'objective-c',\n scopeName: 'source.objc',\n path: 'objective-c.tmLanguage.json',\n aliases: ['objc']\n}, {\n id: 'objective-cpp',\n scopeName: 'source.objcpp',\n path: 'objective-cpp.tmLanguage.json'\n}, {\n id: 'ocaml',\n scopeName: 'source.ocaml',\n path: 'ocaml.tmLanguage.json'\n}, {\n id: 'pascal',\n scopeName: 'source.pascal',\n path: 'pascal.tmLanguage.json'\n}, {\n id: 'perl',\n scopeName: 'source.perl',\n path: 'perl.tmLanguage.json',\n embeddedLangs: ['html', 'xml', 'css', 'javascript', 'sql']\n}, {\n id: 'php',\n scopeName: 'source.php',\n path: 'php.tmLanguage.json',\n embeddedLangs: ['html', 'xml', 'sql', 'javascript', 'json', 'css']\n}, {\n id: 'plsql',\n scopeName: 'source.plsql.oracle',\n path: 'plsql.tmLanguage.json'\n}, {\n id: 'postcss',\n scopeName: 'source.css.postcss',\n path: 'postcss.tmLanguage.json'\n}, {\n id: 'powershell',\n scopeName: 'source.powershell',\n path: 'powershell.tmLanguage.json',\n aliases: ['ps', 'ps1']\n}, {\n id: 'prisma',\n scopeName: 'source.prisma',\n path: 'prisma.tmLanguage.json',\n samplePath: 'prisma.sample'\n}, {\n id: 'prolog',\n scopeName: 'source.prolog',\n path: 'prolog.tmLanguage.json'\n}, {\n id: 'pug',\n scopeName: 'text.pug',\n path: 'pug.tmLanguage.json',\n aliases: ['jade'],\n embeddedLangs: ['javascript', 'css', 'sass', 'stylus', 'coffee', 'html']\n}, {\n id: 'puppet',\n scopeName: 'source.puppet',\n path: 'puppet.tmLanguage.json'\n}, {\n id: 'purescript',\n scopeName: 'source.purescript',\n path: 'purescript.tmLanguage.json'\n}, {\n id: 'python',\n scopeName: 'source.python',\n path: 'python.tmLanguage.json',\n samplePath: 'python.sample',\n aliases: ['py']\n}, {\n id: 'r',\n scopeName: 'source.r',\n path: 'r.tmLanguage.json'\n}, {\n id: 'raku',\n scopeName: 'source.perl.6',\n path: 'raku.tmLanguage.json',\n aliases: ['perl6']\n}, {\n id: 'razor',\n scopeName: 'text.aspnetcorerazor',\n path: 'razor.tmLanguage.json',\n embeddedLangs: ['html', 'csharp']\n}, {\n id: 'riscv',\n scopeName: 'source.riscv',\n path: 'riscv.tmLanguage.json'\n}, {\n id: 'ruby',\n scopeName: 'source.ruby',\n path: 'ruby.tmLanguage.json',\n samplePath: 'ruby.sample',\n aliases: ['rb'],\n embeddedLangs: ['html', 'xml', 'sql', 'css', 'c', 'javascript', 'shellscript', 'lua']\n}, {\n id: 'rust',\n scopeName: 'source.rust',\n path: 'rust.tmLanguage.json'\n}, {\n id: 'sas',\n scopeName: 'source.sas',\n path: 'sas.tmLanguage.json',\n embeddedLangs: ['sql']\n}, {\n id: 'sass',\n scopeName: 'source.sass',\n path: 'sass.tmLanguage.json'\n}, {\n id: 'scala',\n scopeName: 'source.scala',\n path: 'scala.tmLanguage.json'\n}, {\n id: 'scheme',\n scopeName: 'source.scheme',\n path: 'scheme.tmLanguage.json'\n}, {\n id: 'scss',\n scopeName: 'source.css.scss',\n path: 'scss.tmLanguage.json',\n embeddedLangs: ['css']\n}, {\n id: 'shaderlab',\n scopeName: 'source.shaderlab',\n path: 'shaderlab.tmLanguage.json',\n aliases: ['shader'],\n embeddedLangs: ['hlsl']\n}, {\n id: 'shellscript',\n scopeName: 'source.shell',\n path: 'shellscript.tmLanguage.json',\n aliases: ['shell', 'bash', 'sh', 'zsh'],\n embeddedLangs: ['ruby', 'python', 'applescript', 'html', 'markdown']\n}, {\n id: 'smalltalk',\n scopeName: 'source.smalltalk',\n path: 'smalltalk.tmLanguage.json'\n}, {\n id: 'solidity',\n scopeName: 'source.solidity',\n path: 'solidity.tmLanguage.json'\n}, {\n id: 'sparql',\n scopeName: 'source.sparql',\n path: 'sparql.tmLanguage.json',\n samplePath: 'sparql.sample',\n embeddedLangs: ['turtle']\n}, {\n id: 'sql',\n scopeName: 'source.sql',\n path: 'sql.tmLanguage.json'\n}, {\n id: 'ssh-config',\n scopeName: 'source.ssh-config',\n path: 'ssh-config.tmLanguage.json'\n}, {\n id: 'stylus',\n scopeName: 'source.stylus',\n path: 'stylus.tmLanguage.json',\n aliases: ['styl']\n}, {\n id: 'svelte',\n scopeName: 'source.svelte',\n path: 'svelte.tmLanguage.json',\n embeddedLangs: ['javascript', 'typescript', 'coffee', 'stylus', 'sass', 'css', 'scss', 'less', 'postcss', 'pug', 'markdown']\n}, {\n id: 'swift',\n scopeName: 'source.swift',\n path: 'swift.tmLanguage.json'\n}, {\n id: 'system-verilog',\n scopeName: 'source.systemverilog',\n path: 'system-verilog.tmLanguage.json'\n}, {\n id: 'tcl',\n scopeName: 'source.tcl',\n path: 'tcl.tmLanguage.json'\n}, {\n id: 'tex',\n scopeName: 'text.tex',\n path: 'tex.tmLanguage.json',\n embeddedLangs: ['r']\n}, {\n id: 'toml',\n scopeName: 'source.toml',\n path: 'toml.tmLanguage.json'\n}, {\n id: 'tsx',\n scopeName: 'source.tsx',\n path: 'tsx.tmLanguage.json',\n samplePath: 'tsx.sample'\n}, {\n id: 'turtle',\n scopeName: 'source.turtle',\n path: 'turtle.tmLanguage.json',\n samplePath: 'turtle.sample'\n}, {\n id: 'twig',\n scopeName: 'text.html.twig',\n path: 'twig.tmLanguage.json',\n embeddedLangs: ['css', 'javascript', 'php', 'python', 'ruby']\n}, {\n id: 'typescript',\n scopeName: 'source.ts',\n path: 'typescript.tmLanguage.json',\n aliases: ['ts']\n}, {\n id: 'vb',\n scopeName: 'source.asp.vb.net',\n path: 'vb.tmLanguage.json',\n aliases: ['cmd']\n}, {\n id: 'verilog',\n scopeName: 'source.verilog',\n path: 'verilog.tmLanguage.json'\n}, {\n id: 'vhdl',\n scopeName: 'source.vhdl',\n path: 'vhdl.tmLanguage.json'\n}, {\n id: 'viml',\n scopeName: 'source.viml',\n path: 'viml.tmLanguage.json'\n}, {\n id: 'vue-html',\n scopeName: 'text.html.vue-html',\n path: 'vue-html.tmLanguage.json',\n embeddedLangs: ['vue', 'javascript']\n}, {\n id: 'vue',\n scopeName: 'source.vue',\n path: 'vue.tmLanguage.json',\n embeddedLangs: ['json', 'markdown', 'pug', 'haml', 'vue-html', 'sass', 'scss', 'less', 'stylus', 'postcss', 'css', 'typescript', 'coffee', 'javascript']\n}, {\n id: 'wasm',\n scopeName: 'source.wat',\n path: 'wasm.tmLanguage.json'\n}, {\n id: 'wenyan',\n scopeName: 'source.wenyan',\n path: 'wenyan.tmLanguage.json',\n aliases: ['文言']\n}, {\n id: 'xml',\n scopeName: 'text.xml',\n path: 'xml.tmLanguage.json',\n embeddedLangs: ['java']\n}, {\n id: 'xsl',\n scopeName: 'text.xml.xsl',\n path: 'xsl.tmLanguage.json',\n embeddedLangs: ['xml']\n}, {\n id: 'yaml',\n scopeName: 'source.yaml',\n path: 'yaml.tmLanguage.json'\n}];\nvar FontStyle;\n\n(function (FontStyle) {\n FontStyle[FontStyle[\"NotSet\"] = -1] = \"NotSet\";\n FontStyle[FontStyle[\"None\"] = 0] = \"None\";\n FontStyle[FontStyle[\"Italic\"] = 1] = \"Italic\";\n FontStyle[FontStyle[\"Bold\"] = 2] = \"Bold\";\n FontStyle[FontStyle[\"Underline\"] = 4] = \"Underline\";\n})(FontStyle || (FontStyle = {}));\n\nvar StackElementMetadata = /*#__PURE__*/function () {\n function StackElementMetadata() {\n _classCallCheck(this, StackElementMetadata);\n }\n\n _createClass(StackElementMetadata, null, [{\n key: \"toBinaryStr\",\n value: function toBinaryStr(metadata) {\n var r = metadata.toString(2);\n\n while (r.length < 32) {\n r = '0' + r;\n }\n\n return r;\n }\n }, {\n key: \"printMetadata\",\n value: function printMetadata(metadata) {\n var languageId = StackElementMetadata.getLanguageId(metadata);\n var tokenType = StackElementMetadata.getTokenType(metadata);\n var fontStyle = StackElementMetadata.getFontStyle(metadata);\n var foreground = StackElementMetadata.getForeground(metadata);\n var background = StackElementMetadata.getBackground(metadata);\n console.log({\n languageId: languageId,\n tokenType: tokenType,\n fontStyle: fontStyle,\n foreground: foreground,\n background: background\n });\n }\n }, {\n key: \"getLanguageId\",\n value: function getLanguageId(metadata) {\n return (metadata & 255\n /* LANGUAGEID_MASK */\n ) >>> 0\n /* LANGUAGEID_OFFSET */\n ;\n }\n }, {\n key: \"getTokenType\",\n value: function getTokenType(metadata) {\n return (metadata & 1792\n /* TOKEN_TYPE_MASK */\n ) >>> 8\n /* TOKEN_TYPE_OFFSET */\n ;\n }\n }, {\n key: \"getFontStyle\",\n value: function getFontStyle(metadata) {\n return (metadata & 14336\n /* FONT_STYLE_MASK */\n ) >>> 11\n /* FONT_STYLE_OFFSET */\n ;\n }\n }, {\n key: \"getForeground\",\n value: function getForeground(metadata) {\n return (metadata & 8372224\n /* FOREGROUND_MASK */\n ) >>> 14\n /* FOREGROUND_OFFSET */\n ;\n }\n }, {\n key: \"getBackground\",\n value: function getBackground(metadata) {\n return (metadata & 4286578688\n /* BACKGROUND_MASK */\n ) >>> 23\n /* BACKGROUND_OFFSET */\n ;\n }\n }, {\n key: \"set\",\n value: function set(metadata, languageId, tokenType, fontStyle, foreground, background) {\n var _languageId = StackElementMetadata.getLanguageId(metadata);\n\n var _tokenType = StackElementMetadata.getTokenType(metadata);\n\n var _fontStyle = StackElementMetadata.getFontStyle(metadata);\n\n var _foreground = StackElementMetadata.getForeground(metadata);\n\n var _background = StackElementMetadata.getBackground(metadata);\n\n if (languageId !== 0) {\n _languageId = languageId;\n }\n\n if (tokenType !== 0\n /* Other */\n ) {\n _tokenType = tokenType === 8\n /* MetaEmbedded */\n ? 0\n /* Other */\n : tokenType;\n }\n\n if (fontStyle !== FontStyle.NotSet) {\n _fontStyle = fontStyle;\n }\n\n if (foreground !== 0) {\n _foreground = foreground;\n }\n\n if (background !== 0) {\n _background = background;\n }\n\n return (_languageId << 0\n /* LANGUAGEID_OFFSET */\n | _tokenType << 8\n /* TOKEN_TYPE_OFFSET */\n | _fontStyle << 11\n /* FONT_STYLE_OFFSET */\n | _foreground << 14\n /* FOREGROUND_OFFSET */\n | _background << 23\n /* BACKGROUND_OFFSET */\n ) >>> 0;\n }\n }]);\n\n return StackElementMetadata;\n}();\n\nfunction trimEndSlash(str) {\n if (str.endsWith('/') || str.endsWith('\\\\')) return str.slice(0, -1);\n return str;\n}\n\nfunction trimStartDot(str) {\n if (str.startsWith('./')) return str.slice(2);\n return str;\n}\n\nfunction dirname(str) {\n var parts = str.split(/[\\/\\\\]/g);\n return parts[parts.length - 2];\n}\n\nfunction join() {\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n\n return parts.map(trimEndSlash).map(trimStartDot).join('/');\n}\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\n\n\nfunction createScanner(text, ignoreTrivia) {\n if (ignoreTrivia === void 0) {\n ignoreTrivia = false;\n }\n\n var len = text.length;\n var pos = 0,\n value = '',\n tokenOffset = 0,\n token = 16\n /* Unknown */\n ,\n lineNumber = 0,\n lineStartOffset = 0,\n tokenLineStartOffset = 0,\n prevTokenLineStartOffset = 0,\n scanError = 0\n /* None */\n ;\n\n function scanHexDigits(count, exact) {\n var digits = 0;\n var value = 0;\n\n while (digits < count || !exact) {\n var ch = text.charCodeAt(pos);\n\n if (ch >= 48\n /* _0 */\n && ch <= 57\n /* _9 */\n ) {\n value = value * 16 + ch - 48\n /* _0 */\n ;\n } else if (ch >= 65\n /* A */\n && ch <= 70\n /* F */\n ) {\n value = value * 16 + ch - 65\n /* A */\n + 10;\n } else if (ch >= 97\n /* a */\n && ch <= 102\n /* f */\n ) {\n value = value * 16 + ch - 97\n /* a */\n + 10;\n } else {\n break;\n }\n\n pos++;\n digits++;\n }\n\n if (digits < count) {\n value = -1;\n }\n\n return value;\n }\n\n function setPosition(newPosition) {\n pos = newPosition;\n value = '';\n tokenOffset = 0;\n token = 16\n /* Unknown */\n ;\n scanError = 0\n /* None */\n ;\n }\n\n function scanNumber() {\n var start = pos;\n\n if (text.charCodeAt(pos) === 48\n /* _0 */\n ) {\n pos++;\n } else {\n pos++;\n\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n\n if (pos < text.length && text.charCodeAt(pos) === 46\n /* dot */\n ) {\n pos++;\n\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n } else {\n scanError = 3\n /* UnexpectedEndOfNumber */\n ;\n return text.substring(start, pos);\n }\n }\n\n var end = pos;\n\n if (pos < text.length && (text.charCodeAt(pos) === 69\n /* E */\n || text.charCodeAt(pos) === 101\n /* e */\n )) {\n pos++;\n\n if (pos < text.length && text.charCodeAt(pos) === 43\n /* plus */\n || text.charCodeAt(pos) === 45\n /* minus */\n ) {\n pos++;\n }\n\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n\n end = pos;\n } else {\n scanError = 3\n /* UnexpectedEndOfNumber */\n ;\n }\n }\n\n return text.substring(start, end);\n }\n\n function scanString() {\n var result = '',\n start = pos;\n\n while (true) {\n if (pos >= len) {\n result += text.substring(start, pos);\n scanError = 2\n /* UnexpectedEndOfString */\n ;\n break;\n }\n\n var ch = text.charCodeAt(pos);\n\n if (ch === 34\n /* doubleQuote */\n ) {\n result += text.substring(start, pos);\n pos++;\n break;\n }\n\n if (ch === 92\n /* backslash */\n ) {\n result += text.substring(start, pos);\n pos++;\n\n if (pos >= len) {\n scanError = 2\n /* UnexpectedEndOfString */\n ;\n break;\n }\n\n var ch2 = text.charCodeAt(pos++);\n\n switch (ch2) {\n case 34\n /* doubleQuote */\n :\n result += '\\\"';\n break;\n\n case 92\n /* backslash */\n :\n result += '\\\\';\n break;\n\n case 47\n /* slash */\n :\n result += '/';\n break;\n\n case 98\n /* b */\n :\n result += '\\b';\n break;\n\n case 102\n /* f */\n :\n result += '\\f';\n break;\n\n case 110\n /* n */\n :\n result += '\\n';\n break;\n\n case 114\n /* r */\n :\n result += '\\r';\n break;\n\n case 116\n /* t */\n :\n result += '\\t';\n break;\n\n case 117\n /* u */\n :\n var ch3 = scanHexDigits(4, true);\n\n if (ch3 >= 0) {\n result += String.fromCharCode(ch3);\n } else {\n scanError = 4\n /* InvalidUnicode */\n ;\n }\n\n break;\n\n default:\n scanError = 5\n /* InvalidEscapeCharacter */\n ;\n }\n\n start = pos;\n continue;\n }\n\n if (ch >= 0 && ch <= 0x1f) {\n if (isLineBreak(ch)) {\n result += text.substring(start, pos);\n scanError = 2\n /* UnexpectedEndOfString */\n ;\n break;\n } else {\n scanError = 6\n /* InvalidCharacter */\n ; // mark as error but continue with string\n }\n }\n\n pos++;\n }\n\n return result;\n }\n\n function scanNext() {\n value = '';\n scanError = 0\n /* None */\n ;\n tokenOffset = pos;\n lineStartOffset = lineNumber;\n prevTokenLineStartOffset = tokenLineStartOffset;\n\n if (pos >= len) {\n // at the end\n tokenOffset = len;\n return token = 17\n /* EOF */\n ;\n }\n\n var code = text.charCodeAt(pos); // trivia: whitespace\n\n if (isWhiteSpace(code)) {\n do {\n pos++;\n value += String.fromCharCode(code);\n code = text.charCodeAt(pos);\n } while (isWhiteSpace(code));\n\n return token = 15\n /* Trivia */\n ;\n } // trivia: newlines\n\n\n if (isLineBreak(code)) {\n pos++;\n value += String.fromCharCode(code);\n\n if (code === 13\n /* carriageReturn */\n && text.charCodeAt(pos) === 10\n /* lineFeed */\n ) {\n pos++;\n value += '\\n';\n }\n\n lineNumber++;\n tokenLineStartOffset = pos;\n return token = 14\n /* LineBreakTrivia */\n ;\n }\n\n switch (code) {\n // tokens: []{}:,\n case 123\n /* openBrace */\n :\n pos++;\n return token = 1\n /* OpenBraceToken */\n ;\n\n case 125\n /* closeBrace */\n :\n pos++;\n return token = 2\n /* CloseBraceToken */\n ;\n\n case 91\n /* openBracket */\n :\n pos++;\n return token = 3\n /* OpenBracketToken */\n ;\n\n case 93\n /* closeBracket */\n :\n pos++;\n return token = 4\n /* CloseBracketToken */\n ;\n\n case 58\n /* colon */\n :\n pos++;\n return token = 6\n /* ColonToken */\n ;\n\n case 44\n /* comma */\n :\n pos++;\n return token = 5\n /* CommaToken */\n ;\n // strings\n\n case 34\n /* doubleQuote */\n :\n pos++;\n value = scanString();\n return token = 10\n /* StringLiteral */\n ;\n // comments\n\n case 47\n /* slash */\n :\n var start = pos - 1; // Single-line comment\n\n if (text.charCodeAt(pos + 1) === 47\n /* slash */\n ) {\n pos += 2;\n\n while (pos < len) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n\n pos++;\n }\n\n value = text.substring(start, pos);\n return token = 12\n /* LineCommentTrivia */\n ;\n } // Multi-line comment\n\n\n if (text.charCodeAt(pos + 1) === 42\n /* asterisk */\n ) {\n pos += 2;\n var safeLength = len - 1; // For lookahead.\n\n var commentClosed = false;\n\n while (pos < safeLength) {\n var ch = text.charCodeAt(pos);\n\n if (ch === 42\n /* asterisk */\n && text.charCodeAt(pos + 1) === 47\n /* slash */\n ) {\n pos += 2;\n commentClosed = true;\n break;\n }\n\n pos++;\n\n if (isLineBreak(ch)) {\n if (ch === 13\n /* carriageReturn */\n && text.charCodeAt(pos) === 10\n /* lineFeed */\n ) {\n pos++;\n }\n\n lineNumber++;\n tokenLineStartOffset = pos;\n }\n }\n\n if (!commentClosed) {\n pos++;\n scanError = 1\n /* UnexpectedEndOfComment */\n ;\n }\n\n value = text.substring(start, pos);\n return token = 13\n /* BlockCommentTrivia */\n ;\n } // just a single slash\n\n\n value += String.fromCharCode(code);\n pos++;\n return token = 16\n /* Unknown */\n ;\n // numbers\n\n case 45\n /* minus */\n :\n value += String.fromCharCode(code);\n pos++;\n\n if (pos === len || !isDigit(text.charCodeAt(pos))) {\n return token = 16\n /* Unknown */\n ;\n }\n\n // found a minus, followed by a number so\n // we fall through to proceed with scanning\n // numbers\n\n case 48\n /* _0 */\n :\n case 49\n /* _1 */\n :\n case 50\n /* _2 */\n :\n case 51\n /* _3 */\n :\n case 52\n /* _4 */\n :\n case 53\n /* _5 */\n :\n case 54\n /* _6 */\n :\n case 55\n /* _7 */\n :\n case 56\n /* _8 */\n :\n case 57\n /* _9 */\n :\n value += scanNumber();\n return token = 11\n /* NumericLiteral */\n ;\n // literals and unknown symbols\n\n default:\n // is a literal? Read the full word.\n while (pos < len && isUnknownContentCharacter(code)) {\n pos++;\n code = text.charCodeAt(pos);\n }\n\n if (tokenOffset !== pos) {\n value = text.substring(tokenOffset, pos); // keywords: true, false, null\n\n switch (value) {\n case 'true':\n return token = 8\n /* TrueKeyword */\n ;\n\n case 'false':\n return token = 9\n /* FalseKeyword */\n ;\n\n case 'null':\n return token = 7\n /* NullKeyword */\n ;\n }\n\n return token = 16\n /* Unknown */\n ;\n } // some\n\n\n value += String.fromCharCode(code);\n pos++;\n return token = 16\n /* Unknown */\n ;\n }\n }\n\n function isUnknownContentCharacter(code) {\n if (isWhiteSpace(code) || isLineBreak(code)) {\n return false;\n }\n\n switch (code) {\n case 125\n /* closeBrace */\n :\n case 93\n /* closeBracket */\n :\n case 123\n /* openBrace */\n :\n case 91\n /* openBracket */\n :\n case 34\n /* doubleQuote */\n :\n case 58\n /* colon */\n :\n case 44\n /* comma */\n :\n case 47\n /* slash */\n :\n return false;\n }\n\n return true;\n }\n\n function scanNextNonTrivia() {\n var result;\n\n do {\n result = scanNext();\n } while (result >= 12\n /* LineCommentTrivia */\n && result <= 15\n /* Trivia */\n );\n\n return result;\n }\n\n return {\n setPosition: setPosition,\n getPosition: function getPosition() {\n return pos;\n },\n scan: ignoreTrivia ? scanNextNonTrivia : scanNext,\n getToken: function getToken() {\n return token;\n },\n getTokenValue: function getTokenValue() {\n return value;\n },\n getTokenOffset: function getTokenOffset() {\n return tokenOffset;\n },\n getTokenLength: function getTokenLength() {\n return pos - tokenOffset;\n },\n getTokenStartLine: function getTokenStartLine() {\n return lineStartOffset;\n },\n getTokenStartCharacter: function getTokenStartCharacter() {\n return tokenOffset - prevTokenLineStartOffset;\n },\n getTokenError: function getTokenError() {\n return scanError;\n }\n };\n}\n\nfunction isWhiteSpace(ch) {\n return ch === 32\n /* space */\n || ch === 9\n /* tab */\n || ch === 11\n /* verticalTab */\n || ch === 12\n /* formFeed */\n || ch === 160\n /* nonBreakingSpace */\n || ch === 5760\n /* ogham */\n || ch >= 8192\n /* enQuad */\n && ch <= 8203\n /* zeroWidthSpace */\n || ch === 8239\n /* narrowNoBreakSpace */\n || ch === 8287\n /* mathematicalSpace */\n || ch === 12288\n /* ideographicSpace */\n || ch === 65279\n /* byteOrderMark */\n ;\n}\n\nfunction isLineBreak(ch) {\n return ch === 10\n /* lineFeed */\n || ch === 13\n /* carriageReturn */\n || ch === 8232\n /* lineSeparator */\n || ch === 8233\n /* paragraphSeparator */\n ;\n}\n\nfunction isDigit(ch) {\n return ch >= 48\n /* _0 */\n && ch <= 57\n /* _9 */\n ;\n}\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nvar ParseOptions;\n\n(function (ParseOptions) {\n ParseOptions.DEFAULT = {\n allowTrailingComma: false\n };\n})(ParseOptions || (ParseOptions = {}));\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore always check the errors list to find out if the input was valid.\n */\n\n\nfunction parse$1(text, errors, options) {\n if (errors === void 0) {\n errors = [];\n }\n\n if (options === void 0) {\n options = ParseOptions.DEFAULT;\n }\n\n var currentProperty = null;\n var currentParent = [];\n var previousParents = [];\n\n function onValue(value) {\n if (Array.isArray(currentParent)) {\n currentParent.push(value);\n } else if (currentProperty !== null) {\n currentParent[currentProperty] = value;\n }\n }\n\n var visitor = {\n onObjectBegin: function onObjectBegin() {\n var object = {};\n onValue(object);\n previousParents.push(currentParent);\n currentParent = object;\n currentProperty = null;\n },\n onObjectProperty: function onObjectProperty(name) {\n currentProperty = name;\n },\n onObjectEnd: function onObjectEnd() {\n currentParent = previousParents.pop();\n },\n onArrayBegin: function onArrayBegin() {\n var array = [];\n onValue(array);\n previousParents.push(currentParent);\n currentParent = array;\n currentProperty = null;\n },\n onArrayEnd: function onArrayEnd() {\n currentParent = previousParents.pop();\n },\n onLiteralValue: onValue,\n onError: function onError(error, offset, length) {\n errors.push({\n error: error,\n offset: offset,\n length: length\n });\n }\n };\n visit(text, visitor, options);\n return currentParent[0];\n}\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\n\n\nfunction visit(text, visitor, options) {\n if (options === void 0) {\n options = ParseOptions.DEFAULT;\n }\n\n var _scanner = createScanner(text, false);\n\n function toNoArgVisit(visitFunction) {\n return visitFunction ? function () {\n return visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());\n } : function () {\n return true;\n };\n }\n\n function toOneArgVisit(visitFunction) {\n return visitFunction ? function (arg) {\n return visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());\n } : function () {\n return true;\n };\n }\n\n var onObjectBegin = toNoArgVisit(visitor.onObjectBegin),\n onObjectProperty = toOneArgVisit(visitor.onObjectProperty),\n onObjectEnd = toNoArgVisit(visitor.onObjectEnd),\n onArrayBegin = toNoArgVisit(visitor.onArrayBegin),\n onArrayEnd = toNoArgVisit(visitor.onArrayEnd),\n onLiteralValue = toOneArgVisit(visitor.onLiteralValue),\n onSeparator = toOneArgVisit(visitor.onSeparator),\n onComment = toNoArgVisit(visitor.onComment),\n onError = toOneArgVisit(visitor.onError);\n var disallowComments = options && options.disallowComments;\n var allowTrailingComma = options && options.allowTrailingComma;\n\n function scanNext() {\n while (true) {\n var token = _scanner.scan();\n\n switch (_scanner.getTokenError()) {\n case 4\n /* InvalidUnicode */\n :\n handleError(14\n /* InvalidUnicode */\n );\n break;\n\n case 5\n /* InvalidEscapeCharacter */\n :\n handleError(15\n /* InvalidEscapeCharacter */\n );\n break;\n\n case 3\n /* UnexpectedEndOfNumber */\n :\n handleError(13\n /* UnexpectedEndOfNumber */\n );\n break;\n\n case 1\n /* UnexpectedEndOfComment */\n :\n if (!disallowComments) {\n handleError(11\n /* UnexpectedEndOfComment */\n );\n }\n\n break;\n\n case 2\n /* UnexpectedEndOfString */\n :\n handleError(12\n /* UnexpectedEndOfString */\n );\n break;\n\n case 6\n /* InvalidCharacter */\n :\n handleError(16\n /* InvalidCharacter */\n );\n break;\n }\n\n switch (token) {\n case 12\n /* LineCommentTrivia */\n :\n case 13\n /* BlockCommentTrivia */\n :\n if (disallowComments) {\n handleError(10\n /* InvalidCommentToken */\n );\n } else {\n onComment();\n }\n\n break;\n\n case 16\n /* Unknown */\n :\n handleError(1\n /* InvalidSymbol */\n );\n break;\n\n case 15\n /* Trivia */\n :\n case 14\n /* LineBreakTrivia */\n :\n break;\n\n default:\n return token;\n }\n }\n }\n\n function handleError(error, skipUntilAfter, skipUntil) {\n if (skipUntilAfter === void 0) {\n skipUntilAfter = [];\n }\n\n if (skipUntil === void 0) {\n skipUntil = [];\n }\n\n onError(error);\n\n if (skipUntilAfter.length + skipUntil.length > 0) {\n var token = _scanner.getToken();\n\n while (token !== 17\n /* EOF */\n ) {\n if (skipUntilAfter.indexOf(token) !== -1) {\n scanNext();\n break;\n } else if (skipUntil.indexOf(token) !== -1) {\n break;\n }\n\n token = scanNext();\n }\n }\n }\n\n function parseString(isValue) {\n var value = _scanner.getTokenValue();\n\n if (isValue) {\n onLiteralValue(value);\n } else {\n onObjectProperty(value);\n }\n\n scanNext();\n return true;\n }\n\n function parseLiteral() {\n switch (_scanner.getToken()) {\n case 11\n /* NumericLiteral */\n :\n var tokenValue = _scanner.getTokenValue();\n\n var value = Number(tokenValue);\n\n if (isNaN(value)) {\n handleError(2\n /* InvalidNumberFormat */\n );\n value = 0;\n }\n\n onLiteralValue(value);\n break;\n\n case 7\n /* NullKeyword */\n :\n onLiteralValue(null);\n break;\n\n case 8\n /* TrueKeyword */\n :\n onLiteralValue(true);\n break;\n\n case 9\n /* FalseKeyword */\n :\n onLiteralValue(false);\n break;\n\n default:\n return false;\n }\n\n scanNext();\n return true;\n }\n\n function parseProperty() {\n if (_scanner.getToken() !== 10\n /* StringLiteral */\n ) {\n handleError(3\n /* PropertyNameExpected */\n , [], [2\n /* CloseBraceToken */\n , 5\n /* CommaToken */\n ]);\n return false;\n }\n\n parseString(false);\n\n if (_scanner.getToken() === 6\n /* ColonToken */\n ) {\n onSeparator(':');\n scanNext(); // consume colon\n\n if (!parseValue()) {\n handleError(4\n /* ValueExpected */\n , [], [2\n /* CloseBraceToken */\n , 5\n /* CommaToken */\n ]);\n }\n } else {\n handleError(5\n /* ColonExpected */\n , [], [2\n /* CloseBraceToken */\n , 5\n /* CommaToken */\n ]);\n }\n\n return true;\n }\n\n function parseObject() {\n onObjectBegin();\n scanNext(); // consume open brace\n\n var needsComma = false;\n\n while (_scanner.getToken() !== 2\n /* CloseBraceToken */\n && _scanner.getToken() !== 17\n /* EOF */\n ) {\n if (_scanner.getToken() === 5\n /* CommaToken */\n ) {\n if (!needsComma) {\n handleError(4\n /* ValueExpected */\n , [], []);\n }\n\n onSeparator(',');\n scanNext(); // consume comma\n\n if (_scanner.getToken() === 2\n /* CloseBraceToken */\n && allowTrailingComma) {\n break;\n }\n } else if (needsComma) {\n handleError(6\n /* CommaExpected */\n , [], []);\n }\n\n if (!parseProperty()) {\n handleError(4\n /* ValueExpected */\n , [], [2\n /* CloseBraceToken */\n , 5\n /* CommaToken */\n ]);\n }\n\n needsComma = true;\n }\n\n onObjectEnd();\n\n if (_scanner.getToken() !== 2\n /* CloseBraceToken */\n ) {\n handleError(7\n /* CloseBraceExpected */\n , [2\n /* CloseBraceToken */\n ], []);\n } else {\n scanNext(); // consume close brace\n }\n\n return true;\n }\n\n function parseArray() {\n onArrayBegin();\n scanNext(); // consume open bracket\n\n var needsComma = false;\n\n while (_scanner.getToken() !== 4\n /* CloseBracketToken */\n && _scanner.getToken() !== 17\n /* EOF */\n ) {\n if (_scanner.getToken() === 5\n /* CommaToken */\n ) {\n if (!needsComma) {\n handleError(4\n /* ValueExpected */\n , [], []);\n }\n\n onSeparator(',');\n scanNext(); // consume comma\n\n if (_scanner.getToken() === 4\n /* CloseBracketToken */\n && allowTrailingComma) {\n break;\n }\n } else if (needsComma) {\n handleError(6\n /* CommaExpected */\n , [], []);\n }\n\n if (!parseValue()) {\n handleError(4\n /* ValueExpected */\n , [], [4\n /* CloseBracketToken */\n , 5\n /* CommaToken */\n ]);\n }\n\n needsComma = true;\n }\n\n onArrayEnd();\n\n if (_scanner.getToken() !== 4\n /* CloseBracketToken */\n ) {\n handleError(8\n /* CloseBracketExpected */\n , [4\n /* CloseBracketToken */\n ], []);\n } else {\n scanNext(); // consume close bracket\n }\n\n return true;\n }\n\n function parseValue() {\n switch (_scanner.getToken()) {\n case 3\n /* OpenBracketToken */\n :\n return parseArray();\n\n case 1\n /* OpenBraceToken */\n :\n return parseObject();\n\n case 10\n /* StringLiteral */\n :\n return parseString(true);\n\n default:\n return parseLiteral();\n }\n }\n\n scanNext();\n\n if (_scanner.getToken() === 17\n /* EOF */\n ) {\n if (options.allowEmptyContent) {\n return true;\n }\n\n handleError(4\n /* ValueExpected */\n , [], []);\n return false;\n }\n\n if (!parseValue()) {\n handleError(4\n /* ValueExpected */\n , [], []);\n return false;\n }\n\n if (_scanner.getToken() !== 17\n /* EOF */\n ) {\n handleError(9\n /* EndOfFileExpected */\n , [], []);\n }\n\n return true;\n}\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore, always check the errors list to find out if the input was valid.\n */\n\n\nvar parse = parse$1;\nvar isWebWorker = typeof self !== 'undefined' && typeof self.WorkerGlobalScope !== 'undefined';\nvar isBrowser = isWebWorker || typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof fetch !== 'undefined'; // to be replaced by rollup\n\nvar CDN_ROOT = '';\nvar ONIGASM_WASM = '';\n/**\r\n * Set the route for loading the assets\r\n * URL should end with `/`\r\n *\r\n * For example:\r\n * ```ts\r\n * setCDN('https://unpkg.com/shiki/') // use unpkg\r\n * setCDN('/assets/shiki/') // serve by yourself\r\n * ```\r\n */\n\nfunction setCDN(root) {\n CDN_ROOT = root;\n}\n/**\r\n * Explicitly set the source for loading the OnigasmWASM\r\n *\r\n * Accepts Url or ArrayBuffer\r\n */\n\n\nfunction setOnigasmWASM(path) {\n ONIGASM_WASM = path;\n}\n\nvar _onigasmPromise = null;\n\nfunction getOnigasm() {\n return _getOnigasm.apply(this, arguments);\n}\n\nfunction _getOnigasm() {\n _getOnigasm = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {\n var loader, path, onigasmPath, fs, wasmBin;\n return _regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (!_onigasmPromise) {\n if (isBrowser) {\n loader = loadWASM(ONIGASM_WASM || _resolvePath('dist/onigasm.wasm'));\n } else {\n path = require('path');\n onigasmPath = path.join(require.resolve('onigasm'), '../onigasm.wasm');\n fs = require('fs');\n wasmBin = fs.readFileSync(onigasmPath).buffer;\n loader = loadWASM(wasmBin);\n }\n\n _onigasmPromise = loader.then(function () {\n return {\n createOnigScanner: function createOnigScanner(patterns) {\n return new OnigScanner(patterns);\n },\n createOnigString: function createOnigString(s) {\n return new OnigString(s);\n }\n };\n });\n }\n\n return _context6.abrupt(\"return\", _onigasmPromise);\n\n case 2:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n return _getOnigasm.apply(this, arguments);\n}\n\nfunction _resolvePath(filepath) {\n if (isBrowser) {\n if (!CDN_ROOT) {\n console.warn('[Shiki] no CDN provider found, use `setCDN()` to specify the CDN for loading the resources before calling `getHighlighter()`');\n }\n\n return \"\".concat(CDN_ROOT).concat(filepath);\n } else {\n var path = require('path');\n\n if (path.isAbsolute(filepath)) {\n return filepath;\n } else {\n return path.resolve(__dirname, '..', filepath);\n }\n }\n}\n/**\r\n * @param filepath assert path related to ./packages/shiki\r\n */\n\n\nfunction _fetchAssets(_x) {\n return _fetchAssets2.apply(this, arguments);\n}\n\nfunction _fetchAssets2() {\n _fetchAssets2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(filepath) {\n var path, fs;\n return _regeneratorRuntime.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n path = _resolvePath(filepath);\n\n if (!isBrowser) {\n _context7.next = 7;\n break;\n }\n\n _context7.next = 4;\n return fetch(path).then(function (r) {\n return r.text();\n });\n\n case 4:\n return _context7.abrupt(\"return\", _context7.sent);\n\n case 7:\n fs = require('fs');\n _context7.next = 10;\n return fs.promises.readFile(path, 'utf-8');\n\n case 10:\n return _context7.abrupt(\"return\", _context7.sent);\n\n case 11:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n return _fetchAssets2.apply(this, arguments);\n}\n\nfunction _fetchJSONAssets(_x2) {\n return _fetchJSONAssets2.apply(this, arguments);\n}\n/**\r\n * @param themePath related path to theme.json\r\n */\n\n\nfunction _fetchJSONAssets2() {\n _fetchJSONAssets2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(filepath) {\n var errors, rawTheme;\n return _regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n errors = [];\n _context8.t0 = parse;\n _context8.next = 4;\n return _fetchAssets(filepath);\n\n case 4:\n _context8.t1 = _context8.sent;\n _context8.t2 = errors;\n _context8.t3 = {\n allowTrailingComma: true\n };\n rawTheme = (0, _context8.t0)(_context8.t1, _context8.t2, _context8.t3);\n\n if (!errors.length) {\n _context8.next = 10;\n break;\n }\n\n throw errors[0];\n\n case 10:\n return _context8.abrupt(\"return\", rawTheme);\n\n case 11:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }));\n return _fetchJSONAssets2.apply(this, arguments);\n}\n\nfunction fetchTheme(_x3) {\n return _fetchTheme.apply(this, arguments);\n}\n\nfunction _fetchTheme() {\n _fetchTheme = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9(themePath) {\n var theme, shikiTheme, includedTheme;\n return _regeneratorRuntime.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return _fetchJSONAssets(themePath);\n\n case 2:\n theme = _context9.sent;\n shikiTheme = toShikiTheme(theme);\n\n if (!shikiTheme.include) {\n _context9.next = 12;\n break;\n }\n\n _context9.next = 7;\n return fetchTheme(join(dirname(themePath), shikiTheme.include));\n\n case 7:\n includedTheme = _context9.sent;\n\n if (includedTheme.settings) {\n shikiTheme.settings = includedTheme.settings.concat(shikiTheme.settings);\n }\n\n if (includedTheme.bg && !shikiTheme.bg) {\n shikiTheme.bg = includedTheme.bg;\n }\n\n if (includedTheme.colors) {\n shikiTheme.colors = Object.assign(Object.assign({}, includedTheme.colors), shikiTheme.colors);\n }\n\n delete shikiTheme.include;\n\n case 12:\n return _context9.abrupt(\"return\", shikiTheme);\n\n case 13:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n }));\n return _fetchTheme.apply(this, arguments);\n}\n\nfunction fetchGrammar(_x4) {\n return _fetchGrammar.apply(this, arguments);\n}\n\nfunction _fetchGrammar() {\n _fetchGrammar = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10(filepath) {\n return _regeneratorRuntime.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return _fetchJSONAssets(filepath);\n\n case 2:\n return _context10.abrupt(\"return\", _context10.sent);\n\n case 3:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10);\n }));\n return _fetchGrammar.apply(this, arguments);\n}\n\nfunction repairTheme(theme) {\n // Has the default no-scope setting with fallback colors\n if (!theme.settings) theme.settings = [];\n\n if (theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope) {\n return;\n } // Push a no-scope setting with fallback colors\n\n\n theme.settings.unshift({\n settings: {\n foreground: theme.fg,\n background: theme.bg\n }\n });\n}\n\nfunction toShikiTheme(rawTheme) {\n var type = rawTheme.type || 'dark';\n var shikiTheme = Object.assign(Object.assign({\n name: rawTheme.name,\n type: type\n }, rawTheme), getThemeDefaultColors(rawTheme));\n\n if (rawTheme.include) {\n shikiTheme.include = rawTheme.include;\n }\n\n if (rawTheme.tokenColors) {\n shikiTheme.settings = rawTheme.tokenColors;\n delete shikiTheme.tokenColors;\n }\n\n repairTheme(shikiTheme);\n return shikiTheme;\n}\n/**\r\n * https://github.com/microsoft/vscode/blob/f7f05dee53fb33fe023db2e06e30a89d3094488f/src/vs/platform/theme/common/colorRegistry.ts#L258-L268\r\n */\n\n\nvar VSCODE_FALLBACK_EDITOR_FG = {\n light: '#333333',\n dark: '#bbbbbb'\n};\nvar VSCODE_FALLBACK_EDITOR_BG = {\n light: '#fffffe',\n dark: '#1e1e1e'\n};\n\nfunction getThemeDefaultColors(theme) {\n var _a, _b, _c, _d, _e, _f;\n\n var fg, bg;\n /**\r\n * First try:\r\n * Theme might contain a global `tokenColor` without `name` or `scope`\r\n * Used as default value for foreground/background\r\n */\n\n var settings = theme.settings ? theme.settings : theme.tokenColors;\n var globalSetting = settings ? settings.find(function (s) {\n return !s.name && !s.scope;\n }) : undefined;\n\n if ((_a = globalSetting === null || globalSetting === void 0 ? void 0 : globalSetting.settings) === null || _a === void 0 ? void 0 : _a.foreground) {\n fg = globalSetting.settings.foreground;\n }\n\n if ((_b = globalSetting === null || globalSetting === void 0 ? void 0 : globalSetting.settings) === null || _b === void 0 ? void 0 : _b.background) {\n bg = globalSetting.settings.background;\n }\n /**\r\n * Second try:\r\n * If there's no global `tokenColor` without `name` or `scope`\r\n * Use `editor.foreground` and `editor.background`\r\n */\n\n\n if (!fg && ((_d = (_c = theme) === null || _c === void 0 ? void 0 : _c.colors) === null || _d === void 0 ? void 0 : _d['editor.foreground'])) {\n fg = theme.colors['editor.foreground'];\n }\n\n if (!bg && ((_f = (_e = theme) === null || _e === void 0 ? void 0 : _e.colors) === null || _f === void 0 ? void 0 : _f['editor.background'])) {\n bg = theme.colors['editor.background'];\n }\n /**\r\n * Last try:\r\n * If there's no fg/bg color specified in theme, use default\r\n */\n\n\n if (!fg) {\n fg = theme.type === 'light' ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;\n }\n\n if (!bg) {\n bg = theme.type === 'light' ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;\n }\n\n return {\n fg: fg,\n bg: bg\n };\n}\n/*---------------------------------------------------------\r\n * Copyright (C) Microsoft Corporation. All rights reserved.\r\n *--------------------------------------------------------*/\n\n\nvar Resolver = /*#__PURE__*/function () {\n function Resolver(onigLibPromise, onigLibName) {\n _classCallCheck(this, Resolver);\n\n this.languagesPath = 'languages/';\n this.languageMap = {};\n this.scopeToLangMap = {};\n this._onigLibPromise = onigLibPromise;\n this._onigLibName = onigLibName;\n }\n\n _createClass(Resolver, [{\n key: \"onigLib\",\n get: function get() {\n return this._onigLibPromise;\n }\n }, {\n key: \"getOnigLibName\",\n value: function getOnigLibName() {\n return this._onigLibName;\n }\n }, {\n key: \"getLangRegistration\",\n value: function getLangRegistration(langIdOrAlias) {\n return this.languageMap[langIdOrAlias];\n }\n }, {\n key: \"loadGrammar\",\n value: function () {\n var _loadGrammar = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(scopeName) {\n var lang, g;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n lang = this.scopeToLangMap[scopeName];\n\n if (lang) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\", null);\n\n case 3:\n if (!lang.grammar) {\n _context.next = 5;\n break;\n }\n\n return _context.abrupt(\"return\", lang.grammar);\n\n case 5:\n _context.next = 7;\n return fetchGrammar(languages.includes(lang) ? \"\".concat(this.languagesPath).concat(lang.path) : lang.path);\n\n case 7:\n g = _context.sent;\n lang.grammar = g;\n return _context.abrupt(\"return\", g);\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function loadGrammar(_x5) {\n return _loadGrammar.apply(this, arguments);\n }\n\n return loadGrammar;\n }()\n }, {\n key: \"addLanguage\",\n value: function addLanguage(l) {\n var _this = this;\n\n this.languageMap[l.id] = l;\n\n if (l.aliases) {\n l.aliases.forEach(function (a) {\n _this.languageMap[a] = l;\n });\n }\n\n this.scopeToLangMap[l.scopeName] = l;\n }\n }]);\n\n return Resolver;\n}();\n/*---------------------------------------------------------\r\n * Copyright (C) Microsoft Corporation. All rights reserved.\r\n *--------------------------------------------------------*/\n\n\nfunction tokenizeWithTheme(theme, colorMap, fileContents, grammar, options) {\n var lines = fileContents.split(/\\r\\n|\\r|\\n/);\n var ruleStack = INITIAL;\n var actual = [];\n var final = [];\n\n for (var i = 0, len = lines.length; i < len; i++) {\n var line = lines[i];\n\n if (line === '') {\n actual = [];\n final.push([]);\n continue;\n }\n\n var resultWithScopes = void 0;\n var tokensWithScopes = void 0;\n var tokensWithScopesIndex = void 0;\n\n if (options.includeExplanation) {\n resultWithScopes = grammar.tokenizeLine(line, ruleStack);\n tokensWithScopes = resultWithScopes.tokens;\n tokensWithScopesIndex = 0;\n }\n\n var result = grammar.tokenizeLine2(line, ruleStack);\n var tokensLength = result.tokens.length / 2;\n\n for (var j = 0; j < tokensLength; j++) {\n var startIndex = result.tokens[2 * j];\n var nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;\n\n if (startIndex === nextStartIndex) {\n continue;\n }\n\n var metadata = result.tokens[2 * j + 1];\n var foreground = StackElementMetadata.getForeground(metadata);\n var foregroundColor = colorMap[foreground];\n var fontStyle = StackElementMetadata.getFontStyle(metadata);\n var explanation = [];\n\n if (options.includeExplanation) {\n var offset = 0;\n\n while (startIndex + offset < nextStartIndex) {\n var tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];\n var tokenWithScopesText = line.substring(tokenWithScopes.startIndex, tokenWithScopes.endIndex);\n offset += tokenWithScopesText.length;\n explanation.push({\n content: tokenWithScopesText,\n scopes: explainThemeScopes(theme, tokenWithScopes.scopes)\n });\n tokensWithScopesIndex++;\n }\n }\n\n actual.push({\n content: line.substring(startIndex, nextStartIndex),\n color: foregroundColor,\n fontStyle: fontStyle,\n explanation: explanation\n });\n }\n\n final.push(actual);\n actual = [];\n ruleStack = result.ruleStack;\n }\n\n return final;\n}\n\nfunction explainThemeScopes(theme, scopes) {\n var result = [];\n\n for (var i = 0, len = scopes.length; i < len; i++) {\n var parentScopes = scopes.slice(0, i);\n var scope = scopes[i];\n result[i] = {\n scopeName: scope,\n themeMatches: explainThemeScope(theme, scope, parentScopes)\n };\n }\n\n return result;\n}\n\nfunction matchesOne(selector, scope) {\n var selectorPrefix = selector + '.';\n\n if (selector === scope || scope.substring(0, selectorPrefix.length) === selectorPrefix) {\n return true;\n }\n\n return false;\n}\n\nfunction matches(selector, selectorParentScopes, scope, parentScopes) {\n if (!matchesOne(selector, scope)) {\n return false;\n }\n\n var selectorParentIndex = selectorParentScopes.length - 1;\n var parentIndex = parentScopes.length - 1;\n\n while (selectorParentIndex >= 0 && parentIndex >= 0) {\n if (matchesOne(selectorParentScopes[selectorParentIndex], parentScopes[parentIndex])) {\n selectorParentIndex--;\n }\n\n parentIndex--;\n }\n\n if (selectorParentIndex === -1) {\n return true;\n }\n\n return false;\n}\n\nfunction explainThemeScope(theme, scope, parentScopes) {\n var result = [],\n resultLen = 0;\n\n for (var i = 0, len = theme.settings.length; i < len; i++) {\n var setting = theme.settings[i];\n var selectors = void 0;\n\n if (typeof setting.scope === 'string') {\n selectors = setting.scope.split(/,/).map(function (scope) {\n return scope.trim();\n });\n } else if (Array.isArray(setting.scope)) {\n selectors = setting.scope;\n } else {\n continue;\n }\n\n for (var j = 0, lenJ = selectors.length; j < lenJ; j++) {\n var rawSelector = selectors[j];\n var rawSelectorPieces = rawSelector.split(/ /);\n var selector = rawSelectorPieces[rawSelectorPieces.length - 1];\n var selectorParentScopes = rawSelectorPieces.slice(0, rawSelectorPieces.length - 1);\n\n if (matches(selector, selectorParentScopes, scope, parentScopes)) {\n // match!\n result[resultLen++] = setting; // break the loop\n\n j = lenJ;\n }\n }\n }\n\n return result;\n}\n\nvar FONT_STYLE_TO_CSS = (_FONT_STYLE_TO_CSS = {}, _defineProperty(_FONT_STYLE_TO_CSS, FontStyle.Italic, 'font-style: italic'), _defineProperty(_FONT_STYLE_TO_CSS, FontStyle.Bold, 'font-weight: bold'), _defineProperty(_FONT_STYLE_TO_CSS, FontStyle.Underline, 'text-decoration: underline'), _FONT_STYLE_TO_CSS);\n\nfunction renderToHtml(lines) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var bg = options.bg || '#fff';\n var html = '';\n html += \"
\");\n\n  if (options.langId) {\n    html += \"
\".concat(options.langId, \"
\");\n }\n\n html += \"\";\n lines.forEach(function (l) {\n html += \"\";\n l.forEach(function (token) {\n var cssDeclarations = [\"color: \".concat(token.color || options.fg)];\n\n if (token.fontStyle > FontStyle.None) {\n cssDeclarations.push(FONT_STYLE_TO_CSS[token.fontStyle]);\n }\n\n html += \"\").concat(escapeHtml(token.content), \"\");\n });\n html += \"\\n\";\n });\n html = html.replace(/\\n*$/, ''); // Get rid of final new lines\n\n html += \"
\";\n return html;\n}\n\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\nfunction escapeHtml(html) {\n return html.replace(/[&<>\"']/g, function (chr) {\n return htmlEscapes[chr];\n });\n}\n\nvar Registry = /*#__PURE__*/function (_Registry$) {\n _inherits(Registry, _Registry$);\n\n var _super = _createSuper(Registry);\n\n function Registry(_resolver) {\n var _this2;\n\n _classCallCheck(this, Registry);\n\n _this2 = _super.call(this, _resolver);\n _this2._resolver = _resolver;\n _this2.themesPath = 'themes/';\n _this2._resolvedThemes = {};\n _this2._resolvedGrammars = {};\n return _this2;\n }\n\n _createClass(Registry, [{\n key: \"getTheme\",\n value: function getTheme(theme) {\n if (typeof theme === 'string') {\n return this._resolvedThemes[theme];\n } else {\n return theme;\n }\n }\n }, {\n key: \"loadTheme\",\n value: function () {\n var _loadTheme = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(theme) {\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(typeof theme === 'string')) {\n _context2.next = 8;\n break;\n }\n\n if (this._resolvedThemes[theme]) {\n _context2.next = 5;\n break;\n }\n\n _context2.next = 4;\n return fetchTheme(\"\".concat(this.themesPath).concat(theme, \".json\"));\n\n case 4:\n this._resolvedThemes[theme] = _context2.sent;\n\n case 5:\n return _context2.abrupt(\"return\", this._resolvedThemes[theme]);\n\n case 8:\n theme = toShikiTheme(theme);\n\n if (theme.name) {\n this._resolvedThemes[theme.name] = theme;\n }\n\n return _context2.abrupt(\"return\", theme);\n\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function loadTheme(_x6) {\n return _loadTheme.apply(this, arguments);\n }\n\n return loadTheme;\n }()\n }, {\n key: \"loadThemes\",\n value: function () {\n var _loadThemes = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(themes) {\n var _this3 = this;\n\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return Promise.all(themes.map(function (theme) {\n return _this3.loadTheme(theme);\n }));\n\n case 2:\n return _context3.abrupt(\"return\", _context3.sent);\n\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n function loadThemes(_x7) {\n return _loadThemes.apply(this, arguments);\n }\n\n return loadThemes;\n }()\n }, {\n key: \"getLoadedThemes\",\n value: function getLoadedThemes() {\n return Object.keys(this._resolvedThemes);\n }\n }, {\n key: \"getGrammer\",\n value: function getGrammer(name) {\n return this._resolvedGrammars[name];\n }\n }, {\n key: \"loadLanguage\",\n value: function () {\n var _loadLanguage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(lang) {\n var _this4 = this;\n\n var g;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.loadGrammar(lang.scopeName);\n\n case 2:\n g = _context4.sent;\n this._resolvedGrammars[lang.id] = g;\n\n if (lang.aliases) {\n lang.aliases.forEach(function (la) {\n _this4._resolvedGrammars[la] = g;\n });\n }\n\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function loadLanguage(_x8) {\n return _loadLanguage.apply(this, arguments);\n }\n\n return loadLanguage;\n }()\n }, {\n key: \"loadLanguages\",\n value: function () {\n var _loadLanguages = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(langs) {\n var _iterator, _step, lang, _iterator2, _step2, _lang2;\n\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _iterator = _createForOfIteratorHelper(langs);\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n lang = _step.value;\n\n this._resolver.addLanguage(lang);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n _iterator2 = _createForOfIteratorHelper(langs);\n _context5.prev = 3;\n\n _iterator2.s();\n\n case 5:\n if ((_step2 = _iterator2.n()).done) {\n _context5.next = 11;\n break;\n }\n\n _lang2 = _step2.value;\n _context5.next = 9;\n return this.loadLanguage(_lang2);\n\n case 9:\n _context5.next = 5;\n break;\n\n case 11:\n _context5.next = 16;\n break;\n\n case 13:\n _context5.prev = 13;\n _context5.t0 = _context5[\"catch\"](3);\n\n _iterator2.e(_context5.t0);\n\n case 16:\n _context5.prev = 16;\n\n _iterator2.f();\n\n return _context5.finish(16);\n\n case 19:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[3, 13, 16, 19]]);\n }));\n\n function loadLanguages(_x9) {\n return _loadLanguages.apply(this, arguments);\n }\n\n return loadLanguages;\n }()\n }, {\n key: \"getLoadedLanguages\",\n value: function getLoadedLanguages() {\n return Object.keys(this._resolvedGrammars);\n }\n }]);\n\n return Registry;\n}(Registry$1);\n\nfunction resolveLang(lang) {\n return typeof lang === 'string' ? languages.find(function (l) {\n var _a;\n\n return l.id === lang || ((_a = l.aliases) === null || _a === void 0 ? void 0 : _a.includes(lang));\n }) : lang;\n}\n\nfunction resolveOptions(options) {\n var _a;\n\n var _languages = languages;\n\n var _themes = options.themes || [];\n\n if ((_a = options.langs) === null || _a === void 0 ? void 0 : _a.length) {\n _languages = options.langs.map(resolveLang);\n }\n\n if (options.theme) {\n _themes.unshift(options.theme);\n }\n\n if (!_themes.length) {\n _themes = ['nord'];\n }\n\n return {\n _languages: _languages,\n _themes: _themes\n };\n}\n\nfunction getHighlighter(_x10) {\n return _getHighlighter.apply(this, arguments);\n}\n\nfunction _getHighlighter() {\n _getHighlighter = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13(options) {\n var _a, _b, _resolveOptions, _languages, _themes, _resolver, _registry, themes, _defaultTheme, _currentTheme, COLOR_REPLACEMENTS, fixCssVariablesTheme, _getTheme5, getGrammer, codeToThemedTokens, codeToHtml, loadTheme, _loadTheme2, loadLanguage, _loadLanguage2, getLoadedThemes, getLoadedLanguages, getBackgroundColor, getForegroundColor;\n\n return _regeneratorRuntime.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n getForegroundColor = function _getForegroundColor(theme) {\n var _getTheme4 = _getTheme5(theme),\n _theme = _getTheme4._theme;\n\n return _theme.fg;\n };\n\n getBackgroundColor = function _getBackgroundColor(theme) {\n var _getTheme3 = _getTheme5(theme),\n _theme = _getTheme3._theme;\n\n return _theme.bg;\n };\n\n getLoadedLanguages = function _getLoadedLanguages() {\n return _registry.getLoadedLanguages();\n };\n\n getLoadedThemes = function _getLoadedThemes() {\n return _registry.getLoadedThemes();\n };\n\n _loadLanguage2 = function _loadLanguage4() {\n _loadLanguage2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12(lang) {\n var _lang;\n\n return _regeneratorRuntime.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _lang = resolveLang(lang);\n\n _resolver.addLanguage(_lang);\n\n _context12.next = 4;\n return _registry.loadLanguage(_lang);\n\n case 4:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12);\n }));\n return _loadLanguage2.apply(this, arguments);\n };\n\n loadLanguage = function _loadLanguage3(_x12) {\n return _loadLanguage2.apply(this, arguments);\n };\n\n _loadTheme2 = function _loadTheme4() {\n _loadTheme2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11(theme) {\n return _regeneratorRuntime.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return _registry.loadTheme(theme);\n\n case 2:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11);\n }));\n return _loadTheme2.apply(this, arguments);\n };\n\n loadTheme = function _loadTheme3(_x11) {\n return _loadTheme2.apply(this, arguments);\n };\n\n codeToHtml = function _codeToHtml(code) {\n var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text';\n var theme = arguments.length > 2 ? arguments[2] : undefined;\n var tokens = codeToThemedTokens(code, lang, theme, {\n includeExplanation: false\n });\n\n var _getTheme2 = _getTheme5(theme),\n _theme = _getTheme2._theme;\n\n return renderToHtml(tokens, {\n fg: _theme.fg,\n bg: _theme.bg\n });\n };\n\n codeToThemedTokens = function _codeToThemedTokens(code) {\n var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text';\n var theme = arguments.length > 2 ? arguments[2] : undefined;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n includeExplanation: true\n };\n\n if (isPlaintext(lang)) {\n return [[{\n content: code\n }]];\n }\n\n var _getGrammer = getGrammer(lang),\n _grammer = _getGrammer._grammer;\n\n var _getTheme = _getTheme5(theme),\n _theme = _getTheme._theme,\n _colorMap = _getTheme._colorMap;\n\n return tokenizeWithTheme(_theme, _colorMap, code, _grammer, options);\n };\n\n getGrammer = function _getGrammer2(lang) {\n var _grammer = _registry.getGrammer(lang);\n\n if (!_grammer) {\n throw Error(\"No language registration for \".concat(lang));\n }\n\n return {\n _grammer: _grammer\n };\n };\n\n _getTheme5 = function _getTheme6(theme) {\n var _theme = theme ? _registry.getTheme(theme) : _defaultTheme;\n\n if (!_theme) {\n throw Error(\"No theme registration for \".concat(theme));\n }\n\n if (!_currentTheme || _currentTheme.name !== _theme.name) {\n _registry.setTheme(_theme);\n\n _currentTheme = _theme;\n }\n\n var _colorMap = _registry.getColorMap();\n\n if (_theme.name === 'css-variables') {\n fixCssVariablesTheme(_theme, _colorMap);\n }\n\n return {\n _theme: _theme,\n _colorMap: _colorMap\n };\n };\n\n fixCssVariablesTheme = function _fixCssVariablesTheme(theme, colorMap) {\n theme.bg = COLOR_REPLACEMENTS[theme.bg] || theme.bg;\n theme.fg = COLOR_REPLACEMENTS[theme.fg] || theme.fg;\n colorMap.forEach(function (val, i) {\n colorMap[i] = COLOR_REPLACEMENTS[val] || val;\n });\n };\n\n _resolveOptions = resolveOptions(options), _languages = _resolveOptions._languages, _themes = _resolveOptions._themes;\n _resolver = new Resolver(getOnigasm(), 'onigasm');\n _registry = new Registry(_resolver);\n\n if ((_a = options.paths) === null || _a === void 0 ? void 0 : _a.themes) {\n _registry.themesPath = options.paths.themes;\n }\n\n if ((_b = options.paths) === null || _b === void 0 ? void 0 : _b.languages) {\n _resolver.languagesPath = options.paths.languages;\n }\n\n _context13.next = 20;\n return _registry.loadThemes(_themes);\n\n case 20:\n themes = _context13.sent;\n _defaultTheme = themes[0];\n _context13.next = 24;\n return _registry.loadLanguages(_languages);\n\n case 24:\n /**\r\n * Shiki was designed for VSCode, so CSS variables are not currently supported.\r\n * See: https://github.com/shikijs/shiki/pull/212#issuecomment-906924986\r\n *\r\n * Instead, we work around this by using valid hex color codes as lookups in a\r\n * final \"repair\" step which translates those codes to the correct CSS variables.\r\n */\n COLOR_REPLACEMENTS = {\n '#000001': 'var(--shiki-color-text)',\n '#000002': 'var(--shiki-color-background)',\n '#000004': 'var(--shiki-token-constant)',\n '#000005': 'var(--shiki-token-string)',\n '#000006': 'var(--shiki-token-comment)',\n '#000007': 'var(--shiki-token-keyword)',\n '#000008': 'var(--shiki-token-parameter)',\n '#000009': 'var(--shiki-token-function)',\n '#000010': 'var(--shiki-token-string-expression)',\n '#000011': 'var(--shiki-token-punctuation)',\n '#000012': 'var(--shiki-token-link)'\n };\n return _context13.abrupt(\"return\", {\n codeToThemedTokens: codeToThemedTokens,\n codeToHtml: codeToHtml,\n getTheme: function getTheme(theme) {\n return _getTheme5(theme)._theme;\n },\n loadTheme: loadTheme,\n loadLanguage: loadLanguage,\n getBackgroundColor: getBackgroundColor,\n getForegroundColor: getForegroundColor,\n getLoadedThemes: getLoadedThemes,\n getLoadedLanguages: getLoadedLanguages\n });\n\n case 26:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13);\n }));\n return _getHighlighter.apply(this, arguments);\n}\n\nfunction isPlaintext(lang) {\n return !lang || ['plaintext', 'txt', 'text'].includes(lang);\n}\n\nexport { languages as BUNDLED_LANGUAGES, themes as BUNDLED_THEMES, FontStyle, getHighlighter, fetchTheme as loadTheme, renderToHtml, setCDN, setOnigasmWASM };","import \"core-js/modules/es.array.flat.js\";\nimport \"core-js/modules/es.string.trim-end.js\";\nimport React from 'react';\nimport { map, mapWithDefault, withDefault } from '@code-hike/utils';\nimport { setCDN, getHighlighter } from 'shiki';\nimport { diffLines } from 'diff';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n\nfunction mapFocusToLineNumbers(focus, lines) {\n if (!focus) {\n // focus all lines\n return mergeToObject(__spread(lines.keys()).map(function (lineIndex) {\n var _a;\n\n return _a = {}, _a[lineIndex + 1] = true, _a;\n }));\n } else {\n return mergeToObject(focus.split(/,(?![^\\[]*\\])/g).map(parsePartToObject));\n }\n}\n\nfunction mergeToObject(entries) {\n return entries.reduce(function (acc, obj) {\n return Object.assign(acc, obj);\n }, {});\n}\n\nfunction hasColumns(part) {\n return !!part.match(/(\\d+)\\[(.+)\\]/);\n}\n\nfunction parsePartToObject(part) {\n var _a; // a part could be\n // - a line number: \"2\"\n // - a line range: \"5:9\"\n // - a line number with a column selector: \"2[1,3:5,9]\"\n\n\n var columnsMatch = part.match(/(\\d+)\\[(.+)\\]/);\n\n if (columnsMatch) {\n var _b = __read(columnsMatch, 3),\n line = _b[1],\n columns = _b[2];\n\n var columnsList = columns.split(\",\").map(parseExtremes);\n var lineNumber = Number(line);\n return _a = {}, _a[lineNumber] = columnsList, _a;\n } else {\n return mergeToObject(expandString(part).map(function (lineNumber) {\n var _a;\n\n return _a = {}, _a[lineNumber] = true, _a;\n }));\n }\n}\n\nfunction parseExtremes(part) {\n // Transforms something like\n // - \"1:3\" to {start:1, end: 3}\n // - \"4\" to {start:4, end:4}\n var _a = __read(part.split(\":\"), 2),\n start = _a[0],\n end = _a[1];\n\n if (!isNaturalNumber(start)) {\n throw new FocusNumberError(start);\n }\n\n var startNumber = Number(start);\n\n if (startNumber < 1) {\n throw new LineOrColumnNumberError();\n }\n\n if (!end) {\n return {\n start: startNumber,\n end: startNumber\n };\n } else {\n if (!isNaturalNumber(end)) {\n throw new FocusNumberError(end);\n }\n\n return {\n start: startNumber,\n end: +end\n };\n }\n}\n\nfunction getFocusIndexes(focus, lines) {\n if (!focus) {\n return __spread(lines.keys());\n } else {\n var parsed = parseFocus(focus);\n var focusedIndexes = Object.keys(parsed).map(function (i) {\n return parseInt(i, 10);\n });\n return focusedIndexes;\n }\n}\n\nfunction parseFocus(focus) {\n if (!focus) {\n throw new Error(\"Focus cannot be empty\");\n }\n\n try {\n var parts = focus.split(/,(?![^\\[]*\\])/g).map(parsePart);\n return fromEntries(parts.flat());\n } catch (error) {\n // TODO enhance error\n throw error;\n }\n}\n\nfunction parsePart(part) {\n // a part could be\n // - a line number: \"2\"\n // - a line range: \"5:9\"\n // - a line number with a column selector: \"2[1,3:5,9]\"\n var columnsMatch = part.match(/(\\d+)\\[(.+)\\]/);\n\n if (columnsMatch) {\n var _a = __read(columnsMatch, 3),\n line = _a[1],\n columns = _a[2];\n\n var columnsList = columns.split(\",\").map(expandString);\n var lineIndex = Number(line) - 1;\n var columnIndexes = columnsList.flat().map(function (c) {\n return c - 1;\n });\n return [[lineIndex, columnIndexes]];\n } else {\n return expandString(part).map(function (lineNumber) {\n return [lineNumber - 1, true];\n });\n }\n}\n\nfunction expandString(part) {\n // Transforms something like\n // - \"1:3\" to [1,2,3]\n // - \"4\" to [4]\n var _a = __read(part.split(\":\"), 2),\n start = _a[0],\n end = _a[1];\n\n if (!isNaturalNumber(start)) {\n throw new FocusNumberError(start);\n }\n\n var startNumber = Number(start);\n\n if (startNumber < 1) {\n throw new LineOrColumnNumberError();\n }\n\n if (!end) {\n return [startNumber];\n } else {\n if (!isNaturalNumber(end)) {\n throw new FocusNumberError(end);\n }\n\n var list = [];\n\n for (var i = startNumber; i <= +end; i++) {\n list.push(i);\n }\n\n return list;\n }\n}\n\nfunction isNaturalNumber(n) {\n n = n.toString(); // force the value in case it is not\n\n var n1 = Math.abs(n),\n n2 = parseInt(n, 10);\n return !isNaN(n1) && n2 === n1 && n1.toString() === n;\n}\n\nvar LineOrColumnNumberError = function (_super) {\n __extends(LineOrColumnNumberError, _super);\n\n function LineOrColumnNumberError() {\n var _newTarget = this.constructor;\n\n var _this = _super.call(this, \"Invalid line or column number in focus string\") || this;\n\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n\n return LineOrColumnNumberError;\n}(Error);\n\nvar FocusNumberError = function (_super) {\n __extends(FocusNumberError, _super);\n\n function FocusNumberError(number) {\n var _newTarget = this.constructor;\n\n var _this = _super.call(this, \"Invalid number \\\"\" + number + \"\\\" in focus string\") || this;\n\n _this.number = number;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n\n return FocusNumberError;\n}(Error);\n\nfunction fromEntries(pairs) {\n var result = {};\n var index = -1,\n length = pairs == null ? 0 : pairs.length;\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n\n return result;\n}\n\nvar useLayoutEffect = typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nvar DEFAULT_WIDTH = 200; // type DimensionsResult = {\n// width: number\n// height: number\n// lineWidths: { prev: number; next: number }\n// lineHeight: number\n// colWidth: number\n// }\n\nfunction useDimensions(code, focus, minColumns, deps) {\n var _a = __read(React.useState(null), 2),\n dimensions = _a[0],\n setDimensions = _a[1];\n\n var windowWidth = useWindowWidth();\n var prevLongestLine = getLongestLine(code.prev, focus.prev);\n var nextLongestLine = getLongestLine(code.next, focus.next);\n var prevLineRef = React.useRef(null);\n var nextLineRef = React.useRef(null);\n var element = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n ref: prevLineRef\n }, React.createElement(\"div\", {\n style: {\n display: \"inline-block\"\n }\n }, React.createElement(\"span\", null, prevLongestLine))), React.createElement(\"div\", {\n ref: nextLineRef\n }, React.createElement(\"div\", {\n style: {\n display: \"inline-block\"\n }\n }, React.createElement(\"span\", null, nextLongestLine))));\n\n var allDeps = __spread(deps, [windowWidth, prevLongestLine, nextLongestLine, minColumns]);\n\n useLayoutEffect(function () {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n\n if (prevLineRef.current) {\n var pll = prevLineRef.current;\n var nll = nextLineRef.current;\n var codeElement = (pll === null || pll === void 0 ? void 0 : pll.parentElement) || (nll === null || nll === void 0 ? void 0 : nll.parentElement); // TODO is it clientWidth or clientRect?\n\n var plw = (_a = pll === null || pll === void 0 ? void 0 : pll.firstElementChild) === null || _a === void 0 ? void 0 : _a.clientWidth;\n var nlw = (_b = nll === null || nll === void 0 ? void 0 : nll.firstElementChild) === null || _b === void 0 ? void 0 : _b.clientWidth;\n var plh = (_d = (_c = pll === null || pll === void 0 ? void 0 : pll.firstElementChild) === null || _c === void 0 ? void 0 : _c.clientHeight) !== null && _d !== void 0 ? _d : 20;\n var nlh = (_f = (_e = nll === null || nll === void 0 ? void 0 : nll.firstElementChild) === null || _e === void 0 ? void 0 : _e.clientHeight) !== null && _f !== void 0 ? _f : 20;\n var colWidth = pll ? plw / (((_g = pll.textContent) === null || _g === void 0 ? void 0 : _g.length) || 1) : nlw / (((_h = nll.textContent) === null || _h === void 0 ? void 0 : _h.length) || 1);\n var d = {\n containerWidth: getWidthWithoutPadding(codeElement.parentElement),\n containerHeight: getHeightWithoutPadding(codeElement.parentElement),\n lineWidths: [plw || nlw || DEFAULT_WIDTH, nlw || plw || DEFAULT_WIDTH],\n lineWidth: [Math.max(plw || nlw || DEFAULT_WIDTH, colWidth * minColumns), Math.max(nlw || plw || DEFAULT_WIDTH, colWidth * minColumns)],\n lineHeight: Math.max(plh, nlh),\n colWidth: colWidth,\n deps: allDeps\n };\n setDimensions(d);\n }\n }, [allDeps]);\n\n if (!dimensions || depsChanged$1(dimensions.deps, allDeps)) {\n return {\n element: element,\n dimensions: null\n };\n } else {\n return {\n element: element,\n dimensions: dimensions\n };\n }\n}\n\nvar newlineRe$1 = /\\r\\n|\\r|\\n/;\n\nfunction getLongestLine(code, focus) {\n var lines = code ? code.split(newlineRe$1) : [\"\"];\n var focusIndexes = getFocusIndexes(focus, lines);\n var longestLine = \"\";\n lines.forEach(function (line, index) {\n if (focusIndexes.includes(index) && line.length > longestLine.length) {\n longestLine = line;\n }\n });\n return longestLine;\n}\n\nfunction getWidthWithoutPadding(element) {\n var computedStyle = getComputedStyle(element);\n return element.clientWidth - parseFloat(computedStyle.paddingLeft) - parseFloat(computedStyle.paddingRight);\n}\n\nfunction getHeightWithoutPadding(element) {\n var computedStyle = getComputedStyle(element);\n return parseFloat(computedStyle.height) - parseFloat(computedStyle.paddingTop) - parseFloat(computedStyle.paddingBottom);\n}\n\nfunction depsChanged$1(oldDeps, newDeps) {\n for (var i = 0; i < oldDeps.length; i++) {\n if (oldDeps[i] !== newDeps[i]) return true;\n }\n\n return false;\n}\n\nfunction useWindowWidth() {\n var _a = __read(React.useState(undefined), 2),\n width = _a[0],\n setWidth = _a[1];\n\n React.useEffect(function () {\n function handleResize() {\n setWidth(window.innerWidth);\n }\n\n window.addEventListener(\"resize\", handleResize);\n return function () {\n return window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n return width;\n}\n\nvar $schema = \"vscode://schemas/color-theme\";\nvar name = \"dark-plus\";\nvar tokenColors = [{\n settings: {\n foreground: \"#D4D4D4\"\n }\n}, {\n scope: [\"meta.embedded\", \"source.groovy.embedded\"],\n settings: {\n foreground: \"#D4D4D4\"\n }\n}, {\n scope: \"emphasis\",\n settings: {\n fontStyle: \"italic\"\n }\n}, {\n scope: \"strong\",\n settings: {\n fontStyle: \"bold\"\n }\n}, {\n scope: \"header\",\n settings: {\n foreground: \"#000080\"\n }\n}, {\n scope: \"comment\",\n settings: {\n foreground: \"#6A9955\"\n }\n}, {\n scope: \"constant.language\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: [\"constant.numeric\", \"variable.other.enummember\", \"keyword.operator.plus.exponent\", \"keyword.operator.minus.exponent\"],\n settings: {\n foreground: \"#b5cea8\"\n }\n}, {\n scope: \"constant.regexp\",\n settings: {\n foreground: \"#646695\"\n }\n}, {\n scope: \"entity.name.tag\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"entity.name.tag.css\",\n settings: {\n foreground: \"#d7ba7d\"\n }\n}, {\n scope: \"entity.other.attribute-name\",\n settings: {\n foreground: \"#9cdcfe\"\n }\n}, {\n scope: [\"entity.other.attribute-name.class.css\", \"entity.other.attribute-name.class.mixin.css\", \"entity.other.attribute-name.id.css\", \"entity.other.attribute-name.parent-selector.css\", \"entity.other.attribute-name.pseudo-class.css\", \"entity.other.attribute-name.pseudo-element.css\", \"source.css.less entity.other.attribute-name.id\", \"entity.other.attribute-name.scss\"],\n settings: {\n foreground: \"#d7ba7d\"\n }\n}, {\n scope: \"invalid\",\n settings: {\n foreground: \"#f44747\"\n }\n}, {\n scope: \"markup.underline\",\n settings: {\n fontStyle: \"underline\"\n }\n}, {\n scope: \"markup.bold\",\n settings: {\n fontStyle: \"bold\",\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"markup.heading\",\n settings: {\n fontStyle: \"bold\",\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"markup.italic\",\n settings: {\n fontStyle: \"italic\"\n }\n}, {\n scope: \"markup.inserted\",\n settings: {\n foreground: \"#b5cea8\"\n }\n}, {\n scope: \"markup.deleted\",\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n scope: \"markup.changed\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"punctuation.definition.quote.begin.markdown\",\n settings: {\n foreground: \"#6A9955\"\n }\n}, {\n scope: \"punctuation.definition.list.begin.markdown\",\n settings: {\n foreground: \"#6796e6\"\n }\n}, {\n scope: \"markup.inline.raw\",\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n name: \"brackets of XML/HTML tags\",\n scope: \"punctuation.definition.tag\",\n settings: {\n foreground: \"#808080\"\n }\n}, {\n scope: [\"meta.preprocessor\", \"entity.name.function.preprocessor\"],\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"meta.preprocessor.string\",\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n scope: \"meta.preprocessor.numeric\",\n settings: {\n foreground: \"#b5cea8\"\n }\n}, {\n scope: \"meta.structure.dictionary.key.python\",\n settings: {\n foreground: \"#9cdcfe\"\n }\n}, {\n scope: \"meta.diff.header\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"storage\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"storage.type\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: [\"storage.modifier\", \"keyword.operator.noexcept\"],\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: [\"string\", \"meta.embedded.assembly\"],\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n scope: \"string.tag\",\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n scope: \"string.value\",\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n scope: \"string.regexp\",\n settings: {\n foreground: \"#d16969\"\n }\n}, {\n name: \"String interpolation\",\n scope: [\"punctuation.definition.template-expression.begin\", \"punctuation.definition.template-expression.end\", \"punctuation.section.embedded\"],\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n name: \"Reset JavaScript string interpolation expression\",\n scope: [\"meta.template.expression\"],\n settings: {\n foreground: \"#d4d4d4\"\n }\n}, {\n scope: [\"support.type.vendored.property-name\", \"support.type.property-name\", \"variable.css\", \"variable.scss\", \"variable.other.less\", \"source.coffee.embedded\"],\n settings: {\n foreground: \"#9cdcfe\"\n }\n}, {\n scope: \"keyword\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"keyword.control\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"keyword.operator\",\n settings: {\n foreground: \"#d4d4d4\"\n }\n}, {\n scope: [\"keyword.operator.new\", \"keyword.operator.expression\", \"keyword.operator.cast\", \"keyword.operator.sizeof\", \"keyword.operator.alignof\", \"keyword.operator.typeid\", \"keyword.operator.alignas\", \"keyword.operator.instanceof\", \"keyword.operator.logical.python\", \"keyword.operator.wordlike\"],\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"keyword.other.unit\",\n settings: {\n foreground: \"#b5cea8\"\n }\n}, {\n scope: [\"punctuation.section.embedded.begin.php\", \"punctuation.section.embedded.end.php\"],\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"support.function.git-rebase\",\n settings: {\n foreground: \"#9cdcfe\"\n }\n}, {\n scope: \"constant.sha.git-rebase\",\n settings: {\n foreground: \"#b5cea8\"\n }\n}, {\n name: \"coloring of the Java import and package identifiers\",\n scope: [\"storage.modifier.import.java\", \"variable.language.wildcard.java\", \"storage.modifier.package.java\"],\n settings: {\n foreground: \"#d4d4d4\"\n }\n}, {\n name: \"this.self\",\n scope: \"variable.language\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n name: \"Function declarations\",\n scope: [\"entity.name.function\", \"support.function\", \"support.constant.handlebars\", \"source.powershell variable.other.member\", \"entity.name.operator.custom-literal\"],\n settings: {\n foreground: \"#DCDCAA\"\n }\n}, {\n name: \"Types declaration and references\",\n scope: [\"meta.return-type\", \"support.class\", \"support.type\", \"entity.name.type\", \"entity.name.namespace\", \"entity.other.attribute\", \"entity.name.scope-resolution\", \"entity.name.class\", \"storage.type.numeric.go\", \"storage.type.byte.go\", \"storage.type.boolean.go\", \"storage.type.string.go\", \"storage.type.uintptr.go\", \"storage.type.error.go\", \"storage.type.rune.go\", \"storage.type.cs\", \"storage.type.generic.cs\", \"storage.type.modifier.cs\", \"storage.type.variable.cs\", \"storage.type.annotation.java\", \"storage.type.generic.java\", \"storage.type.java\", \"storage.type.object.array.java\", \"storage.type.primitive.array.java\", \"storage.type.primitive.java\", \"storage.type.token.java\", \"storage.type.groovy\", \"storage.type.annotation.groovy\", \"storage.type.parameters.groovy\", \"storage.type.generic.groovy\", \"storage.type.object.array.groovy\", \"storage.type.primitive.array.groovy\", \"storage.type.primitive.groovy\"],\n settings: {\n foreground: \"#4EC9B0\"\n }\n}, {\n name: \"Types declaration and references, TS grammar specific\",\n scope: [\"meta.type.cast.expr\", \"meta.type.new.expr\", \"support.constant.math\", \"support.constant.dom\", \"support.constant.json\", \"entity.other.inherited-class\"],\n settings: {\n foreground: \"#4EC9B0\"\n }\n}, {\n name: \"Control flow / Special keywords\",\n scope: [\"keyword.control\", \"source.cpp keyword.operator.new\", \"keyword.operator.delete\", \"keyword.other.using\", \"keyword.other.operator\", \"entity.name.operator\"],\n settings: {\n foreground: \"#C586C0\"\n }\n}, {\n name: \"Variable and parameter name\",\n scope: [\"variable\", \"meta.definition.variable.name\", \"support.variable\", \"entity.name.variable\", \"constant.other.placeholder\"],\n settings: {\n foreground: \"#9CDCFE\"\n }\n}, {\n name: \"Constants and enums\",\n scope: [\"variable.other.constant\", \"variable.other.enummember\"],\n settings: {\n foreground: \"#4FC1FF\"\n }\n}, {\n name: \"Object keys, TS grammar specific\",\n scope: [\"meta.object-literal.key\"],\n settings: {\n foreground: \"#9CDCFE\"\n }\n}, {\n name: \"CSS property value\",\n scope: [\"support.constant.property-value\", \"support.constant.font-name\", \"support.constant.media-type\", \"support.constant.media\", \"constant.other.color.rgb-value\", \"constant.other.rgb-value\", \"support.constant.color\"],\n settings: {\n foreground: \"#CE9178\"\n }\n}, {\n name: \"Regular expression groups\",\n scope: [\"punctuation.definition.group.regexp\", \"punctuation.definition.group.assertion.regexp\", \"punctuation.definition.character-class.regexp\", \"punctuation.character.set.begin.regexp\", \"punctuation.character.set.end.regexp\", \"keyword.operator.negation.regexp\", \"support.other.parenthesis.regexp\"],\n settings: {\n foreground: \"#CE9178\"\n }\n}, {\n scope: [\"constant.character.character-class.regexp\", \"constant.other.character-class.set.regexp\", \"constant.other.character-class.regexp\", \"constant.character.set.regexp\"],\n settings: {\n foreground: \"#d16969\"\n }\n}, {\n scope: [\"keyword.operator.or.regexp\", \"keyword.control.anchor.regexp\"],\n settings: {\n foreground: \"#DCDCAA\"\n }\n}, {\n scope: \"keyword.operator.quantifier.regexp\",\n settings: {\n foreground: \"#d7ba7d\"\n }\n}, {\n scope: \"constant.character\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"constant.character.escape\",\n settings: {\n foreground: \"#d7ba7d\"\n }\n}, {\n scope: \"entity.name.label\",\n settings: {\n foreground: \"#C8C8C8\"\n }\n}];\nvar semanticTokenColors = {\n newOperator: \"#C586C0\",\n stringLiteral: \"#ce9178\",\n customLiteral: \"#DCDCAA\",\n numberLiteral: \"#b5cea8\"\n};\nvar colors = {\n \"editor.background\": \"#1E1E1E\",\n \"editor.foreground\": \"#D4D4D4\",\n \"editor.inactiveSelectionBackground\": \"#3A3D41\",\n \"editorIndentGuide.background\": \"#404040\",\n \"editorIndentGuide.activeBackground\": \"#707070\",\n \"editor.selectionHighlightBackground\": \"#ADD6FF26\",\n \"list.dropBackground\": \"#383B3D\",\n \"activityBarBadge.background\": \"#007ACC\",\n \"sideBarTitle.foreground\": \"#BBBBBB\",\n \"input.placeholderForeground\": \"#A6A6A6\",\n \"menu.background\": \"#252526\",\n \"menu.foreground\": \"#CCCCCC\",\n \"statusBarItem.remoteForeground\": \"#FFF\",\n \"statusBarItem.remoteBackground\": \"#16825D\",\n \"ports.iconRunningProcessForeground\": \"#369432\",\n \"sideBarSectionHeader.background\": \"#0000\",\n \"sideBarSectionHeader.border\": \"#ccc3\",\n \"tab.lastPinnedBorder\": \"#ccc3\",\n \"list.activeSelectionIconForeground\": \"#FFF\"\n};\nvar DEFAULT_THEME = {\n $schema: $schema,\n name: name,\n tokenColors: tokenColors,\n semanticTokenColors: semanticTokenColors,\n colors: colors\n};\n\nfunction useAsyncMemo(_a, deps) {\n var isReady = _a.isReady,\n load = _a.load,\n run = _a.run,\n placeholder = _a.placeholder;\n\n var _b = __read(React.useState({\n result: null,\n deps: [],\n version: 0\n }), 2),\n _c = _b[0],\n lastLoadedResult = _c.result,\n lastLoadedDeps = _c.deps,\n version = _c.version,\n setState = _b[1];\n\n React.useEffect(function () {\n if (!isReady) {\n load().then(function () {\n setState(function (_a) {\n var version = _a.version;\n return {\n result: run(),\n deps: deps,\n version: version + 1\n };\n });\n });\n }\n }, deps);\n return React.useMemo(function () {\n if (depsChanged(deps, lastLoadedDeps)) {\n return isReady ? run() : placeholder();\n } else {\n return lastLoadedResult;\n }\n }, __spread([version], deps));\n}\n\nfunction depsChanged(oldDeps, newDeps) {\n if (oldDeps === newDeps) return false;\n if (!oldDeps || !newDeps) return true;\n return oldDeps === null || oldDeps === void 0 ? void 0 : oldDeps.some(function (dep, index) {\n return newDeps[index] !== dep;\n });\n}\n/**\r\n * From https://github.com/shikijs/shiki/blob/HEAD/packages/shiki/src/loader.ts\r\n */\n\n\nvar VSCODE_FALLBACK_EDITOR_FG = {\n light: \"#333333\",\n dark: \"#bbbbbb\"\n};\nvar VSCODE_FALLBACK_EDITOR_BG = {\n light: \"#fffffe\",\n dark: \"#1e1e1e\"\n};\n\nfunction getThemeDefaultColors(theme) {\n var _a, _b, _c, _d, _e, _f;\n\n var fg, bg;\n /**\r\n * First try:\r\n * Theme might contain a global `tokenColor` without `name` or `scope`\r\n * Used as default value for foreground/background\r\n */\n\n var settings = theme.settings ? theme.settings : theme.tokenColors;\n var globalSetting = settings ? settings.find(function (s) {\n return !s.name && !s.scope;\n }) : undefined;\n\n if ((_a = globalSetting === null || globalSetting === void 0 ? void 0 : globalSetting.settings) === null || _a === void 0 ? void 0 : _a.foreground) {\n fg = globalSetting.settings.foreground;\n }\n\n if ((_b = globalSetting === null || globalSetting === void 0 ? void 0 : globalSetting.settings) === null || _b === void 0 ? void 0 : _b.background) {\n bg = globalSetting.settings.background;\n }\n /**\r\n * Second try:\r\n * If there's no global `tokenColor` without `name` or `scope`\r\n * Use `editor.foreground` and `editor.background`\r\n */\n\n\n if (!fg && ((_d = (_c = theme) === null || _c === void 0 ? void 0 : _c.colors) === null || _d === void 0 ? void 0 : _d[\"editor.foreground\"])) {\n fg = theme.colors[\"editor.foreground\"];\n }\n\n if (!bg && ((_f = (_e = theme) === null || _e === void 0 ? void 0 : _e.colors) === null || _f === void 0 ? void 0 : _f[\"editor.background\"])) {\n bg = theme.colors[\"editor.background\"];\n }\n /**\r\n * Last try:\r\n * If there's no fg/bg color specified in theme, use default\r\n */\n\n\n if (!fg) {\n fg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;\n }\n\n if (!bg) {\n bg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;\n }\n\n return {\n fg: fg,\n bg: bg\n };\n}\n\nvar _a;\n\nvar highlighterPromise = null;\nvar highlighter = null;\n\nfunction isHighlighterReady(lang, theme) {\n return highlighter != null && !missingTheme(highlighter, theme) && !missingLang(highlighter, lang);\n}\n\nfunction loadHighlighter(lang, theme) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (highlighterPromise === null) {\n setCDN(\"https://unpkg.com/shiki/\");\n highlighterPromise = getHighlighter({\n theme: theme,\n langs: [lang]\n });\n }\n\n if (!(highlighter === null)) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , highlighterPromise];\n\n case 1:\n highlighter = _a.sent();\n _a.label = 2;\n\n case 2:\n if (!missingTheme(highlighter, theme)) return [3\n /*break*/\n , 4];\n return [4\n /*yield*/\n , highlighter.loadTheme(theme)];\n\n case 3:\n _a.sent();\n\n _a.label = 4;\n\n case 4:\n if (!missingLang(highlighter, lang)) return [3\n /*break*/\n , 6];\n return [4\n /*yield*/\n , highlighter.loadLanguage(lang)];\n\n case 5:\n _a.sent();\n\n _a.label = 6;\n\n case 6:\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n\nfunction highlightOrPlaceholder(code, lang, theme) {\n if (isHighlighterReady(lang, theme)) {\n return getCodeLines(highlighter, code, lang, theme);\n } else {\n return tokenizePlaceholder(code);\n }\n}\n\nfunction getCodeLines(highlighter, code, lang, theme) {\n var lines = highlighter.codeToThemedTokens(code, lang, theme.name, {\n includeExplanation: false\n });\n return lines.map(function (line) {\n return line.map(function (token) {\n return [token.content, {\n style: getStyle(token)\n }];\n });\n });\n}\n\nfunction missingTheme(highlighter, theme) {\n return !highlighter.getLoadedThemes().some(function (t) {\n return t === theme.name;\n });\n}\n\nfunction missingLang(highlighter, lang) {\n return !highlighter.getLoadedLanguages().some(function (l) {\n return l === lang;\n });\n}\n\nvar FONT_STYLE_TO_CSS = (_a = {}, _a[-1\n/* NotSet */\n] = {}, _a[0\n/* None */\n] = {}, _a[1\n/* Italic */\n] = {\n fontStyle: \"italic\"\n}, _a[2\n/* Bold */\n] = {\n fontWeight: \"bold\"\n}, _a[4\n/* Underline */\n] = {\n textDecoration: \"underline\"\n}, _a);\n\nfunction getStyle(token) {\n var fontStyle = token.fontStyle ? FONT_STYLE_TO_CSS[token.fontStyle] : {};\n return _assign({\n color: token.color\n }, fontStyle);\n}\n\nvar newlineRe = /\\r\\n|\\r|\\n/;\n\nfunction tokenizePlaceholder(code) {\n var lines = code.split(newlineRe);\n return lines.map(function (line) {\n return [[line, {}]];\n });\n}\n\nfunction mergeLines(code, lines) {\n var enterIndex = 0;\n var exitIndex = 0;\n var indexes = diff(code);\n var newLines = indexes.map(function (index) {\n if (index.next === undefined) {\n return _assign(_assign({}, lines.prev[index.prev]), {\n lineNumber: {\n prev: index.prev + 1\n },\n move: \"exit\",\n enterIndex: null,\n exitIndex: exitIndex++\n });\n }\n\n if (index.prev === undefined) {\n return _assign(_assign({}, lines.next[index.next]), {\n lineNumber: {\n next: index.next + 1\n },\n move: \"enter\",\n enterIndex: enterIndex++,\n exitIndex: null\n });\n }\n\n return _assign(_assign({}, lines.prev[index.prev]), {\n lineNumber: {\n prev: index.prev + 1,\n next: index.next + 1\n },\n move: \"stay\",\n enterIndex: null,\n exitIndex: null\n });\n });\n return {\n lines: newLines,\n enterCount: enterIndex,\n exitCount: exitIndex\n };\n}\n/**\r\n * Returns a list of pairs of line indexes:\r\n *\r\n * For example if lines 2 and 3 were removed\r\n * and two lines where added at the end:\r\n * 0 0\r\n * 1 -\r\n * 2 -\r\n * 3 1\r\n * - 2\r\n * - 3\r\n */\n\n\nfunction diff(code) {\n var changes = diffLines(code.prev, code.next);\n var indexes = [];\n var prevIndex = 0;\n var nextIndex = 0;\n changes.forEach(function (change) {\n if (change.added) {\n for (var i = 0; i < change.count; i++) {\n indexes.push({\n next: nextIndex++\n });\n }\n } else if (change.removed) {\n for (var i = 0; i < change.count; i++) {\n indexes.push({\n prev: prevIndex++\n });\n }\n } else {\n for (var i = 0; i < change.count; i++) {\n indexes.push({\n prev: prevIndex++,\n next: nextIndex++\n });\n }\n }\n });\n return indexes;\n}\n\nfunction splitByFocus(mergedCode, focus, annotations) {\n var lines = mergedCode.lines,\n mergedCodeRest = __rest(mergedCode, [\"lines\"]);\n\n var focusByLineNumber = map(focus, function (focus) {\n return mapFocusToLineNumbers(focus, lines);\n });\n var splittedLines = lines.map(function (line) {\n var tokens = line.tokens,\n rest = __rest(line, [\"tokens\"]);\n\n var lineFocus = {\n prev: line.lineNumber.prev ? focusByLineNumber.prev[line.lineNumber.prev] : false,\n next: line.lineNumber.next ? focusByLineNumber.next[line.lineNumber.next] : false\n };\n var lineAnnotations = {\n prev: line.lineNumber.prev ? annotations.prev[line.lineNumber.prev] || [] : [],\n next: line.lineNumber.next ? annotations.next[line.lineNumber.next] || [] : []\n };\n return _assign({\n focused: map(lineFocus, function (focus) {\n return !!focus;\n }),\n groups: getTokenGroups(tokens, lineFocus, lineAnnotations)\n }, rest);\n });\n var focusedLineNumbers = map(focusByLineNumber, function (focusByLineNumber) {\n return Object.keys(focusByLineNumber).map(function (k) {\n return Number(k);\n });\n });\n var firstFocusedLineNumber = map(focusedLineNumbers, function (focusedLineNumbers) {\n return Math.min.apply(Math, __spread(focusedLineNumbers));\n });\n var lastFocusedLineNumber = map(focusedLineNumbers, function (focusedLineNumbers) {\n return Math.max.apply(Math, __spread(focusedLineNumbers));\n });\n return _assign({\n lines: splittedLines,\n firstFocusedLineNumber: firstFocusedLineNumber,\n lastFocusedLineNumber: lastFocusedLineNumber\n }, mergedCodeRest);\n}\n/**\r\n * Get the least amount of groups where no consecutive groups have\r\n * the same combination of prevFocus, nextFocus, prevAnnotation, nextAnnotation.\r\n */\n\n\nfunction getTokenGroups(tokens, focus, annotations) {\n var focusExtremes = map(focus, function (focus) {\n return Array.isArray(focus) ? focus : [];\n });\n var annotationExtremes = map(annotations, function (annotations) {\n return annotations.map(function (_a) {\n var columnNumbers = _a.columnNumbers;\n return columnNumbers;\n });\n });\n\n var allExtremes = __spread(focusExtremes.prev, focusExtremes.next, annotationExtremes.prev, annotationExtremes.next);\n\n var splittedTokens = splitTokens(tokens, allExtremes);\n var startIndex = 0;\n var currentGroup = null;\n var groups = [];\n splittedTokens.forEach(function (token) {\n var newPrevFocus = isIn(startIndex, focus.prev);\n var newNextFocus = isIn(startIndex, focus.next);\n var newPrevAnnotation = getAnnotation(startIndex, annotations.prev);\n var newNextAnnotation = getAnnotation(startIndex, annotations.next);\n\n if (!currentGroup || currentGroup.focused.prev !== newPrevFocus || currentGroup.focused.next !== newNextFocus || currentGroup.annotation.prev !== newPrevAnnotation || currentGroup.annotation.next !== newNextAnnotation) {\n currentGroup = {\n focused: {\n prev: newPrevFocus,\n next: newNextFocus\n },\n tokens: [],\n annotation: {\n prev: newPrevAnnotation,\n next: newNextAnnotation\n }\n };\n groups.push(currentGroup);\n }\n\n currentGroup === null || currentGroup === void 0 ? void 0 : currentGroup.tokens.push(token);\n startIndex += token.content.length;\n });\n return groups.map(function (group) {\n return {\n focused: group.focused,\n tokens: group.tokens,\n element: getGroupElement(group)\n };\n });\n}\n\nfunction getGroupElement(group) {\n return React.createElement(React.Fragment, null, group.tokens.map(function (_a, i) {\n var content = _a.content,\n props = _a.props;\n return React.createElement(\"span\", _assign({}, props, {\n key: i + 1\n }), content);\n }));\n}\n/**\r\n * Split a list of tokens into a more fine-graned list of tokens\r\n *\r\n * tokens: [abc][defg]\r\n * extremes: [1:2,2:5]\r\n * result tokens: [ab][c][de][fg]\r\n *\r\n */\n\n\nfunction splitTokens(tokens, extremes) {\n var splitIndexes = __spread(extremes.map(function (e) {\n return e.start - 1;\n }), extremes.map(function (e) {\n return e.end;\n }));\n\n var oldTokens = tokens;\n splitIndexes.forEach(function (splitIndex) {\n var newTokens = [];\n var i = 0;\n oldTokens.forEach(function (token) {\n var startIndex = i;\n var endIndex = i + token.content.length;\n var shouldSplit = startIndex < splitIndex && splitIndex < endIndex;\n\n if (shouldSplit) {\n var sliceIndex = splitIndex - startIndex;\n var content0 = token.content.slice(0, sliceIndex);\n var content1 = token.content.slice(sliceIndex);\n newTokens.push(_assign(_assign({}, token), {\n content: content0\n }));\n newTokens.push(_assign(_assign({}, token), {\n content: content1\n }));\n } else {\n newTokens.push(token);\n }\n\n i = endIndex;\n });\n oldTokens = newTokens;\n });\n return oldTokens;\n}\n\nfunction isIn(index, intervals) {\n if (!Array.isArray(intervals)) {\n return intervals;\n }\n\n return intervals.some(function (_a) {\n var start = _a.start,\n end = _a.end;\n return start - 1 <= index && index < end;\n });\n}\n\nfunction getAnnotation(index, annotations) {\n return annotations.find(function (_a) {\n var columnNumbers = _a.columnNumbers;\n return columnNumbers.start - 1 <= index && index < columnNumbers.end;\n });\n}\n\nfunction tween(params, t) {\n if (params.fixed) return params.value;\n\n var _a = __read(params.interval, 2),\n start = _a[0],\n end = _a[1];\n\n var _b = __read(params.extremes, 2),\n from = _b[0],\n to = _b[1];\n\n if (t < start) return from;\n if (t > end) return to;\n var x = (t - start) / (end - start);\n var ease = params.ease || easing.linear;\n return from + ease(x) * (to - from);\n}\n\nfunction stagger(_a, index, count) {\n var _b = __read(_a, 2),\n start = _b[0],\n end = _b[1];\n\n if (count <= 1) return [start, end];\n var totalDuration = end - start;\n var stepDuration = totalDuration / Math.pow(count, 1 / 8);\n var tick = (totalDuration - stepDuration) / (count - 1);\n var stepStart = start + tick * index;\n var stepEnd = stepStart + stepDuration;\n return [stepStart, stepEnd];\n}\n\nvar easing = {\n linear: function linear(t) {\n return t;\n },\n easeInQuad: function easeInQuad(t) {\n return t * t;\n },\n easeOutQuad: function easeOutQuad(t) {\n return t * (2 - t);\n },\n easeInOutCubic: function easeInOutCubic(t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n }\n};\n\nfunction getLinesWithElements(lines, verticalInterval, enterCount, exitCount) {\n // startY is the progress when we start moving vertically\n // endY is when we stop\n var _a = __read(verticalInterval, 2),\n startY = _a[0],\n endY = _a[1];\n\n return lines.map(function (line) {\n var lineIndex = map(line.lineNumber, function (ln) {\n return ln && ln - 1;\n });\n var enterIndex = line.enterIndex,\n exitIndex = line.exitIndex;\n var tweenY = line.move === \"exit\" ? {\n fixed: true,\n value: lineIndex.prev\n } : line.move === \"enter\" ? {\n fixed: true,\n value: lineIndex.next\n } : {\n fixed: false,\n extremes: [lineIndex.prev, lineIndex.next],\n interval: [startY, endY],\n ease: easing.easeInOutCubic\n };\n var tweenX = line.move === \"exit\" ? {\n fixed: false,\n extremes: [0, -1],\n ease: easing.easeInQuad,\n interval: stagger([0, startY], exitIndex, exitCount)\n } : line.move === \"enter\" ? {\n fixed: false,\n extremes: [1, 0],\n ease: easing.easeOutQuad,\n interval: stagger([endY, 1], enterIndex, enterCount)\n } : {\n fixed: true,\n value: 0\n };\n return _assign(_assign({}, line), {\n tweenX: tweenX,\n tweenY: tweenY\n });\n });\n}\n\nfunction parseAnnotations(annotations, theme) {\n var inlineCodeAnnotations = mapWithDefault(annotations, [], function (annotations) {\n return annotations.filter(isInline);\n });\n var multilineCodeAnnotations = mapWithDefault(annotations, [], function (annotations) {\n return annotations.filter(function (a) {\n return !isInline(a);\n });\n });\n return {\n inlineAnnotations: map(inlineCodeAnnotations, function (annotations) {\n return parseInlineAnnotations(annotations);\n }),\n multilineAnnotations: map(multilineCodeAnnotations, function (annotations) {\n return parseMultilineAnnotations(annotations, theme);\n })\n };\n}\n\nfunction isInline(annotation) {\n return hasColumns(annotation.focus);\n}\n\nfunction parseInlineAnnotations(annotations, theme) {\n var annotationMap = {};\n annotations.forEach(function (annotation) {\n var focusMap = parsePartToObject(annotation.focus);\n var lineNumber = +Object.keys(focusMap)[0];\n var columnNumbersList = focusMap[lineNumber];\n var lineAnnotations = annotationMap[lineNumber] || [];\n lineAnnotations.push({\n columnNumbers: columnNumbersList[0],\n data: annotation.data,\n Component: annotation.Component || defaultInlineComponent()\n });\n annotationMap[lineNumber] = lineAnnotations;\n });\n return annotationMap;\n}\n\nfunction defaultInlineComponent(annotation, theme) {\n return function (_a) {\n var children = _a.children;\n return React.createElement(\"span\", {\n style: {\n outline: \"red 1px solid\"\n }\n }, children);\n };\n}\n\nfunction parseMultilineAnnotations(annotations, theme) {\n return annotations.map(function (annotation) {\n return {\n lineNumbers: parseExtremes(annotation.focus),\n data: annotation.data,\n Component: annotation.Component || defaultMultilineComponent(annotation, theme)\n };\n });\n}\n\nfunction defaultMultilineComponent(annotation, theme) {\n // TODO handle missing bg\n var bg = theme.colors[\"editor.lineHighlightBackground\"] || theme.colors[\"editor.selectionHighlightBackground\"];\n return function (_a) {\n var children = _a.children,\n style = _a.style;\n return React.createElement(\"div\", {\n style: _assign(_assign({}, style), {\n background: bg,\n cursor: \"pointer\"\n }),\n onClick: function onClick(_) {\n return alert(\"clicked\");\n }\n }, children);\n };\n} // --- multiline\n\n\nfunction annotateMultiline(lines, annotations) {\n return {\n prev: annotateMultilineSide(lines, annotations.prev, function (line) {\n return line.lineNumber.prev;\n }),\n next: annotateMultilineSide(lines, annotations.next, function (line) {\n return line.lineNumber.next;\n })\n };\n}\n\nfunction annotateMultilineSide(lines, ogAnnotations, getLineNumber) {\n var annotations = __spread(ogAnnotations);\n\n annotations.sort(function (a, b) {\n return a.lineNumbers.start - b.lineNumbers.start;\n });\n var lineIndex = 0;\n var groups = [];\n\n while (lineIndex < lines.length) {\n var annotation = annotations[0];\n var line = lines[lineIndex];\n\n if (annotation && getLineNumber(line) === annotation.lineNumbers.start) {\n // create annotation group\n var group = {\n lines: [],\n annotation: annotation\n };\n\n while (line && (!getLineNumber(line) || getLineNumber(line) <= annotation.lineNumbers.end)) {\n group.lines.push(line);\n line = lines[++lineIndex];\n }\n\n groups.push(group);\n annotations.shift();\n } else if (!annotation) {\n // create unannotated group until the end\n groups.push({\n lines: lines.slice(lineIndex)\n });\n lineIndex = lines.length;\n } else {\n // create unannotated group until next annotation\n var group = {\n lines: []\n };\n\n while (line && (!getLineNumber(line) || getLineNumber(line) < annotation.lineNumbers.start)) {\n group.lines.push(line);\n line = lines[++lineIndex];\n }\n\n groups.push(group);\n }\n }\n\n return groups;\n} // --- inline\n\n\nfunction annotateInline(lines, inlineAnnotations) {\n return lines.map(function (_a) {\n var groups = _a.groups,\n line = __rest(_a, [\"groups\"]);\n\n var lineNumber = line.lineNumber;\n var annotations = {\n prev: lineNumber.prev ? inlineAnnotations.prev[lineNumber.prev] || [] : [],\n next: lineNumber.next ? inlineAnnotations.next[lineNumber.next] || [] : []\n };\n return _assign(_assign({}, line), {\n annotatedGroups: annotateLineTokenGroups(groups, annotations)\n });\n });\n}\n/**\r\n * Generate a list of annotated groups tweens\r\n * each annotated group contains a list of token groups and maybe an annotation.\r\n * The two annotated groups in a tween doesn't need to have the same token groups.\r\n */\n\n\nfunction annotateLineTokenGroups(tokenGroups, annotations) {\n var prevTokenGroups = __spread(tokenGroups);\n\n var nextTokenGroups = __spread(tokenGroups);\n\n var prevAnnotations = __spread(annotations.prev);\n\n var nextAnnotations = __spread(annotations.next);\n\n var annotatedGroups = [];\n var prevColumn = 1;\n var nextColumn = 1; // iterate until we consume both lists of token groups\n\n while (prevTokenGroups.length > 0 || nextTokenGroups.length > 0) {\n var prevAnnotation = prevAnnotations[0];\n var nextAnnotation = nextAnnotations[0];\n var isPrevAnnotationStarting = prevAnnotation && prevAnnotation.columnNumbers.start === prevColumn;\n var isNextAnnotationStarting = nextAnnotation && nextAnnotation.columnNumbers.start === nextColumn;\n\n if (prevColumn < nextColumn) {\n // if the prev list is behind we consume from prevTokenGroups\n if (isPrevAnnotationStarting) {\n // if there is an annotation starting at this point we consume until the annotation ends\n var end = prevAnnotation.columnNumbers.end + 1;\n annotatedGroups.push({\n prev: {\n annotation: prevAnnotation,\n groups: shiftGroups(prevTokenGroups, prevColumn, end)\n }\n });\n prevColumn = end;\n prevAnnotations.shift();\n } else {\n // if there isn't we consume until we sync with the next list or an annotation starts\n var end = Math.min(nextColumn, (prevAnnotation === null || prevAnnotation === void 0 ? void 0 : prevAnnotation.columnNumbers.start) || nextColumn);\n annotatedGroups.push({\n prev: {\n groups: shiftGroups(prevTokenGroups, prevColumn, end)\n }\n });\n prevColumn = end;\n }\n } else if (prevColumn > nextColumn) {\n // if the next list is behind we consume from nextTokenGroups\n if (isNextAnnotationStarting) {\n // if there is an annotation starting at this point we consume until the annotation ends\n var end = nextAnnotation.columnNumbers.end + 1;\n annotatedGroups.push({\n next: {\n annotation: nextAnnotation,\n groups: shiftGroups(nextTokenGroups, nextColumn, end)\n }\n });\n nextColumn = end;\n nextAnnotations.shift();\n } else {\n // if there isn't we consume until we sync with the prev list or an annotation starts\n var end = Math.min(prevColumn, (nextAnnotation === null || nextAnnotation === void 0 ? void 0 : nextAnnotation.columnNumbers.start) || prevColumn);\n annotatedGroups.push({\n next: {\n groups: shiftGroups(nextTokenGroups, nextColumn, end)\n }\n });\n nextColumn = end;\n }\n } else if (prevColumn == nextColumn) {\n // if we are at the same column in both lists we have 5 different cases\n if (isPrevAnnotationStarting && isNextAnnotationStarting && prevAnnotation.columnNumbers.end === nextAnnotation.columnNumbers.end) {\n // both annotations starts here and end at the same place, so we puth both in one tween annotated group\n var end = nextAnnotation.columnNumbers.end + 1;\n annotatedGroups.push({\n prev: {\n annotation: prevAnnotation,\n groups: shiftGroups(prevTokenGroups, prevColumn, end)\n },\n next: {\n annotation: nextAnnotation,\n groups: shiftGroups(nextTokenGroups, nextColumn, end)\n }\n });\n prevColumn = end;\n nextColumn = end;\n prevAnnotations.shift();\n nextAnnotations.shift();\n } else if (isPrevAnnotationStarting) {\n // if only the prev annotation starting at this point we consume until the annotation ends\n var end = prevAnnotation.columnNumbers.end + 1;\n annotatedGroups.push({\n prev: {\n annotation: prevAnnotation,\n groups: shiftGroups(prevTokenGroups, prevColumn, end)\n }\n });\n prevColumn = end;\n prevAnnotations.shift();\n } else if (isNextAnnotationStarting) {\n // same for the next annotation\n var end = nextAnnotation.columnNumbers.end + 1;\n annotatedGroups.push({\n next: {\n annotation: nextAnnotation,\n groups: shiftGroups(nextTokenGroups, nextColumn, end)\n }\n });\n nextColumn = end;\n nextAnnotations.shift();\n } else if (!prevAnnotation && !nextAnnotation) {\n // if there aren't any remaining annotation we add a last group\n annotatedGroups.push({\n prev: {\n groups: prevTokenGroups\n },\n next: {\n groups: nextTokenGroups\n }\n }); // this is the last iteration\n\n prevTokenGroups = [];\n nextTokenGroups = [];\n } else {\n // if we still have annotations left we consume until the next one\n var end = Math.min((prevAnnotation === null || prevAnnotation === void 0 ? void 0 : prevAnnotation.columnNumbers.start) || Number.MAX_VALUE, (nextAnnotation === null || nextAnnotation === void 0 ? void 0 : nextAnnotation.columnNumbers.start) || Number.MAX_VALUE);\n annotatedGroups.push({\n prev: {\n groups: shiftGroups(prevTokenGroups, prevColumn, end)\n },\n next: {\n groups: shiftGroups(nextTokenGroups, nextColumn, end)\n }\n });\n prevColumn = end;\n nextColumn = end;\n }\n }\n }\n\n return annotatedGroups;\n}\n/**\r\n * Remove and return some groups from the beggining of the array\r\n * startColumn is the column at which the array is starting\r\n * (because other groups has been already removed)\r\n * newStartColumn is the first column that should stay in the array\r\n */\n\n\nfunction shiftGroups(tokenGroups, startColumn, newStartColumn) {\n var removedGroups = [];\n var currentStartColumn = startColumn;\n\n while (currentStartColumn < newStartColumn) {\n var currentTokenGroup = tokenGroups.shift();\n removedGroups.push(currentTokenGroup);\n var length_1 = currentTokenGroup.tokens.reduce(function (a, t) {\n return a + t.content.length;\n }, 0);\n currentStartColumn += length_1;\n }\n\n return removedGroups;\n}\n\nfunction useStepParser(input) {\n var lang = input.lang,\n theme = input.theme,\n code = input.code,\n focus = input.focus;\n return useAsyncMemo({\n isReady: isHighlighterReady(lang, theme),\n load: function load() {\n return loadHighlighter(lang, theme);\n },\n run: function run() {\n return parse(input);\n },\n placeholder: function placeholder() {\n return parse(input);\n }\n }, [code.prev, code.next, focus.prev, focus.next, lang, theme]);\n}\n\nfunction parse(_a) {\n var code = _a.code,\n theme = _a.theme,\n lang = _a.lang,\n focus = _a.focus,\n annotations = _a.annotations;\n var normalCode = mapWithDefault(code, \"\", normalize);\n var highlightedLines = map(normalCode, function (code) {\n return highlight({\n code: code,\n theme: theme,\n lang: lang\n });\n });\n var mergedCode = merge(normalCode, highlightedLines);\n\n var _b = parseAllAnnotations(annotations, theme),\n inlineAnnotations = _b.inlineAnnotations,\n multilineAnnotations = _b.multilineAnnotations;\n\n var focusedCode = splitLinesByFocus(mergedCode, withDefault(focus, null), inlineAnnotations);\n var annotatedCode = addAnnotations(focusedCode, inlineAnnotations, multilineAnnotations);\n var codeStep = addExtraStuff(annotatedCode);\n console.log({\n codeStep: codeStep\n });\n return codeStep;\n} // 0 - normalize\n\n\nfunction normalize(text) {\n // TODO replace tabs with spaces?\n return (text || \"\").trimEnd().concat(\"\\n\");\n}\n\nfunction highlight(_a) {\n var code = _a.code,\n theme = _a.theme,\n lang = _a.lang;\n var lines = highlightOrPlaceholder(code, lang, theme);\n return lines.map(function (line, i) {\n return {\n tokens: line.map(function (_a) {\n var _b = __read(_a, 2),\n content = _b[0],\n props = _b[1];\n\n return {\n content: content,\n props: props\n };\n })\n };\n });\n}\n\nfunction merge(code, highlightedLines) {\n return mergeLines(code, highlightedLines);\n}\n\nfunction parseAllAnnotations(annotations, theme) {\n return parseAnnotations(annotations, theme);\n}\n\nfunction splitLinesByFocus(mergedCode, focus, annotations) {\n return splitByFocus(mergedCode, focus, annotations);\n}\n\nfunction addAnnotations(_a, inlineAnnotations, annotations) {\n var lines = _a.lines,\n focusedCode = __rest(_a, [\"lines\"]);\n\n var annotatedLines = annotateInline(lines, inlineAnnotations);\n var lineGroups = annotateMultiline(annotatedLines, annotations);\n return _assign(_assign({}, focusedCode), {\n lineGroups: lineGroups,\n lineCount: {\n prev: lines.filter(function (l) {\n return l.lineNumber.prev != null;\n }).length,\n next: lines.filter(function (l) {\n return l.lineNumber.next != null;\n }).length\n }\n });\n}\n\nfunction addExtraStuff(codeStep) {\n var vInterval = verticalInterval(codeStep.enterCount, codeStep.exitCount);\n var newGroups = map(codeStep.lineGroups, function (groups) {\n return groups.map(function (group) {\n return _assign(_assign({}, group), {\n lines: getLinesWithElements(group.lines, vInterval, codeStep.enterCount, codeStep.exitCount)\n });\n });\n });\n return _assign(_assign({}, codeStep), {\n groups: newGroups,\n verticalInterval: vInterval\n });\n}\n\nfunction verticalInterval(enterCount, exitCount) {\n if (enterCount <= 0 && exitCount <= 0) return [0, 1];\n if (enterCount <= 0 && exitCount >= 1) return [0.33, 1];\n if (enterCount >= 1 && exitCount <= 0) return [0, 0.67];\n return [0.25, 0.75];\n}\n\nfunction SmoothContainer(_a) {\n var dimensions = _a.dimensions,\n codeStep = _a.codeStep,\n children = _a.children,\n _b = _a.minZoom,\n minZoom = _b === void 0 ? 0 : _b,\n _c = _a.maxZoom,\n maxZoom = _c === void 0 ? 1.2 : _c,\n _d = _a.center,\n center = _d === void 0 ? false : _d,\n progress = _a.progress;\n\n var _e = getTweenContentProps({\n codeStep: codeStep,\n dimensions: dimensions,\n minZoom: minZoom,\n maxZoom: maxZoom,\n horizontalCenter: center\n }),\n prev = _e.prev,\n next = _e.next; // all these tweens depends on annotations now (t instead of progress)\n\n\n var zoom = tweenProp(prev.zoom, next.zoom, progress);\n var dx = tweenProp(prev.dx, next.dx, progress);\n var dy = tweenProp(prev.dy, next.dy, progress, codeStep.verticalInterval);\n var focusHeight = tweenProp(prev.focusHeight, next.focusHeight, progress);\n var focusWidth = tweenProp(prev.focusWidth, prev.focusWidth, progress);\n return React.createElement(Container, {\n width: dimensions.containerWidth,\n height: dimensions.containerHeight\n }, React.createElement(Content, {\n dx: dx,\n dy: dy,\n scale: zoom,\n height: Math.max(focusHeight, dimensions.containerHeight),\n width: Math.max(focusWidth, dimensions.containerWidth)\n }, children(focusWidth)));\n}\n\nfunction Container(_a) {\n var width = _a.width,\n height = _a.height,\n children = _a.children;\n return React.createElement(\"div\", {\n style: {\n width: width,\n height: height,\n position: \"relative\"\n }\n }, children);\n}\n\nfunction Content(_a) {\n var dx = _a.dx,\n dy = _a.dy,\n scale = _a.scale,\n height = _a.height,\n width = _a.width,\n children = _a.children;\n return React.createElement(\"div\", {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n transformOrigin: \"top left\",\n width: width,\n height: height,\n overflow: \"hidden\"\n }\n }, React.createElement(\"div\", {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n transform: \"translateX(\" + dx + \"px) translateY(\" + dy + \"px) scale(\" + scale + \")\",\n transformOrigin: \"top left\",\n width: \"100%\"\n }\n }, children));\n}\n\nfunction getTweenContentProps(_a) {\n var codeStep = _a.codeStep,\n rest = __rest(_a, [\"codeStep\"]);\n\n var _b = rest.dimensions,\n lineHeight = _b.lineHeight,\n lineWidth = _b.lineWidth;\n var paramTween = {\n prev: {\n extremes: [codeStep.firstFocusedLineNumber.prev - 1, codeStep.lastFocusedLineNumber.prev - 1],\n originalContentHeight: codeStep.lineCount.prev * lineHeight,\n lineWidth: lineWidth[0]\n },\n next: {\n extremes: [codeStep.firstFocusedLineNumber.next - 1, codeStep.lastFocusedLineNumber.next - 1],\n originalContentHeight: codeStep.lineCount.next * lineHeight,\n lineWidth: lineWidth[1]\n }\n };\n return map(paramTween, function (_a) {\n var extremes = _a.extremes,\n originalContentHeight = _a.originalContentHeight,\n lineWidth = _a.lineWidth;\n return getContentProps(_assign({\n extremes: extremes,\n originalContentHeight: originalContentHeight,\n lineWidth: lineWidth\n }, rest));\n });\n}\n\nfunction getContentProps(_a) {\n var dimensions = _a.dimensions,\n lineWidth = _a.lineWidth,\n minZoom = _a.minZoom,\n maxZoom = _a.maxZoom,\n extremes = _a.extremes,\n originalContentHeight = _a.originalContentHeight,\n horizontalCenter = _a.horizontalCenter;\n var _b = dimensions,\n containerWidth = _b.containerWidth,\n containerHeight = _b.containerHeight,\n lineHeight = _b.lineHeight;\n var originalFocusHeight = (extremes[1] - extremes[0] + 3) * lineHeight;\n var zoom = Math.max(Math.min(containerWidth / lineWidth, containerHeight / originalFocusHeight, maxZoom), minZoom);\n var contentHeight = originalContentHeight * zoom;\n var focusStart = (extremes[0] - 1) * lineHeight * zoom;\n var focusEnd = (extremes[1] + 2) * lineHeight * zoom;\n var focusCenter = (focusEnd + focusStart) / 2;\n var focusHeight = focusEnd - focusStart;\n var dy = containerHeight > contentHeight ? (containerHeight - contentHeight) / 2 : clamp(containerHeight / 2 - focusCenter, Math.max(containerHeight - contentHeight, -focusStart // to ensure first focus line is shown when focus is bigger than container\n ), 0);\n var dx = horizontalCenter ? Math.max(containerWidth / 2 - lineWidth * zoom / 2, 0) : 0;\n return {\n zoom: zoom,\n dx: dx,\n dy: dy,\n focusHeight: focusHeight,\n focusWidth: lineWidth * zoom\n };\n}\n\nfunction clamp(num, min, max) {\n return num <= min ? min : num >= max ? max : num;\n}\n\nfunction tweenProp(start, end, progress, interval) {\n if (interval === void 0) {\n interval = [0, 1];\n }\n\n return tween({\n fixed: false,\n interval: interval,\n extremes: [start, end],\n ease: easing.easeInOutCubic\n }, progress);\n}\n\nfunction SmoothLines(props) {\n return React.createElement(SmoothContainer, _assign({}, props), function (focusWidth) {\n return React.createElement(Lines, {\n codeStep: props.codeStep,\n focusWidth: focusWidth,\n lineHeight: props.dimensions.lineHeight,\n progress: props.progress\n });\n });\n}\n\nfunction Lines(_a) {\n var codeStep = _a.codeStep,\n progress = _a.progress,\n focusWidth = _a.focusWidth,\n lineHeight = _a.lineHeight;\n var groups = progress < 0.5 ? codeStep.groups.prev : codeStep.groups.next;\n return React.createElement(React.Fragment, null, groups.map(function (group, i) {\n if (!group.annotation) {\n return React.createElement(LineGroup, {\n lines: group.lines,\n t: progress,\n focusWidth: focusWidth,\n lineHeight: lineHeight,\n key: i\n });\n }\n\n var startY = tween(group.lines[0].tweenY, progress);\n var lineCount = group.annotation.lineNumbers.end - group.annotation.lineNumbers.start + 1;\n var Component = group.annotation.Component;\n return React.createElement(Component, {\n style: {\n position: \"absolute\",\n height: lineCount * lineHeight,\n width: \"100%\",\n transform: \"translateY(\" + startY * lineHeight + \"px)\"\n },\n key: i,\n data: group.annotation.data\n }, React.createElement(LineGroup, {\n lines: group.lines,\n t: progress,\n focusWidth: focusWidth,\n lineHeight: lineHeight,\n startY: startY\n }));\n }));\n}\n\nfunction LineGroup(_a) {\n var lines = _a.lines,\n focusWidth = _a.focusWidth,\n lineHeight = _a.lineHeight,\n t = _a.t,\n _b = _a.startY,\n startY = _b === void 0 ? 0 : _b;\n return React.createElement(React.Fragment, null, lines.map(function (line, key) {\n var tweenX = line.tweenX,\n tweenY = line.tweenY,\n focused = line.focused;\n var dx = tween(tweenX, t);\n var dy = tween(tweenY, t);\n var opacity = getOpacity(focused, t, dx);\n return React.createElement(LineContainer, {\n key: key,\n dx: 16 + dx * focusWidth,\n dy: (dy - startY) * lineHeight,\n width: focusWidth,\n opacity: opacity\n }, React.createElement(LineContent, {\n line: line,\n progress: t,\n dx: dx\n }));\n }));\n}\n\nfunction LineContent(_a) {\n var line = _a.line,\n progress = _a.progress,\n dx = _a.dx;\n return React.createElement(\"div\", {\n style: {\n display: \"inline-block\",\n width: \"100%\"\n }\n }, line.annotatedGroups.map(function (annotatedGroup, i) {\n return React.createElement(AnnotatedTokens, {\n annotatedGroup: annotatedGroup,\n progress: progress,\n dx: dx,\n key: i\n });\n }), React.createElement(\"br\", null));\n}\n\nfunction AnnotatedTokens(_a) {\n var _b, _c;\n\n var annotatedGroup = _a.annotatedGroup,\n progress = _a.progress,\n dx = _a.dx;\n var annotated = progress < 0.5 ? annotatedGroup.prev : annotatedGroup.next;\n var tokenGroups = (annotated === null || annotated === void 0 ? void 0 : annotated.groups) || [];\n var Component = (_b = annotated === null || annotated === void 0 ? void 0 : annotated.annotation) === null || _b === void 0 ? void 0 : _b.Component;\n var children = tokenGroups.map(function (group, i) {\n var opacity = getOpacity(group.focused, progress, dx);\n return React.createElement(\"span\", {\n style: {\n opacity: opacity\n },\n key: i + 1\n }, group.element);\n });\n return Component ? React.createElement(Component, {\n children: children,\n data: (_c = annotated === null || annotated === void 0 ? void 0 : annotated.annotation) === null || _c === void 0 ? void 0 : _c.data\n }) : React.createElement(React.Fragment, null, children);\n}\n\nfunction LineContainer(_a) {\n var children = _a.children,\n dx = _a.dx,\n dy = _a.dy,\n opacity = _a.opacity,\n width = _a.width;\n return React.createElement(\"div\", {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n transform: \"translate(\" + dx + \"px, \" + dy + \"px)\",\n width: width,\n display: opacity <= 0 ? \"none\" : undefined\n }\n }, children);\n}\n\nvar OFF_OPACITY = 0.33;\n\nfunction getOpacity(focused, progress, dx) {\n return tween({\n fixed: false,\n extremes: [focused.prev ? 0.99 : OFF_OPACITY, focused.next ? 0.99 : OFF_OPACITY],\n interval: [0, 1]\n }, progress) - Math.abs(dx) * 1;\n}\n\nvar DEFAULT_MIN_COLUMNS = 40;\n\nfunction Code(props) {\n var code = props.code,\n focus = props.focus,\n parentHeight = props.parentHeight,\n htmlProps = props.htmlProps,\n _a = props.theme,\n theme = _a === void 0 ? DEFAULT_THEME : _a,\n language = props.language,\n annotations = props.annotations,\n _b = props.minColumns,\n minColumns = _b === void 0 ? DEFAULT_MIN_COLUMNS : _b;\n\n var _c = useDimensions(code, focus, minColumns, [parentHeight]),\n element = _c.element,\n dimensions = _c.dimensions;\n\n var stepInfo = useStepParser({\n code: code,\n theme: theme,\n lang: language,\n focus: focus,\n annotations: annotations\n });\n return !dimensions ? React.createElement(BeforeDimensions, {\n element: element,\n htmlProps: htmlProps\n }) : React.createElement(AfterDimensions, _assign({\n dimensions: dimensions,\n stepInfo: stepInfo\n }, props));\n}\n\nfunction BeforeDimensions(_a) {\n var element = _a.element,\n htmlProps = _a.htmlProps;\n return React.createElement(Wrapper, {\n htmlProps: htmlProps,\n // avoid scrollbars when measuring\n style: {\n overflow: \"hidden\",\n opacity: 0\n }\n }, element);\n}\n\nfunction AfterDimensions(_a) {\n var progress = _a.progress,\n _b = _a.minZoom,\n minZoom = _b === void 0 ? 0.5 : _b,\n _c = _a.maxZoom,\n maxZoom = _c === void 0 ? 1.5 : _c,\n _d = _a.horizontalCenter,\n horizontalCenter = _d === void 0 ? false : _d,\n htmlProps = _a.htmlProps,\n _e = _a.theme,\n theme = _e === void 0 ? DEFAULT_THEME : _e,\n dimensions = _a.dimensions,\n stepInfo = _a.stepInfo;\n\n var _f = getThemeDefaultColors(theme),\n bg = _f.bg,\n fg = _f.fg;\n\n return React.createElement(Wrapper, {\n htmlProps: htmlProps,\n style: {\n opacity: 1,\n backgroundColor: bg,\n color: fg\n }\n }, React.createElement(SmoothLines, {\n codeStep: stepInfo,\n progress: progress,\n dimensions: dimensions,\n // TODO move to dimensions?\n minZoom: minZoom,\n maxZoom: maxZoom,\n center: horizontalCenter\n }));\n}\n\nfunction Wrapper(_a) {\n var htmlProps = _a.htmlProps,\n style = _a.style,\n children = _a.children;\n return React.createElement(\"pre\", _assign({}, htmlProps, {\n style: _assign(_assign({\n margin: 0\n }, style), htmlProps === null || htmlProps === void 0 ? void 0 : htmlProps.style)\n }), React.createElement(\"code\", null, children));\n} // import onigasm from \"arraybuffer-loader!shiki/dist/onigasm.wasm\"\n// import theme from \"shiki/themes/dark-plus.json\"\n// setCDN(\"https://unpkg.com/shiki/\")\n// const FONT_STYLE_TO_CSS = {\n// [FontStyle.NotSet]: {},\n// [FontStyle.None]: {},\n// [FontStyle.Italic]: { fontStyle: \"italic\" },\n// [FontStyle.Bold]: { fontWeight: \"bold\" },\n// [FontStyle.Underline]: { textDecoration: \"underline\" },\n// }\n// // console.log({ theme })\n// const DEFAULT_THEME = \"dark-plus\"\n// const highlighterPromise = getHighlighter({\n// theme: DEFAULT_THEME,\n// langs: [\"js\", \"ts\"],\n// })\n// type CodeTweenProps = {\n// code: string\n// lang: string\n// theme?: IShikiTheme\n// htmlProps: React.DetailedHTMLProps<\n// React.HTMLAttributes,\n// HTMLPreElement\n// >\n// }\n\n\nfunction CodeTween() {\n return null;\n}\n\nexport { Code, CodeTween };","import React from 'react';\nimport { MiniFrame } from '@code-hike/mini-frame';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nfunction getCommands(text) {\n var _a = __read(text.split(/^\\$\\s*/gm)),\n lines = _a.slice(1);\n\n var commands = lines.map(function (c) {\n var _a = __read(c.split(/\\r?\\n/)),\n run = _a[0],\n outputLines = _a.slice(1);\n\n return {\n run: run,\n output: outputLines.length > 0 ? outputLines.join(\"\\n\") : null\n };\n });\n var lastCommand = commands[commands.length - 1];\n var isRunning = commands.length > 0 && lastCommand.output != null;\n var title = isRunning ? lastCommand.run.split(/(\\s+)/)[0] : \"bash\";\n return {\n title: title,\n isRunning: isRunning,\n commands: commands\n };\n}\n\nvar prompt = React.createElement(\"span\", {\n className: \"ch-terminal-prompt\"\n}, \"$\");\n\nfunction TerminalContent(_a) {\n var text = _a.text,\n _b = _a.progress,\n progress = _b === void 0 ? 1 : _b,\n style = _a.style;\n var commands = parse(text, progress);\n return React.createElement(\"pre\", {\n style: style,\n className: \"ch-terminal-content\"\n }, commands.map(function (_a, i) {\n var run = _a.run,\n output = _a.output;\n return React.createElement(React.Fragment, {\n key: i\n }, React.createElement(\"div\", null, prompt, \" \", React.createElement(\"span\", null, run)), output && React.createElement(\"div\", {\n className: \"ch-terminal-output\"\n }, output));\n }));\n}\n\nfunction parse(text, progress) {\n if (!text) return [];\n var chars = Math.round(text.length * progress);\n var commands = getCommands(text.slice(0, chars)).commands;\n return commands;\n}\n\nfunction MiniTerminalTransition(_a) {\n var _b = _a.title,\n title = _b === void 0 ? \"bash\" : _b,\n prev = _a.prev,\n prevKey = _a.prevKey,\n next = _a.next,\n nextKey = _a.nextKey,\n progress = _a.progress,\n _c = _a.className,\n className = _c === void 0 ? \"\" : _c,\n rest = __rest(_a, [\"title\", \"prev\", \"prevKey\", \"next\", \"nextKey\", \"progress\", \"className\"]);\n\n return React.createElement(MiniFrame, _assign({\n title: title\n }, rest, {\n className: \"ch-terminal-container \" + className\n }), React.createElement(InnerTerminalTransition, _assign({}, {\n prev: prev,\n prevKey: prevKey,\n next: next,\n nextKey: nextKey,\n progress: progress\n })));\n}\n\nfunction InnerTerminalTransition(_a) {\n var _b = _a.prev,\n prev = _b === void 0 ? \"\" : _b,\n prevKey = _a.prevKey,\n _c = _a.next,\n next = _c === void 0 ? \"\" : _c,\n nextKey = _a.nextKey,\n progress = _a.progress;\n return React.createElement(\"div\", {\n className: \"ch-terminal\"\n }, React.createElement(\"div\", {\n style: {\n position: \"relative\",\n transform: \"translateY(-\" + progress * 100 + \"%)\"\n }\n }, React.createElement(TerminalContent, {\n text: prev,\n progress: 1,\n key: prevKey\n }), React.createElement(TerminalContent, {\n style: {\n position: \"absolute\"\n },\n text: next,\n progress: progress,\n key: nextKey\n })));\n}\n\nfunction MiniTerminalTransitions(_a) {\n var _b = _a.title,\n title = _b === void 0 ? \"bash\" : _b,\n steps = _a.steps,\n progress = _a.progress;\n _a.backward;\n\n var rest = __rest(_a, [\"title\", \"steps\", \"progress\", \"backward\"]);\n\n var textSteps = steps.map(function (s) {\n return s.text;\n });\n var stepProgress = progress % 1;\n var prevIndex = clamp(Math.floor(progress), 0, textSteps.length - 1);\n var nextIndex = prevIndex + 1;\n return React.createElement(MiniTerminalTransition, _assign({\n title: title,\n prev: textSteps[prevIndex],\n prevKey: prevIndex,\n next: textSteps[nextIndex] || \"\",\n nextKey: nextIndex,\n progress: stepProgress\n }, rest));\n}\n\nfunction InnerTerminalTransitions(_a) {\n var steps = _a.steps,\n progress = _a.progress;\n var textSteps = steps.map(function (s) {\n return s.text;\n });\n var stepProgress = progress % 1;\n var prevIndex = clamp(Math.floor(progress), 0, steps.length - 1);\n var nextIndex = prevIndex + 1;\n return React.createElement(InnerTerminalTransition, {\n prev: textSteps[prevIndex],\n prevKey: prevIndex,\n next: textSteps[nextIndex] || \"\",\n nextKey: nextIndex,\n progress: stepProgress\n });\n}\n\nfunction clamp(x, min, max) {\n return Math.min(Math.max(x, min), max);\n}\n\nfunction MiniTerminal(_a) {\n var text = _a.text,\n _b = _a.title,\n title = _b === void 0 ? \"bash\" : _b,\n _c = _a.progress,\n progress = _c === void 0 ? 0 : _c,\n _d = _a.backward,\n backward = _d === void 0 ? false : _d,\n steps = _a.steps,\n rest = __rest(_a, [\"text\", \"title\", \"progress\", \"backward\", \"steps\"]);\n\n var actualSteps = steps || [{\n text: text || \"\"\n }];\n return React.createElement(MiniTerminalTransitions, _assign({\n steps: actualSteps,\n progress: progress,\n backward: backward,\n title: title\n }, rest));\n}\n\nexport { InnerTerminalTransitions as InnerTerminal, MiniTerminal, TerminalContent };","import React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\n\nfunction currentTime() {\n if (typeof window !== \"undefined\") {\n return performance.now();\n } else {\n return 0;\n }\n}\n\nfunction useSpringInstance(target, config) {\n var ref = React.useRef(null);\n\n if (ref.current == null) {\n ref.current = {\n config: getConfigWithDefaults(target, config),\n state: getInitialState(target, config)\n };\n }\n\n return ref.current;\n}\n\nfunction getConfigWithDefaults(target, _ref) {\n var stiffness = _ref.stiffness,\n damping = _ref.damping,\n mass = _ref.mass,\n decimals = _ref.decimals,\n teleport = _ref.teleport;\n return {\n X: target,\n k: stiffness !== null && stiffness !== void 0 ? stiffness : 170,\n c: damping !== null && damping !== void 0 ? damping : 26,\n m: mass !== null && mass !== void 0 ? mass : 1,\n teleport: teleport !== null && teleport !== void 0 ? teleport : false,\n decimals: decimals !== null && decimals !== void 0 ? decimals : 2\n };\n}\n\nfunction getInitialState(target, _ref2) {\n var from = _ref2.from,\n initialSpeed = _ref2.initialSpeed;\n return {\n x0: from !== null && from !== void 0 ? from : target,\n v0: initialSpeed !== null && initialSpeed !== void 0 ? initialSpeed : 0,\n t0: currentTime(),\n raf: null\n };\n}\n\nvar sqrt = Math.sqrt,\n exp = Math.exp,\n sin = Math.sin,\n cos = Math.cos;\n\nfunction spring(_ref) {\n var x0 = _ref.x0,\n v0 = _ref.v0,\n t0 = _ref.t0,\n t = _ref.t,\n k = _ref.k,\n c = _ref.c,\n m = _ref.m,\n X = _ref.X;\n var dx = x0 - X;\n var dt = (t - t0) / 1000;\n var radicand = c * c - 4 * k * m;\n\n if (radicand > 0) {\n var rp = (-c + sqrt(radicand)) / (2 * m);\n var rn = (-c - sqrt(radicand)) / (2 * m);\n var a = (dx * rp - v0) / (rp - rn);\n var b = (v0 - dx * rn) / (rp - rn);\n return {\n x: X + a * exp(rn * dt) + b * exp(rp * dt),\n v: a * rn * exp(rn * dt) + b * rp * exp(rp * dt)\n };\n } else if (radicand < 0) {\n var r = -c / (2 * m);\n var s = sqrt(-radicand) / (2 * m);\n var _a = dx;\n\n var _b = (v0 - r * dx) / s;\n\n return {\n x: X + exp(r * dt) * (_a * cos(s * dt) + _b * sin(s * dt)),\n v: exp(r * dt) * ((_b * s + _a * r) * cos(s * dt) - (_a * s - _b * r) * sin(s * dt))\n };\n } else {\n var _r = -c / (2 * m);\n\n var _a2 = dx;\n\n var _b2 = v0 - _r * dx;\n\n return {\n x: X + (_a2 + _b2 * dt) * exp(_r * dt),\n v: (_b2 + _a2 * _r + _b2 * _r * dt) * exp(_r * dt)\n };\n }\n}\n\nvar nextFrameQueue = [];\nvar nextFrameId = null;\n\nfunction queueAnimationFrame(fn) {\n var length = nextFrameQueue.push(fn);\n\n if (length === 1) {\n nextFrameId = requestAnimationFrame(runQueue);\n }\n\n return [nextFrameId, length - 1];\n}\n\nfunction unqueueAnimationFrame(_ref) {\n var frameId = _ref[0],\n index = _ref[1];\n\n if (frameId === nextFrameId) {\n delete nextFrameQueue[index];\n }\n}\n\nfunction runQueue() {\n var now = currentTime();\n var queue = nextFrameQueue;\n nextFrameQueue = [];\n unstable_batchedUpdates(function () {\n return queue.forEach(function (task) {\n return task && task(now);\n });\n });\n}\n\nvar useLayoutEffect = typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nfunction useSpring(target, config) {\n if (config === void 0) {\n config = {};\n }\n\n var _React$useState = React.useState(),\n forceUpdate = _React$useState[1];\n\n var newConfig = getConfigWithDefaults(target, config);\n\n var _useSpringInstance = useSpringInstance(target, config),\n state = _useSpringInstance.state,\n oldConfig = _useSpringInstance.config; // TODO all springs should use the same t in the same frame\n\n\n var t = currentTime();\n var x0 = state.x0,\n v0 = state.v0,\n t0 = state.t0;\n var k = oldConfig.k,\n c = oldConfig.c,\n m = oldConfig.m,\n X = oldConfig.X;\n\n var _ref = newConfig.teleport ? {\n x: X,\n v: 0\n } : spring({\n x0: x0,\n v0: v0,\n t0: t0,\n t: t,\n k: k,\n c: c,\n m: m,\n X: X\n }),\n x = _ref.x,\n v = _ref.v;\n\n var moving = isMoving(x, v, t, newConfig);\n useLayoutEffect(function () {\n Object.assign(oldConfig, newConfig);\n }, [newConfig.X, newConfig.k, newConfig.c, newConfig.m, newConfig.teleport]);\n useLayoutEffect(function () {\n state.x0 = x;\n state.v0 = v;\n state.t0 = t;\n }, [x, v, t]);\n useLayoutEffect(function () {\n var loop = function loop(now) {\n var x0 = state.x0,\n v0 = state.v0,\n t0 = state.t0;\n var k = oldConfig.k,\n c = oldConfig.c,\n m = oldConfig.m,\n X = oldConfig.X,\n decimals = oldConfig.decimals;\n\n var _spring = spring({\n x0: x0,\n v0: v0,\n t0: t0,\n t: now,\n k: k,\n c: c,\n m: m,\n X: X\n }),\n nextX = _spring.x;\n\n if (roundTo(nextX, decimals) !== roundTo(x0, decimals)) {\n state.raf = null;\n forceUpdate(now);\n } else {\n state.raf = queueAnimationFrame(loop);\n }\n };\n\n if (moving && state.raf == null) {\n state.raf = queueAnimationFrame(loop);\n } else if (!moving && state.raf != null) {\n unqueueAnimationFrame(state.raf);\n state.raf = null;\n }\n });\n useLayoutEffect(function () {\n return function () {\n if (state.raf != null) {\n unqueueAnimationFrame(state.raf);\n }\n };\n }, []);\n return [roundTo(x, newConfig.decimals), moving];\n}\n\nfunction isMoving(x, v, t, _ref2) {\n var decimals = _ref2.decimals,\n X = _ref2.X,\n k = _ref2.k,\n c = _ref2.c,\n m = _ref2.m;\n\n if (roundTo(x, decimals) !== roundTo(X, decimals)) {\n return true;\n }\n\n var nextT = t + 0.016;\n\n var _spring2 = spring({\n x0: x,\n v0: v,\n t0: t,\n t: nextT,\n k: k,\n c: c,\n m: m,\n X: X\n }),\n nextX = _spring2.x;\n\n return roundTo(nextX, decimals) !== roundTo(X, decimals);\n}\n\nfunction roundTo(x, decimals) {\n var p = Math.pow(10, decimals);\n return Math.round(x * p) / p;\n}\n\nexport { useSpring };","import React from 'react';\nimport { MiniFrame, FrameButtons } from '@code-hike/mini-frame';\nimport { useClasser } from '@code-hike/classer';\nimport { Code } from '@code-hike/smooth-code';\nimport { InnerTerminal } from '@code-hike/mini-terminal';\nimport { useSpring } from 'use-spring';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n\nvar ColorName;\n\n(function (ColorName) {\n ColorName[ColorName[\"EditorBackground\"] = 0] = \"EditorBackground\";\n ColorName[ColorName[\"ActiveTabBackground\"] = 1] = \"ActiveTabBackground\";\n ColorName[ColorName[\"ActiveTabForeground\"] = 2] = \"ActiveTabForeground\";\n ColorName[ColorName[\"InactiveTabBackground\"] = 3] = \"InactiveTabBackground\";\n ColorName[ColorName[\"InactiveTabForeground\"] = 4] = \"InactiveTabForeground\";\n ColorName[ColorName[\"EditorGroupBorder\"] = 5] = \"EditorGroupBorder\";\n ColorName[ColorName[\"EditorGroupHeaderBackground\"] = 6] = \"EditorGroupHeaderBackground\";\n ColorName[ColorName[\"TabBorder\"] = 7] = \"TabBorder\";\n ColorName[ColorName[\"ActiveTabBottomBorder\"] = 8] = \"ActiveTabBottomBorder\";\n})(ColorName || (ColorName = {}));\n\nvar contrastBorder = \"#6FC3DF\";\n\nfunction getColor(theme, colorName) {\n var colors = theme.colors || {};\n\n switch (colorName) {\n case ColorName.EditorBackground:\n return colors[\"editor.background\"] || getDefault(theme, {\n light: \"#fffffe\",\n dark: \"#1E1E1E\",\n hc: \"#000000\"\n });\n\n case ColorName.ActiveTabBackground:\n return colors[\"tab.activeBackground\"] || getColor(theme, ColorName.EditorBackground);\n\n case ColorName.ActiveTabForeground:\n return colors[\"tab.activeForeground\"] || getDefault(theme, {\n dark: \"#ffffff\",\n light: \"#333333\",\n hc: \"#ffffff\"\n });\n\n case ColorName.InactiveTabBackground:\n return colors[\"tab.inactiveBackground\"] || getDefault(theme, {\n dark: \"#2D2D2D\",\n light: \"#ECECEC\",\n hc: undefined\n });\n\n case ColorName.InactiveTabForeground:\n return colors[\"tab.inactiveForeground\"] || getDefault(theme, {\n dark: transparent(getColor(theme, ColorName.ActiveTabForeground), 0.5),\n light: transparent(getColor(theme, ColorName.ActiveTabForeground), 0.7),\n hc: \"#ffffff\"\n });\n\n case ColorName.TabBorder:\n return colors[\"tab.border\"] || getDefault(theme, {\n dark: \"#252526\",\n light: \"#F3F3F3\",\n hc: contrastBorder\n });\n\n case ColorName.ActiveTabBottomBorder:\n return colors[\"tab.activeBorder\"] || getColor(theme, ColorName.ActiveTabBackground);\n\n case ColorName.EditorGroupBorder:\n return colors[\"editorGroup.border\"] || getDefault(theme, {\n dark: \"#444444\",\n light: \"#E7E7E7\",\n hc: contrastBorder\n });\n\n case ColorName.EditorGroupHeaderBackground:\n return colors[\"editorGroupHeader.tabsBackground\"] || getDefault(theme, {\n dark: \"#252526\",\n light: \"#F3F3F3\",\n hc: undefined\n });\n\n default:\n return \"#f00\";\n }\n}\n\nfunction transparent(color, opacity) {\n var _opacity = Math.round(Math.min(Math.max(opacity || 1, 0), 1) * 255);\n\n return !color ? color : color + _opacity.toString(16).toUpperCase();\n}\n\nfunction getDefault(theme, defaults) {\n var _a;\n\n var themeType = theme.type ? theme.type : ((_a = theme.name) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(\"light\")) ? \"light\" : \"dark\";\n return defaults[themeType];\n} // defaults from: https://github.com/microsoft/vscode/blob/main/src/vs/workbench/common/theme.ts\n\n\nvar DEFAULT_HEIGHT = 200;\nvar EditorFrame = React.forwardRef(function InnerEditorFrame(_a, ref) {\n var _b;\n\n var northPanel = _a.northPanel,\n southPanel = _a.southPanel,\n terminalPanel = _a.terminalPanel,\n style = _a.style,\n height = _a.height,\n button = _a.button,\n theme = _a.theme,\n className = _a.className,\n rest = __rest(_a, [\"northPanel\", \"southPanel\", \"terminalPanel\", \"style\", \"height\", \"button\", \"theme\", \"className\"]);\n\n var c = useClasser(\"ch-editor\");\n return React.createElement(MiniFrame, _assign({\n ref: ref,\n style: _assign((_b = {\n height: height !== null && height !== void 0 ? height : DEFAULT_HEIGHT\n }, _b[\"--ch-content-background\"] = getColor(theme, ColorName.EditorGroupHeaderBackground), _b), style),\n className: c(\"frame\") + \" \" + className,\n overflow: \"unset\",\n titleBar: React.createElement(TabsContainer, {\n tabs: northPanel.tabs,\n showFrameButtons: true,\n button: button,\n panel: \"north\",\n theme: theme\n })\n }, rest), React.createElement(\"div\", {\n \"data-ch-panel\": \"north\",\n className: c(\"body\"),\n style: northPanel.style,\n children: northPanel.children\n }), southPanel && React.createElement(\"div\", {\n \"data-ch-panel\": \"south\",\n style: _assign({\n display: \"flex\",\n flexDirection: \"column\"\n }, southPanel.style)\n }, React.createElement(\"div\", {\n className: \"ch-frame-title-bar\",\n style: {\n background: \"none\"\n }\n }, React.createElement(TabsContainer, {\n tabs: southPanel.tabs,\n showFrameButtons: false,\n topBorder: true,\n panel: \"south\",\n theme: theme\n })), React.createElement(\"div\", {\n className: c(\"body\"),\n children: southPanel.children,\n style: {\n flexGrow: 1,\n flexShrink: 1,\n minHeight: 0\n }\n })), terminalPanel);\n});\n\nfunction TabsContainer(_a) {\n var tabs = _a.tabs,\n button = _a.button,\n showFrameButtons = _a.showFrameButtons,\n topBorder = _a.topBorder,\n panel = _a.panel,\n theme = _a.theme;\n var c = useClasser(\"ch-editor-tab\");\n return React.createElement(React.Fragment, null, topBorder && React.createElement(\"div\", {\n style: {\n position: \"absolute\",\n height: \"1px\",\n background: getColor(theme, ColorName.EditorGroupBorder),\n width: \"100%\",\n top: 0,\n zIndex: 1\n }\n }), showFrameButtons ? React.createElement(FrameButtons, null) : React.createElement(\"div\", null), tabs.map(function (_a) {\n var title = _a.title,\n active = _a.active,\n style = _a.style;\n return React.createElement(\"div\", {\n key: title,\n title: title,\n \"data-ch-tab\": panel,\n className: c(\"\", active ? \"active\" : \"inactive\"),\n style: _assign(_assign({}, style), {\n background: getColor(theme, active ? ColorName.ActiveTabBackground : ColorName.InactiveTabBackground),\n color: getColor(theme, active ? ColorName.ActiveTabForeground : ColorName.InactiveTabForeground),\n borderRightColor: getColor(theme, ColorName.TabBorder),\n borderBottomColor: getColor(theme, active ? ColorName.ActiveTabBottomBorder : ColorName.InactiveTabBackground)\n })\n }, React.createElement(\"div\", null, title));\n }), React.createElement(\"div\", {\n style: {\n flex: 1\n }\n }), button);\n}\n\nfunction getPanelStyles(prev, next, t) {\n // +---+---+\n // | x | x |\n // +---+---+\n // | | |\n // +---+---+\n if (prev.southHeight === null && next.southHeight === null) {\n return {\n northStyle: {\n height: prev.northHeight\n }\n };\n } // +---+---+\n // | x | x |\n // +---+---+\n // | y | |\n // +---+---+\n\n\n if (prev.southHeight !== null && next.southHeight === null && next.northKey !== prev.southKey) {\n return {\n northStyle: {\n height: tween(prev.northHeight, next.northHeight, t)\n },\n southStyle: {\n height: prev.southHeight\n }\n };\n } // +---+---+\n // | x | y |\n // +---+---+\n // | y | |\n // +---+---+\n\n\n if (prev.southHeight !== null && next.southHeight === null && prev.southKey === next.northKey) {\n return {\n northStyle: {\n height: prev.northHeight\n },\n southStyle: {\n position: \"relative\",\n height: tween(prev.southHeight, next.northHeight + next.titleBarHeight, t),\n transform: \"translateY(\" + tween(0, -(prev.northHeight + prev.titleBarHeight), t) + \"px)\"\n }\n };\n } // +---+---+\n // | x | x |\n // +---+---+\n // | | y |\n // +---+---+\n\n\n if (prev.southHeight === null && next.southHeight !== null && prev.northKey !== next.southKey) {\n return {\n northStyle: {\n height: tween(prev.northHeight, next.northHeight, t)\n },\n southStyle: {\n position: \"relative\",\n height: next.southHeight\n }\n };\n } // +---+---+\n // | y | x |\n // +---+---+\n // | | y |\n // +---+---+\n\n\n if (prev.southHeight === null && next.southHeight !== null && prev.northKey === next.southKey) {\n return {\n northStyle: {\n height: next.northHeight\n },\n southStyle: {\n position: \"relative\",\n height: tween(prev.northHeight + prev.titleBarHeight, next.southHeight, t),\n transform: \"translateY(\" + tween(-(next.northHeight + next.titleBarHeight), 0, t) + \"px)\"\n }\n };\n } // +---+---+\n // | x | x |\n // +---+---+\n // | y | y |\n // +---+---+\n\n\n return {\n northStyle: {\n height: tween(prev.northHeight, next.northHeight, t)\n },\n southStyle: {\n height: tween(prev.southHeight, next.southHeight, t)\n }\n };\n}\n\nfunction tween(a, b, t) {\n return a + (b - a) * t;\n}\n\nvar useLayoutEffect = typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nfunction useSnapshots(ref, prev, next) {\n var _a = __read(React.useState({\n prevSnapshot: null,\n nextSnapshot: null\n }), 2),\n _b = _a[0],\n prevSnapshot = _b.prevSnapshot,\n nextSnapshot = _b.nextSnapshot,\n setState = _a[1];\n\n useLayoutEffect(function () {\n if (prevSnapshot || nextSnapshot) {\n setState({\n prevSnapshot: null,\n nextSnapshot: null\n });\n }\n }, [prev, next]);\n useLayoutEffect(function () {\n if (!prevSnapshot) {\n setState(function (s) {\n return _assign(_assign({}, s), {\n prevSnapshot: _assign(_assign({}, getPanelSnapshot(ref.current, prev)), getTabsSnapshot(ref.current, prev))\n });\n });\n } else if (!nextSnapshot) {\n setState(function (s) {\n return _assign(_assign({}, s), {\n nextSnapshot: _assign(_assign({}, getPanelSnapshot(ref.current, next)), getTabsSnapshot(ref.current, next))\n });\n });\n }\n });\n return {\n prevSnapshot: prevSnapshot,\n nextSnapshot: nextSnapshot\n };\n}\n\nfunction getPanelSnapshot(parent, step) {\n var _a;\n\n var northElement = parent.querySelector(\"[data-ch-panel='north']\");\n var southElement = parent.querySelector(\"[data-ch-panel='south']\");\n var bar = parent.querySelector(\".ch-frame-title-bar\");\n return {\n titleBarHeight: bar.getBoundingClientRect().height,\n northHeight: northElement.getBoundingClientRect().height,\n northKey: step.northPanel.active,\n southHeight: (southElement === null || southElement === void 0 ? void 0 : southElement.getBoundingClientRect().height) || null,\n southKey: (_a = step.southPanel) === null || _a === void 0 ? void 0 : _a.active\n };\n}\n\nfunction getTabsSnapshot(parent, step) {\n var _a;\n\n var northTabs = Array.from(parent.querySelectorAll(\"[data-ch-tab='north']\"));\n var southTabs = Array.from(parent.querySelectorAll(\"[data-ch-tab='south']\"));\n return {\n northTabs: getTabsDimensions(northTabs, step.northPanel.active),\n southTabs: getTabsDimensions(southTabs, (_a = step.southPanel) === null || _a === void 0 ? void 0 : _a.active)\n };\n}\n\nfunction getTabsDimensions(tabElements, active) {\n if (!tabElements[0]) {\n return null;\n }\n\n var parent = tabElements[0].parentElement;\n var parentLeft = parent.getBoundingClientRect().left;\n var dimensions = {};\n tabElements.forEach(function (child) {\n var filename = child.getAttribute(\"title\");\n var rect = child.getBoundingClientRect();\n dimensions[filename] = {\n left: rect.left - parentLeft,\n width: rect.width,\n active: filename === active\n };\n });\n return dimensions;\n}\n\nfunction getTabs(prevSnapshot, nextSnapshot, northActive, southActive, t) {\n // TODO simplify\n if (!prevSnapshot.southTabs && isPresent(southActive, prevSnapshot.northTabs)) {\n /// one to two south\n return {\n northTabs: getPanelTabs(nextSnapshot.northTabs, nextSnapshot.southTabs, prevSnapshot.southTabs, prevSnapshot.northTabs, northActive, t),\n southTabs: getPanelTabs(nextSnapshot.southTabs, nextSnapshot.northTabs, prevSnapshot.northTabs, prevSnapshot.southTabs, southActive, t)\n };\n }\n\n if (!nextSnapshot.southTabs && isPresent(southActive, nextSnapshot.northTabs)) {\n /// two to one south\n return {\n northTabs: getPanelTabs(nextSnapshot.southTabs, nextSnapshot.northTabs, prevSnapshot.northTabs, prevSnapshot.southTabs, northActive, t),\n southTabs: getPanelTabs(nextSnapshot.northTabs, nextSnapshot.southTabs, prevSnapshot.southTabs, prevSnapshot.northTabs, southActive, t)\n };\n }\n\n return {\n northTabs: getPanelTabs(nextSnapshot.northTabs, nextSnapshot.southTabs, prevSnapshot.northTabs, prevSnapshot.southTabs, northActive, t),\n southTabs: getPanelTabs(nextSnapshot.southTabs, nextSnapshot.northTabs, prevSnapshot.southTabs, prevSnapshot.northTabs, southActive, t)\n };\n}\n\nfunction getPanelTabs(nextSnapshot, otherNextSnapshot, prevSnapshot, otherPrevSnapshot, active, t) {\n // For each tab bar there are four types of tabs\n // - oldTabs: tabs that are present in both prev and next versions of the bar\n // - totallyNewTabs: tabs that are totally new (present in next\n // but not in any prev)\n // - migratingTabs: tabs that are come from the other bar (present\n // in next and in otherPrev)\n // - disappearingTabs: present in prev but not in next or otherNext\n var oldTabs = !nextSnapshot ? [] : Object.keys(nextSnapshot).filter(function (filename) {\n return isPresent(filename, prevSnapshot) || !prevSnapshot;\n }).map(function (filename) {\n var prev = prevSnapshot && prevSnapshot[filename];\n var next = nextSnapshot[filename];\n var dx = prev ? prev.left + (next.left - prev.left) * t : next.left;\n var width = prev ? prev.width + (next.width - prev.width) * t : next.width;\n return {\n active: filename === active,\n title: filename,\n style: {\n position: \"absolute\",\n transform: \"translateX(\" + dx + \"px)\",\n width: width\n }\n };\n });\n var totallyNewTabs = !nextSnapshot ? [] : Object.keys(nextSnapshot).filter(function (filename) {\n return prevSnapshot && !isPresent(filename, prevSnapshot);\n } // && !isPresent(filename, otherPrevSnapshot)\n ).map(function (filename) {\n var next = nextSnapshot[filename];\n return {\n active: filename === active,\n title: filename,\n style: {\n position: \"absolute\",\n transform: \"translateX(\" + next.left + \"px)\",\n opacity: t,\n width: next.width\n }\n };\n });\n !nextSnapshot ? [] : Object.keys(nextSnapshot).filter(function (filename) {\n return isPresent(filename, otherPrevSnapshot);\n }).map(function (filename) {\n var prev = otherPrevSnapshot[filename];\n var next = nextSnapshot[filename];\n var dx = next.left - prev.left;\n return {\n active: filename === active,\n title: filename,\n style: {\n position: \"absolute\",\n transform: \"translateX(\" + dx + \"px)\"\n }\n };\n });\n var disappearingTabs = !prevSnapshot ? [] : Object.keys(prevSnapshot).filter(function (filename) {\n return !isPresent(filename, nextSnapshot);\n } // && !isPresent(filename, otherNextSnapshot)\n ).map(function (filename) {\n var prev = prevSnapshot[filename];\n return {\n active: filename === active,\n title: filename,\n style: {\n position: \"absolute\",\n opacity: 1 - t,\n transform: \"translateX(\" + prev.left + \"px)\",\n width: prev.width\n }\n };\n });\n return __spread(totallyNewTabs, oldTabs, disappearingTabs);\n}\n\nfunction isPresent(filename, snapshot) {\n return snapshot && filename && filename in snapshot;\n}\n\nfunction TerminalPanel(_a) {\n var prev = _a.prev,\n next = _a.next,\n t = _a.t,\n backward = _a.backward;\n var height = getHeight({\n prev: prev,\n next: next,\n t: t,\n backward: backward\n });\n return !height ? null : React.createElement(\"div\", {\n className: \"ch-editor-terminal\",\n style: {\n height: height\n }\n }, React.createElement(\"div\", {\n className: \"ch-editor-terminal-tab\"\n }, React.createElement(\"span\", null, \"Terminal\")), React.createElement(\"div\", {\n className: \"ch-editor-terminal-content\"\n }, React.createElement(InnerTerminal, {\n steps: [{\n text: prev || \"\"\n }, {\n text: next || \"\"\n }],\n progress: t\n }), \")\"));\n}\n\nfunction getHeight(_a) {\n var prev = _a.prev,\n next = _a.next,\n t = _a.t;\n _a.backward;\n if (!prev && !next) return 0;\n if (!prev && next) return MAX_HEIGHT * Math.min(t * 4, 1);\n if (prev && !next) return MAX_HEIGHT * Math.max(1 - t * 4, 0);\n return MAX_HEIGHT;\n}\n\nvar MAX_HEIGHT = 150;\nvar $schema = \"vscode://schemas/color-theme\";\nvar name = \"dark-plus\";\nvar tokenColors = [{\n settings: {\n foreground: \"#D4D4D4\"\n }\n}, {\n scope: [\"meta.embedded\", \"source.groovy.embedded\"],\n settings: {\n foreground: \"#D4D4D4\"\n }\n}, {\n scope: \"emphasis\",\n settings: {\n fontStyle: \"italic\"\n }\n}, {\n scope: \"strong\",\n settings: {\n fontStyle: \"bold\"\n }\n}, {\n scope: \"header\",\n settings: {\n foreground: \"#000080\"\n }\n}, {\n scope: \"comment\",\n settings: {\n foreground: \"#6A9955\"\n }\n}, {\n scope: \"constant.language\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: [\"constant.numeric\", \"variable.other.enummember\", \"keyword.operator.plus.exponent\", \"keyword.operator.minus.exponent\"],\n settings: {\n foreground: \"#b5cea8\"\n }\n}, {\n scope: \"constant.regexp\",\n settings: {\n foreground: \"#646695\"\n }\n}, {\n scope: \"entity.name.tag\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"entity.name.tag.css\",\n settings: {\n foreground: \"#d7ba7d\"\n }\n}, {\n scope: \"entity.other.attribute-name\",\n settings: {\n foreground: \"#9cdcfe\"\n }\n}, {\n scope: [\"entity.other.attribute-name.class.css\", \"entity.other.attribute-name.class.mixin.css\", \"entity.other.attribute-name.id.css\", \"entity.other.attribute-name.parent-selector.css\", \"entity.other.attribute-name.pseudo-class.css\", \"entity.other.attribute-name.pseudo-element.css\", \"source.css.less entity.other.attribute-name.id\", \"entity.other.attribute-name.scss\"],\n settings: {\n foreground: \"#d7ba7d\"\n }\n}, {\n scope: \"invalid\",\n settings: {\n foreground: \"#f44747\"\n }\n}, {\n scope: \"markup.underline\",\n settings: {\n fontStyle: \"underline\"\n }\n}, {\n scope: \"markup.bold\",\n settings: {\n fontStyle: \"bold\",\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"markup.heading\",\n settings: {\n fontStyle: \"bold\",\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"markup.italic\",\n settings: {\n fontStyle: \"italic\"\n }\n}, {\n scope: \"markup.inserted\",\n settings: {\n foreground: \"#b5cea8\"\n }\n}, {\n scope: \"markup.deleted\",\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n scope: \"markup.changed\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"punctuation.definition.quote.begin.markdown\",\n settings: {\n foreground: \"#6A9955\"\n }\n}, {\n scope: \"punctuation.definition.list.begin.markdown\",\n settings: {\n foreground: \"#6796e6\"\n }\n}, {\n scope: \"markup.inline.raw\",\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n name: \"brackets of XML/HTML tags\",\n scope: \"punctuation.definition.tag\",\n settings: {\n foreground: \"#808080\"\n }\n}, {\n scope: [\"meta.preprocessor\", \"entity.name.function.preprocessor\"],\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"meta.preprocessor.string\",\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n scope: \"meta.preprocessor.numeric\",\n settings: {\n foreground: \"#b5cea8\"\n }\n}, {\n scope: \"meta.structure.dictionary.key.python\",\n settings: {\n foreground: \"#9cdcfe\"\n }\n}, {\n scope: \"meta.diff.header\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"storage\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"storage.type\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: [\"storage.modifier\", \"keyword.operator.noexcept\"],\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: [\"string\", \"meta.embedded.assembly\"],\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n scope: \"string.tag\",\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n scope: \"string.value\",\n settings: {\n foreground: \"#ce9178\"\n }\n}, {\n scope: \"string.regexp\",\n settings: {\n foreground: \"#d16969\"\n }\n}, {\n name: \"String interpolation\",\n scope: [\"punctuation.definition.template-expression.begin\", \"punctuation.definition.template-expression.end\", \"punctuation.section.embedded\"],\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n name: \"Reset JavaScript string interpolation expression\",\n scope: [\"meta.template.expression\"],\n settings: {\n foreground: \"#d4d4d4\"\n }\n}, {\n scope: [\"support.type.vendored.property-name\", \"support.type.property-name\", \"variable.css\", \"variable.scss\", \"variable.other.less\", \"source.coffee.embedded\"],\n settings: {\n foreground: \"#9cdcfe\"\n }\n}, {\n scope: \"keyword\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"keyword.control\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"keyword.operator\",\n settings: {\n foreground: \"#d4d4d4\"\n }\n}, {\n scope: [\"keyword.operator.new\", \"keyword.operator.expression\", \"keyword.operator.cast\", \"keyword.operator.sizeof\", \"keyword.operator.alignof\", \"keyword.operator.typeid\", \"keyword.operator.alignas\", \"keyword.operator.instanceof\", \"keyword.operator.logical.python\", \"keyword.operator.wordlike\"],\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"keyword.other.unit\",\n settings: {\n foreground: \"#b5cea8\"\n }\n}, {\n scope: [\"punctuation.section.embedded.begin.php\", \"punctuation.section.embedded.end.php\"],\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"support.function.git-rebase\",\n settings: {\n foreground: \"#9cdcfe\"\n }\n}, {\n scope: \"constant.sha.git-rebase\",\n settings: {\n foreground: \"#b5cea8\"\n }\n}, {\n name: \"coloring of the Java import and package identifiers\",\n scope: [\"storage.modifier.import.java\", \"variable.language.wildcard.java\", \"storage.modifier.package.java\"],\n settings: {\n foreground: \"#d4d4d4\"\n }\n}, {\n name: \"this.self\",\n scope: \"variable.language\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n name: \"Function declarations\",\n scope: [\"entity.name.function\", \"support.function\", \"support.constant.handlebars\", \"source.powershell variable.other.member\", \"entity.name.operator.custom-literal\"],\n settings: {\n foreground: \"#DCDCAA\"\n }\n}, {\n name: \"Types declaration and references\",\n scope: [\"meta.return-type\", \"support.class\", \"support.type\", \"entity.name.type\", \"entity.name.namespace\", \"entity.other.attribute\", \"entity.name.scope-resolution\", \"entity.name.class\", \"storage.type.numeric.go\", \"storage.type.byte.go\", \"storage.type.boolean.go\", \"storage.type.string.go\", \"storage.type.uintptr.go\", \"storage.type.error.go\", \"storage.type.rune.go\", \"storage.type.cs\", \"storage.type.generic.cs\", \"storage.type.modifier.cs\", \"storage.type.variable.cs\", \"storage.type.annotation.java\", \"storage.type.generic.java\", \"storage.type.java\", \"storage.type.object.array.java\", \"storage.type.primitive.array.java\", \"storage.type.primitive.java\", \"storage.type.token.java\", \"storage.type.groovy\", \"storage.type.annotation.groovy\", \"storage.type.parameters.groovy\", \"storage.type.generic.groovy\", \"storage.type.object.array.groovy\", \"storage.type.primitive.array.groovy\", \"storage.type.primitive.groovy\"],\n settings: {\n foreground: \"#4EC9B0\"\n }\n}, {\n name: \"Types declaration and references, TS grammar specific\",\n scope: [\"meta.type.cast.expr\", \"meta.type.new.expr\", \"support.constant.math\", \"support.constant.dom\", \"support.constant.json\", \"entity.other.inherited-class\"],\n settings: {\n foreground: \"#4EC9B0\"\n }\n}, {\n name: \"Control flow / Special keywords\",\n scope: [\"keyword.control\", \"source.cpp keyword.operator.new\", \"keyword.operator.delete\", \"keyword.other.using\", \"keyword.other.operator\", \"entity.name.operator\"],\n settings: {\n foreground: \"#C586C0\"\n }\n}, {\n name: \"Variable and parameter name\",\n scope: [\"variable\", \"meta.definition.variable.name\", \"support.variable\", \"entity.name.variable\", \"constant.other.placeholder\"],\n settings: {\n foreground: \"#9CDCFE\"\n }\n}, {\n name: \"Constants and enums\",\n scope: [\"variable.other.constant\", \"variable.other.enummember\"],\n settings: {\n foreground: \"#4FC1FF\"\n }\n}, {\n name: \"Object keys, TS grammar specific\",\n scope: [\"meta.object-literal.key\"],\n settings: {\n foreground: \"#9CDCFE\"\n }\n}, {\n name: \"CSS property value\",\n scope: [\"support.constant.property-value\", \"support.constant.font-name\", \"support.constant.media-type\", \"support.constant.media\", \"constant.other.color.rgb-value\", \"constant.other.rgb-value\", \"support.constant.color\"],\n settings: {\n foreground: \"#CE9178\"\n }\n}, {\n name: \"Regular expression groups\",\n scope: [\"punctuation.definition.group.regexp\", \"punctuation.definition.group.assertion.regexp\", \"punctuation.definition.character-class.regexp\", \"punctuation.character.set.begin.regexp\", \"punctuation.character.set.end.regexp\", \"keyword.operator.negation.regexp\", \"support.other.parenthesis.regexp\"],\n settings: {\n foreground: \"#CE9178\"\n }\n}, {\n scope: [\"constant.character.character-class.regexp\", \"constant.other.character-class.set.regexp\", \"constant.other.character-class.regexp\", \"constant.character.set.regexp\"],\n settings: {\n foreground: \"#d16969\"\n }\n}, {\n scope: [\"keyword.operator.or.regexp\", \"keyword.control.anchor.regexp\"],\n settings: {\n foreground: \"#DCDCAA\"\n }\n}, {\n scope: \"keyword.operator.quantifier.regexp\",\n settings: {\n foreground: \"#d7ba7d\"\n }\n}, {\n scope: \"constant.character\",\n settings: {\n foreground: \"#569cd6\"\n }\n}, {\n scope: \"constant.character.escape\",\n settings: {\n foreground: \"#d7ba7d\"\n }\n}, {\n scope: \"entity.name.label\",\n settings: {\n foreground: \"#C8C8C8\"\n }\n}];\nvar semanticTokenColors = {\n newOperator: \"#C586C0\",\n stringLiteral: \"#ce9178\",\n customLiteral: \"#DCDCAA\",\n numberLiteral: \"#b5cea8\"\n};\nvar colors = {\n \"editor.background\": \"#1E1E1E\",\n \"editor.foreground\": \"#D4D4D4\",\n \"editor.inactiveSelectionBackground\": \"#3A3D41\",\n \"editorIndentGuide.background\": \"#404040\",\n \"editorIndentGuide.activeBackground\": \"#707070\",\n \"editor.selectionHighlightBackground\": \"#ADD6FF26\",\n \"list.dropBackground\": \"#383B3D\",\n \"activityBarBadge.background\": \"#007ACC\",\n \"sideBarTitle.foreground\": \"#BBBBBB\",\n \"input.placeholderForeground\": \"#A6A6A6\",\n \"menu.background\": \"#252526\",\n \"menu.foreground\": \"#CCCCCC\",\n \"statusBarItem.remoteForeground\": \"#FFF\",\n \"statusBarItem.remoteBackground\": \"#16825D\",\n \"ports.iconRunningProcessForeground\": \"#369432\",\n \"sideBarSectionHeader.background\": \"#0000\",\n \"sideBarSectionHeader.border\": \"#ccc3\",\n \"tab.lastPinnedBorder\": \"#ccc3\",\n \"list.activeSelectionIconForeground\": \"#FFF\"\n};\nvar DEFAULT_THEME = {\n $schema: $schema,\n name: name,\n tokenColors: tokenColors,\n semanticTokenColors: semanticTokenColors,\n colors: colors\n};\nvar DEFAULT_STEP = {\n files: [{\n code: \"\",\n lang: \"js\",\n name: \"\"\n }],\n northPanel: {\n active: \"\",\n tabs: [\"\"],\n heightRatio: 1\n }\n};\n\nfunction MiniEditorTween(_a) {\n var _b = _a.prev,\n prev = _b === void 0 ? DEFAULT_STEP : _b,\n _c = _a.next,\n next = _c === void 0 ? DEFAULT_STEP : _c,\n t = _a.t,\n backward = _a.backward,\n _d = _a.codeProps,\n codeProps = _d === void 0 ? {} : _d,\n _e = _a.frameProps,\n frameProps = _e === void 0 ? {} : _e;\n var ref = React.createRef();\n\n var _f = useTransition(ref, prev, next, t, backward, codeProps),\n northPanel = _f.northPanel,\n southPanel = _f.southPanel;\n\n var terminalPanel = React.createElement(TerminalPanel, {\n prev: prev.terminal,\n next: next.terminal,\n t: t,\n backward: backward\n });\n return React.createElement(EditorFrame, _assign({\n ref: ref\n }, frameProps, {\n northPanel: northPanel,\n southPanel: southPanel,\n terminalPanel: terminalPanel,\n theme: codeProps.theme || DEFAULT_THEME\n }));\n}\n\nfunction useTransition(ref, prev, next, t, backward, codeProps) {\n var _a = useSnapshots(ref, prev, next),\n prevSnapshot = _a.prevSnapshot,\n nextSnapshot = _a.nextSnapshot;\n\n if (!prevSnapshot) {\n return startingPosition(prev, next, codeProps);\n }\n\n if (!nextSnapshot) {\n return endingPosition(prev, next, codeProps);\n } // if (t === 0) {\n // return startingPosition(prev, next, codeProps)\n // }\n\n\n if (t === 1) {\n return endingPosition(prev, next, codeProps);\n }\n\n var inputSouthPanel = prev.southPanel || next.southPanel;\n\n var _b = getStepFiles(prev, next, t == 0 || backward),\n prevNorthFile = _b.prevNorthFile,\n prevSouthFile = _b.prevSouthFile,\n nextNorthFile = _b.nextNorthFile,\n nextSouthFile = _b.nextSouthFile;\n\n var _c = getPanelStyles(prevSnapshot, nextSnapshot, t),\n northStyle = _c.northStyle,\n southStyle = _c.southStyle;\n\n var _d = getTabs(prevSnapshot, nextSnapshot, prevNorthFile.name, prevSouthFile === null || prevSouthFile === void 0 ? void 0 : prevSouthFile.name, t),\n northTabs = _d.northTabs,\n southTabs = _d.southTabs;\n\n return {\n northPanel: {\n tabs: northTabs,\n style: northStyle,\n children: React.createElement(CodeTransition, {\n codeProps: codeProps,\n prevFile: prevNorthFile,\n nextFile: nextNorthFile,\n t: t,\n parentHeight: northStyle.height\n })\n },\n southPanel: inputSouthPanel && {\n tabs: southTabs,\n style: southStyle,\n children: React.createElement(CodeTransition, {\n codeProps: codeProps,\n prevFile: prevSouthFile,\n nextFile: nextSouthFile,\n t: t,\n parentHeight: southStyle === null || southStyle === void 0 ? void 0 : southStyle.height\n })\n }\n };\n} // Returns the t=0 state of the transition\n\n\nfunction startingPosition(prev, next, codeProps) {\n var inputNorthPanel = prev.northPanel;\n var inputSouthPanel = prev.southPanel;\n\n var _a = getStepFiles(prev, next, true),\n prevNorthFile = _a.prevNorthFile,\n prevSouthFile = _a.prevSouthFile,\n nextNorthFile = _a.nextNorthFile,\n nextSouthFile = _a.nextSouthFile;\n\n var northHeight = inputSouthPanel ? \"calc((100% - var(--ch-title-bar-height)) * \" + inputNorthPanel.heightRatio + \")\" : \"100%\";\n var southHeight = \"calc((100% - var(--ch-title-bar-height)) * \" + (inputSouthPanel === null || inputSouthPanel === void 0 ? void 0 : inputSouthPanel.heightRatio) + \" + var(--ch-title-bar-height))\";\n return {\n northPanel: {\n tabs: inputNorthPanel.tabs.map(function (title) {\n return {\n title: title,\n active: title === inputNorthPanel.active,\n style: {}\n };\n }),\n style: {\n height: northHeight\n },\n children: React.createElement(CodeTransition, {\n codeProps: codeProps,\n prevFile: prevNorthFile,\n nextFile: nextNorthFile,\n t: 0,\n parentHeight: northHeight\n })\n },\n southPanel: inputSouthPanel && {\n tabs: inputSouthPanel.tabs.map(function (title) {\n return {\n title: title,\n active: title === inputSouthPanel.active,\n style: {}\n };\n }),\n style: {\n height: \"calc((100% - var(--ch-title-bar-height)) * \" + inputSouthPanel.heightRatio + \" + var(--ch-title-bar-height))\"\n },\n children: React.createElement(CodeTransition, {\n codeProps: codeProps,\n prevFile: prevSouthFile,\n nextFile: nextSouthFile,\n t: 0,\n parentHeight: southHeight\n })\n }\n };\n} // Returns the t=1 state of the transition\n\n\nfunction endingPosition(prev, next, codeProps) {\n var _a;\n\n var inputNorthPanel = next.northPanel;\n var inputSouthPanel = next.southPanel;\n\n var _b = getStepFiles(prev, next, false),\n prevNorthFile = _b.prevNorthFile,\n prevSouthFile = _b.prevSouthFile,\n nextNorthFile = _b.nextNorthFile,\n nextSouthFile = _b.nextSouthFile; // getStepFiles return the intermediate files, we need to patch the ending state (2to1south)\n\n\n var isTwoToOneSouth = !inputSouthPanel && inputNorthPanel.active === ((_a = prev === null || prev === void 0 ? void 0 : prev.southPanel) === null || _a === void 0 ? void 0 : _a.active);\n\n if (isTwoToOneSouth) {\n nextNorthFile = nextSouthFile;\n }\n\n var northHeight = inputSouthPanel ? \"calc((100% - var(--ch-title-bar-height)) * \" + inputNorthPanel.heightRatio + \")\" : \"100%\";\n var southHeight = \"calc((100% - var(--ch-title-bar-height)) * \" + (inputSouthPanel === null || inputSouthPanel === void 0 ? void 0 : inputSouthPanel.heightRatio) + \" + var(--ch-title-bar-height))\";\n return {\n northPanel: {\n tabs: inputNorthPanel.tabs.map(function (title) {\n return {\n title: title,\n active: title === inputNorthPanel.active,\n style: {}\n };\n }),\n style: {\n height: northHeight\n },\n children: React.createElement(CodeTransition, {\n codeProps: codeProps,\n prevFile: prevNorthFile,\n nextFile: nextNorthFile,\n t: 1,\n parentHeight: northHeight\n })\n },\n southPanel: inputSouthPanel && {\n tabs: inputSouthPanel.tabs.map(function (title) {\n return {\n title: title,\n active: title === inputSouthPanel.active,\n style: {}\n };\n }),\n style: {\n height: southHeight\n },\n children: React.createElement(CodeTransition, {\n codeProps: codeProps,\n prevFile: prevSouthFile,\n nextFile: nextSouthFile,\n t: 1,\n parentHeight: southHeight\n })\n }\n };\n}\n\nfunction CodeTransition(_a) {\n var prevFile = _a.prevFile,\n nextFile = _a.nextFile,\n t = _a.t,\n codeProps = _a.codeProps,\n parentHeight = _a.parentHeight;\n return React.createElement(Code, _assign({}, codeProps, {\n code: {\n prev: prevFile.code,\n next: nextFile.code\n },\n focus: {\n prev: prevFile.focus,\n next: nextFile.focus\n },\n annotations: {\n prev: prevFile.annotations,\n next: nextFile.annotations\n },\n progress: t,\n language: prevFile.lang,\n parentHeight: parentHeight\n }));\n}\n/**\r\n * Get the StepFiles for a transition\r\n * in each panel, if the prev and next active files are the same\r\n * we return the prev and next version of that panel\r\n * if the active files are different, we return the same file twice,\r\n * if backward is true we return the prev active file twice,\r\n * or else the next active file twice\r\n */\n\n\nfunction getStepFiles(prev, next, backward) {\n var _a, _b; // The active file in each panel before and after:\n // +----+----+\n // | pn | nn |\n // +----+----+\n // | ps | ns |\n // +----+----+\n //\n\n\n var pn = prev.northPanel.active;\n var nn = next.northPanel.active;\n var ps = (_a = prev.southPanel) === null || _a === void 0 ? void 0 : _a.active;\n var ns = (_b = next.southPanel) === null || _b === void 0 ? void 0 : _b.active;\n var pnFile = prev.files.find(function (f) {\n return f.name === pn;\n });\n var nnFile = next.files.find(function (f) {\n return f.name === nn;\n });\n var psFile = ps ? prev.files.find(function (f) {\n return f.name === ps;\n }) : null;\n var nsFile = ns ? next.files.find(function (f) {\n return f.name === ns;\n }) : null;\n var oneToTwoSouth = !ps && pn === ns;\n\n if (oneToTwoSouth) {\n return {\n prevNorthFile: nnFile,\n nextNorthFile: nnFile,\n prevSouthFile: pnFile,\n nextSouthFile: nsFile\n };\n }\n\n var twoToOneSouth = !ns && nn === ps;\n\n if (twoToOneSouth) {\n return {\n prevNorthFile: pnFile,\n nextNorthFile: pnFile,\n prevSouthFile: psFile,\n nextSouthFile: nnFile\n };\n }\n\n var prevNorthFile = pn === nn ? pnFile : backward ? pnFile : nnFile;\n var nextNorthFile = pn === nn ? nnFile : backward ? pnFile : nnFile;\n var prevSouthFile = ps === ns ? psFile : backward ? psFile || nsFile : nsFile || psFile;\n var nextSouthFile = ps === ns ? nsFile : backward ? psFile || nsFile : nsFile || psFile;\n return {\n prevNorthFile: prevNorthFile,\n nextNorthFile: nextNorthFile,\n prevSouthFile: prevSouthFile,\n nextSouthFile: nextSouthFile\n };\n}\n\nfunction MiniEditorHike(_a) {\n var _b = _a.steps,\n steps = _b === void 0 ? [] : _b,\n _c = _a.progress,\n progress = _c === void 0 ? 0 : _c,\n _d = _a.backward,\n backward = _d === void 0 ? false : _d,\n frameProps = _a.frameProps,\n codeProps = _a.codeProps;\n var prevIndex = clamp(Math.floor(progress), 0, steps.length - 1);\n var nextIndex = clamp(prevIndex + 1, 0, steps.length - 1);\n var prev = steps[prevIndex];\n var next = steps[nextIndex];\n var t = clamp(progress - prevIndex, 0, steps.length - 1);\n return React.createElement(MiniEditorTween, {\n frameProps: frameProps,\n codeProps: codeProps,\n prev: prev,\n next: next,\n backward: backward,\n t: t\n });\n}\n\nfunction clamp(a, min, max) {\n return Math.max(Math.min(a, max), min);\n}\n\nvar defaultSpring = {\n stiffness: 120,\n damping: 24,\n mass: 0.2,\n decimals: 3\n};\n\nfunction MiniEditor(props) {\n if (\"northPanel\" in props) {\n return React.createElement(TwoPanelEditor, _assign({}, props));\n } else if (\"active\" in props) {\n return React.createElement(SinglePanelEditor, _assign({}, props));\n } else {\n return React.createElement(SingleFileEditor, _assign({}, props));\n }\n}\n\nfunction SingleFileEditor(_a) {\n var _b = _a.code,\n code = _b === void 0 ? \"\" : _b,\n _c = _a.lang,\n lang = _c === void 0 ? \"js\" : _c,\n focus = _a.focus,\n _d = _a.filename,\n filename = _d === void 0 ? \"\" : _d,\n annotations = _a.annotations,\n terminal = _a.terminal,\n springConfig = _a.springConfig,\n props = __rest(_a, [\"code\", \"lang\", \"focus\", \"filename\", \"annotations\", \"terminal\", \"springConfig\"]);\n\n var step = React.useMemo(function () {\n var step = {\n files: [{\n name: filename,\n code: code,\n lang: lang,\n focus: focus,\n annotations: annotations\n }],\n northPanel: {\n active: filename,\n tabs: [filename],\n heightRatio: 1\n },\n terminal: terminal\n };\n return step;\n }, [code, lang, focus, filename, terminal]);\n\n var _e = useStepSpring(step, springConfig),\n prev = _e.prev,\n next = _e.next,\n t = _e.t;\n\n return React.createElement(MiniEditorTween, _assign({\n t: t,\n backward: false,\n prev: prev,\n next: next\n }, props));\n}\n\nfunction SinglePanelEditor(_a) {\n var files = _a.files,\n active = _a.active,\n terminal = _a.terminal,\n springConfig = _a.springConfig,\n props = __rest(_a, [\"files\", \"active\", \"terminal\", \"springConfig\"]);\n\n var step = React.useMemo(function () {\n var tabs = files.map(function (file) {\n return file.name;\n });\n var step = {\n files: files,\n northPanel: {\n active: active,\n tabs: tabs,\n heightRatio: 1\n },\n terminal: terminal\n };\n return step;\n }, [files, active, terminal]);\n\n var _b = useStepSpring(step, springConfig),\n prev = _b.prev,\n next = _b.next,\n t = _b.t;\n\n return React.createElement(MiniEditorTween, _assign({\n t: t,\n backward: false,\n prev: prev,\n next: next\n }, props));\n}\n\nfunction TwoPanelEditor(_a) {\n var northPanel = _a.northPanel,\n southPanel = _a.southPanel,\n files = _a.files,\n terminal = _a.terminal,\n springConfig = _a.springConfig,\n props = __rest(_a, [\"northPanel\", \"southPanel\", \"files\", \"terminal\", \"springConfig\"]);\n\n var step = React.useMemo(function () {\n return {\n northPanel: northPanel,\n southPanel: southPanel,\n files: files,\n terminal: terminal\n };\n }, [northPanel, southPanel, files, terminal]);\n\n var _b = useStepSpring(step, springConfig),\n prev = _b.prev,\n next = _b.next,\n t = _b.t;\n\n return React.createElement(MiniEditorTween, _assign({\n t: t,\n backward: false,\n prev: prev,\n next: next\n }, props));\n}\n\nfunction useStepSpring(step, springConfig) {\n if (springConfig === void 0) {\n springConfig = defaultSpring;\n }\n\n var _a = __read(React.useState({\n target: 0,\n prev: step,\n next: step\n }), 2),\n _b = _a[0],\n target = _b.target,\n prev = _b.prev,\n next = _b.next,\n setState = _a[1];\n\n React.useEffect(function () {\n if (next != step) {\n setState(function (s) {\n return {\n target: s.target + 1,\n prev: next,\n next: step\n };\n });\n }\n }, [step]);\n\n var _c = __read(useSpring(target, springConfig), 1),\n progress = _c[0];\n\n var t = progress % 1;\n return {\n prev: prev,\n next: next,\n t: t || 1\n };\n}\n\nfunction mdxToSteps(children, settings) {\n if (settings === void 0) {\n settings = {};\n }\n\n var steps = [];\n children.forEach(function (child, i) {\n steps.push(mdxToStep(child, steps[i - 1], settings));\n });\n return steps;\n}\n\nvar defaultFileName = \"index.js\";\n\nfunction mdxToStep(child, prev, settings) {\n var _a;\n\n if (settings === void 0) {\n settings = {};\n }\n\n var stepProps = (child === null || child === void 0 ? void 0 : child.props) || {};\n var stepChildren = React.Children.toArray(stepProps.children);\n var separatorIndex = stepChildren.findIndex(function (child) {\n var _a;\n\n return ((_a = child === null || child === void 0 ? void 0 : child.props) === null || _a === void 0 ? void 0 : _a.mdxType) === \"hr\";\n });\n var hasTwoPanels = separatorIndex !== -1;\n var northChildren = hasTwoPanels ? stepChildren.slice(0, separatorIndex) : stepChildren;\n var southChildren = hasTwoPanels ? stepChildren.slice(separatorIndex + 1) : null;\n var northFiles = northChildren.map(function (pre) {\n return preToFile(pre, prev ? prev.files : [], settings);\n });\n var southFiles = southChildren === null || southChildren === void 0 ? void 0 : southChildren.map(function (pre) {\n return preToFile(pre, prev ? prev.files : [], settings);\n });\n var prevFiles = (prev === null || prev === void 0 ? void 0 : prev.files) || [];\n\n var files = __spread(prevFiles.filter(function (f) {\n return !northFiles.some(function (nf) {\n return nf.name === f.name;\n }) && !(southFiles === null || southFiles === void 0 ? void 0 : southFiles.some(function (sf) {\n return sf.name === f.name;\n }));\n }), northFiles, southFiles || []);\n\n return {\n files: files,\n northPanel: {\n tabs: chooseNorthTabs(prev, northFiles, southFiles),\n active: chooseActiveFile(northFiles, prev === null || prev === void 0 ? void 0 : prev.northPanel.active),\n heightRatio: 0.5\n },\n southPanel: southFiles && southFiles.length ? {\n tabs: chooseSouthTabs(prev, northFiles, southFiles),\n active: chooseActiveFile(southFiles, (_a = prev === null || prev === void 0 ? void 0 : prev.southPanel) === null || _a === void 0 ? void 0 : _a.active),\n heightRatio: 0.5\n } : undefined\n };\n}\n\nfunction chooseNorthTabs(prev, northFiles, southFiles) {\n // old north tabs + new north tabs (except hidden) - new south tabs\n var oldNorthTabs = (prev === null || prev === void 0 ? void 0 : prev.northPanel.tabs) || [];\n var newSouthTabs = (southFiles || []).map(function (f) {\n return f.name;\n });\n var newNorthTabs = northFiles.filter(function (f) {\n return !f.hidden && !oldNorthTabs.includes(f.name);\n }).map(function (f) {\n return f.name;\n });\n var baseTabs = oldNorthTabs.filter(function (tab) {\n return !newSouthTabs.includes(tab);\n });\n return __spread(baseTabs, newNorthTabs);\n}\n\nfunction chooseSouthTabs(prev, northFiles, southFiles) {\n var _a; // old south tabs + new south tabs (except hidden) - new north tabs\n\n\n var oldSouthTabs = ((_a = prev === null || prev === void 0 ? void 0 : prev.southPanel) === null || _a === void 0 ? void 0 : _a.tabs) || [];\n var newSouthTabs = (southFiles || []).filter(function (f) {\n return !f.hidden && !oldSouthTabs.includes(f.name);\n }).map(function (f) {\n return f.name;\n });\n var newNorthTabs = northFiles.map(function (f) {\n return f.name;\n });\n var baseTabs = oldSouthTabs.filter(function (tab) {\n return !newNorthTabs.includes(tab);\n });\n return __spread(baseTabs, newSouthTabs);\n}\n\nfunction chooseActiveFile(panelFiles, prev) {\n var _a, _b;\n\n var active = ((_a = panelFiles.find(function (file) {\n return file.active;\n })) === null || _a === void 0 ? void 0 : _a.name) || ((_b = panelFiles[0]) === null || _b === void 0 ? void 0 : _b.name) || prev;\n\n if (!active) {\n throw new Error(\"Something is wrong with Code Hike\");\n }\n\n return active;\n}\n\nfunction preToFile(preElement, prevFiles, settings) {\n var _a, _b, _c;\n\n var codeElementProps = ((_b = (_a = preElement === null || preElement === void 0 ? void 0 : preElement.props) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.props) || {};\n var lang = (_c = codeElementProps.className) === null || _c === void 0 ? void 0 : _c.slice(9);\n\n var _d = parseMetastring(codeElementProps.metastring || \"\"),\n name = _d.name,\n options = __rest(_d, [\"name\"]);\n\n var fileName = name || (settings === null || settings === void 0 ? void 0 : settings.defaultFileName) || defaultFileName;\n var code = codeElementProps.children;\n var prevFile = prevFiles.find(function (file) {\n return file.name === fileName;\n });\n return _assign({\n code: code.trim() === \"\" && prevFile ? prevFile.code : code,\n lang: lang,\n name: fileName\n }, options);\n}\n\nfunction parseMetastring(metastring) {\n var params = metastring.split(\" \");\n var options = {};\n var name = null;\n params.forEach(function (param) {\n var _a = __read(param.split(\"=\"), 2),\n key = _a[0],\n value = _a[1];\n\n if (value != null) {\n options[key] = value;\n } else if (name === null) {\n name = key;\n } else {\n options[key] = true;\n }\n });\n return _assign({\n name: name\n }, options);\n}\n\nexport { MiniEditor, MiniEditorHike, MiniEditorTween, mdxToStep, mdxToSteps };","import React from 'react';\nimport { FrameButtons, MiniFrame } from '@code-hike/mini-frame';\nimport { useClasser } from '@code-hike/classer';\nimport { useSpring } from 'use-spring';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n\nfunction Back() {\n var c = useClasser(\"ch-browser\");\n return React.createElement(\"svg\", {\n fill: \"currentColor\",\n preserveAspectRatio: \"xMidYMid meet\",\n height: \"1em\",\n viewBox: \"13 10 14 23\",\n className: c(\"button\", \"back-button\")\n }, React.createElement(\"g\", null, React.createElement(\"path\", {\n d: \"m26.5 12.1q0 0.3-0.2 0.6l-8.8 8.7 8.8 8.8q0.2 0.2 0.2 0.5t-0.2 0.5l-1.1 1.1q-0.3 0.3-0.6 0.3t-0.5-0.3l-10.4-10.4q-0.2-0.2-0.2-0.5t0.2-0.5l10.4-10.4q0.3-0.2 0.5-0.2t0.6 0.2l1.1 1.1q0.2 0.2 0.2 0.5z\"\n })));\n}\n\nfunction Forward() {\n var c = useClasser(\"ch-browser\");\n return React.createElement(\"svg\", {\n fill: \"currentColor\",\n preserveAspectRatio: \"xMidYMid meet\",\n height: \"1em\",\n viewBox: \"13 10 14 23\",\n className: c(\"button\", \"forward-button\")\n }, React.createElement(\"g\", null, React.createElement(\"path\", {\n d: \"m26.3 21.4q0 0.3-0.2 0.5l-10.4 10.4q-0.3 0.3-0.6 0.3t-0.5-0.3l-1.1-1.1q-0.2-0.2-0.2-0.5t0.2-0.5l8.8-8.8-8.8-8.7q-0.2-0.3-0.2-0.6t0.2-0.5l1.1-1.1q0.3-0.2 0.5-0.2t0.6 0.2l10.4 10.4q0.2 0.2 0.2 0.5z\"\n })));\n}\n\nfunction Open(_a) {\n var href = _a.href;\n var c = useClasser(\"ch-browser\");\n return React.createElement(\"a\", {\n className: c(\"button\", \"open-button\"),\n title: \"Open in new tab\",\n href: href,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, React.createElement(\"svg\", {\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\",\n viewBox: \"3 3 18 18\",\n height: \"1em\",\n width: \"1em\",\n className: c(\"open-icon\"),\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"path\", {\n d: \"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"\n })));\n}\n\nfunction TitleBar(_a) {\n var url = _a.url,\n linkUrl = _a.linkUrl;\n return React.createElement(React.Fragment, null, React.createElement(FrameButtons, null), React.createElement(Back, null), React.createElement(Forward, null), React.createElement(\"input\", {\n value: url || \"\",\n readOnly: true\n }), React.createElement(Open, {\n href: linkUrl\n }));\n}\n\nfunction useSteps$1(steps) {\n return React.useMemo(function () {\n if (!steps) {\n return [{\n zoom: 1\n }];\n }\n\n return steps.map(function (step) {\n var _a = transformUrl(step.url, step.loadUrl, step.prependOrigin),\n displayUrl = _a.displayUrl,\n loadUrl = _a.loadUrl;\n\n return {\n zoom: step.zoom || 1,\n displayUrl: displayUrl,\n loadUrl: loadUrl,\n children: step.children\n };\n });\n }, [steps]);\n}\n\nfunction transformUrl(url, loadUrl, prependOrigin) {\n var currentOrigin = typeof window !== \"undefined\" ? window.origin : \"\";\n var displayUrl = url && prependOrigin === true ? currentOrigin + url : url;\n return {\n displayUrl: displayUrl,\n loadUrl: loadUrl || displayUrl\n };\n}\n\nvar MiniBrowserHike = React.forwardRef(MiniBrowserWithRef);\n\nfunction MiniBrowserWithRef(_a, ref) {\n var _b = _a.progress,\n progress = _b === void 0 ? 0 : _b;\n _a.backward;\n\n var ogSteps = _a.steps,\n _d = _a.transition,\n transition = _d === void 0 ? \"none\" : _d,\n classes = _a.classes,\n props = __rest(_a, [\"progress\", \"backward\", \"steps\", \"transition\", \"classes\"]);\n\n var c = useClasser(\"ch-mini-browser\", classes);\n var steps = useSteps$1(ogSteps);\n var stepIndex = Math.round(progress);\n var _e = steps[stepIndex],\n zoom = _e.zoom,\n displayUrl = _e.displayUrl,\n loadUrl = _e.loadUrl,\n children = _e.children;\n return React.createElement(MiniFrame, _assign({}, props, {\n zoom: zoom,\n className: c(\"\") + \" \" + (props.className || \"\"),\n style: _assign(_assign({}, transitionStyle({\n progress: progress,\n transition: transition\n })), props.style),\n classes: classes,\n titleBar: React.createElement(TitleBar, {\n url: displayUrl,\n linkUrl: loadUrl\n })\n }), children || React.createElement(\"iframe\", {\n ref: ref,\n src: loadUrl\n }));\n}\n\nfunction transitionStyle(_a) {\n var progress = _a.progress,\n transition = _a.transition;\n\n if (transition === \"slide\") {\n var X = 50;\n var t = progress - Math.floor(progress);\n var x = t <= 0.5 ? -X * t : X - X * t;\n var o = Math.abs(t - 0.5) * 2;\n return {\n transform: \"translateX(\" + x + \"px)\",\n opacity: o * o\n };\n }\n\n return {};\n}\n\nfunction MiniBrowser(_a) {\n var url = _a.url,\n loadUrl = _a.loadUrl,\n prependOrigin = _a.prependOrigin,\n children = _a.children,\n zoom = _a.zoom,\n rest = __rest(_a, [\"url\", \"loadUrl\", \"prependOrigin\", \"children\", \"zoom\"]);\n\n var _b = __read(useSteps({\n url: url,\n loadUrl: loadUrl,\n prependOrigin: prependOrigin,\n children: children,\n zoom: zoom\n }), 2),\n steps = _b[0],\n progress = _b[1];\n\n return React.createElement(MiniBrowserHike, _assign({}, rest, {\n steps: steps,\n progress: progress\n }));\n}\n\nfunction useSteps(_a) {\n var url = _a.url,\n loadUrl = _a.loadUrl,\n prependOrigin = _a.prependOrigin,\n children = _a.children,\n zoom = _a.zoom;\n\n var _b = __read(React.useState({\n target: 0,\n steps: [{\n url: url,\n loadUrl: loadUrl,\n prependOrigin: prependOrigin,\n children: children,\n zoom: zoom\n }]\n }), 2),\n state = _b[0],\n setState = _b[1];\n\n React.useEffect(function () {\n var last = state.steps[state.steps.length - 1];\n\n if (last.url !== url || last.loadUrl !== loadUrl || last.prependOrigin !== prependOrigin || last.children !== children) {\n setState(function (s) {\n return {\n target: s.target + 1,\n steps: __spread(s.steps, [{\n url: url,\n loadUrl: loadUrl,\n prependOrigin: prependOrigin,\n children: children,\n zoom: zoom\n }])\n };\n });\n }\n }, [url, loadUrl, prependOrigin, children, zoom]);\n\n var _c = __read(useSpring(state.target, {\n stiffness: 100,\n decimals: 3\n }), 1),\n progress = _c[0];\n\n return [state.steps, progress];\n}\n\nexport { MiniBrowser, MiniBrowserHike };","import * as React from 'react';\nimport React__default from 'react';\nimport { useClasser, ClasserProvider } from '@code-hike/classer';\nimport { Swap } from 'server-side-media-queries-for-react';\nimport { Scroller, Step } from '@code-hike/scroller';\nimport { SandpackProvider, useCodeSandboxLink, SandpackPreview, useLoadingOverlayState } from '@codesandbox/sandpack-react';\nimport { MiniEditor, mdxToStep } from '@code-hike/mini-editor';\nimport { MiniBrowser } from '@code-hike/mini-browser';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nvar HikeContext = React__default.createContext(null);\n\nfunction HikeProvider(_a) {\n var value = _a.value,\n children = _a.children;\n return React__default.createElement(HikeContext.Provider, {\n value: value\n }, children);\n}\n\nfunction useHikeContext() {\n return React__default.useContext(HikeContext);\n}\n\nfunction useFluidContext() {\n return React__default.useContext(HikeContext);\n}\n\nvar StepContext = React__default.createContext(null);\n\nfunction ContentColumn(_a) {\n var steps = _a.steps,\n onStepChange = _a.onStepChange;\n var c = useClasser(\"ch\");\n var contentSteps = steps.map(function (s) {\n return s.content;\n });\n return React__default.createElement(\"div\", {\n className: c(\"hike-content\")\n }, React__default.createElement(Scroller, {\n onStepChange: onStepChange\n }, contentSteps.map(function (children, index) {\n return React__default.createElement(StepContext.Provider, {\n value: {\n stepIndex: index,\n editorStep: steps[index].editorProps.contentProps\n },\n key: index\n }, React__default.createElement(StepContent, {\n children: children,\n stepIndex: index\n }));\n })));\n}\n\nfunction StepContent(_a) {\n var _b;\n\n var children = _a.children,\n stepIndex = _a.stepIndex;\n var c = useClasser(\"ch-hike-step\");\n\n var _c = useFluidContext(),\n dispatch = _c.dispatch,\n hikeState = _c.hikeState;\n\n var focusStepIndex = (_b = hikeState.focusStepIndex) !== null && _b !== void 0 ? _b : hikeState.scrollStepIndex;\n var isOn = stepIndex === focusStepIndex;\n return React__default.createElement(Step, {\n as: \"div\",\n index: stepIndex,\n onClick: function onClick() {\n return dispatch({\n type: \"set-focus\",\n stepIndex: stepIndex,\n editorStep: null\n });\n },\n className: c(\"\", isOn ? \"focused\" : \"unfocused\")\n }, stepIndex > 0 && React__default.createElement(\"div\", {\n className: c(\"gap\")\n }), React__default.createElement(\"div\", {\n className: c(\"content\", isOn ? \"content-focused\" : \"content-unfocused\")\n }, children));\n}\n\nfunction useStepData() {\n return React__default.useContext(StepContext);\n}\n\nvar DemoContext = React__default.createContext(null);\n\nfunction DemoProvider(_a) {\n var children = _a.children,\n editorProps = _a.editorProps,\n previewProps = _a.previewProps,\n previewPreset = _a.previewPreset;\n var sandpackProps = useSandpackProps(previewPreset, editorProps);\n var previewAndEditorProps = React__default.useMemo(function () {\n return {\n previewProps: previewProps,\n editorProps: editorProps\n };\n }, [previewProps, editorProps]);\n return React__default.createElement(SandpackProvider, _assign({}, sandpackProps), React__default.createElement(DemoContext.Provider, {\n value: previewAndEditorProps\n }, children));\n}\n\nfunction useSandpackProps(previewPreset, editorProps) {\n var _a, _b; // TODO useMemo\n\n\n var files = _assign({}, (_a = previewPreset === null || previewPreset === void 0 ? void 0 : previewPreset.customSetup) === null || _a === void 0 ? void 0 : _a.files);\n\n var codeFiles = ((_b = editorProps === null || editorProps === void 0 ? void 0 : editorProps.contentProps) === null || _b === void 0 ? void 0 : _b.files) || [];\n codeFiles.forEach(function (file) {\n files[\"/\" + file.name] = {\n code: file.code\n };\n });\n return _assign(_assign({\n recompileMode: \"immediate\"\n }, previewPreset), {\n customSetup: _assign(_assign({}, previewPreset === null || previewPreset === void 0 ? void 0 : previewPreset.customSetup), {\n files: files\n })\n });\n}\n\nfunction useEditorProps() {\n return React__default.useContext(DemoContext).editorProps;\n}\n\nfunction usePreviewProps() {\n return React__default.useContext(DemoContext).previewProps;\n}\n\nfunction Editor(_a) {\n var contentProps = _a.contentProps,\n codeProps = _a.codeProps,\n frameProps = _a.frameProps,\n springConfig = _a.springConfig;\n\n var finalFrameProps = _assign(_assign({\n button: React.createElement(CodeSandboxIcon, {\n url: useCodeSandboxLink()\n })\n }, frameProps), {\n style: _assign({\n height: \"100%\"\n }, frameProps === null || frameProps === void 0 ? void 0 : frameProps.style)\n });\n\n var finalCodeProps = _assign({\n minColumns: 46\n }, codeProps);\n\n return React.createElement(MiniEditor, _assign({}, contentProps, {\n frameProps: finalFrameProps,\n codeProps: finalCodeProps,\n springConfig: springConfig\n }));\n}\n\nfunction CodeSandboxIcon(_a) {\n var url = _a.url;\n return React.createElement(\"a\", {\n style: {\n margin: \"0 1em 0 1em\",\n color: \"inherit\"\n },\n title: \"Open in CodeSandbox\",\n href: url,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"1.3em\",\n width: \"1.3em\",\n stroke: \"currentColor\",\n fill: \"currentColor\",\n viewBox: \"0 0 512 512\",\n style: {\n display: \"block\"\n }\n }, React.createElement(\"path\", {\n d: \"M234.4 452V267.5L75.6 176.1v105.2l72.7 42.2v79.1l86.1 49.4zm41.2 1.1l87.6-50.5v-81l73.2-42.4V175.3l-160.8 92.8v185zm139.6-313.2l-84.5-49-74.2 43.1-74.8-43.1-85.3 49.6 159.1 91.6 159.7-92.2zM34.4 384.7V129L256 0l221.6 128.4v255.9L256 512 34.4 384.7z\"\n })));\n}\n\nfunction Preview(props) {\n var link = useCodeSandboxLink();\n var preview = React.useMemo(function () {\n return React.createElement(React.Fragment, null, React.createElement(LoadingOverlay, null), React.createElement(SandpackPreview, {\n showNavigator: false,\n showRefreshButton: false,\n showOpenInCodeSandbox: false,\n customStyle: {\n minHeight: \"unset\",\n height: \"100%\",\n border: 0,\n margin: 0\n }\n }));\n }, [link]);\n return React.createElement(MiniBrowser, _assign({\n url: \"\",\n loadUrl: link,\n transition: \"slide\"\n }, props, {\n children: preview\n }));\n}\n\nfunction LoadingOverlay() {\n var c = useClasser(\"ch-hike\");\n var loadingOverlayState = useLoadingOverlayState();\n return loadingOverlayState === \"visible\" ? React.createElement(\"div\", {\n className: c(\"loading\")\n }, React.createElement(\"div\", {\n className: c(\"loading-cubes\")\n }, React.createElement(\"div\", null), React.createElement(\"div\", null), React.createElement(\"div\", null), React.createElement(\"div\", null))) : null;\n}\n\nfunction StickerColumn(_a) {\n var editorProps = _a.editorProps,\n previewProps = _a.previewProps,\n previewPreset = _a.previewPreset,\n noPreview = _a.noPreview;\n var c = useClasser(\"ch\");\n return React__default.createElement(\"aside\", {\n className: c(\"hike-sticker-column\")\n }, React__default.createElement(\"div\", {\n className: c(\"hike-sticker\")\n }, React__default.createElement(DemoProvider, {\n editorProps: editorProps,\n previewProps: previewProps,\n previewPreset: previewPreset\n }, React__default.createElement(\"div\", {\n className: c(\"hike-editor\")\n }, React__default.createElement(Editor, _assign({}, editorProps))), noPreview || React__default.createElement(\"div\", {\n className: c(\"hike-preview\")\n }, React__default.createElement(Preview, _assign({}, previewProps))))));\n}\n\nfunction FluidLayout(_a) {\n var _b;\n\n var steps = _a.steps,\n _c = _a.noPreview,\n noPreview = _c === void 0 ? false : _c;\n var c = useClasser(\"ch\");\n\n var _d = __read(React__default.useReducer(reducer, initialState), 2),\n state = _d[0],\n dispatch = _d[1];\n\n var focusStepIndex = (_b = state.focusStepIndex) !== null && _b !== void 0 ? _b : state.scrollStepIndex;\n var focusStep = steps[focusStepIndex];\n\n var editorProps = _assign(_assign({}, focusStep.editorProps), {\n contentProps: state.focusEditorStep || focusStep.editorProps.contentProps\n });\n\n var previewProps = focusStep.previewProps,\n previewPreset = focusStep.previewPreset;\n\n var onStepChange = function onStepChange(newIndex) {\n return dispatch({\n type: \"change-step\",\n newIndex: newIndex\n });\n };\n\n return React__default.createElement(HikeProvider, {\n value: {\n layout: \"fluid\",\n hikeState: state,\n dispatch: dispatch\n }\n }, React__default.createElement(\"section\", {\n className: c(\"hike\", \"hike-fluid\")\n }, React__default.createElement(ContentColumn, {\n steps: steps,\n onStepChange: onStepChange\n }), React__default.createElement(StickerColumn, {\n previewProps: previewProps,\n previewPreset: previewPreset,\n editorProps: editorProps,\n noPreview: noPreview\n })));\n}\n\nvar initialState = {\n scrollStepIndex: 0,\n focusStepIndex: null,\n focusEditorStep: null\n};\n\nfunction reducer(state, action) {\n switch (action.type) {\n case \"change-step\":\n return {\n scrollStepIndex: action.newIndex,\n focusStepIndex: null,\n focusEditorStep: null\n };\n\n case \"set-focus\":\n return _assign(_assign({}, state), {\n focusStepIndex: action.stepIndex,\n focusEditorStep: action.editorStep\n });\n\n case \"reset-focus\":\n return _assign(_assign({}, state), {\n focusStepIndex: null,\n focusEditorStep: null\n });\n\n default:\n throw new Error();\n }\n}\n\nfunction FixedLayout(_a) {\n var steps = _a.steps;\n var c = useClasser(\"ch\");\n return React__default.createElement(HikeProvider, {\n value: {\n layout: \"fixed\"\n }\n }, React__default.createElement(\"section\", {\n className: c(\"hike\", \"hike-fixed\")\n }, steps.map(function (step, index) {\n return React__default.createElement(DemoProvider, {\n editorProps: step.editorProps,\n previewProps: step.previewProps,\n previewPreset: step.previewPreset,\n key: index\n }, React__default.createElement(\"div\", {\n className: c(\"hike-step\")\n }, step.content));\n })));\n}\n\nfunction CodeSlot(props) {\n var layout = useHikeContext().layout;\n return layout === \"fixed\" ? React__default.createElement(CodeSlotContent, _assign({}, props)) : null;\n}\n\nfunction CodeSlotContent(_a) {\n var style = _a.style,\n slotProps = __rest(_a, [\"style\"]);\n\n var c = useClasser(\"ch-hike\");\n var stepEditorProps = useEditorProps();\n\n var props = _assign(_assign({}, stepEditorProps), slotProps);\n\n return React__default.createElement(\"div\", {\n className: c(\"step-code\"),\n style: style\n }, React__default.createElement(Editor, _assign({}, props)));\n}\n\nfunction PreviewSlot(props) {\n var layout = useHikeContext().layout;\n return layout === \"fixed\" ? React__default.createElement(PreviewSlotContent, _assign({}, props)) : null;\n}\n\nfunction PreviewSlotContent(_a) {\n var style = _a.style,\n slotProps = __rest(_a, [\"style\"]);\n\n var c = useClasser(\"ch-hike\");\n var stepPreviewProps = usePreviewProps();\n\n var props = _assign(_assign({}, stepPreviewProps), slotProps);\n\n return React__default.createElement(\"div\", {\n className: c(\"step-preview\"),\n style: style\n }, React__default.createElement(Preview, _assign({}, props)));\n}\n\nvar StepHead = function StepHead() {\n return null;\n};\n\nfunction Hike(_a) {\n var classes = _a.classes,\n children = _a.children,\n editorProps = _a.editorProps,\n previewProps = _a.previewProps,\n preset = _a.preset,\n config = _a.config;\n var steps = useStepsFromChildren({\n children: children,\n editorProps: editorProps,\n previewProps: previewProps,\n preset: preset,\n defaultFileName: config === null || config === void 0 ? void 0 : config.defaultFileName\n });\n return React.createElement(HikeWithSteps, {\n steps: steps,\n classes: classes,\n config: config\n });\n}\n\nfunction HikeWithSteps(_a) {\n var classes = _a.classes,\n steps = _a.steps,\n config = _a.config;\n return React.createElement(ClasserProvider, {\n classes: classes\n }, React.createElement(Swap // TODO use config.breakpoint\n , {\n // TODO use config.breakpoint\n match: [[\"(min-width: 920px)\", React.createElement(FluidLayout, {\n steps: steps,\n noPreview: (config === null || config === void 0 ? void 0 : config.noPreview) || false\n })], [\"default\", React.createElement(FixedLayout, {\n steps: steps\n })]]\n }));\n}\n\nfunction useStepsFromChildren(_a) {\n // Assumes a step head like:\n // \n var _b, _c, _d;\n\n var children = _a.children,\n _e = _a.editorProps,\n editorProps = _e === void 0 ? {} : _e,\n _f = _a.previewProps,\n previewProps = _f === void 0 ? {} : _f,\n _g = _a.preset,\n preset = _g === void 0 ? {} : _g,\n _h = _a.defaultFileName,\n defaultFileName = _h === void 0 ? \"App.js\" : _h;\n var kids = React.Children.toArray(children);\n var prevEditorStep = undefined;\n var steps = [];\n\n for (var i = 0; i < kids.length;) {\n var headKid = kids[i];\n var contentKids = [];\n i++;\n\n while (i < kids.length && ((_c = (_b = kids[i]) === null || _b === void 0 ? void 0 : _b.props) === null || _c === void 0 ? void 0 : _c.mdxType) !== \"StepHead\") {\n contentKids.push(kids[i]);\n i++;\n }\n\n var editorStep = mdxToStep(headKid, prevEditorStep, {\n defaultFileName: defaultFileName\n });\n prevEditorStep = editorStep;\n var headProps = (_d = headKid) === null || _d === void 0 ? void 0 : _d.props;\n var stepPreviewProps = headProps === null || headProps === void 0 ? void 0 : headProps.previewProps;\n var stepCodeProps = headProps === null || headProps === void 0 ? void 0 : headProps.codeProps;\n var stepFrameProps = headProps === null || headProps === void 0 ? void 0 : headProps.editorFrameProps;\n steps.push({\n content: React.createElement(React.Fragment, {\n children: contentKids\n }),\n editorProps: {\n contentProps: editorStep,\n codeProps: _assign(_assign({}, editorProps === null || editorProps === void 0 ? void 0 : editorProps.codeProps), stepCodeProps),\n frameProps: _assign(_assign({}, editorProps === null || editorProps === void 0 ? void 0 : editorProps.frameProps), stepFrameProps),\n springConfig: editorProps === null || editorProps === void 0 ? void 0 : editorProps.springConfig\n },\n previewPreset: preset,\n previewProps: _assign(_assign({}, previewProps), stepPreviewProps)\n });\n }\n\n return steps;\n}\n\nfunction Focus(_a) {\n var children = _a.children,\n props = __rest(_a, [\"children\"]);\n\n var hikeContext = useHikeContext();\n return hikeContext.layout === \"fixed\" ? children : React__default.createElement(FocusButton, _assign({\n context: hikeContext,\n children: children\n }, props));\n}\n\nfunction FocusButton(_a) {\n var children = _a.children,\n focus = _a.on,\n file = _a.file,\n context = _a.context;\n var c = useClasser(\"ch-hike\");\n var dispatch = context.dispatch,\n hikeState = context.hikeState;\n\n var _b = __read(useEditorStep(file, focus), 2),\n stepIndex = _b[0],\n newEditorStep = _b[1];\n\n var oldEditorStep = hikeState.focusEditorStep;\n var isFocused = newEditorStep === oldEditorStep;\n return React__default.createElement(\"button\", {\n className: c(\"focus\", isFocused ? \"focus-active\" : \"focus-inactive\"),\n title: \"Show code\",\n onClick: function onClick(e) {\n isFocused ? dispatch({\n type: \"reset-focus\"\n }) : dispatch({\n type: \"set-focus\",\n stepIndex: stepIndex,\n editorStep: newEditorStep\n });\n e.stopPropagation();\n }\n }, children, React__default.createElement(Icon, {\n isFocused: isFocused\n }));\n}\n\nfunction Icon(_a) {\n var isFocused = _a.isFocused;\n var c = useClasser(\"ch-hike\");\n return React__default.createElement(\"svg\", {\n fill: \"none\",\n stroke: \"currentColor\",\n className: c(\"focus-icon\"),\n viewBox: \"0 0 24 24\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React__default.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: isFocused ? \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM13 10H7\" : \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM10 7v3m0 0v3m0-3h3m-3 0H7\"\n }));\n}\n\nfunction useEditorStep(file, focus) {\n // we merge the editor state from the step with the changes\n // requested by the Focus\n var _a = useStepData(),\n stepIndex = _a.stepIndex,\n editorStep = _a.editorStep;\n\n return React__default.useMemo(function () {\n var _a;\n\n var fileName = file || editorStep.northPanel.active;\n var fileIndex = editorStep.files.findIndex(function (f) {\n return f.name === fileName;\n });\n var newFiles = editorStep.files.slice();\n newFiles[fileIndex] = _assign(_assign({}, newFiles[fileIndex]), {\n focus: focus\n });\n\n var newEditorStep = _assign(_assign({}, editorStep), {\n files: newFiles\n });\n\n var isInSouthPanel = (_a = editorStep.southPanel) === null || _a === void 0 ? void 0 : _a.tabs.includes(fileName);\n\n if (isInSouthPanel) {\n newEditorStep.southPanel = _assign(_assign({}, newEditorStep.southPanel), {\n active: fileName\n });\n } else {\n newEditorStep.northPanel = _assign(_assign({}, newEditorStep.northPanel), {\n active: fileName\n });\n }\n\n return [stepIndex, newEditorStep];\n }, [file, focus]);\n}\n\nfunction withFocusHandler(type) {\n if (type === void 0) {\n type = \"a\";\n }\n\n function AnchorWithFocus(props) {\n return React__default.createElement(AnchorOrFocus, _assign({\n type: type\n }, props));\n }\n\n return AnchorWithFocus;\n}\n\nfunction AnchorOrFocus(_a) {\n var _b = _a.type,\n type = _b === void 0 ? \"a\" : _b,\n href = _a.href,\n props = __rest(_a, [\"type\", \"href\"]);\n\n if (!(href === null || href === void 0 ? void 0 : href.startsWith(\"focus://\"))) {\n return React__default.createElement(type, _assign({\n href: href\n }, props));\n }\n\n var _c = __read(decodeURI(href).substr(\"focus://\".length).split(\"#\"), 2),\n firstPart = _c[0],\n secondPart = _c[1];\n\n var hasFile = Boolean(secondPart);\n return hasFile ? React__default.createElement(Focus, _assign({\n on: secondPart,\n file: firstPart\n }, props)) : React__default.createElement(Focus, _assign({\n on: firstPart\n }, props));\n}\n\nexport { AnchorOrFocus, CodeSlot, Focus, Hike, HikeWithSteps, PreviewSlot, StepHead, withFocusHandler };","import React, {HTMLProps} from 'react'\nimport {Alert, AlertIcon, AlertTitle} from \"@chakra-ui/react\";\n\nconst CustomLink: React.FC> = (props) => {\n const href = props.href;\n const isInternalLink = href && (href.startsWith('/') || href.startsWith('#'));\n const classes = 'text-blue-700';\n\n if (isInternalLink) {\n return (\n \n \n Internal links aren't implemented yet!\n \n )\n }\n\n return (\n \n )\n}\n\nexport default CustomLink\n","import React, {useMemo} from 'react'\n\nexport interface ReadingTimeProps {\n readingTime: number;\n}\n\nconst ReadingTime: React.FC = ({readingTime}) => {\n const mappedEmojis = useMemo(() => {\n return Array.from({length: Math.ceil(readingTime / 5)}, (_, index) => index + 1).map(n => 📖)\n }, [readingTime])\n\n return (\n <>\n {mappedEmojis}   {readingTime}min read\n \n )\n}\n\nexport default ReadingTime\n","import Prism from 'prismjs'\nimport React, {HTMLProps} from 'react'\nimport 'prismjs/components/prism-jsx.min'\n\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport default function CodeBlock(props: HTMLProps) {\n const ref = React.useRef(null)\n\n useLayoutEffect(() => {\n ref.current && Prism.highlightAllUnder(ref.current)\n }, [ref])\n\n return
\n}","import React from 'react'\nimport {Hike} from \"@code-hike/scrollycoding\";\nimport {PreviewProps} from \"@code-hike/scrollycoding/dist/preview\";\nimport {CodeProps} from \"@chakra-ui/react\";\n\nexport interface CodeHikeProps {\n  previewProps: PreviewProps;\n  codeProps: CodeProps;\n}\n\nconst classes = {\n  'ch-hike-step-content-unfocused': 'opacity-25 transition-opacity',\n  'ch-hike-step-content': 'border-none transition-opacity',\n  'ch-frame-button': 'bg-gray-300 border-gray-600',\n}\n\nconst preset = {\n  template: 'react' as const,\n}\n\nconst CodeHike: React.FC = ({previewProps, codeProps, children, ...props}) => {\n  const editorProps = {\n    codeProps: {\n      minColumns: 40,\n      ...codeProps\n    },\n    ...previewProps,\n  }\n\n  return (\n    {children}\n  )\n}\n\nexport default CodeHike\n","export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n  if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n      console.warn(new Error().stack);\n    }\n\n    return new Date(NaN);\n  }\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n *   if the first argument is not an instance of Date.\n *   Instead, argument is converted beforehand using `toDate`.\n *\n *   Examples:\n *\n *   | `isValid` argument        | Before v2.0.0 | v2.0.0 onward |\n *   |---------------------------|---------------|---------------|\n *   | `new Date()`              | `true`        | `true`        |\n *   | `new Date('2016-01-01')`  | `true`        | `true`        |\n *   | `new Date('')`            | `false`       | `false`       |\n *   | `new Date(1488370835081)` | `true`        | `true`        |\n *   | `new Date(NaN)`           | `false`       | `false`       |\n *   | `'2016-01-01'`            | `TypeError`   | `false`       |\n *   | `''`                      | `TypeError`   | `false`       |\n *   | `1488370835081`           | `TypeError`   | `true`        |\n *   | `NaN`                     | `TypeError`   | `false`       |\n *\n *   We introduce this change to make *date-fns* consistent with ECMAScript behavior\n *   that try to coerce arguments to the expected type\n *   (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n\n  if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n\n  var date = toDate(dirtyDate);\n  return !isNaN(Number(date));\n}","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n\n  return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // TODO: Remove String()\n\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, dirtyOptions) {\n    var options = dirtyOptions || {};\n    var context = options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n\n      var _width = options.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n    return valuesArray[index];\n  };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n\n      case 2:\n        return number + 'nd';\n\n      case 3:\n        return number + 'rd';\n    }\n  }\n\n  return number + 'th';\n};\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","export default function buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n\n  return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0\n    /* Sunday */\n    ,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n\n  var number = Number(dirtyNumber);\n\n  if (isNaN(number)) {\n    return number;\n  }\n\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n  var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, dirtyOptions);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n\n  return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n  // Year\n  y: function y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function M(date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function d(date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function a(date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n\n      case 'aaa':\n        return dayPeriodEnumValue;\n\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function H(date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function m(date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function s(date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function G(date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function y(date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function Y(date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    } // Ordinal number\n\n\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    } // Padding\n\n\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function R(date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function u(date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function Q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'QQ':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'qq':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function M(date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function L(date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n\n      case 'LL':\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function w(date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function I(date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function d(date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n  // Day of year\n  D: function D(date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function E(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function e(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function c(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function i(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function a(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function b(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function B(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function H(date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function K(date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function k(date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function m(date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n  // Second\n  s: function s(date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    return lightFormatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function X(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function x(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function O(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function z(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function t(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function T(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n\n  return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  var dateTimeFormat;\n\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   format(new Date(2016, 0, 1))\n *\n *   // v2.0.0 onward\n *   format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n *   ```\n *\n * - New format string API for `format` function\n *   which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n *   See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  requiredArgs(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var options = dirtyOptions || {};\n  var locale = options.locale || defaultLocale;\n  var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n\n  var originalDate = toDate(dirtyDate);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong, formatterOptions);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n\n    var formatter = formatters[firstCharacter];\n\n    if (formatter) {\n      if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n\n    return substring;\n  }).join('');\n  return result;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import { mergeRefs, createContext } from '@chakra-ui/react-utils';\nimport { createStylesContext, forwardRef, useMultiStyleConfig, omitThemingProps, useTheme, chakra } from '@chakra-ui/system';\nimport { clampValue, valueToPercent, percentToValue, roundValueToStep, normalizeEventKey, focus, ariaAttr, dataAttr, callAllHandlers, __DEV__, cx, getBox } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport { useCallbackRef, useControllableState, useBoolean, useLatestRef, useId, useUpdateEffect, usePanGesture, useIds, useDimensions } from '@chakra-ui/hooks';\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction getIds(id) {\n  return {\n    root: \"slider-root-\" + id,\n    getThumb: function getThumb(i) {\n      return \"slider-thumb-\" + id + \"-\" + i;\n    },\n    getInput: function getInput(i) {\n      return \"slider-input-\" + id + \"-\" + i;\n    },\n    track: \"slider-track-\" + id,\n    innerTrack: \"slider-filled-track-\" + id,\n    getMarker: function getMarker(i) {\n      return \"slider-marker-\" + id + \"-\" + i;\n    },\n    output: \"slider-output-\" + id\n  };\n}\n\nfunction orient$1(options) {\n  var orientation = options.orientation,\n      vertical = options.vertical,\n      horizontal = options.horizontal;\n  return orientation === \"vertical\" ? vertical : horizontal;\n}\n\nvar zeroRect = {\n  width: 0,\n  height: 0\n};\n\nfunction getStyles(options) {\n  var orientation = options.orientation,\n      thumbPercents = options.thumbPercents,\n      thumbRects = options.thumbRects,\n      isReversed = options.isReversed;\n\n  var getThumbStyle = function getThumbStyle(i) {\n    return _extends({\n      position: \"absolute\",\n      userSelect: \"none\",\n      WebkitUserSelect: \"none\",\n      MozUserSelect: \"none\",\n      msUserSelect: \"none\",\n      touchAction: \"none\"\n    }, orient$1({\n      orientation: orientation,\n      vertical: {\n        bottom: \"calc(\" + thumbPercents[i] + \"% - \" + thumbRects[i].height / 2 + \"px)\"\n      },\n      horizontal: {\n        left: \"calc(\" + thumbPercents[i] + \"% - \" + thumbRects[i].width / 2 + \"px)\"\n      }\n    }));\n  };\n\n  var size = orientation === \"vertical\" ? thumbRects.reduce(function (a, b) {\n    return a.height > b.height ? a : b;\n  }, zeroRect) : thumbRects.reduce(function (a, b) {\n    return a.width > b.width ? a : b;\n  }, zeroRect);\n\n  var rootStyle = _extends({\n    position: \"relative\",\n    touchAction: \"none\",\n    WebkitTapHighlightColor: \"rgba(0,0,0,0)\",\n    userSelect: \"none\",\n    outline: 0\n  }, orient$1({\n    orientation: orientation,\n    vertical: {\n      paddingLeft: size.width / 2,\n      paddingRight: size.width / 2\n    },\n    horizontal: {\n      paddingTop: size.height / 2,\n      paddingBottom: size.height / 2\n    }\n  }));\n\n  var trackStyle = _extends({\n    position: \"absolute\"\n  }, orient$1({\n    orientation: orientation,\n    vertical: {\n      left: \"50%\",\n      transform: \"translateX(-50%)\",\n      height: \"100%\"\n    },\n    horizontal: {\n      top: \"50%\",\n      transform: \"translateY(-50%)\",\n      width: \"100%\"\n    }\n  }));\n\n  var isSingleThumb = thumbPercents.length === 1;\n  var fallback = [0, isReversed ? 100 - thumbPercents[0] : thumbPercents[0]];\n  var range = isSingleThumb ? fallback : thumbPercents;\n  var start = range[0];\n\n  if (!isSingleThumb && isReversed) {\n    start = 100 - start;\n  }\n\n  var percent = Math.abs(range[range.length - 1] - range[0]);\n\n  var innerTrackStyle = _extends({}, trackStyle, orient$1({\n    orientation: orientation,\n    vertical: isReversed ? {\n      height: percent + \"%\",\n      top: start + \"%\"\n    } : {\n      height: percent + \"%\",\n      bottom: start + \"%\"\n    },\n    horizontal: isReversed ? {\n      width: percent + \"%\",\n      right: start + \"%\"\n    } : {\n      width: percent + \"%\",\n      left: start + \"%\"\n    }\n  }));\n\n  return {\n    trackStyle: trackStyle,\n    innerTrackStyle: innerTrackStyle,\n    rootStyle: rootStyle,\n    getThumbStyle: getThumbStyle\n  };\n}\n\nfunction getIsReversed(options) {\n  var isReversed = options.isReversed,\n      direction = options.direction,\n      orientation = options.orientation;\n\n  if (direction === \"ltr\" || orientation === \"vertical\") {\n    return isReversed;\n  } // only flip for horizontal RTL\n  // if isReserved 🔜  otherwise  🔚\n\n\n  return !isReversed;\n}\n\nvar _excluded$3 = [\"min\", \"max\", \"onChange\", \"value\", \"defaultValue\", \"isReversed\", \"direction\", \"orientation\", \"id\", \"isDisabled\", \"isReadOnly\", \"onChangeStart\", \"onChangeEnd\", \"step\", \"getAriaValueText\", \"aria-valuetext\", \"aria-label\", \"aria-labelledby\", \"name\", \"focusThumbOnChange\", \"minStepsBetweenThumbs\"],\n    _excluded2 = [\"index\"],\n    _excluded3 = [\"value\"],\n    _excluded4 = [\"index\"];\n/**\n * React hook that implements an accessible range slider.\n *\n * It is an alternative to ``, and returns\n * prop getters for the component parts\n *\n * @see Docs     https://chakra-ui.com/docs/form/slider\n * @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices-1.1/#slider\n */\n\nfunction useRangeSlider(props) {\n  var _props$min = props.min,\n      min = _props$min === void 0 ? 0 : _props$min,\n      _props$max = props.max,\n      max = _props$max === void 0 ? 100 : _props$max,\n      onChange = props.onChange,\n      valueProp = props.value,\n      defaultValue = props.defaultValue,\n      isReversedProp = props.isReversed,\n      _props$direction = props.direction,\n      direction = _props$direction === void 0 ? \"ltr\" : _props$direction,\n      _props$orientation = props.orientation,\n      orientation = _props$orientation === void 0 ? \"horizontal\" : _props$orientation,\n      idProp = props.id,\n      isDisabled = props.isDisabled,\n      isReadOnly = props.isReadOnly,\n      onChangeStartProp = props.onChangeStart,\n      onChangeEndProp = props.onChangeEnd,\n      _props$step = props.step,\n      step = _props$step === void 0 ? 1 : _props$step,\n      getAriaValueTextProp = props.getAriaValueText,\n      ariaValueText = props[\"aria-valuetext\"],\n      ariaLabel = props[\"aria-label\"],\n      ariaLabelledBy = props[\"aria-labelledby\"],\n      name = props.name,\n      _props$focusThumbOnCh = props.focusThumbOnChange,\n      focusThumbOnChange = _props$focusThumbOnCh === void 0 ? true : _props$focusThumbOnCh,\n      _props$minStepsBetwee = props.minStepsBetweenThumbs,\n      minStepsBetweenThumbs = _props$minStepsBetwee === void 0 ? 0 : _props$minStepsBetwee,\n      htmlProps = _objectWithoutPropertiesLoose(props, _excluded$3);\n\n  var onChangeStart = useCallbackRef(onChangeStartProp);\n  var onChangeEnd = useCallbackRef(onChangeEndProp);\n  var getAriaValueText = useCallbackRef(getAriaValueTextProp);\n  var isReversed = getIsReversed({\n    isReversed: isReversedProp,\n    direction: direction,\n    orientation: orientation\n  });\n\n  var _useControllableState = useControllableState({\n    value: valueProp,\n    defaultValue: defaultValue != null ? defaultValue : [25, 75],\n    onChange: onChange\n  }),\n      valueState = _useControllableState[0],\n      setValue = _useControllableState[1];\n\n  if (!Array.isArray(valueState)) {\n    throw new TypeError(\"[range-slider] You passed an invalid value for `value` or `defaultValue`, expected `Array` but got `\" + typeof valueState + \"`\");\n  }\n\n  var _useBoolean = useBoolean(),\n      isDragging = _useBoolean[0],\n      setDragging = _useBoolean[1];\n\n  var _useBoolean2 = useBoolean(),\n      isFocused = _useBoolean2[0],\n      setFocused = _useBoolean2[1];\n\n  var _useState = useState(-1),\n      activeIndex = _useState[0],\n      setActiveIndex = _useState[1];\n\n  var eventSourceRef = useRef(null);\n  var isInteractive = !(isDisabled || isReadOnly);\n  var initialValue = useRef(valueState);\n  var value = valueState.map(function (val) {\n    return clampValue(val, min, max);\n  });\n  var valueRef = useLatestRef(value);\n  var spacing = minStepsBetweenThumbs * step;\n  var valueBounds = getValueBounds(value, min, max, spacing);\n  var reversedValue = value.map(function (val) {\n    return max - val + min;\n  });\n  var thumbValues = isReversed ? reversedValue : value;\n  var thumbPercents = thumbValues.map(function (val) {\n    return valueToPercent(val, min, max);\n  });\n  var isVertical = orientation === \"vertical\";\n\n  var _useState2 = useState(Array.from({\n    length: value.length\n  }).map(function () {\n    return {\n      width: 0,\n      height: 0\n    };\n  })),\n      thumbRects = _useState2[0],\n      setThumbRects = _useState2[1];\n\n  useEffect(function () {\n    var _rootRef$current;\n\n    if (!rootRef.current) return;\n    var thumbs = Array.from((_rootRef$current = rootRef.current) == null ? void 0 : _rootRef$current.querySelectorAll(\"[role=slider]\"));\n    var rects = thumbs.map(function (el) {\n      return {\n        width: el.offsetWidth,\n        height: el.offsetHeight\n      };\n    });\n    if (rects.length) setThumbRects(rects);\n  }, []);\n  /**\n   * Let's keep a reference to the slider track and thumb\n   */\n\n  var trackRef = useRef(null);\n  var rootRef = useRef(null);\n  var uuid = useId(idProp);\n  var ids = getIds(uuid);\n  var getValueFromPointer = useCallback(function (event) {\n    var _event$touches$, _event$touches;\n\n    if (!trackRef.current) return;\n    eventSourceRef.current = \"pointer\";\n    var rect = trackRef.current.getBoundingClientRect();\n\n    var _ref = (_event$touches$ = (_event$touches = event.touches) == null ? void 0 : _event$touches[0]) != null ? _event$touches$ : event,\n        clientX = _ref.clientX,\n        clientY = _ref.clientY;\n\n    var diff = isVertical ? rect.bottom - clientY : clientX - rect.left;\n    var length = isVertical ? rect.height : rect.width;\n    var percent = diff / length;\n    if (isReversed) percent = 1 - percent;\n    return percentToValue(percent, min, max);\n  }, [isVertical, isReversed, max, min]);\n  var tenSteps = (max - min) / 10;\n  var oneStep = step || (max - min) / 100;\n  var actions = useMemo(function () {\n    return {\n      setValueAtIndex: function setValueAtIndex(index, val) {\n        if (!isInteractive) return;\n        var bounds = valueBounds[index];\n        val = parseFloat(roundValueToStep(val, bounds.min, oneStep));\n        val = clampValue(val, bounds.min, bounds.max);\n        var next = [].concat(value);\n        next[index] = val;\n        setValue(next);\n      },\n      setActiveIndex: setActiveIndex,\n      stepUp: function stepUp(index, step) {\n        if (step === void 0) {\n          step = oneStep;\n        }\n\n        var valueAtIndex = value[index];\n        var next = isReversed ? valueAtIndex - step : valueAtIndex + step;\n        actions.setValueAtIndex(index, next);\n      },\n      stepDown: function stepDown(index, step) {\n        if (step === void 0) {\n          step = oneStep;\n        }\n\n        var valueAtIndex = value[index];\n        var next = isReversed ? valueAtIndex + step : valueAtIndex - step;\n        actions.setValueAtIndex(index, next);\n      },\n      reset: function reset() {\n        return setValue(initialValue.current);\n      }\n    };\n  }, [oneStep, value, isReversed, setValue, isInteractive, valueBounds]);\n  /**\n   * Keyboard interaction to ensure users can operate\n   * the slider using only their keyboard.\n   */\n\n  var onKeyDown = useCallback(function (event) {\n    var eventKey = normalizeEventKey(event);\n    var keyMap = {\n      ArrowRight: function ArrowRight() {\n        return actions.stepUp(activeIndex);\n      },\n      ArrowUp: function ArrowUp() {\n        return actions.stepUp(activeIndex);\n      },\n      ArrowLeft: function ArrowLeft() {\n        return actions.stepDown(activeIndex);\n      },\n      ArrowDown: function ArrowDown() {\n        return actions.stepDown(activeIndex);\n      },\n      PageUp: function PageUp() {\n        return actions.stepUp(activeIndex, tenSteps);\n      },\n      PageDown: function PageDown() {\n        return actions.stepDown(activeIndex, tenSteps);\n      },\n      Home: function Home() {\n        var value = valueBounds[activeIndex].min;\n        actions.setValueAtIndex(activeIndex, value);\n      },\n      End: function End() {\n        var value = valueBounds[activeIndex].max;\n        actions.setValueAtIndex(activeIndex, value);\n      }\n    };\n    var action = keyMap[eventKey];\n\n    if (action) {\n      event.preventDefault();\n      event.stopPropagation();\n      action(event);\n      eventSourceRef.current = \"keyboard\";\n    }\n  }, [actions, activeIndex, tenSteps, valueBounds]);\n  /**\n   * Compute styles for all component parts.\n   */\n\n  var _useMemo = useMemo(function () {\n    return getStyles({\n      isReversed: isReversed,\n      orientation: orientation,\n      thumbRects: thumbRects,\n      thumbPercents: thumbPercents\n    });\n  }, [isReversed, orientation, thumbPercents, thumbRects]),\n      getThumbStyle = _useMemo.getThumbStyle,\n      rootStyle = _useMemo.rootStyle,\n      trackStyle = _useMemo.trackStyle,\n      innerTrackStyle = _useMemo.innerTrackStyle;\n\n  var focusThumb = useCallback(function (index) {\n    var idx = index != null ? index : activeIndex;\n\n    if (idx !== -1 && focusThumbOnChange) {\n      var _rootRef$current2;\n\n      var id = ids.getThumb(idx);\n      var thumb = (_rootRef$current2 = rootRef.current) == null ? void 0 : _rootRef$current2.ownerDocument.getElementById(id);\n\n      if (thumb) {\n        setTimeout(function () {\n          return focus(thumb);\n        });\n      }\n    }\n  }, [focusThumbOnChange, activeIndex, ids]);\n  useUpdateEffect(function () {\n    if (eventSourceRef.current === \"keyboard\") {\n      onChangeEnd == null ? void 0 : onChangeEnd(valueRef.current);\n    }\n  }, [value, onChangeEnd]);\n\n  var _onPanSessionStart = function onPanSessionStart(event) {\n    var pointValue = getValueFromPointer(event) || 0;\n    var distances = value.map(function (val) {\n      return Math.abs(val - pointValue);\n    });\n    var closest = Math.min.apply(Math, distances);\n    var index = distances.indexOf(closest); // check if the clicked thumb is stacked by checking if there are multiple\n    // thumbs at the same distance\n\n    var thumbsAtPosition = distances.filter(function (distance) {\n      return distance === closest;\n    });\n    var isThumbStacked = thumbsAtPosition.length > 1; // when two thumbs are stacked and the user clicks at a point larger than\n    // their values, pick the last thumb with the greatest index\n\n    if (isThumbStacked && pointValue > value[index]) {\n      index = index + thumbsAtPosition.length - 1;\n    }\n\n    setActiveIndex(index);\n    actions.setValueAtIndex(index, pointValue);\n    focusThumb(index);\n  };\n\n  var _onPan = function onPan(event) {\n    if (activeIndex == -1) return;\n    var pointValue = getValueFromPointer(event) || 0;\n    setActiveIndex(activeIndex);\n    actions.setValueAtIndex(activeIndex, pointValue);\n    focusThumb(activeIndex);\n  };\n\n  usePanGesture(rootRef, {\n    onPanSessionStart: function onPanSessionStart(event) {\n      if (!isInteractive) return;\n      setDragging.on();\n\n      _onPanSessionStart(event);\n\n      onChangeStart == null ? void 0 : onChangeStart(valueRef.current);\n    },\n    onPanSessionEnd: function onPanSessionEnd() {\n      if (!isInteractive) return;\n      setDragging.off();\n      onChangeEnd == null ? void 0 : onChangeEnd(valueRef.current);\n    },\n    onPan: function onPan(event) {\n      if (!isInteractive) return;\n\n      _onPan(event);\n    }\n  });\n  var getRootProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    return _extends({}, props, htmlProps, {\n      id: ids.root,\n      ref: mergeRefs(ref, rootRef),\n      tabIndex: -1,\n      \"aria-disabled\": ariaAttr(isDisabled),\n      \"data-focused\": dataAttr(isFocused),\n      style: _extends({}, props.style, rootStyle)\n    });\n  }, [htmlProps, isDisabled, isFocused, rootStyle, ids]);\n  var getTrackProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    return _extends({}, props, {\n      ref: mergeRefs(ref, trackRef),\n      id: ids.track,\n      \"data-disabled\": dataAttr(isDisabled),\n      style: _extends({}, props.style, trackStyle)\n    });\n  }, [isDisabled, trackStyle, ids]);\n  var getInnerTrackProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    return _extends({}, props, {\n      ref: ref,\n      id: ids.innerTrack,\n      style: _extends({}, props.style, innerTrackStyle)\n    });\n  }, [innerTrackStyle, ids]);\n  var getThumbProps = useCallback(function (props, ref) {\n    var _getAriaValueText;\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    var index = props.index,\n        rest = _objectWithoutPropertiesLoose(props, _excluded2);\n\n    var _value = value[index];\n\n    if (_value == null) {\n      throw new TypeError(\"[range-slider > thumb] Cannot find value at index `\" + index + \"`. The `value` or `defaultValue` length is : \" + value.length);\n    }\n\n    var bounds = valueBounds[index];\n    return _extends({}, rest, {\n      ref: ref,\n      role: \"slider\",\n      tabIndex: isInteractive ? 0 : undefined,\n      id: ids.getThumb(index),\n      \"data-active\": dataAttr(isDragging && activeIndex === index),\n      \"aria-valuetext\": (_getAriaValueText = getAriaValueText == null ? void 0 : getAriaValueText(_value)) != null ? _getAriaValueText : ariaValueText == null ? void 0 : ariaValueText[index],\n      \"aria-valuemin\": bounds.min,\n      \"aria-valuemax\": bounds.max,\n      \"aria-valuenow\": _value,\n      \"aria-orientation\": orientation,\n      \"aria-disabled\": ariaAttr(isDisabled),\n      \"aria-readonly\": ariaAttr(isReadOnly),\n      \"aria-label\": ariaLabel == null ? void 0 : ariaLabel[index],\n      \"aria-labelledby\": ariaLabel != null && ariaLabel[index] ? undefined : ariaLabelledBy == null ? void 0 : ariaLabelledBy[index],\n      style: _extends({}, props.style, getThumbStyle(index)),\n      onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown),\n      onFocus: callAllHandlers(props.onFocus, function () {\n        setFocused.on();\n        setActiveIndex(index);\n      }),\n      onBlur: callAllHandlers(props.onBlur, function () {\n        setFocused.off();\n        setActiveIndex(-1);\n      })\n    });\n  }, [ids, value, valueBounds, isInteractive, isDragging, activeIndex, getAriaValueText, ariaValueText, orientation, isDisabled, isReadOnly, ariaLabel, ariaLabelledBy, getThumbStyle, onKeyDown, setFocused]);\n  var getOutputProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    return _extends({}, props, {\n      ref: ref,\n      id: ids.output,\n      htmlFor: value.map(function (v, i) {\n        return ids.getThumb(i);\n      }).join(\" \"),\n      \"aria-live\": \"off\"\n    });\n  }, [ids, value]);\n  var getMarkerProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    var _props = props,\n        v = _props.value,\n        rest = _objectWithoutPropertiesLoose(_props, _excluded3);\n\n    var isInRange = !(v < min || v > max);\n    var isHighlighted = v >= value[0] && v <= value[value.length - 1];\n    var percent = valueToPercent(v, min, max);\n    percent = isReversed ? 100 - percent : percent;\n\n    var markerStyle = _extends({\n      position: \"absolute\",\n      pointerEvents: \"none\"\n    }, orient$1({\n      orientation: orientation,\n      vertical: {\n        bottom: percent + \"%\"\n      },\n      horizontal: {\n        left: percent + \"%\"\n      }\n    }));\n\n    return _extends({}, rest, {\n      ref: ref,\n      id: ids.getMarker(props.value),\n      role: \"presentation\",\n      \"aria-hidden\": true,\n      \"data-disabled\": dataAttr(isDisabled),\n      \"data-invalid\": dataAttr(!isInRange),\n      \"data-highlighted\": dataAttr(isHighlighted),\n      style: _extends({}, props.style, markerStyle)\n    });\n  }, [isDisabled, isReversed, max, min, orientation, value, ids]);\n  var getInputProps = useCallback(function (props, ref) {\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    var index = props.index,\n        rest = _objectWithoutPropertiesLoose(props, _excluded4);\n\n    return _extends({}, rest, {\n      ref: ref,\n      id: ids.getInput(index),\n      type: \"hidden\",\n      value: value[index],\n      name: Array.isArray(name) ? name[index] : name + \"-\" + index\n    });\n  }, [name, value, ids]);\n  return {\n    state: {\n      value: value,\n      isFocused: isFocused,\n      isDragging: isDragging,\n      getThumbPercent: function getThumbPercent(i) {\n        return thumbPercents[i];\n      },\n      getThumbMinValue: function getThumbMinValue(i) {\n        return valueBounds[i].min;\n      },\n      getThumbMaxValue: function getThumbMaxValue(i) {\n        return valueBounds[i].max;\n      }\n    },\n    actions: actions,\n    getRootProps: getRootProps,\n    getTrackProps: getTrackProps,\n    getInnerTrackProps: getInnerTrackProps,\n    getThumbProps: getThumbProps,\n    getMarkerProps: getMarkerProps,\n    getInputProps: getInputProps,\n    getOutputProps: getOutputProps\n  };\n}\n\nvar getValueBounds = function getValueBounds(arr, min, max, spacing) {\n  return arr.map(function (v, i) {\n    var _min = i === 0 ? min : arr[i - 1] + spacing;\n\n    var _max = i === arr.length - 1 ? max : arr[i + 1] - spacing;\n\n    return {\n      min: _min,\n      max: _max\n    };\n  });\n};\n\nvar _excluded$2 = [\"getRootProps\"];\n\nvar _createContext$1 = createContext({\n  name: \"SliderContext\",\n  errorMessage: \"useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within \"\n}),\n    RangeSliderProvider = _createContext$1[0],\n    useRangeSliderContext = _createContext$1[1];\n\nvar _createStylesContext$1 = createStylesContext(\"RangeSlider\"),\n    StylesProvider$1 = _createStylesContext$1[0],\n    useStyles$1 = _createStylesContext$1[1];\n\nvar useRangeSliderStyles = useStyles$1;\n/**\n * The Slider is used to allow users to make selections from a range of values.\n * It provides context and functionality for all slider components\n *\n * @see Docs     https://chakra-ui.com/docs/form/slider\n * @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices/#slider\n */\n\nvar RangeSlider = /*#__PURE__*/forwardRef(function (props, ref) {\n  var styles = useMultiStyleConfig(\"Slider\", props);\n  var ownProps = omitThemingProps(props);\n\n  var _useTheme = useTheme(),\n      direction = _useTheme.direction;\n\n  ownProps.direction = direction;\n\n  var _useRangeSlider = useRangeSlider(ownProps),\n      getRootProps = _useRangeSlider.getRootProps,\n      context = _objectWithoutPropertiesLoose(_useRangeSlider, _excluded$2);\n\n  var ctx = React.useMemo(function () {\n    return _extends({}, context, {\n      name: props.name\n    });\n  }, [context, props.name]);\n  return /*#__PURE__*/React.createElement(RangeSliderProvider, {\n    value: ctx\n  }, /*#__PURE__*/React.createElement(StylesProvider$1, {\n    value: styles\n  }, /*#__PURE__*/React.createElement(chakra.div, _extends({}, getRootProps({}, ref), {\n    className: \"chakra-slider\",\n    __css: styles.container\n  }), props.children)));\n});\nRangeSlider.defaultProps = {\n  orientation: \"horizontal\"\n};\n\nif (__DEV__) {\n  RangeSlider.displayName = \"RangeSlider\";\n}\n/**\n * Slider component that acts as the handle used to select predefined\n * values by dragging its handle along the track\n */\n\n\nvar RangeSliderThumb = /*#__PURE__*/forwardRef(function (props, ref) {\n  var _useRangeSliderContex = useRangeSliderContext(),\n      getThumbProps = _useRangeSliderContex.getThumbProps,\n      getInputProps = _useRangeSliderContex.getInputProps,\n      name = _useRangeSliderContex.name;\n\n  var styles = useStyles$1();\n  var thumbProps = getThumbProps(props, ref);\n  return /*#__PURE__*/React.createElement(chakra.div, _extends({}, thumbProps, {\n    className: cx(\"chakra-slider__thumb\", props.className),\n    __css: styles.thumb\n  }), thumbProps.children, name && /*#__PURE__*/React.createElement(\"input\", getInputProps({\n    index: props.index\n  })));\n});\n\nif (__DEV__) {\n  RangeSliderThumb.displayName = \"RangeSliderThumb\";\n}\n\nvar RangeSliderTrack = /*#__PURE__*/forwardRef(function (props, ref) {\n  var _useRangeSliderContex2 = useRangeSliderContext(),\n      getTrackProps = _useRangeSliderContex2.getTrackProps;\n\n  var styles = useStyles$1();\n  var trackProps = getTrackProps(props, ref);\n  return /*#__PURE__*/React.createElement(chakra.div, _extends({}, trackProps, {\n    className: cx(\"chakra-slider__track\", props.className),\n    __css: styles.track,\n    \"data-testid\": \"chakra-range-slider-track\"\n  }));\n});\n\nif (__DEV__) {\n  RangeSliderTrack.displayName = \"RangeSliderTrack\";\n}\n\nvar RangeSliderFilledTrack = /*#__PURE__*/forwardRef(function (props, ref) {\n  var _useRangeSliderContex3 = useRangeSliderContext(),\n      getInnerTrackProps = _useRangeSliderContex3.getInnerTrackProps;\n\n  var styles = useStyles$1();\n  var trackProps = getInnerTrackProps(props, ref);\n  return /*#__PURE__*/React.createElement(chakra.div, _extends({}, trackProps, {\n    className: \"chakra-slider__filled-track\",\n    __css: styles.filledTrack\n  }));\n});\n\nif (__DEV__) {\n  RangeSliderFilledTrack.displayName = \"RangeSliderFilledTrack\";\n}\n/**\n * SliderMark is used to provide names for specific Slider\n * values by defining labels or markers along the track.\n *\n * @see Docs https://chakra-ui.com/slider\n */\n\n\nvar RangeSliderMark = /*#__PURE__*/forwardRef(function (props, ref) {\n  var _useRangeSliderContex4 = useRangeSliderContext(),\n      getMarkerProps = _useRangeSliderContex4.getMarkerProps;\n\n  var markProps = getMarkerProps(props, ref);\n  return /*#__PURE__*/React.createElement(chakra.div, _extends({}, markProps, {\n    className: cx(\"chakra-slider__marker\", props.className)\n  }));\n});\n\nif (__DEV__) {\n  RangeSliderMark.displayName = \"RangeSliderMark\";\n}\n\nvar _excluded$1 = [\"min\", \"max\", \"onChange\", \"value\", \"defaultValue\", \"isReversed\", \"direction\", \"orientation\", \"id\", \"isDisabled\", \"isReadOnly\", \"onChangeStart\", \"onChangeEnd\", \"step\", \"getAriaValueText\", \"aria-valuetext\", \"aria-label\", \"aria-labelledby\", \"name\", \"focusThumbOnChange\"];\n/**\n * React hook that implements an accessible range slider.\n *\n * It is an alternative to ``, and returns\n * prop getters for the component parts\n *\n * @see Docs     https://chakra-ui.com/docs/form/slider\n * @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices-1.1/#slider\n */\n\nfunction useSlider(props) {\n  var _getAriaValueText;\n\n  var _props$min = props.min,\n      min = _props$min === void 0 ? 0 : _props$min,\n      _props$max = props.max,\n      max = _props$max === void 0 ? 100 : _props$max,\n      onChange = props.onChange,\n      valueProp = props.value,\n      defaultValue = props.defaultValue,\n      isReversedProp = props.isReversed,\n      _props$direction = props.direction,\n      direction = _props$direction === void 0 ? \"ltr\" : _props$direction,\n      _props$orientation = props.orientation,\n      orientation = _props$orientation === void 0 ? \"horizontal\" : _props$orientation,\n      idProp = props.id,\n      isDisabled = props.isDisabled,\n      isReadOnly = props.isReadOnly,\n      onChangeStartProp = props.onChangeStart,\n      onChangeEndProp = props.onChangeEnd,\n      _props$step = props.step,\n      step = _props$step === void 0 ? 1 : _props$step,\n      getAriaValueTextProp = props.getAriaValueText,\n      ariaValueText = props[\"aria-valuetext\"],\n      ariaLabel = props[\"aria-label\"],\n      ariaLabelledBy = props[\"aria-labelledby\"],\n      name = props.name,\n      _props$focusThumbOnCh = props.focusThumbOnChange,\n      focusThumbOnChange = _props$focusThumbOnCh === void 0 ? true : _props$focusThumbOnCh,\n      htmlProps = _objectWithoutPropertiesLoose(props, _excluded$1);\n\n  var onChangeStart = useCallbackRef(onChangeStartProp);\n  var onChangeEnd = useCallbackRef(onChangeEndProp);\n  var getAriaValueText = useCallbackRef(getAriaValueTextProp);\n  var isReversed = getIsReversed({\n    isReversed: isReversedProp,\n    direction: direction,\n    orientation: orientation\n  });\n  /**\n   * Enable the slider handle controlled and uncontrolled scenarios\n   */\n\n  var _useControllableState = useControllableState({\n    value: valueProp,\n    defaultValue: defaultValue != null ? defaultValue : getDefaultValue(min, max),\n    onChange: onChange\n  }),\n      computedValue = _useControllableState[0],\n      setValue = _useControllableState[1];\n\n  var _useBoolean = useBoolean(),\n      isDragging = _useBoolean[0],\n      setDragging = _useBoolean[1];\n\n  var _useBoolean2 = useBoolean(),\n      isFocused = _useBoolean2[0],\n      setFocused = _useBoolean2[1];\n\n  var eventSourceRef = useRef(null);\n  var isInteractive = !(isDisabled || isReadOnly);\n  /**\n   * Constrain the value because it can't be less than min\n   * or greater than max\n   */\n\n  var value = clampValue(computedValue, min, max);\n  var valueRef = useLatestRef(value);\n  var prevRef = useRef(valueRef.current);\n  var reversedValue = max - value + min;\n  var trackValue = isReversed ? reversedValue : value;\n  var thumbPercent = valueToPercent(trackValue, min, max);\n  var isVertical = orientation === \"vertical\";\n  /**\n   * Let's keep a reference to the slider track and thumb\n   */\n\n  var trackRef = useRef(null);\n  var thumbRef = useRef(null);\n  var rootRef = useRef(null);\n  /**\n   * Generate unique ids for component parts\n   */\n\n  var _useIds = useIds(idProp, \"slider-thumb\", \"slider-track\"),\n      thumbId = _useIds[0],\n      trackId = _useIds[1];\n  /**\n   * Get relative value of slider from the event by tracking\n   * how far you clicked within the track to determine the value\n   *\n   * @todo - Refactor this later on to use info from pan session\n   */\n\n\n  var getValueFromPointer = useCallback(function (event) {\n    var _event$touches$, _event$touches;\n\n    if (!trackRef.current) return;\n    eventSourceRef.current = \"pointer\";\n    var trackRect = getBox(trackRef.current).borderBox;\n\n    var _ref = (_event$touches$ = (_event$touches = event.touches) == null ? void 0 : _event$touches[0]) != null ? _event$touches$ : event,\n        clientX = _ref.clientX,\n        clientY = _ref.clientY;\n\n    var diff = isVertical ? trackRect.bottom - clientY : clientX - trackRect.left;\n    var length = isVertical ? trackRect.height : trackRect.width;\n    var percent = diff / length;\n\n    if (isReversed) {\n      percent = 1 - percent;\n    }\n\n    var nextValue = percentToValue(percent, min, max);\n\n    if (step) {\n      nextValue = parseFloat(roundValueToStep(nextValue, min, step));\n    }\n\n    nextValue = clampValue(nextValue, min, max);\n    return nextValue;\n  }, [isVertical, isReversed, max, min, step]);\n  var tenSteps = (max - min) / 10;\n  var oneStep = step || (max - min) / 100;\n  var constrain = useCallback(function (value) {\n    if (!isInteractive) return;\n    value = parseFloat(roundValueToStep(value, min, oneStep));\n    value = clampValue(value, min, max);\n    setValue(value);\n  }, [oneStep, max, min, setValue, isInteractive]);\n  var actions = useMemo(function () {\n    return {\n      stepUp: function stepUp(step) {\n        if (step === void 0) {\n          step = oneStep;\n        }\n\n        var next = isReversed ? value - step : value + step;\n        constrain(next);\n      },\n      stepDown: function stepDown(step) {\n        if (step === void 0) {\n          step = oneStep;\n        }\n\n        var next = isReversed ? value + step : value - step;\n        constrain(next);\n      },\n      reset: function reset() {\n        return constrain(defaultValue || 0);\n      },\n      stepTo: function stepTo(value) {\n        return constrain(value);\n      }\n    };\n  }, [constrain, isReversed, value, oneStep, defaultValue]);\n  /**\n   * Keyboard interaction to ensure users can operate\n   * the slider using only their keyboard.\n   */\n\n  var onKeyDown = useCallback(function (event) {\n    var eventKey = normalizeEventKey(event);\n    var keyMap = {\n      ArrowRight: function ArrowRight() {\n        return actions.stepUp();\n      },\n      ArrowUp: function ArrowUp() {\n        return actions.stepUp();\n      },\n      ArrowLeft: function ArrowLeft() {\n        return actions.stepDown();\n      },\n      ArrowDown: function ArrowDown() {\n        return actions.stepDown();\n      },\n      PageUp: function PageUp() {\n        return actions.stepUp(tenSteps);\n      },\n      PageDown: function PageDown() {\n        return actions.stepDown(tenSteps);\n      },\n      Home: function Home() {\n        return constrain(min);\n      },\n      End: function End() {\n        return constrain(max);\n      }\n    };\n    var action = keyMap[eventKey];\n\n    if (action) {\n      event.preventDefault();\n      event.stopPropagation();\n      action(event);\n      eventSourceRef.current = \"keyboard\";\n    }\n  }, [actions, constrain, max, min, tenSteps]);\n  /**\n   * ARIA (Optional): To define a human-readable representation of the value,\n   * we allow users pass aria-valuetext.\n   */\n\n  var valueText = (_getAriaValueText = getAriaValueText == null ? void 0 : getAriaValueText(value)) != null ? _getAriaValueText : ariaValueText;\n  /**\n   * Measure the dimensions of the thumb, so\n   * we can center it within the track properly\n   */\n\n  var thumbBoxModel = useDimensions(thumbRef);\n  /**\n   * Compute styles for all component parts.\n   */\n\n  var _useMemo = useMemo(function () {\n    var _thumbBoxModel$border;\n\n    var thumbRect = (_thumbBoxModel$border = thumbBoxModel == null ? void 0 : thumbBoxModel.borderBox) != null ? _thumbBoxModel$border : {\n      width: 0,\n      height: 0\n    };\n    return getStyles({\n      isReversed: isReversed,\n      orientation: orientation,\n      thumbRects: [thumbRect],\n      thumbPercents: [thumbPercent]\n    });\n  }, [isReversed, orientation, thumbBoxModel == null ? void 0 : thumbBoxModel.borderBox, thumbPercent]),\n      getThumbStyle = _useMemo.getThumbStyle,\n      rootStyle = _useMemo.rootStyle,\n      trackStyle = _useMemo.trackStyle,\n      innerTrackStyle = _useMemo.innerTrackStyle;\n\n  var focusThumb = useCallback(function () {\n    if (thumbRef.current && focusThumbOnChange) {\n      setTimeout(function () {\n        return focus(thumbRef.current);\n      });\n    }\n  }, [focusThumbOnChange]);\n  useUpdateEffect(function () {\n    focusThumb();\n\n    if (eventSourceRef.current === \"keyboard\") {\n      onChangeEnd == null ? void 0 : onChangeEnd(valueRef.current);\n    }\n  }, [value, onChangeEnd]);\n\n  var setValueFromPointer = function setValueFromPointer(event) {\n    var nextValue = getValueFromPointer(event);\n\n    if (nextValue != null && nextValue !== valueRef.current) {\n      setValue(nextValue);\n    }\n  };\n\n  usePanGesture(rootRef, {\n    onPanSessionStart: function onPanSessionStart(event) {\n      if (!isInteractive) return;\n      setDragging.on();\n      focusThumb();\n      setValueFromPointer(event);\n      onChangeStart == null ? void 0 : onChangeStart(valueRef.current);\n    },\n    onPanSessionEnd: function onPanSessionEnd() {\n      if (!isInteractive) return;\n      setDragging.off();\n      onChangeEnd == null ? void 0 : onChangeEnd(valueRef.current);\n      prevRef.current = valueRef.current;\n    },\n    onPan: function onPan(event) {\n      if (!isInteractive) return;\n      setValueFromPointer(event);\n    }\n  });\n  var getRootProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    return _extends({}, props, htmlProps, {\n      ref: mergeRefs(ref, rootRef),\n      tabIndex: -1,\n      \"aria-disabled\": ariaAttr(isDisabled),\n      \"data-focused\": dataAttr(isFocused),\n      style: _extends({}, props.style, rootStyle)\n    });\n  }, [htmlProps, isDisabled, isFocused, rootStyle]);\n  var getTrackProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    return _extends({}, props, {\n      ref: mergeRefs(ref, trackRef),\n      id: trackId,\n      \"data-disabled\": dataAttr(isDisabled),\n      style: _extends({}, props.style, trackStyle)\n    });\n  }, [isDisabled, trackId, trackStyle]);\n  var getInnerTrackProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    return _extends({}, props, {\n      ref: ref,\n      style: _extends({}, props.style, innerTrackStyle)\n    });\n  }, [innerTrackStyle]);\n  var getThumbProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    return _extends({}, props, {\n      ref: mergeRefs(ref, thumbRef),\n      role: \"slider\",\n      tabIndex: isInteractive ? 0 : undefined,\n      id: thumbId,\n      \"data-active\": dataAttr(isDragging),\n      \"aria-valuetext\": valueText,\n      \"aria-valuemin\": min,\n      \"aria-valuemax\": max,\n      \"aria-valuenow\": value,\n      \"aria-orientation\": orientation,\n      \"aria-disabled\": ariaAttr(isDisabled),\n      \"aria-readonly\": ariaAttr(isReadOnly),\n      \"aria-label\": ariaLabel,\n      \"aria-labelledby\": ariaLabel ? undefined : ariaLabelledBy,\n      style: _extends({}, props.style, getThumbStyle(0)),\n      onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown),\n      onFocus: callAllHandlers(props.onFocus, setFocused.on),\n      onBlur: callAllHandlers(props.onBlur, setFocused.off)\n    });\n  }, [isInteractive, thumbId, isDragging, valueText, min, max, value, orientation, isDisabled, isReadOnly, ariaLabel, ariaLabelledBy, getThumbStyle, onKeyDown, setFocused.on, setFocused.off]);\n  var getMarkerProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    var isInRange = !(props.value < min || props.value > max);\n    var isHighlighted = value >= props.value;\n    var markerPercent = valueToPercent(props.value, min, max);\n\n    var markerStyle = _extends({\n      position: \"absolute\",\n      pointerEvents: \"none\"\n    }, orient({\n      orientation: orientation,\n      vertical: {\n        bottom: isReversed ? 100 - markerPercent + \"%\" : markerPercent + \"%\"\n      },\n      horizontal: {\n        left: isReversed ? 100 - markerPercent + \"%\" : markerPercent + \"%\"\n      }\n    }));\n\n    return _extends({}, props, {\n      ref: ref,\n      role: \"presentation\",\n      \"aria-hidden\": true,\n      \"data-disabled\": dataAttr(isDisabled),\n      \"data-invalid\": dataAttr(!isInRange),\n      \"data-highlighted\": dataAttr(isHighlighted),\n      style: _extends({}, props.style, markerStyle)\n    });\n  }, [isDisabled, isReversed, max, min, orientation, value]);\n  var getInputProps = useCallback(function (props, ref) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    if (ref === void 0) {\n      ref = null;\n    }\n\n    return _extends({}, props, {\n      ref: ref,\n      type: \"hidden\",\n      value: value,\n      name: name\n    });\n  }, [name, value]);\n  return {\n    state: {\n      value: value,\n      isFocused: isFocused,\n      isDragging: isDragging\n    },\n    actions: actions,\n    getRootProps: getRootProps,\n    getTrackProps: getTrackProps,\n    getInnerTrackProps: getInnerTrackProps,\n    getThumbProps: getThumbProps,\n    getMarkerProps: getMarkerProps,\n    getInputProps: getInputProps\n  };\n}\n\nfunction orient(options) {\n  var orientation = options.orientation,\n      vertical = options.vertical,\n      horizontal = options.horizontal;\n  return orientation === \"vertical\" ? vertical : horizontal;\n}\n/**\n * The browser  calculates\n * the default value of a slider by using mid-point\n * between the min and the max.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range\n */\n\n\nfunction getDefaultValue(min, max) {\n  return max < min ? min : min + (max - min) / 2;\n}\n\nvar _excluded = [\"getInputProps\", \"getRootProps\"];\n\nvar _createContext = createContext({\n  name: \"SliderContext\",\n  errorMessage: \"useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within \"\n}),\n    SliderProvider = _createContext[0],\n    useSliderContext = _createContext[1];\n\nvar _createStylesContext = createStylesContext(\"Slider\"),\n    StylesProvider = _createStylesContext[0],\n    useStyles = _createStylesContext[1];\n\nvar useSliderStyles = useStyles;\n/**\n * The Slider is used to allow users to make selections from a range of values.\n * It provides context and functionality for all slider components\n *\n * @see Docs     https://chakra-ui.com/docs/form/slider\n * @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices/#slider\n */\n\nvar Slider = /*#__PURE__*/forwardRef(function (props, ref) {\n  var styles = useMultiStyleConfig(\"Slider\", props);\n  var ownProps = omitThemingProps(props);\n\n  var _useTheme = useTheme(),\n      direction = _useTheme.direction;\n\n  ownProps.direction = direction;\n\n  var _useSlider = useSlider(ownProps),\n      getInputProps = _useSlider.getInputProps,\n      getRootProps = _useSlider.getRootProps,\n      context = _objectWithoutPropertiesLoose(_useSlider, _excluded);\n\n  var rootProps = getRootProps();\n  var inputProps = getInputProps({}, ref);\n  return /*#__PURE__*/React.createElement(SliderProvider, {\n    value: context\n  }, /*#__PURE__*/React.createElement(StylesProvider, {\n    value: styles\n  }, /*#__PURE__*/React.createElement(chakra.div, _extends({}, rootProps, {\n    className: cx(\"chakra-slider\", props.className),\n    __css: styles.container\n  }), props.children, /*#__PURE__*/React.createElement(\"input\", inputProps))));\n});\nSlider.defaultProps = {\n  orientation: \"horizontal\"\n};\n\nif (__DEV__) {\n  Slider.displayName = \"Slider\";\n}\n/**\n * Slider component that acts as the handle used to select predefined\n * values by dragging its handle along the track\n */\n\n\nvar SliderThumb = /*#__PURE__*/forwardRef(function (props, ref) {\n  var _useSliderContext = useSliderContext(),\n      getThumbProps = _useSliderContext.getThumbProps;\n\n  var styles = useStyles();\n  var thumbProps = getThumbProps(props, ref);\n  return /*#__PURE__*/React.createElement(chakra.div, _extends({}, thumbProps, {\n    className: cx(\"chakra-slider__thumb\", props.className),\n    __css: styles.thumb\n  }));\n});\n\nif (__DEV__) {\n  SliderThumb.displayName = \"SliderThumb\";\n}\n\nvar SliderTrack = /*#__PURE__*/forwardRef(function (props, ref) {\n  var _useSliderContext2 = useSliderContext(),\n      getTrackProps = _useSliderContext2.getTrackProps;\n\n  var styles = useStyles();\n  var trackProps = getTrackProps(props, ref);\n  return /*#__PURE__*/React.createElement(chakra.div, _extends({}, trackProps, {\n    className: cx(\"chakra-slider__track\", props.className),\n    __css: styles.track\n  }));\n});\n\nif (__DEV__) {\n  SliderTrack.displayName = \"SliderTrack\";\n}\n\nvar SliderFilledTrack = /*#__PURE__*/forwardRef(function (props, ref) {\n  var _useSliderContext3 = useSliderContext(),\n      getInnerTrackProps = _useSliderContext3.getInnerTrackProps;\n\n  var styles = useStyles();\n  var trackProps = getInnerTrackProps(props, ref);\n  return /*#__PURE__*/React.createElement(chakra.div, _extends({}, trackProps, {\n    className: cx(\"chakra-slider__filled-track\", props.className),\n    __css: styles.filledTrack\n  }));\n});\n\nif (__DEV__) {\n  SliderFilledTrack.displayName = \"SliderFilledTrack\";\n}\n/**\n * SliderMark is used to provide names for specific Slider\n * values by defining labels or markers along the track.\n *\n * @see Docs https://chakra-ui.com/slider\n */\n\n\nvar SliderMark = /*#__PURE__*/forwardRef(function (props, ref) {\n  var _useSliderContext4 = useSliderContext(),\n      getMarkerProps = _useSliderContext4.getMarkerProps;\n\n  var markProps = getMarkerProps(props, ref);\n  return /*#__PURE__*/React.createElement(chakra.div, _extends({}, markProps, {\n    className: cx(\"chakra-slider__marker\", props.className)\n  }));\n});\n\nif (__DEV__) {\n  SliderMark.displayName = \"SliderMark\";\n}\n\nexport { RangeSlider, RangeSliderFilledTrack, RangeSliderMark, RangeSliderProvider, RangeSliderThumb, RangeSliderTrack, Slider, SliderFilledTrack, SliderMark, SliderProvider, SliderThumb, SliderTrack, useRangeSlider, useRangeSliderContext, useRangeSliderStyles, useSlider, useSliderContext, useSliderStyles };","import React, {useEffect, useState} from \"react\";\nimport {Flex, Icon, IconButton, Slider, SliderFilledTrack, SliderThumb, SliderTrack} from \"@chakra-ui/react\";\nimport {AiOutlineFontSize, AiOutlineMinus, AiOutlinePlus} from \"react-icons/ai\";\n\nexport interface FontSizeSliderProps {\n  defaultValue: number;\n  onChange: (val: number) => void;\n}\n\nconst FontSizeSlider = ({defaultValue, onChange}: FontSizeSliderProps) => {\n  const [fontSize, setFontSize] = useState(defaultValue);\n\n  useEffect(() => {\n    onChange(fontSize)\n  }, [fontSize])\n\n  return (\n    \n      \n      } aria-label={'smaller'} onClick={() => setFontSize(prevState => Math.max(prevState - 1, 0))}/>\n       setFontSize(val)}>\n        \n          \n        \n        \n      \n      } aria-label={'smaller'} onClick={() => setFontSize(prevState => Math.min(prevState + 1, 12))}/>\n    \n  )\n}\n\nexport default FontSizeSlider\n","import React, {useState} from 'react'\nimport {\n  Box,\n  Divider,\n  Heading,\n  Stack, Text,\n} from \"@chakra-ui/react\";\nimport { MDXProvider } from \"@mdx-js/react\"\nimport {CodeSlot, Hike, Focus, PreviewSlot, withFocusHandler} from \"@code-hike/scrollycoding\";\nimport CustomLink from \"./CustomLink\";\nimport {MdxFrontmatter} from \"../../gql/types\";\nimport ReadingTime from \"../page/ReadingTime\";\nimport CodeBlock from \"./CodeBlock\";\nimport CodeHike from \"./CodeHike\";\nimport { format } from 'date-fns';\nimport Title from \"../ui/atoms/Title\";\nimport {calcReadingTime} from \"../../utils/calcReadingTime\";\nimport FontSizeSlider from \"../ui/molecules/FontSizeSlider\";\n\nconst shortcodes = {\n  a: withFocusHandler(CustomLink),\n  Hike,\n  Focus,\n  CodeSlot,\n  PreviewSlot,\n  CodeBlock,\n  CodeHike,\n}\n\nexport interface LayoutProps {\n  pageContext: {\n    body: string\n    frontmatter: Omit\n  }\n}\n\nconst defaultFontSize = 3;\n\nconst getFontSizeString = (fontSize: number) => ['xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl', '4xl', '5xl', '6xl', '7xl', '8xl', '9xl'][fontSize] ?? 'md'\n\nconst MdxLayout: React.FC = ({children, ...props}) => {\n  const {title, date} = props.pageContext.frontmatter;\n  const [fontSize, setFontSize] = useState(defaultFontSize);\n\n  return (\n    \n      \n        \n          \n          <Heading fontWeight={500} fontSize={'3xl'} letterSpacing={4}>\n            {title}\n          </Heading>\n          <Divider borderColor={'green.400'} mt={12} borderBottomWidth={1}/>\n        </Stack>\n\n        <Box mb={8}>\n          <Text>{format(new Date(date), 'MMM dd, yyyy')} · <ReadingTime readingTime={calcReadingTime('')}/></Text>\n        </Box>\n\n        <FontSizeSlider defaultValue={defaultFontSize} onChange={setFontSize}/>\n\n        <Box fontSize={getFontSizeString(fontSize)}>\n          {children}\n        </Box>\n      </Box>\n    </MDXProvider>\n  )\n}\n\nexport default MdxLayout\n","import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nimport DefaultLayout from \"/workspace/src/components/mdx/MdxLayout.tsx\";\nexport const _frontmatter = {};\n\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return <div {...props} />;\n};\n\nconst CodeHike = makeShortcode(\"CodeHike\");\nconst StepHead = makeShortcode(\"StepHead\");\nconst Focus = makeShortcode(\"Focus\");\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n    <p>{`date: 2021-07-09\nauthor: Johannes Klauss\ntitle: A gentle introduction to Recoil.js\nsubtitle: Recoil JS\ntags: State, Concepts\nintro: Managing complex state is React is hard. Recoil simplifies it.`}</p>\n\n\n    <CodeHike mdxType=\"CodeHike\">\n      <StepHead mdxType=\"StepHead\">\n        <pre><code parentName=\"pre\" {...{\n            \"className\": \"language-jsx\",\n            \"metastring\": \"App.js\",\n            \"App.js\": true\n          }}>{`import React, {useState} from \"react\"\n\nexport default function App() {\n  const [count, setCount] = useState(0);\n\n  return (\n    <>\n      <h1>\n        The count is: {count}\n      </h1>\n    </>\n  )\n}\n`}</code></pre>\n      </StepHead>\n      <p>{`This is some introductory text, explaining what you want to do with some starting code example.`}</p>\n      <StepHead mdxType=\"StepHead\">\n        <pre><code parentName=\"pre\" {...{\n            \"className\": \"language-jsx\",\n            \"metastring\": \"App.js focus=3[16:29]\",\n            \"App.js\": true,\n            \"focus\": \"3[16:29]\"\n          }}>{`import React, {useState} from \"react\"\n\nexport default function App() {\n  const [count, setCount] = useState(0);\n\n  return (\n    <>\n      <h1>\n        The count is: {count}\n      </h1>\n    </>\n  )\n}\n`}</code></pre>\n      </StepHead>\n      <p>{`Then you might add some focus on the code, to explain specific things about it.`}</p>\n      <StepHead mdxType=\"StepHead\">\n        <pre><code parentName=\"pre\" {...{\n            \"className\": \"language-jsx\",\n            \"metastring\": \"App.js focus=4:7\",\n            \"App.js\": true,\n            \"focus\": \"4:7\"\n          }}>{`import React, {useState} from \"react\"\n\nexport default function App() {\n  const [count, setCount] = useState(0);\n\n  return (\n    <>\n      <h1>\n        The count is: {count}\n      </h1>\n    </>\n  )\n}\n`}</code></pre>\n      </StepHead>\n      <p>{`While we can focus while scrolling, we can also `}<Focus on=\"9[23:29]\" mdxType=\"Focus\">{`focus on code with a link`}</Focus>{`.`}</p>\n      <StepHead mdxType=\"StepHead\">\n        <pre><code parentName=\"pre\" {...{\n            \"className\": \"language-jsx\",\n            \"metastring\": \"App.js focus=11:12\",\n            \"App.js\": true,\n            \"focus\": \"11:12\"\n          }}>{`import React, {useState} from \"react\"\n\nexport default function App() {\n  const [count, setCount] = useState(0);\n\n  return (\n    <>\n      <h1>\n        The count is: {count}\n      </h1>\n      <button>Increase Count</button>\n      <button>Decrease Count</button>\n    </>\n  )\n}\n`}</code></pre>\n      </StepHead>\n      <p>{`We can add stuff to the code and it will get reflected in the output.`}</p>\n      <StepHead mdxType=\"StepHead\">\n        <pre><code parentName=\"pre\" {...{\n            \"className\": \"language-jsx\",\n            \"metastring\": \"App.js focus=5:7,14[15:32],15[15:32]\",\n            \"App.js\": true,\n            \"focus\": \"5:7,14[15:32],15[15:32]\"\n          }}>{`import React, {useState} from \"react\"\n\nexport default function App() {\n  const [count, setCount] = useState(0);\n\n  const increase = () => setCount(count + 1);\n  const decrease = () => setCount(count - 1);\n\n  return (\n    <>\n      <h1>\n        The count is: {count}\n      </h1>\n      <button onClick={increase}>Increase Count</button>\n      <button onClick={decrease}>Decrease Count</button>\n    </>\n  )\n}\n`}</code></pre>\n      </StepHead>\n      <p>{`Our output is actually interactive and renders the exact component we display.`}</p>\n      <StepHead mdxType=\"StepHead\">\n        <pre><code parentName=\"pre\" {...{\n            \"className\": \"language-jsx\",\n            \"metastring\": \"Headline.js\",\n            \"Headline.js\": true\n          }}>{`import React, {useState} from \"react\"\n\nexport default function Headline(props) {\n\n  return (\n    <>\n      <h1>The count is: {props.count}</h1>\n    </>\n  )\n}\n`}</code></pre>\n        <pre><code parentName=\"pre\" {...{\n            \"className\": \"language-jsx\",\n            \"metastring\": \"App.js\",\n            \"App.js\": true\n          }}>{`import React, {useState} from \"react\"\nimport Headline from \"./Headline\"\n\nexport default function App() {\n  const [count, setCount] = useState(0);\n\n  const increase = () => setCount(count + 1);\n  const decrease = () => setCount(count - 1);\n\n  return (\n    <>\n      <Headline count={count}/>\n      <button onClick={increase}>Increase Count</button>\n      <button onClick={decrease}>Decrease Count</button>\n    </>\n  )\n}\n`}</code></pre>\n      </StepHead>\n      <p>{`We can also display and connect multiple files. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.`}</p>\n      <pre><code parentName=\"pre\" {...{}}>{`                                            Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet,\n`}</code></pre>\n    </CodeHike>\n\n    </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      ","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","import { useMergeRefs } from '@chakra-ui/hooks';\nimport { forwardRef, chakra, useStyleConfig, omitThemingProps } from '@chakra-ui/system';\nimport { cx, __DEV__, mergeWith, dataAttr } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { createContext } from '@chakra-ui/react-utils';\nimport { Spinner } from '@chakra-ui/spinner';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nvar _excluded$4 = [\"size\", \"colorScheme\", \"variant\", \"className\", \"spacing\", \"isAttached\", \"isDisabled\"];\n\nvar _createContext = createContext({\n  strict: false,\n  name: \"ButtonGroupContext\"\n}),\n    ButtonGroupProvider = _createContext[0],\n    useButtonGroup = _createContext[1];\n\nvar ButtonGroup = /*#__PURE__*/forwardRef(function (props, ref) {\n  var size = props.size,\n      colorScheme = props.colorScheme,\n      variant = props.variant,\n      className = props.className,\n      _props$spacing = props.spacing,\n      spacing = _props$spacing === void 0 ? \"0.5rem\" : _props$spacing,\n      isAttached = props.isAttached,\n      isDisabled = props.isDisabled,\n      rest = _objectWithoutPropertiesLoose(props, _excluded$4);\n\n  var _className = cx(\"chakra-button__group\", className);\n\n  var context = React.useMemo(function () {\n    return {\n      size: size,\n      colorScheme: colorScheme,\n      variant: variant,\n      isDisabled: isDisabled\n    };\n  }, [size, colorScheme, variant, isDisabled]);\n  var groupStyles = {\n    display: \"inline-flex\"\n  };\n\n  if (isAttached) {\n    groupStyles = _extends({}, groupStyles, {\n      \"> *:first-of-type:not(:last-of-type)\": {\n        borderEndRadius: 0\n      },\n      \"> *:not(:first-of-type):not(:last-of-type)\": {\n        borderRadius: 0\n      },\n      \"> *:not(:first-of-type):last-of-type\": {\n        borderStartRadius: 0\n      }\n    });\n  } else {\n    groupStyles = _extends({}, groupStyles, {\n      \"& > *:not(style) ~ *:not(style)\": {\n        marginStart: spacing\n      }\n    });\n  }\n\n  return /*#__PURE__*/React.createElement(ButtonGroupProvider, {\n    value: context\n  }, /*#__PURE__*/React.createElement(chakra.div, _extends({\n    ref: ref,\n    role: \"group\",\n    __css: groupStyles,\n    className: _className,\n    \"data-attached\": isAttached ? \"\" : undefined\n  }, rest)));\n});\n\nif (__DEV__) {\n  ButtonGroup.displayName = \"ButtonGroup\";\n}\n\nvar _excluded$3 = [\"label\", \"placement\", \"spacing\", \"children\", \"className\", \"__css\"];\n\nvar ButtonSpinner = function ButtonSpinner(props) {\n  var label = props.label,\n      placement = props.placement,\n      _props$spacing = props.spacing,\n      spacing = _props$spacing === void 0 ? \"0.5rem\" : _props$spacing,\n      _props$children = props.children,\n      children = _props$children === void 0 ? /*#__PURE__*/React.createElement(Spinner, {\n    color: \"currentColor\",\n    width: \"1em\",\n    height: \"1em\"\n  }) : _props$children,\n      className = props.className,\n      __css = props.__css,\n      rest = _objectWithoutPropertiesLoose(props, _excluded$3);\n\n  var _className = cx(\"chakra-button__spinner\", className);\n\n  var marginProp = placement === \"start\" ? \"marginEnd\" : \"marginStart\";\n  var spinnerStyles = React.useMemo(function () {\n    var _extends2;\n\n    return _extends((_extends2 = {\n      display: \"flex\",\n      alignItems: \"center\",\n      position: label ? \"relative\" : \"absolute\"\n    }, _extends2[marginProp] = label ? spacing : 0, _extends2.fontSize = \"1em\", _extends2.lineHeight = \"normal\", _extends2), __css);\n  }, [__css, label, marginProp, spacing]);\n  return /*#__PURE__*/React.createElement(chakra.div, _extends({\n    className: _className\n  }, rest, {\n    __css: spinnerStyles\n  }), children);\n};\n\nif (__DEV__) {\n  ButtonSpinner.displayName = \"ButtonSpinner\";\n}\n\nvar _excluded$2 = [\"children\", \"className\"];\n\nvar ButtonIcon = function ButtonIcon(props) {\n  var children = props.children,\n      className = props.className,\n      rest = _objectWithoutPropertiesLoose(props, _excluded$2);\n\n  var _children = /*#__PURE__*/React.isValidElement(children) ? /*#__PURE__*/React.cloneElement(children, {\n    \"aria-hidden\": true,\n    focusable: false\n  }) : children;\n\n  var _className = cx(\"chakra-button__icon\", className);\n\n  return /*#__PURE__*/React.createElement(chakra.span, _extends({\n    display: \"inline-flex\",\n    alignSelf: \"center\",\n    flexShrink: 0\n  }, rest, {\n    className: _className\n  }), _children);\n};\n\nif (__DEV__) {\n  ButtonIcon.displayName = \"ButtonIcon\";\n}\n\nfunction useButtonType(value) {\n  var _React$useState = React.useState(!value),\n      isButton = _React$useState[0],\n      setIsButton = _React$useState[1];\n\n  var refCallback = React.useCallback(function (node) {\n    if (!node) return;\n    setIsButton(node.tagName === \"BUTTON\");\n  }, []);\n  var type = isButton ? \"button\" : undefined;\n  return {\n    ref: refCallback,\n    type: type\n  };\n}\n\nvar _excluded$1 = [\"isDisabled\", \"isLoading\", \"isActive\", \"children\", \"leftIcon\", \"rightIcon\", \"loadingText\", \"iconSpacing\", \"type\", \"spinner\", \"spinnerPlacement\", \"className\", \"as\"];\nvar Button = /*#__PURE__*/forwardRef(function (props, ref) {\n  var group = useButtonGroup();\n  var styles = useStyleConfig(\"Button\", _extends({}, group, props));\n\n  var _omitThemingProps = omitThemingProps(props),\n      _omitThemingProps$isD = _omitThemingProps.isDisabled,\n      isDisabled = _omitThemingProps$isD === void 0 ? group == null ? void 0 : group.isDisabled : _omitThemingProps$isD,\n      isLoading = _omitThemingProps.isLoading,\n      isActive = _omitThemingProps.isActive,\n      children = _omitThemingProps.children,\n      leftIcon = _omitThemingProps.leftIcon,\n      rightIcon = _omitThemingProps.rightIcon,\n      loadingText = _omitThemingProps.loadingText,\n      _omitThemingProps$ico = _omitThemingProps.iconSpacing,\n      iconSpacing = _omitThemingProps$ico === void 0 ? \"0.5rem\" : _omitThemingProps$ico,\n      type = _omitThemingProps.type,\n      spinner = _omitThemingProps.spinner,\n      _omitThemingProps$spi = _omitThemingProps.spinnerPlacement,\n      spinnerPlacement = _omitThemingProps$spi === void 0 ? \"start\" : _omitThemingProps$spi,\n      className = _omitThemingProps.className,\n      as = _omitThemingProps.as,\n      rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded$1);\n  /**\n   * When button is used within ButtonGroup (i.e. flushed with sibling buttons),\n   * it is important to add a `zIndex` on focus.\n   *\n   * So let's read the component styles and then add `zIndex` to it.\n   */\n\n\n  var buttonStyles = React.useMemo(function () {\n    var _styles$_focus;\n\n    var _focus = mergeWith({}, (_styles$_focus = styles == null ? void 0 : styles[\"_focus\"]) != null ? _styles$_focus : {}, {\n      zIndex: 1\n    });\n\n    return _extends({\n      display: \"inline-flex\",\n      appearance: \"none\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      userSelect: \"none\",\n      position: \"relative\",\n      whiteSpace: \"nowrap\",\n      verticalAlign: \"middle\",\n      outline: \"none\"\n    }, styles, !!group && {\n      _focus: _focus\n    });\n  }, [styles, group]);\n\n  var _useButtonType = useButtonType(as),\n      _ref = _useButtonType.ref,\n      defaultType = _useButtonType.type;\n\n  var contentProps = {\n    rightIcon: rightIcon,\n    leftIcon: leftIcon,\n    iconSpacing: iconSpacing,\n    children: children\n  };\n  return /*#__PURE__*/React.createElement(chakra.button, _extends({\n    disabled: isDisabled || isLoading,\n    ref: useMergeRefs(ref, _ref),\n    as: as,\n    type: type != null ? type : defaultType,\n    \"data-active\": dataAttr(isActive),\n    \"data-loading\": dataAttr(isLoading),\n    __css: buttonStyles,\n    className: cx(\"chakra-button\", className)\n  }, rest), isLoading && spinnerPlacement === \"start\" && /*#__PURE__*/React.createElement(ButtonSpinner, {\n    className: \"chakra-button__spinner--start\",\n    label: loadingText,\n    placement: \"start\",\n    spacing: iconSpacing\n  }, spinner), isLoading ? loadingText || /*#__PURE__*/React.createElement(chakra.span, {\n    opacity: 0\n  }, /*#__PURE__*/React.createElement(ButtonContent, contentProps)) : /*#__PURE__*/React.createElement(ButtonContent, contentProps), isLoading && spinnerPlacement === \"end\" && /*#__PURE__*/React.createElement(ButtonSpinner, {\n    className: \"chakra-button__spinner--end\",\n    label: loadingText,\n    placement: \"end\",\n    spacing: iconSpacing\n  }, spinner));\n});\n\nif (__DEV__) {\n  Button.displayName = \"Button\";\n}\n\nfunction ButtonContent(props) {\n  var leftIcon = props.leftIcon,\n      rightIcon = props.rightIcon,\n      children = props.children,\n      iconSpacing = props.iconSpacing;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, leftIcon && /*#__PURE__*/React.createElement(ButtonIcon, {\n    marginEnd: iconSpacing\n  }, leftIcon), children, rightIcon && /*#__PURE__*/React.createElement(ButtonIcon, {\n    marginStart: iconSpacing\n  }, rightIcon));\n}\n\nvar _excluded = [\"icon\", \"children\", \"isRound\", \"aria-label\"];\nvar IconButton = /*#__PURE__*/forwardRef(function (props, ref) {\n  var icon = props.icon,\n      children = props.children,\n      isRound = props.isRound,\n      ariaLabel = props[\"aria-label\"],\n      rest = _objectWithoutPropertiesLoose(props, _excluded);\n  /**\n   * Passing the icon as prop or children should work\n   */\n\n\n  var element = icon || children;\n\n  var _children = /*#__PURE__*/React.isValidElement(element) ? /*#__PURE__*/React.cloneElement(element, {\n    \"aria-hidden\": true,\n    focusable: false\n  }) : null;\n\n  return /*#__PURE__*/React.createElement(Button, _extends({\n    padding: \"0\",\n    borderRadius: isRound ? \"full\" : undefined,\n    ref: ref,\n    \"aria-label\": ariaLabel\n  }, rest), _children);\n});\n\nif (__DEV__) {\n  IconButton.displayName = \"IconButton\";\n}\n\nexport { Button, ButtonGroup, ButtonSpinner, IconButton, useButtonGroup };","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction getMainFile(template) {\n  if (template === \"vue-cli\") {\n    return \"src/main.js\";\n  }\n\n  if (template === \"angular-cli\") {\n    return \"src/main.ts\";\n  }\n\n  if (template === \"create-react-app-typescript\") {\n    return \"src/index.tsx\";\n  }\n\n  if (template === \"parcel\") {\n    return \"index.html\";\n  }\n\n  if (template === \"gatsby\") {\n    return \"src/pages/index.js\";\n  }\n\n  if (template === \"nuxt\") {\n    // Wildcard, because nuxt is not specific on this\n    return \"package.json\";\n  }\n\n  if (template === \"next\") {\n    // Wildcard, because next is not specific on this\n    return \"package.json\";\n  }\n\n  if (template === \"apollo\") {\n    // Wildcard, because apollo is not specific on this\n    return \"package.json\";\n  }\n\n  if (template === \"reason\") {\n    // Wildcard, because reason is not specific on this\n    return \"package.json\";\n  }\n\n  if (template === \"sapper\") {\n    // Wildcard, because sapper is not specific on this\n    return \"package.json\";\n  }\n\n  if (template === \"nest\") {\n    return \"src/main.ts\";\n  }\n\n  if (template === \"static\") {\n    return \"index.html\";\n  }\n\n  return \"src/index.js\";\n}\n\nexports.getMainFile = getMainFile;\nvar SANDBOX_CONFIG = \"sandbox.config.json\";\n\nfunction getTemplate(packageJSONPackage, modules) {\n  var sandboxConfig = modules[SANDBOX_CONFIG] || modules[\"/\" + SANDBOX_CONFIG];\n\n  if (sandboxConfig) {\n    try {\n      var config = JSON.parse(sandboxConfig.content);\n\n      if (config.template) {\n        return config.template;\n      }\n    } catch (e) {}\n  }\n\n  var _a = packageJSONPackage.dependencies,\n      dependencies = _a === void 0 ? {} : _a,\n      _b = packageJSONPackage.devDependencies,\n      devDependencies = _b === void 0 ? {} : _b;\n  var totalDependencies = Object.keys(dependencies).concat(Object.keys(devDependencies));\n  var nuxt = [\"nuxt\", \"nuxt-edge\"];\n\n  if (totalDependencies.some(function (dep) {\n    return nuxt.indexOf(dep) > -1;\n  })) {\n    return \"nuxt\";\n  }\n\n  if (totalDependencies.indexOf(\"next\") > -1) {\n    return \"next\";\n  }\n\n  var apollo = [\"apollo-server\", \"apollo-server-express\", \"apollo-server-hapi\", \"apollo-server-koa\", \"apollo-server-lambda\", \"apollo-server-micro\"];\n\n  if (totalDependencies.some(function (dep) {\n    return apollo.indexOf(dep) > -1;\n  })) {\n    return \"apollo\";\n  }\n\n  if (totalDependencies.indexOf(\"ember-cli\") > -1) {\n    return \"ember\";\n  }\n\n  if (totalDependencies.indexOf(\"sapper\") > -1) {\n    return \"sapper\";\n  }\n\n  var moduleNames = Object.keys(modules);\n\n  if (moduleNames.some(function (m) {\n    return m.endsWith(\".vue\");\n  })) {\n    return \"vue-cli\";\n  }\n\n  if (moduleNames.some(function (m) {\n    return m.endsWith(\".re\");\n  })) {\n    return \"reason\";\n  }\n\n  if (totalDependencies.indexOf(\"gatsby\") > -1) {\n    return \"gatsby\";\n  }\n\n  if (totalDependencies.indexOf(\"parcel-bundler\") > -1) {\n    return \"parcel\";\n  }\n\n  if (totalDependencies.indexOf(\"react-scripts\") > -1) {\n    return \"create-react-app\";\n  }\n\n  if (totalDependencies.indexOf(\"react-scripts-ts\") > -1) {\n    return \"create-react-app-typescript\";\n  }\n\n  if (totalDependencies.indexOf(\"@angular/core\") > -1) {\n    return \"angular-cli\";\n  }\n\n  if (totalDependencies.indexOf(\"preact-cli\") > -1) {\n    return \"preact-cli\";\n  }\n\n  if (totalDependencies.indexOf(\"svelte\") > -1) {\n    return \"svelte\";\n  }\n\n  if (totalDependencies.indexOf(\"vue\") > -1) {\n    return \"vue-cli\";\n  }\n\n  var dojo = [\"@dojo/core\", \"@dojo/framework\"];\n\n  if (totalDependencies.some(function (dep) {\n    return dojo.indexOf(dep) > -1;\n  })) {\n    return \"@dojo/cli-create-app\";\n  }\n\n  if (totalDependencies.indexOf(\"cx\") > -1) {\n    return \"cxjs\";\n  }\n\n  if (totalDependencies.indexOf(\"@nestjs/core\") > -1 || totalDependencies.indexOf(\"@nestjs/common\") > -1) {\n    return \"nest\";\n  }\n\n  return undefined;\n}\n\nexports.getTemplate = getTemplate;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getParameters = void 0;\n\nvar LZString = require(\"lz-string\");\n\nfunction compress(input) {\n  return LZString.compressToBase64(input).replace(/\\+/g, \"-\") // Convert '+' to '-'\n  .replace(/\\//g, \"_\") // Convert '/' to '_'\n  .replace(/=+$/, \"\"); // Remove ending '='\n}\n\nfunction getParameters(parameters) {\n  return compress(JSON.stringify(parameters));\n}\n\nexports.getParameters = getParameters;","/*!\n\n diff v4.0.1\n\nSoftware License Agreement (BSD License)\n\nCopyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>\n\nAll rights reserved.\n\nRedistribution and use of this software in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above\n  copyright notice, this list of conditions and the\n  following disclaimer.\n\n* Redistributions in binary form must reproduce the above\n  copyright notice, this list of conditions and the\n  following disclaimer in the documentation and/or other\n  materials provided with the distribution.\n\n* Neither the name of Kevin Decker nor the names of its\n  contributors may be used to endorse or promote products\n  derived from this software without specific prior\n  written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\nIN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT\nOF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n@license\n*/\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = global || self, factory(global.Diff = {}));\n})(this, function (exports) {\n  'use strict';\n\n  function Diff() {}\n\n  Diff.prototype = {\n    diff: function diff(oldString, newString) {\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var callback = options.callback;\n\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n\n      this.options = options;\n      var self = this;\n\n      function done(value) {\n        if (callback) {\n          setTimeout(function () {\n            callback(undefined, value);\n          }, 0);\n          return true;\n        } else {\n          return value;\n        }\n      } // Allow subclasses to massage the input prior to running\n\n\n      oldString = this.castInput(oldString);\n      newString = this.castInput(newString);\n      oldString = this.removeEmpty(this.tokenize(oldString));\n      newString = this.removeEmpty(this.tokenize(newString));\n      var newLen = newString.length,\n          oldLen = oldString.length;\n      var editLength = 1;\n      var maxEditLength = newLen + oldLen;\n      var bestPath = [{\n        newPos: -1,\n        components: []\n      }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n      var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n      if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n        // Identity per the equality and tokenizer\n        return done([{\n          value: this.join(newString),\n          count: newString.length\n        }]);\n      } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n      function execEditLength() {\n        for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n          var basePath = void 0;\n\n          var addPath = bestPath[diagonalPath - 1],\n              removePath = bestPath[diagonalPath + 1],\n              _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n          if (addPath) {\n            // No one else is going to attempt to use this value, clear it\n            bestPath[diagonalPath - 1] = undefined;\n          }\n\n          var canAdd = addPath && addPath.newPos + 1 < newLen,\n              canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;\n\n          if (!canAdd && !canRemove) {\n            // If this path is a terminal then prune\n            bestPath[diagonalPath] = undefined;\n            continue;\n          } // Select the diagonal that we want to branch from. We select the prior\n          // path whose position in the new string is the farthest from the origin\n          // and does not pass the bounds of the diff graph\n\n\n          if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n            basePath = clonePath(removePath);\n            self.pushComponent(basePath.components, undefined, true);\n          } else {\n            basePath = addPath; // No need to clone, we've pulled it from the list\n\n            basePath.newPos++;\n            self.pushComponent(basePath.components, true, undefined);\n          }\n\n          _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done\n\n          if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {\n            return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));\n          } else {\n            // Otherwise track this path as a potential candidate and continue.\n            bestPath[diagonalPath] = basePath;\n          }\n        }\n\n        editLength++;\n      } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n      // sync and async mode which is never fun. Loops over execEditLength until a value\n      // is produced.\n\n\n      if (callback) {\n        (function exec() {\n          setTimeout(function () {\n            // This should not happen, but we want to be safe.\n\n            /* istanbul ignore next */\n            if (editLength > maxEditLength) {\n              return callback();\n            }\n\n            if (!execEditLength()) {\n              exec();\n            }\n          }, 0);\n        })();\n      } else {\n        while (editLength <= maxEditLength) {\n          var ret = execEditLength();\n\n          if (ret) {\n            return ret;\n          }\n        }\n      }\n    },\n    pushComponent: function pushComponent(components, added, removed) {\n      var last = components[components.length - 1];\n\n      if (last && last.added === added && last.removed === removed) {\n        // We need to clone here as the component clone operation is just\n        // as shallow array clone\n        components[components.length - 1] = {\n          count: last.count + 1,\n          added: added,\n          removed: removed\n        };\n      } else {\n        components.push({\n          count: 1,\n          added: added,\n          removed: removed\n        });\n      }\n    },\n    extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n      var newLen = newString.length,\n          oldLen = oldString.length,\n          newPos = basePath.newPos,\n          oldPos = newPos - diagonalPath,\n          commonCount = 0;\n\n      while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n        newPos++;\n        oldPos++;\n        commonCount++;\n      }\n\n      if (commonCount) {\n        basePath.components.push({\n          count: commonCount\n        });\n      }\n\n      basePath.newPos = newPos;\n      return oldPos;\n    },\n    equals: function equals(left, right) {\n      if (this.options.comparator) {\n        return this.options.comparator(left, right);\n      } else {\n        return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n      }\n    },\n    removeEmpty: function removeEmpty(array) {\n      var ret = [];\n\n      for (var i = 0; i < array.length; i++) {\n        if (array[i]) {\n          ret.push(array[i]);\n        }\n      }\n\n      return ret;\n    },\n    castInput: function castInput(value) {\n      return value;\n    },\n    tokenize: function tokenize(value) {\n      return value.split('');\n    },\n    join: function join(chars) {\n      return chars.join('');\n    }\n  };\n\n  function buildValues(diff, components, newString, oldString, useLongestToken) {\n    var componentPos = 0,\n        componentLen = components.length,\n        newPos = 0,\n        oldPos = 0;\n\n    for (; componentPos < componentLen; componentPos++) {\n      var component = components[componentPos];\n\n      if (!component.removed) {\n        if (!component.added && useLongestToken) {\n          var value = newString.slice(newPos, newPos + component.count);\n          value = value.map(function (value, i) {\n            var oldValue = oldString[oldPos + i];\n            return oldValue.length > value.length ? oldValue : value;\n          });\n          component.value = diff.join(value);\n        } else {\n          component.value = diff.join(newString.slice(newPos, newPos + component.count));\n        }\n\n        newPos += component.count; // Common case\n\n        if (!component.added) {\n          oldPos += component.count;\n        }\n      } else {\n        component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n        oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n        // The diffing algorithm is tied to add then remove output and this is the simplest\n        // route to get the desired output with minimal overhead.\n\n        if (componentPos && components[componentPos - 1].added) {\n          var tmp = components[componentPos - 1];\n          components[componentPos - 1] = components[componentPos];\n          components[componentPos] = tmp;\n        }\n      }\n    } // Special case handle for when one terminal is ignored (i.e. whitespace).\n    // For this case we merge the terminal into the prior string and drop the change.\n    // This is only available for string mode.\n\n\n    var lastComponent = components[componentLen - 1];\n\n    if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {\n      components[componentLen - 2].value += lastComponent.value;\n      components.pop();\n    }\n\n    return components;\n  }\n\n  function clonePath(path) {\n    return {\n      newPos: path.newPos,\n      components: path.components.slice(0)\n    };\n  }\n\n  var characterDiff = new Diff();\n\n  function diffChars(oldStr, newStr, options) {\n    return characterDiff.diff(oldStr, newStr, options);\n  }\n\n  function generateOptions(options, defaults) {\n    if (typeof options === 'function') {\n      defaults.callback = options;\n    } else if (options) {\n      for (var name in options) {\n        /* istanbul ignore else */\n        if (options.hasOwnProperty(name)) {\n          defaults[name] = options[name];\n        }\n      }\n    }\n\n    return defaults;\n  } //\n  // Ranges and exceptions:\n  // Latin-1 Supplement, 0080–00FF\n  //  - U+00D7  × Multiplication sign\n  //  - U+00F7  ÷ Division sign\n  // Latin Extended-A, 0100–017F\n  // Latin Extended-B, 0180–024F\n  // IPA Extensions, 0250–02AF\n  // Spacing Modifier Letters, 02B0–02FF\n  //  - U+02C7  ˇ ˇ  Caron\n  //  - U+02D8  ˘ ˘  Breve\n  //  - U+02D9  ˙ ˙  Dot Above\n  //  - U+02DA  ˚ ˚  Ring Above\n  //  - U+02DB  ˛ ˛  Ogonek\n  //  - U+02DC  ˜ ˜  Small Tilde\n  //  - U+02DD  ˝ ˝  Double Acute Accent\n  // Latin Extended Additional, 1E00–1EFF\n\n\n  var extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\n  var reWhitespace = /\\S/;\n  var wordDiff = new Diff();\n\n  wordDiff.equals = function (left, right) {\n    if (this.options.ignoreCase) {\n      left = left.toLowerCase();\n      right = right.toLowerCase();\n    }\n\n    return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n  };\n\n  wordDiff.tokenize = function (value) {\n    var tokens = value.split(/(\\s+|[()[\\]{}'\"]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n    for (var i = 0; i < tokens.length - 1; i++) {\n      // If we have an empty string in the next field and we have only word chars before and after, merge\n      if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n        tokens[i] += tokens[i + 2];\n        tokens.splice(i + 1, 2);\n        i--;\n      }\n    }\n\n    return tokens;\n  };\n\n  function diffWords(oldStr, newStr, options) {\n    options = generateOptions(options, {\n      ignoreWhitespace: true\n    });\n    return wordDiff.diff(oldStr, newStr, options);\n  }\n\n  function diffWordsWithSpace(oldStr, newStr, options) {\n    return wordDiff.diff(oldStr, newStr, options);\n  }\n\n  var lineDiff = new Diff();\n\n  lineDiff.tokenize = function (value) {\n    var retLines = [],\n        linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n    if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n      linesAndNewlines.pop();\n    } // Merge the content and line separators into single tokens\n\n\n    for (var i = 0; i < linesAndNewlines.length; i++) {\n      var line = linesAndNewlines[i];\n\n      if (i % 2 && !this.options.newlineIsToken) {\n        retLines[retLines.length - 1] += line;\n      } else {\n        if (this.options.ignoreWhitespace) {\n          line = line.trim();\n        }\n\n        retLines.push(line);\n      }\n    }\n\n    return retLines;\n  };\n\n  function diffLines(oldStr, newStr, callback) {\n    return lineDiff.diff(oldStr, newStr, callback);\n  }\n\n  function diffTrimmedLines(oldStr, newStr, callback) {\n    var options = generateOptions(callback, {\n      ignoreWhitespace: true\n    });\n    return lineDiff.diff(oldStr, newStr, options);\n  }\n\n  var sentenceDiff = new Diff();\n\n  sentenceDiff.tokenize = function (value) {\n    return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n  };\n\n  function diffSentences(oldStr, newStr, callback) {\n    return sentenceDiff.diff(oldStr, newStr, callback);\n  }\n\n  var cssDiff = new Diff();\n\n  cssDiff.tokenize = function (value) {\n    return value.split(/([{}:;,]|\\s+)/);\n  };\n\n  function diffCss(oldStr, newStr, callback) {\n    return cssDiff.diff(oldStr, newStr, callback);\n  }\n\n  function _typeof(obj) {\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n  }\n\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) {\n      for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n        arr2[i] = arr[i];\n      }\n\n      return arr2;\n    }\n  }\n\n  function _iterableToArray(iter) {\n    if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n  }\n\n  function _nonIterableSpread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n  }\n\n  var objectPrototypeToString = Object.prototype.toString;\n  var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n  // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\n  jsonDiff.useLongestToken = true;\n  jsonDiff.tokenize = lineDiff.tokenize;\n\n  jsonDiff.castInput = function (value) {\n    var _this$options = this.options,\n        undefinedReplacement = _this$options.undefinedReplacement,\n        _this$options$stringi = _this$options.stringifyReplacer,\n        stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {\n      return typeof v === 'undefined' ? undefinedReplacement : v;\n    } : _this$options$stringi;\n    return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, '  ');\n  };\n\n  jsonDiff.equals = function (left, right) {\n    return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'));\n  };\n\n  function diffJson(oldObj, newObj, options) {\n    return jsonDiff.diff(oldObj, newObj, options);\n  } // This function handles the presence of circular references by bailing out when encountering an\n  // object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\n\n  function canonicalize(obj, stack, replacementStack, replacer, key) {\n    stack = stack || [];\n    replacementStack = replacementStack || [];\n\n    if (replacer) {\n      obj = replacer(key, obj);\n    }\n\n    var i;\n\n    for (i = 0; i < stack.length; i += 1) {\n      if (stack[i] === obj) {\n        return replacementStack[i];\n      }\n    }\n\n    var canonicalizedObj;\n\n    if ('[object Array]' === objectPrototypeToString.call(obj)) {\n      stack.push(obj);\n      canonicalizedObj = new Array(obj.length);\n      replacementStack.push(canonicalizedObj);\n\n      for (i = 0; i < obj.length; i += 1) {\n        canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n      }\n\n      stack.pop();\n      replacementStack.pop();\n      return canonicalizedObj;\n    }\n\n    if (obj && obj.toJSON) {\n      obj = obj.toJSON();\n    }\n\n    if (_typeof(obj) === 'object' && obj !== null) {\n      stack.push(obj);\n      canonicalizedObj = {};\n      replacementStack.push(canonicalizedObj);\n\n      var sortedKeys = [],\n          _key;\n\n      for (_key in obj) {\n        /* istanbul ignore else */\n        if (obj.hasOwnProperty(_key)) {\n          sortedKeys.push(_key);\n        }\n      }\n\n      sortedKeys.sort();\n\n      for (i = 0; i < sortedKeys.length; i += 1) {\n        _key = sortedKeys[i];\n        canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n      }\n\n      stack.pop();\n      replacementStack.pop();\n    } else {\n      canonicalizedObj = obj;\n    }\n\n    return canonicalizedObj;\n  }\n\n  var arrayDiff = new Diff();\n\n  arrayDiff.tokenize = function (value) {\n    return value.slice();\n  };\n\n  arrayDiff.join = arrayDiff.removeEmpty = function (value) {\n    return value;\n  };\n\n  function diffArrays(oldArr, newArr, callback) {\n    return arrayDiff.diff(oldArr, newArr, callback);\n  }\n\n  function parsePatch(uniDiff) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n        delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n        list = [],\n        i = 0;\n\n    function parseIndex() {\n      var index = {};\n      list.push(index); // Parse diff metadata\n\n      while (i < diffstr.length) {\n        var line = diffstr[i]; // File header found, end parsing diff metadata\n\n        if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n          break;\n        } // Diff index\n\n\n        var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n        if (header) {\n          index.index = header[1];\n        }\n\n        i++;\n      } // Parse file headers if they are defined. Unified diff requires them, but\n      // there's no technical issues to have an isolated hunk without file header\n\n\n      parseFileHeader(index);\n      parseFileHeader(index); // Parse hunks\n\n      index.hunks = [];\n\n      while (i < diffstr.length) {\n        var _line = diffstr[i];\n\n        if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n          break;\n        } else if (/^@@/.test(_line)) {\n          index.hunks.push(parseHunk());\n        } else if (_line && options.strict) {\n          // Ignore unexpected content unless in strict mode\n          throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n        } else {\n          i++;\n        }\n      }\n    } // Parses the --- and +++ headers, if none are found, no lines\n    // are consumed.\n\n\n    function parseFileHeader(index) {\n      var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n      if (fileHeader) {\n        var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n        var data = fileHeader[2].split('\\t', 2);\n        var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n        if (/^\".*\"$/.test(fileName)) {\n          fileName = fileName.substr(1, fileName.length - 2);\n        }\n\n        index[keyPrefix + 'FileName'] = fileName;\n        index[keyPrefix + 'Header'] = (data[1] || '').trim();\n        i++;\n      }\n    } // Parses a hunk\n    // This assumes that we are at the start of a hunk.\n\n\n    function parseHunk() {\n      var chunkHeaderIndex = i,\n          chunkHeaderLine = diffstr[i++],\n          chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n      var hunk = {\n        oldStart: +chunkHeader[1],\n        oldLines: +chunkHeader[2] || 1,\n        newStart: +chunkHeader[3],\n        newLines: +chunkHeader[4] || 1,\n        lines: [],\n        linedelimiters: []\n      };\n      var addCount = 0,\n          removeCount = 0;\n\n      for (; i < diffstr.length; i++) {\n        // Lines starting with '---' could be mistaken for the \"remove line\" operation\n        // But they could be the header for the next file. Therefore prune such cases out.\n        if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n          break;\n        }\n\n        var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n        if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n          hunk.lines.push(diffstr[i]);\n          hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n          if (operation === '+') {\n            addCount++;\n          } else if (operation === '-') {\n            removeCount++;\n          } else if (operation === ' ') {\n            addCount++;\n            removeCount++;\n          }\n        } else {\n          break;\n        }\n      } // Handle the empty block count case\n\n\n      if (!addCount && hunk.newLines === 1) {\n        hunk.newLines = 0;\n      }\n\n      if (!removeCount && hunk.oldLines === 1) {\n        hunk.oldLines = 0;\n      } // Perform optional sanity checking\n\n\n      if (options.strict) {\n        if (addCount !== hunk.newLines) {\n          throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n        }\n\n        if (removeCount !== hunk.oldLines) {\n          throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n        }\n      }\n\n      return hunk;\n    }\n\n    while (i < diffstr.length) {\n      parseIndex();\n    }\n\n    return list;\n  } // Iterator that traverses in the range of [min, max], stepping\n  // by distance from a given start position. I.e. for [0, 4], with\n  // start of 2, this will iterate 2, 3, 1, 4, 0.\n\n\n  function distanceIterator(start, minLine, maxLine) {\n    var wantForward = true,\n        backwardExhausted = false,\n        forwardExhausted = false,\n        localOffset = 1;\n    return function iterator() {\n      if (wantForward && !forwardExhausted) {\n        if (backwardExhausted) {\n          localOffset++;\n        } else {\n          wantForward = false;\n        } // Check if trying to fit beyond text length, and if not, check it fits\n        // after offset location (or desired location on first iteration)\n\n\n        if (start + localOffset <= maxLine) {\n          return localOffset;\n        }\n\n        forwardExhausted = true;\n      }\n\n      if (!backwardExhausted) {\n        if (!forwardExhausted) {\n          wantForward = true;\n        } // Check if trying to fit before text beginning, and if not, check it fits\n        // before offset location\n\n\n        if (minLine <= start - localOffset) {\n          return -localOffset++;\n        }\n\n        backwardExhausted = true;\n        return iterator();\n      } // We tried to fit hunk before text beginning and beyond text length, then\n      // hunk can't fit on the text. Return undefined\n\n    };\n  }\n\n  function applyPatch(source, uniDiff) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    if (typeof uniDiff === 'string') {\n      uniDiff = parsePatch(uniDiff);\n    }\n\n    if (Array.isArray(uniDiff)) {\n      if (uniDiff.length > 1) {\n        throw new Error('applyPatch only works with a single input.');\n      }\n\n      uniDiff = uniDiff[0];\n    } // Apply the diff to the input\n\n\n    var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n        delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n        hunks = uniDiff.hunks,\n        compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {\n      return line === patchContent;\n    },\n        errorCount = 0,\n        fuzzFactor = options.fuzzFactor || 0,\n        minLine = 0,\n        offset = 0,\n        removeEOFNL,\n        addEOFNL;\n    /**\n     * Checks if the hunk exactly fits on the provided location\n     */\n\n\n    function hunkFits(hunk, toPos) {\n      for (var j = 0; j < hunk.lines.length; j++) {\n        var line = hunk.lines[j],\n            operation = line.length > 0 ? line[0] : ' ',\n            content = line.length > 0 ? line.substr(1) : line;\n\n        if (operation === ' ' || operation === '-') {\n          // Context sanity check\n          if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n            errorCount++;\n\n            if (errorCount > fuzzFactor) {\n              return false;\n            }\n          }\n\n          toPos++;\n        }\n      }\n\n      return true;\n    } // Search best fit offsets for each hunk based on the previous ones\n\n\n    for (var i = 0; i < hunks.length; i++) {\n      var hunk = hunks[i],\n          maxLine = lines.length - hunk.oldLines,\n          localOffset = 0,\n          toPos = offset + hunk.oldStart - 1;\n      var iterator = distanceIterator(toPos, minLine, maxLine);\n\n      for (; localOffset !== undefined; localOffset = iterator()) {\n        if (hunkFits(hunk, toPos + localOffset)) {\n          hunk.offset = offset += localOffset;\n          break;\n        }\n      }\n\n      if (localOffset === undefined) {\n        return false;\n      } // Set lower text limit to end of the current hunk, so next ones don't try\n      // to fit over already patched text\n\n\n      minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n    } // Apply patch hunks\n\n\n    var diffOffset = 0;\n\n    for (var _i = 0; _i < hunks.length; _i++) {\n      var _hunk = hunks[_i],\n          _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n      diffOffset += _hunk.newLines - _hunk.oldLines;\n\n      if (_toPos < 0) {\n        // Creating a new file\n        _toPos = 0;\n      }\n\n      for (var j = 0; j < _hunk.lines.length; j++) {\n        var line = _hunk.lines[j],\n            operation = line.length > 0 ? line[0] : ' ',\n            content = line.length > 0 ? line.substr(1) : line,\n            delimiter = _hunk.linedelimiters[j];\n\n        if (operation === ' ') {\n          _toPos++;\n        } else if (operation === '-') {\n          lines.splice(_toPos, 1);\n          delimiters.splice(_toPos, 1);\n          /* istanbul ignore else */\n        } else if (operation === '+') {\n          lines.splice(_toPos, 0, content);\n          delimiters.splice(_toPos, 0, delimiter);\n          _toPos++;\n        } else if (operation === '\\\\') {\n          var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n          if (previousOperation === '+') {\n            removeEOFNL = true;\n          } else if (previousOperation === '-') {\n            addEOFNL = true;\n          }\n        }\n      }\n    } // Handle EOFNL insertion/removal\n\n\n    if (removeEOFNL) {\n      while (!lines[lines.length - 1]) {\n        lines.pop();\n        delimiters.pop();\n      }\n    } else if (addEOFNL) {\n      lines.push('');\n      delimiters.push('\\n');\n    }\n\n    for (var _k = 0; _k < lines.length - 1; _k++) {\n      lines[_k] = lines[_k] + delimiters[_k];\n    }\n\n    return lines.join('');\n  } // Wrapper that supports multiple file patches via callbacks.\n\n\n  function applyPatches(uniDiff, options) {\n    if (typeof uniDiff === 'string') {\n      uniDiff = parsePatch(uniDiff);\n    }\n\n    var currentIndex = 0;\n\n    function processIndex() {\n      var index = uniDiff[currentIndex++];\n\n      if (!index) {\n        return options.complete();\n      }\n\n      options.loadFile(index, function (err, data) {\n        if (err) {\n          return options.complete(err);\n        }\n\n        var updatedContent = applyPatch(data, index, options);\n        options.patched(index, updatedContent, function (err) {\n          if (err) {\n            return options.complete(err);\n          }\n\n          processIndex();\n        });\n      });\n    }\n\n    processIndex();\n  }\n\n  function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n    if (!options) {\n      options = {};\n    }\n\n    if (typeof options.context === 'undefined') {\n      options.context = 4;\n    }\n\n    var diff = diffLines(oldStr, newStr, options);\n    diff.push({\n      value: '',\n      lines: []\n    }); // Append an empty value to make cleanup easier\n\n    function contextLines(lines) {\n      return lines.map(function (entry) {\n        return ' ' + entry;\n      });\n    }\n\n    var hunks = [];\n    var oldRangeStart = 0,\n        newRangeStart = 0,\n        curRange = [],\n        oldLine = 1,\n        newLine = 1;\n\n    var _loop = function _loop(i) {\n      var current = diff[i],\n          lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n      current.lines = lines;\n\n      if (current.added || current.removed) {\n        var _curRange; // If we have previous context, start with that\n\n\n        if (!oldRangeStart) {\n          var prev = diff[i - 1];\n          oldRangeStart = oldLine;\n          newRangeStart = newLine;\n\n          if (prev) {\n            curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n            oldRangeStart -= curRange.length;\n            newRangeStart -= curRange.length;\n          }\n        } // Output our changes\n\n\n        (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {\n          return (current.added ? '+' : '-') + entry;\n        }))); // Track the updated file position\n\n\n        if (current.added) {\n          newLine += lines.length;\n        } else {\n          oldLine += lines.length;\n        }\n      } else {\n        // Identical context lines. Track line changes\n        if (oldRangeStart) {\n          // Close out any changes that have been output (or join overlapping)\n          if (lines.length <= options.context * 2 && i < diff.length - 2) {\n            var _curRange2; // Overlapping\n\n\n            (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));\n          } else {\n            var _curRange3; // end the range and output\n\n\n            var contextSize = Math.min(lines.length, options.context);\n\n            (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));\n\n            var hunk = {\n              oldStart: oldRangeStart,\n              oldLines: oldLine - oldRangeStart + contextSize,\n              newStart: newRangeStart,\n              newLines: newLine - newRangeStart + contextSize,\n              lines: curRange\n            };\n\n            if (i >= diff.length - 2 && lines.length <= options.context) {\n              // EOF is inside this hunk\n              var oldEOFNewline = /\\n$/.test(oldStr);\n              var newEOFNewline = /\\n$/.test(newStr);\n              var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n              if (!oldEOFNewline && noNlBeforeAdds) {\n                // special case: old has no eol and no trailing context; no-nl can end up before adds\n                curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n              }\n\n              if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n                curRange.push('\\\\ No newline at end of file');\n              }\n            }\n\n            hunks.push(hunk);\n            oldRangeStart = 0;\n            newRangeStart = 0;\n            curRange = [];\n          }\n        }\n\n        oldLine += lines.length;\n        newLine += lines.length;\n      }\n    };\n\n    for (var i = 0; i < diff.length; i++) {\n      _loop(i);\n    }\n\n    return {\n      oldFileName: oldFileName,\n      newFileName: newFileName,\n      oldHeader: oldHeader,\n      newHeader: newHeader,\n      hunks: hunks\n    };\n  }\n\n  function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n    var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);\n    var ret = [];\n\n    if (oldFileName == newFileName) {\n      ret.push('Index: ' + oldFileName);\n    }\n\n    ret.push('===================================================================');\n    ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n    ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n    for (var i = 0; i < diff.hunks.length; i++) {\n      var hunk = diff.hunks[i];\n      ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n      ret.push.apply(ret, hunk.lines);\n    }\n\n    return ret.join('\\n') + '\\n';\n  }\n\n  function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n    return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n  }\n\n  function arrayEqual(a, b) {\n    if (a.length !== b.length) {\n      return false;\n    }\n\n    return arrayStartsWith(a, b);\n  }\n\n  function arrayStartsWith(array, start) {\n    if (start.length > array.length) {\n      return false;\n    }\n\n    for (var i = 0; i < start.length; i++) {\n      if (start[i] !== array[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  function calcLineCount(hunk) {\n    var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),\n        oldLines = _calcOldNewLineCount.oldLines,\n        newLines = _calcOldNewLineCount.newLines;\n\n    if (oldLines !== undefined) {\n      hunk.oldLines = oldLines;\n    } else {\n      delete hunk.oldLines;\n    }\n\n    if (newLines !== undefined) {\n      hunk.newLines = newLines;\n    } else {\n      delete hunk.newLines;\n    }\n  }\n\n  function merge(mine, theirs, base) {\n    mine = loadPatch(mine, base);\n    theirs = loadPatch(theirs, base);\n    var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n    // Leaving sanity checks on this to the API consumer that may know more about the\n    // meaning in their own context.\n\n    if (mine.index || theirs.index) {\n      ret.index = mine.index || theirs.index;\n    }\n\n    if (mine.newFileName || theirs.newFileName) {\n      if (!fileNameChanged(mine)) {\n        // No header or no change in ours, use theirs (and ours if theirs does not exist)\n        ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n        ret.newFileName = theirs.newFileName || mine.newFileName;\n        ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n        ret.newHeader = theirs.newHeader || mine.newHeader;\n      } else if (!fileNameChanged(theirs)) {\n        // No header or no change in theirs, use ours\n        ret.oldFileName = mine.oldFileName;\n        ret.newFileName = mine.newFileName;\n        ret.oldHeader = mine.oldHeader;\n        ret.newHeader = mine.newHeader;\n      } else {\n        // Both changed... figure it out\n        ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n        ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n        ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n        ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n      }\n    }\n\n    ret.hunks = [];\n    var mineIndex = 0,\n        theirsIndex = 0,\n        mineOffset = 0,\n        theirsOffset = 0;\n\n    while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n      var mineCurrent = mine.hunks[mineIndex] || {\n        oldStart: Infinity\n      },\n          theirsCurrent = theirs.hunks[theirsIndex] || {\n        oldStart: Infinity\n      };\n\n      if (hunkBefore(mineCurrent, theirsCurrent)) {\n        // This patch does not overlap with any of the others, yay.\n        ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n        mineIndex++;\n        theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n      } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n        // This patch does not overlap with any of the others, yay.\n        ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n        theirsIndex++;\n        mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n      } else {\n        // Overlap, merge as best we can\n        var mergedHunk = {\n          oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n          oldLines: 0,\n          newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n          newLines: 0,\n          lines: []\n        };\n        mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n        theirsIndex++;\n        mineIndex++;\n        ret.hunks.push(mergedHunk);\n      }\n    }\n\n    return ret;\n  }\n\n  function loadPatch(param, base) {\n    if (typeof param === 'string') {\n      if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n        return parsePatch(param)[0];\n      }\n\n      if (!base) {\n        throw new Error('Must provide a base reference or pass in a patch');\n      }\n\n      return structuredPatch(undefined, undefined, base, param);\n    }\n\n    return param;\n  }\n\n  function fileNameChanged(patch) {\n    return patch.newFileName && patch.newFileName !== patch.oldFileName;\n  }\n\n  function selectField(index, mine, theirs) {\n    if (mine === theirs) {\n      return mine;\n    } else {\n      index.conflict = true;\n      return {\n        mine: mine,\n        theirs: theirs\n      };\n    }\n  }\n\n  function hunkBefore(test, check) {\n    return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n  }\n\n  function cloneHunk(hunk, offset) {\n    return {\n      oldStart: hunk.oldStart,\n      oldLines: hunk.oldLines,\n      newStart: hunk.newStart + offset,\n      newLines: hunk.newLines,\n      lines: hunk.lines\n    };\n  }\n\n  function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n    // This will generally result in a conflicted hunk, but there are cases where the context\n    // is the only overlap where we can successfully merge the content here.\n    var mine = {\n      offset: mineOffset,\n      lines: mineLines,\n      index: 0\n    },\n        their = {\n      offset: theirOffset,\n      lines: theirLines,\n      index: 0\n    }; // Handle any leading content\n\n    insertLeading(hunk, mine, their);\n    insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n    while (mine.index < mine.lines.length && their.index < their.lines.length) {\n      var mineCurrent = mine.lines[mine.index],\n          theirCurrent = their.lines[their.index];\n\n      if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n        // Both modified ...\n        mutualChange(hunk, mine, their);\n      } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n        var _hunk$lines; // Mine inserted\n\n\n        (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));\n      } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n        var _hunk$lines2; // Theirs inserted\n\n\n        (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));\n      } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n        // Mine removed or edited\n        removal(hunk, mine, their);\n      } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n        // Their removed or edited\n        removal(hunk, their, mine, true);\n      } else if (mineCurrent === theirCurrent) {\n        // Context identity\n        hunk.lines.push(mineCurrent);\n        mine.index++;\n        their.index++;\n      } else {\n        // Context mismatch\n        conflict(hunk, collectChange(mine), collectChange(their));\n      }\n    } // Now push anything that may be remaining\n\n\n    insertTrailing(hunk, mine);\n    insertTrailing(hunk, their);\n    calcLineCount(hunk);\n  }\n\n  function mutualChange(hunk, mine, their) {\n    var myChanges = collectChange(mine),\n        theirChanges = collectChange(their);\n\n    if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n      // Special case for remove changes that are supersets of one another\n      if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n        var _hunk$lines3;\n\n        (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));\n\n        return;\n      } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n        var _hunk$lines4;\n\n        (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));\n\n        return;\n      }\n    } else if (arrayEqual(myChanges, theirChanges)) {\n      var _hunk$lines5;\n\n      (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));\n\n      return;\n    }\n\n    conflict(hunk, myChanges, theirChanges);\n  }\n\n  function removal(hunk, mine, their, swap) {\n    var myChanges = collectChange(mine),\n        theirChanges = collectContext(their, myChanges);\n\n    if (theirChanges.merged) {\n      var _hunk$lines6;\n\n      (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));\n    } else {\n      conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n    }\n  }\n\n  function conflict(hunk, mine, their) {\n    hunk.conflict = true;\n    hunk.lines.push({\n      conflict: true,\n      mine: mine,\n      theirs: their\n    });\n  }\n\n  function insertLeading(hunk, insert, their) {\n    while (insert.offset < their.offset && insert.index < insert.lines.length) {\n      var line = insert.lines[insert.index++];\n      hunk.lines.push(line);\n      insert.offset++;\n    }\n  }\n\n  function insertTrailing(hunk, insert) {\n    while (insert.index < insert.lines.length) {\n      var line = insert.lines[insert.index++];\n      hunk.lines.push(line);\n    }\n  }\n\n  function collectChange(state) {\n    var ret = [],\n        operation = state.lines[state.index][0];\n\n    while (state.index < state.lines.length) {\n      var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n      if (operation === '-' && line[0] === '+') {\n        operation = '+';\n      }\n\n      if (operation === line[0]) {\n        ret.push(line);\n        state.index++;\n      } else {\n        break;\n      }\n    }\n\n    return ret;\n  }\n\n  function collectContext(state, matchChanges) {\n    var changes = [],\n        merged = [],\n        matchIndex = 0,\n        contextChanges = false,\n        conflicted = false;\n\n    while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n      var change = state.lines[state.index],\n          match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n      if (match[0] === '+') {\n        break;\n      }\n\n      contextChanges = contextChanges || change[0] !== ' ';\n      merged.push(match);\n      matchIndex++; // Consume any additions in the other block as a conflict to attempt\n      // to pull in the remaining context after this\n\n      if (change[0] === '+') {\n        conflicted = true;\n\n        while (change[0] === '+') {\n          changes.push(change);\n          change = state.lines[++state.index];\n        }\n      }\n\n      if (match.substr(1) === change.substr(1)) {\n        changes.push(change);\n        state.index++;\n      } else {\n        conflicted = true;\n      }\n    }\n\n    if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n      conflicted = true;\n    }\n\n    if (conflicted) {\n      return changes;\n    }\n\n    while (matchIndex < matchChanges.length) {\n      merged.push(matchChanges[matchIndex++]);\n    }\n\n    return {\n      merged: merged,\n      changes: changes\n    };\n  }\n\n  function allRemoves(changes) {\n    return changes.reduce(function (prev, change) {\n      return prev && change[0] === '-';\n    }, true);\n  }\n\n  function skipRemoveSuperset(state, removeChanges, delta) {\n    for (var i = 0; i < delta; i++) {\n      var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n      if (state.lines[state.index + i] !== ' ' + changeContent) {\n        return false;\n      }\n    }\n\n    state.index += delta;\n    return true;\n  }\n\n  function calcOldNewLineCount(lines) {\n    var oldLines = 0;\n    var newLines = 0;\n    lines.forEach(function (line) {\n      if (typeof line !== 'string') {\n        var myCount = calcOldNewLineCount(line.mine);\n        var theirCount = calcOldNewLineCount(line.theirs);\n\n        if (oldLines !== undefined) {\n          if (myCount.oldLines === theirCount.oldLines) {\n            oldLines += myCount.oldLines;\n          } else {\n            oldLines = undefined;\n          }\n        }\n\n        if (newLines !== undefined) {\n          if (myCount.newLines === theirCount.newLines) {\n            newLines += myCount.newLines;\n          } else {\n            newLines = undefined;\n          }\n        }\n      } else {\n        if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n          newLines++;\n        }\n\n        if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n          oldLines++;\n        }\n      }\n    });\n    return {\n      oldLines: oldLines,\n      newLines: newLines\n    };\n  } // See: http://code.google.com/p/google-diff-match-patch/wiki/API\n\n\n  function convertChangesToDMP(changes) {\n    var ret = [],\n        change,\n        operation;\n\n    for (var i = 0; i < changes.length; i++) {\n      change = changes[i];\n\n      if (change.added) {\n        operation = 1;\n      } else if (change.removed) {\n        operation = -1;\n      } else {\n        operation = 0;\n      }\n\n      ret.push([operation, change.value]);\n    }\n\n    return ret;\n  }\n\n  function convertChangesToXML(changes) {\n    var ret = [];\n\n    for (var i = 0; i < changes.length; i++) {\n      var change = changes[i];\n\n      if (change.added) {\n        ret.push('<ins>');\n      } else if (change.removed) {\n        ret.push('<del>');\n      }\n\n      ret.push(escapeHTML(change.value));\n\n      if (change.added) {\n        ret.push('</ins>');\n      } else if (change.removed) {\n        ret.push('</del>');\n      }\n    }\n\n    return ret.join('');\n  }\n\n  function escapeHTML(s) {\n    var n = s;\n    n = n.replace(/&/g, '&');\n    n = n.replace(/</g, '<');\n    n = n.replace(/>/g, '>');\n    n = n.replace(/\"/g, '"');\n    return n;\n  }\n  /* See LICENSE file for terms of use */\n\n\n  exports.Diff = Diff;\n  exports.diffChars = diffChars;\n  exports.diffWords = diffWords;\n  exports.diffWordsWithSpace = diffWordsWithSpace;\n  exports.diffLines = diffLines;\n  exports.diffTrimmedLines = diffTrimmedLines;\n  exports.diffSentences = diffSentences;\n  exports.diffCss = diffCss;\n  exports.diffJson = diffJson;\n  exports.diffArrays = diffArrays;\n  exports.structuredPatch = structuredPatch;\n  exports.createTwoFilesPatch = createTwoFilesPatch;\n  exports.createPatch = createPatch;\n  exports.applyPatch = applyPatch;\n  exports.applyPatches = applyPatches;\n  exports.parsePatch = parsePatch;\n  exports.merge = merge;\n  exports.convertChangesToDMP = convertChangesToDMP;\n  exports.convertChangesToXML = convertChangesToXML;\n  exports.canonicalize = canonicalize;\n  Object.defineProperty(exports, '__esModule', {\n    value: true\n  });\n});","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n/** Used to stand-in for `undefined` hash values. */\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n/** Used as references for various `Number` constants. */\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    undefinedTag = '[object Undefined]',\n    weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Detect free variable `exports`. */\n\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Detect free variable `process` from Node.js. */\n\nvar freeProcess = moduleExports && freeGlobal.process;\n/** Used to access faster Node.js helpers. */\n\nvar nodeUtil = function () {\n  try {\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}();\n/* Node.js helper references. */\n\n\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n\n  return result;\n}\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n\n\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n\n  return array;\n}\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\n\n\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n\n\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n\n  return result;\n}\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\n\nfunction baseUnary(func) {\n  return function (value) {\n    return func(value);\n  };\n}\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\n\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n\n\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n  map.forEach(function (value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n\n\nfunction overArg(func, transform) {\n  return function (arg) {\n    return func(transform(arg));\n  };\n}\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n\n\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n  set.forEach(function (value) {\n    result[++index] = value;\n  });\n  return result;\n}\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n/** Used to detect overreaching core-js shims. */\n\nvar coreJsData = root['__core-js_shared__'];\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to detect methods masquerading as native. */\n\nvar maskSrcKey = function () {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\n\nvar nativeObjectToString = objectProto.toString;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeKeys = overArg(Object.keys, Object);\n/* Built-in method references that are verified to be native. */\n\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n/** Used to detect maps, sets, and weakmaps. */\n\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n  this.clear();\n\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction hashGet(key) {\n  var data = this.__data__;\n\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\n\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n  return this;\n} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n  this.clear();\n\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\n\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n\n  var lastIndex = data.length - 1;\n\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n\n  --this.size;\n  return true;\n}\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n  return index < 0 ? undefined : data[index][1];\n}\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n\n  return this;\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n  this.clear();\n\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash(),\n    'map': new (Map || ListCache)(),\n    'string': new Hash()\n  };\n}\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n  this.__data__ = new MapCache();\n\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\n\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n\n  return this;\n}\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n\n\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\nfunction stackClear() {\n  this.__data__ = new ListCache();\n  this.size = 0;\n}\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n  this.size = data.size;\n  return result;\n}\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n\n\nfunction stackSet(key, value) {\n  var data = this.__data__;\n\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n\n    if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n\n    data = this.__data__ = new MapCache(pairs);\n  }\n\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n} // Add methods to `Stack`.\n\n\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n    key == 'length' || isBuff && (key == 'offset' || key == 'parent') || isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n    isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n\n  return result;\n}\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n\n  return -1;\n}\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\n\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n\n  return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n\n\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n\n\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n\n  if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n    return value !== value && other !== other;\n  }\n\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n\n    objIsArr = true;\n    objIsObj = false;\n  }\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack());\n    return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n      stack || (stack = new Stack());\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n\n  if (!isSameTag) {\n    return false;\n  }\n\n  stack || (stack = new Stack());\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\n\n\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\n\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n\n  var result = [];\n\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n\n  return result;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n\n\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  } // Assume cyclic values are equal.\n\n\n  var stacked = stack.get(array);\n\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n\n  var index = -1,\n      result = true,\n      seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n  stack.set(array, other);\n  stack.set(other, array); // Ignore non-index properties.\n\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n    }\n\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n\n      result = false;\n      break;\n    } // Recursively compare arrays (susceptible to call stack limits).\n\n\n    if (seen) {\n      if (!arraySome(other, function (othValue, othIndex) {\n        if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n          return seen.push(othIndex);\n        }\n      })) {\n        result = false;\n        break;\n      }\n    } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n      result = false;\n      break;\n    }\n  }\n\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n        return false;\n      }\n\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == other + '';\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      } // Assume cyclic values are equal.\n\n\n      var stacked = stack.get(object);\n\n      if (stacked) {\n        return stacked == other;\n      }\n\n      bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n\n  }\n\n  return false;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n\n  var index = objLength;\n\n  while (index--) {\n    var key = objProps[index];\n\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  } // Assume cyclic values are equal.\n\n\n  var stacked = stack.get(object);\n\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n  var skipCtor = isPartial;\n\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n    } // Recursively compare objects (susceptible to call stack limits).\n\n\n    if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n      result = false;\n      break;\n    }\n\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n    if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n\n\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\n\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n\n  return result;\n}\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\n\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n  if (object == null) {\n    return [];\n  }\n\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function (symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nvar getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n  getTag = function getTag(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString:\n          return dataViewTag;\n\n        case mapCtorString:\n          return mapTag;\n\n        case promiseCtorString:\n          return promiseTag;\n\n        case setCtorString:\n          return setTag;\n\n        case weakMapCtorString:\n          return weakMapTag;\n      }\n    }\n\n    return result;\n  };\n}\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\n\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\n\nfunction isKeyable(value) {\n  var type = typeof value;\n  return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\nfunction isMasked(func) {\n  return !!maskSrcKey && maskSrcKey in func;\n}\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\n\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n  return value === proto;\n}\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\n\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n\n\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n\n    try {\n      return func + '';\n    } catch (e) {}\n  }\n\n  return '';\n}\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\n\nfunction eq(value, other) {\n  return value === other || value !== value && other !== other;\n}\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\n\nvar isArguments = baseIsArguments(function () {\n  return arguments;\n}()) ? baseIsArguments : function (value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\nvar isArray = Array.isArray;\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\n\nvar isBuffer = nativeIsBuffer || stubFalse;\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\n\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  } // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\n\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\n\nfunction isLength(value) {\n  return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n\n\nfunction stubArray() {\n  return [];\n}\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n\n\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = isEqual;","// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = function () {\n  // private property\n  var f = String.fromCharCode;\n  var keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n  var keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\n  var baseReverseDic = {};\n\n  function getBaseValue(alphabet, character) {\n    if (!baseReverseDic[alphabet]) {\n      baseReverseDic[alphabet] = {};\n\n      for (var i = 0; i < alphabet.length; i++) {\n        baseReverseDic[alphabet][alphabet.charAt(i)] = i;\n      }\n    }\n\n    return baseReverseDic[alphabet][character];\n  }\n\n  var LZString = {\n    compressToBase64: function compressToBase64(input) {\n      if (input == null) return \"\";\n\n      var res = LZString._compress(input, 6, function (a) {\n        return keyStrBase64.charAt(a);\n      });\n\n      switch (res.length % 4) {\n        // To produce valid Base64\n        default: // When could this happen ?\n\n        case 0:\n          return res;\n\n        case 1:\n          return res + \"===\";\n\n        case 2:\n          return res + \"==\";\n\n        case 3:\n          return res + \"=\";\n      }\n    },\n    decompressFromBase64: function decompressFromBase64(input) {\n      if (input == null) return \"\";\n      if (input == \"\") return null;\n      return LZString._decompress(input.length, 32, function (index) {\n        return getBaseValue(keyStrBase64, input.charAt(index));\n      });\n    },\n    compressToUTF16: function compressToUTF16(input) {\n      if (input == null) return \"\";\n      return LZString._compress(input, 15, function (a) {\n        return f(a + 32);\n      }) + \" \";\n    },\n    decompressFromUTF16: function decompressFromUTF16(compressed) {\n      if (compressed == null) return \"\";\n      if (compressed == \"\") return null;\n      return LZString._decompress(compressed.length, 16384, function (index) {\n        return compressed.charCodeAt(index) - 32;\n      });\n    },\n    //compress into uint8array (UCS-2 big endian format)\n    compressToUint8Array: function compressToUint8Array(uncompressed) {\n      var compressed = LZString.compress(uncompressed);\n      var buf = new Uint8Array(compressed.length * 2); // 2 bytes per character\n\n      for (var i = 0, TotalLen = compressed.length; i < TotalLen; i++) {\n        var current_value = compressed.charCodeAt(i);\n        buf[i * 2] = current_value >>> 8;\n        buf[i * 2 + 1] = current_value % 256;\n      }\n\n      return buf;\n    },\n    //decompress from uint8array (UCS-2 big endian format)\n    decompressFromUint8Array: function decompressFromUint8Array(compressed) {\n      if (compressed === null || compressed === undefined) {\n        return LZString.decompress(compressed);\n      } else {\n        var buf = new Array(compressed.length / 2); // 2 bytes per character\n\n        for (var i = 0, TotalLen = buf.length; i < TotalLen; i++) {\n          buf[i] = compressed[i * 2] * 256 + compressed[i * 2 + 1];\n        }\n\n        var result = [];\n        buf.forEach(function (c) {\n          result.push(f(c));\n        });\n        return LZString.decompress(result.join(''));\n      }\n    },\n    //compress into a string that is already URI encoded\n    compressToEncodedURIComponent: function compressToEncodedURIComponent(input) {\n      if (input == null) return \"\";\n      return LZString._compress(input, 6, function (a) {\n        return keyStrUriSafe.charAt(a);\n      });\n    },\n    //decompress from an output of compressToEncodedURIComponent\n    decompressFromEncodedURIComponent: function decompressFromEncodedURIComponent(input) {\n      if (input == null) return \"\";\n      if (input == \"\") return null;\n      input = input.replace(/ /g, \"+\");\n      return LZString._decompress(input.length, 32, function (index) {\n        return getBaseValue(keyStrUriSafe, input.charAt(index));\n      });\n    },\n    compress: function compress(uncompressed) {\n      return LZString._compress(uncompressed, 16, function (a) {\n        return f(a);\n      });\n    },\n    _compress: function _compress(uncompressed, bitsPerChar, getCharFromInt) {\n      if (uncompressed == null) return \"\";\n      var i,\n          value,\n          context_dictionary = {},\n          context_dictionaryToCreate = {},\n          context_c = \"\",\n          context_wc = \"\",\n          context_w = \"\",\n          context_enlargeIn = 2,\n          // Compensate for the first entry which should not count\n      context_dictSize = 3,\n          context_numBits = 2,\n          context_data = [],\n          context_data_val = 0,\n          context_data_position = 0,\n          ii;\n\n      for (ii = 0; ii < uncompressed.length; ii += 1) {\n        context_c = uncompressed.charAt(ii);\n\n        if (!Object.prototype.hasOwnProperty.call(context_dictionary, context_c)) {\n          context_dictionary[context_c] = context_dictSize++;\n          context_dictionaryToCreate[context_c] = true;\n        }\n\n        context_wc = context_w + context_c;\n\n        if (Object.prototype.hasOwnProperty.call(context_dictionary, context_wc)) {\n          context_w = context_wc;\n        } else {\n          if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) {\n            if (context_w.charCodeAt(0) < 256) {\n              for (i = 0; i < context_numBits; i++) {\n                context_data_val = context_data_val << 1;\n\n                if (context_data_position == bitsPerChar - 1) {\n                  context_data_position = 0;\n                  context_data.push(getCharFromInt(context_data_val));\n                  context_data_val = 0;\n                } else {\n                  context_data_position++;\n                }\n              }\n\n              value = context_w.charCodeAt(0);\n\n              for (i = 0; i < 8; i++) {\n                context_data_val = context_data_val << 1 | value & 1;\n\n                if (context_data_position == bitsPerChar - 1) {\n                  context_data_position = 0;\n                  context_data.push(getCharFromInt(context_data_val));\n                  context_data_val = 0;\n                } else {\n                  context_data_position++;\n                }\n\n                value = value >> 1;\n              }\n            } else {\n              value = 1;\n\n              for (i = 0; i < context_numBits; i++) {\n                context_data_val = context_data_val << 1 | value;\n\n                if (context_data_position == bitsPerChar - 1) {\n                  context_data_position = 0;\n                  context_data.push(getCharFromInt(context_data_val));\n                  context_data_val = 0;\n                } else {\n                  context_data_position++;\n                }\n\n                value = 0;\n              }\n\n              value = context_w.charCodeAt(0);\n\n              for (i = 0; i < 16; i++) {\n                context_data_val = context_data_val << 1 | value & 1;\n\n                if (context_data_position == bitsPerChar - 1) {\n                  context_data_position = 0;\n                  context_data.push(getCharFromInt(context_data_val));\n                  context_data_val = 0;\n                } else {\n                  context_data_position++;\n                }\n\n                value = value >> 1;\n              }\n            }\n\n            context_enlargeIn--;\n\n            if (context_enlargeIn == 0) {\n              context_enlargeIn = Math.pow(2, context_numBits);\n              context_numBits++;\n            }\n\n            delete context_dictionaryToCreate[context_w];\n          } else {\n            value = context_dictionary[context_w];\n\n            for (i = 0; i < context_numBits; i++) {\n              context_data_val = context_data_val << 1 | value & 1;\n\n              if (context_data_position == bitsPerChar - 1) {\n                context_data_position = 0;\n                context_data.push(getCharFromInt(context_data_val));\n                context_data_val = 0;\n              } else {\n                context_data_position++;\n              }\n\n              value = value >> 1;\n            }\n          }\n\n          context_enlargeIn--;\n\n          if (context_enlargeIn == 0) {\n            context_enlargeIn = Math.pow(2, context_numBits);\n            context_numBits++;\n          } // Add wc to the dictionary.\n\n\n          context_dictionary[context_wc] = context_dictSize++;\n          context_w = String(context_c);\n        }\n      } // Output the code for w.\n\n\n      if (context_w !== \"\") {\n        if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) {\n          if (context_w.charCodeAt(0) < 256) {\n            for (i = 0; i < context_numBits; i++) {\n              context_data_val = context_data_val << 1;\n\n              if (context_data_position == bitsPerChar - 1) {\n                context_data_position = 0;\n                context_data.push(getCharFromInt(context_data_val));\n                context_data_val = 0;\n              } else {\n                context_data_position++;\n              }\n            }\n\n            value = context_w.charCodeAt(0);\n\n            for (i = 0; i < 8; i++) {\n              context_data_val = context_data_val << 1 | value & 1;\n\n              if (context_data_position == bitsPerChar - 1) {\n                context_data_position = 0;\n                context_data.push(getCharFromInt(context_data_val));\n                context_data_val = 0;\n              } else {\n                context_data_position++;\n              }\n\n              value = value >> 1;\n            }\n          } else {\n            value = 1;\n\n            for (i = 0; i < context_numBits; i++) {\n              context_data_val = context_data_val << 1 | value;\n\n              if (context_data_position == bitsPerChar - 1) {\n                context_data_position = 0;\n                context_data.push(getCharFromInt(context_data_val));\n                context_data_val = 0;\n              } else {\n                context_data_position++;\n              }\n\n              value = 0;\n            }\n\n            value = context_w.charCodeAt(0);\n\n            for (i = 0; i < 16; i++) {\n              context_data_val = context_data_val << 1 | value & 1;\n\n              if (context_data_position == bitsPerChar - 1) {\n                context_data_position = 0;\n                context_data.push(getCharFromInt(context_data_val));\n                context_data_val = 0;\n              } else {\n                context_data_position++;\n              }\n\n              value = value >> 1;\n            }\n          }\n\n          context_enlargeIn--;\n\n          if (context_enlargeIn == 0) {\n            context_enlargeIn = Math.pow(2, context_numBits);\n            context_numBits++;\n          }\n\n          delete context_dictionaryToCreate[context_w];\n        } else {\n          value = context_dictionary[context_w];\n\n          for (i = 0; i < context_numBits; i++) {\n            context_data_val = context_data_val << 1 | value & 1;\n\n            if (context_data_position == bitsPerChar - 1) {\n              context_data_position = 0;\n              context_data.push(getCharFromInt(context_data_val));\n              context_data_val = 0;\n            } else {\n              context_data_position++;\n            }\n\n            value = value >> 1;\n          }\n        }\n\n        context_enlargeIn--;\n\n        if (context_enlargeIn == 0) {\n          context_enlargeIn = Math.pow(2, context_numBits);\n          context_numBits++;\n        }\n      } // Mark the end of the stream\n\n\n      value = 2;\n\n      for (i = 0; i < context_numBits; i++) {\n        context_data_val = context_data_val << 1 | value & 1;\n\n        if (context_data_position == bitsPerChar - 1) {\n          context_data_position = 0;\n          context_data.push(getCharFromInt(context_data_val));\n          context_data_val = 0;\n        } else {\n          context_data_position++;\n        }\n\n        value = value >> 1;\n      } // Flush the last char\n\n\n      while (true) {\n        context_data_val = context_data_val << 1;\n\n        if (context_data_position == bitsPerChar - 1) {\n          context_data.push(getCharFromInt(context_data_val));\n          break;\n        } else context_data_position++;\n      }\n\n      return context_data.join('');\n    },\n    decompress: function decompress(compressed) {\n      if (compressed == null) return \"\";\n      if (compressed == \"\") return null;\n      return LZString._decompress(compressed.length, 32768, function (index) {\n        return compressed.charCodeAt(index);\n      });\n    },\n    _decompress: function _decompress(length, resetValue, getNextValue) {\n      var dictionary = [],\n          next,\n          enlargeIn = 4,\n          dictSize = 4,\n          numBits = 3,\n          entry = \"\",\n          result = [],\n          i,\n          w,\n          bits,\n          resb,\n          maxpower,\n          power,\n          c,\n          data = {\n        val: getNextValue(0),\n        position: resetValue,\n        index: 1\n      };\n\n      for (i = 0; i < 3; i += 1) {\n        dictionary[i] = i;\n      }\n\n      bits = 0;\n      maxpower = Math.pow(2, 2);\n      power = 1;\n\n      while (power != maxpower) {\n        resb = data.val & data.position;\n        data.position >>= 1;\n\n        if (data.position == 0) {\n          data.position = resetValue;\n          data.val = getNextValue(data.index++);\n        }\n\n        bits |= (resb > 0 ? 1 : 0) * power;\n        power <<= 1;\n      }\n\n      switch (next = bits) {\n        case 0:\n          bits = 0;\n          maxpower = Math.pow(2, 8);\n          power = 1;\n\n          while (power != maxpower) {\n            resb = data.val & data.position;\n            data.position >>= 1;\n\n            if (data.position == 0) {\n              data.position = resetValue;\n              data.val = getNextValue(data.index++);\n            }\n\n            bits |= (resb > 0 ? 1 : 0) * power;\n            power <<= 1;\n          }\n\n          c = f(bits);\n          break;\n\n        case 1:\n          bits = 0;\n          maxpower = Math.pow(2, 16);\n          power = 1;\n\n          while (power != maxpower) {\n            resb = data.val & data.position;\n            data.position >>= 1;\n\n            if (data.position == 0) {\n              data.position = resetValue;\n              data.val = getNextValue(data.index++);\n            }\n\n            bits |= (resb > 0 ? 1 : 0) * power;\n            power <<= 1;\n          }\n\n          c = f(bits);\n          break;\n\n        case 2:\n          return \"\";\n      }\n\n      dictionary[3] = c;\n      w = c;\n      result.push(c);\n\n      while (true) {\n        if (data.index > length) {\n          return \"\";\n        }\n\n        bits = 0;\n        maxpower = Math.pow(2, numBits);\n        power = 1;\n\n        while (power != maxpower) {\n          resb = data.val & data.position;\n          data.position >>= 1;\n\n          if (data.position == 0) {\n            data.position = resetValue;\n            data.val = getNextValue(data.index++);\n          }\n\n          bits |= (resb > 0 ? 1 : 0) * power;\n          power <<= 1;\n        }\n\n        switch (c = bits) {\n          case 0:\n            bits = 0;\n            maxpower = Math.pow(2, 8);\n            power = 1;\n\n            while (power != maxpower) {\n              resb = data.val & data.position;\n              data.position >>= 1;\n\n              if (data.position == 0) {\n                data.position = resetValue;\n                data.val = getNextValue(data.index++);\n              }\n\n              bits |= (resb > 0 ? 1 : 0) * power;\n              power <<= 1;\n            }\n\n            dictionary[dictSize++] = f(bits);\n            c = dictSize - 1;\n            enlargeIn--;\n            break;\n\n          case 1:\n            bits = 0;\n            maxpower = Math.pow(2, 16);\n            power = 1;\n\n            while (power != maxpower) {\n              resb = data.val & data.position;\n              data.position >>= 1;\n\n              if (data.position == 0) {\n                data.position = resetValue;\n                data.val = getNextValue(data.index++);\n              }\n\n              bits |= (resb > 0 ? 1 : 0) * power;\n              power <<= 1;\n            }\n\n            dictionary[dictSize++] = f(bits);\n            c = dictSize - 1;\n            enlargeIn--;\n            break;\n\n          case 2:\n            return result.join('');\n        }\n\n        if (enlargeIn == 0) {\n          enlargeIn = Math.pow(2, numBits);\n          numBits++;\n        }\n\n        if (dictionary[c]) {\n          entry = dictionary[c];\n        } else {\n          if (c === dictSize) {\n            entry = w + w.charAt(0);\n          } else {\n            return null;\n          }\n        }\n\n        result.push(entry); // Add w+entry[0] to the dictionary.\n\n        dictionary[dictSize++] = w + entry.charAt(0);\n        enlargeIn--;\n        w = entry;\n\n        if (enlargeIn == 0) {\n          enlargeIn = Math.pow(2, numBits);\n          numBits++;\n        }\n      }\n    }\n  };\n  return LZString;\n}();\n\nif (typeof define === 'function' && define.amd) {\n  define(function () {\n    return LZString;\n  });\n} else if (typeof module !== 'undefined' && module != null) {\n  module.exports = LZString;\n}","\"use strict\";\n\nvar _classCallCheck = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/classCallCheck\");\n\nvar _createClass = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/createClass\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar OnigScanner_1 = require(\"./OnigScanner\");\n\nvar OnigRegExp = /*#__PURE__*/function () {\n  /**\n   * Create a new regex with the given pattern\n   * @param source A string pattern\n   */\n  function OnigRegExp(source) {\n    _classCallCheck(this, OnigRegExp);\n\n    this.source = source;\n\n    try {\n      this.scanner = new OnigScanner_1.default([this.source]);\n    } catch (error) {// doesn't make much sense, but this to pass atom/node-oniguruam tests\n    }\n  }\n  /**\n   * Synchronously search the string for a match starting at the given position\n   * @param string The string to search\n   * @param startPosition The optional position to start the search at, defaults to `0`\n   */\n\n\n  _createClass(OnigRegExp, [{\n    key: \"searchSync\",\n    value: function searchSync(string, startPosition) {\n      var match;\n\n      if (startPosition == null) {\n        startPosition = 0;\n      }\n\n      match = this.scanner.findNextMatchSync(string, startPosition);\n      return this.captureIndicesForMatch(string, match);\n    }\n    /**\n     * Search the string for a match starting at the given position\n     * @param string The string to search\n     * @param startPosition The optional position to start the search at, defaults to `0`\n     * @param callback The `(error, match)` function to call when done, match will be null if no matches were found. match will be an array of objects for each matched group on a successful search\n     */\n\n  }, {\n    key: \"search\",\n    value: function search(string, startPosition, callback) {\n      if (startPosition == null) {\n        startPosition = 0;\n      }\n\n      if (typeof startPosition === 'function') {\n        callback = startPosition;\n        startPosition = 0;\n      }\n\n      try {\n        var ret = this.searchSync(string, startPosition);\n        callback(null, ret);\n      } catch (error) {\n        callback(error);\n      }\n    }\n    /**\n     * Synchronously test if this regular expression matches the given string\n     * @param string The string to test against\n     */\n\n  }, {\n    key: \"testSync\",\n    value: function testSync(string) {\n      if (typeof this.source === 'boolean' || typeof string === 'boolean') {\n        return this.source === string;\n      }\n\n      return this.searchSync(string) != null;\n    }\n    /**\n     * Test if this regular expression matches the given string\n     * @param string The string to test against\n     * @param callback The (error, matches) function to call when done, matches will be true if at least one match is found, false otherwise\n     */\n\n  }, {\n    key: \"test\",\n    value: function test(string, callback) {\n      if (typeof callback !== 'function') {\n        callback = function callback() {};\n      }\n\n      try {\n        callback(null, this.testSync(string));\n      } catch (error) {\n        callback(error);\n      }\n    }\n  }, {\n    key: \"captureIndicesForMatch\",\n    value: function captureIndicesForMatch(string, match) {\n      if (match != null) {\n        var captureIndices = match.captureIndices;\n        var capture;\n        string = this.scanner.convertToString(string);\n\n        for (var i = 0; i < captureIndices.length; i++) {\n          capture = captureIndices[i];\n          capture.match = string.slice(capture.start, capture.end);\n        }\n\n        return captureIndices;\n      } else {\n        return null;\n      }\n    }\n  }]);\n\n  return OnigRegExp;\n}();\n\nexports.default = OnigRegExp;","\"use strict\";\n\nvar _slicedToArray = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/slicedToArray\");\n\nvar _classCallCheck = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/classCallCheck\");\n\nvar _createClass = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/createClass\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar LRUCache = require(\"lru-cache\");\n\nvar onigasmH_1 = require(\"./onigasmH\");\n\nvar OnigString_1 = require(\"./OnigString\");\n/**\n * Allocates space on the heap and copies the string bytes on to it\n * @param str\n * @returns pointer to the first byte's address on heap\n */\n\n\nfunction mallocAndWriteString(str) {\n  var ptr = onigasmH_1.onigasmH._malloc(str.utf8Bytes.length);\n\n  onigasmH_1.onigasmH.HEAPU8.set(str.utf8Bytes, ptr);\n  return ptr;\n}\n\nfunction convertUTF8BytesFromPtrToString(ptr) {\n  var chars = [];\n  var i = 0;\n\n  while (onigasmH_1.onigasmH.HEAPU8[ptr] !== 0x00) {\n    chars[i++] = onigasmH_1.onigasmH.HEAPU8[ptr++];\n  }\n\n  return chars.join();\n}\n\nvar cache = new LRUCache({\n  dispose: function dispose(scanner, info) {\n    var regexTPtrsPtr = onigasmH_1.onigasmH._malloc(info.regexTPtrs.length);\n\n    onigasmH_1.onigasmH.HEAPU8.set(info.regexTPtrs, regexTPtrsPtr);\n\n    var status = onigasmH_1.onigasmH._disposeCompiledPatterns(regexTPtrsPtr, scanner.patterns.length);\n\n    if (status !== 0) {\n      var errMessage = convertUTF8BytesFromPtrToString(onigasmH_1.onigasmH._getLastError());\n      throw new Error(errMessage);\n    }\n\n    onigasmH_1.onigasmH._free(regexTPtrsPtr);\n  },\n  max: 1000\n});\n\nvar OnigScanner = /*#__PURE__*/function () {\n  /**\n   * Create a new scanner with the given patterns\n   * @param patterns  An array of string patterns\n   */\n  function OnigScanner(patterns) {\n    _classCallCheck(this, OnigScanner);\n\n    if (onigasmH_1.onigasmH === null) {\n      throw new Error(\"Onigasm has not been initialized, call loadWASM from 'onigasm' exports before using any other API\");\n    }\n\n    for (var i = 0; i < patterns.length; i++) {\n      var pattern = patterns[i];\n\n      if (typeof pattern !== 'string') {\n        throw new TypeError(\"First parameter to OnigScanner constructor must be array of (pattern) strings\");\n      }\n    }\n\n    this.sources = patterns.slice();\n  }\n\n  _createClass(OnigScanner, [{\n    key: \"patterns\",\n    get: function get() {\n      return this.sources.slice();\n    }\n    /**\n     * Find the next match from a given position\n     * @param string The string to search\n     * @param startPosition The optional position to start at, defaults to 0\n     * @param callback The (error, match) function to call when done, match will null when there is no match\n     */\n\n  }, {\n    key: \"findNextMatch\",\n    value: function findNextMatch(string, startPosition, callback) {\n      if (startPosition == null) {\n        startPosition = 0;\n      }\n\n      if (typeof startPosition === 'function') {\n        callback = startPosition;\n        startPosition = 0;\n      }\n\n      try {\n        var match = this.findNextMatchSync(string, startPosition);\n        callback(null, match);\n      } catch (error) {\n        callback(error);\n      }\n    }\n    /**\n     * Find the next match from a given position\n     * @param string The string to search\n     * @param startPosition The optional position to start at, defaults to 0\n     */\n\n  }, {\n    key: \"findNextMatchSync\",\n    value: function findNextMatchSync(string, startPosition) {\n      if (startPosition == null) {\n        startPosition = 0;\n      }\n\n      startPosition = this.convertToNumber(startPosition);\n      var onigNativeInfo = cache.get(this);\n      var status = 0;\n\n      if (!onigNativeInfo) {\n        var regexTAddrRecieverPtr = onigasmH_1.onigasmH._malloc(4);\n\n        var regexTPtrs = [];\n\n        for (var i = 0; i < this.sources.length; i++) {\n          var pattern = this.sources[i];\n          var patternStrPtr = mallocAndWriteString(new OnigString_1.default(pattern));\n          status = onigasmH_1.onigasmH._compilePattern(patternStrPtr, regexTAddrRecieverPtr);\n\n          if (status !== 0) {\n            var errMessage = convertUTF8BytesFromPtrToString(onigasmH_1.onigasmH._getLastError());\n            throw new Error(errMessage);\n          }\n\n          var regexTAddress = onigasmH_1.onigasmH.HEAP32[regexTAddrRecieverPtr / 4];\n          regexTPtrs.push(regexTAddress);\n\n          onigasmH_1.onigasmH._free(patternStrPtr);\n        }\n\n        onigNativeInfo = {\n          regexTPtrs: new Uint8Array(Uint32Array.from(regexTPtrs).buffer)\n        };\n\n        onigasmH_1.onigasmH._free(regexTAddrRecieverPtr);\n\n        cache.set(this, onigNativeInfo);\n      }\n\n      var onigString = string instanceof OnigString_1.default ? string : new OnigString_1.default(this.convertToString(string));\n      var strPtr = mallocAndWriteString(onigString);\n\n      var resultInfoReceiverPtr = onigasmH_1.onigasmH._malloc(8);\n\n      var regexTPtrsPtr = onigasmH_1.onigasmH._malloc(onigNativeInfo.regexTPtrs.length);\n\n      onigasmH_1.onigasmH.HEAPU8.set(onigNativeInfo.regexTPtrs, regexTPtrsPtr);\n      status = onigasmH_1.onigasmH._findBestMatch( // regex_t **patterns\n      regexTPtrsPtr, // int patternCount\n      this.sources.length, // UChar *utf8String\n      strPtr, // int strLen\n      onigString.utf8Bytes.length - 1, // int startOffset\n      onigString.convertUtf16OffsetToUtf8(startPosition), // int *resultInfo\n      resultInfoReceiverPtr);\n\n      if (status !== 0) {\n        var _errMessage = convertUTF8BytesFromPtrToString(onigasmH_1.onigasmH._getLastError());\n\n        throw new Error(_errMessage);\n      }\n\n      var _Uint32Array = new Uint32Array(onigasmH_1.onigasmH.HEAPU32.buffer, resultInfoReceiverPtr, 3),\n          _Uint32Array2 = _slicedToArray(_Uint32Array, 3),\n          // The index of pattern which matched the string at least offset from 0 (start)\n      bestPatternIdx = _Uint32Array2[0],\n          // Begin address of capture info encoded as pairs\n      // like [start, end, start, end, start, end, ...]\n      //  - first start-end pair is entire match (index 0 and 1)\n      //  - subsequent pairs are capture groups (2, 3 = first capture group, 4, 5 = second capture group and so on)\n      encodedResultBeginAddress = _Uint32Array2[1],\n          // Length of the [start, end, ...] sequence so we know how much memory to read (will always be 0 or multiple of 2)\n      encodedResultLength = _Uint32Array2[2];\n\n      onigasmH_1.onigasmH._free(strPtr);\n\n      onigasmH_1.onigasmH._free(resultInfoReceiverPtr);\n\n      onigasmH_1.onigasmH._free(regexTPtrsPtr);\n\n      if (encodedResultLength > 0) {\n        var encodedResult = new Uint32Array(onigasmH_1.onigasmH.HEAPU32.buffer, encodedResultBeginAddress, encodedResultLength);\n        var captureIndices = [];\n        var _i = 0;\n        var captureIdx = 0;\n\n        while (_i < encodedResultLength) {\n          var index = captureIdx++;\n          var start = encodedResult[_i++];\n          var end = encodedResult[_i++];\n\n          if (onigString.hasMultiByteCharacters) {\n            start = onigString.convertUtf8OffsetToUtf16(start);\n            end = onigString.convertUtf8OffsetToUtf16(end);\n          }\n\n          captureIndices.push({\n            end: end,\n            index: index,\n            length: end - start,\n            start: start\n          });\n        }\n\n        onigasmH_1.onigasmH._free(encodedResultBeginAddress);\n\n        return {\n          captureIndices: captureIndices,\n          index: bestPatternIdx,\n          scanner: this\n        };\n      }\n\n      return null;\n    }\n  }, {\n    key: \"convertToString\",\n    value: function convertToString(value) {\n      if (value === undefined) {\n        return 'undefined';\n      }\n\n      if (value === null) {\n        return 'null';\n      }\n\n      if (value instanceof OnigString_1.default) {\n        return value.content;\n      }\n\n      return value.toString();\n    }\n  }, {\n    key: \"convertToNumber\",\n    value: function convertToNumber(value) {\n      value = parseInt(value, 10);\n\n      if (!isFinite(value)) {\n        value = 0;\n      }\n\n      value = Math.max(value, 0);\n      return value;\n    }\n  }]);\n\n  return OnigScanner;\n}();\n\nexports.OnigScanner = OnigScanner;\nexports.default = OnigScanner;","\"use strict\";\n\nvar _classCallCheck = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/classCallCheck\");\n\nvar _createClass = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/createClass\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar OnigString = /*#__PURE__*/function () {\n  function OnigString(content) {\n    var _this = this;\n\n    _classCallCheck(this, OnigString);\n\n    this.substring = function (start, end) {\n      return _this.source.substring(start, end);\n    };\n\n    this.toString = function (start, end) {\n      return _this.source;\n    };\n\n    if (typeof content !== 'string') {\n      throw new TypeError('Argument must be a string');\n    }\n\n    this.source = content;\n    this._utf8Bytes = null;\n    this._utf8Indexes = null;\n  }\n\n  _createClass(OnigString, [{\n    key: \"utf8Bytes\",\n    get: function get() {\n      if (!this._utf8Bytes) {\n        this.encode();\n      }\n\n      return this._utf8Bytes;\n    }\n    /**\n     * Returns `null` if all utf8 offsets match utf-16 offset (content has no multi byte characters)\n     */\n\n  }, {\n    key: \"utf8Indexes\",\n    get: function get() {\n      if (!this._utf8Bytes) {\n        this.encode();\n      }\n\n      return this._utf8Indexes;\n    }\n  }, {\n    key: \"content\",\n    get: function get() {\n      return this.source;\n    }\n  }, {\n    key: \"length\",\n    get: function get() {\n      return this.source.length;\n    }\n  }, {\n    key: \"hasMultiByteCharacters\",\n    get: function get() {\n      return this.utf8Indexes !== null;\n    }\n  }, {\n    key: \"convertUtf8OffsetToUtf16\",\n    value: function convertUtf8OffsetToUtf16(utf8Offset) {\n      if (utf8Offset < 0) {\n        return 0;\n      }\n\n      var utf8Array = this._utf8Bytes;\n\n      if (utf8Offset >= utf8Array.length - 1) {\n        return this.source.length;\n      }\n\n      var utf8OffsetMap = this.utf8Indexes;\n\n      if (utf8OffsetMap && utf8Offset >= this._mappingTableStartOffset) {\n        return findFirstInSorted(utf8OffsetMap, utf8Offset - this._mappingTableStartOffset) + this._mappingTableStartOffset;\n      }\n\n      return utf8Offset;\n    }\n  }, {\n    key: \"convertUtf16OffsetToUtf8\",\n    value: function convertUtf16OffsetToUtf8(utf16Offset) {\n      if (utf16Offset < 0) {\n        return 0;\n      }\n\n      var utf8Array = this._utf8Bytes;\n\n      if (utf16Offset >= this.source.length) {\n        return utf8Array.length - 1;\n      }\n\n      var utf8OffsetMap = this.utf8Indexes;\n\n      if (utf8OffsetMap && utf16Offset >= this._mappingTableStartOffset) {\n        return utf8OffsetMap[utf16Offset - this._mappingTableStartOffset] + this._mappingTableStartOffset;\n      }\n\n      return utf16Offset;\n    }\n  }, {\n    key: \"encode\",\n    value: function encode() {\n      var str = this.source;\n      var n = str.length;\n      var utf16OffsetToUtf8;\n      var utf8Offset = 0;\n      var mappingTableStartOffset = 0;\n\n      function createOffsetTable(startOffset) {\n        var maxUtf8Len = (n - startOffset) * 3;\n\n        if (maxUtf8Len <= 0xff) {\n          utf16OffsetToUtf8 = new Uint8Array(n - startOffset);\n        } else if (maxUtf8Len <= 0xffff) {\n          utf16OffsetToUtf8 = new Uint16Array(n - startOffset);\n        } else {\n          utf16OffsetToUtf8 = new Uint32Array(n - startOffset);\n        }\n\n        mappingTableStartOffset = startOffset;\n        utf16OffsetToUtf8[utf8Offset++] = 0;\n      }\n\n      var u8view = new Uint8Array(n * 3 + 1\n      /** null termination character */\n      );\n      var ptrHead = 0;\n      var i = 0; // for some reason, v8 is faster with str.length than using a variable (might be illusion)\n\n      while (i < str.length) {\n        var codepoint = void 0;\n        var c = str.charCodeAt(i);\n\n        if (utf16OffsetToUtf8) {\n          utf16OffsetToUtf8[utf8Offset++] = ptrHead - mappingTableStartOffset;\n        }\n\n        if (c < 0xD800 || c > 0xDFFF) {\n          codepoint = c;\n        } else if (c >= 0xDC00) {\n          codepoint = 0xFFFD;\n        } else {\n          if (i === n - 1) {\n            codepoint = 0xFFFD;\n          } else {\n            var d = str.charCodeAt(i + 1);\n\n            if (0xDC00 <= d && d <= 0xDFFF) {\n              if (!utf16OffsetToUtf8) {\n                createOffsetTable(i);\n              }\n\n              var a = c & 0x3FF;\n              var b = d & 0x3FF;\n              codepoint = 0x10000 + (a << 10) + b;\n              i += 1;\n              utf16OffsetToUtf8[utf8Offset++] = ptrHead - mappingTableStartOffset;\n            } else {\n              codepoint = 0xFFFD;\n            }\n          }\n        }\n\n        var bytesRequiredToEncode = void 0;\n        var offset = void 0;\n\n        if (codepoint <= 0x7F) {\n          bytesRequiredToEncode = 1;\n          offset = 0;\n        } else if (codepoint <= 0x07FF) {\n          bytesRequiredToEncode = 2;\n          offset = 0xC0;\n        } else if (codepoint <= 0xFFFF) {\n          bytesRequiredToEncode = 3;\n          offset = 0xE0;\n        } else {\n          bytesRequiredToEncode = 4;\n          offset = 0xF0;\n        }\n\n        if (bytesRequiredToEncode === 1) {\n          u8view[ptrHead++] = codepoint;\n        } else {\n          if (!utf16OffsetToUtf8) {\n            createOffsetTable(ptrHead);\n          }\n\n          u8view[ptrHead++] = (codepoint >> 6 * --bytesRequiredToEncode) + offset;\n\n          while (bytesRequiredToEncode > 0) {\n            var temp = codepoint >> 6 * (bytesRequiredToEncode - 1);\n            u8view[ptrHead++] = 0x80 | temp & 0x3F;\n            bytesRequiredToEncode -= 1;\n          }\n        }\n\n        i += 1;\n      }\n\n      var utf8 = u8view.slice(0, ptrHead + 1);\n      utf8[ptrHead] = 0x00;\n      this._utf8Bytes = utf8;\n\n      if (utf16OffsetToUtf8) {\n        // set if UTF-16 surrogate chars or multi-byte characters found\n        this._utf8Indexes = utf16OffsetToUtf8;\n        this._mappingTableStartOffset = mappingTableStartOffset;\n      }\n    }\n  }]);\n\n  return OnigString;\n}();\n\nfunction findFirstInSorted(array, i) {\n  var low = 0;\n  var high = array.length;\n\n  if (high === 0) {\n    return 0; // no children\n  }\n\n  while (low < high) {\n    var mid = Math.floor((low + high) / 2);\n\n    if (array[mid] >= i) {\n      high = mid;\n    } else {\n      low = mid + 1;\n    }\n  } // low is on the index of the first value >= i or array.length. Decrement low until we find array[low] <= i\n\n\n  while (low > 0 && (low >= array.length || array[low] > i)) {\n    low--;\n  } // check whether we are on the second index of a utf-16 surrogate char. If so, go to the first index.\n\n\n  if (low > 0 && array[low] === array[low - 1]) {\n    low--;\n  }\n\n  return low;\n}\n\nexports.default = OnigString;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar onigasmH_1 = require(\"./onigasmH\");\n\nexports.loadWASM = onigasmH_1.loadWASM;\n\nvar OnigRegExp_1 = require(\"./OnigRegExp\");\n\nexports.OnigRegExp = OnigRegExp_1.default;\n\nvar OnigScanner_1 = require(\"./OnigScanner\");\n\nexports.OnigScanner = OnigScanner_1.default;\n\nvar OnigString_1 = require(\"./OnigString\");\n\nexports.OnigString = OnigString_1.default;","var Onigasm = function () {\n  var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n\n  return function (Onigasm) {\n    Onigasm = Onigasm || {};\n    var Module = typeof Onigasm !== \"undefined\" ? Onigasm : {};\n    var moduleOverrides = {};\n    var key;\n\n    for (key in Module) {\n      if (Module.hasOwnProperty(key)) {\n        moduleOverrides[key] = Module[key];\n      }\n    }\n\n    var arguments_ = [];\n    var thisProgram = \"./this.program\";\n\n    var quit_ = function quit_(status, toThrow) {\n      throw toThrow;\n    };\n\n    var ENVIRONMENT_IS_WEB = false;\n    var ENVIRONMENT_IS_WORKER = false;\n    var ENVIRONMENT_IS_NODE = false;\n    var ENVIRONMENT_IS_SHELL = true;\n    var scriptDirectory = \"\";\n\n    function locateFile(path) {\n      if (Module[\"locateFile\"]) {\n        return Module[\"locateFile\"](path, scriptDirectory);\n      }\n\n      return scriptDirectory + path;\n    }\n\n    var read_, readBinary;\n\n    if (ENVIRONMENT_IS_SHELL) {\n      if (typeof read != \"undefined\") {\n        read_ = function shell_read(f) {\n          return read(f);\n        };\n      }\n\n      readBinary = function readBinary(f) {\n        var data;\n\n        if (typeof readbuffer === \"function\") {\n          return new Uint8Array(readbuffer(f));\n        }\n\n        data = read(f, \"binary\");\n        assert(typeof data === \"object\");\n        return data;\n      };\n\n      if (typeof scriptArgs != \"undefined\") {\n        arguments_ = scriptArgs;\n      } else if (typeof arguments != \"undefined\") {\n        arguments_ = arguments;\n      }\n\n      if (typeof quit === \"function\") {\n        quit_ = function quit_(status) {\n          quit(status);\n        };\n      }\n\n      if (typeof print !== \"undefined\") {\n        if (typeof console === \"undefined\") console = {};\n        console.log = print;\n        console.warn = console.error = typeof printErr !== \"undefined\" ? printErr : print;\n      }\n    } else {}\n\n    var out = Module[\"print\"] || console.log.bind(console);\n    var err = Module[\"printErr\"] || console.warn.bind(console);\n\n    for (key in moduleOverrides) {\n      if (moduleOverrides.hasOwnProperty(key)) {\n        Module[key] = moduleOverrides[key];\n      }\n    }\n\n    moduleOverrides = null;\n    if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n    if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n    if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n    var STACK_ALIGN = 16;\n\n    function dynamicAlloc(size) {\n      var ret = HEAP32[DYNAMICTOP_PTR >> 2];\n      var end = ret + size + 15 & -16;\n\n      if (end > _emscripten_get_heap_size()) {\n        abort();\n      }\n\n      HEAP32[DYNAMICTOP_PTR >> 2] = end;\n      return ret;\n    }\n\n    function getNativeTypeSize(type) {\n      switch (type) {\n        case \"i1\":\n        case \"i8\":\n          return 1;\n\n        case \"i16\":\n          return 2;\n\n        case \"i32\":\n          return 4;\n\n        case \"i64\":\n          return 8;\n\n        case \"float\":\n          return 4;\n\n        case \"double\":\n          return 8;\n\n        default:\n          {\n            if (type[type.length - 1] === \"*\") {\n              return 4;\n            } else if (type[0] === \"i\") {\n              var bits = parseInt(type.substr(1));\n              assert(bits % 8 === 0, \"getNativeTypeSize invalid bits \" + bits + \", type \" + type);\n              return bits / 8;\n            } else {\n              return 0;\n            }\n          }\n      }\n    }\n\n    function warnOnce(text) {\n      if (!warnOnce.shown) warnOnce.shown = {};\n\n      if (!warnOnce.shown[text]) {\n        warnOnce.shown[text] = 1;\n        err(text);\n      }\n    }\n\n    function convertJsFunctionToWasm(func, sig) {\n      var typeSection = [1, 0, 1, 96];\n      var sigRet = sig.slice(0, 1);\n      var sigParam = sig.slice(1);\n      var typeCodes = {\n        \"i\": 127,\n        \"j\": 126,\n        \"f\": 125,\n        \"d\": 124\n      };\n      typeSection.push(sigParam.length);\n\n      for (var i = 0; i < sigParam.length; ++i) {\n        typeSection.push(typeCodes[sigParam[i]]);\n      }\n\n      if (sigRet == \"v\") {\n        typeSection.push(0);\n      } else {\n        typeSection = typeSection.concat([1, typeCodes[sigRet]]);\n      }\n\n      typeSection[1] = typeSection.length - 2;\n      var bytes = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0].concat(typeSection, [2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0]));\n      var module = new WebAssembly.Module(bytes);\n      var instance = new WebAssembly.Instance(module, {\n        e: {\n          f: func\n        }\n      });\n      var wrappedFunc = instance.exports.f;\n      return wrappedFunc;\n    }\n\n    function addFunctionWasm(func, sig) {\n      var table = wasmTable;\n      var ret = table.length;\n\n      try {\n        table.grow(1);\n      } catch (err) {\n        if (!err instanceof RangeError) {\n          throw err;\n        }\n\n        throw \"Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH.\";\n      }\n\n      try {\n        table.set(ret, func);\n      } catch (err) {\n        if (!err instanceof TypeError) {\n          throw err;\n        }\n\n        assert(typeof sig !== \"undefined\", \"Missing signature argument to addFunction\");\n        var wrapped = convertJsFunctionToWasm(func, sig);\n        table.set(ret, wrapped);\n      }\n\n      return ret;\n    }\n\n    function removeFunctionWasm(index) {}\n\n    var funcWrappers = {};\n\n    function dynCall(sig, ptr, args) {\n      if (args && args.length) {\n        return Module[\"dynCall_\" + sig].apply(null, [ptr].concat(args));\n      } else {\n        return Module[\"dynCall_\" + sig].call(null, ptr);\n      }\n    }\n\n    var tempRet0 = 0;\n\n    var setTempRet0 = function setTempRet0(value) {\n      tempRet0 = value;\n    };\n\n    var wasmBinary;\n    if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n    var noExitRuntime;\n    if (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n\n    if (typeof WebAssembly !== \"object\") {\n      err(\"no native wasm support detected\");\n    }\n\n    function setValue(ptr, value, type, noSafe) {\n      type = type || \"i8\";\n      if (type.charAt(type.length - 1) === \"*\") type = \"i32\";\n\n      switch (type) {\n        case \"i1\":\n          HEAP8[ptr >> 0] = value;\n          break;\n\n        case \"i8\":\n          HEAP8[ptr >> 0] = value;\n          break;\n\n        case \"i16\":\n          HEAP16[ptr >> 1] = value;\n          break;\n\n        case \"i32\":\n          HEAP32[ptr >> 2] = value;\n          break;\n\n        case \"i64\":\n          tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];\n          break;\n\n        case \"float\":\n          HEAPF32[ptr >> 2] = value;\n          break;\n\n        case \"double\":\n          HEAPF64[ptr >> 3] = value;\n          break;\n\n        default:\n          abort(\"invalid type for setValue: \" + type);\n      }\n    }\n\n    var wasmMemory;\n    var wasmTable = new WebAssembly.Table({\n      \"initial\": 244,\n      \"maximum\": 244 + 0,\n      \"element\": \"anyfunc\"\n    });\n    var ABORT = false;\n    var EXITSTATUS = 0;\n\n    function assert(condition, text) {\n      if (!condition) {\n        abort(\"Assertion failed: \" + text);\n      }\n    }\n\n    function getCFunc(ident) {\n      var func = Module[\"_\" + ident];\n      assert(func, \"Cannot call unknown function \" + ident + \", make sure it is exported\");\n      return func;\n    }\n\n    function ccall(ident, returnType, argTypes, args, opts) {\n      var toC = {\n        \"string\": function string(str) {\n          var ret = 0;\n\n          if (str !== null && str !== undefined && str !== 0) {\n            var len = (str.length << 2) + 1;\n            ret = stackAlloc(len);\n            stringToUTF8(str, ret, len);\n          }\n\n          return ret;\n        },\n        \"array\": function array(arr) {\n          var ret = stackAlloc(arr.length);\n          writeArrayToMemory(arr, ret);\n          return ret;\n        }\n      };\n\n      function convertReturnValue(ret) {\n        if (returnType === \"string\") return UTF8ToString(ret);\n        if (returnType === \"boolean\") return Boolean(ret);\n        return ret;\n      }\n\n      var func = getCFunc(ident);\n      var cArgs = [];\n      var stack = 0;\n\n      if (args) {\n        for (var i = 0; i < args.length; i++) {\n          var converter = toC[argTypes[i]];\n\n          if (converter) {\n            if (stack === 0) stack = stackSave();\n            cArgs[i] = converter(args[i]);\n          } else {\n            cArgs[i] = args[i];\n          }\n        }\n      }\n\n      var ret = func.apply(null, cArgs);\n      ret = convertReturnValue(ret);\n      if (stack !== 0) stackRestore(stack);\n      return ret;\n    }\n\n    var ALLOC_NONE = 3;\n    var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n\n    function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n      var endIdx = idx + maxBytesToRead;\n      var endPtr = idx;\n\n      while (u8Array[endPtr] && !(endPtr >= endIdx)) {\n        ++endPtr;\n      }\n\n      if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\n        return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n      } else {\n        var str = \"\";\n\n        while (idx < endPtr) {\n          var u0 = u8Array[idx++];\n\n          if (!(u0 & 128)) {\n            str += String.fromCharCode(u0);\n            continue;\n          }\n\n          var u1 = u8Array[idx++] & 63;\n\n          if ((u0 & 224) == 192) {\n            str += String.fromCharCode((u0 & 31) << 6 | u1);\n            continue;\n          }\n\n          var u2 = u8Array[idx++] & 63;\n\n          if ((u0 & 240) == 224) {\n            u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n          } else {\n            u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;\n          }\n\n          if (u0 < 65536) {\n            str += String.fromCharCode(u0);\n          } else {\n            var ch = u0 - 65536;\n            str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n          }\n        }\n      }\n\n      return str;\n    }\n\n    function UTF8ToString(ptr, maxBytesToRead) {\n      return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n    }\n\n    function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n      if (!(maxBytesToWrite > 0)) return 0;\n      var startIdx = outIdx;\n      var endIdx = outIdx + maxBytesToWrite - 1;\n\n      for (var i = 0; i < str.length; ++i) {\n        var u = str.charCodeAt(i);\n\n        if (u >= 55296 && u <= 57343) {\n          var u1 = str.charCodeAt(++i);\n          u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n        }\n\n        if (u <= 127) {\n          if (outIdx >= endIdx) break;\n          outU8Array[outIdx++] = u;\n        } else if (u <= 2047) {\n          if (outIdx + 1 >= endIdx) break;\n          outU8Array[outIdx++] = 192 | u >> 6;\n          outU8Array[outIdx++] = 128 | u & 63;\n        } else if (u <= 65535) {\n          if (outIdx + 2 >= endIdx) break;\n          outU8Array[outIdx++] = 224 | u >> 12;\n          outU8Array[outIdx++] = 128 | u >> 6 & 63;\n          outU8Array[outIdx++] = 128 | u & 63;\n        } else {\n          if (outIdx + 3 >= endIdx) break;\n          outU8Array[outIdx++] = 240 | u >> 18;\n          outU8Array[outIdx++] = 128 | u >> 12 & 63;\n          outU8Array[outIdx++] = 128 | u >> 6 & 63;\n          outU8Array[outIdx++] = 128 | u & 63;\n        }\n      }\n\n      outU8Array[outIdx] = 0;\n      return outIdx - startIdx;\n    }\n\n    function stringToUTF8(str, outPtr, maxBytesToWrite) {\n      return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n    }\n\n    function lengthBytesUTF8(str) {\n      var len = 0;\n\n      for (var i = 0; i < str.length; ++i) {\n        var u = str.charCodeAt(i);\n        if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;\n        if (u <= 127) ++len;else if (u <= 2047) len += 2;else if (u <= 65535) len += 3;else len += 4;\n      }\n\n      return len;\n    }\n\n    var UTF16Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n\n    function writeArrayToMemory(array, buffer) {\n      HEAP8.set(array, buffer);\n    }\n\n    function writeAsciiToMemory(str, buffer, dontAddNull) {\n      for (var i = 0; i < str.length; ++i) {\n        HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n      }\n\n      if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n    }\n\n    var WASM_PAGE_SIZE = 65536;\n\n    function alignUp(x, multiple) {\n      if (x % multiple > 0) {\n        x += multiple - x % multiple;\n      }\n\n      return x;\n    }\n\n    var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\n    function updateGlobalBufferAndViews(buf) {\n      buffer = buf;\n      Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n      Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n      Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n      Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n      Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n      Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n      Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n      Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n    }\n\n    var STACK_BASE = 5507664,\n        DYNAMIC_BASE = 5507664,\n        DYNAMICTOP_PTR = 264624;\n    var INITIAL_TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 157286400;\n\n    if (Module[\"wasmMemory\"]) {\n      wasmMemory = Module[\"wasmMemory\"];\n    } else {\n      wasmMemory = new WebAssembly.Memory({\n        \"initial\": INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE\n      });\n    }\n\n    if (wasmMemory) {\n      buffer = wasmMemory.buffer;\n    }\n\n    INITIAL_TOTAL_MEMORY = buffer.byteLength;\n    updateGlobalBufferAndViews(buffer);\n    HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\n\n    function callRuntimeCallbacks(callbacks) {\n      while (callbacks.length > 0) {\n        var callback = callbacks.shift();\n\n        if (typeof callback == \"function\") {\n          callback();\n          continue;\n        }\n\n        var func = callback.func;\n\n        if (typeof func === \"number\") {\n          if (callback.arg === undefined) {\n            Module[\"dynCall_v\"](func);\n          } else {\n            Module[\"dynCall_vi\"](func, callback.arg);\n          }\n        } else {\n          func(callback.arg === undefined ? null : callback.arg);\n        }\n      }\n    }\n\n    var __ATPRERUN__ = [];\n    var __ATINIT__ = [];\n    var __ATMAIN__ = [];\n    var __ATPOSTRUN__ = [];\n    var runtimeInitialized = false;\n    var runtimeExited = false;\n\n    function preRun() {\n      if (Module[\"preRun\"]) {\n        if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n\n        while (Module[\"preRun\"].length) {\n          addOnPreRun(Module[\"preRun\"].shift());\n        }\n      }\n\n      callRuntimeCallbacks(__ATPRERUN__);\n    }\n\n    function initRuntime() {\n      runtimeInitialized = true;\n      callRuntimeCallbacks(__ATINIT__);\n    }\n\n    function preMain() {\n      callRuntimeCallbacks(__ATMAIN__);\n    }\n\n    function exitRuntime() {\n      runtimeExited = true;\n    }\n\n    function postRun() {\n      if (Module[\"postRun\"]) {\n        if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n\n        while (Module[\"postRun\"].length) {\n          addOnPostRun(Module[\"postRun\"].shift());\n        }\n      }\n\n      callRuntimeCallbacks(__ATPOSTRUN__);\n    }\n\n    function addOnPreRun(cb) {\n      __ATPRERUN__.unshift(cb);\n    }\n\n    function addOnPostRun(cb) {\n      __ATPOSTRUN__.unshift(cb);\n    }\n\n    var Math_abs = Math.abs;\n    var Math_ceil = Math.ceil;\n    var Math_floor = Math.floor;\n    var Math_min = Math.min;\n    var runDependencies = 0;\n    var runDependencyWatcher = null;\n    var dependenciesFulfilled = null;\n\n    function addRunDependency(id) {\n      runDependencies++;\n\n      if (Module[\"monitorRunDependencies\"]) {\n        Module[\"monitorRunDependencies\"](runDependencies);\n      }\n    }\n\n    function removeRunDependency(id) {\n      runDependencies--;\n\n      if (Module[\"monitorRunDependencies\"]) {\n        Module[\"monitorRunDependencies\"](runDependencies);\n      }\n\n      if (runDependencies == 0) {\n        if (runDependencyWatcher !== null) {\n          clearInterval(runDependencyWatcher);\n          runDependencyWatcher = null;\n        }\n\n        if (dependenciesFulfilled) {\n          var callback = dependenciesFulfilled;\n          dependenciesFulfilled = null;\n          callback();\n        }\n      }\n    }\n\n    Module[\"preloadedImages\"] = {};\n    Module[\"preloadedAudios\"] = {};\n\n    function abort(what) {\n      if (Module[\"onAbort\"]) {\n        Module[\"onAbort\"](what);\n      }\n\n      what += \"\";\n      out(what);\n      err(what);\n      ABORT = true;\n      EXITSTATUS = 1;\n      what = \"abort(\" + what + \"). Build with -s ASSERTIONS=1 for more info.\";\n      throw new WebAssembly.RuntimeError(what);\n    }\n\n    var dataURIPrefix = \"data:application/octet-stream;base64,\";\n\n    function isDataURI(filename) {\n      return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;\n    }\n\n    var wasmBinaryFile = \"onigasm.wasm\";\n\n    if (!isDataURI(wasmBinaryFile)) {\n      wasmBinaryFile = locateFile(wasmBinaryFile);\n    }\n\n    function getBinary() {\n      try {\n        if (wasmBinary) {\n          return new Uint8Array(wasmBinary);\n        }\n\n        if (readBinary) {\n          return readBinary(wasmBinaryFile);\n        } else {\n          throw \"both async and sync fetching of the wasm failed\";\n        }\n      } catch (err) {\n        abort(err);\n      }\n    }\n\n    function getBinaryPromise() {\n      if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === \"function\") {\n        return fetch(wasmBinaryFile, {\n          credentials: \"same-origin\"\n        }).then(function (response) {\n          if (!response[\"ok\"]) {\n            throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\n          }\n\n          return response[\"arrayBuffer\"]();\n        }).catch(function () {\n          return getBinary();\n        });\n      }\n\n      return new Promise(function (resolve, reject) {\n        resolve(getBinary());\n      });\n    }\n\n    function createWasm() {\n      var info = {\n        \"env\": asmLibraryArg,\n        \"wasi_unstable\": asmLibraryArg\n      };\n\n      function receiveInstance(instance, module) {\n        var exports = instance.exports;\n        Module[\"asm\"] = exports;\n        removeRunDependency(\"wasm-instantiate\");\n      }\n\n      addRunDependency(\"wasm-instantiate\");\n\n      function receiveInstantiatedSource(output) {\n        receiveInstance(output[\"instance\"]);\n      }\n\n      function instantiateArrayBuffer(receiver) {\n        return getBinaryPromise().then(function (binary) {\n          return WebAssembly.instantiate(binary, info);\n        }).then(receiver, function (reason) {\n          err(\"failed to asynchronously prepare wasm: \" + reason);\n          abort(reason);\n        });\n      }\n\n      function instantiateAsync() {\n        if (!wasmBinary && typeof WebAssembly.instantiateStreaming === \"function\" && !isDataURI(wasmBinaryFile) && typeof fetch === \"function\") {\n          fetch(wasmBinaryFile, {\n            credentials: \"same-origin\"\n          }).then(function (response) {\n            var result = WebAssembly.instantiateStreaming(response, info);\n            return result.then(receiveInstantiatedSource, function (reason) {\n              err(\"wasm streaming compile failed: \" + reason);\n              err(\"falling back to ArrayBuffer instantiation\");\n              instantiateArrayBuffer(receiveInstantiatedSource);\n            });\n          });\n        } else {\n          return instantiateArrayBuffer(receiveInstantiatedSource);\n        }\n      }\n\n      if (Module[\"instantiateWasm\"]) {\n        try {\n          var exports = Module[\"instantiateWasm\"](info, receiveInstance);\n          return exports;\n        } catch (e) {\n          err(\"Module.instantiateWasm callback failed with error: \" + e);\n          return false;\n        }\n      }\n\n      instantiateAsync();\n      return {};\n    }\n\n    var tempDouble;\n    var tempI64;\n\n    __ATINIT__.push({\n      func: function func() {\n        ___wasm_call_ctors();\n      }\n    });\n\n    function demangle(func) {\n      var __cxa_demangle_func = Module[\"___cxa_demangle\"] || Module[\"__cxa_demangle\"];\n\n      assert(__cxa_demangle_func);\n\n      try {\n        var s = func;\n        if (s.startsWith(\"__Z\")) s = s.substr(1);\n        var len = lengthBytesUTF8(s) + 1;\n\n        var buf = _malloc(len);\n\n        stringToUTF8(s, buf, len);\n\n        var status = _malloc(4);\n\n        var ret = __cxa_demangle_func(buf, 0, 0, status);\n\n        if (HEAP32[status >> 2] === 0 && ret) {\n          return UTF8ToString(ret);\n        }\n      } catch (e) {} finally {\n        if (buf) _free(buf);\n        if (status) _free(status);\n        if (ret) _free(ret);\n      }\n\n      return func;\n    }\n\n    function demangleAll(text) {\n      var regex = /\\b_Z[\\w\\d_]+/g;\n      return text.replace(regex, function (x) {\n        var y = demangle(x);\n        return x === y ? x : y + \" [\" + x + \"]\";\n      });\n    }\n\n    function jsStackTrace() {\n      var err = new Error();\n\n      if (!err.stack) {\n        try {\n          throw new Error(0);\n        } catch (e) {\n          err = e;\n        }\n\n        if (!err.stack) {\n          return \"(no stack trace available)\";\n        }\n      }\n\n      return err.stack.toString();\n    }\n\n    function _abort() {\n      abort();\n    }\n\n    function _emscripten_get_heap_size() {\n      return HEAP8.length;\n    }\n\n    function _emscripten_get_sbrk_ptr() {\n      return 264624;\n    }\n\n    function _emscripten_memcpy_big(dest, src, num) {\n      HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n    }\n\n    function emscripten_realloc_buffer(size) {\n      try {\n        wasmMemory.grow(size - buffer.byteLength + 65535 >> 16);\n        updateGlobalBufferAndViews(wasmMemory.buffer);\n        return 1;\n      } catch (e) {}\n    }\n\n    function _emscripten_resize_heap(requestedSize) {\n      var oldSize = _emscripten_get_heap_size();\n\n      var PAGE_MULTIPLE = 65536;\n      var LIMIT = 2147483648 - PAGE_MULTIPLE;\n\n      if (requestedSize > LIMIT) {\n        return false;\n      }\n\n      var MIN_TOTAL_MEMORY = 16777216;\n      var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);\n\n      while (newSize < requestedSize) {\n        if (newSize <= 536870912) {\n          newSize = alignUp(2 * newSize, PAGE_MULTIPLE);\n        } else {\n          newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\n        }\n      }\n\n      var replacement = emscripten_realloc_buffer(newSize);\n\n      if (!replacement) {\n        return false;\n      }\n\n      return true;\n    }\n\n    var PATH = {\n      splitPath: function splitPath(filename) {\n        var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n        return splitPathRe.exec(filename).slice(1);\n      },\n      normalizeArray: function normalizeArray(parts, allowAboveRoot) {\n        var up = 0;\n\n        for (var i = parts.length - 1; i >= 0; i--) {\n          var last = parts[i];\n\n          if (last === \".\") {\n            parts.splice(i, 1);\n          } else if (last === \"..\") {\n            parts.splice(i, 1);\n            up++;\n          } else if (up) {\n            parts.splice(i, 1);\n            up--;\n          }\n        }\n\n        if (allowAboveRoot) {\n          for (; up; up--) {\n            parts.unshift(\"..\");\n          }\n        }\n\n        return parts;\n      },\n      normalize: function normalize(path) {\n        var isAbsolute = path.charAt(0) === \"/\",\n            trailingSlash = path.substr(-1) === \"/\";\n        path = PATH.normalizeArray(path.split(\"/\").filter(function (p) {\n          return !!p;\n        }), !isAbsolute).join(\"/\");\n\n        if (!path && !isAbsolute) {\n          path = \".\";\n        }\n\n        if (path && trailingSlash) {\n          path += \"/\";\n        }\n\n        return (isAbsolute ? \"/\" : \"\") + path;\n      },\n      dirname: function dirname(path) {\n        var result = PATH.splitPath(path),\n            root = result[0],\n            dir = result[1];\n\n        if (!root && !dir) {\n          return \".\";\n        }\n\n        if (dir) {\n          dir = dir.substr(0, dir.length - 1);\n        }\n\n        return root + dir;\n      },\n      basename: function basename(path) {\n        if (path === \"/\") return \"/\";\n        var lastSlash = path.lastIndexOf(\"/\");\n        if (lastSlash === -1) return path;\n        return path.substr(lastSlash + 1);\n      },\n      extname: function extname(path) {\n        return PATH.splitPath(path)[3];\n      },\n      join: function join() {\n        var paths = Array.prototype.slice.call(arguments, 0);\n        return PATH.normalize(paths.join(\"/\"));\n      },\n      join2: function join2(l, r) {\n        return PATH.normalize(l + \"/\" + r);\n      }\n    };\n    var SYSCALLS = {\n      buffers: [null, [], []],\n      printChar: function printChar(stream, curr) {\n        var buffer = SYSCALLS.buffers[stream];\n\n        if (curr === 0 || curr === 10) {\n          (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));\n          buffer.length = 0;\n        } else {\n          buffer.push(curr);\n        }\n      },\n      varargs: 0,\n      get: function get(varargs) {\n        SYSCALLS.varargs += 4;\n        var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n        return ret;\n      },\n      getStr: function getStr() {\n        var ret = UTF8ToString(SYSCALLS.get());\n        return ret;\n      },\n      get64: function get64() {\n        var low = SYSCALLS.get(),\n            high = SYSCALLS.get();\n        return low;\n      },\n      getZero: function getZero() {\n        SYSCALLS.get();\n      }\n    };\n\n    function _fd_close(fd) {\n      try {\n        return 0;\n      } catch (e) {\n        if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n        return e.errno;\n      }\n    }\n\n    function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n      try {\n        return 0;\n      } catch (e) {\n        if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n        return e.errno;\n      }\n    }\n\n    function _fd_write(fd, iov, iovcnt, pnum) {\n      try {\n        var num = 0;\n\n        for (var i = 0; i < iovcnt; i++) {\n          var ptr = HEAP32[iov + i * 8 >> 2];\n          var len = HEAP32[iov + (i * 8 + 4) >> 2];\n\n          for (var j = 0; j < len; j++) {\n            SYSCALLS.printChar(fd, HEAPU8[ptr + j]);\n          }\n\n          num += len;\n        }\n\n        HEAP32[pnum >> 2] = num;\n        return 0;\n      } catch (e) {\n        if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n        return e.errno;\n      }\n    }\n\n    function _setTempRet0($i) {\n      setTempRet0($i | 0);\n    }\n\n    var ASSERTIONS = false;\n    var asmLibraryArg = {\n      \"abort\": _abort,\n      \"emscripten_get_sbrk_ptr\": _emscripten_get_sbrk_ptr,\n      \"emscripten_memcpy_big\": _emscripten_memcpy_big,\n      \"emscripten_resize_heap\": _emscripten_resize_heap,\n      \"fd_close\": _fd_close,\n      \"fd_seek\": _fd_seek,\n      \"fd_write\": _fd_write,\n      \"memory\": wasmMemory,\n      \"setTempRet0\": _setTempRet0,\n      \"table\": wasmTable\n    };\n    var asm = createWasm();\n    Module[\"asm\"] = asm;\n\n    var ___wasm_call_ctors = Module[\"___wasm_call_ctors\"] = function () {\n      return Module[\"asm\"][\"__wasm_call_ctors\"].apply(null, arguments);\n    };\n\n    var _malloc = Module[\"_malloc\"] = function () {\n      return Module[\"asm\"][\"malloc\"].apply(null, arguments);\n    };\n\n    var _free = Module[\"_free\"] = function () {\n      return Module[\"asm\"][\"free\"].apply(null, arguments);\n    };\n\n    var _getLastError = Module[\"_getLastError\"] = function () {\n      return Module[\"asm\"][\"getLastError\"].apply(null, arguments);\n    };\n\n    var _compilePattern = Module[\"_compilePattern\"] = function () {\n      return Module[\"asm\"][\"compilePattern\"].apply(null, arguments);\n    };\n\n    var _disposeCompiledPatterns = Module[\"_disposeCompiledPatterns\"] = function () {\n      return Module[\"asm\"][\"disposeCompiledPatterns\"].apply(null, arguments);\n    };\n\n    var _findBestMatch = Module[\"_findBestMatch\"] = function () {\n      return Module[\"asm\"][\"findBestMatch\"].apply(null, arguments);\n    };\n\n    var ___cxa_demangle = Module[\"___cxa_demangle\"] = function () {\n      return Module[\"asm\"][\"__cxa_demangle\"].apply(null, arguments);\n    };\n\n    var _setThrew = Module[\"_setThrew\"] = function () {\n      return Module[\"asm\"][\"setThrew\"].apply(null, arguments);\n    };\n\n    var stackSave = Module[\"stackSave\"] = function () {\n      return Module[\"asm\"][\"stackSave\"].apply(null, arguments);\n    };\n\n    var stackAlloc = Module[\"stackAlloc\"] = function () {\n      return Module[\"asm\"][\"stackAlloc\"].apply(null, arguments);\n    };\n\n    var stackRestore = Module[\"stackRestore\"] = function () {\n      return Module[\"asm\"][\"stackRestore\"].apply(null, arguments);\n    };\n\n    var __growWasmMemory = Module[\"__growWasmMemory\"] = function () {\n      return Module[\"asm\"][\"__growWasmMemory\"].apply(null, arguments);\n    };\n\n    var dynCall_vi = Module[\"dynCall_vi\"] = function () {\n      return Module[\"asm\"][\"dynCall_vi\"].apply(null, arguments);\n    };\n\n    var dynCall_iiii = Module[\"dynCall_iiii\"] = function () {\n      return Module[\"asm\"][\"dynCall_iiii\"].apply(null, arguments);\n    };\n\n    var dynCall_iiiii = Module[\"dynCall_iiiii\"] = function () {\n      return Module[\"asm\"][\"dynCall_iiiii\"].apply(null, arguments);\n    };\n\n    var dynCall_iii = Module[\"dynCall_iii\"] = function () {\n      return Module[\"asm\"][\"dynCall_iii\"].apply(null, arguments);\n    };\n\n    var dynCall_iidiiii = Module[\"dynCall_iidiiii\"] = function () {\n      return Module[\"asm\"][\"dynCall_iidiiii\"].apply(null, arguments);\n    };\n\n    var dynCall_vii = Module[\"dynCall_vii\"] = function () {\n      return Module[\"asm\"][\"dynCall_vii\"].apply(null, arguments);\n    };\n\n    var dynCall_ii = Module[\"dynCall_ii\"] = function () {\n      return Module[\"asm\"][\"dynCall_ii\"].apply(null, arguments);\n    };\n\n    var dynCall_i = Module[\"dynCall_i\"] = function () {\n      return Module[\"asm\"][\"dynCall_i\"].apply(null, arguments);\n    };\n\n    var dynCall_v = Module[\"dynCall_v\"] = function () {\n      return Module[\"asm\"][\"dynCall_v\"].apply(null, arguments);\n    };\n\n    var dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = function () {\n      return Module[\"asm\"][\"dynCall_viiiiii\"].apply(null, arguments);\n    };\n\n    var dynCall_viiiii = Module[\"dynCall_viiiii\"] = function () {\n      return Module[\"asm\"][\"dynCall_viiiii\"].apply(null, arguments);\n    };\n\n    var dynCall_viiii = Module[\"dynCall_viiii\"] = function () {\n      return Module[\"asm\"][\"dynCall_viiii\"].apply(null, arguments);\n    };\n\n    var dynCall_jiji = Module[\"dynCall_jiji\"] = function () {\n      return Module[\"asm\"][\"dynCall_jiji\"].apply(null, arguments);\n    };\n\n    Module[\"asm\"] = asm;\n    Module[\"ccall\"] = ccall;\n    var calledRun;\n\n    Module[\"then\"] = function (func) {\n      if (calledRun) {\n        func(Module);\n      } else {\n        var old = Module[\"onRuntimeInitialized\"];\n\n        Module[\"onRuntimeInitialized\"] = function () {\n          if (old) old();\n          func(Module);\n        };\n      }\n\n      return Module;\n    };\n\n    function ExitStatus(status) {\n      this.name = \"ExitStatus\";\n      this.message = \"Program terminated with exit(\" + status + \")\";\n      this.status = status;\n    }\n\n    dependenciesFulfilled = function runCaller() {\n      if (!calledRun) run();\n      if (!calledRun) dependenciesFulfilled = runCaller;\n    };\n\n    function run(args) {\n      args = args || arguments_;\n\n      if (runDependencies > 0) {\n        return;\n      }\n\n      preRun();\n      if (runDependencies > 0) return;\n\n      function doRun() {\n        if (calledRun) return;\n        calledRun = true;\n        if (ABORT) return;\n        initRuntime();\n        preMain();\n        if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n        postRun();\n      }\n\n      if (Module[\"setStatus\"]) {\n        Module[\"setStatus\"](\"Running...\");\n        setTimeout(function () {\n          setTimeout(function () {\n            Module[\"setStatus\"](\"\");\n          }, 1);\n          doRun();\n        }, 1);\n      } else {\n        doRun();\n      }\n    }\n\n    Module[\"run\"] = run;\n\n    if (Module[\"preInit\"]) {\n      if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n\n      while (Module[\"preInit\"].length > 0) {\n        Module[\"preInit\"].pop()();\n      }\n    }\n\n    noExitRuntime = true;\n    run();\n    return Onigasm;\n  };\n}();\n\nif (typeof exports === 'object' && typeof module === 'object') module.exports = Onigasm;else if (typeof define === 'function' && define['amd']) define([], function () {\n  return Onigasm;\n});else if (typeof exports === 'object') exports[\"Onigasm\"] = Onigasm;","\"use strict\";\n\nvar _regeneratorRuntime = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/regenerator\");\n\nvar _asyncToGenerator = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/asyncToGenerator\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar OnigasmModuleFactory = require('./onigasm.js'\n/** when TS is compiled to JS, this will mean `lib/onigasm.js` (emitted by `emcc`) */\n);\n\nfunction initModule(_x) {\n  return _initModule.apply(this, arguments);\n}\n\nfunction _initModule() {\n  _initModule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(bytes) {\n    return _regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n              var _console = console,\n                  log = _console.log,\n                  warn = _console.warn,\n                  error = _console.error;\n              OnigasmModuleFactory({\n                instantiateWasm: function instantiateWasm(imports, successCallback) {\n                  WebAssembly.instantiate(bytes, imports).then(function (output) {\n                    successCallback(output.instance);\n                  }).catch(function (e) {\n                    throw e;\n                  });\n                  return {};\n                }\n              }).then(function (moduleH) {\n                exports.onigasmH = moduleH;\n                resolve();\n              });\n\n              if (typeof print !== 'undefined') {\n                // can be removed when https://github.com/emscripten-core/emscripten/issues/9829 is fixed.\n                // tslint:disable-next-line:no-console\n                console.log = log; // tslint:disable-next-line:no-console\n\n                // tslint:disable-next-line:no-console\n                console.error = error; // tslint:disable-next-line:no-console\n\n                // tslint:disable-next-line:no-console\n                console.warn = warn;\n              }\n            }));\n\n          case 1:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n  return _initModule.apply(this, arguments);\n}\n\nvar isInitialized = false;\n/**\n * Mount the .wasm file that will act as library's \"backend\"\n * @param data Path to .wasm file or it's ArrayBuffer\n */\n\nfunction loadWASM(_x2) {\n  return _loadWASM.apply(this, arguments);\n}\n\nfunction _loadWASM() {\n  _loadWASM = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(data) {\n    var arrayBuffer;\n    return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            if (!isInitialized) {\n              _context2.next = 2;\n              break;\n            }\n\n            throw new Error(\"Onigasm#init has been called and was succesful, subsequent calls are not allowed once initialized\");\n\n          case 2:\n            if (!(typeof data === 'string')) {\n              _context2.next = 12;\n              break;\n            }\n\n            _context2.next = 5;\n            return fetch(data);\n\n          case 5:\n            _context2.next = 7;\n            return _context2.sent.arrayBuffer();\n\n          case 7:\n            arrayBuffer = _context2.sent;\n            _context2.next = 10;\n            return initModule(arrayBuffer);\n\n          case 10:\n            _context2.next = 18;\n            break;\n\n          case 12:\n            if (!(data instanceof ArrayBuffer)) {\n              _context2.next = 17;\n              break;\n            }\n\n            _context2.next = 15;\n            return initModule(data);\n\n          case 15:\n            _context2.next = 18;\n            break;\n\n          case 17:\n            throw new TypeError(\"Expected a string (URL of .wasm file) or ArrayBuffer (.wasm file itself) as first parameter\");\n\n          case 18:\n            isInitialized = true;\n\n          case 19:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2);\n  }));\n  return _loadWASM.apply(this, arguments);\n}\n\nexports.loadWASM = loadWASM;","'use strict'; // A linked list to keep track of recently-used-ness\n\nvar _classCallCheck = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/classCallCheck\");\n\nvar _createClass = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/helpers/createClass\");\n\nvar Yallist = require('yallist');\n\nvar MAX = Symbol('max');\nvar LENGTH = Symbol('length');\nvar LENGTH_CALCULATOR = Symbol('lengthCalculator');\nvar ALLOW_STALE = Symbol('allowStale');\nvar MAX_AGE = Symbol('maxAge');\nvar DISPOSE = Symbol('dispose');\nvar NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');\nvar LRU_LIST = Symbol('lruList');\nvar CACHE = Symbol('cache');\nvar UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');\n\nvar naiveLength = function naiveLength() {\n  return 1;\n}; // lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest.  the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node.  This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\n\n\nvar LRUCache = /*#__PURE__*/function () {\n  function LRUCache(options) {\n    _classCallCheck(this, LRUCache);\n\n    if (typeof options === 'number') options = {\n      max: options\n    };\n    if (!options) options = {};\n    if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number'); // Kind of weird to have a default max of Infinity, but oh well.\n\n    var max = this[MAX] = options.max || Infinity;\n    var lc = options.length || naiveLength;\n    this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;\n    this[ALLOW_STALE] = options.stale || false;\n    if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number');\n    this[MAX_AGE] = options.maxAge || 0;\n    this[DISPOSE] = options.dispose;\n    this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;\n    this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;\n    this.reset();\n  } // resize the cache when the max changes.\n\n\n  _createClass(LRUCache, [{\n    key: \"max\",\n    get: function get() {\n      return this[MAX];\n    },\n    set: function set(mL) {\n      if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number');\n      this[MAX] = mL || Infinity;\n      trim(this);\n    }\n  }, {\n    key: \"allowStale\",\n    get: function get() {\n      return this[ALLOW_STALE];\n    },\n    set: function set(allowStale) {\n      this[ALLOW_STALE] = !!allowStale;\n    }\n  }, {\n    key: \"maxAge\",\n    get: function get() {\n      return this[MAX_AGE];\n    } // resize the cache when the lengthCalculator changes.\n    ,\n    set: function set(mA) {\n      if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number');\n      this[MAX_AGE] = mA;\n      trim(this);\n    }\n  }, {\n    key: \"lengthCalculator\",\n    get: function get() {\n      return this[LENGTH_CALCULATOR];\n    },\n    set: function set(lC) {\n      var _this = this;\n\n      if (typeof lC !== 'function') lC = naiveLength;\n\n      if (lC !== this[LENGTH_CALCULATOR]) {\n        this[LENGTH_CALCULATOR] = lC;\n        this[LENGTH] = 0;\n        this[LRU_LIST].forEach(function (hit) {\n          hit.length = _this[LENGTH_CALCULATOR](hit.value, hit.key);\n          _this[LENGTH] += hit.length;\n        });\n      }\n\n      trim(this);\n    }\n  }, {\n    key: \"length\",\n    get: function get() {\n      return this[LENGTH];\n    }\n  }, {\n    key: \"itemCount\",\n    get: function get() {\n      return this[LRU_LIST].length;\n    }\n  }, {\n    key: \"rforEach\",\n    value: function rforEach(fn, thisp) {\n      thisp = thisp || this;\n\n      for (var walker = this[LRU_LIST].tail; walker !== null;) {\n        var prev = walker.prev;\n        forEachStep(this, fn, walker, thisp);\n        walker = prev;\n      }\n    }\n  }, {\n    key: \"forEach\",\n    value: function forEach(fn, thisp) {\n      thisp = thisp || this;\n\n      for (var walker = this[LRU_LIST].head; walker !== null;) {\n        var next = walker.next;\n        forEachStep(this, fn, walker, thisp);\n        walker = next;\n      }\n    }\n  }, {\n    key: \"keys\",\n    value: function keys() {\n      return this[LRU_LIST].toArray().map(function (k) {\n        return k.key;\n      });\n    }\n  }, {\n    key: \"values\",\n    value: function values() {\n      return this[LRU_LIST].toArray().map(function (k) {\n        return k.value;\n      });\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      var _this2 = this;\n\n      if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {\n        this[LRU_LIST].forEach(function (hit) {\n          return _this2[DISPOSE](hit.key, hit.value);\n        });\n      }\n\n      this[CACHE] = new Map(); // hash of items by key\n\n      this[LRU_LIST] = new Yallist(); // list of items in order of use recency\n\n      this[LENGTH] = 0; // length of items in the list\n    }\n  }, {\n    key: \"dump\",\n    value: function dump() {\n      var _this3 = this;\n\n      return this[LRU_LIST].map(function (hit) {\n        return isStale(_this3, hit) ? false : {\n          k: hit.key,\n          v: hit.value,\n          e: hit.now + (hit.maxAge || 0)\n        };\n      }).toArray().filter(function (h) {\n        return h;\n      });\n    }\n  }, {\n    key: \"dumpLru\",\n    value: function dumpLru() {\n      return this[LRU_LIST];\n    }\n  }, {\n    key: \"set\",\n    value: function set(key, value, maxAge) {\n      maxAge = maxAge || this[MAX_AGE];\n      if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number');\n      var now = maxAge ? Date.now() : 0;\n      var len = this[LENGTH_CALCULATOR](value, key);\n\n      if (this[CACHE].has(key)) {\n        if (len > this[MAX]) {\n          _del(this, this[CACHE].get(key));\n\n          return false;\n        }\n\n        var node = this[CACHE].get(key);\n        var item = node.value; // dispose of the old one before overwriting\n        // split out into 2 ifs for better coverage tracking\n\n        if (this[DISPOSE]) {\n          if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value);\n        }\n\n        item.now = now;\n        item.maxAge = maxAge;\n        item.value = value;\n        this[LENGTH] += len - item.length;\n        item.length = len;\n        this.get(key);\n        trim(this);\n        return true;\n      }\n\n      var hit = new Entry(key, value, len, now, maxAge); // oversized objects fall out of cache automatically.\n\n      if (hit.length > this[MAX]) {\n        if (this[DISPOSE]) this[DISPOSE](key, value);\n        return false;\n      }\n\n      this[LENGTH] += hit.length;\n      this[LRU_LIST].unshift(hit);\n      this[CACHE].set(key, this[LRU_LIST].head);\n      trim(this);\n      return true;\n    }\n  }, {\n    key: \"has\",\n    value: function has(key) {\n      if (!this[CACHE].has(key)) return false;\n      var hit = this[CACHE].get(key).value;\n      return !isStale(this, hit);\n    }\n  }, {\n    key: \"get\",\n    value: function get(key) {\n      return _get(this, key, true);\n    }\n  }, {\n    key: \"peek\",\n    value: function peek(key) {\n      return _get(this, key, false);\n    }\n  }, {\n    key: \"pop\",\n    value: function pop() {\n      var node = this[LRU_LIST].tail;\n      if (!node) return null;\n\n      _del(this, node);\n\n      return node.value;\n    }\n  }, {\n    key: \"del\",\n    value: function del(key) {\n      _del(this, this[CACHE].get(key));\n    }\n  }, {\n    key: \"load\",\n    value: function load(arr) {\n      // reset the cache\n      this.reset();\n      var now = Date.now(); // A previous serialized cache has the most recent items first\n\n      for (var l = arr.length - 1; l >= 0; l--) {\n        var hit = arr[l];\n        var expiresAt = hit.e || 0;\n        if (expiresAt === 0) // the item was created without expiration in a non aged cache\n          this.set(hit.k, hit.v);else {\n          var maxAge = expiresAt - now; // dont add already expired items\n\n          if (maxAge > 0) {\n            this.set(hit.k, hit.v, maxAge);\n          }\n        }\n      }\n    }\n  }, {\n    key: \"prune\",\n    value: function prune() {\n      var _this4 = this;\n\n      this[CACHE].forEach(function (value, key) {\n        return _get(_this4, key, false);\n      });\n    }\n  }]);\n\n  return LRUCache;\n}();\n\nvar _get = function _get(self, key, doUse) {\n  var node = self[CACHE].get(key);\n\n  if (node) {\n    var hit = node.value;\n\n    if (isStale(self, hit)) {\n      _del(self, node);\n\n      if (!self[ALLOW_STALE]) return undefined;\n    } else {\n      if (doUse) {\n        if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now();\n        self[LRU_LIST].unshiftNode(node);\n      }\n    }\n\n    return hit.value;\n  }\n};\n\nvar isStale = function isStale(self, hit) {\n  if (!hit || !hit.maxAge && !self[MAX_AGE]) return false;\n  var diff = Date.now() - hit.now;\n  return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];\n};\n\nvar trim = function trim(self) {\n  if (self[LENGTH] > self[MAX]) {\n    for (var walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {\n      // We know that we're about to delete this one, and also\n      // what the next least recently used key will be, so just\n      // go ahead and set it now.\n      var prev = walker.prev;\n\n      _del(self, walker);\n\n      walker = prev;\n    }\n  }\n};\n\nvar _del = function _del(self, node) {\n  if (node) {\n    var hit = node.value;\n    if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value);\n    self[LENGTH] -= hit.length;\n    self[CACHE].delete(hit.key);\n    self[LRU_LIST].removeNode(node);\n  }\n};\n\nvar Entry = function Entry(key, value, length, now, maxAge) {\n  _classCallCheck(this, Entry);\n\n  this.key = key;\n  this.value = value;\n  this.length = length;\n  this.now = now;\n  this.maxAge = maxAge || 0;\n};\n\nvar forEachStep = function forEachStep(self, fn, node, thisp) {\n  var hit = node.value;\n\n  if (isStale(self, hit)) {\n    _del(self, node);\n\n    if (!self[ALLOW_STALE]) hit = undefined;\n  }\n\n  if (hit) fn.call(thisp, hit.value, hit.key, self);\n};\n\nmodule.exports = LRUCache;","'use strict';\n\nvar _regeneratorRuntime = require(\"/workspace/node_modules/gatsby/node_modules/@babel/runtime/regenerator\");\n\nmodule.exports = function (Yallist) {\n  Yallist.prototype[Symbol.iterator] = /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n    var walker;\n    return _regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            walker = this.head;\n\n          case 1:\n            if (!walker) {\n              _context.next = 7;\n              break;\n            }\n\n            _context.next = 4;\n            return walker.value;\n\n          case 4:\n            walker = walker.next;\n            _context.next = 1;\n            break;\n\n          case 7:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee, this);\n  });\n};","'use strict';\n\nmodule.exports = Yallist;\nYallist.Node = Node;\nYallist.create = Yallist;\n\nfunction Yallist(list) {\n  var self = this;\n\n  if (!(self instanceof Yallist)) {\n    self = new Yallist();\n  }\n\n  self.tail = null;\n  self.head = null;\n  self.length = 0;\n\n  if (list && typeof list.forEach === 'function') {\n    list.forEach(function (item) {\n      self.push(item);\n    });\n  } else if (arguments.length > 0) {\n    for (var i = 0, l = arguments.length; i < l; i++) {\n      self.push(arguments[i]);\n    }\n  }\n\n  return self;\n}\n\nYallist.prototype.removeNode = function (node) {\n  if (node.list !== this) {\n    throw new Error('removing node which does not belong to this list');\n  }\n\n  var next = node.next;\n  var prev = node.prev;\n\n  if (next) {\n    next.prev = prev;\n  }\n\n  if (prev) {\n    prev.next = next;\n  }\n\n  if (node === this.head) {\n    this.head = next;\n  }\n\n  if (node === this.tail) {\n    this.tail = prev;\n  }\n\n  node.list.length--;\n  node.next = null;\n  node.prev = null;\n  node.list = null;\n  return next;\n};\n\nYallist.prototype.unshiftNode = function (node) {\n  if (node === this.head) {\n    return;\n  }\n\n  if (node.list) {\n    node.list.removeNode(node);\n  }\n\n  var head = this.head;\n  node.list = this;\n  node.next = head;\n\n  if (head) {\n    head.prev = node;\n  }\n\n  this.head = node;\n\n  if (!this.tail) {\n    this.tail = node;\n  }\n\n  this.length++;\n};\n\nYallist.prototype.pushNode = function (node) {\n  if (node === this.tail) {\n    return;\n  }\n\n  if (node.list) {\n    node.list.removeNode(node);\n  }\n\n  var tail = this.tail;\n  node.list = this;\n  node.prev = tail;\n\n  if (tail) {\n    tail.next = node;\n  }\n\n  this.tail = node;\n\n  if (!this.head) {\n    this.head = node;\n  }\n\n  this.length++;\n};\n\nYallist.prototype.push = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    push(this, arguments[i]);\n  }\n\n  return this.length;\n};\n\nYallist.prototype.unshift = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    unshift(this, arguments[i]);\n  }\n\n  return this.length;\n};\n\nYallist.prototype.pop = function () {\n  if (!this.tail) {\n    return undefined;\n  }\n\n  var res = this.tail.value;\n  this.tail = this.tail.prev;\n\n  if (this.tail) {\n    this.tail.next = null;\n  } else {\n    this.head = null;\n  }\n\n  this.length--;\n  return res;\n};\n\nYallist.prototype.shift = function () {\n  if (!this.head) {\n    return undefined;\n  }\n\n  var res = this.head.value;\n  this.head = this.head.next;\n\n  if (this.head) {\n    this.head.prev = null;\n  } else {\n    this.tail = null;\n  }\n\n  this.length--;\n  return res;\n};\n\nYallist.prototype.forEach = function (fn, thisp) {\n  thisp = thisp || this;\n\n  for (var walker = this.head, i = 0; walker !== null; i++) {\n    fn.call(thisp, walker.value, i, this);\n    walker = walker.next;\n  }\n};\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n  thisp = thisp || this;\n\n  for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n    fn.call(thisp, walker.value, i, this);\n    walker = walker.prev;\n  }\n};\n\nYallist.prototype.get = function (n) {\n  for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.next;\n  }\n\n  if (i === n && walker !== null) {\n    return walker.value;\n  }\n};\n\nYallist.prototype.getReverse = function (n) {\n  for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.prev;\n  }\n\n  if (i === n && walker !== null) {\n    return walker.value;\n  }\n};\n\nYallist.prototype.map = function (fn, thisp) {\n  thisp = thisp || this;\n  var res = new Yallist();\n\n  for (var walker = this.head; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this));\n    walker = walker.next;\n  }\n\n  return res;\n};\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n  thisp = thisp || this;\n  var res = new Yallist();\n\n  for (var walker = this.tail; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this));\n    walker = walker.prev;\n  }\n\n  return res;\n};\n\nYallist.prototype.reduce = function (fn, initial) {\n  var acc;\n  var walker = this.head;\n\n  if (arguments.length > 1) {\n    acc = initial;\n  } else if (this.head) {\n    walker = this.head.next;\n    acc = this.head.value;\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value');\n  }\n\n  for (var i = 0; walker !== null; i++) {\n    acc = fn(acc, walker.value, i);\n    walker = walker.next;\n  }\n\n  return acc;\n};\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n  var acc;\n  var walker = this.tail;\n\n  if (arguments.length > 1) {\n    acc = initial;\n  } else if (this.tail) {\n    walker = this.tail.prev;\n    acc = this.tail.value;\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value');\n  }\n\n  for (var i = this.length - 1; walker !== null; i--) {\n    acc = fn(acc, walker.value, i);\n    walker = walker.prev;\n  }\n\n  return acc;\n};\n\nYallist.prototype.toArray = function () {\n  var arr = new Array(this.length);\n\n  for (var i = 0, walker = this.head; walker !== null; i++) {\n    arr[i] = walker.value;\n    walker = walker.next;\n  }\n\n  return arr;\n};\n\nYallist.prototype.toArrayReverse = function () {\n  var arr = new Array(this.length);\n\n  for (var i = 0, walker = this.tail; walker !== null; i++) {\n    arr[i] = walker.value;\n    walker = walker.prev;\n  }\n\n  return arr;\n};\n\nYallist.prototype.slice = function (from, to) {\n  to = to || this.length;\n\n  if (to < 0) {\n    to += this.length;\n  }\n\n  from = from || 0;\n\n  if (from < 0) {\n    from += this.length;\n  }\n\n  var ret = new Yallist();\n\n  if (to < from || to < 0) {\n    return ret;\n  }\n\n  if (from < 0) {\n    from = 0;\n  }\n\n  if (to > this.length) {\n    to = this.length;\n  }\n\n  for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n    walker = walker.next;\n  }\n\n  for (; walker !== null && i < to; i++, walker = walker.next) {\n    ret.push(walker.value);\n  }\n\n  return ret;\n};\n\nYallist.prototype.sliceReverse = function (from, to) {\n  to = to || this.length;\n\n  if (to < 0) {\n    to += this.length;\n  }\n\n  from = from || 0;\n\n  if (from < 0) {\n    from += this.length;\n  }\n\n  var ret = new Yallist();\n\n  if (to < from || to < 0) {\n    return ret;\n  }\n\n  if (from < 0) {\n    from = 0;\n  }\n\n  if (to > this.length) {\n    to = this.length;\n  }\n\n  for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n    walker = walker.prev;\n  }\n\n  for (; walker !== null && i > from; i--, walker = walker.prev) {\n    ret.push(walker.value);\n  }\n\n  return ret;\n};\n\nYallist.prototype.splice = function (start, deleteCount\n/*, ...nodes */\n) {\n  if (start > this.length) {\n    start = this.length - 1;\n  }\n\n  if (start < 0) {\n    start = this.length + start;\n  }\n\n  for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n    walker = walker.next;\n  }\n\n  var ret = [];\n\n  for (var i = 0; walker && i < deleteCount; i++) {\n    ret.push(walker.value);\n    walker = this.removeNode(walker);\n  }\n\n  if (walker === null) {\n    walker = this.tail;\n  }\n\n  if (walker !== this.head && walker !== this.tail) {\n    walker = walker.prev;\n  }\n\n  for (var i = 2; i < arguments.length; i++) {\n    walker = insert(this, walker, arguments[i]);\n  }\n\n  return ret;\n};\n\nYallist.prototype.reverse = function () {\n  var head = this.head;\n  var tail = this.tail;\n\n  for (var walker = head; walker !== null; walker = walker.prev) {\n    var p = walker.prev;\n    walker.prev = walker.next;\n    walker.next = p;\n  }\n\n  this.head = tail;\n  this.tail = head;\n  return this;\n};\n\nfunction insert(self, node, value) {\n  var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);\n\n  if (inserted.next === null) {\n    self.tail = inserted;\n  }\n\n  if (inserted.prev === null) {\n    self.head = inserted;\n  }\n\n  self.length++;\n  return inserted;\n}\n\nfunction push(self, item) {\n  self.tail = new Node(item, self.tail, null, self);\n\n  if (!self.head) {\n    self.head = self.tail;\n  }\n\n  self.length++;\n}\n\nfunction unshift(self, item) {\n  self.head = new Node(item, null, self.head, self);\n\n  if (!self.tail) {\n    self.tail = self.head;\n  }\n\n  self.length++;\n}\n\nfunction Node(value, prev, next, list) {\n  if (!(this instanceof Node)) {\n    return new Node(value, prev, next, list);\n  }\n\n  this.list = list;\n  this.value = value;\n\n  if (prev) {\n    prev.next = this;\n    this.prev = prev;\n  } else {\n    this.prev = null;\n  }\n\n  if (next) {\n    next.prev = this;\n    this.next = next;\n  } else {\n    this.next = null;\n  }\n}\n\ntry {\n  // add if support for Symbol.iterator is present\n  require('./iterator.js')(Yallist);\n} catch (er) {}","!function (t) {\n  var n = t.util.clone(t.languages.javascript),\n      e = \"(?:\\\\{<S>*\\\\.{3}(?:[^{}]|<BRACES>)*\\\\})\";\n\n  function a(t, n) {\n    return t = t.replace(/<S>/g, function () {\n      return \"(?:\\\\s|//.*(?!.)|/\\\\*(?:[^*]|\\\\*(?!/))\\\\*/)\";\n    }).replace(/<BRACES>/g, function () {\n      return \"(?:\\\\{(?:\\\\{(?:\\\\{[^{}]*\\\\}|[^{}])*\\\\}|[^{}])*\\\\})\";\n    }).replace(/<SPREAD>/g, function () {\n      return e;\n    }), RegExp(t, n);\n  }\n\n  e = a(e).source, t.languages.jsx = t.languages.extend(\"markup\", n), t.languages.jsx.tag.pattern = a(\"</?(?:[\\\\w.:-]+(?:<S>+(?:[\\\\w.:$-]+(?:=(?:\\\"(?:\\\\\\\\[^]|[^\\\\\\\\\\\"])*\\\"|'(?:\\\\\\\\[^]|[^\\\\\\\\'])*'|[^\\\\s{'\\\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*/?)?>\"), t.languages.jsx.tag.inside.tag.pattern = /^<\\/?[^\\s>\\/]*/, t.languages.jsx.tag.inside[\"attr-value\"].pattern = /=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/, t.languages.jsx.tag.inside.tag.inside[\"class-name\"] = /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/, t.languages.jsx.tag.inside.comment = n.comment, t.languages.insertBefore(\"inside\", \"attr-name\", {\n    spread: {\n      pattern: a(\"<SPREAD>\"),\n      inside: t.languages.jsx\n    }\n  }, t.languages.jsx.tag), t.languages.insertBefore(\"inside\", \"special-attr\", {\n    script: {\n      pattern: a(\"=<BRACES>\"),\n      alias: \"language-javascript\",\n      inside: {\n        \"script-punctuation\": {\n          pattern: /^=(?=\\{)/,\n          alias: \"punctuation\"\n        },\n        rest: t.languages.jsx\n      }\n    }\n  }, t.languages.jsx.tag);\n\n  var s = function s(t) {\n    return t ? \"string\" == typeof t ? t : \"string\" == typeof t.content ? t.content : t.content.map(s).join(\"\") : \"\";\n  },\n      g = function g(n) {\n    for (var e = [], a = 0; a < n.length; a++) {\n      var o = n[a],\n          i = !1;\n\n      if (\"string\" != typeof o && (\"tag\" === o.type && o.content[0] && \"tag\" === o.content[0].type ? \"</\" === o.content[0].content[0].content ? e.length > 0 && e[e.length - 1].tagName === s(o.content[0].content[1]) && e.pop() : \"/>\" === o.content[o.content.length - 1].content || e.push({\n        tagName: s(o.content[0].content[1]),\n        openedBraces: 0\n      }) : e.length > 0 && \"punctuation\" === o.type && \"{\" === o.content ? e[e.length - 1].openedBraces++ : e.length > 0 && e[e.length - 1].openedBraces > 0 && \"punctuation\" === o.type && \"}\" === o.content ? e[e.length - 1].openedBraces-- : i = !0), (i || \"string\" == typeof o) && e.length > 0 && 0 === e[e.length - 1].openedBraces) {\n        var r = s(o);\n        a < n.length - 1 && (\"string\" == typeof n[a + 1] || \"plain-text\" === n[a + 1].type) && (r += s(n[a + 1]), n.splice(a + 1, 1)), a > 0 && (\"string\" == typeof n[a - 1] || \"plain-text\" === n[a - 1].type) && (r = s(n[a - 1]) + r, n.splice(a - 1, 1), a--), n[a] = new t.Token(\"plain-text\", r, null, r);\n      }\n\n      o.content && \"string\" != typeof o.content && g(o.content);\n    }\n  };\n\n  t.hooks.add(\"after-tokenize\", function (t) {\n    \"jsx\" !== t.language && \"tsx\" !== t.language || g(t.tokens);\n  });\n}(Prism);","/* **********************************************\n     Begin prism-core.js\n********************************************** */\n/// <reference lib=\"WebWorker\"/>\nvar _self = typeof window !== 'undefined' ? window // if in browser\n: typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ? self // if in worker\n: {} // if in node js\n;\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\n\n\nvar Prism = function (_self) {\n  // Private helper vars\n  var lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n  var uniqueId = 0; // The grammar object for plaintext\n\n  var plainTextGrammar = {};\n  var _ = {\n    /**\n     * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n     * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n     * additional languages or plugins yourself.\n     *\n     * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n     *\n     * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n     * empty Prism object into the global scope before loading the Prism script like this:\n     *\n     * ```js\n     * window.Prism = window.Prism || {};\n     * Prism.manual = true;\n     * // add a new <script> to load Prism's script\n     * ```\n     *\n     * @default false\n     * @type {boolean}\n     * @memberof Prism\n     * @public\n     */\n    manual: _self.Prism && _self.Prism.manual,\n\n    /**\n     * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n     * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n     * own worker, you don't want it to do this.\n     *\n     * By setting this value to `true`, Prism will not add its own listeners to the worker.\n     *\n     * You obviously have to change this value before Prism executes. To do this, you can add an\n     * empty Prism object into the global scope before loading the Prism script like this:\n     *\n     * ```js\n     * window.Prism = window.Prism || {};\n     * Prism.disableWorkerMessageHandler = true;\n     * // Load Prism's script\n     * ```\n     *\n     * @default false\n     * @type {boolean}\n     * @memberof Prism\n     * @public\n     */\n    disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n    /**\n     * A namespace for utility methods.\n     *\n     * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n     * change or disappear at any time.\n     *\n     * @namespace\n     * @memberof Prism\n     */\n    util: {\n      encode: function encode(tokens) {\n        if (tokens instanceof Token) {\n          return new Token(tokens.type, encode(tokens.content), tokens.alias);\n        } else if (Array.isArray(tokens)) {\n          return tokens.map(encode);\n        } else {\n          return tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\\u00a0/g, ' ');\n        }\n      },\n\n      /**\n       * Returns the name of the type of the given value.\n       *\n       * @param {any} o\n       * @returns {string}\n       * @example\n       * type(null)      === 'Null'\n       * type(undefined) === 'Undefined'\n       * type(123)       === 'Number'\n       * type('foo')     === 'String'\n       * type(true)      === 'Boolean'\n       * type([1, 2])    === 'Array'\n       * type({})        === 'Object'\n       * type(String)    === 'Function'\n       * type(/abc+/)    === 'RegExp'\n       */\n      type: function type(o) {\n        return Object.prototype.toString.call(o).slice(8, -1);\n      },\n\n      /**\n       * Returns a unique number for the given object. Later calls will still return the same number.\n       *\n       * @param {Object} obj\n       * @returns {number}\n       */\n      objId: function objId(obj) {\n        if (!obj['__id']) {\n          Object.defineProperty(obj, '__id', {\n            value: ++uniqueId\n          });\n        }\n\n        return obj['__id'];\n      },\n\n      /**\n       * Creates a deep clone of the given object.\n       *\n       * The main intended use of this function is to clone language definitions.\n       *\n       * @param {T} o\n       * @param {Record<number, any>} [visited]\n       * @returns {T}\n       * @template T\n       */\n      clone: function deepClone(o, visited) {\n        visited = visited || {};\n        var clone;\n        var id;\n\n        switch (_.util.type(o)) {\n          case 'Object':\n            id = _.util.objId(o);\n\n            if (visited[id]) {\n              return visited[id];\n            }\n\n            clone = {};\n            visited[id] = clone;\n\n            for (var key in o) {\n              if (o.hasOwnProperty(key)) {\n                clone[key] = deepClone(o[key], visited);\n              }\n            }\n\n            return clone;\n\n          case 'Array':\n            id = _.util.objId(o);\n\n            if (visited[id]) {\n              return visited[id];\n            }\n\n            clone = [];\n            visited[id] = clone;\n            o.forEach(function (v, i) {\n              clone[i] = deepClone(v, visited);\n            });\n            return clone;\n\n          default:\n            return o;\n        }\n      },\n\n      /**\n       * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n       *\n       * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n       *\n       * @param {Element} element\n       * @returns {string}\n       */\n      getLanguage: function getLanguage(element) {\n        while (element) {\n          var m = lang.exec(element.className);\n\n          if (m) {\n            return m[1].toLowerCase();\n          }\n\n          element = element.parentElement;\n        }\n\n        return 'none';\n      },\n\n      /**\n       * Sets the Prism `language-xxxx` class of the given element.\n       *\n       * @param {Element} element\n       * @param {string} language\n       * @returns {void}\n       */\n      setLanguage: function setLanguage(element, language) {\n        // remove all `language-xxxx` classes\n        // (this might leave behind a leading space)\n        element.className = element.className.replace(RegExp(lang, 'gi'), ''); // add the new `language-xxxx` class\n        // (using `classList` will automatically clean up spaces for us)\n\n        element.classList.add('language-' + language);\n      },\n\n      /**\n       * Returns the script element that is currently executing.\n       *\n       * This does __not__ work for line script element.\n       *\n       * @returns {HTMLScriptElement | null}\n       */\n      currentScript: function currentScript() {\n        if (typeof document === 'undefined') {\n          return null;\n        }\n\n        if ('currentScript' in document && 1 < 2\n        /* hack to trip TS' flow analysis */\n        ) {\n          return document.currentScript;\n        } // IE11 workaround\n        // we'll get the src of the current script by parsing IE11's error stack trace\n        // this will not work for inline scripts\n\n\n        try {\n          throw new Error();\n        } catch (err) {\n          // Get file src url from stack. Specifically works with the format of stack traces in IE.\n          // A stack will look like this:\n          //\n          // Error\n          //    at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n          //    at Global code (http://localhost/components/prism-core.js:606:1)\n          var src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\n          if (src) {\n            var scripts = document.getElementsByTagName('script');\n\n            for (var i in scripts) {\n              if (scripts[i].src == src) {\n                return scripts[i];\n              }\n            }\n          }\n\n          return null;\n        }\n      },\n\n      /**\n       * Returns whether a given class is active for `element`.\n       *\n       * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n       * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n       * given class is just the given class with a `no-` prefix.\n       *\n       * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n       * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n       * ancestors have the given class or the negated version of it, then the default activation will be returned.\n       *\n       * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n       * version of it, the class is considered active.\n       *\n       * @param {Element} element\n       * @param {string} className\n       * @param {boolean} [defaultActivation=false]\n       * @returns {boolean}\n       */\n      isActive: function isActive(element, className, defaultActivation) {\n        var no = 'no-' + className;\n\n        while (element) {\n          var classList = element.classList;\n\n          if (classList.contains(className)) {\n            return true;\n          }\n\n          if (classList.contains(no)) {\n            return false;\n          }\n\n          element = element.parentElement;\n        }\n\n        return !!defaultActivation;\n      }\n    },\n\n    /**\n     * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n     *\n     * @namespace\n     * @memberof Prism\n     * @public\n     */\n    languages: {\n      /**\n       * The grammar for plain, unformatted text.\n       */\n      plain: plainTextGrammar,\n      plaintext: plainTextGrammar,\n      text: plainTextGrammar,\n      txt: plainTextGrammar,\n\n      /**\n       * Creates a deep copy of the language with the given id and appends the given tokens.\n       *\n       * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n       * will be overwritten at its original position.\n       *\n       * ## Best practices\n       *\n       * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n       * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n       * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n       *\n       * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n       * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n       *\n       * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n       * @param {Grammar} redef The new tokens to append.\n       * @returns {Grammar} The new language created.\n       * @public\n       * @example\n       * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n       *     // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n       *     // at its original position\n       *     'comment': { ... },\n       *     // CSS doesn't have a 'color' token, so this token will be appended\n       *     'color': /\\b(?:red|green|blue)\\b/\n       * });\n       */\n      extend: function extend(id, redef) {\n        var lang = _.util.clone(_.languages[id]);\n\n        for (var key in redef) {\n          lang[key] = redef[key];\n        }\n\n        return lang;\n      },\n\n      /**\n       * Inserts tokens _before_ another token in a language definition or any other grammar.\n       *\n       * ## Usage\n       *\n       * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n       * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n       * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n       * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n       * this:\n       *\n       * ```js\n       * Prism.languages.markup.style = {\n       *     // token\n       * };\n       * ```\n       *\n       * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n       * before existing tokens. For the CSS example above, you would use it like this:\n       *\n       * ```js\n       * Prism.languages.insertBefore('markup', 'cdata', {\n       *     'style': {\n       *         // token\n       *     }\n       * });\n       * ```\n       *\n       * ## Special cases\n       *\n       * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n       * will be ignored.\n       *\n       * This behavior can be used to insert tokens after `before`:\n       *\n       * ```js\n       * Prism.languages.insertBefore('markup', 'comment', {\n       *     'comment': Prism.languages.markup.comment,\n       *     // tokens after 'comment'\n       * });\n       * ```\n       *\n       * ## Limitations\n       *\n       * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n       * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n       * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n       * deleting properties which is necessary to insert at arbitrary positions.\n       *\n       * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n       * Instead, it will create a new object and replace all references to the target object with the new one. This\n       * can be done without temporarily deleting properties, so the iteration order is well-defined.\n       *\n       * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n       * you hold the target object in a variable, then the value of the variable will not change.\n       *\n       * ```js\n       * var oldMarkup = Prism.languages.markup;\n       * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n       *\n       * assert(oldMarkup !== Prism.languages.markup);\n       * assert(newMarkup === Prism.languages.markup);\n       * ```\n       *\n       * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n       * object to be modified.\n       * @param {string} before The key to insert before.\n       * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n       * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n       * object to be modified.\n       *\n       * Defaults to `Prism.languages`.\n       * @returns {Grammar} The new grammar object.\n       * @public\n       */\n      insertBefore: function insertBefore(inside, before, insert, root) {\n        root = root || _.languages;\n        var grammar = root[inside];\n        /** @type {Grammar} */\n\n        var ret = {};\n\n        for (var token in grammar) {\n          if (grammar.hasOwnProperty(token)) {\n            if (token == before) {\n              for (var newToken in insert) {\n                if (insert.hasOwnProperty(newToken)) {\n                  ret[newToken] = insert[newToken];\n                }\n              }\n            } // Do not insert token which also occur in insert. See #1525\n\n\n            if (!insert.hasOwnProperty(token)) {\n              ret[token] = grammar[token];\n            }\n          }\n        }\n\n        var old = root[inside];\n        root[inside] = ret; // Update references in other language definitions\n\n        _.languages.DFS(_.languages, function (key, value) {\n          if (value === old && key != inside) {\n            this[key] = ret;\n          }\n        });\n\n        return ret;\n      },\n      // Traverse a language definition with Depth First Search\n      DFS: function DFS(o, callback, type, visited) {\n        visited = visited || {};\n        var objId = _.util.objId;\n\n        for (var i in o) {\n          if (o.hasOwnProperty(i)) {\n            callback.call(o, i, o[i], type || i);\n            var property = o[i];\n\n            var propertyType = _.util.type(property);\n\n            if (propertyType === 'Object' && !visited[objId(property)]) {\n              visited[objId(property)] = true;\n              DFS(property, callback, null, visited);\n            } else if (propertyType === 'Array' && !visited[objId(property)]) {\n              visited[objId(property)] = true;\n              DFS(property, callback, i, visited);\n            }\n          }\n        }\n      }\n    },\n    plugins: {},\n\n    /**\n     * This is the most high-level function in Prism’s API.\n     * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n     * each one of them.\n     *\n     * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n     *\n     * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n     * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n     * @memberof Prism\n     * @public\n     */\n    highlightAll: function highlightAll(async, callback) {\n      _.highlightAllUnder(document, async, callback);\n    },\n\n    /**\n     * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n     * {@link Prism.highlightElement} on each one of them.\n     *\n     * The following hooks will be run:\n     * 1. `before-highlightall`\n     * 2. `before-all-elements-highlight`\n     * 3. All hooks of {@link Prism.highlightElement} for each element.\n     *\n     * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n     * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n     * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n     * @memberof Prism\n     * @public\n     */\n    highlightAllUnder: function highlightAllUnder(container, async, callback) {\n      var env = {\n        callback: callback,\n        container: container,\n        selector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n      };\n\n      _.hooks.run('before-highlightall', env);\n\n      env.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n      _.hooks.run('before-all-elements-highlight', env);\n\n      for (var i = 0, element; element = env.elements[i++];) {\n        _.highlightElement(element, async === true, env.callback);\n      }\n    },\n\n    /**\n     * Highlights the code inside a single element.\n     *\n     * The following hooks will be run:\n     * 1. `before-sanity-check`\n     * 2. `before-highlight`\n     * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n     * 4. `before-insert`\n     * 5. `after-highlight`\n     * 6. `complete`\n     *\n     * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n     * the element's language.\n     *\n     * @param {Element} element The element containing the code.\n     * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n     * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n     * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n     * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n     *\n     * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n     * asynchronous highlighting to work. You can build your own bundle on the\n     * [Download page](https://prismjs.com/download.html).\n     * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n     * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n     * @memberof Prism\n     * @public\n     */\n    highlightElement: function highlightElement(element, async, callback) {\n      // Find language\n      var language = _.util.getLanguage(element);\n\n      var grammar = _.languages[language]; // Set language on the element, if not present\n\n      _.util.setLanguage(element, language); // Set language on the parent, for styling\n\n\n      var parent = element.parentElement;\n\n      if (parent && parent.nodeName.toLowerCase() === 'pre') {\n        _.util.setLanguage(parent, language);\n      }\n\n      var code = element.textContent;\n      var env = {\n        element: element,\n        language: language,\n        grammar: grammar,\n        code: code\n      };\n\n      function insertHighlightedCode(highlightedCode) {\n        env.highlightedCode = highlightedCode;\n\n        _.hooks.run('before-insert', env);\n\n        env.element.innerHTML = env.highlightedCode;\n\n        _.hooks.run('after-highlight', env);\n\n        _.hooks.run('complete', env);\n\n        callback && callback.call(env.element);\n      }\n\n      _.hooks.run('before-sanity-check', env); // plugins may change/add the parent/element\n\n\n      parent = env.element.parentElement;\n\n      if (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n        parent.setAttribute('tabindex', '0');\n      }\n\n      if (!env.code) {\n        _.hooks.run('complete', env);\n\n        callback && callback.call(env.element);\n        return;\n      }\n\n      _.hooks.run('before-highlight', env);\n\n      if (!env.grammar) {\n        insertHighlightedCode(_.util.encode(env.code));\n        return;\n      }\n\n      if (async && _self.Worker) {\n        var worker = new Worker(_.filename);\n\n        worker.onmessage = function (evt) {\n          insertHighlightedCode(evt.data);\n        };\n\n        worker.postMessage(JSON.stringify({\n          language: env.language,\n          code: env.code,\n          immediateClose: true\n        }));\n      } else {\n        insertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n      }\n    },\n\n    /**\n     * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n     * and the language definitions to use, and returns a string with the HTML produced.\n     *\n     * The following hooks will be run:\n     * 1. `before-tokenize`\n     * 2. `after-tokenize`\n     * 3. `wrap`: On each {@link Token}.\n     *\n     * @param {string} text A string with the code to be highlighted.\n     * @param {Grammar} grammar An object containing the tokens to use.\n     *\n     * Usually a language definition like `Prism.languages.markup`.\n     * @param {string} language The name of the language definition passed to `grammar`.\n     * @returns {string} The highlighted HTML.\n     * @memberof Prism\n     * @public\n     * @example\n     * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n     */\n    highlight: function highlight(text, grammar, language) {\n      var env = {\n        code: text,\n        grammar: grammar,\n        language: language\n      };\n\n      _.hooks.run('before-tokenize', env);\n\n      if (!env.grammar) {\n        throw new Error('The language \"' + env.language + '\" has no grammar.');\n      }\n\n      env.tokens = _.tokenize(env.code, env.grammar);\n\n      _.hooks.run('after-tokenize', env);\n\n      return Token.stringify(_.util.encode(env.tokens), env.language);\n    },\n\n    /**\n     * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n     * and the language definitions to use, and returns an array with the tokenized code.\n     *\n     * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n     *\n     * This method could be useful in other contexts as well, as a very crude parser.\n     *\n     * @param {string} text A string with the code to be highlighted.\n     * @param {Grammar} grammar An object containing the tokens to use.\n     *\n     * Usually a language definition like `Prism.languages.markup`.\n     * @returns {TokenStream} An array of strings and tokens, a token stream.\n     * @memberof Prism\n     * @public\n     * @example\n     * let code = `var foo = 0;`;\n     * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n     * tokens.forEach(token => {\n     *     if (token instanceof Prism.Token && token.type === 'number') {\n     *         console.log(`Found numeric literal: ${token.content}`);\n     *     }\n     * });\n     */\n    tokenize: function tokenize(text, grammar) {\n      var rest = grammar.rest;\n\n      if (rest) {\n        for (var token in rest) {\n          grammar[token] = rest[token];\n        }\n\n        delete grammar.rest;\n      }\n\n      var tokenList = new LinkedList();\n      addAfter(tokenList, tokenList.head, text);\n      matchGrammar(text, tokenList, grammar, tokenList.head, 0);\n      return toArray(tokenList);\n    },\n\n    /**\n     * @namespace\n     * @memberof Prism\n     * @public\n     */\n    hooks: {\n      all: {},\n\n      /**\n       * Adds the given callback to the list of callbacks for the given hook.\n       *\n       * The callback will be invoked when the hook it is registered for is run.\n       * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n       *\n       * One callback function can be registered to multiple hooks and the same hook multiple times.\n       *\n       * @param {string} name The name of the hook.\n       * @param {HookCallback} callback The callback function which is given environment variables.\n       * @public\n       */\n      add: function add(name, callback) {\n        var hooks = _.hooks.all;\n        hooks[name] = hooks[name] || [];\n        hooks[name].push(callback);\n      },\n\n      /**\n       * Runs a hook invoking all registered callbacks with the given environment variables.\n       *\n       * Callbacks will be invoked synchronously and in the order in which they were registered.\n       *\n       * @param {string} name The name of the hook.\n       * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n       * @public\n       */\n      run: function run(name, env) {\n        var callbacks = _.hooks.all[name];\n\n        if (!callbacks || !callbacks.length) {\n          return;\n        }\n\n        for (var i = 0, callback; callback = callbacks[i++];) {\n          callback(env);\n        }\n      }\n    },\n    Token: Token\n  };\n  _self.Prism = _; // Typescript note:\n  // The following can be used to import the Token type in JSDoc:\n  //\n  //   @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n  /**\n   * Creates a new token.\n   *\n   * @param {string} type See {@link Token#type type}\n   * @param {string | TokenStream} content See {@link Token#content content}\n   * @param {string|string[]} [alias] The alias(es) of the token.\n   * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n   * @class\n   * @global\n   * @public\n   */\n\n  function Token(type, content, alias, matchedStr) {\n    /**\n     * The type of the token.\n     *\n     * This is usually the key of a pattern in a {@link Grammar}.\n     *\n     * @type {string}\n     * @see GrammarToken\n     * @public\n     */\n    this.type = type;\n    /**\n     * The strings or tokens contained by this token.\n     *\n     * This will be a token stream if the pattern matched also defined an `inside` grammar.\n     *\n     * @type {string | TokenStream}\n     * @public\n     */\n\n    this.content = content;\n    /**\n     * The alias(es) of the token.\n     *\n     * @type {string|string[]}\n     * @see GrammarToken\n     * @public\n     */\n\n    this.alias = alias; // Copy of the full string this token was created from\n\n    this.length = (matchedStr || '').length | 0;\n  }\n  /**\n   * A token stream is an array of strings and {@link Token Token} objects.\n   *\n   * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n   * them.\n   *\n   * 1. No adjacent strings.\n   * 2. No empty strings.\n   *\n   *    The only exception here is the token stream that only contains the empty string and nothing else.\n   *\n   * @typedef {Array<string | Token>} TokenStream\n   * @global\n   * @public\n   */\n\n  /**\n   * Converts the given token or token stream to an HTML representation.\n   *\n   * The following hooks will be run:\n   * 1. `wrap`: On each {@link Token}.\n   *\n   * @param {string | Token | TokenStream} o The token or token stream to be converted.\n   * @param {string} language The name of current language.\n   * @returns {string} The HTML representation of the token or token stream.\n   * @memberof Token\n   * @static\n   */\n\n\n  Token.stringify = function stringify(o, language) {\n    if (typeof o == 'string') {\n      return o;\n    }\n\n    if (Array.isArray(o)) {\n      var s = '';\n      o.forEach(function (e) {\n        s += stringify(e, language);\n      });\n      return s;\n    }\n\n    var env = {\n      type: o.type,\n      content: stringify(o.content, language),\n      tag: 'span',\n      classes: ['token', o.type],\n      attributes: {},\n      language: language\n    };\n    var aliases = o.alias;\n\n    if (aliases) {\n      if (Array.isArray(aliases)) {\n        Array.prototype.push.apply(env.classes, aliases);\n      } else {\n        env.classes.push(aliases);\n      }\n    }\n\n    _.hooks.run('wrap', env);\n\n    var attributes = '';\n\n    for (var name in env.attributes) {\n      attributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n    }\n\n    return '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n  };\n  /**\n   * @param {RegExp} pattern\n   * @param {number} pos\n   * @param {string} text\n   * @param {boolean} lookbehind\n   * @returns {RegExpExecArray | null}\n   */\n\n\n  function matchPattern(pattern, pos, text, lookbehind) {\n    pattern.lastIndex = pos;\n    var match = pattern.exec(text);\n\n    if (match && lookbehind && match[1]) {\n      // change the match to remove the text matched by the Prism lookbehind group\n      var lookbehindLength = match[1].length;\n      match.index += lookbehindLength;\n      match[0] = match[0].slice(lookbehindLength);\n    }\n\n    return match;\n  }\n  /**\n   * @param {string} text\n   * @param {LinkedList<string | Token>} tokenList\n   * @param {any} grammar\n   * @param {LinkedListNode<string | Token>} startNode\n   * @param {number} startPos\n   * @param {RematchOptions} [rematch]\n   * @returns {void}\n   * @private\n   *\n   * @typedef RematchOptions\n   * @property {string} cause\n   * @property {number} reach\n   */\n\n\n  function matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n    for (var token in grammar) {\n      if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n        continue;\n      }\n\n      var patterns = grammar[token];\n      patterns = Array.isArray(patterns) ? patterns : [patterns];\n\n      for (var j = 0; j < patterns.length; ++j) {\n        if (rematch && rematch.cause == token + ',' + j) {\n          return;\n        }\n\n        var patternObj = patterns[j];\n        var inside = patternObj.inside;\n        var lookbehind = !!patternObj.lookbehind;\n        var greedy = !!patternObj.greedy;\n        var alias = patternObj.alias;\n\n        if (greedy && !patternObj.pattern.global) {\n          // Without the global flag, lastIndex won't work\n          var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n          patternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n        }\n        /** @type {RegExp} */\n\n\n        var pattern = patternObj.pattern || patternObj;\n\n        for ( // iterate the token list and keep track of the current token/string position\n        var currentNode = startNode.next, pos = startPos; currentNode !== tokenList.tail; pos += currentNode.value.length, currentNode = currentNode.next) {\n          if (rematch && pos >= rematch.reach) {\n            break;\n          }\n\n          var str = currentNode.value;\n\n          if (tokenList.length > text.length) {\n            // Something went terribly wrong, ABORT, ABORT!\n            return;\n          }\n\n          if (str instanceof Token) {\n            continue;\n          }\n\n          var removeCount = 1; // this is the to parameter of removeBetween\n\n          var match;\n\n          if (greedy) {\n            match = matchPattern(pattern, pos, text, lookbehind);\n\n            if (!match || match.index >= text.length) {\n              break;\n            }\n\n            var from = match.index;\n            var to = match.index + match[0].length;\n            var p = pos; // find the node that contains the match\n\n            p += currentNode.value.length;\n\n            while (from >= p) {\n              currentNode = currentNode.next;\n              p += currentNode.value.length;\n            } // adjust pos (and p)\n\n\n            p -= currentNode.value.length;\n            pos = p; // the current node is a Token, then the match starts inside another Token, which is invalid\n\n            if (currentNode.value instanceof Token) {\n              continue;\n            } // find the last node which is affected by this match\n\n\n            for (var k = currentNode; k !== tokenList.tail && (p < to || typeof k.value === 'string'); k = k.next) {\n              removeCount++;\n              p += k.value.length;\n            }\n\n            removeCount--; // replace with the new match\n\n            str = text.slice(pos, p);\n            match.index -= pos;\n          } else {\n            match = matchPattern(pattern, 0, str, lookbehind);\n\n            if (!match) {\n              continue;\n            }\n          } // eslint-disable-next-line no-redeclare\n\n\n          var from = match.index;\n          var matchStr = match[0];\n          var before = str.slice(0, from);\n          var after = str.slice(from + matchStr.length);\n          var reach = pos + str.length;\n\n          if (rematch && reach > rematch.reach) {\n            rematch.reach = reach;\n          }\n\n          var removeFrom = currentNode.prev;\n\n          if (before) {\n            removeFrom = addAfter(tokenList, removeFrom, before);\n            pos += before.length;\n          }\n\n          removeRange(tokenList, removeFrom, removeCount);\n          var wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n          currentNode = addAfter(tokenList, removeFrom, wrapped);\n\n          if (after) {\n            addAfter(tokenList, currentNode, after);\n          }\n\n          if (removeCount > 1) {\n            // at least one Token object was removed, so we have to do some rematching\n            // this can only happen if the current pattern is greedy\n\n            /** @type {RematchOptions} */\n            var nestedRematch = {\n              cause: token + ',' + j,\n              reach: reach\n            };\n            matchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch); // the reach might have been extended because of the rematching\n\n            if (rematch && nestedRematch.reach > rematch.reach) {\n              rematch.reach = nestedRematch.reach;\n            }\n          }\n        }\n      }\n    }\n  }\n  /**\n   * @typedef LinkedListNode\n   * @property {T} value\n   * @property {LinkedListNode<T> | null} prev The previous node.\n   * @property {LinkedListNode<T> | null} next The next node.\n   * @template T\n   * @private\n   */\n\n  /**\n   * @template T\n   * @private\n   */\n\n\n  function LinkedList() {\n    /** @type {LinkedListNode<T>} */\n    var head = {\n      value: null,\n      prev: null,\n      next: null\n    };\n    /** @type {LinkedListNode<T>} */\n\n    var tail = {\n      value: null,\n      prev: head,\n      next: null\n    };\n    head.next = tail;\n    /** @type {LinkedListNode<T>} */\n\n    this.head = head;\n    /** @type {LinkedListNode<T>} */\n\n    this.tail = tail;\n    this.length = 0;\n  }\n  /**\n   * Adds a new node with the given value to the list.\n   *\n   * @param {LinkedList<T>} list\n   * @param {LinkedListNode<T>} node\n   * @param {T} value\n   * @returns {LinkedListNode<T>} The added node.\n   * @template T\n   */\n\n\n  function addAfter(list, node, value) {\n    // assumes that node != list.tail && values.length >= 0\n    var next = node.next;\n    var newNode = {\n      value: value,\n      prev: node,\n      next: next\n    };\n    node.next = newNode;\n    next.prev = newNode;\n    list.length++;\n    return newNode;\n  }\n  /**\n   * Removes `count` nodes after the given node. The given node will not be removed.\n   *\n   * @param {LinkedList<T>} list\n   * @param {LinkedListNode<T>} node\n   * @param {number} count\n   * @template T\n   */\n\n\n  function removeRange(list, node, count) {\n    var next = node.next;\n\n    for (var i = 0; i < count && next !== list.tail; i++) {\n      next = next.next;\n    }\n\n    node.next = next;\n    next.prev = node;\n    list.length -= i;\n  }\n  /**\n   * @param {LinkedList<T>} list\n   * @returns {T[]}\n   * @template T\n   */\n\n\n  function toArray(list) {\n    var array = [];\n    var node = list.head.next;\n\n    while (node !== list.tail) {\n      array.push(node.value);\n      node = node.next;\n    }\n\n    return array;\n  }\n\n  if (!_self.document) {\n    if (!_self.addEventListener) {\n      // in Node.js\n      return _;\n    }\n\n    if (!_.disableWorkerMessageHandler) {\n      // In worker\n      _self.addEventListener('message', function (evt) {\n        var message = JSON.parse(evt.data);\n        var lang = message.language;\n        var code = message.code;\n        var immediateClose = message.immediateClose;\n\n        _self.postMessage(_.highlight(code, _.languages[lang], lang));\n\n        if (immediateClose) {\n          _self.close();\n        }\n      }, false);\n    }\n\n    return _;\n  } // Get current script and highlight\n\n\n  var script = _.util.currentScript();\n\n  if (script) {\n    _.filename = script.src;\n\n    if (script.hasAttribute('data-manual')) {\n      _.manual = true;\n    }\n  }\n\n  function highlightAutomaticallyCallback() {\n    if (!_.manual) {\n      _.highlightAll();\n    }\n  }\n\n  if (!_.manual) {\n    // If the document state is \"loading\", then we'll use DOMContentLoaded.\n    // If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n    // DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n    // might take longer one animation frame to execute which can create a race condition where only some plugins have\n    // been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n    // See https://github.com/PrismJS/prism/issues/2102\n    var readyState = document.readyState;\n\n    if (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n      document.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n    } else {\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(highlightAutomaticallyCallback);\n      } else {\n        window.setTimeout(highlightAutomaticallyCallback, 16);\n      }\n    }\n  }\n\n  return _;\n}(_self);\n\nif (typeof module !== 'undefined' && module.exports) {\n  module.exports = Prism;\n} // hack for components to work correctly in node.js\n\n\nif (typeof global !== 'undefined') {\n  global.Prism = Prism;\n} // some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\n\nPrism.languages.markup = {\n  'comment': {\n    pattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n    greedy: true\n  },\n  'prolog': {\n    pattern: /<\\?[\\s\\S]+?\\?>/,\n    greedy: true\n  },\n  'doctype': {\n    // https://www.w3.org/TR/xml/#NT-doctypedecl\n    pattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n    greedy: true,\n    inside: {\n      'internal-subset': {\n        pattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n        lookbehind: true,\n        greedy: true,\n        inside: null // see below\n\n      },\n      'string': {\n        pattern: /\"[^\"]*\"|'[^']*'/,\n        greedy: true\n      },\n      'punctuation': /^<!|>$|[[\\]]/,\n      'doctype-tag': /^DOCTYPE/i,\n      'name': /[^\\s<>'\"]+/\n    }\n  },\n  'cdata': {\n    pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n    greedy: true\n  },\n  'tag': {\n    pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n    greedy: true,\n    inside: {\n      'tag': {\n        pattern: /^<\\/?[^\\s>\\/]+/,\n        inside: {\n          'punctuation': /^<\\/?/,\n          'namespace': /^[^\\s>\\/:]+:/\n        }\n      },\n      'special-attr': [],\n      'attr-value': {\n        pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n        inside: {\n          'punctuation': [{\n            pattern: /^=/,\n            alias: 'attr-equals'\n          }, /\"|'/]\n        }\n      },\n      'punctuation': /\\/?>/,\n      'attr-name': {\n        pattern: /[^\\s>\\/]+/,\n        inside: {\n          'namespace': /^[^\\s>\\/:]+:/\n        }\n      }\n    }\n  },\n  'entity': [{\n    pattern: /&[\\da-z]{1,8};/i,\n    alias: 'named-entity'\n  }, /&#x?[\\da-f]{1,8};/i]\n};\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] = Prism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup; // Plugin to make entity title show the real entity, idea by Roman Komarov\n\nPrism.hooks.add('wrap', function (env) {\n  if (env.type === 'entity') {\n    env.attributes['title'] = env.content.replace(/&/, '&');\n  }\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n  /**\n   * Adds an inlined language to markup.\n   *\n   * An example of an inlined language is CSS with `<style>` tags.\n   *\n   * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n   * case insensitive.\n   * @param {string} lang The language key.\n   * @example\n   * addInlined('style', 'css');\n   */\n  value: function addInlined(tagName, lang) {\n    var includedCdataInside = {};\n    includedCdataInside['language-' + lang] = {\n      pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n      lookbehind: true,\n      inside: Prism.languages[lang]\n    };\n    includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n    var inside = {\n      'included-cdata': {\n        pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n        inside: includedCdataInside\n      }\n    };\n    inside['language-' + lang] = {\n      pattern: /[\\s\\S]+/,\n      inside: Prism.languages[lang]\n    };\n    var def = {};\n    def[tagName] = {\n      pattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () {\n        return tagName;\n      }), 'i'),\n      lookbehind: true,\n      greedy: true,\n      inside: inside\n    };\n    Prism.languages.insertBefore('markup', 'cdata', def);\n  }\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n  /**\n   * Adds an pattern to highlight languages embedded in HTML attributes.\n   *\n   * An example of an inlined language is CSS with `style` attributes.\n   *\n   * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n   * case insensitive.\n   * @param {string} lang The language key.\n   * @example\n   * addAttribute('style', 'css');\n   */\n  value: function value(attrName, lang) {\n    Prism.languages.markup.tag.inside['special-attr'].push({\n      pattern: RegExp(/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source, 'i'),\n      lookbehind: true,\n      inside: {\n        'attr-name': /^[^\\s=]+/,\n        'attr-value': {\n          pattern: /=[\\s\\S]+/,\n          inside: {\n            'value': {\n              pattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n              lookbehind: true,\n              alias: [lang, 'language-' + lang],\n              inside: Prism.languages[lang]\n            },\n            'punctuation': [{\n              pattern: /^=/,\n              alias: 'attr-equals'\n            }, /\"|'/]\n          }\n        }\n      }\n    });\n  }\n});\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n  var string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n  Prism.languages.css = {\n    'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n    'atrule': {\n      pattern: /@[\\w-](?:[^;{\\s]|\\s+(?![\\s{]))*(?:;|(?=\\s*\\{))/,\n      inside: {\n        'rule': /^@[\\w-]+/,\n        'selector-function-argument': {\n          pattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n          lookbehind: true,\n          alias: 'selector'\n        },\n        'keyword': {\n          pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n          lookbehind: true\n        } // See rest below\n\n      }\n    },\n    'url': {\n      // https://drafts.csswg.org/css-values-3/#urls\n      pattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n      greedy: true,\n      inside: {\n        'function': /^url/i,\n        'punctuation': /^\\(|\\)$/,\n        'string': {\n          pattern: RegExp('^' + string.source + '$'),\n          alias: 'url'\n        }\n      }\n    },\n    'selector': {\n      pattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n      lookbehind: true\n    },\n    'string': {\n      pattern: string,\n      greedy: true\n    },\n    'property': {\n      pattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n      lookbehind: true\n    },\n    'important': /!important\\b/i,\n    'function': {\n      pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n      lookbehind: true\n    },\n    'punctuation': /[(){};:,]/\n  };\n  Prism.languages.css['atrule'].inside.rest = Prism.languages.css;\n  var markup = Prism.languages.markup;\n\n  if (markup) {\n    markup.tag.addInlined('style', 'css');\n    markup.tag.addAttribute('style', 'css');\n  }\n})(Prism);\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\n\nPrism.languages.clike = {\n  'comment': [{\n    pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n    lookbehind: true,\n    greedy: true\n  }, {\n    pattern: /(^|[^\\\\:])\\/\\/.*/,\n    lookbehind: true,\n    greedy: true\n  }],\n  'string': {\n    pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n    greedy: true\n  },\n  'class-name': {\n    pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n    lookbehind: true,\n    inside: {\n      'punctuation': /[.\\\\]/\n    }\n  },\n  'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n  'boolean': /\\b(?:false|true)\\b/,\n  'function': /\\b\\w+(?=\\()/,\n  'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n  'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n  'punctuation': /[{}[\\];(),.:]/\n};\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n  'class-name': [Prism.languages.clike['class-name'], {\n    pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n    lookbehind: true\n  }],\n  'keyword': [{\n    pattern: /((?:^|\\})\\s*)catch\\b/,\n    lookbehind: true\n  }, {\n    pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n    lookbehind: true\n  }],\n  // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n  'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n  'number': {\n    pattern: RegExp(/(^|[^\\w$])/.source + '(?:' + ( // constant\n    /NaN|Infinity/.source + '|' + // binary integer\n    /0[bB][01]+(?:_[01]+)*n?/.source + '|' + // octal integer\n    /0[oO][0-7]+(?:_[0-7]+)*n?/.source + '|' + // hexadecimal integer\n    /0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source + '|' + // decimal bigint\n    /\\d+(?:_\\d+)*n/.source + '|' + // decimal number (integer or float) but no bigint\n    /(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source) + ')' + /(?![\\w$])/.source),\n    lookbehind: true\n  },\n  'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\nPrism.languages.insertBefore('javascript', 'keyword', {\n  'regex': {\n    pattern: RegExp( // lookbehind\n    // eslint-disable-next-line regexp/no-dupe-characters-character-class\n    /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source + // Regex pattern:\n    // There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n    // classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n    // with the only syntax, so we have to define 2 different regex patterns.\n    /\\//.source + '(?:' + /(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source + '|' + // `v` flag syntax. This supports 3 levels of nested character classes.\n    /(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source + ')' + // lookahead\n    /(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source),\n    lookbehind: true,\n    greedy: true,\n    inside: {\n      'regex-source': {\n        pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n        lookbehind: true,\n        alias: 'language-regex',\n        inside: Prism.languages.regex\n      },\n      'regex-delimiter': /^\\/|\\/$/,\n      'regex-flags': /^[a-z]+$/\n    }\n  },\n  // This must be declared before keyword because we use \"function\" inside the look-forward\n  'function-variable': {\n    pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n    alias: 'function'\n  },\n  'parameter': [{\n    pattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n    lookbehind: true,\n    inside: Prism.languages.javascript\n  }, {\n    pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n    lookbehind: true,\n    inside: Prism.languages.javascript\n  }, {\n    pattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n    lookbehind: true,\n    inside: Prism.languages.javascript\n  }, {\n    pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n    lookbehind: true,\n    inside: Prism.languages.javascript\n  }],\n  'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\nPrism.languages.insertBefore('javascript', 'string', {\n  'hashbang': {\n    pattern: /^#!.*/,\n    greedy: true,\n    alias: 'comment'\n  },\n  'template-string': {\n    pattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n    greedy: true,\n    inside: {\n      'template-punctuation': {\n        pattern: /^`|`$/,\n        alias: 'string'\n      },\n      'interpolation': {\n        pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n        lookbehind: true,\n        inside: {\n          'interpolation-punctuation': {\n            pattern: /^\\$\\{|\\}$/,\n            alias: 'punctuation'\n          },\n          rest: Prism.languages.javascript\n        }\n      },\n      'string': /[\\s\\S]+/\n    }\n  },\n  'string-property': {\n    pattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n    lookbehind: true,\n    greedy: true,\n    alias: 'property'\n  }\n});\nPrism.languages.insertBefore('javascript', 'operator', {\n  'literal-property': {\n    pattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n    lookbehind: true,\n    alias: 'property'\n  }\n});\n\nif (Prism.languages.markup) {\n  Prism.languages.markup.tag.addInlined('script', 'javascript'); // add attribute support for all DOM events.\n  // https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\n  Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, 'javascript');\n}\n\nPrism.languages.js = Prism.languages.javascript;\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n  if (typeof Prism === 'undefined' || typeof document === 'undefined') {\n    return;\n  } // https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\n\n  if (!Element.prototype.matches) {\n    Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n  }\n\n  var LOADING_MESSAGE = 'Loading…';\n\n  var FAILURE_MESSAGE = function FAILURE_MESSAGE(status, message) {\n    return '✖ Error ' + status + ' while fetching file: ' + message;\n  };\n\n  var FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';\n  var EXTENSIONS = {\n    'js': 'javascript',\n    'py': 'python',\n    'rb': 'ruby',\n    'ps1': 'powershell',\n    'psm1': 'powershell',\n    'sh': 'bash',\n    'bat': 'batch',\n    'h': 'c',\n    'tex': 'latex'\n  };\n  var STATUS_ATTR = 'data-src-status';\n  var STATUS_LOADING = 'loading';\n  var STATUS_LOADED = 'loaded';\n  var STATUS_FAILED = 'failed';\n  var SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])' + ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n  /**\n   * Loads the given file.\n   *\n   * @param {string} src The URL or path of the source file to load.\n   * @param {(result: string) => void} success\n   * @param {(reason: string) => void} error\n   */\n\n  function loadFile(src, success, error) {\n    var xhr = new XMLHttpRequest();\n    xhr.open('GET', src, true);\n\n    xhr.onreadystatechange = function () {\n      if (xhr.readyState == 4) {\n        if (xhr.status < 400 && xhr.responseText) {\n          success(xhr.responseText);\n        } else {\n          if (xhr.status >= 400) {\n            error(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n          } else {\n            error(FAILURE_EMPTY_MESSAGE);\n          }\n        }\n      }\n    };\n\n    xhr.send(null);\n  }\n  /**\n   * Parses the given range.\n   *\n   * This returns a range with inclusive ends.\n   *\n   * @param {string | null | undefined} range\n   * @returns {[number, number | undefined] | undefined}\n   */\n\n\n  function parseRange(range) {\n    var m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\n    if (m) {\n      var start = Number(m[1]);\n      var comma = m[2];\n      var end = m[3];\n\n      if (!comma) {\n        return [start, start];\n      }\n\n      if (!end) {\n        return [start, undefined];\n      }\n\n      return [start, Number(end)];\n    }\n\n    return undefined;\n  }\n\n  Prism.hooks.add('before-highlightall', function (env) {\n    env.selector += ', ' + SELECTOR;\n  });\n  Prism.hooks.add('before-sanity-check', function (env) {\n    var pre = env.element;\n\n    if (pre.matches(SELECTOR)) {\n      env.code = ''; // fast-path the whole thing and go to complete\n\n      pre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n      // add code element with loading message\n\n      var code = pre.appendChild(document.createElement('CODE'));\n      code.textContent = LOADING_MESSAGE;\n      var src = pre.getAttribute('data-src');\n      var language = env.language;\n\n      if (language === 'none') {\n        // the language might be 'none' because there is no language set;\n        // in this case, we want to use the extension as the language\n        var extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n        language = EXTENSIONS[extension] || extension;\n      } // set language classes\n\n\n      Prism.util.setLanguage(code, language);\n      Prism.util.setLanguage(pre, language); // preload the language\n\n      var autoloader = Prism.plugins.autoloader;\n\n      if (autoloader) {\n        autoloader.loadLanguages(language);\n      } // load file\n\n\n      loadFile(src, function (text) {\n        // mark as loaded\n        pre.setAttribute(STATUS_ATTR, STATUS_LOADED); // handle data-range\n\n        var range = parseRange(pre.getAttribute('data-range'));\n\n        if (range) {\n          var lines = text.split(/\\r\\n?|\\n/g); // the range is one-based and inclusive on both ends\n\n          var start = range[0];\n          var end = range[1] == null ? lines.length : range[1];\n\n          if (start < 0) {\n            start += lines.length;\n          }\n\n          start = Math.max(0, Math.min(start - 1, lines.length));\n\n          if (end < 0) {\n            end += lines.length;\n          }\n\n          end = Math.max(0, Math.min(end, lines.length));\n          text = lines.slice(start, end).join('\\n'); // add data-start for line numbers\n\n          if (!pre.hasAttribute('data-start')) {\n            pre.setAttribute('data-start', String(start + 1));\n          }\n        } // highlight code\n\n\n        code.textContent = text;\n        Prism.highlightElement(code);\n      }, function (error) {\n        // mark as failed\n        pre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n        code.textContent = error;\n      });\n    }\n  });\n  Prism.plugins.fileHighlight = {\n    /**\n     * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n     *\n     * Note: Elements which are already loaded or currently loading will not be touched by this method.\n     *\n     * @param {ParentNode} [container=document]\n     */\n    highlight: function highlight(container) {\n      var elements = (container || document).querySelectorAll(SELECTOR);\n\n      for (var i = 0, element; element = elements[i++];) {\n        Prism.highlightElement(element);\n      }\n    }\n  };\n  var logged = false;\n  /** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\n  Prism.fileHighlight = function () {\n    if (!logged) {\n      console.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n      logged = true;\n    }\n\n    Prism.plugins.fileHighlight.highlight.apply(this, arguments);\n  };\n})();","export var IconsManifest = [{\n  \"id\": \"fa\",\n  \"name\": \"Font Awesome\",\n  \"projectUrl\": \"https://fontawesome.com/\",\n  \"license\": \"CC BY 4.0 License\",\n  \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n}, {\n  \"id\": \"io\",\n  \"name\": \"Ionicons 4\",\n  \"projectUrl\": \"https://ionicons.com/\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n}, {\n  \"id\": \"io5\",\n  \"name\": \"Ionicons 5\",\n  \"projectUrl\": \"https://ionicons.com/\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n}, {\n  \"id\": \"md\",\n  \"name\": \"Material Design icons\",\n  \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n  \"license\": \"Apache License Version 2.0\",\n  \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n}, {\n  \"id\": \"ti\",\n  \"name\": \"Typicons\",\n  \"projectUrl\": \"http://s-ings.com/typicons/\",\n  \"license\": \"CC BY-SA 3.0\",\n  \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n}, {\n  \"id\": \"go\",\n  \"name\": \"Github Octicons icons\",\n  \"projectUrl\": \"https://octicons.github.com/\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n}, {\n  \"id\": \"fi\",\n  \"name\": \"Feather\",\n  \"projectUrl\": \"https://feathericons.com/\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n}, {\n  \"id\": \"gi\",\n  \"name\": \"Game Icons\",\n  \"projectUrl\": \"https://game-icons.net/\",\n  \"license\": \"CC BY 3.0\",\n  \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n}, {\n  \"id\": \"wi\",\n  \"name\": \"Weather Icons\",\n  \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n  \"license\": \"SIL OFL 1.1\",\n  \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n}, {\n  \"id\": \"di\",\n  \"name\": \"Devicons\",\n  \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n  \"id\": \"ai\",\n  \"name\": \"Ant Design Icons\",\n  \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n  \"id\": \"bs\",\n  \"name\": \"Bootstrap Icons\",\n  \"projectUrl\": \"https://github.com/twbs/icons\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n  \"id\": \"ri\",\n  \"name\": \"Remix Icon\",\n  \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n  \"license\": \"Apache License Version 2.0\",\n  \"licenseUrl\": \"http://www.apache.org/licenses/\"\n}, {\n  \"id\": \"fc\",\n  \"name\": \"Flat Color Icons\",\n  \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n  \"id\": \"gr\",\n  \"name\": \"Grommet-Icons\",\n  \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n  \"license\": \"Apache License Version 2.0\",\n  \"licenseUrl\": \"http://www.apache.org/licenses/\"\n}, {\n  \"id\": \"hi\",\n  \"name\": \"Heroicons\",\n  \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n  \"id\": \"si\",\n  \"name\": \"Simple Icons\",\n  \"projectUrl\": \"https://simpleicons.org/\",\n  \"license\": \"CC0 1.0 Universal\",\n  \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n}, {\n  \"id\": \"im\",\n  \"name\": \"IcoMoon Free\",\n  \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n  \"license\": \"CC BY 4.0 License\"\n}, {\n  \"id\": \"bi\",\n  \"name\": \"BoxIcons\",\n  \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n  \"license\": \"CC BY 4.0 License\"\n}, {\n  \"id\": \"cg\",\n  \"name\": \"css.gg\",\n  \"projectUrl\": \"https://github.com/astrit/css.gg\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n  \"id\": \"vsc\",\n  \"name\": \"VS Code Icons\",\n  \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n  \"license\": \"CC BY 4.0\",\n  \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n}, {\n  \"id\": \"tb\",\n  \"name\": \"Tabler Icons\",\n  \"projectUrl\": \"https://github.com/tabler/tabler-icons\",\n  \"license\": \"MIT\",\n  \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}];","import React from 'react';\nexport var DefaultContext = {\n  color: undefined,\n  size: undefined,\n  className: undefined,\n  style: undefined,\n  attr: undefined\n};\nexport var IconContext = React.createContext && React.createContext(DefaultContext);","var __assign = this && this.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) {\n        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\nimport React from 'react';\nimport { IconContext, DefaultContext } from './iconContext';\n\nfunction Tree2Element(tree) {\n  return tree && tree.map(function (node, i) {\n    return React.createElement(node.tag, __assign({\n      key: i\n    }, node.attr), Tree2Element(node.child));\n  });\n}\n\nexport function GenIcon(data) {\n  return function (props) {\n    return React.createElement(IconBase, __assign({\n      attr: __assign({}, data.attr)\n    }, props), Tree2Element(data.child));\n  };\n}\nexport function IconBase(props) {\n  var elem = function elem(conf) {\n    var attr = props.attr,\n        size = props.size,\n        title = props.title,\n        svgProps = __rest(props, [\"attr\", \"size\", \"title\"]);\n\n    var computedSize = size || conf.size || \"1em\";\n    var className;\n    if (conf.className) className = conf.className;\n    if (props.className) className = (className ? className + ' ' : '') + props.className;\n    return React.createElement(\"svg\", __assign({\n      stroke: \"currentColor\",\n      fill: \"currentColor\",\n      strokeWidth: \"0\"\n    }, conf.attr, attr, svgProps, {\n      className: className,\n      style: __assign(__assign({\n        color: props.color || conf.color\n      }, conf.style), props.style),\n      height: computedSize,\n      width: computedSize,\n      xmlns: \"http://www.w3.org/2000/svg\"\n    }), title && React.createElement(\"title\", null, title), props.children);\n  };\n\n  return IconContext !== undefined ? React.createElement(IconContext.Consumer, null, function (conf) {\n    return elem(conf);\n  }) : elem(DefaultContext);\n}","!function (e, t) {\n  \"object\" == typeof exports && \"object\" == typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define([], t) : \"object\" == typeof exports ? exports.vscodetextmate = t() : e.vscodetextmate = t();\n}(this, function () {\n  return function (e) {\n    var t = {};\n\n    function n(r) {\n      if (t[r]) return t[r].exports;\n      var i = t[r] = {\n        i: r,\n        l: !1,\n        exports: {}\n      };\n      return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports;\n    }\n\n    return n.m = e, n.c = t, n.d = function (e, t, r) {\n      n.o(e, t) || Object.defineProperty(e, t, {\n        enumerable: !0,\n        get: r\n      });\n    }, n.r = function (e) {\n      \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {\n        value: \"Module\"\n      }), Object.defineProperty(e, \"__esModule\", {\n        value: !0\n      });\n    }, n.t = function (e, t) {\n      if (1 & t && (e = n(e)), 8 & t) return e;\n      if (4 & t && \"object\" == typeof e && e && e.__esModule) return e;\n      var r = Object.create(null);\n      if (n.r(r), Object.defineProperty(r, \"default\", {\n        enumerable: !0,\n        value: e\n      }), 2 & t && \"string\" != typeof e) for (var i in e) {\n        n.d(r, i, function (t) {\n          return e[t];\n        }.bind(null, i));\n      }\n      return r;\n    }, n.n = function (e) {\n      var t = e && e.__esModule ? function () {\n        return e.default;\n      } : function () {\n        return e;\n      };\n      return n.d(t, \"a\", t), t;\n    }, n.o = function (e, t) {\n      return Object.prototype.hasOwnProperty.call(e, t);\n    }, n.p = \"\", n(n.s = 3);\n  }([function (e, t, n) {\n    \"use strict\";\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n    var r = n(1),\n        i = n(5),\n        o = n(6),\n        s = n(2),\n        a = \"undefined\" == typeof performance ? function () {\n      return Date.now();\n    } : function () {\n      return performance.now();\n    };\n\n    t.createGrammar = function (e, t, n, r, i, o) {\n      return new v(e, t, n, r, i, o);\n    };\n\n    var c = function c(e) {\n      this.scopeName = e;\n    };\n\n    t.FullScopeDependency = c;\n\n    var u = function () {\n      function e(e, t) {\n        this.scopeName = e, this.include = t;\n      }\n\n      return e.prototype.toKey = function () {\n        return this.scopeName + \"#\" + this.include;\n      }, e;\n    }();\n\n    t.PartialScopeDependency = u;\n\n    var l = function () {\n      function e() {\n        this.full = [], this.partial = [], this.visitedRule = new Set(), this._seenFull = new Set(), this._seenPartial = new Set();\n      }\n\n      return e.prototype.add = function (e) {\n        e instanceof c ? this._seenFull.has(e.scopeName) || (this._seenFull.add(e.scopeName), this.full.push(e)) : this._seenPartial.has(e.toKey()) || (this._seenPartial.add(e.toKey()), this.partial.push(e));\n      }, e;\n    }();\n\n    function h(e, t, n, i, o) {\n      for (var s = 0, a = i; s < a.length; s++) {\n        var l = a[s];\n\n        if (!e.visitedRule.has(l)) {\n          e.visitedRule.add(l);\n          var d = l.repository ? r.mergeObjects({}, o, l.repository) : o;\n          Array.isArray(l.patterns) && h(e, t, n, l.patterns, d);\n          var g = l.include;\n          if (g) if (\"$base\" === g || g === t.scopeName) f(e, t, t);else if (\"$self\" === g || g === n.scopeName) f(e, t, n);else if (\"#\" === g.charAt(0)) p(e, t, n, g.substring(1), d);else {\n            var m = g.indexOf(\"#\");\n\n            if (m >= 0) {\n              var _ = g.substring(0, m),\n                  y = g.substring(m + 1);\n\n              _ === t.scopeName ? p(e, t, t, y, d) : _ === n.scopeName ? p(e, t, n, y, d) : e.add(new u(_, g.substring(m + 1)));\n            } else e.add(new c(g));\n          }\n        }\n      }\n    }\n\n    function p(e, t, n, r, i) {\n      (void 0 === i && (i = n.repository), i && i[r]) && h(e, t, n, [i[r]], i);\n    }\n\n    function f(e, t, n) {\n      if (n.patterns && Array.isArray(n.patterns) && h(e, t, n, n.patterns, n.repository), n.injections) {\n        var r = [];\n\n        for (var i in n.injections) {\n          r.push(n.injections[i]);\n        }\n\n        h(e, t, n, r, n.repository);\n      }\n    }\n\n    function d(e, t) {\n      if (!e) return !1;\n      if (e === t) return !0;\n      var n = t.length;\n      return e.length > n && e.substr(0, n) === t && \".\" === e[n];\n    }\n\n    function g(e, t) {\n      if (t.length < e.length) return !1;\n      var n = 0;\n      return e.every(function (e) {\n        for (var r = n; r < t.length; r++) {\n          if (d(t[r], e)) return n = r + 1, !0;\n        }\n\n        return !1;\n      });\n    }\n\n    function m(e, t, n, r, s) {\n      for (var a = o.createMatchers(t, g), c = i.RuleFactory.getCompiledRuleId(n, r, s.repository), u = 0, l = a; u < l.length; u++) {\n        var h = l[u];\n        e.push({\n          matcher: h.matcher,\n          ruleId: c,\n          grammar: s,\n          priority: h.priority\n        });\n      }\n    }\n\n    t.ScopeDependencyCollector = l, t.collectSpecificDependencies = p, t.collectDependencies = f;\n\n    var _ = function _(e, t, n, r) {\n      this.scopeName = e, this.languageId = t, this.tokenType = n, this.themeData = r;\n    };\n\n    t.ScopeMetadata = _;\n\n    var y = function () {\n      function e(t, n, r) {\n        if (this._initialLanguage = t, this._themeProvider = n, this._cache = new Map(), this._defaultMetaData = new _(\"\", this._initialLanguage, 0, [this._themeProvider.getDefaults()]), this._embeddedLanguages = Object.create(null), r) for (var i = Object.keys(r), o = 0, s = i.length; o < s; o++) {\n          var a = i[o],\n              c = r[a];\n          \"number\" == typeof c && 0 !== c ? this._embeddedLanguages[a] = c : console.warn(\"Invalid embedded language found at scope \" + a + \": <<\" + c + \">>\");\n        }\n        var u = Object.keys(this._embeddedLanguages).map(function (t) {\n          return e._escapeRegExpCharacters(t);\n        });\n        0 === u.length ? this._embeddedLanguagesRegex = null : (u.sort(), u.reverse(), this._embeddedLanguagesRegex = new RegExp(\"^((\" + u.join(\")|(\") + \"))($|\\\\.)\", \"\"));\n      }\n\n      return e.prototype.onDidChangeTheme = function () {\n        this._cache = new Map(), this._defaultMetaData = new _(\"\", this._initialLanguage, 0, [this._themeProvider.getDefaults()]);\n      }, e.prototype.getDefaultMetadata = function () {\n        return this._defaultMetaData;\n      }, e._escapeRegExpCharacters = function (e) {\n        return e.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, \"\\\\$&\");\n      }, e.prototype.getMetadataForScope = function (t) {\n        if (null === t) return e._NULL_SCOPE_METADATA;\n\n        var n = this._cache.get(t);\n\n        return n || (n = this._doGetMetadataForScope(t), this._cache.set(t, n), n);\n      }, e.prototype._doGetMetadataForScope = function (e) {\n        var t = this._scopeToLanguage(e),\n            n = this._toStandardTokenType(e),\n            r = this._themeProvider.themeMatch(e);\n\n        return new _(e, t, n, r);\n      }, e.prototype._scopeToLanguage = function (e) {\n        if (!e) return 0;\n        if (!this._embeddedLanguagesRegex) return 0;\n        var t = e.match(this._embeddedLanguagesRegex);\n        if (!t) return 0;\n        var n = this._embeddedLanguages[t[1]] || 0;\n        return n || 0;\n      }, e.prototype._toStandardTokenType = function (t) {\n        var n = t.match(e.STANDARD_TOKEN_TYPE_REGEXP);\n        if (!n) return 0;\n\n        switch (n[1]) {\n          case \"comment\":\n            return 1;\n\n          case \"string\":\n            return 2;\n\n          case \"regex\":\n            return 4;\n\n          case \"meta.embedded\":\n            return 8;\n        }\n\n        throw new Error(\"Unexpected match for standard token type!\");\n      }, e._NULL_SCOPE_METADATA = new _(\"\", 0, 0, null), e.STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|meta\\.embedded)\\b/, e;\n    }(),\n        v = function () {\n      function e(e, t, n, r, i, s) {\n        if (this._scopeMetadataProvider = new y(t, i, n), this._onigLib = s, this._rootId = -1, this._lastRuleId = 0, this._ruleId2desc = [null], this._includedGrammars = {}, this._grammarRepository = i, this._grammar = C(e, null), this._injections = null, this._tokenTypeMatchers = [], r) for (var a = 0, c = Object.keys(r); a < c.length; a++) {\n          for (var u = c[a], l = 0, h = o.createMatchers(u, g); l < h.length; l++) {\n            var p = h[l];\n\n            this._tokenTypeMatchers.push({\n              matcher: p.matcher,\n              type: r[u]\n            });\n          }\n        }\n      }\n\n      return e.prototype.dispose = function () {\n        for (var e = 0, t = this._ruleId2desc; e < t.length; e++) {\n          var n = t[e];\n          n && n.dispose();\n        }\n      }, e.prototype.createOnigScanner = function (e) {\n        return this._onigLib.createOnigScanner(e);\n      }, e.prototype.createOnigString = function (e) {\n        return this._onigLib.createOnigString(e);\n      }, e.prototype.onDidChangeTheme = function () {\n        this._scopeMetadataProvider.onDidChangeTheme();\n      }, e.prototype.getMetadataForScope = function (e) {\n        return this._scopeMetadataProvider.getMetadataForScope(e);\n      }, e.prototype.getInjections = function () {\n        var e = this;\n\n        if (null === this._injections) {\n          this._injections = [];\n          var t = this._grammar.injections;\n          if (t) for (var n in t) {\n            m(this._injections, n, t[n], this, this._grammar);\n          }\n\n          if (this._grammarRepository) {\n            var r = this._grammarRepository.injections(this._grammar.scopeName);\n\n            r && r.forEach(function (t) {\n              var n = e.getExternalGrammar(t);\n\n              if (n) {\n                var r = n.injectionSelector;\n                r && m(e._injections, r, n, e, n);\n              }\n            });\n          }\n\n          this._injections.sort(function (e, t) {\n            return e.priority - t.priority;\n          });\n        }\n\n        return this._injections;\n      }, e.prototype.registerRule = function (e) {\n        var t = ++this._lastRuleId,\n            n = e(t);\n        return this._ruleId2desc[t] = n, n;\n      }, e.prototype.getRule = function (e) {\n        return this._ruleId2desc[e];\n      }, e.prototype.getExternalGrammar = function (e, t) {\n        if (this._includedGrammars[e]) return this._includedGrammars[e];\n\n        if (this._grammarRepository) {\n          var n = this._grammarRepository.lookup(e);\n\n          if (n) return this._includedGrammars[e] = C(n, t && t.$base), this._includedGrammars[e];\n        }\n\n        return null;\n      }, e.prototype.tokenizeLine = function (e, t) {\n        var n = this._tokenize(e, t, !1);\n\n        return {\n          tokens: n.lineTokens.getResult(n.ruleStack, n.lineLength),\n          ruleStack: n.ruleStack\n        };\n      }, e.prototype.tokenizeLine2 = function (e, t) {\n        var n = this._tokenize(e, t, !0);\n\n        return {\n          tokens: n.lineTokens.getBinaryResult(n.ruleStack, n.lineLength),\n          ruleStack: n.ruleStack\n        };\n      }, e.prototype._tokenize = function (e, t, n) {\n        var r;\n        if (-1 === this._rootId && (this._rootId = i.RuleFactory.getCompiledRuleId(this._grammar.repository.$self, this, this._grammar.repository)), t && t !== I.NULL) r = !1, t.reset();else {\n          r = !0;\n\n          var o = this._scopeMetadataProvider.getDefaultMetadata(),\n              s = o.themeData[0],\n              a = P.set(0, o.languageId, o.tokenType, s.fontStyle, s.foreground, s.background),\n              c = this.getRule(this._rootId).getName(null, null),\n              u = this._scopeMetadataProvider.getMetadataForScope(c),\n              l = x.mergeMetadata(a, null, u),\n              h = new x(null, null === c ? \"unknown\" : c, l);\n\n          t = new I(null, this._rootId, -1, -1, !1, null, h, h);\n        }\n        e += \"\\n\";\n        var p = this.createOnigString(e),\n            f = p.content.length,\n            d = new T(n, e, this._tokenTypeMatchers),\n            g = S(this, p, r, 0, t, d, !0);\n        return b(p), {\n          lineLength: f,\n          lineTokens: d,\n          ruleStack: g\n        };\n      }, e;\n    }();\n\n    function b(e) {\n      \"function\" == typeof e.dispose && e.dispose();\n    }\n\n    function C(e, t) {\n      return (e = r.clone(e)).repository = e.repository || {}, e.repository.$self = {\n        $vscodeTextmateLocation: e.$vscodeTextmateLocation,\n        patterns: e.patterns,\n        name: e.scopeName\n      }, e.repository.$base = t || e.repository.$self, e;\n    }\n\n    function w(e, t, n, r, i, o, s) {\n      if (0 !== o.length) {\n        for (var a = t.content, c = Math.min(o.length, s.length), u = [], l = s[0].end, h = 0; h < c; h++) {\n          var p = o[h];\n\n          if (null !== p) {\n            var f = s[h];\n\n            if (0 !== f.length) {\n              if (f.start > l) break;\n\n              for (; u.length > 0 && u[u.length - 1].endPos <= f.start;) {\n                i.produceFromScopes(u[u.length - 1].scopes, u[u.length - 1].endPos), u.pop();\n              }\n\n              if (u.length > 0 ? i.produceFromScopes(u[u.length - 1].scopes, f.start) : i.produce(r, f.start), p.retokenizeCapturedWithRuleId) {\n                var d = p.getName(a, s),\n                    g = r.contentNameScopesList.push(e, d),\n                    m = p.getContentName(a, s),\n                    _ = g.push(e, m),\n                    y = r.push(p.retokenizeCapturedWithRuleId, f.start, -1, !1, null, g, _),\n                    v = e.createOnigString(a.substring(0, f.end));\n\n                S(e, v, n && 0 === f.start, f.start, y, i, !1), b(v);\n              } else {\n                var C = p.getName(a, s);\n\n                if (null !== C) {\n                  var w = (u.length > 0 ? u[u.length - 1].scopes : r.contentNameScopesList).push(e, C);\n                  u.push(new A(w, f.end));\n                }\n              }\n            }\n          }\n        }\n\n        for (; u.length > 0;) {\n          i.produceFromScopes(u[u.length - 1].scopes, u[u.length - 1].endPos), u.pop();\n        }\n      }\n    }\n\n    function k(e) {\n      for (var t = [], n = 0, r = e.rules.length; n < r; n++) {\n        t.push(\"   - \" + e.rules[n] + \": \" + e.debugRegExps[n]);\n      }\n\n      return t.join(\"\\n\");\n    }\n\n    function R(e, t, n, r, i, o) {\n      var c = function (e, t, n, r, i, o) {\n        var c = i.getRule(e),\n            u = c.compile(e, i.endRule, n, r === o),\n            l = 0;\n        s.DebugFlags.InDebugMode && (l = a());\n        var h = u.scanner.findNextMatchSync(t, r);\n\n        if (s.DebugFlags.InDebugMode) {\n          var p = a() - l;\n          p > 5 && console.warn(\"Rule \" + c.debugName + \" (\" + c.id + \") matching took \" + p + \" against '\" + t + \"'\"), h && console.log(\"matched rule id: \" + u.rules[h.index] + \" from \" + h.captureIndices[0].start + \" to \" + h.captureIndices[0].end);\n        }\n\n        return h ? {\n          captureIndices: h.captureIndices,\n          matchedRuleId: u.rules[h.index]\n        } : null;\n      }(e, t, n, r, i, o),\n          u = e.getInjections();\n\n      if (0 === u.length) return c;\n\n      var l = function (e, t, n, r, i, o, a) {\n        for (var c, u = Number.MAX_VALUE, l = null, h = 0, p = o.contentNameScopesList.generateScopes(), f = 0, d = e.length; f < d; f++) {\n          var g = e[f];\n\n          if (g.matcher(p)) {\n            var m = t.getRule(g.ruleId).compile(t, null, r, i === a),\n                _ = m.scanner.findNextMatchSync(n, i);\n\n            if (s.DebugFlags.InDebugMode && (console.log(\"  scanning for injections\"), console.log(k(m))), _) {\n              var y = _.captureIndices[0].start;\n              if (!(y >= u) && (u = y, l = _.captureIndices, c = m.rules[_.index], h = g.priority, u === i)) break;\n            }\n          }\n        }\n\n        return l ? {\n          priorityMatch: -1 === h,\n          captureIndices: l,\n          matchedRuleId: c\n        } : null;\n      }(u, e, t, n, r, i, o);\n\n      if (!l) return c;\n      if (!c) return l;\n      var h = c.captureIndices[0].start,\n          p = l.captureIndices[0].start;\n      return p < h || l.priorityMatch && p === h ? l : c;\n    }\n\n    function S(e, t, n, r, o, a, c) {\n      var u = t.content.length,\n          l = !1,\n          h = -1;\n\n      if (c) {\n        var p = function (e, t, n, r, o, a) {\n          for (var c = o.beginRuleCapturedEOL ? 0 : -1, u = [], l = o; l; l = l.pop()) {\n            var h = l.getRule(e);\n            h instanceof i.BeginWhileRule && u.push({\n              rule: h,\n              stack: l\n            });\n          }\n\n          for (var p = u.pop(); p; p = u.pop()) {\n            var f = p.rule.compileWhile(e, p.stack.endRule, n, c === r),\n                d = f.scanner.findNextMatchSync(t, r);\n\n            if (s.DebugFlags.InDebugMode && (console.log(\"  scanning for while rule\"), console.log(k(f))), !d) {\n              s.DebugFlags.InDebugMode && console.log(\"  popping \" + p.rule.debugName + \" - \" + p.rule.debugWhileRegExp), o = p.stack.pop();\n              break;\n            }\n\n            if (-2 !== f.rules[d.index]) {\n              o = p.stack.pop();\n              break;\n            }\n\n            d.captureIndices && d.captureIndices.length && (a.produce(p.stack, d.captureIndices[0].start), w(e, t, n, p.stack, a, p.rule.whileCaptures, d.captureIndices), a.produce(p.stack, d.captureIndices[0].end), c = d.captureIndices[0].end, d.captureIndices[0].end > r && (r = d.captureIndices[0].end, n = !1));\n          }\n\n          return {\n            stack: o,\n            linePos: r,\n            anchorPosition: c,\n            isFirstLine: n\n          };\n        }(e, t, n, r, o, a);\n\n        o = p.stack, r = p.linePos, n = p.isFirstLine, h = p.anchorPosition;\n      }\n\n      for (; !l;) {\n        f();\n      }\n\n      function f() {\n        s.DebugFlags.InDebugMode && (console.log(\"\"), console.log(\"@@scanNext \" + r + \": |\" + t.content.substr(r).replace(/\\n$/, \"\\\\n\") + \"|\"));\n        var c = R(e, t, n, r, o, h);\n        if (!c) return s.DebugFlags.InDebugMode && console.log(\"  no more matches.\"), a.produce(o, u), void (l = !0);\n        var p = c.captureIndices,\n            f = c.matchedRuleId,\n            d = !!(p && p.length > 0) && p[0].end > r;\n\n        if (-1 === f) {\n          var g = o.getRule(e);\n          s.DebugFlags.InDebugMode && console.log(\"  popping \" + g.debugName + \" - \" + g.debugEndRegExp), a.produce(o, p[0].start), o = o.setContentNameScopesList(o.nameScopesList), w(e, t, n, o, a, g.endCaptures, p), a.produce(o, p[0].end);\n          var m = o;\n          if (o = o.pop(), h = m.getAnchorPos(), !d && m.getEnterPos() === r) return s.DebugFlags.InDebugMode && console.error(\"[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing\"), o = m, a.produce(o, u), void (l = !0);\n        } else {\n          var _ = e.getRule(f);\n\n          a.produce(o, p[0].start);\n\n          var y = o,\n              v = _.getName(t.content, p),\n              b = o.contentNameScopesList.push(e, v);\n\n          if (o = o.push(f, r, h, p[0].end === u, null, b, b), _ instanceof i.BeginEndRule) {\n            var C = _;\n            s.DebugFlags.InDebugMode && console.log(\"  pushing \" + C.debugName + \" - \" + C.debugBeginRegExp), w(e, t, n, o, a, C.beginCaptures, p), a.produce(o, p[0].end), h = p[0].end;\n            var k = C.getContentName(t.content, p),\n                S = b.push(e, k);\n            if (o = o.setContentNameScopesList(S), C.endHasBackReferences && (o = o.setEndRule(C.getEndWithResolvedBackReferences(t.content, p))), !d && y.hasSameRuleAs(o)) return s.DebugFlags.InDebugMode && console.error(\"[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"), o = o.pop(), a.produce(o, u), void (l = !0);\n          } else if (_ instanceof i.BeginWhileRule) {\n            C = _;\n            s.DebugFlags.InDebugMode && console.log(\"  pushing \" + C.debugName), w(e, t, n, o, a, C.beginCaptures, p), a.produce(o, p[0].end), h = p[0].end;\n            k = C.getContentName(t.content, p), S = b.push(e, k);\n            if (o = o.setContentNameScopesList(S), C.whileHasBackReferences && (o = o.setEndRule(C.getWhileWithResolvedBackReferences(t.content, p))), !d && y.hasSameRuleAs(o)) return s.DebugFlags.InDebugMode && console.error(\"[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"), o = o.pop(), a.produce(o, u), void (l = !0);\n          } else {\n            var P = _;\n            if (s.DebugFlags.InDebugMode && console.log(\"  matched \" + P.debugName + \" - \" + P.debugMatchRegExp), w(e, t, n, o, a, P.captures, p), a.produce(o, p[0].end), o = o.pop(), !d) return s.DebugFlags.InDebugMode && console.error(\"[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping\"), o = o.safePop(), a.produce(o, u), void (l = !0);\n          }\n        }\n\n        p[0].end > r && (r = p[0].end, n = !1);\n      }\n\n      return o;\n    }\n\n    t.Grammar = v;\n\n    var P = function () {\n      function e() {}\n\n      return e.toBinaryStr = function (e) {\n        for (var t = e.toString(2); t.length < 32;) {\n          t = \"0\" + t;\n        }\n\n        return t;\n      }, e.printMetadata = function (t) {\n        var n = e.getLanguageId(t),\n            r = e.getTokenType(t),\n            i = e.getFontStyle(t),\n            o = e.getForeground(t),\n            s = e.getBackground(t);\n        console.log({\n          languageId: n,\n          tokenType: r,\n          fontStyle: i,\n          foreground: o,\n          background: s\n        });\n      }, e.getLanguageId = function (e) {\n        return (255 & e) >>> 0;\n      }, e.getTokenType = function (e) {\n        return (1792 & e) >>> 8;\n      }, e.getFontStyle = function (e) {\n        return (14336 & e) >>> 11;\n      }, e.getForeground = function (e) {\n        return (8372224 & e) >>> 14;\n      }, e.getBackground = function (e) {\n        return (4286578688 & e) >>> 23;\n      }, e.set = function (t, n, r, i, o, s) {\n        var a = e.getLanguageId(t),\n            c = e.getTokenType(t),\n            u = e.getFontStyle(t),\n            l = e.getForeground(t),\n            h = e.getBackground(t);\n        return 0 !== n && (a = n), 0 !== r && (c = 8 === r ? 0 : r), -1 !== i && (u = i), 0 !== o && (l = o), 0 !== s && (h = s), (a << 0 | c << 8 | u << 11 | l << 14 | h << 23) >>> 0;\n      }, e;\n    }();\n\n    t.StackElementMetadata = P;\n\n    var x = function () {\n      function e(e, t, n) {\n        this.parent = e, this.scope = t, this.metadata = n;\n      }\n\n      return e._equals = function (e, t) {\n        for (;;) {\n          if (e === t) return !0;\n          if (!e && !t) return !0;\n          if (!e || !t) return !1;\n          if (e.scope !== t.scope || e.metadata !== t.metadata) return !1;\n          e = e.parent, t = t.parent;\n        }\n      }, e.prototype.equals = function (t) {\n        return e._equals(this, t);\n      }, e._matchesScope = function (e, t, n) {\n        return t === e || e.substring(0, n.length) === n;\n      }, e._matches = function (e, t) {\n        if (null === t) return !0;\n\n        for (var n = t.length, r = 0, i = t[r], o = i + \".\"; e;) {\n          if (this._matchesScope(e.scope, i, o)) {\n            if (++r === n) return !0;\n            o = (i = t[r]) + \".\";\n          }\n\n          e = e.parent;\n        }\n\n        return !1;\n      }, e.mergeMetadata = function (e, t, n) {\n        if (null === n) return e;\n        var r = -1,\n            i = 0,\n            o = 0;\n        if (null !== n.themeData) for (var s = 0, a = n.themeData.length; s < a; s++) {\n          var c = n.themeData[s];\n\n          if (this._matches(t, c.parentScopes)) {\n            r = c.fontStyle, i = c.foreground, o = c.background;\n            break;\n          }\n        }\n        return P.set(e, n.languageId, n.tokenType, r, i, o);\n      }, e._push = function (t, n, r) {\n        for (var i = 0, o = r.length; i < o; i++) {\n          var s = r[i],\n              a = n.getMetadataForScope(s),\n              c = e.mergeMetadata(t.metadata, t, a);\n          t = new e(t, s, c);\n        }\n\n        return t;\n      }, e.prototype.push = function (t, n) {\n        return null === n ? this : n.indexOf(\" \") >= 0 ? e._push(this, t, n.split(/ /g)) : e._push(this, t, [n]);\n      }, e._generateScopes = function (e) {\n        for (var t = [], n = 0; e;) {\n          t[n++] = e.scope, e = e.parent;\n        }\n\n        return t.reverse(), t;\n      }, e.prototype.generateScopes = function () {\n        return e._generateScopes(this);\n      }, e;\n    }();\n\n    t.ScopeListElement = x;\n\n    var I = function () {\n      function e(e, t, n, r, i, o, s, a) {\n        this.parent = e, this.depth = this.parent ? this.parent.depth + 1 : 1, this.ruleId = t, this._enterPos = n, this._anchorPos = r, this.beginRuleCapturedEOL = i, this.endRule = o, this.nameScopesList = s, this.contentNameScopesList = a;\n      }\n\n      return e._structuralEquals = function (e, t) {\n        for (;;) {\n          if (e === t) return !0;\n          if (!e && !t) return !0;\n          if (!e || !t) return !1;\n          if (e.depth !== t.depth || e.ruleId !== t.ruleId || e.endRule !== t.endRule) return !1;\n          e = e.parent, t = t.parent;\n        }\n      }, e._equals = function (e, t) {\n        return e === t || !!this._structuralEquals(e, t) && e.contentNameScopesList.equals(t.contentNameScopesList);\n      }, e.prototype.clone = function () {\n        return this;\n      }, e.prototype.equals = function (t) {\n        return null !== t && e._equals(this, t);\n      }, e._reset = function (e) {\n        for (; e;) {\n          e._enterPos = -1, e._anchorPos = -1, e = e.parent;\n        }\n      }, e.prototype.reset = function () {\n        e._reset(this);\n      }, e.prototype.pop = function () {\n        return this.parent;\n      }, e.prototype.safePop = function () {\n        return this.parent ? this.parent : this;\n      }, e.prototype.push = function (t, n, r, i, o, s, a) {\n        return new e(this, t, n, r, i, o, s, a);\n      }, e.prototype.getEnterPos = function () {\n        return this._enterPos;\n      }, e.prototype.getAnchorPos = function () {\n        return this._anchorPos;\n      }, e.prototype.getRule = function (e) {\n        return e.getRule(this.ruleId);\n      }, e.prototype._writeString = function (e, t) {\n        return this.parent && (t = this.parent._writeString(e, t)), e[t++] = \"(\" + this.ruleId + \", TODO-\" + this.nameScopesList + \", TODO-\" + this.contentNameScopesList + \")\", t;\n      }, e.prototype.toString = function () {\n        var e = [];\n        return this._writeString(e, 0), \"[\" + e.join(\",\") + \"]\";\n      }, e.prototype.setContentNameScopesList = function (e) {\n        return this.contentNameScopesList === e ? this : this.parent.push(this.ruleId, this._enterPos, this._anchorPos, this.beginRuleCapturedEOL, this.endRule, this.nameScopesList, e);\n      }, e.prototype.setEndRule = function (t) {\n        return this.endRule === t ? this : new e(this.parent, this.ruleId, this._enterPos, this._anchorPos, this.beginRuleCapturedEOL, t, this.nameScopesList, this.contentNameScopesList);\n      }, e.prototype.hasSameRuleAs = function (e) {\n        return this.ruleId === e.ruleId;\n      }, e.NULL = new e(null, 0, 0, 0, !1, null, null, null), e;\n    }();\n\n    t.StackElement = I;\n\n    var A = function A(e, t) {\n      this.scopes = e, this.endPos = t;\n    };\n\n    t.LocalStackElement = A;\n\n    var T = function () {\n      function e(e, t, n) {\n        this._emitBinaryTokens = e, this._tokenTypeOverrides = n, s.DebugFlags.InDebugMode ? this._lineText = t : this._lineText = null, this._tokens = [], this._binaryTokens = [], this._lastTokenEndIndex = 0;\n      }\n\n      return e.prototype.produce = function (e, t) {\n        this.produceFromScopes(e.contentNameScopesList, t);\n      }, e.prototype.produceFromScopes = function (e, t) {\n        if (!(this._lastTokenEndIndex >= t)) {\n          if (this._emitBinaryTokens) {\n            for (var n = e.metadata, r = 0, i = this._tokenTypeOverrides; r < i.length; r++) {\n              var o = i[r];\n              o.matcher(e.generateScopes()) && (n = P.set(n, 0, L(o.type), -1, 0, 0));\n            }\n\n            return this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === n || (this._binaryTokens.push(this._lastTokenEndIndex), this._binaryTokens.push(n)), void (this._lastTokenEndIndex = t);\n          }\n\n          var a = e.generateScopes();\n\n          if (s.DebugFlags.InDebugMode) {\n            console.log(\"  token: |\" + this._lineText.substring(this._lastTokenEndIndex, t).replace(/\\n$/, \"\\\\n\") + \"|\");\n\n            for (var c = 0; c < a.length; c++) {\n              console.log(\"      * \" + a[c]);\n            }\n          }\n\n          this._tokens.push({\n            startIndex: this._lastTokenEndIndex,\n            endIndex: t,\n            scopes: a\n          }), this._lastTokenEndIndex = t;\n        }\n      }, e.prototype.getResult = function (e, t) {\n        return this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === t - 1 && this._tokens.pop(), 0 === this._tokens.length && (this._lastTokenEndIndex = -1, this.produce(e, t), this._tokens[this._tokens.length - 1].startIndex = 0), this._tokens;\n      }, e.prototype.getBinaryResult = function (e, t) {\n        this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === t - 1 && (this._binaryTokens.pop(), this._binaryTokens.pop()), 0 === this._binaryTokens.length && (this._lastTokenEndIndex = -1, this.produce(e, t), this._binaryTokens[this._binaryTokens.length - 2] = 0);\n\n        for (var n = new Uint32Array(this._binaryTokens.length), r = 0, i = this._binaryTokens.length; r < i; r++) {\n          n[r] = this._binaryTokens[r];\n        }\n\n        return n;\n      }, e;\n    }();\n\n    function L(e) {\n      switch (e) {\n        case 4:\n          return 4;\n\n        case 2:\n          return 2;\n\n        case 1:\n          return 1;\n\n        case 0:\n        default:\n          return 8;\n      }\n    }\n  }, function (e, t, n) {\n    \"use strict\";\n\n    function r(e) {\n      return Array.isArray(e) ? function (e) {\n        for (var t = [], n = 0, i = e.length; n < i; n++) {\n          t[n] = r(e[n]);\n        }\n\n        return t;\n      }(e) : \"object\" == typeof e ? function (e) {\n        var t = {};\n\n        for (var n in e) {\n          t[n] = r(e[n]);\n        }\n\n        return t;\n      }(e) : e;\n    }\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    }), t.clone = function (e) {\n      return r(e);\n    }, t.mergeObjects = function (e) {\n      for (var t = [], n = 1; n < arguments.length; n++) {\n        t[n - 1] = arguments[n];\n      }\n\n      return t.forEach(function (t) {\n        for (var n in t) {\n          e[n] = t[n];\n        }\n      }), e;\n    }, t.basename = function e(t) {\n      var n = ~t.lastIndexOf(\"/\") || ~t.lastIndexOf(\"\\\\\");\n      return 0 === n ? t : ~n == t.length - 1 ? e(t.substring(0, t.length - 1)) : t.substr(1 + ~n);\n    };\n\n    var i = /\\$(\\d+)|\\${(\\d+):\\/(downcase|upcase)}/,\n        o = function () {\n      function e() {}\n\n      return e.hasCaptures = function (e) {\n        return null !== e && i.test(e);\n      }, e.replaceCaptures = function (e, t, n) {\n        return e.replace(i, function (e, r, i, o) {\n          var s = n[parseInt(r || i, 10)];\n          if (!s) return e;\n\n          for (var a = t.substring(s.start, s.end); \".\" === a[0];) {\n            a = a.substring(1);\n          }\n\n          switch (o) {\n            case \"downcase\":\n              return a.toLowerCase();\n\n            case \"upcase\":\n              return a.toUpperCase();\n\n            default:\n              return a;\n          }\n        });\n      }, e;\n    }();\n\n    t.RegexSource = o;\n  }, function (e, t, n) {\n    \"use strict\";\n\n    (function (e) {\n      Object.defineProperty(t, \"__esModule\", {\n        value: !0\n      }), t.DebugFlags = {\n        InDebugMode: void 0 !== e && !!e.env.VSCODE_TEXTMATE_DEBUG\n      };\n    }).call(this, n(7));\n  }, function (e, t, n) {\n    \"use strict\";\n\n    var r = this && this.__awaiter || function (e, t, n, r) {\n      return new (n || (n = Promise))(function (i, o) {\n        function s(e) {\n          try {\n            c(r.next(e));\n          } catch (e) {\n            o(e);\n          }\n        }\n\n        function a(e) {\n          try {\n            c(r.throw(e));\n          } catch (e) {\n            o(e);\n          }\n        }\n\n        function c(e) {\n          var t;\n          e.done ? i(e.value) : (t = e.value, t instanceof n ? t : new n(function (e) {\n            e(t);\n          })).then(s, a);\n        }\n\n        c((r = r.apply(e, t || [])).next());\n      });\n    },\n        i = this && this.__generator || function (e, t) {\n      var n,\n          r,\n          i,\n          o,\n          s = {\n        label: 0,\n        sent: function sent() {\n          if (1 & i[0]) throw i[1];\n          return i[1];\n        },\n        trys: [],\n        ops: []\n      };\n      return o = {\n        next: a(0),\n        throw: a(1),\n        return: a(2)\n      }, \"function\" == typeof Symbol && (o[Symbol.iterator] = function () {\n        return this;\n      }), o;\n\n      function a(o) {\n        return function (a) {\n          return function (o) {\n            if (n) throw new TypeError(\"Generator is already executing.\");\n\n            for (; s;) {\n              try {\n                if (n = 1, r && (i = 2 & o[0] ? r.return : o[0] ? r.throw || ((i = r.return) && i.call(r), 0) : r.next) && !(i = i.call(r, o[1])).done) return i;\n\n                switch (r = 0, i && (o = [2 & o[0], i.value]), o[0]) {\n                  case 0:\n                  case 1:\n                    i = o;\n                    break;\n\n                  case 4:\n                    return s.label++, {\n                      value: o[1],\n                      done: !1\n                    };\n\n                  case 5:\n                    s.label++, r = o[1], o = [0];\n                    continue;\n\n                  case 7:\n                    o = s.ops.pop(), s.trys.pop();\n                    continue;\n\n                  default:\n                    if (!(i = s.trys, (i = i.length > 0 && i[i.length - 1]) || 6 !== o[0] && 2 !== o[0])) {\n                      s = 0;\n                      continue;\n                    }\n\n                    if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) {\n                      s.label = o[1];\n                      break;\n                    }\n\n                    if (6 === o[0] && s.label < i[1]) {\n                      s.label = i[1], i = o;\n                      break;\n                    }\n\n                    if (i && s.label < i[2]) {\n                      s.label = i[2], s.ops.push(o);\n                      break;\n                    }\n\n                    i[2] && s.ops.pop(), s.trys.pop();\n                    continue;\n                }\n\n                o = t.call(e, s);\n              } catch (e) {\n                o = [6, e], r = 0;\n              } finally {\n                n = i = 0;\n              }\n            }\n\n            if (5 & o[0]) throw o[1];\n            return {\n              value: o[0] ? o[1] : void 0,\n              done: !0\n            };\n          }([o, a]);\n        };\n      }\n    };\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var o = n(4),\n        s = n(8),\n        a = n(11),\n        c = n(0),\n        u = function () {\n      function e(e) {\n        this._options = e, this._syncRegistry = new o.SyncRegistry(a.Theme.createFromRawTheme(e.theme, e.colorMap), e.onigLib), this._ensureGrammarCache = new Map();\n      }\n\n      return e.prototype.dispose = function () {\n        this._syncRegistry.dispose();\n      }, e.prototype.setTheme = function (e, t) {\n        this._syncRegistry.setTheme(a.Theme.createFromRawTheme(e, t));\n      }, e.prototype.getColorMap = function () {\n        return this._syncRegistry.getColorMap();\n      }, e.prototype.loadGrammarWithEmbeddedLanguages = function (e, t, n) {\n        return this.loadGrammarWithConfiguration(e, t, {\n          embeddedLanguages: n\n        });\n      }, e.prototype.loadGrammarWithConfiguration = function (e, t, n) {\n        return this._loadGrammar(e, t, n.embeddedLanguages, n.tokenTypes);\n      }, e.prototype.loadGrammar = function (e) {\n        return this._loadGrammar(e, 0, null, null);\n      }, e.prototype._doLoadSingleGrammar = function (e) {\n        return r(this, void 0, void 0, function () {\n          var t, n;\n          return i(this, function (r) {\n            switch (r.label) {\n              case 0:\n                return [4, this._options.loadGrammar(e)];\n\n              case 1:\n                return (t = r.sent()) && (n = \"function\" == typeof this._options.getInjections ? this._options.getInjections(e) : void 0, this._syncRegistry.addGrammar(t, n)), [2];\n            }\n          });\n        });\n      }, e.prototype._loadSingleGrammar = function (e) {\n        return r(this, void 0, void 0, function () {\n          return i(this, function (t) {\n            return this._ensureGrammarCache.has(e) || this._ensureGrammarCache.set(e, this._doLoadSingleGrammar(e)), [2, this._ensureGrammarCache.get(e)];\n          });\n        });\n      }, e.prototype._collectDependenciesForDep = function (e, t, n) {\n        var r = this._syncRegistry.lookup(n.scopeName);\n\n        if (r) {\n          n instanceof c.FullScopeDependency ? c.collectDependencies(t, this._syncRegistry.lookup(e), r) : c.collectSpecificDependencies(t, this._syncRegistry.lookup(e), r, n.include);\n\n          var i = this._syncRegistry.injections(n.scopeName);\n\n          if (i) for (var o = 0, s = i; o < s.length; o++) {\n            var a = s[o];\n            t.add(new c.FullScopeDependency(a));\n          }\n        } else if (n.scopeName === e) throw new Error(\"No grammar provided for <\" + e + \">\");\n      }, e.prototype._loadGrammar = function (e, t, n, o) {\n        return r(this, void 0, void 0, function () {\n          var r,\n              s,\n              a,\n              u,\n              l,\n              h,\n              p,\n              f,\n              d,\n              g,\n              m,\n              _,\n              y = this;\n\n          return i(this, function (i) {\n            switch (i.label) {\n              case 0:\n                r = new Set(), s = new Set(), r.add(e), a = [new c.FullScopeDependency(e)], i.label = 1;\n\n              case 1:\n                return a.length > 0 ? (u = a, a = [], [4, Promise.all(u.map(function (e) {\n                  return y._loadSingleGrammar(e.scopeName);\n                }))]) : [3, 3];\n\n              case 2:\n                for (i.sent(), l = new c.ScopeDependencyCollector(), h = 0, p = u; h < p.length; h++) {\n                  _ = p[h], this._collectDependenciesForDep(e, l, _);\n                }\n\n                for (f = 0, d = l.full; f < d.length; f++) {\n                  _ = d[f], r.has(_.scopeName) || (r.add(_.scopeName), a.push(_));\n                }\n\n                for (g = 0, m = l.partial; g < m.length; g++) {\n                  _ = m[g], r.has(_.scopeName) || s.has(_.toKey()) || (s.add(_.toKey()), a.push(_));\n                }\n\n                return [3, 1];\n\n              case 3:\n                return [2, this.grammarForScopeName(e, t, n, o)];\n            }\n          });\n        });\n      }, e.prototype.addGrammar = function (e, t, n, o) {\n        return void 0 === t && (t = []), void 0 === n && (n = 0), void 0 === o && (o = null), r(this, void 0, void 0, function () {\n          return i(this, function (r) {\n            switch (r.label) {\n              case 0:\n                return this._syncRegistry.addGrammar(e, t), [4, this.grammarForScopeName(e.scopeName, n, o)];\n\n              case 1:\n                return [2, r.sent()];\n            }\n          });\n        });\n      }, e.prototype.grammarForScopeName = function (e, t, n, r) {\n        return void 0 === t && (t = 0), void 0 === n && (n = null), void 0 === r && (r = null), this._syncRegistry.grammarForScopeName(e, t, n, r);\n      }, e;\n    }();\n\n    t.Registry = u, t.INITIAL = c.StackElement.NULL, t.parseRawGrammar = s.parseRawGrammar;\n  }, function (e, t, n) {\n    \"use strict\";\n\n    var r = this && this.__awaiter || function (e, t, n, r) {\n      return new (n || (n = Promise))(function (i, o) {\n        function s(e) {\n          try {\n            c(r.next(e));\n          } catch (e) {\n            o(e);\n          }\n        }\n\n        function a(e) {\n          try {\n            c(r.throw(e));\n          } catch (e) {\n            o(e);\n          }\n        }\n\n        function c(e) {\n          var t;\n          e.done ? i(e.value) : (t = e.value, t instanceof n ? t : new n(function (e) {\n            e(t);\n          })).then(s, a);\n        }\n\n        c((r = r.apply(e, t || [])).next());\n      });\n    },\n        i = this && this.__generator || function (e, t) {\n      var n,\n          r,\n          i,\n          o,\n          s = {\n        label: 0,\n        sent: function sent() {\n          if (1 & i[0]) throw i[1];\n          return i[1];\n        },\n        trys: [],\n        ops: []\n      };\n      return o = {\n        next: a(0),\n        throw: a(1),\n        return: a(2)\n      }, \"function\" == typeof Symbol && (o[Symbol.iterator] = function () {\n        return this;\n      }), o;\n\n      function a(o) {\n        return function (a) {\n          return function (o) {\n            if (n) throw new TypeError(\"Generator is already executing.\");\n\n            for (; s;) {\n              try {\n                if (n = 1, r && (i = 2 & o[0] ? r.return : o[0] ? r.throw || ((i = r.return) && i.call(r), 0) : r.next) && !(i = i.call(r, o[1])).done) return i;\n\n                switch (r = 0, i && (o = [2 & o[0], i.value]), o[0]) {\n                  case 0:\n                  case 1:\n                    i = o;\n                    break;\n\n                  case 4:\n                    return s.label++, {\n                      value: o[1],\n                      done: !1\n                    };\n\n                  case 5:\n                    s.label++, r = o[1], o = [0];\n                    continue;\n\n                  case 7:\n                    o = s.ops.pop(), s.trys.pop();\n                    continue;\n\n                  default:\n                    if (!(i = s.trys, (i = i.length > 0 && i[i.length - 1]) || 6 !== o[0] && 2 !== o[0])) {\n                      s = 0;\n                      continue;\n                    }\n\n                    if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) {\n                      s.label = o[1];\n                      break;\n                    }\n\n                    if (6 === o[0] && s.label < i[1]) {\n                      s.label = i[1], i = o;\n                      break;\n                    }\n\n                    if (i && s.label < i[2]) {\n                      s.label = i[2], s.ops.push(o);\n                      break;\n                    }\n\n                    i[2] && s.ops.pop(), s.trys.pop();\n                    continue;\n                }\n\n                o = t.call(e, s);\n              } catch (e) {\n                o = [6, e], r = 0;\n              } finally {\n                n = i = 0;\n              }\n            }\n\n            if (5 & o[0]) throw o[1];\n            return {\n              value: o[0] ? o[1] : void 0,\n              done: !0\n            };\n          }([o, a]);\n        };\n      }\n    };\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var o = n(0),\n        s = function () {\n      function e(e, t) {\n        this._theme = e, this._grammars = {}, this._rawGrammars = {}, this._injectionGrammars = {}, this._onigLibPromise = t;\n      }\n\n      return e.prototype.dispose = function () {\n        for (var e in this._grammars) {\n          this._grammars.hasOwnProperty(e) && this._grammars[e].dispose();\n        }\n      }, e.prototype.setTheme = function (e) {\n        var t = this;\n        this._theme = e, Object.keys(this._grammars).forEach(function (e) {\n          t._grammars[e].onDidChangeTheme();\n        });\n      }, e.prototype.getColorMap = function () {\n        return this._theme.getColorMap();\n      }, e.prototype.addGrammar = function (e, t) {\n        this._rawGrammars[e.scopeName] = e, t && (this._injectionGrammars[e.scopeName] = t);\n      }, e.prototype.lookup = function (e) {\n        return this._rawGrammars[e];\n      }, e.prototype.injections = function (e) {\n        return this._injectionGrammars[e];\n      }, e.prototype.getDefaults = function () {\n        return this._theme.getDefaults();\n      }, e.prototype.themeMatch = function (e) {\n        return this._theme.match(e);\n      }, e.prototype.grammarForScopeName = function (e, t, n, s) {\n        return r(this, void 0, void 0, function () {\n          var r, a, c, u, l;\n          return i(this, function (i) {\n            switch (i.label) {\n              case 0:\n                return this._grammars[e] ? [3, 2] : (r = this._rawGrammars[e]) ? (a = this._grammars, c = e, u = o.createGrammar, l = [r, t, n, s, this], [4, this._onigLibPromise]) : [2, null];\n\n              case 1:\n                a[c] = u.apply(void 0, l.concat([i.sent()])), i.label = 2;\n\n              case 2:\n                return [2, this._grammars[e]];\n            }\n          });\n        });\n      }, e;\n    }();\n\n    t.SyncRegistry = s;\n  }, function (e, t, n) {\n    \"use strict\";\n\n    var _r,\n        i = this && this.__extends || (_r = function r(e, t) {\n      return (_r = Object.setPrototypeOf || {\n        __proto__: []\n      } instanceof Array && function (e, t) {\n        e.__proto__ = t;\n      } || function (e, t) {\n        for (var n in t) {\n          t.hasOwnProperty(n) && (e[n] = t[n]);\n        }\n      })(e, t);\n    }, function (e, t) {\n      function n() {\n        this.constructor = e;\n      }\n\n      _r(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n());\n    });\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var o = n(1),\n        s = /\\\\(\\d+)/,\n        a = /\\\\(\\d+)/g,\n        c = function () {\n      function e(e, t, n) {\n        this.debugRegExps = t, this.rules = n, this.scanner = e.createOnigScanner(t);\n      }\n\n      return e.prototype.dispose = function () {\n        \"function\" == typeof this.scanner.dispose && this.scanner.dispose();\n      }, e;\n    }();\n\n    t.CompiledRule = c;\n\n    var u = function () {\n      function e(e, t, n, r) {\n        this.$location = e, this.id = t, this._name = n || null, this._nameIsCapturing = o.RegexSource.hasCaptures(this._name), this._contentName = r || null, this._contentNameIsCapturing = o.RegexSource.hasCaptures(this._contentName);\n      }\n\n      return Object.defineProperty(e.prototype, \"debugName\", {\n        get: function get() {\n          var e = this.$location ? o.basename(this.$location.filename) + \":\" + this.$location.line : \"unknown\";\n          return this.constructor.name + \"#\" + this.id + \" @ \" + e;\n        },\n        enumerable: !0,\n        configurable: !0\n      }), e.prototype.getName = function (e, t) {\n        return this._nameIsCapturing && null !== this._name && null !== e && null !== t ? o.RegexSource.replaceCaptures(this._name, e, t) : this._name;\n      }, e.prototype.getContentName = function (e, t) {\n        return this._contentNameIsCapturing && null !== this._contentName ? o.RegexSource.replaceCaptures(this._contentName, e, t) : this._contentName;\n      }, e;\n    }();\n\n    t.Rule = u;\n\n    var l = function (e) {\n      function t(t, n, r, i, o) {\n        var s = e.call(this, t, n, r, i) || this;\n        return s.retokenizeCapturedWithRuleId = o, s;\n      }\n\n      return i(t, e), t.prototype.dispose = function () {}, t.prototype.collectPatternsRecursive = function (e, t, n) {\n        throw new Error(\"Not supported!\");\n      }, t.prototype.compile = function (e, t, n, r) {\n        throw new Error(\"Not supported!\");\n      }, t;\n    }(u);\n\n    t.CaptureRule = l;\n\n    var h = function () {\n      function e(e, t, n) {\n        if (void 0 === n && (n = !0), n) {\n          if (e) {\n            for (var r = e.length, i = 0, o = [], a = !1, c = 0; c < r; c++) {\n              if (\"\\\\\" === e.charAt(c) && c + 1 < r) {\n                var u = e.charAt(c + 1);\n                \"z\" === u ? (o.push(e.substring(i, c)), o.push(\"$(?!\\\\n)(?<!\\\\n)\"), i = c + 2) : \"A\" !== u && \"G\" !== u || (a = !0), c++;\n              }\n            }\n\n            this.hasAnchor = a, 0 === i ? this.source = e : (o.push(e.substring(i, r)), this.source = o.join(\"\"));\n          } else this.hasAnchor = !1, this.source = e;\n        } else this.hasAnchor = !1, this.source = e;\n        this.hasAnchor ? this._anchorCache = this._buildAnchorCache() : this._anchorCache = null, this.ruleId = t, this.hasBackReferences = s.test(this.source);\n      }\n\n      return e.prototype.clone = function () {\n        return new e(this.source, this.ruleId, !0);\n      }, e.prototype.setSource = function (e) {\n        this.source !== e && (this.source = e, this.hasAnchor && (this._anchorCache = this._buildAnchorCache()));\n      }, e.prototype.resolveBackReferences = function (e, t) {\n        var n = t.map(function (t) {\n          return e.substring(t.start, t.end);\n        });\n        return a.lastIndex = 0, this.source.replace(a, function (e, t) {\n          return (n[parseInt(t, 10)] || \"\").replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, \"\\\\$&\");\n        });\n      }, e.prototype._buildAnchorCache = function () {\n        var e,\n            t,\n            n,\n            r,\n            i = [],\n            o = [],\n            s = [],\n            a = [];\n\n        for (e = 0, t = this.source.length; e < t; e++) {\n          n = this.source.charAt(e), i[e] = n, o[e] = n, s[e] = n, a[e] = n, \"\\\\\" === n && e + 1 < t && (\"A\" === (r = this.source.charAt(e + 1)) ? (i[e + 1] = \"￿\", o[e + 1] = \"￿\", s[e + 1] = \"A\", a[e + 1] = \"A\") : \"G\" === r ? (i[e + 1] = \"￿\", o[e + 1] = \"G\", s[e + 1] = \"￿\", a[e + 1] = \"G\") : (i[e + 1] = r, o[e + 1] = r, s[e + 1] = r, a[e + 1] = r), e++);\n        }\n\n        return {\n          A0_G0: i.join(\"\"),\n          A0_G1: o.join(\"\"),\n          A1_G0: s.join(\"\"),\n          A1_G1: a.join(\"\")\n        };\n      }, e.prototype.resolveAnchors = function (e, t) {\n        return this.hasAnchor && this._anchorCache ? e ? t ? this._anchorCache.A1_G1 : this._anchorCache.A1_G0 : t ? this._anchorCache.A0_G1 : this._anchorCache.A0_G0 : this.source;\n      }, e;\n    }();\n\n    t.RegExpSource = h;\n\n    var p = function () {\n      function e() {\n        this._items = [], this._hasAnchors = !1, this._cached = null, this._anchorCache = {\n          A0_G0: null,\n          A0_G1: null,\n          A1_G0: null,\n          A1_G1: null\n        };\n      }\n\n      return e.prototype.dispose = function () {\n        this._disposeCaches();\n      }, e.prototype._disposeCaches = function () {\n        this._cached && (this._cached.dispose(), this._cached = null), this._anchorCache.A0_G0 && (this._anchorCache.A0_G0.dispose(), this._anchorCache.A0_G0 = null), this._anchorCache.A0_G1 && (this._anchorCache.A0_G1.dispose(), this._anchorCache.A0_G1 = null), this._anchorCache.A1_G0 && (this._anchorCache.A1_G0.dispose(), this._anchorCache.A1_G0 = null), this._anchorCache.A1_G1 && (this._anchorCache.A1_G1.dispose(), this._anchorCache.A1_G1 = null);\n      }, e.prototype.push = function (e) {\n        this._items.push(e), this._hasAnchors = this._hasAnchors || e.hasAnchor;\n      }, e.prototype.unshift = function (e) {\n        this._items.unshift(e), this._hasAnchors = this._hasAnchors || e.hasAnchor;\n      }, e.prototype.length = function () {\n        return this._items.length;\n      }, e.prototype.setSource = function (e, t) {\n        this._items[e].source !== t && (this._disposeCaches(), this._items[e].setSource(t));\n      }, e.prototype.compile = function (e, t, n) {\n        if (this._hasAnchors) return t ? n ? (this._anchorCache.A1_G1 || (this._anchorCache.A1_G1 = this._resolveAnchors(e, t, n)), this._anchorCache.A1_G1) : (this._anchorCache.A1_G0 || (this._anchorCache.A1_G0 = this._resolveAnchors(e, t, n)), this._anchorCache.A1_G0) : n ? (this._anchorCache.A0_G1 || (this._anchorCache.A0_G1 = this._resolveAnchors(e, t, n)), this._anchorCache.A0_G1) : (this._anchorCache.A0_G0 || (this._anchorCache.A0_G0 = this._resolveAnchors(e, t, n)), this._anchorCache.A0_G0);\n\n        if (!this._cached) {\n          var r = this._items.map(function (e) {\n            return e.source;\n          });\n\n          this._cached = new c(e, r, this._items.map(function (e) {\n            return e.ruleId;\n          }));\n        }\n\n        return this._cached;\n      }, e.prototype._resolveAnchors = function (e, t, n) {\n        var r = this._items.map(function (e) {\n          return e.resolveAnchors(t, n);\n        });\n\n        return new c(e, r, this._items.map(function (e) {\n          return e.ruleId;\n        }));\n      }, e;\n    }();\n\n    t.RegExpSourceList = p;\n\n    var f = function (e) {\n      function t(t, n, r, i, o) {\n        var s = e.call(this, t, n, r, null) || this;\n        return s._match = new h(i, s.id), s.captures = o, s._cachedCompiledPatterns = null, s;\n      }\n\n      return i(t, e), t.prototype.dispose = function () {\n        this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null);\n      }, Object.defineProperty(t.prototype, \"debugMatchRegExp\", {\n        get: function get() {\n          return \"\" + this._match.source;\n        },\n        enumerable: !0,\n        configurable: !0\n      }), t.prototype.collectPatternsRecursive = function (e, t, n) {\n        t.push(this._match);\n      }, t.prototype.compile = function (e, t, n, r) {\n        return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p(), this.collectPatternsRecursive(e, this._cachedCompiledPatterns, !0)), this._cachedCompiledPatterns.compile(e, n, r);\n      }, t;\n    }(u);\n\n    t.MatchRule = f;\n\n    var d = function (e) {\n      function t(t, n, r, i, o) {\n        var s = e.call(this, t, n, r, i) || this;\n        return s.patterns = o.patterns, s.hasMissingPatterns = o.hasMissingPatterns, s._cachedCompiledPatterns = null, s;\n      }\n\n      return i(t, e), t.prototype.dispose = function () {\n        this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null);\n      }, t.prototype.collectPatternsRecursive = function (e, t, n) {\n        var r, i;\n\n        for (r = 0, i = this.patterns.length; r < i; r++) {\n          e.getRule(this.patterns[r]).collectPatternsRecursive(e, t, !1);\n        }\n      }, t.prototype.compile = function (e, t, n, r) {\n        return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p(), this.collectPatternsRecursive(e, this._cachedCompiledPatterns, !0)), this._cachedCompiledPatterns.compile(e, n, r);\n      }, t;\n    }(u);\n\n    t.IncludeOnlyRule = d;\n\n    var g = function (e) {\n      function t(t, n, r, i, o, s, a, c, u, l) {\n        var p = e.call(this, t, n, r, i) || this;\n        return p._begin = new h(o, p.id), p.beginCaptures = s, p._end = new h(a || \"￿\", -1), p.endHasBackReferences = p._end.hasBackReferences, p.endCaptures = c, p.applyEndPatternLast = u || !1, p.patterns = l.patterns, p.hasMissingPatterns = l.hasMissingPatterns, p._cachedCompiledPatterns = null, p;\n      }\n\n      return i(t, e), t.prototype.dispose = function () {\n        this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null);\n      }, Object.defineProperty(t.prototype, \"debugBeginRegExp\", {\n        get: function get() {\n          return \"\" + this._begin.source;\n        },\n        enumerable: !0,\n        configurable: !0\n      }), Object.defineProperty(t.prototype, \"debugEndRegExp\", {\n        get: function get() {\n          return \"\" + this._end.source;\n        },\n        enumerable: !0,\n        configurable: !0\n      }), t.prototype.getEndWithResolvedBackReferences = function (e, t) {\n        return this._end.resolveBackReferences(e, t);\n      }, t.prototype.collectPatternsRecursive = function (e, t, n) {\n        if (n) {\n          var r,\n              i = void 0;\n\n          for (i = 0, r = this.patterns.length; i < r; i++) {\n            e.getRule(this.patterns[i]).collectPatternsRecursive(e, t, !1);\n          }\n        } else t.push(this._begin);\n      }, t.prototype.compile = function (e, t, n, r) {\n        return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p(), this.collectPatternsRecursive(e, this._cachedCompiledPatterns, !0), this.applyEndPatternLast ? this._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end) : this._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end)), this._end.hasBackReferences && (this.applyEndPatternLast ? this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length() - 1, t) : this._cachedCompiledPatterns.setSource(0, t)), this._cachedCompiledPatterns.compile(e, n, r);\n      }, t;\n    }(u);\n\n    t.BeginEndRule = g;\n\n    var m = function (e) {\n      function t(t, n, r, i, o, s, a, c, u) {\n        var l = e.call(this, t, n, r, i) || this;\n        return l._begin = new h(o, l.id), l.beginCaptures = s, l.whileCaptures = c, l._while = new h(a, -2), l.whileHasBackReferences = l._while.hasBackReferences, l.patterns = u.patterns, l.hasMissingPatterns = u.hasMissingPatterns, l._cachedCompiledPatterns = null, l._cachedCompiledWhilePatterns = null, l;\n      }\n\n      return i(t, e), t.prototype.dispose = function () {\n        this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null), this._cachedCompiledWhilePatterns && (this._cachedCompiledWhilePatterns.dispose(), this._cachedCompiledWhilePatterns = null);\n      }, Object.defineProperty(t.prototype, \"debugBeginRegExp\", {\n        get: function get() {\n          return \"\" + this._begin.source;\n        },\n        enumerable: !0,\n        configurable: !0\n      }), Object.defineProperty(t.prototype, \"debugWhileRegExp\", {\n        get: function get() {\n          return \"\" + this._while.source;\n        },\n        enumerable: !0,\n        configurable: !0\n      }), t.prototype.getWhileWithResolvedBackReferences = function (e, t) {\n        return this._while.resolveBackReferences(e, t);\n      }, t.prototype.collectPatternsRecursive = function (e, t, n) {\n        if (n) {\n          var r,\n              i = void 0;\n\n          for (i = 0, r = this.patterns.length; i < r; i++) {\n            e.getRule(this.patterns[i]).collectPatternsRecursive(e, t, !1);\n          }\n        } else t.push(this._begin);\n      }, t.prototype.compile = function (e, t, n, r) {\n        return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p(), this.collectPatternsRecursive(e, this._cachedCompiledPatterns, !0)), this._cachedCompiledPatterns.compile(e, n, r);\n      }, t.prototype.compileWhile = function (e, t, n, r) {\n        return this._cachedCompiledWhilePatterns || (this._cachedCompiledWhilePatterns = new p(), this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while)), this._while.hasBackReferences && this._cachedCompiledWhilePatterns.setSource(0, t || \"￿\"), this._cachedCompiledWhilePatterns.compile(e, n, r);\n      }, t;\n    }(u);\n\n    t.BeginWhileRule = m;\n\n    var _ = function () {\n      function e() {}\n\n      return e.createCaptureRule = function (e, t, n, r, i) {\n        return e.registerRule(function (e) {\n          return new l(t, e, n, r, i);\n        });\n      }, e.getCompiledRuleId = function (t, n, r) {\n        return t.id || n.registerRule(function (i) {\n          if (t.id = i, t.match) return new f(t.$vscodeTextmateLocation, t.id, t.name, t.match, e._compileCaptures(t.captures, n, r));\n\n          if (void 0 === t.begin) {\n            t.repository && (r = o.mergeObjects({}, r, t.repository));\n            var s = t.patterns;\n            return void 0 === s && t.include && (s = [{\n              include: t.include\n            }]), new d(t.$vscodeTextmateLocation, t.id, t.name, t.contentName, e._compilePatterns(s, n, r));\n          }\n\n          return t.while ? new m(t.$vscodeTextmateLocation, t.id, t.name, t.contentName, t.begin, e._compileCaptures(t.beginCaptures || t.captures, n, r), t.while, e._compileCaptures(t.whileCaptures || t.captures, n, r), e._compilePatterns(t.patterns, n, r)) : new g(t.$vscodeTextmateLocation, t.id, t.name, t.contentName, t.begin, e._compileCaptures(t.beginCaptures || t.captures, n, r), t.end, e._compileCaptures(t.endCaptures || t.captures, n, r), t.applyEndPatternLast, e._compilePatterns(t.patterns, n, r));\n        }), t.id;\n      }, e._compileCaptures = function (t, n, r) {\n        var i = [];\n\n        if (t) {\n          var o = 0;\n\n          for (var s in t) {\n            if (\"$vscodeTextmateLocation\" !== s) (c = parseInt(s, 10)) > o && (o = c);\n          }\n\n          for (var a = 0; a <= o; a++) {\n            i[a] = null;\n          }\n\n          for (var s in t) {\n            if (\"$vscodeTextmateLocation\" !== s) {\n              var c = parseInt(s, 10),\n                  u = 0;\n              t[s].patterns && (u = e.getCompiledRuleId(t[s], n, r)), i[c] = e.createCaptureRule(n, t[s].$vscodeTextmateLocation, t[s].name, t[s].contentName, u);\n            }\n          }\n        }\n\n        return i;\n      }, e._compilePatterns = function (t, n, r) {\n        var i = [];\n        if (t) for (var o = 0, s = t.length; o < s; o++) {\n          var a = t[o],\n              c = -1;\n          if (a.include) {\n            if (\"#\" === a.include.charAt(0)) {\n              var u = r[a.include.substr(1)];\n              u && (c = e.getCompiledRuleId(u, n, r));\n            } else if (\"$base\" === a.include || \"$self\" === a.include) c = e.getCompiledRuleId(r[a.include], n, r);else {\n              var l = null,\n                  h = null,\n                  p = a.include.indexOf(\"#\");\n              p >= 0 ? (l = a.include.substring(0, p), h = a.include.substring(p + 1)) : l = a.include;\n              var f = n.getExternalGrammar(l, r);\n              if (f) if (h) {\n                var _ = f.repository[h];\n                _ && (c = e.getCompiledRuleId(_, n, f.repository));\n              } else c = e.getCompiledRuleId(f.repository.$self, n, f.repository);\n            }\n          } else c = e.getCompiledRuleId(a, n, r);\n\n          if (-1 !== c) {\n            var y = n.getRule(c),\n                v = !1;\n            if ((y instanceof d || y instanceof g || y instanceof m) && y.hasMissingPatterns && 0 === y.patterns.length && (v = !0), v) continue;\n            i.push(c);\n          }\n        }\n        return {\n          patterns: i,\n          hasMissingPatterns: (t ? t.length : 0) !== i.length\n        };\n      }, e;\n    }();\n\n    t.RuleFactory = _;\n  }, function (e, t, n) {\n    \"use strict\";\n\n    function r(e) {\n      return !!e && !!e.match(/[\\w\\.:]+/);\n    }\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    }), t.createMatchers = function (e, t) {\n      for (var n, i, o, s = [], a = (o = (i = /([LR]:|[\\w\\.:][\\w\\.:\\-]*|[\\,\\|\\-\\(\\)])/g).exec(n = e), {\n        next: function next() {\n          if (!o) return null;\n          var e = o[0];\n          return o = i.exec(n), e;\n        }\n      }), c = a.next(); null !== c;) {\n        var u = 0;\n\n        if (2 === c.length && \":\" === c.charAt(1)) {\n          switch (c.charAt(0)) {\n            case \"R\":\n              u = 1;\n              break;\n\n            case \"L\":\n              u = -1;\n              break;\n\n            default:\n              console.log(\"Unknown priority \" + c + \" in scope selector\");\n          }\n\n          c = a.next();\n        }\n\n        var l = p();\n        if (s.push({\n          matcher: l,\n          priority: u\n        }), \",\" !== c) break;\n        c = a.next();\n      }\n\n      return s;\n\n      function h() {\n        if (\"-\" === c) {\n          c = a.next();\n          var e = h();\n          return function (t) {\n            return !!e && !e(t);\n          };\n        }\n\n        if (\"(\" === c) {\n          c = a.next();\n\n          var n = function () {\n            var e = [],\n                t = p();\n\n            for (; t && (e.push(t), \"|\" === c || \",\" === c);) {\n              do {\n                c = a.next();\n              } while (\"|\" === c || \",\" === c);\n\n              t = p();\n            }\n\n            return function (t) {\n              return e.some(function (e) {\n                return e(t);\n              });\n            };\n          }();\n\n          return \")\" === c && (c = a.next()), n;\n        }\n\n        if (r(c)) {\n          var i = [];\n\n          do {\n            i.push(c), c = a.next();\n          } while (r(c));\n\n          return function (e) {\n            return t(i, e);\n          };\n        }\n\n        return null;\n      }\n\n      function p() {\n        for (var e = [], t = h(); t;) {\n          e.push(t), t = h();\n        }\n\n        return function (t) {\n          return e.every(function (e) {\n            return e(t);\n          });\n        };\n      }\n    };\n  }, function (e, t) {\n    var n,\n        r,\n        i = e.exports = {};\n\n    function o() {\n      throw new Error(\"setTimeout has not been defined\");\n    }\n\n    function s() {\n      throw new Error(\"clearTimeout has not been defined\");\n    }\n\n    function a(e) {\n      if (n === setTimeout) return setTimeout(e, 0);\n      if ((n === o || !n) && setTimeout) return n = setTimeout, setTimeout(e, 0);\n\n      try {\n        return n(e, 0);\n      } catch (t) {\n        try {\n          return n.call(null, e, 0);\n        } catch (t) {\n          return n.call(this, e, 0);\n        }\n      }\n    }\n\n    !function () {\n      try {\n        n = \"function\" == typeof setTimeout ? setTimeout : o;\n      } catch (e) {\n        n = o;\n      }\n\n      try {\n        r = \"function\" == typeof clearTimeout ? clearTimeout : s;\n      } catch (e) {\n        r = s;\n      }\n    }();\n    var c,\n        u = [],\n        l = !1,\n        h = -1;\n\n    function p() {\n      l && c && (l = !1, c.length ? u = c.concat(u) : h = -1, u.length && f());\n    }\n\n    function f() {\n      if (!l) {\n        var e = a(p);\n        l = !0;\n\n        for (var t = u.length; t;) {\n          for (c = u, u = []; ++h < t;) {\n            c && c[h].run();\n          }\n\n          h = -1, t = u.length;\n        }\n\n        c = null, l = !1, function (e) {\n          if (r === clearTimeout) return clearTimeout(e);\n          if ((r === s || !r) && clearTimeout) return r = clearTimeout, clearTimeout(e);\n\n          try {\n            r(e);\n          } catch (t) {\n            try {\n              return r.call(null, e);\n            } catch (t) {\n              return r.call(this, e);\n            }\n          }\n        }(e);\n      }\n    }\n\n    function d(e, t) {\n      this.fun = e, this.array = t;\n    }\n\n    function g() {}\n\n    i.nextTick = function (e) {\n      var t = new Array(arguments.length - 1);\n      if (arguments.length > 1) for (var n = 1; n < arguments.length; n++) {\n        t[n - 1] = arguments[n];\n      }\n      u.push(new d(e, t)), 1 !== u.length || l || a(f);\n    }, d.prototype.run = function () {\n      this.fun.apply(null, this.array);\n    }, i.title = \"browser\", i.browser = !0, i.env = {}, i.argv = [], i.version = \"\", i.versions = {}, i.on = g, i.addListener = g, i.once = g, i.off = g, i.removeListener = g, i.removeAllListeners = g, i.emit = g, i.prependListener = g, i.prependOnceListener = g, i.listeners = function (e) {\n      return [];\n    }, i.binding = function (e) {\n      throw new Error(\"process.binding is not supported\");\n    }, i.cwd = function () {\n      return \"/\";\n    }, i.chdir = function (e) {\n      throw new Error(\"process.chdir is not supported\");\n    }, i.umask = function () {\n      return 0;\n    };\n  }, function (e, t, n) {\n    \"use strict\";\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n    var r = n(9),\n        i = n(2),\n        o = n(10);\n\n    t.parseRawGrammar = function (e, t) {\n      return void 0 === t && (t = null), null !== t && /\\.json$/.test(t) ? function (e, t) {\n        if (i.DebugFlags.InDebugMode) return o.parse(e, t, !0);\n        return JSON.parse(e);\n      }(e, t) : function (e, t) {\n        if (i.DebugFlags.InDebugMode) return r.parseWithLocation(e, t, \"$vscodeTextmateLocation\");\n        return r.parse(e);\n      }(e, t);\n    };\n  }, function (e, t, n) {\n    \"use strict\";\n\n    function r(e, t, n) {\n      var r = e.length,\n          i = 0,\n          o = 1,\n          s = 0;\n\n      function a(t) {\n        if (null === n) i += t;else for (; t > 0;) {\n          10 === e.charCodeAt(i) ? (i++, o++, s = 0) : (i++, s++), t--;\n        }\n      }\n\n      function c(e) {\n        null === n ? i = e : a(e - i);\n      }\n\n      function u() {\n        for (; i < r;) {\n          var t = e.charCodeAt(i);\n          if (32 !== t && 9 !== t && 13 !== t && 10 !== t) break;\n          a(1);\n        }\n      }\n\n      function l(t) {\n        return e.substr(i, t.length) === t && (a(t.length), !0);\n      }\n\n      function h(t) {\n        var n = e.indexOf(t, i);\n        c(-1 !== n ? n + t.length : r);\n      }\n\n      function p(t) {\n        var n = e.indexOf(t, i);\n\n        if (-1 !== n) {\n          var o = e.substring(i, n);\n          return c(n + t.length), o;\n        }\n\n        o = e.substr(i);\n        return c(r), o;\n      }\n\n      r > 0 && 65279 === e.charCodeAt(0) && (i = 1);\n      var f = 0,\n          d = null,\n          g = [],\n          m = [],\n          _ = null;\n\n      function y(e, t) {\n        g.push(f), m.push(d), f = e, d = t;\n      }\n\n      function v() {\n        if (0 === g.length) return b(\"illegal state stack\");\n        f = g.pop(), d = m.pop();\n      }\n\n      function b(t) {\n        throw new Error(\"Near offset \" + i + \": \" + t + \" ~~~\" + e.substr(i, 50) + \"~~~\");\n      }\n\n      var C,\n          w,\n          k,\n          R = function R() {\n        if (null === _) return b(\"missing <key>\");\n        var e = {};\n        null !== n && (e[n] = {\n          filename: t,\n          line: o,\n          char: s\n        }), d[_] = e, _ = null, y(1, e);\n      },\n          S = function S() {\n        if (null === _) return b(\"missing <key>\");\n        var e = [];\n        d[_] = e, _ = null, y(2, e);\n      },\n          P = function P() {\n        var e = {};\n        null !== n && (e[n] = {\n          filename: t,\n          line: o,\n          char: s\n        }), d.push(e), y(1, e);\n      },\n          x = function x() {\n        var e = [];\n        d.push(e), y(2, e);\n      };\n\n      function I() {\n        if (1 !== f) return b(\"unexpected </dict>\");\n        v();\n      }\n\n      function A() {\n        return 1 === f || 2 !== f ? b(\"unexpected </array>\") : void v();\n      }\n\n      function T(e) {\n        if (1 === f) {\n          if (null === _) return b(\"missing <key>\");\n          d[_] = e, _ = null;\n        } else 2 === f ? d.push(e) : d = e;\n      }\n\n      function L(e) {\n        if (isNaN(e)) return b(\"cannot parse float\");\n\n        if (1 === f) {\n          if (null === _) return b(\"missing <key>\");\n          d[_] = e, _ = null;\n        } else 2 === f ? d.push(e) : d = e;\n      }\n\n      function M(e) {\n        if (isNaN(e)) return b(\"cannot parse integer\");\n\n        if (1 === f) {\n          if (null === _) return b(\"missing <key>\");\n          d[_] = e, _ = null;\n        } else 2 === f ? d.push(e) : d = e;\n      }\n\n      function G(e) {\n        if (1 === f) {\n          if (null === _) return b(\"missing <key>\");\n          d[_] = e, _ = null;\n        } else 2 === f ? d.push(e) : d = e;\n      }\n\n      function D(e) {\n        if (1 === f) {\n          if (null === _) return b(\"missing <key>\");\n          d[_] = e, _ = null;\n        } else 2 === f ? d.push(e) : d = e;\n      }\n\n      function N(e) {\n        if (1 === f) {\n          if (null === _) return b(\"missing <key>\");\n          d[_] = e, _ = null;\n        } else 2 === f ? d.push(e) : d = e;\n      }\n\n      function E(e) {\n        if (e.isClosed) return \"\";\n        var t = p(\"</\");\n        return h(\">\"), t.replace(/&#([0-9]+);/g, function (e, t) {\n          return String.fromCodePoint(parseInt(t, 10));\n        }).replace(/&#x([0-9a-f]+);/g, function (e, t) {\n          return String.fromCodePoint(parseInt(t, 16));\n        }).replace(/&|<|>|"|'/g, function (e) {\n          switch (e) {\n            case \"&\":\n              return \"&\";\n\n            case \"<\":\n              return \"<\";\n\n            case \">\":\n              return \">\";\n\n            case \""\":\n              return '\"';\n\n            case \"'\":\n              return \"'\";\n          }\n\n          return e;\n        });\n      }\n\n      for (; i < r && (u(), !(i >= r));) {\n        var O = e.charCodeAt(i);\n        if (a(1), 60 !== O) return b(\"expected <\");\n        if (i >= r) return b(\"unexpected end of input\");\n        var j = e.charCodeAt(i);\n        if (63 !== j) {\n          if (33 !== j) {\n            if (47 === j) {\n              if (a(1), u(), l(\"plist\")) {\n                h(\">\");\n                continue;\n              }\n\n              if (l(\"dict\")) {\n                h(\">\"), I();\n                continue;\n              }\n\n              if (l(\"array\")) {\n                h(\">\"), A();\n                continue;\n              }\n\n              return b(\"unexpected closed tag\");\n            }\n\n            var F = (w = void 0, k = void 0, w = p(\">\"), k = !1, 47 === w.charCodeAt(w.length - 1) && (k = !0, w = w.substring(0, w.length - 1)), {\n              name: w.trim(),\n              isClosed: k\n            });\n\n            switch (F.name) {\n              case \"dict\":\n                1 === f ? R() : 2 === f ? P() : (d = {}, null !== n && (d[n] = {\n                  filename: t,\n                  line: o,\n                  char: s\n                }), y(1, d)), F.isClosed && I();\n                continue;\n\n              case \"array\":\n                1 === f ? S() : 2 === f ? x() : y(2, d = []), F.isClosed && A();\n                continue;\n\n              case \"key\":\n                C = E(F), 1 !== f ? b(\"unexpected <key>\") : null !== _ ? b(\"too many <key>\") : _ = C;\n                continue;\n\n              case \"string\":\n                T(E(F));\n                continue;\n\n              case \"real\":\n                L(parseFloat(E(F)));\n                continue;\n\n              case \"integer\":\n                M(parseInt(E(F), 10));\n                continue;\n\n              case \"date\":\n                G(new Date(E(F)));\n                continue;\n\n              case \"data\":\n                D(E(F));\n                continue;\n\n              case \"true\":\n                E(F), N(!0);\n                continue;\n\n              case \"false\":\n                E(F), N(!1);\n                continue;\n            }\n\n            if (!/^plist/.test(F.name)) return b(\"unexpected opened tag \" + F.name);\n          } else {\n            if (a(1), l(\"--\")) {\n              h(\"--\\x3e\");\n              continue;\n            }\n\n            h(\">\");\n          }\n        } else a(1), h(\"?>\");\n      }\n\n      return d;\n    }\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    }), t.parseWithLocation = function (e, t, n) {\n      return r(e, t, n);\n    }, t.parse = function (e) {\n      return r(e, null, null);\n    };\n  }, function (e, t, n) {\n    \"use strict\";\n\n    function r(e, t) {\n      throw new Error(\"Near offset \" + e.pos + \": \" + t + \" ~~~\" + e.source.substr(e.pos, 50) + \"~~~\");\n    }\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    }), t.parse = function (e, t, n) {\n      var a = new i(e),\n          c = new o(),\n          u = 0,\n          l = null,\n          h = [],\n          p = [];\n\n      function f() {\n        h.push(u), p.push(l);\n      }\n\n      function d() {\n        u = h.pop(), l = p.pop();\n      }\n\n      function g(e) {\n        r(a, e);\n      }\n\n      for (; s(a, c);) {\n        if (0 === u) {\n          if (null !== l && g(\"too many constructs in root\"), 3 === c.type) {\n            l = {}, n && (l.$vscodeTextmateLocation = c.toLocation(t)), f(), u = 1;\n            continue;\n          }\n\n          if (2 === c.type) {\n            l = [], f(), u = 4;\n            continue;\n          }\n\n          g(\"unexpected token in root\");\n        }\n\n        if (2 === u) {\n          if (5 === c.type) {\n            d();\n            continue;\n          }\n\n          if (7 === c.type) {\n            u = 3;\n            continue;\n          }\n\n          g(\"expected , or }\");\n        }\n\n        if (1 === u || 3 === u) {\n          if (1 === u && 5 === c.type) {\n            d();\n            continue;\n          }\n\n          if (1 === c.type) {\n            var m = c.value;\n\n            if (s(a, c) && 6 === c.type || g(\"expected colon\"), s(a, c) || g(\"expected value\"), u = 2, 1 === c.type) {\n              l[m] = c.value;\n              continue;\n            }\n\n            if (8 === c.type) {\n              l[m] = null;\n              continue;\n            }\n\n            if (9 === c.type) {\n              l[m] = !0;\n              continue;\n            }\n\n            if (10 === c.type) {\n              l[m] = !1;\n              continue;\n            }\n\n            if (11 === c.type) {\n              l[m] = parseFloat(c.value);\n              continue;\n            }\n\n            if (2 === c.type) {\n              var _ = [];\n              l[m] = _, f(), u = 4, l = _;\n              continue;\n            }\n\n            if (3 === c.type) {\n              var y = {};\n              n && (y.$vscodeTextmateLocation = c.toLocation(t)), l[m] = y, f(), u = 1, l = y;\n              continue;\n            }\n          }\n\n          g(\"unexpected token in dict\");\n        }\n\n        if (5 === u) {\n          if (4 === c.type) {\n            d();\n            continue;\n          }\n\n          if (7 === c.type) {\n            u = 6;\n            continue;\n          }\n\n          g(\"expected , or ]\");\n        }\n\n        if (4 === u || 6 === u) {\n          if (4 === u && 4 === c.type) {\n            d();\n            continue;\n          }\n\n          if (u = 5, 1 === c.type) {\n            l.push(c.value);\n            continue;\n          }\n\n          if (8 === c.type) {\n            l.push(null);\n            continue;\n          }\n\n          if (9 === c.type) {\n            l.push(!0);\n            continue;\n          }\n\n          if (10 === c.type) {\n            l.push(!1);\n            continue;\n          }\n\n          if (11 === c.type) {\n            l.push(parseFloat(c.value));\n            continue;\n          }\n\n          if (2 === c.type) {\n            _ = [];\n            l.push(_), f(), u = 4, l = _;\n            continue;\n          }\n\n          if (3 === c.type) {\n            y = {};\n            n && (y.$vscodeTextmateLocation = c.toLocation(t)), l.push(y), f(), u = 1, l = y;\n            continue;\n          }\n\n          g(\"unexpected token in array\");\n        }\n\n        g(\"unknown state\");\n      }\n\n      return 0 !== p.length && g(\"unclosed constructs\"), l;\n    };\n\n    var i = function i(e) {\n      this.source = e, this.pos = 0, this.len = e.length, this.line = 1, this.char = 0;\n    },\n        o = function () {\n      function e() {\n        this.value = null, this.type = 0, this.offset = -1, this.len = -1, this.line = -1, this.char = -1;\n      }\n\n      return e.prototype.toLocation = function (e) {\n        return {\n          filename: e,\n          line: this.line,\n          char: this.char\n        };\n      }, e;\n    }();\n\n    function s(e, t) {\n      t.value = null, t.type = 0, t.offset = -1, t.len = -1, t.line = -1, t.char = -1;\n\n      for (var n, i = e.source, o = e.pos, s = e.len, a = e.line, c = e.char;;) {\n        if (o >= s) return !1;\n\n        if (32 !== (n = i.charCodeAt(o)) && 9 !== n && 13 !== n) {\n          if (10 !== n) break;\n          o++, a++, c = 0;\n        } else o++, c++;\n      }\n\n      if (t.offset = o, t.line = a, t.char = c, 34 === n) {\n        for (t.type = 1, o++, c++;;) {\n          if (o >= s) return !1;\n\n          if (n = i.charCodeAt(o), o++, c++, 92 !== n) {\n            if (34 === n) break;\n          } else o++, c++;\n        }\n\n        t.value = i.substring(t.offset + 1, o - 1).replace(/\\\\u([0-9A-Fa-f]{4})/g, function (e, t) {\n          return String.fromCodePoint(parseInt(t, 16));\n        }).replace(/\\\\(.)/g, function (t, n) {\n          switch (n) {\n            case '\"':\n              return '\"';\n\n            case \"\\\\\":\n              return \"\\\\\";\n\n            case \"/\":\n              return \"/\";\n\n            case \"b\":\n              return \"\\b\";\n\n            case \"f\":\n              return \"\\f\";\n\n            case \"n\":\n              return \"\\n\";\n\n            case \"r\":\n              return \"\\r\";\n\n            case \"t\":\n              return \"\\t\";\n\n            default:\n              r(e, \"invalid escape sequence\");\n          }\n\n          throw new Error(\"unreachable\");\n        });\n      } else if (91 === n) t.type = 2, o++, c++;else if (123 === n) t.type = 3, o++, c++;else if (93 === n) t.type = 4, o++, c++;else if (125 === n) t.type = 5, o++, c++;else if (58 === n) t.type = 6, o++, c++;else if (44 === n) t.type = 7, o++, c++;else if (110 === n) {\n        if (t.type = 8, o++, c++, 117 !== (n = i.charCodeAt(o))) return !1;\n        if (o++, c++, 108 !== (n = i.charCodeAt(o))) return !1;\n        if (o++, c++, 108 !== (n = i.charCodeAt(o))) return !1;\n        o++, c++;\n      } else if (116 === n) {\n        if (t.type = 9, o++, c++, 114 !== (n = i.charCodeAt(o))) return !1;\n        if (o++, c++, 117 !== (n = i.charCodeAt(o))) return !1;\n        if (o++, c++, 101 !== (n = i.charCodeAt(o))) return !1;\n        o++, c++;\n      } else if (102 === n) {\n        if (t.type = 10, o++, c++, 97 !== (n = i.charCodeAt(o))) return !1;\n        if (o++, c++, 108 !== (n = i.charCodeAt(o))) return !1;\n        if (o++, c++, 115 !== (n = i.charCodeAt(o))) return !1;\n        if (o++, c++, 101 !== (n = i.charCodeAt(o))) return !1;\n        o++, c++;\n      } else for (t.type = 11;;) {\n        if (o >= s) return !1;\n        if (!(46 === (n = i.charCodeAt(o)) || n >= 48 && n <= 57 || 101 === n || 69 === n || 45 === n || 43 === n)) break;\n        o++, c++;\n      }\n\n      return t.len = o - t.offset, null === t.value && (t.value = i.substr(t.offset, t.len)), e.pos = o, e.line = a, e.char = c, !0;\n    }\n  }, function (e, t, n) {\n    \"use strict\";\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var r = function r(e, t, n, _r2, i, o) {\n      this.scope = e, this.parentScopes = t, this.index = n, this.fontStyle = _r2, this.foreground = i, this.background = o;\n    };\n\n    function i(e) {\n      return !!/^#[0-9a-f]{6}$/i.test(e) || !!/^#[0-9a-f]{8}$/i.test(e) || !!/^#[0-9a-f]{3}$/i.test(e) || !!/^#[0-9a-f]{4}$/i.test(e);\n    }\n\n    function o(e) {\n      if (!e) return [];\n      if (!e.settings || !Array.isArray(e.settings)) return [];\n\n      for (var t = e.settings, n = [], o = 0, s = 0, a = t.length; s < a; s++) {\n        var c = t[s];\n\n        if (c.settings) {\n          var u = void 0;\n          if (\"string\" == typeof c.scope) u = c.scope.replace(/^[,]+/, \"\").replace(/[,]+$/, \"\").split(\",\");else u = Array.isArray(c.scope) ? c.scope : [\"\"];\n          var l = -1;\n\n          if (\"string\" == typeof c.settings.fontStyle) {\n            l = 0;\n\n            for (var h = 0, p = (g = c.settings.fontStyle.split(\" \")).length; h < p; h++) {\n              switch (g[h]) {\n                case \"italic\":\n                  l |= 1;\n                  break;\n\n                case \"bold\":\n                  l |= 2;\n                  break;\n\n                case \"underline\":\n                  l |= 4;\n              }\n            }\n          }\n\n          var f = null;\n          \"string\" == typeof c.settings.foreground && i(c.settings.foreground) && (f = c.settings.foreground);\n          var d = null;\n          \"string\" == typeof c.settings.background && i(c.settings.background) && (d = c.settings.background);\n\n          for (h = 0, p = u.length; h < p; h++) {\n            var g,\n                m = (g = u[h].trim().split(\" \"))[g.length - 1],\n                _ = null;\n            g.length > 1 && (_ = g.slice(0, g.length - 1)).reverse(), n[o++] = new r(m, _, s, l, f, d);\n          }\n        }\n      }\n\n      return n;\n    }\n\n    function s(e, t) {\n      e.sort(function (e, t) {\n        var n = u(e.scope, t.scope);\n        return 0 !== n || 0 !== (n = l(e.parentScopes, t.parentScopes)) ? n : e.index - t.index;\n      });\n\n      for (var n = 0, r = \"#000000\", i = \"#ffffff\"; e.length >= 1 && \"\" === e[0].scope;) {\n        var o = e.shift();\n        -1 !== o.fontStyle && (n = o.fontStyle), null !== o.foreground && (r = o.foreground), null !== o.background && (i = o.background);\n      }\n\n      for (var s = new a(t), f = new h(0, null, n, s.getId(r), s.getId(i)), d = new p(new h(0, null, -1, 0, 0), []), g = 0, m = e.length; g < m; g++) {\n        var _ = e[g];\n        d.insert(0, _.scope, _.parentScopes, _.fontStyle, s.getId(_.foreground), s.getId(_.background));\n      }\n\n      return new c(s, f, d);\n    }\n\n    t.ParsedThemeRule = r, t.parseTheme = o;\n\n    var a = function () {\n      function e(e) {\n        if (this._lastColorId = 0, this._id2color = [], this._color2id = Object.create(null), Array.isArray(e)) {\n          this._isFrozen = !0;\n\n          for (var t = 0, n = e.length; t < n; t++) {\n            this._color2id[e[t]] = t, this._id2color[t] = e[t];\n          }\n        } else this._isFrozen = !1;\n      }\n\n      return e.prototype.getId = function (e) {\n        if (null === e) return 0;\n        e = e.toUpperCase();\n        var t = this._color2id[e];\n        if (t) return t;\n        if (this._isFrozen) throw new Error(\"Missing color in color map - \" + e);\n        return t = ++this._lastColorId, this._color2id[e] = t, this._id2color[t] = e, t;\n      }, e.prototype.getColorMap = function () {\n        return this._id2color.slice(0);\n      }, e;\n    }();\n\n    t.ColorMap = a;\n\n    var c = function () {\n      function e(e, t, n) {\n        this._colorMap = e, this._root = n, this._defaults = t, this._cache = {};\n      }\n\n      return e.createFromRawTheme = function (e, t) {\n        return this.createFromParsedTheme(o(e), t);\n      }, e.createFromParsedTheme = function (e, t) {\n        return s(e, t);\n      }, e.prototype.getColorMap = function () {\n        return this._colorMap.getColorMap();\n      }, e.prototype.getDefaults = function () {\n        return this._defaults;\n      }, e.prototype.match = function (e) {\n        return this._cache.hasOwnProperty(e) || (this._cache[e] = this._root.match(e)), this._cache[e];\n      }, e;\n    }();\n\n    function u(e, t) {\n      return e < t ? -1 : e > t ? 1 : 0;\n    }\n\n    function l(e, t) {\n      if (null === e && null === t) return 0;\n      if (!e) return -1;\n      if (!t) return 1;\n      var n = e.length,\n          r = t.length;\n\n      if (n === r) {\n        for (var i = 0; i < n; i++) {\n          var o = u(e[i], t[i]);\n          if (0 !== o) return o;\n        }\n\n        return 0;\n      }\n\n      return n - r;\n    }\n\n    t.Theme = c, t.strcmp = u, t.strArrCmp = l;\n\n    var h = function () {\n      function e(e, t, n, r, i) {\n        this.scopeDepth = e, this.parentScopes = t, this.fontStyle = n, this.foreground = r, this.background = i;\n      }\n\n      return e.prototype.clone = function () {\n        return new e(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);\n      }, e.cloneArr = function (e) {\n        for (var t = [], n = 0, r = e.length; n < r; n++) {\n          t[n] = e[n].clone();\n        }\n\n        return t;\n      }, e.prototype.acceptOverwrite = function (e, t, n, r) {\n        this.scopeDepth > e ? console.log(\"how did this happen?\") : this.scopeDepth = e, -1 !== t && (this.fontStyle = t), 0 !== n && (this.foreground = n), 0 !== r && (this.background = r);\n      }, e;\n    }();\n\n    t.ThemeTrieElementRule = h;\n\n    var p = function () {\n      function e(e, t, n) {\n        void 0 === t && (t = []), void 0 === n && (n = {}), this._mainRule = e, this._rulesWithParentScopes = t, this._children = n;\n      }\n\n      return e._sortBySpecificity = function (e) {\n        return 1 === e.length || e.sort(this._cmpBySpecificity), e;\n      }, e._cmpBySpecificity = function (e, t) {\n        if (e.scopeDepth === t.scopeDepth) {\n          var n = e.parentScopes,\n              r = t.parentScopes,\n              i = null === n ? 0 : n.length,\n              o = null === r ? 0 : r.length;\n          if (i === o) for (var s = 0; s < i; s++) {\n            var a = n[s].length,\n                c = r[s].length;\n            if (a !== c) return c - a;\n          }\n          return o - i;\n        }\n\n        return t.scopeDepth - e.scopeDepth;\n      }, e.prototype.match = function (t) {\n        if (\"\" === t) return e._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));\n        var n,\n            r,\n            i = t.indexOf(\".\");\n        return -1 === i ? (n = t, r = \"\") : (n = t.substring(0, i), r = t.substring(i + 1)), this._children.hasOwnProperty(n) ? this._children[n].match(r) : e._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));\n      }, e.prototype.insert = function (t, n, r, i, o, s) {\n        if (\"\" !== n) {\n          var a,\n              c,\n              u,\n              l = n.indexOf(\".\");\n          -1 === l ? (a = n, c = \"\") : (a = n.substring(0, l), c = n.substring(l + 1)), this._children.hasOwnProperty(a) ? u = this._children[a] : (u = new e(this._mainRule.clone(), h.cloneArr(this._rulesWithParentScopes)), this._children[a] = u), u.insert(t + 1, c, r, i, o, s);\n        } else this._doInsertHere(t, r, i, o, s);\n      }, e.prototype._doInsertHere = function (e, t, n, r, i) {\n        if (null !== t) {\n          for (var o = 0, s = this._rulesWithParentScopes.length; o < s; o++) {\n            var a = this._rulesWithParentScopes[o];\n            if (0 === l(a.parentScopes, t)) return void a.acceptOverwrite(e, n, r, i);\n          }\n\n          -1 === n && (n = this._mainRule.fontStyle), 0 === r && (r = this._mainRule.foreground), 0 === i && (i = this._mainRule.background), this._rulesWithParentScopes.push(new h(e, t, n, r, i));\n        } else this._mainRule.acceptOverwrite(e, n, r, i);\n      }, e;\n    }();\n\n    t.ThemeTrieElement = p;\n  }]);\n});","'use strict';\nvar $trimEnd = require('../internals/string-trim').end;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimEnd, trimRight }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// https://tc39.es/ecma262/#String.prototype.trimright\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\n  return $trimEnd(this);\n// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimEnd;\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return String(argument);\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-right');\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\n  trimEnd: trimEnd\n});\n","var $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimRight` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es-x/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\n  trimRight: trimEnd\n});\n"],"names":["fontWeight","fontSize","lineHeight","letterSpacing","bg","useColorModeValue","backgroundClip","to","calcReadingTime","mdxBody","text","match","wordCount","prev","curr","console","Math","_assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","ClasserContext","createContext","ClasserProvider","_a","classes","children","mixed","useMerge","useContext","Provider","value","libClassPrefix","innerClasses","useCallback","libClassSuffixList","_i","libClassList","map","libClassSuffix","outputList","slice","forEach","libClass","push","join","getClasser","outer","inner","useMemo","r","c","e","window","warn","a","l","matchMedia","addListener","removeListener","findIndex","matches","isServer","matchedIndex","u","o","m","className","dangerouslySetInnerHTML","__html","key","reverse","JSON","stringify","replace","toLowerCase","__read","Symbol","iterator","ar","next","done","error","showEntry","entry","rootHeight","rootBounds","height","addFlashingRect","border","min","iodOptions","rootColor","overflow","boxSizing","boundingClientRect","isIntersecting","enterColor","exitColor","intersectionRect","backgroundColor","interColor","zIndex","bounds","style","width","left","top","div","document","createElement","position","pointerEvents","transition","requestAnimationFrame","opacity","addEventListener","body","removeChild","appendChild","useLayoutEffect$1","ObserverContext","undefined","useLayoutEffect","Scroller","onStepChange","_b","getRootMargin","defaultRootMargin","_c","debug","_d","observer","setObserver","vh","isClient","getHeight","documentElement","clientHeight","windowHeight","setWindowHeight","handleResize","removeEventListener","useWindowHeight","handleIntersect","rootMargin","IntersectionObserver","threshold","root","newIntersectionObserver","entries","chDebugScroller","debugEntries","intersectionRatio","stepElement","target","stepIndex","disconnect","Step","as","index","props","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","ref","observe","current","unobserve","ownKeys","object","enumerableOnly","keys","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","createPackageJSON","dependencies","name","main","addPackageJSONIfNeeded","files","newFiles","source","getOwnPropertyDescriptors","defineProperties","defineProperty","_objectSpread","Error","code","extractErrorDetails","msg","title","path","message","line","column","relevantStackFrame","frames","find","frame","_originalFileName","getRelevantStackFrame","payload","errorFrame","numberOfLineNumberCharacters","extraLineLeadingSpaces","errorInCode","_originalScriptCode","lineNumber","toString","_originalColumnNumber","reduce","result","scriptLine","leadingChar","highlight","concat","extraLine","repeat","content","errorLocation","_originalLineNumber","getErrorLocation","errorMessage","filePath","location","formatErrorMessage","generateId","floor","random","Protocol","type","handleMessage","_this","outgoingMessages","Set","_messageListener","_ref","_callee","data","returnMessage","_context","$type","getTypeId","abrupt","has","$id","$data","sent","$originId","internalId","postMessage","_postMessage","stop","_x","createConnection","isWorker","x","constructor","getConstructorName","self","_this2","Promise","resolve","messageId","add","listenFunction","DedicatedWorkerGlobalScope","IFrameProtocol","iframe","origin","globalListeners","globalListenersCount","channelListeners","channelListenersCount","channelId","frameWindow","contentWindow","eventListener","bind","id","codesandbox","listener","listenerId","values","BUNDLER_URL","CODESANDBOX_ENV","SandpackClient","selector","sandboxInfo","options","getTranspilerContext","unsubscribe","listen","dispatch","bundlerURL","bundlerState","errors","status","element","querySelector","initializeElement","getAttribute","setAttribute","src","startRoute","URL","iframeProtocol","unsubscribeGlobalListener","globalListen","mes","register","fileResolver","fileResolverProtocol","isFile","readFile","updatePreview","unsubscribeChannelListener","channelListen","action","state","cleanup","isInitializationCompile","getFiles","modules","packageJSON","parse","normalizedModules","version","externalResources","hasFileResolver","Boolean","disableDependencyPreprocessing","template","showOpenInCodeSandbox","showErrorScreen","showLoadingScreen","skipEval","clearConsoleDisabled","clearConsoleOnFirstCompile","paramFiles","isBinary","fetch","method","headers","Accept","then","json","res","sandboxId","sandbox_id","editorUrl","embedUrl","parentNode","replaceChild","SANDBOX_TEMPLATES","react","environment","vue","vanilla","vue3","angular","rxjs","getSandpackStateFromProps","projectSetup","getSetup","customSetup","openPaths","activePath","inputFiles","file","active","hidden","includes","inputSetup","setup","createSetupFromUserInput","baseTemplate","convertedFiles","acc","generateRandomId","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","valueOf","_isNativeReflectConstruct","Super","NewTarget","Sandpack","SandpackProvider","_React$PureComponent","_super","timeoutHook","clearTimeout","setState","compilatonError","notificationType","updateCurrentFile","newCode","updateFile","_this$state","sandpackStatus","_this$props","recompileMode","recompileDelay","clients","client","debounceHook","setTimeout","createClient","clientId","openInCSBRegistered","errorScreenRegistered","loadingScreenRegistered","queuedListeners","unsubscribeQueuedListeners","global","_ref2","runSandpack","preregisteredIframes","registerBundler","unregisterBundler","setActiveFile","editorState","openFile","_ref3","newPaths","dispatchMessage","_listenerId","currentClientUnsubscribeListeners","listenerOfClient","_getSandpackState","_this$state2","lazyAnchorRef","errorScreenRegisteredRef","openInCSBRegisteredRef","loadingScreenRegisteredRef","_getSandpackStateFrom","autorun","renderHiddenIframe","intersectionObserver","prevProps","_getSandpackStateFrom2","defaultProps","Consumer","_excluded","useSandpack","sandpack","useCodeSandboxLink","normalized","params","ErrorOverlay","useErrorMessage","useLoadingOverlayState","_useSandpack","_React$useState","_React$useState2","loadingOverlayState","setLoadingOverlayState","innerHook","outerHook","unsub","firstLoad","codesandboxLightTheme","palette","activeText","defaultText","inactiveText","activeBackground","defaultBackground","inputBackground","accent","errorBackground","errorForeground","syntax","plain","comment","color","fontStyle","keyword","tag","punctuation","definition","property","static","string","typography","bodyFont","monoFont","SandpackThemeContext","theme","BackwardIcon","fill","viewBox","xmlns","d","ForwardIcon","RefreshIcon","clipRule","fillRule","CSBIcon","OpenInCodeSandboxButton","_React$useContext","url","themeId","csbIconClass","g","b","startsWith","parseInt","substr","rgbValues","split","isDarkColor","href","rel","LoadingOverlay","SandpackStack","customStyle","Navigator","onURLChange","baseUrl","setBaseUrl","_React$useState3","_React$useState4","relativeUrl","setRelativeUrl","_React$useState5","_React$useState6","backEnabled","setBackEnabled","_React$useState7","_React$useState8","forwardEnabled","setForwardEnabled","back","forward","_splitUrl","splitUrl","_splitUrl2","newBaseUrl","newRelativeUrl","disabled","onClick","onChange","onKeyDown","preventDefault","stopPropagation","currentTarget","RefreshButton","_useSandpackNavigatio","refresh","useSandpackNavigation","SandpackPreview","_ref$showNavigator","showNavigator","_ref$showRefreshButto","showRefreshButton","_ref$showOpenInCodeSa","_ref$showSandpackErro","showSandpackErrorOverlay","_ref$viewportSize","viewportSize","_ref$viewportOrientat","viewportOrientation","iframeComputedHeight","setComputedAutoHeight","iframeRef","iframeElement","viewportStyle","computeViewportSize","display","newUrl","VIEWPORT_SIZE_PRESET_MAP","y","iPad","viewport","orientation","_VIEWPORT_SIZE_PRESET","titleBar","zoom","bar","DefaultTitleBar","zoomStyle","FrameButtons","tween","fn","withDefault","deft","mapWithDefault","_FONT_STYLE_TO_CSS","_createForOfIteratorHelper","allowArrayLike","it","Array","isArray","minLen","_arrayLikeToArray","from","test","_unsupportedIterableToArray","F","_e2","f","TypeError","err","normalCompletion","didErr","step","_e3","return","arr","len","arr2","FontStyle","languages","scopeName","samplePath","embeddedLangs","aliases","ParseOptions","StackElementMetadata","metadata","languageId","getLanguageId","tokenType","getTokenType","getFontStyle","foreground","getForeground","background","getBackground","log","_languageId","_tokenType","_fontStyle","_foreground","_background","NotSet","trimEndSlash","str","endsWith","trimStartDot","dirname","parts","_len","_key","createScanner","ignoreTrivia","pos","tokenOffset","token","lineStartOffset","tokenLineStartOffset","prevTokenLineStartOffset","scanError","scanHexDigits","count","exact","digits","ch","charCodeAt","scanNext","isWhiteSpace","String","fromCharCode","isLineBreak","start","substring","ch3","scanString","safeLength","commentClosed","isDigit","end","scanNumber","isUnknownContentCharacter","setPosition","newPosition","getPosition","scan","getToken","getTokenValue","getTokenOffset","getTokenLength","getTokenStartLine","getTokenStartCharacter","getTokenError","DEFAULT","allowTrailingComma","currentProperty","currentParent","previousParents","onValue","visitor","_scanner","toNoArgVisit","visitFunction","toOneArgVisit","arg","onObjectBegin","onObjectProperty","onObjectEnd","onArrayBegin","onArrayEnd","onLiteralValue","onSeparator","onComment","onError","disallowComments","handleError","skipUntilAfter","skipUntil","parseString","isValue","parseLiteral","tokenValue","Number","isNaN","parseProperty","parseValue","parseObject","needsComma","parseArray","allowEmptyContent","visit","pop","array","offset","isBrowser","WorkerGlobalScope","CDN_ROOT","ONIGASM_WASM","_onigasmPromise","getOnigasm","_getOnigasm","_callee6","loader","onigasmPath","fs","wasmBin","_context6","_resolvePath","readFileSync","buffer","createOnigScanner","patterns","createOnigString","filepath","isAbsolute","_fetchAssets","_fetchAssets2","_callee7","_context7","promises","_fetchJSONAssets","_x2","_fetchJSONAssets2","_callee8","rawTheme","_context8","t0","t1","t2","t3","fetchTheme","_x3","_fetchTheme","_callee9","themePath","shikiTheme","includedTheme","_context9","toShikiTheme","include","settings","colors","fetchGrammar","_x4","_fetchGrammar","_callee10","_context10","_e","_f","fg","tokenColors","globalSetting","scope","VSCODE_FALLBACK_EDITOR_FG","VSCODE_FALLBACK_EDITOR_BG","getThemeDefaultColors","unshift","Resolver","onigLibPromise","onigLibName","languagesPath","languageMap","scopeToLangMap","_onigLibPromise","_onigLibName","_loadGrammar","get","langIdOrAlias","lang","grammar","_x5","tokenizeWithTheme","colorMap","fileContents","lines","ruleStack","INITIAL","actual","final","tokensWithScopes","tokensWithScopesIndex","includeExplanation","tokenizeLine","tokens","tokenizeLine2","tokensLength","j","startIndex","nextStartIndex","foregroundColor","explanation","tokenWithScopes","tokenWithScopesText","endIndex","scopes","explainThemeScopes","parentScopes","themeMatches","explainThemeScope","matchesOne","selectorPrefix","selectorParentScopes","selectorParentIndex","parentIndex","resultLen","setting","selectors","trim","lenJ","rawSelectorPieces","FONT_STYLE_TO_CSS","Italic","Bold","Underline","renderToHtml","html","langId","cssDeclarations","None","escapeHtml","htmlEscapes","chr","Registry","_Registry$","_loadLanguages","_loadLanguage","_loadThemes","_loadTheme","_resolver","themesPath","_resolvedThemes","_resolvedGrammars","_callee2","_context2","_x6","_callee3","themes","_this3","_context3","all","loadTheme","_x7","_callee4","_this4","_context4","loadGrammar","la","_x8","_callee5","langs","_iterator","_step","_iterator2","_step2","_lang2","_context5","addLanguage","loadLanguage","finish","_x9","resolveLang","resolveOptions","_languages","_themes","_getHighlighter","_callee13","_resolveOptions","_registry","_defaultTheme","_currentTheme","COLOR_REPLACEMENTS","fixCssVariablesTheme","_getTheme5","getGrammer","codeToThemedTokens","codeToHtml","_loadTheme2","_loadLanguage2","getLoadedThemes","getLoadedLanguages","getBackgroundColor","getForegroundColor","_context13","_theme","_callee12","_lang","_context12","_x12","_callee11","_context11","_x11","_getTheme2","isPlaintext","_getGrammer","_grammer","_getTheme","_colorMap","getTheme","setTheme","getColorMap","val","paths","loadThemes","loadLanguages","_extendStatics","setPrototypeOf","__proto__","__extends","__","create","__awaiter","thisArg","_arguments","P","generator","reject","fulfilled","rejected","__generator","_","label","trys","ops","verb","v","op","__spread","mergeToObject","obj","parsePartToObject","part","columnsMatch","columnsList","parseExtremes","expandString","isNaturalNumber","FocusNumberError","startNumber","LineOrColumnNumberError","getFocusIndexes","focus","parsed","pairs","pair","fromEntries","parsePart","flat","parseFocus","list","n1","abs","n2","_newTarget","number","DEFAULT_WIDTH","useDimensions","minColumns","deps","dimensions","setDimensions","windowWidth","setWidth","innerWidth","useWindowWidth","prevLongestLine","getLongestLine","nextLongestLine","prevLineRef","nextLineRef","allDeps","_g","_h","pll","nll","codeElement","parentElement","plw","firstElementChild","clientWidth","nlw","plh","nlh","colWidth","textContent","containerWidth","getWidthWithoutPadding","containerHeight","getHeightWithoutPadding","lineWidths","lineWidth","max","oldDeps","newDeps","depsChanged$1","newlineRe$1","focusIndexes","longestLine","computedStyle","getComputedStyle","parseFloat","paddingLeft","paddingRight","paddingTop","paddingBottom","DEFAULT_THEME","$schema","semanticTokenColors","newOperator","stringLiteral","customLiteral","numberLiteral","highlighterPromise","highlighter","isHighlighterReady","missingTheme","missingLang","loadHighlighter","_x10","getHighlighter","highlightOrPlaceholder","getStyle","getCodeLines","newlineRe","tokenizePlaceholder","some","textDecoration","mergeLines","enterIndex","exitIndex","indexes","changes","diff","diffLines","prevIndex","nextIndex","change","added","removed","move","enterCount","exitCount","splitByFocus","mergedCode","annotations","mergedCodeRest","focusByLineNumber","lineIndex","mapFocusToLineNumbers","splittedLines","rest","lineFocus","lineAnnotations","focused","groups","getTokenGroups","focusedLineNumbers","k","firstFocusedLineNumber","lastFocusedLineNumber","focusExtremes","annotationExtremes","columnNumbers","splittedTokens","extremes","splitIndexes","oldTokens","splitIndex","newTokens","sliceIndex","content0","content1","splitTokens","currentGroup","newPrevFocus","isIn","newNextFocus","newPrevAnnotation","getAnnotation","newNextAnnotation","annotation","group","getGroupElement","intervals","fixed","interval","ease","easing","linear","stagger","totalDuration","stepDuration","pow","stepStart","easeInQuad","easeOutQuad","easeInOutCubic","getLinesWithElements","verticalInterval","startY","endY","ln","tweenY","tweenX","parseAnnotations","inlineCodeAnnotations","isInline","multilineCodeAnnotations","inlineAnnotations","annotationMap","focusMap","columnNumbersList","Component","defaultInlineComponent","parseInlineAnnotations","multilineAnnotations","lineNumbers","defaultMultilineComponent","parseMultilineAnnotations","outline","cursor","alert","annotateMultilineSide","ogAnnotations","getLineNumber","sort","shift","annotateLineTokenGroups","tokenGroups","prevTokenGroups","nextTokenGroups","prevAnnotations","nextAnnotations","annotatedGroups","prevColumn","nextColumn","prevAnnotation","nextAnnotation","isPrevAnnotationStarting","isNextAnnotationStarting","shiftGroups","MAX_VALUE","startColumn","newStartColumn","removedGroups","currentStartColumn","currentTokenGroup","length_1","useStepParser","input","isReady","load","run","placeholder","lastLoadedResult","lastLoadedDeps","dep","useAsyncMemo","normalCode","normalize","highlightedLines","merge","parseAllAnnotations","focusedCode","splitLinesByFocus","annotatedCode","lineGroups","annotateMultiline","annotateInline","lineCount","addAnnotations","codeStep","vInterval","newGroups","addExtraStuff","trimEnd","SmoothContainer","minZoom","maxZoom","center","progress","originalContentHeight","horizontalCenter","originalFocusHeight","contentHeight","focusStart","focusEnd","focusCenter","focusHeight","dy","num","dx","focusWidth","getContentProps","getTweenContentProps","tweenProp","Container","Content","scale","transformOrigin","transform","SmoothLines","Lines","LineGroup","getOpacity","LineContainer","LineContent","annotatedGroup","AnnotatedTokens","annotated","Code","parentHeight","htmlProps","language","stepInfo","AfterDimensions","BeforeDimensions","Wrapper","margin","TerminalContent","commands","chars","round","outputLines","output","lastCommand","isRunning","getCommands","InnerTerminalTransition","prevKey","nextKey","InnerTerminalTransitions","steps","textSteps","stepProgress","currentTime","performance","now","getConfigWithDefaults","stiffness","damping","mass","decimals","teleport","X","getInitialState","initialSpeed","x0","v0","raf","sqrt","exp","sin","cos","spring","dt","radicand","rp","rn","_r","_a2","_b2","nextFrameQueue","nextFrameId","queueAnimationFrame","runQueue","unqueueAnimationFrame","frameId","queue","unstable_batchedUpdates","task","useSpring","config","forceUpdate","newConfig","_useSpringInstance","useSpringInstance","oldConfig","moving","roundTo","isMoving","loop","ColorName","contrastBorder","getColor","colorName","EditorBackground","getDefault","light","dark","hc","ActiveTabBackground","ActiveTabForeground","InactiveTabBackground","InactiveTabForeground","transparent","TabBorder","ActiveTabBottomBorder","EditorGroupBorder","EditorGroupHeaderBackground","_opacity","toUpperCase","defaults","EditorFrame","northPanel","southPanel","terminalPanel","button","TabsContainer","tabs","showFrameButtons","panel","flexDirection","topBorder","flexGrow","flexShrink","minHeight","borderRightColor","borderBottomColor","flex","getPanelSnapshot","parent","northElement","southElement","titleBarHeight","getBoundingClientRect","northHeight","northKey","southHeight","southKey","getTabsSnapshot","northTabs","querySelectorAll","southTabs","getTabsDimensions","tabElements","parentLeft","child","filename","rect","getPanelTabs","nextSnapshot","otherNextSnapshot","prevSnapshot","otherPrevSnapshot","oldTabs","isPresent","totallyNewTabs","snapshot","TerminalPanel","backward","MAX_HEIGHT","DEFAULT_STEP","heightRatio","MiniEditorTween","codeProps","frameProps","useSnapshots","inputNorthPanel","inputSouthPanel","getStepFiles","prevNorthFile","prevSouthFile","nextNorthFile","nextSouthFile","CodeTransition","prevFile","nextFile","startingPosition","endingPosition","northStyle","southStyle","getPanelStyles","northActive","southActive","getTabs","useTransition","terminal","pn","nn","ps","ns","pnFile","nnFile","psFile","nsFile","defaultSpring","MiniEditor","TwoPanelEditor","SinglePanelEditor","SingleFileEditor","springConfig","useStepSpring","mdxToStep","stepProps","stepChildren","separatorIndex","mdxType","hasTwoPanels","northChildren","southChildren","northFiles","pre","preToFile","southFiles","nf","sf","chooseNorthTabs","chooseActiveFile","chooseSouthTabs","oldNorthTabs","newSouthTabs","newNorthTabs","tab","oldSouthTabs","panelFiles","preElement","prevFiles","codeElementProps","metastring","param","parseMetastring","fileName","defaultFileName","Back","preserveAspectRatio","Forward","Open","stroke","strokeWidth","TitleBar","linkUrl","readOnly","useSteps$1","loadUrl","prependOrigin","currentOrigin","displayUrl","transformUrl","MiniBrowserHike","ogSteps","transitionStyle","MiniBrowser","last","useSteps","HikeContext","HikeProvider","useHikeContext","StepContext","ContentColumn","contentSteps","editorStep","editorProps","contentProps","StepContent","hikeState","focusStepIndex","scrollStepIndex","isOn","DemoContext","DemoProvider","previewProps","sandpackProps","previewPreset","useSandpackProps","previewAndEditorProps","Editor","finalFrameProps","CodeSandboxIcon","finalCodeProps","Preview","link","preview","StickerColumn","noPreview","FluidLayout","reducer","initialState","focusStep","focusEditorStep","layout","newIndex","FixedLayout","CodeSlotContent","slotProps","stepEditorProps","PreviewSlotContent","stepPreviewProps","Hike","preset","kids","prevEditorStep","headKid","contentKids","headProps","stepCodeProps","stepFrameProps","editorFrameProps","useStepsFromChildren","HikeWithSteps","Focus","hikeContext","FocusButton","context","on","fileIndex","newEditorStep","useEditorStep","oldEditorStep","isFocused","Icon","focusable","strokeLinecap","strokeLinejoin","AnchorOrFocus","decodeURI","firstPart","secondPart","mr","readingTime","mappedEmojis","React","requiredArgs","required","args","isDate","Date","toDate","argument","argStr","getTime","stack","NaN","isValid","dirtyDate","date","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","addSuffix","comparison","buildFormatLongFn","defaultWidth","format","formats","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","dirtyOptions","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","pattern","findKey","valueCallback","predicate","parsePattern","parseResult","any","formatDistance","formatLong","formatRelative","localize","weekStartsOn","firstWeekContainsDate","toInteger","ceil","addMilliseconds","dirtyAmount","timestamp","amount","subMilliseconds","MILLISECONDS_IN_DAY","startOfUTCISOWeek","getUTCDay","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","startOfUTCWeek","locale","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","addLeadingZeros","targetLength","sign","signedYear","M","getUTCMonth","dayPeriodEnumValue","getUTCHours","h","H","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","dayPeriodEnum","G","unit","lightFormatters","Y","signedWeekYear","weekYear","R","Q","q","L","w","week","getUTCWeek","I","isoWeek","getUTCISOWeek","D","dayOfYear","setUTCMonth","startOfYearTimestamp","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","B","K","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","originalDate","T","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","cleanEscapedString","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","orient$1","vertical","horizontal","zeroRect","getStyles","thumbPercents","thumbRects","isReversed","size","rootStyle","touchAction","WebkitTapHighlightColor","userSelect","trackStyle","isSingleThumb","fallback","range","percent","innerTrackStyle","bottom","right","getThumbStyle","WebkitUserSelect","MozUserSelect","msUserSelect","getIsReversed","direction","_excluded$3","_excluded2","_excluded3","_excluded4","useRangeSlider","_props$min","_props$max","valueProp","defaultValue","isReversedProp","_props$direction","_props$orientation","idProp","isDisabled","isReadOnly","onChangeStartProp","onChangeStart","onChangeEndProp","onChangeEnd","_props$step","getAriaValueTextProp","getAriaValueText","ariaValueText","ariaLabel","ariaLabelledBy","_props$focusThumbOnCh","focusThumbOnChange","_props$minStepsBetwee","minStepsBetweenThumbs","_useControllableState","valueState","setValue","_useBoolean","isDragging","setDragging","_useBoolean2","setFocused","_useState","useState","activeIndex","setActiveIndex","eventSourceRef","useRef","isInteractive","initialValue","valueRef","valueBounds","getValueBounds","reversedValue","isVertical","_useState2","setThumbRects","useEffect","_rootRef$current","rootRef","rects","el","offsetWidth","offsetHeight","trackRef","uuid","ids","getThumb","getInput","track","innerTrack","getMarker","getValueFromPointer","event","_event$touches$","_event$touches","touches","clientX","clientY","tenSteps","oneStep","actions","setValueAtIndex","stepUp","valueAtIndex","stepDown","reset","keyMap","ArrowRight","ArrowUp","ArrowLeft","ArrowDown","PageUp","PageDown","Home","End","_useMemo","focusThumb","idx","_rootRef$current2","thumb","ownerDocument","getElementById","onPanSessionStart","pointValue","distances","closest","thumbsAtPosition","distance","_onPanSessionStart","onPanSessionEnd","off","onPan","_onPan","getRootProps","tabIndex","getTrackProps","getInnerTrackProps","getThumbProps","_getAriaValueText","_value","role","onFocus","onBlur","getOutputProps","htmlFor","getMarkerProps","_props","isInRange","isHighlighted","markerStyle","getInputProps","getThumbPercent","getThumbMinValue","getThumbMaxValue","spacing","_excluded$2","_createContext$1","RangeSliderProvider","useRangeSliderContext","_createStylesContext$1","StylesProvider$1","useStyles$1","RangeSlider","styles","ownProps","_useRangeSlider","ctx","__css","container","displayName","RangeSliderThumb","_useRangeSliderContex","thumbProps","cx","RangeSliderTrack","trackProps","RangeSliderFilledTrack","filledTrack","RangeSliderMark","markProps","_excluded$1","getDefaultValue","_createContext","SliderProvider","useSliderContext","_createStylesContext","StylesProvider","useStyles","Slider","_useSlider","computedValue","prevRef","trackValue","thumbPercent","thumbRef","_useIds","thumbId","trackId","trackRect","borderBox","nextValue","constrain","stepTo","valueText","thumbBoxModel","_thumbBoxModel$border","thumbRect","setValueFromPointer","markerPercent","orient","useSlider","rootProps","inputProps","SliderThumb","SliderTrack","SliderFilledTrack","SliderMark","setFontSize","align","_hover","bgColor","rounded","variant","icon","prevState","shortcodes","CodeSlot","PreviewSlot","CodeBlock","Prism","CodeHike","getFontSizeString","components","px","mb","textAlign","base","md","pt","pb","borderColor","mt","borderBottomWidth","dirtyFormatStr","formatStr","formatterOptions","firstCharacter","longFormatter","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","_frontmatter","makeShortcode","StepHead","layoutProps","MDXLayout","DefaultLayout","MDXContent","parentName","isMDXComponent","asyncGeneratorStep","gen","_next","_throw","info","module","exports","__esModule","instance","Constructor","_defineProperties","descriptor","configurable","writable","protoProps","staticProps","_excluded$4","strict","ButtonGroupProvider","useButtonGroup","ButtonGroup","colorScheme","_props$spacing","isAttached","_className","groupStyles","borderEndRadius","borderRadius","borderStartRadius","marginStart","ButtonSpinner","placement","_props$children","marginProp","spinnerStyles","_extends2","alignItems","ButtonIcon","_children","alignSelf","Button","isButton","setIsButton","_omitThemingProps","_omitThemingProps$isD","isLoading","isActive","leftIcon","rightIcon","loadingText","_omitThemingProps$ico","iconSpacing","spinner","_omitThemingProps$spi","spinnerPlacement","buttonStyles","_styles$_focus","_focus","appearance","justifyContent","whiteSpace","verticalAlign","_useButtonType","node","tagName","defaultType","ButtonContent","marginEnd","IconButton","isRound","padding","SANDBOX_CONFIG","packageJSONPackage","sandboxConfig","devDependencies","totalDependencies","nuxt","apollo","moduleNames","dojo","LZString","parameters","compressToBase64","Diff","buildValues","newString","oldString","useLongestToken","componentPos","componentLen","newPos","oldPos","component","tmp","oldValue","lastComponent","equals","clonePath","callback","castInput","removeEmpty","tokenize","newLen","oldLen","editLength","maxEditLength","bestPath","extractCommon","execEditLength","diagonalPath","basePath","addPath","removePath","_oldPos","canAdd","canRemove","pushComponent","exec","ret","commonCount","comparator","ignoreCase","characterDiff","diffChars","oldStr","newStr","generateOptions","extendedWordChars","reWhitespace","wordDiff","diffWords","ignoreWhitespace","diffWordsWithSpace","splice","lineDiff","diffTrimmedLines","retLines","linesAndNewlines","newlineIsToken","sentenceDiff","diffSentences","cssDiff","diffCss","_typeof","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","objectPrototypeToString","jsonDiff","diffJson","oldObj","newObj","canonicalize","replacementStack","replacer","canonicalizedObj","toJSON","sortedKeys","_this$options","undefinedReplacement","_this$options$stringi","stringifyReplacer","arrayDiff","diffArrays","oldArr","newArr","parsePatch","uniDiff","diffstr","delimiters","parseIndex","header","parseFileHeader","hunks","_line","parseHunk","fileHeader","keyPrefix","chunkHeaderIndex","chunkHeader","hunk","oldStart","oldLines","newStart","newLines","linedelimiters","addCount","removeCount","operation","distanceIterator","minLine","maxLine","wantForward","backwardExhausted","forwardExhausted","localOffset","applyPatch","removeEOFNL","addEOFNL","compareLine","patchContent","errorCount","fuzzFactor","hunkFits","toPos","diffOffset","_hunk","_toPos","previousOperation","_k","applyPatches","currentIndex","processIndex","complete","loadFile","updatedContent","patched","structuredPatch","oldFileName","newFileName","oldHeader","newHeader","contextLines","oldRangeStart","newRangeStart","curRange","oldLine","newLine","_loop","_curRange","_curRange2","_curRange3","contextSize","oldEOFNewline","newEOFNewline","noNlBeforeAdds","createTwoFilesPatch","createPatch","arrayEqual","arrayStartsWith","calcLineCount","_calcOldNewLineCount","calcOldNewLineCount","mine","theirs","loadPatch","fileNameChanged","selectField","mineIndex","theirsIndex","mineOffset","theirsOffset","mineCurrent","Infinity","theirsCurrent","hunkBefore","cloneHunk","mergedHunk","patch","conflict","check","mineLines","theirOffset","theirLines","their","insertLeading","theirCurrent","_hunk$lines","collectChange","_hunk$lines2","removal","mutualChange","insertTrailing","myChanges","theirChanges","allRemoves","_hunk$lines3","_hunk$lines4","skipRemoveSuperset","_hunk$lines5","swap","_hunk$lines6","collectContext","merged","insert","matchChanges","matchIndex","contextChanges","conflicted","removeChanges","delta","changeContent","myCount","theirCount","convertChangesToDMP","convertChangesToXML","escapeHTML","factory","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","mapToArray","setToArray","set","uid","func","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","IE_PROTO","nativeObjectToString","reIsNative","RegExp","Buffer","Uint8Array","symToStringTag","toStringTag","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","DataView","getNative","Map","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","clear","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","bitmask","customizer","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","getMapData","getValue","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ArrayBuffer","ctorString","isLength","baseUnary","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","character","charAt","_compress","decompressFromBase64","_decompress","compressToUTF16","decompressFromUTF16","compressed","compressToUint8Array","uncompressed","compress","buf","TotalLen","current_value","decompressFromUint8Array","decompress","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","resetValue","getNextValue","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","_classCallCheck","_createClass","OnigScanner_1","OnigRegExp","scanner","default","startPosition","findNextMatchSync","captureIndicesForMatch","searchSync","testSync","capture","captureIndices","convertToString","_slicedToArray","LRUCache","onigasmH_1","OnigString_1","mallocAndWriteString","ptr","onigasmH","_malloc","utf8Bytes","HEAPU8","convertUTF8BytesFromPtrToString","cache","dispose","regexTPtrsPtr","regexTPtrs","_disposeCompiledPatterns","errMessage","_getLastError","_free","OnigScanner","sources","convertToNumber","onigNativeInfo","regexTAddrRecieverPtr","patternStrPtr","_compilePattern","regexTAddress","HEAP32","Uint32Array","onigString","strPtr","resultInfoReceiverPtr","_findBestMatch","convertUtf16OffsetToUtf8","_errMessage","_Uint32Array","HEAPU32","_Uint32Array2","bestPatternIdx","encodedResultBeginAddress","encodedResultLength","encodedResult","captureIdx","hasMultiByteCharacters","convertUtf8OffsetToUtf16","isFinite","OnigString","_utf8Bytes","_utf8Indexes","encode","utf8Indexes","utf8Offset","utf8OffsetMap","_mappingTableStartOffset","low","high","mid","findFirstInSorted","utf16Offset","utf8Array","utf16OffsetToUtf8","mappingTableStartOffset","createOffsetTable","startOffset","maxUtf8Len","Uint16Array","u8view","ptrHead","codepoint","bytesRequiredToEncode","temp","utf8","loadWASM","Onigasm","currentScript","Module","moduleOverrides","readBinary","arguments_","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","ENVIRONMENT_IS_SHELL","scriptDirectory","locateFile","read","readbuffer","assert","scriptArgs","quit","print","printErr","out","wasmBinary","wasmMemory","setTempRet0","WebAssembly","wasmTable","Table","ABORT","condition","abort","getCFunc","ident","ccall","returnType","argTypes","opts","toC","stringToUTF8","stackAlloc","writeArrayToMemory","cArgs","converter","stackSave","UTF8ToString","convertReturnValue","stackRestore","UTF8Decoder","TextDecoder","UTF8ArrayToString","u8Array","maxBytesToRead","endIdx","endPtr","subarray","decode","u0","u1","u2","stringToUTF8Array","outU8Array","outIdx","maxBytesToWrite","startIdx","outPtr","HEAP8","WASM_PAGE_SIZE","alignUp","multiple","updateGlobalBufferAndViews","Int8Array","Int16Array","Int32Array","Float32Array","Float64Array","DYNAMIC_BASE","DYNAMICTOP_PTR","INITIAL_TOTAL_MEMORY","callRuntimeCallbacks","callbacks","Memory","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATPOSTRUN__","preRun","addOnPreRun","initRuntime","preMain","postRun","addOnPostRun","cb","runDependencies","runDependencyWatcher","dependenciesFulfilled","addRunDependency","removeRunDependency","clearInterval","what","RuntimeError","dataURIPrefix","isDataURI","wasmBinaryFile","getBinary","getBinaryPromise","credentials","response","catch","createWasm","asmLibraryArg","receiveInstance","receiveInstantiatedSource","instantiateArrayBuffer","receiver","binary","instantiate","reason","instantiateStreaming","instantiateAsync","_abort","_emscripten_get_heap_size","_emscripten_get_sbrk_ptr","_emscripten_memcpy_big","dest","emscripten_realloc_buffer","grow","_emscripten_resize_heap","requestedSize","oldSize","PAGE_MULTIPLE","LIMIT","newSize","___wasm_call_ctors","SYSCALLS","buffers","printChar","stream","varargs","getStr","get64","getZero","_fd_close","fd","FS","ErrnoError","errno","_fd_seek","offset_low","offset_high","whence","newOffset","_fd_write","iov","iovcnt","pnum","_setTempRet0","$i","asm","calledRun","doRun","old","runCaller","_regeneratorRuntime","_asyncToGenerator","OnigasmModuleFactory","initModule","_initModule","mark","bytes","wrap","_console","instantiateWasm","imports","successCallback","moduleH","isInitialized","_loadWASM","arrayBuffer","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","lc","stale","maxAge","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lC","hit","thisp","walker","tail","forEachStep","head","toArray","isStale","_del","item","Entry","_get","expiresAt","doUse","unshiftNode","delete","removeNode","inserted","Node","pushNode","forEachReverse","getReverse","mapReverse","initial","reduceReverse","toArrayReverse","sliceReverse","deleteCount","er","util","clone","javascript","jsx","extend","inside","insertBefore","spread","script","alias","openedBraces","Token","hooks","_self","uniqueId","plainTextGrammar","manual","disableWorkerMessageHandler","objId","deepClone","visited","getLanguage","setLanguage","classList","scripts","getElementsByTagName","defaultActivation","no","contains","plaintext","txt","redef","before","newToken","DFS","propertyType","plugins","highlightAll","async","highlightAllUnder","env","elements","highlightElement","nodeName","insertHighlightedCode","highlightedCode","innerHTML","hasAttribute","Worker","worker","onmessage","evt","immediateClose","tokenList","LinkedList","addAfter","matchGrammar","matchedStr","lookbehind","lastIndex","lookbehindLength","startNode","startPos","rematch","cause","patternObj","greedy","flags","currentNode","reach","matchStr","after","removeFrom","removeRange","nestedRematch","newNode","attributes","close","highlightAutomaticallyCallback","readyState","defer","markup","includedCdataInside","def","attrName","mathml","svg","xml","ssml","atom","rss","css","addInlined","addAttribute","clike","regex","js","Element","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","SELECTOR","extension","autoloader","success","xhr","XMLHttpRequest","open","onreadystatechange","responseText","statusText","send","comma","parseRange","fileHighlight","logged","DefaultContext","attr","IconContext","__assign","Tree2Element","tree","GenIcon","IconBase","elem","conf","svgProps","computedSize","createGrammar","FullScopeDependency","toKey","PartialScopeDependency","partial","visitedRule","_seenFull","_seenPartial","repository","mergeObjects","injections","every","createMatchers","RuleFactory","getCompiledRuleId","matcher","ruleId","priority","ScopeDependencyCollector","collectSpecificDependencies","collectDependencies","themeData","ScopeMetadata","_initialLanguage","_themeProvider","_cache","_defaultMetaData","getDefaults","_embeddedLanguages","_escapeRegExpCharacters","_embeddedLanguagesRegex","onDidChangeTheme","getDefaultMetadata","getMetadataForScope","_NULL_SCOPE_METADATA","_doGetMetadataForScope","_scopeToLanguage","_toStandardTokenType","themeMatch","STANDARD_TOKEN_TYPE_REGEXP","_scopeMetadataProvider","_onigLib","_rootId","_lastRuleId","_ruleId2desc","_includedGrammars","_grammarRepository","_grammar","C","_injections","_tokenTypeMatchers","getInjections","getExternalGrammar","injectionSelector","registerRule","getRule","lookup","$base","_tokenize","lineTokens","getResult","lineLength","getBinaryResult","$self","NULL","getName","mergeMetadata","$vscodeTextmateLocation","endPos","produceFromScopes","produce","retokenizeCapturedWithRuleId","contentNameScopesList","getContentName","A","rules","debugRegExps","compile","endRule","DebugFlags","InDebugMode","debugName","matchedRuleId","generateScopes","priorityMatch","beginRuleCapturedEOL","BeginWhileRule","rule","compileWhile","debugWhileRegExp","whileCaptures","linePos","anchorPosition","isFirstLine","debugEndRegExp","setContentNameScopesList","nameScopesList","endCaptures","getAnchorPos","getEnterPos","BeginEndRule","debugBeginRegExp","beginCaptures","endHasBackReferences","setEndRule","getEndWithResolvedBackReferences","hasSameRuleAs","whileHasBackReferences","getWhileWithResolvedBackReferences","debugMatchRegExp","captures","safePop","Grammar","toBinaryStr","printMetadata","_equals","_matchesScope","_matches","_push","_generateScopes","ScopeListElement","depth","_enterPos","_anchorPos","_structuralEquals","_reset","_writeString","StackElement","LocalStackElement","_emitBinaryTokens","_tokenTypeOverrides","_lineText","_tokens","_binaryTokens","_lastTokenEndIndex","basename","lastIndexOf","hasCaptures","replaceCaptures","RegexSource","VSCODE_TEXTMATE_DEBUG","throw","_syncRegistry","SyncRegistry","Theme","createFromRawTheme","onigLib","_ensureGrammarCache","loadGrammarWithEmbeddedLanguages","loadGrammarWithConfiguration","embeddedLanguages","tokenTypes","_doLoadSingleGrammar","addGrammar","_loadSingleGrammar","_collectDependenciesForDep","grammarForScopeName","parseRawGrammar","_grammars","_rawGrammars","_injectionGrammars","CompiledRule","$location","_name","_nameIsCapturing","_contentName","_contentNameIsCapturing","Rule","collectPatternsRecursive","CaptureRule","hasAnchor","_anchorCache","_buildAnchorCache","hasBackReferences","setSource","resolveBackReferences","A0_G0","A0_G1","A1_G0","A1_G1","resolveAnchors","RegExpSource","_items","_hasAnchors","_cached","_disposeCaches","_resolveAnchors","RegExpSourceList","_match","_cachedCompiledPatterns","MatchRule","hasMissingPatterns","IncludeOnlyRule","_begin","_end","applyEndPatternLast","_while","_cachedCompiledWhilePatterns","createCaptureRule","_compileCaptures","begin","contentName","_compilePatterns","while","fun","nextTick","browser","argv","versions","once","removeAllListeners","emit","prependListener","prependOnceListener","listeners","cwd","chdir","umask","parseWithLocation","char","N","isClosed","fromCodePoint","toLocation","_r2","getId","ParsedThemeRule","parseTheme","_lastColorId","_id2color","_color2id","_isFrozen","ColorMap","_root","_defaults","createFromParsedTheme","strcmp","strArrCmp","scopeDepth","cloneArr","acceptOverwrite","ThemeTrieElementRule","_mainRule","_rulesWithParentScopes","_sortBySpecificity","_cmpBySpecificity","_doInsertHere","ThemeTrieElement","$trimEnd","forcedStringTrimMethod","PROPER_FUNCTION_NAME","fails","whitespaces","METHOD_NAME","uncurryThis","requireObjectCoercible","whitespace","ltrim","rtrim","createMethod","TYPE","$this","classof","$","forced","trimRight"],"sourceRoot":""}