PageSourceSearch

https://funjeju.com/_next/static/chunks/2eqp-we6-tooe.js?dpl=dpl_F3v3MpmZ5KiWXbU2ACYuHk2vpYJT

js funjeju.com collected 2026-10-05 01:27:11 UTC 55,198 bytes, 13 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,88143,(e,t,n)=>{"use strict";function a({widthInt:e,heightInt:t,blurWidth:n,blurHeight:r,blurDataURL:o,objectFit:i}){let s=n?40*n:e,l=r?40*r:t,c=s&&l?`viewBox='0 0 ${s} ${l}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${c}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${c?"none":"contain"===i?"xMidYMid":"cover"===i?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${o}'/%3E%3C/svg%3E`}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getImageBlurSvg",{enumerable:!0,get:function(){return a}})},87690,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={VALID_LOADERS:function(){return o},imageConfigDefault:function(){return i}};for(var r in a)Object.defineProperty(n,r,{enumerable:!0,get:a[r]});let o=["default","imgix","cloudinary","akamai","custom"],i={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getImgProps",{enumerable:!0,get:function(){return c}}),e.r(33525);let a=e.r(43369),r=e.r(88143),o=e.r(87690),i=["-moz-initial","fill","none","scale-down",void 0];function s(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function c({src:e,sizes:t,unoptimized:n=!1,priority:d=!1,preload:u=!1,loading:h,className:f,quality:m,width:p,height:g,fill:x=!1,style:j,overrideSrc:b,onLoad:v,onLoadingComplete:y,placeholder:w="empty",blurDataURL:k,fetchPriority:z,decoding:C="async",layout:_,objectFit:N,objectPosition:S,lazyBoundary:I,lazyRoot:T,...A},P){var E;let O,M,L,{imgConf:R,showAltText:V,blurComplete:D,defaultLoader:$}=P,F=R||o.imageConfigDefault;if("allSizes"in F)O=F;else{let e=[...F.deviceSizes,...F.imageSizes].sort((e,t)=>e-t),t=F.deviceSizes.sort((e,t)=>e-t),n=F.qualities?.sort((e,t)=>e-t);O={...F,allSizes:e,deviceSizes:t,qualities:n}}if(void 0===$)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let W=A.loader||$;delete A.loader,delete A.srcSet;let G="__next_img_default"in W;if(G){if("custom"===O.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
2Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=W;W=t=>{let{config:n,...a}=t;return e(a)}}if(_){"fill"===_&&(x=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[_];e&&(j={...j,...e});let n={responsive:"100vw",fill:"100vw"}[_];n&&!t&&(t=n)}let H="",U=l(p),B=l(g);if((E=e)&&"object"==typeof E&&(s(E)||void 0!==E.src)){let t=s(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}
2`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(M=t.blurWidth,L=t.blurHeight,k=k||t.blurDataURL,H=t.src,!x)if(U||B){if(U&&!B){let e=U/t.width;B=Math.round(t.height*e)}else if(!U&&B){let e=B/t.height;U=Math.round(t.width*e)}}else U=t.width,B=t.height}let J=!d&&!u&&("lazy"===h||void 0===h);(!(e="string"==typeof e?e:H)||e.startsWith("data:")||e.startsWith("blob:"))&&(n=!0,J=!1),O.unoptimized&&(n=!0),G&&!O.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(n=!0);let q=l(m),X=Object.assign(x?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:N,objectPosition:S}:{},V?{}:{color:"transparent"},j),Y=D||"empty"===w?null:"blur"===w?`url("data:image/svg+xml;charset=utf-8,${(0,r.getImageBlurSvg)({widthInt:U,heightInt:B,blurWidth:M,blurHeight:L,blurDataURL:k||"",objectFit:X.objectFit})}")`:`url("${w}")`,K=i.includes(X.objectFit)?"fill"===X.objectFit?"100% 100%":"cover":X.objectFit,Z=Y?{backgroundSize:K,backgroundPosition:X.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Y}:{},Q=function({config:e,src:t,unoptimized:n,width:r,quality:o,sizes:i,loader:s}){if(n){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,a.getDeploymentId)();if(e){let n=t.indexOf("?");if(-1!==n){let a=new URLSearchParams(t.slice(n+1));a.get("dpl")||(a.append("dpl",e),t=t.slice(0,n)+"?"+a.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:l,kind:c}=function({deviceSizes:e,allSizes:t},n,a){if(a){let n=/(^|\s)(1?\d?\d)vw/g,r=[];for(let e;e=n.exec(a);)r.push(parseInt(e[2]));if(r.length){let n=.01*Math.min(...r);return{widths:t.filter(t=>t>=e[0]*n),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof n?{widths:e,kind:"w"}:{widths:[...new Set([n,2*n].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,r,i),d=l.length-1;return{sizes:i||"w"!==c?i:"100vw",srcSet:l.map((n,a)=>`${s({config:e,src:t,quality:o,width:n})} ${"w"===c?n:a+1}${c}`).join(", "),src:s({config:e,src:t,quality:o,width:l[d]})}}({config:O,src:e,unoptimized:n,width:U,quality:q,sizes:t,loader:W}),ee=J?"lazy":h;return{props:{...A,loading:ee,fetchPriority:z,width:U,height:B,decoding:C,className:f,style:{...X,...Z},sizes:Q.sizes,srcSet:Q.srcSet,src:b||Q.src},meta:{unoptimized:n,preload:u||d,placeholder:w,fill:x}}}},98879,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return s}});let a=e.r(71645),r="u"<typeof window,o=r?()=>{}:a.useLayoutEffect,i=r?()=>{}:a.useEffect;function s(e){let{headManager:t,reduceComponentsToState:n}=e;function s(){if(t&&t.mountedInstances){let e=a.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(n(e))}}return r&&(t?.mountedInstances?.add(e.children),s()),o(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),o(()=>(t&&(t._pendingUpdate=s),()=>{t&&(t._pendingUpdate=s)})),i(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},25633,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={default:function(){return p},defaultHead:function(){return u}};for(var r in a)Object.defineProperty(n,r,{enumerable:!0,get:a[r]});let o=e.r(55682),i=e.r(90809),s=e.r(43476),l=i._(e.r(71645)),c=o._(e.r(98879)),d=e.r(42732);function u(){return[(0,s.jsx)("meta",{charSet:"utf-8"},"charset"),(0,s.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function h(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(33525);let f=["name","httpEquiv","charSet","itemProp"];function m(e){let t,n,a,r;return e.reduce(h,[]).reverse().concat(u().reverse()).filter((t=new Set,n=new Set,a=new Set,r={},e=>{let o=!0,i=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){i=!0;let n=e.key.slice(e.key.indexOf("$")+1);t.has(n)?o=!1:t.add(n)}switch(e.type){case"title":case"base":n.has(e.type)?o=!1:n.add(e.type);break;case"meta":for(let t=0,n=f.length;t<n;t++){let n=f[t];if(e.props.hasOwnProperty(n))if("charSet"===n)a.has(n)?o=!1:a.add(n);else{let t=e.props[n],a=r[n]||new Set;("name"!==n||!i)&&a.has(t)?o=!1:(a.add(t),r[n]=a)}}}return o}
2)).reverse().map((e,t)=>{let n=e.key||t;return l.default.cloneElement(e,{key:n})})}let p=function({children:e}){let t=(0,l.useContext)(d.HeadManagerContext);return(0,s.jsx)(c.default,{reduceComponentsToState:m,headManager:t,children:e})};("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},18556,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"ImageConfigContext",{enumerable:!0,get:function(){return o}});let a=e.r(55682)._(e.r(71645)),r=e.r(87690),o=a.default.createContext(r.imageConfigDefault)},65856,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"RouterContext",{enumerable:!0,get:function(){return a}});let a=e.r(55682)._(e.r(71645)).default.createContext(null)},18815,(e,t,n)=>{"use strict";function a(e,t){let n=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-n)<Math.abs(e-n)?t:e,t.qualities[0]):n}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"findClosestQuality",{enumerable:!0,get:function(){return a}})},1948,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return i}});let a=e.r(18815),r=e.r(43369);function o({config:e,src:t,width:n,quality:i}){let s=(0,r.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")){let e=t.indexOf("?");if(-1!==e){let n=new URLSearchParams(t.slice(e+1)),a=n.get("dpl");if(a){s=a,n.delete("dpl");let r=n.toString();t=t.slice(0,e)+(r?"?"+r:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
3Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let l=(0,a.findClosestQuality)(i,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${n}&q=${l}${t.startsWith("/")&&s?`&dpl=${s}`:""}`}o.__next_img_default=!0;let i=o},5500,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"Image",{enumerable:!0,get:function(){return v}});let a=e.r(55682),r=e.r(90809),o=e.r(43476),i=r._(e.r(71645)),s=a._(e.r(74080)),l=a._(e.r(25633)),c=e.r(8927),d=e.r(87690),u=e.r(18556);e.r(33525);let h=e.r(65856),f=a._(e.r(1948)),m=e.r(18581),p={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function g(e,t,n,a,r,o,i){let s=e?.src;e&&e["data-loaded-src"]!==s&&(e["data-loaded-src"]=s,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&r(!0),n?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let a=!1,r=!1;n.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>a,isPropagationStopped:()=>r,persist:()=>{},preventDefault:()=>{a=!0,t.preventDefault()},stopPropagation:()=>{r=!0,t.stopPropagation()}})}a?.current&&a.current(e)}}))}function x(e){return i.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let j=(0,i.forwardRef)(({src:e,srcSet:t,sizes:n,height:a,width:r,decoding:s,className:l,style:c,fetchPriority:d,placeholder:u,loading:h,unoptimized:f,fill:p,onLoadRef:j,onLoadingCompleteRef:b,setBlurComplete:v,setShowAltText:y,sizesInput:w,onLoad:k,onError:z,...C},_)=>{let N=(0,i.useCallback)(e=>{e&&(z&&(e.src=e.src),e.complete&&g(e,u,j,b,v,f,w))},[e,u,j,b,v,z,f,w]),S=(0,m.useMergedRef)(_,N);return(0,o.jsx)("img",{...C,...x(d),loading:h,width:r,height:a,decoding:s,"data-nimg":p?"fill":"1",className:l,style:c,sizes:n,srcSet:t,src:e,ref:S,onLoad:e=>{g(e.currentTarget,u,j,b,v,f,w)},onError:e=>{y(!0),"empty"!==u&&v(!0),z&&z(e)}})});function b({isAppRouter:e,imgAttributes:t}){let n={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...x(t.fetchPriority)};return e&&s.default.preload?(s.default.preload(t.src,n),null):(0,o.jsx)(l.default,{children:(0,o.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...n},"__nimg-"+t.src+t.srcSet+t.sizes)})}let v=(0,i.forwardRef)((e,t)=>{let n=(0,i.useContext)(h.RouterContext),a=(0,i.useContext)(u.ImageConfigContext),r=(0,i.useMemo)(()=>{let e=p||a||d.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>
3e-t),n=e.deviceSizes.sort((e,t)=>e-t),r=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:n,qualities:r,localPatterns:"u"<typeof window?a?.localPatterns:e.localPatterns}},[a]),{onLoad:s,onLoadingComplete:l}=e,m=(0,i.useRef)(s);(0,i.useEffect)(()=>{m.current=s},[s]);let g=(0,i.useRef)(l);(0,i.useEffect)(()=>{g.current=l},[l]);let[x,v]=(0,i.useState)(!1),[y,w]=(0,i.useState)(!1),{props:k,meta:z}=(0,c.getImgProps)(e,{defaultLoader:f.default,imgConf:r,blurComplete:x,showAltText:y});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(j,{...k,unoptimized:z.unoptimized,placeholder:z.placeholder,fill:z.fill,onLoadRef:m,onLoadingCompleteRef:g,setBlurComplete:v,setShowAltText:w,sizesInput:e.sizes,ref:t}),z.preload?(0,o.jsx)(b,{isAppRouter:!n,imgAttributes:k}):null]})});("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},94909,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={default:function(){return d},getImageProps:function(){return c}};for(var r in a)Object.defineProperty(n,r,{enumerable:!0,get:a[r]});let o=e.r(55682),i=e.r(8927),s=e.r(5500),l=o._(e.r(1948));function c(e){let{props:t}=(0,i.getImgProps)(e,{defaultLoader:l.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,n]of Object.entries(t))void 0===n&&delete t[e];return{props:t}}let d=s.Image},57688,(e,t,n)=>{t.exports=e.r(94909)},60976,e=>{"use strict";var t=e.i(43476),n=e.i(57688);e.s(["DolmangyiIcon",0,function({size:e=40,className:a=""}){return(0,t.jsx)(n.default,{src:"/dolmangyi.png",alt:"돌AI",width:e,height:e,className:`object-contain drop-shadow-sm ${a}`,priority:!0})}])},7761,e=>{"use strict";var t=e.i(43476),n=e.i(71645);let a=["ko","en","ja","zh"],r={"app.tagline":{ko:"제주가 더 FUN해지는 여행",en:"Jeju, made more FUN",ja:"もっと楽しい済州の旅",zh:"让济州更有趣的旅行"},"search.placeholder":{ko:"제주에서 검색...",en:"Search Jeju...",ja:"済州を検索...",zh:"搜索济州..."},"auth.login":{ko:"구글로 로그인",en:"Sign in with Google",ja:"Googleでログイン",zh:"用Google登录"},"nav./":{ko:"홈",en:"Home",ja:"ホーム",zh:"首页"},"nav./cctv":{ko:"실시간 CCTV",en:"Live CCTV",ja:"ライブCCTV",zh:"实时监控"},"nav./weather":{ko:"제주 날씨",en:"Jeju Weather",ja:"済州の天気",zh:"济州天气"},"nav./feed":{ko:"라이브 피드",en:"Live Feed",ja:"ライブフィード",zh:"实时动态"},"nav./food":{ko:"도민맛집",en:"Local Eats",ja:"地元グルメ",zh:"本地美食"},"nav./jeju-ai":{ko:"제주여행 AI",en:"Jeju Travel AI",ja:"済州旅行AI",zh:"济州旅行AI"},"nav./magazine":{ko:"제주 매거진",en:"Jeju Magazine",ja:"済州マガジン",zh:"济州杂志"},"nav./game/spot":{ko:"틀린그림찾기",en:"Spot the Difference",ja:"間違い探し",zh:"找不同"},"nav./youtube":{ko:"제주tube",en:"JejuTube",ja:"済州tube",zh:"济州tube"},"nav./minihome":{ko:"미니홈피",en:"Minihompy",ja:"ミニホムピ",zh:"迷你小窝"},"nav./mypage":{ko:"마이페이지",en:"My Page",ja:"マイページ",zh:"我的"},"tab./":{ko:"홈",en:"Home",ja:"ホーム",zh:"首页"},"tab./cctv":{ko:"CCTV",en:"CCTV",ja:"CCTV",zh:"监控"},"tab./feed":{ko:"피드",en:"Feed",ja:"フィード",zh:"动态"},"tab./game/spot":{ko:"틀린그림찾기",en:"Game",ja:"ゲーム",zh:"游戏"},"tab./mypage":{ko:"마이",en:"My",ja:"マイ",zh:"我的"},"tab.feed.upload":{ko:"올리기",en:"Post",ja:"投稿",zh:"发布"},"cctv.liveInfo":{ko:"🌡️ 현장 실시간 정보",en:"🌡️ Live Conditions",ja:"🌡️ 現地リアルタイム情報",zh:"🌡️ 现场实时信息"},"cctv.updateNote":{ko:"Open-Meteo · 10분마다 갱신",en:"Open-Meteo · every 10 min",ja:"Open-Meteo · 10分ごとに更新",zh:"Open-Meteo · 每10分钟更新"},"cctv.weather":{ko:"날씨",en:"Weather",ja:"天気",zh:"天气"},"cctv.tide":{ko:"물때",en:"Tide",ja:"潮汐",zh:"潮汐"},"cctv.wind":{ko:"바람",en:"Wind",ja:"風",zh:"风"},"cctv.noWeather":{ko:"날씨 정보를 가져올 수 없어요",en:"Weather data unavailable",ja:"天気情報を取得できません",zh:"无法
3获取天气信息"},"cctv.rainWarn":{ko:"강수 — 우산 챙기세요!",en:"Rain — bring an umbrella!",ja:"降雨 — 傘をお忘れなく!",zh:"有降雨 — 记得带伞!"},"cctv.rainChance":{ko:"강수확률",en:"Rain chance",ja:"降水確率",zh:"降水概率"},"cctv.rain":{ko:"비",en:"Rain",ja:"雨",zh:"雨"},"cctv.rising":{ko:"밀물",en:"Rising",ja:"満ち潮",zh:"涨潮"},"cctv.falling":{ko:"썰물",en:"Falling",ja:"引き潮",zh:"退潮"},"cctv.tideHigh":{ko:"만조",en:"High",ja:"満潮",zh:"满潮"},"cctv.tideLow":{ko:"간조",en:"Low",ja:"干潮",zh:"干潮"},"wx.clear":{ko:"맑음",en:"Clear",ja:"晴れ",zh:"晴"},"wx.partly":{ko:"구름 조금",en:"Partly cloudy",ja:"晴れ時々曇り",zh:"多云"},"wx.cloudy":{ko:"흐림",en:"Cloudy",ja:"曇り",zh:"阴"},"wx.fog":{ko:"안개",en:"Fog",ja:"霧",zh:"雾"},"wx.drizzle":{ko:"이슬비",en:"Drizzle",ja:"霧雨",zh:"毛毛雨"},"wx.rain":{ko:"비",en:"Rain",ja:"雨",zh:"雨"},"wx.snow":{ko:"눈",en:"Snow",ja:"雪",zh:"雪"},"wx.showers":{ko:"소나기",en:"Showers",ja:"にわか雨",zh:"阵雨"},"wx.thunder":{ko:"천둥번개",en:"Thunderstorm",ja:"雷雨",zh:"雷暴"},"wx.unknown":{ko:"알 수 없음",en:"Unknown",ja:"不明",zh:"未知"},"wind.calm":{ko:"약풍",en:"Calm",ja:"弱風",zh:"微风"},"wind.moderate":{ko:"적당",en:"Moderate",ja:"適度",zh:"适中"},"wind.strong":{ko:"강풍",en:"Strong",ja:"強風",zh:"强风"},"wind.verystrong":{ko:"매우 강함",en:"Very strong",ja:"非常に強い",zh:"非常强"},"common.more":{ko:"더보기 →",en:"More →",ja:"もっと見る →",zh:"更多 →"},"common.viewAll":{ko:"전체보기",en:"View all",ja:"すべて見る",zh:"查看全部"},"auth.logout":{ko:"로그아웃",en:"Log out",ja:"ログアウト",zh:"退出"},"auth.loginShort":{ko:"로그인",en:"Sign in",ja:"ログイン",zh:"登录"},"nav./card":{ko:"카드뉴스",en:"Card News",ja:"カードニュース",zh:"卡片新闻"},"sidebar.greeting":{ko:"안녕하세요!",en:"Hello!",ja:"こんにちは!",zh:"您好!"},"sidebar.docent":{ko:"제주 여행 AI 도슨트",en:"Jeju Travel AI Guide",ja:"済州旅行AIガイド",zh:"济州旅行AI向导"},"sidebar.haveFun":{ko:"오늘도 즐거운 여행 되세요!",en:"Have a great trip today!",ja:"今日も良い旅を!",zh:"祝您旅途愉快!"},"sidebar.askDocent":{ko:"도슨트에게 물어보기 💬",en:"Ask the guide 💬",ja:"ガイドに聞く 💬",zh:"向向导提问 💬"},"chat.float":{ko:"무엇이든 물어보살 🔮",en:"Ask me anything 🔮",ja:"何でも聞いてね 🔮",zh:"什么都可以问我 🔮"},"chat.greeting":{ko:"혼저옵서예! 제주 여행 도슨트 돌AI우다. 🗿\n\n🍽️ 도민맛집광 🏞️ 가볼만한 디를 곹이 추천해드리쿠다.\n지역이름이영 메뉴를 골아주민 더 정확허우다!",en:"Welcome to Jeju! I'm Dol AI, your Jeju travel guide. 🗿\n\nI recommend 🍽️ local restaurants and 🏞️ must-visit spots.\nTell me an area or what you're craving for better picks!",ja:"ようこそ済州へ!済州旅行ガイドのDol AIです。🗿\n\n🍽️ 地元グルメと 🏞️ おすすめスポットをご案内します。\n地域名や食べたいものを教えてくれると、より正確です!",zh:"欢迎来济州!我是济州旅行向导Dol AI。🗿\n\n为您推荐 🍽️ 本地美食和 🏞️ 必去景点。\n告诉我地区或想吃什么,推荐会更精准!"},"chat.placeholder":{ko:"지금 어디야? 뭐가 궁금해?",en:"Where are you? Ask me anything!",ja:"今どこ?何でも聞いてね!",zh:"你在哪?有什么想问的?"},"chat.sug.heuk":{ko:"흑돼지 맛집 추천",en:"Black pork restaurants",ja:"黒豚グルメのおすすめ",zh:"推荐黑猪肉餐厅"},"chat.sug.cafe":{ko:"감성 카페 추천",en:"Recommend cozy cafés",ja:"雰囲気の良いカフェ",zh:"推荐文艺咖啡馆"},"chat.sug.spot":{ko:"가볼만한 ê³³ 추천",en:"Must-visit spots",ja:"おすすめスポット",zh:"值得去的景点"},"chat.sug.halla":{ko:"한라산 코스 추천",en:"Hallasan hiking course",ja:"漢拏山コース",zh:"汉拿山路线"},"chat.sug.sunset":{ko:"노을 명소 추천",en:"Best sunset spots",ja:"夕日の名所",zh:"看日落的地方"},"chat.sug.rainy":{ko:"비 오는 날 가볼 ê³³",en:"Rainy-day spots",ja:"雨の日に行ける所",zh:"雨天去处"},"home.hero.title":{ko:"제주, 지금 이 순간을 담다",en:"Jeju, captured right now",ja:"済å·
3žã€ä»Šã“の瞬間を",zh:"济州,定格此刻"},"home.hero.sub":{ko:"실시간 제주, 당신의 여행이 콘텐츠가 되는 ê³³",en:"Live Jeju — where your trip becomes content",ja:"リアルタイム済州 — あなたの旅がコンテンツになる場所",zh:"实时济州 — 让你的旅行成为内容"},"home.hero.weatherBadge":{ko:"☀️ 좋은 날씨",en:"☀️ Nice weather",ja:"☀️ 良い天気",zh:"☀️ 好天气"},"home.section.spot":{ko:"🔍 제주 틀린그림찾기",en:"🔍 Spot the Difference",ja:"🔍 済州まちがい探し",zh:"🔍 济州找不同"},"home.section.webzine":{ko:"📖 제주 여행 웹진",en:"📖 Jeju Travel Webzine",ja:"📖 済州旅行ウェブマガジン",zh:"📖 济州旅行杂志"},"home.mascot.title":{ko:"안녕! 나는 제주 여행 AI 도슨트야 😎",en:"Hi! I'm your Jeju travel AI guide 😎",ja:"やあ!済州旅行AIガイドだよ 😎",zh:"嗨!我是济州旅行AI向导 😎"},"home.mascot.sub":{ko:"지금 어디야? 내가 딱 맞는 여행을 추천해줄게!",en:"Where are you? I'll recommend the perfect trip!",ja:"今どこ?ぴったりの旅をおすすめするよ!",zh:"你在哪?我来推荐最合适的行程!"},"home.chip.weather":{ko:"지금 날씨에 좋은 코스",en:"Best for today's weather",ja:"今日の天気に合うコース",zh:"适合今天天气的路线"},"home.chip.kids":{ko:"아이랑 가기 좋은 ê³³",en:"Great with kids",ja:"子連れにおすすめ",zh:"适合带孩子"},"home.chip.rainy":{ko:"비 오는 날 추천 장소",en:"Rainy-day picks",ja:"雨の日のおすすめ",zh:"雨天推荐"},"home.chip.solo":{ko:"혼자 여행 코스 추천",en:"Solo travel routes",ja:"一人旅コース",zh:"独自旅行路线"},"home.planner.title":{ko:"AI 여행 일정 만들기",en:"Make an AI trip plan",ja:"AI旅行プランを作成",zh:"制作AI行程"},"home.planner.sub":{ko:"나만의 맞춤 여행 일정을 AI가 설계해드려요!",en:"AI designs your custom trip itinerary!",ja:"あなただけの旅程をAIが設計!",zh:"AI为你定制专属行程!"},"home.planner.cta":{ko:"일정 만들기 →",en:"Plan now →",ja:"プラン作成 →",zh:"开始制定 →"},"game.banner.title":{ko:"🔍 틀린그림찾기 · 최근 게시물",en:"🔍 Spot the Difference · Recent",ja:"🔍 まちがい探し · 最近",zh:"🔍 找不同 · 最近"},"game.diff":{ko:"틀린곳",en:"Diffs",ja:"違い",zh:"不同处"},"game.plays":{ko:"회 플레이",en:"plays",ja:"回プレイ",zh:"次游玩"},"game.banner.cta":{ko:"눌러서 틀린그림 찾고 보상 받기 🎁",en:"Tap to play & earn rewards 🎁",ja:"タップして遊んで報酬ゲット 🎁",zh:"点击游玩领奖励 🎁"},"cctv.badge.youtube":{ko:"YouTube 라이브",en:"YouTube Live",ja:"YouTubeライブ",zh:"YouTube直播"},"cctv.badge.connected":{ko:"연결됨",en:"Connected",ja:"接続中",zh:"已连接"},"cctv.badge.notset":{ko:"미설정",en:"Not set",ja:"未設定",zh:"未设置"},"cctv.tag.live":{ko:"실시간",en:"Live",ja:"ライブ",zh:"实时"},"cctv.askAi":{ko:"돌AI에게 물어보기",en:"Ask Dol AI",ja:"Dol AIに聞く",zh:"问Dol AI"},"cctv.askAi.sub":{ko:"이 장소 주변 맛집·카페·코스를 AI가 추천해드려요",en:"AI recommends nearby eats, cafés & routes",ja:"周辺のグルメ・カフェ・コースをAIが提案",zh:"AI推荐周边美食·咖啡·路线"},"cctv.askAi.cta":{ko:"채팅 시작하기 →",en:"Start chat →",ja:"チャット開始 →",zh:"开始聊天 →"},"cctv.nearby":{ko:"주변 CCTV",en:"Nearby CCTV",ja:"周辺CCTV",zh:"周边CCTV"},"cctv.list.title":{ko:"실시간 제주 CCTV",en:"Live Jeju CCTV",ja:"済州ライブCCTV",zh:"济州实时监控"},"cctv.list.subtitle":{ko:"지금 제주 현장을 실시간으로 확인하세요",en:"See Jeju live, right now",ja:"今の済州をライブでチェック",zh:"实时查看济州现场"},"cctv.view.list":{ko:"목록",en:"List",ja:"リスト",zh:"列表"},"cctv.view.map":{ko:"지도",en:"Map",ja:"地図",zh:"地图"},"cctv.connected":{ko:"개 CCTV 연결 중",en:" CCTVs live",ja:"å
3°ã®CCTV接続中",zh:"个CCTV连接中"},"cctv.included":{ko:"개 포함",en:" included",ja:"台含む",zh:"个"},"cctv.realtimeUpdate":{ko:"실시간 업데이트",en:"Live updates",ja:"リアルタイム更新",zh:"实时更新"},"cctv.empty":{ko:"해당 방향의 CCTV가 없어요",en:"No CCTV in this area",ja:"この方面のCCTVはありません",zh:"该方向暂无CCTV"},"cctv.viewAllBtn":{ko:"전체 보기",en:"View all",ja:"すべて見る",zh:"查看全部"},"cctv.dir.all":{ko:"전체",en:"All",ja:"全体",zh:"全部"},"cctv.dir.north":{ko:"북쪽",en:"North",ja:"北部",zh:"北部"},"cctv.dir.east":{ko:"동쪽",en:"East",ja:"東部",zh:"东部"},"cctv.dir.south":{ko:"남쪽",en:"South",ja:"南部",zh:"南部"},"cctv.dir.west":{ko:"서쪽",en:"West",ja:"西部",zh:"西部"},"cctv.dir.allSub":{ko:"제주 전 지역",en:"All of Jeju",ja:"済州全域",zh:"济州全域"},"mv.subtitle":{ko:"여러 CCTV를 동시에 시청하세요",en:"Watch multiple CCTVs at once",ja:"複数のCCTVを同時に視聴",zh:"同时观看多个监控"},"mv.backToList":{ko:"CCTV 목록",en:"CCTV list",ja:"CCTV一覧",zh:"监控列表"},"mv.split":{ko:"분할",en:"-up",ja:"分割",zh:"分割"},"mv.savePreset":{ko:"조합 저장",en:"Save combo",ja:"組合せ保存",zh:"保存组合"},"mv.autoRotate":{ko:"자동순환",en:"Auto-rotate",ja:"自動巡回",zh:"自动轮播"},"mv.rotating":{ko:"순환중",en:"Rotating",ja:"巡回中",zh:"轮播中"},"mv.play":{ko:"재생",en:"Play",ja:"再生",zh:"播放"},"mv.stop":{ko:"정지",en:"Stop",ja:"停止",zh:"停止"},"mv.autoFill":{ko:"자동 채우기",en:"Auto-fill",ja:"自動入力",zh:"自动填充"},"mv.clearAll":{ko:"전체 비우기",en:"Clear all",ja:"すべてクリア",zh:"全部清空"},"mv.fullscreen":{ko:"전체화면",en:"Fullscreen",ja:"全画面",zh:"全屏"},"mv.full":{ko:"전체",en:"Full",ja:"全画面",zh:"全屏"},"mv.exit":{ko:"종료",en:"Exit",ja:"終了",zh:"退出"},"mv.waiting":{ko:"일괄 재생 대기 중",en:"Waiting to play",ja:"再生待機中",zh:"等待播放"},"mv.connFail":{ko:"연결 실패",en:"Connection failed",ja:"接続失敗",zh:"连接失败"},"mv.myFav":{ko:"내 즐겨찾기 CCTV",en:"My favorite CCTVs",ja:"お気に入りCCTV",zh:"我的收藏"},"mv.allCctv":{ko:"전체 CCTV",en:"All CCTV",ja:"すべてのCCTV",zh:"全部监控"},"mv.addFav":{ko:"즐겨찾기 추가하기",en:"Add favorites",ja:"お気に入り追加",zh:"添加收藏"},"mv.remove":{ko:"제거",en:"Remove",ja:"削除",zh:"移除"},"mv.alertFill":{ko:"먼저 슬롯에 CCTV를 채워주세요.",en:"Fill a slot with a CCTV first.",ja:"先にスロットにCCTVを追加してください。",zh:"请先在格子中添加CCTV。"},"mv.promptName":{ko:"이 조합 이름 (예: 노을 4종)",en:"Name this combo (e.g. Sunset 4)",ja:"この組合せの名前(例:夕焼け4選)",zh:"为此组合命名(例:日落4选)"},"mv.tapAdd":{ko:"탭해서 CCTV 추가",en:"Tap to add CCTV",ja:"タップしてCCTV追加",zh:"点击添加CCTV"},"mv.startIn":{ko:"초 후 시작",en:"s to start",ja:"秒後に開始",zh:"秒后开始"},"mv.retryNote":{ko:"1분 후 다시 연결을 시도합니다",en:"Retrying in 1 min",ja:"1分後に再接続します",zh:"1分钟后重新连接"},"mv.fill":{ko:"채우기",en:"Fill",ja:"入力",zh:"填充"},"mv.clear":{ko:"비우기",en:"Clear",ja:"クリア",zh:"清空"},"mv.loginTitle":{ko:"여러 CCTV를 한눈에!",en:"All your CCTVs at a glance!",ja:"複数のCCTVを一目で!",zh:"多个监控一目了然!"},"mv.loginDesc":{ko:"로그인하면 최대 4분할로 제주 곳곳을 동시에 ë³¼ 수 있어요. 무료예요!",en:"Sign in to watch up to 4 Jeju cams at once — it's free!",ja:"ログインすると最大4分割で済州を同時に視聴できます。無料です!",zh:"登录后最多可4分屏同时观看济州各地,免费!"},"mv.loginCta":{ko:"Google로 1초 로그인 →",en:"1-tap sign in with Google →",ja:"Googleで1秒ログイン →",zh:"用Google一键登录 →"},"mv.dragHint":{ko:"· 드래그해서 슬롯에 넣으세요",en:"· drag into a slot",ja:"· ドラッグしてスロットへ",zh:"· 拖入格子"}},o=(0,n.createContext)({lang:"ko",setLang:()=>{},t:e=>e}),i="fj_lang";function s(){return(0,n.useContext)(o).t}e.s(["LANGS",0,a,"LANG_LABELS",0,{ko:"한국어",en:"English",ja:"日本語",zh:"中文"},"LangProvider",0,function({children:e}
3){let[s,l]=(0,n.useState)("ko");(0,n.useEffect)(()=>{let e=null;try{let t=localStorage.getItem(i);t&&a.includes(t)&&(e=t)}catch{}e||(e=function(){if("u"<typeof navigator)return"ko";let e=navigator.language.toLowerCase();return e.startsWith("ko")?"ko":e.startsWith("ja")?"ja":e.startsWith("zh")?"zh":(e.startsWith("en"),"en")}()),"ko"!==e&&l(e);try{document.documentElement.lang=e}catch{}},[]);let c=(0,n.useCallback)(e=>{l(e);try{localStorage.setItem(i,e)}catch{}try{document.documentElement.lang=e}catch{}},[]),d=(0,n.useCallback)(e=>{let t=r[e];return t?t[s]??t.ko??e:e},[s]);return(0,t.jsx)(o.Provider,{value:{lang:s,setLang:c,t:d},children:e})},"T",0,function({k:e}){let n=s();return(0,t.jsx)(t.Fragment,{children:n(e)})},"useI18n",0,function(){return(0,n.useContext)(o)},"useT",0,s,"weatherKey",0,function(e){return 0===e?"wx.clear":e<=2?"wx.partly":3===e?"wx.cloudy":e>=45&&e<=48?"wx.fog":e>=51&&e<=57?"wx.drizzle":e>=61&&e<=67?"wx.rain":e>=71&&e<=77||e>=85&&e<=86?"wx.snow":e>=80&&e<=82?"wx.showers":e>=95?"wx.thunder":"wx.unknown"},"windKey",0,function(e){return e<2?"wind.calm":e<5?"wind.moderate":e<10?"wind.strong":"wind.verystrong"}])},18566,(e,t,n)=>{t.exports=e.r(76562)},27718,e=>{"use strict";let t="funjeju_anon_id";function n(){let e=localStorage.getItem(t);return e||(e=crypto.randomUUID(),localStorage.setItem(t,e)),e}async function a(e){let t={"Content-Type":"application/json"};if(e)try{t.Authorization=`Bearer ${await e.getIdToken()}`}catch{t["x-anon-id"]=n()}else t["x-anon-id"]=n();return t}e.s(["getAnonId",0,n,"usageHeaders",0,a])},61316,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function({html:e,height:t=null,width:n=null,children:o,dataNtpc:i=""}){return(0,r.useEffect)(()=>{i&&performance.mark("mark_feature_usage",{detail:{feature:`next-third-parties-${i}`}})},[i]),(0,a.jsxs)(a.Fragment,{children:[o,e?(0,a.jsx)("div",{style:{height:null!=t?`${t}px`:"auto",width:null!=n?`${n}px`:"auto"},"data-ntpc":i,dangerouslySetInnerHTML:{__html:e}}):null]})};let a=e.r(43476),r=e.r(71645)},8341,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={cancelIdleCallback:function(){return i},requestIdleCallback:function(){return o}};for(var r in a)Object.defineProperty(n,r,{enumerable:!0,get:a[r]});let o="u">typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},i="u">typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},19083,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={ESCAPE_REGEX:function(){return i},htmlEscapeAttributeString:function(){return d},htmlEscapeJsonString:function(){return c}};for(var r in a)Object.defineProperty(n,r,{enumerable:!0,get:a[r]});let o={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},i=/[&><\u2028\u2029]/g,s={"&":"&amp;",'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;"},l=/[&"'<>]/g;function c(e){return e.replace(i,e=>o[e])}function d(e){return e.replace(l,e=>s[e])}},79520,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={default:function(){return v},handleClientScriptLoad:function(){return x},initScriptLoader:function(){return j}};for(var r in a)Object.defineProperty(n,r,{enumerable:!0,get:a[r]});let o=e.r(55682),i=e.r(90809),s=e.r(43476),l=o._(e.r(74080)),c=i._(e.r(71645)),d=e.r(42732),u=e.r(22737),h=e.r(8341),f=e.r(19083),m=new Map,p=new Set,g=e=>{let{src:t,id:n,onLoad:a=()=>{},onReady:r=null,dangerouslySetInnerHTML:o,children:i="",strategy:s="afterInteractive",onError:c,stylesheets:d}=e,h=n||t;if(h&&p.has(h))return;if(m.has(t)){p.add(h),m.get(t).then(a,c);return}let f=()=>{r&&r(),p.add(h)},g=document.createElement("script"),x=new Promise((e,t)=>
3{g.addEventListener("load",function(t){e(),a&&a.call(this,t),f()}),g.addEventListener("error",function(e){t(e)})}).catch(function(e){c&&c(e)});o?(g.innerHTML=o.__html||"",f()):i?(g.textContent="string"==typeof i?i:Array.isArray(i)?i.join(""):"",f()):t&&(g.src=t,m.set(t,x)),(0,u.setAttributesFromProps)(g,e),"worker"===s&&g.setAttribute("type","text/partytown"),g.setAttribute("data-nscript",s),d&&(e=>{if(l.default.preinit)return e.forEach(e=>{l.default.preinit(e,{as:"style"})});if("u">typeof window){let t=document.head;e.forEach(e=>{let n=document.createElement("link");n.type="text/css",n.rel="stylesheet",n.href=e,t.appendChild(n)})}})(d),document.body.appendChild(g)};function x(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,h.requestIdleCallback)(()=>g(e))}):g(e)}function j(e){e.forEach(x),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");p.add(t)})}function b(e){let{id:t,src:n="",onLoad:a=()=>{},onReady:r=null,strategy:o="afterInteractive",onError:i,stylesheets:u,...m}=e,{updateScripts:x,scripts:j,getIsSsr:b,appDir:v,nonce:y}=(0,c.useContext)(d.HeadManagerContext);y=m.nonce||y;let w=(0,c.useRef)(!1);(0,c.useEffect)(()=>{let e=t||n;w.current||(r&&e&&p.has(e)&&r(),w.current=!0)},[r,t,n]);let k=(0,c.useRef)(!1);if((0,c.useEffect)(()=>{if(!k.current){if("afterInteractive"===o)g(e);else"lazyOnload"===o&&("complete"===document.readyState?(0,h.requestIdleCallback)(()=>g(e)):window.addEventListener("load",()=>{(0,h.requestIdleCallback)(()=>g(e))}));k.current=!0}},[e,o]),("beforeInteractive"===o||"worker"===o)&&(x?(j[o]=(j[o]||[]).concat([{id:t,src:n,onLoad:a,onReady:r,onError:i,...m,nonce:y}]),x(j)):b&&b()?p.add(t||n):b&&!b()&&g({...e,nonce:y})),v){if(u&&u.forEach(e=>{l.default.preinit(e,{as:"style"})}),"beforeInteractive"===o)if(!n)return m.dangerouslySetInnerHTML&&(m.children=m.dangerouslySetInnerHTML.__html,delete m.dangerouslySetInnerHTML),(0,s.jsx)("script",{nonce:y,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,f.htmlEscapeJsonString)(JSON.stringify([0,{...m,id:t}]))})`}});else return l.default.preload(n,m.integrity?{as:"script",integrity:m.integrity,nonce:y,crossOrigin:m.crossOrigin}:{as:"script",nonce:y,crossOrigin:m.crossOrigin}),(0,s.jsx)("script",{nonce:y,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,f.htmlEscapeJsonString)(JSON.stringify([n,{...m,id:t}]))})`}});"afterInteractive"===o&&n&&l.default.preload(n,m.integrity?{as:"script",integrity:m.integrity,nonce:y,crossOrigin:m.crossOrigin}:{as:"script",nonce:y,crossOrigin:m.crossOrigin})}return null}Object.defineProperty(b,"__nextScript",{value:!0});let v=b;("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},3303,(e,t,n)=>{t.exports=e.r(79520)},19598,(e,t,n)=>{"use strict";var a=e.e&&e.e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0}),n.sendGTMEvent=void 0,n.GoogleTagManager=function(e){let{gtmId:t,gtmScriptUrl:n,dataLayerName:a="dataLayer",auth:l,preview:c,dataLayer:d,nonce:u}=e;s=a;let h=new URL(n||"https://www.googletagmanager.com/gtm.js");return t&&h.searchParams.set("id",t),"dataLayer"!==a&&h.searchParams.set("l",a),l&&h.searchParams.set("gtm_auth",l),c&&(h.searchParams.set("gtm_preview",c),h.searchParams.set("gtm_cookies_win","x")),(0,o.useEffect)(()=>{performance.mark("mark_feature_usage",{detail:{feature:"next-third-parties-gtm"}})},[]),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.default,{id:"_next-gtm-init",dangerouslySetInnerHTML:{__html:`
4      (function(w,l){
5        w[l]=w[l]||[];
6        w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});
7        ${d?`w[l].push(${JSON.stringify(d)})`:""}
8      })(window,'${a}');`},nonce:u}),(0,r.jsx)(i.default,{id:"_next-gtm","data-ntpc":"GTM",src:h.href,nonce:u})]})};let r=e.r(43476),o=e.r(71645),i=a(e.r(3303)),s="dataLayer";n.sendGTMEvent=(e,t)=>
8{let n=t||s;window[n]=window[n]||[],window[n].push(e)}},54576,(e,t,n)=>{"use strict";let a;var r=e.e&&e.e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0}),n.GoogleAnalytics=function(e){let{gaId:t,debugMode:n,dataLayerName:r="dataLayer",nonce:l}=e;return void 0===a&&(a=r),(0,i.useEffect)(()=>{performance.mark("mark_feature_usage",{detail:{feature:"next-third-parties-ga"}})},[]),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.default,{id:"_next-ga-init",dangerouslySetInnerHTML:{__html:`
9          window['${r}'] = window['${r}'] || [];
10          function gtag(){window['${r}'].push(arguments);}
11          gtag('js', new Date());
12
13          gtag('config', '${t}' ${n?",{ 'debug_mode': true }":""});`},nonce:l}),(0,o.jsx)(s.default,{id:"_next-ga",src:`https://www.googletagmanager.com/gtag/js?id=${t}`,nonce:l})]})},n.sendGAEvent=function(){void 0===a?console.warn("@next/third-parties: GA has not been initialized"):window[a]?window[a].push(arguments):console.warn(`@next/third-parties: GA dataLayer ${a} does not exist`)};let o=e.r(43476),i=e.r(71645),s=r(e.r(3303))},21638,e=>{"use strict";var t=e.i(43476),n=e.i(18566),a=e.i(22016);let r=[{href:"/",label:"홈",icon:"🏠"},{href:"/cctv",label:"실시간 CCTV",icon:"📷"},{href:"/weather",label:"제주 날씨",icon:"🌡️"},{href:"/feed",label:"라이브 피드",icon:"🖼️"},{href:"/food",label:"도민맛집",icon:"🍽️"},{href:"/jeju-ai",label:"제주여행 AI",icon:"🤖"},{href:"/magazine",label:"제주 매거진",icon:"📖"},{href:"/game/spot",label:"틀린그림찾기",icon:"🔍"},{href:"/youtube",label:"제주tube",icon:"▶️"},{href:"/minihome",label:"미니홈피",icon:"🎈"},{href:"/mypage",label:"마이페이지",icon:"👤"}];var o=e.i(24136),i=e.i(60976),s=e.i(71645),l=e.i(7761);let c={ko:"🇰🇷",en:"🇺🇸",ja:"🇯🇵",zh:"🇨🇳"};function d({compact:e=!1}){let{lang:n,setLang:a}
13=(0,l.useI18n)(),[r,o]=(0,s.useState)(!1),i=(0,s.useRef)(null);return(0,s.useEffect)(()=>{if(!r)return;let e=e=>{i.current&&!i.current.contains(e.target)&&o(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[r]),(0,t.jsxs)("div",{ref:i,className:"relative",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>o(e=>!e),"aria-label":"Language",className:["flex items-center gap-1 rounded-full border border-border-soft bg-bg-secondary text-text-secondary transition-colors hover:border-brand-orange/40",e?"px-2 py-1 text-xs":"w-full justify-center px-3 py-2 text-xs"].join(" "),children:[(0,t.jsx)("span",{children:"🌐"}),(0,t.jsxs)("span",{className:"font-semibold",children:[c[n]," ",e?n.toUpperCase():l.LANG_LABELS[n]]})]}),r&&(0,t.jsx)("div",{className:["absolute z-50 mt-1 min-w-[8rem] overflow-hidden rounded-xl border border-border-soft bg-bg-card shadow-soft",e?"right-0":"left-0 w-full"].join(" "),children:l.LANGS.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>{a(e),o(!1)},className:["flex w-full items-center gap-2 px-3 py-2 text-left text-xs transition-colors hover:bg-bg-secondary",e===n?"font-bold text-brand-orange":"text-text-primary"].join(" "),children:[(0,t.jsx)("span",{children:c[e]}),(0,t.jsx)("span",{children:l.LANG_LABELS[e]}),e===n&&(0,t.jsx)("span",{className:"ml-auto text-brand-orange",children:"✓"})]},e))})]})}function u(){let e=(0,n.usePathname)(),s=(0,n.useRouter)(),{user:c,loading:u,signInWithGoogle:h,logout:f}=(0,o.useAuth)(),m=(0,l.useT)();return(0,t.jsx)("aside",{className:"hidden md:flex md:w-52 md:flex-col md:shrink-0",children:(0,t.jsxs)("div",{className:"sticky top-0 flex h-screen flex-col overflow-y-auto border-r border-border-soft bg-bg-card",children:[(0,t.jsx)("div",{className:"px-5 py-5",children:(0,t.jsxs)(a.default,{href:"/",className:"flex items-center gap-2",children:[(0,t.jsx)(i.DolmangyiIcon,{size:32,className:"shrink-0"}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,t.jsx)("span",{className:"text-xl font-black text-brand-orange",children:"Fun"}),(0,t.jsx)("span",{className:"text-xl font-black text-brand-navy",children:"jeju"})]}),(0,t.jsx)("p",{className:"text-[9px] text-text-secondary leading-none",children:m("app.tagline")})]})]})}),(0,t.jsx)("div",{className:"px-3 pb-3",children:(0,t.jsxs)("button",{type:"button",onClick:()=>s.push("/search"),className:"flex w-full items-center gap-2 rounded-xl border border-border-soft bg-bg-secondary px-3 py-2 text-xs text-text-secondary hover:border-brand-orange/40 transition-colors",children:[(0,t.jsx)("span",{children:"🔍"}),(0,t.jsx)("span",{children:m("search.placeholder")})]})}),(0,t.jsx)("div",{className:"px-3 pb-3",children:(0,t.jsx)(d,{})}),(0,t.jsx)("div",{className:"px-3 pb-3",children:u?(0,t.jsx)("div",{className:"h-9 animate-pulse rounded-xl bg-bg-secondary"}):c?(0,t.jsxs)("div",{className:"flex items-center gap-2 rounded-xl border border-border-soft bg-bg-secondary px-2 py-1.5",children:[(0,t.jsxs)(a.default,{href:"/mypage",className:"flex min-w-0 flex-1 items-center gap-2",children:[(0,t.jsx)("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center overflow-hidden rounded-full bg-brand-orange/20",children:c.photoURL?(0,t.jsx)("img",{src:c.photoURL,alt:"",className:"h-full w-full object-cover"}):(0,t.jsx)("span",{className:"text-[11px] font-bold text-brand-orange",children:(c.displayName??c.email??"U")[0].toUpperCase()})}),(0,t.jsx)("span",{className:"min-w-0 truncate text-[11px] font-semibold text-text-primary",children:c.displayName??c.email})]}),(0,t.jsx)("button",{type:"button",onClick:f,title:"로그아웃",className:"shrink-0 rounded-full p-1 text-text-secondary hover:bg-bg-primary hover:text-live-red transition-colors",children:"⎋"})]}):(0,t.jsxs)("button",{type:"button",onClick:h,className:"flex w-full items-center justify-center gap-2 rounded-xl border border-border-soft bg-bg-card px-3 py-2 text-xs font-semibold text-text-primary shadow-card hover:bg-bg-secondary transition-colors",children:[(0,t.jsxs)("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",children:[(0,t.jsx)("path",{fill:"#4285F4",d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"}),(0,t.jsx)("path",{fill:"#34A853",d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"}),(0,t.jsx)("path",{fill:"#FBBC05",d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"}),(0,t.jsx)("path",{fill:"#EA4335",d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"})]}),m("auth.login")]})}),(0,t.jsx)("nav",{className:"flex-1 space-y-0.5 px-3",children:r.map(n=>{let r;return(0,t.jsxs)(a.default,{href:n.href,className:["flex items-center gap-3 rounded-xl px-3 py-2.5 text-sm font-medium transition-colors",e===(r=n.href)||"/"!==r&&e.startsWith(r)?"bg-brand-orange/10 text-brand-orange font-semibold":"text-text-secondary hover:bg-bg-secondary hover:text-text-primary"].join(" "),children:[(0,t.jsx)("span",{className:"text-base",children:n.icon}),(0,t.jsx)("span",{children:m(`nav.${n.href}`)})]},n.href)})}),(0,t.jsxs)("div",{className:"px-4 py-5 text-center",children:[(0,t.jsx)("div",{className:"mx-auto flex h-16 w-16 items-center justify-center",children:(0,t.jsx)(i.DolmangyiIcon,{size:56})}),(0,t.jsx)("p",{className:"mt-2 text-xs font-medium text-text-primary",children:m("sidebar.greeting")}),(0,t.jsx)("p",{className:"text-[10px] text-text-secondary",children:m("sidebar.docent")}),(0,t.jsx)("p",{className:"text-[10px] text-text-secondary",children:m("sidebar.haveFun")}),(0,t.jsx)(a.default,{href:"/chat",className:"mt-3 block w-full rounded-full border border-border-soft bg-bg-secondary py-1.5 text-center text-[11px] font-medium text-text-secondary hover:bg-bg-primary transition-colors",children:m("sidebar.askDocent")}),(0,t.jsxs)("a",{href:"mailto:[email protected]",className:"mt-3 inline-flex items-center justify-center gap-1 text-[11px] font-medium text-text-secondary hover:text-brand-orange transition-colors",children:[(0,t.jsx)("span",{children:"✉️"})," Contact us"]}),(0,t.jsxs)("div",{className:"mt-4 border-t border-border-soft pt-3 text-left text-[9px] leading-relaxed text-text-secondary",children:[(0,t.jsx)("p",{className:"font-semibold text-text-secondary",children:"(주)펀제주"}),(0,t.jsx)("p",{children:"대표 : 심대훈"}),(0,t.jsx)("p",{children:"사업자등록번호 : 213-86-43462"}),(0,t.jsx)("p",{children:"주소 : 제주특별자치도 ○○ (준비중)"}),(0,t.jsx)("p",{children:"문의 : 010-4434-2483 / [email protected]"}),(0,t.jsx)("p",{className:"mt-2",children:"© 2025 FunJeju. All rights reserved."})]})]})]})})}function h(){let{user:e,loading:n,signInWithGoogle:r,logout:i}=(0,o.useAuth)(),s=(0,l.useT)();return n?(0,t.jsx)("div",{className:"h-8 w-8 animate-pulse rounded-full bg-bg-secondary"}):e?(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(a.default,{href:"/mypage",children:(0,t.jsx)("div",{className:"flex h-8 w-8 items-center justify-center overflow-hidden rounded-full bg-brand-orange/20",children:e.photoURL?(0,t.jsx)("img",{src:e.photoURL,alt:e.displayName??"",className:"h-full w-full object-cover"}):(0,t.jsx)("span",{className:"text-xs font-bold text-brand-orange",children:e.displayName?.[0]??e.email?.[0]??"U"})})}),(0,t.jsx)("button",{type:"button",onClick:i,className:"hidden text-xs text-text-secondary hover:text-text-primary md:block",children:s("auth.logout")})]}):(0,t.jsxs)("button",{type:"button",onClick:r,className:"flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border border-border-soft bg-bg-card px-3 py-1.5 text-xs font-semibold text-text-primary shadow-card hover:bg-bg-secondary transition-colors",children:[(0,t.jsxs)("svg",{className:"h-4 w-4 shrink-0",viewBox:"0 0 24 24",children:[(0,t.jsx)("path",{fill:"#4285F4",d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"}),(0,t.jsx)("path",{fill:"#34A853",d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"}),(0,t.jsx)("path",{fill:"#FBBC05",d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"}),(0,t.jsx)("path",{fill:"#EA4335",d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"})]}),s("auth.loginShort")]})}function f(){let e=(0,n.useRouter)();return(0,t.jsxs)("header",{className:"sticky top-0 z-20 flex h-14 items-center justify-between border-b border-border-soft bg-bg-card/95 px-4 backdrop-blur md:hidden",children:[(0,t.jsxs)(a.default,{href:"/",className:"flex items-center gap-1",children:[(0,t.jsx)(i.DolmangyiIcon,{size:28,className:"shrink-0"}),(0,t.jsx)("span",{className:"text-lg font-black text-brand-orange",children:"Fun"}),(0,t.jsx)("span",{className:"text-lg font-black text-brand-navy",children:"jeju"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("button",{type:"button",onClick:()=>e.push("/search"),className:"p-1 text-text-secondary hover:text-text-primary",children:(0,t.jsx)("span",{className:"text-xl",children:"🔍"})}),(0,t.jsx)(d,{compact:!0}),(0,t.jsx)(h,{})]})]})}let m=[{href:"/",emoji:"🏠"},{href:"/cctv",icon:(0,t.jsx)(function({size:e=24,className:n}){return(0,t.jsxs)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"
13currentColor",className:n,"aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M12.4 11.2l-1.1 2.3 1 1.9-1.6.5-1.2-2.3a1 1 0 0 1 0-.9l1.1-2.3 1.8.8Z"}),(0,t.jsx)("path",{d:"M7.8 16.6a1 1 0 0 1 1-1h.4a1 1 0 0 1 0 2h-.4a1 1 0 0 1-1-1Z"}),(0,t.jsx)("path",{d:"M4.6 8.1l12.5-3a1.3 1.3 0 0 1 1.6 1l.5 2.1a1.3 1.3 0 0 1-1 1.5l-12.5 3a1.3 1.3 0 0 1-1.6-1L3.6 9.6a1.3 1.3 0 0 1 1-1.5Z"}),(0,t.jsx)("path",{d:"M6.2 6.9l11-2.6a1 1 0 0 1 1.2.7l.2.9-12.8 3-.2-.8a1 1 0 0 1 .6-1.2Z",opacity:"0.55"}),(0,t.jsx)("circle",{cx:"6.7",cy:"9.4",r:"1.5",fill:"#fff",opacity:"0.9"})]})},{size:22})},null,{href:"/game/spot",emoji:"🔍"},{href:"/mypage",emoji:"👤"}];function p(){let e=(0,n.usePathname)(),r=(0,l.useT)();return(0,t.jsx)("nav",{className:"fixed inset-x-0 bottom-0 z-30 border-t border-border-soft bg-bg-card/95 pb-safe backdrop-blur md:hidden",children:(0,t.jsx)("div",{className:"flex h-16 items-center justify-around px-2",children:m.map((n,o)=>{let i;if(!n){let n=e.startsWith("/feed"),o=(0,t.jsx)("span",{className:"-mt-5 flex h-14 w-14 items-center justify-center rounded-full bg-brand-orange text-2xl text-white shadow-soft",children:n?"+":"📷"}),i=(0,t.jsx)("span",{className:["text-[10px] font-medium",n?"text-brand-orange font-semibold":"text-text-secondary"].join(" "),children:n?r("tab.feed.upload"):r("tab./feed")});return n?(0,t.jsxs)("button",{type:"button",onClick:()=>window.dispatchEvent(new Event("funjeju:feed-write")),className:"flex flex-col items-center gap-0.5","aria-label":"피드 올리기",children:[o,i]},"feed"):(0,t.jsxs)(a.default,{href:"/feed",className:"flex flex-col items-center gap-0.5","aria-label":"라이브 피드",children:[o,i]},"feed")}let s=e===(i=n.href)||"/"!==i&&e.startsWith(i);return(0,t.jsxs)(a.default,{href:n.href,className:"flex flex-col items-center gap-0.5",children:[(0,t.jsx)("span",{className:["flex h-6 items-center text-xl transition-transform",s?"scale-110 text-brand-orange":"opacity-50"].join(" "),children:n.icon??n.emoji}),(0,t.jsx)("span",{className:["text-[10px] font-medium",s?"text-brand-orange font-semibold":"text-text-secondary"].join(" "),children:r(`tab.${n.href}`)})]},n.href)})})})}function g(){let e=(0,n.usePathname)(),r=(0,l.useT)();return e.startsWith("/chat")||e.startsWith("/admin")||e.startsWith("/biz/")?null:(0,t.jsxs)(a.default,{href:"/chat","aria-label":"도슨트 챗봇 열기",className:"fixed bottom-20 right-4 z-40 flex items-center gap-2 transition-transform active:scale-95 md:bottom-6",children:[(0,t.jsx)("span",{className:"whitespace-nowrap rounded-full bg-white px-3 py-2 text-xs font-bold text-brand-navy shadow-lg ring-1 ring-black/5",children:r("chat.float")}),(0,t.jsx)("span",{className:"flex h-14 w-14 items-center justify-center rounded-full bg-brand-orange shadow-lg ring-2 ring-white/70",children:(0,t.jsx)(i.DolmangyiIcon,{size:40})})]})}var x=e.i(27718);e.s(["AppShell",0,function({children:e}){let a=(0,n.usePathname)();return(!function(){let e=(0,n.usePathname)(),{user:t}=(0,o.useAuth)();(0,s.useEffect)(()=>{!e||e.startsWith("/admin")||fetch("/api/stats/pageview",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e,userId:t?.uid??(0,x.getAnonId)(),userTier:t?.email==="[email protected]"?"admin":t?"free":"anonymous"}),keepalive:!0}).catch(()=>{})},[e,t?.uid])}(),a.startsWith("/admin"))?(0,t.jsx)("div",{className:"min-h-screen bg-bg-primary",children:e}):a.startsWith("/biz/")?(0,t.jsx)(l.LangProvider,{children:e}):(0,t.jsxs)(l.LangProvider,{children:[(0,t.jsxs)("div",{className:"flex min-h-screen",children:[(0,t.jsx)(u,{}),(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,t.jsx)(f,{}),(0,t.jsx)("main",{className:"flex-1 pb-20 md:pb-0",children:e})]})]}),(0,t.jsx)(g,{}),(0,t.jsx)(p,{})]})}],21638)},91838,e=>{"use strict";var t=e.i(43476),n=e.i(3303),a=e.i(18566),r=e.i(71645);let o="";function i(e){let t=window;if(t.wcs&&e!==o){o=e,t.wcs_add||(t.wcs_add={}),t.wcs_add.wa="158f41f64ca9e4";try{t.wcs.inflow?.("funjeju.com")}catch{}try{t.wcs_do?.(t.wcs_add)}catch{}}}e.s(["NaverAnalytics",0,function(){let e=(0,a.usePathname)();return(0,r.useEffect)(()=>{i(e)},[e]),(0,t.jsx)(n.default,{src:"//wcs.pstatic.net/wcslog.js",strategy:"afterInteractive",onLoad:()=>i(window.location.pathname)})}])}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.