1try{self["workbox:core:7.4.0"]&&_()}catch(X){}var e=(e,...t)=>{let s=e;return t.length>0&&(s+=` :: ${JSON.stringify(t)}`),s},t=class extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}};function s(e){e.then(()=>{})}var n,a;var r=new WeakMap,i=new WeakMap,o=new WeakMap,c=new WeakMap,h=new WeakMap;var l={get(e,t,s){if(e instanceof IDBTransaction){if("done"===t)return i.get(e);if("objectStoreNames"===t)return e.objectStoreNames||o.get(e);if("store"===t)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return f(e[t])},set:(e,t,s)=>(e[t]=s,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function u(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(a||(a=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(p(this),t),f(r.get(this))}:function(...t){return f(e.apply(p(this),t))}:function(t,...s){const n=e.call(p(this),t,...s);return o.set(n,t.sort?t.sort():[t]),f(n)}}function d(e){return"function"==typeof e?u(e):(e instanceof IDBTransaction&&function(e){if(i.has(e))return;const t=new Promise((t,s)=>{const n=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",r),e.removeEventListener("abort",r)},a=()=>{t(),n()},r=()=>{s(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",a),e.addEventListener("error",r),e.addEventListener("abort",r)});i.set(e,t)}(e),t=e,(n||(n=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some(e=>t instanceof e)?new Proxy(e,l):e);var t}function f(e){if(e instanceof IDBRequest)return function(e){const t=new Promise((t,s)=>{const n=()=>{e.removeEventListener("success",a),e.removeEventListener("error",r)},a=()=>{t(f(e.result)),n()},r=()=>{s(e.error),n()};e.addEventListener("success",a),e.addEventListener("error",r)});return t.then(t=>{t instanceof IDBCursor&&r.set(t,e)}).catch(()=>{}),h.set(t,e),t}(e);if(c.has(e))return c.get(e);const t=d(e);return t!==e&&(c.set(e,t),h.set(t,e)),t}var p=e=>h.get(e);var g=["get","getKey","getAll","getAllKeys","count"],w=["put","add","delete","clear"],m=new Map;function y(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(m.get(t))return m.get(t);const s=t.replace(/FromIndex$/,""),n=t!==s,a=w.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!a&&!g.includes(s))return;const r=async function(e,...t){const r=this.transaction(e,a?"readwrite":"readonly");let i=r.store;return n&&(i=i.index(t.shift())),(await Promise.all([i[s](...t),a&&r.done]))[0]};return m.set(t,r),r}l=(e=>({...e,get:(t,s,n)=>y(t,s)||e.get(t,s,n),has:(t,s)=>!!y(t,s)||e.has(t,s)}))(l);try{self["workbox:expiration:7.4.0"]&&_()}catch(X){}var v="cache-entries",b=e=>{const t=new URL(e,location.href);return t.hash="",t.href},R=class{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){const t=e.createObjectStore(v,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&function(e,{blocked:t}={}){const s=indexedDB.deleteDatabase(e);t&&s.addEventListener("blocked",e=>t(e.oldVersion,e)),f(s).then(()=>{})}(this._cacheName)}async setTimestamp(e,t){const s={url:e=b(e),timestamp:t,cacheName:this._cacheName,id:this._getId(e)},n=(await this.getDb()).transaction(v,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(e){const t=await(await this.getDb()).get(v,this._getId(e));return null==t?void 0:t.timestamp}async expireEntries(e,t){const s=await this.getDb();let n=await s.transaction(v).store.index("timestamp").openCursor(null,"prev");const a=[];let r=0;for(;n;){const s=n.value;s.cacheName===this._cacheName&&(e&&s.timestamp<e||t&&r>=t?a.push(n.value):r++),n=await n.continue()}const i=[];for(const o of a)await s.delete(v,o.id),i.push(o.url);return i}_getId(e){return this._cacheName+"|"+b(e)}async getDb(){return this._db||(this._db=await function(e,t,{blocked:s,upgrade:n,blocking:a,terminated:r}={}){const i=indexedDB.open(e,t),o=f(i);return n&&i.addEventListener("upgradeneeded",e=>{n(f(i.result),e.oldVersion,e.newVersion,f(i.transaction),e)}),s&&i.addEventListener("blocked",e=>s(e.oldVersion,e.newVersion,e)),o.then(e=>{r&&e.addEventListener("close",()=>r()),a&&e.addEventListener("versionchange",e=>a(e.oldVersion,e.newVersion,e))}).catch(()=>{}),o}("workbox-expiration",1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)})),this._db}},C=class{constructor(e,t={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new R(e)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const e=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),n=await self.caches.open(this._cacheName);for(const s of t)await n.delete(s,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,s(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._timestampModel.getTimestamp(e),s=Date.now()-1e3*this._maxAgeSeconds;return void 0===t||t<s}return!1}async delete(){this._rerunRequested=!1,await this._timestampModel.expireEntries(1/0)}},x={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},L=e=>[x.prefix,e,x.suffix].filter(e=>e&&e.length>0).join("-"),E=e=>e||L(x.precache),q=e=>e||L(x.runtime),U=new Set;function D(e,t){const s=t();return e.waitUntil(s),s}try{self["workbox:precaching:7.4.0"]&&_()}catch(X){}function T(e){if(!e)throw new t("add-to-cache-list-unexpected-type",{entry:e});if("string"==typeof e){const t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}const{revision:s,url:n}=e;if(!n)throw new t("add-to-cache-list-unexpected-type",{entry:e});if(!s){const e=new URL(n,location.href);return{cacheKey:e.href,url:e.href}}const a=new URL(n,location.href),r=new URL(n,location.href);return a.searchParams.set("__WB_REVISION__",s),{cacheKey:a.href,url:r.href}}var k,N=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:s})=>{if("install"===e.type&&t&&t.originalRequest&&t.originalRequest instanceof Request){const e=t.originalRequest.url;s?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return s}}},I=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{const s=(null==t?void 0:t.cacheKey)||this._precacheController.getCacheKeyForURL(e.url);
1return s?new Request(s,{headers:e.headers}):e},this._precacheController=e}};async function K(e,s){let n=null;if(e.url&&(n=new URL(e.url).origin),n!==self.location.origin)throw new t("cross-origin-copy-response",{origin:n});const a=e.clone(),r={headers:new Headers(a.headers),status:a.status,statusText:a.statusText},i=s?s(r):r,o=function(){if(void 0===k){const t=new Response("");if("body"in t)try{new Response(t.body),k=!0}catch(e){k=!1}k=!1}return k}()?a.body:await a.blob();return new Response(o,i)}function M(e,t){const s=new URL(e);for(const n of t)s.searchParams.delete(n);return s.href}var P=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};try{self["workbox:strategies:7.4.0"]&&_()}catch(X){}function S(e){return"string"==typeof e?new Request(e):e}var A=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new P,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const s of this._plugins)this._pluginStateMap.set(s,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:s}=this;let n=S(e);if("navigate"===n.mode&&s instanceof FetchEvent&&s.preloadResponse){const e=await s.preloadResponse;if(e)return e}const a=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const e of this.iterateCallbacks("requestWillFetch"))n=await e({request:n.clone(),event:s})}catch(i){if(i instanceof Error)throw new t("plugin-error-request-will-fetch",{thrownErrorMessage:i.message})}const r=n.clone();try{let e;e=await fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);for(const t of this.iterateCallbacks("fetchDidSucceed"))e=await t({event:s,request:r,response:e});return e}catch(o){throw a&&await this.runCallbacks("fetchDidFail",{error:o,event:s,originalRequest:a.clone(),request:r.clone()}),o}}async fetchAndCachePut(e){const t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){const t=S(e);let s;const{cacheName:n,matchOptions:a}=this._strategy,r=await this.getCacheKey(t,"read"),i=Object.assign(Object.assign({},a),{cacheName:n});s=await caches.match(r,i);for(const o of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await o({cacheName:n,matchOptions:a,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(e,s){const n=S(e);var a;await(a=0,new Promise(e=>setTimeout(e,a)));const r=await this.getCacheKey(n,"write");if(!s)throw new t("cache-put-with-no-response",{url:(i=r.url,new URL(String(i),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var i;const o=await this._ensureResponseSafeToCache(s);if(!o)return!1;const{cacheName:c,matchOptions:h}=this._strategy,l=await self.caches.open(c),u=this.hasCallback("cacheDidUpdate"),d=u?await async function(e,t,s,n){const a=M(t.url,s);if(t.url===a)return e.match(t,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),i=await e.keys(t,r);for(const o of i)if(a===M(o.url,s))return e.match(o,n)}(l,r.clone(),["__WB_REVISION__"],h):null;try{await l.put(r,u?o.clone():o)}catch(f){if(f instanceof Error)throw"QuotaExceededError"===f.name&&await async function(){for(const e of U)await e()}(),f}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:c,oldResponse:d,newResponse:o.clone(),request:r,event:this.event});return!0}async getCacheKey(e,t){const s=`${e.url} | ${t}`;if(!this._cacheKeys[s]){let n=e;for(const e of this.iterateCallbacks("cacheKeyWillBeUsed"))n=S(await e({mode:t,request:n,event:this.event,params:this.params}));this._cacheKeys[s]=n}return this._cacheKeys[s]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if("function"==typeof t[e]){const s=this._pluginStateMap.get(t),n=n=>{const a=Object.assign(Object.assign({},n),{state:s});return t[e](a)};yield n}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){const e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>"rejected"===e.status);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(const n of this.iterateCallbacks("cacheWillUpdate"))if(t=await n({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return s||t&&200!==t.status&&(t=void 0),t}},O=class{constructor(e={}){this.cacheName=q(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});
vendor: 4,135 bytes, line 1
1const t=e.event,s="string"==typeof e.request?new Request(e.request):e.request,n="params"in e?e.params:void 0,a=new A(this,{event:t,request:s,params:n}),r=this._getResponse(a,s,t);return[r,this._awaitComplete(r,a,s,t)]}async _getResponse(e,s,n){let a;await e.runCallbacks("handlerWillStart",{event:n,request:s});try{if(a=await this._handle(s,e),!a||"error"===a.type)throw new t("no-response",{url:s.url})}catch(r){if(r instanceof Error)for(const t of e.iterateCallbacks("handlerDidError"))if(a=await t({error:r,event:n,request:s}),a)break;if(!a)throw r}for(const t of e.iterateCallbacks("handlerWillRespond"))a=await t({event:n,request:s,response:a});return a}async _awaitComplete(e,t,s,n){let a,r;try{a=await e}catch(r){}try{await t.runCallbacks("handlerDidRespond",{event:n,request:s,response:a}),await t.doneWaiting()}catch(i){i instanceof Error&&(r=i)}if(await t.runCallbacks("handlerDidComplete",{event:n,request:s,response:a,error:r}),t.destroy(),r)throw r}},W=class e extends O{constructor(t={}){t.cacheName=E(t.cacheName),super(t),this._fallbackToNetwork=!1!==t.fallbackToNetwork,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const s=await t.cacheMatch(e);return s||(t.event&&"install"===t.event.type?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,s){let n;const a=s.params||{};if(!this._fallbackToNetwork)throw new t("missing-precache-entry",{cacheName:this.cacheName,url:e.url});{const t=a.integrity,r=e.integrity,i=!r||r===t;n=await s.fetch(new Request(e,{integrity:"no-cors"!==e.mode?r||t:void 0})),t&&i&&"no-cors"!==e.mode&&(this._useDefaultCacheabilityPluginIfNeeded(),await s.cachePut(e,n.clone()))}return n}async _handleInstall(e,s){this._useDefaultCacheabilityPluginIfNeeded();const n=await s.fetch(e);if(!(await s.cachePut(e,n.clone())))throw new t("bad-precaching-response",{url:e.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let t=null,s=0;for(const[n,a]of this.plugins.entries())a!==e.copyRedirectedCacheableResponsesPlugin&&(a===e.defaultPrecacheCacheabilityPlugin&&(t=n),a.cacheWillUpdate&&s++);0===s?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):s>1&&null!==t&&this.plugins.splice(t,1)}};W.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:e})=>!e||e.status>=400?null:e},W.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:e})=>e.redirected?await K(e):e};var B,j=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new W({cacheName:E(e),plugins:[...t,new I({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const s=[];for(const n of e){"string"==typeof n?s.push(n):n&&void 0===n.revision&&s.push(n.url);const{cacheKey:e,url:a}=T(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this._urlsToCacheKeys.has(a)&&this._urlsToCacheKeys.get(a)!==e)throw new t("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(a),secondEntry:e});if("string"!=typeof n&&n.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==n.integrity)throw new t("add-to-cache-list-conflicting-integrities",{url:a});this._cacheKeysToIntegrities.set(e,n.integrity)}if(this._urlsToCacheKeys.set(a,e),this._urlsToCacheModes.set(a,r),s.length>0){const e=`Workbox is precaching URLs without revision info: ${s.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return D(e,async()=>{const t=new N;this.strategy.plugins.push(t);for(const[a,r]of this._urlsToCacheKeys){const t=this._cacheKeysToIntegrities.get(r),s=this._urlsToCacheModes.get(a),n=new Request(a,{integrity:t,cache:s,credentials:"same-origin"});
1await Promise.all(this.strategy.handleAll({params:{cacheKey:r},request:n,event:e}))}const{updatedURLs:s,notUpdatedURLs:n}=t;return{updatedURLs:s,notUpdatedURLs:n}})}activate(e){return D(e,async()=>{const e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),n=[];for(const a of t)s.has(a.url)||(await e.delete(a),n.push(a.url));return{deletedURLs:n}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){const t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s)return(await self.caches.open(this.strategy.cacheName)).match(s)}createHandlerBoundToURL(e){const s=this.getCacheKeyForURL(e);if(!s)throw new t("non-precached-url",{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:s},t.params),this.strategy.handle(t))}},F=()=>(B||(B=new j),B);try{self["workbox:routing:7.4.0"]&&_()}catch(X){}var H,V=e=>e&&"object"==typeof e?e:{handle:e},$=class{constructor(e,t,s="GET"){this.handler=V(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=V(e)}},G=class extends ${constructor(e,t,s){super(({url:t})=>{const s=e.exec(t.href);if(s&&(t.origin===location.origin||0===s.index))return s.slice(1)},t,s)}},Q=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",e=>{const{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)})}addCacheListener(){self.addEventListener("message",e=>{if(e.data&&"CACHE_URLS"===e.data.type){const{payload:t}=e.data,s=Promise.all(t.urlsToCache.map(t=>{"string"==typeof t&&(t=[t]);const s=new Request(...t);return this.handleRequest({request:s,event:e})}));e.waitUntil(s),e.ports&&e.ports[0]&&s.then(()=>e.ports[0].postMessage(!0))}})}handleRequest({request:e,event:t}){const s=new URL(e.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:a,route:r}=this.findMatchingRoute({event:t,request:e,sameOrigin:n,url:s});let i=r&&r.handler;const o=e.method;if(!i&&this._defaultHandlerMap.has(o)&&(i=this._defaultHandlerMap.get(o)),!i)return;let c;try{c=i.handle({url:s,request:e,event:t,params:a})}catch(l){c=Promise.reject(l)}const h=r&&r.catchHandler;return c instanceof Promise&&(this._catchHandler||h)&&(c=c.catch(async n=>{if(h)try{return await h.handle({url:s,request:e,event:t,params:a})}catch(r){r instanceof Error&&(n=r)}if(this._catchHandler)return this._catchHandler.handle({url:s,request:e,event:t});throw n})),c}findMatchingRoute({url:e,sameOrigin:t,request:s,event:n}){const a=this._routes.get(s.method)||[];for(const r of a){let a;const i=r.match({url:e,sameOrigin:t,request:s,event:n});if(i)return a=i,(Array.isArray(a)&&0===a.length||i.constructor===Object&&0===Object.keys(i).length||"boolean"==typeof i)&&(a=void 0),{route:r,params:a}}return{}}setDefaultHandler(e,t="GET"){this._defaultHandlerMap.set(t,V(e))}setCatchHandler(e){this._catchHandler=V(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t("unregister-route-but-not-found-with-method",{method:e.method});const s=this._routes.get(e.method).indexOf(e);if(!(s>-1))throw new t("unregister-route-route-not-registered");this._routes.get(e.method).splice(s,1)}};function J(e,s,n){let a;if("string"==typeof e){const t=new URL(e,location.href);a=new $(({url:e})=>e.href===t.href,s,n)}else if(e instanceof RegExp)a=new G(e,s,n);else if("function"==typeof e)a=new $(e,s,n);else{if(!(e instanceof $))throw new t("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=e}return(H||((H=new Q).addFetchListener(),H.addCacheListener()),H).registerRoute(a),a}var Y=class extends ${constructor(e,t){super(({request:s})=>{const n=e.getURLsToCacheKeys();for(const a of function*(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:a}={}
1){const r=new URL(e,location.href);r.hash="",yield r.href;const i=function(e,t=[]){for(const s of[...e.searchParams.keys()])t.some(e=>e.test(s))&&e.searchParams.delete(s);return e}(r,t);if(yield i.href,s&&i.pathname.endsWith("/")){const e=new URL(i.href);e.pathname+=s,yield e.href}if(n){const e=new URL(i.href);e.pathname+=".html",yield e.href}if(a){const e=a({url:r});for(const t of e)yield t.href}}(s.url,t)){const t=n.get(a);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};var z;(function(e){F().precache(e)})([{"revision":"1872c500de691dce40960bb85481de07","url":"registerSW.js"},{"revision":"602cf25f8649a98653eaa79b96958218","url":"index.html"},{"revision":null,"url":"assets/zustand-DRqXVrYT.js"},{"revision":null,"url":"assets/satori-DQK2YtBh.js"},{"revision":null,"url":"assets/rolldown-runtime-DOG2APjf.js"},{"revision":null,"url":"assets/react-vendor-DdkjEHWj.js"},{"revision":null,"url":"assets/mapbox-gl-BltzH4ta.js"},{"revision":null,"url":"assets/index-BgarkDGJ.js"},{"revision":null,"url":"assets/gpxWorker-lDMb7iY8.js"},{"revision":null,"url":"assets/dist-CbSkU-NM.js"},{"revision":null,"url":"assets/d3-vendor-CJQFqGEk.js"},{"revision":null,"url":"assets/__vite-browser-external-BuWWSN-J.js"},{"revision":null,"url":"assets/Map-bpFrQ5yG.css"},{"revision":null,"url":"assets/Map-CE_VxUwT.js"},{"revision":null,"url":"assets/Help-B6MPO1m4.js"},{"revision":"cfab3772657496bfd2c35efbfc9c251b","url":"TOR330-2026.gpx"},{"revision":"2fdcce597f3307ccd486ed7389ea7afd","url":"apple-touch-icon.png"},{"revision":"2eb3a6ff16308fdccb3ae8d96bfcaa5c","url":"diagonale-2026.gpx"},{"revision":"aa18d2224c26723b42bcabb88214ab67","url":"favicon.ico"},{"revision":"d85966b1fda37f1636f9030fd7b51613","url":"grp-120-2026.gpx"},{"revision":"9a893ba8ed0967eb9a4128a4745c1dcc","url":"grp-160-2026.gpx"},{"revision":"abfb0fc8d4556d318a2d157c94c4a773","url":"grp-40-gela-2026.gpx"},{"revision":"3a64a975762ce7895bb3021e699f59e5","url":"grp-40-neouvielle-2026.gpx"},{"revision":"2861ea70715bc681990ddb23c9bc5c23","url":"grp-50-2026.gpx"},{"revision":"0144cf444239003ab35d719c9a2f7e1f","url":"grp-60-2026.gpx"},{"revision":"846639342eb86178d5c65b7e1dcd558b","url":"grp-80-2026.gpx"},{"revision":"ea71508999cd15ea19df6d990c1ab7d0","url":"logo150.png"},{"revision":"f1eb596deffc99d8018176654d0c4b4b","url":"logo192.png"},{"revision":"9686315d410cbb9e2b1b6307c0350a73","url":"logo512.png"},{"revision":"5cf466895546031b1c1f7b389eb62094","url":"races.json"},{"revision":"50184d537d07ba071260704b2133d1d7","url":"utmb-2026.gpx"},{"revision":"2d0cce4b56137d047645bff6ed8a39ff","url":"vvx-xgtv-2026-forte-pluie.gpx"},{"revision":"c8689b1b4d54fb6e050e5a258e426b94","url":"vvx-xgtv-2026-normal.gpx"},{"revision":"9d1a6a5bd8fb4c83231260e0c21fe728","url":"vvx-xgtv-2026-repli.gpx"},{"revision":"451e5a44c30f1aca87c087b44c3c413b","url":"vvx-xgtv-2026.gpx"},{"revision":"d7003a4a137bd69a488e8c64c11fd2a9","url":"manifest.webmanifest"}]),function(e){J(new Y(F(),e))}(z),J(({url:e})=>e.pathname.endsWith(".gpx"),new class extends O{async _handle(e,s){let n,a=await s.cacheMatch(e);if(!a)try{a=await s.fetchAndCachePut(e)}catch(r){r instanceof Error&&(n=r)}if(!a)throw new t("no-response",{url:e.url,error:n});return a}}({cacheName:"gpx-files",plugins:[new class{constructor(e={}){this.cachedResponseWillBeUsed=async({event:e,request:t,cacheName:n,cachedResponse:a})=>{if(!a)return null;const r=this._isResponseDateFresh(a),i=this._getCacheExpiration(n);s(i.expireEntries());const o=i.updateTimestamp(t.url);if(e)try{e.waitUntil(o)}catch(c){}return r?a:null},this.cacheDidUpdate=async({cacheName:e,request:t})=>{const s=this._getCacheExpiration(e);await s.updateTimestamp(t.url),await s.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&function(e){U.add(e)}(()=>
1this.deleteCacheAndMetadata())}_getCacheExpiration(e){if(e===q())throw new t("expire-custom-caches-only");let s=this._cacheExpirations.get(e);return s||(s=new C(e,this._config),this._cacheExpirations.set(e,s)),s}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this._getDateHeaderTimestamp(e);return null===t||t>=Date.now()-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const t=e.headers.get("date"),s=new Date(t).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}}({maxEntries:10})]})),self.addEventListener("fetch",e=>{"cloud.umami.is"===new URL(e.request.url).hostname&&e.respondWith(fetch(e.request).catch(()=>new Response("",{headers:{"Content-Type":"application/javascript"}})))}),self.addEventListener("message",e=>{if(e.origin===self.location.origin&&"object"==typeof e.data&&null!==e.data&&"PARTYKIT_MESSAGE"===e.data?.type){const{payload:t}=e.data;e.waitUntil(self.registration.showNotification(t.title??"Terminus",{body:t.body,icon:"/logo192.png",badge:"/logo150.png",data:t.data,tag:"location-update",renotify:!0}))}}),self.addEventListener("push",e=>{const t=e.data?.json()??{};e.waitUntil(self.registration.showNotification(t.title??"Terminus",{body:t.body,icon:"/logo192.png",badge:"/logo150.png",tag:"location-update",renotify:!0}))}),self.addEventListener("notificationclick",e=>{e.notification.close(),e.waitUntil(self.clients.matchAll({type:"window",includeUncontrolled:!0}).then(e=>e.length>0?e[0].focus():self.clients.openWindow("/")))}); 2//# sourceMappingURL=sw.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.