workbox-precaching.dev.js.map 71.1 KB
{"version":3,"file":"workbox-precaching.dev.js","sources":["../_version.js","../utils/createCacheKey.js","../utils/PrecacheInstallReportPlugin.js","../utils/PrecacheCacheKeyPlugin.js","../utils/printCleanupDetails.js","../utils/printInstallDetails.js","../PrecacheStrategy.js","../PrecacheController.js","../utils/getOrCreatePrecacheController.js","../addPlugins.js","../utils/removeIgnoredSearchParams.js","../utils/generateURLVariations.js","../PrecacheRoute.js","../addRoute.js","../utils/deleteOutdatedCaches.js","../cleanupOutdatedCaches.js","../createHandlerBoundToURL.js","../getCacheKeyForURL.js","../matchPrecache.js","../precache.js","../precacheAndRoute.js","../PrecacheFallbackPlugin.js"],"sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n    self['workbox:precaching:6.5.3'] && _();\n}\ncatch (e) { }\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object|string} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function createCacheKey(entry) {\n    if (!entry) {\n        throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n    }\n    // If a precache manifest entry is a string, it's assumed to be a versioned\n    // URL, like '/app.abcd1234.js'. Return as-is.\n    if (typeof entry === 'string') {\n        const urlObject = new URL(entry, location.href);\n        return {\n            cacheKey: urlObject.href,\n            url: urlObject.href,\n        };\n    }\n    const { revision, url } = entry;\n    if (!url) {\n        throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n    }\n    // If there's just a URL and no revision, then it's also assumed to be a\n    // versioned URL.\n    if (!revision) {\n        const urlObject = new URL(url, location.href);\n        return {\n            cacheKey: urlObject.href,\n            url: urlObject.href,\n        };\n    }\n    // Otherwise, construct a properly versioned URL using the custom Workbox\n    // search parameter along with the revision info.\n    const cacheKeyURL = new URL(url, location.href);\n    const originalURL = new URL(url, location.href);\n    cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n    return {\n        cacheKey: cacheKeyURL.href,\n        url: originalURL.href,\n    };\n}\n","/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to determine the\n * of assets that were updated (or not updated) during the install event.\n *\n * @private\n */\nclass PrecacheInstallReportPlugin {\n    constructor() {\n        this.updatedURLs = [];\n        this.notUpdatedURLs = [];\n        this.handlerWillStart = async ({ request, state, }) => {\n            // TODO: `state` should never be undefined...\n            if (state) {\n                state.originalRequest = request;\n            }\n        };\n        this.cachedResponseWillBeUsed = async ({ event, state, cachedResponse, }) => {\n            if (event.type === 'install') {\n                if (state &&\n                    state.originalRequest &&\n                    state.originalRequest instanceof Request) {\n                    // TODO: `state` should never be undefined...\n                    const url = state.originalRequest.url;\n                    if (cachedResponse) {\n                        this.notUpdatedURLs.push(url);\n                    }\n                    else {\n                        this.updatedURLs.push(url);\n                    }\n                }\n            }\n            return cachedResponse;\n        };\n    }\n}\nexport { PrecacheInstallReportPlugin };\n","/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to translate URLs into\n * the corresponding cache key, based on the current revision info.\n *\n * @private\n */\nclass PrecacheCacheKeyPlugin {\n    constructor({ precacheController }) {\n        this.cacheKeyWillBeUsed = async ({ request, params, }) => {\n            // Params is type any, can't change right now.\n            /* eslint-disable */\n            const cacheKey = (params === null || params === void 0 ? void 0 : params.cacheKey) ||\n                this._precacheController.getCacheKeyForURL(request.url);\n            /* eslint-enable */\n            return cacheKey\n                ? new Request(cacheKey, { headers: request.headers })\n                : request;\n        };\n        this._precacheController = precacheController;\n    }\n}\nexport { PrecacheCacheKeyPlugin };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport '../_version.js';\n/**\n * @param {string} groupTitle\n * @param {Array<string>} deletedURLs\n *\n * @private\n */\nconst logGroup = (groupTitle, deletedURLs) => {\n    logger.groupCollapsed(groupTitle);\n    for (const url of deletedURLs) {\n        logger.log(url);\n    }\n    logger.groupEnd();\n};\n/**\n * @param {Array<string>} deletedURLs\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function printCleanupDetails(deletedURLs) {\n    const deletionCount = deletedURLs.length;\n    if (deletionCount > 0) {\n        logger.groupCollapsed(`During precaching cleanup, ` +\n            `${deletionCount} cached ` +\n            `request${deletionCount === 1 ? ' was' : 's were'} deleted.`);\n        logGroup('Deleted Cache Requests', deletedURLs);\n        logger.groupEnd();\n    }\n}\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport '../_version.js';\n/**\n * @param {string} groupTitle\n * @param {Array<string>} urls\n *\n * @private\n */\nfunction _nestedGroup(groupTitle, urls) {\n    if (urls.length === 0) {\n        return;\n    }\n    logger.groupCollapsed(groupTitle);\n    for (const url of urls) {\n        logger.log(url);\n    }\n    logger.groupEnd();\n}\n/**\n * @param {Array<string>} urlsToPrecache\n * @param {Array<string>} urlsAlreadyPrecached\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function printInstallDetails(urlsToPrecache, urlsAlreadyPrecached) {\n    const precachedCount = urlsToPrecache.length;\n    const alreadyPrecachedCount = urlsAlreadyPrecached.length;\n    if (precachedCount || alreadyPrecachedCount) {\n        let message = `Precaching ${precachedCount} file${precachedCount === 1 ? '' : 's'}.`;\n        if (alreadyPrecachedCount > 0) {\n            message +=\n                ` ${alreadyPrecachedCount} ` +\n                    `file${alreadyPrecachedCount === 1 ? ' is' : 's are'} already cached.`;\n        }\n        logger.groupCollapsed(message);\n        _nestedGroup(`View newly precached URLs.`, urlsToPrecache);\n        _nestedGroup(`View previously precached URLs.`, urlsAlreadyPrecached);\n        logger.groupEnd();\n    }\n}\n","/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from 'workbox-strategies/Strategy.js';\nimport './_version.js';\n/**\n * A {@link workbox-strategies.Strategy} implementation\n * specifically designed to work with\n * {@link workbox-precaching.PrecacheController}\n * to both cache and fetch precached assets.\n *\n * Note: an instance of this class is created automatically when creating a\n * `PrecacheController`; it's generally not necessary to create this yourself.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-precaching\n */\nclass PrecacheStrategy extends Strategy {\n    /**\n     *\n     * @param {Object} [options]\n     * @param {string} [options.cacheName] Cache name to store and retrieve\n     * requests. Defaults to the cache names provided by\n     * {@link workbox-core.cacheNames}.\n     * @param {Array<Object>} [options.plugins] {@link https://developers.google.com/web/tools/workbox/guides/using-plugins|Plugins}\n     * to use in conjunction with this caching strategy.\n     * @param {Object} [options.fetchOptions] Values passed along to the\n     * {@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters|init}\n     * of all fetch() requests made by this strategy.\n     * @param {Object} [options.matchOptions] The\n     * {@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions|CacheQueryOptions}\n     * for any `cache.match()` or `cache.put()` calls made by this strategy.\n     * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n     * get the response from the network if there's a precache miss.\n     */\n    constructor(options = {}) {\n        options.cacheName = cacheNames.getPrecacheName(options.cacheName);\n        super(options);\n        this._fallbackToNetwork =\n            options.fallbackToNetwork === false ? false : true;\n        // Redirected responses cannot be used to satisfy a navigation request, so\n        // any redirected response must be \"copied\" rather than cloned, so the new\n        // response doesn't contain the `redirected` flag. See:\n        // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1\n        this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);\n    }\n    /**\n     * @private\n     * @param {Request|string} request A request to run this strategy for.\n     * @param {workbox-strategies.StrategyHandler} handler The event that\n     *     triggered the request.\n     * @return {Promise<Response>}\n     */\n    async _handle(request, handler) {\n        const response = await handler.cacheMatch(request);\n        if (response) {\n            return response;\n        }\n        // If this is an `install` event for an entry that isn't already cached,\n        // then populate the cache.\n        if (handler.event && handler.event.type === 'install') {\n            return await this._handleInstall(request, handler);\n        }\n        // Getting here means something went wrong. An entry that should have been\n        // precached wasn't found in the cache.\n        return await this._handleFetch(request, handler);\n    }\n    async _handleFetch(request, handler) {\n        let response;\n        const params = (handler.params || {});\n        // Fall back to the network if we're configured to do so.\n        if (this._fallbackToNetwork) {\n            if (process.env.NODE_ENV !== 'production') {\n                logger.warn(`The precached response for ` +\n                    `${getFriendlyURL(request.url)} in ${this.cacheName} was not ` +\n                    `found. Falling back to the network.`);\n            }\n            const integrityInManifest = params.integrity;\n            const integrityInRequest = request.integrity;\n            const noIntegrityConflict = !integrityInRequest || integrityInRequest === integrityInManifest;\n            // Do not add integrity if the original request is no-cors\n            // See https://github.com/GoogleChrome/workbox/issues/3096\n            response = await handler.fetch(new Request(request, {\n                integrity: request.mode !== 'no-cors'\n                    ? integrityInRequest || integrityInManifest\n                    : undefined,\n            }));\n            // It's only \"safe\" to repair the cache if we're using SRI to guarantee\n            // that the response matches the precache manifest's expectations,\n            // and there's either a) no integrity property in the incoming request\n            // or b) there is an integrity, and it matches the precache manifest.\n            // See https://github.com/GoogleChrome/workbox/issues/2858\n            // Also if the original request users no-cors we don't use integrity.\n            // See https://github.com/GoogleChrome/workbox/issues/3096\n            if (integrityInManifest &&\n                noIntegrityConflict &&\n                request.mode !== 'no-cors') {\n                this._useDefaultCacheabilityPluginIfNeeded();\n                const wasCached = await handler.cachePut(request, response.clone());\n                if (process.env.NODE_ENV !== 'production') {\n                    if (wasCached) {\n                        logger.log(`A response for ${getFriendlyURL(request.url)} ` +\n                            `was used to \"repair\" the precache.`);\n                    }\n                }\n            }\n        }\n        else {\n            // This shouldn't normally happen, but there are edge cases:\n            // https://github.com/GoogleChrome/workbox/issues/1441\n            throw new WorkboxError('missing-precache-entry', {\n                cacheName: this.cacheName,\n                url: request.url,\n            });\n        }\n        if (process.env.NODE_ENV !== 'production') {\n            const cacheKey = params.cacheKey || (await handler.getCacheKey(request, 'read'));\n            // Workbox is going to handle the route.\n            // print the routing details to the console.\n            logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(request.url));\n            logger.log(`Serving the precached url: ${getFriendlyURL(cacheKey instanceof Request ? cacheKey.url : cacheKey)}`);\n            logger.groupCollapsed(`View request details here.`);\n            logger.log(request);\n            logger.groupEnd();\n            logger.groupCollapsed(`View response details here.`);\n            logger.log(response);\n            logger.groupEnd();\n            logger.groupEnd();\n        }\n        return response;\n    }\n    async _handleInstall(request, handler) {\n        this._useDefaultCacheabilityPluginIfNeeded();\n        const response = await handler.fetch(request);\n        // Make sure we defer cachePut() until after we know the response\n        // should be cached; see https://github.com/GoogleChrome/workbox/issues/2737\n        const wasCached = await handler.cachePut(request, response.clone());\n        if (!wasCached) {\n            // Throwing here will lead to the `install` handler failing, which\n            // we want to do if *any* of the responses aren't safe to cache.\n            throw new WorkboxError('bad-precaching-response', {\n                url: request.url,\n                status: response.status,\n            });\n        }\n        return response;\n    }\n    /**\n     * This method is complex, as there a number of things to account for:\n     *\n     * The `plugins` array can be set at construction, and/or it might be added to\n     * to at any time before the strategy is used.\n     *\n     * At the time the strategy is used (i.e. during an `install` event), there\n     * needs to be at least one plugin that implements `cacheWillUpdate` in the\n     * array, other than `copyRedirectedCacheableResponsesPlugin`.\n     *\n     * - If this method is called and there are no suitable `cacheWillUpdate`\n     * plugins, we need to add `defaultPrecacheCacheabilityPlugin`.\n     *\n     * - If this method is called and there is exactly one `cacheWillUpdate`, then\n     * we don't have to do anything (this might be a previously added\n     * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin).\n     *\n     * - If this method is called and there is more than one `cacheWillUpdate`,\n     * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so,\n     * we need to remove it. (This situation is unlikely, but it could happen if\n     * the strategy is used multiple times, the first without a `cacheWillUpdate`,\n     * and then later on after manually adding a custom `cacheWillUpdate`.)\n     *\n     * See https://github.com/GoogleChrome/workbox/issues/2737 for more context.\n     *\n     * @private\n     */\n    _useDefaultCacheabilityPluginIfNeeded() {\n        let defaultPluginIndex = null;\n        let cacheWillUpdatePluginCount = 0;\n        for (const [index, plugin] of this.plugins.entries()) {\n            // Ignore the copy redirected plugin when determining what to do.\n            if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) {\n                continue;\n            }\n            // Save the default plugin's index, in case it needs to be removed.\n            if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) {\n                defaultPluginIndex = index;\n            }\n            if (plugin.cacheWillUpdate) {\n                cacheWillUpdatePluginCount++;\n            }\n        }\n        if (cacheWillUpdatePluginCount === 0) {\n            this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin);\n        }\n        else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) {\n            // Only remove the default plugin; multiple custom plugins are allowed.\n            this.plugins.splice(defaultPluginIndex, 1);\n        }\n        // Nothing needs to be done if cacheWillUpdatePluginCount is 1\n    }\n}\nPrecacheStrategy.defaultPrecacheCacheabilityPlugin = {\n    async cacheWillUpdate({ response }) {\n        if (!response || response.status >= 400) {\n            return null;\n        }\n        return response;\n    },\n};\nPrecacheStrategy.copyRedirectedCacheableResponsesPlugin = {\n    async cacheWillUpdate({ response }) {\n        return response.redirected ? await copyResponse(response) : response;\n    },\n};\nexport { PrecacheStrategy };\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { waitUntil } from 'workbox-core/_private/waitUntil.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { PrecacheInstallReportPlugin } from './utils/PrecacheInstallReportPlugin.js';\nimport { PrecacheCacheKeyPlugin } from './utils/PrecacheCacheKeyPlugin.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport { PrecacheStrategy } from './PrecacheStrategy.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof workbox-precaching\n */\nclass PrecacheController {\n    /**\n     * Create a new PrecacheController.\n     *\n     * @param {Object} [options]\n     * @param {string} [options.cacheName] The cache to use for precaching.\n     * @param {string} [options.plugins] Plugins to use when precaching as well\n     * as responding to fetch events for precached assets.\n     * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n     * get the response from the network if there's a precache miss.\n     */\n    constructor({ cacheName, plugins = [], fallbackToNetwork = true, } = {}) {\n        this._urlsToCacheKeys = new Map();\n        this._urlsToCacheModes = new Map();\n        this._cacheKeysToIntegrities = new Map();\n        this._strategy = new PrecacheStrategy({\n            cacheName: cacheNames.getPrecacheName(cacheName),\n            plugins: [\n                ...plugins,\n                new PrecacheCacheKeyPlugin({ precacheController: this }),\n            ],\n            fallbackToNetwork,\n        });\n        // Bind the install and activate methods to the instance.\n        this.install = this.install.bind(this);\n        this.activate = this.activate.bind(this);\n    }\n    /**\n     * @type {workbox-precaching.PrecacheStrategy} The strategy created by this controller and\n     * used to cache assets and respond to fetch events.\n     */\n    get strategy() {\n        return this._strategy;\n    }\n    /**\n     * Adds items to the precache list, removing any duplicates and\n     * stores the files in the\n     * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n     * worker installs.\n     *\n     * This method can be called multiple times.\n     *\n     * @param {Array<Object|string>} [entries=[]] Array of entries to precache.\n     */\n    precache(entries) {\n        this.addToCacheList(entries);\n        if (!this._installAndActiveListenersAdded) {\n            self.addEventListener('install', this.install);\n            self.addEventListener('activate', this.activate);\n            this._installAndActiveListenersAdded = true;\n        }\n    }\n    /**\n     * This method will add items to the precache list, removing duplicates\n     * and ensuring the information is valid.\n     *\n     * @param {Array<workbox-precaching.PrecacheController.PrecacheEntry|string>} entries\n     *     Array of entries to precache.\n     */\n    addToCacheList(entries) {\n        if (process.env.NODE_ENV !== 'production') {\n            assert.isArray(entries, {\n                moduleName: 'workbox-precaching',\n                className: 'PrecacheController',\n                funcName: 'addToCacheList',\n                paramName: 'entries',\n            });\n        }\n        const urlsToWarnAbout = [];\n        for (const entry of entries) {\n            // See https://github.com/GoogleChrome/workbox/issues/2259\n            if (typeof entry === 'string') {\n                urlsToWarnAbout.push(entry);\n            }\n            else if (entry && entry.revision === undefined) {\n                urlsToWarnAbout.push(entry.url);\n            }\n            const { cacheKey, url } = createCacheKey(entry);\n            const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default';\n            if (this._urlsToCacheKeys.has(url) &&\n                this._urlsToCacheKeys.get(url) !== cacheKey) {\n                throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n                    firstEntry: this._urlsToCacheKeys.get(url),\n                    secondEntry: cacheKey,\n                });\n            }\n            if (typeof entry !== 'string' && entry.integrity) {\n                if (this._cacheKeysToIntegrities.has(cacheKey) &&\n                    this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n                    throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n                        url,\n                    });\n                }\n                this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n            }\n            this._urlsToCacheKeys.set(url, cacheKey);\n            this._urlsToCacheModes.set(url, cacheMode);\n            if (urlsToWarnAbout.length > 0) {\n                const warningMessage = `Workbox is precaching URLs without revision ` +\n                    `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n                    `Learn more at https://bit.ly/wb-precache`;\n                if (process.env.NODE_ENV === 'production') {\n                    // Use console directly to display this warning without bloating\n                    // bundle sizes by pulling in all of the logger codebase in prod.\n                    console.warn(warningMessage);\n                }\n                else {\n                    logger.warn(warningMessage);\n                }\n            }\n        }\n    }\n    /**\n     * Precaches new and updated assets. Call this method from the service worker\n     * install event.\n     *\n     * Note: this method calls `event.waitUntil()` for you, so you do not need\n     * to call it yourself in your event handlers.\n     *\n     * @param {ExtendableEvent} event\n     * @return {Promise<workbox-precaching.InstallResult>}\n     */\n    install(event) {\n        // waitUntil returns Promise<any>\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return waitUntil(event, async () => {\n            const installReportPlugin = new PrecacheInstallReportPlugin();\n            this.strategy.plugins.push(installReportPlugin);\n            // Cache entries one at a time.\n            // See https://github.com/GoogleChrome/workbox/issues/2528\n            for (const [url, cacheKey] of this._urlsToCacheKeys) {\n                const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n                const cacheMode = this._urlsToCacheModes.get(url);\n                const request = new Request(url, {\n                    integrity,\n                    cache: cacheMode,\n                    credentials: 'same-origin',\n                });\n                await Promise.all(this.strategy.handleAll({\n                    params: { cacheKey },\n                    request,\n                    event,\n                }));\n            }\n            const { updatedURLs, notUpdatedURLs } = installReportPlugin;\n            if (process.env.NODE_ENV !== 'production') {\n                printInstallDetails(updatedURLs, notUpdatedURLs);\n            }\n            return { updatedURLs, notUpdatedURLs };\n        });\n    }\n    /**\n     * Deletes assets that are no longer present in the current precache manifest.\n     * Call this method from the service worker activate event.\n     *\n     * Note: this method calls `event.waitUntil()` for you, so you do not need\n     * to call it yourself in your event handlers.\n     *\n     * @param {ExtendableEvent} event\n     * @return {Promise<workbox-precaching.CleanupResult>}\n     */\n    activate(event) {\n        // waitUntil returns Promise<any>\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return waitUntil(event, async () => {\n            const cache = await self.caches.open(this.strategy.cacheName);\n            const currentlyCachedRequests = await cache.keys();\n            const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n            const deletedURLs = [];\n            for (const request of currentlyCachedRequests) {\n                if (!expectedCacheKeys.has(request.url)) {\n                    await cache.delete(request);\n                    deletedURLs.push(request.url);\n                }\n            }\n            if (process.env.NODE_ENV !== 'production') {\n                printCleanupDetails(deletedURLs);\n            }\n            return { deletedURLs };\n        });\n    }\n    /**\n     * Returns a mapping of a precached URL to the corresponding cache key, taking\n     * into account the revision information for the URL.\n     *\n     * @return {Map<string, string>} A URL to cache key mapping.\n     */\n    getURLsToCacheKeys() {\n        return this._urlsToCacheKeys;\n    }\n    /**\n     * Returns a list of all the URLs that have been precached by the current\n     * service worker.\n     *\n     * @return {Array<string>} The precached URLs.\n     */\n    getCachedURLs() {\n        return [...this._urlsToCacheKeys.keys()];\n    }\n    /**\n     * Returns the cache key used for storing a given URL. If that URL is\n     * unversioned, like `/index.html', then the cache key will be the original\n     * URL with a search parameter appended to it.\n     *\n     * @param {string} url A URL whose cache key you want to look up.\n     * @return {string} The versioned URL that corresponds to a cache key\n     * for the original URL, or undefined if that URL isn't precached.\n     */\n    getCacheKeyForURL(url) {\n        const urlObject = new URL(url, location.href);\n        return this._urlsToCacheKeys.get(urlObject.href);\n    }\n    /**\n     * @param {string} url A cache key whose SRI you want to look up.\n     * @return {string} The subresource integrity associated with the cache key,\n     * or undefined if it's not set.\n     */\n    getIntegrityForCacheKey(cacheKey) {\n        return this._cacheKeysToIntegrities.get(cacheKey);\n    }\n    /**\n     * This acts as a drop-in replacement for\n     * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)\n     * with the following differences:\n     *\n     * - It knows what the name of the precache is, and only checks in that cache.\n     * - It allows you to pass in an \"original\" URL without versioning parameters,\n     * and it will automatically look up the correct cache key for the currently\n     * active revision of that URL.\n     *\n     * E.g., `matchPrecache('index.html')` will find the correct precached\n     * response for the currently active service worker, even if the actual cache\n     * key is `'/index.html?__WB_REVISION__=1234abcd'`.\n     *\n     * @param {string|Request} request The key (without revisioning parameters)\n     * to look up in the precache.\n     * @return {Promise<Response|undefined>}\n     */\n    async matchPrecache(request) {\n        const url = request instanceof Request ? request.url : request;\n        const cacheKey = this.getCacheKeyForURL(url);\n        if (cacheKey) {\n            const cache = await self.caches.open(this.strategy.cacheName);\n            return cache.match(cacheKey);\n        }\n        return undefined;\n    }\n    /**\n     * Returns a function that looks up `url` in the precache (taking into\n     * account revision information), and returns the corresponding `Response`.\n     *\n     * @param {string} url The precached URL which will be used to lookup the\n     * `Response`.\n     * @return {workbox-routing~handlerCallback}\n     */\n    createHandlerBoundToURL(url) {\n        const cacheKey = this.getCacheKeyForURL(url);\n        if (!cacheKey) {\n            throw new WorkboxError('non-precached-url', { url });\n        }\n        return (options) => {\n            options.request = new Request(url);\n            options.params = Object.assign({ cacheKey }, options.params);\n            return this.strategy.handle(options);\n        };\n    }\n}\nexport { PrecacheController };\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n    if (!precacheController) {\n        precacheController = new PrecacheController();\n    }\n    return precacheController;\n};\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Adds plugins to the precaching strategy.\n *\n * @param {Array<Object>} plugins\n *\n * @memberof workbox-precaching\n */\nfunction addPlugins(plugins) {\n    const precacheController = getOrCreatePrecacheController();\n    precacheController.strategy.plugins.push(...plugins);\n}\nexport { addPlugins };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array<RegExp>} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\n    // Convert the iterable into an array at the start of the loop to make sure\n    // deletion doesn't mess up iteration.\n    for (const paramName of [...urlObject.searchParams.keys()]) {\n        if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n            urlObject.searchParams.delete(paramName);\n        }\n    }\n    return urlObject;\n}\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { removeIgnoredSearchParams } from './removeIgnoredSearchParams.js';\nimport '../_version.js';\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching = [/^utm_/, /^fbclid$/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) {\n    const urlObject = new URL(url, location.href);\n    urlObject.hash = '';\n    yield urlObject.href;\n    const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n    yield urlWithoutIgnoredParams.href;\n    if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n        const directoryURL = new URL(urlWithoutIgnoredParams.href);\n        directoryURL.pathname += directoryIndex;\n        yield directoryURL.href;\n    }\n    if (cleanURLs) {\n        const cleanURL = new URL(urlWithoutIgnoredParams.href);\n        cleanURL.pathname += '.html';\n        yield cleanURL.href;\n    }\n    if (urlManipulation) {\n        const additionalURLs = urlManipulation({ url: urlObject });\n        for (const urlToAttempt of additionalURLs) {\n            yield urlToAttempt.href;\n        }\n    }\n}\n","/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { Route } from 'workbox-routing/Route.js';\nimport { generateURLVariations } from './utils/generateURLVariations.js';\nimport './_version.js';\n/**\n * A subclass of {@link workbox-routing.Route} that takes a\n * {@link workbox-precaching.PrecacheController}\n * instance and uses it to match incoming requests and handle fetching\n * responses from the precache.\n *\n * @memberof workbox-precaching\n * @extends workbox-routing.Route\n */\nclass PrecacheRoute extends Route {\n    /**\n     * @param {PrecacheController} precacheController A `PrecacheController`\n     * instance used to both match requests and respond to fetch events.\n     * @param {Object} [options] Options to control how requests are matched\n     * against the list of precached URLs.\n     * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n     * check cache entries for a URLs ending with '/' to see if there is a hit when\n     * appending the `directoryIndex` value.\n     * @param {Array<RegExp>} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An\n     * array of regex's to remove search params when looking for a cache match.\n     * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n     * check the cache for the URL with a `.html` added to the end of the end.\n     * @param {workbox-precaching~urlManipulation} [options.urlManipulation]\n     * This is a function that should take a URL and return an array of\n     * alternative URLs that should be checked for precache matches.\n     */\n    constructor(precacheController, options) {\n        const match = ({ request, }) => {\n            const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n            for (const possibleURL of generateURLVariations(request.url, options)) {\n                const cacheKey = urlsToCacheKeys.get(possibleURL);\n                if (cacheKey) {\n                    const integrity = precacheController.getIntegrityForCacheKey(cacheKey);\n                    return { cacheKey, integrity };\n                }\n            }\n            if (process.env.NODE_ENV !== 'production') {\n                logger.debug(`Precaching did not find a match for ` + getFriendlyURL(request.url));\n            }\n            return;\n        };\n        super(match, precacheController.strategy);\n    }\n}\nexport { PrecacheRoute };\n","/*\n  Copyright 2019 Google LLC\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { registerRoute } from 'workbox-routing/registerRoute.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { PrecacheRoute } from './PrecacheRoute.js';\nimport './_version.js';\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} [options] See the {@link workbox-precaching.PrecacheRoute}\n * options.\n *\n * @memberof workbox-precaching\n */\nfunction addRoute(options) {\n    const precacheController = getOrCreatePrecacheController();\n    const precacheRoute = new PrecacheRoute(precacheController, options);\n    registerRoute(precacheRoute);\n}\nexport { addRoute };\n","/*\n  Copyright 2018 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst SUBSTRING_TO_FIND = '-precache-';\n/**\n * Cleans up incompatible precaches that were created by older versions of\n * Workbox, by a service worker registered under the current scope.\n *\n * This is meant to be called as part of the `activate` event.\n *\n * This should be safe to use as long as you don't include `substringToFind`\n * (defaulting to `-precache-`) in your non-precache cache names.\n *\n * @param {string} currentPrecacheName The cache name currently in use for\n * precaching. This cache won't be deleted.\n * @param {string} [substringToFind='-precache-'] Cache names which include this\n * substring will be deleted (excluding `currentPrecacheName`).\n * @return {Array<string>} A list of all the cache names that were deleted.\n *\n * @private\n * @memberof workbox-precaching\n */\nconst deleteOutdatedCaches = async (currentPrecacheName, substringToFind = SUBSTRING_TO_FIND) => {\n    const cacheNames = await self.caches.keys();\n    const cacheNamesToDelete = cacheNames.filter((cacheName) => {\n        return (cacheName.includes(substringToFind) &&\n            cacheName.includes(self.registration.scope) &&\n            cacheName !== currentPrecacheName);\n    });\n    await Promise.all(cacheNamesToDelete.map((cacheName) => self.caches.delete(cacheName)));\n    return cacheNamesToDelete;\n};\nexport { deleteOutdatedCaches };\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { deleteOutdatedCaches } from './utils/deleteOutdatedCaches.js';\nimport './_version.js';\n/**\n * Adds an `activate` event listener which will clean up incompatible\n * precaches that were created by older versions of Workbox.\n *\n * @memberof workbox-precaching\n */\nfunction cleanupOutdatedCaches() {\n    // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n    self.addEventListener('activate', ((event) => {\n        const cacheName = cacheNames.getPrecacheName();\n        event.waitUntil(deleteOutdatedCaches(cacheName).then((cachesDeleted) => {\n            if (process.env.NODE_ENV !== 'production') {\n                if (cachesDeleted.length > 0) {\n                    logger.log(`The following out-of-date precaches were cleaned up ` +\n                        `automatically:`, cachesDeleted);\n                }\n            }\n        }));\n    }));\n}\nexport { cleanupOutdatedCaches };\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Helper function that calls\n * {@link PrecacheController#createHandlerBoundToURL} on the default\n * {@link PrecacheController} instance.\n *\n * If you are creating your own {@link PrecacheController}, then call the\n * {@link PrecacheController#createHandlerBoundToURL} on that instance,\n * instead of using this function.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the\n * response from the network if there's a precache miss.\n * @return {workbox-routing~handlerCallback}\n *\n * @memberof workbox-precaching\n */\nfunction createHandlerBoundToURL(url) {\n    const precacheController = getOrCreatePrecacheController();\n    return precacheController.createHandlerBoundToURL(url);\n}\nexport { createHandlerBoundToURL };\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Takes in a URL, and returns the corresponding URL that could be used to\n * lookup the entry in the precache.\n *\n * If a relative URL is provided, the location of the service worker file will\n * be used as the base.\n *\n * For precached entries without revision information, the cache key will be the\n * same as the original URL.\n *\n * For precached entries with revision information, the cache key will be the\n * original URL with the addition of a query parameter used for keeping track of\n * the revision info.\n *\n * @param {string} url The URL whose cache key to look up.\n * @return {string} The cache key that corresponds to that URL.\n *\n * @memberof workbox-precaching\n */\nfunction getCacheKeyForURL(url) {\n    const precacheController = getOrCreatePrecacheController();\n    return precacheController.getCacheKeyForURL(url);\n}\nexport { getCacheKeyForURL };\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Helper function that calls\n * {@link PrecacheController#matchPrecache} on the default\n * {@link PrecacheController} instance.\n *\n * If you are creating your own {@link PrecacheController}, then call\n * {@link PrecacheController#matchPrecache} on that instance,\n * instead of using this function.\n *\n * @param {string|Request} request The key (without revisioning parameters)\n * to look up in the precache.\n * @return {Promise<Response|undefined>}\n *\n * @memberof workbox-precaching\n */\nfunction matchPrecache(request) {\n    const precacheController = getOrCreatePrecacheController();\n    return precacheController.matchPrecache(request);\n}\nexport { matchPrecache };\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * {@link workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * {@link workbox-precaching.precacheAndRoute}.\n *\n * @param {Array<Object|string>} [entries=[]] Array of entries to precache.\n *\n * @memberof workbox-precaching\n */\nfunction precache(entries) {\n    const precacheController = getOrCreatePrecacheController();\n    precacheController.precache(entries);\n}\nexport { precache };\n","/*\n  Copyright 2019 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { addRoute } from './addRoute.js';\nimport { precache } from './precache.js';\nimport './_version.js';\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * {@link workbox-precaching.precache} and\n * {@link workbox-precaching.addRoute} in a single call.\n *\n * @param {Array<Object|string>} entries Array of entries to precache.\n * @param {Object} [options] See the\n * {@link workbox-precaching.PrecacheRoute} options.\n *\n * @memberof workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n    precache(entries);\n    addRoute(options);\n}\nexport { precacheAndRoute };\n","/*\n  Copyright 2020 Google LLC\n\n  Use of this source code is governed by an MIT-style\n  license that can be found in the LICENSE file or at\n  https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * `PrecacheFallbackPlugin` allows you to specify an \"offline fallback\"\n * response to be used when a given strategy is unable to generate a response.\n *\n * It does this by intercepting the `handlerDidError` plugin callback\n * and returning a precached response, taking the expected revision parameter\n * into account automatically.\n *\n * Unless you explicitly pass in a `PrecacheController` instance to the\n * constructor, the default instance will be used. Generally speaking, most\n * developers will end up using the default.\n *\n * @memberof workbox-precaching\n */\nclass PrecacheFallbackPlugin {\n    /**\n     * Constructs a new PrecacheFallbackPlugin with the associated fallbackURL.\n     *\n     * @param {Object} config\n     * @param {string} config.fallbackURL A precached URL to use as the fallback\n     *     if the associated strategy can't generate a response.\n     * @param {PrecacheController} [config.precacheController] An optional\n     *     PrecacheController instance. If not provided, the default\n     *     PrecacheController will be used.\n     */\n    constructor({ fallbackURL, precacheController, }) {\n        /**\n         * @return {Promise<Response>} The precache response for the fallback URL.\n         *\n         * @private\n         */\n        this.handlerDidError = () => this._precacheController.matchPrecache(this._fallbackURL);\n        this._fallbackURL = fallbackURL;\n        this._precacheController =\n            precacheController || getOrCreatePrecacheController();\n    }\n}\nexport { PrecacheFallbackPlugin };\n"],"names":["self","_","e","REVISION_SEARCH_PARAM","createCacheKey","entry","WorkboxError","urlObject","URL","location","href","cacheKey","url","revision","cacheKeyURL","originalURL","searchParams","set","PrecacheInstallReportPlugin","constructor","updatedURLs","notUpdatedURLs","handlerWillStart","request","state","originalRequest","cachedResponseWillBeUsed","event","cachedResponse","type","Request","push","PrecacheCacheKeyPlugin","precacheController","cacheKeyWillBeUsed","params","_precacheController","getCacheKeyForURL","headers","logGroup","groupTitle","deletedURLs","logger","groupCollapsed","log","groupEnd","printCleanupDetails","deletionCount","length","_nestedGroup","urls","printInstallDetails","urlsToPrecache","urlsAlreadyPrecached","precachedCount","alreadyPrecachedCount","message","PrecacheStrategy","Strategy","options","cacheName","cacheNames","getPrecacheName","_fallbackToNetwork","fallbackToNetwork","plugins","copyRedirectedCacheableResponsesPlugin","_handle","handler","response","cacheMatch","_handleInstall","_handleFetch","warn","getFriendlyURL","integrityInManifest","integrity","integrityInRequest","noIntegrityConflict","fetch","mode","undefined","_useDefaultCacheabilityPluginIfNeeded","wasCached","cachePut","clone","getCacheKey","status","defaultPluginIndex","cacheWillUpdatePluginCount","index","plugin","entries","defaultPrecacheCacheabilityPlugin","cacheWillUpdate","splice","redirected","copyResponse","PrecacheController","_urlsToCacheKeys","Map","_urlsToCacheModes","_cacheKeysToIntegrities","_strategy","install","bind","activate","strategy","precache","addToCacheList","_installAndActiveListenersAdded","addEventListener","assert","isArray","moduleName","className","funcName","paramName","urlsToWarnAbout","cacheMode","has","get","firstEntry","secondEntry","warningMessage","join","waitUntil","installReportPlugin","cache","credentials","Promise","all","handleAll","caches","open","currentlyCachedRequests","keys","expectedCacheKeys","Set","values","delete","getURLsToCacheKeys","getCachedURLs","getIntegrityForCacheKey","matchPrecache","match","createHandlerBoundToURL","Object","assign","handle","getOrCreatePrecacheController","addPlugins","removeIgnoredSearchParams","ignoreURLParametersMatching","some","regExp","test","generateURLVariations","directoryIndex","cleanURLs","urlManipulation","hash","urlWithoutIgnoredParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","PrecacheRoute","Route","urlsToCacheKeys","possibleURL","debug","addRoute","precacheRoute","registerRoute","SUBSTRING_TO_FIND","deleteOutdatedCaches","currentPrecacheName","substringToFind","cacheNamesToDelete","filter","includes","registration","scope","map","cleanupOutdatedCaches","then","cachesDeleted","precacheAndRoute","PrecacheFallbackPlugin","fallbackURL","handlerDidError","_fallbackURL"],"mappings":"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;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IACA,SAASyB,iBAAT,CAA2BzB,GAA3B,EAAgC;IAC5B,QAAMqB,kBAAkB,GAAGqH,6BAA6B,EAAxD;IACA,SAAOrH,kBAAkB,CAACI,iBAAnB,CAAqCzB,GAArC,CAAP;IACH;;IC/BD;IACA;AACA;IACA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IACA,SAASoI,aAAT,CAAuBzH,OAAvB,EAAgC;IAC5B,QAAMU,kBAAkB,GAAGqH,6BAA6B,EAAxD;IACA,SAAOrH,kBAAkB,CAAC+G,aAAnB,CAAiCzH,OAAjC,CAAP;IACH;;IC3BD;IACA;AACA;IACA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IACA,SAASqF,QAAT,CAAkBhB,OAAlB,EAA2B;IACvB,QAAM3D,kBAAkB,GAAGqH,6BAA6B,EAAxD;IACArH,EAAAA,kBAAkB,CAAC2E,QAAnB,CAA4BhB,OAA5B;IACH;;IC/BD;IACA;AACA;IACA;IACA;IACA;IACA;IAIA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IACA,SAASkG,gBAAT,CAA0BlG,OAA1B,EAAmCjC,OAAnC,EAA4C;IACxCiD,EAAAA,QAAQ,CAAChB,OAAD,CAAR;IACAkF,EAAAA,QAAQ,CAACnH,OAAD,CAAR;IACH;;IC3BD;IACA;AACA;IACA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IACA,MAAMoI,sBAAN,CAA6B;IACzB;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACI5K,EAAAA,WAAW,CAAC;IAAE6K,IAAAA,WAAF;IAAe/J,IAAAA;IAAf,GAAD,EAAuC;IAC9C;IACR;IACA;IACA;IACA;IACQ,SAAKgK,eAAL,GAAuB,MAAM,KAAK7J,mBAAL,CAAyB4G,aAAzB,CAAuC,KAAKkD,YAA5C,CAA7B;;IACA,SAAKA,YAAL,GAAoBF,WAApB;IACA,SAAK5J,mBAAL,GACIH,kBAAkB,IAAIqH,6BAA6B,EADvD;IAEH;;IArBwB;;;;;;;;;;;;;;;;;;;;;"}