@apps-in-toss/web-framework 1.10.1 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/index.js CHANGED
@@ -52274,7 +52274,7 @@ var require_package = __commonJS({
52274
52274
  module.exports = {
52275
52275
  name: "@apps-in-toss/web-framework",
52276
52276
  type: "module",
52277
- version: "1.10.1",
52277
+ version: "1.11.0",
52278
52278
  description: "Web Framework for Apps In Toss",
52279
52279
  scripts: {
52280
52280
  typecheck: "tsc --noEmit",
@@ -236011,7 +236011,7 @@ __d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, e
236011
236011
  }
236012
236012
  \`;document.head.appendChild(e);})();
236013
236013
  `,
236014
- m = "\"use strict\";(()=>{var Y=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},g=new Y,M=()=>Math.random().toString(36).substring(2,15),D=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=M(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(g.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(g.on(`${e}/reject/${r}`,c=>{o(),a(D(c))})),g.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function I(e){return t=>{let r=M(),n=[g.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),g.on(`${e}/onError/${r}`,o=>{t.onError(D(o))})];return g.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{g.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function m(e){return()=>g.getConstant(e)}var Q=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(c){return r!==c})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=Q());var Re=d(\"closeView\"),Me=d(\"generateHapticFeedback\"),De=d(\"share\"),Ne=d(\"setSecureScreen\"),Fe=d(\"setScreenAwakeMode\"),Oe=d(\"getNetworkStatus\"),Be=d(\"setIosSwipeGestureEnabled\"),Ge=d(\"openURL\"),Ve=d(\"openPermissionDialog\"),ke=d(\"getPermission\"),He=d(\"requestPermission\"),ze=m(\"setClipboardText\"),Ue=m(\"getClipboardText\"),We=m(\"fetchContacts\"),qe=m(\"fetchAlbumPhotos\"),$e=m(\"getCurrentLocation\"),je=m(\"openCamera\"),Ke=d(\"appLogin\"),Je=d(\"eventLog\"),Xe=d(\"getTossShareLink\"),Ze=d(\"setDeviceOrientation\"),Ye=d(\"checkoutPayment\"),Qe=d(\"saveBase64Data\"),et=d(\"appsInTossSignTossCert\"),tt=d(\"getGameCenterGameProfile\"),rt=d(\"openGameCenterLeaderboard\"),nt=d(\"submitGameCenterLeaderBoardScore\"),ot=d(\"getUserKeyForGame\"),st=d(\"getIsTossLoginIntegratedService\"),at=d(\"grantPromotionRewardForGame\"),it=d(\"getServerTime\"),ct=m(\"getLocale\"),dt=m(\"getSchemeUri\"),ut=m(\"getPlatformOS\"),pt=m(\"getOperationalEnvironment\"),mt=m(\"getTossAppVersion\"),lt=m(\"getDeviceId\"),gt=I(\"contactsViral\"),vt=I(\"startUpdateLocation\"),ft=I(\"onVisibilityChangedByTransparentServiceWeb\");var E=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},N=class extends E{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},F=class extends E{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},O=class extends E{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var x=class extends E{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},B=x,G=class extends E{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},V=class extends E{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var ee=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},v=new ee,K=()=>Math.random().toString(36).substring(2,15),J=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function i(e){return(...t)=>{let r=K(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(v.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(v.on(`${e}/reject/${r}`,c=>{o(),a(J(c))})),v.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function w(e){return t=>{let r=K(),n=[v.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),v.on(`${e}/onError/${r}`,o=>{t.onError(J(o))})];return v.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{v.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>v.getConstant(e)}var Tt={getItem:i(\"getStorageItem\"),setItem:i(\"setStorageItem\"),removeItem:i(\"removeStorageItem\"),clearItems:i(\"clearItems\")},te=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,k=e=>[\"*\",\"x\",\"X\"].includes(e),H=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},re=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ne=(e,t)=>{if(k(e)||k(t))return 0;let[r,n]=re(H(e),H(t));return r>n?1:r<n?-1:0},z=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(te);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},U=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=ne(o,s);if(a!==0)return a}return 0},oe=(e,t)=>{let r=z(e),n=z(t),o=r.pop(),s=n.pop(),a=U(r,n);return a!==0?a:o&&s?U(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function W(e){if(u(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=u(\"getTossAppVersion\")(),o=u(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:oe(r,o)>=0}function se(e){return i(\"processProductGrant\")(e)}var yt={createOneTimePurchaseOrder:e=>{let t=W({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=W({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,c=o.sku??o.productId;return n?w(\"requestOneTimePurchase\")({options:{sku:c},onEvent:async p=>{if(p.type===\"purchased\"){let l=await o.processProductGrant({orderId:p.data.orderId});await se({orderId:p.data.orderId,isProductGranted:l}).catch(a)}else s(p)},onError:p=>{a(p)}}):(i(\"iapCreateOneTimePurchaseOrder\")({productId:c}).then(l=>{Promise.resolve(o.processProductGrant({orderId:l.orderId})).then(()=>{s({type:\"success\",data:l})}).catch(h=>{a(h)})}).catch(l=>{a(l)}),r)},getProductItemList:i(\"iapGetProductItemList\"),getPendingOrders:i(\"getPendingOrders\"),getCompletedOrRefundedOrders:i(\"getCompletedOrRefundedOrders\"),completeProductGrant:i(\"completeProductGrant\")},Lt=u(\"getSafeAreaInsets\");var Pt=u(\"getSafeAreaInsets\");var xt={loadAppsInTossAdMob:Object.assign(w(\"loadAppsInTossAdMob\"),{isSupported:u(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(w(\"showAppsInTossAdMob\"),{isSupported:u(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(i(\"isAppsInTossAdMobLoaded\"),{isSupported:u(\"isAppsInTossAdMobLoaded_isSupported\")})};var Rt={getDeploymentId:u(\"getDeploymentId\")},Mt=u(\"deploymentId\"),Dt=u(\"brandDisplayName\"),Nt=u(\"brandIcon\"),Ft=u(\"brandPrimaryColor\");var Ot={addAccessoryButton:i(\"addAccessoryButton\"),removeAccessoryButton:i(\"removeAccessoryButton\")},ae=i(\"requestPermission\"),ie=i(\"getPermission\"),ce=i(\"openPermissionDialog\");function S({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ae(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>ie(e),n.openPermissionDialog=()=>ce(e),n}var Gt=S({handler:e=>i(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:N}),kt=S({handler:e=>i(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:F}),zt=S({handler:e=>i(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:x}),Wt=S({handler:e=>i(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:O}),$t=S({handler:e=>i(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:V}),Kt=S({handler:()=>i(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:G}),de=i(\"getPermission\"),ue=i(\"openPermissionDialog\"),X=e=>w(\"updateLocationEvent\")({...e,onError:t=>{let r=new B;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});X.getPermission=()=>de({name:\"geolocation\",access:\"access\"});X.openPermissionDialog=()=>ue({name:\"geolocation\",access:\"access\"});var Xt=Object.assign(w(\"loadFullScreenAd\"),{isSupported:u(\"loadFullScreenAd_isSupported\")}),Zt=Object.assign(w(\"showFullScreenAd\"),{isSupported:u(\"showFullScreenAd_isSupported\")}),pe=i(\"openURL\");function me(e){let t=le(e);return pe(t)}function le(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?ge(e):e}function ge(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var q=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",$=15e3,T=null;function A(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function ve(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=A();if(e)return Promise.resolve(e);if(T)return T;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",c),window.clearTimeout(f),T=null},a=()=>{let p=A();if(p){s(),r(p);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},c=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${q}.`))},f=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${$}ms.`))},$);o.addEventListener(\"load\",a),o.addEventListener(\"error\",c),o.async=!0,o.src=q,document.head.appendChild(o)});return T=t,t}var b=Object.assign(w(\"fetchTossAd\"),{isSupported:u(\"fetchTossAd_isSupported\")}),fe=i(\"tossAdEventLog\"),we=new Set([\"1\",\"2\"]);function he(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}return b({options:e,onEvent:t,onError:r})})}function j(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>we.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function Ee(e){return be(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:j(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:Se(e)?{resultType:\"SUCCESS\",success:j(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function be(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function Se(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function _e(){return async(e,t)=>{try{let r=await he({adGroupId:t.spaceUnitId,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return Ee(r)}catch(r){return{resultType:\"FAIL\",error:{reason:r instanceof Error?r.message:\"Unknown fetchTossAd error\"}}}}}var R=null;function Ae(e){let{callbacks:t}=e;if(window.TossAdsSpaceKit!=null&&window.TossAdsSpaceKit.isInitialized()){t?.onInitializationFailed?.(new Error(\"[toss-ad] Already initialized.\"));return}R!=null&&t?.onInitializationFailed?.(new Error(\"[toss-ad] initialization already in progress.\"));let r=()=>t?.onInitialized?.(),n=o=>{let s=o instanceof Error?o:new Error(String(o));t?.onInitializationFailed?.(s)};R=ve().then(o=>{let a={environment:\"live\",customAdFetcher:_e(),opener:me};o.init(a),r()}).catch(o=>{R=null,n(o)})}function Ce(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=A();if(!a)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!a.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let c=typeof t==\"string\"?document.querySelector(t):t;if(!c)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let f={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:ye(e,r.callbacks)};a.banner.createSlot(c,f)}catch(s){o(s)}}function Ie(e){let t=A();t?.banner&&t.banner.destroy(e)}function Te(){let e=A();e?.banner&&e.banner.destroyAll()}function ye(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{fe({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Yt={initialize:Object.assign(Ae,{isSupported:b.isSupported}),attach:Object.assign(Ce,{isSupported:b.isSupported}),destroy:Object.assign(Ie,{isSupported:b.isSupported}),destroyAll:Object.assign(Te,{isSupported:b.isSupported})},Qt=Object.assign(i(\"getServerTime\"),{isSupported:u(\"getServerTime_isSupported\")});var y=class{_log=i(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var L=class{callbacks={};on(t,r){typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u(\"getAppName\")(),deploymentId:u(\"getDeploymentId\")(),webViewType:u(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new L,debugLogger:new y};var C=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function P(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),P(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!C.test(s.url))return await r.call(n,s);let a=await caches.open(t),c=await a.match(s);if(c){let p=c.headers.get(\"ETag\"),l=c.headers.get(\"Last-Modified\");p&&s.headers.set(\"If-None-Match\",p),l&&s.headers.set(\"If-Modified-Since\",l);let h=await r.call(n,s);return h.status===304?(c.__revalidateResponse=h,c):(a.put(s,h.clone()),h)}let f=await r.call(n,s);return a.put(s,f.clone()),f})})();P(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s});var Z=window.__appsInToss.debugLogger;Z.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};Z.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function _(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:_(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:_(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:_(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;function e(t){let r=t.getContext(\"webgl2\")??t.getContext(\"webgl\");if(r==null)return;let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})}window.addEventListener(\"load\",()=>{let t=document.querySelector(\"#unity-canvas\");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type===\"childList\"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute(\"id\")===\"unity-canvas\"&&(e(a),o.disconnect()),a instanceof HTMLElement){let c=a.querySelector(\"#unity-canvas\");c!=null&&(e(c),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:r})=>{C.test(r.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:r.url})}),t.on(\"fetchResponse\",async({request:r,requestAt:n,response:o})=>{if(!C.test(r.url))return;let s=_((await o.clone().blob()).size/1024,2),a=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n";
236014
+ m = "\"use strict\";(()=>{var ie=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new ie,O=()=>Math.random().toString(36).substring(2,15),k=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(k(i))})),h.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function x(e){return t=>{let r=O(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(k(o))})];return h.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function l(e){return()=>h.getConstant(e)}var ce=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=ce());var qe=d(\"closeView\"),je=d(\"generateHapticFeedback\"),Ke=d(\"share\"),Je=d(\"setSecureScreen\"),Xe=d(\"setScreenAwakeMode\"),Ye=d(\"getNetworkStatus\"),Ze=d(\"setIosSwipeGestureEnabled\"),Qe=d(\"openURL\"),et=d(\"openPermissionDialog\"),tt=d(\"getPermission\"),rt=d(\"requestPermission\"),nt=l(\"setClipboardText\"),ot=l(\"getClipboardText\"),st=l(\"fetchContacts\"),at=l(\"fetchAlbumPhotos\"),it=l(\"getCurrentLocation\"),ct=l(\"openCamera\"),dt=d(\"appLogin\"),ut=d(\"eventLog\"),pt=d(\"getTossShareLink\"),mt=d(\"setDeviceOrientation\"),lt=d(\"checkoutPayment\"),gt=d(\"saveBase64Data\"),ft=d(\"appsInTossSignTossCert\"),vt=d(\"getGameCenterGameProfile\"),ht=d(\"openGameCenterLeaderboard\"),wt=d(\"submitGameCenterLeaderBoardScore\"),Et=d(\"getUserKeyForGame\"),bt=d(\"getIsTossLoginIntegratedService\"),At=d(\"grantPromotionRewardForGame\"),St=d(\"getServerTime\"),_t=l(\"getLocale\"),Ct=l(\"getSchemeUri\"),Tt=l(\"getPlatformOS\"),yt=l(\"getOperationalEnvironment\"),It=l(\"getTossAppVersion\"),Lt=l(\"getDeviceId\"),xt=x(\"contactsViral\"),Pt=x(\"startUpdateLocation\"),Rt=x(\"onVisibilityChangedByTransparentServiceWeb\");var _=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},B=class extends _{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},G=class extends _{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},V=class extends _{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var F=class extends _{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},H=F,U=class extends _{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},z=class extends _{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var de=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,Q=()=>Math.random().toString(36).substring(2,15),ee=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=Q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(ee(i))})),w.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=Q(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(ee(o))})];return w.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>w.getConstant(e)}var Ht={getItem:c(\"getStorageItem\"),setItem:c(\"setStorageItem\"),removeItem:c(\"removeStorageItem\"),clearItems:c(\"clearItems\")},ue=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>[\"*\",\"x\",\"X\"].includes(e),W=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},pe=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],me=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=pe(W(e),W(t));return r>n?1:r<n?-1:0},q=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(ue);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},j=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=me(o,s);if(a!==0)return a}return 0},le=(e,t)=>{let r=q(e),n=q(t),o=r.pop(),s=n.pop(),a=j(r,n);return a!==0?a:o&&s?j(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function K(e){if(u(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=u(\"getTossAppVersion\")(),o=u(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:le(r,o)>=0}function ge(e){return c(\"processProductGrant\")(e)}var Ut={createOneTimePurchaseOrder:e=>{let t=K({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=K({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A(\"requestOneTimePurchase\")({options:{sku:i},onEvent:async m=>{if(m.type===\"purchased\"){let g=await o.processProductGrant({orderId:m.data.orderId});await ge({orderId:m.data.orderId,isProductGranted:g}).catch(a)}else s(m)},onError:m=>{a(m)}}):(c(\"iapCreateOneTimePurchaseOrder\")({productId:i}).then(g=>{Promise.resolve(o.processProductGrant({orderId:g.orderId})).then(()=>{s({type:\"success\",data:g})}).catch(v=>{a(v)})}).catch(g=>{a(g)}),r)},getProductItemList:c(\"iapGetProductItemList\"),getPendingOrders:c(\"getPendingOrders\"),getCompletedOrRefundedOrders:c(\"getCompletedOrRefundedOrders\"),completeProductGrant:c(\"completeProductGrant\")},zt=u(\"getSafeAreaInsets\");var $t=u(\"getSafeAreaInsets\");var Wt={loadAppsInTossAdMob:Object.assign(A(\"loadAppsInTossAdMob\"),{isSupported:u(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(A(\"showAppsInTossAdMob\"),{isSupported:u(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(c(\"isAppsInTossAdMobLoaded\"),{isSupported:u(\"isAppsInTossAdMobLoaded_isSupported\")})};var qt={getDeploymentId:u(\"getDeploymentId\")},jt=u(\"deploymentId\"),Kt=u(\"brandDisplayName\"),Jt=u(\"brandIcon\"),Xt=u(\"brandPrimaryColor\");var Yt={addAccessoryButton:c(\"addAccessoryButton\"),removeAccessoryButton:c(\"removeAccessoryButton\")},fe=c(\"requestPermission\"),ve=c(\"getPermission\"),he=c(\"openPermissionDialog\");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await fe(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>ve(e),n.openPermissionDialog=()=>he(e),n}var Qt=C({handler:e=>c(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:B}),tr=C({handler:e=>c(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:G}),nr=C({handler:e=>c(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:F}),sr=C({handler:e=>c(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:V}),ir=C({handler:e=>c(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:z}),dr=C({handler:()=>c(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:U}),we=c(\"getPermission\"),Ee=c(\"openPermissionDialog\"),te=e=>A(\"updateLocationEvent\")({...e,onError:t=>{let r=new H;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});te.getPermission=()=>we({name:\"geolocation\",access:\"access\"});te.openPermissionDialog=()=>Ee({name:\"geolocation\",access:\"access\"});var pr=Object.assign(A(\"loadFullScreenAd\"),{isSupported:u(\"loadFullScreenAd_isSupported\")}),mr=Object.assign(A(\"showFullScreenAd\"),{isSupported:u(\"showFullScreenAd_isSupported\")}),be=c(\"openURL\");function Ae(e){let t=Se(e);return be(t)}function Se(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?_e(e):e}function _e(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var J=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",X=15e3,P=null;function S(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function Ce(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=S();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",i),window.clearTimeout(p),P=null},a=()=>{let m=S();if(m){s(),r(m);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${J}.`))},p=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${X}ms.`))},X);o.addEventListener(\"load\",a),o.addEventListener(\"error\",i),o.async=!0,o.src=J,document.head.appendChild(o)});return P=t,t}var b=Object.assign(A(\"fetchTossAd\"),{isSupported:u(\"fetchTossAd_isSupported\")}),Te=c(\"tossAdEventLog\"),ye=new Set([\"1\",\"2\"]);function Ie(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}return b({options:e,onEvent:t,onError:r})})}function Y(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function Le(e){return xe(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:Y(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:Pe(e)?{resultType:\"SUCCESS\",success:Y(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function xe(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function Pe(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function Re(){return async(e,t)=>{try{let r=await Ie({adGroupId:t.spaceUnitId,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return Le(r)}catch(r){return{resultType:\"FAIL\",error:{reason:r instanceof Error?r.message:\"Unknown fetchTossAd error\"}}}}}var I=null;function De(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(S()?.isInitialized()){r();return}if(I!=null){I.then(r).catch(n);return}let s=Ce().then(a=>{if(a.isInitialized())return;let p={environment:\"live\",customAdFetcher:Re(),opener:Ae};a.init(p)});I=s,s.then(r).catch(n).finally(()=>{I===s&&(I=null)})}function Ne(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=S();if(!a)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!a.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let i=typeof t==\"string\"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let p={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:re(e,r.callbacks)};a.banner.createSlot(i,p)}catch(s){o(s)}}var Me=\"16px 20px\",Fe=\"20px\",Oe=\"auto\",ke=\"blackAndWhite\",Be=\"expanded\",f=\"toss-ads-attach\",Z=\"toss-ads-attach-style\";function Ge(e){let t=e.ownerDocument;if(!t||t.getElementById(Z))return;let r=t.createElement(\"style\");r.id=Z,r.textContent=`\n .${f} { background: #ffffff; }\n .${f}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${f} { background: #17171c; }\n .${f}.toss-ads-tone-grey { background: #101013; }\n }\n .${f}.toss-ads-theme-light { background: #ffffff; }\n .${f}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${f}.toss-ads-theme-dark { background: #17171c; }\n .${f}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Ve(e,t,r={}){let{callbacks:n,theme:o=Oe,tone:s=ke,variant:a=Be}=r,i=document.createElement(\"div\");i.style.width=\"100%\",i.style.height=\"100%\",i.style.boxSizing=\"border-box\",i.style.display=\"flex\",i.style.flexDirection=\"column\",i.style.justifyContent=\"center\",i.style.overflow=\"hidden\",a===\"card\"&&(i.style.padding=\"0 10px\");let p=document.createElement(\"div\");p.classList.add(f),s===\"grey\"&&p.classList.add(\"toss-ads-tone-grey\"),o===\"light\"?p.classList.add(\"toss-ads-theme-light\"):o===\"dark\"&&p.classList.add(\"toss-ads-theme-dark\"),a===\"card\"&&(p.style.borderRadius=\"16px\",p.style.overflow=\"hidden\"),i.appendChild(p);let m=!1,g=null,v=E=>{let y=E instanceof Error?E:new Error(String(E));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},oe=re(e,n);try{let E=e,y=S();if(!y)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!y.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let M=typeof t==\"string\"?document.querySelector(t):t;if(!M)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ge(M),M.appendChild(i),m=!0;let se={spaceId:E,autoLoad:!0,theme:o===\"auto\"?void 0:o,renderPadding:ae=>ae===\"1\"?Me:Fe,callbacks:oe};g=y.banner.createSlot(p,se)}catch(E){m&&i.parentNode&&i.parentNode.removeChild(i),v(E)}return{destroy(){g?.destroy(),m&&i.parentNode&&i.parentNode.removeChild(i)}}}function He(e){let t=S();t?.banner&&t.banner.destroy(e)}function Ue(){let e=S();e?.banner&&e.banner.destroyAll()}function re(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var lr={initialize:Object.assign(De,{isSupported:b.isSupported}),attach:Object.assign(Ne,{isSupported:b.isSupported}),attachBanner:Object.assign(Ve,{isSupported:b.isSupported}),destroy:Object.assign(He,{isSupported:b.isSupported}),destroyAll:Object.assign(Ue,{isSupported:b.isSupported})},gr=Object.assign(c(\"getServerTime\"),{isSupported:u(\"getServerTime_isSupported\")});var R=class{_log=c(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u(\"getAppName\")(),deploymentId:u(\"getDeploymentId\")(),webViewType:u(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new R};var L=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!L.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let m=i.headers.get(\"ETag\"),g=i.headers.get(\"Last-Modified\");m&&s.headers.set(\"If-None-Match\",m),g&&s.headers.set(\"If-Modified-Since\",g);let v=await r.call(n,s);return v.status===304?(i.__revalidateResponse=v,i):(a.put(s,v.clone()),v)}let p=await r.call(n,s);return a.put(s,p.clone()),p})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s});var ne=window.__appsInToss.debugLogger;ne.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};ne.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;function e(t){let r=t.getContext(\"webgl2\")??t.getContext(\"webgl\");if(r==null)return;let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})}window.addEventListener(\"load\",()=>{let t=document.querySelector(\"#unity-canvas\");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type===\"childList\"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute(\"id\")===\"unity-canvas\"&&(e(a),o.disconnect()),a instanceof HTMLElement){let i=a.querySelector(\"#unity-canvas\");i!=null&&(e(i),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:r})=>{L.test(r.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:r.url})}),t.on(\"fetchResponse\",async({request:r,requestAt:n,response:o})=>{if(!L.test(r.url))return;let s=T((await o.clone().blob()).size/1024,2),a=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n";
236015
236015
  0 && (module.exports = {
236016
236016
  afterDocumentLoad: afterDocumentLoad,
236017
236017
  beforeDocumentLoad: beforeDocumentLoad
@@ -235851,7 +235851,7 @@ __d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, e
235851
235851
  }
235852
235852
  \`;document.head.appendChild(e);})();
235853
235853
  `,
235854
- m = "\"use strict\";(()=>{var Y=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},g=new Y,M=()=>Math.random().toString(36).substring(2,15),D=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=M(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(g.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(g.on(`${e}/reject/${r}`,c=>{o(),a(D(c))})),g.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function I(e){return t=>{let r=M(),n=[g.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),g.on(`${e}/onError/${r}`,o=>{t.onError(D(o))})];return g.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{g.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function m(e){return()=>g.getConstant(e)}var Q=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(c){return r!==c})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=Q());var Re=d(\"closeView\"),Me=d(\"generateHapticFeedback\"),De=d(\"share\"),Ne=d(\"setSecureScreen\"),Fe=d(\"setScreenAwakeMode\"),Oe=d(\"getNetworkStatus\"),Be=d(\"setIosSwipeGestureEnabled\"),Ge=d(\"openURL\"),Ve=d(\"openPermissionDialog\"),ke=d(\"getPermission\"),He=d(\"requestPermission\"),ze=m(\"setClipboardText\"),Ue=m(\"getClipboardText\"),We=m(\"fetchContacts\"),qe=m(\"fetchAlbumPhotos\"),$e=m(\"getCurrentLocation\"),je=m(\"openCamera\"),Ke=d(\"appLogin\"),Je=d(\"eventLog\"),Xe=d(\"getTossShareLink\"),Ze=d(\"setDeviceOrientation\"),Ye=d(\"checkoutPayment\"),Qe=d(\"saveBase64Data\"),et=d(\"appsInTossSignTossCert\"),tt=d(\"getGameCenterGameProfile\"),rt=d(\"openGameCenterLeaderboard\"),nt=d(\"submitGameCenterLeaderBoardScore\"),ot=d(\"getUserKeyForGame\"),st=d(\"getIsTossLoginIntegratedService\"),at=d(\"grantPromotionRewardForGame\"),it=d(\"getServerTime\"),ct=m(\"getLocale\"),dt=m(\"getSchemeUri\"),ut=m(\"getPlatformOS\"),pt=m(\"getOperationalEnvironment\"),mt=m(\"getTossAppVersion\"),lt=m(\"getDeviceId\"),gt=I(\"contactsViral\"),vt=I(\"startUpdateLocation\"),ft=I(\"onVisibilityChangedByTransparentServiceWeb\");var E=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},N=class extends E{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},F=class extends E{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},O=class extends E{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var x=class extends E{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},B=x,G=class extends E{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},V=class extends E{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var ee=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},v=new ee,K=()=>Math.random().toString(36).substring(2,15),J=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function i(e){return(...t)=>{let r=K(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(v.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(v.on(`${e}/reject/${r}`,c=>{o(),a(J(c))})),v.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function w(e){return t=>{let r=K(),n=[v.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),v.on(`${e}/onError/${r}`,o=>{t.onError(J(o))})];return v.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{v.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>v.getConstant(e)}var Tt={getItem:i(\"getStorageItem\"),setItem:i(\"setStorageItem\"),removeItem:i(\"removeStorageItem\"),clearItems:i(\"clearItems\")},te=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,k=e=>[\"*\",\"x\",\"X\"].includes(e),H=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},re=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ne=(e,t)=>{if(k(e)||k(t))return 0;let[r,n]=re(H(e),H(t));return r>n?1:r<n?-1:0},z=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(te);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},U=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=ne(o,s);if(a!==0)return a}return 0},oe=(e,t)=>{let r=z(e),n=z(t),o=r.pop(),s=n.pop(),a=U(r,n);return a!==0?a:o&&s?U(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function W(e){if(u(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=u(\"getTossAppVersion\")(),o=u(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:oe(r,o)>=0}function se(e){return i(\"processProductGrant\")(e)}var yt={createOneTimePurchaseOrder:e=>{let t=W({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=W({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,c=o.sku??o.productId;return n?w(\"requestOneTimePurchase\")({options:{sku:c},onEvent:async p=>{if(p.type===\"purchased\"){let l=await o.processProductGrant({orderId:p.data.orderId});await se({orderId:p.data.orderId,isProductGranted:l}).catch(a)}else s(p)},onError:p=>{a(p)}}):(i(\"iapCreateOneTimePurchaseOrder\")({productId:c}).then(l=>{Promise.resolve(o.processProductGrant({orderId:l.orderId})).then(()=>{s({type:\"success\",data:l})}).catch(h=>{a(h)})}).catch(l=>{a(l)}),r)},getProductItemList:i(\"iapGetProductItemList\"),getPendingOrders:i(\"getPendingOrders\"),getCompletedOrRefundedOrders:i(\"getCompletedOrRefundedOrders\"),completeProductGrant:i(\"completeProductGrant\")},Lt=u(\"getSafeAreaInsets\");var Pt=u(\"getSafeAreaInsets\");var xt={loadAppsInTossAdMob:Object.assign(w(\"loadAppsInTossAdMob\"),{isSupported:u(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(w(\"showAppsInTossAdMob\"),{isSupported:u(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(i(\"isAppsInTossAdMobLoaded\"),{isSupported:u(\"isAppsInTossAdMobLoaded_isSupported\")})};var Rt={getDeploymentId:u(\"getDeploymentId\")},Mt=u(\"deploymentId\"),Dt=u(\"brandDisplayName\"),Nt=u(\"brandIcon\"),Ft=u(\"brandPrimaryColor\");var Ot={addAccessoryButton:i(\"addAccessoryButton\"),removeAccessoryButton:i(\"removeAccessoryButton\")},ae=i(\"requestPermission\"),ie=i(\"getPermission\"),ce=i(\"openPermissionDialog\");function S({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ae(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>ie(e),n.openPermissionDialog=()=>ce(e),n}var Gt=S({handler:e=>i(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:N}),kt=S({handler:e=>i(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:F}),zt=S({handler:e=>i(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:x}),Wt=S({handler:e=>i(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:O}),$t=S({handler:e=>i(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:V}),Kt=S({handler:()=>i(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:G}),de=i(\"getPermission\"),ue=i(\"openPermissionDialog\"),X=e=>w(\"updateLocationEvent\")({...e,onError:t=>{let r=new B;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});X.getPermission=()=>de({name:\"geolocation\",access:\"access\"});X.openPermissionDialog=()=>ue({name:\"geolocation\",access:\"access\"});var Xt=Object.assign(w(\"loadFullScreenAd\"),{isSupported:u(\"loadFullScreenAd_isSupported\")}),Zt=Object.assign(w(\"showFullScreenAd\"),{isSupported:u(\"showFullScreenAd_isSupported\")}),pe=i(\"openURL\");function me(e){let t=le(e);return pe(t)}function le(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?ge(e):e}function ge(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var q=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",$=15e3,T=null;function A(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function ve(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=A();if(e)return Promise.resolve(e);if(T)return T;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",c),window.clearTimeout(f),T=null},a=()=>{let p=A();if(p){s(),r(p);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},c=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${q}.`))},f=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${$}ms.`))},$);o.addEventListener(\"load\",a),o.addEventListener(\"error\",c),o.async=!0,o.src=q,document.head.appendChild(o)});return T=t,t}var b=Object.assign(w(\"fetchTossAd\"),{isSupported:u(\"fetchTossAd_isSupported\")}),fe=i(\"tossAdEventLog\"),we=new Set([\"1\",\"2\"]);function he(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}return b({options:e,onEvent:t,onError:r})})}function j(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>we.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function Ee(e){return be(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:j(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:Se(e)?{resultType:\"SUCCESS\",success:j(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function be(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function Se(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function _e(){return async(e,t)=>{try{let r=await he({adGroupId:t.spaceUnitId,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return Ee(r)}catch(r){return{resultType:\"FAIL\",error:{reason:r instanceof Error?r.message:\"Unknown fetchTossAd error\"}}}}}var R=null;function Ae(e){let{callbacks:t}=e;if(window.TossAdsSpaceKit!=null&&window.TossAdsSpaceKit.isInitialized()){t?.onInitializationFailed?.(new Error(\"[toss-ad] Already initialized.\"));return}R!=null&&t?.onInitializationFailed?.(new Error(\"[toss-ad] initialization already in progress.\"));let r=()=>t?.onInitialized?.(),n=o=>{let s=o instanceof Error?o:new Error(String(o));t?.onInitializationFailed?.(s)};R=ve().then(o=>{let a={environment:\"live\",customAdFetcher:_e(),opener:me};o.init(a),r()}).catch(o=>{R=null,n(o)})}function Ce(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=A();if(!a)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!a.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let c=typeof t==\"string\"?document.querySelector(t):t;if(!c)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let f={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:ye(e,r.callbacks)};a.banner.createSlot(c,f)}catch(s){o(s)}}function Ie(e){let t=A();t?.banner&&t.banner.destroy(e)}function Te(){let e=A();e?.banner&&e.banner.destroyAll()}function ye(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{fe({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Yt={initialize:Object.assign(Ae,{isSupported:b.isSupported}),attach:Object.assign(Ce,{isSupported:b.isSupported}),destroy:Object.assign(Ie,{isSupported:b.isSupported}),destroyAll:Object.assign(Te,{isSupported:b.isSupported})},Qt=Object.assign(i(\"getServerTime\"),{isSupported:u(\"getServerTime_isSupported\")});var y=class{_log=i(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var L=class{callbacks={};on(t,r){typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u(\"getAppName\")(),deploymentId:u(\"getDeploymentId\")(),webViewType:u(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new L,debugLogger:new y};var C=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function P(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),P(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!C.test(s.url))return await r.call(n,s);let a=await caches.open(t),c=await a.match(s);if(c){let p=c.headers.get(\"ETag\"),l=c.headers.get(\"Last-Modified\");p&&s.headers.set(\"If-None-Match\",p),l&&s.headers.set(\"If-Modified-Since\",l);let h=await r.call(n,s);return h.status===304?(c.__revalidateResponse=h,c):(a.put(s,h.clone()),h)}let f=await r.call(n,s);return a.put(s,f.clone()),f})})();P(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s});var Z=window.__appsInToss.debugLogger;Z.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};Z.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function _(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:_(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:_(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:_(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;function e(t){let r=t.getContext(\"webgl2\")??t.getContext(\"webgl\");if(r==null)return;let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})}window.addEventListener(\"load\",()=>{let t=document.querySelector(\"#unity-canvas\");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type===\"childList\"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute(\"id\")===\"unity-canvas\"&&(e(a),o.disconnect()),a instanceof HTMLElement){let c=a.querySelector(\"#unity-canvas\");c!=null&&(e(c),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:r})=>{C.test(r.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:r.url})}),t.on(\"fetchResponse\",async({request:r,requestAt:n,response:o})=>{if(!C.test(r.url))return;let s=_((await o.clone().blob()).size/1024,2),a=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n";
235854
+ m = "\"use strict\";(()=>{var ie=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new ie,O=()=>Math.random().toString(36).substring(2,15),k=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(k(i))})),h.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function x(e){return t=>{let r=O(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(k(o))})];return h.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function l(e){return()=>h.getConstant(e)}var ce=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=ce());var qe=d(\"closeView\"),je=d(\"generateHapticFeedback\"),Ke=d(\"share\"),Je=d(\"setSecureScreen\"),Xe=d(\"setScreenAwakeMode\"),Ye=d(\"getNetworkStatus\"),Ze=d(\"setIosSwipeGestureEnabled\"),Qe=d(\"openURL\"),et=d(\"openPermissionDialog\"),tt=d(\"getPermission\"),rt=d(\"requestPermission\"),nt=l(\"setClipboardText\"),ot=l(\"getClipboardText\"),st=l(\"fetchContacts\"),at=l(\"fetchAlbumPhotos\"),it=l(\"getCurrentLocation\"),ct=l(\"openCamera\"),dt=d(\"appLogin\"),ut=d(\"eventLog\"),pt=d(\"getTossShareLink\"),mt=d(\"setDeviceOrientation\"),lt=d(\"checkoutPayment\"),gt=d(\"saveBase64Data\"),ft=d(\"appsInTossSignTossCert\"),vt=d(\"getGameCenterGameProfile\"),ht=d(\"openGameCenterLeaderboard\"),wt=d(\"submitGameCenterLeaderBoardScore\"),Et=d(\"getUserKeyForGame\"),bt=d(\"getIsTossLoginIntegratedService\"),At=d(\"grantPromotionRewardForGame\"),St=d(\"getServerTime\"),_t=l(\"getLocale\"),Ct=l(\"getSchemeUri\"),Tt=l(\"getPlatformOS\"),yt=l(\"getOperationalEnvironment\"),It=l(\"getTossAppVersion\"),Lt=l(\"getDeviceId\"),xt=x(\"contactsViral\"),Pt=x(\"startUpdateLocation\"),Rt=x(\"onVisibilityChangedByTransparentServiceWeb\");var _=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},B=class extends _{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},G=class extends _{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},V=class extends _{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var F=class extends _{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},H=F,U=class extends _{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},z=class extends _{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var de=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,Q=()=>Math.random().toString(36).substring(2,15),ee=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=Q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(ee(i))})),w.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=Q(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(ee(o))})];return w.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>w.getConstant(e)}var Ht={getItem:c(\"getStorageItem\"),setItem:c(\"setStorageItem\"),removeItem:c(\"removeStorageItem\"),clearItems:c(\"clearItems\")},ue=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>[\"*\",\"x\",\"X\"].includes(e),W=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},pe=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],me=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=pe(W(e),W(t));return r>n?1:r<n?-1:0},q=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(ue);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},j=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=me(o,s);if(a!==0)return a}return 0},le=(e,t)=>{let r=q(e),n=q(t),o=r.pop(),s=n.pop(),a=j(r,n);return a!==0?a:o&&s?j(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function K(e){if(u(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=u(\"getTossAppVersion\")(),o=u(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:le(r,o)>=0}function ge(e){return c(\"processProductGrant\")(e)}var Ut={createOneTimePurchaseOrder:e=>{let t=K({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=K({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A(\"requestOneTimePurchase\")({options:{sku:i},onEvent:async m=>{if(m.type===\"purchased\"){let g=await o.processProductGrant({orderId:m.data.orderId});await ge({orderId:m.data.orderId,isProductGranted:g}).catch(a)}else s(m)},onError:m=>{a(m)}}):(c(\"iapCreateOneTimePurchaseOrder\")({productId:i}).then(g=>{Promise.resolve(o.processProductGrant({orderId:g.orderId})).then(()=>{s({type:\"success\",data:g})}).catch(v=>{a(v)})}).catch(g=>{a(g)}),r)},getProductItemList:c(\"iapGetProductItemList\"),getPendingOrders:c(\"getPendingOrders\"),getCompletedOrRefundedOrders:c(\"getCompletedOrRefundedOrders\"),completeProductGrant:c(\"completeProductGrant\")},zt=u(\"getSafeAreaInsets\");var $t=u(\"getSafeAreaInsets\");var Wt={loadAppsInTossAdMob:Object.assign(A(\"loadAppsInTossAdMob\"),{isSupported:u(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(A(\"showAppsInTossAdMob\"),{isSupported:u(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(c(\"isAppsInTossAdMobLoaded\"),{isSupported:u(\"isAppsInTossAdMobLoaded_isSupported\")})};var qt={getDeploymentId:u(\"getDeploymentId\")},jt=u(\"deploymentId\"),Kt=u(\"brandDisplayName\"),Jt=u(\"brandIcon\"),Xt=u(\"brandPrimaryColor\");var Yt={addAccessoryButton:c(\"addAccessoryButton\"),removeAccessoryButton:c(\"removeAccessoryButton\")},fe=c(\"requestPermission\"),ve=c(\"getPermission\"),he=c(\"openPermissionDialog\");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await fe(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>ve(e),n.openPermissionDialog=()=>he(e),n}var Qt=C({handler:e=>c(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:B}),tr=C({handler:e=>c(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:G}),nr=C({handler:e=>c(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:F}),sr=C({handler:e=>c(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:V}),ir=C({handler:e=>c(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:z}),dr=C({handler:()=>c(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:U}),we=c(\"getPermission\"),Ee=c(\"openPermissionDialog\"),te=e=>A(\"updateLocationEvent\")({...e,onError:t=>{let r=new H;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});te.getPermission=()=>we({name:\"geolocation\",access:\"access\"});te.openPermissionDialog=()=>Ee({name:\"geolocation\",access:\"access\"});var pr=Object.assign(A(\"loadFullScreenAd\"),{isSupported:u(\"loadFullScreenAd_isSupported\")}),mr=Object.assign(A(\"showFullScreenAd\"),{isSupported:u(\"showFullScreenAd_isSupported\")}),be=c(\"openURL\");function Ae(e){let t=Se(e);return be(t)}function Se(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?_e(e):e}function _e(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var J=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",X=15e3,P=null;function S(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function Ce(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=S();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",i),window.clearTimeout(p),P=null},a=()=>{let m=S();if(m){s(),r(m);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${J}.`))},p=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${X}ms.`))},X);o.addEventListener(\"load\",a),o.addEventListener(\"error\",i),o.async=!0,o.src=J,document.head.appendChild(o)});return P=t,t}var b=Object.assign(A(\"fetchTossAd\"),{isSupported:u(\"fetchTossAd_isSupported\")}),Te=c(\"tossAdEventLog\"),ye=new Set([\"1\",\"2\"]);function Ie(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}return b({options:e,onEvent:t,onError:r})})}function Y(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function Le(e){return xe(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:Y(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:Pe(e)?{resultType:\"SUCCESS\",success:Y(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function xe(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function Pe(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function Re(){return async(e,t)=>{try{let r=await Ie({adGroupId:t.spaceUnitId,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return Le(r)}catch(r){return{resultType:\"FAIL\",error:{reason:r instanceof Error?r.message:\"Unknown fetchTossAd error\"}}}}}var I=null;function De(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(S()?.isInitialized()){r();return}if(I!=null){I.then(r).catch(n);return}let s=Ce().then(a=>{if(a.isInitialized())return;let p={environment:\"live\",customAdFetcher:Re(),opener:Ae};a.init(p)});I=s,s.then(r).catch(n).finally(()=>{I===s&&(I=null)})}function Ne(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=S();if(!a)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!a.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let i=typeof t==\"string\"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let p={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:re(e,r.callbacks)};a.banner.createSlot(i,p)}catch(s){o(s)}}var Me=\"16px 20px\",Fe=\"20px\",Oe=\"auto\",ke=\"blackAndWhite\",Be=\"expanded\",f=\"toss-ads-attach\",Z=\"toss-ads-attach-style\";function Ge(e){let t=e.ownerDocument;if(!t||t.getElementById(Z))return;let r=t.createElement(\"style\");r.id=Z,r.textContent=`\n .${f} { background: #ffffff; }\n .${f}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${f} { background: #17171c; }\n .${f}.toss-ads-tone-grey { background: #101013; }\n }\n .${f}.toss-ads-theme-light { background: #ffffff; }\n .${f}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${f}.toss-ads-theme-dark { background: #17171c; }\n .${f}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Ve(e,t,r={}){let{callbacks:n,theme:o=Oe,tone:s=ke,variant:a=Be}=r,i=document.createElement(\"div\");i.style.width=\"100%\",i.style.height=\"100%\",i.style.boxSizing=\"border-box\",i.style.display=\"flex\",i.style.flexDirection=\"column\",i.style.justifyContent=\"center\",i.style.overflow=\"hidden\",a===\"card\"&&(i.style.padding=\"0 10px\");let p=document.createElement(\"div\");p.classList.add(f),s===\"grey\"&&p.classList.add(\"toss-ads-tone-grey\"),o===\"light\"?p.classList.add(\"toss-ads-theme-light\"):o===\"dark\"&&p.classList.add(\"toss-ads-theme-dark\"),a===\"card\"&&(p.style.borderRadius=\"16px\",p.style.overflow=\"hidden\"),i.appendChild(p);let m=!1,g=null,v=E=>{let y=E instanceof Error?E:new Error(String(E));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},oe=re(e,n);try{let E=e,y=S();if(!y)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!y.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let M=typeof t==\"string\"?document.querySelector(t):t;if(!M)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ge(M),M.appendChild(i),m=!0;let se={spaceId:E,autoLoad:!0,theme:o===\"auto\"?void 0:o,renderPadding:ae=>ae===\"1\"?Me:Fe,callbacks:oe};g=y.banner.createSlot(p,se)}catch(E){m&&i.parentNode&&i.parentNode.removeChild(i),v(E)}return{destroy(){g?.destroy(),m&&i.parentNode&&i.parentNode.removeChild(i)}}}function He(e){let t=S();t?.banner&&t.banner.destroy(e)}function Ue(){let e=S();e?.banner&&e.banner.destroyAll()}function re(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var lr={initialize:Object.assign(De,{isSupported:b.isSupported}),attach:Object.assign(Ne,{isSupported:b.isSupported}),attachBanner:Object.assign(Ve,{isSupported:b.isSupported}),destroy:Object.assign(He,{isSupported:b.isSupported}),destroyAll:Object.assign(Ue,{isSupported:b.isSupported})},gr=Object.assign(c(\"getServerTime\"),{isSupported:u(\"getServerTime_isSupported\")});var R=class{_log=c(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u(\"getAppName\")(),deploymentId:u(\"getDeploymentId\")(),webViewType:u(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new R};var L=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!L.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let m=i.headers.get(\"ETag\"),g=i.headers.get(\"Last-Modified\");m&&s.headers.set(\"If-None-Match\",m),g&&s.headers.set(\"If-Modified-Since\",g);let v=await r.call(n,s);return v.status===304?(i.__revalidateResponse=v,i):(a.put(s,v.clone()),v)}let p=await r.call(n,s);return a.put(s,p.clone()),p})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s});var ne=window.__appsInToss.debugLogger;ne.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};ne.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;function e(t){let r=t.getContext(\"webgl2\")??t.getContext(\"webgl\");if(r==null)return;let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})}window.addEventListener(\"load\",()=>{let t=document.querySelector(\"#unity-canvas\");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type===\"childList\"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute(\"id\")===\"unity-canvas\"&&(e(a),o.disconnect()),a instanceof HTMLElement){let i=a.querySelector(\"#unity-canvas\");i!=null&&(e(i),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:r})=>{L.test(r.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:r.url})}),t.on(\"fetchResponse\",async({request:r,requestAt:n,response:o})=>{if(!L.test(r.url))return;let s=T((await o.clone().blob()).size/1024,2),a=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n";
235855
235855
  0 && (module.exports = {
235856
235856
  afterDocumentLoad: afterDocumentLoad,
235857
235857
  beforeDocumentLoad: beforeDocumentLoad
@@ -44941,7 +44941,7 @@ var global=typeof globalThis!=='undefined'?globalThis:typeof global!=='undefined
44941
44941
  "../user-scripts/dist/index.mjs"() {
44942
44942
  "use strict";
44943
44943
  e60 = '"use strict";(()=>{var e=document.createElement("style");e.textContent=`\n*:not(input):not(textarea) {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n}\n`;document.head.appendChild(e);})();\n';
44944
- t55 = '"use strict";(()=>{var Y=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},g=new Y,M=()=>Math.random().toString(36).substring(2,15),D=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=M(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(g.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(g.on(`${e}/reject/${r}`,c=>{o(),a(D(c))})),g.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function I(e){return t=>{let r=M(),n=[g.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),g.on(`${e}/onError/${r}`,o=>{t.onError(D(o))})];return g.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{g.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function m(e){return()=>g.getConstant(e)}var Q=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(c){return r!==c})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=Q());var Re=d("closeView"),Me=d("generateHapticFeedback"),De=d("share"),Ne=d("setSecureScreen"),Fe=d("setScreenAwakeMode"),Oe=d("getNetworkStatus"),Be=d("setIosSwipeGestureEnabled"),Ge=d("openURL"),Ve=d("openPermissionDialog"),ke=d("getPermission"),He=d("requestPermission"),ze=m("setClipboardText"),Ue=m("getClipboardText"),We=m("fetchContacts"),qe=m("fetchAlbumPhotos"),$e=m("getCurrentLocation"),je=m("openCamera"),Ke=d("appLogin"),Je=d("eventLog"),Xe=d("getTossShareLink"),Ze=d("setDeviceOrientation"),Ye=d("checkoutPayment"),Qe=d("saveBase64Data"),et=d("appsInTossSignTossCert"),tt=d("getGameCenterGameProfile"),rt=d("openGameCenterLeaderboard"),nt=d("submitGameCenterLeaderBoardScore"),ot=d("getUserKeyForGame"),st=d("getIsTossLoginIntegratedService"),at=d("grantPromotionRewardForGame"),it=d("getServerTime"),ct=m("getLocale"),dt=m("getSchemeUri"),ut=m("getPlatformOS"),pt=m("getOperationalEnvironment"),mt=m("getTossAppVersion"),lt=m("getDeviceId"),gt=I("contactsViral"),vt=I("startUpdateLocation"),ft=I("onVisibilityChangedByTransparentServiceWeb");var E=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},N=class extends E{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},F=class extends E{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},O=class extends E{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var x=class extends E{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},B=x,G=class extends E{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},V=class extends E{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var ee=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},v=new ee,K=()=>Math.random().toString(36).substring(2,15),J=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function i(e){return(...t)=>{let r=K(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(v.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(v.on(`${e}/reject/${r}`,c=>{o(),a(J(c))})),v.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function w(e){return t=>{let r=K(),n=[v.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),v.on(`${e}/onError/${r}`,o=>{t.onError(J(o))})];return v.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{v.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>v.getConstant(e)}var Tt={getItem:i("getStorageItem"),setItem:i("setStorageItem"),removeItem:i("removeStorageItem"),clearItems:i("clearItems")},te=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,k=e=>["*","x","X"].includes(e),H=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},re=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ne=(e,t)=>{if(k(e)||k(t))return 0;let[r,n]=re(H(e),H(t));return r>n?1:r<n?-1:0},z=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(te);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},U=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=ne(o,s);if(a!==0)return a}return 0},oe=(e,t)=>{let r=z(e),n=z(t),o=r.pop(),s=n.pop(),a=U(r,n);return a!==0?a:o&&s?U(o.split("."),s.split(".")):o?-1:s?1:0};function W(e){if(u("getOperationalEnvironment")()==="sandbox")return!0;let r=u("getTossAppVersion")(),o=u("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:oe(r,o)>=0}function se(e){return i("processProductGrant")(e)}var yt={createOneTimePurchaseOrder:e=>{let t=W({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=W({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,c=o.sku??o.productId;return n?w("requestOneTimePurchase")({options:{sku:c},onEvent:async p=>{if(p.type==="purchased"){let l=await o.processProductGrant({orderId:p.data.orderId});await se({orderId:p.data.orderId,isProductGranted:l}).catch(a)}else s(p)},onError:p=>{a(p)}}):(i("iapCreateOneTimePurchaseOrder")({productId:c}).then(l=>{Promise.resolve(o.processProductGrant({orderId:l.orderId})).then(()=>{s({type:"success",data:l})}).catch(h=>{a(h)})}).catch(l=>{a(l)}),r)},getProductItemList:i("iapGetProductItemList"),getPendingOrders:i("getPendingOrders"),getCompletedOrRefundedOrders:i("getCompletedOrRefundedOrders"),completeProductGrant:i("completeProductGrant")},Lt=u("getSafeAreaInsets");var Pt=u("getSafeAreaInsets");var xt={loadAppsInTossAdMob:Object.assign(w("loadAppsInTossAdMob"),{isSupported:u("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(w("showAppsInTossAdMob"),{isSupported:u("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(i("isAppsInTossAdMobLoaded"),{isSupported:u("isAppsInTossAdMobLoaded_isSupported")})};var Rt={getDeploymentId:u("getDeploymentId")},Mt=u("deploymentId"),Dt=u("brandDisplayName"),Nt=u("brandIcon"),Ft=u("brandPrimaryColor");var Ot={addAccessoryButton:i("addAccessoryButton"),removeAccessoryButton:i("removeAccessoryButton")},ae=i("requestPermission"),ie=i("getPermission"),ce=i("openPermissionDialog");function S({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ae(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>ie(e),n.openPermissionDialog=()=>ce(e),n}var Gt=S({handler:e=>i("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:N}),kt=S({handler:e=>i("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:F}),zt=S({handler:e=>i("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:x}),Wt=S({handler:e=>i("openCamera")(e),permission:{name:"camera",access:"access"},error:O}),$t=S({handler:e=>i("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:V}),Kt=S({handler:()=>i("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:G}),de=i("getPermission"),ue=i("openPermissionDialog"),X=e=>w("updateLocationEvent")({...e,onError:t=>{let r=new B;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});X.getPermission=()=>de({name:"geolocation",access:"access"});X.openPermissionDialog=()=>ue({name:"geolocation",access:"access"});var Xt=Object.assign(w("loadFullScreenAd"),{isSupported:u("loadFullScreenAd_isSupported")}),Zt=Object.assign(w("showFullScreenAd"),{isSupported:u("showFullScreenAd_isSupported")}),pe=i("openURL");function me(e){let t=le(e);return pe(t)}function le(e){return["http://","https://"].some(r=>e.startsWith(r))?ge(e):e}function ge(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var q="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",$=15e3,T=null;function A(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function ve(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=A();if(e)return Promise.resolve(e);if(T)return T;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",c),window.clearTimeout(f),T=null},a=()=>{let p=A();if(p){s(),r(p);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},c=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${q}.`))},f=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${$}ms.`))},$);o.addEventListener("load",a),o.addEventListener("error",c),o.async=!0,o.src=q,document.head.appendChild(o)});return T=t,t}var b=Object.assign(w("fetchTossAd"),{isSupported:u("fetchTossAd_isSupported")}),fe=i("tossAdEventLog"),we=new Set(["1","2"]);function he(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}return b({options:e,onEvent:t,onError:r})})}function j(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>we.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function Ee(e){return be(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:j(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:Se(e)?{resultType:"SUCCESS",success:j(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function be(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function Se(e){return!!(e&&typeof e=="object"&&"ads"in e)}function _e(){return async(e,t)=>{try{let r=await he({adGroupId:t.spaceUnitId,sdkId:"108",availableStyleIds:["1","2"]});return Ee(r)}catch(r){return{resultType:"FAIL",error:{reason:r instanceof Error?r.message:"Unknown fetchTossAd error"}}}}}var R=null;function Ae(e){let{callbacks:t}=e;if(window.TossAdsSpaceKit!=null&&window.TossAdsSpaceKit.isInitialized()){t?.onInitializationFailed?.(new Error("[toss-ad] Already initialized."));return}R!=null&&t?.onInitializationFailed?.(new Error("[toss-ad] initialization already in progress."));let r=()=>t?.onInitialized?.(),n=o=>{let s=o instanceof Error?o:new Error(String(o));t?.onInitializationFailed?.(s)};R=ve().then(o=>{let a={environment:"live",customAdFetcher:_e(),opener:me};o.init(a),r()}).catch(o=>{R=null,n(o)})}function Ce(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=A();if(!a)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!a.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let c=typeof t=="string"?document.querySelector(t):t;if(!c)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let f={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:ye(e,r.callbacks)};a.banner.createSlot(c,f)}catch(s){o(s)}}function Ie(e){let t=A();t?.banner&&t.banner.destroy(e)}function Te(){let e=A();e?.banner&&e.banner.destroyAll()}function ye(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{fe({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Yt={initialize:Object.assign(Ae,{isSupported:b.isSupported}),attach:Object.assign(Ce,{isSupported:b.isSupported}),destroy:Object.assign(Ie,{isSupported:b.isSupported}),destroyAll:Object.assign(Te,{isSupported:b.isSupported})},Qt=Object.assign(i("getServerTime"),{isSupported:u("getServerTime_isSupported")});var y=class{_log=i("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var L=class{callbacks={};on(t,r){typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u("getAppName")(),deploymentId:u("getDeploymentId")(),webViewType:u("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new L,debugLogger:new y};var C=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function P(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),P(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!C.test(s.url))return await r.call(n,s);let a=await caches.open(t),c=await a.match(s);if(c){let p=c.headers.get("ETag"),l=c.headers.get("Last-Modified");p&&s.headers.set("If-None-Match",p),l&&s.headers.set("If-Modified-Since",l);let h=await r.call(n,s);return h.status===304?(c.__revalidateResponse=h,c):(a.put(s,h.clone()),h)}let f=await r.call(n,s);return a.put(s,f.clone()),f})})();P(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s});var Z=window.__appsInToss.debugLogger;Z.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};Z.log("load_complete",{isNavigationDebugSupported:r,...n})});function _(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:_(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:_(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:_(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;function e(t){let r=t.getContext("webgl2")??t.getContext("webgl");if(r==null)return;let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})}window.addEventListener("load",()=>{let t=document.querySelector("#unity-canvas");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type==="childList"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute("id")==="unity-canvas"&&(e(a),o.disconnect()),a instanceof HTMLElement){let c=a.querySelector("#unity-canvas");c!=null&&(e(c),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:r})=>{C.test(r.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:r.url})}),t.on("fetchResponse",async({request:r,requestAt:n,response:o})=>{if(!C.test(r.url))return;let s=_((await o.clone().blob()).size/1024,2),a=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n';
44944
+ t55 = '"use strict";(()=>{var ie=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new ie,O=()=>Math.random().toString(36).substring(2,15),k=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(k(i))})),h.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function x(e){return t=>{let r=O(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(k(o))})];return h.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function l(e){return()=>h.getConstant(e)}var ce=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=ce());var qe=d("closeView"),je=d("generateHapticFeedback"),Ke=d("share"),Je=d("setSecureScreen"),Xe=d("setScreenAwakeMode"),Ye=d("getNetworkStatus"),Ze=d("setIosSwipeGestureEnabled"),Qe=d("openURL"),et=d("openPermissionDialog"),tt=d("getPermission"),rt=d("requestPermission"),nt=l("setClipboardText"),ot=l("getClipboardText"),st=l("fetchContacts"),at=l("fetchAlbumPhotos"),it=l("getCurrentLocation"),ct=l("openCamera"),dt=d("appLogin"),ut=d("eventLog"),pt=d("getTossShareLink"),mt=d("setDeviceOrientation"),lt=d("checkoutPayment"),gt=d("saveBase64Data"),ft=d("appsInTossSignTossCert"),vt=d("getGameCenterGameProfile"),ht=d("openGameCenterLeaderboard"),wt=d("submitGameCenterLeaderBoardScore"),Et=d("getUserKeyForGame"),bt=d("getIsTossLoginIntegratedService"),At=d("grantPromotionRewardForGame"),St=d("getServerTime"),_t=l("getLocale"),Ct=l("getSchemeUri"),Tt=l("getPlatformOS"),yt=l("getOperationalEnvironment"),It=l("getTossAppVersion"),Lt=l("getDeviceId"),xt=x("contactsViral"),Pt=x("startUpdateLocation"),Rt=x("onVisibilityChangedByTransparentServiceWeb");var _=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},B=class extends _{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},G=class extends _{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},V=class extends _{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var F=class extends _{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},H=F,U=class extends _{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},z=class extends _{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var de=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,Q=()=>Math.random().toString(36).substring(2,15),ee=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=Q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(ee(i))})),w.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=Q(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(ee(o))})];return w.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>w.getConstant(e)}var Ht={getItem:c("getStorageItem"),setItem:c("setStorageItem"),removeItem:c("removeStorageItem"),clearItems:c("clearItems")},ue=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>["*","x","X"].includes(e),W=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},pe=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],me=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=pe(W(e),W(t));return r>n?1:r<n?-1:0},q=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(ue);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},j=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=me(o,s);if(a!==0)return a}return 0},le=(e,t)=>{let r=q(e),n=q(t),o=r.pop(),s=n.pop(),a=j(r,n);return a!==0?a:o&&s?j(o.split("."),s.split(".")):o?-1:s?1:0};function K(e){if(u("getOperationalEnvironment")()==="sandbox")return!0;let r=u("getTossAppVersion")(),o=u("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:le(r,o)>=0}function ge(e){return c("processProductGrant")(e)}var Ut={createOneTimePurchaseOrder:e=>{let t=K({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=K({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A("requestOneTimePurchase")({options:{sku:i},onEvent:async m=>{if(m.type==="purchased"){let g=await o.processProductGrant({orderId:m.data.orderId});await ge({orderId:m.data.orderId,isProductGranted:g}).catch(a)}else s(m)},onError:m=>{a(m)}}):(c("iapCreateOneTimePurchaseOrder")({productId:i}).then(g=>{Promise.resolve(o.processProductGrant({orderId:g.orderId})).then(()=>{s({type:"success",data:g})}).catch(v=>{a(v)})}).catch(g=>{a(g)}),r)},getProductItemList:c("iapGetProductItemList"),getPendingOrders:c("getPendingOrders"),getCompletedOrRefundedOrders:c("getCompletedOrRefundedOrders"),completeProductGrant:c("completeProductGrant")},zt=u("getSafeAreaInsets");var $t=u("getSafeAreaInsets");var Wt={loadAppsInTossAdMob:Object.assign(A("loadAppsInTossAdMob"),{isSupported:u("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(A("showAppsInTossAdMob"),{isSupported:u("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(c("isAppsInTossAdMobLoaded"),{isSupported:u("isAppsInTossAdMobLoaded_isSupported")})};var qt={getDeploymentId:u("getDeploymentId")},jt=u("deploymentId"),Kt=u("brandDisplayName"),Jt=u("brandIcon"),Xt=u("brandPrimaryColor");var Yt={addAccessoryButton:c("addAccessoryButton"),removeAccessoryButton:c("removeAccessoryButton")},fe=c("requestPermission"),ve=c("getPermission"),he=c("openPermissionDialog");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await fe(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>ve(e),n.openPermissionDialog=()=>he(e),n}var Qt=C({handler:e=>c("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:B}),tr=C({handler:e=>c("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:G}),nr=C({handler:e=>c("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:F}),sr=C({handler:e=>c("openCamera")(e),permission:{name:"camera",access:"access"},error:V}),ir=C({handler:e=>c("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:z}),dr=C({handler:()=>c("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:U}),we=c("getPermission"),Ee=c("openPermissionDialog"),te=e=>A("updateLocationEvent")({...e,onError:t=>{let r=new H;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});te.getPermission=()=>we({name:"geolocation",access:"access"});te.openPermissionDialog=()=>Ee({name:"geolocation",access:"access"});var pr=Object.assign(A("loadFullScreenAd"),{isSupported:u("loadFullScreenAd_isSupported")}),mr=Object.assign(A("showFullScreenAd"),{isSupported:u("showFullScreenAd_isSupported")}),be=c("openURL");function Ae(e){let t=Se(e);return be(t)}function Se(e){return["http://","https://"].some(r=>e.startsWith(r))?_e(e):e}function _e(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var J="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",X=15e3,P=null;function S(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function Ce(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=S();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",i),window.clearTimeout(p),P=null},a=()=>{let m=S();if(m){s(),r(m);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${J}.`))},p=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${X}ms.`))},X);o.addEventListener("load",a),o.addEventListener("error",i),o.async=!0,o.src=J,document.head.appendChild(o)});return P=t,t}var b=Object.assign(A("fetchTossAd"),{isSupported:u("fetchTossAd_isSupported")}),Te=c("tossAdEventLog"),ye=new Set(["1","2"]);function Ie(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}return b({options:e,onEvent:t,onError:r})})}function Y(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function Le(e){return xe(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:Y(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:Pe(e)?{resultType:"SUCCESS",success:Y(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function xe(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function Pe(e){return!!(e&&typeof e=="object"&&"ads"in e)}function Re(){return async(e,t)=>{try{let r=await Ie({adGroupId:t.spaceUnitId,sdkId:"108",availableStyleIds:["1","2"]});return Le(r)}catch(r){return{resultType:"FAIL",error:{reason:r instanceof Error?r.message:"Unknown fetchTossAd error"}}}}}var I=null;function De(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(S()?.isInitialized()){r();return}if(I!=null){I.then(r).catch(n);return}let s=Ce().then(a=>{if(a.isInitialized())return;let p={environment:"live",customAdFetcher:Re(),opener:Ae};a.init(p)});I=s,s.then(r).catch(n).finally(()=>{I===s&&(I=null)})}function Ne(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=S();if(!a)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!a.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let i=typeof t=="string"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let p={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:re(e,r.callbacks)};a.banner.createSlot(i,p)}catch(s){o(s)}}var Me="16px 20px",Fe="20px",Oe="auto",ke="blackAndWhite",Be="expanded",f="toss-ads-attach",Z="toss-ads-attach-style";function Ge(e){let t=e.ownerDocument;if(!t||t.getElementById(Z))return;let r=t.createElement("style");r.id=Z,r.textContent=`\n .${f} { background: #ffffff; }\n .${f}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${f} { background: #17171c; }\n .${f}.toss-ads-tone-grey { background: #101013; }\n }\n .${f}.toss-ads-theme-light { background: #ffffff; }\n .${f}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${f}.toss-ads-theme-dark { background: #17171c; }\n .${f}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Ve(e,t,r={}){let{callbacks:n,theme:o=Oe,tone:s=ke,variant:a=Be}=r,i=document.createElement("div");i.style.width="100%",i.style.height="100%",i.style.boxSizing="border-box",i.style.display="flex",i.style.flexDirection="column",i.style.justifyContent="center",i.style.overflow="hidden",a==="card"&&(i.style.padding="0 10px");let p=document.createElement("div");p.classList.add(f),s==="grey"&&p.classList.add("toss-ads-tone-grey"),o==="light"?p.classList.add("toss-ads-theme-light"):o==="dark"&&p.classList.add("toss-ads-theme-dark"),a==="card"&&(p.style.borderRadius="16px",p.style.overflow="hidden"),i.appendChild(p);let m=!1,g=null,v=E=>{let y=E instanceof Error?E:new Error(String(E));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},oe=re(e,n);try{let E=e,y=S();if(!y)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!y.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let M=typeof t=="string"?document.querySelector(t):t;if(!M)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ge(M),M.appendChild(i),m=!0;let se={spaceId:E,autoLoad:!0,theme:o==="auto"?void 0:o,renderPadding:ae=>ae==="1"?Me:Fe,callbacks:oe};g=y.banner.createSlot(p,se)}catch(E){m&&i.parentNode&&i.parentNode.removeChild(i),v(E)}return{destroy(){g?.destroy(),m&&i.parentNode&&i.parentNode.removeChild(i)}}}function He(e){let t=S();t?.banner&&t.banner.destroy(e)}function Ue(){let e=S();e?.banner&&e.banner.destroyAll()}function re(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var lr={initialize:Object.assign(De,{isSupported:b.isSupported}),attach:Object.assign(Ne,{isSupported:b.isSupported}),attachBanner:Object.assign(Ve,{isSupported:b.isSupported}),destroy:Object.assign(He,{isSupported:b.isSupported}),destroyAll:Object.assign(Ue,{isSupported:b.isSupported})},gr=Object.assign(c("getServerTime"),{isSupported:u("getServerTime_isSupported")});var R=class{_log=c("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u("getAppName")(),deploymentId:u("getDeploymentId")(),webViewType:u("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new R};var L=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!L.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let m=i.headers.get("ETag"),g=i.headers.get("Last-Modified");m&&s.headers.set("If-None-Match",m),g&&s.headers.set("If-Modified-Since",g);let v=await r.call(n,s);return v.status===304?(i.__revalidateResponse=v,i):(a.put(s,v.clone()),v)}let p=await r.call(n,s);return a.put(s,p.clone()),p})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s});var ne=window.__appsInToss.debugLogger;ne.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};ne.log("load_complete",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;function e(t){let r=t.getContext("webgl2")??t.getContext("webgl");if(r==null)return;let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})}window.addEventListener("load",()=>{let t=document.querySelector("#unity-canvas");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type==="childList"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute("id")==="unity-canvas"&&(e(a),o.disconnect()),a instanceof HTMLElement){let i=a.querySelector("#unity-canvas");i!=null&&(e(i),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:r})=>{L.test(r.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:r.url})}),t.on("fetchResponse",async({request:r,requestAt:n,response:o})=>{if(!L.test(r.url))return;let s=T((await o.clone().blob()).size/1024,2),a=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n';
44945
44945
  }
44946
44946
  });
44947
44947
 
@@ -44950,7 +44950,7 @@ var global=typeof globalThis!=='undefined'?globalThis:typeof global!=='undefined
44950
44950
  "../user-scripts/dist/index.mjs"() {
44951
44951
  "use strict";
44952
44952
  e60 = '"use strict";(()=>{var e=document.createElement("style");e.textContent=`\n*:not(input):not(textarea) {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n}\n`;document.head.appendChild(e);})();\n';
44953
- t55 = '"use strict";(()=>{var Y=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},g=new Y,M=()=>Math.random().toString(36).substring(2,15),D=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=M(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(g.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(g.on(`${e}/reject/${r}`,c=>{o(),a(D(c))})),g.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function I(e){return t=>{let r=M(),n=[g.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),g.on(`${e}/onError/${r}`,o=>{t.onError(D(o))})];return g.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{g.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function m(e){return()=>g.getConstant(e)}var Q=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(c){return r!==c})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=Q());var Re=d("closeView"),Me=d("generateHapticFeedback"),De=d("share"),Ne=d("setSecureScreen"),Fe=d("setScreenAwakeMode"),Oe=d("getNetworkStatus"),Be=d("setIosSwipeGestureEnabled"),Ge=d("openURL"),Ve=d("openPermissionDialog"),ke=d("getPermission"),He=d("requestPermission"),ze=m("setClipboardText"),Ue=m("getClipboardText"),We=m("fetchContacts"),qe=m("fetchAlbumPhotos"),$e=m("getCurrentLocation"),je=m("openCamera"),Ke=d("appLogin"),Je=d("eventLog"),Xe=d("getTossShareLink"),Ze=d("setDeviceOrientation"),Ye=d("checkoutPayment"),Qe=d("saveBase64Data"),et=d("appsInTossSignTossCert"),tt=d("getGameCenterGameProfile"),rt=d("openGameCenterLeaderboard"),nt=d("submitGameCenterLeaderBoardScore"),ot=d("getUserKeyForGame"),st=d("getIsTossLoginIntegratedService"),at=d("grantPromotionRewardForGame"),it=d("getServerTime"),ct=m("getLocale"),dt=m("getSchemeUri"),ut=m("getPlatformOS"),pt=m("getOperationalEnvironment"),mt=m("getTossAppVersion"),lt=m("getDeviceId"),gt=I("contactsViral"),vt=I("startUpdateLocation"),ft=I("onVisibilityChangedByTransparentServiceWeb");var E=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},N=class extends E{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},F=class extends E{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},O=class extends E{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var x=class extends E{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},B=x,G=class extends E{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},V=class extends E{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var ee=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},v=new ee,K=()=>Math.random().toString(36).substring(2,15),J=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function i(e){return(...t)=>{let r=K(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(v.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(v.on(`${e}/reject/${r}`,c=>{o(),a(J(c))})),v.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function w(e){return t=>{let r=K(),n=[v.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),v.on(`${e}/onError/${r}`,o=>{t.onError(J(o))})];return v.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{v.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>v.getConstant(e)}var Tt={getItem:i("getStorageItem"),setItem:i("setStorageItem"),removeItem:i("removeStorageItem"),clearItems:i("clearItems")},te=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,k=e=>["*","x","X"].includes(e),H=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},re=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ne=(e,t)=>{if(k(e)||k(t))return 0;let[r,n]=re(H(e),H(t));return r>n?1:r<n?-1:0},z=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(te);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},U=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=ne(o,s);if(a!==0)return a}return 0},oe=(e,t)=>{let r=z(e),n=z(t),o=r.pop(),s=n.pop(),a=U(r,n);return a!==0?a:o&&s?U(o.split("."),s.split(".")):o?-1:s?1:0};function W(e){if(u("getOperationalEnvironment")()==="sandbox")return!0;let r=u("getTossAppVersion")(),o=u("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:oe(r,o)>=0}function se(e){return i("processProductGrant")(e)}var yt={createOneTimePurchaseOrder:e=>{let t=W({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=W({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,c=o.sku??o.productId;return n?w("requestOneTimePurchase")({options:{sku:c},onEvent:async p=>{if(p.type==="purchased"){let l=await o.processProductGrant({orderId:p.data.orderId});await se({orderId:p.data.orderId,isProductGranted:l}).catch(a)}else s(p)},onError:p=>{a(p)}}):(i("iapCreateOneTimePurchaseOrder")({productId:c}).then(l=>{Promise.resolve(o.processProductGrant({orderId:l.orderId})).then(()=>{s({type:"success",data:l})}).catch(h=>{a(h)})}).catch(l=>{a(l)}),r)},getProductItemList:i("iapGetProductItemList"),getPendingOrders:i("getPendingOrders"),getCompletedOrRefundedOrders:i("getCompletedOrRefundedOrders"),completeProductGrant:i("completeProductGrant")},Lt=u("getSafeAreaInsets");var Pt=u("getSafeAreaInsets");var xt={loadAppsInTossAdMob:Object.assign(w("loadAppsInTossAdMob"),{isSupported:u("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(w("showAppsInTossAdMob"),{isSupported:u("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(i("isAppsInTossAdMobLoaded"),{isSupported:u("isAppsInTossAdMobLoaded_isSupported")})};var Rt={getDeploymentId:u("getDeploymentId")},Mt=u("deploymentId"),Dt=u("brandDisplayName"),Nt=u("brandIcon"),Ft=u("brandPrimaryColor");var Ot={addAccessoryButton:i("addAccessoryButton"),removeAccessoryButton:i("removeAccessoryButton")},ae=i("requestPermission"),ie=i("getPermission"),ce=i("openPermissionDialog");function S({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ae(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>ie(e),n.openPermissionDialog=()=>ce(e),n}var Gt=S({handler:e=>i("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:N}),kt=S({handler:e=>i("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:F}),zt=S({handler:e=>i("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:x}),Wt=S({handler:e=>i("openCamera")(e),permission:{name:"camera",access:"access"},error:O}),$t=S({handler:e=>i("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:V}),Kt=S({handler:()=>i("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:G}),de=i("getPermission"),ue=i("openPermissionDialog"),X=e=>w("updateLocationEvent")({...e,onError:t=>{let r=new B;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});X.getPermission=()=>de({name:"geolocation",access:"access"});X.openPermissionDialog=()=>ue({name:"geolocation",access:"access"});var Xt=Object.assign(w("loadFullScreenAd"),{isSupported:u("loadFullScreenAd_isSupported")}),Zt=Object.assign(w("showFullScreenAd"),{isSupported:u("showFullScreenAd_isSupported")}),pe=i("openURL");function me(e){let t=le(e);return pe(t)}function le(e){return["http://","https://"].some(r=>e.startsWith(r))?ge(e):e}function ge(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var q="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",$=15e3,T=null;function A(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function ve(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=A();if(e)return Promise.resolve(e);if(T)return T;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",c),window.clearTimeout(f),T=null},a=()=>{let p=A();if(p){s(),r(p);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},c=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${q}.`))},f=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${$}ms.`))},$);o.addEventListener("load",a),o.addEventListener("error",c),o.async=!0,o.src=q,document.head.appendChild(o)});return T=t,t}var b=Object.assign(w("fetchTossAd"),{isSupported:u("fetchTossAd_isSupported")}),fe=i("tossAdEventLog"),we=new Set(["1","2"]);function he(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}return b({options:e,onEvent:t,onError:r})})}function j(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>we.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function Ee(e){return be(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:j(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:Se(e)?{resultType:"SUCCESS",success:j(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function be(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function Se(e){return!!(e&&typeof e=="object"&&"ads"in e)}function _e(){return async(e,t)=>{try{let r=await he({adGroupId:t.spaceUnitId,sdkId:"108",availableStyleIds:["1","2"]});return Ee(r)}catch(r){return{resultType:"FAIL",error:{reason:r instanceof Error?r.message:"Unknown fetchTossAd error"}}}}}var R=null;function Ae(e){let{callbacks:t}=e;if(window.TossAdsSpaceKit!=null&&window.TossAdsSpaceKit.isInitialized()){t?.onInitializationFailed?.(new Error("[toss-ad] Already initialized."));return}R!=null&&t?.onInitializationFailed?.(new Error("[toss-ad] initialization already in progress."));let r=()=>t?.onInitialized?.(),n=o=>{let s=o instanceof Error?o:new Error(String(o));t?.onInitializationFailed?.(s)};R=ve().then(o=>{let a={environment:"live",customAdFetcher:_e(),opener:me};o.init(a),r()}).catch(o=>{R=null,n(o)})}function Ce(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=A();if(!a)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!a.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let c=typeof t=="string"?document.querySelector(t):t;if(!c)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let f={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:ye(e,r.callbacks)};a.banner.createSlot(c,f)}catch(s){o(s)}}function Ie(e){let t=A();t?.banner&&t.banner.destroy(e)}function Te(){let e=A();e?.banner&&e.banner.destroyAll()}function ye(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{fe({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Yt={initialize:Object.assign(Ae,{isSupported:b.isSupported}),attach:Object.assign(Ce,{isSupported:b.isSupported}),destroy:Object.assign(Ie,{isSupported:b.isSupported}),destroyAll:Object.assign(Te,{isSupported:b.isSupported})},Qt=Object.assign(i("getServerTime"),{isSupported:u("getServerTime_isSupported")});var y=class{_log=i("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var L=class{callbacks={};on(t,r){typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u("getAppName")(),deploymentId:u("getDeploymentId")(),webViewType:u("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new L,debugLogger:new y};var C=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function P(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),P(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!C.test(s.url))return await r.call(n,s);let a=await caches.open(t),c=await a.match(s);if(c){let p=c.headers.get("ETag"),l=c.headers.get("Last-Modified");p&&s.headers.set("If-None-Match",p),l&&s.headers.set("If-Modified-Since",l);let h=await r.call(n,s);return h.status===304?(c.__revalidateResponse=h,c):(a.put(s,h.clone()),h)}let f=await r.call(n,s);return a.put(s,f.clone()),f})})();P(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s});var Z=window.__appsInToss.debugLogger;Z.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};Z.log("load_complete",{isNavigationDebugSupported:r,...n})});function _(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:_(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:_(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:_(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;function e(t){let r=t.getContext("webgl2")??t.getContext("webgl");if(r==null)return;let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})}window.addEventListener("load",()=>{let t=document.querySelector("#unity-canvas");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type==="childList"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute("id")==="unity-canvas"&&(e(a),o.disconnect()),a instanceof HTMLElement){let c=a.querySelector("#unity-canvas");c!=null&&(e(c),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:r})=>{C.test(r.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:r.url})}),t.on("fetchResponse",async({request:r,requestAt:n,response:o})=>{if(!C.test(r.url))return;let s=_((await o.clone().blob()).size/1024,2),a=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n';
44953
+ t55 = '"use strict";(()=>{var ie=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new ie,O=()=>Math.random().toString(36).substring(2,15),k=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(k(i))})),h.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function x(e){return t=>{let r=O(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(k(o))})];return h.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function l(e){return()=>h.getConstant(e)}var ce=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=ce());var qe=d("closeView"),je=d("generateHapticFeedback"),Ke=d("share"),Je=d("setSecureScreen"),Xe=d("setScreenAwakeMode"),Ye=d("getNetworkStatus"),Ze=d("setIosSwipeGestureEnabled"),Qe=d("openURL"),et=d("openPermissionDialog"),tt=d("getPermission"),rt=d("requestPermission"),nt=l("setClipboardText"),ot=l("getClipboardText"),st=l("fetchContacts"),at=l("fetchAlbumPhotos"),it=l("getCurrentLocation"),ct=l("openCamera"),dt=d("appLogin"),ut=d("eventLog"),pt=d("getTossShareLink"),mt=d("setDeviceOrientation"),lt=d("checkoutPayment"),gt=d("saveBase64Data"),ft=d("appsInTossSignTossCert"),vt=d("getGameCenterGameProfile"),ht=d("openGameCenterLeaderboard"),wt=d("submitGameCenterLeaderBoardScore"),Et=d("getUserKeyForGame"),bt=d("getIsTossLoginIntegratedService"),At=d("grantPromotionRewardForGame"),St=d("getServerTime"),_t=l("getLocale"),Ct=l("getSchemeUri"),Tt=l("getPlatformOS"),yt=l("getOperationalEnvironment"),It=l("getTossAppVersion"),Lt=l("getDeviceId"),xt=x("contactsViral"),Pt=x("startUpdateLocation"),Rt=x("onVisibilityChangedByTransparentServiceWeb");var _=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},B=class extends _{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},G=class extends _{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},V=class extends _{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var F=class extends _{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},H=F,U=class extends _{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},z=class extends _{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var de=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,Q=()=>Math.random().toString(36).substring(2,15),ee=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=Q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(ee(i))})),w.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=Q(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(ee(o))})];return w.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>w.getConstant(e)}var Ht={getItem:c("getStorageItem"),setItem:c("setStorageItem"),removeItem:c("removeStorageItem"),clearItems:c("clearItems")},ue=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>["*","x","X"].includes(e),W=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},pe=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],me=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=pe(W(e),W(t));return r>n?1:r<n?-1:0},q=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(ue);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},j=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=me(o,s);if(a!==0)return a}return 0},le=(e,t)=>{let r=q(e),n=q(t),o=r.pop(),s=n.pop(),a=j(r,n);return a!==0?a:o&&s?j(o.split("."),s.split(".")):o?-1:s?1:0};function K(e){if(u("getOperationalEnvironment")()==="sandbox")return!0;let r=u("getTossAppVersion")(),o=u("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:le(r,o)>=0}function ge(e){return c("processProductGrant")(e)}var Ut={createOneTimePurchaseOrder:e=>{let t=K({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=K({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A("requestOneTimePurchase")({options:{sku:i},onEvent:async m=>{if(m.type==="purchased"){let g=await o.processProductGrant({orderId:m.data.orderId});await ge({orderId:m.data.orderId,isProductGranted:g}).catch(a)}else s(m)},onError:m=>{a(m)}}):(c("iapCreateOneTimePurchaseOrder")({productId:i}).then(g=>{Promise.resolve(o.processProductGrant({orderId:g.orderId})).then(()=>{s({type:"success",data:g})}).catch(v=>{a(v)})}).catch(g=>{a(g)}),r)},getProductItemList:c("iapGetProductItemList"),getPendingOrders:c("getPendingOrders"),getCompletedOrRefundedOrders:c("getCompletedOrRefundedOrders"),completeProductGrant:c("completeProductGrant")},zt=u("getSafeAreaInsets");var $t=u("getSafeAreaInsets");var Wt={loadAppsInTossAdMob:Object.assign(A("loadAppsInTossAdMob"),{isSupported:u("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(A("showAppsInTossAdMob"),{isSupported:u("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(c("isAppsInTossAdMobLoaded"),{isSupported:u("isAppsInTossAdMobLoaded_isSupported")})};var qt={getDeploymentId:u("getDeploymentId")},jt=u("deploymentId"),Kt=u("brandDisplayName"),Jt=u("brandIcon"),Xt=u("brandPrimaryColor");var Yt={addAccessoryButton:c("addAccessoryButton"),removeAccessoryButton:c("removeAccessoryButton")},fe=c("requestPermission"),ve=c("getPermission"),he=c("openPermissionDialog");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await fe(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>ve(e),n.openPermissionDialog=()=>he(e),n}var Qt=C({handler:e=>c("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:B}),tr=C({handler:e=>c("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:G}),nr=C({handler:e=>c("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:F}),sr=C({handler:e=>c("openCamera")(e),permission:{name:"camera",access:"access"},error:V}),ir=C({handler:e=>c("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:z}),dr=C({handler:()=>c("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:U}),we=c("getPermission"),Ee=c("openPermissionDialog"),te=e=>A("updateLocationEvent")({...e,onError:t=>{let r=new H;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});te.getPermission=()=>we({name:"geolocation",access:"access"});te.openPermissionDialog=()=>Ee({name:"geolocation",access:"access"});var pr=Object.assign(A("loadFullScreenAd"),{isSupported:u("loadFullScreenAd_isSupported")}),mr=Object.assign(A("showFullScreenAd"),{isSupported:u("showFullScreenAd_isSupported")}),be=c("openURL");function Ae(e){let t=Se(e);return be(t)}function Se(e){return["http://","https://"].some(r=>e.startsWith(r))?_e(e):e}function _e(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var J="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",X=15e3,P=null;function S(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function Ce(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=S();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",i),window.clearTimeout(p),P=null},a=()=>{let m=S();if(m){s(),r(m);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${J}.`))},p=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${X}ms.`))},X);o.addEventListener("load",a),o.addEventListener("error",i),o.async=!0,o.src=J,document.head.appendChild(o)});return P=t,t}var b=Object.assign(A("fetchTossAd"),{isSupported:u("fetchTossAd_isSupported")}),Te=c("tossAdEventLog"),ye=new Set(["1","2"]);function Ie(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}return b({options:e,onEvent:t,onError:r})})}function Y(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function Le(e){return xe(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:Y(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:Pe(e)?{resultType:"SUCCESS",success:Y(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function xe(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function Pe(e){return!!(e&&typeof e=="object"&&"ads"in e)}function Re(){return async(e,t)=>{try{let r=await Ie({adGroupId:t.spaceUnitId,sdkId:"108",availableStyleIds:["1","2"]});return Le(r)}catch(r){return{resultType:"FAIL",error:{reason:r instanceof Error?r.message:"Unknown fetchTossAd error"}}}}}var I=null;function De(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(S()?.isInitialized()){r();return}if(I!=null){I.then(r).catch(n);return}let s=Ce().then(a=>{if(a.isInitialized())return;let p={environment:"live",customAdFetcher:Re(),opener:Ae};a.init(p)});I=s,s.then(r).catch(n).finally(()=>{I===s&&(I=null)})}function Ne(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=S();if(!a)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!a.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let i=typeof t=="string"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let p={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:re(e,r.callbacks)};a.banner.createSlot(i,p)}catch(s){o(s)}}var Me="16px 20px",Fe="20px",Oe="auto",ke="blackAndWhite",Be="expanded",f="toss-ads-attach",Z="toss-ads-attach-style";function Ge(e){let t=e.ownerDocument;if(!t||t.getElementById(Z))return;let r=t.createElement("style");r.id=Z,r.textContent=`\n .${f} { background: #ffffff; }\n .${f}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${f} { background: #17171c; }\n .${f}.toss-ads-tone-grey { background: #101013; }\n }\n .${f}.toss-ads-theme-light { background: #ffffff; }\n .${f}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${f}.toss-ads-theme-dark { background: #17171c; }\n .${f}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Ve(e,t,r={}){let{callbacks:n,theme:o=Oe,tone:s=ke,variant:a=Be}=r,i=document.createElement("div");i.style.width="100%",i.style.height="100%",i.style.boxSizing="border-box",i.style.display="flex",i.style.flexDirection="column",i.style.justifyContent="center",i.style.overflow="hidden",a==="card"&&(i.style.padding="0 10px");let p=document.createElement("div");p.classList.add(f),s==="grey"&&p.classList.add("toss-ads-tone-grey"),o==="light"?p.classList.add("toss-ads-theme-light"):o==="dark"&&p.classList.add("toss-ads-theme-dark"),a==="card"&&(p.style.borderRadius="16px",p.style.overflow="hidden"),i.appendChild(p);let m=!1,g=null,v=E=>{let y=E instanceof Error?E:new Error(String(E));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},oe=re(e,n);try{let E=e,y=S();if(!y)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!y.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let M=typeof t=="string"?document.querySelector(t):t;if(!M)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ge(M),M.appendChild(i),m=!0;let se={spaceId:E,autoLoad:!0,theme:o==="auto"?void 0:o,renderPadding:ae=>ae==="1"?Me:Fe,callbacks:oe};g=y.banner.createSlot(p,se)}catch(E){m&&i.parentNode&&i.parentNode.removeChild(i),v(E)}return{destroy(){g?.destroy(),m&&i.parentNode&&i.parentNode.removeChild(i)}}}function He(e){let t=S();t?.banner&&t.banner.destroy(e)}function Ue(){let e=S();e?.banner&&e.banner.destroyAll()}function re(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var lr={initialize:Object.assign(De,{isSupported:b.isSupported}),attach:Object.assign(Ne,{isSupported:b.isSupported}),attachBanner:Object.assign(Ve,{isSupported:b.isSupported}),destroy:Object.assign(He,{isSupported:b.isSupported}),destroyAll:Object.assign(Ue,{isSupported:b.isSupported})},gr=Object.assign(c("getServerTime"),{isSupported:u("getServerTime_isSupported")});var R=class{_log=c("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u("getAppName")(),deploymentId:u("getDeploymentId")(),webViewType:u("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new R};var L=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!L.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let m=i.headers.get("ETag"),g=i.headers.get("Last-Modified");m&&s.headers.set("If-None-Match",m),g&&s.headers.set("If-Modified-Since",g);let v=await r.call(n,s);return v.status===304?(i.__revalidateResponse=v,i):(a.put(s,v.clone()),v)}let p=await r.call(n,s);return a.put(s,p.clone()),p})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s});var ne=window.__appsInToss.debugLogger;ne.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};ne.log("load_complete",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;function e(t){let r=t.getContext("webgl2")??t.getContext("webgl");if(r==null)return;let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})}window.addEventListener("load",()=>{let t=document.querySelector("#unity-canvas");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type==="childList"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute("id")==="unity-canvas"&&(e(a),o.disconnect()),a instanceof HTMLElement){let i=a.querySelector("#unity-canvas");i!=null&&(e(i),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:r})=>{L.test(r.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:r.url})}),t.on("fetchResponse",async({request:r,requestAt:n,response:o})=>{if(!L.test(r.url))return;let s=T((await o.clone().blob()).size/1024,2),a=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n';
44954
44954
  }
44955
44955
  });
44956
44956
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@apps-in-toss/web-framework",
3
3
  "type": "module",
4
- "version": "1.10.1",
4
+ "version": "1.11.0",
5
5
  "description": "Web Framework for Apps In Toss",
6
6
  "scripts": {
7
7
  "typecheck": "tsc --noEmit",
@@ -87,12 +87,12 @@
87
87
  "zod": "3.24.4"
88
88
  },
89
89
  "dependencies": {
90
- "@apps-in-toss/bridge-core": "1.10.1",
91
- "@apps-in-toss/cli": "1.10.1",
92
- "@apps-in-toss/framework": "1.10.1",
93
- "@apps-in-toss/plugins": "1.10.1",
94
- "@apps-in-toss/web-analytics": "1.10.1",
95
- "@apps-in-toss/web-bridge": "1.10.1",
90
+ "@apps-in-toss/bridge-core": "1.11.0",
91
+ "@apps-in-toss/cli": "1.11.0",
92
+ "@apps-in-toss/framework": "1.11.0",
93
+ "@apps-in-toss/plugins": "1.11.0",
94
+ "@apps-in-toss/web-analytics": "1.11.0",
95
+ "@apps-in-toss/web-bridge": "1.11.0",
96
96
  "@babel/core": "7.23.9",
97
97
  "@granite-js/cli": "0.1.31",
98
98
  "@granite-js/mpack": "0.1.31",