(our hidden element)\n // react-dom in dev mode will warn about this. There doesn't seem to be a way to render arbitrary\n // user Head without hitting this issue (our hidden element could be just \"new Document()\", but\n // this can only have 1 child, and we don't control what is being rendered so that's not an option)\n // instead we continue to render to
, and just silence warnings for and elements\n // https://github.com/facebook/react/blob/e2424f33b3ad727321fc12e75c5e94838e84c2b5/packages/react-dom-bindings/src/client/validateDOMNesting.js#L498-L520\n const originalConsoleError = console.error.bind(console)\n console.error = (...args) => {\n if (\n Array.isArray(args) &&\n args.length >= 2 &&\n args[0]?.includes?.(`validateDOMNesting(...): %s cannot appear as`) &&\n (args[1] === `` || args[1] === ``)\n ) {\n return undefined\n }\n return originalConsoleError(...args)\n }\n\n /* We set up observer to be able to regenerate after react-refresh\n updates our hidden element.\n */\n const observer = new MutationObserver(onHeadRendered)\n observer.observe(hiddenRoot, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n })\n}\n\nexport function headHandlerForBrowser({\n pageComponent,\n staticQueryResults,\n pageComponentProps,\n}) {\n useEffect(() => {\n if (pageComponent?.Head) {\n headExportValidator(pageComponent.Head)\n\n const { render } = reactDOMUtils()\n\n const HeadElement = (\n
\n )\n\n const WrapHeadElement = apiRunner(\n `wrapRootElement`,\n { element: HeadElement },\n HeadElement,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n render(\n // just a hack to call the callback after react has done first render\n // Note: In dev, we call onHeadRendered twice( in FireCallbackInEffect and after mutualution observer dectects initail render into hiddenRoot) this is for hot reloading\n // In Prod we only call onHeadRendered in FireCallbackInEffect to render to head\n
\n \n {WrapHeadElement}\n \n ,\n hiddenRoot\n )\n }\n\n return () => {\n removePrevHeadElements()\n removeHtmlAndBodyAttributes(keysOfHtmlAndBodyAttributes)\n }\n })\n}\n","import React, { Suspense, createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\nimport { headHandlerForBrowser } from \"./head/head-export-handler-for-browser\"\n\n// Renders page\nfunction PageRenderer(props) {\n const pageComponentProps = {\n ...props,\n params: {\n ...grabMatchParams(props.location.pathname),\n ...props.pageResources.json.pageContext.__params,\n },\n }\n\n const preferDefault = m => (m && m.default) || m\n\n let pageElement\n if (props.pageResources.partialHydration) {\n pageElement = props.pageResources.partialHydration\n } else {\n pageElement = createElement(preferDefault(props.pageResources.component), {\n ...pageComponentProps,\n key: props.path || props.pageResources.page.path,\n })\n }\n\n const pageComponent = props.pageResources.head\n\n headHandlerForBrowser({\n pageComponent,\n staticQueryResults: props.pageResources.staticQueryResults,\n pageComponentProps,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n {\n element: pageElement,\n props: pageComponentProps,\n },\n pageElement,\n ({ result }) => {\n return { element: result, props: pageComponentProps }\n }\n ).pop()\n\n return wrappedPage\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport {\n navigate as reachNavigate,\n globalHistory,\n} from \"@gatsbyjs/reach-router\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(nextProps) {\n if (compareLocationProps(this.props.location, nextProps.location)) {\n onPreRouteUpdate(nextProps.location, this.props.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n
\n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"./static-query\"\nimport {\n SlicesMapContext,\n SlicesContext,\n SlicesResultsContext,\n} from \"./slice/context\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n getSliceResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\nimport { reactDOMUtils } from \"./react-dom-utils\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nconst { render, hydrate } = reactDOMUtils()\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n
\n \n \n )\n\n const DataContext = React.createContext({})\n\n const slicesContext = {\n renderEnvironment: `browser`,\n }\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n
\n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n const sliceResults = getSliceResults()\n\n return (\n \n \n \n \n \n {children}\n \n \n \n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n
\n {({ pageResources, location }) => (\n \n \n \n \n \n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element:
},\n
,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return
{SiteRoot}\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = render\n if (focusEl && focusEl.children.length) {\n defaultRenderer = hydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(
, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n\n return\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","const map = new WeakMap()\n\nexport function reactDOMUtils() {\n const reactDomClient = require(`react-dom/client`)\n\n const render = (Component, el) => {\n let root = map.get(el)\n if (!root) {\n map.set(el, (root = reactDomClient.createRoot(el)))\n }\n root.render(Component)\n }\n\n const hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n\n return { render, hydrate }\n}\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","import React from \"react\"\n\nconst SlicesResultsContext = React.createContext({})\nconst SlicesContext = React.createContext({})\nconst SlicesMapContext = React.createContext({})\nconst SlicesPropsContext = React.createContext({})\n\nexport {\n SlicesResultsContext,\n SlicesContext,\n SlicesMapContext,\n SlicesPropsContext,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { createServerOrClientContext } from \"./context-utils\"\n\nconst StaticQueryContext = createServerOrClientContext(`StaticQuery`, {})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n
\n {finalData && render(finalData)}\n {!finalData && Loading (StaticQuery)
}\n \n )\n}\n\nlet warnedAboutStaticQuery = false\n\n// TODO(v6): Remove completely\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n if (process.env.NODE_ENV === `development` && !warnedAboutStaticQuery) {\n console.warn(\n `The
component is deprecated and will be removed in Gatsby v6. Use useStaticQuery instead. Refer to the migration guide for more information: https://gatsby.dev/migrating-4-to-5/#staticquery--is-deprecated`\n )\n warnedAboutStaticQuery = true\n }\n\n return (\n
\n {staticQueryData => (\n \n )}\n \n )\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n // TODO(v5): Remove since we require React >= 18\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nexport { StaticQuery, StaticQueryContext, useStaticQuery }\n","import React from \"react\"\n\n// Ensure serverContext is not created more than once as React will throw when creating it more than once\n// https://github.com/facebook/react/blob/dd2d6522754f52c70d02c51db25eb7cbd5d1c8eb/packages/react/src/ReactServerContext.js#L101\nconst createServerContext = (name, defaultValue = null) => {\n /* eslint-disable no-undef */\n if (!globalThis.__SERVER_CONTEXT) {\n globalThis.__SERVER_CONTEXT = {}\n }\n\n if (!globalThis.__SERVER_CONTEXT[name]) {\n globalThis.__SERVER_CONTEXT[name] = React.createServerContext(\n name,\n defaultValue\n )\n }\n\n return globalThis.__SERVER_CONTEXT[name]\n}\n\nfunction createServerOrClientContext(name, defaultValue) {\n if (React.createServerContext) {\n return createServerContext(name, defaultValue)\n }\n\n return React.createContext(defaultValue)\n}\n\nexport { createServerOrClientContext }\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\nimport { withPrefix } from \"gatsby\";\nimport getManifestForPathname from \"./get-manifest-pathname\";\n\n// when we don't have localisation in our manifest, we tree shake everything away\nexport const onRouteUpdate = function onRouteUpdate({\n location\n}, pluginOptions) {\n if (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n const {\n localize\n } = pluginOptions;\n const manifestFilename = getManifestForPathname(location.pathname, localize, true);\n const manifestEl = document.head.querySelector(`link[rel=\"manifest\"]`);\n if (manifestEl) {\n manifestEl.setAttribute(`href`, withPrefix(manifestFilename));\n }\n }\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _gatsby = require(\"gatsby\");\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @param {boolean} shouldPrependPathPrefix\n * @return string\n */\nvar _default = (pathname, localizedManifests, shouldPrependPathPrefix = false) => {\n const defaultFilename = `manifest.webmanifest`;\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n const localizedManifest = localizedManifests.find(app => {\n let startUrl = app.start_url;\n if (shouldPrependPathPrefix) {\n startUrl = (0, _gatsby.withPrefix)(startUrl);\n }\n return pathname.startsWith(startUrl);\n });\n if (!localizedManifest) {\n return defaultFilename;\n }\n return `manifest_${localizedManifest.lang}.webmanifest`;\n};\nexports.default = _default;","export default class SequentialIDGenerator {\n constructor(prefix = \"\") {\n // ensure start with \"ae\" so \"ad\" is never produced\n this.prefix = prefix;\n this.count = 0;\n this.offset = 374;\n this.msb = 1295;\n this.power = 2;\n }\n\n next() {\n const id = this.increment().toString(36);\n return this.prefix ? `${this.prefix}${id}` : id;\n }\n\n increment() {\n const id = this.count + this.offset;\n\n if (id === this.msb) {\n this.offset += (this.msb + 1) * 9;\n this.msb = Math.pow(36, ++this.power) - 1;\n }\n\n this.count++;\n return id;\n }\n\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZXF1ZW50aWFsSURHZW5lcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByZWZpeCIsImNvdW50Iiwib2Zmc2V0IiwibXNiIiwicG93ZXIiLCJuZXh0IiwiaWQiLCJpbmNyZW1lbnQiLCJ0b1N0cmluZyIsIk1hdGgiLCJwb3ciXSwic291cmNlcyI6WyJzcmMvc2VxdWVudGlhbC1pZC1nZW5lcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VxdWVudGlhbElER2VuZXJhdG9yIHtcbiAgcHJlZml4OiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIG9mZnNldDogbnVtYmVyO1xuICBtc2I6IG51bWJlcjtcbiAgcG93ZXI6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwcmVmaXg6IHN0cmluZyA9IFwiXCIpIHtcbiAgICAvLyBlbnN1cmUgc3RhcnQgd2l0aCBcImFlXCIgc28gXCJhZFwiIGlzIG5ldmVyIHByb2R1Y2VkXG4gICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgdGhpcy5jb3VudCA9IDA7XG4gICAgdGhpcy5vZmZzZXQgPSAzNzQ7XG4gICAgdGhpcy5tc2IgPSAxMjk1O1xuICAgIHRoaXMucG93ZXIgPSAyO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuaW5jcmVtZW50KCkudG9TdHJpbmcoMzYpO1xuICAgIHJldHVybiB0aGlzLnByZWZpeCA/IGAke3RoaXMucHJlZml4fSR7aWR9YCA6IGlkO1xuICB9XG5cbiAgaW5jcmVtZW50KCkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5jb3VudCArIHRoaXMub2Zmc2V0O1xuICAgIGlmIChpZCA9PT0gdGhpcy5tc2IpIHtcbiAgICAgIHRoaXMub2Zmc2V0ICs9ICh0aGlzLm1zYiArIDEpICogOTtcbiAgICAgIHRoaXMubXNiID0gTWF0aC5wb3coMzYsICsrdGhpcy5wb3dlcikgLSAxO1xuICAgIH1cbiAgICB0aGlzLmNvdW50Kys7XG4gICAgcmV0dXJuIGlkO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsTUFBTUEscUJBQU4sQ0FBNEI7RUFPekNDLFdBQVcsQ0FBQ0MsTUFBYyxHQUFHLEVBQWxCLEVBQXNCO0lBQy9CO0lBQ0EsS0FBS0EsTUFBTCxHQUFjQSxNQUFkO0lBQ0EsS0FBS0MsS0FBTCxHQUFhLENBQWI7SUFDQSxLQUFLQyxNQUFMLEdBQWMsR0FBZDtJQUNBLEtBQUtDLEdBQUwsR0FBVyxJQUFYO0lBQ0EsS0FBS0MsS0FBTCxHQUFhLENBQWI7RUFDRDs7RUFFREMsSUFBSSxHQUFHO0lBQ0wsTUFBTUMsRUFBRSxHQUFHLEtBQUtDLFNBQUwsR0FBaUJDLFFBQWpCLENBQTBCLEVBQTFCLENBQVg7SUFDQSxPQUFPLEtBQUtSLE1BQUwsR0FBZSxHQUFFLEtBQUtBLE1BQU8sR0FBRU0sRUFBRyxFQUFsQyxHQUFzQ0EsRUFBN0M7RUFDRDs7RUFFREMsU0FBUyxHQUFHO0lBQ1YsTUFBTUQsRUFBRSxHQUFHLEtBQUtMLEtBQUwsR0FBYSxLQUFLQyxNQUE3Qjs7SUFDQSxJQUFJSSxFQUFFLEtBQUssS0FBS0gsR0FBaEIsRUFBcUI7TUFDbkIsS0FBS0QsTUFBTCxJQUFlLENBQUMsS0FBS0MsR0FBTCxHQUFXLENBQVosSUFBaUIsQ0FBaEM7TUFDQSxLQUFLQSxHQUFMLEdBQVdNLElBQUksQ0FBQ0MsR0FBTCxDQUFTLEVBQVQsRUFBYSxFQUFFLEtBQUtOLEtBQXBCLElBQTZCLENBQXhDO0lBQ0Q7O0lBQ0QsS0FBS0gsS0FBTDtJQUNBLE9BQU9LLEVBQVA7RUFDRDs7QUE3QndDIn0=","// adapted from https://github.com/dutchenkoOleg/sort-css-media-queries\nconst minMaxWidth = /(!?\\(\\s*min(-device-)?-width).+\\(\\s*max(-device)?-width/i;\nconst minWidth = /\\(\\s*min(-device)?-width/i;\nconst maxMinWidth = /(!?\\(\\s*max(-device)?-width).+\\(\\s*min(-device)?-width/i;\nconst maxWidth = /\\(\\s*max(-device)?-width/i;\n\nconst isMinWidth = _testQuery(minMaxWidth, maxMinWidth, minWidth);\n\nconst isMaxWidth = _testQuery(maxMinWidth, minMaxWidth, maxWidth);\n\nconst minMaxHeight = /(!?\\(\\s*min(-device)?-height).+\\(\\s*max(-device)?-height/i;\nconst minHeight = /\\(\\s*min(-device)?-height/i;\nconst maxMinHeight = /(!?\\(\\s*max(-device)?-height).+\\(\\s*min(-device)?-height/i;\nconst maxHeight = /\\(\\s*max(-device)?-height/i;\n\nconst isMinHeight = _testQuery(minMaxHeight, maxMinHeight, minHeight);\n\nconst isMaxHeight = _testQuery(maxMinHeight, minMaxHeight, maxHeight);\n\nconst isPrint = /print/i;\nconst isPrintOnly = /^print$/i;\nconst maxValue = Number.MAX_VALUE;\n\nfunction _getQueryLength(length) {\n const matches = /(-?\\d*\\.?\\d+)(ch|em|ex|px|rem)/.exec(length);\n\n if (matches === null) {\n return maxValue;\n }\n\n let number = matches[1];\n const unit = matches[2];\n\n switch (unit) {\n case \"ch\":\n number = parseFloat(number) * 8.8984375;\n break;\n\n case \"em\":\n case \"rem\":\n number = parseFloat(number) * 16;\n break;\n\n case \"ex\":\n number = parseFloat(number) * 8.296875;\n break;\n\n case \"px\":\n number = parseFloat(number);\n break;\n }\n\n return +number;\n}\n\nfunction _testQuery(doubleTestTrue, doubleTestFalse, singleTest) {\n return function (query) {\n if (doubleTestTrue.test(query)) {\n return true;\n } else if (doubleTestFalse.test(query)) {\n return false;\n }\n\n return singleTest.test(query);\n };\n}\n\nfunction _testIsPrint(a, b) {\n const isPrintA = isPrint.test(a);\n const isPrintOnlyA = isPrintOnly.test(a);\n const isPrintB = isPrint.test(b);\n const isPrintOnlyB = isPrintOnly.test(b);\n\n if (isPrintA && isPrintB) {\n if (!isPrintOnlyA && isPrintOnlyB) {\n return 1;\n }\n\n if (isPrintOnlyA && !isPrintOnlyB) {\n return -1;\n }\n\n return a.localeCompare(b);\n }\n\n if (isPrintA) {\n return 1;\n }\n\n if (isPrintB) {\n return -1;\n }\n\n return null;\n}\n\nexport default function sortCSSmq(a, b) {\n if (a === \"\") {\n return -1;\n }\n\n if (b === \"\") {\n return 1;\n }\n\n const testIsPrint = _testIsPrint(a, b);\n\n if (testIsPrint !== null) {\n return testIsPrint;\n }\n\n const minA = isMinWidth(a) || isMinHeight(a);\n const maxA = isMaxWidth(a) || isMaxHeight(a);\n const minB = isMinWidth(b) || isMinHeight(b);\n const maxB = isMaxWidth(b) || isMaxHeight(b);\n\n if (minA && maxB) {\n return -1;\n }\n\n if (maxA && minB) {\n return 1;\n }\n\n const lengthA = _getQueryLength(a);\n\n const lengthB = _getQueryLength(b);\n\n if (lengthA === maxValue && lengthB === maxValue) {\n return a.localeCompare(b);\n } else if (lengthA === maxValue) {\n return 1;\n } else if (lengthB === maxValue) {\n return -1;\n }\n\n if (lengthA > lengthB) {\n if (maxA) {\n return -1;\n }\n\n return 1;\n }\n\n if (lengthA < lengthB) {\n if (maxA) {\n return 1;\n }\n\n return -1;\n }\n\n return a.localeCompare(b);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtaW5NYXhXaWR0aCIsIm1pbldpZHRoIiwibWF4TWluV2lkdGgiLCJtYXhXaWR0aCIsImlzTWluV2lkdGgiLCJfdGVzdFF1ZXJ5IiwiaXNNYXhXaWR0aCIsIm1pbk1heEhlaWdodCIsIm1pbkhlaWdodCIsIm1heE1pbkhlaWdodCIsIm1heEhlaWdodCIsImlzTWluSGVpZ2h0IiwiaXNNYXhIZWlnaHQiLCJpc1ByaW50IiwiaXNQcmludE9ubHkiLCJtYXhWYWx1ZSIsIk51bWJlciIsIk1BWF9WQUxVRSIsIl9nZXRRdWVyeUxlbmd0aCIsImxlbmd0aCIsIm1hdGNoZXMiLCJleGVjIiwibnVtYmVyIiwidW5pdCIsInBhcnNlRmxvYXQiLCJkb3VibGVUZXN0VHJ1ZSIsImRvdWJsZVRlc3RGYWxzZSIsInNpbmdsZVRlc3QiLCJxdWVyeSIsInRlc3QiLCJfdGVzdElzUHJpbnQiLCJhIiwiYiIsImlzUHJpbnRBIiwiaXNQcmludE9ubHlBIiwiaXNQcmludEIiLCJpc1ByaW50T25seUIiLCJsb2NhbGVDb21wYXJlIiwic29ydENTU21xIiwidGVzdElzUHJpbnQiLCJtaW5BIiwibWF4QSIsIm1pbkIiLCJtYXhCIiwibGVuZ3RoQSIsImxlbmd0aEIiXSwic291cmNlcyI6WyJzcmMvc29ydC1jc3MtbWVkaWEtcXVlcmllcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2R1dGNoZW5rb09sZWcvc29ydC1jc3MtbWVkaWEtcXVlcmllc1xuXG5jb25zdCBtaW5NYXhXaWR0aCA9IC8oIT9cXChcXHMqbWluKC1kZXZpY2UtKT8td2lkdGgpLitcXChcXHMqbWF4KC1kZXZpY2UpPy13aWR0aC9pO1xuY29uc3QgbWluV2lkdGggPSAvXFwoXFxzKm1pbigtZGV2aWNlKT8td2lkdGgvaTtcbmNvbnN0IG1heE1pbldpZHRoID0gLyghP1xcKFxccyptYXgoLWRldmljZSk/LXdpZHRoKS4rXFwoXFxzKm1pbigtZGV2aWNlKT8td2lkdGgvaTtcbmNvbnN0IG1heFdpZHRoID0gL1xcKFxccyptYXgoLWRldmljZSk/LXdpZHRoL2k7XG5cbmNvbnN0IGlzTWluV2lkdGggPSBfdGVzdFF1ZXJ5KG1pbk1heFdpZHRoLCBtYXhNaW5XaWR0aCwgbWluV2lkdGgpO1xuY29uc3QgaXNNYXhXaWR0aCA9IF90ZXN0UXVlcnkobWF4TWluV2lkdGgsIG1pbk1heFdpZHRoLCBtYXhXaWR0aCk7XG5cbmNvbnN0IG1pbk1heEhlaWdodCA9XG4gIC8oIT9cXChcXHMqbWluKC1kZXZpY2UpPy1oZWlnaHQpLitcXChcXHMqbWF4KC1kZXZpY2UpPy1oZWlnaHQvaTtcbmNvbnN0IG1pbkhlaWdodCA9IC9cXChcXHMqbWluKC1kZXZpY2UpPy1oZWlnaHQvaTtcbmNvbnN0IG1heE1pbkhlaWdodCA9XG4gIC8oIT9cXChcXHMqbWF4KC1kZXZpY2UpPy1oZWlnaHQpLitcXChcXHMqbWluKC1kZXZpY2UpPy1oZWlnaHQvaTtcbmNvbnN0IG1heEhlaWdodCA9IC9cXChcXHMqbWF4KC1kZXZpY2UpPy1oZWlnaHQvaTtcblxuY29uc3QgaXNNaW5IZWlnaHQgPSBfdGVzdFF1ZXJ5KG1pbk1heEhlaWdodCwgbWF4TWluSGVpZ2h0LCBtaW5IZWlnaHQpO1xuY29uc3QgaXNNYXhIZWlnaHQgPSBfdGVzdFF1ZXJ5KG1heE1pbkhlaWdodCwgbWluTWF4SGVpZ2h0LCBtYXhIZWlnaHQpO1xuXG5jb25zdCBpc1ByaW50ID0gL3ByaW50L2k7XG5jb25zdCBpc1ByaW50T25seSA9IC9ecHJpbnQkL2k7XG5jb25zdCBtYXhWYWx1ZSA9IE51bWJlci5NQVhfVkFMVUU7XG5cbmZ1bmN0aW9uIF9nZXRRdWVyeUxlbmd0aChsZW5ndGg6IHN0cmluZykge1xuICBjb25zdCBtYXRjaGVzID0gLygtP1xcZCpcXC4/XFxkKykoY2h8ZW18ZXh8cHh8cmVtKS8uZXhlYyhsZW5ndGgpO1xuICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgfVxuICBsZXQgbnVtYmVyOiBudW1iZXIgfCBzdHJpbmcgPSBtYXRjaGVzWzFdO1xuICBjb25zdCB1bml0ID0gbWF0Y2hlc1syXTtcbiAgc3dpdGNoICh1bml0KSB7XG4gICAgY2FzZSBcImNoXCI6XG4gICAgICBudW1iZXIgPSBwYXJzZUZsb2F0KG51bWJlcikgKiA4Ljg5ODQzNzU7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiZW1cIjpcbiAgICBjYXNlIFwicmVtXCI6XG4gICAgICBudW1iZXIgPSBwYXJzZUZsb2F0KG51bWJlcikgKiAxNjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleFwiOlxuICAgICAgbnVtYmVyID0gcGFyc2VGbG9hdChudW1iZXIpICogOC4yOTY4NzU7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwicHhcIjpcbiAgICAgIG51bWJlciA9IHBhcnNlRmxvYXQobnVtYmVyKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiArbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBfdGVzdFF1ZXJ5KFxuICBkb3VibGVUZXN0VHJ1ZTogUmVnRXhwLFxuICBkb3VibGVUZXN0RmFsc2U6IFJlZ0V4cCxcbiAgc2luZ2xlVGVzdDogUmVnRXhwLFxuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocXVlcnk6IHN0cmluZykge1xuICAgIGlmIChkb3VibGVUZXN0VHJ1ZS50ZXN0KHF1ZXJ5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChkb3VibGVUZXN0RmFsc2UudGVzdChxdWVyeSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbmdsZVRlc3QudGVzdChxdWVyeSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIF90ZXN0SXNQcmludChhOiBzdHJpbmcsIGI6IHN0cmluZykge1xuICBjb25zdCBpc1ByaW50QSA9IGlzUHJpbnQudGVzdChhKTtcbiAgY29uc3QgaXNQcmludE9ubHlBID0gaXNQcmludE9ubHkudGVzdChhKTtcbiAgY29uc3QgaXNQcmludEIgPSBpc1ByaW50LnRlc3QoYik7XG4gIGNvbnN0IGlzUHJpbnRPbmx5QiA9IGlzUHJpbnRPbmx5LnRlc3QoYik7XG5cbiAgaWYgKGlzUHJpbnRBICYmIGlzUHJpbnRCKSB7XG4gICAgaWYgKCFpc1ByaW50T25seUEgJiYgaXNQcmludE9ubHlCKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKGlzUHJpbnRPbmx5QSAmJiAhaXNQcmludE9ubHlCKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XG4gIH1cbiAgaWYgKGlzUHJpbnRBKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgaWYgKGlzUHJpbnRCKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzb3J0Q1NTbXEoYTogc3RyaW5nLCBiOiBzdHJpbmcpIHtcbiAgaWYgKGEgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKGIgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB0ZXN0SXNQcmludCA9IF90ZXN0SXNQcmludChhLCBiKTtcbiAgaWYgKHRlc3RJc1ByaW50ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRlc3RJc1ByaW50O1xuICB9XG5cbiAgY29uc3QgbWluQSA9IGlzTWluV2lkdGgoYSkgfHwgaXNNaW5IZWlnaHQoYSk7XG4gIGNvbnN0IG1heEEgPSBpc01heFdpZHRoKGEpIHx8IGlzTWF4SGVpZ2h0KGEpO1xuICBjb25zdCBtaW5CID0gaXNNaW5XaWR0aChiKSB8fCBpc01pbkhlaWdodChiKTtcbiAgY29uc3QgbWF4QiA9IGlzTWF4V2lkdGgoYikgfHwgaXNNYXhIZWlnaHQoYik7XG5cbiAgaWYgKG1pbkEgJiYgbWF4Qikge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAobWF4QSAmJiBtaW5CKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBjb25zdCBsZW5ndGhBID0gX2dldFF1ZXJ5TGVuZ3RoKGEpO1xuICBjb25zdCBsZW5ndGhCID0gX2dldFF1ZXJ5TGVuZ3RoKGIpO1xuXG4gIGlmIChsZW5ndGhBID09PSBtYXhWYWx1ZSAmJiBsZW5ndGhCID09PSBtYXhWYWx1ZSkge1xuICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XG4gIH0gZWxzZSBpZiAobGVuZ3RoQSA9PT0gbWF4VmFsdWUpIHtcbiAgICByZXR1cm4gMTtcbiAgfSBlbHNlIGlmIChsZW5ndGhCID09PSBtYXhWYWx1ZSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmIChsZW5ndGhBID4gbGVuZ3RoQikge1xuICAgIGlmIChtYXhBKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIHJldHVybiAxO1xuICB9XG5cbiAgaWYgKGxlbmd0aEEgPCBsZW5ndGhCKSB7XG4gICAgaWYgKG1heEEpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUVBLE1BQU1BLFdBQVcsR0FBRywwREFBcEI7QUFDQSxNQUFNQyxRQUFRLEdBQUcsMkJBQWpCO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLHlEQUFwQjtBQUNBLE1BQU1DLFFBQVEsR0FBRywyQkFBakI7O0FBRUEsTUFBTUMsVUFBVSxHQUFHQyxVQUFVLENBQUNMLFdBQUQsRUFBY0UsV0FBZCxFQUEyQkQsUUFBM0IsQ0FBN0I7O0FBQ0EsTUFBTUssVUFBVSxHQUFHRCxVQUFVLENBQUNILFdBQUQsRUFBY0YsV0FBZCxFQUEyQkcsUUFBM0IsQ0FBN0I7O0FBRUEsTUFBTUksWUFBWSxHQUNoQiwyREFERjtBQUVBLE1BQU1DLFNBQVMsR0FBRyw0QkFBbEI7QUFDQSxNQUFNQyxZQUFZLEdBQ2hCLDJEQURGO0FBRUEsTUFBTUMsU0FBUyxHQUFHLDRCQUFsQjs7QUFFQSxNQUFNQyxXQUFX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","import SequentialIDGenerator from \"./sequential-id-generator\";\nimport sortMq from \"./sort-css-media-queries\";\nexport class MultiCache {\n constructor(idGenerator, onNewCache, onNewValue) {\n this.idGenerator = idGenerator;\n this.onNewCache = onNewCache;\n this.onNewValue = onNewValue;\n this.sortedCacheKeys = [];\n this.caches = {};\n }\n\n getCache(key) {\n if (!this.caches[key]) {\n const cache = new Cache(this.idGenerator, this.onNewValue);\n cache.key = key;\n this.sortedCacheKeys.push(key);\n this.sortedCacheKeys.sort(sortMq);\n const keyIndex = this.sortedCacheKeys.indexOf(key);\n const insertBeforeMedia = keyIndex < this.sortedCacheKeys.length - 1 ? this.sortedCacheKeys[keyIndex + 1] : void 0;\n this.caches[key] = cache;\n this.onNewCache(key, cache, insertBeforeMedia);\n }\n\n return this.caches[key];\n }\n\n getSortedCacheKeys() {\n return this.sortedCacheKeys;\n }\n\n}\nexport class Cache {\n constructor(idGenerator, onNewValue) {\n this.cache = {};\n this.idGenerator = idGenerator;\n this.onNewValue = onNewValue;\n }\n\n addValue(key, value) {\n const cached = this.cache[key];\n\n if (cached) {\n return cached;\n }\n\n const id = this.idGenerator.next();\n this.cache[key] = id;\n this.onNewValue(this, id, value);\n return id;\n }\n\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZXF1ZW50aWFsSURHZW5lcmF0b3IiLCJzb3J0TXEiLCJNdWx0aUNhY2hlIiwiY29uc3RydWN0b3IiLCJpZEdlbmVyYXRvciIsIm9uTmV3Q2FjaGUiLCJvbk5ld1ZhbHVlIiwic29ydGVkQ2FjaGVLZXlzIiwiY2FjaGVzIiwiZ2V0Q2FjaGUiLCJrZXkiLCJjYWNoZSIsIkNhY2hlIiwicHVzaCIsInNvcnQiLCJrZXlJbmRleCIsImluZGV4T2YiLCJpbnNlcnRCZWZvcmVNZWRpYSIsImxlbmd0aCIsImdldFNvcnRlZENhY2hlS2V5cyIsImFkZFZhbHVlIiwidmFsdWUiLCJjYWNoZWQiLCJpZCIsIm5leHQiXSwic291cmNlcyI6WyJzcmMvY2FjaGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNlcXVlbnRpYWxJREdlbmVyYXRvciBmcm9tIFwiLi9zZXF1ZW50aWFsLWlkLWdlbmVyYXRvclwiO1xuaW1wb3J0IHNvcnRNcSBmcm9tIFwiLi9zb3J0LWNzcy1tZWRpYS1xdWVyaWVzXCI7XG5cbnR5cGUgT25OZXdDYWNoZUZuPFQ+ID0gKFxuICBrZXk6IHN0cmluZyxcbiAgY2FjaGU6IENhY2hlPFQ+LFxuICB2YWx1ZT86IHN0cmluZyB8IG51bGwsXG4pID0+IGFueTtcbnR5cGUgT25OZXdWYWx1ZUZuPFQ+ID0gKGNhY2hlOiBDYWNoZTxUPiwgaWQ6IHN0cmluZywgdmFsdWU6IFQpID0+IGFueTtcblxuZXhwb3J0IGNsYXNzIE11bHRpQ2FjaGU8VD4ge1xuICBjYWNoZXM6IHtcbiAgICBbeDogc3RyaW5nXTogQ2FjaGU8VD47XG4gIH07XG4gIGlkR2VuZXJhdG9yOiBTZXF1ZW50aWFsSURHZW5lcmF0b3I7XG4gIG9uTmV3Q2FjaGU6IE9uTmV3Q2FjaGVGbjxUPjtcbiAgb25OZXdWYWx1ZTogT25OZXdWYWx1ZUZuPFQ+O1xuICBzb3J0ZWRDYWNoZUtleXM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkR2VuZXJhdG9yOiBTZXF1ZW50aWFsSURHZW5lcmF0b3IsXG4gICAgb25OZXdDYWNoZTogT25OZXdDYWNoZUZuPFQ+LFxuICAgIG9uTmV3VmFsdWU6IE9uTmV3VmFsdWVGbjxUPixcbiAgKSB7XG4gICAgdGhpcy5pZEdlbmVyYXRvciA9IGlkR2VuZXJhdG9yO1xuICAgIHRoaXMub25OZXdDYWNoZSA9IG9uTmV3Q2FjaGU7XG4gICAgdGhpcy5vbk5ld1ZhbHVlID0gb25OZXdWYWx1ZTtcbiAgICB0aGlzLnNvcnRlZENhY2hlS2V5cyA9IFtdO1xuICAgIHRoaXMuY2FjaGVzID0ge307XG4gIH1cblxuICBnZXRDYWNoZShrZXk6IHN0cmluZyk6IENhY2hlPFQ+IHtcbiAgICBpZiAoIXRoaXMuY2FjaGVzW2tleV0pIHtcbiAgICAgIGNvbnN0IGNhY2hlID0gbmV3IENhY2hlKHRoaXMuaWRHZW5lcmF0b3IsIHRoaXMub25OZXdWYWx1ZSk7XG4gICAgICBjYWNoZS5rZXkgPSBrZXk7XG4gICAgICB0aGlzLnNvcnRlZENhY2hlS2V5cy5wdXNoKGtleSk7XG4gICAgICB0aGlzLnNvcnRlZENhY2hlS2V5cy5zb3J0KHNvcnRNcSk7XG4gICAgICBjb25zdCBrZXlJbmRleCA9IHRoaXMuc29ydGVkQ2FjaGVLZXlzLmluZGV4T2Yoa2V5KTtcbiAgICAgIGNvbnN0IGluc2VydEJlZm9yZU1lZGlhID1cbiAgICAgICAga2V5SW5kZXggPCB0aGlzLnNvcnRlZENhY2hlS2V5cy5sZW5ndGggLSAxXG4gICAgICAgICAgPyB0aGlzLnNvcnRlZENhY2hlS2V5c1trZXlJbmRleCArIDFdXG4gICAgICAgICAgOiB2b2lkIDA7XG4gICAgICB0aGlzLmNhY2hlc1trZXldID0gY2FjaGU7XG4gICAgICB0aGlzLm9uTmV3Q2FjaGUoa2V5LCBjYWNoZSwgaW5zZXJ0QmVmb3JlTWVkaWEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYWNoZXNba2V5XTtcbiAgfVxuXG4gIGdldFNvcnRlZENhY2hlS2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWRDYWNoZUtleXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhY2hlPFQ+IHtcbiAgY2FjaGU6IHtcbiAgICBbeDogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuICBpZEdlbmVyYXRvcjogU2VxdWVudGlhbElER2VuZXJhdG9yO1xuICBrZXk6IHN0cmluZztcbiAgb25OZXdWYWx1ZTogKGNhY2hlOiBDYWNoZTxUPiwgaWQ6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkR2VuZXJhdG9yOiBTZXF1ZW50aWFsSURHZW5lcmF0b3IsXG4gICAgb25OZXdWYWx1ZTogKGNhY2hlOiBDYWNoZTxUPiwgaWQ6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gYW55LFxuICApIHtcbiAgICB0aGlzLmNhY2hlID0ge307XG4gICAgdGhpcy5pZEdlbmVyYXRvciA9IGlkR2VuZXJhdG9yO1xuICAgIHRoaXMub25OZXdWYWx1ZSA9IG9uTmV3VmFsdWU7XG4gIH1cblxuICBhZGRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IFQpIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlW2tleV07XG4gICAgaWYgKGNhY2hlZCkge1xuICAgICAgcmV0dXJuIGNhY2hlZDtcbiAgICB9XG4gICAgY29uc3QgaWQgPSB0aGlzLmlkR2VuZXJhdG9yLm5leHQoKTtcbiAgICB0aGlzLmNhY2hlW2tleV0gPSBpZDtcbiAgICB0aGlzLm9uTmV3VmFsdWUodGhpcywgaWQsIHZhbHVlKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EscUJBQVAsTUFBa0MsMkJBQWxDO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQiwwQkFBbkI7QUFTQSxPQUFPLE1BQU1DLFVBQU4sQ0FBb0I7RUFTekJDLFdBQVcsQ0FDVEMsV0FEUyxFQUVUQyxVQUZTLEVBR1RDLFVBSFMsRUFJVDtJQUNBLEtBQUtGLFdBQUwsR0FBbUJBLFdBQW5CO0lBQ0EsS0FBS0MsVUFBTCxHQUFrQkEsVUFBbEI7SUFDQSxLQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjtJQUNBLEtBQUtDLGVBQUwsR0FBdUIsRUFBdkI7SUFDQSxLQUFLQyxNQUFMLEdBQWMsRUFBZDtFQUNEOztFQUVEQyxRQUFRLENBQUNDLEdBQUQsRUFBd0I7SUFDOUIsSUFBSSxDQUFDLEtBQUtGLE1BQUwsQ0FBWUUsR0FBWixDQUFMLEVBQXVCO01BQ3JCLE1BQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVUsS0FBS1IsV0FBZixFQUE0QixLQUFLRSxVQUFqQyxDQUFkO01BQ0FLLEtBQUssQ0FBQ0QsR0FBTixHQUFZQSxHQUFaO01BQ0EsS0FBS0gsZUFBTCxDQUFxQk0sSUFBckIsQ0FBMEJILEdBQTFCO01BQ0EsS0FBS0gsZUFBTCxDQUFxQk8sSUFBckIsQ0FBMEJiLE1BQTFCO01BQ0EsTUFBTWMsUUFBUSxHQUFHLEtBQUtSLGVBQUwsQ0FBcUJTLE9BQXJCLENBQTZCTixHQUE3QixDQUFqQjtNQUNBLE1BQU1PLGlCQUFpQixHQUNyQkYsUUFBUSxHQUFHLEtBQUtSLGVBQUwsQ0FBcUJXLE1BQXJCLEdBQThCLENBQXpDLEdBQ0ksS0FBS1gsZUFBTCxDQUFxQlEsUUFBUSxHQUFHLENBQWhDLENBREosR0FFSSxLQUFLLENBSFg7TUFJQSxLQUFLUCxNQUFMLENBQVlFLEdBQVosSUFBbUJDLEtBQW5CO01BQ0EsS0FBS04sVUFBTCxDQUFnQkssR0FBaEIsRUFBcUJDLEtBQXJCLEVBQTRCTSxpQkFBNUI7SUFDRDs7SUFDRCxPQUFPLEtBQUtULE1BQUwsQ0FBWUUsR0FBWixDQUFQO0VBQ0Q7O0VBRURTLGtCQUFrQixHQUFHO0lBQ25CLE9BQU8sS0FBS1osZUFBWjtFQUNEOztBQXhDd0I7QUEyQzNCLE9BQU8sTUFBTUssS0FBTixDQUFlO0VBUXBCVCxXQUFXLENBQ1RDLFdBRFMsRUFFVEUsVUFGUyxFQUdUO0lBQ0EsS0FBS0ssS0FBTCxHQUFhLEVBQWI7SUFDQSxLQUFLUCxXQUFMLEdBQW1CQSxXQUFuQjtJQUNBLEtBQUtFLFVBQUwsR0FBa0JBLFVBQWxCO0VBQ0Q7O0VBRURjLFFBQVEsQ0FBQ1YsR0FBRCxFQUFjVyxLQUFkLEVBQXdCO0lBQzlCLE1BQU1DLE1BQU0sR0FBRyxLQUFLWCxLQUFMLENBQVdELEdBQVgsQ0FBZjs7SUFDQSxJQUFJWSxNQUFKLEVBQVk7TUFDVixPQUFPQSxNQUFQO0lBQ0Q7O0lBQ0QsTUFBTUMsRUFBRSxHQUFHLEtBQUtuQixXQUFMLENBQWlCb0IsSUFBakIsRUFBWDtJQUNBLEtBQUtiLEtBQUwsQ0FBV0QsR0FBWCxJQUFrQmEsRUFBbEI7SUFDQSxLQUFLakIsVUFBTCxDQUFnQixJQUFoQixFQUFzQmlCLEVBQXRCLEVBQTBCRixLQUExQjtJQUNBLE9BQU9FLEVBQVA7RUFDRDs7QUExQm1CIn0=","const uppercasePattern = /[A-Z]/g;\nconst msPattern = /^ms-/;\nconst cache = {};\nexport default function hyphenateStyleName(prop) {\n return prop in cache ? cache[prop] : cache[prop] = prop.replace(uppercasePattern, \"-$&\").toLowerCase().replace(msPattern, \"-ms-\");\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1cHBlcmNhc2VQYXR0ZXJuIiwibXNQYXR0ZXJuIiwiY2FjaGUiLCJoeXBoZW5hdGVTdHlsZU5hbWUiLCJwcm9wIiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIl0sInNvdXJjZXMiOlsic3JjL2h5cGhlbmF0ZS1zdHlsZS1uYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHVwcGVyY2FzZVBhdHRlcm4gPSAvW0EtWl0vZztcbmNvbnN0IG1zUGF0dGVybiA9IC9ebXMtLztcbmNvbnN0IGNhY2hlID0ge307XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGh5cGhlbmF0ZVN0eWxlTmFtZShwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcHJvcCBpbiBjYWNoZVxuICAgID8gY2FjaGVbcHJvcF1cbiAgICA6IChjYWNoZVtwcm9wXSA9IHByb3BcbiAgICAgICAgLnJlcGxhY2UodXBwZXJjYXNlUGF0dGVybiwgXCItJCZcIilcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UobXNQYXR0ZXJuLCBcIi1tcy1cIikpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxnQkFBZ0IsR0FBRyxRQUF6QjtBQUNBLE1BQU1DLFNBQVMsR0FBRyxNQUFsQjtBQUNBLE1BQU1DLEtBQUssR0FBRyxFQUFkO0FBRUEsZUFBZSxTQUFTQyxrQkFBVCxDQUE0QkMsSUFBNUIsRUFBa0Q7RUFDL0QsT0FBT0EsSUFBSSxJQUFJRixLQUFSLEdBQ0hBLEtBQUssQ0FBQ0UsSUFBRCxDQURGLEdBRUZGLEtBQUssQ0FBQ0UsSUFBRCxDQUFMLEdBQWNBLElBQUksQ0FDaEJDLE9BRFksQ0FDSkwsZ0JBREksRUFDYyxLQURkLEVBRVpNLFdBRlksR0FHWkQsT0FIWSxDQUdKSixTQUhJLEVBR08sTUFIUCxDQUZuQjtBQU1EIn0=","export default function capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}","import capitalizeString from './capitalizeString';\n\n\nexport default function prefixProperty(prefixProperties, property, style) {\n if (prefixProperties.hasOwnProperty(property)) {\n var newStyle = {};\n var requiredPrefixes = prefixProperties[property];\n var capitalizedProperty = capitalizeString(property);\n var keys = Object.keys(style);\n for (var i = 0; i < keys.length; i++) {\n var styleProperty = keys[i];\n if (styleProperty === property) {\n for (var j = 0; j < requiredPrefixes.length; j++) {\n newStyle[requiredPrefixes[j] + capitalizedProperty] = style[property];\n }\n }\n newStyle[styleProperty] = style[styleProperty];\n }\n return newStyle;\n }\n return style;\n}","export default function prefixValue(plugins, property, value, style, metaData) {\n for (var i = 0, len = plugins.length; i < len; ++i) {\n var processedValue = plugins[i](property, value, style, metaData);\n\n // we can stop processing if a value is returned\n // as all plugin criteria are unique\n if (processedValue) {\n return processedValue;\n }\n }\n}","function addIfNew(list, value) {\n if (list.indexOf(value) === -1) {\n list.push(value);\n }\n}\n\nexport default function addNewValuesOnly(list, values) {\n if (Array.isArray(values)) {\n for (var i = 0, len = values.length; i < len; ++i) {\n addIfNew(list, values[i]);\n }\n } else {\n addIfNew(list, values);\n }\n}","export default function isObject(value) {\n return value instanceof Object && !Array.isArray(value);\n}","\nvar w = [\"Webkit\"];\nvar m = [\"Moz\"];\nvar ms = [\"ms\"];\nvar wm = [\"Webkit\", \"Moz\"];\nvar wms = [\"Webkit\", \"ms\"];\nvar wmms = [\"Webkit\", \"Moz\", \"ms\"];\n\nexport default {\n plugins: [],\n prefixMap: { \"appearance\": wm, \"textEmphasisPosition\": w, \"textEmphasis\": w, \"textEmphasisStyle\": w, \"textEmphasisColor\": w, \"boxDecorationBreak\": w, \"maskImage\": w, \"maskMode\": w, \"maskRepeat\": w, \"maskPosition\": w, \"maskClip\": w, \"maskOrigin\": w, \"maskSize\": w, \"maskComposite\": w, \"mask\": w, \"maskBorderSource\": w, \"maskBorderMode\": w, \"maskBorderSlice\": w, \"maskBorderWidth\": w, \"maskBorderOutset\": w, \"maskBorderRepeat\": w, \"maskBorder\": w, \"maskType\": w, \"textDecorationStyle\": w, \"textDecorationSkip\": w, \"textDecorationLine\": w, \"textDecorationColor\": w, \"userSelect\": wmms, \"backdropFilter\": w, \"fontKerning\": w, \"scrollSnapType\": wms, \"scrollSnapPointsX\": wms, \"scrollSnapPointsY\": wms, \"scrollSnapDestination\": wms, \"scrollSnapCoordinate\": wms, \"clipPath\": w, \"shapeImageThreshold\": w, \"shapeImageMargin\": w, \"shapeImageOutside\": w, \"filter\": w, \"hyphens\": wms, \"flowInto\": wms, \"flowFrom\": wms, \"breakBefore\": wms, \"breakAfter\": wms, \"breakInside\": wms, \"regionFragment\": wms, \"writingMode\": wms, \"textOrientation\": w, \"tabSize\": m, \"fontFeatureSettings\": w, \"columnCount\": w, \"columnFill\": w, \"columnGap\": w, \"columnRule\": w, \"columnRuleColor\": w, \"columnRuleStyle\": w, \"columnRuleWidth\": w, \"columns\": w, \"columnSpan\": w, \"columnWidth\": w, \"wrapFlow\": ms, \"wrapThrough\": ms, \"wrapMargin\": ms, \"textSizeAdjust\": wms }\n};","var prefixes = ['-webkit-', '-moz-', ''];\n\nvar values = {\n 'zoom-in': true,\n 'zoom-out': true,\n grab: true,\n grabbing: true\n};\n\nexport default function cursor(property, value) {\n if (property === 'cursor' && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\n// http://caniuse.com/#search=cross-fade\nvar prefixes = ['-webkit-', ''];\n\nexport default function crossFade(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('cross-fade(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/cross-fade\\(/g, prefix + 'cross-fade(');\n });\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\n// http://caniuse.com/#feat=css-filter-function\nvar prefixes = ['-webkit-', ''];\n\nexport default function filter(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('filter(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/filter\\(/g, prefix + 'filter(');\n });\n }\n}","var values = {\n flex: ['-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex'],\n 'inline-flex': ['-webkit-inline-box', '-moz-inline-box', '-ms-inline-flexbox', '-webkit-inline-flex', 'inline-flex']\n};\n\nexport default function flex(property, value) {\n if (property === 'display' && values.hasOwnProperty(value)) {\n return values[value];\n }\n}","var alternativeValues = {\n 'space-around': 'justify',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end',\n 'wrap-reverse': 'multiple',\n wrap: 'multiple'\n};\n\nvar alternativeProps = {\n alignItems: 'WebkitBoxAlign',\n justifyContent: 'WebkitBoxPack',\n flexWrap: 'WebkitBoxLines',\n flexGrow: 'WebkitBoxFlex'\n};\n\nexport default function flexboxOld(property, value, style) {\n if (property === 'flexDirection' && typeof value === 'string') {\n if (value.indexOf('column') > -1) {\n style.WebkitBoxOrient = 'vertical';\n } else {\n style.WebkitBoxOrient = 'horizontal';\n }\n if (value.indexOf('reverse') > -1) {\n style.WebkitBoxDirection = 'reverse';\n } else {\n style.WebkitBoxDirection = 'normal';\n }\n }\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\nvar prefixes = ['-webkit-', '-moz-', ''];\nvar values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/gi;\n\nexport default function gradient(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && values.test(value)) {\n return prefixes.map(function (prefix) {\n return value.replace(values, function (grad) {\n return prefix + grad;\n });\n });\n }\n}","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction isSimplePositionValue(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nfunction isComplexSpanValue(value) {\n return typeof value === 'string' && value.includes('/');\n}\n\nvar alignmentValues = ['center', 'end', 'start', 'stretch'];\n\nvar displayValues = {\n 'inline-grid': ['-ms-inline-grid', 'inline-grid'],\n grid: ['-ms-grid', 'grid']\n};\n\nvar propertyConverters = {\n alignSelf: function alignSelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridRowAlign = value;\n }\n },\n\n gridColumn: function gridColumn(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n } else if (isComplexSpanValue(value)) {\n var _value$split = value.split('/'),\n _value$split2 = _slicedToArray(_value$split, 2),\n start = _value$split2[0],\n end = _value$split2[1];\n\n propertyConverters.gridColumnStart(+start, style);\n\n var _end$split = end.split(/ ?span /),\n _end$split2 = _slicedToArray(_end$split, 2),\n maybeSpan = _end$split2[0],\n maybeNumber = _end$split2[1];\n\n if (maybeSpan === '') {\n propertyConverters.gridColumnEnd(+start + +maybeNumber, style);\n } else {\n propertyConverters.gridColumnEnd(+end, style);\n }\n } else {\n propertyConverters.gridColumnStart(value, style);\n }\n },\n\n gridColumnEnd: function gridColumnEnd(value, style) {\n var msGridColumn = style.msGridColumn;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridColumn)) {\n style.msGridColumnSpan = value - msGridColumn;\n }\n },\n\n gridColumnStart: function gridColumnStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n }\n },\n\n gridRow: function gridRow(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n } else if (isComplexSpanValue(value)) {\n var _value$split3 = value.split('/'),\n _value$split4 = _slicedToArray(_value$split3, 2),\n start = _value$split4[0],\n end = _value$split4[1];\n\n propertyConverters.gridRowStart(+start, style);\n\n var _end$split3 = end.split(/ ?span /),\n _end$split4 = _slicedToArray(_end$split3, 2),\n maybeSpan = _end$split4[0],\n maybeNumber = _end$split4[1];\n\n if (maybeSpan === '') {\n propertyConverters.gridRowEnd(+start + +maybeNumber, style);\n } else {\n propertyConverters.gridRowEnd(+end, style);\n }\n } else {\n propertyConverters.gridRowStart(value, style);\n }\n },\n\n gridRowEnd: function gridRowEnd(value, style) {\n var msGridRow = style.msGridRow;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridRow)) {\n style.msGridRowSpan = value - msGridRow;\n }\n },\n\n gridRowStart: function gridRowStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n }\n },\n\n gridTemplateColumns: function gridTemplateColumns(value, style) {\n style.msGridColumns = value;\n },\n\n gridTemplateRows: function gridTemplateRows(value, style) {\n style.msGridRows = value;\n },\n\n justifySelf: function justifySelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridColumnAlign = value;\n }\n }\n};\n\nexport default function grid(property, value, style) {\n if (property === 'display' && value in displayValues) {\n return displayValues[value];\n }\n\n if (property in propertyConverters) {\n var propertyConverter = propertyConverters[property];\n propertyConverter(value, style);\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\n// http://caniuse.com/#feat=css-image-set\nvar prefixes = ['-webkit-', ''];\n\nexport default function imageSet(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('image-set(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/image-set\\(/g, prefix + 'image-set(');\n });\n }\n}","var alternativeProps = {\n marginBlockStart: ['WebkitMarginBefore'],\n marginBlockEnd: ['WebkitMarginAfter'],\n marginInlineStart: ['WebkitMarginStart', 'MozMarginStart'],\n marginInlineEnd: ['WebkitMarginEnd', 'MozMarginEnd'],\n paddingBlockStart: ['WebkitPaddingBefore'],\n paddingBlockEnd: ['WebkitPaddingAfter'],\n paddingInlineStart: ['WebkitPaddingStart', 'MozPaddingStart'],\n paddingInlineEnd: ['WebkitPaddingEnd', 'MozPaddingEnd'],\n borderBlockStart: ['WebkitBorderBefore'],\n borderBlockStartColor: ['WebkitBorderBeforeColor'],\n borderBlockStartStyle: ['WebkitBorderBeforeStyle'],\n borderBlockStartWidth: ['WebkitBorderBeforeWidth'],\n borderBlockEnd: ['WebkitBorderAfter'],\n borderBlockEndColor: ['WebkitBorderAfterColor'],\n borderBlockEndStyle: ['WebkitBorderAfterStyle'],\n borderBlockEndWidth: ['WebkitBorderAfterWidth'],\n borderInlineStart: ['WebkitBorderStart', 'MozBorderStart'],\n borderInlineStartColor: ['WebkitBorderStartColor', 'MozBorderStartColor'],\n borderInlineStartStyle: ['WebkitBorderStartStyle', 'MozBorderStartStyle'],\n borderInlineStartWidth: ['WebkitBorderStartWidth', 'MozBorderStartWidth'],\n borderInlineEnd: ['WebkitBorderEnd', 'MozBorderEnd'],\n borderInlineEndColor: ['WebkitBorderEndColor', 'MozBorderEndColor'],\n borderInlineEndStyle: ['WebkitBorderEndStyle', 'MozBorderEndStyle'],\n borderInlineEndWidth: ['WebkitBorderEndWidth', 'MozBorderEndWidth']\n};\n\nexport default function logical(property, value, style) {\n if (Object.prototype.hasOwnProperty.call(alternativeProps, property)) {\n var alternativePropList = alternativeProps[property];\n for (var i = 0, len = alternativePropList.length; i < len; ++i) {\n style[alternativePropList[i]] = value;\n }\n }\n}","var prefixes = ['-webkit-', '-moz-', ''];\n\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\nvar values = {\n 'min-content': true,\n 'max-content': true,\n 'fill-available': true,\n 'fit-content': true,\n 'contain-floats': true\n};\n\nexport default function sizing(property, value) {\n if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","import hyphenateProperty from 'css-in-js-utils/lib/hyphenateProperty';\nimport isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\nimport capitalizeString from '../utils/capitalizeString';\n\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true,\n MozTransition: true,\n MozTransitionProperty: true\n};\n\nvar prefixMapping = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n ms: '-ms-'\n};\n\nfunction prefixValue(value, propertyPrefixMap) {\n if (isPrefixedValue(value)) {\n return value;\n }\n\n // only split multi values, not cubic beziers\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g);\n\n for (var i = 0, len = multipleValues.length; i < len; ++i) {\n var singleValue = multipleValues[i];\n var values = [singleValue];\n for (var property in propertyPrefixMap) {\n var dashCaseProperty = hyphenateProperty(property);\n\n if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {\n var prefixes = propertyPrefixMap[property];\n for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {\n // join all prefixes and create a new value\n values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));\n }\n }\n }\n\n multipleValues[i] = values.join(',');\n }\n\n return multipleValues.join(',');\n}\n\nexport default function transition(property, value, style, propertyPrefixMap) {\n // also check for already prefixed transitions\n if (typeof value === 'string' && properties.hasOwnProperty(property)) {\n var outputValue = prefixValue(value, propertyPrefixMap);\n // if the property is already prefixed\n var webkitOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-moz-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Webkit') > -1) {\n return webkitOutput;\n }\n\n var mozOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-webkit-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Moz') > -1) {\n return mozOutput;\n }\n\n style['Webkit' + capitalizeString(property)] = webkitOutput;\n style['Moz' + capitalizeString(property)] = mozOutput;\n return outputValue;\n }\n}","import createPrefixer from './createPrefixer';\n\nimport data from './data';\n\nimport backgroundClip from './plugins/backgroundClip';\nimport cursor from './plugins/cursor';\nimport crossFade from './plugins/crossFade';\nimport filter from './plugins/filter';\nimport flex from './plugins/flex';\nimport flexboxOld from './plugins/flexboxOld';\nimport gradient from './plugins/gradient';\nimport grid from './plugins/grid';\nimport imageSet from './plugins/imageSet';\nimport logical from './plugins/logical';\nimport position from './plugins/position';\nimport sizing from './plugins/sizing';\nimport transition from './plugins/transition';\n\nvar plugins = [backgroundClip, crossFade, cursor, filter, flexboxOld, gradient, grid, imageSet, logical, position, sizing, transition, flex];\n\nvar prefix = createPrefixer({\n prefixMap: data.prefixMap,\n plugins: plugins\n});\n\nexport { createPrefixer, prefix };","\n// https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip#Browser_compatibility\nexport default function backgroundClip(property, value) {\n if (typeof value === 'string' && value === 'text') {\n return ['-webkit-text', 'text'];\n }\n}","export default function position(property, value) {\n if (property === 'position' && value === 'sticky') {\n return ['-webkit-sticky', 'sticky'];\n }\n}","import prefixProperty from './utils/prefixProperty';\nimport prefixValue from './utils/prefixValue';\n\nimport addNewValuesOnly from './utils/addNewValuesOnly';\nimport isObject from './utils/isObject';\n\nexport default function createPrefixer(_ref) {\n var prefixMap = _ref.prefixMap,\n plugins = _ref.plugins;\n\n return function prefix(style) {\n for (var property in style) {\n var value = style[property];\n\n // handle nested objects\n if (isObject(value)) {\n style[property] = prefix(value);\n // handle array values\n } else if (Array.isArray(value)) {\n var combinedValue = [];\n\n for (var i = 0, len = value.length; i < len; ++i) {\n var processedValue = prefixValue(plugins, property, value[i], style, prefixMap);\n addNewValuesOnly(combinedValue, processedValue || value[i]);\n }\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (combinedValue.length > 0) {\n style[property] = combinedValue;\n }\n } else {\n var _processedValue = prefixValue(plugins, property, value, style, prefixMap);\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (_processedValue) {\n style[property] = _processedValue;\n }\n\n style = prefixProperty(prefixMap, property, style);\n }\n }\n\n return style;\n };\n}","import hyphenate from \"./hyphenate-style-name\";\nimport { validateNoMixedHand } from \"./validate-no-mixed-hand\";\nimport { prefix } from \"inline-style-prefixer\";\nimport { MultiCache } from \"./cache\";\nexport default function injectStylePrefixed(styleCache, styles, media, pseudo) {\n const cache = styleCache.getCache(media);\n let classString = \"\";\n\n for (const originalKey in styles) {\n const originalVal = styles[originalKey];\n\n if (originalVal === void 0 || originalVal === null) {\n continue;\n }\n\n if (typeof originalVal !== \"object\") {\n // Non-null and non-undefined primitive value\n if (process.env.NODE_ENV !== \"production\") {\n validateValueType(originalVal, originalKey);\n }\n\n const propValPair = `${hyphenate(originalKey)}:${originalVal}`;\n const key = `${pseudo}${propValPair}`;\n const cachedId = cache.cache[key];\n\n if (cachedId !== void 0) {\n // cache hit\n classString += \" \" + cachedId;\n continue;\n } else {\n // cache miss\n let block = \"\";\n const prefixed = prefix({\n [originalKey]: originalVal\n });\n\n for (const prefixedKey in prefixed) {\n const prefixedVal = prefixed[prefixedKey];\n const prefixedValType = typeof prefixedVal;\n\n if (prefixedValType === \"string\" || prefixedValType === \"number\") {\n const prefixedPair = `${hyphenate(prefixedKey)}:${prefixedVal}`;\n\n if (prefixedPair !== propValPair) {\n block += `${prefixedPair};`;\n }\n } else if (Array.isArray(prefixedVal)) {\n const hyphenated = hyphenate(prefixedKey);\n\n for (let i = 0; i < prefixedVal.length; i++) {\n const prefixedPair = `${hyphenated}:${prefixedVal[i]}`;\n\n if (prefixedPair !== propValPair) {\n block += `${prefixedPair};`;\n }\n }\n }\n }\n\n block += propValPair; // ensure original prop/val is last (for hydration)\n\n const id = cache.addValue(key, {\n pseudo,\n block\n });\n classString += \" \" + id;\n }\n } else {\n // Non-null object value\n if (originalKey[0] === \":\") {\n classString += \" \" + injectStylePrefixed(styleCache, originalVal, media, pseudo + originalKey);\n } else if (originalKey.substring(0, 6) === \"@media\") {\n classString += \" \" + injectStylePrefixed(styleCache, originalVal, originalKey.substr(7), pseudo);\n }\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n const conflicts = validateNoMixedHand(styles);\n\n if (conflicts.length) {\n conflicts.forEach(({\n shorthand,\n longhand\n }) => {\n const short = JSON.stringify({\n [shorthand.property]: shorthand.value\n });\n const long = JSON.stringify({\n [longhand.property]: longhand.value\n }); // eslint-disable-next-line no-console\n\n console.warn(`Styles \\`${short}\\` and \\`${long}\\` in object yielding class \"${classString.slice(1)}\" may result in unexpected behavior. Mixing shorthand and longhand properties within the same style object is unsupported with atomic rendering.`);\n });\n }\n } // remove leading space\n\n\n return classString.slice(1);\n}\n\nfunction validateValueType(value, key) {\n if (value === null || Array.isArray(value) || typeof value !== \"number\" && typeof value !== \"string\") {\n throw new Error(`Unsupported style value: ${JSON.stringify(value)} used in property ${JSON.stringify(key)}`);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoeXBoZW5hdGUiLCJ2YWxpZGF0ZU5vTWl4ZWRIYW5kIiwicHJlZml4IiwiTXVsdGlDYWNoZSIsImluamVjdFN0eWxlUHJlZml4ZWQiLCJzdHlsZUNhY2hlIiwic3R5bGVzIiwibWVkaWEiLCJwc2V1ZG8iLCJjYWNoZSIsImdldENhY2hlIiwiY2xhc3NTdHJpbmciLCJvcmlnaW5hbEtleSIsIm9yaWdpbmFsVmFsIiwidmFsaWRhdGVWYWx1ZVR5cGUiLCJwcm9wVmFsUGFpciIsImtleSIsImNhY2hlZElkIiwiYmxvY2siLCJwcmVmaXhlZCIsInByZWZpeGVkS2V5IiwicHJlZml4ZWRWYWwiLCJwcmVmaXhlZFZhbFR5cGUiLCJwcmVmaXhlZFBhaXIiLCJBcnJheSIsImlzQXJyYXkiLCJoeXBoZW5hdGVkIiwiaSIsImxlbmd0aCIsImlkIiwiYWRkVmFsdWUiLCJzdWJzdHJpbmciLCJzdWJzdHIiLCJjb25mbGljdHMiLCJmb3JFYWNoIiwic2hvcnRoYW5kIiwibG9uZ2hhbmQiLCJzaG9ydCIsIkpTT04iLCJzdHJpbmdpZnkiLCJwcm9wZXJ0eSIsInZhbHVlIiwibG9uZyIsImNvbnNvbGUiLCJ3YXJuIiwic2xpY2UiLCJFcnJvciJdLCJzb3VyY2VzIjpbInNyYy9pbmplY3Qtc3R5bGUtcHJlZml4ZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSB2YXIgX19ERVZfXzogYm9vbGVhbjtcblxuaW1wb3J0IGh5cGhlbmF0ZSBmcm9tIFwiLi9oeXBoZW5hdGUtc3R5bGUtbmFtZVwiO1xuaW1wb3J0IHt2YWxpZGF0ZU5vTWl4ZWRIYW5kfSBmcm9tIFwiLi92YWxpZGF0ZS1uby1taXhlZC1oYW5kXCI7XG5pbXBvcnQge3ByZWZpeH0gZnJvbSBcImlubGluZS1zdHlsZS1wcmVmaXhlclwiO1xuXG5pbXBvcnQgdHlwZSB7U3R5bGVPYmplY3R9IGZyb20gXCJzdHlsZXRyb24tc3RhbmRhcmRcIjtcblxuaW1wb3J0IHtNdWx0aUNhY2hlfSBmcm9tIFwiLi9jYWNoZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbmplY3RTdHlsZVByZWZpeGVkKFxuICBzdHlsZUNhY2hlOiBNdWx0aUNhY2hlPHtcbiAgICBwc2V1ZG86IHN0cmluZztcbiAgICBibG9jazogc3RyaW5nO1xuICB9PixcbiAgc3R5bGVzOiBTdHlsZU9iamVjdCxcbiAgbWVkaWE6IHN0cmluZyxcbiAgcHNldWRvOiBzdHJpbmcsXG4pIHtcbiAgY29uc3QgY2FjaGUgPSBzdHlsZUNhY2hlLmdldENhY2hlKG1lZGlhKTtcbiAgbGV0IGNsYXNzU3RyaW5nID0gXCJcIjtcbiAgZm9yIChjb25zdCBvcmlnaW5hbEtleSBpbiBzdHlsZXMpIHtcbiAgICBjb25zdCBvcmlnaW5hbFZhbCA9IHN0eWxlc1tvcmlnaW5hbEtleV07XG5cbiAgICBpZiAob3JpZ2luYWxWYWwgPT09IHZvaWQgMCB8fCBvcmlnaW5hbFZhbCA9PT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxWYWwgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIC8vIE5vbi1udWxsIGFuZCBub24tdW5kZWZpbmVkIHByaW1pdGl2ZSB2YWx1ZVxuICAgICAgaWYgKF9fREVWX18pIHtcbiAgICAgICAgdmFsaWRhdGVWYWx1ZVR5cGUob3JpZ2luYWxWYWwsIG9yaWdpbmFsS2V5KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvcFZhbFBhaXIgPSBgJHtoeXBoZW5hdGUob3JpZ2luYWxLZXkpfToke1xuICAgICAgICBvcmlnaW5hbFZhbCBhcyBhbnkgYXMgc3RyaW5nXG4gICAgICB9YDtcbiAgICAgIGNvbnN0IGtleSA9IGAke3BzZXVkb30ke3Byb3BWYWxQYWlyfWA7XG4gICAgICBjb25zdCBjYWNoZWRJZCA9IGNhY2hlLmNhY2hlW2tleV07XG4gICAgICBpZiAoY2FjaGVkSWQgIT09IHZvaWQgMCkge1xuICAgICAgICAvLyBjYWNoZSBoaXRcbiAgICAgICAgY2xhc3NTdHJpbmcgKz0gXCIgXCIgKyBjYWNoZWRJZDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjYWNoZSBtaXNzXG4gICAgICAgIGxldCBibG9jayA9IFwiXCI7XG4gICAgICAgIGNvbnN0IHByZWZpeGVkID0gcHJlZml4KHtbb3JpZ2luYWxLZXldOiBvcmlnaW5hbFZhbH0pO1xuICAgICAgICBmb3IgKGNvbnN0IHByZWZpeGVkS2V5IGluIHByZWZpeGVkKSB7XG4gICAgICAgICAgY29uc3QgcHJlZml4ZWRWYWwgPSBwcmVmaXhlZFtwcmVmaXhlZEtleV07XG4gICAgICAgICAgY29uc3QgcHJlZml4ZWRWYWxUeXBlID0gdHlwZW9mIHByZWZpeGVkVmFsO1xuICAgICAgICAgIGlmIChwcmVmaXhlZFZhbFR5cGUgPT09IFwic3RyaW5nXCIgfHwgcHJlZml4ZWRWYWxUeXBlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBjb25zdCBwcmVmaXhlZFBhaXIgPSBgJHtoeXBoZW5hdGUocHJlZml4ZWRLZXkpfToke3ByZWZpeGVkVmFsfWA7XG4gICAgICAgICAgICBpZiAocHJlZml4ZWRQYWlyICE9PSBwcm9wVmFsUGFpcikge1xuICAgICAgICAgICAgICBibG9jayArPSBgJHtwcmVmaXhlZFBhaXJ9O2A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHByZWZpeGVkVmFsKSkge1xuICAgICAgICAgICAgY29uc3QgaHlwaGVuYXRlZCA9IGh5cGhlbmF0ZShwcmVmaXhlZEtleSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZWZpeGVkVmFsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByZWZpeGVkUGFpciA9IGAke2h5cGhlbmF0ZWR9OiR7cHJlZml4ZWRWYWxbaV19YDtcbiAgICAgICAgICAgICAgaWYgKHByZWZpeGVkUGFpciAhPT0gcHJvcFZhbFBhaXIpIHtcbiAgICAgICAgICAgICAgICBibG9jayArPSBgJHtwcmVmaXhlZFBhaXJ9O2A7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYmxvY2sgKz0gcHJvcFZhbFBhaXI7IC8vIGVuc3VyZSBvcmlnaW5hbCBwcm9wL3ZhbCBpcyBsYXN0IChmb3IgaHlkcmF0aW9uKVxuICAgICAgICBjb25zdCBpZCA9IGNhY2hlLmFkZFZhbHVlKGtleSwge3BzZXVkbywgYmxvY2t9KTtcbiAgICAgICAgY2xhc3NTdHJpbmcgKz0gXCIgXCIgKyBpZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm9uLW51bGwgb2JqZWN0IHZhbHVlXG4gICAgICBpZiAob3JpZ2luYWxLZXlbMF0gPT09IFwiOlwiKSB7XG4gICAgICAgIGNsYXNzU3RyaW5nICs9XG4gICAgICAgICAgXCIgXCIgK1xuICAgICAgICAgIGluamVjdFN0eWxlUHJlZml4ZWQoXG4gICAgICAgICAgICBzdHlsZUNhY2hlLFxuICAgICAgICAgICAgb3JpZ2luYWxWYWwgYXMgU3R5bGVPYmplY3QsXG4gICAgICAgICAgICBtZWRpYSxcbiAgICAgICAgICAgIHBzZXVkbyArIG9yaWdpbmFsS2V5LFxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG9yaWdpbmFsS2V5LnN1YnN0cmluZygwLCA2KSA9PT0gXCJAbWVkaWFcIikge1xuICAgICAgICBjbGFzc1N0cmluZyArPVxuICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICBpbmplY3RTdHlsZVByZWZpeGVkKFxuICAgICAgICAgICAgc3R5bGVDYWNoZSxcbiAgICAgICAgICAgIG9yaWdpbmFsVmFsIGFzIFN0eWxlT2JqZWN0LFxuICAgICAgICAgICAgb3JpZ2luYWxLZXkuc3Vic3RyKDcpLFxuICAgICAgICAgICAgcHNldWRvLFxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKF9fREVWX18pIHtcbiAgICBjb25zdCBjb25mbGljdHMgPSB2YWxpZGF0ZU5vTWl4ZWRIYW5kKHN0eWxlcyk7XG4gICAgaWYgKGNvbmZsaWN0cy5sZW5ndGgpIHtcbiAgICAgIGNvbmZsaWN0cy5mb3JFYWNoKCh7c2hvcnRoYW5kLCBsb25naGFuZH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2hvcnQgPSBKU09OLnN0cmluZ2lmeSh7W3Nob3J0aGFuZC5wcm9wZXJ0eV06IHNob3J0aGFuZC52YWx1ZX0pO1xuICAgICAgICBjb25zdCBsb25nID0gSlNPTi5zdHJpbmdpZnkoe1tsb25naGFuZC5wcm9wZXJ0eV06IGxvbmdoYW5kLnZhbHVlfSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgU3R5bGVzIFxcYCR7c2hvcnR9XFxgIGFuZCBcXGAke2xvbmd9XFxgIGluIG9iamVjdCB5aWVsZGluZyBjbGFzcyBcIiR7Y2xhc3NTdHJpbmcuc2xpY2UoXG4gICAgICAgICAgICAxLFxuICAgICAgICAgICl9XCIgbWF5IHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW9yLiBNaXhpbmcgc2hvcnRoYW5kIGFuZCBsb25naGFuZCBwcm9wZXJ0aWVzIHdpdGhpbiB0aGUgc2FtZSBzdHlsZSBvYmplY3QgaXMgdW5zdXBwb3J0ZWQgd2l0aCBhdG9taWMgcmVuZGVyaW5nLmAsXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyByZW1vdmUgbGVhZGluZyBzcGFjZVxuICByZXR1cm4gY2xhc3NTdHJpbmcuc2xpY2UoMSk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVmFsdWVUeXBlKHZhbHVlLCBrZXkpIHtcbiAgaWYgKFxuICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHxcbiAgICAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIilcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFVuc3VwcG9ydGVkIHN0eWxlIHZhbHVlOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICB2YWx1ZSxcbiAgICAgICl9IHVzZWQgaW4gcHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeShrZXkpfWAsXG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPQSxTQUFQLE1BQXNCLHdCQUF0QjtBQUNBLFNBQVFDLG1CQUFSLFFBQWtDLDBCQUFsQztBQUNBLFNBQVFDLE1BQVIsUUFBcUIsdUJBQXJCO0FBSUEsU0FBUUMsVUFBUixRQUF5QixTQUF6QjtBQUVBLGVBQWUsU0FBU0MsbUJBQVQsQ0FDYkMsVUFEYSxFQUtiQyxNQUxhLEVBTWJDLEtBTmEsRUFPYkMsTUFQYSxFQVFiO0VBQ0EsTUFBTUMsS0FBSyxHQUFHSixVQUFVLENBQUNLLFFBQVgsQ0FBb0JILEtBQXBCLENBQWQ7RUFDQSxJQUFJSSxXQUFXLEdBQUcsRUFBbEI7O0VBQ0EsS0FBSyxNQUFNQyxXQUFYLElBQTBCTixNQUExQixFQUFrQztJQUNoQyxNQUFNTyxXQUFXLEdBQUdQLE1BQU0sQ0FBQ00sV0FBRCxDQUExQjs7SUFFQSxJQUFJQyxXQUFXLEtBQUssS0FBSyxDQUFyQixJQUEwQkEsV0FBVyxLQUFLLElBQTlDLEVBQW9EO01BQ2xEO0lBQ0Q7O0lBQ0QsSUFBSSxPQUFPQSxXQUFQLEtBQXVCLFFBQTNCLEVBQXFDO01BQ25DO01BQ0EsMkNBQWE7UUFDWEMsaUJBQWlCLENBQUNELFdBQUQsRUFBY0QsV0FBZCxDQUFqQjtNQUNEOztNQUVELE1BQU1HLFdBQVcsR0FBSSxHQUFFZixTQUFTLENBQUNZLFdBQUQsQ0FBYyxJQUM1Q0MsV0FDRCxFQUZEO01BR0EsTUFBTUcsR0FBRyxHQUFJLEdBQUVSLE1BQU8sR0FBRU8sV0FBWSxFQUFwQztNQUNBLE1BQU1FLFFBQVEsR0FBR1IsS0FBSyxDQUFDQSxLQUFOLENBQVlPLEdBQVosQ0FBakI7O01BQ0EsSUFBSUMsUUFBUSxLQUFLLEtBQUssQ0FBdEIsRUFBeUI7UUFDdkI7UUFDQU4sV0FBVyxJQUFJLE1BQU1NLFFBQXJCO1FBQ0E7TUFDRCxDQUpELE1BSU87UUFDTDtRQUNBLElBQUlDLEtBQUssR0FBRyxFQUFaO1FBQ0EsTUFBTUMsUUFBUSxHQUFHakIsTUFBTSxDQUFDO1VBQUMsQ0FBQ1UsV0FBRCxHQUFlQztRQUFoQixDQUFELENBQXZCOztRQUNBLEtBQUssTUFBTU8sV0FBWCxJQUEwQkQsUUFBMUIsRUFBb0M7VUFDbEMsTUFBTUUsV0FBVyxHQUFHRixRQUFRLENBQUNDLFdBQUQsQ0FBNUI7VUFDQSxNQUFNRSxlQUFlLEdBQUcsT0FBT0QsV0FBL0I7O1VBQ0EsSUFBSUMsZUFBZSxLQUFLLFFBQXBCLElBQWdDQSxlQUFlLEtBQUssUUFBeEQsRUFBa0U7WUFDaEUsTUFBTUMsWUFBWSxHQUFJLEdBQUV2QixTQUFTLENBQUNvQixXQUFELENBQWMsSUFBR0MsV0FBWSxFQUE5RDs7WUFDQSxJQUFJRSxZQUFZLEtBQUtSLFdBQXJCLEVBQWtDO2NBQ2hDRyxLQUFLLElBQUssR0FBRUssWUFBYSxHQUF6QjtZQUNEO1VBQ0YsQ0FMRCxNQUtPLElBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjSixXQUFkLENBQUosRUFBZ0M7WUFDckMsTUFBTUssVUFBVSxHQUFHMUIsU0FBUyxDQUFDb0IsV0FBRCxDQUE1Qjs7WUFDQSxLQUFLLElBQUlPLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdOLFdBQVcsQ0FBQ08sTUFBaEMsRUFBd0NELENBQUMsRUFBekMsRUFBNkM7Y0FDM0MsTUFBTUosWUFBWSxHQUFJLEdBQUVHLFVBQVcsSUFBR0wsV0FBVyxDQUFDTSxDQUFELENBQUksRUFBckQ7O2NBQ0EsSUFBSUosWUFBWSxLQUFLUixXQUFyQixFQUFrQztnQkFDaENHLEtBQUssSUFBSyxHQUFFSyxZQUFhLEdBQXpCO2NBQ0Q7WUFDRjtVQUNGO1FBQ0Y7O1FBQ0RMLEtBQUssSUFBSUgsV0FBVCxDQXRCSyxDQXNCaUI7O1FBQ3RCLE1BQU1jLEVBQUUsR0FBR3BCLEtBQUssQ0FBQ3FCLFFBQU4sQ0FBZWQsR0FBZixFQUFvQjtVQUFDUixNQUFEO1VBQVNVO1FBQVQsQ0FBcEIsQ0FBWDtRQUNBUCxXQUFXLElBQUksTUFBTWtCLEVBQXJCO01BQ0Q7SUFDRixDQXpDRCxNQXlDTztNQUNMO01BQ0EsSUFBSWpCLFdBQVcsQ0FBQyxDQUFELENBQVgsS0FBbUIsR0FBdkIsRUFBNEI7UUFDMUJELFdBQVcsSUFDVCxNQUNBUCxtQkFBbUIsQ0FDakJDLFVBRGlCLEVBRWpCUSxXQUZpQixFQUdqQk4sS0FIaUIsRUFJakJDLE1BQU0sR0FBR0ksV0FKUSxDQUZyQjtNQVFELENBVEQsTUFTTyxJQUFJQSxXQUFXLENBQUNtQixTQUFaLENBQXNCLENBQXRCLEVBQXlCLENBQXpCLE1BQWdDLFFBQXBDLEVBQThDO1FBQ25EcEIsV0FBVyxJQUNULE1BQ0FQLG1CQUFtQixDQUNqQkMsVUFEaUIsRUFFakJRLFdBRmlCLEVBR2pCRCxXQUFXLENBQUNvQixNQUFaLENBQW1CLENBQW5CLENBSGlCLEVBSWpCeEIsTUFKaUIsQ0FGckI7TUFRRDtJQUNGO0VBQ0Y7O0VBRUQsMkNBQWE7SUFDWCxNQUFNeUIsU0FBUyxHQUFHaEMsbUJBQW1CLENBQUNLLE1BQUQsQ0FBckM7O0lBQ0EsSUFBSTJCLFNBQVMsQ0FBQ0wsTUFBZCxFQUFzQjtNQUNwQkssU0FBUyxDQUFDQyxPQUFWLENBQWtCLENBQUM7UUFBQ0MsU0FBRDtRQUFZQztNQUFaLENBQUQsS0FBMkI7UUFDM0MsTUFBTUMsS0FBSyxHQUFHQyxJQUFJLENBQUNDLFNBQUwsQ0FBZTtVQUFDLENBQUNKLFNBQVMsQ0FBQ0ssUUFBWCxHQUFzQkwsU0FBUyxDQUFDTTtRQUFqQyxDQUFmLENBQWQ7UUFDQSxNQUFNQyxJQUFJLEdBQUdKLElBQUksQ0FBQ0MsU0FBTCxDQUFlO1VBQUMsQ0FBQ0gsUUFBUSxDQUFDSSxRQUFWLEdBQXFCSixRQUFRLENBQUNLO1FBQS9CLENBQWYsQ0FBYixDQUYyQyxDQUczQzs7UUFDQUUsT0FBTyxDQUFDQyxJQUFSLENBQ0csWUFBV1AsS0FBTSxZQUFXSyxJQUFLLGdDQUErQi9CLFdBQVcsQ0FBQ2tDLEtBQVosQ0FDL0QsQ0FEK0QsQ0FFL0Qsa0pBSEo7TUFLRCxDQVREO0lBVUQ7RUFDRixDQXhGRCxDQTBGQTs7O0VBQ0EsT0FBT2xDLFdBQVcsQ0FBQ2tDLEtBQVosQ0FBa0IsQ0FBbEIsQ0FBUDtBQUNEOztBQUVELFNBQVMvQixpQkFBVCxDQUEyQjJCLEtBQTNCLEVBQWtDekIsR0FBbEMsRUFBdUM7RUFDckMsSUFDRXlCLEtBQUssS0FBSyxJQUFWLElBQ0FqQixLQUFLLENBQUNDLE9BQU4sQ0FBY2dCLEtBQWQsQ0FEQSxJQUVDLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkIsT0FBT0EsS0FBUCxLQUFpQixRQUhqRCxFQUlFO0lBQ0EsTUFBTSxJQUFJSyxLQUFKLENBQ0gsNEJBQTJCUixJQUFJLENBQUNDLFNBQUwsQ0FDMUJFLEtBRDBCLENBRTFCLHFCQUFvQkgsSUFBSSxDQUFDQyxTQUFMLENBQWV2QixHQUFmLENBQW9CLEVBSHRDLENBQU47RUFLRDtBQUNGIn0=","import hyphenate from \"./hyphenate-style-name\";\nimport validateKeyframesObject from \"./validate-keyframes-object\";\nexport function atomicSelector(id, pseudo) {\n let selector = `.${id}`;\n\n if (pseudo) {\n selector += pseudo;\n }\n\n return selector;\n}\nexport function keyframesToBlock(keyframes) {\n if (process.env.NODE_ENV !== \"production\") {\n validateKeyframesObject(keyframes);\n }\n\n if (process.env.NODE_ENV !== \"production\" && typeof Object.getPrototypeOf(keyframes) !== \"undefined\") {\n if (Object.getPrototypeOf(keyframes) !== Object.getPrototypeOf({})) {\n // eslint-disable-next-line no-console\n console.warn(\"Only plain objects should be used as animation values. Unexpectedly recieved:\", keyframes);\n }\n }\n\n let result = \"\";\n\n for (const animationState in keyframes) {\n result += `${animationState}{${declarationsToBlock(keyframes[animationState])}}`;\n }\n\n return result;\n}\nexport function declarationsToBlock(style) {\n let css = \"\";\n\n for (const prop in style) {\n const val = style[prop];\n\n if (typeof val === \"string\" || typeof val === \"number\") {\n css += `${hyphenate(prop)}:${val};`;\n }\n } // trim trailing semicolon\n\n\n return css.slice(0, -1);\n}\nexport function keyframesBlockToRule(id, block) {\n return `@keyframes ${id}{${block}}`;\n}\nexport function fontFaceBlockToRule(id, block) {\n return `@font-face{font-family:${id};${block}}`;\n}\nexport function styleBlockToRule(selector, block) {\n return `${selector}{${block}}`;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoeXBoZW5hdGUiLCJ2YWxpZGF0ZUtleWZyYW1lc09iamVjdCIsImF0b21pY1NlbGVjdG9yIiwiaWQiLCJwc2V1ZG8iLCJzZWxlY3RvciIsImtleWZyYW1lc1RvQmxvY2siLCJrZXlmcmFtZXMiLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsImNvbnNvbGUiLCJ3YXJuIiwicmVzdWx0IiwiYW5pbWF0aW9uU3RhdGUiLCJkZWNsYXJhdGlvbnNUb0Jsb2NrIiwic3R5bGUiLCJjc3MiLCJwcm9wIiwidmFsIiwic2xpY2UiLCJrZXlmcmFtZXNCbG9ja1RvUnVsZSIsImJsb2NrIiwiZm9udEZhY2VCbG9ja1RvUnVsZSIsInN0eWxlQmxvY2tUb1J1bGUiXSwic291cmNlcyI6WyJzcmMvY3NzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgdmFyIF9fREVWX186IGJvb2xlYW47XG5cbmltcG9ydCBoeXBoZW5hdGUgZnJvbSBcIi4vaHlwaGVuYXRlLXN0eWxlLW5hbWVcIjtcbmltcG9ydCB2YWxpZGF0ZUtleWZyYW1lc09iamVjdCBmcm9tIFwiLi92YWxpZGF0ZS1rZXlmcmFtZXMtb2JqZWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhdG9taWNTZWxlY3RvcihpZDogc3RyaW5nLCBwc2V1ZG86IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBzZWxlY3RvciA9IGAuJHtpZH1gO1xuICBpZiAocHNldWRvKSB7XG4gICAgc2VsZWN0b3IgKz0gcHNldWRvO1xuICB9XG4gIHJldHVybiBzZWxlY3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtleWZyYW1lc1RvQmxvY2soa2V5ZnJhbWVzOiB7W3g6IHN0cmluZ106IGFueX0pOiBzdHJpbmcge1xuICBpZiAoX19ERVZfXykge1xuICAgIHZhbGlkYXRlS2V5ZnJhbWVzT2JqZWN0KGtleWZyYW1lcyk7XG4gIH1cbiAgaWYgKF9fREVWX18gJiYgdHlwZW9mIE9iamVjdC5nZXRQcm90b3R5cGVPZihrZXlmcmFtZXMpICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZihrZXlmcmFtZXMpICE9PSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoe30pKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIk9ubHkgcGxhaW4gb2JqZWN0cyBzaG91bGQgYmUgdXNlZCBhcyBhbmltYXRpb24gdmFsdWVzLiBVbmV4cGVjdGVkbHkgcmVjaWV2ZWQ6XCIsXG4gICAgICAgIGtleWZyYW1lcyxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGxldCByZXN1bHQgPSBcIlwiO1xuICBmb3IgKGNvbnN0IGFuaW1hdGlvblN0YXRlIGluIGtleWZyYW1lcykge1xuICAgIHJlc3VsdCArPSBgJHthbmltYXRpb25TdGF0ZX17JHtkZWNsYXJhdGlvbnNUb0Jsb2NrKFxuICAgICAga2V5ZnJhbWVzW2FuaW1hdGlvblN0YXRlXSxcbiAgICApfX1gO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJhdGlvbnNUb0Jsb2NrKHN0eWxlOiBhbnkpOiBzdHJpbmcge1xuICBsZXQgY3NzID0gXCJcIjtcbiAgZm9yIChjb25zdCBwcm9wIGluIHN0eWxlKSB7XG4gICAgY29uc3QgdmFsID0gc3R5bGVbcHJvcF07XG4gICAgaWYgKHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHZhbCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgY3NzICs9IGAke2h5cGhlbmF0ZShwcm9wKX06JHt2YWx9O2A7XG4gICAgfVxuICB9XG4gIC8vIHRyaW0gdHJhaWxpbmcgc2VtaWNvbG9uXG4gIHJldHVybiBjc3Muc2xpY2UoMCwgLTEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ga2V5ZnJhbWVzQmxvY2tUb1J1bGUoaWQ6IHN0cmluZywgYmxvY2s6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgQGtleWZyYW1lcyAke2lkfXske2Jsb2NrfX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9udEZhY2VCbG9ja1RvUnVsZShpZDogc3RyaW5nLCBibG9jazogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBAZm9udC1mYWNle2ZvbnQtZmFtaWx5OiR7aWR9OyR7YmxvY2t9fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHlsZUJsb2NrVG9SdWxlKHNlbGVjdG9yOiBzdHJpbmcsIGJsb2NrOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c2VsZWN0b3J9eyR7YmxvY2t9fWA7XG59XG4iXSwibWFwcGluZ3MiOiJBQUVBLE9BQU9BLFNBQVAsTUFBc0Isd0JBQXRCO0FBQ0EsT0FBT0MsdUJBQVAsTUFBb0MsNkJBQXBDO0FBRUEsT0FBTyxTQUFTQyxjQUFULENBQXdCQyxFQUF4QixFQUFvQ0MsTUFBcEMsRUFBNEQ7RUFDakUsSUFBSUMsUUFBUSxHQUFJLElBQUdGLEVBQUcsRUFBdEI7O0VBQ0EsSUFBSUMsTUFBSixFQUFZO0lBQ1ZDLFFBQVEsSUFBSUQsTUFBWjtFQUNEOztFQUNELE9BQU9DLFFBQVA7QUFDRDtBQUVELE9BQU8sU0FBU0MsZ0JBQVQsQ0FBMEJDLFNBQTFCLEVBQWlFO0VBQ3RFLDJDQUFhO0lBQ1hOLHVCQUF1QixDQUFDTSxTQUFELENBQXZCO0VBQ0Q7O0VBQ0QsSUFBSSx5Q0FBVyxPQUFPQyxNQUFNLENBQUNDLGNBQVAsQ0FBc0JGLFNBQXRCLENBQVAsS0FBNEMsV0FBM0QsRUFBd0U7SUFDdEUsSUFBSUMsTUFBTSxDQUFDQyxjQUFQLENBQXNCRixTQUF0QixNQUFxQ0MsTUFBTSxDQUFDQyxjQUFQLENBQXNCLEVBQXRCLENBQXpDLEVBQW9FO01BQ2xFO01BQ0FDLE9BQU8sQ0FBQ0MsSUFBUixDQUNFLCtFQURGLEVBRUVKLFNBRkY7SUFJRDtFQUNGOztFQUNELElBQUlLLE1BQU0sR0FBRyxFQUFiOztFQUNBLEtBQUssTUFBTUMsY0FBWCxJQUE2Qk4sU0FBN0IsRUFBd0M7SUFDdENLLE1BQU0sSUFBSyxHQUFFQyxjQUFlLElBQUdDLG1CQUFtQixDQUNoRFAsU0FBUyxDQUFDTSxjQUFELENBRHVDLENBRWhELEdBRkY7RUFHRDs7RUFDRCxPQUFPRCxNQUFQO0FBQ0Q7QUFFRCxPQUFPLFNBQVNFLG1CQUFULENBQTZCQyxLQUE3QixFQUFpRDtFQUN0RCxJQUFJQyxHQUFHLEdBQUcsRUFBVjs7RUFDQSxLQUFLLE1BQU1DLElBQVgsSUFBbUJGLEtBQW5CLEVBQTBCO0lBQ3hCLE1BQU1HLEdBQUcsR0FBR0gsS0FBSyxDQUFDRSxJQUFELENBQWpCOztJQUNBLElBQUksT0FBT0MsR0FBUCxLQUFlLFFBQWYsSUFBMkIsT0FBT0EsR0FBUCxLQUFlLFFBQTlDLEVBQXdEO01BQ3RERixHQUFHLElBQUssR0FBRWhCLFNBQVMsQ0FBQ2lCLElBQUQsQ0FBTyxJQUFHQyxHQUFJLEdBQWpDO0lBQ0Q7RUFDRixDQVBxRCxDQVF0RDs7O0VBQ0EsT0FBT0YsR0FBRyxDQUFDRyxLQUFKLENBQVUsQ0FBVixFQUFhLENBQUMsQ0FBZCxDQUFQO0FBQ0Q7QUFFRCxPQUFPLFNBQVNDLG9CQUFULENBQThCakIsRUFBOUIsRUFBMENrQixLQUExQyxFQUFpRTtFQUN0RSxPQUFRLGNBQWFsQixFQUFHLElBQUdrQixLQUFNLEdBQWpDO0FBQ0Q7QUFFRCxPQUFPLFNBQVNDLG1CQUFULENBQTZCbkIsRUFBN0IsRUFBeUNrQixLQUF6QyxFQUFnRTtFQUNyRSxPQUFRLDBCQUF5QmxCLEVBQUcsSUFBR2tCLEtBQU0sR0FBN0M7QUFDRDtBQUVELE9BQU8sU0FBU0UsZ0JBQVQsQ0FBMEJsQixRQUExQixFQUE0Q2dCLEtBQTVDLEVBQW1FO0VBQ3hFLE9BQVEsR0FBRWhCLFFBQVMsSUFBR2dCLEtBQU0sR0FBNUI7QUFDRCJ9","/* eslint-env browser */\nconst STYLES_HYDRATOR = /\\.([^{:]+)(:[^{]+)?{(?:[^}]*;)?([^}]*?)}/g;\nconst KEYFRAMES_HYRDATOR = /@keyframes ([^{]+){((?:(?:from|to|(?:\\d+\\.?\\d*%))\\{(?:[^}])*})*)}/g;\nconst FONT_FACE_HYDRATOR = /@font-face\\{font-family:([^;]+);([^}]*)\\}/g;\n\nfunction hydrateStyles(cache, hydrator, css) {\n let match;\n\n while (match = hydrator.exec(css)) {\n const [, id, pseudo, key] = match;\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n hydrateDevtoolsRule(match[0]);\n }\n\n const fullKey = pseudo ? `${pseudo}${key}` : key;\n cache.cache[fullKey] = id; // set cache without triggering side effects\n\n cache.idGenerator.increment(); // increment id\n }\n}\n\nfunction hydrate(cache, hydrator, css) {\n let match;\n\n while (match = hydrator.exec(css)) {\n const [, id, key] = match;\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n hydrateDevtoolsRule(match[0]);\n }\n\n cache.cache[key] = id; // set cache without triggering side effects\n\n cache.idGenerator.increment(); // increment id\n }\n}\n\nimport SequentialIDGenerator from \"../sequential-id-generator\";\nimport { Cache, MultiCache } from \"../cache\";\nimport injectStylePrefixed from \"../inject-style-prefixed\";\nimport { styleBlockToRule, atomicSelector, keyframesBlockToRule, declarationsToBlock, keyframesToBlock, fontFaceBlockToRule } from \"../css\";\nimport { insertRuleIntoDevtools, hydrateDevtoolsRule } from \"../dev-tool\";\n\nclass StyletronClient {\n constructor(opts = {}) {\n this.styleElements = {};\n const styleIdGenerator = new SequentialIDGenerator(opts.prefix);\n\n const onNewStyle = (cache, id, value) => {\n const {\n pseudo,\n block\n } = value;\n const sheet = this.styleElements[cache.key].sheet;\n const selector = atomicSelector(id, pseudo);\n const rule = styleBlockToRule(selector, block);\n\n try {\n sheet.insertRule(rule, sheet.cssRules.length);\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n insertRuleIntoDevtools(selector, block);\n }\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`Failed to inject CSS: \"${rule}\". Perhaps this has invalid or un-prefixed properties?`);\n }\n }\n }; // Setup style cache\n\n\n this.styleCache = new MultiCache(styleIdGenerator, (media, _cache, insertBeforeMedia) => {\n const styleElement = document.createElement(\"style\");\n styleElement.media = media;\n\n if (insertBeforeMedia === void 0) {\n this.container.appendChild(styleElement);\n } else {\n const insertBeforeIndex = findSheetIndexWithMedia(this.container.children, insertBeforeMedia);\n this.container.insertBefore(styleElement, this.container.children[insertBeforeIndex]);\n }\n\n this.styleElements[media] = styleElement;\n }, onNewStyle);\n this.keyframesCache = new Cache(new SequentialIDGenerator(opts.prefix), (cache, id, value) => {\n this.styleCache.getCache(\"\");\n const sheet = this.styleElements[\"\"].sheet;\n const rule = keyframesBlockToRule(id, keyframesToBlock(value));\n\n try {\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`Failed to inject CSS: \"${rule}\". Perhaps this has invalid or un-prefixed properties?`);\n }\n }\n });\n this.fontFaceCache = new Cache(new SequentialIDGenerator(opts.prefix), (cache, id, value) => {\n this.styleCache.getCache(\"\");\n const sheet = this.styleElements[\"\"].sheet;\n const rule = fontFaceBlockToRule(id, declarationsToBlock(value));\n\n try {\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`Failed to inject CSS: \"${rule}\". Perhaps this has invalid or un-prefixed properties?`);\n }\n }\n });\n\n if (opts.container) {\n this.container = opts.container;\n } // Hydrate\n\n\n if (opts.hydrate && opts.hydrate.length > 0) {\n // infer container from parent element\n if (!this.container) {\n const parentElement = opts.hydrate[0].parentElement;\n\n if (parentElement !== null && parentElement !== void 0) {\n this.container = parentElement;\n }\n }\n\n for (let i = 0; i < opts.hydrate.length; i++) {\n const element = opts.hydrate[i];\n const hydrateType = element.getAttribute(\"data-hydrate\");\n\n if (hydrateType === \"font-face\") {\n hydrate(this.fontFaceCache, FONT_FACE_HYDRATOR, element.textContent);\n continue;\n }\n\n if (hydrateType === \"keyframes\") {\n hydrate(this.keyframesCache, KEYFRAMES_HYRDATOR, element.textContent);\n continue;\n }\n\n const key = element.media ? element.media : \"\";\n this.styleElements[key] = element;\n const cache = new Cache(styleIdGenerator, onNewStyle);\n cache.key = key;\n hydrateStyles(cache, STYLES_HYDRATOR, element.textContent);\n this.styleCache.sortedCacheKeys.push(key);\n this.styleCache.caches[key] = cache;\n }\n }\n\n if (!this.container) {\n if (document.head === null) {\n throw new Error(\"No container provided and `document.head` was null\");\n }\n\n this.container = document.head;\n }\n }\n\n renderStyle(style) {\n return injectStylePrefixed(this.styleCache, style, \"\", \"\");\n }\n\n renderFontFace(fontFace) {\n const key = declarationsToBlock(fontFace);\n return this.fontFaceCache.addValue(key, fontFace);\n }\n\n renderKeyframes(keyframes) {\n const key = keyframesToBlock(keyframes);\n return this.keyframesCache.addValue(key, keyframes);\n }\n\n}\n\nexport default StyletronClient;\n\nfunction findSheetIndexWithMedia(children, media) {\n let index = 0;\n\n for (; index < children.length; index++) {\n const child = children[index];\n\n if (child.tagName === \"STYLE\" && child.media === media) {\n return index;\n }\n }\n\n return -1;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVFlMRVNfSFlEUkFUT1IiLCJLRVlGUkFNRVNfSFlSREFUT1IiLCJGT05UX0ZBQ0VfSFlEUkFUT1IiLCJoeWRyYXRlU3R5bGVzIiwiY2FjaGUiLCJoeWRyYXRvciIsImNzcyIsIm1hdGNoIiwiZXhlYyIsImlkIiwicHNldWRvIiwia2V5Iiwid2luZG93IiwiX19TVFlMRVRST05fREVWVE9PTFNfXyIsImh5ZHJhdGVEZXZ0b29sc1J1bGUiLCJmdWxsS2V5IiwiaWRHZW5lcmF0b3IiLCJpbmNyZW1lbnQiLCJoeWRyYXRlIiwiU2VxdWVudGlhbElER2VuZXJhdG9yIiwiQ2FjaGUiLCJNdWx0aUNhY2hlIiwiaW5qZWN0U3R5bGVQcmVmaXhlZCIsInN0eWxlQmxvY2tUb1J1bGUiLCJhdG9taWNTZWxlY3RvciIsImtleWZyYW1lc0Jsb2NrVG9SdWxlIiwiZGVjbGFyYXRpb25zVG9CbG9jayIsImtleWZyYW1lc1RvQmxvY2siLCJmb250RmFjZUJsb2NrVG9SdWxlIiwiaW5zZXJ0UnVsZUludG9EZXZ0b29scyIsIlN0eWxldHJvbkNsaWVudCIsImNvbnN0cnVjdG9yIiwib3B0cyIsInN0eWxlRWxlbWVudHMiLCJzdHlsZUlkR2VuZXJhdG9yIiwicHJlZml4Iiwib25OZXdTdHlsZSIsInZhbHVlIiwiYmxvY2siLCJzaGVldCIsInNlbGVjdG9yIiwicnVsZSIsImluc2VydFJ1bGUiLCJjc3NSdWxlcyIsImxlbmd0aCIsImUiLCJjb25zb2xlIiwid2FybiIsInN0eWxlQ2FjaGUiLCJtZWRpYSIsIl9jYWNoZSIsImluc2VydEJlZm9yZU1lZGlhIiwic3R5bGVFbGVtZW50IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29udGFpbmVyIiwiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmVJbmRleCIsImZpbmRTaGVldEluZGV4V2l0aE1lZGlhIiwiY2hpbGRyZW4iLCJpbnNlcnRCZWZvcmUiLCJrZXlmcmFtZXNDYWNoZSIsImdldENhY2hlIiwiZm9udEZhY2VDYWNoZSIsInBhcmVudEVsZW1lbnQiLCJpIiwiZWxlbWVudCIsImh5ZHJhdGVUeXBlIiwiZ2V0QXR0cmlidXRlIiwidGV4dENvbnRlbnQiLCJzb3J0ZWRDYWNoZUtleXMiLCJwdXNoIiwiY2FjaGVzIiwiaGVhZCIsIkVycm9yIiwicmVuZGVyU3R5bGUiLCJzdHlsZSIsInJlbmRlckZvbnRGYWNlIiwiZm9udEZhY2UiLCJhZGRWYWx1ZSIsInJlbmRlcktleWZyYW1lcyIsImtleWZyYW1lcyIsImluZGV4IiwiY2hpbGQiLCJ0YWdOYW1lIl0sInNvdXJjZXMiOlsic3JjL2NsaWVudC9jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmRlY2xhcmUgdmFyIF9fREVWX186IGJvb2xlYW47XG5cbmRlY2xhcmUgdmFyIF9fQlJPV1NFUl9fOiBib29sZWFuO1xuXG5jb25zdCBTVFlMRVNfSFlEUkFUT1IgPSAvXFwuKFteezpdKykoOltee10rKT97KD86W159XSo7KT8oW159XSo/KX0vZztcbmNvbnN0IEtFWUZSQU1FU19IWVJEQVRPUiA9XG4gIC9Aa2V5ZnJhbWVzIChbXntdKyl7KCg/Oig/OmZyb218dG98KD86XFxkK1xcLj9cXGQqJSkpXFx7KD86W159XSkqfSkqKX0vZztcbmNvbnN0IEZPTlRfRkFDRV9IWURSQVRPUiA9IC9AZm9udC1mYWNlXFx7Zm9udC1mYW1pbHk6KFteO10rKTsoW159XSopXFx9L2c7XG5cbnR5cGUgaHlkcmF0b3JUID1cbiAgfCB0eXBlb2YgU1RZTEVTX0hZRFJBVE9SXG4gIHwgdHlwZW9mIEtFWUZSQU1FU19IWVJEQVRPUlxuICB8IHR5cGVvZiBGT05UX0ZBQ0VfSFlEUkFUT1I7XG5cbmZ1bmN0aW9uIGh5ZHJhdGVTdHlsZXM8VD4oY2FjaGU6IENhY2hlPFQ+LCBoeWRyYXRvcjogaHlkcmF0b3JULCBjc3M6IHN0cmluZykge1xuICBsZXQgbWF0Y2g7XG4gIHdoaWxlICgobWF0Y2ggPSBoeWRyYXRvci5leGVjKGNzcykpKSB7XG4gICAgY29uc3QgWywgaWQsIHBzZXVkbywga2V5XSA9IG1hdGNoO1xuICAgIGlmIChfX0JST1dTRVJfXyAmJiBfX0RFVl9fICYmIHdpbmRvdy5fX1NUWUxFVFJPTl9ERVZUT09MU19fKSB7XG4gICAgICBoeWRyYXRlRGV2dG9vbHNSdWxlKG1hdGNoWzBdKTtcbiAgICB9XG4gICAgY29uc3QgZnVsbEtleSA9IHBzZXVkbyA/IGAke3BzZXVkb30ke2tleX1gIDoga2V5O1xuICAgIGNhY2hlLmNhY2hlW2Z1bGxLZXldID0gaWQ7IC8vIHNldCBjYWNoZSB3aXRob3V0IHRyaWdnZXJpbmcgc2lkZSBlZmZlY3RzXG4gICAgY2FjaGUuaWRHZW5lcmF0b3IuaW5jcmVtZW50KCk7IC8vIGluY3JlbWVudCBpZFxuICB9XG59XG5cbmZ1bmN0aW9uIGh5ZHJhdGU8VD4oY2FjaGU6IENhY2hlPFQ+LCBoeWRyYXRvcjogaHlkcmF0b3JULCBjc3M6IHN0cmluZykge1xuICBsZXQgbWF0Y2g7XG4gIHdoaWxlICgobWF0Y2ggPSBoeWRyYXRvci5leGVjKGNzcykpKSB7XG4gICAgY29uc3QgWywgaWQsIGtleV0gPSBtYXRjaDtcbiAgICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXyAmJiB3aW5kb3cuX19TVFlMRVRST05fREVWVE9PTFNfXykge1xuICAgICAgaHlkcmF0ZURldnRvb2xzUnVsZShtYXRjaFswXSk7XG4gICAgfVxuICAgIGNhY2hlLmNhY2hlW2tleV0gPSBpZDsgLy8gc2V0IGNhY2hlIHdpdGhvdXQgdHJpZ2dlcmluZyBzaWRlIGVmZmVjdHNcbiAgICBjYWNoZS5pZEdlbmVyYXRvci5pbmNyZW1lbnQoKTsgLy8gaW5jcmVtZW50IGlkXG4gIH1cbn1cblxuaW1wb3J0IFNlcXVlbnRpYWxJREdlbmVyYXRvciBmcm9tIFwiLi4vc2VxdWVudGlhbC1pZC1nZW5lcmF0b3JcIjtcblxuaW1wb3J0IHR5cGUge1xuICBTdGFuZGFyZEVuZ2luZSxcbiAgS2V5ZnJhbWVzT2JqZWN0LFxuICBGb250RmFjZU9iamVjdCxcbiAgU3R5bGVPYmplY3QsXG59IGZyb20gXCJzdHlsZXRyb24tc3RhbmRhcmRcIjtcblxuaW1wb3J0IHtDYWNoZSwgTXVsdGlDYWNoZX0gZnJvbSBcIi4uL2NhY2hlXCI7XG5cbmltcG9ydCBpbmplY3RTdHlsZVByZWZpeGVkIGZyb20gXCIuLi9pbmplY3Qtc3R5bGUtcHJlZml4ZWRcIjtcblxuaW1wb3J0IHtcbiAgc3R5bGVCbG9ja1RvUnVsZSxcbiAgYXRvbWljU2VsZWN0b3IsXG4gIGtleWZyYW1lc0Jsb2NrVG9SdWxlLFxuICBkZWNsYXJhdGlvbnNUb0Jsb2NrLFxuICBrZXlmcmFtZXNUb0Jsb2NrLFxuICBmb250RmFjZUJsb2NrVG9SdWxlLFxufSBmcm9tIFwiLi4vY3NzXCI7XG5pbXBvcnQge2luc2VydFJ1bGVJbnRvRGV2dG9vbHMsIGh5ZHJhdGVEZXZ0b29sc1J1bGV9IGZyb20gXCIuLi9kZXYtdG9vbFwiO1xuXG50eXBlIGh5ZHJhdGVUID1cbiAgfCBIVE1MQ29sbGVjdGlvbk9mPEhUTUxTdHlsZUVsZW1lbnQ+XG4gIHwgQXJyYXk8SFRNTFN0eWxlRWxlbWVudD5cbiAgfCBOb2RlTGlzdE9mPEhUTUxTdHlsZUVsZW1lbnQ+O1xuXG50eXBlIG9wdGlvbnNUID0ge1xuICBoeWRyYXRlPzogaHlkcmF0ZVQ7XG4gIGNvbnRhaW5lcj86IEVsZW1lbnQ7XG4gIHByZWZpeD86IHN0cmluZztcbn07XG5cbmNsYXNzIFN0eWxldHJvbkNsaWVudCBpbXBsZW1lbnRzIFN0YW5kYXJkRW5naW5lIHtcbiAgY29udGFpbmVyOiBFbGVtZW50O1xuICBzdHlsZUVsZW1lbnRzOiB7XG4gICAgW3g6IHN0cmluZ106IEhUTUxTdHlsZUVsZW1lbnQ7XG4gIH07XG4gIGZvbnRGYWNlU2hlZXQ6IEhUTUxTdHlsZUVsZW1lbnQ7XG4gIGtleWZyYW1lc1NoZWV0OiBIVE1MU3R5bGVFbGVtZW50O1xuXG4gIHN0eWxlQ2FjaGU6IE11bHRpQ2FjaGU8e1xuICAgIHBzZXVkbzogc3RyaW5nO1xuICAgIGJsb2NrOiBzdHJpbmc7XG4gIH0+O1xuICBrZXlmcmFtZXNDYWNoZTogQ2FjaGU8S2V5ZnJhbWVzT2JqZWN0PjtcbiAgZm9udEZhY2VDYWNoZTogQ2FjaGU8Rm9udEZhY2VPYmplY3Q+O1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IG9wdGlvbnNUID0ge30pIHtcbiAgICB0aGlzLnN0eWxlRWxlbWVudHMgPSB7fTtcblxuICAgIGNvbnN0IHN0eWxlSWRHZW5lcmF0b3IgPSBuZXcgU2VxdWVudGlhbElER2VuZXJhdG9yKG9wdHMucHJlZml4KTtcbiAgICBjb25zdCBvbk5ld1N0eWxlID0gKGNhY2hlLCBpZCwgdmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHtwc2V1ZG8sIGJsb2NrfSA9IHZhbHVlO1xuICAgICAgY29uc3Qgc2hlZXQ6IENTU1N0eWxlU2hlZXQgPSB0aGlzLnN0eWxlRWxlbWVudHNbY2FjaGUua2V5XS5zaGVldCBhcyBhbnk7XG4gICAgICBjb25zdCBzZWxlY3RvciA9IGF0b21pY1NlbGVjdG9yKGlkLCBwc2V1ZG8pO1xuICAgICAgY29uc3QgcnVsZSA9IHN0eWxlQmxvY2tUb1J1bGUoc2VsZWN0b3IsIGJsb2NrKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNoZWV0Lmluc2VydFJ1bGUocnVsZSwgc2hlZXQuY3NzUnVsZXMubGVuZ3RoKTtcbiAgICAgICAgaWYgKF9fQlJPV1NFUl9fICYmIF9fREVWX18gJiYgd2luZG93Ll9fU1RZTEVUUk9OX0RFVlRPT0xTX18pIHtcbiAgICAgICAgICBpbnNlcnRSdWxlSW50b0RldnRvb2xzKHNlbGVjdG9yLCBibG9jayk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKF9fREVWX18pIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gaW5qZWN0IENTUzogXCIke3J1bGV9XCIuIFBlcmhhcHMgdGhpcyBoYXMgaW52YWxpZCBvciB1bi1wcmVmaXhlZCBwcm9wZXJ0aWVzP2AsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBTZXR1cCBzdHlsZSBjYWNoZVxuICAgIHRoaXMuc3R5bGVDYWNoZSA9IG5ldyBNdWx0aUNhY2hlKFxuICAgICAgc3R5bGVJZEdlbmVyYXRvcixcbiAgICAgIChtZWRpYSwgX2NhY2hlLCBpbnNlcnRCZWZvcmVNZWRpYSkgPT4ge1xuICAgICAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHN0eWxlRWxlbWVudC5tZWRpYSA9IG1lZGlhO1xuICAgICAgICBpZiAoaW5zZXJ0QmVmb3JlTWVkaWEgPT09IHZvaWQgMCkge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaW5zZXJ0QmVmb3JlSW5kZXggPSBmaW5kU2hlZXRJbmRleFdpdGhNZWRpYShcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNoaWxkcmVuLFxuICAgICAgICAgICAgaW5zZXJ0QmVmb3JlTWVkaWEsXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICBzdHlsZUVsZW1lbnQsXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jaGlsZHJlbltpbnNlcnRCZWZvcmVJbmRleF0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3R5bGVFbGVtZW50c1ttZWRpYV0gPSBzdHlsZUVsZW1lbnQ7XG4gICAgICB9LFxuICAgICAgb25OZXdTdHlsZSxcbiAgICApO1xuXG4gICAgdGhpcy5rZXlmcmFtZXNDYWNoZSA9IG5ldyBDYWNoZShcbiAgICAgIG5ldyBTZXF1ZW50aWFsSURHZW5lcmF0b3Iob3B0cy5wcmVmaXgpLFxuICAgICAgKGNhY2hlLCBpZCwgdmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zdHlsZUNhY2hlLmdldENhY2hlKFwiXCIpO1xuICAgICAgICBjb25zdCBzaGVldDogQ1NTU3R5bGVTaGVldCA9IHRoaXMuc3R5bGVFbGVtZW50c1tcIlwiXS5zaGVldCBhcyBhbnk7XG4gICAgICAgIGNvbnN0IHJ1bGUgPSBrZXlmcmFtZXNCbG9ja1RvUnVsZShpZCwga2V5ZnJhbWVzVG9CbG9jayh2YWx1ZSkpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNoZWV0Lmluc2VydFJ1bGUocnVsZSwgc2hlZXQuY3NzUnVsZXMubGVuZ3RoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChfX0RFVl9fKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIGluamVjdCBDU1M6IFwiJHtydWxlfVwiLiBQZXJoYXBzIHRoaXMgaGFzIGludmFsaWQgb3IgdW4tcHJlZml4ZWQgcHJvcGVydGllcz9gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMuZm9udEZhY2VDYWNoZSA9IG5ldyBDYWNoZShcbiAgICAgIG5ldyBTZXF1ZW50aWFsSURHZW5lcmF0b3Iob3B0cy5wcmVmaXgpLFxuICAgICAgKGNhY2hlLCBpZCwgdmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zdHlsZUNhY2hlLmdldENhY2hlKFwiXCIpO1xuICAgICAgICBjb25zdCBzaGVldDogQ1NTU3R5bGVTaGVldCA9IHRoaXMuc3R5bGVFbGVtZW50c1tcIlwiXS5zaGVldCBhcyBhbnk7XG4gICAgICAgIGNvbnN0IHJ1bGUgPSBmb250RmFjZUJsb2NrVG9SdWxlKGlkLCBkZWNsYXJhdGlvbnNUb0Jsb2NrKHZhbHVlKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc2hlZXQuaW5zZXJ0UnVsZShydWxlLCBzaGVldC5jc3NSdWxlcy5sZW5ndGgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKF9fREVWX18pIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgIGBGYWlsZWQgdG8gaW5qZWN0IENTUzogXCIke3J1bGV9XCIuIFBlcmhhcHMgdGhpcyBoYXMgaW52YWxpZCBvciB1bi1wcmVmaXhlZCBwcm9wZXJ0aWVzP2AsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKG9wdHMuY29udGFpbmVyKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lciA9IG9wdHMuY29udGFpbmVyO1xuICAgIH1cblxuICAgIC8vIEh5ZHJhdGVcbiAgICBpZiAob3B0cy5oeWRyYXRlICYmIG9wdHMuaHlkcmF0ZS5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBpbmZlciBjb250YWluZXIgZnJvbSBwYXJlbnQgZWxlbWVudFxuICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lcikge1xuICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gb3B0cy5oeWRyYXRlWzBdLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGlmIChwYXJlbnRFbGVtZW50ICE9PSBudWxsICYmIHBhcmVudEVsZW1lbnQgIT09IHZvaWQgMCkge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gcGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdHMuaHlkcmF0ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gb3B0cy5oeWRyYXRlW2ldO1xuICAgICAgICBjb25zdCBoeWRyYXRlVHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1oeWRyYXRlXCIpO1xuICAgICAgICBpZiAoaHlkcmF0ZVR5cGUgPT09IFwiZm9udC1mYWNlXCIpIHtcbiAgICAgICAgICBoeWRyYXRlKHRoaXMuZm9udEZhY2VDYWNoZSwgRk9OVF9GQUNFX0hZRFJBVE9SLCBlbGVtZW50LnRleHRDb250ZW50KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaHlkcmF0ZVR5cGUgPT09IFwia2V5ZnJhbWVzXCIpIHtcbiAgICAgICAgICBoeWRyYXRlKHRoaXMua2V5ZnJhbWVzQ2FjaGUsIEtFWUZSQU1FU19IWVJEQVRPUiwgZWxlbWVudC50ZXh0Q29udGVudCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5ID0gZWxlbWVudC5tZWRpYSA/IGVsZW1lbnQubWVkaWEgOiBcIlwiO1xuICAgICAgICB0aGlzLnN0eWxlRWxlbWVudHNba2V5XSA9IGVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNhY2hlID0gbmV3IENhY2hlKHN0eWxlSWRHZW5lcmF0b3IsIG9uTmV3U3R5bGUpO1xuICAgICAgICBjYWNoZS5rZXkgPSBrZXk7XG4gICAgICAgIGh5ZHJhdGVTdHlsZXMoY2FjaGUsIFNUWUxFU19IWURSQVRPUiwgZWxlbWVudC50ZXh0Q29udGVudCk7XG4gICAgICAgIHRoaXMuc3R5bGVDYWNoZS5zb3J0ZWRDYWNoZUtleXMucHVzaChrZXkpO1xuICAgICAgICB0aGlzLnN0eWxlQ2FjaGUuY2FjaGVzW2tleV0gPSBjYWNoZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29udGFpbmVyKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuaGVhZCA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb250YWluZXIgcHJvdmlkZWQgYW5kIGBkb2N1bWVudC5oZWFkYCB3YXMgbnVsbFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGFpbmVyID0gZG9jdW1lbnQuaGVhZDtcbiAgICB9XG4gIH1cblxuICByZW5kZXJTdHlsZShzdHlsZTogU3R5bGVPYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbmplY3RTdHlsZVByZWZpeGVkKHRoaXMuc3R5bGVDYWNoZSwgc3R5bGUsIFwiXCIsIFwiXCIpO1xuICB9XG5cbiAgcmVuZGVyRm9udEZhY2UoZm9udEZhY2U6IEZvbnRGYWNlT2JqZWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSBkZWNsYXJhdGlvbnNUb0Jsb2NrKGZvbnRGYWNlKTtcbiAgICByZXR1cm4gdGhpcy5mb250RmFjZUNhY2hlLmFkZFZhbHVlKGtleSwgZm9udEZhY2UpO1xuICB9XG5cbiAgcmVuZGVyS2V5ZnJhbWVzKGtleWZyYW1lczogS2V5ZnJhbWVzT2JqZWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSBrZXlmcmFtZXNUb0Jsb2NrKGtleWZyYW1lcyk7XG4gICAgcmV0dXJuIHRoaXMua2V5ZnJhbWVzQ2FjaGUuYWRkVmFsdWUoa2V5LCBrZXlmcmFtZXMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0eWxldHJvbkNsaWVudDtcblxuZnVuY3Rpb24gZmluZFNoZWV0SW5kZXhXaXRoTWVkaWEoY2hpbGRyZW4sIG1lZGlhKSB7XG4gIGxldCBpbmRleCA9IDA7XG4gIGZvciAoOyBpbmRleCA8IGNoaWxkcmVuLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baW5kZXhdO1xuICAgIGlmIChcbiAgICAgIGNoaWxkLnRhZ05hbWUgPT09IFwiU1RZTEVcIiAmJlxuICAgICAgKGNoaWxkIGFzIGFueSBhcyBIVE1MU3R5bGVFbGVtZW50KS5tZWRpYSA9PT0gbWVkaWFcbiAgICApIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBTUEsTUFBTUEsZUFBZSxHQUFHLDJDQUF4QjtBQUNBLE1BQU1DLGtCQUFrQixHQUN0QixvRUFERjtBQUVBLE1BQU1DLGtCQUFrQixHQUFHLDRDQUEzQjs7QUFPQSxTQUFTQyxhQUFULENBQTBCQyxLQUExQixFQUEyQ0MsUUFBM0MsRUFBZ0VDLEdBQWhFLEVBQTZFO0VBQzNFLElBQUlDLEtBQUo7O0VBQ0EsT0FBUUEsS0FBSyxHQUFHRixRQUFRLENBQUNHLElBQVQsQ0FBY0YsR0FBZCxDQUFoQixFQUFxQztJQUNuQyxNQUFNLEdBQUdHLEVBQUgsRUFBT0MsTUFBUCxFQUFlQyxHQUFmLElBQXNCSixLQUE1Qjs7SUFDQSxJQUFJLGlEQUEwQkssTUFBTSxDQUFDQyxzQkFBckMsRUFBNkQ7TUFDM0RDLG1CQUFtQixDQUFDUCxLQUFLLENBQUMsQ0FBRCxDQUFOLENBQW5CO0lBQ0Q7O0lBQ0QsTUFBTVEsT0FBTyxHQUFHTCxNQUFNLEdBQUksR0FBRUEsTUFBTyxHQUFFQyxHQUFJLEVBQW5CLEdBQXVCQSxHQUE3QztJQUNBUCxLQUFLLENBQUNBLEtBQU4sQ0FBWVcsT0FBWixJQUF1Qk4sRUFBdkIsQ0FObUMsQ0FNUjs7SUFDM0JMLEtBQUssQ0FBQ1ksV0FBTixDQUFrQkMsU0FBbEIsR0FQbUMsQ0FPSjtFQUNoQztBQUNGOztBQUVELFNBQVNDLE9BQVQsQ0FBb0JkLEtBQXBCLEVBQXFDQyxRQUFyQyxFQUEwREMsR0FBMUQsRUFBdUU7RUFDckUsSUFBSUMsS0FBSjs7RUFDQSxPQUFRQSxLQUFLLEdBQUdGLFFBQVEsQ0FBQ0csSUFBVCxDQUFjRixHQUFkLENBQWhCLEVBQXFDO0lBQ25DLE1BQU0sR0FBR0csRUFBSCxFQUFPRSxHQUFQLElBQWNKLEtBQXBCOztJQUNBLElBQUksaURBQTBCSyxNQUFNLENBQUNDLHNCQUFyQyxFQUE2RDtNQUMzREMsbUJBQW1CLENBQUNQLEtBQUssQ0FBQyxDQUFELENBQU4sQ0FBbkI7SUFDRDs7SUFDREgsS0FBSyxDQUFDQSxLQUFOLENBQVlPLEdBQVosSUFBbUJGLEVBQW5CLENBTG1DLENBS1o7O0lBQ3ZCTCxLQUFLLENBQUNZLFdBQU4sQ0FBa0JDLFNBQWxCLEdBTm1DLENBTUo7RUFDaEM7QUFDRjs7QUFFRCxPQUFPRSxxQkFBUCxNQUFrQyw0QkFBbEM7QUFTQSxTQUFRQyxLQUFSLEVBQWVDLFVBQWYsUUFBZ0MsVUFBaEM7QUFFQSxPQUFPQyxtQkFBUCxNQUFnQywwQkFBaEM7QUFFQSxTQUNFQyxnQkFERixFQUVFQyxjQUZGLEVBR0VDLG9CQUhGLEVBSUVDLG1CQUpGLEVBS0VDLGdCQUxGLEVBTUVDLG1CQU5GLFFBT08sUUFQUDtBQVFBLFNBQVFDLHNCQUFSLEVBQWdDZixtQkFBaEMsUUFBMEQsYUFBMUQ7O0FBYUEsTUFBTWdCLGVBQU4sQ0FBZ0Q7RUFlOUNDLFdBQVcsQ0FBQ0MsSUFBYyxHQUFHLEVBQWxCLEVBQXNCO0lBQy9CLEtBQUtDLGFBQUwsR0FBcUIsRUFBckI7SUFFQSxNQUFNQyxnQkFBZ0IsR0FBRyxJQUFJZixxQkFBSixDQUEwQmEsSUFBSSxDQUFDRyxNQUEvQixDQUF6Qjs7SUFDQSxNQUFNQyxVQUFVLEdBQUcsQ0FBQ2hDLEtBQUQsRUFBUUssRUFBUixFQUFZNEIsS0FBWixLQUFzQjtNQUN2QyxNQUFNO1FBQUMzQixNQUFEO1FBQVM0QjtNQUFULElBQWtCRCxLQUF4QjtNQUNBLE1BQU1FLEtBQW9CLEdBQUcsS0FBS04sYUFBTCxDQUFtQjdCLEtBQUssQ0FBQ08sR0FBekIsRUFBOEI0QixLQUEzRDtNQUNBLE1BQU1DLFFBQVEsR0FBR2hCLGNBQWMsQ0FBQ2YsRUFBRCxFQUFLQyxNQUFMLENBQS9CO01BQ0EsTUFBTStCLElBQUksR0FBR2xCLGdCQUFnQixDQUFDaUIsUUFBRCxFQUFXRixLQUFYLENBQTdCOztNQUNBLElBQUk7UUFDRkMsS0FBSyxDQUFDRyxVQUFOLENBQWlCRCxJQUFqQixFQUF1QkYsS0FBSyxDQUFDSSxRQUFOLENBQWVDLE1BQXRDOztRQUNBLElBQUksaURBQTBCaEMsTUFBTSxDQUFDQyxzQkFBckMsRUFBNkQ7VUFDM0RnQixzQkFBc0IsQ0FBQ1csUUFBRCxFQUFXRixLQUFYLENBQXRCO1FBQ0Q7TUFDRixDQUxELENBS0UsT0FBT08sQ0FBUCxFQUFVO1FBQ1YsMkNBQWE7VUFDWDtVQUNBQyxPQUFPLENBQUNDLElBQVIsQ0FDRywwQkFBeUJOLElBQUssd0RBRGpDO1FBR0Q7TUFDRjtJQUNGLENBbEJELENBSitCLENBd0IvQjs7O0lBQ0EsS0FBS08sVUFBTCxHQUFrQixJQUFJM0IsVUFBSixDQUNoQmEsZ0JBRGdCLEVBRWhCLENBQUNlLEtBQUQsRUFBUUMsTUFBUixFQUFnQkMsaUJBQWhCLEtBQXNDO01BQ3BDLE1BQU1DLFlBQVksR0FBR0MsUUFBUSxDQUFDQyxhQUFULENBQXVCLE9BQXZCLENBQXJCO01BQ0FGLFlBQVksQ0FBQ0gsS0FBYixHQUFxQkEsS0FBckI7O01BQ0EsSUFBSUUsaUJBQWlCLEtBQUssS0FBSyxDQUEvQixFQUFrQztRQUNoQyxLQUFLSSxTQUFMLENBQWVDLFdBQWYsQ0FBMkJKLFlBQTNCO01BQ0QsQ0FGRCxNQUVPO1FBQ0wsTUFBTUssaUJBQWlCLEdBQUdDLHVCQUF1QixDQUMvQyxLQUFLSCxTQUFMLENBQWVJLFFBRGdDLEVBRS9DUixpQkFGK0MsQ0FBakQ7UUFJQSxLQUFLSSxTQUFMLENBQWVLLFlBQWYsQ0FDRVIsWUFERixFQUVFLEtBQUtHLFNBQUwsQ0FBZUksUUFBZixDQUF3QkYsaUJBQXhCLENBRkY7TUFJRDs7TUFFRCxLQUFLeEIsYUFBTCxDQUFtQmdCLEtBQW5CLElBQTRCRyxZQUE1QjtJQUNELENBbkJlLEVBb0JoQmhCLFVBcEJnQixDQUFsQjtJQXVCQSxLQUFLeUIsY0FBTCxHQUFzQixJQUFJekMsS0FBSixDQUNwQixJQUFJRCxxQkFBSixDQUEwQmEsSUFBSSxDQUFDRyxNQUEvQixDQURvQixFQUVwQixDQUFDL0IsS0FBRCxFQUFRSyxFQUFSLEVBQVk0QixLQUFaLEtBQXNCO01BQ3BCLEtBQUtXLFVBQUwsQ0FBZ0JjLFFBQWhCLENBQXlCLEVBQXpCO01BQ0EsTUFBTXZCLEtBQW9CLEdBQUcsS0FBS04sYUFBTCxDQUFtQixFQUFuQixFQUF1Qk0sS0FBcEQ7TUFDQSxNQUFNRSxJQUFJLEdBQUdoQixvQkFBb0IsQ0FBQ2hCLEVBQUQsRUFBS2tCLGdCQUFnQixDQUFDVSxLQUFELENBQXJCLENBQWpDOztNQUNBLElBQUk7UUFDRkUsS0FBSyxDQUFDRyxVQUFOLENBQWlCRCxJQUFqQixFQUF1QkYsS0FBSyxDQUFDSSxRQUFOLENBQWVDLE1BQXRDO01BQ0QsQ0FGRCxDQUVFLE9BQU9DLENBQVAsRUFBVTtRQUNWLDJDQUFhO1VBQ1g7VUFDQUMsT0FBTyxDQUFDQyxJQUFSLENBQ0csMEJBQXlCTixJQUFLLHdEQURqQztRQUdEO01BQ0Y7SUFDRixDQWhCbUIsQ0FBdEI7SUFtQkEsS0FBS3NCLGFBQUwsR0FBcUIsSUFBSTNDLEtBQUosQ0FDbkIsSUFBSUQscUJBQUosQ0FBMEJhLElBQUksQ0FBQ0csTUFBL0IsQ0FEbUIsRUFFbkIsQ0FBQy9CLEtBQUQsRUFBUUssRUFBUixFQUFZNEIsS0FBWixLQUFzQjtNQUNwQixLQUFLVyxVQUFMLENBQWdCYyxRQUFoQixDQUF5QixFQUF6QjtNQUNBLE1BQU12QixLQUFvQixHQUFHLEtBQUtOLGFBQUwsQ0FBbUIsRUFBbkIsRUFBdUJNLEtBQXBEO01BQ0EsTUFBTUUsSUFBSSxHQUFHYixtQkFBbUIsQ0FBQ25CLEVBQUQsRUFBS2lCLG1CQUFtQixDQUFDVyxLQUFELENBQXhCLENBQWhDOztNQUNBLElBQUk7UUFDRkUsS0FBSyxDQUFDRyxVQUFOLENBQWlCRCxJQUFqQixFQUF1QkYsS0FBSyxDQUFDSSxRQUFOLENBQWVDLE1BQXRDO01BQ0QsQ0FGRCxDQUVFLE9BQU9DLENBQVAsRUFBVTtRQUNWLDJDQUFhO1VBQ1g7VUFDQUMsT0FBTyxDQUFDQyxJQUFSLENBQ0csMEJBQXlCTixJQUFLLHdEQURqQztRQUdEO01BQ0Y7SUFDRixDQWhCa0IsQ0FBckI7O0lBbUJBLElBQUlULElBQUksQ0FBQ3VCLFNBQVQsRUFBb0I7TUFDbEIsS0FBS0EsU0FBTCxHQUFpQnZCLElBQUksQ0FBQ3VCLFNBQXRCO0lBQ0QsQ0F4RjhCLENBMEYvQjs7O0lBQ0EsSUFBSXZCLElBQUksQ0FBQ2QsT0FBTCxJQUFnQmMsSUFBSSxDQUFDZCxPQUFMLENBQWEwQixNQUFiLEdBQXNCLENBQTFDLEVBQTZDO01BQzNDO01BQ0EsSUFBSSxDQUFDLEtBQUtXLFNBQVYsRUFBcUI7UUFDbkIsTUFBTVMsYUFBYSxHQUFHaEMsSUFBSSxDQUFDZCxPQUFMLENBQWEsQ0FBYixFQUFnQjhDLGFBQXRDOztRQUNBLElBQUlBLGFBQWEsS0FBSyxJQUFsQixJQUEwQkEsYUFBYSxLQUFLLEtBQUssQ0FBckQsRUFBd0Q7VUFDdEQsS0FBS1QsU0FBTCxHQUFpQlMsYUFBakI7UUFDRDtNQUNGOztNQUVELEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR2pDLElBQUksQ0FBQ2QsT0FBTCxDQUFhMEIsTUFBakMsRUFBeUNxQixDQUFDLEVBQTFDLEVBQThDO1FBQzVDLE1BQU1DLE9BQU8sR0FBR2xDLElBQUksQ0FBQ2QsT0FBTCxDQUFhK0MsQ0FBYixDQUFoQjtRQUNBLE1BQU1FLFdBQVcsR0FBR0QsT0FBTyxDQUFDRSxZQUFSLENBQXFCLGNBQXJCLENBQXBCOztRQUNBLElBQUlELFdBQVcsS0FBSyxXQUFwQixFQUFpQztVQUMvQmpELE9BQU8sQ0FBQyxLQUFLNkMsYUFBTixFQUFxQjdELGtCQUFyQixFQUF5Q2dFLE9BQU8sQ0FBQ0csV0FBakQsQ0FBUDtVQUNBO1FBQ0Q7O1FBQ0QsSUFBSUYsV0FBVyxLQUFLLFdBQXBCLEVBQWlDO1VBQy9CakQsT0FBTyxDQUFDLEtBQUsyQyxjQUFOLEVBQXNCNUQsa0JBQXRCLEVBQTBDaUUsT0FBTyxDQUFDRyxXQUFsRCxDQUFQO1VBQ0E7UUFDRDs7UUFDRCxNQUFNMUQsR0FBRyxHQUFHdUQsT0FBTyxDQUFDakIsS0FBUixHQUFnQmlCLE9BQU8sQ0FBQ2pCLEtBQXhCLEdBQWdDLEVBQTVDO1FBQ0EsS0FBS2hCLGFBQUwsQ0FBbUJ0QixHQUFuQixJQUEwQnVELE9BQTFCO1FBQ0EsTUFBTTlELEtBQUssR0FBRyxJQUFJZ0IsS0FBSixDQUFVYyxnQkFBVixFQUE0QkUsVUFBNUIsQ0FBZDtRQUNBaEMsS0FBSyxDQUFDTyxHQUFOLEdBQVlBLEdBQVo7UUFDQVIsYUFBYSxDQUFDQyxLQUFELEVBQVFKLGVBQVIsRUFBeUJrRSxPQUFPLENBQUNHLFdBQWpDLENBQWI7UUFDQSxLQUFLckIsVUFBTCxDQUFnQnNCLGVBQWhCLENBQWdDQyxJQUFoQyxDQUFxQzVELEdBQXJDO1FBQ0EsS0FBS3FDLFVBQUwsQ0FBZ0J3QixNQUFoQixDQUF1QjdELEdBQXZCLElBQThCUCxLQUE5QjtNQUNEO0lBQ0Y7O0lBRUQsSUFBSSxDQUFDLEtBQUttRCxTQUFWLEVBQXFCO01BQ25CLElBQUlGLFFBQVEsQ0FBQ29CLElBQVQsS0FBa0IsSUFBdEIsRUFBNEI7UUFDMUIsTUFBTSxJQUFJQyxLQUFKLENBQVUsb0RBQVYsQ0FBTjtNQUNEOztNQUNELEtBQUtuQixTQUFMLEdBQWlCRixRQUFRLENBQUNvQixJQUExQjtJQUNEO0VBQ0Y7O0VBRURFLFdBQVcsQ0FBQ0MsS0FBRCxFQUE2QjtJQUN0QyxPQUFPdEQsbUJBQW1CLENBQUMsS0FBSzBCLFVBQU4sRUFBa0I0QixLQUFsQixFQUF5QixFQUF6QixFQUE2QixFQUE3QixDQUExQjtFQUNEOztFQUVEQyxjQUFjLENBQUNDLFFBQUQsRUFBbUM7SUFDL0MsTUFBTW5FLEdBQUcsR0FBR2UsbUJBQW1CLENBQUNvRCxRQUFELENBQS9CO0lBQ0EsT0FBTyxLQUFLZixhQUFMLENBQW1CZ0IsUUFBbkIsQ0FBNEJwRSxHQUE1QixFQUFpQ21FLFFBQWpDLENBQVA7RUFDRDs7RUFFREUsZUFBZSxDQUFDQyxTQUFELEVBQXFDO0lBQ2xELE1BQU10RSxHQUFHLEdBQUdnQixnQkFBZ0IsQ0FBQ3NELFNBQUQsQ0FBNUI7SUFDQSxPQUFPLEtBQUtwQixjQUFMLENBQW9Ca0IsUUFBcEIsQ0FBNkJwRSxHQUE3QixFQUFrQ3NFLFNBQWxDLENBQVA7RUFDRDs7QUE1SjZDOztBQStKaEQsZUFBZW5ELGVBQWY7O0FBRUEsU0FBUzRCLHVCQUFULENBQWlDQyxRQUFqQyxFQUEyQ1YsS0FBM0MsRUFBa0Q7RUFDaEQsSUFBSWlDLEtBQUssR0FBRyxDQUFaOztFQUNBLE9BQU9BLEtBQUssR0FBR3ZCLFFBQVEsQ0FBQ2YsTUFBeEIsRUFBZ0NzQyxLQUFLLEVBQXJDLEVBQXlDO0lBQ3ZDLE1BQU1DLEtBQUssR0FBR3hCLFFBQVEsQ0FBQ3VCLEtBQUQsQ0FBdEI7O0lBQ0EsSUFDRUMsS0FBSyxDQUFDQyxPQUFOLEtBQWtCLE9BQWxCLElBQ0NELEtBQUQsQ0FBbUNsQyxLQUFuQyxLQUE2Q0EsS0FGL0MsRUFHRTtNQUNBLE9BQU9pQyxLQUFQO0lBQ0Q7RUFDRjs7RUFFRCxPQUFPLENBQUMsQ0FBUjtBQUNEIn0=","import * as React from \"react\";\nimport { Client as Styletron } from \"styletron-engine-atomic\";\nimport { Provider, DebugEngine } from \"styletron-react\";\nconst debugEngine = process.env.NODE_ENV !== `production` ? new DebugEngine() : undefined;\nexport function wrapRootElement({\n element\n}, {\n prefix,\n debug\n}) {\n const enableDebug = debug === true || typeof debug === `undefined`;\n const styleElements = document.querySelectorAll(`._styletron_hydrate_`);\n return /*#__PURE__*/React.createElement(Provider, {\n value: new Styletron({\n hydrate: styleElements,\n prefix\n }),\n debugMode: enableDebug ? debugEngine : undefined,\n debugAfterHydration: enableDebug\n }, element);\n}","const WebFont = require('webfontloader')\n\nexports.onInitialClientRender = (a, options) => {\n\toptions = { ...options }\n\tdelete options.plugins\n\tWebFont.load(options)\n}","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * @license React\n * react-server-dom-webpack.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var k=require(\"react\"),l={stream:!0},n=new Map,p=Symbol.for(\"react.element\"),q=Symbol.for(\"react.lazy\"),r=Symbol.for(\"react.default_value\"),t=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ContextRegistry;function u(a){t[a]||(t[a]=k.createServerContext(a,r));return t[a]}function v(a,b,c){this._status=a;this._value=b;this._response=c}v.prototype.then=function(a){0===this._status?(null===this._value&&(this._value=[]),this._value.push(a)):a()};\nfunction w(a){switch(a._status){case 3:return a._value;case 1:var b=JSON.parse(a._value,a._response._fromJSON);a._status=3;return a._value=b;case 2:b=a._value;for(var c=b.chunks,d=0;d
\"\",\n renderKeyframes: () => \"\",\n renderFontFace: () => \"\"\n};\nconst StyletronContext = /*#__PURE__*/React.createContext(noopEngine);\nconst HydrationContext = /*#__PURE__*/React.createContext(false);\nconst DebugEngineContext = /*#__PURE__*/React.createContext(undefined); //todo: theme context removed\n\nclass DevProvider extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hydrating: Boolean(props.debugAfterHydration)\n };\n }\n\n componentDidMount() {\n if (true) {\n if (this.state.hydrating === true) {\n this.setState({\n hydrating: false\n });\n }\n }\n }\n\n render() {\n return /*#__PURE__*/React.createElement(StyletronContext.Provider, {\n value: this.props.value\n }, /*#__PURE__*/React.createElement(DebugEngineContext.Provider, {\n value: this.props.debug\n }, /*#__PURE__*/React.createElement(HydrationContext.Provider, {\n value: this.state.hydrating\n }, this.props.children)));\n }\n\n}\n\nexport const Provider = true && process.env.NODE_ENV !== \"production\" ? DevProvider : StyletronContext.Provider;\n\nif (true && process.env.NODE_ENV !== \"production\" && !window.__STYLETRON_DEVTOOLS__) {\n setupDevtoolsExtension();\n}\n\nfunction checkNoopEngine(engine) {\n // if no engine provided, we default to no-op, handy for tests\n // however, print a warning in other envs\n if (process.env.NODE_ENV !== \"test\") {\n engine === noopEngine && // eslint-disable-next-line no-console\n console.warn(process.env.NODE_ENV !== \"production\" ? `\nStyletron has been switched to a no-op (test) mode.\n\nA Styletron styled component was rendered, but no Styletron engine instance was provided in React context.\n\nDid you forget to provide a Styletron engine instance to React context via using the Styletron provider component?\n\nNote: Providers and Consumers must come from the exact same React.createContext call to work.\nIf your app has multiple instances of the \"styletron-react\" package in your node_module tree,\nyour Provider may be coming from a different React.createContext call, which means the styled components\nwill not recieve the provided engine instance. This scenario can arise, for example, when using \"npm link\".\n` : `Styletron Provider is not set up. Defaulting to no-op.`);\n }\n}\n\nexport function useStyletron() {\n const styletronEngine = React.useContext(StyletronContext);\n const debugEngine = React.useContext(DebugEngineContext);\n const hydrating = React.useContext(HydrationContext);\n checkNoopEngine(styletronEngine);\n const debugClassName = React.useRef(\"\");\n const prevDebugClassNameDeps = React.useRef([]);\n return [function css(style) {\n const className = driver(style, styletronEngine);\n\n if (!(true && process.env.NODE_ENV !== \"production\")) {\n return className;\n }\n\n const {\n stack,\n message\n } = new Error(\"stacktrace source\");\n const nextDeps = [debugEngine, hydrating];\n\n if (prevDebugClassNameDeps.current[0] !== nextDeps[0] || prevDebugClassNameDeps.current[1] !== nextDeps[1]) {\n if (debugEngine && !hydrating) {\n debugClassName.current = debugEngine.debug({\n stackInfo: {\n stack,\n message\n },\n stackIndex: 1\n });\n }\n\n prevDebugClassNameDeps.current = nextDeps;\n }\n\n if (debugClassName.current) {\n return `${debugClassName.current} ${className}`;\n }\n\n return className;\n }];\n}\nexport function createStyled({\n getInitialStyle,\n driver,\n wrapper\n}) {\n function styled(base, styleArg) {\n if (process.env.NODE_ENV !== \"production\") {\n if (base.__STYLETRON__) {\n /* eslint-disable no-console */\n console.warn(\"It appears you are passing a styled component into `styled`.\");\n console.warn(\"For composition with existing styled components, use `withStyle` or `withTransform` instead.\");\n /* eslint-enable no-console */\n }\n }\n\n const baseStyletron = {\n reducers: [],\n base: base,\n driver,\n getInitialStyle,\n wrapper\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(baseStyletron, 2);\n }\n\n return createStyledElementComponent(autoComposeShallow(baseStyletron, styleArg));\n }\n\n return styled;\n}\nexport const styled = createStyled({\n getInitialStyle,\n driver,\n wrapper: Component => Component\n});\nexport const withTransform = (component, transformer) => {\n const styletron = component.__STYLETRON__;\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(styletron, 2);\n }\n\n return createStyledElementComponent(composeDynamic(styletron, transformer));\n};\nexport const withStyleDeep = (component, styleArg) => {\n // @ts-ignore\n const styletron = component.__STYLETRON__;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!styletron) {\n /* eslint-disable no-console */\n console.warn(\"The first parameter to `withStyle` must be a styled component (without extra wrappers).\");\n /* eslint-enable no-console */\n }\n }\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(styletron, 2);\n return createStyledElementComponent(addExtension(autoComposeDeep(styletron, styleArg), component, styleArg));\n } else {\n return createStyledElementComponent(autoComposeDeep(styletron, styleArg));\n }\n};\nexport const withStyle = withStyleDeep;\nexport const withWrapper = (component, wrapper) => {\n const styletron = component.__STYLETRON__;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!styletron) {\n /* eslint-disable no-console */\n console.warn(\"The first parameter to `withWrapper` must be a styled component (without extra wrappers).\");\n /* eslint-enable no-console */\n }\n }\n\n const composed = {\n getInitialStyle: styletron.getInitialStyle,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: wrapper,\n reducers: styletron.reducers\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(composed, 2);\n }\n\n return createStyledElementComponent(composed);\n};\nexport function autoComposeShallow(styletron, styleArg) {\n if (typeof styleArg === \"function\") {\n return dynamicComposeShallow(styletron, styleArg);\n }\n\n return staticComposeShallow(styletron, styleArg);\n}\n\nfunction addExtension(composed, component, styleArg) {\n return { ...composed,\n ext: {\n with: styleArg,\n name: component.displayName,\n base: component.__STYLETRON__.base,\n getInitialStyle: component.__STYLETRON__.reducers.length ? component.__STYLETRON__.reducers[0].reducer : component.__STYLETRON__.getInitialStyle\n }\n };\n}\n\nexport function autoComposeDeep(styletron, styleArg) {\n if (typeof styleArg === \"function\") {\n return dynamicComposeDeep(styletron, styleArg);\n }\n\n return staticComposeDeep(styletron, styleArg);\n}\nexport function staticComposeShallow(styletron, style) {\n return composeStatic(styletron, createShallowMergeReducer(style));\n}\nexport function staticComposeDeep(styletron, style) {\n return composeStatic(styletron, createDeepMergeReducer(style));\n}\nexport function dynamicComposeShallow(styletron, styleFn) {\n return composeDynamic(styletron, (style, props) => shallowMerge(style, styleFn(props)));\n}\nexport function dynamicComposeDeep(styletron, styleFn) {\n return composeDynamic(styletron, (style, props) => deepMerge(style, styleFn(props)));\n}\nexport function createShallowMergeReducer(style) {\n return {\n reducer: inputStyle => shallowMerge(inputStyle, style),\n assignmentCommutative: true,\n factory: createShallowMergeReducer,\n style: style\n };\n}\nexport function createDeepMergeReducer(style) {\n return {\n reducer: inputStyle => deepMerge(inputStyle, style),\n assignmentCommutative: true,\n factory: createDeepMergeReducer,\n style: style\n };\n}\nexport function composeStatic(styletron, reducerContainer) {\n if (styletron.reducers.length === 0) {\n const style = reducerContainer.reducer(styletron.getInitialStyle());\n const result = {\n reducers: styletron.reducers,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: styletron.wrapper,\n getInitialStyle: () => style\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n result.debug = styletron.debug;\n }\n\n return result;\n } else {\n const last = styletron.reducers[0];\n\n if (last.assignmentCommutative === true && reducerContainer.assignmentCommutative === true) {\n const composed = reducerContainer.reducer(last.style);\n const result = {\n getInitialStyle: styletron.getInitialStyle,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: styletron.wrapper,\n reducers: [last.factory(composed)].concat(styletron.reducers.slice(1))\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n result.debug = styletron.debug;\n }\n\n return result;\n }\n\n return composeDynamic(styletron, reducerContainer.reducer);\n }\n}\nexport function composeDynamic(styletron, reducer) {\n const composed = {\n getInitialStyle: styletron.getInitialStyle,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: styletron.wrapper,\n // @ts-ignore\n reducers: [{\n assignmentCommutative: false,\n reducer\n }].concat(styletron.reducers)\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n composed.debug = styletron.debug;\n }\n\n return composed;\n}\nexport function createStyledElementComponent(styletron) {\n const {\n reducers,\n base,\n driver,\n wrapper,\n getInitialStyle,\n ext\n } = styletron;\n\n if (true && process.env.NODE_ENV !== \"production\") {\n var debugStackInfo, debugStackIndex;\n\n if (styletron.debug) {\n debugStackInfo = styletron.debug.stackInfo;\n debugStackIndex = styletron.debug.stackIndex;\n }\n }\n\n if (true && process.env.NODE_ENV !== \"production\") {\n var debugClassName;\n }\n\n const StyledElement = /*#__PURE__*/React.forwardRef((props, ref) => {\n const styletron = React.useContext(StyletronContext);\n const debugEngine = React.useContext(DebugEngineContext);\n const hydrating = React.useContext(HydrationContext);\n checkNoopEngine(styletron);\n const elementProps = omitPrefixedKeys(props);\n let style = resolveStyle(getInitialStyle, reducers, props);\n\n if (props.$style) {\n if (typeof props.$style === \"function\") {\n style = deepMerge(style, props.$style(props));\n } else {\n style = deepMerge(style, props.$style);\n }\n }\n\n const styleClassString = driver(style, styletron);\n const Element = props.$as ? props.$as : base;\n elementProps.className = props.className ? `${props.className} ${styleClassString}` : styleClassString;\n\n if (true && process.env.NODE_ENV !== \"production\" && debugEngine && !hydrating) {\n if (!debugClassName) {\n debugClassName = debugEngine.debug({\n stackInfo: debugStackInfo,\n stackIndex: debugStackIndex\n });\n }\n\n const joined = `${debugClassName} ${elementProps.className}`;\n elementProps.className = joined;\n }\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n window.__STYLETRON_DEVTOOLS__.stylesMap.set(elementProps.className, style);\n\n if (ext) {\n window.__STYLETRON_DEVTOOLS__.extensionsMap.set(elementProps.className, {\n base: ext.base,\n displayName: ext.name,\n initialStyles: ext.getInitialStyle({}, props),\n styleOverrides: typeof ext.with === \"function\" ? ext.with(props) : ext.with\n });\n }\n }\n\n if (props.$ref) {\n // eslint-disable-next-line no-console\n console.warn(\"The prop `$ref` has been deprecated. Use `ref` instead. Refs are now forwarded with React.forwardRef.\");\n }\n\n return /*#__PURE__*/React.createElement(Element, _extends({}, elementProps, {\n ref: ref || props.$ref\n }));\n });\n const Wrapped = wrapper(StyledElement);\n Wrapped.__STYLETRON__ = {\n base,\n reducers,\n driver,\n wrapper,\n getInitialStyle\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n let displayName;\n\n if (typeof base === \"string\") {\n displayName = base;\n } else if (base.displayName) {\n displayName = base.displayName;\n } else if (base.name) {\n displayName = base.name;\n } else {\n displayName = \"Unknown\";\n }\n\n Wrapped.displayName = `Styled(${displayName})`;\n }\n\n return Wrapped;\n} // Utility functions\n\nexport function resolveStyle(getInitialStyle, reducers, props) {\n let result = getInitialStyle();\n let i = reducers.length;\n\n while (i--) {\n // Cast to allow passing unused props param in case of static reducer\n const reducer = reducers[i].reducer;\n result = reducer(result, props);\n }\n\n return result;\n}\n\nfunction isObject(x) {\n return typeof x === \"object\" && x !== null;\n}\n\nfunction omitPrefixedKeys(source) {\n const result = {};\n\n for (const key in source) {\n if (key[0] !== \"$\") {\n result[key] = source[key];\n }\n }\n\n return result;\n}\n\nfunction deepMerge(a, b) {\n const result = assign({}, a);\n\n for (const key in b) {\n const val = b[key];\n\n if (isObject(val) && isObject(a[key])) {\n result[key] = deepMerge(a[key], val);\n } else {\n result[key] = val;\n }\n }\n\n return result;\n}\n\nfunction shallowMerge(a, b) {\n return assign(assign({}, a), b);\n}\n\nfunction assign(target, source) {\n for (const key in source) {\n target[key] = source[key];\n }\n\n return target;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImRyaXZlciIsImdldEluaXRpYWxTdHlsZSIsImFkZERlYnVnTWV0YWRhdGEiLCJzZXR1cERldnRvb2xzRXh0ZW5zaW9uIiwiRGVidWdFbmdpbmUiLCJub29wRW5naW5lIiwicmVuZGVyU3R5bGUiLCJyZW5kZXJLZXlmcmFtZXMiLCJyZW5kZXJGb250RmFjZSIsIlN0eWxldHJvbkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiSHlkcmF0aW9uQ29udGV4dCIsIkRlYnVnRW5naW5lQ29udGV4dCIsInVuZGVmaW5lZCIsIkRldlByb3ZpZGVyIiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiaHlkcmF0aW5nIiwiQm9vbGVhbiIsImRlYnVnQWZ0ZXJIeWRyYXRpb24iLCJjb21wb25lbnREaWRNb3VudCIsInNldFN0YXRlIiwicmVuZGVyIiwidmFsdWUiLCJkZWJ1ZyIsImNoaWxkcmVuIiwiUHJvdmlkZXIiLCJ3aW5kb3ciLCJfX1NUWUxFVFJPTl9ERVZUT09MU19fIiwiY2hlY2tOb29wRW5naW5lIiwiZW5naW5lIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSIsIndhcm4iLCJ1c2VTdHlsZXRyb24iLCJzdHlsZXRyb25FbmdpbmUiLCJ1c2VDb250ZXh0IiwiZGVidWdFbmdpbmUiLCJkZWJ1Z0NsYXNzTmFtZSIsInVzZVJlZiIsInByZXZEZWJ1Z0NsYXNzTmFtZURlcHMiLCJjc3MiLCJzdHlsZSIsImNsYXNzTmFtZSIsInN0YWNrIiwibWVzc2FnZSIsIkVycm9yIiwibmV4dERlcHMiLCJjdXJyZW50Iiwic3RhY2tJbmZvIiwic3RhY2tJbmRleCIsImNyZWF0ZVN0eWxlZCIsIndyYXBwZXIiLCJzdHlsZWQiLCJiYXNlIiwic3R5bGVBcmciLCJfX1NUWUxFVFJPTl9fIiwiYmFzZVN0eWxldHJvbiIsInJlZHVjZXJzIiwiY3JlYXRlU3R5bGVkRWxlbWVudENvbXBvbmVudCIsImF1dG9Db21wb3NlU2hhbGxvdyIsIndpdGhUcmFuc2Zvcm0iLCJjb21wb25lbnQiLCJ0cmFuc2Zvcm1lciIsInN0eWxldHJvbiIsImNvbXBvc2VEeW5hbWljIiwid2l0aFN0eWxlRGVlcCIsImFkZEV4dGVuc2lvbiIsImF1dG9Db21wb3NlRGVlcCIsIndpdGhTdHlsZSIsIndpdGhXcmFwcGVyIiwiY29tcG9zZWQiLCJkeW5hbWljQ29tcG9zZVNoYWxsb3ciLCJzdGF0aWNDb21wb3NlU2hhbGxvdyIsImV4dCIsIndpdGgiLCJuYW1lIiwiZGlzcGxheU5hbWUiLCJsZW5ndGgiLCJyZWR1Y2VyIiwiZHluYW1pY0NvbXBvc2VEZWVwIiwic3RhdGljQ29tcG9zZURlZXAiLCJjb21wb3NlU3RhdGljIiwiY3JlYXRlU2hhbGxvd01lcmdlUmVkdWNlciIsImNyZWF0ZURlZXBNZXJnZVJlZHVjZXIiLCJzdHlsZUZuIiwic2hhbGxvd01lcmdlIiwiZGVlcE1lcmdlIiwiaW5wdXRTdHlsZSIsImFzc2lnbm1lbnRDb21tdXRhdGl2ZSIsImZhY3RvcnkiLCJyZWR1Y2VyQ29udGFpbmVyIiwicmVzdWx0IiwibGFzdCIsImNvbmNhdCIsInNsaWNlIiwiZGVidWdTdGFja0luZm8iLCJkZWJ1Z1N0YWNrSW5kZXgiLCJTdHlsZWRFbGVtZW50IiwiZm9yd2FyZFJlZiIsInJlZiIsImVsZW1lbnRQcm9wcyIsIm9taXRQcmVmaXhlZEtleXMiLCJyZXNvbHZlU3R5bGUiLCIkc3R5bGUiLCJzdHlsZUNsYXNzU3RyaW5nIiwiRWxlbWVudCIsIiRhcyIsImpvaW5lZCIsInN0eWxlc01hcCIsInNldCIsImV4dGVuc2lvbnNNYXAiLCJpbml0aWFsU3R5bGVzIiwic3R5bGVPdmVycmlkZXMiLCIkcmVmIiwiV3JhcHBlZCIsImkiLCJpc09iamVjdCIsIngiLCJzb3VyY2UiLCJrZXkiLCJhIiwiYiIsImFzc2lnbiIsInZhbCIsInRhcmdldCJdLCJzb3VyY2VzIjpbInNyYy9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycywgbm8tcmVkZWNsYXJlLCBuby1zaGFkb3cgKi9cblxuZGVjbGFyZSB2YXIgX19ERVZfXzogYm9vbGVhbjtcblxuZGVjbGFyZSB2YXIgX19CUk9XU0VSX186IGJvb2xlYW47XG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fU1RZTEVUUk9OX0RFVlRPT0xTX186IGFueTtcbiAgfVxufVxuXG5kZWNsYXJlIHZhciBwcm9jZXNzOiBhbnk7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgZHJpdmVyLFxuICBnZXRJbml0aWFsU3R5bGUsXG4gIHR5cGUgU3RhbmRhcmRFbmdpbmUsXG4gIHR5cGUgU3R5bGVPYmplY3QsXG59IGZyb20gXCJzdHlsZXRyb24tc3RhbmRhcmRcIjtcblxuaW1wb3J0IHR5cGUge1xuICBTdHlsZXRyb24sXG4gIFN0eWxldHJvbkNvbXBvbmVudCxcbiAgUmVkdWNlckNvbnRhaW5lcixcbiAgQXNzaWdubWVudENvbW11dGF0aXZlUmVkdWNlckNvbnRhaW5lcixcbiAgTm9uQXNzaWdubWVudENvbW11dGF0aXZlUmVkdWNlckNvbnRhaW5lcixcbiAgU3R5bGVkRm4sXG4gIFdpdGhTdHlsZUZuLFxuICBXaXRoVHJhbnNmb3JtRm4sXG4gIFdpdGhXcmFwcGVyRm4sXG4gIFN0eWxldHJvblByb3BzLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgYWRkRGVidWdNZXRhZGF0YSxcbiAgc2V0dXBEZXZ0b29sc0V4dGVuc2lvbixcbiAgRGVidWdFbmdpbmUsXG59IGZyb20gXCIuL2Rldi10b29sXCI7XG5cbmV4cG9ydCB7RGVidWdFbmdpbmV9O1xuZXhwb3J0IHR5cGUge1N0eWxlT2JqZWN0fTtcbmV4cG9ydCB0eXBlIHtTdHlsZXRyb25Qcm9wc307XG5leHBvcnQgdHlwZSB7U3R5bGV0cm9uQ29tcG9uZW50fTtcblxuY29uc3Qgbm9vcEVuZ2luZSA9IHtcbiAgcmVuZGVyU3R5bGU6ICgpID0+IFwiXCIsXG4gIHJlbmRlcktleWZyYW1lczogKCkgPT4gXCJcIixcbiAgcmVuZGVyRm9udEZhY2U6ICgpID0+IFwiXCIsXG59O1xuXG5jb25zdCBTdHlsZXRyb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxTdGFuZGFyZEVuZ2luZT4obm9vcEVuZ2luZSk7XG5jb25zdCBIeWRyYXRpb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChmYWxzZSk7XG5jb25zdCBEZWJ1Z0VuZ2luZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFxuICBJbnN0YW5jZVR5cGU8dHlwZW9mIERlYnVnRW5naW5lPiB8IHVuZGVmaW5lZFxuPih1bmRlZmluZWQpO1xuLy90b2RvOiB0aGVtZSBjb250ZXh0IHJlbW92ZWRcblxudHlwZSBEZXZQcm92aWRlclByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICB2YWx1ZTogU3RhbmRhcmRFbmdpbmU7XG4gIGRlYnVnQWZ0ZXJIeWRyYXRpb24/OiBib29sZWFuO1xuICBkZWJ1Zz86IGFueTtcbn07XG5cbmNsYXNzIERldlByb3ZpZGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxuICBEZXZQcm92aWRlclByb3BzLFxuICB7XG4gICAgaHlkcmF0aW5nOiBib29sZWFuO1xuICB9XG4+IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IERldlByb3ZpZGVyUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGh5ZHJhdGluZzogQm9vbGVhbihwcm9wcy5kZWJ1Z0FmdGVySHlkcmF0aW9uKSxcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgaWYgKF9fQlJPV1NFUl9fKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5oeWRyYXRpbmcgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaHlkcmF0aW5nOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGV0cm9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhpcy5wcm9wcy52YWx1ZX0+XG4gICAgICAgIDxEZWJ1Z0VuZ2luZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3RoaXMucHJvcHMuZGVidWd9PlxuICAgICAgICAgIDxIeWRyYXRpb25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnN0YXRlLmh5ZHJhdGluZ30+XG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICA8L0h5ZHJhdGlvbkNvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvRGVidWdFbmdpbmVDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9TdHlsZXRyb25Db250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFByb3ZpZGVyID1cbiAgX19CUk9XU0VSX18gJiYgX19ERVZfXyA/IERldlByb3ZpZGVyIDogU3R5bGV0cm9uQ29udGV4dC5Qcm92aWRlcjtcblxuaWYgKF9fQlJPV1NFUl9fICYmIF9fREVWX18gJiYgIXdpbmRvdy5fX1NUWUxFVFJPTl9ERVZUT09MU19fKSB7XG4gIHNldHVwRGV2dG9vbHNFeHRlbnNpb24oKTtcbn1cblxudHlwZSBjcmVhdGVTdHlsZWRPcHRzID0ge1xuICBnZXRJbml0aWFsU3R5bGU6ICgpID0+IFN0eWxlT2JqZWN0O1xuICBkcml2ZXI6IHR5cGVvZiBkcml2ZXI7XG4gIHdyYXBwZXI6IChmYzogUmVhY3QuRkM8YW55PikgPT4gUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+O1xufTtcblxuZnVuY3Rpb24gY2hlY2tOb29wRW5naW5lKGVuZ2luZTogU3RhbmRhcmRFbmdpbmUpIHtcbiAgLy8gaWYgbm8gZW5naW5lIHByb3ZpZGVkLCB3ZSBkZWZhdWx0IHRvIG5vLW9wLCBoYW5keSBmb3IgdGVzdHNcbiAgLy8gaG93ZXZlciwgcHJpbnQgYSB3YXJuaW5nIGluIG90aGVyIGVudnNcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInRlc3RcIikge1xuICAgIGVuZ2luZSA9PT0gbm9vcEVuZ2luZSAmJlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgX19ERVZfX1xuICAgICAgICAgID8gYFxuU3R5bGV0cm9uIGhhcyBiZWVuIHN3aXRjaGVkIHRvIGEgbm8tb3AgKHRlc3QpIG1vZGUuXG5cbkEgU3R5bGV0cm9uIHN0eWxlZCBjb21wb25lbnQgd2FzIHJlbmRlcmVkLCBidXQgbm8gU3R5bGV0cm9uIGVuZ2luZSBpbnN0YW5jZSB3YXMgcHJvdmlkZWQgaW4gUmVhY3QgY29udGV4dC5cblxuRGlkIHlvdSBmb3JnZXQgdG8gcHJvdmlkZSBhIFN0eWxldHJvbiBlbmdpbmUgaW5zdGFuY2UgdG8gUmVhY3QgY29udGV4dCB2aWEgdXNpbmcgdGhlIFN0eWxldHJvbiBwcm92aWRlciBjb21wb25lbnQ/XG5cbk5vdGU6IFByb3ZpZGVycyBhbmQgQ29uc3VtZXJzIG11c3QgY29tZSBmcm9tIHRoZSBleGFjdCBzYW1lIFJlYWN0LmNyZWF0ZUNvbnRleHQgY2FsbCB0byB3b3JrLlxuSWYgeW91ciBhcHAgaGFzIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgXCJzdHlsZXRyb24tcmVhY3RcIiBwYWNrYWdlIGluIHlvdXIgbm9kZV9tb2R1bGUgdHJlZSxcbnlvdXIgUHJvdmlkZXIgbWF5IGJlIGNvbWluZyBmcm9tIGEgZGlmZmVyZW50IFJlYWN0LmNyZWF0ZUNvbnRleHQgY2FsbCwgd2hpY2ggbWVhbnMgdGhlIHN0eWxlZCBjb21wb25lbnRzXG53aWxsIG5vdCByZWNpZXZlIHRoZSBwcm92aWRlZCBlbmdpbmUgaW5zdGFuY2UuIFRoaXMgc2NlbmFyaW8gY2FuIGFyaXNlLCBmb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBcIm5wbSBsaW5rXCIuXG5gXG4gICAgICAgICAgOiBgU3R5bGV0cm9uIFByb3ZpZGVyIGlzIG5vdCBzZXQgdXAuIERlZmF1bHRpbmcgdG8gbm8tb3AuYCxcbiAgICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0eWxldHJvbigpOiBbKHN0eWxlOiBTdHlsZU9iamVjdCkgPT4gc3RyaW5nXSB7XG4gIGNvbnN0IHN0eWxldHJvbkVuZ2luZTogU3RhbmRhcmRFbmdpbmUgPSBSZWFjdC51c2VDb250ZXh0KFN0eWxldHJvbkNvbnRleHQpO1xuICBjb25zdCBkZWJ1Z0VuZ2luZSA9IFJlYWN0LnVzZUNvbnRleHQoRGVidWdFbmdpbmVDb250ZXh0KTtcbiAgY29uc3QgaHlkcmF0aW5nID0gUmVhY3QudXNlQ29udGV4dChIeWRyYXRpb25Db250ZXh0KTtcbiAgY2hlY2tOb29wRW5naW5lKHN0eWxldHJvbkVuZ2luZSk7XG5cbiAgY29uc3QgZGVidWdDbGFzc05hbWUgPSBSZWFjdC51c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihcIlwiKTtcbiAgY29uc3QgcHJldkRlYnVnQ2xhc3NOYW1lRGVwcyA9IFJlYWN0LnVzZVJlZihbXSk7XG5cbiAgcmV0dXJuIFtcbiAgICBmdW5jdGlvbiBjc3Moc3R5bGU6IFN0eWxlT2JqZWN0KSB7XG4gICAgICBjb25zdCBjbGFzc05hbWUgPSBkcml2ZXIoc3R5bGUsIHN0eWxldHJvbkVuZ2luZSk7XG4gICAgICBpZiAoIShfX0JST1dTRVJfXyAmJiBfX0RFVl9fKSkge1xuICAgICAgICByZXR1cm4gY2xhc3NOYW1lO1xuICAgICAgfVxuICAgICAgY29uc3Qge3N0YWNrLCBtZXNzYWdlfSA9IG5ldyBFcnJvcihcInN0YWNrdHJhY2Ugc291cmNlXCIpO1xuXG4gICAgICBjb25zdCBuZXh0RGVwcyA9IFtkZWJ1Z0VuZ2luZSwgaHlkcmF0aW5nXTtcbiAgICAgIGlmIChcbiAgICAgICAgcHJldkRlYnVnQ2xhc3NOYW1lRGVwcy5jdXJyZW50WzBdICE9PSBuZXh0RGVwc1swXSB8fFxuICAgICAgICBwcmV2RGVidWdDbGFzc05hbWVEZXBzLmN1cnJlbnRbMV0gIT09IG5leHREZXBzWzFdXG4gICAgICApIHtcbiAgICAgICAgaWYgKGRlYnVnRW5naW5lICYmICFoeWRyYXRpbmcpIHtcbiAgICAgICAgICBkZWJ1Z0NsYXNzTmFtZS5jdXJyZW50ID0gZGVidWdFbmdpbmUuZGVidWcoe1xuICAgICAgICAgICAgc3RhY2tJbmZvOiB7c3RhY2ssIG1lc3NhZ2V9LFxuICAgICAgICAgICAgc3RhY2tJbmRleDogMSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBwcmV2RGVidWdDbGFzc05hbWVEZXBzLmN1cnJlbnQgPSBuZXh0RGVwcztcbiAgICAgIH1cblxuICAgICAgaWYgKGRlYnVnQ2xhc3NOYW1lLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGAke2RlYnVnQ2xhc3NOYW1lLmN1cnJlbnR9ICR7Y2xhc3NOYW1lfWA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbGFzc05hbWU7XG4gICAgfSxcbiAgXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0eWxlZCh7XG4gIGdldEluaXRpYWxTdHlsZSxcbiAgZHJpdmVyLFxuICB3cmFwcGVyLFxufTogY3JlYXRlU3R5bGVkT3B0cyk6IFN0eWxlZEZuIHtcbiAgZnVuY3Rpb24gc3R5bGVkKGJhc2U6IGFueSwgc3R5bGVBcmcpIHtcbiAgICBpZiAoX19ERVZfXykge1xuICAgICAgaWYgKGJhc2UuX19TVFlMRVRST05fXykge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBcIkl0IGFwcGVhcnMgeW91IGFyZSBwYXNzaW5nIGEgc3R5bGVkIGNvbXBvbmVudCBpbnRvIGBzdHlsZWRgLlwiLFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgXCJGb3IgY29tcG9zaXRpb24gd2l0aCBleGlzdGluZyBzdHlsZWQgY29tcG9uZW50cywgdXNlIGB3aXRoU3R5bGVgIG9yIGB3aXRoVHJhbnNmb3JtYCBpbnN0ZWFkLlwiLFxuICAgICAgICApO1xuICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUgKi9cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBiYXNlU3R5bGV0cm9uOiBTdHlsZXRyb24gPSB7XG4gICAgICByZWR1Y2VyczogW10sXG4gICAgICBiYXNlOiBiYXNlLFxuICAgICAgZHJpdmVyLFxuICAgICAgZ2V0SW5pdGlhbFN0eWxlLFxuICAgICAgd3JhcHBlcixcbiAgICB9O1xuXG4gICAgaWYgKF9fQlJPV1NFUl9fICYmIF9fREVWX18pIHtcbiAgICAgIGFkZERlYnVnTWV0YWRhdGEoYmFzZVN0eWxldHJvbiwgMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNyZWF0ZVN0eWxlZEVsZW1lbnRDb21wb25lbnQoXG4gICAgICBhdXRvQ29tcG9zZVNoYWxsb3coYmFzZVN0eWxldHJvbiwgc3R5bGVBcmcpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gc3R5bGVkO1xufVxuXG5leHBvcnQgY29uc3Qgc3R5bGVkOiBTdHlsZWRGbiA9IGNyZWF0ZVN0eWxlZCh7XG4gIGdldEluaXRpYWxTdHlsZSxcbiAgZHJpdmVyLFxuICB3cmFwcGVyOiBDb21wb25lbnQgPT4gQ29tcG9uZW50LFxufSk7XG5cbmV4cG9ydCBjb25zdCB3aXRoVHJhbnNmb3JtOiBXaXRoVHJhbnNmb3JtRm4gPSAoY29tcG9uZW50LCB0cmFuc2Zvcm1lcikgPT4ge1xuICBjb25zdCBzdHlsZXRyb24gPSBjb21wb25lbnQuX19TVFlMRVRST05fXztcblxuICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXykge1xuICAgIGFkZERlYnVnTWV0YWRhdGEoc3R5bGV0cm9uLCAyKTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVTdHlsZWRFbGVtZW50Q29tcG9uZW50KGNvbXBvc2VEeW5hbWljKHN0eWxldHJvbiwgdHJhbnNmb3JtZXIpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB3aXRoU3R5bGVEZWVwOiBXaXRoU3R5bGVGbiA9IChjb21wb25lbnQsIHN0eWxlQXJnKSA9PiB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3Qgc3R5bGV0cm9uID0gY29tcG9uZW50Ll9fU1RZTEVUUk9OX187XG5cbiAgaWYgKF9fREVWX18pIHtcbiAgICBpZiAoIXN0eWxldHJvbikge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gYHdpdGhTdHlsZWAgbXVzdCBiZSBhIHN0eWxlZCBjb21wb25lbnQgKHdpdGhvdXQgZXh0cmEgd3JhcHBlcnMpLlwiLFxuICAgICAgKTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuICAgIH1cbiAgfVxuXG4gIGlmIChfX0JST1dTRVJfXyAmJiBfX0RFVl9fKSB7XG4gICAgYWRkRGVidWdNZXRhZGF0YShzdHlsZXRyb24sIDIpO1xuICAgIHJldHVybiBjcmVhdGVTdHlsZWRFbGVtZW50Q29tcG9uZW50KFxuICAgICAgYWRkRXh0ZW5zaW9uKGF1dG9Db21wb3NlRGVlcChzdHlsZXRyb24sIHN0eWxlQXJnKSwgY29tcG9uZW50LCBzdHlsZUFyZyksXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3JlYXRlU3R5bGVkRWxlbWVudENvbXBvbmVudChhdXRvQ29tcG9zZURlZXAoc3R5bGV0cm9uLCBzdHlsZUFyZykpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgd2l0aFN0eWxlID0gd2l0aFN0eWxlRGVlcDtcblxuZXhwb3J0IGNvbnN0IHdpdGhXcmFwcGVyOiBXaXRoV3JhcHBlckZuID0gKGNvbXBvbmVudCwgd3JhcHBlcikgPT4ge1xuICBjb25zdCBzdHlsZXRyb24gPSBjb21wb25lbnQuX19TVFlMRVRST05fXztcblxuICBpZiAoX19ERVZfXykge1xuICAgIGlmICghc3R5bGV0cm9uKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiVGhlIGZpcnN0IHBhcmFtZXRlciB0byBgd2l0aFdyYXBwZXJgIG11c3QgYmUgYSBzdHlsZWQgY29tcG9uZW50ICh3aXRob3V0IGV4dHJhIHdyYXBwZXJzKS5cIixcbiAgICAgICk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUgKi9cbiAgICB9XG4gIH1cblxuICBjb25zdCBjb21wb3NlZCA9IHtcbiAgICBnZXRJbml0aWFsU3R5bGU6IHN0eWxldHJvbi5nZXRJbml0aWFsU3R5bGUsXG4gICAgYmFzZTogc3R5bGV0cm9uLmJhc2UsXG4gICAgZHJpdmVyOiBzdHlsZXRyb24uZHJpdmVyLFxuICAgIHdyYXBwZXI6IHdyYXBwZXIsXG4gICAgcmVkdWNlcnM6IHN0eWxldHJvbi5yZWR1Y2VycyxcbiAgfTtcblxuICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXykge1xuICAgIGFkZERlYnVnTWV0YWRhdGEoY29tcG9zZWQsIDIpO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVN0eWxlZEVsZW1lbnRDb21wb25lbnQoY29tcG9zZWQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGF1dG9Db21wb3NlU2hhbGxvdzxQcm9wcz4oXG4gIHN0eWxldHJvbjogU3R5bGV0cm9uLFxuICBzdHlsZUFyZzogU3R5bGVPYmplY3QgfCAoKGE6IFByb3BzKSA9PiBTdHlsZU9iamVjdCksXG4pIHtcbiAgaWYgKHR5cGVvZiBzdHlsZUFyZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGR5bmFtaWNDb21wb3NlU2hhbGxvdyhzdHlsZXRyb24sIHN0eWxlQXJnKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0aWNDb21wb3NlU2hhbGxvdyhzdHlsZXRyb24sIHN0eWxlQXJnKTtcbn1cblxuZnVuY3Rpb24gYWRkRXh0ZW5zaW9uKGNvbXBvc2VkLCBjb21wb25lbnQsIHN0eWxlQXJnKSB7XG4gIHJldHVybiB7XG4gICAgLi4uY29tcG9zZWQsXG4gICAgZXh0OiB7XG4gICAgICB3aXRoOiBzdHlsZUFyZyxcbiAgICAgIG5hbWU6IGNvbXBvbmVudC5kaXNwbGF5TmFtZSxcbiAgICAgIGJhc2U6IGNvbXBvbmVudC5fX1NUWUxFVFJPTl9fLmJhc2UsXG4gICAgICBnZXRJbml0aWFsU3R5bGU6IGNvbXBvbmVudC5fX1NUWUxFVFJPTl9fLnJlZHVjZXJzLmxlbmd0aFxuICAgICAgICA/IGNvbXBvbmVudC5fX1NUWUxFVFJPTl9fLnJlZHVjZXJzWzBdLnJlZHVjZXJcbiAgICAgICAgOiBjb21wb25lbnQuX19TVFlMRVRST05fXy5nZXRJbml0aWFsU3R5bGUsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF1dG9Db21wb3NlRGVlcDxQcm9wcz4oXG4gIHN0eWxldHJvbjogU3R5bGV0cm9uLFxuICBzdHlsZUFyZzogU3R5bGVPYmplY3QgfCAoKGE6IFByb3BzKSA9PiBTdHlsZU9iamVjdCksXG4pIHtcbiAgaWYgKHR5cGVvZiBzdHlsZUFyZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGR5bmFtaWNDb21wb3NlRGVlcChzdHlsZXRyb24sIHN0eWxlQXJnKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0aWNDb21wb3NlRGVlcChzdHlsZXRyb24sIHN0eWxlQXJnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRpY0NvbXBvc2VTaGFsbG93KHN0eWxldHJvbjogU3R5bGV0cm9uLCBzdHlsZTogU3R5bGVPYmplY3QpIHtcbiAgcmV0dXJuIGNvbXBvc2VTdGF0aWMoc3R5bGV0cm9uLCBjcmVhdGVTaGFsbG93TWVyZ2VSZWR1Y2VyKHN0eWxlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0aWNDb21wb3NlRGVlcChzdHlsZXRyb246IFN0eWxldHJvbiwgc3R5bGU6IFN0eWxlT2JqZWN0KSB7XG4gIHJldHVybiBjb21wb3NlU3RhdGljKHN0eWxldHJvbiwgY3JlYXRlRGVlcE1lcmdlUmVkdWNlcihzdHlsZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZHluYW1pY0NvbXBvc2VTaGFsbG93PFByb3BzPihcbiAgc3R5bGV0cm9uOiBTdHlsZXRyb24sXG4gIHN0eWxlRm46IChhOiBQcm9wcykgPT4gU3R5bGVPYmplY3QsXG4pIHtcbiAgcmV0dXJuIGNvbXBvc2VEeW5hbWljPFByb3BzPihzdHlsZXRyb24sIChzdHlsZSwgcHJvcHMpID0+XG4gICAgc2hhbGxvd01lcmdlKHN0eWxlLCBzdHlsZUZuKHByb3BzKSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkeW5hbWljQ29tcG9zZURlZXA8UHJvcHM+KFxuICBzdHlsZXRyb246IFN0eWxldHJvbixcbiAgc3R5bGVGbjogKGE6IFByb3BzKSA9PiBTdHlsZU9iamVjdCxcbikge1xuICByZXR1cm4gY29tcG9zZUR5bmFtaWM8UHJvcHM+KHN0eWxldHJvbiwgKHN0eWxlLCBwcm9wcykgPT5cbiAgICBkZWVwTWVyZ2Uoc3R5bGUsIHN0eWxlRm4ocHJvcHMpKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNoYWxsb3dNZXJnZVJlZHVjZXIoXG4gIHN0eWxlOiBTdHlsZU9iamVjdCxcbik6IEFzc2lnbm1lbnRDb21tdXRhdGl2ZVJlZHVjZXJDb250YWluZXIge1xuICByZXR1cm4ge1xuICAgIHJlZHVjZXI6IGlucHV0U3R5bGUgPT4gc2hhbGxvd01lcmdlKGlucHV0U3R5bGUsIHN0eWxlKSxcbiAgICBhc3NpZ25tZW50Q29tbXV0YXRpdmU6IHRydWUsXG4gICAgZmFjdG9yeTogY3JlYXRlU2hhbGxvd01lcmdlUmVkdWNlcixcbiAgICBzdHlsZTogc3R5bGUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWVwTWVyZ2VSZWR1Y2VyKFxuICBzdHlsZTogU3R5bGVPYmplY3QsXG4pOiBBc3NpZ25tZW50Q29tbXV0YXRpdmVSZWR1Y2VyQ29udGFpbmVyIHtcbiAgcmV0dXJuIHtcbiAgICByZWR1Y2VyOiBpbnB1dFN0eWxlID0+IGRlZXBNZXJnZShpbnB1dFN0eWxlLCBzdHlsZSksXG4gICAgYXNzaWdubWVudENvbW11dGF0aXZlOiB0cnVlLFxuICAgIGZhY3Rvcnk6IGNyZWF0ZURlZXBNZXJnZVJlZHVjZXIsXG4gICAgc3R5bGU6IHN0eWxlLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZVN0YXRpYyhcbiAgc3R5bGV0cm9uOiBTdHlsZXRyb24sXG4gIHJlZHVjZXJDb250YWluZXI6IEFzc2lnbm1lbnRDb21tdXRhdGl2ZVJlZHVjZXJDb250YWluZXIsXG4pIHtcbiAgaWYgKHN0eWxldHJvbi5yZWR1Y2Vycy5sZW5ndGggPT09IDApIHtcbiAgICBjb25zdCBzdHlsZSA9IHJlZHVjZXJDb250YWluZXIucmVkdWNlcihzdHlsZXRyb24uZ2V0SW5pdGlhbFN0eWxlKCkpO1xuICAgIGNvbnN0IHJlc3VsdDogU3R5bGV0cm9uID0ge1xuICAgICAgcmVkdWNlcnM6IHN0eWxldHJvbi5yZWR1Y2VycyxcbiAgICAgIGJhc2U6IHN0eWxldHJvbi5iYXNlLFxuICAgICAgZHJpdmVyOiBzdHlsZXRyb24uZHJpdmVyLFxuICAgICAgd3JhcHBlcjogc3R5bGV0cm9uLndyYXBwZXIsXG4gICAgICBnZXRJbml0aWFsU3R5bGU6ICgpID0+IHN0eWxlLFxuICAgIH07XG4gICAgaWYgKF9fQlJPV1NFUl9fICYmIF9fREVWX18pIHtcbiAgICAgIHJlc3VsdC5kZWJ1ZyA9IHN0eWxldHJvbi5kZWJ1ZztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsYXN0ID0gc3R5bGV0cm9uLnJlZHVjZXJzWzBdO1xuXG4gICAgaWYgKFxuICAgICAgbGFzdC5hc3NpZ25tZW50Q29tbXV0YXRpdmUgPT09IHRydWUgJiZcbiAgICAgIHJlZHVjZXJDb250YWluZXIuYXNzaWdubWVudENvbW11dGF0aXZlID09PSB0cnVlXG4gICAgKSB7XG4gICAgICBjb25zdCBjb21wb3NlZCA9IHJlZHVjZXJDb250YWluZXIucmVkdWNlcihsYXN0LnN0eWxlKTtcblxuICAgICAgY29uc3QgcmVzdWx0OiBTdHlsZXRyb24gPSB7XG4gICAgICAgIGdldEluaXRpYWxTdHlsZTogc3R5bGV0cm9uLmdldEluaXRpYWxTdHlsZSxcbiAgICAgICAgYmFzZTogc3R5bGV0cm9uLmJhc2UsXG4gICAgICAgIGRyaXZlcjogc3R5bGV0cm9uLmRyaXZlcixcbiAgICAgICAgd3JhcHBlcjogc3R5bGV0cm9uLndyYXBwZXIsXG4gICAgICAgIHJlZHVjZXJzOiBbbGFzdC5mYWN0b3J5KGNvbXBvc2VkKV0uY29uY2F0KFxuICAgICAgICAgIHN0eWxldHJvbi5yZWR1Y2Vycy5zbGljZSgxKSBhcyBhbnksXG4gICAgICAgICksXG4gICAgICB9O1xuXG4gICAgICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXykge1xuICAgICAgICByZXN1bHQuZGVidWcgPSBzdHlsZXRyb24uZGVidWc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvc2VEeW5hbWljKHN0eWxldHJvbiwgcmVkdWNlckNvbnRhaW5lci5yZWR1Y2VyKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZUR5bmFtaWM8UHJvcHM+KFxuICBzdHlsZXRyb246IFN0eWxldHJvbixcbiAgcmVkdWNlcjogKGI6IFN0eWxlT2JqZWN0LCBhOiBQcm9wcykgPT4gU3R5bGVPYmplY3QsXG4pIHtcbiAgY29uc3QgY29tcG9zZWQ6IFN0eWxldHJvbiA9IHtcbiAgICBnZXRJbml0aWFsU3R5bGU6IHN0eWxldHJvbi5nZXRJbml0aWFsU3R5bGUsXG4gICAgYmFzZTogc3R5bGV0cm9uLmJhc2UsXG4gICAgZHJpdmVyOiBzdHlsZXRyb24uZHJpdmVyLFxuICAgIHdyYXBwZXI6IHN0eWxldHJvbi53cmFwcGVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZWR1Y2VyczogW3thc3NpZ25tZW50Q29tbXV0YXRpdmU6IGZhbHNlLCByZWR1Y2VyfV0uY29uY2F0KFxuICAgICAgc3R5bGV0cm9uLnJlZHVjZXJzLFxuICAgICksXG4gIH07XG4gIGlmIChfX0JST1dTRVJfXyAmJiBfX0RFVl9fKSB7XG4gICAgY29tcG9zZWQuZGVidWcgPSBzdHlsZXRyb24uZGVidWc7XG4gIH1cbiAgcmV0dXJuIGNvbXBvc2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3R5bGVkRWxlbWVudENvbXBvbmVudChzdHlsZXRyb246IFN0eWxldHJvbikge1xuICBjb25zdCB7cmVkdWNlcnMsIGJhc2UsIGRyaXZlciwgd3JhcHBlciwgZ2V0SW5pdGlhbFN0eWxlLCBleHR9ID0gc3R5bGV0cm9uO1xuXG4gIGlmIChfX0JST1dTRVJfXyAmJiBfX0RFVl9fKSB7XG4gICAgdmFyIGRlYnVnU3RhY2tJbmZvLCBkZWJ1Z1N0YWNrSW5kZXg7XG4gICAgaWYgKHN0eWxldHJvbi5kZWJ1Zykge1xuICAgICAgZGVidWdTdGFja0luZm8gPSBzdHlsZXRyb24uZGVidWcuc3RhY2tJbmZvO1xuICAgICAgZGVidWdTdGFja0luZGV4ID0gc3R5bGV0cm9uLmRlYnVnLnN0YWNrSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgaWYgKF9fQlJPV1NFUl9fICYmIF9fREVWX18pIHtcbiAgICB2YXIgZGVidWdDbGFzc05hbWU7XG4gIH1cblxuICBjb25zdCBTdHlsZWRFbGVtZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxTdHlsZXRyb25Qcm9wcywgYW55PigocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IHN0eWxldHJvbjogU3RhbmRhcmRFbmdpbmUgPSBSZWFjdC51c2VDb250ZXh0KFN0eWxldHJvbkNvbnRleHQpO1xuICAgIGNvbnN0IGRlYnVnRW5naW5lID0gUmVhY3QudXNlQ29udGV4dChEZWJ1Z0VuZ2luZUNvbnRleHQpO1xuICAgIGNvbnN0IGh5ZHJhdGluZyA9IFJlYWN0LnVzZUNvbnRleHQoSHlkcmF0aW9uQ29udGV4dCk7XG4gICAgY2hlY2tOb29wRW5naW5lKHN0eWxldHJvbik7XG5cbiAgICBjb25zdCBlbGVtZW50UHJvcHM6IGFueSA9IG9taXRQcmVmaXhlZEtleXMocHJvcHMpO1xuICAgIGxldCBzdHlsZSA9IHJlc29sdmVTdHlsZShnZXRJbml0aWFsU3R5bGUsIHJlZHVjZXJzLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuJHN0eWxlKSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLiRzdHlsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHN0eWxlID0gZGVlcE1lcmdlKHN0eWxlLCBwcm9wcy4kc3R5bGUocHJvcHMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0eWxlID0gZGVlcE1lcmdlKHN0eWxlLCBwcm9wcy4kc3R5bGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHN0eWxlQ2xhc3NTdHJpbmcgPSBkcml2ZXIoc3R5bGUsIHN0eWxldHJvbik7XG4gICAgY29uc3QgRWxlbWVudCA9IHByb3BzLiRhcyA/IHByb3BzLiRhcyA6IGJhc2U7XG4gICAgZWxlbWVudFByb3BzLmNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZVxuICAgICAgPyBgJHtwcm9wcy5jbGFzc05hbWV9ICR7c3R5bGVDbGFzc1N0cmluZ31gXG4gICAgICA6IHN0eWxlQ2xhc3NTdHJpbmc7XG5cbiAgICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXyAmJiBkZWJ1Z0VuZ2luZSAmJiAhaHlkcmF0aW5nKSB7XG4gICAgICBpZiAoIWRlYnVnQ2xhc3NOYW1lKSB7XG4gICAgICAgIGRlYnVnQ2xhc3NOYW1lID0gZGVidWdFbmdpbmUuZGVidWcoe1xuICAgICAgICAgIHN0YWNrSW5mbzogZGVidWdTdGFja0luZm8sXG4gICAgICAgICAgc3RhY2tJbmRleDogZGVidWdTdGFja0luZGV4LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgam9pbmVkID0gYCR7ZGVidWdDbGFzc05hbWV9ICR7ZWxlbWVudFByb3BzLmNsYXNzTmFtZX1gO1xuICAgICAgZWxlbWVudFByb3BzLmNsYXNzTmFtZSA9IGpvaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXyAmJiB3aW5kb3cuX19TVFlMRVRST05fREVWVE9PTFNfXykge1xuICAgICAgd2luZG93Ll9fU1RZTEVUUk9OX0RFVlRPT0xTX18uc3R5bGVzTWFwLnNldChcbiAgICAgICAgZWxlbWVudFByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgc3R5bGUsXG4gICAgICApO1xuICAgICAgaWYgKGV4dCkge1xuICAgICAgICB3aW5kb3cuX19TVFlMRVRST05fREVWVE9PTFNfXy5leHRlbnNpb25zTWFwLnNldChcbiAgICAgICAgICBlbGVtZW50UHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJhc2U6IGV4dC5iYXNlLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGV4dC5uYW1lLFxuICAgICAgICAgICAgaW5pdGlhbFN0eWxlczogZXh0LmdldEluaXRpYWxTdHlsZSh7fSwgcHJvcHMpLFxuICAgICAgICAgICAgc3R5bGVPdmVycmlkZXM6XG4gICAgICAgICAgICAgIHR5cGVvZiBleHQud2l0aCA9PT0gXCJmdW5jdGlvblwiID8gZXh0LndpdGgocHJvcHMpIDogZXh0LndpdGgsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuJHJlZikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJUaGUgcHJvcCBgJHJlZmAgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIGByZWZgIGluc3RlYWQuIFJlZnMgYXJlIG5vdyBmb3J3YXJkZWQgd2l0aCBSZWFjdC5mb3J3YXJkUmVmLlwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIDxFbGVtZW50IHsuLi5lbGVtZW50UHJvcHN9IHJlZj17cmVmIHx8IHByb3BzLiRyZWZ9IC8+O1xuICB9KTtcblxuICBjb25zdCBXcmFwcGVkID0gd3JhcHBlcihTdHlsZWRFbGVtZW50KTtcbiAgV3JhcHBlZC5fX1NUWUxFVFJPTl9fID0ge1xuICAgIGJhc2UsXG4gICAgcmVkdWNlcnMsXG4gICAgZHJpdmVyLFxuICAgIHdyYXBwZXIsXG4gICAgZ2V0SW5pdGlhbFN0eWxlLFxuICB9O1xuXG4gIGlmIChfX0RFVl9fKSB7XG4gICAgbGV0IGRpc3BsYXlOYW1lO1xuXG4gICAgaWYgKHR5cGVvZiBiYXNlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBkaXNwbGF5TmFtZSA9IGJhc2U7XG4gICAgfSBlbHNlIGlmIChiYXNlLmRpc3BsYXlOYW1lKSB7XG4gICAgICBkaXNwbGF5TmFtZSA9IGJhc2UuZGlzcGxheU5hbWU7XG4gICAgfSBlbHNlIGlmIChiYXNlLm5hbWUpIHtcbiAgICAgIGRpc3BsYXlOYW1lID0gYmFzZS5uYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5TmFtZSA9IFwiVW5rbm93blwiO1xuICAgIH1cblxuICAgIFdyYXBwZWQuZGlzcGxheU5hbWUgPSBgU3R5bGVkKCR7ZGlzcGxheU5hbWV9KWA7XG4gIH1cblxuICByZXR1cm4gV3JhcHBlZDtcbn1cblxuLy8gVXRpbGl0eSBmdW5jdGlvbnNcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTdHlsZShcbiAgZ2V0SW5pdGlhbFN0eWxlOiAoYTogdm9pZCkgPT4gU3R5bGVPYmplY3QsXG4gIHJlZHVjZXJzOiBBcnJheTxSZWR1Y2VyQ29udGFpbmVyPixcbiAgcHJvcHM6IGFueSxcbik6IFN0eWxlT2JqZWN0IHtcbiAgbGV0IHJlc3VsdCA9IGdldEluaXRpYWxTdHlsZSgpO1xuICBsZXQgaSA9IHJlZHVjZXJzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIC8vIENhc3QgdG8gYWxsb3cgcGFzc2luZyB1bnVzZWQgcHJvcHMgcGFyYW0gaW4gY2FzZSBvZiBzdGF0aWMgcmVkdWNlclxuICAgIGNvbnN0IHJlZHVjZXIgPSByZWR1Y2Vyc1tpXS5yZWR1Y2VyIGFzIChcbiAgICAgIGI6IFN0eWxlT2JqZWN0LFxuICAgICAgYTogYW55LFxuICAgICkgPT4gU3R5bGVPYmplY3Q7XG4gICAgcmVzdWx0ID0gcmVkdWNlcihyZXN1bHQsIHByb3BzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBpc09iamVjdCh4OiBhbnkpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIHggIT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIG9taXRQcmVmaXhlZEtleXMoc291cmNlKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuXG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGlmIChrZXlbMF0gIT09IFwiJFwiKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGRlZXBNZXJnZShhLCBiKSB7XG4gIGNvbnN0IHJlc3VsdCA9IGFzc2lnbih7fSwgYSk7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gYikge1xuICAgIGNvbnN0IHZhbCA9IGJba2V5XTtcblxuICAgIGlmIChpc09iamVjdCh2YWwpICYmIGlzT2JqZWN0KGFba2V5XSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gZGVlcE1lcmdlKGFba2V5XSwgdmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gc2hhbGxvd01lcmdlKGEsIGIpIHtcbiAgcmV0dXJuIGFzc2lnbihhc3NpZ24oe30sIGEpLCBiKTtcbn1cblxuZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTtBQWFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLFNBQ0VDLE1BREYsRUFFRUMsZUFGRixRQUtPLG9CQUxQO0FBbUJBLFNBQ0VDLGdCQURGLEVBRUVDLHNCQUZGLEVBR0VDLFdBSEYsUUFJTyxZQUpQO0FBTUEsU0FBUUEsV0FBUjtBQUtBLE1BQU1DLFVBQVUsR0FBRztFQUNqQkMsV0FBVyxFQUFFLE1BQU0sRUFERjtFQUVqQkMsZUFBZSxFQUFFLE1BQU0sRUFGTjtFQUdqQkMsY0FBYyxFQUFFLE1BQU07QUFITCxDQUFuQjtBQU1BLE1BQU1DLGdCQUFnQixnQkFBR1YsS0FBSyxDQUFDVyxhQUFOLENBQW9DTCxVQUFwQyxDQUF6QjtBQUNBLE1BQU1NLGdCQUFnQixnQkFBR1osS0FBSyxDQUFDVyxhQUFOLENBQW9CLEtBQXBCLENBQXpCO0FBQ0EsTUFBTUUsa0JBQWtCLGdCQUFHYixLQUFLLENBQUNXLGFBQU4sQ0FFekJHLFNBRnlCLENBQTNCLEMsQ0FHQTs7QUFTQSxNQUFNQyxXQUFOLFNBQTBCZixLQUFLLENBQUNnQixTQUFoQyxDQUtFO0VBQ0FDLFdBQVcsQ0FBQ0MsS0FBRCxFQUEwQjtJQUNuQyxNQUFNQSxLQUFOO0lBQ0EsS0FBS0MsS0FBTCxHQUFhO01BQ1hDLFNBQVMsRUFBRUMsT0FBTyxDQUFDSCxLQUFLLENBQUNJLG1CQUFQO0lBRFAsQ0FBYjtFQUdEOztFQUVEQyxpQkFBaUIsR0FBRztJQUNsQixVQUFpQjtNQUNmLElBQUksS0FBS0osS0FBTCxDQUFXQyxTQUFYLEtBQXlCLElBQTdCLEVBQW1DO1FBQ2pDLEtBQUtJLFFBQUwsQ0FBYztVQUNaSixTQUFTLEVBQUU7UUFEQyxDQUFkO01BR0Q7SUFDRjtFQUNGOztFQUVESyxNQUFNLEdBQUc7SUFDUCxvQkFDRSxvQkFBQyxnQkFBRCxDQUFrQixRQUFsQjtNQUEy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","export function driver(style, styletron) {\n const tx = renderDeclarativeRules(style, styletron);\n return styletron.renderStyle(tx);\n}\nexport function getInitialStyle() {\n return {};\n}\nexport function renderDeclarativeRules(style, styletron) {\n for (const key in style) {\n const val = style[key];\n\n if (key === \"animationName\" && typeof val !== \"string\") {\n style.animationName = styletron.renderKeyframes(val);\n continue;\n }\n\n if (key === \"fontFamily\" && typeof val !== \"string\") {\n if (Array.isArray(val)) {\n let result = \"\";\n\n for (const font of val) {\n if (typeof font === \"object\") {\n result += `${styletron.renderFontFace(font)},`;\n } else if (typeof font === \"string\") {\n result += `${font},`;\n }\n }\n\n style.fontFamily = result.slice(0, -1);\n continue;\n } else if (val === void 0) {\n continue;\n } else {\n style.fontFamily = styletron.renderFontFace(val);\n continue;\n }\n }\n\n if (typeof val === \"object\" && val !== null) {\n renderDeclarativeRules(val, styletron);\n }\n }\n\n return style;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkcml2ZXIiLCJzdHlsZSIsInN0eWxldHJvbiIsInR4IiwicmVuZGVyRGVjbGFyYXRpdmVSdWxlcyIsInJlbmRlclN0eWxlIiwiZ2V0SW5pdGlhbFN0eWxlIiwia2V5IiwidmFsIiwiYW5pbWF0aW9uTmFtZSIsInJlbmRlcktleWZyYW1lcyIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImZvbnQiLCJyZW5kZXJGb250RmFjZSIsImZvbnRGYW1pbHkiLCJzbGljZSJdLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIFByb3BlcnRpZXMsXG4gIEZvbnRGYWNlIGFzIEZvbnRGYWNlT2JqZWN0LFxuICBLZXlmcmFtZXNPYmplY3QsXG59IGZyb20gXCIuL3N0eWxlLXR5cGVzXCI7XG5cbmV4cG9ydCB0eXBlIHtGb250RmFjZU9iamVjdCwgS2V5ZnJhbWVzT2JqZWN0fTtcblxuZXhwb3J0IHR5cGUgU3R5bGVPYmplY3QgPSBQcm9wZXJ0aWVzICYge1xuICBba2V5IGluIHN0cmluZ106IFByb3BlcnRpZXNba2V5b2YgUHJvcGVydGllc10gfCBTdHlsZU9iamVjdDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRFbmdpbmUge1xuICByZW5kZXJTdHlsZShzdHlsZTogU3R5bGVPYmplY3QpOiBzdHJpbmc7XG4gIHJlbmRlcktleWZyYW1lcyhrZXlmcmFtZXM6IEtleWZyYW1lc09iamVjdCk6IHN0cmluZztcbiAgcmVuZGVyRm9udEZhY2UoZm9udEZhY2U6IEZvbnRGYWNlT2JqZWN0KTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZHJpdmVyKHN0eWxlOiBTdHlsZU9iamVjdCwgc3R5bGV0cm9uOiBTdGFuZGFyZEVuZ2luZSk6IHN0cmluZyB7XG4gIGNvbnN0IHR4ID0gcmVuZGVyRGVjbGFyYXRpdmVSdWxlcyhzdHlsZSwgc3R5bGV0cm9uKTtcbiAgcmV0dXJuIHN0eWxldHJvbi5yZW5kZXJTdHlsZSh0eCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsU3R5bGUoKTogU3R5bGVPYmplY3Qge1xuICByZXR1cm4ge307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJEZWNsYXJhdGl2ZVJ1bGVzKFxuICBzdHlsZTogU3R5bGVPYmplY3QsXG4gIHN0eWxldHJvbjogU3RhbmRhcmRFbmdpbmUsXG4pIHtcbiAgZm9yIChjb25zdCBrZXkgaW4gc3R5bGUpIHtcbiAgICBjb25zdCB2YWwgPSBzdHlsZVtrZXldO1xuICAgIGlmIChrZXkgPT09IFwiYW5pbWF0aW9uTmFtZVwiICYmIHR5cGVvZiB2YWwgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHN0eWxlLmFuaW1hdGlvbk5hbWUgPSBzdHlsZXRyb24ucmVuZGVyS2V5ZnJhbWVzKHZhbCBhcyBhbnkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChrZXkgPT09IFwiZm9udEZhbWlseVwiICYmIHR5cGVvZiB2YWwgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgICAgIGZvciAoY29uc3QgZm9udCBvZiB2YWwpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGZvbnQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHtzdHlsZXRyb24ucmVuZGVyRm9udEZhY2UoZm9udCBhcyBhbnkpfSxgO1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZvbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHtmb250fSxgO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHlsZS5mb250RmFtaWx5ID0gcmVzdWx0LnNsaWNlKDAsIC0xKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3R5bGUuZm9udEZhbWlseSA9IHN0eWxldHJvbi5yZW5kZXJGb250RmFjZSh2YWwgYXMgYW55KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsID09PSBcIm9iamVjdFwiICYmIHZhbCAhPT0gbnVsbCkge1xuICAgICAgcmVuZGVyRGVjbGFyYXRpdmVSdWxlcyh2YWwgYXMgU3R5bGVPYmplY3QsIHN0eWxldHJvbik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHlsZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBa0JBLE9BQU8sU0FBU0EsTUFBVCxDQUFnQkMsS0FBaEIsRUFBb0NDLFNBQXBDLEVBQXVFO0VBQzVFLE1BQU1DLEVBQUUsR0FBR0Msc0JBQXNCLENBQUNILEtBQUQsRUFBUUMsU0FBUixDQUFqQztFQUNBLE9BQU9BLFNBQVMsQ0FBQ0csV0FBVixDQUFzQkYsRUFBdEIsQ0FBUDtBQUNEO0FBRUQsT0FBTyxTQUFTRyxlQUFULEdBQXdDO0VBQzdDLE9BQU8sRUFBUDtBQUNEO0FBRUQsT0FBTyxTQUFTRixzQkFBVCxDQUNMSCxLQURLLEVBRUxDLFNBRkssRUFHTDtFQUNBLEtBQUssTUFBTUssR0FBWCxJQUFrQk4sS0FBbEIsRUFBeUI7SUFDdkIsTUFBTU8sR0FBRyxHQUFHUCxLQUFLLENBQUNNLEdBQUQsQ0FBakI7O0lBQ0EsSUFBSUEsR0FBRyxLQUFLLGVBQVIsSUFBMkIsT0FBT0MsR0FBUCxLQUFlLFFBQTlDLEVBQXdEO01BQ3REUCxLQUFLLENBQUNRLGFBQU4sR0FBc0JQLFNBQVMsQ0FBQ1EsZUFBVixDQUEwQkYsR0FBMUIsQ0FBdEI7TUFDQTtJQUNEOztJQUNELElBQUlELEdBQUcsS0FBSyxZQUFSLElBQXdCLE9BQU9DLEdBQVAsS0FBZSxRQUEzQyxFQUFxRDtNQUNuRCxJQUFJRyxLQUFLLENBQUNDLE9BQU4sQ0FBY0osR0FBZCxDQUFKLEVBQXdCO1FBQ3RCLElBQUlLLE1BQU0sR0FBRyxFQUFiOztRQUNBLEtBQUssTUFBTUMsSUFBWCxJQUFtQk4sR0FBbkIsRUFBd0I7VUFDdEIsSUFBSSxPQUFPTSxJQUFQLEtBQWdCLFFBQXBCLEVBQThCO1lBQzVCRCxNQUFNLElBQUssR0FBRVgsU0FBUyxDQUFDYSxjQUFWLENBQXlCRCxJQUF6QixDQUFzQyxHQUFuRDtVQUNELENBRkQsTUFFTyxJQUFJLE9BQU9BLElBQVAsS0FBZ0IsUUFBcEIsRUFBOEI7WUFDbkNELE1BQU0sSUFBSyxHQUFFQyxJQUFLLEdBQWxCO1VBQ0Q7UUFDRjs7UUFDRGIsS0FBSyxDQUFDZSxVQUFOLEdBQW1CSCxNQUFNLENBQUNJLEtBQVAsQ0FBYSxDQUFiLEVBQWdCLENBQUMsQ0FBakIsQ0FBbkI7UUFDQTtNQUNELENBWEQsTUFXTyxJQUFJVCxHQUFHLEtBQUssS0FBSyxDQUFqQixFQUFvQjtRQUN6QjtNQUNELENBRk0sTUFFQTtRQUNMUCxLQUFLLENBQUNlLFVBQU4sR0FBbUJkLFNBQVMsQ0FBQ2EsY0FBVixDQUF5QlAsR0FBekIsQ0FBbkI7UUFDQTtNQUNEO0lBQ0Y7O0lBQ0QsSUFBSSxPQUFPQSxHQUFQLEtBQWUsUUFBZixJQUEyQkEsR0FBRyxLQUFLLElBQXZDLEVBQTZDO01BQzNDSixzQkFBc0IsQ0FBQ0ksR0FBRCxFQUFxQk4sU0FBckIsQ0FBdEI7SUFDRDtFQUNGOztFQUNELE9BQU9ELEtBQVA7QUFDRCJ9","/* Web Font Loader v1.6.28 - (c) Adobe Systems, Google. License: Apache 2.0 */(function(){function aa(a,b,c){return a.call.apply(a.bind,arguments)}function ba(a,b,c){if(!a)throw Error();if(2=b.f?e():a.fonts.load(fa(b.a),b.h).then(function(a){1<=a.length?d():setTimeout(f,25)},function(){e()})}f()}),e=null,f=new Promise(function(a,d){e=setTimeout(d,b.f)});Promise.race([f,d]).then(function(){e&&(clearTimeout(e),e=null);b.g(b.a)},function(){b.j(b.a)})};function Q(a,b,c,d,e,f,g){this.v=a;this.B=b;this.c=c;this.a=d;this.s=g||\"BESbswy\";this.f={};this.w=e||3E3;this.u=f||null;this.m=this.j=this.h=this.g=null;this.g=new M(this.c,this.s);this.h=new M(this.c,this.s);this.j=new M(this.c,this.s);this.m=new M(this.c,this.s);a=new G(this.a.c+\",serif\",J(this.a));a=O(a);this.g.a.style.cssText=a;a=new G(this.a.c+\",sans-serif\",J(this.a));a=O(a);this.h.a.style.cssText=a;a=new G(\"serif\",J(this.a));a=O(a);this.j.a.style.cssText=a;a=new G(\"sans-serif\",J(this.a));a=\nO(a);this.m.a.style.cssText=a;N(this.g);N(this.h);N(this.j);N(this.m)}var R={D:\"serif\",C:\"sans-serif\"},S=null;function T(){if(null===S){var a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);S=!!a&&(536>parseInt(a[1],10)||536===parseInt(a[1],10)&&11>=parseInt(a[2],10))}return S}Q.prototype.start=function(){this.f.serif=this.j.a.offsetWidth;this.f[\"sans-serif\"]=this.m.a.offsetWidth;this.A=q();U(this)};\nfunction la(a,b,c){for(var d in R)if(R.hasOwnProperty(d)&&b===a.f[R[d]]&&c===a.f[R[d]])return!0;return!1}function U(a){var b=a.g.a.offsetWidth,c=a.h.a.offsetWidth,d;(d=b===a.f.serif&&c===a.f[\"sans-serif\"])||(d=T()&&la(a,b,c));d?q()-a.A>=a.w?T()&&la(a,b,c)&&(null===a.u||a.u.hasOwnProperty(a.a.c))?V(a,a.v):V(a,a.B):ma(a):V(a,a.v)}function ma(a){setTimeout(p(function(){U(this)},a),50)}function V(a,b){setTimeout(p(function(){v(this.g.a);v(this.h.a);v(this.j.a);v(this.m.a);b(this.a)},a),0)};function W(a,b,c){this.c=a;this.a=b;this.f=0;this.m=this.j=!1;this.s=c}var X=null;W.prototype.g=function(a){var b=this.a;b.g&&w(b.f,[b.a.c(\"wf\",a.c,J(a).toString(),\"active\")],[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\"),b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\")]);K(b,\"fontactive\",a);this.m=!0;na(this)};\nW.prototype.h=function(a){var b=this.a;if(b.g){var c=y(b.f,b.a.c(\"wf\",a.c,J(a).toString(),\"active\")),d=[],e=[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\")];c||d.push(b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\"));w(b.f,d,e)}K(b,\"fontinactive\",a);na(this)};function na(a){0==--a.f&&a.j&&(a.m?(a=a.a,a.g&&w(a.f,[a.a.c(\"wf\",\"active\")],[a.a.c(\"wf\",\"loading\"),a.a.c(\"wf\",\"inactive\")]),K(a,\"active\")):L(a.a))};function oa(a){this.j=a;this.a=new ja;this.h=0;this.f=this.g=!0}oa.prototype.load=function(a){this.c=new ca(this.j,a.context||this.j);this.g=!1!==a.events;this.f=!1!==a.classes;pa(this,new ha(this.c,a),a)};\nfunction qa(a,b,c,d,e){var f=0==--a.h;(a.f||a.g)&&setTimeout(function(){var a=e||null,m=d||null||{};if(0===c.length&&f)L(b.a);else{b.f+=c.length;f&&(b.j=f);var h,l=[];for(h=0;h {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `