1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2578],{2578:(e,t,n)=>{n.d(t,{Dh:()=>y,accessToken:()=>M,Ny:()=>x,Uk:()=>J,U2:()=>S,Jv:()=>I,CI:()=>j,Cb:()=>E,_7:()=>w,cA:()=>W});var a=n(9636),l=n(1266),u=n(1927),r=n(2237),s=n(5202),i=n(9379);let o=["funnudge:achievements","funnudge:daily-streak-data","funnudge:favorites","funnudge:total-plays","funnudge:name","funnudge:recents","funnudge:dc-done","funnudge:pids"];function f(){let e=[];for(let t of i.ag)e.push("funnudge:stats:".concat(t.slug)),t.slug.endsWith("-online")&&e.push("funnudge:mp-record:".concat(t.slug));return e}let d=e=>{let t=Number(e);return Number.isFinite(t)?t:0},c=(e,t)=>{if(null==e)return t;try{return JSON.parse(e)}catch(e){return t}};function g(e){if(d(e["funnudge:total-plays"])>0||c(e["funnudge:achievements"],[]).length>0||c(e["funnudge:daily-streak-data"],{}).streak)return!0;for(let l of Object.keys(e))if(l.startsWith("funnudge:stats:")){if(c(e[l],{}).plays)return!0}else if(l.startsWith("funnudge:mp-record:")){var t,n,a;let u=c(e[l],{});if((null!=(t=u.w)?t:0)+(null!=(n=u.l)?n:0)+(null!=(a=u.d)?a:0)>0)return!0}return!1}n(5704);let m="https://szrhpgweueniopvwutic.supabase.co",h="sb_publishable_f7QNX8Dn4Kw9sm6wtrd31w_ySsgnx9y",w=()=>!!m&&!!h,y="funnudge:sync",p="funnudge:signin-at",v="",k=null,b=null,S=()=>b;async function _(){return k||(k=Promise.all([n.e(5730),n.e(6650)]).then(n.bind(n,168)).then(e=>{let{createClient:t}=e;return t(m,h,{auth:{persistSession:!0,autoRefreshToken:!0,detectSessionInUrl:!0}})})),k}function N(e){let t=new Set;for(let n of e)"funnudge:name"===n?t.add(l.dK):"funnudge:daily-streak-data"===n?t.add(s.Se):"funnudge:achievements"===n?t.add(a.xP):"funnudge:favorites"===n&&t.add(r.hO);for(let e of t)window.dispatchEvent(new CustomEvent(e))}function O(e){window.dispatchEvent(new CustomEvent(y,{detail:{user:e}}))}async function x(){var e,t,n,a;if(!w())return null;let l=await _(),{data:u}=await l.auth.getSession(),r=null==(e=u.session)?void 0:e.user;if(!r)return null;let s=null!=(a=null==(t=r.user_metadata)?void 0:t.name)?a:null==(n=r.user_metadata)?void 0:n.full_name,i="string"==typeof s&&s.trim()?s.trim():void 0,o="string"==typeof r.email&&r.email.trim()?r.email.trim():null;return{id:r.id,name:null!=i?i:"Player",rawName:i,email:o}}async function M(){if(!w())return null;try{var e,t;let n=await _(),{data:a}=await n.auth.getSession();return null!=(t=null==(e=a.session)?void 0:e.access_token)?t:null}catch(e){return null}}async function I(){let e=await _();try{window.sessionStorage.setItem(p,String(Date.now()))}catch(e){}await e.auth.signInWithOAuth({provider:"google",options:{redirectTo:window.location.href}})}async function j(){let e=await _();await e.auth.signOut(),b=null,v="",O(null)}function C(e){return Object.keys(e).sort().map(t=>"".concat(t,"=").concat(e[t])).join("|")}async function W(e){var t;if(!w())return null;let n=await x();if(!n)return null;let a=await _();(0,u.tj)();let r=function(){let e={};for(let t of[...o,...f()])try{let n=window.localStorage.getItem(t);null!==n&&(e[t]=n)}catch(e){}return e}();if((null==e?void 0:e.ifChanged)&&C(r)===v)return O(n),n;let{data:s,error:i}=await a.from("player_state").select("state").eq("user_id",n.id).maybeSingle();if(i)return O(n),n;let m=null!=(t=null==s?void 0:s.state)?t:{},h=function(e,t){let n={...t,...e};for(let a of new Set([...Object.keys(e),...Object.keys(t)])){let l=e[a],u=t[a];if(void 0!==l&&void 0!==u)if("funnudge:daily-streak-data"===a)n[a]=function(e,t){var n,a,l,u,r,s,i,o,f,d;let g={last:"",streak:0,best:0,history:[],freezes:0},m=c(e,g),h=c(t,g),w=(null!=(n=m.last)?n:"")>=(null!=(a=h.last)?a:"")?m:h,y=[...new Set([...null!=(l=m.history)?l:[],...null!=(u=h.history)?u:[]])].sort();return JSON.stringify({last:null!=(r=w.last)?r:"",streak:null!=(s=w.streak)?s:0,best:Math.max(null!=(i=m.best)?i:0,null!=(o=h.best)?o:0),history:y,freezes:Math.max(null!=(f=m.freezes)?f:0,null!=(d=h.freezes)?d:0)})}(l,u);else if("funnudge:achievements"===a||"funnudge:favorites"===a||"funnudge:recents"===a||"funnudge:pids"===a)n[a]=JSON.stringify([...new Set([...c(l,[]),...c(u,[])])]);else"funnudge:total-plays"===a?n[a]=String(Math.max(d(l),d(u))):a.startsWith("funnudge:stats:")?n[a]=function(e,t){var n,a,l,u,r,s;let i=c(e,{plays:0,best:0,total:0}),o=c(t,{plays:0,best:0,total:0});return JSON.stringify({plays:Math.max(null!=(n=i.plays)?n:0,null!=(a=o.plays)?a:0),best:Math.max(null!=(l=i.best)?l:0,null!=(u=o.best)?u:0),total:Math.max(null!=(r=i.total)?r:0,null!=(s=o.total)?
1s:0)})}(l,u):a.startsWith("funnudge:mp-record:")&&(n[a]=function(e,t){var n,a,l,u,r,s,i,o,f,d,g,m;let h={w:0,l:0,d:0,streak:0,bestStreak:0},w=c(e,h),y=c(t,h);return JSON.stringify({w:Math.max(null!=(n=w.w)?n:0,null!=(a=y.w)?a:0),l:Math.max(null!=(l=w.l)?l:0,null!=(u=y.l)?u:0),d:Math.max(null!=(r=w.d)?r:0,null!=(s=y.d)?s:0),streak:(null!=(i=w.bestStreak)?i:0)>=(null!=(o=y.bestStreak)?o:0)?null!=(f=w.streak)?f:0:null!=(d=y.streak)?d:0,bestStreak:Math.max(null!=(g=w.bestStreak)?g:0,null!=(m=y.bestStreak)?m:0)})}(l,u))}return n}(r,m),y=function(e,t,n){var a,l,u,r,s,i;let o=g(t)?g(e)?"merge":"restore":"upload",f=c(e["funnudge:achievements"],[]).length,d=c(n["funnudge:achievements"],[]).length,m=0;for(let t of Object.keys(n))if(t.startsWith("funnudge:stats:")){let u=null!=(a=c(e[t],{}).best)?a:0;(null!=(l=c(n[t],{}).best)?l:0)>u&&(m+=1)}else if(t.startsWith("funnudge:mp-record:")){let a=null!=(u=c(e[t],{}).w)?u:0;(null!=(r=c(n[t],{}).w)?r:0)>a&&(m+=1)}let h=null!=(s=c(e["funnudge:daily-streak-data"],{}).streak)?s:0;return{mode:o,achievementsGained:Math.max(0,d-f),bestsRaised:m,streakRestored:(null!=(i=c(n["funnudge:daily-streak-data"],{}).streak)?i:0)>h}}(r,m,h),k=function(e){let t=[];for(let[n,a]of Object.entries(e))try{if(window.localStorage.getItem(n)===a)continue;window.localStorage.setItem(n,a),t.push(n)}catch(e){}return t}(h),S=function(){try{let e=window.sessionStorage.getItem(p);if(null===e)return!1;window.sessionStorage.removeItem(p);let t=Date.now()-Number(e);return Number.isFinite(t)&&t>=0&&t<3e5}catch(e){return!1}}();N(k);let M=(0,l.kI)(n.rawName);return b={user:n,adoptedName:M,summary:y,fresh:S},M&&(h["funnudge:name"]=(0,l.Mn)()),await a.from("player_state").upsert({user_id:n.id,display_name:n.name,state:h},{onConflict:"user_id"}),v=C(h),O(n),n}async function E(){for(let e of(await W(),await j(),[...o,...f(),"funnudge:pid"]))try{window.localStorage.removeItem(e)}catch(e){}N(["funnudge:name","funnudge:daily-streak-data","funnudge:achievements","funnudge:favorites"])}async function J(){let e=await x();if(!e)return;let t=await _();await t.from("player_state").delete().eq("user_id",e.id),await j()}}}]);
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.