{"version":3,"file":"static/chunks/8216-45f4b5950a3f7c14.js","mappings":"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","sources":["webpack://_N_E/../common/utils/cn.ts","webpack://_N_E/../common/utils/assert.ts","webpack://_N_E/../common/utils/cleanClassName.ts","webpack://_N_E/../common/utils/createFormSchema.ts","webpack://_N_E/../common/utils/createUuid.ts","webpack://_N_E/../common/utils/createYupSchemaResolver.ts","webpack://_N_E/../common/utils/format.ts","webpack://_N_E/../common/utils/getOsType.ts","webpack://_N_E/../common/utils/getSubDomain.ts","webpack://_N_E/../common/utils/isCurrentUrl.ts","webpack://_N_E/../common/utils/isDev.tsx","webpack://_N_E/../common/utils/isEnumValue.ts","webpack://_N_E/../common/utils/optimizeImageUrl.ts","webpack://_N_E/../common/utils/regex.ts","webpack://_N_E/../common/utils/socialOAuthUrl.ts","webpack://_N_E/../common/utils/sitemapHash.ts","webpack://_N_E/../common/utils/customEditor.ts","webpack://_N_E/../common/utils/createQueryKeys.ts","webpack://_N_E/../common/utils/index.ts","webpack://_N_E/../common/utils/hasKey.ts","webpack://_N_E/../common/utils/normalizeServerRequest.ts","webpack://_N_E/./src/constants/env.ts","webpack://_N_E/./src/constants/certification.ts","webpack://_N_E/./src/constants/cookies.ts","webpack://_N_E/./src/constants/point.ts","webpack://_N_E/./src/constants/search-params.ts","webpack://_N_E/./src/constants/selector.ts","webpack://_N_E/./src/constants/seo.ts","webpack://_N_E/./src/constants/tabs.ts","webpack://_N_E/./src/constants/index.ts","webpack://_N_E/./src/constants/routes.ts","webpack://_N_E/./src/constants/storage-key.ts","webpack://_N_E/./src/utils/createRoute.ts","webpack://_N_E/./src/utils/findRoute.ts","webpack://_N_E/./src/utils/getMetadata.ts","webpack://_N_E/./src/utils/index.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { CustomError } from '.';\n\nexport function assert(\n condition: unknown,\n error: Error | string = new Error(),\n): asserts condition {\n if (!condition) {\n if (typeof error === 'string') {\n throw new CustomError({ return_message: error });\n } else {\n throw new CustomError();\n }\n }\n}\n","export const cleanClassName = (\n className: string | undefined | null | false,\n) => {\n if (className) {\n return className\n .replace(/(undefined)|(false)|\\n/g, '')\n .replace(/ +(?= )/g, '')\n .replace(/^ */g, '')\n .replace(/ *$/g, '');\n }\n};\n","import * as yup from 'yup';\n\ntype Yup = typeof yup;\n\n/** @deprecated createYupSchemaResolver를 사용해주세요. */\nexport const createFormSchema = (\n factory: (yup: Yup) => {\n [K in keyof TBaseInterface]: any;\n },\n) => yup.object().shape(factory(yup));\n","import { v4, v3 } from 'uuid';\n\nexport const createUuid = (seed?: string) =>\n seed ? v3(seed, '6ba70a63-4f32-3af3-a8ad-12095131c69c') : v4();\n","import { yupResolver } from '@hookform/resolvers/yup';\nimport type { Resolver } from 'react-hook-form';\nimport * as yup from 'yup';\n\ntype Yup = typeof yup;\n\nexport type FormSchemaGuide = Partial<{\n [K in keyof T]: yup.AnySchema;\n}>;\n\nexport const createYupSchemaResolver = (\n factory: (yup: Yup) => { [K in keyof T]: yup.AnySchema },\n) => {\n const customYup = {\n ...yup,\n number: () =>\n yup\n .number()\n .transform((value, originalValue) =>\n originalValue === '' ? undefined : value,\n ),\n };\n\n const schema = yup.object().shape(factory(customYup));\n\n return yupResolver(schema as any) as unknown as Resolver;\n};\n\nexport { yup };\n\nexport const customYup = {\n stringDate: (options?: { onlyPast?: boolean; message?: string }) => {\n const message = options?.message ?? '정상적인 날짜 형식이 아닙니다.';\n\n let checkDate = yup\n .string()\n .required(message)\n .min(8, message)\n .max(10, message)\n .test('is-date', message, (value) => {\n let dateValue = value;\n\n const regex = /^\\d{4}-\\d{2}-\\d{2}$/;\n if (!dateValue.match(regex)) {\n dateValue = `${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)}`;\n if (!dateValue.match(regex)) {\n return false;\n }\n }\n\n const date = new Date(dateValue);\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n\n const parts = dateValue.split('-');\n const yearFromStr = parseInt(parts[0], 10);\n const monthFromStr = parseInt(parts[1], 10);\n const dayFromStr = parseInt(parts[2], 10);\n\n if (\n year !== yearFromStr ||\n month !== monthFromStr ||\n day !== dayFromStr\n ) {\n return false;\n }\n\n if (yearFromStr < 1900) {\n return false;\n }\n\n if (month === 2) {\n //! 윤년 확인\n if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {\n return day <= 29;\n } else {\n return day <= 28;\n }\n } else if ([4, 6, 9, 11].includes(month)) {\n return day <= 30;\n } else {\n return day <= 31;\n }\n });\n\n if (options?.onlyPast) {\n checkDate = checkDate.test(\n 'is-past-or-present',\n '과거의 날짜만 입력할 수 있습니다.',\n (value) => {\n if (!value) return false;\n const inputDate = new Date(\n value.replace(/(\\d{4})(\\d{2})(\\d{2})/, '$1-$2-$3'),\n );\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n return inputDate <= today;\n },\n );\n }\n\n return checkDate;\n },\n stringPhone: (message = '올바른 전화번호를 입력해주세요.') =>\n yup\n .string()\n .min(10, message)\n .max(11, message)\n .test('is-010-prefix', message, (value) => {\n return /^010/.test(value ?? '');\n })\n .test('is-valid-fourth-digit', message, (value) => {\n if (value === undefined) return;\n const fourthDigit = value.charAt(3);\n\n return !['0', '1'].includes(fourthDigit);\n }),\n};\n","interface StorageOptions {\n unit?: 'bytes' | 'KB' | 'MB' | 'GB';\n precision?: number;\n}\n\nexport const format = {\n phone: (phone?: string) => {\n if (phone?.length !== 11) return phone;\n\n return `${phone.slice(0, 3)}-${phone.slice(3, 7)}-${phone.slice(7)}`;\n },\n storage: (\n bytes = 0,\n options: StorageOptions = { unit: 'MB', precision: 2 },\n ) => {\n const kiloBytes = bytes / 1024;\n const megaBytes = bytes / 1048576; // 1024 * 1024\n const gigaBytes = bytes / 1073741824; // 1024 * 1024 * 1024\n\n const { unit = 'MB', precision = 2 } = options;\n\n switch (unit) {\n case 'bytes':\n return `${bytes} bytes`;\n case 'KB':\n return `${kiloBytes.toFixed(precision)}KB`;\n case 'MB':\n return `${megaBytes.toFixed(precision)}MB`;\n case 'GB':\n return `${gigaBytes.toFixed(precision)}GB`;\n default:\n throw new Error('정의하지 않은 단위 유형이에요.');\n }\n },\n number: (num: number) => {\n const units = ['경', '조', '억', '만', ''];\n let remainder = num;\n let result = '';\n\n for (let i = 0; i < units.length; i++) {\n const unitValue = Math.pow(10000, units.length - 1 - i);\n const currentUnit = Math.floor(remainder / unitValue);\n remainder %= unitValue;\n\n if (currentUnit > 0) {\n result += currentUnit.toLocaleString() + units[i] + ' ';\n }\n }\n\n return result.trim() || '0';\n },\n};\n","export const getOsType = () => {\n const { userAgent } = navigator;\n\n return /windows/i.test(userAgent)\n ? 'windows'\n : /android/i.test(userAgent)\n ? 'android'\n : /iPad|iPhone|iPod|ios/.test(userAgent)\n ? 'ios'\n : /Mac/.test(userAgent)\n ? 'mac'\n : null;\n};\n","export const getSubDomain = (value?: string) => {\n const hostname = value ?? location.hostname;\n\n const mainDomain = hostname.split('.').slice(-2).join('.');\n const subDomain = hostname\n .replace(`.${mainDomain}`, '')\n .replace(/^(http:\\/\\/|https:\\/\\/)/, '');\n\n return subDomain || null;\n};\n","interface CheckOptions {\n skipPathname?: boolean;\n skipSearch?: boolean;\n}\n\nexport const isCurrentUrl = (href: string, options?: CheckOptions) => {\n if (typeof window === 'undefined') return false;\n\n const targetUrl = new URL(href, location.origin);\n\n return (\n (options?.skipPathname || targetUrl.pathname === location.pathname) &&\n (options?.skipSearch || targetUrl.search === location.search)\n );\n};\n","export const isDev = process.env.NODE_ENV === 'development';\n","export const isEnumValue = >(\n enumType: TEnum,\n value?: string | null,\n): value is TEnum[keyof TEnum] =>\n value ? Object.values(enumType).includes(value) : false;\n\nexport const isEnumKey = >(\n enumType: TEnum,\n key: string | number | symbol,\n): key is keyof TEnum => Object.keys(enumType).includes(String(key));\n\nexport const isArrayItem = (array: readonly T[], value: any): value is T =>\n array.includes(value);\n\nexport const hasObjectKey = (\n obj: Record | object | unknown,\n key: TKey,\n): obj is Record => {\n return typeof obj === 'object' && obj !== null && key in obj;\n};\n","interface ImageOptimizationOptions {\n format?: 'webp' | 'avif' | 'original';\n width?: number;\n height?: number;\n quality?: number;\n}\n\nexport const optimizeImageUrl = (\n originalUrl?: string,\n options: ImageOptimizationOptions = {},\n) => {\n if (!originalUrl) return '';\n\n try {\n const url = new URL(originalUrl);\n\n if (!url.origin.startsWith('https://cdn.welfarehello')) return originalUrl;\n\n const params = new URLSearchParams(url.search);\n\n const { format = 'webp', width, height, quality = 80 } = options;\n\n if (format !== 'original') params.set('f', format);\n\n if (height) params.set('h', height.toString());\n if (quality) params.set('q', quality.toString());\n\n //* 너비 조절 시 화질 저하\n if (width) params.set('w', width.toString());\n\n url.search = params.toString();\n\n return url.toString();\n } catch (e) {\n console.error(e);\n\n return originalUrl;\n }\n};\n","export const REGEX = {\n EMAIL: /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}$/,\n PHONE: /^01(?:0|1|[6-9])[.-]?(\\\\d{3}|\\\\d{4})[.-]?(\\\\d{4})$/,\n DATE: /^(19[0-9][0-9]|20\\d{2})-(0[0-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/,\n 'YYYY-MM': /^(19[0-9][0-9]|20\\d{2})-(0[0-9]|1[0-2])$/,\n PASSWORD: /^(?=.*[A-Za-z])(?=.*\\d)(?=.*[!@#$%^_])[A-Za-z\\d!@#$%^_]{8,}$/,\n};\n","export type SocialType = 'kakao' | 'naver' | 'google' | 'apple';\n\nconst SOCIAL_OAUTH_URL = {\n kakao: 'https://kauth.kakao.com/oauth/authorize',\n naver: 'https://nid.naver.com/oauth2.0/authorize',\n google: 'https://accounts.google.com/o/oauth2/auth/oauthchooseaccount',\n apple: 'https://appleid.apple.com/auth/authorize',\n} as const;\n\nconst encodeOAuthState = (type: SocialType, redirectPath: string) => {\n const obj = { type, redirectPath };\n const json = JSON.stringify(obj);\n const base64Encoded = btoa(unescape(encodeURIComponent(json)));\n\n return base64Encoded;\n};\n\ninterface CreateOAuthUrlParams {\n /** NEXT_PUBLIC_DOMAIN */\n domain: string | undefined;\n type: SocialType;\n /** NEXT_PUBLIC_{TYPE}_ID */\n clientId: string | undefined;\n scope?: string;\n /** Apple은 응답을 POST로 보내서 API Route에서 받아야 함 */\n appleApiRoutePath?: string;\n /** OAuth 응답을 핸들링할 페이지 */\n redirectPath?: string;\n}\n\n/** 인증 받기위해 들렀다 오는 소셜 로그인 URL 만들어주는 함수 */\nexport const createOAuthUrl = ({\n domain,\n type,\n clientId,\n scope,\n appleApiRoutePath = '/api/auth/apple',\n redirectPath = '/auth',\n}: CreateOAuthUrlParams) => {\n if (!domain || !clientId) throw new Error('domain, clientId 는 필수입니다.');\n\n const url = SOCIAL_OAUTH_URL[type];\n\n const searchParams = new URLSearchParams({\n response_type: 'code',\n client_id: clientId,\n state: encodeOAuthState(type, redirectPath),\n });\n\n if (scope) searchParams.append('scope', scope);\n\n switch (type) {\n case 'apple': {\n searchParams.append(\n 'redirect_uri',\n `${domain.replace('https://', 'https://www.')}${appleApiRoutePath}`,\n );\n searchParams.append('response_mode', 'form_post');\n break;\n }\n\n default: {\n searchParams.append('redirect_uri', `${domain}${redirectPath}`);\n break;\n }\n }\n\n return `${url}?${searchParams.toString()}`;\n};\n","import { createUuid } from './createUuid';\n\nconst monthText = '2024-03';\nconst hash = createUuid(monthText);\n\nexport const sitemapHash = {\n monthText,\n hash,\n};\n","import type { Transaction } from '@tiptap/pm/state';\nimport type { Editor } from '@tiptap/react';\n\nexport const customEditor = {\n getImageUrls: (doc: Transaction['doc'] | Editor['$doc']) => {\n const imageList: string[] = [];\n doc.content.forEach((content) => {\n if (content.type.name === 'image') {\n imageList.push(content.attrs.src);\n }\n });\n\n return imageList;\n },\n};\n","export const createQueryKeys = (\n name: TName,\n keys: [...TKeys],\n) => {\n const result = {} as Record;\n\n keys.forEach((key) => {\n result[key] = `${name}.${key}`;\n });\n\n return result;\n};\n","export * from './cn';\nexport * from './assert';\nexport * from './cleanClassName';\nexport * from './createFormSchema';\nexport * from './createUuid';\nexport * from './createYupSchemaResolver';\nexport * from './format';\nexport * from './getOsType';\nexport * from './getSubDomain';\nexport * from './hasKey';\nexport * from './isCurrentUrl';\nexport * from './isDev';\nexport * from './isEnumValue';\nexport * from './normalizeServerRequest';\nexport * from './optimizeImageUrl';\nexport * from './regex';\nexport * from './socialOAuthUrl';\nexport * from './timeAgo';\nexport * from './sitemapHash';\nexport * from './customNextUrl';\nexport * from './customEditor';\nexport * from './createQueryKeys';\nexport * from './customQueryOption';\n","export const hasKey = (obj: unknown, key: string): boolean => {\n return typeof obj === 'object' && obj !== null && key in obj;\n};\n","import type { CustomRequest } from '../api';\nimport { hasKey } from './hasKey';\n\nexport interface ServerResponse {\n result_code?: number;\n return_code?: number;\n return_message?: string;\n request?: CustomRequest;\n context?: T;\n}\n\nexport enum ERROR_CODE {\n HIDDEN = 20019,\n UNKNOWN_BY_CLIENT = 40000,\n UNKNOWN_REQUEST = 40500,\n NO_REQUEST_FUNCTION = 40400,\n NO_ENV = 40401,\n UNKNOWN_UNAUTHORIZED = 40403,\n UNAUTHORIZED_BY_CLIENT = 40404,\n}\n\nexport const isNormalizedResponse = (res: any): res is ServerResponse =>\n hasKey(res, 'result_code') &&\n hasKey(res, 'return_code') &&\n hasKey(res, 'return_message');\n\nexport class CustomError extends Error {\n status: number;\n return_code: number;\n return_message: string;\n constructor(params?: ServerResponse) {\n super(\n params?.return_message ??\n '일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요.',\n );\n this.return_message = params?.return_message ?? '';\n this.status = params?.result_code ?? 500;\n this.return_code = params?.return_code ?? ERROR_CODE.UNKNOWN_BY_CLIENT;\n this.name = params?.result_code === 200 ? 'Server Error' : 'Client Error';\n\n if (params?.request) {\n this.name = 'Request Error';\n this.cause = JSON.stringify(params.request);\n }\n }\n}\n\nlet errorNum = 0;\n\n//* 서버 요청에 대한 응답을 항상 통일된 형태로 받기 위한 함수\nexport const normalizeServerRequest = <\n TParams extends any[],\n TResponse extends ServerResponse,\n>(\n requestFn: (...args: TParams) => Promise,\n) => {\n if (!requestFn) {\n errorNum += 1;\n throw new CustomError({\n return_message: `변환된 요청함수가 없습니다. (${errorNum})`,\n result_code: 400,\n return_code: ERROR_CODE.NO_REQUEST_FUNCTION,\n });\n }\n\n return async (...args: TParams) => {\n try {\n const res: TResponse = await requestFn(...args);\n\n const { return_code } = res;\n\n //* result_code가 0인 경우에만 정상적인 응답\n if (return_code === 0) return res;\n\n if (return_code) throw new CustomError(res);\n\n throw new CustomError({\n ...res,\n return_message: '잘못된 형식의 응답을 받았습니다.',\n });\n } catch (error) {\n if (error instanceof CustomError) throw error;\n\n if (error instanceof Error) {\n const errorObject: ServerResponse = {\n return_message: error.message,\n result_code: 500,\n return_code: ERROR_CODE.UNKNOWN_REQUEST,\n };\n\n if ('request' in error) {\n errorObject.request = error.request as CustomRequest;\n }\n\n throw new CustomError(errorObject);\n }\n\n throw new CustomError({\n return_code: ERROR_CODE.UNKNOWN_REQUEST,\n });\n }\n };\n};\n\nexport const checkServerResponse = async (res: Response) => {\n if (!res.headers.get('content-type')?.includes('application/json')) return;\n\n const clonedRes = res.clone();\n\n const getRequest = async () => ({\n body: clonedRes.body,\n headers: clonedRes.headers,\n endpoint: clonedRes.url,\n });\n\n try {\n const data = await clonedRes.json();\n\n if (typeof data !== 'object' || !isNormalizedResponse(data)) {\n throw new CustomError({\n request: await getRequest(),\n return_message: '잘못된 형식의 응답을 받았습니다.',\n result_code: 500,\n return_code: ERROR_CODE.UNKNOWN_REQUEST,\n });\n }\n\n if (data.return_code === 0) return;\n\n throw new CustomError(data);\n } catch (e) {\n if (e instanceof CustomError) throw e;\n\n if (e instanceof Error) {\n throw new CustomError({\n request: await getRequest(),\n return_message: e.message,\n result_code: 500,\n return_code: ERROR_CODE.UNKNOWN_REQUEST,\n });\n }\n\n throw new CustomError({\n request: await getRequest(),\n return_code: ERROR_CODE.UNKNOWN_REQUEST,\n });\n }\n};\n","//TODO: 추후 환경변수는 모두 해당 파일에서 관리\n\nexport const PRODUCT_DOMAIN = 'https://welfarehello.com';\n\nconst ENV = {\n NODE_ENV: process.env.NODE_ENV,\n NEXT_PUBLIC_DOMAIN: process.env.NEXT_PUBLIC_DOMAIN as string,\n NEXT_PUBLIC_API_DOMAIN: process.env.NEXT_PUBLIC_API_DOMAIN as string,\n NEXT_PUBLIC_GOOGLE_CLIENT_ID: process.env\n .NEXT_PUBLIC_GOOGLE_CLIENT_ID as string,\n NEXT_PUBLIC_KAKAO_CLIENT_ID: process.env\n .NEXT_PUBLIC_KAKAO_CLIENT_ID as string,\n NEXT_PUBLIC_NAVER_CLIENT_ID: process.env\n .NEXT_PUBLIC_NAVER_CLIENT_ID as string,\n NEXT_PUBLIC_APPLE_CLIENT_ID: process.env\n .NEXT_PUBLIC_APPLE_CLIENT_ID as string,\n NEXT_PUBLIC_JEJU_API_DOMAIN: process.env\n .NEXT_PUBLIC_JEJU_API_DOMAIN as string,\n NEXT_PUBLIC_JEJU_YOUTHDREAM_API_KEY: process.env\n .NEXT_PUBLIC_JEJU_YOUTHDREAM_API_KEY as string,\n NEXT_PUBLIC_DPG_API_DOMAIN: process.env.NEXT_PUBLIC_DPG_API_DOMAIN as string,\n NEXT_PUBLIC_NAVER_CLOUD_CLIENT_ID: process.env\n .NEXT_PUBLIC_NAVER_CLOUD_CLIENT_ID as string,\n NEXT_PUBLIC_MOBILE_OK_URL: process.env.NEXT_PUBLIC_MOBILE_OK_URL as string,\n NEXT_PUBLIC_EZ_IOK_URL: process.env.NEXT_PUBLIC_EZ_IOK_URL as string,\n};\n\nfor (const key in ENV) {\n if (!ENV[key as keyof typeof ENV]) {\n throw new Error(`환경변수 ${key}이 없습니다.`);\n }\n}\n\nconst IS_PRODUCT = ENV.NEXT_PUBLIC_DOMAIN === PRODUCT_DOMAIN;\nconst IS_DEV = ENV.NODE_ENV === 'development';\n\nlet BASE_URL = ENV.NEXT_PUBLIC_DOMAIN;\n\nif (!IS_DEV) {\n BASE_URL = BASE_URL.replace('https://', 'https://www.');\n}\n\nexport { BASE_URL,ENV, IS_DEV, IS_PRODUCT };\n","export const CERTIFICATION_LIST = [\n { id: 'toss', name: '토스', icon: '/assets/pngs/ok/toss.png' },\n {\n id: 'kakaobank',\n name: '카카오뱅크',\n icon: '/assets/pngs/ok/kakaobank.png',\n },\n {\n id: 'banksalad',\n name: '뱅크샐러드',\n icon: '/assets/pngs/ok/banksalad.png',\n },\n {\n id: 'signgate',\n name: '삼성패스',\n icon: '/assets/pngs/ok/signgate.png',\n },\n { id: 'dreamsign', name: '드림인증', icon: '/assets/pngs/ok/dreamsign.png' },\n { id: 'kbstar', name: '국민인증서', icon: '/assets/pngs/ok/kbstar.png' },\n { id: 'shinhan', name: '신한인증서', icon: '/assets/pngs/ok/shinhan.png' },\n { id: 'kebhana', name: '하나인증서', icon: '/assets/pngs/ok/kebhana.png' },\n {\n id: 'mobile-ok',\n name: '휴대폰 본인인증',\n icon: '/assets/pngs/ok/mobile-ok.png',\n },\n] as const;\n\n/** //* 통신사 */\nexport enum MOBILE_AGENCY_TYPE {\n SKT = 'SK',\n KT = 'KT',\n LG = 'LG',\n /** //* 알뜰폰 */\n SKT_THRIFTY = 'SM',\n KT_THRIFTY = 'KM',\n LG_THRIFTY = 'LM',\n}\n\nexport const MOBILE_AGENCY_TYPE_NAME_MAP = {\n [MOBILE_AGENCY_TYPE.SKT]: 'SKT',\n [MOBILE_AGENCY_TYPE.KT]: 'KT',\n [MOBILE_AGENCY_TYPE.LG]: 'LG',\n [MOBILE_AGENCY_TYPE.SKT_THRIFTY]: 'SKT 알뜰폰',\n [MOBILE_AGENCY_TYPE.KT_THRIFTY]: 'KT 알뜰폰',\n [MOBILE_AGENCY_TYPE.LG_THRIFTY]: 'LG U+ 알뜰폰',\n};\n\nexport const MOBILE_AGENCY_LIST = [\n {\n type: MOBILE_AGENCY_TYPE.SKT,\n imageUrl: '/assets/pngs/dlp/seoul/skt-logo.png',\n name: 'SKT',\n },\n {\n type: MOBILE_AGENCY_TYPE.KT,\n imageUrl: '/assets/pngs/dlp/seoul/kt-logo.png',\n name: 'KT',\n },\n {\n type: MOBILE_AGENCY_TYPE.LG,\n imageUrl: '/assets/pngs/dlp/seoul/lg-logo.png',\n name: 'LG U+',\n },\n {\n type: MOBILE_AGENCY_TYPE.SKT_THRIFTY,\n parentName: 'SKT',\n name: '알뜰폰',\n },\n {\n type: MOBILE_AGENCY_TYPE.KT_THRIFTY,\n parentName: 'KT',\n name: '알뜰폰',\n },\n {\n type: MOBILE_AGENCY_TYPE.LG_THRIFTY,\n parentName: 'LG U+',\n name: '알뜰폰',\n },\n];\n","export enum COOKIES_KEYS {\n ACCESS_TOKEN = 'accessToken',\n REFRESH_TOKEN = 'refreshToken',\n\n ORIGIN_HOST = 'hostOrigin',\n LOGIN_PARAMS = 'loginParams',\n\n LOGOUT_OPTIONS = 'logoutOptions',\n}\n\nexport const COOKIE_OPTIONS = {\n domain:\n process.env.NODE_ENV === 'development'\n ? 'localhost'\n : `.${(process.env.NEXT_PUBLIC_DOMAIN ?? '').replace('https://', '')}`,\n path: '/',\n secure: true,\n};\n","export const POINT = {\n MIN_EXCHANGE: 500,\n EXCHANGE_UNIT: 100,\n DAY_MAX_EXCHANGE: 50_000,\n};\n","import type { UNAUTH_API } from '@/api';\n\nexport enum SEARCH_PARAMS {\n ORIGINAL_PATH = 'original-path',\n POST_REDIRECT = 'post-redirect',\n APP_LOGIN_TYPE = 'app-login',\n ACCESS_TOKEN = 'accessToken',\n REFRESH_TOKEN = 'refreshToken',\n /**\n * @description redirect pathname\n */\n REDIRECT = 'redirect',\n /**\n * @description redirect searchParams\n */\n REDIRECT_SEARCH_PARAMS = 'redirectSearchParams',\n VERIFICATION = 'verification',\n ENTER_TYPE = 'enter-type',\n SHARE_BY = 'share-by',\n MEMBER_CODE = 'memberCode',\n POLICY_FILTER = 'policyFilter',\n\n //! 응급생활 관련 파라미터\n SYMPTOM_CODE = 'symptomCode',\n EMERGENCY_ROOM_TIME = 'emergencyRoomTime',\n IS_REAL_DISTANCE = 'isRealDistance',\n RADIUS = 'radius',\n EMERGENCY_ROOM_PARAMS = 'emergencyRoomParams',\n SELECTED_REGION = 'selectedRegion',\n PARENT_COMMENT_ID = 'parentCommentId',\n SORT_TYPE = 'sortType',\n HOME_BOTTOM_DRAWER = 'home-bottom-drawer',\n}\n\nexport namespace SEARCH_PARAMS_TYPE {\n export interface EMERGENCY_ROOM_PARAMS\n extends Omit<\n Parameters[number],\n 'page' | 'size'\n > {\n isRealDistance?: boolean;\n }\n\n export interface SELECTED_REGION {\n mainRegionCode?: string;\n subRegionCode?: string;\n }\n}\n","export enum SELECTOR {\n MAIN_WRAPPER = 'main-wrapper',\n MAIN = 'main',\n PAGE_NAV_WRAPPER = 'page-nav-wrapper',\n VOUCHER_MAP_NAVIGATION = 'voucher-map-navigation',\n VOUCHER_CONTENTS_CONTAINER = 'voucher-contents-container',\n COMMENT_LIST_TOP = 'comment-list-top',\n COMMENT_PREFIX = 'comment-id-',\n GLOBAL_NAVIGATION = 'global-navigation',\n SESSION_PORTAL_CONTENT = 'session-portal-content',\n}\n","import type { Metadata, Viewport } from 'next';\n\nimport { BASE_URL } from './env';\n\nexport const DEFAULT_META = {\n generator: 'Next.js',\n applicationName: '웰로',\n metadataBase: new URL(BASE_URL),\n appLinks: {\n android: {\n package: 'com.wello.welfarehello',\n app_name: '웰로 - 맞춤정책 추천·신청 서비스',\n url: 'https://play.google.com/store/apps/details?id=com.wello.welfarehello',\n },\n ios: {\n app_store_id: 6444814937,\n url: 'https://apps.apple.com/kr/app/%EC%9B%B0%EB%A1%9C-wello-%EB%A7%9E%EC%B6%A4-%EC%A0%95%EC%B1%85-%EC%B6%94%EC%B2%9C-%EC%8B%A0%EC%B2%AD-%EC%84%9C%EB%B9%84%EC%8A%A4/id6444814937',\n app_name: '웰로 Wello - 맞춤 정착 추천 신청 서비스',\n },\n },\n manifest: '/manifest.json',\n keywords: ['웰로', '정책', '취업', '육아', '정부', '보조금', '혜택'],\n title: '웰로 - 5,200만 국민을 위한 개인 맞춤형 정책 추천 서비스',\n authors: [\n {\n name: '주식회사 웰로',\n url: 'https://www.wello.info',\n },\n ],\n publisher: '주식회사 웰로',\n description:\n '내게 딱 맞는 정책을 매일 추천해드려요. ㅡ 청년부터 노년까지, 취업&창업·육아·대출 등 다양한 분야의 보조금·지원금 혜택을 찾아보세요!',\n openGraph: {\n images: 'https://cdn.welfarehello.com/common/ogimg.png',\n title: '웰로 - 5,200만 국민을 위한 개인 맞춤형 정책 추천 서비스',\n siteName: '웰로',\n type: 'website',\n },\n} satisfies Metadata;\n\nexport const DEFAULT_VIEWPORT = {\n width: 'device-width',\n initialScale: 1,\n maximumScale: 1,\n minimumScale: 1,\n userScalable: false,\n themeColor: '#ffffff',\n} satisfies Viewport;\n","export enum MENU_TITLE {\n TARGET = 'TARGET',\n SUPPORT = 'SUPPORT',\n INFO = 'INFO',\n APPLY = 'APPLY',\n}\n\nexport const COMMUNITY_HEADER_ITEMS = {\n welloNews: {\n key: 'welloNews',\n title: '웰로소식',\n pathname: 'welloNews',\n },\n policyInfo: {\n key: 'policyInfo',\n title: '정책소식',\n pathname: 'policyInfo',\n },\n hometownNews: {\n key: 'hometownNews',\n title: '동네소식',\n pathname: 'hometownNews',\n },\n policyTalk: {\n key: 'policyTalk',\n title: '정책수다',\n pathname: 'policyTalk',\n },\n freeTalk: {\n key: 'freeTalk',\n title: '자유수다',\n pathname: 'freeTalk',\n },\n} as const;\n\nexport type CommunityKeys = keyof typeof COMMUNITY_HEADER_ITEMS;\n","import { IS_PRODUCT } from './env';\n\nexport * from './certification';\nexport * from './cookies';\nexport * from './env';\nexport * from './point';\nexport * from './routes';\nexport * from './search-params';\nexport * from './selector';\nexport * from './seo';\nexport * from './storage-key';\nexport * from './tabs';\n\nexport const [GTM_ID, GA_ID] = IS_PRODUCT\n ? ['GTM-WF9XK27', 'G-WKDK663EEQ']\n : ['GTM-NJCCF8P', 'G-7FCSFN8PD7'];\n\nexport enum SUB_DOMAIN {\n WELLO = 'www',\n WELLO_APP = 'app',\n KB_PAY = 'kbpay',\n}\n","import type { ERROR_CODE } from '@common/utils';\n\nimport type {\n COMMENT_SORT_TYPE,\n COMMENT_TYPE,\n DETAIL_POLICY_APPLICATION_TYPE,\n EASY_LOGIN_USAGE_CODE,\n LOGIN_TYPE,\n POLICY_CASE_BABY_CHILD_COUNT,\n POLICY_CASE_TYPE,\n TERM_CATEGORY,\n VERIFICATION_SERVICE_TYPE,\n} from '@/api';\nimport type { DLP_SEOUL_AUTH_STEP } from '@/app/(private)/dlp/seoul/auth/constants';\nimport type { PROXY_TARGET } from '@/pages/api/proxy/[...all]';\nimport type { OsType } from '@/stores/DeviceStore';\nimport type {\n EasyCertificationParams,\n FAMILY_PROFILE_UPDATE_PAGE_TYPE,\n} from '@/types';\nimport { createRoute } from '@/utils';\n\nexport const ROUTES = {\n TEST: createRoute('/test'),\n\n HOME: createRoute('/', {\n hasBottomNav: true,\n }),\n\n LOGIN: createRoute<{\n searchParams: {\n logout?: boolean;\n redirect?: string;\n disableOutlink?: boolean;\n memberCode?: string;\n };\n }>('/login'),\n\n LOGIN_POINT: createRoute('/login/point'),\n\n PEEC_EVENT: createRoute('/event/peec'),\n\n PEEC_APPLY: createRoute('/event/peec/apply'),\n\n AUTH: createRoute<{\n searchParams: {\n 'login-type'?: LOGIN_TYPE;\n 'social-login-token'?: string;\n code?: string;\n state?: string;\n };\n }>('/login/auth'),\n\n COMMUNITY: createRoute('/community', {\n hasBottomNav: true,\n }),\n COMMUNITY_CATEGORY: createRoute<{\n dynamicPath: { category: string; idIdx?: string };\n }>(\n ({ category, idIdx }) =>\n `/community/${category}${idIdx ? `/${idIdx}` : ''}`,\n {\n hasBottomNav: true,\n },\n ),\n WELLO_NEWS_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/community/welloNews/${idIdx}`),\n POLICY_TALK_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/community/policyTalk/${idIdx}`),\n FREE_TALK_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/community/freeTalk/${idIdx}`),\n HOMETOWN_NEWS_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/community/hometownNews/${idIdx}`),\n POLICY_INFO_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/community/policyInfo/${idIdx}`),\n\n POLICY_TALK_POST_EDIT: createRoute<{\n dynamicPath: {\n idx: string;\n };\n }>(({ idx }) => `/community/policyTalk/posting/${idx}`),\n POLICY_TALK_POST_NEW: createRoute<{\n searchParams: {\n code?: string;\n idx?: string;\n detailApplyType?: DETAIL_POLICY_APPLICATION_TYPE;\n };\n }>('/community/policyTalk/posting/new'),\n FREE_TALK_POST_EDIT: createRoute<{\n dynamicPath: {\n idx: string;\n };\n }>(({ idx }) => `/community/freeTalk/posting/${idx}`),\n FREE_TALK_POST_NEW: createRoute('/community/freeTalk/posting/new'),\n\n PROFILE: createRoute('/my-info', {\n hasBottomNav: true,\n }),\n\n PROFILE_SCRAP: createRoute('/my-info/my-scrap', {\n hasBottomNav: true,\n }),\n\n PROFILE_COMMUNITY_POSTED: createRoute('/my-info/my-community/posted', {\n hasBottomNav: true,\n }),\n PROFILE_COMMUNITY_COMMENTED: createRoute('/my-info/my-community/commented', {\n hasBottomNav: true,\n }),\n\n PROFILE_APPLY: createRoute('/my-info/my-apply', {\n hasBottomNav: true,\n }),\n\n PROFILE_APPLY_RECOMMEND_INQUIRY: createRoute(\n '/my-info/my-apply/recommend-inquiry',\n ),\n\n RANDOM_TICKET: createRoute('/my-info/random-ticket', {\n hasBottomNav: false,\n }),\n\n RECOMMEND_POLICY_SITUATION_MAIN: createRoute<{\n dynamicPath: { caseType: POLICY_CASE_TYPE | 'ALL' };\n }>(({ caseType }) => `/recommend-policy/situation/main/${caseType}`),\n\n RECOMMEND_POLICY_SITUATION_BABY_FORM: createRoute(\n '/recommend-policy/situation/baby',\n ),\n\n RECOMMEND_POLICY_SITUATION_BABY_REPORT: createRoute<{\n dynamicPath: {\n subRegionCode: string;\n childCount: POLICY_CASE_BABY_CHILD_COUNT;\n };\n }>(\n ({ subRegionCode, childCount }) =>\n `/recommend-policy/situation/baby/report/${subRegionCode}/${childCount}`,\n ),\n\n RECOMMEND_POLICY_SITUATION_EMERGENCY_FORM: createRoute(\n '/recommend-policy/situation/emergency',\n ),\n RECOMMEND_POLICY_SITUATION_EMERGENCY_HOSPITAL_LIST: createRoute(\n '/recommend-policy/situation/emergency/list',\n ),\n RECOMMEND_POLICY_SITUATION_EMERGENCY_MAP: createRoute(\n '/recommend-policy/situation/emergency/map',\n ),\n RECOMMEND_POLICY_SITUATION_EMERGENCY_DETAIL: createRoute<{\n dynamicPath: { id: number };\n searchParams: {\n symptomCode?: string;\n isEmergency?: boolean;\n };\n }>(({ id }) => `/recommend-policy/situation/emergency/${id}`),\n MEDICAL_POLICY_LIST: createRoute('/recommend-policy/medical'),\n\n PUSH: createRoute('/push'),\n\n PROFILE_EDIT: createRoute<{\n searchParams: {\n redirect?: string;\n };\n }>('/my-info/edit'),\n\n FAMILY_PROFILE: createRoute('/my-info/settings/family'),\n\n FAMILY_PROFILE_UPDATE: createRoute<{\n dynamicPath: {\n updateType: FAMILY_PROFILE_UPDATE_PAGE_TYPE;\n };\n searchParams: {\n familyId?: number;\n };\n }>(({ updateType }) => `/my-info/settings/family/${updateType}`),\n\n FAMILY_FILTER_UPDATE: createRoute<{\n dynamicPath: {\n updateType: FAMILY_PROFILE_UPDATE_PAGE_TYPE;\n };\n searchParams: {\n familyId?: number;\n };\n }>(({ updateType }) => `/my-info/settings/family/${updateType}/filter`),\n\n SEARCH: createRoute<{\n searchParams: {\n /** @description 검색어 */\n q: string;\n };\n }>('/search'),\n\n RECOMMEND_POLICY_LIST: createRoute<{\n searchParams: { familyId?: number };\n }>('/recommend-policy', {\n hasBottomNav: true,\n }),\n\n POLICY_DETAIL: createRoute<{\n dynamicPath: { idIdx: string };\n }>(({ idIdx }) => `/policy/${idIdx}`),\n\n COMMENT_LIST: createRoute<{\n dynamicPath: {\n commentType: COMMENT_TYPE;\n contentId: number;\n commentId: number;\n };\n searchParams: {\n sortType?: COMMENT_SORT_TYPE;\n parentCommentId?: number;\n policyTalkContentIdx?: string;\n };\n }>(\n ({ commentType, contentId, commentId }) =>\n `/comment/${commentType}/${contentId}/${commentId}`,\n ),\n COMMENT_EDIT: createRoute<{\n dynamicPath: { commentId: number };\n }>(({ commentId }) => `/comment/edit/${commentId}`),\n\n POLICY_TALK_COMMENT_NEW: createRoute<{\n dynamicPath: { contentIdx: string };\n }>(\n ({ contentIdx }) =>\n `/community/policyTalk/posting/${contentIdx}/comment/new`,\n ),\n POLICY_TALK_COMMENT_EDIT: createRoute<{\n dynamicPath: { contentIdx: string; commentId: number };\n }>(\n ({ contentIdx, commentId }) =>\n `/community/policyTalk/posting/${contentIdx}/comment/${commentId}`,\n ),\n\n HOMETOWN_NEWS_SEARCH: createRoute('/community/hometownNews/search'),\n\n /**@name 설정 */\n SETTINGS: createRoute('/my-info/settings'),\n\n /**@name 알림설정 */\n NOTIFICATION_SETTINGS: createRoute('/my-info/settings/notifications'),\n\n /**@name 계정연동 */\n ACCOUNT_LINKING: createRoute('/my-info/settings/account-linking'),\n\n /**@name 공지사항*/\n NOTICE: createRoute('/my-info/settings/notice'),\n\n /**@name 공지사항_상세 */\n NOTICE_DETAIL: createRoute<{\n dynamicPath: { id: number };\n }>(({ id }) => `/my-info/settings/notice/${id}`),\n\n /**@name 자주_묻는_질문 */\n FAQ: createRoute('/my-info/settings/faq'),\n\n /**@name 고객_문의 */\n INQUIRY_LIST: createRoute('/my-info/settings/inquiry'),\n\n /**@name 문의_하기 */\n INQUIRY_EDIT: createRoute<{\n searchParams: {\n category?: string;\n };\n }>('/my-info/settings/inquiry/register'),\n\n /**@name 문의_상세 */\n INQUIRY_DETAIL: createRoute<{\n dynamicPath: { id: number };\n }>(({ id }) => `/my-info/settings/inquiry/${id}`),\n\n /**@name 회원탈퇴 */\n RESIGN_MEMBER: createRoute('/my-info/settings/resign-member'),\n\n PICK_POLICY_LIST: createRoute<{ dynamicPath: { id: number } }>(\n ({ id }) => `/pick/${id}`,\n ),\n\n /** @name 맞춤_정책_필터_수정 */\n MY_POLICY_FILTER: createRoute('/my-info/edit/filter'),\n\n /**@name 장학재단 관련 */\n POLICY_KOSAF_APPLY: createRoute('/policy/apply/1'),\n POLICY_REPORT: createRoute('/policy/report'),\n\n POLICY_REPORT_DETAIL: createRoute<{\n searchParams: {\n /** @description 장학재단 신고 내역 상세 */\n report: string;\n reportYear: string;\n reportDate: string;\n };\n }>('/policy/report/detail'),\n\n /**@name 제주도 관련 */\n JEJU_APPLY: createRoute('/jeju/apply'),\n JEJU_REPORT: createRoute('/jeju/report'),\n JEJU_REPORT_DETAIL: createRoute<{\n dynamicPath: { id: number };\n }>(({ id }) => `/jeju/report/${id}`),\n\n POLICY_CONSENT: createRoute('/policy/consent'),\n POLICY_NOTICE: createRoute('/policy/notice'),\n POLICY_NOTICE_DETAIL: createRoute<{\n dynamicPath: { year: number };\n }>(({ year }) => `/policy/notice/${year}`),\n\n CROSS_DOMAIN_AUTH: createRoute<{\n searchParams: {\n accessToken: string;\n refreshToken: string;\n };\n }>('/login/auth/cross-domain'),\n\n CROSS_DOMAIN_CALLBACK: createRoute<{\n searchParams: {\n accessToken: string;\n refreshToken: string;\n redirect?: string;\n redirectSearchParams?: string;\n };\n }>('/login/auth/cross-domain/callback'),\n\n JOIN_COMMON: createRoute<{\n searchParams: {\n step?: number;\n };\n }>('/join/common'),\n\n JOIN_COMPLETE: createRoute('/join/complete'),\n\n JOIN_USER_INFO: createRoute<{\n searchParams: {\n verificationId?: number;\n };\n }>('/join/user-info'),\n\n POLICY_FILTER: createRoute<{\n dynamicPath: { situation: string };\n }>(({ situation }) => `/filter/policy/${situation}`),\n\n INTEREST_POLICY_FILTER: createRoute<{\n dynamicPath: { situation: string };\n }>(({ situation }) => `/filter/policy/interest/${situation}`),\n\n KB_PAY_FILTER: createRoute('/filter/kb-pay'),\n\n TERMS: createRoute<{\n dynamicPath: { terms: TERM_CATEGORY };\n }>(({ terms }) => `/terms/${terms}`),\n\n TERMS_PRIVATE: createRoute<{\n dynamicPath: { terms: TERM_CATEGORY };\n }>(({ terms }) => `/my-info/settings/terms/${terms}`),\n\n EASY_CERTIFICATION: createRoute<{\n searchParams: EasyCertificationParams;\n }>('/easy-certification'),\n EASY_CERTIFICATION_CALLBACK: createRoute<{\n searchParams: EasyCertificationParams & {\n encryptMOKKeyToken?: string;\n serviceType?: string;\n txId?: string;\n usageCode?: EASY_LOGIN_USAGE_CODE;\n };\n }>('/easy-certification/callback'),\n\n ERROR: createRoute<{\n dynamicPath: { code: ERROR_CODE };\n }>(({ code }) => `/error/${code}`),\n\n NICE_CERTIFICATION: createRoute('/easy-certification/nice'),\n NICE_RESULT: createRoute<{\n dynamicPath: {\n result: 'pending' | 'success' | 'fail';\n };\n }>(({ result }) => `/easy-certification/nice/${result}`),\n /** default request categoryId: 0 */\n VOUCHER_CATEGORY: createRoute<{\n dynamicPath: {\n categoryId: number;\n };\n }>(({ categoryId }) => `/voucher/${categoryId}`, {\n hasBottomNav: true,\n }),\n VOUCHER_MAIN: createRoute(`/voucher/main`, {\n hasBottomNav: true,\n }),\n VOUCHER_MAIN_NOTICE: createRoute(`/voucher/main/notice`),\n VOUCHER_PRODUCT_INTRODUCE: createRoute<{\n dynamicPath: {\n categoryId: number;\n };\n }>(({ categoryId }) => `/voucher/introduce/${categoryId}`),\n VOUCHER_DETAIL: createRoute<{\n dynamicPath: {\n voucherId: string;\n };\n }>(({ voucherId }) => `/voucher/detail/${voucherId}`),\n VOUCHER_INVITE: createRoute('/voucher/invite'),\n VOUCHER_MY_WAITING: createRoute('/voucher/my-waiting'),\n VOUCHER_QNA: createRoute<{\n dynamicPath: {\n categoryId: number;\n };\n searchParams?: {\n subcategory?: number;\n };\n }>(({ categoryId }) => `/voucher/qna/${categoryId}`),\n VOUCHER_QNA_DETAIL: createRoute<{\n dynamicPath: {\n categoryId: number;\n idx: string;\n };\n }>(({ categoryId, idx }) => `/voucher/qna/${categoryId}/${idx}`),\n VOUCHER_QNA_POSTING: createRoute<{\n dynamicPath: {\n categoryId: number;\n idx: string;\n };\n searchParams?: {\n subcategory?: number;\n };\n }>(({ categoryId, idx }) => `/voucher/qna/${categoryId}/${idx}/posting`),\n /** default request categoryId: 0 */\n VOUCHER_DESCRIPTION_SERVICE_CATEGORY: createRoute<{\n dynamicPath: {\n categoryId: number;\n };\n }>(({ categoryId }) => `/voucher/description/service/${categoryId}`),\n VOUCHER_DESCRIPTION_CARD: createRoute('/voucher/description/card'),\n VOUCHER_LIST: createRoute<{\n dynamicPath: { category: number };\n }>(({ category }) => `/voucher/list/${category}`),\n VOUCHER_MAP: createRoute<{\n searchParams: { category: number };\n }>('/voucher/map', {\n toastDirection: 'top',\n }),\n /** default request categoryId: 0 */\n VOUCHER_ONLINE_CATEGORY: createRoute<{\n dynamicPath: { category: number };\n }>(({ category }) => `/voucher/online/${category}`),\n CHILD_CARE_SERVICE_VOUCHER: createRoute('/voucher/child-care-service'),\n NATIONAL_HAPPINESS_CARD_VOUCHER_ONLINE: createRoute(\n '/voucher/national-happiness-card/online',\n ),\n NATIONAL_HAPPINESS_CARD_VOUCHER_OFFLINE: createRoute(\n '/voucher/national-happiness-card/offline',\n ),\n CONTENT_COMPLIANCE_INFORMATION: createRoute(\n '/content-compliance-information',\n ),\n WELLPER_INTRODUCTION: createRoute('/wellper/introduction'),\n WELLPER_APPLY: createRoute('/wellper/apply'),\n WELLPER_VERIFY_PHONE: createRoute('/wellper/verify-phone'),\n WELLPER_DOCUMENTS_UPLOAD: createRoute('/wellper/documents-upload'),\n WELLPER_DOCUMENTS_UPLOAD_INPUT: createRoute(\n '/wellper/documents-upload-input',\n ),\n WELLPER_APPLICATION_COMPLETED: createRoute('/wellper/application-completed'),\n POINTS: createRoute('/points'),\n POINTS_OVERVIEW: createRoute('/points/overview'),\n POINTS_FORM: createRoute('/points/form'),\n POINTS_WITHDRAWAL_SUCCESS: createRoute('/points/withdrawal-success'),\n /** 친구 초대 */\n POINTS_INVITE: createRoute('/points/invite'),\n /** 매일 출석 체크 */\n ATTENDANCE_DAILY_CHECK: createRoute('/attendance/daily-check'),\n\n CARD: createRoute('/card'),\n REWARD: createRoute('/card/reward'),\n CARD_BENEFIT: createRoute('/card/benefit'),\n CARD_INVITE: createRoute('/card/invite'),\n CARD_UPLOAD: createRoute<{\n searchParams: { cardName: string; memberCardId: number };\n }>('/card/upload'),\n\n K_PASS_APPLY: createRoute('/card/k-pass/apply'),\n HAPPINESS_CARD_APPLY: createRoute('/card/happiness/apply'),\n CEO_CARD_APPLY: createRoute('/card/ceo/apply'),\n\n K_PASS_BENEFIT: createRoute('/card/k-pass/benefit'),\n HAPPINESS_CARD_BENEFIT: createRoute('/card/happiness/benefit'),\n\n BENEFIT_NOTIFICATION: createRoute<{\n searchParams: {\n retry?: 'true';\n };\n }>('/benefit-notification'),\n BENEFIT_NOTIFICATION_AGREEMENT: createRoute(\n '/benefit-notification/agreement',\n ),\n BENEFIT_NOTIFICATION_CALLBACK: createRoute<{\n searchParams: {\n svcSeq: string;\n grpSeq: string;\n fixesGuidanceRequstSeq: string;\n };\n }>('/benefit-notification/callback'),\n\n /** DLP 서울 */\n DLP_SEOUL_AUTH: createRoute<{\n searchParams: {\n redirect?: string;\n };\n }>('/dlp/seoul/auth'),\n DLP_SEOUL_AUTH_TERMS_PRIVACY: createRoute('/dlp/seoul/auth/terms-privacy'),\n DLP_SEOUL_AUTH_CHECK_VERIFICATION: createRoute(\n '/dlp/seoul/auth/check-verification',\n ),\n DLP_SEOUL_AUTH_CHANGE_PASSWORD_NOTICE: createRoute(\n '/dlp/seoul/auth/change-password-notice',\n ),\n DLP_SEOUL_AUTH_CHECK_MY_VERIFICATION_INFO: createRoute<{\n searchParams: {\n redirectAnotherStep?: DLP_SEOUL_AUTH_STEP;\n };\n }>('/dlp/seoul/auth/check-my-verification-info'),\n DLP_SEOUL_AUTH_SELECT_MOBILE_AGENCY: createRoute<{\n searchParams: {\n redirectAnotherStep?: DLP_SEOUL_AUTH_STEP;\n };\n }>('/dlp/seoul/auth/select-mobile-agency'),\n DLP_SEOUL_AUTH_CHECK_SEOUL_MEMBER: createRoute(\n '/dlp/seoul/auth/check-seoul-member',\n ),\n DLP_SEOUL_AUTH_NEED_VERIFICATION: createRoute(\n '/dlp/seoul/auth/need-verification',\n ),\n DLP_SEOUL_AUTH_NEED_SIGNUP_NOTICE: createRoute(\n '/dlp/seoul/auth/need-signup-notice',\n ),\n DLP_SEOUL_AUTH_TERMS_AGREEMENT: createRoute(\n '/dlp/seoul/auth/terms-agreement',\n ),\n DLP_SEOUL_AUTH_SIGNUP_FORM: createRoute('/dlp/seoul/auth/signup-form'),\n DLP_SEOUL_AUTH_ALREADY_SIGNUP_NOTICE: createRoute(\n '/dlp/seoul/auth/already-signup-notice',\n ),\n DLP_SEOUL_AUTH_AUTO_LOGIN_ACTIVE: createRoute(\n '/dlp/seoul/auth/auto-login-active',\n ),\n DLP_SEOUL_AUTH_CHANGE_PASSWORD_INPUT_AUTH_NUMBER: createRoute(\n '/dlp/seoul/auth/change-password-input-auth-number',\n ),\n DLP_SEOUL_AUTH_CHANGE_PASSWORD_FORM: createRoute(\n '/dlp/seoul/auth/change-password-form',\n ),\n DLP_SEOUL_AUTH_COMPLETE: createRoute('/dlp/seoul/auth/complete'),\n DLP_SEOUL_APPLY_CLTR_PASS_TERMS: createRoute(\n '/dlp/seoul/apply/cltr-pass/terms',\n ),\n DLP_SEOUL_APPLY_CLTR_PASS_FORM: createRoute(\n '/dlp/seoul/apply/cltr-pass/form',\n ),\n DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_TERMS: createRoute(\n '/dlp/seoul/apply/loan-crdt-rcvr/terms',\n ),\n DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_FORM: createRoute(\n '/dlp/seoul/apply/loan-crdt-rcvr/form',\n ),\n DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_TERMS: createRoute(\n '/dlp/seoul/apply/islt-youth-sprt/terms',\n ),\n DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_FORM: createRoute(\n '/dlp/seoul/apply/islt-youth-sprt/form',\n ),\n DLP_SEOUL_APPLY_COMPLETE: createRoute('/dlp/seoul/apply/complete'),\n DLP_SEOUL_REPORT: createRoute<{\n searchParams: {\n detailType: DETAIL_POLICY_APPLICATION_TYPE;\n };\n }>('/dlp/seoul/report'),\n /** DLP 경기도 */\n DLP_GYEONGGI_AUTH: createRoute<{\n searchParams: {\n redirect?: string;\n };\n }>('/dlp/gyeonggi/auth'),\n DLP_GYEONGGI_AUTH_WELLO_TERMS: createRoute('/dlp/gyeonggi/auth/wello-terms'),\n DLP_GYEONGGI_AUTH_MOVE_NOTIFICATION: createRoute(\n '/dlp/gyeonggi/auth/move-notification',\n ),\n DLP_GYEONGGI_AUTH_LOGIN: createRoute('/dlp/gyeonggi/auth/login'),\n DLP_GYEONGGI_AUTH_GYEONGGI_TERMS: createRoute(\n '/dlp/gyeonggi/auth/gyeonggi-terms',\n ),\n DLP_GYEONGGI_AUTH_NEED_VERIFICATION: createRoute(\n '/dlp/gyeonggi/auth/need-verification',\n ),\n DLP_GYEONGGI_AUTH_CHECK_MY_VERIFICATION_INFO: createRoute(\n '/dlp/gyeonggi/auth/check-my-verification-info',\n ),\n DLP_GYEONGGI_AUTH_SELECT_MOBILE_AGENCY: createRoute(\n '/dlp/gyeonggi/auth/select-mobile-agency',\n ),\n DLP_GYEONGGI_AUTH_CERTIFICATION: createRoute(\n '/dlp/gyeonggi/auth/certification',\n ),\n DLP_GYEONGGI_AUTH_SIGNUP: createRoute('/dlp/gyeonggi/auth/signup'),\n DLP_GYEONGGI_AUTH_COMPLETE: createRoute('/dlp/gyeonggi/auth/complete'),\n DLP_REVIEW: createRoute<{\n searchParams: {\n detailApplyType: DETAIL_POLICY_APPLICATION_TYPE;\n };\n }>('/dlp/review'),\n\n INSPECTION: createRoute<{\n searchParams: {\n redirect?: string;\n };\n }>('/inspection'),\n} as const;\n\nexport const API_ROUTES = {\n NAVER_AUTH: createRoute('/api/auth/naver'),\n GOOGLE_AUTH: createRoute('/api/auth/google'),\n APPLE_AUTH: createRoute('/api/auth/apple'),\n APPLE_TOKEN: createRoute('/api/auth/apple/token'),\n REDIRECT: createRoute('/api/redirect'),\n MOBILE_OK_REQUEST: createRoute<{\n searchParams: EasyCertificationParams & {\n usageCode: EASY_LOGIN_USAGE_CODE;\n };\n }>('/api/mobile-ok'),\n MOBILE_OK_CALLBACK: createRoute<{\n searchParams: EasyCertificationParams & {\n usageCode: EASY_LOGIN_USAGE_CODE;\n txId: string;\n serviceType: VERIFICATION_SERVICE_TYPE;\n };\n }>('/api/mobile-ok/callback'),\n IOK_REQUEST: createRoute<{\n searchParams: EasyCertificationParams & {\n usageCode: EASY_LOGIN_USAGE_CODE;\n authProviderCode: string;\n };\n }>('/api/iok'),\n IOK_CALLBACK: createRoute<{\n searchParams: EasyCertificationParams & {\n usageCode: EASY_LOGIN_USAGE_CODE;\n txId: string;\n serviceType: VERIFICATION_SERVICE_TYPE;\n };\n }>('/api/iok/callback'),\n JEJU_APP_API: createRoute('/api/jeju-app'),\n DOWNLOAD_APP: createRoute('/api/download-app'),\n PROXY: createRoute<{\n dynamicPath: { endpoint: keyof typeof PROXY_TARGET };\n }>(({ endpoint }) => `/api/proxy/${endpoint}`),\n\n BENEFIT_NOTIFICATION: createRoute<{\n dynamicPath: { dynamicPath: string };\n searchParams?: {\n svcSeq?: string;\n grpSeq?: string;\n fixesGuidanceRequstSeq?: string;\n osType?: OsType;\n accessToken: string | null;\n refreshToken: string | null;\n isWelloApp?: boolean;\n };\n }>(({ dynamicPath }) => `/api/benefit-notification/${dynamicPath}`),\n} as const;\n\nexport const MODULE_ROUTES = {\n KB_HOME: createRoute('/kb-home', {\n hasBottomNav: true,\n }),\n};\n","export enum STORAGE_KEY {\n SEARCH_HISTORY = 'searchHistory',\n EASY_CERTIFICATION = 'easyCertification',\n KOSAF_PROCESS = 'kosafProcess',\n JEJU_YOUTHDREAM = 'jejuYouthdream',\n NICE_FORM_VALUES = 'niceFormValues',\n LOGOUT_TOAST = 'logoutToast',\n POLICY_FILTER_LANDING = 'policyFilterLanding',\n POLICY_FILTER_LANDING_FROM = 'policyFilterFrom',\n POLICY_FILTER = 'policyFilter',\n HOMETOWN_NEWS_DETAIL_BOTTOM_DRAWER_PATH = 'hometownNewsDetailBottomDrawerPath',\n IS_NOT_SEE_AGAIN_VOUCHER_RECOMMEND = 'isNotSeeAgainVoucherRecommend',\n VOUCHER_MAIN_SCROLL = 'voucherMainScroll',\n VOUCHER_DETAIL_SCROLL = 'voucherDetailScroll',\n MY_INFO_PROFILE_SCRAP_ACTIVE_TAB = 'myInfoProfileScrapActiveTab',\n /** 회원 가입시 어떤 사용자가 추천했는지를 구분할 수 있는 코드 */\n MEMBER_CODE = 'memberCode',\n /** 웰퍼 신청 프로세스 중에 임시로 저장해 놓는 정책 분야 태그들 */\n WELLPER_APPLY_POLICY_TEMP_VALUES = 'wellperApplyPolicyTempValues',\n //* DLP 서울특별시\n DLP_SEOUL_AUTH_POLICY_ID_IDX = 'dlpSeoulAuthPolicyIdIdx',\n DLP_SEOUL_AUTH_DETAIL_APPLY_TYPE = 'dlpSeoulAuthDetailApplyType',\n DLP_SEOUL_AUTH_STEP = 'dlpSeoulAuthStep',\n DLP_SEOUL_AUTH_VERIFICATION_INFO = 'dlpSeoulAuthVerificationInfo',\n DLP_SEOUL_AUTH_SESSION_ID = 'dlpSeoulAuthSessionId',\n DLP_SEOUL_AUTH_USER_ID = 'dlpSeoulAuthUserId',\n DLP_SEOUL_AUTH_USER_ID_MASKING = 'dlpSeoulAuthUserIdMasking',\n DLP_SEOUL_AUTH_REDIRECT = 'dlpSeoulAuthRedirect',\n DLP_SEOUL_LOGIN_SESSION_ID = 'dlpSeoulLoginSessionId',\n DLP_SEOUL_ISLT_YOUTH_SPRT_FORM = 'dlpSeoulIsltYouthSprtForm',\n //* DLP 경기도\n DLP_GYEONGGI_AUTH_STEP = 'dlpGyeonggiAuthStep',\n DLP_GYEONGGI_AUTH_LOGIN_REDIRECT = 'dlpGyeonggiAuthLoginRedirect',\n DLP_GYEONGGI_AUTH_VERIFICATION_INFO = 'dlpGyeonggiAuthVerificationInfo',\n DLP_GYEONGGI_AUTH_SESSION_ID = 'dlpGyeonggiAuthSessionId',\n DLP_GYEONGGI_LOGIN_SESSION_ID = 'dlpGyeonggiLoginSessionId',\n\n /** history 관련 정보 */\n HISTORY = 'history',\n HISTORY_EXPIRE = 'historyExpire',\n HISTORY_INDEX = 'historyIndex',\n REPLACE_MARK = 'replaceMark',\n}\n\nexport namespace STORAGE_TYPE {\n export type HISTORY = [number, string][];\n}\n","interface RouteOptions {\n hasBottomNav?: boolean;\n toastDirection?: 'top' | 'bottom';\n}\n\ntype DynamicParams = Record;\n\nlet routeId = 0;\n\nexport const createRoute = <\n TDynamicParams extends {\n dynamicPath?: DynamicParams;\n searchParams?: DynamicParams;\n } = {\n dynamicPath: undefined;\n searchParams: undefined;\n },\n>(\n pathname: TDynamicParams['dynamicPath'] extends DynamicParams\n ? (dynamicPath: TDynamicParams['dynamicPath']) => string\n : string,\n options?: RouteOptions,\n) => {\n routeId += 1;\n\n return Object.freeze({\n id: routeId,\n pathname,\n withSearchParams: (dynamicParams: TDynamicParams) => {\n const params = dynamicParams.searchParams ?? {};\n const searchParams = new URLSearchParams();\n\n for (const key in params) {\n const value = params[key];\n\n if (value === undefined) continue;\n\n searchParams.append(key, String(value));\n }\n\n const search = searchParams.toString();\n\n const _pathname =\n typeof pathname === 'function'\n ? pathname(dynamicParams.dynamicPath ?? {})\n : pathname;\n\n return `${_pathname}${search ? `?${search}` : ''}`;\n },\n hasBottomNav: options?.hasBottomNav ?? false,\n toastDirection: options?.toastDirection ?? 'bottom',\n } as const);\n};\n","import { MODULE_ROUTES,ROUTES } from '@/constants';\n\nexport const findRoute = (pathname: string | null) => {\n if (!pathname) return;\n\n const allRoutes = { ...ROUTES, ...MODULE_ROUTES };\n\n let matchedRoute: {\n name?: keyof typeof allRoutes;\n point: number;\n } = {\n point: 0,\n };\n\n for (const key in allRoutes) {\n const routeName = key as keyof typeof allRoutes;\n\n const route = allRoutes[routeName];\n\n if (typeof route.pathname === 'string') {\n if (route.pathname === pathname) {\n return route;\n }\n } else {\n const splitedRoutePathname = route.pathname({} as any).split('/');\n const splitedCurrentPathname = pathname.split('/');\n\n if (splitedRoutePathname.length !== splitedCurrentPathname.length)\n continue;\n\n let matchPoint = 0;\n\n const isAllSame = splitedCurrentPathname.every((path, index) => {\n const partOfRoutePathname = splitedRoutePathname[index];\n\n //! 동적 경로인 경우 더 일치도가 높은 라우트를 설정\n\n if (partOfRoutePathname === 'undefined') {\n matchPoint += 1;\n\n return true;\n }\n\n if (path === partOfRoutePathname) {\n matchPoint += 2;\n\n return true;\n }\n\n return false;\n });\n\n if (isAllSame && matchedRoute.point < matchPoint) {\n matchedRoute = {\n name: routeName,\n point: matchPoint,\n };\n }\n }\n }\n\n if (matchedRoute.name) return allRoutes[matchedRoute.name];\n};\n","import type { Metadata } from 'next';\n\nimport { DEFAULT_META } from '@/constants';\n\ninterface GetMetadataProps {\n title?: string;\n description?: string;\n keywords?: string[];\n canonical?: string;\n images?: string;\n name?: string;\n url?: string;\n type?: string;\n}\n\n/**\n * 기본 SEO 메타데이터에 추가된 값만 변경해주는 함수\n */\nexport const getMetadata = ({\n title,\n description,\n keywords,\n images,\n name,\n canonical,\n url,\n type,\n}: GetMetadataProps): Metadata => {\n return {\n ...DEFAULT_META,\n\n ...(title && { title }),\n ...(description && { description }),\n ...(keywords && { keywords }),\n ...(canonical && {\n alternates: {\n canonical,\n },\n }),\n openGraph: {\n ...DEFAULT_META.openGraph,\n ...(title && { title }),\n ...(images && { images }),\n ...(description && { description }),\n ...(type && { type }),\n ...(url && { url }),\n },\n authors: name\n ? [\n {\n name,\n url: DEFAULT_META.authors[0].url,\n },\n ]\n : DEFAULT_META.authors,\n };\n};\n","export * from './createRoute';\nexport * from './findRoute';\nexport * from './getMetadata';\n"],"names":["cn","_len","arguments","length","inputs","_key","twMerge","clsx","assert","condition","error","CustomError","return_message","cleanClassName","className","replace","createUuid","seed","v3","v4","createYupSchemaResolver","customYup","yup","number","transform","value","originalValue","undefined","schema","shape","factory","yupResolver","stringDate","options","message","checkDate","required","min","max","test","dateValue","regex","match","substring","concat","date","Date","year","getFullYear","month","getMonth","day","getDate","parts","split","yearFromStr","parseInt","monthFromStr","dayFromStr","includes","onlyPast","inputDate","today","setHours","stringPhone","charAt","format","phone","slice","storage","bytes","unit","precision","kiloBytes","toFixed","megaBytes","gigaBytes","units","remainder","num","result","i","unitValue","Math","pow","currentUnit","floor","toLocaleString","trim","getOsType","userAgent","navigator","getSubDomain","hostname","location","mainDomain","join","subDomain","isCurrentUrl","href","targetUrl","URL","origin","skipPathname","pathname","skipSearch","search","isDev","process","isEnumValue","enumType","Object","values","isArrayItem","array","hasObjectKey","obj","key","optimizeImageUrl","originalUrl","url","startsWith","params","URLSearchParams","width","height","quality","set","toString","e","console","SOCIAL_OAUTH_URL","kakao","naver","google","apple","encodeOAuthState","type","redirectPath","btoa","unescape","encodeURIComponent","JSON","stringify","createOAuthUrl","domain","clientId","scope","appleApiRoutePath","param","searchParams","response_type","client_id","state","append","monthText","hash","sitemapHash","customEditor","getImageUrls","imageList","doc","content","forEach","name","push","attrs","src","createQueryKeys","keys","ERROR_CODE","hasKey","isNormalizedResponse","res","Error","constructor","status","result_code","return_code","request","cause","errorNum","normalizeServerRequest","requestFn","args","errorObject","checkServerResponse","headers","get","clonedRes","clone","getRequest","body","endpoint","data","json","ENV","NODE_ENV","NEXT_PUBLIC_DOMAIN","NEXT_PUBLIC_API_DOMAIN","NEXT_PUBLIC_GOOGLE_CLIENT_ID","NEXT_PUBLIC_KAKAO_CLIENT_ID","NEXT_PUBLIC_NAVER_CLIENT_ID","NEXT_PUBLIC_APPLE_CLIENT_ID","NEXT_PUBLIC_JEJU_API_DOMAIN","NEXT_PUBLIC_JEJU_YOUTHDREAM_API_KEY","NEXT_PUBLIC_DPG_API_DOMAIN","NEXT_PUBLIC_NAVER_CLOUD_CLIENT_ID","NEXT_PUBLIC_MOBILE_OK_URL","NEXT_PUBLIC_EZ_IOK_URL","IS_PRODUCT","IS_DEV","BASE_URL","CERTIFICATION_LIST","id","icon","MOBILE_AGENCY_TYPE","MOBILE_AGENCY_TYPE_NAME_MAP","MOBILE_AGENCY_LIST","imageUrl","parentName","COOKIES_KEYS","COOKIE_OPTIONS","path","secure","POINT","MIN_EXCHANGE","EXCHANGE_UNIT","DAY_MAX_EXCHANGE","SEARCH_PARAMS","SELECTOR","MENU_TITLE","SUB_DOMAIN","DEFAULT_META","generator","applicationName","metadataBase","appLinks","android","package","app_name","ios","app_store_id","manifest","keywords","title","authors","publisher","description","openGraph","images","siteName","COMMUNITY_HEADER_ITEMS","welloNews","policyInfo","hometownNews","policyTalk","freeTalk","GTM_ID","GA_ID","ROUTES","TEST","createRoute","HOME","hasBottomNav","LOGIN","LOGIN_POINT","PEEC_EVENT","PEEC_APPLY","AUTH","COMMUNITY","COMMUNITY_CATEGORY","category","idIdx","WELLO_NEWS_DETAIL","POLICY_TALK_DETAIL","FREE_TALK_DETAIL","HOMETOWN_NEWS_DETAIL","POLICY_INFO_DETAIL","POLICY_TALK_POST_EDIT","idx","POLICY_TALK_POST_NEW","FREE_TALK_POST_EDIT","FREE_TALK_POST_NEW","PROFILE","PROFILE_SCRAP","PROFILE_COMMUNITY_POSTED","PROFILE_COMMUNITY_COMMENTED","PROFILE_APPLY","PROFILE_APPLY_RECOMMEND_INQUIRY","RANDOM_TICKET","RECOMMEND_POLICY_SITUATION_MAIN","caseType","RECOMMEND_POLICY_SITUATION_BABY_FORM","RECOMMEND_POLICY_SITUATION_BABY_REPORT","subRegionCode","childCount","RECOMMEND_POLICY_SITUATION_EMERGENCY_FORM","RECOMMEND_POLICY_SITUATION_EMERGENCY_HOSPITAL_LIST","RECOMMEND_POLICY_SITUATION_EMERGENCY_MAP","RECOMMEND_POLICY_SITUATION_EMERGENCY_DETAIL","MEDICAL_POLICY_LIST","PUSH","PROFILE_EDIT","FAMILY_PROFILE","FAMILY_PROFILE_UPDATE","updateType","FAMILY_FILTER_UPDATE","SEARCH","RECOMMEND_POLICY_LIST","POLICY_DETAIL","COMMENT_LIST","commentType","contentId","commentId","COMMENT_EDIT","POLICY_TALK_COMMENT_NEW","contentIdx","POLICY_TALK_COMMENT_EDIT","HOMETOWN_NEWS_SEARCH","SETTINGS","NOTIFICATION_SETTINGS","ACCOUNT_LINKING","NOTICE","NOTICE_DETAIL","FAQ","INQUIRY_LIST","INQUIRY_EDIT","INQUIRY_DETAIL","RESIGN_MEMBER","PICK_POLICY_LIST","MY_POLICY_FILTER","POLICY_KOSAF_APPLY","POLICY_REPORT","POLICY_REPORT_DETAIL","JEJU_APPLY","JEJU_REPORT","JEJU_REPORT_DETAIL","POLICY_CONSENT","POLICY_NOTICE","POLICY_NOTICE_DETAIL","CROSS_DOMAIN_AUTH","CROSS_DOMAIN_CALLBACK","JOIN_COMMON","JOIN_COMPLETE","JOIN_USER_INFO","POLICY_FILTER","situation","INTEREST_POLICY_FILTER","KB_PAY_FILTER","TERMS","terms","TERMS_PRIVATE","EASY_CERTIFICATION","EASY_CERTIFICATION_CALLBACK","ERROR","code","NICE_CERTIFICATION","NICE_RESULT","VOUCHER_CATEGORY","categoryId","VOUCHER_MAIN","VOUCHER_MAIN_NOTICE","VOUCHER_PRODUCT_INTRODUCE","VOUCHER_DETAIL","voucherId","VOUCHER_INVITE","VOUCHER_MY_WAITING","VOUCHER_QNA","VOUCHER_QNA_DETAIL","VOUCHER_QNA_POSTING","VOUCHER_DESCRIPTION_SERVICE_CATEGORY","VOUCHER_DESCRIPTION_CARD","VOUCHER_LIST","VOUCHER_MAP","toastDirection","VOUCHER_ONLINE_CATEGORY","CHILD_CARE_SERVICE_VOUCHER","NATIONAL_HAPPINESS_CARD_VOUCHER_ONLINE","NATIONAL_HAPPINESS_CARD_VOUCHER_OFFLINE","CONTENT_COMPLIANCE_INFORMATION","WELLPER_INTRODUCTION","WELLPER_APPLY","WELLPER_VERIFY_PHONE","WELLPER_DOCUMENTS_UPLOAD","WELLPER_DOCUMENTS_UPLOAD_INPUT","WELLPER_APPLICATION_COMPLETED","POINTS","POINTS_OVERVIEW","POINTS_FORM","POINTS_WITHDRAWAL_SUCCESS","POINTS_INVITE","ATTENDANCE_DAILY_CHECK","CARD","REWARD","CARD_BENEFIT","CARD_INVITE","CARD_UPLOAD","K_PASS_APPLY","HAPPINESS_CARD_APPLY","CEO_CARD_APPLY","K_PASS_BENEFIT","HAPPINESS_CARD_BENEFIT","BENEFIT_NOTIFICATION","BENEFIT_NOTIFICATION_AGREEMENT","BENEFIT_NOTIFICATION_CALLBACK","DLP_SEOUL_AUTH","DLP_SEOUL_AUTH_TERMS_PRIVACY","DLP_SEOUL_AUTH_CHECK_VERIFICATION","DLP_SEOUL_AUTH_CHANGE_PASSWORD_NOTICE","DLP_SEOUL_AUTH_CHECK_MY_VERIFICATION_INFO","DLP_SEOUL_AUTH_SELECT_MOBILE_AGENCY","DLP_SEOUL_AUTH_CHECK_SEOUL_MEMBER","DLP_SEOUL_AUTH_NEED_VERIFICATION","DLP_SEOUL_AUTH_NEED_SIGNUP_NOTICE","DLP_SEOUL_AUTH_TERMS_AGREEMENT","DLP_SEOUL_AUTH_SIGNUP_FORM","DLP_SEOUL_AUTH_ALREADY_SIGNUP_NOTICE","DLP_SEOUL_AUTH_AUTO_LOGIN_ACTIVE","DLP_SEOUL_AUTH_CHANGE_PASSWORD_INPUT_AUTH_NUMBER","DLP_SEOUL_AUTH_CHANGE_PASSWORD_FORM","DLP_SEOUL_AUTH_COMPLETE","DLP_SEOUL_APPLY_CLTR_PASS_TERMS","DLP_SEOUL_APPLY_CLTR_PASS_FORM","DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_TERMS","DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_FORM","DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_TERMS","DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_FORM","DLP_SEOUL_APPLY_COMPLETE","DLP_SEOUL_REPORT","DLP_GYEONGGI_AUTH","DLP_GYEONGGI_AUTH_WELLO_TERMS","DLP_GYEONGGI_AUTH_MOVE_NOTIFICATION","DLP_GYEONGGI_AUTH_LOGIN","DLP_GYEONGGI_AUTH_GYEONGGI_TERMS","DLP_GYEONGGI_AUTH_NEED_VERIFICATION","DLP_GYEONGGI_AUTH_CHECK_MY_VERIFICATION_INFO","DLP_GYEONGGI_AUTH_SELECT_MOBILE_AGENCY","DLP_GYEONGGI_AUTH_CERTIFICATION","DLP_GYEONGGI_AUTH_SIGNUP","DLP_GYEONGGI_AUTH_COMPLETE","DLP_REVIEW","INSPECTION","API_ROUTES","NAVER_AUTH","GOOGLE_AUTH","APPLE_AUTH","APPLE_TOKEN","REDIRECT","MOBILE_OK_REQUEST","MOBILE_OK_CALLBACK","IOK_REQUEST","IOK_CALLBACK","JEJU_APP_API","DOWNLOAD_APP","PROXY","dynamicPath","MODULE_ROUTES","KB_HOME","STORAGE_KEY","routeId","freeze","withSearchParams","dynamicParams","String","_pathname","findRoute","allRoutes","matchedRoute","point","route","splitedRoutePathname","splitedCurrentPathname","matchPoint","every","index","partOfRoutePathname"],"sourceRoot":""}