@ihabdevteam/core 0.337.0 → 0.339.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +127 -0
- package/README.md +1 -1
- package/dist/components.cjs.js +183 -183
- package/dist/components.esm.css +2 -2
- package/dist/hooks.cjs.js +3 -3
- package/dist/i18n.cjs.js +1 -1
- package/dist/ihabdevteam-core.cjs.js +188 -188
- package/dist/ihabdevteam-core.d.ts +97 -8
- package/dist/logo/Logo_APEB_en.svg +1 -0
- package/dist/logo/Logo_APEB_en_mono.svg +1 -0
- package/dist/logo/Logo_APEB_ko.svg +1 -0
- package/dist/logo/Logo_APEB_ko_mono.svg +1 -0
- package/dist/logo/Logo_HTP_en.svg +1 -0
- package/dist/logo/Logo_HTP_en_mono.svg +1 -0
- package/dist/logo/Logo_HTP_ko.svg +1 -0
- package/dist/logo/Logo_HTP_ko_mono.svg +1 -0
- package/dist/logo/Logo_IHAB_en.svg +1 -18
- package/dist/logo/Logo_IHAB_en_mono.svg +1 -0
- package/dist/logo/Logo_IHAB_ko.svg +1 -0
- package/dist/logo/Logo_IHAB_ko_mono.svg +1 -0
- package/dist/logo/Logo_SL_en.svg +1 -0
- package/dist/logo/Logo_SL_en_mono.svg +1 -0
- package/dist/logo/Logo_SL_ko.svg +1 -0
- package/dist/logo/Logo_SL_ko_mono.svg +1 -0
- package/dist/logo/Logo_SpeechEarManager_en.svg +1 -0
- package/dist/logo/Logo_SpeechEarManager_en_mono.svg +1 -0
- package/dist/logo/Logo_SpeechEarManager_ko.svg +1 -0
- package/dist/logo/Logo_SpeechEarManager_ko_mono.svg +1 -0
- package/dist/logo/Logo_SpeechEar_en.svg +1 -0
- package/dist/logo/Logo_SpeechEar_en_mono.svg +1 -0
- package/dist/logo/Logo_SpeechEar_ko.svg +1 -0
- package/dist/logo/Logo_SpeechEar_ko_mono.svg +1 -0
- package/dist/logo/Logo_VRSL_en.svg +1 -0
- package/dist/logo/Logo_VRSL_en_mono.svg +1 -0
- package/dist/logo/Logo_VRSL_ko.svg +1 -0
- package/dist/logo/Logo_VRSL_ko_mono.svg +1 -0
- package/dist/logo/Symbol_APEB.svg +1 -34
- package/dist/logo/Symbol_APEB_mono.svg +1 -0
- package/dist/logo/Symbol_HTP.svg +1 -14
- package/dist/logo/Symbol_HTP_mono.svg +1 -0
- package/dist/logo/Symbol_IHAB.svg +1 -14
- package/dist/logo/Symbol_IHAB_mono.svg +1 -0
- package/dist/logo/Symbol_SL.svg +1 -0
- package/dist/logo/Symbol_SL_mono.svg +1 -0
- package/dist/logo/Symbol_SpeechEar.svg +1 -0
- package/dist/logo/Symbol_SpeechEar_mono.svg +1 -0
- package/dist/logo/Symbol_VRSL.svg +1 -0
- package/dist/logo/Symbol_VRSL_mono.svg +1 -0
- package/dist/packages/core/src/components/BrandLogo.css +48 -0
- package/dist/packages/core/src/components/BrandLogo.d.ts +76 -0
- package/dist/packages/core/src/components/BrandLogo.js +28 -0
- package/dist/packages/core/src/components/Header.js +6 -6
- package/dist/packages/core/src/components/PassCard/PassCard.js +27 -22
- package/dist/packages/core/src/components/PassCard/PassCardBgIHAB.css +5 -3
- package/dist/packages/core/src/components/PassCard/PassCardBgIHAB.js +1 -1
- package/dist/packages/core/src/components/PassCard/PassCardBgLeftColorGrid.js +2 -2
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundLine.js +1 -1
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundLineV1.js +3 -3
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundMove.js +8 -3
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundMoveV1.js +10 -5
- package/dist/packages/core/src/components/PassCard/PassCardBgTalk.js +1 -1
- package/dist/packages/core/src/components/PassCard/PassCardBgTalkV1.js +1 -1
- package/dist/packages/core/src/components/PassCard/PassCardBgTheme.d.ts +7 -4
- package/dist/packages/core/src/components/PassCard/PassCardBgTwoCircle.js +2 -2
- package/dist/packages/core/src/components/PassCard/ihabOutlinePath.d.ts +15 -9
- package/dist/packages/core/src/components/PassCard/ihabOutlinePath.js +15 -16
- package/dist/packages/core/src/components/Table.js +6 -2
- package/dist/packages/core/src/components/Training/TrainingWordCard.css +14 -1
- package/dist/packages/core/src/components/Training/TrainingWordCard.js +7 -3
- package/dist/packages/core/src/components/WordTable.css +11 -6
- package/dist/packages/core/src/components/WordTable.js +1 -1
- package/dist/packages/core/src/components.d.ts +2 -0
- package/dist/packages/core/src/components.js +4 -0
- package/dist/packages/core/src/hooks/useInlineSvg.d.ts +34 -0
- package/dist/packages/core/src/hooks/useInlineSvg.js +133 -0
- package/dist/packages/core/src/hooks.d.ts +1 -0
- package/dist/packages/core/src/hooks.js +2 -0
- package/dist/packages/core/src/logo/Logo_APEB_en.svg +1 -0
- package/dist/packages/core/src/logo/Logo_APEB_en_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_APEB_ko.svg +1 -0
- package/dist/packages/core/src/logo/Logo_APEB_ko_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_HTP_en.svg +1 -0
- package/dist/packages/core/src/logo/Logo_HTP_en_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_HTP_ko.svg +1 -0
- package/dist/packages/core/src/logo/Logo_HTP_ko_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_IHAB_en.svg +1 -18
- package/dist/packages/core/src/logo/Logo_IHAB_en_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_IHAB_ko.svg +1 -0
- package/dist/packages/core/src/logo/Logo_IHAB_ko_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SL_en.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SL_en_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SL_ko.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SL_ko_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SpeechEarManager_en.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SpeechEarManager_en_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SpeechEarManager_ko.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SpeechEarManager_ko_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SpeechEar_en.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SpeechEar_en_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SpeechEar_ko.svg +1 -0
- package/dist/packages/core/src/logo/Logo_SpeechEar_ko_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_VRSL_en.svg +1 -0
- package/dist/packages/core/src/logo/Logo_VRSL_en_mono.svg +1 -0
- package/dist/packages/core/src/logo/Logo_VRSL_ko.svg +1 -0
- package/dist/packages/core/src/logo/Logo_VRSL_ko_mono.svg +1 -0
- package/dist/packages/core/src/logo/Symbol_APEB.svg +1 -34
- package/dist/packages/core/src/logo/Symbol_APEB_mono.svg +1 -0
- package/dist/packages/core/src/logo/Symbol_HTP.svg +1 -14
- package/dist/packages/core/src/logo/Symbol_HTP_mono.svg +1 -0
- package/dist/packages/core/src/logo/Symbol_IHAB.svg +1 -14
- package/dist/packages/core/src/logo/Symbol_IHAB_mono.svg +1 -0
- package/dist/packages/core/src/logo/Symbol_SL.svg +1 -0
- package/dist/packages/core/src/logo/Symbol_SL_mono.svg +1 -0
- package/dist/packages/core/src/logo/Symbol_SpeechEar.svg +1 -0
- package/dist/packages/core/src/logo/Symbol_SpeechEar_mono.svg +1 -0
- package/dist/packages/core/src/logo/Symbol_VRSL.svg +1 -0
- package/dist/packages/core/src/logo/Symbol_VRSL_mono.svg +1 -0
- package/dist/packages/core/src/utils/assets.d.ts +3 -3
- package/dist/packages/core/src/utils/assets.js +3 -3
- package/dist/packages/core/src/version.d.ts +1 -1
- package/dist/packages/core/src/version.js +1 -1
- package/dist/utils.cjs.js +1 -1
- package/package.json +1 -1
- package/dist/logo/Logo_APEB.svg +0 -53
- package/dist/logo/Logo_APEB_black.svg +0 -42
- package/dist/logo/Logo_APEB_white.svg +0 -42
- package/dist/logo/Logo_HTP_kr.svg +0 -21
- package/dist/logo/Logo_HTP_kr_black.svg +0 -17
- package/dist/logo/Logo_HTP_kr_white.svg +0 -17
- package/dist/logo/Logo_IHAB_en_black.svg +0 -14
- package/dist/logo/Logo_IHAB_en_white.svg +0 -14
- package/dist/logo/Logo_IHAB_kr.svg +0 -18
- package/dist/logo/Logo_IHAB_kr_black.svg +0 -14
- package/dist/logo/Logo_IHAB_kr_white.svg +0 -14
- package/dist/logo/Logo_SDS_kr.svg +0 -22
- package/dist/logo/Logo_SDS_kr_black.svg +0 -18
- package/dist/logo/Logo_SDS_kr_white.svg +0 -18
- package/dist/logo/Logo_speechearManager_kr.svg +0 -20
- package/dist/logo/Logo_speechearManager_kr_black.svg +0 -21
- package/dist/logo/Logo_speechearManager_kr_textWhite.svg +0 -45
- package/dist/logo/Logo_speechearManager_kr_white.svg +0 -21
- package/dist/logo/Logo_speechear_kr.svg +0 -17
- package/dist/logo/Logo_speechear_kr_black.svg +0 -16
- package/dist/logo/Logo_speechear_kr_textWhite.svg +0 -42
- package/dist/logo/Logo_speechear_kr_white.svg +0 -16
- package/dist/logo/Symbol_APEB_black.svg +0 -15
- package/dist/logo/Symbol_APEB_white.svg +0 -15
- package/dist/logo/Symbol_HTP_black.svg +0 -10
- package/dist/logo/Symbol_HTP_white.svg +0 -10
- package/dist/logo/Symbol_IHAB_black.svg +0 -10
- package/dist/logo/Symbol_IHAB_white.svg +0 -10
- package/dist/logo/Symbol_SDS.svg +0 -14
- package/dist/logo/Symbol_SDS_black.svg +0 -10
- package/dist/logo/Symbol_SDS_white.svg +0 -10
- package/dist/logo/Symbol_speechear.svg +0 -15
- package/dist/logo/Symbol_speechear_black.svg +0 -16
- package/dist/logo/Symbol_speechear_white.svg +0 -16
- package/dist/packages/core/src/logo/Logo_APEB.svg +0 -53
- package/dist/packages/core/src/logo/Logo_APEB_black.svg +0 -42
- package/dist/packages/core/src/logo/Logo_APEB_white.svg +0 -42
- package/dist/packages/core/src/logo/Logo_HTP_kr.svg +0 -21
- package/dist/packages/core/src/logo/Logo_HTP_kr_black.svg +0 -17
- package/dist/packages/core/src/logo/Logo_HTP_kr_white.svg +0 -17
- package/dist/packages/core/src/logo/Logo_IHAB_en_black.svg +0 -14
- package/dist/packages/core/src/logo/Logo_IHAB_en_white.svg +0 -14
- package/dist/packages/core/src/logo/Logo_IHAB_kr.svg +0 -18
- package/dist/packages/core/src/logo/Logo_IHAB_kr_black.svg +0 -14
- package/dist/packages/core/src/logo/Logo_IHAB_kr_white.svg +0 -14
- package/dist/packages/core/src/logo/Logo_SDS_kr.svg +0 -22
- package/dist/packages/core/src/logo/Logo_SDS_kr_black.svg +0 -18
- package/dist/packages/core/src/logo/Logo_SDS_kr_white.svg +0 -18
- package/dist/packages/core/src/logo/Logo_speechearManager_kr.svg +0 -20
- package/dist/packages/core/src/logo/Logo_speechearManager_kr_black.svg +0 -21
- package/dist/packages/core/src/logo/Logo_speechearManager_kr_textWhite.svg +0 -45
- package/dist/packages/core/src/logo/Logo_speechearManager_kr_white.svg +0 -21
- package/dist/packages/core/src/logo/Logo_speechear_kr.svg +0 -17
- package/dist/packages/core/src/logo/Logo_speechear_kr_black.svg +0 -16
- package/dist/packages/core/src/logo/Logo_speechear_kr_textWhite.svg +0 -42
- package/dist/packages/core/src/logo/Logo_speechear_kr_white.svg +0 -16
- package/dist/packages/core/src/logo/Symbol_APEB_black.svg +0 -15
- package/dist/packages/core/src/logo/Symbol_APEB_white.svg +0 -15
- package/dist/packages/core/src/logo/Symbol_HTP_black.svg +0 -10
- package/dist/packages/core/src/logo/Symbol_HTP_white.svg +0 -10
- package/dist/packages/core/src/logo/Symbol_IHAB_black.svg +0 -10
- package/dist/packages/core/src/logo/Symbol_IHAB_white.svg +0 -10
- package/dist/packages/core/src/logo/Symbol_SDS.svg +0 -14
- package/dist/packages/core/src/logo/Symbol_SDS_black.svg +0 -10
- package/dist/packages/core/src/logo/Symbol_SDS_white.svg +0 -10
- package/dist/packages/core/src/logo/Symbol_speechear.svg +0 -15
- package/dist/packages/core/src/logo/Symbol_speechear_black.svg +0 -16
- package/dist/packages/core/src/logo/Symbol_speechear_white.svg +0 -16
package/dist/hooks.cjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var s=require("react"),se=require("react-i18next"),re=require("i18next"),Dt=typeof document<"u"?document.currentScript:null;function Ho(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if(n!=="default"){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var mn=Ho(s);function Go({storageKey:e="fontScale",baseFont:t=20,minScale:n=.8,maxScale:o=1.4,step:r=.1,lineHeightRatio:a=1.4}={}){const u=w=>Math.max(n,Math.min(o,Number(w))),i=w=>{try{const E=localStorage.getItem(w),T=E?Number(E):1;return Number.isFinite(T)?u(T):u(1)}catch{return u(1)}},[l,c]=s.useState(()=>i(e)),[g,d]=s.useState(e);g!==e&&(d(e),c(i(e))),s.useEffect(()=>{try{localStorage.setItem(e,String(l))}catch{}},[e,l]);const C=w=>{c(typeof w=="function"?E=>u(w(E)):u(w))},f=()=>C(w=>+(w+r).toFixed(6)),m=()=>C(w=>+(w-r).toFixed(6)),S=l<o-Number.EPSILON,h=l>n+Number.EPSILON,p=Math.round(t*l),y=Math.round(p*a);return{scale:l,setScale:C,increase:f,decrease:m,canIncrease:S,canDecrease:h,fontSize:p,lineHeight:y}}const pn=s.createContext(null);function Vo(e){return/max-width:\s*7[0-9][0-9]px/.test(e)}const hn=e=>typeof window>"u"||!window.matchMedia?!1:window.matchMedia(e).matches;function Wo(e){const t=s.useCallback(n=>{if(typeof window>"u"||!window.matchMedia)return()=>{};const o=window.matchMedia(e);return o.addEventListener?o.addEventListener("change",n):o.addListener&&o.addListener(n),()=>{o.removeEventListener?o.removeEventListener("change",n):o.removeListener&&o.removeListener(n)}},[e]);return mn.useSyncExternalStore(t,()=>hn(e),()=>!1)}function Yo(e){const[t,n]=s.useState(hn(e));return s.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const o=window.matchMedia(e),r=u=>n(u.matches),a=o;return a.addEventListener?a.addEventListener("change",r):a.addListener&&a.addListener(r),n(o.matches),()=>{a.removeEventListener?a.removeEventListener("change",r):a.removeListener&&a.removeListener(r)}},[e]),t}const Ko=typeof mn.useSyncExternalStore=="function"?Wo:Yo;function Uo(e){const t=s.useContext(pn),n=Ko(e);return t&&typeof t.mobile=="boolean"&&Vo(e)?t.mobile:n}function yn(e){const t=s.useRef(e);return s.useEffect(()=>{t.current=e}),t}function bn(e,t){const n=yn(t);s.useEffect(()=>{const o=()=>n.current();try{window.addEventListener(e,o)}catch{}return()=>{try{window.removeEventListener(e,o)}catch{}}},[e,n])}const Nt=" \xB7 ",Sn=(()=>{if(typeof document>"u")return"";const e=document.title;return e.includes(Nt)?e.split(Nt).pop()??e:e})(),wn=s.createContext(!1),be=[];let En=null;function zo(e){const t=s.useContext(wn);s.useEffect(()=>{if(t||typeof e!="string"||!e)return;be.length===0&&(En=document.title);const n={text:Sn?`${e}${Nt}${Sn}`:e};return be.push(n),document.title=n.text,()=>{const o=be.lastIndexOf(n);o>=0&&be.splice(o,1),document.title=be.length?be[be.length-1].text:En??document.title}},[e,t])}const qo=/^(\d{4}-\d{2}-\d{2})[T ](\d{2}:\d{2})(?::(\d{2})(?:\.(\d+))?)?$/;function Jo(e){let t;if(e instanceof Date)t=e;else if(typeof e=="string"){const n=e.trim(),o=qo.exec(n);t=new Date(o?`${o[1]}T${o[2]}:${o[3]??"00"}${o[4]?`.${o[4].slice(0,3).padEnd(3,"0")}`:""}+09:00`:n)}else t=new Date(e);return Number.isNaN(t.getTime())?null:t}function Oe(){return Re(new Date)}function Re(e){if(e==null||e==="")return"";const t=Jo(e);return t?new Intl.DateTimeFormat("fr-CA",{timeZone:"Asia/Seoul"}).format(t):""}function Qo(e,t){const[n,o,r]=e.split("-").map(Number),[a,u,i]=t.split("-").map(Number);return Math.round((Date.UTC(a,u-1,i)-Date.UTC(n,o-1,r))/864e5)}function Zo(){const{t:e}=se.useTranslation();return s.useCallback(t=>{if(!t)return"";const n=Re(t);if(!n)return"";const o=Qo(n,Oe());return o<=0?e("myHomework.relativeDay.today","\uC624\uB298"):o===1?e("myHomework.relativeDay.yesterday","\uC5B4\uC81C"):e("myHomework.relativeDay.daysAgo",{n:o})},[e])}const Xo=()=>{const e="\uC54C \uC218 \uC5C6\uB294 \uC624\uB958",t=typeof re?.t=="function"?re.t("common.unknownError",{defaultValue:e}):void 0;return typeof t=="string"&&t?t:e};function er(e,t){if(t===void 0&&(t=Xo()),e instanceof Error)return e.message||t;if(typeof e=="string")return e||t;if(e&&typeof e=="object"){const n=e;for(const o of[n.message,n.error_description,n.error])if(typeof o=="string"&&o)return o}return t}function tr(e){const{t}=se.useTranslation(),[n,o]=s.useState({current:"",next:"",confirm:""}),[r,a]=s.useState(null),[u,i]=s.useState(!1),l=s.useRef(null),c=s.useRef(!1);s.useEffect(()=>()=>{l.current!==null&&clearTimeout(l.current)},[]);const g=s.useCallback(()=>{o({current:"",next:"",confirm:""}),a(null)},[]),d=s.useCallback(async()=>{if(c.current)return;if(!n.current){a({type:"error",text:t("account.security.password.currentRequired","\uD604\uC7AC \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.")});return}if(!n.next){a({type:"error",text:t("account.security.password.newRequired","\uC0C8 \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.")});return}if(n.next!==n.confirm){a({type:"error",text:t("account.security.password.mismatch","\uC0C8 \uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.")});return}i(!0),c.current=!0;let C;try{C=e?await e(n.current,n.next):null}catch(f){C=er(f)}finally{c.current=!1,i(!1)}if(C){a({type:"error",text:C});return}a({type:"success",text:t("account.security.password.changed","\uBE44\uBC00\uBC88\uD638\uAC00 \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.")}),o({current:"",next:"",confirm:""}),l.current!==null&&clearTimeout(l.current),l.current=setTimeout(()=>a(null),1500)},[n,e,t]);return{pw:n,setPw:o,pwMsg:r,setPwMsg:a,pwLoading:u,handleChangePw:d,reset:g}}const nr={\u3131:"\u3131",\u3132:"\u3131",\u314B:"\u3131",\u3133:"\u3131",\u313A:"\u3131",\u3134:"\u3134",\u3135:"\u3134",\u3136:"\u3134",\u3137:"\u3137",\u3145:"\u3137",\u3146:"\u3137",\u3148:"\u3137",\u314A:"\u3137",\u314C:"\u3137",\u314E:"\u3137",\u3139:"\u3139",\u313C:"\u3139",\u313D:"\u3139",\u313E:"\u3139",\u3140:"\u3139",\u3141:"\u3141",\u313B:"\u3141",\u3142:"\u3142",\u314D:"\u3142",\u313F:"\u3142",\u3144:"\u3142",\u3147:"\u3147"},Tt={\u314F:{nucleus:"\u314F"},\u3151:{glide:"j",nucleus:"\u314F"},\u3153:{nucleus:"\u3153"},\u3155:{glide:"j",nucleus:"\u3153"},\u3157:{nucleus:"\u3157"},\u315B:{glide:"j",nucleus:"\u3157"},\u315C:{nucleus:"\u315C"},\u3160:{glide:"j",nucleus:"\u315C"},\u3161:{nucleus:"\u3161"},\u3163:{nucleus:"\u3163"},\u3150:{nucleus:"\u3154/\u3150"},\u3152:{glide:"j",nucleus:"\u3154/\u3150"},\u3154:{nucleus:"\u3154/\u3150"},\u3156:{glide:"j",nucleus:"\u3154/\u3150"},\u3158:{glide:"w",nucleus:"\u314F"},\u3159:{glide:"w",nucleus:"\u3154/\u3150"},\u315A:{glide:"w",nucleus:"\u3154/\u3150"},\u315D:{glide:"w",nucleus:"\u3153"},\u315E:{glide:"w",nucleus:"\u3154/\u3150"},\u315F:{glide:"w",nucleus:"\u3163"},\u3162:{glide:"\u0270",nucleus:"\u3163"}};function or(e,t){return(Tt[e]?.glide??"")!==(Tt[t]?.glide??"")}function Pe(e){return nr[e]??e}const Q=["\u3131","\u3132","\u3134","\u3137","\u3138","\u3139","\u3141","\u3142","\u3143","\u3145","\u3146","\u3147","\u3148","\u3149","\u314A","\u314B","\u314C","\u314D","\u314E"],te=["\u314F","\u3150","\u3151","\u3152","\u3153","\u3154","\u3155","\u3156","\u3157","\u3158","\u3159","\u315A","\u315B","\u315C","\u315D","\u315E","\u315F","\u3160","\u3161","\u3162","\u3163"],oe=["","\u3131","\u3132","\u3133","\u3134","\u3135","\u3136","\u3137","\u3139","\u313A","\u313B","\u313C","\u313D","\u313E","\u313F","\u3140","\u3141","\u3142","\u3144","\u3145","\u3146","\u3147","\u3148","\u314A","\u314B","\u314C","\u314D","\u314E"];function V(e){if(!e)return null;const t=e.charCodeAt(0)-44032;return t<0||t>=11172?null:{cho:Math.floor(t/588),jung:Math.floor(t%588/28),jong:t%28}}function rr(){const e=new Map;return t=>{let n=e.get(t);return n||(n=[...t].map(o=>V(o)),e.set(t,n)),n}}function fe(e,t,n=0){return String.fromCharCode(44032+(e*21+t)*28+n)}function ar(e,t){if(!e||!t||e===t||e.length!==t.length)return"random";let n=0,o=null;for(let r=0;r<e.length;r++){const a=V(e[r]),u=V(t[r]);if(!a||!u)return"random";if(a.cho===u.cho&&a.jung===u.jung&&a.jong===u.jong)continue;n++;const i=a.cho!==u.cho,l=a.jung!==u.jung,c=a.jong!==u.jong;(i?1:0)+(l?1:0)+(c?1:0)>1?o="multi":i?o="cho":l?o="jung":o="jong"}return n!==1?"random":o==="cho"?"cho":o==="jung"?"jung":o==="jong"?"jong":"random"}const rt={3:["\u3131","\u3145"],5:["\u3134","\u3148"],6:["\u3134","\u314E"],9:["\u3139","\u3131"],10:["\u3139","\u3141"],11:["\u3139","\u3142"],12:["\u3139","\u3145"],13:["\u3139","\u314C"],14:["\u3139","\u314D"],15:["\u3139","\u314E"],18:["\u3142","\u3145"]};Object.fromEntries(Object.entries(rt).map(([e,t])=>[t.join(""),oe[Number(e)]]));function ur(e,t){if(!e||!t)return!1;for(const n of e){const o=V(n);if(o){if(Q[o.cho]===t)return!0;if(o.jong>0){if(oe[o.jong]===t)return!0;const r=rt[o.jong];if(r&&r.includes(t))return!0}}}return!1}function ir(e,t,n){const o=oe[e];return o===t?!0:n==="phoneme"&&Pe(o)===Pe(t)}function Me(e){if(!e)return 0;let t=0;for(const n of e)V(n)&&t++;return t}function lr(e){if(!e)return!1;let t=!1;for(const n of e){const o=V(n);if(o&&(t=!0,o.jong>0))return!1}return t}function sr(e,t,n){return e.jong<=0?!1:t.some(o=>ir(e.jong,o,n))}function cr(e,t,n,o="glyph"){if(!e)return!1;const r=[...e],a=u=>{const i=V(r[u]);if(!i||t.cho&&!t.cho.includes(Q[i.cho])||t.jung&&!t.jung.includes(te[i.jung]))return!1;if(t.jongNone){if(i.jong>0)return!1}else if(t.jong&&!sr(i,t.jong,o))return!1;return!0};if(n==="head")return a(0);if(n==="tail")return a(r.length-1);if(n==="mid"){for(let u=1;u<r.length-1;u++)if(a(u))return!0;return!1}for(let u=0;u<r.length;u++)if(a(u))return!0;return!1}const dr={cho:Q.length,jung:te.length,jong:oe.length};function Cr(e,t,n,o,r=1/0){if(!e||n<1)return[];const a=[...e].map(d=>V(d));if(a.some(d=>!d))return[];const u=a,i=u.length;if(n>i)return[];const l=dr[t],c=new Set,g=[];(function d(C,f){if(f.length===n){g.push([...f]);return}for(let m=C;m<i;m++)f.push(m),d(m+1,f),f.pop()})(0,[]);for(const d of g)if((function C(f,m){if(c.size>=r)return;if(f===d.length){const p=m.map(y=>fe(y.cho,y.jung,y.jong)).join("");p!==e&&o.has(p)&&c.add(p);return}const S=d[f],h=u[S][t];for(let p=0;p<l;p++){if(p===h)continue;const y=m.slice();if(y[S]={...m[S],[t]:p},C(f+1,y),c.size>=r)return}})(0,u),c.size>=r)break;return[...c]}function gr(e,t){if(!e||!t||e.length!==t.length)return-1;let n=0;for(let o=0;o<e.length;o++){const r=V(e[o]),a=V(t[o]);if(!r||!a)return-1;r.cho!==a.cho&&n++,r.jung!==a.jung&&n++,r.jong!==a.jong&&n++}return n}const vn="word_pair_index_v2",An="word_pair_index_sig_v2";let ke=null;function fr(){try{if(typeof localStorage>"u")return null;const e=localStorage.getItem(vn),t=localStorage.getItem(An);return!e||!t?null:{index:JSON.parse(e),sig:t}}catch{return null}}function Ie(){if(ke)return ke;const e=fr();return e?(ke=e.index,e.sig,ke):null}function mr(){ke=null;try{typeof localStorage<"u"&&(localStorage.removeItem(vn),localStorage.removeItem(An))}catch{}}const Bn="word_image_existence_map_v1";let Ne=null,xe=0,Dn=-1,Fe=null,Nn=-1,Tn=new Set;function _n(){if(Ne)return Ne;try{const e=typeof localStorage<"u"?localStorage.getItem(Bn):null,t=e?JSON.parse(e):null;Ne=t&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{Ne={}}return Ne}function Ln(){const e=_n();if(Dn===xe)return Fe?{...Fe}:null;const t=Object.values(e);return Fe=t.length===0?null:{total:t.length,exists:t.filter(Boolean).length},Dn=xe,Fe?{...Fe}:null}function On(){const e=_n();if(Nn===xe)return Tn;const t=new Set;for(const n in e)e[n]===!0&&n.endsWith("_1")&&t.add(n.slice(0,-2));return Tn=t,Nn=xe,t}function pr(){Ne={},xe++;try{typeof localStorage<"u"&&localStorage.removeItem(Bn)}catch{}}const Rn=[{id:"wordData",labelKey:"settings.cache.group.wordData.label",subKey:"settings.cache.group.wordData.sub",keys:["word_data_cache","word_data_version"]},{id:"pairIndex",labelKey:"settings.cache.group.pairIndex.label",subKey:"settings.cache.group.pairIndex.sub",keys:["word_pair_index_v2","word_pair_index_sig_v2"]},{id:"imageCache",labelKey:"settings.cache.group.imageCache.label",subKey:"settings.cache.group.imageCache.sub",keys:["word_image_existence_map_v1"]}];function Pn(e){return e.reduce((t,n)=>{try{const o=localStorage.getItem(n);return t+(o?new Blob([o]).size:0)}catch{return t}},0)}function hr(e){return e===0?"0 B":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(2)} MB`:`${(e/(1024*1024*1024)).toFixed(2)} GB`}function yr(e){const{t}=se.useTranslation(),[n,o]=s.useState({}),[r,a]=s.useState(null),[u,i]=s.useState(null),[l,c]=s.useState(null),g=s.useCallback(()=>{const C={};Rn.forEach(f=>{C[f.id]=Pn([...f.keys])}),o(C),typeof navigator<"u"&&navigator.storage?.estimate&&navigator.storage.estimate().then(f=>{c({usage:f.usage??0,quota:f.quota??0})}).catch(()=>{})},[]);s.useEffect(()=>{g()},[g]);const d=s.useCallback(async C=>{a(C);try{C==="wordData"?(localStorage.removeItem("word_data_cache"),localStorage.removeItem("word_data_version")):C==="pairIndex"?mr():C==="imageCache"&&pr(),g(),e?.(t("settings.cache.cleared","\uCE90\uC2DC\uAC00 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4."))}finally{a(null)}},[g,e,t]);return{cacheSizes:n,clearingId:r,confirmCacheId:u,setConfirmCacheId:i,storageEstimate:l,refreshCacheSizes:g,handleClearCache:d}}function br(e){const[t,n]=s.useState(null),[o,r]=s.useState(null),a=s.useCallback(()=>{const u=Ie();if(u){const l=Object.values(u),c=l.filter(g=>g.cho.length+g.jung.length+g.jong.length>0).length;n({matched:c,total:l.length})}else n(null);const i=Ln();r(i?{exists:i.exists,total:i.total}:null)},[]);return s.useEffect(()=>{a();const u=setTimeout(a,1e3);return()=>clearTimeout(u)},[e?.length,a]),{pairStats:t,imgStats:o,setPairStats:n,setImgStats:r,refreshStats:a}}function Se(e,t){if(e===t)return!0;const n=e?.id,o=t?.id;return n!=null&&n!==""&&n===o}function Mn(e,t=[]){const[n,o]=s.useState(t),[r,a]=s.useState(null),[u,i]=s.useState(!1),[l,c]=s.useState(e),g=s.useRef(!1),d=s.useRef(null);s.useEffect(()=>{if(u)return;if(g.current){g.current=!1;return}const p=d.current;p!==null&&p.length===t.length&&p.every((y,w)=>y===t[w])||(d.current=t,o(t),a(y=>y==null?y:t.find(w=>Se(w,y))??y))},[t,u]),s.useEffect(()=>{!u&&r!=null&&c({...r})},[u,r]);const C=s.useCallback(p=>{a(p),i(!1),c({...p})},[]),f=s.useCallback(()=>i(!0),[]),m=s.useCallback(()=>i(!1),[]),S=s.useCallback((p,y)=>{o(p),a(y),i(w=>(w&&(g.current=!0),!1))},[]),h=s.useCallback(p=>{o(y=>y.filter(w=>!Se(w,p))),a(null)},[]);return{list:n,setList:o,selected:r,setSelected:a,isEditing:u,setIsEditing:i,editForm:l,setEditForm:c,openDetail:C,startEditing:f,cancelEditing:m,commitEdit:S,remove:h}}const je=()=>{const[e,t,n]=Oe().split("-");return{year:e,month:t,day:n}},Sr={year:"",month:"",day:"",hour:"09",minute:"00",memo:""};function wr(e=[]){const{list:t,setList:n,selected:o,setSelected:r,isEditing:a,setIsEditing:u,editForm:i,setEditForm:l,openDetail:c,commitEdit:g}=Mn(Sr,e),{year:d,month:C,day:f}=je(),[m,S]=s.useState({year:d,month:C,day:f,hour:"09",minute:"00",memo:""});return{visitHistory:t,visitForm:m,setVisitForm:S,setVisit:h=>p=>S(y=>({...y,[h]:p})),selectedVisit:o,setSelectedVisit:r,isEditingVisit:a,setIsEditingVisit:u,editVisitForm:i,setEditVisitForm:l,openVisitDetail:c,handleVisitSave:h=>{n(E=>[m,...E]);const{year:p,month:y,day:w}=je();S({year:p,month:y,day:w,hour:"09",minute:"00",memo:""}),h?.()},handleVisitEditSave:()=>{g(h=>h.map(p=>o!=null&&Se(p,o)?i:p),i)},addVisit:h=>{n(p=>[h,...p])},removeVisit:h=>{n(p=>p.filter(y=>!Se(y,h)))},revertVisitEdit:(h,p)=>{n(y=>y.map(w=>w===p?h:w)),r(y=>y===p?h:y)}}}const kn=e=>`${e.year.padStart(4,"0")}-${e.month.padStart(2,"0")}-${e.day.padStart(2,"0")} ${e.hour.padStart(2,"0")}:${e.minute.padStart(2,"0")}`,$e=e=>[...e].sort((t,n)=>{const o=kn(t),r=kn(n);return o<r?-1:o>r?1:0}),Er={year:"",month:"",day:"",hour:"09",minute:"00",memo:""};function vr(e,t=[]){const n=s.useMemo(()=>$e(t),[t]),{list:o,setList:r,selected:a,setSelected:u,isEditing:i,setIsEditing:l,editForm:c,setEditForm:g,openDetail:d,commitEdit:C,remove:f}=Mn(Er,n),[m,S]=s.useState([]),{year:h,month:p,day:y}=je(),[w,E]=s.useState({year:h,month:p,day:y,hour:"09",minute:"00",memo:""}),T=O=>I=>E(W=>({...W,[O]:I})),B=O=>{r(U=>$e([...U,w]));const{year:I,month:W,day:X}=je();E({year:I,month:W,day:X,hour:"09",minute:"00",memo:""}),O?.()},N=()=>{C(O=>$e(O.map(I=>a!=null&&Se(I,a)?c:I)),c)},A=s.useCallback(O=>{f(O)},[f]),k=s.useCallback(O=>{e({year:O.year,month:O.month,day:O.day,hour:O.hour,minute:O.minute,memo:O.memo,...O.id!=null?{id:O.id}:{}}),f(O)},[e,f]),D=s.useCallback(O=>{r(I=>I.filter(W=>!Se(W,O))),S(I=>[O,...I]),u(null)},[r,u]),$=s.useCallback(O=>{r(I=>$e([...I,O]))},[r]),j=s.useCallback(O=>{r(I=>I.filter(W=>!Se(W,O)))},[r]),M=s.useCallback((O,I)=>{r(W=>$e(W.map(X=>X===I?O:X))),u(W=>W===I?O:W)},[r,u]);return{scheduleList:o,noShowList:m,addSchedule:$,removeSchedule:j,revertScheduleEdit:M,scheduleForm:w,setScheduleForm:E,setSchedule:T,selectedSchedule:a,setSelectedSchedule:u,isEditingSchedule:i,setIsEditingSchedule:l,editScheduleForm:c,setEditScheduleForm:g,openScheduleDetail:d,handleScheduleSave:B,handleScheduleEditSave:N,handleScheduleDelete:A,handleScheduleToVisit:k,handleScheduleNoVisit:D}}const at=[{value:"10",label:"10\uAC1C\uC529 \uBCF4\uAE30"},{value:"25",label:"25\uAC1C\uC529 \uBCF4\uAE30"},{value:"50",label:"50\uAC1C\uC529 \uBCF4\uAE30"},{value:"100",label:"100\uAC1C\uC529 \uBCF4\uAE30"}];function Ar(e){const{t}=se.useTranslation(),[n,o]=s.useState(""),[r,a]=s.useState("25"),[u,i]=s.useState("all"),[l,c]=s.useState(1),g=s.useMemo(()=>e.filter(({item:S,status:h})=>!(n&&!S.memo.includes(n)||u!=="all"&&h!==u)),[e,n,u]),d=Math.max(1,Math.ceil(g.length/Number(r))),C=Math.min(l,d),f=s.useMemo(()=>g.slice((C-1)*Number(r),C*Number(r)),[g,C,r]),m=s.useMemo(()=>at.map(S=>({...S,label:t("common.pageSizeLabel",{n:S.value,defaultValue:S.label})})),[t]);return{vapSearch:n,setVapSearch:o,vapPageSize:r,setVapPageSize:a,vapPageSizeOptions:m,vapStatus:u,setVapStatus:i,vapPage:C,setVapPage:c,vapFiltered:g,vapTotal:d,vapPageItems:f}}const Br=(()=>{let e=null;return()=>(e||(e=new Intl.Collator("ko")),e)})();function In(e,t){return Br().compare(e,t)}const ut=new Map;function Dr(e){const t=ut.get(e);if(t)return t;const n=[],o=/-?\d+(?:\.\d+)?/g;let r=0;for(let a=o.exec(e);a;a=o.exec(e)){let u=a.index,i=a[0];i[0]==="-"&&u>0&&!/\s/.test(e[u-1])&&(u+=1,i=i.slice(1)),u>r&&n.push(e.slice(r,u)),n.push(Number(i)),r=a.index+a[0].length}return r<e.length&&n.push(e.slice(r)),ut.size>5e3&&ut.clear(),ut.set(e,n),n}function Nr(e){if(!/^[\d\s-]+$/.test(e))return null;const t=e.replace(/\D/g,"");return t.length<9||t.length>11?null:t[0]==="0"||t[0]==="1"&&e!==t?t:null}function Tr(e,t){const n=c=>c==null||typeof c=="number"&&Number.isNaN(c)?"":String(c).trim(),o=n(e),r=n(t);if(o===r)return 0;const a=(c,g)=>{if(typeof c=="number"&&!Number.isNaN(c))return[c];const d=Nr(g);return d!==null?[d]:Dr(g)},u=a(e,o),i=a(t,r),l=Math.min(u.length,i.length);for(let c=0;c<l;c++){const g=u[c],d=i[c];if(typeof g=="number"&&typeof d=="number"){if(g!==d)return g-d;continue}if(typeof g=="number")return-1;if(typeof d=="number")return 1;const C=In(g,d);if(C!==0)return C}return u.length!==i.length?u.length-i.length:In(o,r)}const xn=e=>e==null||typeof e=="number"&&Number.isNaN(e)||typeof e=="string"&&e.trim()==="";function _r(e,t,n){const o=xn(e),r=xn(t);if(o||r)return o===r?0:o?1:-1;const a=Tr(e,t);return n?a:-a}function Lr(e,t,n){const{t:o}=se.useTranslation(),[r,a]=s.useState(()=>{const m=n?.initialPageSize;return m&&at.some(S=>S.value===m)?m:"25"}),[u,i]=s.useState(1),[l,c]=s.useState(t);Object.is(l,t)||(c(t),u!==1&&i(1));const g=s.useMemo(()=>at.map(m=>({...m,label:o("visits.showN",{n:m.value})})),[o]),d=s.useCallback(m=>{a(m),i(1)},[]),C=Math.max(1,Math.ceil(e.length/Number(r)));(u>C||u<1||!Number.isFinite(u))&&i(Math.min(Math.max(1,Number.isFinite(u)?u:1),C));const f=Math.min(Math.max(1,Number.isFinite(u)?u:1),C);return{pageRows:s.useMemo(()=>e.slice((f-1)*Number(r),f*Number(r)),[e,f,r]),pageSizeProps:{options:g,value:r,onChange:d},paginationProps:{page:f,total:C,onChange:i},setPage:i}}function Or(e){const[t,n]=s.useState(null),o=s.useRef(t),r=s.useRef(e?.onSortChange);r.current=e?.onSortChange;const a=s.useCallback(l=>{const c=o.current,g=c?.key===l?{key:l,asc:!c.asc}:{key:l,asc:!0};o.current=g,n(g),r.current?.(g)},[]),u=s.useCallback((l,c)=>({label:l,sortDir:t?.key===c?t.asc?"asc":"desc":null,onClick:()=>a(c)}),[t,a]),i=s.useCallback((l,c)=>{if(!t)return l;const{key:g,asc:d}=t;return[...l].sort((C,f)=>_r(c(C,g),c(f,g),d))},[t]);return{sort:t,field:u,sortRows:i}}const Fn=e=>e==="left"||e==="right"?e:null;function Rr(){const[e,t]=s.useState(!1),[n,o]=s.useState("left"),[r,a]=s.useState({left:null,right:null}),[u,i]=s.useState({left:[],right:[]}),[l,c]=s.useState(!1),[g,d]=s.useState("left"),C=s.useCallback(m=>{const S=Fn(m.direction);S&&(a(h=>({...h,[S]:m})),i(h=>({...h,[S]:[m,...h[S]]})),t(!1))},[]),f=s.useCallback(m=>{const S=Fn(m.direction);S&&(a(h=>({...h,[S]:m})),c(!1))},[]);return{showDevice:e,setShowDevice:t,deviceDirection:n,setDeviceDirection:o,devices:r,setDevices:a,deviceHistory:u,setDeviceHistory:i,showDeviceList:l,setShowDeviceList:c,listForSide:g,setListForSide:d,handleDeviceSubmit:C,handleSelectFromList:f}}const Pr="__ihab_core_word_pool__";function it(){return globalThis[Pr]??null}function H(e,t=Math.random){const n=e.slice();for(let o=n.length-1;o>0;o--){const r=Math.floor(t()*(o+1));[n[o],n[r]]=[n[r],n[o]]}return n}function ce(e,t,n=Math.random){return!Array.isArray(e)||e.length===0||t<=0?[]:t>=e.length?H(e,n):H(e,n).slice(0,t)}const _t={SAME_SOUND_PICK:{difficulty:!0,choseong:!0,group:"discrimination"},SAME_OR_DIFF:{difficulty:!0,choseong:!0,group:"discrimination"},HEAR_AND_PICK_SAME:{difficulty:!0,choseong:!0,group:"discrimination"},HEAR_AND_PICK_INCLUDED:{difficulty:!0,choseong:!0,group:"discrimination"},STARTS_WITH_SAME_SOUND:{difficulty:!1,choseong:!0,group:"discrimination"},LISTEN_AND_REMEMBER_ORDER:{difficulty:!1,choseong:!0,group:"attention"},MERGE_2_SYLLABLES:{difficulty:!1,choseong:!0,group:"synthesis"},MERGE_3_SYLLABLES:{difficulty:!1,choseong:!0,group:"synthesis"},MERGE_2_PHONEMES:{difficulty:!1,choseong:!0,group:"synthesis"},MERGE_3_PHONEMES:{difficulty:!1,choseong:!0,group:"synthesis"},DROP_1_FROM_2SYLL:{difficulty:!1,choseong:!0,group:"deletion"},DROP_1_FROM_3SYLL:{difficulty:!1,choseong:!0,group:"deletion"},DROP_PART_FROM_COMPOUND:{difficulty:!1,choseong:!0,group:"deletion"},DROP_FINAL_CONSONANT_FROM_1SYLL:{difficulty:!1,choseong:!0,group:"deletion"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{difficulty:!1,choseong:!0,group:"deletion"},CHANGE_1_SYLL_IN_2SYLL:{difficulty:!0,choseong:!0,group:"substitution"},CHANGE_1_SYLL_IN_3SYLL:{difficulty:!0,choseong:!0,group:"substitution"},CHANGE_1_PHONEME_IN_1SYLL:{difficulty:!1,choseong:!0,group:"substitution"},CHANGE_1_PHONEME_IN_2SYLL:{difficulty:!0,choseong:!0,group:"substitution"}},Lt=Q.indexOf("\u3147"),lt={DROP_FINAL_CONSONANT_FROM_1SYLL:{syllables:1,syllable:e=>e.jong>0},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{syllables:1,syllable:e=>e.jong===0&&e.cho!==Lt},MERGE_2_SYLLABLES:{syllables:2,syllable:()=>!0},MERGE_3_SYLLABLES:{syllables:3,syllable:()=>!0},MERGE_2_PHONEMES:{syllables:1,syllable:e=>e.jong===0&&e.cho!==Lt},MERGE_3_PHONEMES:{syllables:1,syllable:e=>e.jong>0&&!rt[e.jong]&&e.cho!==Lt}},Ot={cho:Q,jung:te,jong:oe},z=e=>Array.isArray(e)?e.length>0:!!e;function Rt(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){const o=e[n],r=t[n];if(!(!o||!r)&&(o.cho!==r.cho&&Q[o.cho]==="\u3147"!=(Q[r.cho]==="\u3147")||o.jung!==r.jung&&or(te[o.jung],te[r.jung])||o.jong!==r.jong&&o.jong===0!=(r.jong===0)))return!0}return!1}function Mr(e,t,n){const o=n.pronOf(e),r=n.decompOf,a=n.sameStructureOnly&&r?r(o):null,u=[];for(const i of t)i!==e&&(n.okSet&&!n.okSet.has(i)||n.pronOf(i)!==o&&(a&&r&&Rt(a,r(n.pronOf(i)))||u.push(i)));return u}function jn(e,t,n){const o=t?.[e];if(!o)return[];const r=n.kind?o[n.kind]??[]:[...o.cho??[],...o.jung??[],...o.jong??[]];return Mr(e,r,n)}function kr(e,t,n,o,r,a,u){const i=["cho","jung","jong"].filter(C=>z(e[C])),l={};for(const C of i){const f=e[C];l[C]=new Set(Array.isArray(f)?f:[f])}const c=r==="pron",g=new Map;for(const C of t){const f=n(a(C));if(f.some(p=>!p))continue;let m=f;if(!c&&(m=n(C),m.length!==f.length||m.some(p=>!p)))continue;const S=f.length,h=g.get(S);h?h.push({w:C,dPron:f,dPos:m}):g.set(S,[{w:C,dPron:f,dPos:m}])}const d=new Map;for(const[C,f]of g){const m=new Map,S=(h,p)=>{const y=h.dPos[p];return y!=null&&i.every(w=>l[w].has(Ot[w][y[w]]))};for(const h of f){let p;if(u==="head")p=S(h,0)?0:-1;else if(u==="tail")p=S(h,C-1)?C-1:-1;else if(u==="mid"){const w=i.includes("cho")?1:0,E=i.includes("jong")?C-2:C-1;p=-1;for(let T=w;T<=E;T++)if(S(h,T)){p=T;break}}else p=h.dPos.findIndex(w=>w!=null&&i.every(E=>l[E].has(Ot[E][w[E]])));if(p<0)continue;const y=m.get(p);y?y.push(h):m.set(p,[h])}for(const[h,p]of m){const y=i.includes("cho"),w=i.includes("jung"),E=i.includes("jong"),T=N=>{let A="";for(let k=0;k<C;k++){const D=N[k];k===h?A+=(y?"*":D.cho)+"."+(w?"*":D.jung)+"."+(E?"*":D.jong)+".":A+=D.cho+"."+D.jung+"."+D.jong+"."}return A},B=new Map;for(const N of f){const A=T(N.dPron),k=B.get(A);k?k.push(N):B.set(A,[N])}for(const N of p){const A=B.get(T(N.dPron))??[],k=[];for(const D of A){if(D.w===N.w)continue;let $=!0;for(const j of i){const M=N.dPron[h][j],O=D.dPron[h][j];if(O===M){$=!1;break}if(c&&l[j].has(Ot[j][O])){$=!1;break}}$&&(o&&Rt(N.dPron,D.dPron)||k.push(D.w))}d.set(N.w,k)}}}return d}const Ir=e=>e==null?[]:Array.isArray(e)?e:[e];function xr(e){if([...e].length!==1)return"";const t=V(e);if(!t)return"";const n=Pe(oe[t.jong]),o=n===""?0:oe.indexOf(n);return fe(t.cho,t.jung,o<0?0:o)}function $n(e,t){return t.get(e)||xr(e)||e}function st(e){return e?z(e.cho)?"cho":z(e.jung)?"jung":z(e.jong)?"jong":null:null}function we(e,t){const n=(r,a)=>!z(r)||Ir(r).includes(a),o=t.jongNone?e.jong===0:n(t.jong,oe[e.jong]);return n(t.cho,Q[e.cho])&&n(t.jung,te[e.jung])&&o}function He(e,t,n){const o=[...e];if(n!=="pron")return o.map(a=>V(a));const r=[...t.get(e)||e];return r.length!==o.length?o.map(a=>V(a)):r.map(a=>V(a))}function Ge(e,t,n,o,r){const a=t==="cho"?Q:t==="jung"?te:oe,u=e[t],i=[],l=d=>t==="jung"?jr($n(d,r)):$n(d,r),c=new Map([[l(n),-1]]),g=H(a.map((d,C)=>C).filter(d=>d!==u&&(t!=="cho"||a[d]!=="\u3147")&&(t!=="jong"||d!==0)));for(const d of g){if(i.length>=o)break;const C=t==="cho"?fe(d,e.jung,e.jong):t==="jung"?fe(e.cho,d,e.jong):fe(e.cho,e.jung,d),f=l(C),m=c.get(f);if(m!==void 0){t==="jung"&&m>=0&&r.has(C)&&!r.has(i[m])&&(i[m]=C);continue}c.set(f,i.length),i.push(C)}return i}const Fr={\u3154:"\u3150",\u3156:"\u3152",\u315A:"\u3159",\u315E:"\u3159"};function jr(e){if([...e].length!==1)return e;const t=V(e);if(!t)return e;const n=Fr[te[t.jung]];return n?fe(t.cho,te.indexOf(n),t.jong):e}function $r(e,t,n,o,r,a=null){const u=[...e];if(u.length!==2)return null;const i=u.map(d=>V(d));if(i.some(d=>!d))return null;const l=He(e,n,o);if(l.some(d=>!d))return null;const c=st(t);let g=c&&t?l.map((d,C)=>we(d,t)?C:-1).filter(d=>d>=0):[0,1];if(a!=null&&(g=g.filter(d=>d!==a)),!g.length)return null;for(const d of H(g)){const C=u[d];if(!r.has(C))continue;const f=Ge(i[d],c??"cho",C,40,n),m=[];for(const S of f)if(S!==C&&r.has(S)&&!m.includes(S)&&m.push(S),m.length>=2)break;if(!(m.length<2))return{question:e,distractors:[C,...m]}}return null}function Hr(e,t,n,o,r,a=null){const u=[...e];if(u.length!==3)return null;const i=u.map(d=>V(d));if(i.some(d=>!d))return null;const l=He(e,n,o);if(l.some(d=>!d))return null;const c=st(t),g=c&&t?l.map((d,C)=>we(d,t)?C:-1).filter(d=>d>=0):[0,1,2];if(!g.length)return null;for(const d of H(g))for(const C of H([0,1,2].filter(f=>f!==d&&(a==null||f===a)))){const f=[0,1,2].filter(y=>y!==C),m=f.map(y=>u[y]).join("");if(!r.has(m))continue;const S=f.indexOf(d),h=Ge(i[d],c??"cho",u[d],40,n),p=[];for(const y of h){const w=f.map(T=>u[T]);w[S]=y;const E=w.join("");if(E!==m&&r.has(E)&&!p.includes(E)&&p.push(E),p.length>=2)break}if(!(p.length<2))return{question:e,distractors:[m,...p]}}return null}function Gr(e,t,n,o,r,a=null){const u=[...e],i=u.length;if(i<2)return null;const l=[];for(let g=1;g<=i-1;g++)l.push({remain:u.slice(0,g).join(""),dropped:u.slice(g).join(""),droppedEnd:1}),l.push({remain:u.slice(i-g).join(""),dropped:u.slice(0,i-g).join(""),droppedEnd:0});const c=st(t);for(const{remain:g,dropped:d,droppedEnd:C}of H(l)){if(a!=null&&C!==a||[...g].length===1&&[...d].length===1||g===e||!r.has(g)||!r.has(d))continue;const f=[...g],m=f.map(p=>V(p));if(m.some(p=>!p))continue;const S=He(g,n,o);if(S.some(p=>!p))continue;const h=c&&t?S.map((p,y)=>we(p,t)?y:-1).filter(p=>p>=0):f.map((p,y)=>y);if(h.length)for(const p of H(h)){const y=Ge(m[p],c??"cho",f[p],40,n),w=[];for(const E of y){const T=[...f];T[p]=E;const B=T.join("");if(B!==g&&r.has(B)&&!w.includes(B)&&w.push(B),w.length>=2)break}if(w.length>=2)return{question:e,distractors:[g,...w],dropped:d}}}return null}function Vr(e,t,n,o,r,a=null){if([...e].length!==1)return null;const u=V(n.get(e)||e);if(!u||u.jong===0)return null;const i=fe(u.cho,u.jung,0),l=Ge({cho:u.cho,jung:u.jung,jong:0},"cho",i,2,n);return l.length<2?null:{question:e,distractors:[i,...l]}}const Pt=Q.indexOf("\u3147");function Wr(e,t,n,o,r,a=null){if([...e].length!==1)return null;const u=V(n.get(e)||e);if(!u||u.jong!==0||u.cho===Pt)return null;const i=fe(Pt,u.jung,0),l=Ge({cho:Pt,jung:u.jung,jong:0},"jung",i,2,n);return l.length<2?null:{question:e,distractors:[i,...l]}}function Yr(e){const t=new Map;for(const n of e){const o=[...n],r=o.length;if(!(r<2||r>3))for(let a=0;a<r;a++){let u=r+"|"+a+"|";for(let l=0;l<r;l++)u+=l===a?"*":o[l];const i=t.get(u);i?i.push(n):t.set(u,[n])}}return t}function Kr(e,t,n,o,r,a=null,u=null,i=2){const l=[...e],c=l.length;if(c<2||c>3)return null;const g=l.map(y=>V(y));if(g.some(y=>!y))return null;const d=He(e,n,o);if(d.some(y=>!y))return null;const C=y=>n.get(y)??y,f=C(e),m=!!t&&(z(t.cho)||z(t.jung)||z(t.jong)),S=!!u&&(z(u.cho)||z(u.jung)||z(u.jong)),h=y=>{let w=c+"|"+y+"|";for(let E=0;E<c;E++)w+=E===y?"*":l[E];return w};let p;if(a!=null){if(a>=c||m&&!we(d[a],t))return null;p=[a]}else m?p=d.map((y,w)=>we(y,t)?w:-1).filter(y=>y>=0):p=Array.from({length:c},(y,w)=>w);for(const y of H(p)){const w=r.get(h(y))??[],E=[],T=[];for(const D of w){if(D===e)continue;const $=[...D].map(I=>V(I)),j=g[y],M=$[y];if(!j||!M)continue;let O=0;if(j.cho!==M.cho&&O++,j.jung!==M.jung&&O++,j.jong!==M.jong&&O++,!(O<i||C(D)===f))if(S){const I=He(D,n,o)[y];I&&we(I,u)?E.push(D):T.push(D)}else E.push(D)}if(!E.length)continue;const B=H(E)[0],N=[],A=new Set([f,C(B)]),k=S?T:E.filter(D=>D!==B);for(const D of H(k)){const $=C(D);if(!A.has($)&&(A.add($),N.push(D),N.length>=2))break}if(!S&&N.length<2)for(const D of H(w)){if(D===e||D===B)continue;const $=C(D);if(!A.has($)&&(A.add($),N.push(D),N.length>=2))break}if(!(N.length<2))return{question:e,distractors:[B,...N]}}return null}var Ur={statusFilter:"\uC0C1\uD0DC \uD544\uD130",pageSizeSelect:"\uD398\uC774\uC9C0\uB2F9 \uD45C\uC2DC \uAC1C\uC218",selectedCount:"{{count}}\uAC1C \uC120\uD0DD\uB428",selectedOfMax:"\uCD5C\uB300 {{max}}\uAC1C \uC911 {{count}}\uAC1C",cancel:"\uCDE8\uC18C",info:"\uC124\uBA85",errorState:{message:"\uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",retry:"\uB2E4\uC2DC \uC2DC\uB3C4"},save:"\uC800\uC7A5",confirm:"\uD655\uC778",discardConfirm:{title:"\uC785\uB825\uC744 \uCDE8\uC18C\uD560\uAE4C\uC694?",body:"\uC800\uC7A5\uD558\uC9C0 \uC54A\uC73C\uBA74 \uC9C0\uAE08\uAE4C\uC9C0 \uC785\uB825\uD55C \uB0B4\uC6A9\uC774 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4.",confirm:"\uC785\uB825 \uCDE8\uC18C"},close:"\uB2EB\uAE30",back:"\uB4A4\uB85C",emptyTrainingName:"\uD6C8\uB828 \uC774\uB984\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.",remove:"\uC81C\uAC70",image:"\uC774\uBBF8\uC9C0",delete:"\uC0AD\uC81C",reset:"\uCD08\uAE30\uD654",update:"\uC5C5\uB370\uC774\uD2B8",download:"\uB2E4\uC6B4\uB85C\uB4DC",likeCount:"\uC88B\uC544\uC694 {{count}}",downloadCount:"\uAC00\uC838\uAC04 \uC218 {{count}}",descriptionFor:"{{name}} \uC124\uBA85",search:"\uAC80\uC0C9",empty:"\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",yes:"\uC608",no:"\uC544\uB2C8\uC624",all:"\uC804\uCCB4",none:"\uC5C6\uC74C",days:"{{count}}\uC77C",loadMore:"\uB354\uBCF4\uAE30",more:"\uB354\uBCF4\uAE30",moreFor:"{{name}} \uB354\uBCF4\uAE30",collapseFor:"{{name}} \uC811\uAE30",expandFor:"{{name}} \uD3BC\uCE58\uAE30",sortFor:"{{name}} \uC815\uB82C",retry:"\uB2E4\uC2DC \uC2DC\uB3C4",prevPage:"\uC774\uC804 \uD398\uC774\uC9C0",nextPage:"\uB2E4\uC74C \uD398\uC774\uC9C0",play:"\uC7AC\uC0DD",playFor:"{{name}} \uC7AC\uC0DD",pauseFor:"{{name}} \uBA48\uCDA4",pause:"\uBA48\uCDA4",playPause:"\uC7AC\uC0DD / \uBA48\uCDA4",replay:"\uB2E4\uC2DC\uB4E3\uAE30",subscription:"\uC774\uC6A9\uAD8C",done:"\uC644\uB8CC",failed:"\uC2E4\uD328",continue:"\uACC4\uC18D",notification:"\uC54C\uB9BC",emptyList:"\uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",noMatches:"\uB9DE\uB294 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",menu:"\uBA54\uB274",resetSelection:"\uC120\uD0DD \uCD08\uAE30\uD654",pageSizeLabel:"{{n}}\uAC1C\uC529 \uBCF4\uAE30",totalCountPrefix:"\uCD1D ",totalCountSuffix:"\uAC1C",expand:"\uD3BC\uCE58\uAE30",collapse:"\uC811\uAE30",popup:"\uD31D\uC5C5",codeBlock:"\uCF54\uB4DC \uBE14\uB85D",totalPrefix:"\uCD1D ",copyCode:"\uCF54\uB4DC \uBCF5\uC0AC",copied:"\uBCF5\uC0AC\uB428",col:{problem:"\uBB38\uC81C"},phonetics:{place:{labial:"\uC591\uC21C\uC74C",alveolar:"\uCE58\uC870\uC74C",palatal:"\uACBD\uAD6C\uAC1C\uC74C",velar:"\uC5F0\uAD6C\uAC1C\uC74C",glottal:"\uC131\uBB38\uC74C"},vowel:{frontHigh:"\uC804\uC124 \uACE0\uBAA8\uC74C",backHighUnrounded:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uD3C9\uC21C",backHighRounded:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uC6D0\uC21C",frontMid:"\uC804\uC124 \uC911\uBAA8\uC74C",backMidUnrounded:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uD3C9\uC21C",backMidRounded:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uC6D0\uC21C",low:"\uC800\uBAA8\uC74C"},glide:{j:"j\uD65C\uC74C",w:"w\uD65C\uC74C",velar:"\u0270\uD65C\uC74C"}},unknownError:"\uC54C \uC218 \uC5C6\uB294 \uC624\uB958",networkError:"\uB124\uD2B8\uC6CC\uD06C \uC5F0\uACB0\uC774 \uBD88\uC548\uC815\uD569\uB2C8\uB2E4. \uC5F0\uACB0 \uC0C1\uD0DC\uB97C \uD655\uC778\uD55C \uB4A4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694."},zr={rangeSelect:"\uAE30\uAC04 \uC120\uD0DD",dow:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],weekOrdinal:["\uCCAB\uC9F8","\uB458\uC9F8","\uC14B\uC9F8","\uB137\uC9F8","\uB2E4\uC12F\uC9F8","\uC5EC\uC12F\uC9F8","\uC77C\uACF1\uC9F8"],weekLabel:"{{ord}}\uC8FC",prevMonth:"\uC774\uC804 \uB2EC",addOnDate:"{{date}}\uC5D0 \uBC29\uBB38 \uB4F1\uB85D",nextMonth:"\uB2E4\uC74C \uB2EC",prevWeek:"\uC774\uC804 \uC8FC",nextWeek:"\uB2E4\uC74C \uC8FC",legend:{visited:"\uBC29\uBB38",scheduled:"\uC608\uC57D",noVisit:"\uBBF8\uBC29\uBB38"},periodSelect:"\uAE30\uAC04 \uB2E8\uC704",visitCount:"\uBC29\uBB38 {{count}}\uAC74",statusCount:"{{label}} {{count}}\uAC74"},qr={planSuffix:"\uC774\uC6A9\uAD8C",labeledPlan:"{{label}} \uC774\uC6A9\uAD8C",couponCode:"\uC774\uC6A9\uAD8C \uCF54\uB4DC",specialLabel:"\uC624\uD508\uD2B9\uAC00",unitDay:"\uC77C",unitYear:"\uB144",remainingDay:"{{n}}\uC77C \uB0A8\uC74C",remainingHour:"{{n}}\uC2DC\uAC04 \uB0A8\uC74C",remainingMinute:"{{n}}\uBD84 \uB0A8\uC74C",remainingSecond:"{{n}}\uCD08 \uB0A8\uC74C",expired:"\uB9CC\uB8CC\uB428",menu:{use:"\uC0AC\uC6A9\uD558\uAE30",refund:"\uD658\uBD88\uD558\uAE30",delete:"\uC0AD\uC81C\uD558\uAE30"}},Jr={clearAriaLabel:"\uAC80\uC0C9\uC5B4 \uC9C0\uC6B0\uAE30"},Qr={starLabel:"{{n}}\uBC88\uC9F8 \uBCC4 \uC120\uD0DD",valueLabel:"{{max}}\uC810 \uB9CC\uC810\uC5D0 {{value}}\uC810",groupLabel:"\uBCC4\uC810"},Zr={selected:"\uC120\uD0DD\uB428"},Xr={placeholder:"\uC120\uD0DD"},ea={collapse:"\uC811\uAE30",expand:"\uD3BC\uCE58\uAE30"},ta={biArea:"BI \uC601\uC5ED",biSymbol:"BI \uC2EC\uBCFC",logoMalgwi:"\uB9D0\uADC0 \uB85C\uACE0",logoManager:"\uB9D0\uADC0\uB9E4\uB2C8\uC800 \uB85C\uACE0",menuOpen:"\uBA54\uB274 \uC5F4\uAE30",utilMenu:"\uC720\uD2F8\uB9AC\uD2F0 \uBA54\uB274",menuClose:"\uBA54\uB274 \uB2EB\uAE30"},na={mainMenu:"\uBA54\uC778 \uBA54\uB274",bottomNav:"\uD558\uB2E8 \uB124\uBE44\uAC8C\uC774\uC158",goToManager:"\uB9D0\uADC0\uB9E4\uB2C8\uC800\uB85C \uC774\uB3D9",goToMalgwi:"\uB9D0\uADC0\uB85C \uC774\uB3D9",modeLabelManager:"\uB9D0\uADC0 \uB9E4\uB2C8\uC800",modeLabelMalgwi:"\uB9D0\uADC0",training:"\uD6C8\uB828",settings:"\uC124\uC815",notifications:"\uC54C\uB9BC",account:"\uACC4\uC815",help:"\uB3C4\uC6C0\uB9D0",feedback:"\uBC84\uADF8\uC2E0\uACE0",debug:"\uB514\uBC84\uADF8",coupons:"\uCFE0\uD3F0",topic:"\uC8FC\uC81C\uBCC4 \uB4E3\uAE30",trainingType:"\uD6C8\uB828\uBCC4 \uB4E3\uAE30",wordPairs:"\uB300\uB9BD\uC30D \uCC3E\uAE30",wordSearch:"\uB2E8\uC5B4 \uCC3E\uAE30",wordTable:"\uB2E8\uC5B4\uD45C \uB9CC\uB4E4\uAE30",company:"\uC5C5\uCCB4\uC815\uBCF4",more:"\uB354\uBCF4\uAE30",moreMenu:"\uB354\uBCF4\uAE30 \uBA54\uB274",badgeLabel:"{{label}}, {{count}}\uAC1C",badgeInsideLabel:"{{label}}, \uC548\uC5D0 \uC54C\uB9BC {{count}}\uAC1C"},oa={language:{training:{label:"\uD6C8\uB828 \uC5B8\uC5B4",sub:"\uD6C8\uB828\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uB2E8\uC5B4\uC640 \uC74C\uC131 \uC5B8\uC5B4"}},notifications:{title:"\uC54C\uB9BC"},display:{fontSize:{small:"\uC791\uAC8C",large:"\uD06C\uAC8C"}},cache:{title:"\uCE90\uC2DC \uAD00\uB9AC",confirmMessage:"\uCE90\uC2DC({{size}})\uB97C \uC0AD\uC81C\uD569\uB2C8\uB2E4. \uACC4\uC18D\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?",delete:"\uC0AD\uC81C",deleting:"\uC0AD\uC81C \uC911",cleared:"\uCE90\uC2DC\uAC00 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",group:{wordData:{label:"\uB2E8\uC5B4 \uB370\uC774\uD130",sub:"\uB2E8\uC5B4 \uBAA9\uB85D \uBC0F \uBC84\uC804 \uC815\uBCF4"},pairIndex:{label:"\uB2E8\uC5B4\uC30D \uC778\uB371\uC2A4",sub:"\uCD08\uC131\xB7\uC911\uC131\xB7\uC885\uC131 \uB300\uB9BD\uC30D \uBD84\uC11D \uCE90\uC2DC"},imageCache:{label:"\uC774\uBBF8\uC9C0 \uCE90\uC2DC",sub:"\uB2E8\uC5B4\uBCC4 \uC774\uBBF8\uC9C0 \uC874\uC7AC \uC5EC\uBD80 \uD655\uC778 \uACB0\uACFC"},trainingRecord:{label:"\uD6C8\uB828 \uAE30\uB85D",sub:"\uC624\uB298\uC758 \uD6C8\uB828 \uC9C4\uD589\uB960 \uBC0F \uD559\uC2B5 \uC77C\uC218"}}},button:{save:"\uC124\uC815 \uC800\uC7A5"},popup:{clear:{confirm:"\uCD08\uAE30\uD654"},update:{confirm:"\uC5C5\uB370\uC774\uD2B8"},cache:{title:"{{label}} \uC0AD\uC81C",message:"{{label}}({{size}})\uB97C \uC0AD\uC81C\uD569\uB2C8\uB2E4. \uACC4\uC18D\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?"}},saved:"\u2713 \uC800\uC7A5\uB428",account:{title:"\uACC4\uC815",delete:{sub:"\uD0C8\uD1F4 \uD6C4 30\uC77C \uC774\uB0B4 \uC7AC\uAC00\uC785 \uC2DC \uBCF5\uAD6C \uAC00\uB2A5\uD569\uB2C8\uB2E4."}}},ra={addButton:"\uC774\uC6A9\uAD8C \uCD94\uAC00\uD558\uAE30",couponButton:"\uCFE0\uD3F0 \uC785\uB825",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",segment:{personal:"\uB9D0\uADC0",org:"\uB9D0\uADC0\uB9E4\uB2C8\uC800"},org:{title:"\uD604\uC7AC \uC774\uC6A9\uAD8C",disc:"\uAE30\uAD00\uC5D0\uC11C \uC0AC\uC6A9 \uC911\uC778 \uC774\uC6A9\uAD8C \uC815\uBCF4\uC785\uB2C8\uB2E4.",empty:"\uB4F1\uB85D\uB41C \uAE30\uAD00 \uC774\uC6A9\uAD8C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",fallbackTitle:"\uAE30\uAD00 \uC774\uC6A9\uAD8C",startDate:"\uC2DC\uC791\uC77C",endDate:"\uB9CC\uB8CC\uC77C",remaining:"\uB0A8\uC740 \uAE30\uAC04",duration:"\uC774\uC6A9 \uAE30\uAC04"},active:{infoTitle:"\uC774\uC6A9 \uC815\uBCF4",refund:"\uD658\uBD88 \uC694\uCCAD",startDate:"\uC0AC\uC6A9 \uC2DC\uC791\uC77C",endDate:"\uC885\uB8CC\uC77C",remaining:"\uB0A8\uC740 \uAE30\uAC04"},pending:{title:"\uBCF4\uC720",empty:"\uB300\uAE30 \uC911\uC778 \uC774\uC6A9\uAD8C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."}},aa={profile:{planSuffix:"\uD50C\uB79C",plan:"\uD50C\uB79C"},basicInfo:{name:{placeholder:"\uD64D\uAE38\uB3D9"}},security:{title:"\uBCF4\uC548",password:{label:"\uBE44\uBC00\uBC88\uD638",currentRequired:"\uD604\uC7AC \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.",newRequired:"\uC0C8 \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.",mismatch:"\uC0C8 \uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",changed:"\uBE44\uBC00\uBC88\uD638\uAC00 \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},twoFactor:{label:"2\uB2E8\uACC4 \uC778\uC99D",sub:"\uACC4\uC815 \uBCF4\uC548\uC744 \uAC15\uD654\uD558\uC138\uC694"}}},ua={guide:{faq:{title:"\uC790\uC8FC \uBB3B\uB294 \uC9C8\uBB38",desc:"FAQ \uBAA8\uC544\uBCF4\uAE30"}}},ia={settings:"\uC124\uC815",start:{title:"\uB2E8\uC5B4\uD6C8\uB828 \uC2DC\uC791",description:"\uC544\uB798 \uD6C8\uB828 \uC720\uD615\uC744 \uC120\uD0DD\uD574 \uC2DC\uC791\uD558\uC138\uC694"},difficulty:{tooltip:"\uAC00\uC7A5 \uC26C\uC6B4 \uB09C\uC774\uB3C4\uB294 '\uBB34\uC791\uC704', \uAC00\uC7A5 \uC5B4\uB824\uC6B4 \uB09C\uC774\uB3C4\uB294 '\uCD08\uC131\uCC28\uC774' \uC785\uB2C8\uB2E4."},contrast:{label:"\uB300\uB9BD",type:"\uB300\uB9BD \uC885\uB958",count:"\uB300\uB9BD \uAC2F\uC218",n:"{{n}}\uAC1C"},filter:{random:"\uBB34\uC791\uC704",trainOnset:"\uCD08\uC131",trainVowel:"\uBAA8\uC74C",trainCoda:"\uC885\uC131",phonemeGroup:"\uD6C8\uB828 \uC74C\uC808",noLimit:"\uBB34\uAD00",codaExclude:"\uC81C\uC678",gradeLabel:"\uB4F1\uAE09",excludeImageInfo:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC: \uB2E8\uC5B4 \uC911\uC5D0 \uC774\uBBF8\uC9C0\uAC00 \uC788\uB294 \uB2E8\uC5B4\uB9CC \uACB0\uACFC\uC5D0 \uBCF4\uC5EC\uC90D\uB2C8\uB2E4.",sameStructureInfo:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC: \uC815\uB2F5\uACFC \uC624\uB2F5\uC758 \uC74C\uC808 \uAD6C\uC870(\uAE00\uC790 \uC218\xB7\uBC1B\uCE68 \uC720\uBB34 \uB4F1)\uAC00 \uAC19\uC740 \uACB0\uACFC\uB9CC \uB0A8\uACA8\uC694.",selectSection:"\uC120\uD0DD",excludeImage:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC",sameStructure:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC"},noQuestions:"\uBB38\uC81C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",countQuestions:"{{n}}\uBB38\uC81C",countSentences:"{{n}}\uBB38\uC7A5",comingSoon:"\uC900\uBE44 \uC911",nextQuestion:"\uB2E4\uC74C \uBB38\uC81C",noiseRatioTitle:"\uC18C\uC74C \uBE44\uC728",noiseRatioValue:"{{ratio}}\uBC30",noiseTypeTitle:"\uC18C\uC74C \uC885\uB958",playVolumeTitle:"\uC804\uCCB4 \uC18C\uB9AC",playSpeedTitle:"\uC7AC\uC0DD \uC18D\uB3C4",meter:{sentence:"\uC7AC\uC0DD",noise:"\uC18C\uC74C",toggle:"\uC624\uB514\uC624 \uBBF8\uD130 \uD45C\uC2DC"},viewResult:"\uACB0\uACFC\uBCF4\uAE30",problemNotice:"{{n}}\uBC88 \uBB38\uC81C \uC785\uB2C8\uB2E4.",trainingSettingsTitle:"\uD6C8\uB828 \uC124\uC815",sentencePreview:"\uBB38\uC7A5 \uBBF8\uB9AC\uBCF4\uAE30",notHeard:"\uC548 \uB4E4\uB838\uC5B4\uC694.",heardWell:"\uC798 \uB4E4\uB838\uC5B4\uC694.",confirmTitle:"\uBB38\uC7A5\uC744 \uD655\uC778\uD558\uACE0 \uC798 \uB4E4\uB838\uB294\uC9C0 \uC120\uD0DD\uD558\uC138\uC694.",noSoundWaveform:"\uC18C\uB9AC \uBE44\uAD50 \uBB38\uC81C\uB294 \uC6E8\uC774\uBE0C\uD3FC\uC744 \uD45C\uD604\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",noise:{level:{none:"\uC5C6\uC74C",weak:"\uC57D\uD568",medium:"\uBCF4\uD1B5",strong:"\uAC15\uD568",veryStrong:"\uB9E4\uC6B0 \uAC15\uD568"},type:{none:"\uC5C6\uC74C",default:"\uAE30\uBCF8",street:"\uAE38\uAC70\uB9AC",buzz:"\uC640\uAE00\uC640\uAE00",restaurant:"\uC2DD\uB2F9"}},listenTitle:"\uC81C\uC2DC\uD558\uB294 \uBB38\uC7A5\uC744 \uB4E4\uC5B4\uC8FC\uC138\uC694.",listenButton:"\uBB38\uC7A5 \uB4E3\uAE30",playSound:"\uC18C\uB9AC \uB4E3\uAE30",playAll:"\uBAA8\uB450 \uB4E3\uAE30",selectInOrder:"\uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uCE74\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694.",stop:"\uC815\uC9C0",preview:"\uBBF8\uB9AC \uB4E3\uAE30",previewFor:"{{name}} \uBBF8\uB9AC \uB4E3\uAE30",stopFor:"{{name}} \uC815\uC9C0",next:"\uB2E4\uC74C",completed:"\uD6C8\uB828 \uC644\uB8CC",selected:"\uC120\uD0DD\uB428",nthSelected:"{{n}}\uBC88\uC9F8 \uC120\uD0DD",fontSizeMin:"\uAE00\uC528 \uD06C\uAE30\uAC00 \uCD5C\uC18C\uC785\uB2C8\uB2E4.",fontSizeMax:"\uAE00\uC528 \uD06C\uAE30\uAC00 \uCD5C\uB300\uC785\uB2C8\uB2E4.",fontSizeDecrease:"\uAE00\uC790 \uD06C\uAE30 \uAC10\uC18C",fontSizeIncrease:"\uAE00\uC790 \uD06C\uAE30 \uC99D\uAC00",toggleBackground:"\uBC30\uACBD \uC804\uD658",cardInstructions:"\uB0B1\uB9D0 \uCE74\uB4DC\uB97C \uBCF4\uACE0 \uC18C\uB9AC\uB97C \uB4E3\uACE0 \uD655\uC778\uD558\uC138\uC694.",noCards:"\uCE74\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",audioFetchError:"\uC0AC\uC6B4\uB4DC \uC18C\uC2A4\uB97C \uAC00\uC838\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",ttsUnavailable:"\uC774 \uAE30\uAE30\uC5D0\uC11C\uB294 \uC74C\uC131\uC744 \uB4E4\uB824\uC904 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",selectConfirm:"\uBB38\uC81C\uB97C \uBCF4\uACE0 \uD574\uB2F9\uD558\uB294 \uB0B4\uC6A9\uC744 \uC120\uD0DD\uD558\uC138\uC694.",orderListDefault:"\uBB38\uC7A5\uC744 \uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uBC30\uCE58\uD558\uC138\uC694.",result:{pendingDone:"\uACB0\uACFC\uB97C \uACC4\uC0B0\uD558\uB294 \uC911\uC774\uB77C \uC544\uC9C1 \uC644\uB8CC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",eyebrow:"\uD6C8\uB828 \uC644\uB8CC",title:"\uD6C8\uB828\uC744 \uBAA8\uB450 \uB9C8\uCCE4\uC2B5\uB2C8\uB2E4.",scoreAria:"{{correct}} / {{total}} \uBB38\uD56D",elapsed:"\uC18C\uC694 \uC2DC\uAC04",summary:"{{correct}}\uAC1C\uC758 \uBB38\uD56D\uC744 \uC798 \uB4E4\uC5C8\uC2B5\uB2C8\uB2E4.",tableAriaLabel:"\uBB38\uD56D\uBCC4 \uD310\uC815",colJudge:"\uD310\uC815",colAnswerSelected:"\uC815\uB2F5 \xB7 \uC120\uD0DD",colAnswer:"\uC815\uB2F5",colSelected:"\uC120\uD0DD",heardWell:"\uC798 \uB4E4\uC5C8\uC5B4\uC694",notHeard:"\uBABB \uB4E4\uC5C8\uC5B4\uC694",notJudged:"\uBBF8\uD310\uC815",replay:"\uB2E4\uC2DC\uD558\uAE30",replaySound:"{{no}}\uBC88 \uB2E4\uC2DC \uB4E3\uAE30",replaySoundStop:"{{no}}\uBC88 \uB4E3\uAE30 \uBA48\uCDA4",done:"\uC644\uB8CC",viewResult:"\uACB0\uACFC \uD655\uC778",noContent:"(\uB0B4\uC6A9\uC5C6\uC74C)"},up:"\uC704\uB85C",down:"\uC544\uB798\uB85C",prev:"\uC774\uC804",listenLabel:"\uBB38\uC7A5 \uB4E3\uAE30",sourcePlay:"\uC18C\uC2A4 {{n}} \uC7AC\uC0DD",listen:"\uB4E3\uAE30",audioStatus:{idle:"\uB300\uAE30",resolving:"\uB9AC\uC18C\uC2A4 \uB9E4\uD551 \uC911\u2026",checking_exists:"\uD30C\uC77C \uC874\uC7AC \uD655\uC778\u2026",getting_signed_url:"\uC11C\uBA85 URL \uC870\uD68C\u2026",downloading:"\uB2E4\uC6B4\uB85C\uB4DC \uC911\u2026",measuring_duration:"\uC624\uB514\uC624 \uAE38\uC774 \uCE21\uC815\u2026",ready:"\uC900\uBE44 \uC644\uB8CC",error:"\uC624\uB958 \uBC1C\uC0DD",synthesizing:"\uC18C\uB9AC\uB97C \uB9CC\uB4E4\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026"}},la={totalCount:"\uAC1C\uC758 \uD6C8\uB828 \uBB36\uC74C",renameGroup:"\uADF8\uB8F9 \uC774\uB984 \uBC14\uAFB8\uAE30",itemCount:"\uD6C8\uB828 \uAC1C\uC218",menu:{edit:"\uD6C8\uB828 \uBB36\uC74C \uC218\uC815",rename:"\uC774\uB984 \uBC14\uAFB8\uAE30",move:"\uADF8\uB8F9 \uC774\uB3D9",duplicate:"\uD6C8\uB828 \uBB36\uC74C \uBCF5\uC0AC",publish:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0 \uC62C\uB9AC\uAE30"},sort:{customers:"\uD6C8\uB828 \uACE0\uAC1D"},copyLink:"\uB9C1\uD06C \uBCF5\uC0AC",removeLink:"\uB9C1\uD06C \uC81C\uAC70",linkRemoved:"\uB9C1\uD06C\uAC00 \uC81C\uAC70\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",linkSaveFirst:"\uBA3C\uC800 \uD6C8\uB828 \uBB36\uC74C\uC744 \uC800\uC7A5\uD574\uC8FC\uC138\uC694.",linkSaveFirstHint:"\uC800\uC7A5\uB41C \uD6C8\uB828 \uBB36\uC74C\uC5D0\uC11C\uB9CC \uACF5\uC720 \uB9C1\uD06C\uB97C \uC0DD\uC131\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",linkCopySelect:"\uBCF5\uC0AC\uAC00 \uB9C9\uD600 \uB9C1\uD06C\uB97C \uC120\uD0DD\uD588\uC2B5\uB2C8\uB2E4. Ctrl/\u2318+C\uB85C \uBCF5\uC0AC\uD558\uC138\uC694.",nameRequired:"\uD6C8\uB828 \uBB36\uC74C \uC774\uB984\uC744 \uC785\uB825\uD574\uC8FC\uC138\uC694.",itemRequired:"\uD6C8\uB828\uC744 1\uAC1C \uC774\uC0C1 \uB2F4\uC544\uC8FC\uC138\uC694.",randomAdd:"\uBB34\uC791\uC704 \uCD94\uAC00"},sa={totalCount:"\uBA85\uC758 \uACE0\uAC1D",loadError:"\uBAA9\uB85D\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",basicInfo:{editTooltip:"\uC218\uC815\uD558\uAE30"},member:{placeholder:"\uC774\uBA54\uC77C \uB610\uB294 \uC804\uD654",link:"\uC5F0\uACB0",linking:"\uC5F0\uACB0 \uC911\u2026"},device:{title:"\uCCAD\uAC01\uC7AC\uD65C\uAE30\uAE30",addTooltip:"\uC0C8\uB85C \uC0DD\uC131",addButton:"\uAE30\uAE30 \uCD94\uAC00",listTooltip:"\uBAA9\uB85D \uBCF4\uAE30",listTitle:"\uCE21 \uAE30\uAE30 \uBAA9\uB85D",historyEmpty:"\uB4F1\uB85D\uB41C \uAE30\uAE30 \uC774\uB825\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",wearing:"\uCE21 \uCC29\uC6A9\uC911",notRegistered:"\uBBF8\uB4F1\uB85D",unit:"\uAC1C",wearingNow:"\uCC29\uC6A9",wear:"\uCC29\uC6A9",unwear:"\uCC29\uC6A9 \uD574\uC81C",wornSince:"{{date}}\uBD80\uD130",release:"\uD574\uC81C",historyTitle:"\uCCAD\uAC01\uC7AC\uD65C\uAE30\uAE30 \uC774\uB825"},schedule:{title:"\uBC29\uBB38 \uC608\uC815",addTooltip:"\uC608\uC815 \uB4F1\uB85D",listTooltip:"\uC804\uCCB4 \uBCF4\uAE30",empty:"\uC608\uC815\uB41C \uBC29\uBB38\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",registerTitle:" \uACE0\uAC1D\uB2D8 \uBC29\uBB38 \uC608\uC815 \uB4F1\uB85D",memoPlaceholder:"\uBC29\uBB38 \uC608\uC815 \uAD00\uB828 \uBA54\uBAA8\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694."},visitHistory:{title:"\uBC29\uBB38 \uC774\uB825",addTooltip:"\uC2E0\uADDC \uB4F1\uB85D",empty:"\uC544\uC9C1 \uBC29\uBB38 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",popupTitle:" \uACE0\uAC1D\uB2D8 \uBC29\uBB38 \uC774\uB825",registerTitle:" \uACE0\uAC1D\uB2D8 \uC2E0\uADDC \uBC29\uBB38 \uB4F1\uB85D"},homework:{title:"\uC219\uC81C \uC9C4\uD589\uC0C1\uD669",active:"\uD65C\uC131",inactive:"\uBE44\uD65C\uC131",copy:"\uB9C1\uD06C \uBCF5\uC0AC",copied:"\uB9C1\uD06C\uAC00 \uBCF5\uC0AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},moreItems:"\uB354 \uC788\uC74C",viewAll:"\uC804\uCCB4 \uBCF4\uAE30",visits:{title:"\uBC29\uBB38"},trainingRecord:{title:"\uACE0\uAC1D \uD6C8\uB828 \uAE30\uB85D"},status:{trainingSubtitle:"\uD6C8\uB828 \uD604\uD669"},detail:{session:{completedFmt:"\uC644\uB8CC {{done}}/{{total}} \xB7 {{duration}}"},visitSuffix:"\uC758 \uBC29\uBB38"},duration:{minSec:"{{m}}\uBD84 {{s}}\uCD08",min:"{{m}}\uBD84",sec:"{{s}}\uCD08"}},ca={plan:{recommendedFor:"\uC774\uB7F0 \uBD84\uAED8 \uCD94\uCC9C\uD569\uB2C8\uB2E4.",features:"\uD575\uC2EC \uAE30\uB2A5",freePrice:"\uBB34\uB8CC",contact:"\uBB38\uC758\uD558\uAE30",tierFallback:"\uC774\uC6A9\uAD8C",openPromo:"\uC624\uD508 \uD2B9\uAC00"},products:{mgrEnterprise:{tier:{price:"\uBB38\uC758"}}}},da={title:"\uCFE0\uD3F0",subtitle:"\uCFE0\uD3F0 \uCF54\uB4DC\uB97C \uC785\uB825\uD558\uAC70\uB098 \uBCF4\uC720 \uCFE0\uD3F0\uC744 \uD655\uC778\uD558\uC138\uC694.",input:{label:"\uCFE0\uD3F0 \uCF54\uB4DC",placeholder:"\uCFE0\uD3F0 \uCF54\uB4DC \uC785\uB825"},applyButton:"\uC801\uC6A9",error:{invalid:"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uCFE0\uD3F0 \uCF54\uB4DC\uC785\uB2C8\uB2E4.",alreadyUsed:"\uC774\uBBF8 \uC0AC\uC6A9\uB41C \uCFE0\uD3F0\uC785\uB2C8\uB2E4."},success:{applied:'"{{name}}" \uCFE0\uD3F0\uC774 \uC801\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.'},section:{owned:"\uBCF4\uC720 \uCFE0\uD3F0"},status:{used:"\uC0AC\uC6A9 \uC644\uB8CC",available:"\uC0AC\uC6A9 \uAC00\uB2A5"}},Ca={unitVisit:"\uAC74",periodAll:"\uC804\uCCB4",showN:"{{n}}\uAC1C\uC529"},ga={subtitle:"\uC5C5\uCCB4 \uBC0F \uBC95\uC778 \uC815\uBCF4\uB97C \uAD00\uB9AC\uD558\uC138\uC694.",editButton:"\uC815\uBCF4 \uC218\uC815",basicInfo:{title:"\uAE30\uBCF8 \uC815\uBCF4"},contactInfo:{title:"\uC5F0\uB77D\uCC98 \uC815\uBCF4"}},fa={title:"\uD6C8\uB828\uBCC4 \uB4E3\uAE30",subtitle:"\uC6D0\uD558\uB294 \uD6C8\uB828 \uC720\uD615\uC744 \uC120\uD0DD\uD558\uC138\uC694.",listenInNoise:{title:"\uC18C\uC74C \uD558 \uBB38\uC7A5 \uB4E3\uAE30",desc:"\uB2E4\uC591\uD55C \uC18C\uC74C \uD658\uACBD\uC5D0\uC11C \uBB38\uC7A5 \uCCAD\uB825\uC744 \uD6C8\uB828\uD569\uB2C8\uB2E4."},shortStory:{title:"\uC9E7\uC740 \uC774\uC57C\uAE30 \uB4E3\uAE30",desc:"\uC9E7\uC740 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uB0B4\uC6A9\uC744 \uC774\uD574\uD569\uB2C8\uB2E4."},longStory:{title:"\uAE34 \uC774\uC57C\uAE30 \uB4E3\uAE30",desc:"\uAE34 \uC774\uC57C\uAE30\uB97C \uC9D1\uC911\uD574\uC11C \uB4E3\uACE0 \uB0B4\uC6A9\uC744 \uD30C\uC545\uD569\uB2C8\uB2E4."},orderingSentence:{title:"\uBB38\uC7A5 \uC21C\uC11C\uD654",desc:"\uB4E4\uC740 \uBB38\uC7A5\uB4E4\uC744 \uC62C\uBC14\uB978 \uC21C\uC11C\uB85C \uBC30\uC5F4\uD569\uB2C8\uB2E4."},SAME_SOUND_PICK:{label:"\uAC19\uC740 \uC18C\uB9AC \uACE0\uB974\uAE30",sub:"\uB4E4\uC740 \uC18C\uB9AC\uC640 \uAC19\uC740 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},SAME_OR_DIFF:{label:"\uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0 \uB9DE\uD788\uAE30",sub:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0, \uB2E4\uB978\uC9C0 \uAD6C\uBD84\uD558\uC138\uC694."},HEAR_AND_PICK_SAME:{label:"\uC77C\uCE58\uD558\uB294 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",sub:"\uB4E4\uC740 \uC18C\uB9AC\uC758 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},HEAR_AND_PICK_INCLUDED:{label:"\uD55C \uC74C\uC808 \uD3EC\uD568 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",sub:"\uB4E4\uC740 \uC74C\uC808\uC774 \uD3EC\uD568\uB41C \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},STARTS_WITH_SAME_SOUND:{label:"\uCCAB \uC74C\uC808\uC774 \uAC19\uC740 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",sub:"\uB4E4\uC740 \uB2E8\uC5B4\uC640 \uAC19\uC740 \uC18C\uB9AC\uB85C \uC2DC\uC791\uD558\uB294 \uB2E8\uC5B4\uB97C \uACE0\uB974\uC138\uC694."},LISTEN_AND_REMEMBER_ORDER:{label:"\uB4E3\uACE0 \uC21C\uC11C\uB300\uB85C \uAE30\uC5B5\uD558\uAE30",sub:"\uC138 \uB2E8\uC5B4\uB97C \uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uCE74\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694."},MERGE_2_SYLLABLES:{label:"\uC74C\uC808 2\uAC1C \uD569\uCE58\uAE30",sub:"\uB450 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},MERGE_3_SYLLABLES:{label:"\uC74C\uC808 3\uAC1C \uD569\uCE58\uAE30",sub:"\uC138 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},MERGE_2_PHONEMES:{label:"\uC74C\uC18C 2\uAC1C \uD569\uCE58\uAE30",sub:"\uB450 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},MERGE_3_PHONEMES:{label:"\uC74C\uC18C 3\uAC1C \uD569\uCE58\uAE30",sub:"\uC138 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},DROP_1_FROM_2SYLL:{label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uD0C8\uB77D",sub:"2\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},DROP_1_FROM_3SYLL:{label:"3\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uD0C8\uB77D",sub:"3\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},DROP_PART_FROM_COMPOUND:{label:"\uD569\uC131\uC5B4\uC5D0\uC11C \uBD80\uBD84 \uD0C8\uB77D",sub:"\uD569\uC131\uC5B4\uC758 \uC77C\uBD80\uB97C \uBE7C\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},DROP_FINAL_CONSONANT_FROM_1SYLL:{label:"1\uC74C\uC808\uC5D0\uC11C \uBC1B\uCE68 \uD0C8\uB77D",sub:"\uBC1B\uCE68\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{label:"1\uC74C\uC808\uC5D0\uC11C \uC790\uC74C \uD0C8\uB77D",sub:"\uC790\uC74C\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB0A8\uC744\uAE4C\uC694?"},CHANGE_1_SYLL_IN_2SYLL:{label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",sub:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},CHANGE_1_SYLL_IN_3SYLL:{label:"3\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",sub:"3\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},CHANGE_1_PHONEME_IN_1SYLL:{label:"1\uC74C\uC808 \uB2E8\uC5B4 \uC911 1\uAC1C \uC74C\uC18C \uBC14\uAFB8\uAE30",sub:"1\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uC138\uC694."},CHANGE_1_PHONEME_IN_2SYLL:{label:"2\uC74C\uC808 \uB2E8\uC5B4 \uC911 1\uAC1C \uC74C\uC18C \uBC14\uAFB8\uAE30",sub:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."}},ma={comingSoon:"\uB2E8\uC5B4\uD6C8\uB828 \uAE30\uB2A5\uC744 \uC900\uBE44 \uC911\uC785\uB2C8\uB2E4."},pa={colName:"\uB2E8\uC5B4\uD45C \uC774\uB984",open:"\uC5F4\uAE30",countSuffix:"\uAC1C\uC758 \uB2E8\uC5B4\uD45C",tab:{cards:"\uB2E8\uC5B4\uD45C \uCE74\uB4DC",tables:"\uB2E8\uC5B4\uD45C"},cardsEmpty:"\uC544\uC9C1 \uB9CC\uB4E0 \uB2E8\uC5B4\uD45C \uCE74\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",addCard:"\uB2E8\uC5B4\uD45C \uCE74\uB4DC \uCD94\uAC00",menu:{publishStore:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0 \uC62C\uB9AC\uAE30",unpublishStore:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0\uC11C \uB0B4\uB9AC\uAE30"},newBadge:"\uC0C8\uB85C \uB9CC\uB4E0 \uD45C",publishedBadge:"\uBC1C\uD589\uB428",sharedBadge:"\uACF5\uC720 \uC911"},ha={title:"\uC8FC\uC694 \uB2E8\uC5B4",empty:"\uCD94\uCD9C\uB41C \uC8FC\uC694 \uB2E8\uC5B4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},ya={defaultName:"\uB2E8\uC5B4 \uD45C",title:"\uB2E8\uC5B4 \uD45C \uB9CC\uB4E4\uAE30",subtitle:"\uCE78\uC744 \uC124\uC815\uD558\uACE0 \uB2E8\uC5B4\uB97C \uCD94\uAC00\uD558\uC5EC \uD45C\uB97C \uB9CC\uB4ED\uB2C8\uB2E4.",filterTitle:"\uD45C \uC124\uC815",filter:{composition:"\uAD6C\uC131",image:"\uC774\uBBF8\uC9C0",word:"\uB2E8\uC5B4",standardPron:"\uD45C\uC900 \uBC1C\uC74C",colloquialPron:"\uAD6C\uC5B4\uCCB4 \uBC1C\uC74C",paperOrientation:"\uC6A9\uC9C0 \uBC29\uD5A5",landscape:"\uAC00\uB85C",portrait:"\uC138\uB85C",columns:"\uCE78 \uC218",column:"{{count}}\uCE78",itemsPerPageWord:"\uD398\uC774\uC9C0\uB2F9 \uB2E8\uC5B4 \uC218",itemsPerPagePair:"\uD398\uC774\uC9C0\uB2F9 \uB300\uB9BD\uC30D \uC218",itemsPerPageOption:"{{count}}\uAC1C",pageIndicator:"{{current}} / {{total}}",pageNumber:"\uD398\uC774\uC9C0 \uBC88\uD638",pageNumberLeft:"\uC67C\uCABD",pageNumberCenter:"\uC911\uC559",pageNumberRight:"\uC624\uB978\uCABD",border:"\uC678\uACFD\uC120",topInfo:"\uC0C1\uB2E8 \uC815\uBCF4",bottomInfo:"\uD558\uB2E8 \uC815\uBCF4",cutLine:"\uC808\uCDE8\uC120",show:"\uD45C\uC2DC",hide:"\uBBF8\uD45C\uC2DC",dotted:"\uC810\uC120",corner:"\uCF54\uB108"},addWord:"\uCD94\uAC00\uD558\uAE30",wordInfo:"{{word}} \uB0B1\uB9D0 \uC815\uBCF4",emptyItems:"\uB2E8\uC5B4\uB97C 1\uAC1C \uC774\uC0C1 \uCD94\uAC00\uD574\uC8FC\uC138\uC694.",load:"\uBD88\uB7EC\uC624\uAE30",openNewWindow:"\uC0C8 \uCC3D\uC73C\uB85C \uBCF4\uAE30",saveButton:"\uC800\uC7A5\uD558\uAE30",saveAsNewButton:"\uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uC800\uC7A5",print:"\uC778\uC1C4\uD558\uAE30",popupBlocked:"\uD31D\uC5C5\uC774 \uCC28\uB2E8\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800 \uC124\uC815\uC5D0\uC11C \uD31D\uC5C5\uC744 \uD5C8\uC6A9\uD574 \uC8FC\uC138\uC694.",printFileNameSingle:"\uB2E8\uC5B4\uD45C",printFileNamePair:"\uB300\uB9BD\uC30D\uD45C",save:{title:"\uB2E8\uC5B4\uD45C \uC800\uC7A5\uD558\uAE30",nameLabel:"\uC774\uB984",desc:"\uC800\uC7A5\uD560 \uB2E8\uC5B4 \uD45C\uC758 \uC774\uB984\uC744 \uC785\uB825\uD558\uC138\uC694.",placeholder:"\uC774 \uB2E8\uC5B4\uD45C\uC5D0 \uB300\uD55C \uC81C\uBAA9\uC744 \uC785\uB825\uD558\uC138\uC694.",descriptionLabel:"\uC124\uBA85",descriptionPlaceholder:"\uC774 \uB2E8\uC5B4\uD45C\uC5D0 \uB300\uD55C \uC124\uBA85\uC744 \uC785\uB825\uD558\uC138\uC694.",duplicateName:"\uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC778 \uC774\uB984\uC785\uB2C8\uB2E4.",nameRequired:"\uD45C \uC774\uB984\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694.",autoFillHint:" (Tab \uB610\uB294 space \uC785\uB825\uC2DC \uC790\uB3D9 \uC785\uB825)",copyName:"{{name}} (\uBCF5\uC0AC)"},loadTable:{title:"\uC800\uC7A5\uB41C \uB2E8\uC5B4 \uD45C \uBD88\uB7EC\uC624\uAE30",empty:"\uC800\uC7A5\uB41C \uB2E8\uC5B4 \uD45C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",loadButton:"\uBD88\uB7EC\uC624\uAE30",itemCount:"{{count}}\uAC1C",deleteAriaLabel:"{{name}} \uC0AD\uC81C",viewLabel:"\uBCF4\uAE30 \uBC29\uC2DD",sortLabel:"\uC815\uB82C",sort:{newest:"\uCD5C\uC2E0\uC21C",oldest:"\uC624\uB798\uB41C\uC21C",name:"\uC774\uB984\uC21C",count:"\uB2E8\uC5B4 \uC218"},view:{grid:"\uD45C\uB85C \uBCF4\uAE30",list:"\uB9AC\uC2A4\uD2B8\uB85C \uBCF4\uAE30"}},publisherFilter:"{{name}} \uAC8C\uC2DC\uD55C \uAC83\uB9CC \uBCF4\uAE30",groupDeleteMessage:"\uADF8\uB8F9 \uB0B4 \uB2E8\uC5B4\uD45C\uB294 '\uADF8\uB8F9 \uC5C6\uC74C'\uC73C\uB85C \uC774\uB3D9\uD569\uB2C8\uB2E4.",groupNamePlaceholder:"\uADF8\uB8F9 \uC774\uB984",store:{badge:"\uB9D0\uADC0\uC790\uB8CC\uC2E4"},card:{sub:"\uB2E8\uC5B4\uD45C \uCE74\uB4DC",empty:"\uC774 \uCE74\uB4DC\uC5D0 \uB2E8\uC5B4\uD45C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},toast:{renameError:"\uC774\uB984 \uBCC0\uACBD\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",saveError:"\uC800\uC7A5\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",deleteError:"\uC0AD\uC81C\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",duplicateError:"\uBCF5\uC81C\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",saveSuccess:"\uB2E8\uC5B4\uD45C\uAC00 \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},scoring:{o:"{{word}} \uB9DE\uC74C",triangle:"{{word}} \uC560\uB9E4",x:"{{word}} \uD2C0\uB9BC",markName:{o:"\uB9DE\uC74C",triangle:"\uC560\uB9E4",x:"\uD2C0\uB9BC"},button:"\uCC44\uC810\uD558\uAE30",pickTitle:"\uB204\uAD6C\uB97C \uCC44\uC810\uD560\uAE4C\uC694?",pickSubtitle:"\u2018{{name}}\u2019 \uD45C\uB85C \uD6C8\uB828\uD55C \uACE0\uAC1D\uC744 \uACE0\uB974\uC138\uC694.",pickSearch:"\uC774\uB984 \uB610\uB294 \uC804\uD654\uBC88\uD638\uB85C \uCC3E\uAE30",pickEmpty:"\uB4F1\uB85D\uB41C \uACE0\uAC1D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",pickNoMatch:"\uCC3E\uB294 \uACE0\uAC1D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",pickAgain:"\uACE0\uAC1D \uB2E4\uC2DC \uACE0\uB974\uAE30",scoringFor:"{{name}} \uB2D8 \uCC44\uC810 \uC911",none:"\uCE78 \uC544\uB798 \u25CB \xB7 \u25B3 \xB7 \u2715 \uB97C \uB20C\uB7EC \uB9E4\uAE30\uC138\uC694. \uB9C8\uC6B0\uC2A4\uB85C\uB294 \uCE78\uC5D0 \uC190\uC744 \uC5B9\uC73C\uBA74, \uC790\uD310\uC73C\uB85C\uB294 \uCE78\uC5D0 \uCD08\uC810\uC774 \uAC00\uBA74 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.",tally:"{{marked}}\uCE78 \uCC44\uC810 \xB7 \u25CB {{o}} \xB7 \u25B3 {{triangle}} \xB7 \u2715 {{x}} \xB7 \uC815\uB2F5\uB960 {{rate}}%",save:"\uCC44\uC810 \uC800\uC7A5",saved:"{{name}} \uB2D8\uC758 \uCC44\uC810 {{count}}\uCE78\uC744 \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4.",reviewTitle:"\uBCF5\uC2B5\uD45C\uB97C \uB9CC\uB4E4\uAE4C\uC694?",reviewMessage:"{{name}} \uB2D8\uC774 \uD2C0\uB9AC\uAC70\uB098 \uC560\uB9E4\uD588\uB358 {{count}}\uCE78\uC73C\uB85C \uC0C8 \uD45C\uB97C \uB9CC\uB4ED\uB2C8\uB2E4. \uB9DE\uD78C \uCE78\uC740 \uBE60\uC9D1\uB2C8\uB2E4.",reviewConfirm:"\uBCF5\uC2B5\uD45C \uB9CC\uB4E4\uAE30",reviewDescription:"\u2018{{name}}\u2019 \uCC44\uC810\uC5D0\uC11C \uD2C0\uB9AC\uAC70\uB098 \uC560\uB9E4\uD588\uB358 {{count}}\uCE78\uC744 \uBAA8\uC740 \uD45C\uC785\uB2C8\uB2E4.",reviewCreated:"\u2018{{name}}\u2019\uC744(\uB97C) \uB9CC\uB4E4\uC5C8\uC2B5\uB2C8\uB2E4 \u2014 {{count}}\uCE78.",discardTitle:"\uB9E4\uAE34 \uCC44\uC810\uC744 \uBC84\uB9B4\uAE4C\uC694?",discardMessage:"{{count}}\uCE78\uC744 \uB9E4\uACBC\uC9C0\uB9CC \uC544\uC9C1 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uB098\uAC00\uBA74 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4.",discardConfirm:"\uBC84\uB9AC\uACE0 \uB098\uAC00\uAE30"},info:{grade:"\uB09C\uC774\uB3C4: {{n}}\uB4F1\uAE09",syllables:"\uC74C\uC808 \uC218: {{n}}\uC74C\uC808",pos:"\uD488\uC0AC: {{v}}",wordType:"\uC720\uD615: {{v}}"},pos:{noun:"\uBA85\uC0AC",verb:"\uB3D9\uC0AC",adjective:"\uD615\uC6A9\uC0AC",adverb:"\uBD80\uC0AC",numeral:"\uC218\uC0AC",determiner:"\uAD00\uD615\uC0AC",interjection:"\uAC10\uD0C4\uC0AC",particle:"\uC870\uC0AC",affix:"\uC811\uC0AC",dependentNoun:"\uC758\uC874\uBA85\uC0AC",pronoun:"\uB300\uBA85\uC0AC",auxVerb:"\uBCF4\uC870\uB3D9\uC0AC",auxAdjective:"\uBCF4\uC870\uD615\uC6A9\uC0AC"},reorder:{moved:"{{total}}\uCE78 \uAC00\uC6B4\uB370 {{n}}\uBC88\uC9F8\uB85C \uC62E\uAE40",handle:"{{word}} \uC21C\uC11C \uBC14\uAFB8\uAE30 (Alt + \uD654\uC0B4\uD45C)",hint:"Alt + \u2190 \u2192 \uB85C \uC21C\uC11C \uBC14\uAFB8\uAE30"}},ba={editBanner:{message:"\uC800\uC7A5\uD558\uBA74 \uC9C0\uAE08 \uC218\uC815 \uC911\uC778 \uB2E8\uC5B4\uD45C\uAC00 \uAC31\uC2E0\uB429\uB2C8\uB2E4."},filterTitle:"\uB2E8\uC5B4 \uAC80\uC0C9 \uC124\uC815",filter:{positionAny:"\uBB34\uAD00",positionHead:"\uC5B4\uB450",positionMid:"\uC5B4\uC911",positionTail:"\uC5B4\uB9D0",difficulty:"\uB4F1\uAE09",grade:"{{n}}\uB4F1\uAE09",gradeNone:"\uC5C6\uC74C",syllables:"\uC74C\uC808 \uC218",syllable:"{{n}}\uC74C\uC808",syllable5plus:"5\uC74C\uC808 \uC774\uC0C1",partOfSpeech:"\uD488\uC0AC",pos:{noun:"\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)",verb:"\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)",modifier:"\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)"},wordType:"\uC720\uD615",field:"\uC758\uBBF8\uBC94\uC8FC",type:{native:"\uACE0\uC720\uC5B4",sino:"\uD55C\uC790\uC5B4",foreign:"\uC678\uB798\uC5B4",mixed:"\uD63C\uC885\uC5B4"},exclude:"\uC81C\uC678",excludeNoImage:"\uC774\uBBF8\uC9C0 \uC5C6\uC74C"},searchButton:"\uAC80\uC0C9\uD558\uAE30",resultUnit:"\uB2E8\uC5B4",remaining:"{{count}}\uAC1C \uB0A8\uC74C",resultDisc:"\uC6D0\uD558\uB294 {{unit}} \uC120\uD0DD\uD558\uC138\uC694. {{max}}\uAC1C\uAE4C\uC9C0 \uC120\uD0DD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. ({{selected}}/{{max}})",resultTitlePrefix:"\uCD1D ",resultTitleSuffix:"\uAC1C\uC758 {{unit}} \uAC80\uC0C9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",emptyResult:"\uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",groupCount:"{{count}}\uAC1C",sort:{aria:"\uC815\uB82C",match:"\uC2DC\uC791 \uC6B0\uC120",ganada:"\uAC00\uB098\uB2E4\uC21C \u2191",ganadaDesc:"\uAC00\uB098\uB2E4\uC21C \u2193",syllable:"\uC74C\uC808 \uC218 \u2191",syllableDesc:"\uC74C\uC808 \uC218 \u2193",grade:"\uB4F1\uAE09\uC21C \u2191",gradeDesc:"\uB4F1\uAE09\uC21C \u2193",original:"\uBC1B\uC740 \uC21C\uC11C"},pageSize:"{{count}}\uAC1C\uC529 \uBCF4\uAE30",pageSizeAria:"\uD398\uC774\uC9C0 \uD06C\uAE30",popup:{title:"{{n}}\uBC88 \uCE78\uC5D0 \uB123\uC744 \uB2E8\uC5B4\uB97C \uC120\uD0DD\uD558\uC138\uC694"}},Sa={clearAllSelection:"\uBAA8\uB450 \uC120\uD0DD \uD574\uC81C",divLine:"\uB300\uB9BD\uC120",removePair:"\uB300\uB9BD\uC30D \uBE7C\uAE30",removeWord:"\uB2E8\uC5B4 \uBE7C\uAE30"},wa={title:"\uC8FC\uC81C\uBCC4 \uB4E3\uAE30",subtitle:"\uC8FC\uC81C\uB97C \uC120\uD0DD\uD558\uACE0 \uB4E3\uAE30 \uD6C8\uB828\uC744 \uC2DC\uC791\uD558\uC138\uC694.",noiseTitle:"\uC18C\uC74C \uD558 \uBB38\uC7A5\uB4E3\uAE30",shortStoryTitle:"\uC9E7\uC740 \uC774\uC57C\uAE30 \uB4E3\uAE30",FOOD:"\uC74C\uC2DD",HLTH:"\uAC74\uAC15",WETH:"\uB0A0\uC528",PRSN:"\uC778\uBB3C",KRCT:"\uD55C\uAD6D\uBB38\uD654",STRY:"\uC774\uC57C\uAE30",LOCA:"\uC9C0\uC5ED",SOAR:"\uC0AC\uD68C\uC640 \uC608\uC220",NTSC:"\uC790\uC5F0\uACFC \uACFC\uD559",SPRT:"\uC2A4\uD3EC\uCE20",sub:{TRKRFD:"\uD55C\uAD6D \uC804\uD1B5\uC74C\uC2DD",MDKRFD:"\uD55C\uAD6D \uD604\uB300\uC74C\uC2DD",WRLDFD:"\uC138\uACC4\uC758 \uC74C\uC2DD",MTRFRT:"\uC2DD\uC7AC\uB8CC\uC640 \uACFC\uC77C",GEFDKL:"\uC74C\uC2DD \uC0C1\uC2DD",HTETHB:"\uAC74\uAC15\uD55C \uC2DD\uC2B5\uAD00",DISILL:"\uBCD1\uACFC \uC9C8\uD658",EXCISE:"\uC6B4\uB3D9",GEHTKL:"\uAC74\uAC15\uC0C1\uC2DD",GESSKL:"\uACC4\uC808\uC0C1\uC2DD",SNWRAN:"\uB208\uACFC \uBE44",WTHFCT:"\uC77C\uAE30\uC608\uBCF4",GEWTKL:"\uB0A0\uC528\uC0C1\uC2DD",JODYPS:"\uC870\uC120\uC2DC\uB300",MDKRPS:"\uD55C\uAD6D \uADFC\uD604\uB300",THKDPS:"\uC0BC\uAD6D\uC2DC\uB300",WRLART:"\uC138\uACC4\uC758 \uC608\uC220\uAC00",WRLPSN:"\uC138\uACC4\uC758 \uC778\uBB3C",KRLANG:"\uC6B0\uB9AC\uB9D0",TRPLCT:"\uC804\uD1B5\uB180\uC774",HERITG:"\uBB38\uD654\uC7AC",EVTFES:"\uD589\uC0AC\uC640 \uCD95\uC81C",GECTKL:"\uC0C1\uC2DD",FRYTAL:"\uB3D9\uD654",AMZING:"\uC2E0\uAE30\uD55C \uC774\uC57C\uAE30",DAYSTR:"\uC77C\uC0C1 \uC18D \uC774\uC57C\uAE30",KRLDMK:"\uD55C\uAD6D\uC758 \uBA85\uC18C",SELNMK:"\uC11C\uC6B8\uC758 \uBA85\uC18C",WRDTRB:"\uC138\uACC4\uC5EC\uD589",NAVIGT:"\uAE38 \uCC3E\uAE30",KRSOCI:"\uD55C\uAD6D",ECONEW:"\uACBD\uC81C\uC640 \uB274\uC2A4",GENART:"\uC608\uC220",GELFKL:"\uC0DD\uD65C \uC0C1\uC2DD",ANIMAL:"\uB3D9\uBB3C",PLANTS:"\uC2DD\uBB3C",ETHPLT:"\uC9C0\uAD6C",TOLELC:"\uB3C4\uAD6C\uC640 \uC804\uC790\uC81C\uD488",GESCKL:"\uACFC\uD559\uC0C1\uC2DD",INVDSP:"\uAC1C\uC778\uACBD\uAE30",MARART:"\uACA9\uD22C\uAE30",TEAMSP:"\uB2E8\uCCB4\uACBD\uAE30",FOOTBL:"\uCD95\uAD6C",GESPKL:"\uC2A4\uD3EC\uCE20 \uC0C1\uC2DD"}},Ea={maxUses:"\uCD5C\uB300 \uC0AC\uC6A9 \uD69F\uC218 (\uBE44\uC6CC\uB450\uBA74 \uBB34\uC81C\uD55C)",redirect:"\uC774\uB3D9\uD560 \uD398\uC774\uC9C0 URL (\uBE44\uC6CC\uB450\uBA74 \uC571 \uBA54\uC778)",creating:"\uC0DD\uC131 \uC911\u2026",create:"\uB9C1\uD06C \uC0DD\uC131",created:"\u2713 \uB9C1\uD06C\uAC00 \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4",copied:"\uBCF5\uC0AC\uB428!",copy:"\uBCF5\uC0AC",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",empty:"\uC0DD\uC131\uB41C \uB9C1\uD06C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",uses:"{{count}}\uD68C \uC0AC\uC6A9",expiresAt:"\uB9CC\uB8CC: {{date}}",createdAt:"\uC0DD\uC131: {{date}}",confirmDelete:"\uC0AD\uC81C\uD560\uAE4C\uC694?",deactivate:"\uBE44\uD65C\uC131\uD654",delete:"\uC0AD\uC81C",status:{active:"\uC720\uD6A8",expired:"\uB9CC\uB8CC",inactive:"\uBE44\uD65C\uC131"}},va={passwordPlaceholder:"\uBE44\uBC00\uBC88\uD638 \uC785\uB825"},Aa={subtitle:"\uC8FC\uC81C\uB97C \uC120\uD0DD\uD558\uC5EC \uB4E3\uAE30 \uC5F0\uC2B5\uC744 \uC9C4\uD589\uD558\uC138\uC694."},Ba={direction:{left:"\uC88C",right:"\uC6B0",label:"\uBC29\uD5A5"},wornDate:"\uCC29\uC6A9\uC77C",deviceType:"\uC885\uB958",brand:"\uBE0C\uB79C\uB4DC",fitType:"\uCC29\uC6A9\uD615\uD0DC",productName:"\uC81C\uD488\uBA85",validationError:{brandAndProduct:"\uBE0C\uB79C\uB4DC\uC640 \uC81C\uD488\uBA85\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694."},addNew:"\uC0C8 \uAE30\uAE30 \uCD94\uAC00",selectFromList:"\uBAA9\uB85D\uC5D0\uC11C \uC120\uD0DD",removeDevice:"\uCC29\uC6A9 \uD574\uC81C",type:{hearingAid:"\uBCF4\uCCAD\uAE30",cochlearImplant:"\uC778\uACF5\uC640\uC6B0",other:"\uAE30\uD0C0"}},Da={stat:{totalCustomers:"\uCD1D \uACE0\uAC1D",monthlyVisits:"\uC774\uB2EC \uCD1D \uBC29\uBB38"},chart:{visitDetail:"\uC0C1\uC138 \uBC29\uBB38 \uD604\uD669",trainingDetail:"\uC0C1\uC138 \uD6C8\uB828 \uD604\uD669",weekly:"\uC8FC\uBCC4",daily:"\uC77C\uBCC4",periodMonth:"\uC6D4",periodWeek:"\uC8FC",weeklyPrefix:"\uC8FC\uAC04",monthlyPrefix:"\uC6D4\uAC04",visit:"\uBC29\uBB38",reservation:"\uC608\uC57D",trainingDone:"\uD6C8\uB828 \uC644\uB8CC",trainingInProgress:"\uD6C8\uB828 \uC911",weekRange:"{{start}}~{{end}}",week:"{{n}}\uC8FC"},subscriptionStatus:{active:"{{pct}}% \uD65C\uC131",expired:"{{pct}}% \uB9CC\uB8CC",unused:"{{pct}}% \uBBF8\uC0AC\uC6A9"}},Na={editBanner:{message:"\uC800\uC7A5\uD558\uBA74 \uC9C0\uAE08 \uC218\uC815 \uC911\uC778 \uB300\uB9BD\uC30D\uD45C\uAC00 \uAC31\uC2E0\uB429\uB2C8\uB2E4."},phonemeSelect:{title:"\uC74C\uC18C \uC120\uD0DD",vs:"\uB300"},caution:"\uC720\uC758\uC0AC\uD56D",mode:{include:"\uC74C\uC18C \uD3EC\uD568",pick:"\uC74C\uC18C \uB300\uB9BD",contrast:"\uC74C\uC18C \uB300\uB9BD \uC9C0\uC815",infoTitle:"\uB300\uB9BD \uBC29\uC2DD",infoInclude:"\uC74C\uC18C \uD3EC\uD568 \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uAC00 \uBAA8\uB450 \uB4E4\uC5B4\uAC04 \uB2E8\uC5B4\uC640 \uADF8 \uB300\uB9BD\uC30D\uC744 \uCC3E\uC544\uC694.",infoPick:"\uC74C\uC18C \uB300\uB9BD \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uAC00 \uB300\uB9BD\uC30D \uB450 \uB2E8\uC5B4\uC758 \uC2E4\uC81C \uCC28\uC774\uC810\uC77C \uB54C\uB9CC \uB9E4\uCE6D\uB3FC\uC694.",infoContrast:"\uC74C\uC18C \uB300\uB9BD \uC9C0\uC815 \u2014 \uAE30\uC900 \uB2E8\uC5B4\uC640 \uB300\uB9BD \uB2E8\uC5B4\uC758 \uC74C\uC18C\uB97C \uAC01\uAC01 \uC9C1\uC811 \uC120\uD0DD\uD574 \uB300\uB9BD\uC30D\uC744 \uCC3E\uC544\uC694."},count:"{{n}}\uAC1C",countLabel:"\uC74C\uC18C \uAC1C\uC218",input:{char:"\uAE00\uC790 \uC120\uD0DD",pron:"\uBC1C\uC74C \uC120\uD0DD",infoTitle:"\uC785\uB825 \uBC29\uC2DD",infoChar:"\uAE00\uC790 \uC120\uD0DD \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uB85C \uB2E8\uC5B4(\uAE00\uC790 \uAE30\uC900)\uB97C \uCC3E\uC740 \uD6C4, \uB2E8\uC5B4\uC758 \uD45C\uC900 \uBC1C\uC74C \uB300\uB9BD\uC30D\uC744 \uCC3E\uC2B5\uB2C8\uB2E4.",infoPron:"\uBC1C\uC74C \uC120\uD0DD \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uB85C \uD45C\uC900 \uBC1C\uC74C \uB300\uB9BD\uC30D\uC744 \uCC3E\uC2B5\uB2C8\uB2E4."},phonemeN:"{{n}}\uBC88 \uC74C\uC808",phonemeSingleLabel:"\uC74C\uC808",phonemeContrastSingleLabel:"\uB300\uB9BD \uC74C\uC808",ordinals:["\uCCAB\uBC88\uC9F8","\uB450\uBC88\uC9F8","\uC138\uBC88\uC9F8","\uB124\uBC88\uC9F8"],phonemeOrdinalLabel:"{{ordinal}} \uC74C\uC808",phonemeContrastOrdinalLabel:"\uB300\uB9BD {{ordinal}} \uC74C\uC808",composition:"\uC815\uB2F5 \uB2E8\uC5B4 \uAD6C\uC131",syllableCount:"\uC74C\uC808 \uC218",syllableN:"{{n}}\uC74C\uC808",syllableNPlus:"{{n}}\uC74C\uC808 \uC774\uC0C1",onset:"\uCD08\uC131",vowel:"\uBAA8\uC74C",coda:"\uC885\uC131",filter:{searchOptionsTitle:"\uB300\uB9BD \uC124\uC815",searchModeLabel:"\uB300\uB9BD \uBC29\uC2DD",countLabel:"\uC785\uB825 \uC74C\uC808 \uAC2F\uC218",inputModeLabel:"\uC785\uB825 \uBC29\uC2DD",phonemeOrder:"\uC785\uB825 \uC74C\uC808 \uC704\uCE58",phonemeOrderInfo:["\uC77C\uCE58: \uB300\uB9BD\uC30D\uC774 \uC815\uD655\uD788 \uAC19\uC740 \uC704\uCE58(\uC74C\uC808)\uC5D0\uC11C\uB9CC \uCC28\uC774 \uB098\uC57C \uB9E4\uCE6D\uB3FC\uC694.","\uBB34\uAD00: \uCC28\uC774 \uB098\uB294 \uC704\uCE58\uB294 \uC0C1\uAD00\uC5C6\uC774 \uB9E4\uCE6D\uB3FC\uC694."],orderAny:"\uBB34\uAD00",orderMatch:"\uC77C\uCE58",difficultyInfo:["1\uB4F1\uAE09 : \uD559\uB839\uC804\uAE30\uC5D0 \uC2B5\uB4DD\uD558\uC5EC \uD3C9\uC0DD\uC5D0 \uAC78\uCCD0 \uC77C\uC0C1 \uC5B8\uC5B4\uC0DD\uD65C\uC744 \uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uB294 \uC5B4\uD718","2\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 1-2\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","3\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 3-4\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","4\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 5-6\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","\uB4F1\uAE09\uC5C6\uC74C : \uAD6D\uB9BD\uAD6D\uC5B4\uC6D0 \uD45C\uC900 \uC5B4\uD718 \uC678 \uACE0\uBE48\uB3C4 \uC0DD\uD65C \uC5B4\uD718, \uC2E0\uC870\uC5B4 \uBC0F \uC678\uB798\uC5B4"],selectLabel:"\uC120\uD0DD",onlyHasImage:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC",onlySameStructure:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC"},searchLabel:{error:"\uB370\uC774\uD130 \uBD88\uB7EC\uC624\uAE30 \uC2E4\uD328",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026"},confirmMessage:"\uC120\uD0DD\uD55C {{unit}} {{count}}\uAC1C\uB97C \uD3EC\uD568\uD55C \uB2E8\uC5B4 \uD45C \uC815\uBCF4\uAC00 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4.",resetOptions:"\uAC80\uC0C9 \uC635\uC158 \uCD08\uAE30\uD654",phonemeContrast:"\uB300\uB9BD {{n}}\uBC88 \uC74C\uC808",infoNotes:["\uBBF8\uB9AC\uBCF4\uAE30 \uAE00\uC790\uB294 \uC120\uD0DD\uD55C \uC74C\uC18C\uC758 \uC870\uD569 \uC608\uC2DC\uC785\uB2C8\uB2E4. \uC2E4\uC81C \uAC80\uC0C9\uC740 \uD574\uB2F9 \uC74C\uC18C\uAC00 \uD3EC\uD568\uB41C \uBAA8\uB4E0 \uB2E8\uC5B4\uB97C \uB300\uC0C1\uC73C\uB85C \uD569\uB2C8\uB2E4.","\uCD08\uC131 '\u3147'\uC740 \uC120\uD0DD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E8\uC5B4 \uC55E\uC5D0 \uC624\uB294 \u3147\uC740 \uC2E4\uC9C8\uC801\uC73C\uB85C \uBB34\uC74C\uC774\uC5B4\uC11C \uB300\uB9BD\uC30D \uC131\uB9BD\uC5D0 \uC601\uD5A5\uC744 \uC8FC\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uCD08\uC131\uACFC \uC885\uC131\uB9CC \uC120\uD0DD\uD558\uBA74 \uBAA8\uC74C\uC740 '\u314F'\uB85C \uC790\uB3D9 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC74C\uC18C \uAC1C\uC218\uB97C \uB298\uB9AC\uBA74 \uAC01 \uC74C\uC18C \uC0AC\uC774\uC758 \uB300\uB9BD\uC30D\uC744 \uAC80\uC0C9\uD569\uB2C8\uB2E4."]},Ta={sentenceTyping:{roundCount:"{{rounds}}\uBB38\uC81C \xB7 \uBB38\uC81C\uB2F9 {{timeLimit}}\uCD08"},wordDefense:{me:"\uB098"},dictation:{title:"\uBC1B\uC544\uC4F0\uAE30",desc:"\uBB38\uC7A5\uC744 \uB4E3\uACE0 \uC815\uD655\uD788 \uBC1B\uC544\uC801\uB294 \uC5F0\uC2B5\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC74C\uC131 \uC7AC\uC0DD, \uC785\uB825 \uD544\uB4DC, \uC815\uB2F5 \uBE44\uAD50"},result:{heading:"{{number}}\uB2E8\uACC4 \uD574\uB2F5",retry:"\uB2E4\uC2DC \uD480\uAE30"},common:{accuracy:"{{pct}}% \uC815\uD655\uB3C4"},soundMatch:{title:"\uC18C\uB9AC \uB9E4\uCE6D",desc:"\uAC19\uC740 \uC18C\uB9AC\uB97C \uAC00\uC9C4 \uB2E8\uC5B4 \uB610\uB294 \uBB38\uC7A5\uC744 \uBE60\uB974\uAC8C \uB9E4\uCE6D\uD558\uB294 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uD50C\uB808\uC774 \uBC84\uD2BC, \uD0C0\uC774\uBA38, \uC810\uC218 \uC9D1\uACC4"},orderSequence:{title:"\uBB38\uC7A5 \uC21C\uC11C\uD654",desc:"\uD769\uC5B4\uC9C4 \uBB38\uC7A5 \uC870\uAC01\uC744 \uC62C\uBC14\uB978 \uC21C\uC11C\uB85C \uBC30\uC5F4\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uBB38\uC7A5 \uC138\uD2B8, \uC21C\uC11C \uD655\uC778 \uC778\uD130\uD398\uC774\uC2A4"},speedListen:{title:"\uC18D\uB3C4 \uB4E3\uAE30",desc:"\uC2DC\uAC04 \uC81C\uD55C \uB0B4\uC5D0 \uBB38\uC7A5\uC758 \uB2E8\uC5B4 \uC218\uB97C \uB9DE\uCD94\uB294 \uB3C4\uC804\uD615 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC81C\uD55C\uC2DC\uAC04, \uC810\uC218\uD310"},noiseChallenge:{title:"\uC18C\uC74C \uCC4C\uB9B0\uC9C0",desc:"\uBC30\uACBD \uC18C\uC74C \uC18D\uC5D0\uC11C \uBB38\uC7A5\uC744 \uBD84\uBCC4\uD558\uB294 \uC5F0\uC2B5\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uB2E4\uC591\uD55C \uC18C\uC74C \uB808\uBCA8, \uC810\uC218 \uC9D1\uACC4"},fastListen:{title:"\uBE60\uB978 \uB4E3\uAE30",desc:"\uC9E7\uC740 \uBB38\uC7A5\uC744 \uBE60\uB974\uAC8C \uB4E4\uB824\uC8FC\uACE0 \uD575\uC2EC \uB2E8\uC5B4\uB97C \uC120\uD0DD\uD558\uB294 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uB09C\uC774\uB3C4\uBCC4 \uC18D\uB3C4, \uD0C0\uC774\uBA38"},shadowing:{title:"\uC250\uB3C4\uC789",desc:"\uBB38\uC7A5\uC744 \uB530\uB77C \uB9D0\uD558\uBA70 \uBC1C\uC74C\uACFC \uC5B5\uC591\uC744 \uC5F0\uC2B5\uD558\uB294 \uBAA8\uB4DC\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC7AC\uC0DD, \uB179\uC74C, \uBE44\uAD50 \uD53C\uB4DC\uBC31"},phonemeHunt:{title:"\uC74C\uC6B4 \uCC3E\uAE30",desc:"\uD2B9\uC815 \uC74C\uC6B4(\uBC1C\uC74C)\uC744 \uD3EC\uD568\uD55C \uB2E8\uC5B4\uB97C \uCC3E\uC544\uB0B4\uB294 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC74C\uC6B4 \uD544\uD130, \uD78C\uD2B8 \uAE30\uB2A5"}},_a={lead:`\uC544\uC774\uD574\uBE0C\uB294 \uC18C\uB9AC\uB97C \uD1B5\uD574
|
|
1
|
+
"use strict";var s=require("react"),se=require("react-i18next"),re=require("i18next"),Dt=typeof document<"u"?document.currentScript:null;function Wo(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if(n!=="default"){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var hn=Wo(s);function Yo({storageKey:e="fontScale",baseFont:t=20,minScale:n=.8,maxScale:o=1.4,step:r=.1,lineHeightRatio:a=1.4}={}){const u=w=>Math.max(n,Math.min(o,Number(w))),i=w=>{try{const E=localStorage.getItem(w),N=E?Number(E):1;return Number.isFinite(N)?u(N):u(1)}catch{return u(1)}},[l,c]=s.useState(()=>i(e)),[g,d]=s.useState(e);g!==e&&(d(e),c(i(e))),s.useEffect(()=>{try{localStorage.setItem(e,String(l))}catch{}},[e,l]);const C=w=>{c(typeof w=="function"?E=>u(w(E)):u(w))},f=()=>C(w=>+(w+r).toFixed(6)),m=()=>C(w=>+(w-r).toFixed(6)),S=l<o-Number.EPSILON,h=l>n+Number.EPSILON,p=Math.round(t*l),y=Math.round(p*a);return{scale:l,setScale:C,increase:f,decrease:m,canIncrease:S,canDecrease:h,fontSize:p,lineHeight:y}}const yn=s.createContext(null);function Ko(e){return/max-width:\s*7[0-9][0-9]px/.test(e)}const bn=e=>typeof window>"u"||!window.matchMedia?!1:window.matchMedia(e).matches;function Uo(e){const t=s.useCallback(n=>{if(typeof window>"u"||!window.matchMedia)return()=>{};const o=window.matchMedia(e);return o.addEventListener?o.addEventListener("change",n):o.addListener&&o.addListener(n),()=>{o.removeEventListener?o.removeEventListener("change",n):o.removeListener&&o.removeListener(n)}},[e]);return hn.useSyncExternalStore(t,()=>bn(e),()=>!1)}function zo(e){const[t,n]=s.useState(bn(e));return s.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const o=window.matchMedia(e),r=u=>n(u.matches),a=o;return a.addEventListener?a.addEventListener("change",r):a.addListener&&a.addListener(r),n(o.matches),()=>{a.removeEventListener?a.removeEventListener("change",r):a.removeListener&&a.removeListener(r)}},[e]),t}const qo=typeof hn.useSyncExternalStore=="function"?Uo:zo;function Jo(e){const t=s.useContext(yn),n=qo(e);return t&&typeof t.mobile=="boolean"&&Ko(e)?t.mobile:n}function Sn(e){const t=s.useRef(e);return s.useEffect(()=>{t.current=e}),t}function wn(e,t){const n=Sn(t);s.useEffect(()=>{const o=()=>n.current();try{window.addEventListener(e,o)}catch{}return()=>{try{window.removeEventListener(e,o)}catch{}}},[e,n])}const Tt=" \xB7 ",En=(()=>{if(typeof document>"u")return"";const e=document.title;return e.includes(Tt)?e.split(Tt).pop()??e:e})(),vn=s.createContext(!1),be=[];let An=null;function Qo(e){const t=s.useContext(vn);s.useEffect(()=>{if(t||typeof e!="string"||!e)return;be.length===0&&(An=document.title);const n={text:En?`${e}${Tt}${En}`:e};return be.push(n),document.title=n.text,()=>{const o=be.lastIndexOf(n);o>=0&&be.splice(o,1),document.title=be.length?be[be.length-1].text:An??document.title}},[e,t])}const Zo=/^(\d{4}-\d{2}-\d{2})[T ](\d{2}:\d{2})(?::(\d{2})(?:\.(\d+))?)?$/;function Xo(e){let t;if(e instanceof Date)t=e;else if(typeof e=="string"){const n=e.trim(),o=Zo.exec(n);t=new Date(o?`${o[1]}T${o[2]}:${o[3]??"00"}${o[4]?`.${o[4].slice(0,3).padEnd(3,"0")}`:""}+09:00`:n)}else t=new Date(e);return Number.isNaN(t.getTime())?null:t}function Oe(){return Re(new Date)}function Re(e){if(e==null||e==="")return"";const t=Xo(e);return t?new Intl.DateTimeFormat("fr-CA",{timeZone:"Asia/Seoul"}).format(t):""}function er(e,t){const[n,o,r]=e.split("-").map(Number),[a,u,i]=t.split("-").map(Number);return Math.round((Date.UTC(a,u-1,i)-Date.UTC(n,o-1,r))/864e5)}function tr(){const{t:e}=se.useTranslation();return s.useCallback(t=>{if(!t)return"";const n=Re(t);if(!n)return"";const o=er(n,Oe());return o<=0?e("myHomework.relativeDay.today","\uC624\uB298"):o===1?e("myHomework.relativeDay.yesterday","\uC5B4\uC81C"):e("myHomework.relativeDay.daysAgo",{n:o})},[e])}const nr=()=>{const e="\uC54C \uC218 \uC5C6\uB294 \uC624\uB958",t=typeof re?.t=="function"?re.t("common.unknownError",{defaultValue:e}):void 0;return typeof t=="string"&&t?t:e};function or(e,t){if(t===void 0&&(t=nr()),e instanceof Error)return e.message||t;if(typeof e=="string")return e||t;if(e&&typeof e=="object"){const n=e;for(const o of[n.message,n.error_description,n.error])if(typeof o=="string"&&o)return o}return t}function rr(e){const{t}=se.useTranslation(),[n,o]=s.useState({current:"",next:"",confirm:""}),[r,a]=s.useState(null),[u,i]=s.useState(!1),l=s.useRef(null),c=s.useRef(!1);s.useEffect(()=>()=>{l.current!==null&&clearTimeout(l.current)},[]);const g=s.useCallback(()=>{o({current:"",next:"",confirm:""}),a(null)},[]),d=s.useCallback(async()=>{if(c.current)return;if(!n.current){a({type:"error",text:t("account.security.password.currentRequired","\uD604\uC7AC \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.")});return}if(!n.next){a({type:"error",text:t("account.security.password.newRequired","\uC0C8 \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.")});return}if(n.next!==n.confirm){a({type:"error",text:t("account.security.password.mismatch","\uC0C8 \uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.")});return}i(!0),c.current=!0;let C;try{C=e?await e(n.current,n.next):null}catch(f){C=or(f)}finally{c.current=!1,i(!1)}if(C){a({type:"error",text:C});return}a({type:"success",text:t("account.security.password.changed","\uBE44\uBC00\uBC88\uD638\uAC00 \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.")}),o({current:"",next:"",confirm:""}),l.current!==null&&clearTimeout(l.current),l.current=setTimeout(()=>a(null),1500)},[n,e,t]);return{pw:n,setPw:o,pwMsg:r,setPwMsg:a,pwLoading:u,handleChangePw:d,reset:g}}const ar={\u3131:"\u3131",\u3132:"\u3131",\u314B:"\u3131",\u3133:"\u3131",\u313A:"\u3131",\u3134:"\u3134",\u3135:"\u3134",\u3136:"\u3134",\u3137:"\u3137",\u3145:"\u3137",\u3146:"\u3137",\u3148:"\u3137",\u314A:"\u3137",\u314C:"\u3137",\u314E:"\u3137",\u3139:"\u3139",\u313C:"\u3139",\u313D:"\u3139",\u313E:"\u3139",\u3140:"\u3139",\u3141:"\u3141",\u313B:"\u3141",\u3142:"\u3142",\u314D:"\u3142",\u313F:"\u3142",\u3144:"\u3142",\u3147:"\u3147"},Nt={\u314F:{nucleus:"\u314F"},\u3151:{glide:"j",nucleus:"\u314F"},\u3153:{nucleus:"\u3153"},\u3155:{glide:"j",nucleus:"\u3153"},\u3157:{nucleus:"\u3157"},\u315B:{glide:"j",nucleus:"\u3157"},\u315C:{nucleus:"\u315C"},\u3160:{glide:"j",nucleus:"\u315C"},\u3161:{nucleus:"\u3161"},\u3163:{nucleus:"\u3163"},\u3150:{nucleus:"\u3154/\u3150"},\u3152:{glide:"j",nucleus:"\u3154/\u3150"},\u3154:{nucleus:"\u3154/\u3150"},\u3156:{glide:"j",nucleus:"\u3154/\u3150"},\u3158:{glide:"w",nucleus:"\u314F"},\u3159:{glide:"w",nucleus:"\u3154/\u3150"},\u315A:{glide:"w",nucleus:"\u3154/\u3150"},\u315D:{glide:"w",nucleus:"\u3153"},\u315E:{glide:"w",nucleus:"\u3154/\u3150"},\u315F:{glide:"w",nucleus:"\u3163"},\u3162:{glide:"\u0270",nucleus:"\u3163"}};function ur(e,t){return(Nt[e]?.glide??"")!==(Nt[t]?.glide??"")}function Pe(e){return ar[e]??e}const Q=["\u3131","\u3132","\u3134","\u3137","\u3138","\u3139","\u3141","\u3142","\u3143","\u3145","\u3146","\u3147","\u3148","\u3149","\u314A","\u314B","\u314C","\u314D","\u314E"],te=["\u314F","\u3150","\u3151","\u3152","\u3153","\u3154","\u3155","\u3156","\u3157","\u3158","\u3159","\u315A","\u315B","\u315C","\u315D","\u315E","\u315F","\u3160","\u3161","\u3162","\u3163"],oe=["","\u3131","\u3132","\u3133","\u3134","\u3135","\u3136","\u3137","\u3139","\u313A","\u313B","\u313C","\u313D","\u313E","\u313F","\u3140","\u3141","\u3142","\u3144","\u3145","\u3146","\u3147","\u3148","\u314A","\u314B","\u314C","\u314D","\u314E"];function V(e){if(!e)return null;const t=e.charCodeAt(0)-44032;return t<0||t>=11172?null:{cho:Math.floor(t/588),jung:Math.floor(t%588/28),jong:t%28}}function ir(){const e=new Map;return t=>{let n=e.get(t);return n||(n=[...t].map(o=>V(o)),e.set(t,n)),n}}function fe(e,t,n=0){return String.fromCharCode(44032+(e*21+t)*28+n)}function lr(e,t){if(!e||!t||e===t||e.length!==t.length)return"random";let n=0,o=null;for(let r=0;r<e.length;r++){const a=V(e[r]),u=V(t[r]);if(!a||!u)return"random";if(a.cho===u.cho&&a.jung===u.jung&&a.jong===u.jong)continue;n++;const i=a.cho!==u.cho,l=a.jung!==u.jung,c=a.jong!==u.jong;(i?1:0)+(l?1:0)+(c?1:0)>1?o="multi":i?o="cho":l?o="jung":o="jong"}return n!==1?"random":o==="cho"?"cho":o==="jung"?"jung":o==="jong"?"jong":"random"}const rt={3:["\u3131","\u3145"],5:["\u3134","\u3148"],6:["\u3134","\u314E"],9:["\u3139","\u3131"],10:["\u3139","\u3141"],11:["\u3139","\u3142"],12:["\u3139","\u3145"],13:["\u3139","\u314C"],14:["\u3139","\u314D"],15:["\u3139","\u314E"],18:["\u3142","\u3145"]};Object.fromEntries(Object.entries(rt).map(([e,t])=>[t.join(""),oe[Number(e)]]));function sr(e,t){if(!e||!t)return!1;for(const n of e){const o=V(n);if(o){if(Q[o.cho]===t)return!0;if(o.jong>0){if(oe[o.jong]===t)return!0;const r=rt[o.jong];if(r&&r.includes(t))return!0}}}return!1}function cr(e,t,n){const o=oe[e];return o===t?!0:n==="phoneme"&&Pe(o)===Pe(t)}function Me(e){if(!e)return 0;let t=0;for(const n of e)V(n)&&t++;return t}function dr(e){if(!e)return!1;let t=!1;for(const n of e){const o=V(n);if(o&&(t=!0,o.jong>0))return!1}return t}function Cr(e,t,n){return e.jong<=0?!1:t.some(o=>cr(e.jong,o,n))}function gr(e,t,n,o="glyph"){if(!e)return!1;const r=[...e],a=u=>{const i=V(r[u]);if(!i||t.cho&&!t.cho.includes(Q[i.cho])||t.jung&&!t.jung.includes(te[i.jung]))return!1;if(t.jongNone){if(i.jong>0)return!1}else if(t.jong&&!Cr(i,t.jong,o))return!1;return!0};if(n==="head")return a(0);if(n==="tail")return a(r.length-1);if(n==="mid"){for(let u=1;u<r.length-1;u++)if(a(u))return!0;return!1}for(let u=0;u<r.length;u++)if(a(u))return!0;return!1}const fr={cho:Q.length,jung:te.length,jong:oe.length};function mr(e,t,n,o,r=1/0){if(!e||n<1)return[];const a=[...e].map(d=>V(d));if(a.some(d=>!d))return[];const u=a,i=u.length;if(n>i)return[];const l=fr[t],c=new Set,g=[];(function d(C,f){if(f.length===n){g.push([...f]);return}for(let m=C;m<i;m++)f.push(m),d(m+1,f),f.pop()})(0,[]);for(const d of g)if((function C(f,m){if(c.size>=r)return;if(f===d.length){const p=m.map(y=>fe(y.cho,y.jung,y.jong)).join("");p!==e&&o.has(p)&&c.add(p);return}const S=d[f],h=u[S][t];for(let p=0;p<l;p++){if(p===h)continue;const y=m.slice();if(y[S]={...m[S],[t]:p},C(f+1,y),c.size>=r)return}})(0,u),c.size>=r)break;return[...c]}function pr(e,t){if(!e||!t||e.length!==t.length)return-1;let n=0;for(let o=0;o<e.length;o++){const r=V(e[o]),a=V(t[o]);if(!r||!a)return-1;r.cho!==a.cho&&n++,r.jung!==a.jung&&n++,r.jong!==a.jong&&n++}return n}const Bn="word_pair_index_v2",Dn="word_pair_index_sig_v2";let Ie=null;function hr(){try{if(typeof localStorage>"u")return null;const e=localStorage.getItem(Bn),t=localStorage.getItem(Dn);return!e||!t?null:{index:JSON.parse(e),sig:t}}catch{return null}}function ke(){if(Ie)return Ie;const e=hr();return e?(Ie=e.index,e.sig,Ie):null}function yr(){Ie=null;try{typeof localStorage<"u"&&(localStorage.removeItem(Bn),localStorage.removeItem(Dn))}catch{}}const Tn="word_image_existence_map_v1";let Te=null,xe=0,Nn=-1,Fe=null,_n=-1,Ln=new Set;function On(){if(Te)return Te;try{const e=typeof localStorage<"u"?localStorage.getItem(Tn):null,t=e?JSON.parse(e):null;Te=t&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{Te={}}return Te}function Rn(){const e=On();if(Nn===xe)return Fe?{...Fe}:null;const t=Object.values(e);return Fe=t.length===0?null:{total:t.length,exists:t.filter(Boolean).length},Nn=xe,Fe?{...Fe}:null}function Pn(){const e=On();if(_n===xe)return Ln;const t=new Set;for(const n in e)e[n]===!0&&n.endsWith("_1")&&t.add(n.slice(0,-2));return Ln=t,_n=xe,t}function br(){Te={},xe++;try{typeof localStorage<"u"&&localStorage.removeItem(Tn)}catch{}}const Mn=[{id:"wordData",labelKey:"settings.cache.group.wordData.label",subKey:"settings.cache.group.wordData.sub",keys:["word_data_cache","word_data_version"]},{id:"pairIndex",labelKey:"settings.cache.group.pairIndex.label",subKey:"settings.cache.group.pairIndex.sub",keys:["word_pair_index_v2","word_pair_index_sig_v2"]},{id:"imageCache",labelKey:"settings.cache.group.imageCache.label",subKey:"settings.cache.group.imageCache.sub",keys:["word_image_existence_map_v1"]}];function In(e){return e.reduce((t,n)=>{try{const o=localStorage.getItem(n);return t+(o?new Blob([o]).size:0)}catch{return t}},0)}function Sr(e){return e===0?"0 B":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(2)} MB`:`${(e/(1024*1024*1024)).toFixed(2)} GB`}function wr(e){const{t}=se.useTranslation(),[n,o]=s.useState({}),[r,a]=s.useState(null),[u,i]=s.useState(null),[l,c]=s.useState(null),g=s.useCallback(()=>{const C={};Mn.forEach(f=>{C[f.id]=In([...f.keys])}),o(C),typeof navigator<"u"&&navigator.storage?.estimate&&navigator.storage.estimate().then(f=>{c({usage:f.usage??0,quota:f.quota??0})}).catch(()=>{})},[]);s.useEffect(()=>{g()},[g]);const d=s.useCallback(async C=>{a(C);try{C==="wordData"?(localStorage.removeItem("word_data_cache"),localStorage.removeItem("word_data_version")):C==="pairIndex"?yr():C==="imageCache"&&br(),g(),e?.(t("settings.cache.cleared","\uCE90\uC2DC\uAC00 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4."))}finally{a(null)}},[g,e,t]);return{cacheSizes:n,clearingId:r,confirmCacheId:u,setConfirmCacheId:i,storageEstimate:l,refreshCacheSizes:g,handleClearCache:d}}function Er(e){const[t,n]=s.useState(null),[o,r]=s.useState(null),a=s.useCallback(()=>{const u=ke();if(u){const l=Object.values(u),c=l.filter(g=>g.cho.length+g.jung.length+g.jong.length>0).length;n({matched:c,total:l.length})}else n(null);const i=Rn();r(i?{exists:i.exists,total:i.total}:null)},[]);return s.useEffect(()=>{a();const u=setTimeout(a,1e3);return()=>clearTimeout(u)},[e?.length,a]),{pairStats:t,imgStats:o,setPairStats:n,setImgStats:r,refreshStats:a}}function Se(e,t){if(e===t)return!0;const n=e?.id,o=t?.id;return n!=null&&n!==""&&n===o}function kn(e,t=[]){const[n,o]=s.useState(t),[r,a]=s.useState(null),[u,i]=s.useState(!1),[l,c]=s.useState(e),g=s.useRef(!1),d=s.useRef(null);s.useEffect(()=>{if(u)return;if(g.current){g.current=!1;return}const p=d.current;p!==null&&p.length===t.length&&p.every((y,w)=>y===t[w])||(d.current=t,o(t),a(y=>y==null?y:t.find(w=>Se(w,y))??y))},[t,u]),s.useEffect(()=>{!u&&r!=null&&c({...r})},[u,r]);const C=s.useCallback(p=>{a(p),i(!1),c({...p})},[]),f=s.useCallback(()=>i(!0),[]),m=s.useCallback(()=>i(!1),[]),S=s.useCallback((p,y)=>{o(p),a(y),i(w=>(w&&(g.current=!0),!1))},[]),h=s.useCallback(p=>{o(y=>y.filter(w=>!Se(w,p))),a(null)},[]);return{list:n,setList:o,selected:r,setSelected:a,isEditing:u,setIsEditing:i,editForm:l,setEditForm:c,openDetail:C,startEditing:f,cancelEditing:m,commitEdit:S,remove:h}}const je=()=>{const[e,t,n]=Oe().split("-");return{year:e,month:t,day:n}},vr={year:"",month:"",day:"",hour:"09",minute:"00",memo:""};function Ar(e=[]){const{list:t,setList:n,selected:o,setSelected:r,isEditing:a,setIsEditing:u,editForm:i,setEditForm:l,openDetail:c,commitEdit:g}=kn(vr,e),{year:d,month:C,day:f}=je(),[m,S]=s.useState({year:d,month:C,day:f,hour:"09",minute:"00",memo:""});return{visitHistory:t,visitForm:m,setVisitForm:S,setVisit:h=>p=>S(y=>({...y,[h]:p})),selectedVisit:o,setSelectedVisit:r,isEditingVisit:a,setIsEditingVisit:u,editVisitForm:i,setEditVisitForm:l,openVisitDetail:c,handleVisitSave:h=>{n(E=>[m,...E]);const{year:p,month:y,day:w}=je();S({year:p,month:y,day:w,hour:"09",minute:"00",memo:""}),h?.()},handleVisitEditSave:()=>{g(h=>h.map(p=>o!=null&&Se(p,o)?i:p),i)},addVisit:h=>{n(p=>[h,...p])},removeVisit:h=>{n(p=>p.filter(y=>!Se(y,h)))},revertVisitEdit:(h,p)=>{n(y=>y.map(w=>w===p?h:w)),r(y=>y===p?h:y)}}}const xn=e=>`${e.year.padStart(4,"0")}-${e.month.padStart(2,"0")}-${e.day.padStart(2,"0")} ${e.hour.padStart(2,"0")}:${e.minute.padStart(2,"0")}`,$e=e=>[...e].sort((t,n)=>{const o=xn(t),r=xn(n);return o<r?-1:o>r?1:0}),Br={year:"",month:"",day:"",hour:"09",minute:"00",memo:""};function Dr(e,t=[]){const n=s.useMemo(()=>$e(t),[t]),{list:o,setList:r,selected:a,setSelected:u,isEditing:i,setIsEditing:l,editForm:c,setEditForm:g,openDetail:d,commitEdit:C,remove:f}=kn(Br,n),[m,S]=s.useState([]),{year:h,month:p,day:y}=je(),[w,E]=s.useState({year:h,month:p,day:y,hour:"09",minute:"00",memo:""}),N=O=>k=>E(W=>({...W,[O]:k})),B=O=>{r(U=>$e([...U,w]));const{year:k,month:W,day:X}=je();E({year:k,month:W,day:X,hour:"09",minute:"00",memo:""}),O?.()},T=()=>{C(O=>$e(O.map(k=>a!=null&&Se(k,a)?c:k)),c)},A=s.useCallback(O=>{f(O)},[f]),I=s.useCallback(O=>{e({year:O.year,month:O.month,day:O.day,hour:O.hour,minute:O.minute,memo:O.memo,...O.id!=null?{id:O.id}:{}}),f(O)},[e,f]),D=s.useCallback(O=>{r(k=>k.filter(W=>!Se(W,O))),S(k=>[O,...k]),u(null)},[r,u]),$=s.useCallback(O=>{r(k=>$e([...k,O]))},[r]),j=s.useCallback(O=>{r(k=>k.filter(W=>!Se(W,O)))},[r]),M=s.useCallback((O,k)=>{r(W=>$e(W.map(X=>X===k?O:X))),u(W=>W===k?O:W)},[r,u]);return{scheduleList:o,noShowList:m,addSchedule:$,removeSchedule:j,revertScheduleEdit:M,scheduleForm:w,setScheduleForm:E,setSchedule:N,selectedSchedule:a,setSelectedSchedule:u,isEditingSchedule:i,setIsEditingSchedule:l,editScheduleForm:c,setEditScheduleForm:g,openScheduleDetail:d,handleScheduleSave:B,handleScheduleEditSave:T,handleScheduleDelete:A,handleScheduleToVisit:I,handleScheduleNoVisit:D}}const at=[{value:"10",label:"10\uAC1C\uC529 \uBCF4\uAE30"},{value:"25",label:"25\uAC1C\uC529 \uBCF4\uAE30"},{value:"50",label:"50\uAC1C\uC529 \uBCF4\uAE30"},{value:"100",label:"100\uAC1C\uC529 \uBCF4\uAE30"}];function Tr(e){const{t}=se.useTranslation(),[n,o]=s.useState(""),[r,a]=s.useState("25"),[u,i]=s.useState("all"),[l,c]=s.useState(1),g=s.useMemo(()=>e.filter(({item:S,status:h})=>!(n&&!S.memo.includes(n)||u!=="all"&&h!==u)),[e,n,u]),d=Math.max(1,Math.ceil(g.length/Number(r))),C=Math.min(l,d),f=s.useMemo(()=>g.slice((C-1)*Number(r),C*Number(r)),[g,C,r]),m=s.useMemo(()=>at.map(S=>({...S,label:t("common.pageSizeLabel",{n:S.value,defaultValue:S.label})})),[t]);return{vapSearch:n,setVapSearch:o,vapPageSize:r,setVapPageSize:a,vapPageSizeOptions:m,vapStatus:u,setVapStatus:i,vapPage:C,setVapPage:c,vapFiltered:g,vapTotal:d,vapPageItems:f}}const Nr=(()=>{let e=null;return()=>(e||(e=new Intl.Collator("ko")),e)})();function Fn(e,t){return Nr().compare(e,t)}const ut=new Map;function _r(e){const t=ut.get(e);if(t)return t;const n=[],o=/-?\d+(?:\.\d+)?/g;let r=0;for(let a=o.exec(e);a;a=o.exec(e)){let u=a.index,i=a[0];i[0]==="-"&&u>0&&!/\s/.test(e[u-1])&&(u+=1,i=i.slice(1)),u>r&&n.push(e.slice(r,u)),n.push(Number(i)),r=a.index+a[0].length}return r<e.length&&n.push(e.slice(r)),ut.size>5e3&&ut.clear(),ut.set(e,n),n}function Lr(e){if(!/^[\d\s-]+$/.test(e))return null;const t=e.replace(/\D/g,"");return t.length<9||t.length>11?null:t[0]==="0"||t[0]==="1"&&e!==t?t:null}function Or(e,t){const n=c=>c==null||typeof c=="number"&&Number.isNaN(c)?"":String(c).trim(),o=n(e),r=n(t);if(o===r)return 0;const a=(c,g)=>{if(typeof c=="number"&&!Number.isNaN(c))return[c];const d=Lr(g);return d!==null?[d]:_r(g)},u=a(e,o),i=a(t,r),l=Math.min(u.length,i.length);for(let c=0;c<l;c++){const g=u[c],d=i[c];if(typeof g=="number"&&typeof d=="number"){if(g!==d)return g-d;continue}if(typeof g=="number")return-1;if(typeof d=="number")return 1;const C=Fn(g,d);if(C!==0)return C}return u.length!==i.length?u.length-i.length:Fn(o,r)}const jn=e=>e==null||typeof e=="number"&&Number.isNaN(e)||typeof e=="string"&&e.trim()==="";function Rr(e,t,n){const o=jn(e),r=jn(t);if(o||r)return o===r?0:o?1:-1;const a=Or(e,t);return n?a:-a}function Pr(e,t,n){const{t:o}=se.useTranslation(),[r,a]=s.useState(()=>{const m=n?.initialPageSize;return m&&at.some(S=>S.value===m)?m:"25"}),[u,i]=s.useState(1),[l,c]=s.useState(t);Object.is(l,t)||(c(t),u!==1&&i(1));const g=s.useMemo(()=>at.map(m=>({...m,label:o("visits.showN",{n:m.value})})),[o]),d=s.useCallback(m=>{a(m),i(1)},[]),C=Math.max(1,Math.ceil(e.length/Number(r)));(u>C||u<1||!Number.isFinite(u))&&i(Math.min(Math.max(1,Number.isFinite(u)?u:1),C));const f=Math.min(Math.max(1,Number.isFinite(u)?u:1),C);return{pageRows:s.useMemo(()=>e.slice((f-1)*Number(r),f*Number(r)),[e,f,r]),pageSizeProps:{options:g,value:r,onChange:d},paginationProps:{page:f,total:C,onChange:i},setPage:i}}function Mr(e){const[t,n]=s.useState(null),o=s.useRef(t),r=s.useRef(e?.onSortChange);r.current=e?.onSortChange;const a=s.useCallback(l=>{const c=o.current,g=c?.key===l?{key:l,asc:!c.asc}:{key:l,asc:!0};o.current=g,n(g),r.current?.(g)},[]),u=s.useCallback((l,c)=>({label:l,sortDir:t?.key===c?t.asc?"asc":"desc":null,onClick:()=>a(c)}),[t,a]),i=s.useCallback((l,c)=>{if(!t)return l;const{key:g,asc:d}=t;return[...l].sort((C,f)=>Rr(c(C,g),c(f,g),d))},[t]);return{sort:t,field:u,sortRows:i}}const $n=e=>e==="left"||e==="right"?e:null;function Ir(){const[e,t]=s.useState(!1),[n,o]=s.useState("left"),[r,a]=s.useState({left:null,right:null}),[u,i]=s.useState({left:[],right:[]}),[l,c]=s.useState(!1),[g,d]=s.useState("left"),C=s.useCallback(m=>{const S=$n(m.direction);S&&(a(h=>({...h,[S]:m})),i(h=>({...h,[S]:[m,...h[S]]})),t(!1))},[]),f=s.useCallback(m=>{const S=$n(m.direction);S&&(a(h=>({...h,[S]:m})),c(!1))},[]);return{showDevice:e,setShowDevice:t,deviceDirection:n,setDeviceDirection:o,devices:r,setDevices:a,deviceHistory:u,setDeviceHistory:i,showDeviceList:l,setShowDeviceList:c,listForSide:g,setListForSide:d,handleDeviceSubmit:C,handleSelectFromList:f}}const kr="__ihab_core_word_pool__";function it(){return globalThis[kr]??null}function H(e,t=Math.random){const n=e.slice();for(let o=n.length-1;o>0;o--){const r=Math.floor(t()*(o+1));[n[o],n[r]]=[n[r],n[o]]}return n}function ce(e,t,n=Math.random){return!Array.isArray(e)||e.length===0||t<=0?[]:t>=e.length?H(e,n):H(e,n).slice(0,t)}const _t={SAME_SOUND_PICK:{difficulty:!0,choseong:!0,group:"discrimination"},SAME_OR_DIFF:{difficulty:!0,choseong:!0,group:"discrimination"},HEAR_AND_PICK_SAME:{difficulty:!0,choseong:!0,group:"discrimination"},HEAR_AND_PICK_INCLUDED:{difficulty:!0,choseong:!0,group:"discrimination"},STARTS_WITH_SAME_SOUND:{difficulty:!1,choseong:!0,group:"discrimination"},LISTEN_AND_REMEMBER_ORDER:{difficulty:!1,choseong:!0,group:"attention"},MERGE_2_SYLLABLES:{difficulty:!1,choseong:!0,group:"synthesis"},MERGE_3_SYLLABLES:{difficulty:!1,choseong:!0,group:"synthesis"},MERGE_2_PHONEMES:{difficulty:!1,choseong:!0,group:"synthesis"},MERGE_3_PHONEMES:{difficulty:!1,choseong:!0,group:"synthesis"},DROP_1_FROM_2SYLL:{difficulty:!1,choseong:!0,group:"deletion"},DROP_1_FROM_3SYLL:{difficulty:!1,choseong:!0,group:"deletion"},DROP_PART_FROM_COMPOUND:{difficulty:!1,choseong:!0,group:"deletion"},DROP_FINAL_CONSONANT_FROM_1SYLL:{difficulty:!1,choseong:!0,group:"deletion"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{difficulty:!1,choseong:!0,group:"deletion"},CHANGE_1_SYLL_IN_2SYLL:{difficulty:!0,choseong:!0,group:"substitution"},CHANGE_1_SYLL_IN_3SYLL:{difficulty:!0,choseong:!0,group:"substitution"},CHANGE_1_PHONEME_IN_1SYLL:{difficulty:!1,choseong:!0,group:"substitution"},CHANGE_1_PHONEME_IN_2SYLL:{difficulty:!0,choseong:!0,group:"substitution"}},Lt=Q.indexOf("\u3147"),lt={DROP_FINAL_CONSONANT_FROM_1SYLL:{syllables:1,syllable:e=>e.jong>0},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{syllables:1,syllable:e=>e.jong===0&&e.cho!==Lt},MERGE_2_SYLLABLES:{syllables:2,syllable:()=>!0},MERGE_3_SYLLABLES:{syllables:3,syllable:()=>!0},MERGE_2_PHONEMES:{syllables:1,syllable:e=>e.jong===0&&e.cho!==Lt},MERGE_3_PHONEMES:{syllables:1,syllable:e=>e.jong>0&&!rt[e.jong]&&e.cho!==Lt}},Ot={cho:Q,jung:te,jong:oe},z=e=>Array.isArray(e)?e.length>0:!!e;function Rt(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){const o=e[n],r=t[n];if(!(!o||!r)&&(o.cho!==r.cho&&Q[o.cho]==="\u3147"!=(Q[r.cho]==="\u3147")||o.jung!==r.jung&&ur(te[o.jung],te[r.jung])||o.jong!==r.jong&&o.jong===0!=(r.jong===0)))return!0}return!1}function xr(e,t,n){const o=n.pronOf(e),r=n.decompOf,a=n.sameStructureOnly&&r?r(o):null,u=[];for(const i of t)i!==e&&(n.okSet&&!n.okSet.has(i)||n.pronOf(i)!==o&&(a&&r&&Rt(a,r(n.pronOf(i)))||u.push(i)));return u}function Hn(e,t,n){const o=t?.[e];if(!o)return[];const r=n.kind?o[n.kind]??[]:[...o.cho??[],...o.jung??[],...o.jong??[]];return xr(e,r,n)}function Fr(e,t,n,o,r,a,u){const i=["cho","jung","jong"].filter(C=>z(e[C])),l={};for(const C of i){const f=e[C];l[C]=new Set(Array.isArray(f)?f:[f])}const c=r==="pron",g=new Map;for(const C of t){const f=n(a(C));if(f.some(p=>!p))continue;let m=f;if(!c&&(m=n(C),m.length!==f.length||m.some(p=>!p)))continue;const S=f.length,h=g.get(S);h?h.push({w:C,dPron:f,dPos:m}):g.set(S,[{w:C,dPron:f,dPos:m}])}const d=new Map;for(const[C,f]of g){const m=new Map,S=(h,p)=>{const y=h.dPos[p];return y!=null&&i.every(w=>l[w].has(Ot[w][y[w]]))};for(const h of f){let p;if(u==="head")p=S(h,0)?0:-1;else if(u==="tail")p=S(h,C-1)?C-1:-1;else if(u==="mid"){const w=i.includes("cho")?1:0,E=i.includes("jong")?C-2:C-1;p=-1;for(let N=w;N<=E;N++)if(S(h,N)){p=N;break}}else p=h.dPos.findIndex(w=>w!=null&&i.every(E=>l[E].has(Ot[E][w[E]])));if(p<0)continue;const y=m.get(p);y?y.push(h):m.set(p,[h])}for(const[h,p]of m){const y=i.includes("cho"),w=i.includes("jung"),E=i.includes("jong"),N=T=>{let A="";for(let I=0;I<C;I++){const D=T[I];I===h?A+=(y?"*":D.cho)+"."+(w?"*":D.jung)+"."+(E?"*":D.jong)+".":A+=D.cho+"."+D.jung+"."+D.jong+"."}return A},B=new Map;for(const T of f){const A=N(T.dPron),I=B.get(A);I?I.push(T):B.set(A,[T])}for(const T of p){const A=B.get(N(T.dPron))??[],I=[];for(const D of A){if(D.w===T.w)continue;let $=!0;for(const j of i){const M=T.dPron[h][j],O=D.dPron[h][j];if(O===M){$=!1;break}if(c&&l[j].has(Ot[j][O])){$=!1;break}}$&&(o&&Rt(T.dPron,D.dPron)||I.push(D.w))}d.set(T.w,I)}}}return d}const jr=e=>e==null?[]:Array.isArray(e)?e:[e];function $r(e){if([...e].length!==1)return"";const t=V(e);if(!t)return"";const n=Pe(oe[t.jong]),o=n===""?0:oe.indexOf(n);return fe(t.cho,t.jung,o<0?0:o)}function Gn(e,t){return t.get(e)||$r(e)||e}function st(e){return e?z(e.cho)?"cho":z(e.jung)?"jung":z(e.jong)?"jong":null:null}function we(e,t){const n=(r,a)=>!z(r)||jr(r).includes(a),o=t.jongNone?e.jong===0:n(t.jong,oe[e.jong]);return n(t.cho,Q[e.cho])&&n(t.jung,te[e.jung])&&o}function He(e,t,n){const o=[...e];if(n!=="pron")return o.map(a=>V(a));const r=[...t.get(e)||e];return r.length!==o.length?o.map(a=>V(a)):r.map(a=>V(a))}function Ge(e,t,n,o,r){const a=t==="cho"?Q:t==="jung"?te:oe,u=e[t],i=[],l=d=>t==="jung"?Gr(Gn(d,r)):Gn(d,r),c=new Map([[l(n),-1]]),g=H(a.map((d,C)=>C).filter(d=>d!==u&&(t!=="cho"||a[d]!=="\u3147")&&(t!=="jong"||d!==0)));for(const d of g){if(i.length>=o)break;const C=t==="cho"?fe(d,e.jung,e.jong):t==="jung"?fe(e.cho,d,e.jong):fe(e.cho,e.jung,d),f=l(C),m=c.get(f);if(m!==void 0){t==="jung"&&m>=0&&r.has(C)&&!r.has(i[m])&&(i[m]=C);continue}c.set(f,i.length),i.push(C)}return i}const Hr={\u3154:"\u3150",\u3156:"\u3152",\u315A:"\u3159",\u315E:"\u3159"};function Gr(e){if([...e].length!==1)return e;const t=V(e);if(!t)return e;const n=Hr[te[t.jung]];return n?fe(t.cho,te.indexOf(n),t.jong):e}function Vr(e,t,n,o,r,a=null){const u=[...e];if(u.length!==2)return null;const i=u.map(d=>V(d));if(i.some(d=>!d))return null;const l=He(e,n,o);if(l.some(d=>!d))return null;const c=st(t);let g=c&&t?l.map((d,C)=>we(d,t)?C:-1).filter(d=>d>=0):[0,1];if(a!=null&&(g=g.filter(d=>d!==a)),!g.length)return null;for(const d of H(g)){const C=u[d];if(!r.has(C))continue;const f=Ge(i[d],c??"cho",C,40,n),m=[];for(const S of f)if(S!==C&&r.has(S)&&!m.includes(S)&&m.push(S),m.length>=2)break;if(!(m.length<2))return{question:e,distractors:[C,...m]}}return null}function Wr(e,t,n,o,r,a=null){const u=[...e];if(u.length!==3)return null;const i=u.map(d=>V(d));if(i.some(d=>!d))return null;const l=He(e,n,o);if(l.some(d=>!d))return null;const c=st(t),g=c&&t?l.map((d,C)=>we(d,t)?C:-1).filter(d=>d>=0):[0,1,2];if(!g.length)return null;for(const d of H(g))for(const C of H([0,1,2].filter(f=>f!==d&&(a==null||f===a)))){const f=[0,1,2].filter(y=>y!==C),m=f.map(y=>u[y]).join("");if(!r.has(m))continue;const S=f.indexOf(d),h=Ge(i[d],c??"cho",u[d],40,n),p=[];for(const y of h){const w=f.map(N=>u[N]);w[S]=y;const E=w.join("");if(E!==m&&r.has(E)&&!p.includes(E)&&p.push(E),p.length>=2)break}if(!(p.length<2))return{question:e,distractors:[m,...p]}}return null}function Yr(e,t,n,o,r,a=null){const u=[...e],i=u.length;if(i<2)return null;const l=[];for(let g=1;g<=i-1;g++)l.push({remain:u.slice(0,g).join(""),dropped:u.slice(g).join(""),droppedEnd:1}),l.push({remain:u.slice(i-g).join(""),dropped:u.slice(0,i-g).join(""),droppedEnd:0});const c=st(t);for(const{remain:g,dropped:d,droppedEnd:C}of H(l)){if(a!=null&&C!==a||[...g].length===1&&[...d].length===1||g===e||!r.has(g)||!r.has(d))continue;const f=[...g],m=f.map(p=>V(p));if(m.some(p=>!p))continue;const S=He(g,n,o);if(S.some(p=>!p))continue;const h=c&&t?S.map((p,y)=>we(p,t)?y:-1).filter(p=>p>=0):f.map((p,y)=>y);if(h.length)for(const p of H(h)){const y=Ge(m[p],c??"cho",f[p],40,n),w=[];for(const E of y){const N=[...f];N[p]=E;const B=N.join("");if(B!==g&&r.has(B)&&!w.includes(B)&&w.push(B),w.length>=2)break}if(w.length>=2)return{question:e,distractors:[g,...w],dropped:d}}}return null}function Kr(e,t,n,o,r,a=null){if([...e].length!==1)return null;const u=V(n.get(e)||e);if(!u||u.jong===0)return null;const i=fe(u.cho,u.jung,0),l=Ge({cho:u.cho,jung:u.jung,jong:0},"cho",i,2,n);return l.length<2?null:{question:e,distractors:[i,...l]}}const Pt=Q.indexOf("\u3147");function Ur(e,t,n,o,r,a=null){if([...e].length!==1)return null;const u=V(n.get(e)||e);if(!u||u.jong!==0||u.cho===Pt)return null;const i=fe(Pt,u.jung,0),l=Ge({cho:Pt,jung:u.jung,jong:0},"jung",i,2,n);return l.length<2?null:{question:e,distractors:[i,...l]}}function zr(e){const t=new Map;for(const n of e){const o=[...n],r=o.length;if(!(r<2||r>3))for(let a=0;a<r;a++){let u=r+"|"+a+"|";for(let l=0;l<r;l++)u+=l===a?"*":o[l];const i=t.get(u);i?i.push(n):t.set(u,[n])}}return t}function qr(e,t,n,o,r,a=null,u=null,i=2){const l=[...e],c=l.length;if(c<2||c>3)return null;const g=l.map(y=>V(y));if(g.some(y=>!y))return null;const d=He(e,n,o);if(d.some(y=>!y))return null;const C=y=>n.get(y)??y,f=C(e),m=!!t&&(z(t.cho)||z(t.jung)||z(t.jong)),S=!!u&&(z(u.cho)||z(u.jung)||z(u.jong)),h=y=>{let w=c+"|"+y+"|";for(let E=0;E<c;E++)w+=E===y?"*":l[E];return w};let p;if(a!=null){if(a>=c||m&&!we(d[a],t))return null;p=[a]}else m?p=d.map((y,w)=>we(y,t)?w:-1).filter(y=>y>=0):p=Array.from({length:c},(y,w)=>w);for(const y of H(p)){const w=r.get(h(y))??[],E=[],N=[];for(const D of w){if(D===e)continue;const $=[...D].map(k=>V(k)),j=g[y],M=$[y];if(!j||!M)continue;let O=0;if(j.cho!==M.cho&&O++,j.jung!==M.jung&&O++,j.jong!==M.jong&&O++,!(O<i||C(D)===f))if(S){const k=He(D,n,o)[y];k&&we(k,u)?E.push(D):N.push(D)}else E.push(D)}if(!E.length)continue;const B=H(E)[0],T=[],A=new Set([f,C(B)]),I=S?N:E.filter(D=>D!==B);for(const D of H(I)){const $=C(D);if(!A.has($)&&(A.add($),T.push(D),T.length>=2))break}if(!S&&T.length<2)for(const D of H(w)){if(D===e||D===B)continue;const $=C(D);if(!A.has($)&&(A.add($),T.push(D),T.length>=2))break}if(!(T.length<2))return{question:e,distractors:[B,...T]}}return null}var Jr={statusFilter:"\uC0C1\uD0DC \uD544\uD130",pageSizeSelect:"\uD398\uC774\uC9C0\uB2F9 \uD45C\uC2DC \uAC1C\uC218",selectedCount:"{{count}}\uAC1C \uC120\uD0DD\uB428",selectedOfMax:"\uCD5C\uB300 {{max}}\uAC1C \uC911 {{count}}\uAC1C",cancel:"\uCDE8\uC18C",info:"\uC124\uBA85",errorState:{message:"\uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",retry:"\uB2E4\uC2DC \uC2DC\uB3C4"},save:"\uC800\uC7A5",confirm:"\uD655\uC778",discardConfirm:{title:"\uC785\uB825\uC744 \uCDE8\uC18C\uD560\uAE4C\uC694?",body:"\uC800\uC7A5\uD558\uC9C0 \uC54A\uC73C\uBA74 \uC9C0\uAE08\uAE4C\uC9C0 \uC785\uB825\uD55C \uB0B4\uC6A9\uC774 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4.",confirm:"\uC785\uB825 \uCDE8\uC18C"},close:"\uB2EB\uAE30",back:"\uB4A4\uB85C",emptyTrainingName:"\uD6C8\uB828 \uC774\uB984\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.",remove:"\uC81C\uAC70",image:"\uC774\uBBF8\uC9C0",delete:"\uC0AD\uC81C",reset:"\uCD08\uAE30\uD654",update:"\uC5C5\uB370\uC774\uD2B8",download:"\uB2E4\uC6B4\uB85C\uB4DC",likeCount:"\uC88B\uC544\uC694 {{count}}",downloadCount:"\uAC00\uC838\uAC04 \uC218 {{count}}",descriptionFor:"{{name}} \uC124\uBA85",search:"\uAC80\uC0C9",empty:"\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",yes:"\uC608",no:"\uC544\uB2C8\uC624",all:"\uC804\uCCB4",none:"\uC5C6\uC74C",days:"{{count}}\uC77C",loadMore:"\uB354\uBCF4\uAE30",more:"\uB354\uBCF4\uAE30",moreFor:"{{name}} \uB354\uBCF4\uAE30",collapseFor:"{{name}} \uC811\uAE30",expandFor:"{{name}} \uD3BC\uCE58\uAE30",sortFor:"{{name}} \uC815\uB82C",retry:"\uB2E4\uC2DC \uC2DC\uB3C4",prevPage:"\uC774\uC804 \uD398\uC774\uC9C0",nextPage:"\uB2E4\uC74C \uD398\uC774\uC9C0",play:"\uC7AC\uC0DD",playFor:"{{name}} \uC7AC\uC0DD",pauseFor:"{{name}} \uBA48\uCDA4",pause:"\uBA48\uCDA4",playPause:"\uC7AC\uC0DD / \uBA48\uCDA4",replay:"\uB2E4\uC2DC\uB4E3\uAE30",subscription:"\uC774\uC6A9\uAD8C",done:"\uC644\uB8CC",failed:"\uC2E4\uD328",continue:"\uACC4\uC18D",notification:"\uC54C\uB9BC",emptyList:"\uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",noMatches:"\uB9DE\uB294 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",menu:"\uBA54\uB274",resetSelection:"\uC120\uD0DD \uCD08\uAE30\uD654",pageSizeLabel:"{{n}}\uAC1C\uC529 \uBCF4\uAE30",totalCountPrefix:"\uCD1D ",totalCountSuffix:"\uAC1C",expand:"\uD3BC\uCE58\uAE30",collapse:"\uC811\uAE30",popup:"\uD31D\uC5C5",codeBlock:"\uCF54\uB4DC \uBE14\uB85D",totalPrefix:"\uCD1D ",copyCode:"\uCF54\uB4DC \uBCF5\uC0AC",copied:"\uBCF5\uC0AC\uB428",col:{problem:"\uBB38\uC81C"},phonetics:{place:{labial:"\uC591\uC21C\uC74C",alveolar:"\uCE58\uC870\uC74C",palatal:"\uACBD\uAD6C\uAC1C\uC74C",velar:"\uC5F0\uAD6C\uAC1C\uC74C",glottal:"\uC131\uBB38\uC74C"},vowel:{frontHigh:"\uC804\uC124 \uACE0\uBAA8\uC74C",backHighUnrounded:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uD3C9\uC21C",backHighRounded:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uC6D0\uC21C",frontMid:"\uC804\uC124 \uC911\uBAA8\uC74C",backMidUnrounded:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uD3C9\uC21C",backMidRounded:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uC6D0\uC21C",low:"\uC800\uBAA8\uC74C"},glide:{j:"j\uD65C\uC74C",w:"w\uD65C\uC74C",velar:"\u0270\uD65C\uC74C"}},unknownError:"\uC54C \uC218 \uC5C6\uB294 \uC624\uB958",networkError:"\uB124\uD2B8\uC6CC\uD06C \uC5F0\uACB0\uC774 \uBD88\uC548\uC815\uD569\uB2C8\uB2E4. \uC5F0\uACB0 \uC0C1\uD0DC\uB97C \uD655\uC778\uD55C \uB4A4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694."},Qr={rangeSelect:"\uAE30\uAC04 \uC120\uD0DD",dow:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],weekOrdinal:["\uCCAB\uC9F8","\uB458\uC9F8","\uC14B\uC9F8","\uB137\uC9F8","\uB2E4\uC12F\uC9F8","\uC5EC\uC12F\uC9F8","\uC77C\uACF1\uC9F8"],weekLabel:"{{ord}}\uC8FC",prevMonth:"\uC774\uC804 \uB2EC",addOnDate:"{{date}}\uC5D0 \uBC29\uBB38 \uB4F1\uB85D",nextMonth:"\uB2E4\uC74C \uB2EC",prevWeek:"\uC774\uC804 \uC8FC",nextWeek:"\uB2E4\uC74C \uC8FC",legend:{visited:"\uBC29\uBB38",scheduled:"\uC608\uC57D",noVisit:"\uBBF8\uBC29\uBB38"},periodSelect:"\uAE30\uAC04 \uB2E8\uC704",visitCount:"\uBC29\uBB38 {{count}}\uAC74",statusCount:"{{label}} {{count}}\uAC74"},Zr={planSuffix:"\uC774\uC6A9\uAD8C",labeledPlan:"{{label}} \uC774\uC6A9\uAD8C",couponCode:"\uC774\uC6A9\uAD8C \uCF54\uB4DC",specialLabel:"\uC624\uD508\uD2B9\uAC00",unitDay:"\uC77C",unitYear:"\uB144",remainingDay:"{{n}}\uC77C \uB0A8\uC74C",remainingHour:"{{n}}\uC2DC\uAC04 \uB0A8\uC74C",remainingMinute:"{{n}}\uBD84 \uB0A8\uC74C",remainingSecond:"{{n}}\uCD08 \uB0A8\uC74C",expired:"\uB9CC\uB8CC\uB428",menu:{use:"\uC0AC\uC6A9\uD558\uAE30",refund:"\uD658\uBD88\uD558\uAE30",delete:"\uC0AD\uC81C\uD558\uAE30"}},Xr={clearAriaLabel:"\uAC80\uC0C9\uC5B4 \uC9C0\uC6B0\uAE30"},ea={starLabel:"{{n}}\uBC88\uC9F8 \uBCC4 \uC120\uD0DD",valueLabel:"{{max}}\uC810 \uB9CC\uC810\uC5D0 {{value}}\uC810",groupLabel:"\uBCC4\uC810"},ta={selected:"\uC120\uD0DD\uB428"},na={placeholder:"\uC120\uD0DD"},oa={collapse:"\uC811\uAE30",expand:"\uD3BC\uCE58\uAE30"},ra={biArea:"BI \uC601\uC5ED",biSymbol:"BI \uC2EC\uBCFC",logoMalgwi:"\uB9D0\uADC0 \uB85C\uACE0",logoManager:"\uB9D0\uADC0\uB9E4\uB2C8\uC800 \uB85C\uACE0",menuOpen:"\uBA54\uB274 \uC5F4\uAE30",utilMenu:"\uC720\uD2F8\uB9AC\uD2F0 \uBA54\uB274",menuClose:"\uBA54\uB274 \uB2EB\uAE30"},aa={mainMenu:"\uBA54\uC778 \uBA54\uB274",bottomNav:"\uD558\uB2E8 \uB124\uBE44\uAC8C\uC774\uC158",goToManager:"\uB9D0\uADC0\uB9E4\uB2C8\uC800\uB85C \uC774\uB3D9",goToMalgwi:"\uB9D0\uADC0\uB85C \uC774\uB3D9",modeLabelManager:"\uB9D0\uADC0 \uB9E4\uB2C8\uC800",modeLabelMalgwi:"\uB9D0\uADC0",training:"\uD6C8\uB828",settings:"\uC124\uC815",notifications:"\uC54C\uB9BC",account:"\uACC4\uC815",help:"\uB3C4\uC6C0\uB9D0",feedback:"\uBC84\uADF8\uC2E0\uACE0",debug:"\uB514\uBC84\uADF8",coupons:"\uCFE0\uD3F0",topic:"\uC8FC\uC81C\uBCC4 \uB4E3\uAE30",trainingType:"\uD6C8\uB828\uBCC4 \uB4E3\uAE30",wordPairs:"\uB300\uB9BD\uC30D \uCC3E\uAE30",wordSearch:"\uB2E8\uC5B4 \uCC3E\uAE30",wordTable:"\uB2E8\uC5B4\uD45C \uB9CC\uB4E4\uAE30",company:"\uC5C5\uCCB4\uC815\uBCF4",more:"\uB354\uBCF4\uAE30",moreMenu:"\uB354\uBCF4\uAE30 \uBA54\uB274",badgeLabel:"{{label}}, {{count}}\uAC1C",badgeInsideLabel:"{{label}}, \uC548\uC5D0 \uC54C\uB9BC {{count}}\uAC1C"},ua={language:{training:{label:"\uD6C8\uB828 \uC5B8\uC5B4",sub:"\uD6C8\uB828\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uB2E8\uC5B4\uC640 \uC74C\uC131 \uC5B8\uC5B4"}},notifications:{title:"\uC54C\uB9BC"},display:{fontSize:{small:"\uC791\uAC8C",large:"\uD06C\uAC8C"}},cache:{title:"\uCE90\uC2DC \uAD00\uB9AC",confirmMessage:"\uCE90\uC2DC({{size}})\uB97C \uC0AD\uC81C\uD569\uB2C8\uB2E4. \uACC4\uC18D\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?",delete:"\uC0AD\uC81C",deleting:"\uC0AD\uC81C \uC911",cleared:"\uCE90\uC2DC\uAC00 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",group:{wordData:{label:"\uB2E8\uC5B4 \uB370\uC774\uD130",sub:"\uB2E8\uC5B4 \uBAA9\uB85D \uBC0F \uBC84\uC804 \uC815\uBCF4"},pairIndex:{label:"\uB2E8\uC5B4\uC30D \uC778\uB371\uC2A4",sub:"\uCD08\uC131\xB7\uC911\uC131\xB7\uC885\uC131 \uB300\uB9BD\uC30D \uBD84\uC11D \uCE90\uC2DC"},imageCache:{label:"\uC774\uBBF8\uC9C0 \uCE90\uC2DC",sub:"\uB2E8\uC5B4\uBCC4 \uC774\uBBF8\uC9C0 \uC874\uC7AC \uC5EC\uBD80 \uD655\uC778 \uACB0\uACFC"},trainingRecord:{label:"\uD6C8\uB828 \uAE30\uB85D",sub:"\uC624\uB298\uC758 \uD6C8\uB828 \uC9C4\uD589\uB960 \uBC0F \uD559\uC2B5 \uC77C\uC218"}}},button:{save:"\uC124\uC815 \uC800\uC7A5"},popup:{clear:{confirm:"\uCD08\uAE30\uD654"},update:{confirm:"\uC5C5\uB370\uC774\uD2B8"},cache:{title:"{{label}} \uC0AD\uC81C",message:"{{label}}({{size}})\uB97C \uC0AD\uC81C\uD569\uB2C8\uB2E4. \uACC4\uC18D\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?"}},saved:"\u2713 \uC800\uC7A5\uB428",account:{title:"\uACC4\uC815",delete:{sub:"\uD0C8\uD1F4 \uD6C4 30\uC77C \uC774\uB0B4 \uC7AC\uAC00\uC785 \uC2DC \uBCF5\uAD6C \uAC00\uB2A5\uD569\uB2C8\uB2E4."}}},ia={addButton:"\uC774\uC6A9\uAD8C \uCD94\uAC00\uD558\uAE30",couponButton:"\uCFE0\uD3F0 \uC785\uB825",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",segment:{personal:"\uB9D0\uADC0",org:"\uB9D0\uADC0\uB9E4\uB2C8\uC800"},org:{title:"\uD604\uC7AC \uC774\uC6A9\uAD8C",disc:"\uAE30\uAD00\uC5D0\uC11C \uC0AC\uC6A9 \uC911\uC778 \uC774\uC6A9\uAD8C \uC815\uBCF4\uC785\uB2C8\uB2E4.",empty:"\uB4F1\uB85D\uB41C \uAE30\uAD00 \uC774\uC6A9\uAD8C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",fallbackTitle:"\uAE30\uAD00 \uC774\uC6A9\uAD8C",startDate:"\uC2DC\uC791\uC77C",endDate:"\uB9CC\uB8CC\uC77C",remaining:"\uB0A8\uC740 \uAE30\uAC04",duration:"\uC774\uC6A9 \uAE30\uAC04"},active:{infoTitle:"\uC774\uC6A9 \uC815\uBCF4",refund:"\uD658\uBD88 \uC694\uCCAD",startDate:"\uC0AC\uC6A9 \uC2DC\uC791\uC77C",endDate:"\uC885\uB8CC\uC77C",remaining:"\uB0A8\uC740 \uAE30\uAC04"},pending:{title:"\uBCF4\uC720",empty:"\uB300\uAE30 \uC911\uC778 \uC774\uC6A9\uAD8C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."}},la={profile:{planSuffix:"\uD50C\uB79C",plan:"\uD50C\uB79C"},basicInfo:{name:{placeholder:"\uD64D\uAE38\uB3D9"}},security:{title:"\uBCF4\uC548",password:{label:"\uBE44\uBC00\uBC88\uD638",currentRequired:"\uD604\uC7AC \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.",newRequired:"\uC0C8 \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.",mismatch:"\uC0C8 \uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",changed:"\uBE44\uBC00\uBC88\uD638\uAC00 \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},twoFactor:{label:"2\uB2E8\uACC4 \uC778\uC99D",sub:"\uACC4\uC815 \uBCF4\uC548\uC744 \uAC15\uD654\uD558\uC138\uC694"}}},sa={guide:{faq:{title:"\uC790\uC8FC \uBB3B\uB294 \uC9C8\uBB38",desc:"FAQ \uBAA8\uC544\uBCF4\uAE30"}}},ca={settings:"\uC124\uC815",start:{title:"\uB2E8\uC5B4\uD6C8\uB828 \uC2DC\uC791",description:"\uC544\uB798 \uD6C8\uB828 \uC720\uD615\uC744 \uC120\uD0DD\uD574 \uC2DC\uC791\uD558\uC138\uC694"},difficulty:{tooltip:"\uAC00\uC7A5 \uC26C\uC6B4 \uB09C\uC774\uB3C4\uB294 '\uBB34\uC791\uC704', \uAC00\uC7A5 \uC5B4\uB824\uC6B4 \uB09C\uC774\uB3C4\uB294 '\uCD08\uC131\uCC28\uC774' \uC785\uB2C8\uB2E4."},contrast:{label:"\uB300\uB9BD",type:"\uB300\uB9BD \uC885\uB958",count:"\uB300\uB9BD \uAC2F\uC218",n:"{{n}}\uAC1C"},filter:{random:"\uBB34\uC791\uC704",trainOnset:"\uCD08\uC131",trainVowel:"\uBAA8\uC74C",trainCoda:"\uC885\uC131",phonemeGroup:"\uD6C8\uB828 \uC74C\uC808",noLimit:"\uBB34\uAD00",codaExclude:"\uC81C\uC678",gradeLabel:"\uB4F1\uAE09",excludeImageInfo:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC: \uB2E8\uC5B4 \uC911\uC5D0 \uC774\uBBF8\uC9C0\uAC00 \uC788\uB294 \uB2E8\uC5B4\uB9CC \uACB0\uACFC\uC5D0 \uBCF4\uC5EC\uC90D\uB2C8\uB2E4.",sameStructureInfo:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC: \uC815\uB2F5\uACFC \uC624\uB2F5\uC758 \uC74C\uC808 \uAD6C\uC870(\uAE00\uC790 \uC218\xB7\uBC1B\uCE68 \uC720\uBB34 \uB4F1)\uAC00 \uAC19\uC740 \uACB0\uACFC\uB9CC \uB0A8\uACA8\uC694.",selectSection:"\uC120\uD0DD",excludeImage:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC",sameStructure:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC"},noQuestions:"\uBB38\uC81C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",countQuestions:"{{n}}\uBB38\uC81C",countSentences:"{{n}}\uBB38\uC7A5",comingSoon:"\uC900\uBE44 \uC911",nextQuestion:"\uB2E4\uC74C \uBB38\uC81C",noiseRatioTitle:"\uC18C\uC74C \uBE44\uC728",noiseRatioValue:"{{ratio}}\uBC30",noiseTypeTitle:"\uC18C\uC74C \uC885\uB958",playVolumeTitle:"\uC804\uCCB4 \uC18C\uB9AC",playSpeedTitle:"\uC7AC\uC0DD \uC18D\uB3C4",meter:{sentence:"\uC7AC\uC0DD",noise:"\uC18C\uC74C",toggle:"\uC624\uB514\uC624 \uBBF8\uD130 \uD45C\uC2DC"},viewResult:"\uACB0\uACFC\uBCF4\uAE30",problemNotice:"{{n}}\uBC88 \uBB38\uC81C \uC785\uB2C8\uB2E4.",trainingSettingsTitle:"\uD6C8\uB828 \uC124\uC815",sentencePreview:"\uBB38\uC7A5 \uBBF8\uB9AC\uBCF4\uAE30",notHeard:"\uC548 \uB4E4\uB838\uC5B4\uC694.",heardWell:"\uC798 \uB4E4\uB838\uC5B4\uC694.",confirmTitle:"\uBB38\uC7A5\uC744 \uD655\uC778\uD558\uACE0 \uC798 \uB4E4\uB838\uB294\uC9C0 \uC120\uD0DD\uD558\uC138\uC694.",noSoundWaveform:"\uC18C\uB9AC \uBE44\uAD50 \uBB38\uC81C\uB294 \uC6E8\uC774\uBE0C\uD3FC\uC744 \uD45C\uD604\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",noise:{level:{none:"\uC5C6\uC74C",weak:"\uC57D\uD568",medium:"\uBCF4\uD1B5",strong:"\uAC15\uD568",veryStrong:"\uB9E4\uC6B0 \uAC15\uD568"},type:{none:"\uC5C6\uC74C",default:"\uAE30\uBCF8",street:"\uAE38\uAC70\uB9AC",buzz:"\uC640\uAE00\uC640\uAE00",restaurant:"\uC2DD\uB2F9"}},listenTitle:"\uC81C\uC2DC\uD558\uB294 \uBB38\uC7A5\uC744 \uB4E4\uC5B4\uC8FC\uC138\uC694.",listenButton:"\uBB38\uC7A5 \uB4E3\uAE30",playSound:"\uC18C\uB9AC \uB4E3\uAE30",playAll:"\uBAA8\uB450 \uB4E3\uAE30",selectInOrder:"\uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uCE74\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694.",stop:"\uC815\uC9C0",preview:"\uBBF8\uB9AC \uB4E3\uAE30",previewFor:"{{name}} \uBBF8\uB9AC \uB4E3\uAE30",stopFor:"{{name}} \uC815\uC9C0",next:"\uB2E4\uC74C",completed:"\uD6C8\uB828 \uC644\uB8CC",selected:"\uC120\uD0DD\uB428",nthSelected:"{{n}}\uBC88\uC9F8 \uC120\uD0DD",fontSizeMin:"\uAE00\uC528 \uD06C\uAE30\uAC00 \uCD5C\uC18C\uC785\uB2C8\uB2E4.",fontSizeMax:"\uAE00\uC528 \uD06C\uAE30\uAC00 \uCD5C\uB300\uC785\uB2C8\uB2E4.",fontSizeDecrease:"\uAE00\uC790 \uD06C\uAE30 \uAC10\uC18C",fontSizeIncrease:"\uAE00\uC790 \uD06C\uAE30 \uC99D\uAC00",toggleBackground:"\uBC30\uACBD \uC804\uD658",cardInstructions:"\uB0B1\uB9D0 \uCE74\uB4DC\uB97C \uBCF4\uACE0 \uC18C\uB9AC\uB97C \uB4E3\uACE0 \uD655\uC778\uD558\uC138\uC694.",noCards:"\uCE74\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",audioFetchError:"\uC0AC\uC6B4\uB4DC \uC18C\uC2A4\uB97C \uAC00\uC838\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",ttsUnavailable:"\uC774 \uAE30\uAE30\uC5D0\uC11C\uB294 \uC74C\uC131\uC744 \uB4E4\uB824\uC904 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",selectConfirm:"\uBB38\uC81C\uB97C \uBCF4\uACE0 \uD574\uB2F9\uD558\uB294 \uB0B4\uC6A9\uC744 \uC120\uD0DD\uD558\uC138\uC694.",orderListDefault:"\uBB38\uC7A5\uC744 \uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uBC30\uCE58\uD558\uC138\uC694.",result:{pendingDone:"\uACB0\uACFC\uB97C \uACC4\uC0B0\uD558\uB294 \uC911\uC774\uB77C \uC544\uC9C1 \uC644\uB8CC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",eyebrow:"\uD6C8\uB828 \uC644\uB8CC",title:"\uD6C8\uB828\uC744 \uBAA8\uB450 \uB9C8\uCCE4\uC2B5\uB2C8\uB2E4.",scoreAria:"{{correct}} / {{total}} \uBB38\uD56D",elapsed:"\uC18C\uC694 \uC2DC\uAC04",summary:"{{correct}}\uAC1C\uC758 \uBB38\uD56D\uC744 \uC798 \uB4E4\uC5C8\uC2B5\uB2C8\uB2E4.",tableAriaLabel:"\uBB38\uD56D\uBCC4 \uD310\uC815",colJudge:"\uD310\uC815",colAnswerSelected:"\uC815\uB2F5 \xB7 \uC120\uD0DD",colAnswer:"\uC815\uB2F5",colSelected:"\uC120\uD0DD",heardWell:"\uC798 \uB4E4\uC5C8\uC5B4\uC694",notHeard:"\uBABB \uB4E4\uC5C8\uC5B4\uC694",notJudged:"\uBBF8\uD310\uC815",replay:"\uB2E4\uC2DC\uD558\uAE30",replaySound:"{{no}}\uBC88 \uB2E4\uC2DC \uB4E3\uAE30",replaySoundStop:"{{no}}\uBC88 \uB4E3\uAE30 \uBA48\uCDA4",done:"\uC644\uB8CC",viewResult:"\uACB0\uACFC \uD655\uC778",noContent:"(\uB0B4\uC6A9\uC5C6\uC74C)"},up:"\uC704\uB85C",down:"\uC544\uB798\uB85C",prev:"\uC774\uC804",listenLabel:"\uBB38\uC7A5 \uB4E3\uAE30",sourcePlay:"\uC18C\uC2A4 {{n}} \uC7AC\uC0DD",listen:"\uB4E3\uAE30",audioStatus:{idle:"\uB300\uAE30",resolving:"\uB9AC\uC18C\uC2A4 \uB9E4\uD551 \uC911\u2026",checking_exists:"\uD30C\uC77C \uC874\uC7AC \uD655\uC778\u2026",getting_signed_url:"\uC11C\uBA85 URL \uC870\uD68C\u2026",downloading:"\uB2E4\uC6B4\uB85C\uB4DC \uC911\u2026",measuring_duration:"\uC624\uB514\uC624 \uAE38\uC774 \uCE21\uC815\u2026",ready:"\uC900\uBE44 \uC644\uB8CC",error:"\uC624\uB958 \uBC1C\uC0DD",synthesizing:"\uC18C\uB9AC\uB97C \uB9CC\uB4E4\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026"}},da={totalCount:"\uAC1C\uC758 \uD6C8\uB828 \uBB36\uC74C",renameGroup:"\uADF8\uB8F9 \uC774\uB984 \uBC14\uAFB8\uAE30",itemCount:"\uD6C8\uB828 \uAC1C\uC218",menu:{edit:"\uD6C8\uB828 \uBB36\uC74C \uC218\uC815",rename:"\uC774\uB984 \uBC14\uAFB8\uAE30",move:"\uADF8\uB8F9 \uC774\uB3D9",duplicate:"\uD6C8\uB828 \uBB36\uC74C \uBCF5\uC0AC",publish:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0 \uC62C\uB9AC\uAE30"},sort:{customers:"\uD6C8\uB828 \uACE0\uAC1D"},copyLink:"\uB9C1\uD06C \uBCF5\uC0AC",removeLink:"\uB9C1\uD06C \uC81C\uAC70",linkRemoved:"\uB9C1\uD06C\uAC00 \uC81C\uAC70\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",linkSaveFirst:"\uBA3C\uC800 \uD6C8\uB828 \uBB36\uC74C\uC744 \uC800\uC7A5\uD574\uC8FC\uC138\uC694.",linkSaveFirstHint:"\uC800\uC7A5\uB41C \uD6C8\uB828 \uBB36\uC74C\uC5D0\uC11C\uB9CC \uACF5\uC720 \uB9C1\uD06C\uB97C \uC0DD\uC131\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",linkCopySelect:"\uBCF5\uC0AC\uAC00 \uB9C9\uD600 \uB9C1\uD06C\uB97C \uC120\uD0DD\uD588\uC2B5\uB2C8\uB2E4. Ctrl/\u2318+C\uB85C \uBCF5\uC0AC\uD558\uC138\uC694.",nameRequired:"\uD6C8\uB828 \uBB36\uC74C \uC774\uB984\uC744 \uC785\uB825\uD574\uC8FC\uC138\uC694.",itemRequired:"\uD6C8\uB828\uC744 1\uAC1C \uC774\uC0C1 \uB2F4\uC544\uC8FC\uC138\uC694.",randomAdd:"\uBB34\uC791\uC704 \uCD94\uAC00"},Ca={totalCount:"\uBA85\uC758 \uACE0\uAC1D",loadError:"\uBAA9\uB85D\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",basicInfo:{editTooltip:"\uC218\uC815\uD558\uAE30"},member:{placeholder:"\uC774\uBA54\uC77C \uB610\uB294 \uC804\uD654",link:"\uC5F0\uACB0",linking:"\uC5F0\uACB0 \uC911\u2026"},device:{title:"\uCCAD\uAC01\uC7AC\uD65C\uAE30\uAE30",addTooltip:"\uC0C8\uB85C \uC0DD\uC131",addButton:"\uAE30\uAE30 \uCD94\uAC00",listTooltip:"\uBAA9\uB85D \uBCF4\uAE30",listTitle:"\uCE21 \uAE30\uAE30 \uBAA9\uB85D",historyEmpty:"\uB4F1\uB85D\uB41C \uAE30\uAE30 \uC774\uB825\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",wearing:"\uCE21 \uCC29\uC6A9\uC911",notRegistered:"\uBBF8\uB4F1\uB85D",unit:"\uAC1C",wearingNow:"\uCC29\uC6A9",wear:"\uCC29\uC6A9",unwear:"\uCC29\uC6A9 \uD574\uC81C",wornSince:"{{date}}\uBD80\uD130",release:"\uD574\uC81C",historyTitle:"\uCCAD\uAC01\uC7AC\uD65C\uAE30\uAE30 \uC774\uB825"},schedule:{title:"\uBC29\uBB38 \uC608\uC815",addTooltip:"\uC608\uC815 \uB4F1\uB85D",listTooltip:"\uC804\uCCB4 \uBCF4\uAE30",empty:"\uC608\uC815\uB41C \uBC29\uBB38\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",registerTitle:" \uACE0\uAC1D\uB2D8 \uBC29\uBB38 \uC608\uC815 \uB4F1\uB85D",memoPlaceholder:"\uBC29\uBB38 \uC608\uC815 \uAD00\uB828 \uBA54\uBAA8\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694."},visitHistory:{title:"\uBC29\uBB38 \uC774\uB825",addTooltip:"\uC2E0\uADDC \uB4F1\uB85D",empty:"\uC544\uC9C1 \uBC29\uBB38 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",popupTitle:" \uACE0\uAC1D\uB2D8 \uBC29\uBB38 \uC774\uB825",registerTitle:" \uACE0\uAC1D\uB2D8 \uC2E0\uADDC \uBC29\uBB38 \uB4F1\uB85D"},homework:{title:"\uC219\uC81C \uC9C4\uD589\uC0C1\uD669",active:"\uD65C\uC131",inactive:"\uBE44\uD65C\uC131",copy:"\uB9C1\uD06C \uBCF5\uC0AC",copied:"\uB9C1\uD06C\uAC00 \uBCF5\uC0AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},moreItems:"\uB354 \uC788\uC74C",viewAll:"\uC804\uCCB4 \uBCF4\uAE30",visits:{title:"\uBC29\uBB38"},trainingRecord:{title:"\uACE0\uAC1D \uD6C8\uB828 \uAE30\uB85D"},status:{trainingSubtitle:"\uD6C8\uB828 \uD604\uD669"},detail:{session:{completedFmt:"\uC644\uB8CC {{done}}/{{total}} \xB7 {{duration}}"},visitSuffix:"\uC758 \uBC29\uBB38"},duration:{minSec:"{{m}}\uBD84 {{s}}\uCD08",min:"{{m}}\uBD84",sec:"{{s}}\uCD08"}},ga={plan:{recommendedFor:"\uC774\uB7F0 \uBD84\uAED8 \uCD94\uCC9C\uD569\uB2C8\uB2E4.",features:"\uD575\uC2EC \uAE30\uB2A5",freePrice:"\uBB34\uB8CC",contact:"\uBB38\uC758\uD558\uAE30",tierFallback:"\uC774\uC6A9\uAD8C",openPromo:"\uC624\uD508 \uD2B9\uAC00"},products:{mgrEnterprise:{tier:{price:"\uBB38\uC758"}}}},fa={title:"\uCFE0\uD3F0",subtitle:"\uCFE0\uD3F0 \uCF54\uB4DC\uB97C \uC785\uB825\uD558\uAC70\uB098 \uBCF4\uC720 \uCFE0\uD3F0\uC744 \uD655\uC778\uD558\uC138\uC694.",input:{label:"\uCFE0\uD3F0 \uCF54\uB4DC",placeholder:"\uCFE0\uD3F0 \uCF54\uB4DC \uC785\uB825"},applyButton:"\uC801\uC6A9",error:{invalid:"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uCFE0\uD3F0 \uCF54\uB4DC\uC785\uB2C8\uB2E4.",alreadyUsed:"\uC774\uBBF8 \uC0AC\uC6A9\uB41C \uCFE0\uD3F0\uC785\uB2C8\uB2E4."},success:{applied:'"{{name}}" \uCFE0\uD3F0\uC774 \uC801\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.'},section:{owned:"\uBCF4\uC720 \uCFE0\uD3F0"},status:{used:"\uC0AC\uC6A9 \uC644\uB8CC",available:"\uC0AC\uC6A9 \uAC00\uB2A5"}},ma={unitVisit:"\uAC74",periodAll:"\uC804\uCCB4",showN:"{{n}}\uAC1C\uC529"},pa={subtitle:"\uC5C5\uCCB4 \uBC0F \uBC95\uC778 \uC815\uBCF4\uB97C \uAD00\uB9AC\uD558\uC138\uC694.",editButton:"\uC815\uBCF4 \uC218\uC815",basicInfo:{title:"\uAE30\uBCF8 \uC815\uBCF4"},contactInfo:{title:"\uC5F0\uB77D\uCC98 \uC815\uBCF4"}},ha={title:"\uD6C8\uB828\uBCC4 \uB4E3\uAE30",subtitle:"\uC6D0\uD558\uB294 \uD6C8\uB828 \uC720\uD615\uC744 \uC120\uD0DD\uD558\uC138\uC694.",listenInNoise:{title:"\uC18C\uC74C \uD558 \uBB38\uC7A5 \uB4E3\uAE30",desc:"\uB2E4\uC591\uD55C \uC18C\uC74C \uD658\uACBD\uC5D0\uC11C \uBB38\uC7A5 \uCCAD\uB825\uC744 \uD6C8\uB828\uD569\uB2C8\uB2E4."},shortStory:{title:"\uC9E7\uC740 \uC774\uC57C\uAE30 \uB4E3\uAE30",desc:"\uC9E7\uC740 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uB0B4\uC6A9\uC744 \uC774\uD574\uD569\uB2C8\uB2E4."},longStory:{title:"\uAE34 \uC774\uC57C\uAE30 \uB4E3\uAE30",desc:"\uAE34 \uC774\uC57C\uAE30\uB97C \uC9D1\uC911\uD574\uC11C \uB4E3\uACE0 \uB0B4\uC6A9\uC744 \uD30C\uC545\uD569\uB2C8\uB2E4."},orderingSentence:{title:"\uBB38\uC7A5 \uC21C\uC11C\uD654",desc:"\uB4E4\uC740 \uBB38\uC7A5\uB4E4\uC744 \uC62C\uBC14\uB978 \uC21C\uC11C\uB85C \uBC30\uC5F4\uD569\uB2C8\uB2E4."},SAME_SOUND_PICK:{label:"\uAC19\uC740 \uC18C\uB9AC \uACE0\uB974\uAE30",sub:"\uB4E4\uC740 \uC18C\uB9AC\uC640 \uAC19\uC740 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},SAME_OR_DIFF:{label:"\uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0 \uB9DE\uD788\uAE30",sub:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0, \uB2E4\uB978\uC9C0 \uAD6C\uBD84\uD558\uC138\uC694."},HEAR_AND_PICK_SAME:{label:"\uC77C\uCE58\uD558\uB294 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",sub:"\uB4E4\uC740 \uC18C\uB9AC\uC758 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},HEAR_AND_PICK_INCLUDED:{label:"\uD55C \uC74C\uC808 \uD3EC\uD568 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",sub:"\uB4E4\uC740 \uC74C\uC808\uC774 \uD3EC\uD568\uB41C \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},STARTS_WITH_SAME_SOUND:{label:"\uCCAB \uC74C\uC808\uC774 \uAC19\uC740 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",sub:"\uB4E4\uC740 \uB2E8\uC5B4\uC640 \uAC19\uC740 \uC18C\uB9AC\uB85C \uC2DC\uC791\uD558\uB294 \uB2E8\uC5B4\uB97C \uACE0\uB974\uC138\uC694."},LISTEN_AND_REMEMBER_ORDER:{label:"\uB4E3\uACE0 \uC21C\uC11C\uB300\uB85C \uAE30\uC5B5\uD558\uAE30",sub:"\uC138 \uB2E8\uC5B4\uB97C \uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uCE74\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694."},MERGE_2_SYLLABLES:{label:"\uC74C\uC808 2\uAC1C \uD569\uCE58\uAE30",sub:"\uB450 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},MERGE_3_SYLLABLES:{label:"\uC74C\uC808 3\uAC1C \uD569\uCE58\uAE30",sub:"\uC138 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},MERGE_2_PHONEMES:{label:"\uC74C\uC18C 2\uAC1C \uD569\uCE58\uAE30",sub:"\uB450 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},MERGE_3_PHONEMES:{label:"\uC74C\uC18C 3\uAC1C \uD569\uCE58\uAE30",sub:"\uC138 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},DROP_1_FROM_2SYLL:{label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uD0C8\uB77D",sub:"2\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},DROP_1_FROM_3SYLL:{label:"3\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uD0C8\uB77D",sub:"3\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},DROP_PART_FROM_COMPOUND:{label:"\uD569\uC131\uC5B4\uC5D0\uC11C \uBD80\uBD84 \uD0C8\uB77D",sub:"\uD569\uC131\uC5B4\uC758 \uC77C\uBD80\uB97C \uBE7C\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},DROP_FINAL_CONSONANT_FROM_1SYLL:{label:"1\uC74C\uC808\uC5D0\uC11C \uBC1B\uCE68 \uD0C8\uB77D",sub:"\uBC1B\uCE68\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{label:"1\uC74C\uC808\uC5D0\uC11C \uC790\uC74C \uD0C8\uB77D",sub:"\uC790\uC74C\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB0A8\uC744\uAE4C\uC694?"},CHANGE_1_SYLL_IN_2SYLL:{label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",sub:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},CHANGE_1_SYLL_IN_3SYLL:{label:"3\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",sub:"3\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},CHANGE_1_PHONEME_IN_1SYLL:{label:"1\uC74C\uC808 \uB2E8\uC5B4 \uC911 1\uAC1C \uC74C\uC18C \uBC14\uAFB8\uAE30",sub:"1\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uC138\uC694."},CHANGE_1_PHONEME_IN_2SYLL:{label:"2\uC74C\uC808 \uB2E8\uC5B4 \uC911 1\uAC1C \uC74C\uC18C \uBC14\uAFB8\uAE30",sub:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."}},ya={comingSoon:"\uB2E8\uC5B4\uD6C8\uB828 \uAE30\uB2A5\uC744 \uC900\uBE44 \uC911\uC785\uB2C8\uB2E4."},ba={colName:"\uB2E8\uC5B4\uD45C \uC774\uB984",open:"\uC5F4\uAE30",countSuffix:"\uAC1C\uC758 \uB2E8\uC5B4\uD45C",tab:{cards:"\uB2E8\uC5B4\uD45C \uCE74\uB4DC",tables:"\uB2E8\uC5B4\uD45C"},cardsEmpty:"\uC544\uC9C1 \uB9CC\uB4E0 \uB2E8\uC5B4\uD45C \uCE74\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",addCard:"\uB2E8\uC5B4\uD45C \uCE74\uB4DC \uCD94\uAC00",menu:{publishStore:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0 \uC62C\uB9AC\uAE30",unpublishStore:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0\uC11C \uB0B4\uB9AC\uAE30"},newBadge:"\uC0C8\uB85C \uB9CC\uB4E0 \uD45C",publishedBadge:"\uBC1C\uD589\uB428",sharedBadge:"\uACF5\uC720 \uC911"},Sa={title:"\uC8FC\uC694 \uB2E8\uC5B4",empty:"\uCD94\uCD9C\uB41C \uC8FC\uC694 \uB2E8\uC5B4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},wa={defaultName:"\uB2E8\uC5B4 \uD45C",title:"\uB2E8\uC5B4 \uD45C \uB9CC\uB4E4\uAE30",subtitle:"\uCE78\uC744 \uC124\uC815\uD558\uACE0 \uB2E8\uC5B4\uB97C \uCD94\uAC00\uD558\uC5EC \uD45C\uB97C \uB9CC\uB4ED\uB2C8\uB2E4.",filterTitle:"\uD45C \uC124\uC815",filter:{composition:"\uAD6C\uC131",image:"\uC774\uBBF8\uC9C0",word:"\uB2E8\uC5B4",standardPron:"\uD45C\uC900 \uBC1C\uC74C",colloquialPron:"\uAD6C\uC5B4\uCCB4 \uBC1C\uC74C",paperOrientation:"\uC6A9\uC9C0 \uBC29\uD5A5",landscape:"\uAC00\uB85C",portrait:"\uC138\uB85C",columns:"\uCE78 \uC218",column:"{{count}}\uCE78",itemsPerPageWord:"\uD398\uC774\uC9C0\uB2F9 \uB2E8\uC5B4 \uC218",itemsPerPagePair:"\uD398\uC774\uC9C0\uB2F9 \uB300\uB9BD\uC30D \uC218",itemsPerPageOption:"{{count}}\uAC1C",pageIndicator:"{{current}} / {{total}}",pageNumber:"\uD398\uC774\uC9C0 \uBC88\uD638",pageNumberLeft:"\uC67C\uCABD",pageNumberCenter:"\uC911\uC559",pageNumberRight:"\uC624\uB978\uCABD",border:"\uC678\uACFD\uC120",topInfo:"\uC0C1\uB2E8 \uC815\uBCF4",bottomInfo:"\uD558\uB2E8 \uC815\uBCF4",cutLine:"\uC808\uCDE8\uC120",show:"\uD45C\uC2DC",hide:"\uBBF8\uD45C\uC2DC",dotted:"\uC810\uC120",corner:"\uCF54\uB108"},addWord:"\uCD94\uAC00\uD558\uAE30",wordInfo:"{{word}} \uB0B1\uB9D0 \uC815\uBCF4",emptyItems:"\uB2E8\uC5B4\uB97C 1\uAC1C \uC774\uC0C1 \uCD94\uAC00\uD574\uC8FC\uC138\uC694.",load:"\uBD88\uB7EC\uC624\uAE30",openNewWindow:"\uC0C8 \uCC3D\uC73C\uB85C \uBCF4\uAE30",saveButton:"\uC800\uC7A5\uD558\uAE30",saveAsNewButton:"\uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uC800\uC7A5",print:"\uC778\uC1C4\uD558\uAE30",popupBlocked:"\uD31D\uC5C5\uC774 \uCC28\uB2E8\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800 \uC124\uC815\uC5D0\uC11C \uD31D\uC5C5\uC744 \uD5C8\uC6A9\uD574 \uC8FC\uC138\uC694.",printFileNameSingle:"\uB2E8\uC5B4\uD45C",printFileNamePair:"\uB300\uB9BD\uC30D\uD45C",save:{title:"\uB2E8\uC5B4\uD45C \uC800\uC7A5\uD558\uAE30",nameLabel:"\uC774\uB984",desc:"\uC800\uC7A5\uD560 \uB2E8\uC5B4 \uD45C\uC758 \uC774\uB984\uC744 \uC785\uB825\uD558\uC138\uC694.",placeholder:"\uC774 \uB2E8\uC5B4\uD45C\uC5D0 \uB300\uD55C \uC81C\uBAA9\uC744 \uC785\uB825\uD558\uC138\uC694.",descriptionLabel:"\uC124\uBA85",descriptionPlaceholder:"\uC774 \uB2E8\uC5B4\uD45C\uC5D0 \uB300\uD55C \uC124\uBA85\uC744 \uC785\uB825\uD558\uC138\uC694.",duplicateName:"\uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC778 \uC774\uB984\uC785\uB2C8\uB2E4.",nameRequired:"\uD45C \uC774\uB984\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694.",autoFillHint:" (Tab \uB610\uB294 space \uC785\uB825\uC2DC \uC790\uB3D9 \uC785\uB825)",copyName:"{{name}} (\uBCF5\uC0AC)"},loadTable:{title:"\uC800\uC7A5\uB41C \uB2E8\uC5B4 \uD45C \uBD88\uB7EC\uC624\uAE30",empty:"\uC800\uC7A5\uB41C \uB2E8\uC5B4 \uD45C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",loadButton:"\uBD88\uB7EC\uC624\uAE30",itemCount:"{{count}}\uAC1C",deleteAriaLabel:"{{name}} \uC0AD\uC81C",viewLabel:"\uBCF4\uAE30 \uBC29\uC2DD",sortLabel:"\uC815\uB82C",sort:{newest:"\uCD5C\uC2E0\uC21C",oldest:"\uC624\uB798\uB41C\uC21C",name:"\uC774\uB984\uC21C",count:"\uB2E8\uC5B4 \uC218"},view:{grid:"\uD45C\uB85C \uBCF4\uAE30",list:"\uB9AC\uC2A4\uD2B8\uB85C \uBCF4\uAE30"}},publisherFilter:"{{name}} \uAC8C\uC2DC\uD55C \uAC83\uB9CC \uBCF4\uAE30",groupDeleteMessage:"\uADF8\uB8F9 \uB0B4 \uB2E8\uC5B4\uD45C\uB294 '\uADF8\uB8F9 \uC5C6\uC74C'\uC73C\uB85C \uC774\uB3D9\uD569\uB2C8\uB2E4.",groupNamePlaceholder:"\uADF8\uB8F9 \uC774\uB984",store:{badge:"\uB9D0\uADC0\uC790\uB8CC\uC2E4"},card:{sub:"\uB2E8\uC5B4\uD45C \uCE74\uB4DC",empty:"\uC774 \uCE74\uB4DC\uC5D0 \uB2E8\uC5B4\uD45C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},toast:{renameError:"\uC774\uB984 \uBCC0\uACBD\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",saveError:"\uC800\uC7A5\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",deleteError:"\uC0AD\uC81C\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",duplicateError:"\uBCF5\uC81C\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",saveSuccess:"\uB2E8\uC5B4\uD45C\uAC00 \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},scoring:{o:"{{word}} \uB9DE\uC74C",triangle:"{{word}} \uC560\uB9E4",x:"{{word}} \uD2C0\uB9BC",markName:{o:"\uB9DE\uC74C",triangle:"\uC560\uB9E4",x:"\uD2C0\uB9BC"},button:"\uCC44\uC810\uD558\uAE30",pickTitle:"\uB204\uAD6C\uB97C \uCC44\uC810\uD560\uAE4C\uC694?",pickSubtitle:"\u2018{{name}}\u2019 \uD45C\uB85C \uD6C8\uB828\uD55C \uACE0\uAC1D\uC744 \uACE0\uB974\uC138\uC694.",pickSearch:"\uC774\uB984 \uB610\uB294 \uC804\uD654\uBC88\uD638\uB85C \uCC3E\uAE30",pickEmpty:"\uB4F1\uB85D\uB41C \uACE0\uAC1D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",pickNoMatch:"\uCC3E\uB294 \uACE0\uAC1D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",pickAgain:"\uACE0\uAC1D \uB2E4\uC2DC \uACE0\uB974\uAE30",scoringFor:"{{name}} \uB2D8 \uCC44\uC810 \uC911",none:"\uCE78 \uC544\uB798 \u25CB \xB7 \u25B3 \xB7 \u2715 \uB97C \uB20C\uB7EC \uB9E4\uAE30\uC138\uC694. \uB9C8\uC6B0\uC2A4\uB85C\uB294 \uCE78\uC5D0 \uC190\uC744 \uC5B9\uC73C\uBA74, \uC790\uD310\uC73C\uB85C\uB294 \uCE78\uC5D0 \uCD08\uC810\uC774 \uAC00\uBA74 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.",tally:"{{marked}}\uCE78 \uCC44\uC810 \xB7 \u25CB {{o}} \xB7 \u25B3 {{triangle}} \xB7 \u2715 {{x}} \xB7 \uC815\uB2F5\uB960 {{rate}}%",save:"\uCC44\uC810 \uC800\uC7A5",saved:"{{name}} \uB2D8\uC758 \uCC44\uC810 {{count}}\uCE78\uC744 \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4.",reviewTitle:"\uBCF5\uC2B5\uD45C\uB97C \uB9CC\uB4E4\uAE4C\uC694?",reviewMessage:"{{name}} \uB2D8\uC774 \uD2C0\uB9AC\uAC70\uB098 \uC560\uB9E4\uD588\uB358 {{count}}\uCE78\uC73C\uB85C \uC0C8 \uD45C\uB97C \uB9CC\uB4ED\uB2C8\uB2E4. \uB9DE\uD78C \uCE78\uC740 \uBE60\uC9D1\uB2C8\uB2E4.",reviewConfirm:"\uBCF5\uC2B5\uD45C \uB9CC\uB4E4\uAE30",reviewDescription:"\u2018{{name}}\u2019 \uCC44\uC810\uC5D0\uC11C \uD2C0\uB9AC\uAC70\uB098 \uC560\uB9E4\uD588\uB358 {{count}}\uCE78\uC744 \uBAA8\uC740 \uD45C\uC785\uB2C8\uB2E4.",reviewCreated:"\u2018{{name}}\u2019\uC744(\uB97C) \uB9CC\uB4E4\uC5C8\uC2B5\uB2C8\uB2E4 \u2014 {{count}}\uCE78.",discardTitle:"\uB9E4\uAE34 \uCC44\uC810\uC744 \uBC84\uB9B4\uAE4C\uC694?",discardMessage:"{{count}}\uCE78\uC744 \uB9E4\uACBC\uC9C0\uB9CC \uC544\uC9C1 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uB098\uAC00\uBA74 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4.",discardConfirm:"\uBC84\uB9AC\uACE0 \uB098\uAC00\uAE30"},info:{grade:"\uB09C\uC774\uB3C4: {{n}}\uB4F1\uAE09",syllables:"\uC74C\uC808 \uC218: {{n}}\uC74C\uC808",pos:"\uD488\uC0AC: {{v}}",wordType:"\uC720\uD615: {{v}}"},pos:{noun:"\uBA85\uC0AC",verb:"\uB3D9\uC0AC",adjective:"\uD615\uC6A9\uC0AC",adverb:"\uBD80\uC0AC",numeral:"\uC218\uC0AC",determiner:"\uAD00\uD615\uC0AC",interjection:"\uAC10\uD0C4\uC0AC",particle:"\uC870\uC0AC",affix:"\uC811\uC0AC",dependentNoun:"\uC758\uC874\uBA85\uC0AC",pronoun:"\uB300\uBA85\uC0AC",auxVerb:"\uBCF4\uC870\uB3D9\uC0AC",auxAdjective:"\uBCF4\uC870\uD615\uC6A9\uC0AC"},reorder:{moved:"{{total}}\uCE78 \uAC00\uC6B4\uB370 {{n}}\uBC88\uC9F8\uB85C \uC62E\uAE40",handle:"{{word}} \uC21C\uC11C \uBC14\uAFB8\uAE30 (Alt + \uD654\uC0B4\uD45C)",hint:"Alt + \u2190 \u2192 \uB85C \uC21C\uC11C \uBC14\uAFB8\uAE30"}},Ea={editBanner:{message:"\uC800\uC7A5\uD558\uBA74 \uC9C0\uAE08 \uC218\uC815 \uC911\uC778 \uB2E8\uC5B4\uD45C\uAC00 \uAC31\uC2E0\uB429\uB2C8\uB2E4."},filterTitle:"\uB2E8\uC5B4 \uAC80\uC0C9 \uC124\uC815",filter:{positionAny:"\uBB34\uAD00",positionHead:"\uC5B4\uB450",positionMid:"\uC5B4\uC911",positionTail:"\uC5B4\uB9D0",difficulty:"\uB4F1\uAE09",grade:"{{n}}\uB4F1\uAE09",gradeNone:"\uC5C6\uC74C",syllables:"\uC74C\uC808 \uC218",syllable:"{{n}}\uC74C\uC808",syllable5plus:"5\uC74C\uC808 \uC774\uC0C1",partOfSpeech:"\uD488\uC0AC",pos:{noun:"\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)",verb:"\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)",modifier:"\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)"},wordType:"\uC720\uD615",field:"\uC758\uBBF8\uBC94\uC8FC",type:{native:"\uACE0\uC720\uC5B4",sino:"\uD55C\uC790\uC5B4",foreign:"\uC678\uB798\uC5B4",mixed:"\uD63C\uC885\uC5B4"},exclude:"\uC81C\uC678",excludeNoImage:"\uC774\uBBF8\uC9C0 \uC5C6\uC74C"},searchButton:"\uAC80\uC0C9\uD558\uAE30",resultUnit:"\uB2E8\uC5B4",remaining:"{{count}}\uAC1C \uB0A8\uC74C",resultDisc:"\uC6D0\uD558\uB294 {{unit}} \uC120\uD0DD\uD558\uC138\uC694. {{max}}\uAC1C\uAE4C\uC9C0 \uC120\uD0DD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. ({{selected}}/{{max}})",resultTitlePrefix:"\uCD1D ",resultTitleSuffix:"\uAC1C\uC758 {{unit}} \uAC80\uC0C9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",emptyResult:"\uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",groupCount:"{{count}}\uAC1C",sort:{aria:"\uC815\uB82C",match:"\uC2DC\uC791 \uC6B0\uC120",ganada:"\uAC00\uB098\uB2E4\uC21C \u2191",ganadaDesc:"\uAC00\uB098\uB2E4\uC21C \u2193",syllable:"\uC74C\uC808 \uC218 \u2191",syllableDesc:"\uC74C\uC808 \uC218 \u2193",grade:"\uB4F1\uAE09\uC21C \u2191",gradeDesc:"\uB4F1\uAE09\uC21C \u2193",original:"\uBC1B\uC740 \uC21C\uC11C"},pageSize:"{{count}}\uAC1C\uC529 \uBCF4\uAE30",pageSizeAria:"\uD398\uC774\uC9C0 \uD06C\uAE30",popup:{title:"{{n}}\uBC88 \uCE78\uC5D0 \uB123\uC744 \uB2E8\uC5B4\uB97C \uC120\uD0DD\uD558\uC138\uC694"}},va={clearAllSelection:"\uBAA8\uB450 \uC120\uD0DD \uD574\uC81C",divLine:"\uB300\uB9BD\uC120",removePair:"\uB300\uB9BD\uC30D \uBE7C\uAE30",removeWord:"\uB2E8\uC5B4 \uBE7C\uAE30"},Aa={title:"\uC8FC\uC81C\uBCC4 \uB4E3\uAE30",subtitle:"\uC8FC\uC81C\uB97C \uC120\uD0DD\uD558\uACE0 \uB4E3\uAE30 \uD6C8\uB828\uC744 \uC2DC\uC791\uD558\uC138\uC694.",noiseTitle:"\uC18C\uC74C \uD558 \uBB38\uC7A5\uB4E3\uAE30",shortStoryTitle:"\uC9E7\uC740 \uC774\uC57C\uAE30 \uB4E3\uAE30",FOOD:"\uC74C\uC2DD",HLTH:"\uAC74\uAC15",WETH:"\uB0A0\uC528",PRSN:"\uC778\uBB3C",KRCT:"\uD55C\uAD6D\uBB38\uD654",STRY:"\uC774\uC57C\uAE30",LOCA:"\uC9C0\uC5ED",SOAR:"\uC0AC\uD68C\uC640 \uC608\uC220",NTSC:"\uC790\uC5F0\uACFC \uACFC\uD559",SPRT:"\uC2A4\uD3EC\uCE20",sub:{TRKRFD:"\uD55C\uAD6D \uC804\uD1B5\uC74C\uC2DD",MDKRFD:"\uD55C\uAD6D \uD604\uB300\uC74C\uC2DD",WRLDFD:"\uC138\uACC4\uC758 \uC74C\uC2DD",MTRFRT:"\uC2DD\uC7AC\uB8CC\uC640 \uACFC\uC77C",GEFDKL:"\uC74C\uC2DD \uC0C1\uC2DD",HTETHB:"\uAC74\uAC15\uD55C \uC2DD\uC2B5\uAD00",DISILL:"\uBCD1\uACFC \uC9C8\uD658",EXCISE:"\uC6B4\uB3D9",GEHTKL:"\uAC74\uAC15\uC0C1\uC2DD",GESSKL:"\uACC4\uC808\uC0C1\uC2DD",SNWRAN:"\uB208\uACFC \uBE44",WTHFCT:"\uC77C\uAE30\uC608\uBCF4",GEWTKL:"\uB0A0\uC528\uC0C1\uC2DD",JODYPS:"\uC870\uC120\uC2DC\uB300",MDKRPS:"\uD55C\uAD6D \uADFC\uD604\uB300",THKDPS:"\uC0BC\uAD6D\uC2DC\uB300",WRLART:"\uC138\uACC4\uC758 \uC608\uC220\uAC00",WRLPSN:"\uC138\uACC4\uC758 \uC778\uBB3C",KRLANG:"\uC6B0\uB9AC\uB9D0",TRPLCT:"\uC804\uD1B5\uB180\uC774",HERITG:"\uBB38\uD654\uC7AC",EVTFES:"\uD589\uC0AC\uC640 \uCD95\uC81C",GECTKL:"\uC0C1\uC2DD",FRYTAL:"\uB3D9\uD654",AMZING:"\uC2E0\uAE30\uD55C \uC774\uC57C\uAE30",DAYSTR:"\uC77C\uC0C1 \uC18D \uC774\uC57C\uAE30",KRLDMK:"\uD55C\uAD6D\uC758 \uBA85\uC18C",SELNMK:"\uC11C\uC6B8\uC758 \uBA85\uC18C",WRDTRB:"\uC138\uACC4\uC5EC\uD589",NAVIGT:"\uAE38 \uCC3E\uAE30",KRSOCI:"\uD55C\uAD6D",ECONEW:"\uACBD\uC81C\uC640 \uB274\uC2A4",GENART:"\uC608\uC220",GELFKL:"\uC0DD\uD65C \uC0C1\uC2DD",ANIMAL:"\uB3D9\uBB3C",PLANTS:"\uC2DD\uBB3C",ETHPLT:"\uC9C0\uAD6C",TOLELC:"\uB3C4\uAD6C\uC640 \uC804\uC790\uC81C\uD488",GESCKL:"\uACFC\uD559\uC0C1\uC2DD",INVDSP:"\uAC1C\uC778\uACBD\uAE30",MARART:"\uACA9\uD22C\uAE30",TEAMSP:"\uB2E8\uCCB4\uACBD\uAE30",FOOTBL:"\uCD95\uAD6C",GESPKL:"\uC2A4\uD3EC\uCE20 \uC0C1\uC2DD"}},Ba={maxUses:"\uCD5C\uB300 \uC0AC\uC6A9 \uD69F\uC218 (\uBE44\uC6CC\uB450\uBA74 \uBB34\uC81C\uD55C)",redirect:"\uC774\uB3D9\uD560 \uD398\uC774\uC9C0 URL (\uBE44\uC6CC\uB450\uBA74 \uC571 \uBA54\uC778)",creating:"\uC0DD\uC131 \uC911\u2026",create:"\uB9C1\uD06C \uC0DD\uC131",created:"\u2713 \uB9C1\uD06C\uAC00 \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4",copied:"\uBCF5\uC0AC\uB428!",copy:"\uBCF5\uC0AC",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",empty:"\uC0DD\uC131\uB41C \uB9C1\uD06C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",uses:"{{count}}\uD68C \uC0AC\uC6A9",expiresAt:"\uB9CC\uB8CC: {{date}}",createdAt:"\uC0DD\uC131: {{date}}",confirmDelete:"\uC0AD\uC81C\uD560\uAE4C\uC694?",deactivate:"\uBE44\uD65C\uC131\uD654",delete:"\uC0AD\uC81C",status:{active:"\uC720\uD6A8",expired:"\uB9CC\uB8CC",inactive:"\uBE44\uD65C\uC131"}},Da={passwordPlaceholder:"\uBE44\uBC00\uBC88\uD638 \uC785\uB825"},Ta={subtitle:"\uC8FC\uC81C\uB97C \uC120\uD0DD\uD558\uC5EC \uB4E3\uAE30 \uC5F0\uC2B5\uC744 \uC9C4\uD589\uD558\uC138\uC694."},Na={direction:{left:"\uC88C",right:"\uC6B0",label:"\uBC29\uD5A5"},wornDate:"\uCC29\uC6A9\uC77C",deviceType:"\uC885\uB958",brand:"\uBE0C\uB79C\uB4DC",fitType:"\uCC29\uC6A9\uD615\uD0DC",productName:"\uC81C\uD488\uBA85",validationError:{brandAndProduct:"\uBE0C\uB79C\uB4DC\uC640 \uC81C\uD488\uBA85\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694."},addNew:"\uC0C8 \uAE30\uAE30 \uCD94\uAC00",selectFromList:"\uBAA9\uB85D\uC5D0\uC11C \uC120\uD0DD",removeDevice:"\uCC29\uC6A9 \uD574\uC81C",type:{hearingAid:"\uBCF4\uCCAD\uAE30",cochlearImplant:"\uC778\uACF5\uC640\uC6B0",other:"\uAE30\uD0C0"}},_a={stat:{totalCustomers:"\uCD1D \uACE0\uAC1D",monthlyVisits:"\uC774\uB2EC \uCD1D \uBC29\uBB38"},chart:{visitDetail:"\uC0C1\uC138 \uBC29\uBB38 \uD604\uD669",trainingDetail:"\uC0C1\uC138 \uD6C8\uB828 \uD604\uD669",weekly:"\uC8FC\uBCC4",daily:"\uC77C\uBCC4",periodMonth:"\uC6D4",periodWeek:"\uC8FC",weeklyPrefix:"\uC8FC\uAC04",monthlyPrefix:"\uC6D4\uAC04",visit:"\uBC29\uBB38",reservation:"\uC608\uC57D",trainingDone:"\uD6C8\uB828 \uC644\uB8CC",trainingInProgress:"\uD6C8\uB828 \uC911",weekRange:"{{start}}~{{end}}",week:"{{n}}\uC8FC"},subscriptionStatus:{active:"{{pct}}% \uD65C\uC131",expired:"{{pct}}% \uB9CC\uB8CC",unused:"{{pct}}% \uBBF8\uC0AC\uC6A9"}},La={editBanner:{message:"\uC800\uC7A5\uD558\uBA74 \uC9C0\uAE08 \uC218\uC815 \uC911\uC778 \uB300\uB9BD\uC30D\uD45C\uAC00 \uAC31\uC2E0\uB429\uB2C8\uB2E4."},phonemeSelect:{title:"\uC74C\uC18C \uC120\uD0DD",vs:"\uB300"},caution:"\uC720\uC758\uC0AC\uD56D",mode:{include:"\uC74C\uC18C \uD3EC\uD568",pick:"\uC74C\uC18C \uB300\uB9BD",contrast:"\uC74C\uC18C \uB300\uB9BD \uC9C0\uC815",infoTitle:"\uB300\uB9BD \uBC29\uC2DD",infoInclude:"\uC74C\uC18C \uD3EC\uD568 \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uAC00 \uBAA8\uB450 \uB4E4\uC5B4\uAC04 \uB2E8\uC5B4\uC640 \uADF8 \uB300\uB9BD\uC30D\uC744 \uCC3E\uC544\uC694.",infoPick:"\uC74C\uC18C \uB300\uB9BD \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uAC00 \uB300\uB9BD\uC30D \uB450 \uB2E8\uC5B4\uC758 \uC2E4\uC81C \uCC28\uC774\uC810\uC77C \uB54C\uB9CC \uB9E4\uCE6D\uB3FC\uC694.",infoContrast:"\uC74C\uC18C \uB300\uB9BD \uC9C0\uC815 \u2014 \uAE30\uC900 \uB2E8\uC5B4\uC640 \uB300\uB9BD \uB2E8\uC5B4\uC758 \uC74C\uC18C\uB97C \uAC01\uAC01 \uC9C1\uC811 \uC120\uD0DD\uD574 \uB300\uB9BD\uC30D\uC744 \uCC3E\uC544\uC694."},count:"{{n}}\uAC1C",countLabel:"\uC74C\uC18C \uAC1C\uC218",input:{char:"\uAE00\uC790 \uC120\uD0DD",pron:"\uBC1C\uC74C \uC120\uD0DD",infoTitle:"\uC785\uB825 \uBC29\uC2DD",infoChar:"\uAE00\uC790 \uC120\uD0DD \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uB85C \uB2E8\uC5B4(\uAE00\uC790 \uAE30\uC900)\uB97C \uCC3E\uC740 \uD6C4, \uB2E8\uC5B4\uC758 \uD45C\uC900 \uBC1C\uC74C \uB300\uB9BD\uC30D\uC744 \uCC3E\uC2B5\uB2C8\uB2E4.",infoPron:"\uBC1C\uC74C \uC120\uD0DD \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uB85C \uD45C\uC900 \uBC1C\uC74C \uB300\uB9BD\uC30D\uC744 \uCC3E\uC2B5\uB2C8\uB2E4."},phonemeN:"{{n}}\uBC88 \uC74C\uC808",phonemeSingleLabel:"\uC74C\uC808",phonemeContrastSingleLabel:"\uB300\uB9BD \uC74C\uC808",ordinals:["\uCCAB\uBC88\uC9F8","\uB450\uBC88\uC9F8","\uC138\uBC88\uC9F8","\uB124\uBC88\uC9F8"],phonemeOrdinalLabel:"{{ordinal}} \uC74C\uC808",phonemeContrastOrdinalLabel:"\uB300\uB9BD {{ordinal}} \uC74C\uC808",composition:"\uC815\uB2F5 \uB2E8\uC5B4 \uAD6C\uC131",syllableCount:"\uC74C\uC808 \uC218",syllableN:"{{n}}\uC74C\uC808",syllableNPlus:"{{n}}\uC74C\uC808 \uC774\uC0C1",onset:"\uCD08\uC131",vowel:"\uBAA8\uC74C",coda:"\uC885\uC131",filter:{searchOptionsTitle:"\uB300\uB9BD \uC124\uC815",searchModeLabel:"\uB300\uB9BD \uBC29\uC2DD",countLabel:"\uC785\uB825 \uC74C\uC808 \uAC2F\uC218",inputModeLabel:"\uC785\uB825 \uBC29\uC2DD",phonemeOrder:"\uC785\uB825 \uC74C\uC808 \uC704\uCE58",phonemeOrderInfo:["\uC77C\uCE58: \uB300\uB9BD\uC30D\uC774 \uC815\uD655\uD788 \uAC19\uC740 \uC704\uCE58(\uC74C\uC808)\uC5D0\uC11C\uB9CC \uCC28\uC774 \uB098\uC57C \uB9E4\uCE6D\uB3FC\uC694.","\uBB34\uAD00: \uCC28\uC774 \uB098\uB294 \uC704\uCE58\uB294 \uC0C1\uAD00\uC5C6\uC774 \uB9E4\uCE6D\uB3FC\uC694."],orderAny:"\uBB34\uAD00",orderMatch:"\uC77C\uCE58",difficultyInfo:["1\uB4F1\uAE09 : \uD559\uB839\uC804\uAE30\uC5D0 \uC2B5\uB4DD\uD558\uC5EC \uD3C9\uC0DD\uC5D0 \uAC78\uCCD0 \uC77C\uC0C1 \uC5B8\uC5B4\uC0DD\uD65C\uC744 \uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uB294 \uC5B4\uD718","2\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 1-2\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","3\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 3-4\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","4\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 5-6\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","\uB4F1\uAE09\uC5C6\uC74C : \uAD6D\uB9BD\uAD6D\uC5B4\uC6D0 \uD45C\uC900 \uC5B4\uD718 \uC678 \uACE0\uBE48\uB3C4 \uC0DD\uD65C \uC5B4\uD718, \uC2E0\uC870\uC5B4 \uBC0F \uC678\uB798\uC5B4"],selectLabel:"\uC120\uD0DD",onlyHasImage:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC",onlySameStructure:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC"},searchLabel:{error:"\uB370\uC774\uD130 \uBD88\uB7EC\uC624\uAE30 \uC2E4\uD328",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026"},confirmMessage:"\uC120\uD0DD\uD55C {{unit}} {{count}}\uAC1C\uB97C \uD3EC\uD568\uD55C \uB2E8\uC5B4 \uD45C \uC815\uBCF4\uAC00 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4.",resetOptions:"\uAC80\uC0C9 \uC635\uC158 \uCD08\uAE30\uD654",phonemeContrast:"\uB300\uB9BD {{n}}\uBC88 \uC74C\uC808",infoNotes:["\uBBF8\uB9AC\uBCF4\uAE30 \uAE00\uC790\uB294 \uC120\uD0DD\uD55C \uC74C\uC18C\uC758 \uC870\uD569 \uC608\uC2DC\uC785\uB2C8\uB2E4. \uC2E4\uC81C \uAC80\uC0C9\uC740 \uD574\uB2F9 \uC74C\uC18C\uAC00 \uD3EC\uD568\uB41C \uBAA8\uB4E0 \uB2E8\uC5B4\uB97C \uB300\uC0C1\uC73C\uB85C \uD569\uB2C8\uB2E4.","\uCD08\uC131 '\u3147'\uC740 \uC120\uD0DD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E8\uC5B4 \uC55E\uC5D0 \uC624\uB294 \u3147\uC740 \uC2E4\uC9C8\uC801\uC73C\uB85C \uBB34\uC74C\uC774\uC5B4\uC11C \uB300\uB9BD\uC30D \uC131\uB9BD\uC5D0 \uC601\uD5A5\uC744 \uC8FC\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uCD08\uC131\uACFC \uC885\uC131\uB9CC \uC120\uD0DD\uD558\uBA74 \uBAA8\uC74C\uC740 '\u314F'\uB85C \uC790\uB3D9 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC74C\uC18C \uAC1C\uC218\uB97C \uB298\uB9AC\uBA74 \uAC01 \uC74C\uC18C \uC0AC\uC774\uC758 \uB300\uB9BD\uC30D\uC744 \uAC80\uC0C9\uD569\uB2C8\uB2E4."]},Oa={sentenceTyping:{roundCount:"{{rounds}}\uBB38\uC81C \xB7 \uBB38\uC81C\uB2F9 {{timeLimit}}\uCD08"},wordDefense:{me:"\uB098"},dictation:{title:"\uBC1B\uC544\uC4F0\uAE30",desc:"\uBB38\uC7A5\uC744 \uB4E3\uACE0 \uC815\uD655\uD788 \uBC1B\uC544\uC801\uB294 \uC5F0\uC2B5\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC74C\uC131 \uC7AC\uC0DD, \uC785\uB825 \uD544\uB4DC, \uC815\uB2F5 \uBE44\uAD50"},result:{heading:"{{number}}\uB2E8\uACC4 \uD574\uB2F5",retry:"\uB2E4\uC2DC \uD480\uAE30"},common:{accuracy:"{{pct}}% \uC815\uD655\uB3C4"},soundMatch:{title:"\uC18C\uB9AC \uB9E4\uCE6D",desc:"\uAC19\uC740 \uC18C\uB9AC\uB97C \uAC00\uC9C4 \uB2E8\uC5B4 \uB610\uB294 \uBB38\uC7A5\uC744 \uBE60\uB974\uAC8C \uB9E4\uCE6D\uD558\uB294 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uD50C\uB808\uC774 \uBC84\uD2BC, \uD0C0\uC774\uBA38, \uC810\uC218 \uC9D1\uACC4"},orderSequence:{title:"\uBB38\uC7A5 \uC21C\uC11C\uD654",desc:"\uD769\uC5B4\uC9C4 \uBB38\uC7A5 \uC870\uAC01\uC744 \uC62C\uBC14\uB978 \uC21C\uC11C\uB85C \uBC30\uC5F4\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uBB38\uC7A5 \uC138\uD2B8, \uC21C\uC11C \uD655\uC778 \uC778\uD130\uD398\uC774\uC2A4"},speedListen:{title:"\uC18D\uB3C4 \uB4E3\uAE30",desc:"\uC2DC\uAC04 \uC81C\uD55C \uB0B4\uC5D0 \uBB38\uC7A5\uC758 \uB2E8\uC5B4 \uC218\uB97C \uB9DE\uCD94\uB294 \uB3C4\uC804\uD615 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC81C\uD55C\uC2DC\uAC04, \uC810\uC218\uD310"},noiseChallenge:{title:"\uC18C\uC74C \uCC4C\uB9B0\uC9C0",desc:"\uBC30\uACBD \uC18C\uC74C \uC18D\uC5D0\uC11C \uBB38\uC7A5\uC744 \uBD84\uBCC4\uD558\uB294 \uC5F0\uC2B5\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uB2E4\uC591\uD55C \uC18C\uC74C \uB808\uBCA8, \uC810\uC218 \uC9D1\uACC4"},fastListen:{title:"\uBE60\uB978 \uB4E3\uAE30",desc:"\uC9E7\uC740 \uBB38\uC7A5\uC744 \uBE60\uB974\uAC8C \uB4E4\uB824\uC8FC\uACE0 \uD575\uC2EC \uB2E8\uC5B4\uB97C \uC120\uD0DD\uD558\uB294 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uB09C\uC774\uB3C4\uBCC4 \uC18D\uB3C4, \uD0C0\uC774\uBA38"},shadowing:{title:"\uC250\uB3C4\uC789",desc:"\uBB38\uC7A5\uC744 \uB530\uB77C \uB9D0\uD558\uBA70 \uBC1C\uC74C\uACFC \uC5B5\uC591\uC744 \uC5F0\uC2B5\uD558\uB294 \uBAA8\uB4DC\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC7AC\uC0DD, \uB179\uC74C, \uBE44\uAD50 \uD53C\uB4DC\uBC31"},phonemeHunt:{title:"\uC74C\uC6B4 \uCC3E\uAE30",desc:"\uD2B9\uC815 \uC74C\uC6B4(\uBC1C\uC74C)\uC744 \uD3EC\uD568\uD55C \uB2E8\uC5B4\uB97C \uCC3E\uC544\uB0B4\uB294 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC74C\uC6B4 \uD544\uD130, \uD78C\uD2B8 \uAE30\uB2A5"}},Ra={lead:`\uC544\uC774\uD574\uBE0C\uB294 \uC18C\uB9AC\uB97C \uD1B5\uD574
|
|
2
2
|
\uC2E0\uB8B0\uB97C \uC313\uACE0
|
|
3
|
-
\uD68C\uBCF5\uC744 \uB3D5\uC2B5\uB2C8\uB2E4.`,site:{title:"\uC0AC\uC774\uD2B8",malgwi:"\uB9D0\uADC0",soundDirection:"\uC18C\uB9AC\uBC29\uD5A5\uC131\uC2DC\uC2A4\uD15C",vrSoundDirection:"VR\uC18C\uB9AC\uBC29\uD5A5\uC131\uC2DC\uC2A4\uD15C",hearingTest:"\uCCAD\uB825\uD14C\uC2A4\uD2B8 \uD504\uB85C"},sns:{title:"SNS",naverBlog:"\uB124\uC774\uBC84 \uBE14\uB85C\uADF8",kakao:"KAKAO Talk \uC624\uD508\uCC44\uD305"},policy:{title:"\uC815\uCC45",terms:"\uC774\uC6A9\uC57D\uAD00",privacy:"\uAC1C\uC778\uC815\uBCF4 \uCC98\uB9AC\uBC29\uCE68"},ceo:"\uB300\uD45C",address:"\uC8FC\uC18C",support:"\uACE0\uAC1D\uC13C\uD130",ceoName:"\uD55C\uC9C0\uD61C",addressValue:"\uAC15\uC6D0\uB3C4 \uCD98\uCC9C\uC2DC \uC2DC\uCCAD\uAE38 32 \uD574\uCC2C\uBE4C\uB529 3\uCE35 302\uD638"},La={trainingPhone:{topic:"\uD143\uBC2D\uAC00\uAFB8\uAE30",prev:"\uC774\uC804",next:"\uB2E4\uC74C",speed:"\uBE60\uB974\uAE30 3",noiseType:"\uC640\uAE00\uC640\uAE00",settings:"\uC124\uC815",start:{caption:"\uC544\uB798 \uD50C\uB808\uC774(\u25B6) \uBC84\uD2BC\uC744 \uB20C\uB7EC \uBB38\uC7A5\uC744 \uC798 \uB4E4\uC5B4\uBCF4\uC138\uC694. \uC798 \uB4E4\uC73C\uC2E0 \uB4A4 \uBB38\uC7A5\uC744 \uD655\uC778\uD558\uC138\uC694."},feedback:{caption:"\uC798 \uD0A4\uC6B4 \uBAA8\uC885\uC744 \uD143\uBC2D\uC5D0 \uC2EC\uACE0 \uBE44\uB2D0\uC744 \uC798 \uB36E\uC5B4 \uC90D\uB2C8\uB2E4."},done:{heardWell:"\uC798 \uB4E4\uB9B0 \uBB38\uC7A5",listenAgain:"\uD55C \uBC88 \uB354 \uB4E3\uAE30"}}},Oa={timeHM:"{{h}}\uC2DC {{m}}\uBD84",timeH:"{{h}}\uC2DC"},Ra={options:"\uD6C8\uB828 \uC635\uC158",difficulty:"\uB09C\uC774\uB3C4",exclude:"\uC81C\uC678",chosung:"\uCD08\uC131",excludeOptions:{none:"\uC5C6\uC74C",noImage:"\uC774\uBBF8\uC9C0 \uC5C6\uC74C"}},Pa={answer:"\uC815\uB2F5",distractor:"\uC624\uB2F5"},Ma={phaseWordDownload:"\uB2E8\uC5B4 \uB370\uC774\uD130 \uB2E4\uC6B4\uB85C\uB4DC",phaseImageCheck:"\uC774\uBBF8\uC9C0 \uD655\uC778",phasePairAnalysis:"\uB2E8\uC5B4\uC30D \uBD84\uC11D",downloadingCount:"{{n}}\uAC1C \uB2E4\uC6B4\uB85C\uB4DC \uC911",checkingPage:"{{page}}\uD398\uC774\uC9C0 \uBAA9\uB85D \uD655\uC778 \uC911",imageCount:"{{done}} / {{total}}\uAC1C"},ka={clearAriaLabel:"\uC785\uB825\uAC12 \uC9C0\uC6B0\uAE30"},Ia={ariaLabel:"\uC120\uD0DD \uD0ED"},xa={ariaLabel:"\uD0ED"},Fa={dragPrompt:"\uD30C\uC77C\uC744 \uC774\uACF3\uC5D0 \uB4DC\uB798\uADF8\uD558\uC5EC \uC5C5\uB85C\uB4DC",browseButton:"\uD30C\uC77C \uC120\uD0DD",removeAriaLabel:"{{name}} \uC81C\uAC70"},ja={ariaLabel:"\uC0AC\uC6A9\uC790 \uC544\uBC14\uD0C0"},$a={relativeDay:{today:"\uC624\uB298",yesterday:"\uC5B4\uC81C",daysAgo:"{{n}}\uC77C \uC804"},reason:{notLoggedIn:"\uB85C\uADF8\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},list:{title:"\uBC1B\uC740 \uC219\uC81C"},status:{expired:"\uB9CC\uB8CC\uB428",done:"\uC644\uB8CC {{count}}\uD68C \xB7 {{date}}",notDone:"\uBBF8\uC644\uB8CC"}},Ha={weekly:{title:"\uC8FC\uAC04 \uD6C8\uB828 \uD604\uD669",daily:"\uC624\uB298\uC758 \uB4E3\uAE30",crossword:"\uAC00\uB85C\uC138\uB85C"},homework:{title:"\uC219\uC81C \uC9C4\uD589\uD604\uD669",totalRate:"\uC804\uCCB4 \uC644\uB8CC\uC728",count:"\uC804\uCCB4",done:"\uC644\uB8CC",remaining:"\uBBF8\uC644\uB8CC"},today:{tooltipTotal:"\uC804\uCCB4",tooltipDone:"\uC644\uB8CC"},filter:{countSuffix:" \uD6C8\uB828"},time:{countLabel:"{{n}}\uD68C \uD6C8\uB828",empty:"\uD6C8\uB828 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},daily:{title:"\uC624\uB298\uC758 \uB4E3\uAE30 \uAE30\uB85D",empty:"\uC644\uB8CC\uD55C \uD68C\uCC28\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},crossword:{title:"\uAC00\uB85C\uC138\uB85C\uD034\uC988",empty:"\uC644\uB8CC\uD55C \uB808\uBCA8\uC774 \uC5C6\uC2B5\uB2C8\uB2E4"},visit:{title:"\uBC29\uBB38 \uC5F0\uB3D9 \uAE30\uB85D"},detail:"\uC0C1\uC138\uBCF4\uAE30",detailFor:"{{name}} \uC0C1\uC138\uBCF4\uAE30",trainingType:{LISTEN_IN_NOISE:"\uC18C\uC74C \uD558 \uBB38\uC7A5",SHORT_STORY:"\uC9E7\uC740 \uC774\uC57C\uAE30",LONG_STORY:"\uAE34 \uC774\uC57C\uAE30",ORDERING_SENTENCE:"\uBB38\uC7A5 \uC21C\uC11C\uD654"}},Ga={publish:{descPlaceholder:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0 \uD45C\uC2DC\uD560 \uD55C \uC904 \uC124\uBA85 (\uC120\uD0DD)"},import:"\uB0B4 \uD6C8\uB828\uC5D0 \uAC00\uC838\uC624\uAE30",publisher:"\uAC8C\uC2DC\uC790",time:{justNow:"\uBC29\uAE08 \uC804",minutesAgo:"{{n}}\uBD84 \uC804",hoursAgo:"{{n}}\uC2DC\uAC04 \uC804",daysAgo:"{{n}}\uC77C \uC804",weeksAgo:"{{n}}\uC8FC \uC804",monthsAgo:"{{n}}\uAC1C\uC6D4 \uC804",yearsAgo:"{{n}}\uB144 \uC804"},badge:{shared:"\uB9D0\uADC0\uC790\uB8CC\uC2E4"}},Va={manage:{unit:"\uAC74"}},Wa={cancelLabel:"\uCDE8\uC18C"},Ya={steps:"\uC9C4\uD589 \uB2E8\uACC4 {{current}} / {{total}}"},Ka={panelTitle:"\uD6C8\uB828 \uC624\uB2F5",viewItems:"\uBB38\uD56D",viewTypes:"\uC720\uD615",colPending:"\uB0A8\uC740 \uAC83",colTrend:"\uBCC0\uD654",colRuns:"\uD310",unitItem:"\uAC1C",skippedOnly:"\uC61B \uAE30\uB85D {{n}}\uAC74\uC740 \uBB34\uC5C7\uC744 \uD47C \uAC83\uC778\uC9C0 \uC548 \uB0A8\uC544 \uC788\uC5B4 \uC148\uC5D0\uC11C \uBE90\uC2B5\uB2C8\uB2E4.",summaryLabel:"\uC313\uC778 \uAE30\uB85D",summaryValue:"{{items}}\uBB38\uD56D \xB7 \uC544\uC9C1 \uBABB \uC7A1\uC740 \uAC83 {{pending}}\uAC1C",nextLabel:"\uB2E4\uC74C\uC5D0 \uBCFC \uAC83",nextCount:"{{count}}\uAC1C",nextCountCapped:"{{total}}\uAC1C \uC911 {{shown}}\uAC1C",picked:"\u2192 {{what}}",typeClear:"\uB2E4 \uC7A1\uC558\uC5B4\uC694",typePending:"{{total}}\uAC1C \uC911 {{pending}}\uAC1C \uB0A8\uC74C",flat:"\uBCC0\uD654 \uC5C6\uC74C",runs:"{{count}}\uD310",avgDuration:"\uD3C9\uADE0 {{sec}}\uCD08"},Ua={resetColumns:"\uCE78 \uB108\uBE44 \uCD08\uAE30\uD654",scrollRegion:"\uAC00\uB85C\uB85C \uAD74\uB9B4 \uC218 \uC788\uB294 \uD45C",rowActionHint:"\uC904\uC744 \uB204\uB974\uBA74 \uC790\uC138\uD788 \uBD05\uB2C8\uB2E4"},za={panelTitle:"\uB2E8\uC5B4\uD45C \uCC44\uC810",viewWords:"\uB0B1\uB9D0",viewTables:"\uD45C",colLatest:"\uB9C8\uC9C0\uB9C9",colTrend:"\uBCC0\uD654",unitTime:"\uD68C",summaryLabel:"\uC313\uC778 \uCC44\uC810",summaryValue:"{{times}}\uD68C \xB7 \uB0B1\uB9D0 {{words}}\uAC1C",nextLabel:"\uB2E4\uC74C\uC5D0 \uBCFC \uAC83",nextCount:"{{count}}\uAC1C",allClear:"\uC9C0\uB09C\uBC88\uC5D0 \uBAA8\uB450 \uB9DE\uD614\uC2B5\uB2C8\uB2E4.",times:"{{count}}\uD68C",flat:"\uBCC0\uD654 \uC5C6\uC74C",recentLabel:"\uCD5C\uADFC \uCC44\uC810",nextCountCapped:"{{total}}\uAC1C \uC911 {{shown}}\uAC1C"},qa={ariaLabel:"\uBC30\uB108",dotAriaLabel:"{{count}}\uAC1C \uC911 {{index}}\uBC88\uC9F8 \uBC30\uB108"},Ja={selectYearMonth:"\uC5F0\uC6D4 \uC120\uD0DD",chooseDate:"\uB0A0\uC9DC \uC120\uD0DD"},Qa={previewRegion:"\uBCF4\uACE0\uC11C \uBBF8\uB9AC\uBCF4\uAE30 \u2014 \uC88C\uC6B0\uB85C \uAD74\uB824 \uBCFC \uC218 \uC788\uC2B5\uB2C8\uB2E4"},Za={description:"\uC124\uBA85",textbox:"\uBCF8\uBB38",training:"\uD6C8\uB828 \uC548\uB0B4",menu:"\uBA54\uB274"},Xa={devNone:"\uBC1C\uB2EC \uC790\uB8CC \uC5C6\uC74C",place:{labial:"\uC591\uC21C\uC74C",alveolar:"\uCE58\uC870\uC74C",palatal:"\uACBD\uAD6C\uAC1C\uC74C",velar:"\uC5F0\uAD6C\uAC1C\uC74C",glottal:"\uC131\uBB38\uC74C"}},eu={clearSelection:"\uC120\uD0DD \uD574\uC81C"},tu={showResult:"{{type}} \uACB0\uACFC\uBCF4\uAE30"},nu={selected:"\uC120\uD0DD\uB428",remove:"\uC81C\uAC70",exclude:"\uC81C\uC678",nthSelected:"{{n}}\uBC88\uC9F8 \uC120\uD0DD"},ou={loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026"},ru={state:{active:"\uC18C\uB9AC \uB098\uB294 \uC911",played:"\uB4E4\uC74C",correct:"\uC815\uB2F5",wrong:"\uC624\uB2F5"}},au={ariaLabel:"\uC774\uB3D9 \uACBD\uB85C"},uu={empty:"\uB4F1\uB85D\uB41C \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},iu={main:"\uBA54\uC778 \uADF8\uB77C\uB514\uC5B8\uD2B8",soft:"\uC18C\uD504\uD2B8",sub:"\uC11C\uBE0C \uCEEC\uB7EC",deep:"\uB525 \uADF8\uB77C\uB514\uC5B8\uD2B8",softSub:"\uC18C\uD504\uD2B8 \uC11C\uBE0C",warm:"\uC6DC(\uAC15\uC870)",dark:"\uB2E4\uD06C",radial:"\uBC29\uC0AC\uD615 \uADF8\uB77C\uB514\uC5B8\uD2B8",diagonal:"\uB300\uAC01\uC120 \uD328\uD134",dots:"\uB3C4\uD2B8 \uD328\uD134",outline:"\uC544\uC6C3\uB77C\uC778",success:"\uC131\uACF5/\uC644\uB8CC",naver:"\uB124\uC774\uBC84 \uBE14\uB85C\uADF8 \uC548\uB0B4",instagram:"\uC778\uC2A4\uD0C0\uADF8\uB7A8 \uC548\uB0B4"},lu={common:Ur,calendar:zr,passCard:qr,searchField:Jr,rating:Qr,colorPicker:Zr,dropdown:Xr,accordion:ea,header:ta,nav:na,settings:oa,usage:ra,account:aa,help:ua,training:ia,trainingSettings:la,customers:sa,payment:ca,coupons:da,visits:Ca,company:ga,trainingType:fa,myWordTraining:ma,myWordTable:pa,keyWords:ha,wordTable:ya,wordSearch:ba,wordPrint:Sa,topic:wa,accessLinkManager:Ea,login:va,trainingPlanRun:Aa,device:Ba,manager:Da,wordPairs:Na,game:Ta,footer:_a,landing:La,date:Oa,trainingSetPage:Ra,wordTrainingPreview:Pa,wordData:Ma,textField:ka,segmentedControl:Ia,tabs:xa,fileUpload:Fa,avatar:ja,myHomework:$a,trainingStatus:Ha,store:Ga,homework:Va,inquiry:Wa,progress:Ya,trainingMiss:Ka,table:Ua,wordScore:za,topBanner:qa,datePicker:Ja,report:Qa,tooltip:Za,phonemeProfile:Xa,bulkBar:eu,debug:tu,badge:nu,loader:ou,soundCompass:ru,breadcrumb:au,board:uu,promoBannerBg:iu},su={statusFilter:"Filter by status",pageSizeSelect:"Items per page",selectedCount_one:"{{count}} selected",selectedCount_other:"{{count}} selected",moreFor:"More options for {{name}}",collapseFor:"Collapse {{name}}",expandFor:"Expand {{name}}",sortFor:"Sort {{name}}",cancel:"Cancel",info:"Info",errorState:{message:"Couldn't load this.",retry:"Try again"},save:"Save",confirm:"Confirm",discardConfirm:{title:"Discard your changes?",body:"If you do not save, everything you have entered will be lost.",confirm:"Discard"},close:"Close",back:"Back",emptyTrainingName:"Training name is empty.",remove:"Remove",image:"Image",delete:"Delete",reset:"Reset",update:"Update",download:"Download",likeCount_one:"{{count}} like",likeCount_other:"{{count}} likes",selectedOfMax:"{{count}} of {{max}}",downloadCount_one:"{{count}} download",downloadCount_other:"{{count}} downloads",descriptionFor:"About {{name}}",search:"Search",empty:"No data.",yes:"Yes",no:"No",all:"All",none:"None",days_one:"{{count}} day",days_other:"{{count}} days",loadMore:"Load More",retry:"Try Again",prevPage:"Previous page",nextPage:"Next page",play:"Play",playFor:"Play {{name}}",pauseFor:"Pause {{name}}",pause:"Pause",playPause:"Play / Pause",replay:"Replay",subscription:"Subscription",done:"Done",failed:"Failed",continue:"Continue",notification:"Notice",emptyList:"No items",noMatches:"No matching items",menu:"Menu",resetSelection:"Reset Selection",pageSizeLabel:"Show {{n}}",totalCountPrefix:"Total: ",totalCountSuffix:"",expand:"Expand",collapse:"Collapse",popup:"Popup",more:"More",codeBlock:"Code block",totalPrefix:"",copyCode:"Copy code",copied:"Copied",col:{problem:"Question"},phonetics:{place:{labial:"Bilabial",alveolar:"Alveolar",palatal:"Palatal",velar:"Velar",glottal:"Glottal"},vowel:{frontHigh:"Front high vowel",backHighUnrounded:"Back high unrounded vowel",backHighRounded:"Back high rounded vowel",frontMid:"Front mid vowel",backMidUnrounded:"Back mid unrounded vowel",backMidRounded:"Back mid rounded vowel",low:"Low vowel"},glide:{j:"j-glide",w:"w-glide",velar:"\u0270-glide"}},unknownError:"Unknown error",networkError:"The network connection is unstable. Check your connection and try again."},cu={rangeSelect:"Select period",dow:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],weekLabel:"Week {{ord}}",prevMonth:"Previous month",addOnDate:"Add a visit on {{date}}",nextMonth:"Next month",prevWeek:"Previous week",nextWeek:"Next week",legend:{visited:"Visited",scheduled:"Scheduled",noVisit:"No Show"},periodSelect:"Period unit",visitCount_one:"{{count}} visit",visitCount_other:"{{count}} visits",statusCount:"{{count}} {{label}}",weekOrdinal:["1","2","3","4","5","6","7"]},du={planSuffix:"Plan",labeledPlan:"{{label}} Plan",couponCode:"Pass Code",specialLabel:"Open Special",unitDay:"d",unitYear:"yr",remainingDay:"{{n}}d left",remainingHour:"{{n}}h left",remainingMinute:"{{n}}m left",remainingSecond:"{{n}}s left",expired:"Expired",menu:{use:"Activate",refund:"Refund",delete:"Delete"}},Cu={clearAriaLabel:"Clear search"},gu={starLabel:"Select star {{n}}",valueLabel:"{{value}} out of {{max}}",groupLabel:"Rating"},fu={selected:"selected"},mu={placeholder:"Select"},pu={collapse:"Collapse",expand:"Expand"},hu={biArea:"BI area",biSymbol:"BI symbol",logoMalgwi:"Malgwi logo",logoManager:"Malgwi Manager logo",menuOpen:"Open menu",utilMenu:"Utility menu",menuClose:"Close menu"},yu={mainMenu:"Main menu",bottomNav:"Bottom navigation",goToManager:"Go to Malgwi Manager",goToMalgwi:"Go to Malgwi",modeLabelManager:"Malgwi Manager",modeLabelMalgwi:"Malgwi",training:"Training",settings:"Settings",notifications:"Notifications",account:"Account",help:"Help",feedback:"Report a bug",debug:"Debug",coupons:"Coupons",topic:"By Topic",trainingType:"By Training Type",wordPairs:"Word Pairs",wordSearch:"Word Search",wordTable:"Word Table Creator",company:"Company Info",more:"More",moreMenu:"More menu",badgeLabel:"{{label}}, {{count}}",badgeInsideLabel_one:"{{label}}, {{count}} notification inside",badgeInsideLabel_other:"{{label}}, {{count}} notifications inside"},bu={language:{training:{label:"Training Language",sub:"Language used for training words and speech"}},notifications:{title:"Notifications"},display:{fontSize:{small:"Small",large:"Large"}},cache:{title:"Cache Management",confirmMessage:"Delete cache ({{size}}). Do you want to continue?",delete:"Delete",deleting:"Deleting",cleared:"Cache cleared successfully.",group:{wordData:{label:"Word Data",sub:"Word list and version info"},pairIndex:{label:"Pair Index",sub:"Onset\xB7vowel\xB7coda minimal pair analysis cache"},imageCache:{label:"Image Cache",sub:"Word image existence check results"},trainingRecord:{label:"Training Record",sub:"Daily training progress and streak"}}},button:{save:"Save Settings"},popup:{clear:{confirm:"Reset"},update:{confirm:"Update"},cache:{title:"Delete {{label}}",message:"Delete {{label}} ({{size}}). Do you want to continue?"}},saved:"\u2713 Saved",account:{title:"Account",delete:{sub:"You can restore your account within 30 days of withdrawal."}}},Su={addButton:"Add Subscription",couponButton:"Enter Coupon",active:{infoTitle:"Subscription Info",refund:"Request Refund",startDate:"Start Date",endDate:"End Date",remaining:"Remaining"},pending:{title:"Pending",empty:"No pending subscriptions."},loading:"Loading\u2026",segment:{personal:"Malgwi",org:"Malgwi Manager"},org:{title:"Current Plan",disc:"Subscription plan in use by your organization.",empty:"No organization plan registered.",fallbackTitle:"Organization Plan",startDate:"Start Date",endDate:"End Date",remaining:"Remaining",duration:"Duration"}},wu={profile:{planSuffix:"",plan:"Plan"},basicInfo:{name:{placeholder:"John Doe"}},security:{title:"Security",password:{label:"Password",currentRequired:"Enter your current password.",newRequired:"Enter a new password.",mismatch:"The new passwords do not match.",changed:"Your password has been changed."},twoFactor:{label:"Two-Factor Authentication",sub:"Strengthen your account security"}}},Eu={guide:{faq:{title:"FAQ",desc:"View all frequently asked questions"}}},vu={settings:"Settings",start:{title:"Start Word Training",description:"Select a training type below to begin"},difficulty:{tooltip:"The easiest difficulty is 'Random', the hardest is 'Initial Consonant Difference'."},contrast:{label:"Contrast",type:"Contrast Type",count:"Contrast Count",n:"{{n}}"},filter:{random:"Random",trainOnset:"Onset",trainVowel:"Vowel",trainCoda:"Coda",phonemeGroup:"Training phonemes",noLimit:"Any",codaExclude:"Exclude",gradeLabel:"Grade",excludeImageInfo:"Only words with images: keeps only results with a registered word image.",sameStructureInfo:"Only same phoneme structure: keeps only pairs where the correct and wrong answers share the same syllable structure (length, batchim, etc.).",selectSection:"Select",excludeImage:"Only words with images",sameStructure:"Only same phoneme structure"},noQuestions:"No questions available.",countQuestions_one:"{{n}} question",countQuestions_other:"{{n}} questions",countSentences_one:"{{n}} sentence",countSentences_other:"{{n}} sentences",comingSoon:"Coming Soon",nextQuestion:"Next",noiseRatioTitle:"Noise Ratio",noiseRatioValue:"{{ratio}}\xD7",noiseTypeTitle:"Noise Type",playVolumeTitle:"Volume",playSpeedTitle:"Speed",meter:{sentence:"Playback",noise:"Noise",toggle:"Show Audio Meter"},viewResult:"View Results",problemNotice:"Problem {{n}}.",trainingSettingsTitle:"Training Settings",sentencePreview:"Sentence Preview",notHeard:"Didn't hear it.",heardWell:"Heard it well.",confirmTitle:"Check the sentence and select whether you heard it.",noSoundWaveform:"Waveform is not shown for sound-comparison questions.",noise:{level:{none:"None",weak:"Weak",medium:"Medium",strong:"Strong",veryStrong:"Very Strong"},type:{none:"None",default:"Default",street:"Street",buzz:"Buzzing",restaurant:"Restaurant"}},listenTitle:"Please listen to the sentence.",listenButton:"Listen",playSound:"Play Sound",playAll:"Play All",selectInOrder:"Select the cards in the order you heard.",stop:"Stop",preview:"Preview",previewFor:"Preview {{name}}",stopFor:"Stop {{name}}",next:"Next",completed:"Completed",selected:"Selected",nthSelected:"Selection {{n}}",fontSizeMin:"Font size is at the minimum.",fontSizeMax:"Font size is at the maximum.",fontSizeDecrease:"Decrease font size",fontSizeIncrease:"Increase font size",toggleBackground:"Toggle background",cardInstructions:"Look at the word card, listen to the sound, and check it.",noCards:"No cards.",audioFetchError:"Failed to load the sound source.",ttsUnavailable:"Speech playback isn't available on this device.",selectConfirm:"Look at the question and select the answer.",orderListDefault:"Arrange the sentences in the order you heard.",result:{pendingDone:"Results are still being calculated, so you can't finish yet.",eyebrow:"Training Complete",title:"You've finished all the training!",scoreAria:"{{correct}} / {{total}} questions",elapsed:"Time Elapsed",summary:"You heard {{correct}} item(s) correctly.",tableAriaLabel:"Per-question judgement",colJudge:"Judgement",colAnswerSelected:"Answer \xB7 Selected",colAnswer:"Answer",colSelected:"Selected",heardWell:"Heard well",notHeard:"Didn't hear",notJudged:"Not judged",replay:"Replay",replaySound:"Replay item {{no}}",replaySoundStop:"Stop item {{no}}",done:"Done",viewResult:"View Results",noContent:"(No content)"},up:"Move up",down:"Move down",prev:"Previous",listenLabel:"Listen",sourcePlay:"Play source {{n}}",listen:"Listen",audioStatus:{idle:"Idle",resolving:"Resolving\u2026",checking_exists:"Checking file\u2026",getting_signed_url:"Getting URL\u2026",downloading:"Downloading\u2026",measuring_duration:"Measuring length\u2026",ready:"Ready",error:"Error",synthesizing:"Preparing the sound\u2026"}},Au={totalCount:" training bundles",sort:{customers:"Customers"},copyLink:"Copy Link",removeLink:"Remove Link",linkRemoved:"Link removed.",linkSaveFirst:"Please save the training bundle first.",linkSaveFirstHint:"You can only create a shared link from a saved training bundle.",linkCopySelect:"Copy blocked \u2014 link selected. Press Ctrl/\u2318+C to copy.",nameRequired:"Please enter a training bundle name.",itemRequired:"Please add at least one training item.",randomAdd:"Random Add",menu:{publish:"Post to Store",duplicate:"Duplicate Training Bundle",edit:"Edit Training Bundle",move:"Move Group",rename:"Rename"},itemCount:"Number of Items",renameGroup:"Rename Group"},Bu={totalCount:" customers",loadError:"Failed to load list",basicInfo:{editTooltip:"Edit"},member:{placeholder:"Email or phone",link:"Link",linking:"Linking\u2026"},device:{title:"Hearing Devices",addTooltip:"Add New",addButton:"Add device",listTooltip:"View List",listTitle:" Device List",historyEmpty:"No device history registered",wearing:" in use",notRegistered:"Not registered",unit:"",wearingNow:"In use",wear:"Wear",unwear:"Remove",wornSince:"Since {{date}}",release:"Release",historyTitle:"Hearing device history"},schedule:{title:"Upcoming Visits",addTooltip:"Add Schedule",listTooltip:"View All",empty:"No upcoming visits",registerTitle:" Register Schedule",memoPlaceholder:"Enter a memo for this visit."},visitHistory:{title:"Visit History",addTooltip:"Add Visit",empty:"No visit history yet",popupTitle:" Visit History",registerTitle:" Register Visit"},moreItems:"more",viewAll:"View All",visits:{title:"Visits"},trainingRecord:{title:"Customer Training Records"},status:{trainingSubtitle:"Training Status"},detail:{session:{completedFmt:"Done {{done}}/{{total}} \xB7 {{duration}}"},visitSuffix:" visits"},homework:{active:"Active",copied:"Link copied.",copy:"Copy Link",inactive:"Inactive",title:"Homework Progress"},duration:{minSec:"{{m}}m {{s}}s",min:"{{m}}m",sec:"{{s}}s"}},Du={plan:{recommendedFor:"Recommended for",features:"Key Features",freePrice:"Free",contact:"Contact Us",tierFallback:"Plan",openPromo:"Launch offer"},products:{mgrEnterprise:{tier:{price:"Contact us"}}}},Nu={title:"Coupons",subtitle:"Enter a coupon code or view your coupons",input:{label:"Coupon code",placeholder:"Enter coupon code"},applyButton:"Apply",error:{invalid:"Invalid coupon code.",alreadyUsed:"This coupon has already been used."},success:{applied:'"{{name}}" coupon applied.'},section:{owned:"My Coupons"},status:{used:"Used",available:"Available"}},Tu={unitVisit:"",periodAll:"All",showN:"Show {{n}}"},_u={subtitle:"Manage company and business information",editButton:"Edit Info",basicInfo:{title:"Basic Info"},contactInfo:{title:"Contact Info"}},Lu={title:"Training by Type",subtitle:"Select the training type you want",listenInNoise:{title:"Sentence Listening in Noise",desc:"Train sentence comprehension in various noise environments."},shortStory:{title:"Short Story Listening",desc:"Listen to short stories and understand the content."},longStory:{title:"Long Story Listening",desc:"Focus on listening to long stories and grasp the content."},orderingSentence:{title:"Sentence Ordering",desc:"Arrange heard sentences in the correct order."},SAME_SOUND_PICK:{label:"Listen & Pick Same Sound",sub:"Pick the word card that matches what you heard."},SAME_OR_DIFF:{label:"Same or Different?",sub:"Decide whether the two sounds are the same or different."},HEAR_AND_PICK_SAME:{label:"Hear & Match Word",sub:"Pick the word card that matches the sound you heard."},HEAR_AND_PICK_INCLUDED:{label:"Find Word Containing Sound",sub:"Pick the word card that contains the syllable you heard."},STARTS_WITH_SAME_SOUND:{label:"Find Word Starting with Same Sound",sub:"Pick a word that starts with the same sound as what you heard."},LISTEN_AND_REMEMBER_ORDER:{label:"Listen & Recall Order",sub:"Select the cards in the order you heard the three words."},MERGE_2_SYLLABLES:{label:"Combine 2 Syllables",sub:"What word do two syllables make?"},MERGE_3_SYLLABLES:{label:"Combine 3 Syllables",sub:"What word do three syllables make?"},MERGE_2_PHONEMES:{label:"Combine 2 Phonemes",sub:"What sound do two phonemes make?"},MERGE_3_PHONEMES:{label:"Combine 3 Phonemes",sub:"What sound do three phonemes make?"},DROP_1_FROM_2SYLL:{label:"Drop 1 Syllable from 2-Syllable",sub:"What sound remains when you remove a syllable from a 2-syllable word?"},DROP_1_FROM_3SYLL:{label:"Drop 1 Syllable from 3-Syllable",sub:"What sound remains when you remove a syllable from a 3-syllable word?"},DROP_PART_FROM_COMPOUND:{label:"Drop Part of Compound Word",sub:"What word remains when you remove part of a compound word?"},DROP_FINAL_CONSONANT_FROM_1SYLL:{label:"Drop Final Consonant",sub:"What sound remains when you remove the final consonant?"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{label:"Drop Consonant",sub:"What sound remains when you remove the consonant?"},CHANGE_1_SYLL_IN_2SYLL:{label:"Change 1 Syllable (2-Syllable)",sub:"Change one syllable in a 2-syllable word to make a new word."},CHANGE_1_SYLL_IN_3SYLL:{label:"Change 1 Syllable (3-Syllable)",sub:"Change one syllable in a 3-syllable word to make a new word."},CHANGE_1_PHONEME_IN_1SYLL:{label:"Change 1 Phoneme (1-Syllable)",sub:"Change one phoneme in a 1-syllable word to make a new sound."},CHANGE_1_PHONEME_IN_2SYLL:{label:"Change 1 Phoneme (2-Syllable)",sub:"Change one phoneme in a 2-syllable word to make a new word."}},Ou={comingSoon:"Word training is coming soon."},Ru={colName:"Table Name",open:"Open",countSuffix:" tables",addCard:"Add Word Table Card",cardsEmpty:"No word table cards created yet.",menu:{publishStore:"Post to Training Store",unpublishStore:"Remove from Training Store"},newBadge:"Newly created",tab:{cards:"Word Table Cards",tables:"Word Tables"},publishedBadge:"Published",sharedBadge:"Shared"},Pu={title:"Key Words",empty:"No key words available."},Mu={defaultName:"Word Table",title:"Word Table Builder",subtitle:"Set columns and add words to build a table.",filterTitle:"Table Settings",filter:{composition:"Composition",image:"Image",word:"Word",standardPron:"Standard Pronunciation",colloquialPron:"Colloquial Pronunciation",paperOrientation:"Paper Orientation",landscape:"Landscape",portrait:"Portrait",columns:"Columns",column:"{{count}} col",itemsPerPageWord:"Words per page",itemsPerPagePair:"Pairs per page",itemsPerPageOption:"{{count}}",pageIndicator:"{{current}} / {{total}}",pageNumber:"Page Number",pageNumberLeft:"Left",pageNumberCenter:"Center",pageNumberRight:"Right",border:"Border",topInfo:"Header",bottomInfo:"Footer",cutLine:"Cut Line",show:"Show",hide:"Hide",dotted:"Dotted",corner:"Corner"},addWord:"Add",wordInfo:"Info for {{word}}",emptyItems:"Please add at least one word.",load:"Load",openNewWindow:"Open in New Window",saveButton:"Save",saveAsNewButton:"Save as New",print:"Print",popupBlocked:"Popup was blocked. Please allow popups in your browser settings.",printFileNameSingle:"Word Table",printFileNamePair:"Contrast Pair Table",save:{title:"Save Word Table",nameLabel:"Name",desc:"Enter a name for the word table.",placeholder:"Enter a title for this word table.",descriptionLabel:"Description",descriptionPlaceholder:"Enter a description for this word table.",duplicateName:"This name is already in use.",nameRequired:"Please enter a table name.",autoFillHint:" (Press Tab or Space to autofill)",copyName:"{{name}} (copy)"},loadTable:{title:"Load Saved Word Table",empty:"No saved word tables.",loadButton:"Load",itemCount_one:"{{count}} word",itemCount_other:"{{count}} words",deleteAriaLabel:"Delete {{name}}",viewLabel:"View as",sortLabel:"Sort by",sort:{newest:"Newest",oldest:"Oldest",name:"Name",count:"Word Count"},view:{grid:"Grid View",list:"List View"}},publisherFilter:"Show only tables by {{name}}",groupDeleteMessage:"Word tables in this group will be moved to 'No Group'.",groupNamePlaceholder:"Group name",store:{badge:"Training Store"},card:{sub:"Word Table Card",empty:"No word tables in this card."},toast:{renameError:"Failed to rename",saveError:"Failed to save",deleteError:"Failed to delete",duplicateError:"Failed to duplicate",saveSuccess:"Word table saved."},scoring:{o:"{{word}} correct",triangle:"{{word}} partial",x:"{{word}} incorrect",markName:{o:"Correct",triangle:"Partial",x:"Incorrect"},button:"Score",pickTitle:"Who are you scoring?",pickSubtitle:"Choose the customer who trained with \u201C{{name}}\u201D.",pickSearch:"Search by name or phone",pickEmpty:"No customers registered.",pickNoMatch:"No matching customer.",pickAgain:"Choose another",scoringFor:"Scoring {{name}}",none:"Tap \u25CB \xB7 \u25B3 \xB7 \u2715 under a cell to mark it. With a mouse they appear when you hover the cell; with a keyboard, when focus reaches it.",tally:"{{marked}} scored \xB7 \u25CB {{o}} \xB7 \u25B3 {{triangle}} \xB7 \u2715 {{x}} \xB7 {{rate}}%",save:"Save score",saved_one:"Saved {{count}} mark for {{name}}.",saved_other:"Saved {{count}} marks for {{name}}.",reviewTitle:"Create a review table?",reviewMessage_one:"Builds a new table from the {{count}} cell {{name}} got wrong or partial. Correct ones are left out.",reviewMessage_other:"Builds a new table from the {{count}} cells {{name}} got wrong or partial. Correct ones are left out.",reviewConfirm:"Create review table",reviewDescription:"Cells marked wrong or partial in \u201C{{name}}\u201D \u2014 {{count}} of them.",reviewCreated_one:"Created \u201C{{name}}\u201D \u2014 {{count}} cell.",reviewCreated_other:"Created \u201C{{name}}\u201D \u2014 {{count}} cells.",discardTitle:"Discard this scoring?",discardMessage_one:"You marked {{count}} cell but have not saved. Leaving discards it.",discardMessage_other:"You marked {{count}} cells but have not saved. Leaving discards them.",discardConfirm:"Discard and leave"},info:{grade:"Grade: {{n}}",syllables:"Syllables: {{n}}",pos:"Part of speech: {{v}}",wordType:"Type: {{v}}"},pos:{noun:"Noun",verb:"Verb",adjective:"Adjective",adverb:"Adverb",numeral:"Numeral",determiner:"Determiner",interjection:"Interjection",particle:"Particle",affix:"Affix",dependentNoun:"Dependent noun",pronoun:"Pronoun",auxVerb:"Auxiliary verb",auxAdjective:"Auxiliary adjective"},reorder:{moved:"Moved to position {{n}} of {{total}}",handle:"Reorder {{word}} (Alt + arrow keys)",hint:"Alt + \u2190 \u2192 to reorder"}},ku={editBanner:{message:"Saving will update the word table you're editing."},filterTitle:"Word Search Settings",filter:{positionAny:"Any",positionHead:"Start",positionMid:"Middle",positionTail:"End",difficulty:"Grade",grade:"Grade {{n}}",gradeNone:"None",syllables:"Syllables",syllable:"{{n}} Syll.",syllable5plus:"5+ Syllables",partOfSpeech:"Part of Speech",pos:{noun:"Noun/Numeral",verb:"Verb/Adjective",modifier:"Adverb/Determiner"},wordType:"Word Type",field:"Semantic Category",type:{native:"Native Korean",sino:"Sino-Korean",foreign:"Loanword",mixed:"Hybrid"},exclude:"Exclude",excludeNoImage:"No Image"},searchButton:"Search",resultUnit:"words",remaining:"{{count}} remaining",resultDisc:"Select {{unit}}. Up to {{max}} items. ({{selected}}/{{max}})",resultTitlePrefix:"",resultTitleSuffix:" {{unit}} found.",emptyResult:"No results found.",groupCount:"{{count}}",sort:{aria:"Sort",match:"Best Match",ganada:"A\u2013Z \u2191",ganadaDesc:"A\u2013Z \u2193",syllable:"Syllables \u2191",syllableDesc:"Syllables \u2193",grade:"Grade \u2191",gradeDesc:"Grade \u2193",original:"Original order"},pageSize:"Show {{count}}",pageSizeAria:"Page size",popup:{title:"Select a word for cell {{n}}"}},Iu={clearAllSelection:"Clear All Selections",divLine:"Contrast Line",removePair:"Remove pair",removeWord:"Remove word"},xu={title:"By Topic",subtitle:"Select a topic to start listening training",noiseTitle:"Sentence Listening in Noise",shortStoryTitle:"Short Story Listening",FOOD:"Food",HLTH:"Health",WETH:"Weather",PRSN:"People",KRCT:"Korean Culture",STRY:"Stories",LOCA:"Locations",SOAR:"Society & Arts",NTSC:"Nature & Science",SPRT:"Sports",sub:{TRKRFD:"Traditional Korean Food",MDKRFD:"Modern Korean Food",WRLDFD:"World Cuisine",MTRFRT:"Ingredients & Fruits",GEFDKL:"Food Facts",HTETHB:"Healthy Eating",DISILL:"Diseases",EXCISE:"Exercise",GEHTKL:"Health Facts",GESSKL:"Seasons",SNWRAN:"Snow & Rain",WTHFCT:"Weather Forecast",GEWTKL:"Weather Facts",JODYPS:"Joseon Dynasty",MDKRPS:"Modern Korea",THKDPS:"Three Kingdoms",WRLART:"World Artists",WRLPSN:"World Figures",KRLANG:"Korean Language",TRPLCT:"Traditional Games",HERITG:"Heritage",EVTFES:"Events & Festivals",GECTKL:"General Knowledge",FRYTAL:"Fairy Tales",AMZING:"Amazing Stories",DAYSTR:"Everyday Stories",KRLDMK:"Korean Landmarks",SELNMK:"Seoul Landmarks",WRDTRB:"World Travel",NAVIGT:"Navigation",KRSOCI:"Korea",ECONEW:"Economy & News",GENART:"Arts",GELFKL:"Life Tips",ANIMAL:"Animals",PLANTS:"Plants",ETHPLT:"Earth",TOLELC:"Tools & Electronics",GESCKL:"Science Facts",INVDSP:"Individual Sports",MARART:"Martial Arts",TEAMSP:"Team Sports",FOOTBL:"Soccer",GESPKL:"Sports Facts"}},Fu={maxUses:"Max uses (leave blank for unlimited)",redirect:"Redirect URL (leave blank for app home)",creating:"Creating\u2026",create:"Create link",created:"\u2713 Link created",copied:"Copied!",copy:"Copy",loading:"Loading\u2026",empty:"No links created yet.",uses_one:"Used {{count}} time",uses_other:"Used {{count}} times",expiresAt:"Expires: {{date}}",createdAt:"Created: {{date}}",confirmDelete:"Delete this link?",deactivate:"Deactivate",delete:"Delete",status:{active:"Active",expired:"Expired",inactive:"Inactive"}},ju={passwordPlaceholder:"Enter password"},$u={direction:{left:"L",right:"R",label:"Side"},wornDate:"Date Worn",deviceType:"Device Type",brand:"Brand",fitType:"Fit Type",productName:"Product Name",validationError:{brandAndProduct:"Please enter brand and product name."},addNew:"Add New Device",selectFromList:"Select from List",removeDevice:"Remove",type:{hearingAid:"Hearing Aid",cochlearImplant:"Cochlear Implant",other:"Other"}},Hu={stat:{totalCustomers:"Total Customers",monthlyVisits:"This Month's Visits"},chart:{visitDetail:"Visit Details",trainingDetail:"Training Details",weekly:"Weekly",daily:"Daily",periodMonth:"Month",periodWeek:"Week",weeklyPrefix:"Weekly",monthlyPrefix:"Monthly",visit:"Visits",reservation:"Reservations",trainingDone:"Completed",trainingInProgress:"In Progress",weekRange:"{{start}}\u2013{{end}}",week:"W{{n}}"},subscriptionStatus:{active:"{{pct}}% Active",expired:"{{pct}}% Expired",unused:"{{pct}}% Unused"}},Gu={editBanner:{message:"Saving will update the contrast pair table you're editing."},phonemeSelect:{title:"Phoneme Selection",vs:"vs"},caution:"Caution",mode:{include:"Phoneme Include",pick:"Phoneme Contrast",contrast:"Specify Contrast",infoTitle:"Contrast Mode",infoInclude:"Include \u2014 finds words containing all selected phonemes, plus their minimal pair.",infoPick:"Contrast \u2014 matches only if the selected phoneme is the actual point of difference in the pair.",infoContrast:"Specify Contrast \u2014 directly choose phonemes for the base word and the contrasting word to find pairs."},count:"{{n}}",countLabel:"Number of phonemes",input:{char:"Choose Letters",pron:"Choose Sound",infoTitle:"Input mode",infoChar:"Choose Letters \u2014 finds words by the selected phonemes (spelling), then finds their standard-pronunciation contrast pairs.",infoPron:"Choose Sound \u2014 finds standard-pronunciation contrast pairs directly from the selected phonemes."},phonemeN:"Syllable {{n}}",phonemeSingleLabel:"Syllable",phonemeContrastSingleLabel:"Contrast Syllable",ordinals:["First","Second","Third","Fourth"],phonemeOrdinalLabel:"{{ordinal}} Syllable",phonemeContrastOrdinalLabel:"Contrast {{ordinal}} Syllable",composition:"Answer Word Composition",syllableCount:"Syllables",syllableN:"{{n}} syll.",syllableNPlus:"{{n}}+ syll.",onset:"Onset",vowel:"Vowel",coda:"Coda",filter:{searchOptionsTitle:"Contrast Settings",searchModeLabel:"Contrast Mode",countLabel:"Input Syllable Count",inputModeLabel:"Input mode",phonemeOrder:"Input Syllable Position",phonemeOrderInfo:["Match: the pair must differ at exactly the same position (syllable).","Any: the differing position doesn't matter."],orderAny:"Any",orderMatch:"Match",difficultyInfo:["Level 1 \u2014 everyday vocabulary acquired before school age and used for life","Level 2 \u2014 difficulty of grades 1\u20132","Level 3 \u2014 difficulty of grades 3\u20134","Level 4 \u2014 difficulty of grades 5\u20136","No level \u2014 frequent everyday words outside the national standard list, plus coinages and loanwords"],selectLabel:"Select",onlyHasImage:"Only words with images",onlySameStructure:"Only same phoneme structure"},searchLabel:{error:"Failed to load data",loading:"Loading\u2026"},confirmMessage:"The word table with {{count}} selected {{unit}} will be lost.",resetOptions:"Reset Options",phonemeContrast:"Contrast Syllable {{n}}",infoNotes:["The preview character is an example of the selected phoneme combination. The actual search covers all words containing the phoneme.","Initial consonant '\u3147' cannot be selected. \u3147 at the start of a word is effectively silent.","If only onset and coda are selected, the vowel is automatically displayed as '\u314F'.","Increasing the phoneme count searches for minimal pairs between each phoneme."]},Vu={sentenceTyping:{roundCount:"{{rounds}} rounds \xB7 {{timeLimit}}s each"},wordDefense:{me:"Me"},dictation:{title:"Dictation",desc:"Practice writing down exactly what you hear.",comingSoon:"Coming soon: audio playback, input field, answer comparison"},result:{heading:"Level {{number}} Answer",retry:"Try Again"},common:{accuracy:"{{pct}}% accuracy"},soundMatch:{title:"Sound Match",desc:"Quickly match words or sentences that share the same sound.",comingSoon:"Coming soon: play button, timer, score tracking"},orderSequence:{title:"Sentence Ordering",desc:"Arrange scattered sentence fragments in the correct order.",comingSoon:"Coming soon: sentence sets, ordering interface"},speedListen:{title:"Speed Listen",desc:"A challenge game to count the number of words in a sentence within a time limit.",comingSoon:"Coming soon: time limit, scoreboard"},noiseChallenge:{title:"Noise Challenge",desc:"Practice distinguishing sentences amid background noise.",comingSoon:"Coming soon: various noise levels, score tracking"},fastListen:{title:"Fast Listen",desc:"Listen to short sentences at speed and select the key word.",comingSoon:"Coming soon: speed by difficulty, timer"},shadowing:{title:"Shadowing",desc:"Practice pronunciation and intonation by repeating sentences aloud.",comingSoon:"Coming soon: playback, recording, comparison feedback"},phonemeHunt:{title:"Phoneme Hunt",desc:"Find words that contain a specific phoneme (sound).",comingSoon:"Coming soon: phoneme filter, hint feature"}},Wu={lead:`IHAB builds trust
|
|
3
|
+
\uD68C\uBCF5\uC744 \uB3D5\uC2B5\uB2C8\uB2E4.`,site:{title:"\uC0AC\uC774\uD2B8",malgwi:"\uB9D0\uADC0",soundDirection:"\uC18C\uB9AC\uBC29\uD5A5\uC131\uC2DC\uC2A4\uD15C",vrSoundDirection:"VR\uC18C\uB9AC\uBC29\uD5A5\uC131\uC2DC\uC2A4\uD15C",hearingTest:"\uCCAD\uB825\uD14C\uC2A4\uD2B8 \uD504\uB85C"},sns:{title:"SNS",naverBlog:"\uB124\uC774\uBC84 \uBE14\uB85C\uADF8",kakao:"KAKAO Talk \uC624\uD508\uCC44\uD305"},policy:{title:"\uC815\uCC45",terms:"\uC774\uC6A9\uC57D\uAD00",privacy:"\uAC1C\uC778\uC815\uBCF4 \uCC98\uB9AC\uBC29\uCE68"},ceo:"\uB300\uD45C",address:"\uC8FC\uC18C",support:"\uACE0\uAC1D\uC13C\uD130",ceoName:"\uD55C\uC9C0\uD61C",addressValue:"\uAC15\uC6D0\uB3C4 \uCD98\uCC9C\uC2DC \uC2DC\uCCAD\uAE38 32 \uD574\uCC2C\uBE4C\uB529 3\uCE35 302\uD638"},Pa={trainingPhone:{topic:"\uD143\uBC2D\uAC00\uAFB8\uAE30",prev:"\uC774\uC804",next:"\uB2E4\uC74C",speed:"\uBE60\uB974\uAE30 3",noiseType:"\uC640\uAE00\uC640\uAE00",settings:"\uC124\uC815",start:{caption:"\uC544\uB798 \uD50C\uB808\uC774(\u25B6) \uBC84\uD2BC\uC744 \uB20C\uB7EC \uBB38\uC7A5\uC744 \uC798 \uB4E4\uC5B4\uBCF4\uC138\uC694. \uC798 \uB4E4\uC73C\uC2E0 \uB4A4 \uBB38\uC7A5\uC744 \uD655\uC778\uD558\uC138\uC694."},feedback:{caption:"\uC798 \uD0A4\uC6B4 \uBAA8\uC885\uC744 \uD143\uBC2D\uC5D0 \uC2EC\uACE0 \uBE44\uB2D0\uC744 \uC798 \uB36E\uC5B4 \uC90D\uB2C8\uB2E4."},done:{heardWell:"\uC798 \uB4E4\uB9B0 \uBB38\uC7A5",listenAgain:"\uD55C \uBC88 \uB354 \uB4E3\uAE30"}}},Ma={timeHM:"{{h}}\uC2DC {{m}}\uBD84",timeH:"{{h}}\uC2DC"},Ia={options:"\uD6C8\uB828 \uC635\uC158",difficulty:"\uB09C\uC774\uB3C4",exclude:"\uC81C\uC678",chosung:"\uCD08\uC131",excludeOptions:{none:"\uC5C6\uC74C",noImage:"\uC774\uBBF8\uC9C0 \uC5C6\uC74C"}},ka={answer:"\uC815\uB2F5",distractor:"\uC624\uB2F5"},xa={phaseWordDownload:"\uB2E8\uC5B4 \uB370\uC774\uD130 \uB2E4\uC6B4\uB85C\uB4DC",phaseImageCheck:"\uC774\uBBF8\uC9C0 \uD655\uC778",phasePairAnalysis:"\uB2E8\uC5B4\uC30D \uBD84\uC11D",downloadingCount:"{{n}}\uAC1C \uB2E4\uC6B4\uB85C\uB4DC \uC911",checkingPage:"{{page}}\uD398\uC774\uC9C0 \uBAA9\uB85D \uD655\uC778 \uC911",imageCount:"{{done}} / {{total}}\uAC1C"},Fa={clearAriaLabel:"\uC785\uB825\uAC12 \uC9C0\uC6B0\uAE30"},ja={ariaLabel:"\uC120\uD0DD \uD0ED"},$a={ariaLabel:"\uD0ED"},Ha={dragPrompt:"\uD30C\uC77C\uC744 \uC774\uACF3\uC5D0 \uB4DC\uB798\uADF8\uD558\uC5EC \uC5C5\uB85C\uB4DC",browseButton:"\uD30C\uC77C \uC120\uD0DD",removeAriaLabel:"{{name}} \uC81C\uAC70"},Ga={ariaLabel:"\uC0AC\uC6A9\uC790 \uC544\uBC14\uD0C0"},Va={relativeDay:{today:"\uC624\uB298",yesterday:"\uC5B4\uC81C",daysAgo:"{{n}}\uC77C \uC804"},reason:{notLoggedIn:"\uB85C\uADF8\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},list:{title:"\uBC1B\uC740 \uC219\uC81C"},status:{expired:"\uB9CC\uB8CC\uB428",done:"\uC644\uB8CC {{count}}\uD68C \xB7 {{date}}",notDone:"\uBBF8\uC644\uB8CC"}},Wa={weekly:{title:"\uC8FC\uAC04 \uD6C8\uB828 \uD604\uD669",daily:"\uC624\uB298\uC758 \uB4E3\uAE30",crossword:"\uAC00\uB85C\uC138\uB85C"},homework:{title:"\uC219\uC81C \uC9C4\uD589\uD604\uD669",totalRate:"\uC804\uCCB4 \uC644\uB8CC\uC728",count:"\uC804\uCCB4",done:"\uC644\uB8CC",remaining:"\uBBF8\uC644\uB8CC"},today:{tooltipTotal:"\uC804\uCCB4",tooltipDone:"\uC644\uB8CC"},filter:{countSuffix:" \uD6C8\uB828"},time:{countLabel:"{{n}}\uD68C \uD6C8\uB828",empty:"\uD6C8\uB828 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},daily:{title:"\uC624\uB298\uC758 \uB4E3\uAE30 \uAE30\uB85D",empty:"\uC644\uB8CC\uD55C \uD68C\uCC28\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},crossword:{title:"\uAC00\uB85C\uC138\uB85C\uD034\uC988",empty:"\uC644\uB8CC\uD55C \uB808\uBCA8\uC774 \uC5C6\uC2B5\uB2C8\uB2E4"},visit:{title:"\uBC29\uBB38 \uC5F0\uB3D9 \uAE30\uB85D"},detail:"\uC0C1\uC138\uBCF4\uAE30",detailFor:"{{name}} \uC0C1\uC138\uBCF4\uAE30",trainingType:{LISTEN_IN_NOISE:"\uC18C\uC74C \uD558 \uBB38\uC7A5",SHORT_STORY:"\uC9E7\uC740 \uC774\uC57C\uAE30",LONG_STORY:"\uAE34 \uC774\uC57C\uAE30",ORDERING_SENTENCE:"\uBB38\uC7A5 \uC21C\uC11C\uD654"}},Ya={publish:{descPlaceholder:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0 \uD45C\uC2DC\uD560 \uD55C \uC904 \uC124\uBA85 (\uC120\uD0DD)"},import:"\uB0B4 \uD6C8\uB828\uC5D0 \uAC00\uC838\uC624\uAE30",publisher:"\uAC8C\uC2DC\uC790",time:{justNow:"\uBC29\uAE08 \uC804",minutesAgo:"{{n}}\uBD84 \uC804",hoursAgo:"{{n}}\uC2DC\uAC04 \uC804",daysAgo:"{{n}}\uC77C \uC804",weeksAgo:"{{n}}\uC8FC \uC804",monthsAgo:"{{n}}\uAC1C\uC6D4 \uC804",yearsAgo:"{{n}}\uB144 \uC804"},badge:{shared:"\uB9D0\uADC0\uC790\uB8CC\uC2E4"}},Ka={manage:{unit:"\uAC74"}},Ua={cancelLabel:"\uCDE8\uC18C"},za={steps:"\uC9C4\uD589 \uB2E8\uACC4 {{current}} / {{total}}"},qa={panelTitle:"\uD6C8\uB828 \uC624\uB2F5",viewItems:"\uBB38\uD56D",viewTypes:"\uC720\uD615",colPending:"\uB0A8\uC740 \uAC83",colTrend:"\uBCC0\uD654",colRuns:"\uD310",unitItem:"\uAC1C",skippedOnly:"\uC61B \uAE30\uB85D {{n}}\uAC74\uC740 \uBB34\uC5C7\uC744 \uD47C \uAC83\uC778\uC9C0 \uC548 \uB0A8\uC544 \uC788\uC5B4 \uC148\uC5D0\uC11C \uBE90\uC2B5\uB2C8\uB2E4.",summaryLabel:"\uC313\uC778 \uAE30\uB85D",summaryValue:"{{items}}\uBB38\uD56D \xB7 \uC544\uC9C1 \uBABB \uC7A1\uC740 \uAC83 {{pending}}\uAC1C",nextLabel:"\uB2E4\uC74C\uC5D0 \uBCFC \uAC83",nextCount:"{{count}}\uAC1C",nextCountCapped:"{{total}}\uAC1C \uC911 {{shown}}\uAC1C",picked:"\u2192 {{what}}",typeClear:"\uB2E4 \uC7A1\uC558\uC5B4\uC694",typePending:"{{total}}\uAC1C \uC911 {{pending}}\uAC1C \uB0A8\uC74C",flat:"\uBCC0\uD654 \uC5C6\uC74C",runs:"{{count}}\uD310",avgDuration:"\uD3C9\uADE0 {{sec}}\uCD08"},Ja={resetColumns:"\uCE78 \uB108\uBE44 \uCD08\uAE30\uD654",scrollRegion:"\uAC00\uB85C\uB85C \uAD74\uB9B4 \uC218 \uC788\uB294 \uD45C",rowActionHint:"\uC904\uC744 \uB204\uB974\uBA74 \uC790\uC138\uD788 \uBD05\uB2C8\uB2E4"},Qa={panelTitle:"\uB2E8\uC5B4\uD45C \uCC44\uC810",viewWords:"\uB0B1\uB9D0",viewTables:"\uD45C",colLatest:"\uB9C8\uC9C0\uB9C9",colTrend:"\uBCC0\uD654",unitTime:"\uD68C",summaryLabel:"\uC313\uC778 \uCC44\uC810",summaryValue:"{{times}}\uD68C \xB7 \uB0B1\uB9D0 {{words}}\uAC1C",nextLabel:"\uB2E4\uC74C\uC5D0 \uBCFC \uAC83",nextCount:"{{count}}\uAC1C",allClear:"\uC9C0\uB09C\uBC88\uC5D0 \uBAA8\uB450 \uB9DE\uD614\uC2B5\uB2C8\uB2E4.",times:"{{count}}\uD68C",flat:"\uBCC0\uD654 \uC5C6\uC74C",recentLabel:"\uCD5C\uADFC \uCC44\uC810",nextCountCapped:"{{total}}\uAC1C \uC911 {{shown}}\uAC1C"},Za={ariaLabel:"\uBC30\uB108",dotAriaLabel:"{{count}}\uAC1C \uC911 {{index}}\uBC88\uC9F8 \uBC30\uB108"},Xa={selectYearMonth:"\uC5F0\uC6D4 \uC120\uD0DD",chooseDate:"\uB0A0\uC9DC \uC120\uD0DD"},eu={previewRegion:"\uBCF4\uACE0\uC11C \uBBF8\uB9AC\uBCF4\uAE30 \u2014 \uC88C\uC6B0\uB85C \uAD74\uB824 \uBCFC \uC218 \uC788\uC2B5\uB2C8\uB2E4"},tu={description:"\uC124\uBA85",textbox:"\uBCF8\uBB38",training:"\uD6C8\uB828 \uC548\uB0B4",menu:"\uBA54\uB274"},nu={devNone:"\uBC1C\uB2EC \uC790\uB8CC \uC5C6\uC74C",place:{labial:"\uC591\uC21C\uC74C",alveolar:"\uCE58\uC870\uC74C",palatal:"\uACBD\uAD6C\uAC1C\uC74C",velar:"\uC5F0\uAD6C\uAC1C\uC74C",glottal:"\uC131\uBB38\uC74C"}},ou={clearSelection:"\uC120\uD0DD \uD574\uC81C"},ru={showResult:"{{type}} \uACB0\uACFC\uBCF4\uAE30"},au={selected:"\uC120\uD0DD\uB428",remove:"\uC81C\uAC70",exclude:"\uC81C\uC678",nthSelected:"{{n}}\uBC88\uC9F8 \uC120\uD0DD"},uu={loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026"},iu={state:{active:"\uC18C\uB9AC \uB098\uB294 \uC911",played:"\uB4E4\uC74C",correct:"\uC815\uB2F5",wrong:"\uC624\uB2F5"}},lu={ariaLabel:"\uC774\uB3D9 \uACBD\uB85C"},su={empty:"\uB4F1\uB85D\uB41C \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},cu={main:"\uBA54\uC778 \uADF8\uB77C\uB514\uC5B8\uD2B8",soft:"\uC18C\uD504\uD2B8",sub:"\uC11C\uBE0C \uCEEC\uB7EC",deep:"\uB525 \uADF8\uB77C\uB514\uC5B8\uD2B8",softSub:"\uC18C\uD504\uD2B8 \uC11C\uBE0C",warm:"\uC6DC(\uAC15\uC870)",dark:"\uB2E4\uD06C",radial:"\uBC29\uC0AC\uD615 \uADF8\uB77C\uB514\uC5B8\uD2B8",diagonal:"\uB300\uAC01\uC120 \uD328\uD134",dots:"\uB3C4\uD2B8 \uD328\uD134",outline:"\uC544\uC6C3\uB77C\uC778",success:"\uC131\uACF5/\uC644\uB8CC",naver:"\uB124\uC774\uBC84 \uBE14\uB85C\uADF8 \uC548\uB0B4",instagram:"\uC778\uC2A4\uD0C0\uADF8\uB7A8 \uC548\uB0B4"},du={common:Jr,calendar:Qr,passCard:Zr,searchField:Xr,rating:ea,colorPicker:ta,dropdown:na,accordion:oa,header:ra,nav:aa,settings:ua,usage:ia,account:la,help:sa,training:ca,trainingSettings:da,customers:Ca,payment:ga,coupons:fa,visits:ma,company:pa,trainingType:ha,myWordTraining:ya,myWordTable:ba,keyWords:Sa,wordTable:wa,wordSearch:Ea,wordPrint:va,topic:Aa,accessLinkManager:Ba,login:Da,trainingPlanRun:Ta,device:Na,manager:_a,wordPairs:La,game:Oa,footer:Ra,landing:Pa,date:Ma,trainingSetPage:Ia,wordTrainingPreview:ka,wordData:xa,textField:Fa,segmentedControl:ja,tabs:$a,fileUpload:Ha,avatar:Ga,myHomework:Va,trainingStatus:Wa,store:Ya,homework:Ka,inquiry:Ua,progress:za,trainingMiss:qa,table:Ja,wordScore:Qa,topBanner:Za,datePicker:Xa,report:eu,tooltip:tu,phonemeProfile:nu,bulkBar:ou,debug:ru,badge:au,loader:uu,soundCompass:iu,breadcrumb:lu,board:su,promoBannerBg:cu},Cu={statusFilter:"Filter by status",pageSizeSelect:"Items per page",selectedCount_one:"{{count}} selected",selectedCount_other:"{{count}} selected",moreFor:"More options for {{name}}",collapseFor:"Collapse {{name}}",expandFor:"Expand {{name}}",sortFor:"Sort {{name}}",cancel:"Cancel",info:"Info",errorState:{message:"Couldn't load this.",retry:"Try again"},save:"Save",confirm:"Confirm",discardConfirm:{title:"Discard your changes?",body:"If you do not save, everything you have entered will be lost.",confirm:"Discard"},close:"Close",back:"Back",emptyTrainingName:"Training name is empty.",remove:"Remove",image:"Image",delete:"Delete",reset:"Reset",update:"Update",download:"Download",likeCount_one:"{{count}} like",likeCount_other:"{{count}} likes",selectedOfMax:"{{count}} of {{max}}",downloadCount_one:"{{count}} download",downloadCount_other:"{{count}} downloads",descriptionFor:"About {{name}}",search:"Search",empty:"No data.",yes:"Yes",no:"No",all:"All",none:"None",days_one:"{{count}} day",days_other:"{{count}} days",loadMore:"Load More",retry:"Try Again",prevPage:"Previous page",nextPage:"Next page",play:"Play",playFor:"Play {{name}}",pauseFor:"Pause {{name}}",pause:"Pause",playPause:"Play / Pause",replay:"Replay",subscription:"Subscription",done:"Done",failed:"Failed",continue:"Continue",notification:"Notice",emptyList:"No items",noMatches:"No matching items",menu:"Menu",resetSelection:"Reset Selection",pageSizeLabel:"Show {{n}}",totalCountPrefix:"Total: ",totalCountSuffix:"",expand:"Expand",collapse:"Collapse",popup:"Popup",more:"More",codeBlock:"Code block",totalPrefix:"",copyCode:"Copy code",copied:"Copied",col:{problem:"Question"},phonetics:{place:{labial:"Bilabial",alveolar:"Alveolar",palatal:"Palatal",velar:"Velar",glottal:"Glottal"},vowel:{frontHigh:"Front high vowel",backHighUnrounded:"Back high unrounded vowel",backHighRounded:"Back high rounded vowel",frontMid:"Front mid vowel",backMidUnrounded:"Back mid unrounded vowel",backMidRounded:"Back mid rounded vowel",low:"Low vowel"},glide:{j:"j-glide",w:"w-glide",velar:"\u0270-glide"}},unknownError:"Unknown error",networkError:"The network connection is unstable. Check your connection and try again."},gu={rangeSelect:"Select period",dow:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],weekLabel:"Week {{ord}}",prevMonth:"Previous month",addOnDate:"Add a visit on {{date}}",nextMonth:"Next month",prevWeek:"Previous week",nextWeek:"Next week",legend:{visited:"Visited",scheduled:"Scheduled",noVisit:"No Show"},periodSelect:"Period unit",visitCount_one:"{{count}} visit",visitCount_other:"{{count}} visits",statusCount:"{{count}} {{label}}",weekOrdinal:["1","2","3","4","5","6","7"]},fu={planSuffix:"Plan",labeledPlan:"{{label}} Plan",couponCode:"Pass Code",specialLabel:"Open Special",unitDay:"d",unitYear:"yr",remainingDay:"{{n}}d left",remainingHour:"{{n}}h left",remainingMinute:"{{n}}m left",remainingSecond:"{{n}}s left",expired:"Expired",menu:{use:"Activate",refund:"Refund",delete:"Delete"}},mu={clearAriaLabel:"Clear search"},pu={starLabel:"Select star {{n}}",valueLabel:"{{value}} out of {{max}}",groupLabel:"Rating"},hu={selected:"selected"},yu={placeholder:"Select"},bu={collapse:"Collapse",expand:"Expand"},Su={biArea:"BI area",biSymbol:"BI symbol",logoMalgwi:"Malgwi logo",logoManager:"Malgwi Manager logo",menuOpen:"Open menu",utilMenu:"Utility menu",menuClose:"Close menu"},wu={mainMenu:"Main menu",bottomNav:"Bottom navigation",goToManager:"Go to Malgwi Manager",goToMalgwi:"Go to Malgwi",modeLabelManager:"Malgwi Manager",modeLabelMalgwi:"Malgwi",training:"Training",settings:"Settings",notifications:"Notifications",account:"Account",help:"Help",feedback:"Report a bug",debug:"Debug",coupons:"Coupons",topic:"By Topic",trainingType:"By Training Type",wordPairs:"Word Pairs",wordSearch:"Word Search",wordTable:"Word Table Creator",company:"Company Info",more:"More",moreMenu:"More menu",badgeLabel:"{{label}}, {{count}}",badgeInsideLabel_one:"{{label}}, {{count}} notification inside",badgeInsideLabel_other:"{{label}}, {{count}} notifications inside"},Eu={language:{training:{label:"Training Language",sub:"Language used for training words and speech"}},notifications:{title:"Notifications"},display:{fontSize:{small:"Small",large:"Large"}},cache:{title:"Cache Management",confirmMessage:"Delete cache ({{size}}). Do you want to continue?",delete:"Delete",deleting:"Deleting",cleared:"Cache cleared successfully.",group:{wordData:{label:"Word Data",sub:"Word list and version info"},pairIndex:{label:"Pair Index",sub:"Onset\xB7vowel\xB7coda minimal pair analysis cache"},imageCache:{label:"Image Cache",sub:"Word image existence check results"},trainingRecord:{label:"Training Record",sub:"Daily training progress and streak"}}},button:{save:"Save Settings"},popup:{clear:{confirm:"Reset"},update:{confirm:"Update"},cache:{title:"Delete {{label}}",message:"Delete {{label}} ({{size}}). Do you want to continue?"}},saved:"\u2713 Saved",account:{title:"Account",delete:{sub:"You can restore your account within 30 days of withdrawal."}}},vu={addButton:"Add Subscription",couponButton:"Enter Coupon",active:{infoTitle:"Subscription Info",refund:"Request Refund",startDate:"Start Date",endDate:"End Date",remaining:"Remaining"},pending:{title:"Pending",empty:"No pending subscriptions."},loading:"Loading\u2026",segment:{personal:"Malgwi",org:"Malgwi Manager"},org:{title:"Current Plan",disc:"Subscription plan in use by your organization.",empty:"No organization plan registered.",fallbackTitle:"Organization Plan",startDate:"Start Date",endDate:"End Date",remaining:"Remaining",duration:"Duration"}},Au={profile:{planSuffix:"",plan:"Plan"},basicInfo:{name:{placeholder:"John Doe"}},security:{title:"Security",password:{label:"Password",currentRequired:"Enter your current password.",newRequired:"Enter a new password.",mismatch:"The new passwords do not match.",changed:"Your password has been changed."},twoFactor:{label:"Two-Factor Authentication",sub:"Strengthen your account security"}}},Bu={guide:{faq:{title:"FAQ",desc:"View all frequently asked questions"}}},Du={settings:"Settings",start:{title:"Start Word Training",description:"Select a training type below to begin"},difficulty:{tooltip:"The easiest difficulty is 'Random', the hardest is 'Initial Consonant Difference'."},contrast:{label:"Contrast",type:"Contrast Type",count:"Contrast Count",n:"{{n}}"},filter:{random:"Random",trainOnset:"Onset",trainVowel:"Vowel",trainCoda:"Coda",phonemeGroup:"Training phonemes",noLimit:"Any",codaExclude:"Exclude",gradeLabel:"Grade",excludeImageInfo:"Only words with images: keeps only results with a registered word image.",sameStructureInfo:"Only same phoneme structure: keeps only pairs where the correct and wrong answers share the same syllable structure (length, batchim, etc.).",selectSection:"Select",excludeImage:"Only words with images",sameStructure:"Only same phoneme structure"},noQuestions:"No questions available.",countQuestions_one:"{{n}} question",countQuestions_other:"{{n}} questions",countSentences_one:"{{n}} sentence",countSentences_other:"{{n}} sentences",comingSoon:"Coming Soon",nextQuestion:"Next",noiseRatioTitle:"Noise Ratio",noiseRatioValue:"{{ratio}}\xD7",noiseTypeTitle:"Noise Type",playVolumeTitle:"Volume",playSpeedTitle:"Speed",meter:{sentence:"Playback",noise:"Noise",toggle:"Show Audio Meter"},viewResult:"View Results",problemNotice:"Problem {{n}}.",trainingSettingsTitle:"Training Settings",sentencePreview:"Sentence Preview",notHeard:"Didn't hear it.",heardWell:"Heard it well.",confirmTitle:"Check the sentence and select whether you heard it.",noSoundWaveform:"Waveform is not shown for sound-comparison questions.",noise:{level:{none:"None",weak:"Weak",medium:"Medium",strong:"Strong",veryStrong:"Very Strong"},type:{none:"None",default:"Default",street:"Street",buzz:"Buzzing",restaurant:"Restaurant"}},listenTitle:"Please listen to the sentence.",listenButton:"Listen",playSound:"Play Sound",playAll:"Play All",selectInOrder:"Select the cards in the order you heard.",stop:"Stop",preview:"Preview",previewFor:"Preview {{name}}",stopFor:"Stop {{name}}",next:"Next",completed:"Completed",selected:"Selected",nthSelected:"Selection {{n}}",fontSizeMin:"Font size is at the minimum.",fontSizeMax:"Font size is at the maximum.",fontSizeDecrease:"Decrease font size",fontSizeIncrease:"Increase font size",toggleBackground:"Toggle background",cardInstructions:"Look at the word card, listen to the sound, and check it.",noCards:"No cards.",audioFetchError:"Failed to load the sound source.",ttsUnavailable:"Speech playback isn't available on this device.",selectConfirm:"Look at the question and select the answer.",orderListDefault:"Arrange the sentences in the order you heard.",result:{pendingDone:"Results are still being calculated, so you can't finish yet.",eyebrow:"Training Complete",title:"You've finished all the training!",scoreAria:"{{correct}} / {{total}} questions",elapsed:"Time Elapsed",summary:"You heard {{correct}} item(s) correctly.",tableAriaLabel:"Per-question judgement",colJudge:"Judgement",colAnswerSelected:"Answer \xB7 Selected",colAnswer:"Answer",colSelected:"Selected",heardWell:"Heard well",notHeard:"Didn't hear",notJudged:"Not judged",replay:"Replay",replaySound:"Replay item {{no}}",replaySoundStop:"Stop item {{no}}",done:"Done",viewResult:"View Results",noContent:"(No content)"},up:"Move up",down:"Move down",prev:"Previous",listenLabel:"Listen",sourcePlay:"Play source {{n}}",listen:"Listen",audioStatus:{idle:"Idle",resolving:"Resolving\u2026",checking_exists:"Checking file\u2026",getting_signed_url:"Getting URL\u2026",downloading:"Downloading\u2026",measuring_duration:"Measuring length\u2026",ready:"Ready",error:"Error",synthesizing:"Preparing the sound\u2026"}},Tu={totalCount:" training bundles",sort:{customers:"Customers"},copyLink:"Copy Link",removeLink:"Remove Link",linkRemoved:"Link removed.",linkSaveFirst:"Please save the training bundle first.",linkSaveFirstHint:"You can only create a shared link from a saved training bundle.",linkCopySelect:"Copy blocked \u2014 link selected. Press Ctrl/\u2318+C to copy.",nameRequired:"Please enter a training bundle name.",itemRequired:"Please add at least one training item.",randomAdd:"Random Add",menu:{publish:"Post to Store",duplicate:"Duplicate Training Bundle",edit:"Edit Training Bundle",move:"Move Group",rename:"Rename"},itemCount:"Number of Items",renameGroup:"Rename Group"},Nu={totalCount:" customers",loadError:"Failed to load list",basicInfo:{editTooltip:"Edit"},member:{placeholder:"Email or phone",link:"Link",linking:"Linking\u2026"},device:{title:"Hearing Devices",addTooltip:"Add New",addButton:"Add device",listTooltip:"View List",listTitle:" Device List",historyEmpty:"No device history registered",wearing:" in use",notRegistered:"Not registered",unit:"",wearingNow:"In use",wear:"Wear",unwear:"Remove",wornSince:"Since {{date}}",release:"Release",historyTitle:"Hearing device history"},schedule:{title:"Upcoming Visits",addTooltip:"Add Schedule",listTooltip:"View All",empty:"No upcoming visits",registerTitle:" Register Schedule",memoPlaceholder:"Enter a memo for this visit."},visitHistory:{title:"Visit History",addTooltip:"Add Visit",empty:"No visit history yet",popupTitle:" Visit History",registerTitle:" Register Visit"},moreItems:"more",viewAll:"View All",visits:{title:"Visits"},trainingRecord:{title:"Customer Training Records"},status:{trainingSubtitle:"Training Status"},detail:{session:{completedFmt:"Done {{done}}/{{total}} \xB7 {{duration}}"},visitSuffix:" visits"},homework:{active:"Active",copied:"Link copied.",copy:"Copy Link",inactive:"Inactive",title:"Homework Progress"},duration:{minSec:"{{m}}m {{s}}s",min:"{{m}}m",sec:"{{s}}s"}},_u={plan:{recommendedFor:"Recommended for",features:"Key Features",freePrice:"Free",contact:"Contact Us",tierFallback:"Plan",openPromo:"Launch offer"},products:{mgrEnterprise:{tier:{price:"Contact us"}}}},Lu={title:"Coupons",subtitle:"Enter a coupon code or view your coupons",input:{label:"Coupon code",placeholder:"Enter coupon code"},applyButton:"Apply",error:{invalid:"Invalid coupon code.",alreadyUsed:"This coupon has already been used."},success:{applied:'"{{name}}" coupon applied.'},section:{owned:"My Coupons"},status:{used:"Used",available:"Available"}},Ou={unitVisit:"",periodAll:"All",showN:"Show {{n}}"},Ru={subtitle:"Manage company and business information",editButton:"Edit Info",basicInfo:{title:"Basic Info"},contactInfo:{title:"Contact Info"}},Pu={title:"Training by Type",subtitle:"Select the training type you want",listenInNoise:{title:"Sentence Listening in Noise",desc:"Train sentence comprehension in various noise environments."},shortStory:{title:"Short Story Listening",desc:"Listen to short stories and understand the content."},longStory:{title:"Long Story Listening",desc:"Focus on listening to long stories and grasp the content."},orderingSentence:{title:"Sentence Ordering",desc:"Arrange heard sentences in the correct order."},SAME_SOUND_PICK:{label:"Listen & Pick Same Sound",sub:"Pick the word card that matches what you heard."},SAME_OR_DIFF:{label:"Same or Different?",sub:"Decide whether the two sounds are the same or different."},HEAR_AND_PICK_SAME:{label:"Hear & Match Word",sub:"Pick the word card that matches the sound you heard."},HEAR_AND_PICK_INCLUDED:{label:"Find Word Containing Sound",sub:"Pick the word card that contains the syllable you heard."},STARTS_WITH_SAME_SOUND:{label:"Find Word Starting with Same Sound",sub:"Pick a word that starts with the same sound as what you heard."},LISTEN_AND_REMEMBER_ORDER:{label:"Listen & Recall Order",sub:"Select the cards in the order you heard the three words."},MERGE_2_SYLLABLES:{label:"Combine 2 Syllables",sub:"What word do two syllables make?"},MERGE_3_SYLLABLES:{label:"Combine 3 Syllables",sub:"What word do three syllables make?"},MERGE_2_PHONEMES:{label:"Combine 2 Phonemes",sub:"What sound do two phonemes make?"},MERGE_3_PHONEMES:{label:"Combine 3 Phonemes",sub:"What sound do three phonemes make?"},DROP_1_FROM_2SYLL:{label:"Drop 1 Syllable from 2-Syllable",sub:"What sound remains when you remove a syllable from a 2-syllable word?"},DROP_1_FROM_3SYLL:{label:"Drop 1 Syllable from 3-Syllable",sub:"What sound remains when you remove a syllable from a 3-syllable word?"},DROP_PART_FROM_COMPOUND:{label:"Drop Part of Compound Word",sub:"What word remains when you remove part of a compound word?"},DROP_FINAL_CONSONANT_FROM_1SYLL:{label:"Drop Final Consonant",sub:"What sound remains when you remove the final consonant?"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{label:"Drop Consonant",sub:"What sound remains when you remove the consonant?"},CHANGE_1_SYLL_IN_2SYLL:{label:"Change 1 Syllable (2-Syllable)",sub:"Change one syllable in a 2-syllable word to make a new word."},CHANGE_1_SYLL_IN_3SYLL:{label:"Change 1 Syllable (3-Syllable)",sub:"Change one syllable in a 3-syllable word to make a new word."},CHANGE_1_PHONEME_IN_1SYLL:{label:"Change 1 Phoneme (1-Syllable)",sub:"Change one phoneme in a 1-syllable word to make a new sound."},CHANGE_1_PHONEME_IN_2SYLL:{label:"Change 1 Phoneme (2-Syllable)",sub:"Change one phoneme in a 2-syllable word to make a new word."}},Mu={comingSoon:"Word training is coming soon."},Iu={colName:"Table Name",open:"Open",countSuffix:" tables",addCard:"Add Word Table Card",cardsEmpty:"No word table cards created yet.",menu:{publishStore:"Post to Training Store",unpublishStore:"Remove from Training Store"},newBadge:"Newly created",tab:{cards:"Word Table Cards",tables:"Word Tables"},publishedBadge:"Published",sharedBadge:"Shared"},ku={title:"Key Words",empty:"No key words available."},xu={defaultName:"Word Table",title:"Word Table Builder",subtitle:"Set columns and add words to build a table.",filterTitle:"Table Settings",filter:{composition:"Composition",image:"Image",word:"Word",standardPron:"Standard Pronunciation",colloquialPron:"Colloquial Pronunciation",paperOrientation:"Paper Orientation",landscape:"Landscape",portrait:"Portrait",columns:"Columns",column:"{{count}} col",itemsPerPageWord:"Words per page",itemsPerPagePair:"Pairs per page",itemsPerPageOption:"{{count}}",pageIndicator:"{{current}} / {{total}}",pageNumber:"Page Number",pageNumberLeft:"Left",pageNumberCenter:"Center",pageNumberRight:"Right",border:"Border",topInfo:"Header",bottomInfo:"Footer",cutLine:"Cut Line",show:"Show",hide:"Hide",dotted:"Dotted",corner:"Corner"},addWord:"Add",wordInfo:"Info for {{word}}",emptyItems:"Please add at least one word.",load:"Load",openNewWindow:"Open in New Window",saveButton:"Save",saveAsNewButton:"Save as New",print:"Print",popupBlocked:"Popup was blocked. Please allow popups in your browser settings.",printFileNameSingle:"Word Table",printFileNamePair:"Contrast Pair Table",save:{title:"Save Word Table",nameLabel:"Name",desc:"Enter a name for the word table.",placeholder:"Enter a title for this word table.",descriptionLabel:"Description",descriptionPlaceholder:"Enter a description for this word table.",duplicateName:"This name is already in use.",nameRequired:"Please enter a table name.",autoFillHint:" (Press Tab or Space to autofill)",copyName:"{{name}} (copy)"},loadTable:{title:"Load Saved Word Table",empty:"No saved word tables.",loadButton:"Load",itemCount_one:"{{count}} word",itemCount_other:"{{count}} words",deleteAriaLabel:"Delete {{name}}",viewLabel:"View as",sortLabel:"Sort by",sort:{newest:"Newest",oldest:"Oldest",name:"Name",count:"Word Count"},view:{grid:"Grid View",list:"List View"}},publisherFilter:"Show only tables by {{name}}",groupDeleteMessage:"Word tables in this group will be moved to 'No Group'.",groupNamePlaceholder:"Group name",store:{badge:"Training Store"},card:{sub:"Word Table Card",empty:"No word tables in this card."},toast:{renameError:"Failed to rename",saveError:"Failed to save",deleteError:"Failed to delete",duplicateError:"Failed to duplicate",saveSuccess:"Word table saved."},scoring:{o:"{{word}} correct",triangle:"{{word}} partial",x:"{{word}} incorrect",markName:{o:"Correct",triangle:"Partial",x:"Incorrect"},button:"Score",pickTitle:"Who are you scoring?",pickSubtitle:"Choose the customer who trained with \u201C{{name}}\u201D.",pickSearch:"Search by name or phone",pickEmpty:"No customers registered.",pickNoMatch:"No matching customer.",pickAgain:"Choose another",scoringFor:"Scoring {{name}}",none:"Tap \u25CB \xB7 \u25B3 \xB7 \u2715 under a cell to mark it. With a mouse they appear when you hover the cell; with a keyboard, when focus reaches it.",tally:"{{marked}} scored \xB7 \u25CB {{o}} \xB7 \u25B3 {{triangle}} \xB7 \u2715 {{x}} \xB7 {{rate}}%",save:"Save score",saved_one:"Saved {{count}} mark for {{name}}.",saved_other:"Saved {{count}} marks for {{name}}.",reviewTitle:"Create a review table?",reviewMessage_one:"Builds a new table from the {{count}} cell {{name}} got wrong or partial. Correct ones are left out.",reviewMessage_other:"Builds a new table from the {{count}} cells {{name}} got wrong or partial. Correct ones are left out.",reviewConfirm:"Create review table",reviewDescription:"Cells marked wrong or partial in \u201C{{name}}\u201D \u2014 {{count}} of them.",reviewCreated_one:"Created \u201C{{name}}\u201D \u2014 {{count}} cell.",reviewCreated_other:"Created \u201C{{name}}\u201D \u2014 {{count}} cells.",discardTitle:"Discard this scoring?",discardMessage_one:"You marked {{count}} cell but have not saved. Leaving discards it.",discardMessage_other:"You marked {{count}} cells but have not saved. Leaving discards them.",discardConfirm:"Discard and leave"},info:{grade:"Grade: {{n}}",syllables:"Syllables: {{n}}",pos:"Part of speech: {{v}}",wordType:"Type: {{v}}"},pos:{noun:"Noun",verb:"Verb",adjective:"Adjective",adverb:"Adverb",numeral:"Numeral",determiner:"Determiner",interjection:"Interjection",particle:"Particle",affix:"Affix",dependentNoun:"Dependent noun",pronoun:"Pronoun",auxVerb:"Auxiliary verb",auxAdjective:"Auxiliary adjective"},reorder:{moved:"Moved to position {{n}} of {{total}}",handle:"Reorder {{word}} (Alt + arrow keys)",hint:"Alt + \u2190 \u2192 to reorder"}},Fu={editBanner:{message:"Saving will update the word table you're editing."},filterTitle:"Word Search Settings",filter:{positionAny:"Any",positionHead:"Start",positionMid:"Middle",positionTail:"End",difficulty:"Grade",grade:"Grade {{n}}",gradeNone:"None",syllables:"Syllables",syllable:"{{n}} Syll.",syllable5plus:"5+ Syllables",partOfSpeech:"Part of Speech",pos:{noun:"Noun/Numeral",verb:"Verb/Adjective",modifier:"Adverb/Determiner"},wordType:"Word Type",field:"Semantic Category",type:{native:"Native Korean",sino:"Sino-Korean",foreign:"Loanword",mixed:"Hybrid"},exclude:"Exclude",excludeNoImage:"No Image"},searchButton:"Search",resultUnit:"words",remaining:"{{count}} remaining",resultDisc:"Select {{unit}}. Up to {{max}} items. ({{selected}}/{{max}})",resultTitlePrefix:"",resultTitleSuffix:" {{unit}} found.",emptyResult:"No results found.",groupCount:"{{count}}",sort:{aria:"Sort",match:"Best Match",ganada:"A\u2013Z \u2191",ganadaDesc:"A\u2013Z \u2193",syllable:"Syllables \u2191",syllableDesc:"Syllables \u2193",grade:"Grade \u2191",gradeDesc:"Grade \u2193",original:"Original order"},pageSize:"Show {{count}}",pageSizeAria:"Page size",popup:{title:"Select a word for cell {{n}}"}},ju={clearAllSelection:"Clear All Selections",divLine:"Contrast Line",removePair:"Remove pair",removeWord:"Remove word"},$u={title:"By Topic",subtitle:"Select a topic to start listening training",noiseTitle:"Sentence Listening in Noise",shortStoryTitle:"Short Story Listening",FOOD:"Food",HLTH:"Health",WETH:"Weather",PRSN:"People",KRCT:"Korean Culture",STRY:"Stories",LOCA:"Locations",SOAR:"Society & Arts",NTSC:"Nature & Science",SPRT:"Sports",sub:{TRKRFD:"Traditional Korean Food",MDKRFD:"Modern Korean Food",WRLDFD:"World Cuisine",MTRFRT:"Ingredients & Fruits",GEFDKL:"Food Facts",HTETHB:"Healthy Eating",DISILL:"Diseases",EXCISE:"Exercise",GEHTKL:"Health Facts",GESSKL:"Seasons",SNWRAN:"Snow & Rain",WTHFCT:"Weather Forecast",GEWTKL:"Weather Facts",JODYPS:"Joseon Dynasty",MDKRPS:"Modern Korea",THKDPS:"Three Kingdoms",WRLART:"World Artists",WRLPSN:"World Figures",KRLANG:"Korean Language",TRPLCT:"Traditional Games",HERITG:"Heritage",EVTFES:"Events & Festivals",GECTKL:"General Knowledge",FRYTAL:"Fairy Tales",AMZING:"Amazing Stories",DAYSTR:"Everyday Stories",KRLDMK:"Korean Landmarks",SELNMK:"Seoul Landmarks",WRDTRB:"World Travel",NAVIGT:"Navigation",KRSOCI:"Korea",ECONEW:"Economy & News",GENART:"Arts",GELFKL:"Life Tips",ANIMAL:"Animals",PLANTS:"Plants",ETHPLT:"Earth",TOLELC:"Tools & Electronics",GESCKL:"Science Facts",INVDSP:"Individual Sports",MARART:"Martial Arts",TEAMSP:"Team Sports",FOOTBL:"Soccer",GESPKL:"Sports Facts"}},Hu={maxUses:"Max uses (leave blank for unlimited)",redirect:"Redirect URL (leave blank for app home)",creating:"Creating\u2026",create:"Create link",created:"\u2713 Link created",copied:"Copied!",copy:"Copy",loading:"Loading\u2026",empty:"No links created yet.",uses_one:"Used {{count}} time",uses_other:"Used {{count}} times",expiresAt:"Expires: {{date}}",createdAt:"Created: {{date}}",confirmDelete:"Delete this link?",deactivate:"Deactivate",delete:"Delete",status:{active:"Active",expired:"Expired",inactive:"Inactive"}},Gu={passwordPlaceholder:"Enter password"},Vu={direction:{left:"L",right:"R",label:"Side"},wornDate:"Date Worn",deviceType:"Device Type",brand:"Brand",fitType:"Fit Type",productName:"Product Name",validationError:{brandAndProduct:"Please enter brand and product name."},addNew:"Add New Device",selectFromList:"Select from List",removeDevice:"Remove",type:{hearingAid:"Hearing Aid",cochlearImplant:"Cochlear Implant",other:"Other"}},Wu={stat:{totalCustomers:"Total Customers",monthlyVisits:"This Month's Visits"},chart:{visitDetail:"Visit Details",trainingDetail:"Training Details",weekly:"Weekly",daily:"Daily",periodMonth:"Month",periodWeek:"Week",weeklyPrefix:"Weekly",monthlyPrefix:"Monthly",visit:"Visits",reservation:"Reservations",trainingDone:"Completed",trainingInProgress:"In Progress",weekRange:"{{start}}\u2013{{end}}",week:"W{{n}}"},subscriptionStatus:{active:"{{pct}}% Active",expired:"{{pct}}% Expired",unused:"{{pct}}% Unused"}},Yu={editBanner:{message:"Saving will update the contrast pair table you're editing."},phonemeSelect:{title:"Phoneme Selection",vs:"vs"},caution:"Caution",mode:{include:"Phoneme Include",pick:"Phoneme Contrast",contrast:"Specify Contrast",infoTitle:"Contrast Mode",infoInclude:"Include \u2014 finds words containing all selected phonemes, plus their minimal pair.",infoPick:"Contrast \u2014 matches only if the selected phoneme is the actual point of difference in the pair.",infoContrast:"Specify Contrast \u2014 directly choose phonemes for the base word and the contrasting word to find pairs."},count:"{{n}}",countLabel:"Number of phonemes",input:{char:"Choose Letters",pron:"Choose Sound",infoTitle:"Input mode",infoChar:"Choose Letters \u2014 finds words by the selected phonemes (spelling), then finds their standard-pronunciation contrast pairs.",infoPron:"Choose Sound \u2014 finds standard-pronunciation contrast pairs directly from the selected phonemes."},phonemeN:"Syllable {{n}}",phonemeSingleLabel:"Syllable",phonemeContrastSingleLabel:"Contrast Syllable",ordinals:["First","Second","Third","Fourth"],phonemeOrdinalLabel:"{{ordinal}} Syllable",phonemeContrastOrdinalLabel:"Contrast {{ordinal}} Syllable",composition:"Answer Word Composition",syllableCount:"Syllables",syllableN:"{{n}} syll.",syllableNPlus:"{{n}}+ syll.",onset:"Onset",vowel:"Vowel",coda:"Coda",filter:{searchOptionsTitle:"Contrast Settings",searchModeLabel:"Contrast Mode",countLabel:"Input Syllable Count",inputModeLabel:"Input mode",phonemeOrder:"Input Syllable Position",phonemeOrderInfo:["Match: the pair must differ at exactly the same position (syllable).","Any: the differing position doesn't matter."],orderAny:"Any",orderMatch:"Match",difficultyInfo:["Level 1 \u2014 everyday vocabulary acquired before school age and used for life","Level 2 \u2014 difficulty of grades 1\u20132","Level 3 \u2014 difficulty of grades 3\u20134","Level 4 \u2014 difficulty of grades 5\u20136","No level \u2014 frequent everyday words outside the national standard list, plus coinages and loanwords"],selectLabel:"Select",onlyHasImage:"Only words with images",onlySameStructure:"Only same phoneme structure"},searchLabel:{error:"Failed to load data",loading:"Loading\u2026"},confirmMessage:"The word table with {{count}} selected {{unit}} will be lost.",resetOptions:"Reset Options",phonemeContrast:"Contrast Syllable {{n}}",infoNotes:["The preview character is an example of the selected phoneme combination. The actual search covers all words containing the phoneme.","Initial consonant '\u3147' cannot be selected. \u3147 at the start of a word is effectively silent.","If only onset and coda are selected, the vowel is automatically displayed as '\u314F'.","Increasing the phoneme count searches for minimal pairs between each phoneme."]},Ku={sentenceTyping:{roundCount:"{{rounds}} rounds \xB7 {{timeLimit}}s each"},wordDefense:{me:"Me"},dictation:{title:"Dictation",desc:"Practice writing down exactly what you hear.",comingSoon:"Coming soon: audio playback, input field, answer comparison"},result:{heading:"Level {{number}} Answer",retry:"Try Again"},common:{accuracy:"{{pct}}% accuracy"},soundMatch:{title:"Sound Match",desc:"Quickly match words or sentences that share the same sound.",comingSoon:"Coming soon: play button, timer, score tracking"},orderSequence:{title:"Sentence Ordering",desc:"Arrange scattered sentence fragments in the correct order.",comingSoon:"Coming soon: sentence sets, ordering interface"},speedListen:{title:"Speed Listen",desc:"A challenge game to count the number of words in a sentence within a time limit.",comingSoon:"Coming soon: time limit, scoreboard"},noiseChallenge:{title:"Noise Challenge",desc:"Practice distinguishing sentences amid background noise.",comingSoon:"Coming soon: various noise levels, score tracking"},fastListen:{title:"Fast Listen",desc:"Listen to short sentences at speed and select the key word.",comingSoon:"Coming soon: speed by difficulty, timer"},shadowing:{title:"Shadowing",desc:"Practice pronunciation and intonation by repeating sentences aloud.",comingSoon:"Coming soon: playback, recording, comparison feedback"},phonemeHunt:{title:"Phoneme Hunt",desc:"Find words that contain a specific phoneme (sound).",comingSoon:"Coming soon: phoneme filter, hint feature"}},Uu={lead:`IHAB builds trust
|
|
4
4
|
through sound
|
|
5
|
-
and aids recovery.`,site:{title:"Site",malgwi:"Malgwi",soundDirection:"Sound Direction System",vrSoundDirection:"VR Sound Direction System",hearingTest:"Hearing Test Pro"},sns:{title:"SNS",naverBlog:"Naver Blog",kakao:"KAKAO Talk Open Chat"},policy:{title:"Policy",terms:"Terms of Service",privacy:"Privacy Policy"},ceo:"CEO",address:"Address",support:"Support",ceoName:"Ji-hye Han",addressValue:"302, 3F, Haechan Bldg, 32 Sicheong-gil, Chuncheon, Gangwon, Korea"},Yu={trainingPhone:{topic:"Gardening",prev:"Prev",next:"Next",speed:"Speed 3",noiseType:"Crowd noise",settings:"Settings",start:{caption:"Press the play (\u25B6) button below and listen carefully. After listening, check the sentence."},feedback:{caption:"Plant the well-grown seedlings in the garden bed and cover them carefully with plastic film."},done:{heardWell:"Heard clearly",listenAgain:"Listen again"}}},Ku={timeHM:"{{hh}}:{{mm}}",timeH:"{{hh}}:{{mm}}"},Uu={options:"Training Options",difficulty:"Difficulty",exclude:"Exclude",chosung:"Initial Consonant",excludeOptions:{none:"None",noImage:"No Image"}},zu={answer:"Answer",distractor:"Distractor"},qu={phaseWordDownload:"Download Word Data",phaseImageCheck:"Check Images",phasePairAnalysis:"Analyze Word Pairs",downloadingCount_one:"Downloading {{n}} word",downloadingCount_other:"Downloading {{n}} words",checkingPage:"Checking page {{page}} list",imageCount:"{{done}} / {{total}} items"},Ju={clearAriaLabel:"Clear input"},Qu={ariaLabel:"Select tab"},Zu={ariaLabel:"Tabs"},Xu={dragPrompt:"Drag and drop files here",browseButton:"Choose Files",removeAriaLabel:"Remove {{name}}"},ei={ariaLabel:"User avatar"},ti={relativeDay:{today:"Today",yesterday:"Yesterday",daysAgo:"{{n}}d ago"},reason:{notLoggedIn:"Login required."},list:{title:"Received Homework"},status:{expired:"Expired",done:"Done {{count}}\xD7 \xB7 {{date}}",notDone:"Not done"}},ni={weekly:{title:"Weekly Training",daily:"Daily Listening",crossword:"Crossword"},homework:{title:"Homework Progress",totalRate:"Overall rate",count:"Total",done:"Done",remaining:"Remaining"},today:{tooltipTotal:"Total",tooltipDone:"Done"},filter:{countSuffix:" sessions"},time:{countLabel_one:"{{n}} session",countLabel_other:"{{n}} sessions",empty:"No training records"},daily:{title:"Today's Listening Record",empty:"No completed sessions"},crossword:{title:"Crossword Quiz",empty:"No completed levels"},visit:{title:"Linked Visit Records"},detail:"Details",detailFor:"{{name}} details",trainingType:{LISTEN_IN_NOISE:"Sentence in Noise",SHORT_STORY:"Short Story",LONG_STORY:"Long Story",ORDERING_SENTENCE:"Sentence Ordering"}},oi={import:"Add to my trainings",publisher:"Publisher",time:{justNow:"just now",minutesAgo:"{{n}}m ago",hoursAgo:"{{n}}h ago",daysAgo:"{{n}}d ago",weeksAgo:"{{n}}w ago",monthsAgo:"{{n}}mo ago",yearsAgo:"{{n}}y ago"},badge:{shared:"Store"},publish:{descPlaceholder:"One-line description for the Training Store (optional)"}},ri={manage:{unit:"item(s)"}},ai={cancelLabel:"Cancel"},ui={subtitle:"Select a topic to start listening practice."},ii={steps:"Step {{current}} of {{total}}"},li={panelTitle:"Training misses",viewItems:"Items",viewTypes:"Types",colPending:"Left",colTrend:"Change",colRuns:"Runs",unitItem:" items",skippedOnly_one:"{{n}} older record was excluded \u2014 it does not say what was answered.",skippedOnly_other:"{{n}} older records were excluded \u2014 they do not say what was answered.",summaryLabel:"Recorded",summaryValue:"{{items}} items \xB7 {{pending}} still missed",nextLabel:"Next to work on",nextCount:"{{count}}",nextCountCapped:"{{shown}} of {{total}}",picked:"\u2192 {{what}}",typeClear:"All caught up",typePending:"{{pending}} of {{total}} left",flat:"no change",runs_one:"{{count}} run",runs_other:"{{count}} runs",avgDuration:"{{sec}}s avg"},si={resetColumns:"Reset column widths",scrollRegion:"Horizontally scrollable table",rowActionHint:"Press a row to open its details"},ci={panelTitle:"Word table scores",viewWords:"Words",viewTables:"Tables",colLatest:"When",colTrend:"Change",unitTime:" times",summaryLabel:"Scored",summaryValue:"{{times}} times \xB7 {{words}} words",nextLabel:"Focus next",nextCount:"{{count}}",allClear:"All correct last time.",times:"{{count}}x",flat:"no change",recentLabel:"Recent scorings",nextCountCapped:"{{shown}} of {{total}}"},di={ariaLabel:"Banner",dotAriaLabel:"Banner {{index}} of {{count}}"},Ci={selectYearMonth:"Select year and month",chooseDate:"Choose a date"},gi={previewRegion:"Report preview \u2014 scrollable sideways"},fi={description:"Description",textbox:"Text",training:"Training guide",menu:"Menu"},mi={devNone:"No acquisition data",place:{labial:"Bilabial",alveolar:"Alveolar",palatal:"Palatal",velar:"Velar",glottal:"Glottal"}},pi={clearSelection:"Clear selection"},hi={showResult:"Show {{type}} result"},yi={selected:"Selected",remove:"Remove",exclude:"Excluded",nthSelected:"Selection {{n}}"},bi={loading:"Loading"},Si={state:{active:"playing",played:"heard",correct:"correct",wrong:"wrong"}},wi={ariaLabel:"Breadcrumb"},Ei={empty:"No items yet."},vi={main:"Main gradient",soft:"Soft",sub:"Sub color",deep:"Deep gradient",softSub:"Soft sub",warm:"Warm (accent)",dark:"Dark",radial:"Radial gradient",diagonal:"Diagonal pattern",dots:"Dot pattern",outline:"Outline",success:"Success / done",naver:"Naver blog notice",instagram:"Instagram notice"},Ai={common:su,calendar:cu,passCard:du,searchField:Cu,rating:gu,colorPicker:fu,dropdown:mu,accordion:pu,header:hu,nav:yu,settings:bu,usage:Su,account:wu,help:Eu,training:vu,trainingSettings:Au,customers:Bu,payment:Du,coupons:Nu,visits:Tu,company:_u,trainingType:Lu,myWordTraining:Ou,myWordTable:Ru,keyWords:Pu,wordTable:Mu,wordSearch:ku,wordPrint:Iu,topic:xu,accessLinkManager:Fu,login:ju,device:$u,manager:Hu,wordPairs:Gu,game:Vu,footer:Wu,landing:Yu,date:Ku,trainingSetPage:Uu,wordTrainingPreview:zu,wordData:qu,textField:Ju,segmentedControl:Qu,tabs:Zu,fileUpload:Xu,avatar:ei,myHomework:ti,trainingStatus:ni,store:oi,homework:ri,inquiry:ai,trainingPlanRun:ui,progress:ii,trainingMiss:li,table:si,wordScore:ci,topBanner:di,datePicker:Ci,report:gi,tooltip:fi,phonemeProfile:mi,bulkBar:pi,debug:hi,badge:yi,loader:bi,soundCompass:Si,breadcrumb:wi,board:Ei,promoBannerBg:vi};const Bi="0.337.0",Di=[{code:"ko",label:"\uD55C\uAD6D\uC5B4"},{code:"en",label:"English"}],Mt="ko",Ni="ihab_display_language";function Hn(){if(typeof window>"u")return Mt;try{const e=localStorage.getItem(Ni);if(e&&Di.some(t=>t.code===e))return e}catch{}return Mt}function Gn(e){try{document.documentElement.lang=e}catch{}}re.on("languageChanged",Gn),Gn(Hn()),re.use(se.initReactI18next).init({resources:{ko:{translation:lu},en:{translation:Ai}},lng:Hn(),fallbackLng:Mt,interpolation:{escapeValue:!1},react:{useSuspense:!1}});const Vn=new Set(["field"]),kt="none";function Ti(e){return e==null||String(e).trim()===""}function _i(e){return typeof e=="string"&&xt.includes(e)}function It(e,t){if(!e)return!0;const n=e instanceof Set?e:new Set(e);return n.size===0?!0:Ti(t)?n.has(kt):n.has(String(t))}const Ve=["grade","syllables","pos","wordType","field"],xt=["1","2","3","4","none"],Li=["1","2","3","4","5+"],Oi=["noun","verb","modifier"],Ri=["native","sino","foreign","mixed"],Pi={grade:xt,syllables:Li,pos:Oi,wordType:Ri,field:[]},Mi={noun:["\uBA85","\uC218"],verb:["\uB3D9","\uD615"],modifier:["\uBD80","\uAD00"]},ki={native:"\uACE0\uC720",sino:"\uD55C\uC790",foreign:"\uC678\uB798",mixed:"\uD63C\uC885"},Ii={grade:["\uB09C\uC774\uB3C4 \uB4F1\uAE09"]},xi={pos:{noun:["\uCCB4\uC5B8(\uBA85\uC0AC,\uC218\uC0AC)"],verb:["\uC6A9\uC5B8(\uB3D9\uC0AC,\uD615\uC6A9\uC0AC)"],modifier:["\uC218\uC2DD\uC5B8(\uBD80\uC0AC,\uAD00\uD615\uC0AC)"]}},Ft=new Map;try{re.store?.on?.("added",()=>Ft.clear())}catch{}function We(e){const t=Ft.get(e);if(t)return t;const n=re.getFixedT(e),o={section:{grade:n("wordSearch.filter.difficulty","\uB4F1\uAE09"),syllables:n("wordSearch.filter.syllables","\uC74C\uC808 \uC218"),pos:n("wordSearch.filter.partOfSpeech","\uD488\uC0AC"),wordType:n("wordSearch.filter.wordType","\uC720\uD615"),field:n("wordSearch.filter.field","\uC758\uBBF8\uBC94\uC8FC")},value:{grade:{...Object.fromEntries(xt.filter(r=>r!==kt).map(r=>[r,n("wordSearch.filter.grade",{n:Number(r),defaultValue:`${r}\uB4F1\uAE09`})])),[kt]:n("wordSearch.filter.gradeNone","\uC5C6\uC74C")},syllables:{...Object.fromEntries(["1","2","3","4"].map(r=>[r,n("wordSearch.filter.syllable",{n:Number(r),defaultValue:`${r}\uC74C\uC808`})])),"5+":n("wordSearch.filter.syllable5plus","5\uC74C\uC808 \uC774\uC0C1")},pos:{noun:n("wordSearch.filter.pos.noun","\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)"),verb:n("wordSearch.filter.pos.verb","\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)"),modifier:n("wordSearch.filter.pos.modifier","\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)")},wordType:{native:n("wordSearch.filter.type.native","\uACE0\uC720\uC5B4"),sino:n("wordSearch.filter.type.sino","\uD55C\uC790\uC5B4"),foreign:n("wordSearch.filter.type.foreign","\uC678\uB798\uC5B4"),mixed:n("wordSearch.filter.type.mixed","\uD63C\uC885\uC5B4")},field:{}}};return Ft.set(e,o),o}const jt=()=>Array.from(new Set([re.language,"ko","en"].filter(e=>!!e)));function Ye(e){if(Ve.includes(e))return e;for(const t of jt()){const n=We(t);for(const o of Ve)if(n.section[o]===e)return o}for(const t of Ve)if(Ii[t]?.includes(e))return t;return null}function Ee(e,t){if(Vn.has(e)||Pi[e].includes(t))return t;for(const n of jt()){const o=We(n).value[e];for(const[r,a]of Object.entries(o))if(a===t)return r}for(const[n,o]of Object.entries(xi[e]??{}))if(o.includes(t))return n;if(e==="grade"||e==="syllables"){const n=parseInt(t.replace(/\D/g,""),10);if(Number.isFinite(n)&&n>=1)return e==="grade"?n<=4?String(n):null:n>=5?"5+":String(n)}return null}function Fi(e,t,n=re.language){return We(n).value[e][t]??t}const ji=e=>Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"&&e?[e]:[];function $t(e){const t={};for(const[n,o]of Object.entries(e??{})){const r=Ye(n);if(r)for(const a of ji(o)){const u=Ee(r,a);if(!u)continue;const i=t[r]??(t[r]=[]);i.includes(u)||i.push(u)}}return t}function Ht(e,t=re.language){const n=We(t||"ko"),o={};for(const r of Ve){const a=(e?.[r]??[]).map(u=>n.value[r][u]??(Vn.has(r)?u:void 0)).filter(u=>!!u);a.length&&(o[n.section[r]]=a)}return o}function $i(e,t=re.language){const n={};for(const[o,r]of Object.entries(e??{}))Ye(o)||(n[o]=r);return{...n,...Ht($t(e),t)}}function Hi(e){for(const t of jt()){const n=We(t);if(Ve.some(o=>n.section[o]===e))return t}return re.language||"ko"}let ct=null,Wn=null,Yn=null;function Gi(){const e=it();if(e&&e.entries.length>0){const t=Ie();if(ct&&Wn===e&&Yn===t)return ct;const n=new Set,o=[];for(const r of e.entries)!r.word||n.has(r.word)||(n.add(r.word),o.push({w:r.word,s:r.syllables,p:t?.[r.word]?[...t[r.word].cho??[],...t[r.word].jung??[],...t[r.word].jong??[]]:[],pron:r.pronunciation||r.word,grade:r.grade}));return ct=o,Wn=e,Yn=t,ct}return[]}const de=new Proxy([],{get(e,t){const n=Gi(),o=n[t];return typeof o=="function"?o.bind(n):o}});function Gt(e){return e.length?e[Math.floor(Math.random()*e.length)]:void 0}function ae(e,t){if(t>=e.length)return H(e);if(t===0)return[];const n=e.slice();for(let o=0;o<t;o++){const r=o+Math.floor(Math.random()*(n.length-o)),a=n[o];n[o]=n[r],n[r]=a}return n.slice(0,t)}let Vt=null,Kn=null;function me(){const e=it();if(Vt&&Kn===e)return Vt;const t=new Map;for(const n of de)n.w&&t.set(n.w,n.pron);return Vt=t,Kn=e,t}function q(e){return me().get(e)||e}function dt(e,t,n=new Set){const o=[];for(const r of H(e)){if(o.length>=t)break;const a=q(r);n.has(a)||(n.add(a),o.push(r))}return o}let Vi=0;function Z(e){return`${e}-rt-${++Vi}`}function Te(e){const t=Ln();if(!t||t.total===0){const r=new Set;for(const a of e)r.add(a);return r}const n=On(),o=new Set;for(const r of e)n.has(r)&&o.add(r);return o}const Ct=new Map;let Un=null,zn=null;function Ke(e){return e==null?"":Array.isArray(e)?e.slice().sort().join(","):e}function Wt(e){const t=Ke(e.choseong),n=e.composition,o=n?.syllable==null?"":Array.isArray(n.syllable)?n.syllable.slice().sort().join(","):String(n.syllable),r=n?`${Ke(n.cho)}/${Ke(n.jung)}/${Ke(n.jong)}/${n.jongNone?"N":""}/${o}`:"",a=Ke(e.grade);return`${e.difficulty??""}|${t}|${r}|${e.excludeNoImage?"1":"0"}|${e.count??""}|x${e.contrastCount??1}|${e.fullCount?"F":""}|s${e.sameStructureOnly===!1?"0":"1"}|v${e.phonemeView==="pron"?"p":"c"}|g${a}|t${e.targetSyllable??""}|c${e.choicesPerItem??""}`}const Yt=new Map;function Wi(e){return Wt({...e,count:void 0,choicesPerItem:void 0,fullCount:!1})}async function ne(e){const t=it(),n=Ie();(t!==Un||n!==zn)&&(Ct.clear(),Yt.clear(),Un=t,zn=n);const o=Wt(e);return Ct.has(o)||Ct.set(o,Yi(e)),Ct.get(o)}function qn(e){if(!e)return null;const t=u=>u==null?null:Array.isArray(u)?u.length?u:null:[u],n=t(e.cho),o=t(e.jung),r=!!e.jongNone,a=r?null:t(e.jong);return n||o||a||r?r&&!n&&!o&&!a?u=>lr(u):u=>cr(u,{cho:n,jung:o,jong:a,jongNone:r}):null}function Jn(e){const t=e.grade&&e.grade.length>0?new Set(e.grade):null,n=e.composition??null,o=n?.syllable!=null?new Set(Array.isArray(n.syllable)?n.syllable:[n.syllable]):null,r=n?[qn(n),o?u=>o.has(Me(u)):null].filter(u=>u!=null):[];if(!t&&r.length===0)return null;const a=e.phonemeView==="pron";return u=>{if(!It(t,u.grade))return!1;if(r.length===0)return!0;const i=a?q(u.w):u.w;return r.every(l=>l(i))}}async function Yi(e){const{difficulty:t=null,choseong:n=null,composition:o=null,targetSyllable:r=null,excludeNoImage:a=!1}=e,u=e.grade&&e.grade.length>0?new Set(e.grade):null,i=e.sameStructureOnly??!0,l=e.phonemeView==="pron"?"pron":"char",c=Math.max(1,e.contrastCount??1),g=t==="cho"||t==="jung"||t==="jong",d=g&&c>=2,C=t==="count",f=n?new Set(Array.isArray(n)?n:[n]):null,m=o?.syllable!=null?new Set(Array.isArray(o.syllable)?o.syllable:[o.syllable]):null,S=o?[qn(o),m?v=>m.has(Me(v)):null].filter(v=>v!=null):[],h=t==="random"||t===null,p=h||C,y=h||d||C;let w=de.filter(v=>!v.w||!It(u,v.grade)?!1:y?!0:Array.isArray(v.p)&&v.p.length>0);f&&(w=w.filter(v=>{for(const _ of f)if(ur(v.w,_))return!0;return!1})),S.length>0&&(w=w.filter(v=>{const _=l==="pron"?q(v.w):v.w;return S.every(P=>P(_))})),r&&(w=w.filter(v=>v.w[0]===r));let E;if(a){const v=new Set;for(const _ of w)if(v.add(_.w),Array.isArray(_.p))for(const P of _.p)v.add(P);if(p)for(const _ of de)_.w&&v.add(_.w);E=Te(v)}else{const v=new Set;for(const _ of w)if(v.add(_.w),Array.isArray(_.p))for(const P of _.p)v.add(P);if(p)for(const _ of de)_.w&&v.add(_.w);E=v}let T=null;if(d){const v=new Set;for(const _ of de)_.w&&v.add(_.w);T=a?Te(v):v}const B=w.filter(v=>E.has(v.w)),N=600,A=Array.from(E),k=A.length>N?ae(A,N):A,D=C&&o!=null&&(z(o.cho)||z(o.jung)||z(o.jong)),$=2500,j=new Map;if(C&&!D&&c>=2){for(const v of A){const _=Me(v),P=j.get(_);P?P.push(v):j.set(_,[v])}for(const[v,_]of j)_.length>$&&j.set(v,ae(_,$))}const M=rr();let O=null;if(D){const v=Wi(e),_=a?On():null,P=Yt.get(v);O=P&&P.imageOkSet===_?P.map:kr(o,A,M,i,l,q),Yt.set(v,{imageOkSet:_,map:O})}const I=500,W=1500,X=e.fullCount?B:t==="random"?B.length>I?ae(B,I):B:B.length>W?ae(B,W):B,U=Ie(),he=[];for(const v of X){let _;const P=q(v.w);if(d)_=Cr(v.w,t,c,T,24).filter(G=>q(G)!==P);else if(C)D?_=(O.get(v.w)??[]).filter(G=>q(G)!==P):c<=1?_=jn(v.w,U,{okSet:E,pronOf:q,decompOf:M,sameStructureOnly:!1}):_=(j.get(Me(v.w))??[]).filter(G=>{if(G===v.w||q(G)===P)return!1;const Y=gr(P,q(G));return c>=5?Y>=5:Y===c});else if(h){const G=Y=>Y!==v.w&&Y.length===v.w.length&&q(Y)!==P;if(e.fullCount){const Y=Math.max(1,(e.choicesPerItem??3)-1),ee=[],ye=new Set;for(const Le of k){if(!G(Le))continue;const ve=q(Le);if(!ye.has(ve)&&(ye.add(ve),ee.push(Le),ee.length>=Y))break}_=ee}else _=k.filter(G)}else{const G=t;_=jn(v.w,U,{kind:G,okSet:E,pronOf:q,decompOf:M,sameStructureOnly:!1}),_.length===0&&(_=(k.length>30?ae(k,30):k).filter(Y=>Y!==v.w&&ar(v.w,Y)===t&&q(Y)!==P))}if(i&&_.length>0&&(g||C&&!D)){const G=M(q(v.w));_=_.filter(Y=>!Rt(G,M(q(Y))))}_.length!==0&&he.push({word:v,usable:_})}return he}async function Qn(e,t){const{choicesPerItem:n=3,count:o=10}=t,r=n-1,a=(await ne(t)).filter(i=>i.usable.length>=r),u=[];for(const i of H(a)){if(u.length>=o)break;const l=dt(i.usable,r);if(l.length<r)continue;const c=H([i.word.w,...l]);u.push({id:Z(e+"-item"),index:u.length+1,word:i.word.w,syllables:i.word.s,choices:c,answerIndex:c.indexOf(i.word.w)})}return u}async function Ki(e){const{choicesPerItem:t=3,count:n=10}=e,o=t-1,r=await ne({...e,difficulty:null});if(r.length<t)return[];const a=e.composition??null,u=[],i=H([...r]);for(const l of i){if(u.length>=n)break;const c=l.word.w,g=[...l.word.pron||c],d=a&&st(a)?g.filter(h=>{const p=V(h);return!!p&&we(p,a)}):[],C=Gt(d.length?d:g);if(!C)continue;const f=r.filter(h=>h.word.w!==c&&h.word.s===l.word.s&&!(h.word.pron||h.word.w).includes(C)&&h.word.pron!==l.word.pron);if(f.length<o)continue;const m=dt(f.map(h=>h.word.w),o);if(m.length<o)continue;const S=H([c,...m]);u.push({id:Z("HPI-item"),index:u.length+1,targetSyllable:C,word:c,choices:S,answerIndex:S.indexOf(c)})}return u}async function Ui(e){const{count:t=10}=e,n=(await ne(e)).filter(a=>a.usable.length>=1);if(!n.length)return[];const o=n.length>=t?ae(n,t):H(Array.from({length:t},(a,u)=>n[u%n.length])),r=H(Array.from({length:t},(a,u)=>u<Math.ceil(t/2)));return o.map((a,u)=>{const i=r[u];let l;if(i)l=[a.word.w,a.word.w];else{const c=Gt(a.usable);l=Math.random()<.5?[a.word.w,c]:[c,a.word.w]}return{id:Z("SOD-item"),index:u+1,word:a.word.w,pair:l,same:i}})}async function zi(e){const{choicesPerItem:t=3,count:n=10}=e,o=t-1,r=await ne({...e,difficulty:null});if(r.length<t+1)return[];const a=r.map(C=>C.word.w),u=new Map(r.map(C=>[C.word.w,C.word.pron])),i=C=>(u.get(C)||C)[0]??"",l={};for(const C of r){const f=i(C.word.w);f&&(l[f]||(l[f]=[]),l[f].push(C.word.w))}const c=Object.entries(l).filter(([,C])=>C.length>=2).map(([C])=>C);if(c.length===0)return[];const g=[],d=H([...c]);for(let C=0;g.length<n&&C<n*4;C++){const f=d[C%d.length],m=l[f];if(m.length<2)continue;const S=H([...m]),h=S[0],p=S[1];if(!h||!p||h===p||(u.get(h)||h)===(u.get(p)||p))continue;const y=u.get(p)||p,w=a.filter(B=>i(B)!==f&&B!==h&&B!==p&&B.length===p.length&&(u.get(B)||B)!==y);if(w.length<o)continue;const E=dt(w,o);if(E.length<o)continue;const T=H([p,...E]);g.push({id:Z("SWS-item"),index:g.length+1,sourceWord:h,targetSyllable:f,word:p,choices:T,answerIndex:T.indexOf(p)})}return g}function Zn(e,t,n){const o=me(),r=l=>o.get(l)||l,a=(l,c)=>{const g=[...l],d=[...c];if(g.length!==d.length)return-1;let C=-1;for(let f=0;f<g.length;f++)if(g[f]!==d[f]){if(C>=0)return-1;C=f}return C},u=e.map(l=>({e:l,swaps:l.usable.filter(c=>!!c&&a(l.word.w,c)>=0&&r(c)!==r(l.word.w))})).filter(l=>l.swaps.length>0),i=[];for(const{e:l,swaps:c}of H(u)){if(i.length>=t)break;const g=Gt(c)??"",d=[...l.word.w],C=[...g],f=a(l.word.w,g),m=dt(l.usable.filter(S=>S&&S!==g),2,new Set([r(g),r(l.word.w)]));m.length<2||i.push({id:Z(n),index:i.length+1,word:l.word.w,original:l.word.w,changed:g,changedFrom:f>=0?d[f]:"",changedTo:f>=0?C[f]:"",distractors:m})}return i}async function Xn(e,t,n){const{count:o=10}=t,r=me(),a=de.filter(m=>m.w&&m.s===e),u=t.excludeNoImage?Te(a.map(m=>m.w)):null,i=u?a.filter(m=>u.has(m.w)):a,l=new Set(i.map(m=>m.w)),c=Yr(l),g=t.phonemeView??"char",d=t.composition??null,C=Jn(t),f=[];for(const m of H(i)){if(f.length>=o)break;if(C&&!C(m))continue;const S=Kr(m.w,d,r,g,c,null,null);if(!S)continue;const h=S.distractors[0],p=[...m.w],y=[...h],w=p.findIndex((E,T)=>E!==y[T]);f.push({id:Z(n),index:f.length+1,word:m.w,original:m.w,changed:h,changedFrom:w>=0?p[w]:"",changedTo:w>=0?y[w]:"",distractors:S.distractors.slice(1)})}return f}async function qi(e){return Xn(2,e,"CS2-item")}async function Ji(e){return Xn(3,e,"CS3-item")}async function Qi(e){const t=(await ne({...e,difficulty:"count",contrastCount:1})).filter(n=>n.word.s===1&&n.usable.length>=1);return Zn(t,e.count??10,"CP1-item")}async function Zi(e){const t=e.difficulty&&e.difficulty!=="random"?e.difficulty:"count",n=(await ne({...e,difficulty:t,contrastCount:1})).filter(o=>o.word.s===2&&o.usable.length>=1);return Zn(n,e.count??10,"CP2-item")}async function Xi(e){const{count:t=10}=e,n=(await ne({...e})).filter(o=>o.word.s===2);return ae(n,t).map((o,r)=>({id:Z("M2S-item"),index:r+1,word:o.word.w,answer:o.word.w,parts:[...o.word.w]}))}async function el(e){const{count:t=10}=e,n=(await ne({...e})).filter(o=>o.word.s===3);return ae(n,t).map((o,r)=>({id:Z("M3S-item"),index:r+1,word:o.word.w,answer:o.word.w,parts:[...o.word.w]}))}function Kt(e){const t=de.map(n=>n.w);return e.excludeNoImage?Te(t):new Set(t)}async function tl(e){const{count:t=10}=e,n=(await ne({...e})).filter(i=>i.word.s===2),o=me(),r=Kt(e),a=e.phonemeView??"char",u=[];for(const i of H(n)){if(u.length>=t)break;const l=$r(i.word.w,e.composition??null,o,a,r);if(!l)continue;const[c,...g]=l.distractors,d=[...i.word.w],C=d[0]===c?d[1]:d[0];u.push({id:Z("D2-item"),index:u.length+1,original:i.word.w,word:i.word.w,dropped:C,missingResult:c,distractors:g})}return u}async function nl(e){const{count:t=10}=e,n=(await ne({...e})).filter(i=>i.word.s===3),o=me(),r=Kt(e),a=e.phonemeView??"char",u=[];for(const i of H(n)){if(u.length>=t)break;const l=Hr(i.word.w,e.composition??null,o,a,r);if(!l)continue;const[c,...g]=l.distractors,d=[...i.word.w];let C="";for(let f=0;f<d.length;f++)if(d.filter((m,S)=>S!==f).join("")===c){C=d[f];break}u.push({id:Z("D3-item"),index:u.length+1,original:i.word.w,word:i.word.w,dropped:C,missingResult:c,distractors:g})}return u}async function ol(e){const{count:t=10}=e,n=(await ne({...e})).filter(i=>i.word.s>=3),o=me(),r=Kt(e),a=e.phonemeView??"char",u=[];for(const i of H(n)){if(u.length>=t)break;const l=Gr(i.word.w,e.composition??null,o,a,r);if(!l)continue;const[c,...g]=l.distractors,d=i.word.w,C=l.dropped??(d.startsWith(c)?d.slice(c.length):d.endsWith(c)?d.slice(0,d.length-c.length):"");u.push({id:Z("DPC-item"),index:u.length+1,original:d,word:d,dropped:C,missingResult:c,distractors:g})}return u}async function rl(e){const{count:t=10}=e,n=(await ne({...e})).map(o=>o.word.w);return n.length<3?[]:Array.from({length:t},(o,r)=>{const a=ae(n,3);return{id:Z("LRO-item"),index:r+1,sequence:a,choices:H(a)}})}function gt(e,t,n){const o=de.filter(i=>i.w&&i.s===e),r=t.excludeNoImage?Te(o.map(i=>i.w)):null,a=Jn(t),u=[];for(const i of o)if(!(r&&!r.has(i.w))&&!(a&&!a(i))){if(n){const l=V(i.w);if(!l||!n(l))continue}u.push(i)}return u}function al(e){const t=gt(1,e,lt.MERGE_2_PHONEMES.syllable);return ae(t,e.count??10).map((n,o)=>{const r=V(n.w);return{id:Z("M2P-item"),index:o+1,parts:[Q[r.cho],te[r.jung]],answer:n.w,word:n.w}})}function ul(e){const t=gt(1,e,lt.MERGE_3_PHONEMES.syllable);return ae(t,e.count??10).map((n,o)=>{const r=V(n.w);return{id:Z("M3P-item"),index:o+1,parts:[Q[r.cho],te[r.jung],oe[r.jong]],answer:n.w,word:n.w}})}function il(e){const t=lt.DROP_FINAL_CONSONANT_FROM_1SYLL,n=gt(t.syllables,e,t.syllable),o=me(),r=[];for(const a of H(n)){if(r.length>=(e.count??10))break;const u=Vr(a.w,null,o);if(!u)continue;const[i,...l]=u.distractors;r.push({id:Z("DFC-item"),index:r.length+1,original:a.w,word:a.w,result:i,distractors:l})}return r}function ll(e){const t=lt.REMOVE_CONSONANT_AND_IDENTIFY_PHONEME,n=gt(t.syllables,e,t.syllable),o=me(),r=[];for(const a of H(n)){if(r.length>=(e.count??10))break;const u=Wr(a.w,null,o);if(!u)continue;const i=V(o.get(a.w)||a.w);if(!i)continue;const[l,...c]=u.distractors;r.push({id:Z("RCP-item"),index:r.length+1,base:a.w,word:a.w,missingConsonant:Q[i.cho],remaining:l,distractors:c})}return r}const ft=new Map;let eo=null,to=null;async function no(e,t={}){const n=it(),o=Ie();(n!==eo||o!==to)&&(ft.clear(),eo=n,to=o);const r=`${e}:${Wt(t)}`;if(ft.has(r))return ft.get(r);const a=await cl(e,t);return ft.set(r,a),a}const sl={SAME_SOUND_PICK:e=>Qn("SSP",e),HEAR_AND_PICK_SAME:e=>Qn("HPS",e),HEAR_AND_PICK_INCLUDED:e=>Ki(e),SAME_OR_DIFF:e=>Ui(e),STARTS_WITH_SAME_SOUND:e=>zi(e),LISTEN_AND_REMEMBER_ORDER:e=>rl(e),MERGE_2_SYLLABLES:e=>Xi(e),MERGE_3_SYLLABLES:e=>el(e),MERGE_2_PHONEMES:e=>al(e),MERGE_3_PHONEMES:e=>ul(e),DROP_1_FROM_2SYLL:e=>tl(e),DROP_1_FROM_3SYLL:e=>nl(e),DROP_PART_FROM_COMPOUND:e=>ol(e),DROP_FINAL_CONSONANT_FROM_1SYLL:e=>il(e),REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:e=>ll(e),CHANGE_1_SYLL_IN_2SYLL:e=>qi(e),CHANGE_1_SYLL_IN_3SYLL:e=>Ji(e),CHANGE_1_PHONEME_IN_1SYLL:e=>Qi(e),CHANGE_1_PHONEME_IN_2SYLL:e=>Zi(e)};async function cl(e,t={}){const n=sl[e];return n?await n(t):[]}async function dl(e){const t=["random","count"],n=Object.keys(_t);let o=0;for(const r of t)for(const a of n){const u=_t[a];no(a,{difficulty:u.difficulty?r:null,contrastCount:1,composition:null,count:5,excludeNoImage:e,sameStructureOnly:!0,phonemeView:"char",grade:null}).catch(()=>{}),++o%6===0&&await new Promise(i=>setTimeout(i,0))}}async function Cl(e){const t=await ne({...e,fullCount:!0}),n=e.choicesPerItem!=null?Math.max(1,e.choicesPerItem-1):1;return t.filter(o=>new Set(o.usable.map(r=>q(r))).size>=n).length}async function gl(e={}){const t=[];for(const i of de)i.w&&t.push(i.w);const n=e.excludeNoImage?Te(t):t,o=new Set,r=new Set,a=new Set,u=new Set;for(const i of n){u.add(Me(i));for(const l of i){const c=V(l);if(c&&(Q[c.cho]!=="\u3147"&&o.add(Q[c.cho]),r.add(te[c.jung]),c.jong>0)){a.add(oe[c.jong]);const g=rt[c.jong];g&&g.forEach(d=>a.add(d))}}}return{cho:o,jung:r,jong:a,syllable:u}}const ue="\uC804\uCCB4";function oo(){const{t:e}=se.useTranslation();return s.useMemo(()=>({difficulty:e("wordSearch.filter.difficulty","\uB4F1\uAE09"),syllables:e("wordSearch.filter.syllables","\uC74C\uC808 \uC218"),syllable5plus:e("wordSearch.filter.syllable5plus","5\uC74C\uC808 \uC774\uC0C1"),partOfSpeech:e("wordSearch.filter.partOfSpeech","\uD488\uC0AC"),wordType:e("wordSearch.filter.wordType","\uC720\uD615"),posMap:{[e("wordSearch.filter.pos.noun","\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)")]:["\uBA85","\uC218"],[e("wordSearch.filter.pos.verb","\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)")]:["\uB3D9","\uD615"],[e("wordSearch.filter.pos.modifier","\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)")]:["\uBD80","\uAD00"]},typeMap:{[e("wordSearch.filter.type.native","\uACE0\uC720\uC5B4")]:"\uACE0\uC720",[e("wordSearch.filter.type.sino","\uD55C\uC790\uC5B4")]:"\uD55C\uC790",[e("wordSearch.filter.type.foreign","\uC678\uB798\uC5B4")]:"\uC678\uB798",[e("wordSearch.filter.type.mixed","\uD63C\uC885\uC5B4")]:"\uD63C\uC885"}}),[e])}function ro(e,t,n){return{label:t.difficulty,items:[...[1,2,3,4].map(o=>e("wordSearch.filter.grade",{n:o})),e("wordSearch.filter.gradeNone","\uC5C6\uC74C")],multiple:!0,allOption:!0,allLabel:n?.allLabel,labelAction:n?.labelAction,labelInfo:n?.labelInfo}}function ao(e){return{label:e.partOfSpeech,items:Object.keys(e.posMap),multiple:!0,allOption:!0}}function uo(e){return{label:e.wordType,items:Object.keys(e.typeMap),multiple:!0,allOption:!0}}function fl(e,t){return{label:t.syllables,items:[e("wordSearch.filter.syllable",{n:1}),e("wordSearch.filter.syllable",{n:2}),e("wordSearch.filter.syllable",{n:3}),e("wordSearch.filter.syllable",{n:4}),t.syllable5plus],multiple:!0,allOption:!0}}function ml(e,t){const n=[e("wordPairs.filter.onlyHasImage","\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC")];return t?.includeStructure&&n.push(e("wordPairs.filter.onlySameStructure","\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC")),{label:e("wordPairs.filter.selectLabel","\uC120\uD0DD"),items:n,multiple:!0,labelAction:t?.labelAction,labelInfo:t?.labelInfo}}function pl(e,t){const{label:n,headValue:o,midValue:r,tailValue:a,includeMid:u=!0,headDisabled:i,midDisabled:l,tailDisabled:c,allOptionDisabled:g,groupLabel:d,labelAction:C}=t;return{label:n,...d?{groupLabel:d}:{},...C?{labelAction:C}:{},allOption:!0,allLabel:e("wordSearch.filter.positionAny",{defaultValue:"\uBB34\uAD00"}),...g?{allOptionDisabled:g}:{},items:[{value:o,displayLabel:e("wordSearch.filter.positionHead",{defaultValue:"\uC5B4\uB450"}),disabled:i},...u?[{value:r,displayLabel:e("wordSearch.filter.positionMid",{defaultValue:"\uC5B4\uC911"}),disabled:l}]:[],{value:a,displayLabel:e("wordSearch.filter.positionTail",{defaultValue:"\uC5B4\uB9D0"}),disabled:c}]}}function hl(e,t,n){const o=Ye(n),r=o&&t!==ue?Ee(o,t):null;if(o&&(t===ue||r)){const i={},l={};for(const[f,m]of Object.entries(e))(Ye(f)===o?l:i)[f]=m;if(t===ue)return i;const c=$t(l)[o]??[],g=c.includes(r)?c.filter(f=>f!==r):[...c,r];if(g.length===0)return i;const d=Ht({[o]:g},Hi(n)),C=Object.values(d)[0]??[];return{...i,[n]:C}}if(t===ue){const{[n]:i,...l}=e;return l}const a=e[n]??[],u=a.includes(t)?a.filter(i=>i!==t):[...a,t];if(u.length===0){const{[n]:i,...l}=e;return l}return{...e,[n]:u}}Object.fromEntries(Object.entries(Tt).map(([e,{nucleus:t}])=>[e,t]));const yl={\uACE0\uC720\uC5B4:"\uACE0\uC720",\uD55C\uC790\uC5B4:"\uD55C\uC790",\uC678\uB798\uC5B4:"\uC678\uB798",\uD63C\uC885\uC5B4:"\uD63C\uC885"},bl={"\uCCB4\uC5B8(\uBA85\uC0AC,\uC218\uC0AC)":["\uBA85","\uC218"],"\uC6A9\uC5B8(\uB3D9\uC0AC,\uD615\uC6A9\uC0AC)":["\uB3D9","\uD615"],"\uC218\uC2DD\uC5B8(\uBD80\uC0AC,\uAD00\uD615\uC0AC)":["\uBD80","\uAD00"]},Sl={difficulty:"\uB09C\uC774\uB3C4 \uB4F1\uAE09",syllables:"\uC74C\uC808 \uC218",syllable5plus:"5\uC74C\uC808 \uC774\uC0C1",partOfSpeech:"\uD488\uC0AC",wordType:"\uC720\uD615",field:"\uC758\uBBF8\uBC94\uC8FC",posMap:bl,typeMap:yl},io=new WeakMap;function wl(e,t){const n=io.get(e);if(n&&n.keys===t)return n.value;const o={grades:[],syls:[],poses:[],types:[],fields:[]},r={grade:o.grades,syllables:o.syls,pos:o.poses,wordType:o.types,field:o.fields};for(const[a,u]of Object.entries(e??{})){const i=a===t.difficulty?"grade":a===t.syllables?"syllables":a===t.partOfSpeech?"pos":a===t.wordType?"wordType":a===t.field?"field":Ye(a);if(i)for(const l of Array.isArray(u)?u:typeof u=="string"?[u]:[])r[i].includes(l)||r[i].push(l)}return io.set(e,{keys:t,value:o}),o}function El(e,t,n=Sl){const{grades:o,syls:r,poses:a,types:u}=wl(t,n);if(o.length){const i=o.map(l=>Ee("grade",l)??l.replace(/\D/g,"")).filter(l=>l!=="");if(i.length===0||!It(i,e.grade))return!1}if(r.length){const i=e.syllables??0;if(!r.some(l=>{const c=l===n.syllable5plus?"5+":Ee("syllables",l);return c==="5+"?i>=5:i===parseInt(c??l)}))return!1}return!(a.length&&!a.flatMap(i=>n.posMap[i]??Mi[Ee("pos",i)??""]??[i]).some(i=>(e.pos??"").includes(i))||u.length&&!u.some(i=>e.wordType===(n.typeMap[i]??ki[Ee("wordType",i)??""])))}const vl={labial:e=>e("common.phonetics.place.labial",{defaultValue:"\uC591\uC21C\uC74C"}),alveolar:e=>e("common.phonetics.place.alveolar",{defaultValue:"\uCE58\uC870\uC74C"}),palatal:e=>e("common.phonetics.place.palatal",{defaultValue:"\uACBD\uAD6C\uAC1C\uC74C"}),velar:e=>e("common.phonetics.place.velar",{defaultValue:"\uC5F0\uAD6C\uAC1C\uC74C"}),glottal:e=>e("common.phonetics.place.glottal",{defaultValue:"\uC131\uBB38\uC74C"})},Al={frontHigh:e=>e("common.phonetics.vowel.frontHigh",{defaultValue:"\uC804\uC124 \uACE0\uBAA8\uC74C"}),backHighUnrounded:e=>e("common.phonetics.vowel.backHighUnrounded",{defaultValue:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uD3C9\uC21C"}),backHighRounded:e=>e("common.phonetics.vowel.backHighRounded",{defaultValue:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uC6D0\uC21C"}),frontMid:e=>e("common.phonetics.vowel.frontMid",{defaultValue:"\uC804\uC124 \uC911\uBAA8\uC74C"}),backMidUnrounded:e=>e("common.phonetics.vowel.backMidUnrounded",{defaultValue:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uD3C9\uC21C"}),backMidRounded:e=>e("common.phonetics.vowel.backMidRounded",{defaultValue:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uC6D0\uC21C"}),low:e=>e("common.phonetics.vowel.low",{defaultValue:"\uC800\uBAA8\uC74C"})},Bl={j:e=>e("common.phonetics.glide.j",{defaultValue:"j\uD65C\uC74C"}),w:e=>e("common.phonetics.glide.w",{defaultValue:"w\uD65C\uC74C"}),velar:e=>e("common.phonetics.glide.velar",{defaultValue:"\u0270\uD65C\uC74C"})};function lo(e,t){if("place"in t)return vl[t.place](e);const n=Al[t.vowel](e);return t.glide?`${n} \xB7 ${Bl[t.glide](e)}`:n}const Dl=(e,{defaultValue:t})=>t,so=(e,t)=>({jamos:e,phonetic:t,tooltip:lo(Dl,t)}),Ce=(e,t)=>t.map(n=>so([n],{place:e})),J=(e,t,n)=>so([...e],n?{vowel:t,glide:n}:{vowel:t}),Ut={cho:[Ce("labial",["\u3142","\u3143","\u314D","\u3141"]),Ce("alveolar",["\u3137","\u3138","\u314C","\u3134","\u3139"]),Ce("alveolar",["\u3145","\u3146"]),Ce("palatal",["\u3148","\u3149","\u314A"]),Ce("velar",["\u3131","\u3132","\u314B"]),Ce("glottal",["\u314E"])],jung:[[J("\u3163","frontHigh"),J("\u315F","frontHigh","w"),J("\u3162","frontHigh","velar")],[J("\u3161","backHighUnrounded")],[J("\u315C","backHighRounded"),J("\u3160","backHighRounded","j")],[J("\u3154\u3150","frontMid"),J("\u3156\u3152","frontMid","j"),J("\u3159\u315A\u315E","frontMid","w")],[J("\u3153","backMidUnrounded"),J("\u3155","backMidUnrounded","j"),J("\u315D","backMidUnrounded","w")],[J("\u3157","backMidRounded"),J("\u315B","backMidRounded","j")],[J("\u314F","low"),J("\u3151","low","j"),J("\u3158","low","w")]],jong:[Ce("labial",["\u3142","\u3141"]),Ce("alveolar",["\u3137","\u3134","\u3139"]),Ce("velar",["\u3131","\u3147"])]},Nl=[...Q],Tl=[...te],_l=oe.filter(e=>e!==""),ge=e=>e===ie?[]:Array.from(e),ie="__NO_CODA__",co=[1,2,3,4],le=5,Ll=12,Co="SYL_",zt=e=>`${Co}${e}`,Ol=e=>Number(e.slice(Co.length));function qt(e){return e>=le?Array.from({length:Ll-le+1},(t,n)=>le+n):[e]}const go={cho:Nl,jung:Tl,jong:_l},Jt=e=>e.map(t=>t.map(({jamos:n,phonetic:o,tooltip:r})=>({v:n.join(""),phonetic:o,tooltip:r}))),Qt={cho:Jt(Ut.cho),jung:Jt(Ut.jung),jong:Jt(Ut.jong)},fo={};Qt.jung.flat().forEach(({v:e})=>{for(const t of ge(e))fo[t]=e});const Rl=new Set(Qt.cho.flat().map(e=>e.v));function mo(e,t){return e==="cho"?Rl.has(t)?t:null:e==="jung"?fo[t]??t:Pe(t)}function po(e,t,n){if(e==="jung"){const o=ge(t);return n&&o.includes(n)?n:o[0]??t}return e==="jong"&&n&&Pe(n)===t?n:t}function ho(e,t,n,o){const r=(a,u)=>u?a==="jong"&&u===ie?ie:t==="pron"?mo(a,u):po(a,u,a==="jung"?n:a==="jong"?o:null):null;return{...e,cho:r("cho",e.cho),jung:r("jung",e.jung),jong:r("jong",e.jong)}}const Zt={cho:null,jung:null,jong:null,syllable:null},Xt=e=>Array.isArray(e)?e.filter(_i):[],Pl="wt_filter",yo=e=>`wt_filter_${e}`,en=["noun","verb","modifier"],tn=["native","sino","foreign","mixed"];function bo(e,t,n,o,r){if(!Array.isArray(e))return[];const a=[];for(const u of e){if(typeof u!="string")continue;const i=t.includes(u)?u:t.find(l=>r.some(c=>o(c,n(l))===u));i&&!a.includes(i)&&a.push(i)}return a}function So(e){try{const t=localStorage.getItem(yo(e))??localStorage.getItem(Pl);if(t)return JSON.parse(t)}catch{}return null}function wo(e){const t=e?.phonemeView;return t==="pron"?"pron":t==="direct"?"direct":"char"}function Ml(e){const t=e;return t?.composition?{cho:t.composition.cho??null,jung:t.composition.jung??null,jong:t.composition.jong??null,syllable:t.composition.syllable??null}:t?.choseong?{...Zt,cho:t.choseong}:Zt}const Eo=["1\uB4F1\uAE09 : \uD559\uB839\uC804\uAE30\uC5D0 \uC2B5\uB4DD\uD558\uC5EC \uD3C9\uC0DD\uC5D0 \uAC78\uCCD0 \uC77C\uC0C1 \uC5B8\uC5B4\uC0DD\uD65C\uC744 \uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uB294 \uC5B4\uD718","2\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 1-2\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","3\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 3-4\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","4\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 5-6\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","\uB4F1\uAE09\uC5C6\uC74C : \uAD6D\uB9BD\uAD6D\uC5B4\uC6D0 \uD45C\uC900 \uC5B4\uD718 \uC678 \uACE0\uBE48\uB3C4 \uC0DD\uD65C \uC5B4\uD718, \uC2E0\uC870\uC5B4 \uBC0F \uC678\uB798\uC5B4"];function vo(e){const t=e("wordPairs.filter.difficultyInfo",{returnObjects:!0,defaultValue:Eo});return Array.isArray(t)&&t.length>0&&t.every(n=>typeof n=="string")?t:Eo}function kl(e,t,n){const{t:o,i18n:r}=se.useTranslation(),[a]=s.useState(()=>n?.resetOnMount?null:So(e)),[u,i]=s.useState(wo(a)),[l,c]=s.useState(()=>Ml(a)),g=s.useCallback(()=>t.requireSyllable?{cho:"\u3131",jung:"\u314F",jong:ie,syllable:t.fixedSyllable??null}:{cho:null,jung:null,jong:t.fixedNoCoda?ie:null,syllable:t.fixedSyllable??null},[t.requireSyllable,t.fixedSyllable,t.fixedNoCoda]);s.useEffect(()=>{!t.requireSyllable&&t.fixedSyllable==null&&!t.fixedNoCoda||c(b=>b.cho||b.jung||b.syllable!=null||b.jong?b:g())},[]);const d=s.useMemo(()=>z(l.cho)||z(l.jung)||z(l.jong)?"count":"random",[l.cho,l.jung,l.jong]),C=s.useRef(u==="char"?l.jung:null),f=s.useRef(u==="char"?l.jong:null);s.useEffect(()=>{u==="char"&&(C.current=l.jung,f.current=l.jong)},[u,l.jung,l.jong]);const[m,S]=s.useState(n?.resetOnMount?!!n?.defaultImageOnly:a?.excludeNoImage??!0),[h,p]=s.useState(n?.resetOnMount?!1:a?.sameStructureOnly??!0),[y,w]=s.useState(Xt(a?.gradeFilter)),E=Array.from(new Set([r.language,"ko","en"].filter(Boolean))),T=(b,L)=>r.getFixedT(b)(L),B=b=>bo(b,en,L=>`wordSearch.filter.pos.${L}`,T,E),N=b=>bo(b,tn,L=>`wordSearch.filter.type.${L}`,T,E),[A,k]=s.useState(()=>B(a?.posFilter)),[D,$]=s.useState(()=>N(a?.wordTypeFilter)),j=s.useRef(n?.resetKey);s.useEffect(()=>{j.current!==n?.resetKey&&(j.current=n?.resetKey,c(g()),S(!!n?.defaultImageOnly),p(!1),w([]),k([]),$([]))},[n?.resetKey]);const M=oo(),O=s.useMemo(()=>Object.keys(M.posMap),[M]),I=s.useMemo(()=>Object.keys(M.typeMap),[M]),W=s.useMemo(()=>A.map(b=>O[en.indexOf(b)]).filter(Boolean),[A,O]),X=s.useMemo(()=>D.map(b=>I[tn.indexOf(b)]).filter(Boolean),[D,I]),[U,he]=s.useState({cho:new Set,jung:new Set,jong:new Set,syllable:new Set}),[v,_]=s.useState(!1),[P,G]=s.useState(null),Y=1,ee=Math.max(1,[l.cho,l.jung,l.jong].filter(Boolean).length),[ye,Le]=s.useState(e);s.useEffect(()=>{if(ye!==e){if(!n?.resetOnMount){const b=So(e);c(b?.composition??g()),S(b?.excludeNoImage??!0),p(b?.sameStructureOnly??!0),i(wo(b)),w(Xt(b?.gradeFilter)),k(B(b?.posFilter)),$(N(b?.wordTypeFilter))}Le(e)}},[e,ye,n?.resetOnMount]),s.useEffect(()=>{if(!n?.resetOnMount&&ye===e)try{localStorage.setItem(yo(e),JSON.stringify({contrastCount:ee,composition:l,excludeNoImage:m,sameStructureOnly:h,phonemeView:u,gradeFilter:y,posFilter:A,wordTypeFilter:D}))}catch{}},[n?.resetOnMount,e,ye,ee,l,m,h,u,y,A,D]);const[ve,sn]=s.useState(0);bn("wordpool:update",()=>sn(b=>b+1));const cn=s.useRef(r.language);s.useEffect(()=>{cn.current!==r.language&&(cn.current=r.language,sn(b=>b+1))},[r.language]),s.useEffect(()=>{if(!t.choseong)return;let b=!1;return gl({difficulty:d,excludeNoImage:m}).then(L=>{b||(he(L),L.cho.size+L.jung.size+L.jong.size>0&&_(!0))}).catch(()=>{b||he({cho:new Set,jung:new Set,jong:new Set,syllable:new Set})}),()=>{b=!0}},[t.choseong,d,m,ve]),s.useEffect(()=>{let b=!1;const L=l,R=L.cho?ge(L.cho):null,x=L.jung?ge(L.jung):null,K=L.jong===ie,Ae=K?null:L.jong?ge(L.jong):null,Be=L.syllable!=null?qt(L.syllable):null,nt=!!(R||x||Ae||K||Be);return Cl({difficulty:t.difficulty?d:null,contrastCount:t.difficulty?ee:1,composition:t.choseong&&nt?{cho:R,jung:x,jong:Ae,jongNone:K,syllable:Be}:null,excludeNoImage:m,sameStructureOnly:h,phonemeView:u==="pron"?"pron":"char",grade:y.length>0?y:null}).then(ot=>{b||G(ot)}).catch(()=>{b||G(null)}),()=>{b=!0}},[t.choseong,t.difficulty,d,ee,l,u,m,h,ve,y]),s.useEffect(()=>{v&&c(b=>{const L={...b};let R=!1;return["cho","jung","jong"].forEach(x=>{const K=b[x];!K||K===ie||ge(K).some(Ae=>U[x].has(Ae))||(L[x]=null,R=!0)}),b.syllable!=null&&t.fixedSyllable==null&&(b.syllable>=le?[...U.syllable].some(x=>x>=le)||(L.syllable=null,R=!0):(!U.syllable.has(b.syllable)||b.syllable<Y)&&(L.syllable=null,R=!0)),R?L:b})},[U,v,Y,t.fixedSyllable]);const dn=s.useMemo(()=>{const b=L=>{const R=new Set;for(const x of go[L])U[L].has(x)&&R.add(x);return R};return{cho:b("cho"),jung:b("jung"),jong:b("jong")}},[U]),Et=s.useMemo(()=>({exact:new Set(co.filter(b=>U.syllable.has(b))),min:[...U.syllable].some(b=>b>=le)}),[U]),F=s.useMemo(()=>({composition:o("wordPairs.composition","\uC815\uB2F5 \uB2E8\uC5B4 \uAD6C\uC131"),syllableCount:o("wordPairs.syllableCount","\uC74C\uC808 \uC218"),onset:o("wordPairs.onset","\uCD08\uC131"),vowel:o("wordPairs.vowel","\uBAA8\uC74C"),coda:o("wordPairs.coda","\uC885\uC131"),phonemeGroup:o("training.filter.phonemeGroup",{defaultValue:"\uD6C8\uB828 \uC74C\uC808"}),trainOnset:o("training.filter.trainOnset",{defaultValue:"\uCD08\uC131"}),trainVowel:o("training.filter.trainVowel",{defaultValue:"\uBAA8\uC74C"}),trainCoda:o("training.filter.trainCoda",{defaultValue:"\uC885\uC131"}),random:o("training.filter.random","\uBB34\uC791\uC704"),exclude:o("wordSearch.filter.exclude","\uC81C\uC678"),selectLabel:o("training.filter.selectSection",{defaultValue:"\uC120\uD0DD"}),none:o("common.none","\uC5C6\uC74C"),noImage:o("wordSearch.filter.excludeNoImage","\uC774\uBBF8\uC9C0 \uC5C6\uC74C"),excludeImage:o("training.filter.excludeImage",{defaultValue:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC"}),sameStructure:o("training.filter.sameStructure",{defaultValue:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC"}),noLimit:o("training.filter.noLimit",{defaultValue:"\uBB34\uAD00"}),codaExclude:o("training.filter.codaExclude",{defaultValue:"\uC81C\uC678"}),gradeLabel:o("training.filter.gradeLabel",{defaultValue:"\uB09C\uC774\uB3C4 \uB4F1\uAE09"})}),[o]),Cn=s.useMemo(()=>({[F.trainOnset]:"cho",[F.trainVowel]:"jung",[F.trainCoda]:"jong"}),[F]),tt=s.useCallback((b,L)=>({title:L,items:b}),[]),vt=s.useMemo(()=>[o("training.filter.excludeImageInfo",{defaultValue:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC: \uB2E8\uC5B4 \uC911\uC5D0 \uC774\uBBF8\uC9C0\uAC00 \uC788\uB294 \uB2E8\uC5B4\uB9CC \uACB0\uACFC\uC5D0 \uBCF4\uC5EC\uC90D\uB2C8\uB2E4."}),o("training.filter.sameStructureInfo",{defaultValue:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC: \uC815\uB2F5\uACFC \uC624\uB2F5\uC758 \uC74C\uC808 \uAD6C\uC870(\uAE00\uC790 \uC218\xB7\uBC1B\uCE68 \uC720\uBB34 \uB4F1)\uAC00 \uAC19\uC740 \uACB0\uACFC\uB9CC \uB0A8\uACA8\uC694."})],[o]),Oo=s.useMemo(()=>{const b=[];if(t.choseong){const L={value:ie,displayLabel:F.codaExclude},R=t.fixedNoCoda===!0,x=(K,Ae)=>{const Be=R&&K==="jong",nt={label:Ae,groupLabel:F.phonemeGroup,allOption:!t.requireSyllable,allLabel:F.noLimit,allOptionDisabled:Be};if(u==="pron"){const De=Qt[K].map(Fo=>Fo.map(({v:At,phonetic:jo})=>{const Bt=ge(At),gn=lo(o,jo),fn=Be||!Bt.some($o=>U[K].has($o));return Bt.length>1?{value:At,labels:Bt,tooltip:gn,disabled:fn}:{value:At,tooltip:gn,disabled:fn}}));return K==="jong"&&!t.requireCoda&&De.unshift([L]),{...nt,groups:De}}const ot=go[K].map(De=>!Be&&dn[K].has(De)?De:{value:De,disabled:!0});return{...nt,items:K==="jong"&&!t.requireCoda?[L,...ot]:ot}};b.push(x("cho",F.trainOnset)),b.push(x("jung",F.trainVowel)),b.push(x("jong",F.trainCoda))}if(b.push({...ro(o,M,{labelInfo:tt(vo(o))}),label:F.gradeLabel}),t.partOfSpeech&&b.push(ao(M)),t.wordType&&b.push(uo(M)),t.choseong||t.fixedSyllable!=null){const L=t.fixedSyllable;b.push({label:F.syllableCount,items:[...co.map(R=>({value:zt(R),displayLabel:o("wordPairs.syllableN",{n:R,defaultValue:"{{n}}\uC74C\uC808"}),disabled:L!=null?R!==L:!Et.exact.has(R)||R<Y})),{value:zt(le),displayLabel:o("wordPairs.syllableNPlus",{n:le,defaultValue:"{{n}}\uC74C\uC808 \uC774\uC0C1"}),disabled:L!=null?le!==L:!Et.min}],allOption:!0,allOptionDisabled:L!=null})}return t.choseong?b.push({label:F.exclude,displayLabel:F.selectLabel,multiple:!0,items:[F.excludeImage,F.sameStructure],labelInfo:tt(vt)}):b.push({label:F.exclude,displayLabel:F.selectLabel,multiple:!0,items:[F.excludeImage],labelInfo:tt([vt[0]])}),b},[t.choseong,t.partOfSpeech,t.wordType,t.requireSyllable,t.fixedSyllable,t.fixedNoCoda,t.requireCoda,Y,dn,U,u,Et,F,o,tt,vt,M]),Ro={...(t.choseong||t.fixedSyllable!=null)&&l.syllable!=null?{[F.syllableCount]:zt(l.syllable)}:{},...t.choseong&&l.cho?{[F.trainOnset]:l.cho}:{},...t.choseong&&l.jung?{[F.trainVowel]:l.jung}:{},...t.choseong&&l.jong?{[F.trainCoda]:l.jong}:{},[F.exclude]:[...m?[F.excludeImage]:[],...h?[F.sameStructure]:[]],[F.gradeLabel]:y.map(b=>Fi("grade",b)),...t.partOfSpeech?{[M.partOfSpeech]:W}:{},...t.wordType?{[M.wordType]:X}:{}},Po=s.useCallback((b,L)=>{if(L===F.exclude)b===F.excludeImage?S(R=>!R):b===F.sameStructure&&p(R=>!R);else if(L===F.syllableCount)c(R=>{if(!b||b===ue)return{...R,syllable:null};const x=Ol(b);return{...R,syllable:R.syllable===x?null:x}});else if(L===F.gradeLabel){if(!b||b===ue){w([]);return}const R=Ee("grade",b);if(R==null)return;w(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else if(L===M.partOfSpeech){if(!b||b===ue){k([]);return}const R=en[O.indexOf(b)]??B([b])[0];if(!R)return;k(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else if(L===M.wordType){if(!b||b===ue){$([]);return}const R=tn[I.indexOf(b)]??N([b])[0];if(!R)return;$(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else{const R=Cn[L];if(!R)return;c(x=>t.requireSyllable?b&&b!==ue?{...x,[R]:b}:x:!b||b===ue||x[R]===b?{...x,[R]:null}:{...x,[R]:b})}},[F,Cn,M,O,I,t.requireSyllable]),Mo=s.useCallback(b=>!t.partOfSpeech&&!t.wordType?!0:El(b,{...t.partOfSpeech?{[M.partOfSpeech]:W}:{},...t.wordType?{[M.wordType]:X}:{}},M),[t.partOfSpeech,t.wordType,W,X,M]),ko=s.useCallback(b=>{b!==u&&(b!=="direct"&&u!=="direct"&&c(L=>ho(L,b,C.current,f.current)),i(b))},[u]),Io=s.useCallback(()=>({composition:l,contrastCount:ee,excludeNoImage:m,sameStructureOnly:h,phonemeView:u,gradeFilter:y,posFilter:A,wordTypeFilter:D}),[l,ee,m,h,u,y,A,D]),xo=s.useCallback(b=>{c(b.composition),S(b.excludeNoImage),p(b.sameStructureOnly??!0),i(b.phonemeView),w(Xt(b.gradeFilter)),Array.isArray(b.posFilter)&&k(B(b.posFilter)),Array.isArray(b.wordTypeFilter)&&$(N(b.wordTypeFilter))},[]);return{difficulty:d,contrastCount:ee,composition:l,choseong:l.cho,excludeNoImage:m,sameStructureOnly:h,gradeFilter:y,posFilter:W,wordTypeFilter:X,matchesWordAttributes:Mo,poolVersion:ve,filterSections:Oo,filterSelected:Ro,handleFilterSelect:Po,phonemeView:u,setPhonemeView:ko,phonemeGroupLabel:F.phonemeGroup,wordCount:P,getFilterSnapshot:Io,restoreFilterSnapshot:xo}}function Il(e){const t=i=>i?ge(i):null,n=t(e.cho),o=t(e.jung),r=e.jong===ie,a=r?null:t(e.jong),u=e.syllable!=null?qt(e.syllable):null;return!n&&!o&&!a&&!r&&!u?null:{cho:n,jung:o,jong:a,jongNone:r,syllable:u}}function xl(e,t,n,o,r,a,u=!0,i="char",l=[]){const[c,g]=s.useState({}),[d,C]=s.useState(!1),{cho:f=null,jung:m=null,jong:S=null,syllable:h=null}=o??{},p=l.length>0?l.slice().sort().join(","):"",y=e.map(E=>E.key).join("|");s.useEffect(()=>{a>0&&dl(r).catch(()=>{})},[a,r]),s.useEffect(()=>{let E=!1;return C(!0),(async()=>{const T=Il({cho:f,jung:m,jong:S,syllable:h}),B=`${f??""}_${m??""}_${S??""}_${h??""}_${p}`,N={};await Promise.all(e.map(async A=>{const k=_t[A.key];try{const D=await no(A.key,{difficulty:k.difficulty?t:null,contrastCount:k.difficulty?n:1,composition:k.choseong?T:null,count:5,excludeNoImage:r,sameStructureOnly:u,phonemeView:i,grade:l.length>0?l:null});D&&D.length>0?N[A.key]={id:`wt-${A.key}-${t}-${B}-${Date.now()}`,name:A.label,training_type:A.key,category_main_code:"WORD",iconColor:A.color,subTitle:A.subTitle,items:D,itemCount:D.length}:N[A.key]={id:`wt-${A.key}-empty`,name:A.label,training_type:A.key,category_main_code:"WORD",iconColor:A.color,subTitle:A.subTitle,items:[],itemCount:0,__empty:!0}}catch{N[A.key]=null}})),E||(g(N),C(!1))})(),()=>{E=!0}},[t,n,f,m,S,h,r,u,i,a,p,y]);const w=JSON.stringify(e.map(E=>[E.key,E.label,E.color,E.subTitle]));return{perTypeData:s.useMemo(()=>{const E={};for(const[T,B]of Object.entries(c)){const N=e.find(A=>A.key===T);E[T]=B&&N?{...B,name:N.label,iconColor:N.color,subTitle:N.subTitle}:B}return E},[c,w]),generating:d}}const Ue=[],ze=[],qe=[],Je=[],mt={LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]},pt={LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]},Fl={LISTEN_IN_NOISE:3,SHORT_STORY:2,LONG_STORY:1,ORDERING_SENTENCE:2};let nn=null,Ao=null,pe=null;function jl({counts:e,forceRefresh:t}={}){const n=Object.assign({},Fl,e||{}),o=Oe(),r=Re(new Date(`${o}T00:00:00+09:00`).getTime()-864e5),a=JSON.stringify(n);if(!t&&Ao===o&&nn===a&&pe)return Object.assign(mt,pe.today),Object.assign(pt,pe.yesterday?.selection||{LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]}),{today:mt,yesterday:pt};const u={LISTEN_IN_NOISE:ce(Ue,Math.max(0,Number(n.LISTEN_IN_NOISE)||0)),SHORT_STORY:ce(ze,Math.max(0,Number(n.SHORT_STORY)||0)),LONG_STORY:ce(qe,Math.max(0,Number(n.LONG_STORY)||0)),ORDERING_SENTENCE:ce(Je,Math.max(0,Number(n.ORDERING_SENTENCE)||0))};let i=null;return pe&&nn===a&&pe.yesterday&&pe.yesterday.date===r&&(i=pe.yesterday.selection),i||(i={LISTEN_IN_NOISE:ce(Ue,Math.max(0,Number(n.LISTEN_IN_NOISE)||0)),SHORT_STORY:ce(ze,Math.max(0,Number(n.SHORT_STORY)||0)),LONG_STORY:ce(qe,Math.max(0,Number(n.LONG_STORY)||0)),ORDERING_SENTENCE:ce(Je,Math.max(0,Number(n.ORDERING_SENTENCE)||0))}),Object.assign(mt,u),Object.assign(pt,i),Ao=o,nn=a,pe={today:u,yesterday:{date:r,countsKey:a,selection:i}},{today:mt,yesterday:pt}}let on=!1,Qe=null;async function $l(){try{const e={url:typeof document>"u"?require("url").pathToFileURL(__filename).href:Dt&&Dt.tagName.toUpperCase()==="SCRIPT"&&Dt.src||new URL("hooks.cjs.js",document.baseURI).href}&&void 0||"/",t=await fetch(`${e}data/allTrainingData.json`);return t.ok?await t.json():null}catch{return null}}async function Hl(){if(!on)return Qe||(Qe=(async()=>{const e=await $l();if(!e){Qe=null;try{window.dispatchEvent(new Event("speechear.data.error"))}catch{}return}const t={noise:[],short:[],long:[],order:[]};try{for(const n of Object.keys(e||{})){const o=e[n]||[];for(const r of o){if(!r||typeof r!="object")continue;const a=r,u=String(a.training_type||n),i=String(a.category_main_code||a.category_main||a.category_0||""),l=String(a.category_sub_code||a.category_sub||a.category_1||""),c=Object.assign({},a,{training_type:u,category_0:i,category_1:l});u==="LISTEN_IN_NOISE"?t.noise.push(c):u==="SHORT_STORY"?t.short.push(c):u==="LONG_STORY"?t.long.push(c):u==="ORDERING_SENTENCE"&&t.order.push(c)}}}catch{Qe=null;try{window.dispatchEvent(new Event("speechear.data.error"))}catch{}return}Ue.push(...t.noise),ze.push(...t.short),qe.push(...t.long),Je.push(...t.order),on=!0;try{jl()}catch{}try{window.dispatchEvent(new Event("speechear.data.updated"))}catch{}})(),Qe)}async function Gl(e=3e3){const t=Hl();let n;try{await Promise.race([t,new Promise(o=>{n=setTimeout(o,e)})])}finally{n!==void 0&&clearTimeout(n)}return on}function Bo(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function Vl(e){let t=e>>>0;return()=>{t|=0,t=t+1831565813|0;let n=Math.imul(t^t>>>15,1|t);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}}const Wl=ce,Yl=e=>{const[t,n,o]=e.split("-").map(Number);return Math.round(Date.UTC(t,(n||1)-1,o||1)/864e5)},Kl=(e,t)=>{const n=e??{};return String(n.id??n.name??t)};function ht(e,t,n,o,r){if(!e.length||t<=0)return[];const a=Vl(Bo(`${n}|${o}|${r}`)),u=Yl(o)&1,i=e.filter((c,g)=>(Bo(`${n}|${r}|${Kl(c,g)}`)>>>7&1)===u),l=i.length>=t&&e.length-i.length>=t;return Wl(l?i:e,t,a)}function rn(e,t,n){const o=r=>Math.max(0,e[r]||0);return{LISTEN_IN_NOISE:ht(Ue,o("LISTEN_IN_NOISE"),t,n,"LISTEN_IN_NOISE"),SHORT_STORY:ht(ze,o("SHORT_STORY"),t,n,"SHORT_STORY"),LONG_STORY:ht(qe,o("LONG_STORY"),t,n,"LONG_STORY"),ORDERING_SENTENCE:ht(Je,o("ORDERING_SENTENCE"),t,n,"ORDERING_SENTENCE")}}function an(e){return e?!!(e.LISTEN_IN_NOISE?.length||e.SHORT_STORY?.length||e.LONG_STORY?.length||e.ORDERING_SENTENCE?.length):!1}const Ul={LISTEN_IN_NOISE:3,SHORT_STORY:2,LONG_STORY:1,ORDERING_SENTENCE:2};function un(e=!1,t=Ul,n){const o=Re(Date.now()),r=Re(Date.now()-864e5),a=n??"";return Ue.length>0||ze.length>0||qe.length>0||Je.length>0?{today:rn(t,a,o),yesterday:rn(t,a,r)}:{today:rn(t,a,o),yesterday:null}}function zl(e){const t=s.useRef({LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]}),n=s.useRef(null),[o,r]=s.useState(!1),[a,u]=s.useState(!1),[i,l]=s.useState(0),[c,g]=s.useState(!1),[d,C]=s.useState(()=>Oe());s.useEffect(()=>{const m=()=>{const h=Date.now(),p=new Date(h+9*36e5),y=Date.UTC(p.getUTCFullYear(),p.getUTCMonth(),p.getUTCDate()+1)-9*36e5;return Math.max(1e3,y-h+1e3)};let S=setTimeout(function h(){C(Oe()),S=setTimeout(h,m())},m());return()=>clearTimeout(S)},[]),s.useEffect(()=>{let m=!1,S=!1,h=!1,p,y=0,w=null,E=0;const T=40,B=()=>{p!==void 0&&(clearInterval(p),p=void 0)};let N=!1;try{const j=new URLSearchParams(window.location.search),M=j.get("forceRefresh")||j.get("force");N=M==="1"||M==="true"}catch{}const A=j=>{S||(h=!0,t.current=j.today,n.current=j.yesterday,r(!0),g(!0),l(M=>M+1),m=!0,B())},k=async()=>{if(m)return;if(!N){const M=un(!1,void 0,e);if(an(M.today)){A(M);return}}if(w){++y>=T&&D();return}if(y>=E){E=y+8,w=Gl(3e3).catch(()=>!1);try{await w}finally{w=null}if(m)return}const j=un(N,void 0,e);if(an(j.today)){A(j);return}++y>=T&&D()};function D(){r(!0),g(!1),m=!0,B()}const $=()=>{if(S||h)return;const j=un(N,void 0,e);an(j.today)&&A(j)};try{window.addEventListener("speechear.data.updated",$)}catch{}return k(),p=setInterval(k,250),()=>{m=!0,S=!0,B();try{window.removeEventListener("speechear.data.updated",$)}catch{}}},[e,d]);const f=s.useCallback(m=>{const S=a?n.current:t.current,h=a?t.current:n.current;return S?.[m]?.length?S[m]:h?.[m]?.length?h[m]:void 0},[a,i]);return{loaded:o,hasData:c,showYesterday:a,setShowYesterday:u,getTrainingPerType:f}}const _e=[];let yt=!1;function Do(e){if(e.key!=="Escape"||e.defaultPrevented||e.isComposing||e.keyCode===229)return;const t=_e[_e.length-1];t&&(e.stopPropagation(),t())}function No(e){return _e.push(e),!yt&&typeof document<"u"&&(document.addEventListener("keydown",Do),yt=!0),()=>{const t=_e.lastIndexOf(e);t>=0&&_e.splice(t,1),_e.length===0&&yt&&typeof document<"u"&&(document.removeEventListener("keydown",Do),yt=!1)}}function ql(e,t=!0){const n=yn(e);s.useEffect(()=>{if(t)return No(()=>{n.current?.()})},[t,n])}const ln=(e,t)=>`${e}:${t??1}`,bt=new Map,To=new Set,_o=new Map,Jl=6e4;function Ql(e,t){const[n,o]=s.useState(0),r=Array.from(new Set(e.map(a=>ln(a.word,a.homonum)))).sort().join("|");return s.useEffect(()=>{const a=r?r.split("|"):[],u=Date.now(),i=a.filter(g=>!bt.has(g)&&!To.has(g)&&!(u-(_o.get(g)??-1/0)<Jl));if(i.length===0)return;let l=!1;const c=Array.from(new Set(i.map(g=>g.slice(0,g.lastIndexOf(":")))));return t(c).then(g=>{for(const d of g)d.Meaning&&bt.set(ln(d.Word,d.Homonum??void 0),d.Meaning);if(g.length>0)for(const d of i)bt.has(d)||To.add(d);else{const d=Date.now();for(const C of i)_o.set(C,d)}l||g.length===0||o(d=>d+1)}).catch(()=>{}),()=>{l=!0}},[r,t]),s.useMemo(()=>{const a=r?r.split("|"):[],u=new Map;for(const i of a){const l=bt.get(i);l!=null&&u.set(i,l)}return u},[r,n])}function Zl(){const[e,t]=s.useState(null),n=s.useCallback(a=>t(a.getBoundingClientRect()),[]),o=s.useCallback(()=>t(null),[]),r=s.useCallback(a=>{const u=a.getBoundingClientRect();t(i=>i?null:u)},[]);return{anchorRect:e,isOpen:e!=null,openAt:n,close:o,toggleAt:r}}function Xl(e){const[t,n]=s.useState(null),[o,r]=s.useState(null),a=s.useRef(null);s.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]);const u=s.useCallback((l,c)=>{a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{n(l),r(c)},e)},[e]),i=s.useCallback(()=>{a.current&&clearTimeout(a.current),n(null),r(null)},[]);return{payload:t,anchorRect:o,openAfterDelay:u,close:i}}function es(e,t,n){const o=Number.isFinite(t)&&t>=1?Math.floor(t):1,r=Math.max(1,Math.ceil(e.length/o)),a=Number.isFinite(n)?Math.min(Math.max(1,Math.floor(n)),r):1;return{pageItems:s.useMemo(()=>e.slice((a-1)*o,a*o),[e,a,o]),totalPages:r,curPage:a}}function Lo(e,t){const[n,o]=s.useState(e);n!==e&&(o(e),t(1))}function ts(e={}){const{defaultPageSize:t="25",resetOn:n}=e,[o,r]=s.useState(""),[a,u]=s.useState(t),[i,l]=s.useState(1),c=Number(t)||25,g=Number(a)||c;return Lo([o,a,...n??[]].map(String).join("|"),l),{query:o,setQuery:r,pageSize:a,setPageSize:u,perPage:g,page:i,setPage:l}}function ns(e="warning"){const[t,n]=s.useState(""),[o,r]=s.useState(e),[a,u]=s.useState(0),i=s.useCallback((d,C)=>{r(C),n(d),u(f=>f+1)},[]),l=s.useCallback(d=>i(d,"warning"),[i]),c=s.useCallback(d=>i(d,"normal"),[i]),g=s.useCallback(()=>n(""),[]);return{toastMessage:t,toastType:o,toastKey:a,showToast:i,showWarning:l,showNormal:c,clearToast:g}}const os=[{key:"LISTEN_IN_NOISE",label:"\uC18C\uC74C \uD558 \uBB38\uC7A5 \uB4E3\uAE30",icon:"audio-lines",desc:"\uB2E4\uC591\uD55C \uC18C\uC74C \uD658\uACBD\uC5D0\uC11C \uBB38\uC7A5 \uCCAD\uB825\uC744 \uD6C8\uB828\uD569\uB2C8\uB2E4."},{key:"SHORT_STORY",label:"\uC9E7\uC740 \uC774\uC57C\uAE30 \uB4E3\uAE30",icon:"message-square",desc:"\uC9E7\uC740 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uBB38\uC81C\uB97C \uD480\uC5B4\uBD05\uB2C8\uB2E4."},{key:"LONG_STORY",label:"\uAE34 \uC774\uC57C\uAE30 \uB4E3\uAE30",icon:"message-square-text",desc:"\uAE34 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uB2E4\uC218\uC758 \uBB38\uC81C\uB97C \uD480\uC5B4\uBD05\uB2C8\uB2E4."},{key:"ORDERING_SENTENCE",label:"\uBB38\uC7A5 \uC21C\uC11C\uD654 \uD558\uAE30",icon:"align-start-vertical",desc:"\uC5EC\uB7EC\uAC1C\uC758 \uC9E7\uC740 \uBB38\uC7A5\uC744 \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uADF8 \uC21C\uC11C\uC5D0 \uB9DE\uAC8C \uBC30\uC5F4\uD569\uB2C8\uB2E4."}],rs={LISTEN_IN_NOISE:"listenInNoise",SHORT_STORY:"shortStory",LONG_STORY:"longStory",ORDERING_SENTENCE:"orderingSentence"};function as(e){return os.map(t=>{const n=rs[t.key];return n?{...t,label:e(`trainingType.${n}.title`),desc:e(`trainingType.${n}.desc`)}:t})}const Ze={blue:"#60A5FA",green:"#4ADE80",amber:"#FBBF24",purple:"#A78BFA",pink:"#F472B6"},Xe=Ze.blue,St=Ze.green,et=Ze.amber,wt=Ze.purple,us=Ze.pink,is=[{key:"discrimination",label:"\uBCC0\uBCC4\uD6C8\uB828",disc:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0, \uB610\uB294 \uD2B9\uC815 \uC18C\uB9AC\uB97C \uAD6C\uBCC4\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"ear",types:[{key:"SAME_SOUND_PICK",label:"\uAC19\uC740 \uC18C\uB9AC \uACE0\uB974\uAE30",icon:"volume-2",color:Xe,subTitle:"\uB4E4\uC740 \uC18C\uB9AC\uC640 \uAC19\uC740 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"SAME_OR_DIFF",label:"\uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0 \uB9DE\uD788\uAE30",icon:"diff",color:Xe,subTitle:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0, \uB2E4\uB978\uC9C0 \uAD6C\uBD84\uD558\uC138\uC694."},{key:"HEAR_AND_PICK_SAME",label:"\uC77C\uCE58\uD558\uB294 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"headphones",color:Xe,subTitle:"\uB4E4\uC740 \uC18C\uB9AC\uC758 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"HEAR_AND_PICK_INCLUDED",label:"\uD55C \uC74C\uC808 \uD3EC\uD568 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"scan-search",color:Xe,subTitle:"\uB4E4\uC740 \uC74C\uC808\uC774 \uD3EC\uD568\uB41C \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"STARTS_WITH_SAME_SOUND",label:"\uCCAB \uC74C\uC808\uC774 \uAC19\uC740 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"play-circle",color:Xe,subTitle:"\uB4E4\uC740 \uB2E8\uC5B4\uC640 \uAC19\uC740 \uC18C\uB9AC\uB85C \uC2DC\uC791\uD558\uB294 \uB2E8\uC5B4\uB97C \uACE0\uB974\uC138\uC694."}]},{key:"synthesis",label:"\uD569\uC131\uD6C8\uB828",disc:"\uB450 \uAC1C \uC774\uC0C1\uC758 \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uD569\uCCD0 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"git-merge",types:[{key:"MERGE_2_SYLLABLES",label:"\uC74C\uC808 2\uAC1C \uD569\uCE58\uAE30",icon:"link-2",color:St,subTitle:"\uB450 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_3_SYLLABLES",label:"\uC74C\uC808 3\uAC1C \uD569\uCE58\uAE30",icon:"git-merge",color:St,subTitle:"\uC138 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_2_PHONEMES",label:"\uC74C\uC18C 2\uAC1C \uD569\uCE58\uAE30",icon:"combine",color:St,subTitle:"\uB450 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_3_PHONEMES",label:"\uC74C\uC18C 3\uAC1C \uD569\uCE58\uAE30",icon:"braces",color:St,subTitle:"\uC138 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"}]},{key:"deletion",label:"\uD0C8\uB77D\uD6C8\uB828",disc:"\uB2E8\uC5B4\uC5D0\uC11C \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uC81C\uAC70\uD588\uC744 \uB54C \uB0A8\uB294 \uC18C\uB9AC\uB97C \uC778\uC2DD\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"scissors",types:[{key:"DROP_1_FROM_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C 1\uC74C\uC808 \uD0C8\uB77D",icon:"scissors",color:et,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_1_FROM_3SYLL",label:"3\uC74C\uC808\uC5D0\uC11C 1\uC74C\uC808 \uD0C8\uB77D",icon:"minus-circle",color:et,subTitle:"3\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_PART_FROM_COMPOUND",label:"\uD569\uC131\uC5B4\uC5D0\uC11C \uBD80\uBD84\uD0C8\uB77D",icon:"unlink",color:et,subTitle:"\uD569\uC131\uC5B4\uC758 \uC77C\uBD80\uB97C \uBE7C\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_FINAL_CONSONANT_FROM_1SYLL",label:"1\uC74C\uC808\uC5D0\uC11C \uBC1B\uCE68 \uD0C8\uB77D",icon:"eraser",color:et,subTitle:"\uBC1B\uCE68\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"REMOVE_CONSONANT_AND_IDENTIFY_PHONEME",label:"1\uC74C\uC808\uC5D0\uC11C \uC790\uC74C \uD0C8\uB77D",icon:"audio-lines",color:et,subTitle:"\uC790\uC74C\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB0A8\uC744\uAE4C\uC694?"}]},{key:"substitution",label:"\uB300\uCE58\uD6C8\uB828",disc:"\uB2E8\uC5B4\uC758 \uC77C\uBD80 \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uBC14\uAFB8\uC5B4 \uC0C8\uB85C\uC6B4 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"replace",types:[{key:"CHANGE_1_SYLL_IN_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",icon:"replace",color:wt,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_SYLL_IN_3SYLL",label:"3\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",icon:"shuffle",color:wt,subTitle:"3\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_PHONEME_IN_1SYLL",label:"1\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC18C \uBC14\uAFB8\uAE30",icon:"arrow-right-left",color:wt,subTitle:"1\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_PHONEME_IN_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC18C \uBC14\uAFB8\uAE30",icon:"flip-horizontal",color:wt,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."}]},{key:"attention",label:"\uCCAD\uAC01\uC801\uC8FC\uC758\uB825\uD6C8\uB828",disc:"\uC5EC\uB7EC \uC18C\uB9AC\uB97C \uB4E3\uACE0 \uC21C\uC11C\uB97C \uAE30\uC5B5\uD558\uB294 \uC8FC\uC758\uB825\uACFC \uB2E8\uAE30 \uAE30\uC5B5 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"list-ordered",types:[{key:"LISTEN_AND_REMEMBER_ORDER",label:"\uB4E3\uACE0 \uC21C\uC11C\uB300\uB85C \uAE30\uC5B5\uD558\uAE30",icon:"list-ordered",color:us,subTitle:"\uC138 \uB2E8\uC5B4\uB97C \uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uCE74\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694."}]}];function ls(){const{t:e}=se.useTranslation();return s.useMemo(()=>{const t=Object.fromEntries(as(e).map(o=>[o.key,o.label])),n={...t};return is.flatMap(o=>o.types).forEach(o=>{n[o.key]=e(`trainingType.${o.key}.label`,{defaultValue:o.label})}),{sentence:t,all:n}},[e])}function ss({computeStyle:e,onScroll:t="close",onResize:n="close",ignoreOutsideClickSelector:o}){const[r,a]=s.useState(!1),[u,i]=s.useState({position:"fixed"}),l=s.useRef(null),c=s.useRef(null),g=s.useCallback(()=>{l.current&&i(e(l.current.getBoundingClientRect(),l.current))},[e]);s.useLayoutEffect(()=>{r&&g()},[r,g]),s.useEffect(()=>{if(!r)return;let f=c.current?.offsetHeight??0;f>0&&g();let m=0,S=null;typeof ResizeObserver<"u"&&c.current&&(S=new ResizeObserver(()=>{const N=c.current?.offsetHeight??0;if(N!==f){if(f=N,++m>4){S?.disconnect(),S=null;return}g()}}),S.observe(c.current));const h=N=>{const A=N.target;o&&A.closest?.(o)||l.current?.contains(A)||c.current?.contains(A)||a(!1)};document.addEventListener("mousedown",h),document.addEventListener("pointerdown",h);let p=null;const y=()=>{if(typeof requestAnimationFrame>"u"){g();return}p===null&&(p=requestAnimationFrame(()=>{p=null,g()}))},w=N=>{c.current?.contains(N.target)||(t==="reposition"?y():t==="close"&&a(!1))};t!=="ignore"&&window.addEventListener("scroll",w,!0);const E=()=>{n==="reposition"?y():n==="close"&&a(!1)};let T=null;const B=()=>{E(),T&&clearTimeout(T),T=setTimeout(()=>{T=null,n==="reposition"&&g()},250)};return n!=="ignore"&&(window.addEventListener("resize",E),window.addEventListener("orientationchange",B)),()=>{p!==null&&cancelAnimationFrame(p),S?.disconnect(),document.removeEventListener("mousedown",h),document.removeEventListener("pointerdown",h),t!=="ignore"&&window.removeEventListener("scroll",w,!0),n!=="ignore"&&(window.removeEventListener("resize",E),window.removeEventListener("orientationchange",B)),T&&clearTimeout(T)}},[r,g,t,n,o]),s.useEffect(()=>{if(r)return No(()=>a(!1))},[r]);const d=s.useCallback(()=>a(f=>!f),[]),C=s.useCallback(()=>a(!1),[]);return{open:r,setOpen:a,toggle:d,close:C,style:u,triggerRef:l,menuRef:c}}function cs(e,{mode:t="playback",autoStart:n=!1,onPlaySpeaker:o,onComplete:r,playMs:a=1100,feedbackMs:u=1500}={}){const[i,l]=s.useState([]),[c,g]=s.useState(0),[d,C]=s.useState("idle"),[f,m]=s.useState(null),[S,h]=s.useState([]),[p,y]=s.useState(null),[w,E]=s.useState(0),T=s.useRef(0),B=s.useCallback(P=>{T.current=typeof P=="function"?P(T.current):P,E(T.current)},[]),N=s.useRef(o),A=s.useRef(r);s.useEffect(()=>{N.current=o,A.current=r},[o,r]);const k=s.useRef([]),D=()=>{k.current.forEach(clearTimeout),k.current=[]},$=(P,G)=>{k.current.push(setTimeout(G,P))};s.useEffect(()=>()=>D(),[]);const j=i[c]?.id??null,M=s.useRef(null),O=s.useCallback(()=>{D(),C("playing"),h([]),y(null),B(0);let P=0;e.forEach((G,Y)=>{$(P,()=>{g(Y),m(G.id),N.current?.(G)}),$(P+1e3,()=>{m(null),h(ee=>[...ee,G.id])}),P+=1300}),$(P,()=>{C("done"),A.current?.({score:0,total:e.length})})},[e,B]),I=s.useCallback((P,G)=>{if(G>=P.length){C("done"),A.current?.({score:T.current,total:P.length});return}M.current=null,g(G),y(null),C("playing"),m(P[G].id),N.current?.(P[G]),$(a,()=>{m(null),C("waiting")})},[a]),W=s.useCallback(()=>{D();const P=H(e);l(P),B(0),h([]),I(P,0)},[e,I,B]),X=s.useCallback(()=>{t==="playback"?(l(e),O()):W()},[t,e,O,W]),U=s.useCallback(()=>{D(),C("idle"),m(null),h([]),y(null),g(0),B(0),l([])},[B]),he=e.map(P=>P.id).join("|");s.useEffect(()=>(n?X():U(),()=>D()),[t,he,n]);const v=s.useCallback(P=>{d!=="waiting"||t==="playback"||M.current===c||(M.current=c,y(P),P===i[c]?.id&&B(G=>G+1),t==="exam"?(C("playing"),$(400,()=>I(i,c+1))):(C("feedback"),$(u,()=>I(i,c+1))))},[d,t,i,c,I,u,B]),_=t==="playback"?e.length:i.length;return{bind:{activeSpeakerId:f,playedIds:S,selectedId:p,answerId:j,showFeedback:d==="feedback",clickable:d==="waiting",onSelectSpeaker:v},index:c,total:_,score:w,phase:d,done:d==="done",start:X,reset:U}}exports.CACHE_GROUPS=Rn,exports.CORE_VERSION=Bi,exports.DocumentTitleSuppressContext=wn,exports.EMPTY_COMPOSITION=Zt,exports.MediaQueryOverrideContext=pn,exports.NO_CODA=ie,exports.SYLLABLE_MIN=le,exports.VAP_PAGE_SIZE_OPTIONS=at,exports.buildGradeSection=ro,exports.buildPartOfSpeechSection=ao,exports.buildPositionSection=pl,exports.buildSelectSection=ml,exports.buildSyllableSection=fl,exports.buildWordTypeSection=uo,exports.charToPronValue=mo,exports.convertComposition=ho,exports.fmtBytes=hr,exports.gradeDescriptions=vo,exports.lsBytes=Pn,exports.meaningKey=ln,exports.normalizeWordAttributeFilter=$i,exports.pronToCharValue=po,exports.syllableToFilter=qt,exports.toWordAttributeFilterCodes=$t,exports.today=je,exports.toggleAttributeFilter=hl,exports.useAnchoredMenu=ss,exports.useCacheManagement=yr,exports.useDailyTrainingSelection=zl,exports.useDelayedHoverAnchor=Xl,exports.useDeviceManagement=Rr,exports.useDocumentTitle=zo,exports.useEscToClose=ql,exports.useFontScale=Go,exports.useHoverAnchor=Zl,exports.useListControls=ts,exports.useMediaQuery=Uo,exports.usePageResetOnChange=Lo,exports.usePagedList=es,exports.usePasswordChange=tr,exports.useRelativeDay=Zo,exports.useSoundCompassExam=cs,exports.useTablePaging=Lr,exports.useTableSort=Or,exports.useToastState=ns,exports.useTrainingTypeLabels=ls,exports.useVisitAllPanel=Ar,exports.useVisitHistory=wr,exports.useVisitSchedule=vr,exports.useWindowEvent=bn,exports.useWordAttributeFilterKeys=oo,exports.useWordDataStats=br,exports.useWordMeanings=Ql,exports.useWordTrainingDataGeneration=xl,exports.useWordTrainingFilter=kl,exports.valueToJamos=ge,exports.wordAttributeFilterFromCodes=Ht;
|
|
5
|
+
and aids recovery.`,site:{title:"Site",malgwi:"Malgwi",soundDirection:"Sound Direction System",vrSoundDirection:"VR Sound Direction System",hearingTest:"Hearing Test Pro"},sns:{title:"SNS",naverBlog:"Naver Blog",kakao:"KAKAO Talk Open Chat"},policy:{title:"Policy",terms:"Terms of Service",privacy:"Privacy Policy"},ceo:"CEO",address:"Address",support:"Support",ceoName:"Ji-hye Han",addressValue:"302, 3F, Haechan Bldg, 32 Sicheong-gil, Chuncheon, Gangwon, Korea"},zu={trainingPhone:{topic:"Gardening",prev:"Prev",next:"Next",speed:"Speed 3",noiseType:"Crowd noise",settings:"Settings",start:{caption:"Press the play (\u25B6) button below and listen carefully. After listening, check the sentence."},feedback:{caption:"Plant the well-grown seedlings in the garden bed and cover them carefully with plastic film."},done:{heardWell:"Heard clearly",listenAgain:"Listen again"}}},qu={timeHM:"{{hh}}:{{mm}}",timeH:"{{hh}}:{{mm}}"},Ju={options:"Training Options",difficulty:"Difficulty",exclude:"Exclude",chosung:"Initial Consonant",excludeOptions:{none:"None",noImage:"No Image"}},Qu={answer:"Answer",distractor:"Distractor"},Zu={phaseWordDownload:"Download Word Data",phaseImageCheck:"Check Images",phasePairAnalysis:"Analyze Word Pairs",downloadingCount_one:"Downloading {{n}} word",downloadingCount_other:"Downloading {{n}} words",checkingPage:"Checking page {{page}} list",imageCount:"{{done}} / {{total}} items"},Xu={clearAriaLabel:"Clear input"},ei={ariaLabel:"Select tab"},ti={ariaLabel:"Tabs"},ni={dragPrompt:"Drag and drop files here",browseButton:"Choose Files",removeAriaLabel:"Remove {{name}}"},oi={ariaLabel:"User avatar"},ri={relativeDay:{today:"Today",yesterday:"Yesterday",daysAgo:"{{n}}d ago"},reason:{notLoggedIn:"Login required."},list:{title:"Received Homework"},status:{expired:"Expired",done:"Done {{count}}\xD7 \xB7 {{date}}",notDone:"Not done"}},ai={weekly:{title:"Weekly Training",daily:"Daily Listening",crossword:"Crossword"},homework:{title:"Homework Progress",totalRate:"Overall rate",count:"Total",done:"Done",remaining:"Remaining"},today:{tooltipTotal:"Total",tooltipDone:"Done"},filter:{countSuffix:" sessions"},time:{countLabel_one:"{{n}} session",countLabel_other:"{{n}} sessions",empty:"No training records"},daily:{title:"Today's Listening Record",empty:"No completed sessions"},crossword:{title:"Crossword Quiz",empty:"No completed levels"},visit:{title:"Linked Visit Records"},detail:"Details",detailFor:"{{name}} details",trainingType:{LISTEN_IN_NOISE:"Sentence in Noise",SHORT_STORY:"Short Story",LONG_STORY:"Long Story",ORDERING_SENTENCE:"Sentence Ordering"}},ui={import:"Add to my trainings",publisher:"Publisher",time:{justNow:"just now",minutesAgo:"{{n}}m ago",hoursAgo:"{{n}}h ago",daysAgo:"{{n}}d ago",weeksAgo:"{{n}}w ago",monthsAgo:"{{n}}mo ago",yearsAgo:"{{n}}y ago"},badge:{shared:"Store"},publish:{descPlaceholder:"One-line description for the Training Store (optional)"}},ii={manage:{unit:"item(s)"}},li={cancelLabel:"Cancel"},si={subtitle:"Select a topic to start listening practice."},ci={steps:"Step {{current}} of {{total}}"},di={panelTitle:"Training misses",viewItems:"Items",viewTypes:"Types",colPending:"Left",colTrend:"Change",colRuns:"Runs",unitItem:" items",skippedOnly_one:"{{n}} older record was excluded \u2014 it does not say what was answered.",skippedOnly_other:"{{n}} older records were excluded \u2014 they do not say what was answered.",summaryLabel:"Recorded",summaryValue:"{{items}} items \xB7 {{pending}} still missed",nextLabel:"Next to work on",nextCount:"{{count}}",nextCountCapped:"{{shown}} of {{total}}",picked:"\u2192 {{what}}",typeClear:"All caught up",typePending:"{{pending}} of {{total}} left",flat:"no change",runs_one:"{{count}} run",runs_other:"{{count}} runs",avgDuration:"{{sec}}s avg"},Ci={resetColumns:"Reset column widths",scrollRegion:"Horizontally scrollable table",rowActionHint:"Press a row to open its details"},gi={panelTitle:"Word table scores",viewWords:"Words",viewTables:"Tables",colLatest:"When",colTrend:"Change",unitTime:" times",summaryLabel:"Scored",summaryValue:"{{times}} times \xB7 {{words}} words",nextLabel:"Focus next",nextCount:"{{count}}",allClear:"All correct last time.",times:"{{count}}x",flat:"no change",recentLabel:"Recent scorings",nextCountCapped:"{{shown}} of {{total}}"},fi={ariaLabel:"Banner",dotAriaLabel:"Banner {{index}} of {{count}}"},mi={selectYearMonth:"Select year and month",chooseDate:"Choose a date"},pi={previewRegion:"Report preview \u2014 scrollable sideways"},hi={description:"Description",textbox:"Text",training:"Training guide",menu:"Menu"},yi={devNone:"No acquisition data",place:{labial:"Bilabial",alveolar:"Alveolar",palatal:"Palatal",velar:"Velar",glottal:"Glottal"}},bi={clearSelection:"Clear selection"},Si={showResult:"Show {{type}} result"},wi={selected:"Selected",remove:"Remove",exclude:"Excluded",nthSelected:"Selection {{n}}"},Ei={loading:"Loading"},vi={state:{active:"playing",played:"heard",correct:"correct",wrong:"wrong"}},Ai={ariaLabel:"Breadcrumb"},Bi={empty:"No items yet."},Di={main:"Main gradient",soft:"Soft",sub:"Sub color",deep:"Deep gradient",softSub:"Soft sub",warm:"Warm (accent)",dark:"Dark",radial:"Radial gradient",diagonal:"Diagonal pattern",dots:"Dot pattern",outline:"Outline",success:"Success / done",naver:"Naver blog notice",instagram:"Instagram notice"},Ti={common:Cu,calendar:gu,passCard:fu,searchField:mu,rating:pu,colorPicker:hu,dropdown:yu,accordion:bu,header:Su,nav:wu,settings:Eu,usage:vu,account:Au,help:Bu,training:Du,trainingSettings:Tu,customers:Nu,payment:_u,coupons:Lu,visits:Ou,company:Ru,trainingType:Pu,myWordTraining:Mu,myWordTable:Iu,keyWords:ku,wordTable:xu,wordSearch:Fu,wordPrint:ju,topic:$u,accessLinkManager:Hu,login:Gu,device:Vu,manager:Wu,wordPairs:Yu,game:Ku,footer:Uu,landing:zu,date:qu,trainingSetPage:Ju,wordTrainingPreview:Qu,wordData:Zu,textField:Xu,segmentedControl:ei,tabs:ti,fileUpload:ni,avatar:oi,myHomework:ri,trainingStatus:ai,store:ui,homework:ii,inquiry:li,trainingPlanRun:si,progress:ci,trainingMiss:di,table:Ci,wordScore:gi,topBanner:fi,datePicker:mi,report:pi,tooltip:hi,phonemeProfile:yi,bulkBar:bi,debug:Si,badge:wi,loader:Ei,soundCompass:vi,breadcrumb:Ai,board:Bi,promoBannerBg:Di};const Ni="0.339.0",_i=[{code:"ko",label:"\uD55C\uAD6D\uC5B4"},{code:"en",label:"English"}],Mt="ko",Li="ihab_display_language";function Vn(){if(typeof window>"u")return Mt;try{const e=localStorage.getItem(Li);if(e&&_i.some(t=>t.code===e))return e}catch{}return Mt}function Wn(e){try{document.documentElement.lang=e}catch{}}re.on("languageChanged",Wn),Wn(Vn()),re.use(se.initReactI18next).init({resources:{ko:{translation:du},en:{translation:Ti}},lng:Vn(),fallbackLng:Mt,interpolation:{escapeValue:!1},react:{useSuspense:!1}});const Yn=new Set(["field"]),It="none";function Oi(e){return e==null||String(e).trim()===""}function Ri(e){return typeof e=="string"&&xt.includes(e)}function kt(e,t){if(!e)return!0;const n=e instanceof Set?e:new Set(e);return n.size===0?!0:Oi(t)?n.has(It):n.has(String(t))}const Ve=["grade","syllables","pos","wordType","field"],xt=["1","2","3","4","none"],Pi=["1","2","3","4","5+"],Mi=["noun","verb","modifier"],Ii=["native","sino","foreign","mixed"],ki={grade:xt,syllables:Pi,pos:Mi,wordType:Ii,field:[]},xi={noun:["\uBA85","\uC218"],verb:["\uB3D9","\uD615"],modifier:["\uBD80","\uAD00"]},Fi={native:"\uACE0\uC720",sino:"\uD55C\uC790",foreign:"\uC678\uB798",mixed:"\uD63C\uC885"},ji={grade:["\uB09C\uC774\uB3C4 \uB4F1\uAE09"]},$i={pos:{noun:["\uCCB4\uC5B8(\uBA85\uC0AC,\uC218\uC0AC)"],verb:["\uC6A9\uC5B8(\uB3D9\uC0AC,\uD615\uC6A9\uC0AC)"],modifier:["\uC218\uC2DD\uC5B8(\uBD80\uC0AC,\uAD00\uD615\uC0AC)"]}},Ft=new Map;try{re.store?.on?.("added",()=>Ft.clear())}catch{}function We(e){const t=Ft.get(e);if(t)return t;const n=re.getFixedT(e),o={section:{grade:n("wordSearch.filter.difficulty","\uB4F1\uAE09"),syllables:n("wordSearch.filter.syllables","\uC74C\uC808 \uC218"),pos:n("wordSearch.filter.partOfSpeech","\uD488\uC0AC"),wordType:n("wordSearch.filter.wordType","\uC720\uD615"),field:n("wordSearch.filter.field","\uC758\uBBF8\uBC94\uC8FC")},value:{grade:{...Object.fromEntries(xt.filter(r=>r!==It).map(r=>[r,n("wordSearch.filter.grade",{n:Number(r),defaultValue:`${r}\uB4F1\uAE09`})])),[It]:n("wordSearch.filter.gradeNone","\uC5C6\uC74C")},syllables:{...Object.fromEntries(["1","2","3","4"].map(r=>[r,n("wordSearch.filter.syllable",{n:Number(r),defaultValue:`${r}\uC74C\uC808`})])),"5+":n("wordSearch.filter.syllable5plus","5\uC74C\uC808 \uC774\uC0C1")},pos:{noun:n("wordSearch.filter.pos.noun","\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)"),verb:n("wordSearch.filter.pos.verb","\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)"),modifier:n("wordSearch.filter.pos.modifier","\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)")},wordType:{native:n("wordSearch.filter.type.native","\uACE0\uC720\uC5B4"),sino:n("wordSearch.filter.type.sino","\uD55C\uC790\uC5B4"),foreign:n("wordSearch.filter.type.foreign","\uC678\uB798\uC5B4"),mixed:n("wordSearch.filter.type.mixed","\uD63C\uC885\uC5B4")},field:{}}};return Ft.set(e,o),o}const jt=()=>Array.from(new Set([re.language,"ko","en"].filter(e=>!!e)));function Ye(e){if(Ve.includes(e))return e;for(const t of jt()){const n=We(t);for(const o of Ve)if(n.section[o]===e)return o}for(const t of Ve)if(ji[t]?.includes(e))return t;return null}function Ee(e,t){if(Yn.has(e)||ki[e].includes(t))return t;for(const n of jt()){const o=We(n).value[e];for(const[r,a]of Object.entries(o))if(a===t)return r}for(const[n,o]of Object.entries($i[e]??{}))if(o.includes(t))return n;if(e==="grade"||e==="syllables"){const n=parseInt(t.replace(/\D/g,""),10);if(Number.isFinite(n)&&n>=1)return e==="grade"?n<=4?String(n):null:n>=5?"5+":String(n)}return null}function Hi(e,t,n=re.language){return We(n).value[e][t]??t}const Gi=e=>Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"&&e?[e]:[];function $t(e){const t={};for(const[n,o]of Object.entries(e??{})){const r=Ye(n);if(r)for(const a of Gi(o)){const u=Ee(r,a);if(!u)continue;const i=t[r]??(t[r]=[]);i.includes(u)||i.push(u)}}return t}function Ht(e,t=re.language){const n=We(t||"ko"),o={};for(const r of Ve){const a=(e?.[r]??[]).map(u=>n.value[r][u]??(Yn.has(r)?u:void 0)).filter(u=>!!u);a.length&&(o[n.section[r]]=a)}return o}function Vi(e,t=re.language){const n={};for(const[o,r]of Object.entries(e??{}))Ye(o)||(n[o]=r);return{...n,...Ht($t(e),t)}}function Wi(e){for(const t of jt()){const n=We(t);if(Ve.some(o=>n.section[o]===e))return t}return re.language||"ko"}let ct=null,Kn=null,Un=null;function Yi(){const e=it();if(e&&e.entries.length>0){const t=ke();if(ct&&Kn===e&&Un===t)return ct;const n=new Set,o=[];for(const r of e.entries)!r.word||n.has(r.word)||(n.add(r.word),o.push({w:r.word,s:r.syllables,p:t?.[r.word]?[...t[r.word].cho??[],...t[r.word].jung??[],...t[r.word].jong??[]]:[],pron:r.pronunciation||r.word,grade:r.grade}));return ct=o,Kn=e,Un=t,ct}return[]}const de=new Proxy([],{get(e,t){const n=Yi(),o=n[t];return typeof o=="function"?o.bind(n):o}});function Gt(e){return e.length?e[Math.floor(Math.random()*e.length)]:void 0}function ae(e,t){if(t>=e.length)return H(e);if(t===0)return[];const n=e.slice();for(let o=0;o<t;o++){const r=o+Math.floor(Math.random()*(n.length-o)),a=n[o];n[o]=n[r],n[r]=a}return n.slice(0,t)}let Vt=null,zn=null;function me(){const e=it();if(Vt&&zn===e)return Vt;const t=new Map;for(const n of de)n.w&&t.set(n.w,n.pron);return Vt=t,zn=e,t}function q(e){return me().get(e)||e}function dt(e,t,n=new Set){const o=[];for(const r of H(e)){if(o.length>=t)break;const a=q(r);n.has(a)||(n.add(a),o.push(r))}return o}let Ki=0;function Z(e){return`${e}-rt-${++Ki}`}function Ne(e){const t=Rn();if(!t||t.total===0){const r=new Set;for(const a of e)r.add(a);return r}const n=Pn(),o=new Set;for(const r of e)n.has(r)&&o.add(r);return o}const Ct=new Map;let qn=null,Jn=null;function Ke(e){return e==null?"":Array.isArray(e)?e.slice().sort().join(","):e}function Wt(e){const t=Ke(e.choseong),n=e.composition,o=n?.syllable==null?"":Array.isArray(n.syllable)?n.syllable.slice().sort().join(","):String(n.syllable),r=n?`${Ke(n.cho)}/${Ke(n.jung)}/${Ke(n.jong)}/${n.jongNone?"N":""}/${o}`:"",a=Ke(e.grade);return`${e.difficulty??""}|${t}|${r}|${e.excludeNoImage?"1":"0"}|${e.count??""}|x${e.contrastCount??1}|${e.fullCount?"F":""}|s${e.sameStructureOnly===!1?"0":"1"}|v${e.phonemeView==="pron"?"p":"c"}|g${a}|t${e.targetSyllable??""}|c${e.choicesPerItem??""}`}const Yt=new Map;function Ui(e){return Wt({...e,count:void 0,choicesPerItem:void 0,fullCount:!1})}async function ne(e){const t=it(),n=ke();(t!==qn||n!==Jn)&&(Ct.clear(),Yt.clear(),qn=t,Jn=n);const o=Wt(e);return Ct.has(o)||Ct.set(o,zi(e)),Ct.get(o)}function Qn(e){if(!e)return null;const t=u=>u==null?null:Array.isArray(u)?u.length?u:null:[u],n=t(e.cho),o=t(e.jung),r=!!e.jongNone,a=r?null:t(e.jong);return n||o||a||r?r&&!n&&!o&&!a?u=>dr(u):u=>gr(u,{cho:n,jung:o,jong:a,jongNone:r}):null}function Zn(e){const t=e.grade&&e.grade.length>0?new Set(e.grade):null,n=e.composition??null,o=n?.syllable!=null?new Set(Array.isArray(n.syllable)?n.syllable:[n.syllable]):null,r=n?[Qn(n),o?u=>o.has(Me(u)):null].filter(u=>u!=null):[];if(!t&&r.length===0)return null;const a=e.phonemeView==="pron";return u=>{if(!kt(t,u.grade))return!1;if(r.length===0)return!0;const i=a?q(u.w):u.w;return r.every(l=>l(i))}}async function zi(e){const{difficulty:t=null,choseong:n=null,composition:o=null,targetSyllable:r=null,excludeNoImage:a=!1}=e,u=e.grade&&e.grade.length>0?new Set(e.grade):null,i=e.sameStructureOnly??!0,l=e.phonemeView==="pron"?"pron":"char",c=Math.max(1,e.contrastCount??1),g=t==="cho"||t==="jung"||t==="jong",d=g&&c>=2,C=t==="count",f=n?new Set(Array.isArray(n)?n:[n]):null,m=o?.syllable!=null?new Set(Array.isArray(o.syllable)?o.syllable:[o.syllable]):null,S=o?[Qn(o),m?v=>m.has(Me(v)):null].filter(v=>v!=null):[],h=t==="random"||t===null,p=h||C,y=h||d||C;let w=de.filter(v=>!v.w||!kt(u,v.grade)?!1:y?!0:Array.isArray(v.p)&&v.p.length>0);f&&(w=w.filter(v=>{for(const _ of f)if(sr(v.w,_))return!0;return!1})),S.length>0&&(w=w.filter(v=>{const _=l==="pron"?q(v.w):v.w;return S.every(P=>P(_))})),r&&(w=w.filter(v=>v.w[0]===r));let E;if(a){const v=new Set;for(const _ of w)if(v.add(_.w),Array.isArray(_.p))for(const P of _.p)v.add(P);if(p)for(const _ of de)_.w&&v.add(_.w);E=Ne(v)}else{const v=new Set;for(const _ of w)if(v.add(_.w),Array.isArray(_.p))for(const P of _.p)v.add(P);if(p)for(const _ of de)_.w&&v.add(_.w);E=v}let N=null;if(d){const v=new Set;for(const _ of de)_.w&&v.add(_.w);N=a?Ne(v):v}const B=w.filter(v=>E.has(v.w)),T=600,A=Array.from(E),I=A.length>T?ae(A,T):A,D=C&&o!=null&&(z(o.cho)||z(o.jung)||z(o.jong)),$=2500,j=new Map;if(C&&!D&&c>=2){for(const v of A){const _=Me(v),P=j.get(_);P?P.push(v):j.set(_,[v])}for(const[v,_]of j)_.length>$&&j.set(v,ae(_,$))}const M=ir();let O=null;if(D){const v=Ui(e),_=a?Pn():null,P=Yt.get(v);O=P&&P.imageOkSet===_?P.map:Fr(o,A,M,i,l,q),Yt.set(v,{imageOkSet:_,map:O})}const k=500,W=1500,X=e.fullCount?B:t==="random"?B.length>k?ae(B,k):B:B.length>W?ae(B,W):B,U=ke(),he=[];for(const v of X){let _;const P=q(v.w);if(d)_=mr(v.w,t,c,N,24).filter(G=>q(G)!==P);else if(C)D?_=(O.get(v.w)??[]).filter(G=>q(G)!==P):c<=1?_=Hn(v.w,U,{okSet:E,pronOf:q,decompOf:M,sameStructureOnly:!1}):_=(j.get(Me(v.w))??[]).filter(G=>{if(G===v.w||q(G)===P)return!1;const Y=pr(P,q(G));return c>=5?Y>=5:Y===c});else if(h){const G=Y=>Y!==v.w&&Y.length===v.w.length&&q(Y)!==P;if(e.fullCount){const Y=Math.max(1,(e.choicesPerItem??3)-1),ee=[],ye=new Set;for(const Le of I){if(!G(Le))continue;const ve=q(Le);if(!ye.has(ve)&&(ye.add(ve),ee.push(Le),ee.length>=Y))break}_=ee}else _=I.filter(G)}else{const G=t;_=Hn(v.w,U,{kind:G,okSet:E,pronOf:q,decompOf:M,sameStructureOnly:!1}),_.length===0&&(_=(I.length>30?ae(I,30):I).filter(Y=>Y!==v.w&&lr(v.w,Y)===t&&q(Y)!==P))}if(i&&_.length>0&&(g||C&&!D)){const G=M(q(v.w));_=_.filter(Y=>!Rt(G,M(q(Y))))}_.length!==0&&he.push({word:v,usable:_})}return he}async function Xn(e,t){const{choicesPerItem:n=3,count:o=10}=t,r=n-1,a=(await ne(t)).filter(i=>i.usable.length>=r),u=[];for(const i of H(a)){if(u.length>=o)break;const l=dt(i.usable,r);if(l.length<r)continue;const c=H([i.word.w,...l]);u.push({id:Z(e+"-item"),index:u.length+1,word:i.word.w,syllables:i.word.s,choices:c,answerIndex:c.indexOf(i.word.w)})}return u}async function qi(e){const{choicesPerItem:t=3,count:n=10}=e,o=t-1,r=await ne({...e,difficulty:null});if(r.length<t)return[];const a=e.composition??null,u=[],i=H([...r]);for(const l of i){if(u.length>=n)break;const c=l.word.w,g=[...l.word.pron||c],d=a&&st(a)?g.filter(h=>{const p=V(h);return!!p&&we(p,a)}):[],C=Gt(d.length?d:g);if(!C)continue;const f=r.filter(h=>h.word.w!==c&&h.word.s===l.word.s&&!(h.word.pron||h.word.w).includes(C)&&h.word.pron!==l.word.pron);if(f.length<o)continue;const m=dt(f.map(h=>h.word.w),o);if(m.length<o)continue;const S=H([c,...m]);u.push({id:Z("HPI-item"),index:u.length+1,targetSyllable:C,word:c,choices:S,answerIndex:S.indexOf(c)})}return u}async function Ji(e){const{count:t=10}=e,n=(await ne(e)).filter(a=>a.usable.length>=1);if(!n.length)return[];const o=n.length>=t?ae(n,t):H(Array.from({length:t},(a,u)=>n[u%n.length])),r=H(Array.from({length:t},(a,u)=>u<Math.ceil(t/2)));return o.map((a,u)=>{const i=r[u];let l;if(i)l=[a.word.w,a.word.w];else{const c=Gt(a.usable);l=Math.random()<.5?[a.word.w,c]:[c,a.word.w]}return{id:Z("SOD-item"),index:u+1,word:a.word.w,pair:l,same:i}})}async function Qi(e){const{choicesPerItem:t=3,count:n=10}=e,o=t-1,r=await ne({...e,difficulty:null});if(r.length<t+1)return[];const a=r.map(C=>C.word.w),u=new Map(r.map(C=>[C.word.w,C.word.pron])),i=C=>(u.get(C)||C)[0]??"",l={};for(const C of r){const f=i(C.word.w);f&&(l[f]||(l[f]=[]),l[f].push(C.word.w))}const c=Object.entries(l).filter(([,C])=>C.length>=2).map(([C])=>C);if(c.length===0)return[];const g=[],d=H([...c]);for(let C=0;g.length<n&&C<n*4;C++){const f=d[C%d.length],m=l[f];if(m.length<2)continue;const S=H([...m]),h=S[0],p=S[1];if(!h||!p||h===p||(u.get(h)||h)===(u.get(p)||p))continue;const y=u.get(p)||p,w=a.filter(B=>i(B)!==f&&B!==h&&B!==p&&B.length===p.length&&(u.get(B)||B)!==y);if(w.length<o)continue;const E=dt(w,o);if(E.length<o)continue;const N=H([p,...E]);g.push({id:Z("SWS-item"),index:g.length+1,sourceWord:h,targetSyllable:f,word:p,choices:N,answerIndex:N.indexOf(p)})}return g}function eo(e,t,n){const o=me(),r=l=>o.get(l)||l,a=(l,c)=>{const g=[...l],d=[...c];if(g.length!==d.length)return-1;let C=-1;for(let f=0;f<g.length;f++)if(g[f]!==d[f]){if(C>=0)return-1;C=f}return C},u=e.map(l=>({e:l,swaps:l.usable.filter(c=>!!c&&a(l.word.w,c)>=0&&r(c)!==r(l.word.w))})).filter(l=>l.swaps.length>0),i=[];for(const{e:l,swaps:c}of H(u)){if(i.length>=t)break;const g=Gt(c)??"",d=[...l.word.w],C=[...g],f=a(l.word.w,g),m=dt(l.usable.filter(S=>S&&S!==g),2,new Set([r(g),r(l.word.w)]));m.length<2||i.push({id:Z(n),index:i.length+1,word:l.word.w,original:l.word.w,changed:g,changedFrom:f>=0?d[f]:"",changedTo:f>=0?C[f]:"",distractors:m})}return i}async function to(e,t,n){const{count:o=10}=t,r=me(),a=de.filter(m=>m.w&&m.s===e),u=t.excludeNoImage?Ne(a.map(m=>m.w)):null,i=u?a.filter(m=>u.has(m.w)):a,l=new Set(i.map(m=>m.w)),c=zr(l),g=t.phonemeView??"char",d=t.composition??null,C=Zn(t),f=[];for(const m of H(i)){if(f.length>=o)break;if(C&&!C(m))continue;const S=qr(m.w,d,r,g,c,null,null);if(!S)continue;const h=S.distractors[0],p=[...m.w],y=[...h],w=p.findIndex((E,N)=>E!==y[N]);f.push({id:Z(n),index:f.length+1,word:m.w,original:m.w,changed:h,changedFrom:w>=0?p[w]:"",changedTo:w>=0?y[w]:"",distractors:S.distractors.slice(1)})}return f}async function Zi(e){return to(2,e,"CS2-item")}async function Xi(e){return to(3,e,"CS3-item")}async function el(e){const t=(await ne({...e,difficulty:"count",contrastCount:1})).filter(n=>n.word.s===1&&n.usable.length>=1);return eo(t,e.count??10,"CP1-item")}async function tl(e){const t=e.difficulty&&e.difficulty!=="random"?e.difficulty:"count",n=(await ne({...e,difficulty:t,contrastCount:1})).filter(o=>o.word.s===2&&o.usable.length>=1);return eo(n,e.count??10,"CP2-item")}async function nl(e){const{count:t=10}=e,n=(await ne({...e})).filter(o=>o.word.s===2);return ae(n,t).map((o,r)=>({id:Z("M2S-item"),index:r+1,word:o.word.w,answer:o.word.w,parts:[...o.word.w]}))}async function ol(e){const{count:t=10}=e,n=(await ne({...e})).filter(o=>o.word.s===3);return ae(n,t).map((o,r)=>({id:Z("M3S-item"),index:r+1,word:o.word.w,answer:o.word.w,parts:[...o.word.w]}))}function Kt(e){const t=de.map(n=>n.w);return e.excludeNoImage?Ne(t):new Set(t)}async function rl(e){const{count:t=10}=e,n=(await ne({...e})).filter(i=>i.word.s===2),o=me(),r=Kt(e),a=e.phonemeView??"char",u=[];for(const i of H(n)){if(u.length>=t)break;const l=Vr(i.word.w,e.composition??null,o,a,r);if(!l)continue;const[c,...g]=l.distractors,d=[...i.word.w],C=d[0]===c?d[1]:d[0];u.push({id:Z("D2-item"),index:u.length+1,original:i.word.w,word:i.word.w,dropped:C,missingResult:c,distractors:g})}return u}async function al(e){const{count:t=10}=e,n=(await ne({...e})).filter(i=>i.word.s===3),o=me(),r=Kt(e),a=e.phonemeView??"char",u=[];for(const i of H(n)){if(u.length>=t)break;const l=Wr(i.word.w,e.composition??null,o,a,r);if(!l)continue;const[c,...g]=l.distractors,d=[...i.word.w];let C="";for(let f=0;f<d.length;f++)if(d.filter((m,S)=>S!==f).join("")===c){C=d[f];break}u.push({id:Z("D3-item"),index:u.length+1,original:i.word.w,word:i.word.w,dropped:C,missingResult:c,distractors:g})}return u}async function ul(e){const{count:t=10}=e,n=(await ne({...e})).filter(i=>i.word.s>=3),o=me(),r=Kt(e),a=e.phonemeView??"char",u=[];for(const i of H(n)){if(u.length>=t)break;const l=Yr(i.word.w,e.composition??null,o,a,r);if(!l)continue;const[c,...g]=l.distractors,d=i.word.w,C=l.dropped??(d.startsWith(c)?d.slice(c.length):d.endsWith(c)?d.slice(0,d.length-c.length):"");u.push({id:Z("DPC-item"),index:u.length+1,original:d,word:d,dropped:C,missingResult:c,distractors:g})}return u}async function il(e){const{count:t=10}=e,n=(await ne({...e})).map(o=>o.word.w);return n.length<3?[]:Array.from({length:t},(o,r)=>{const a=ae(n,3);return{id:Z("LRO-item"),index:r+1,sequence:a,choices:H(a)}})}function gt(e,t,n){const o=de.filter(i=>i.w&&i.s===e),r=t.excludeNoImage?Ne(o.map(i=>i.w)):null,a=Zn(t),u=[];for(const i of o)if(!(r&&!r.has(i.w))&&!(a&&!a(i))){if(n){const l=V(i.w);if(!l||!n(l))continue}u.push(i)}return u}function ll(e){const t=gt(1,e,lt.MERGE_2_PHONEMES.syllable);return ae(t,e.count??10).map((n,o)=>{const r=V(n.w);return{id:Z("M2P-item"),index:o+1,parts:[Q[r.cho],te[r.jung]],answer:n.w,word:n.w}})}function sl(e){const t=gt(1,e,lt.MERGE_3_PHONEMES.syllable);return ae(t,e.count??10).map((n,o)=>{const r=V(n.w);return{id:Z("M3P-item"),index:o+1,parts:[Q[r.cho],te[r.jung],oe[r.jong]],answer:n.w,word:n.w}})}function cl(e){const t=lt.DROP_FINAL_CONSONANT_FROM_1SYLL,n=gt(t.syllables,e,t.syllable),o=me(),r=[];for(const a of H(n)){if(r.length>=(e.count??10))break;const u=Kr(a.w,null,o);if(!u)continue;const[i,...l]=u.distractors;r.push({id:Z("DFC-item"),index:r.length+1,original:a.w,word:a.w,result:i,distractors:l})}return r}function dl(e){const t=lt.REMOVE_CONSONANT_AND_IDENTIFY_PHONEME,n=gt(t.syllables,e,t.syllable),o=me(),r=[];for(const a of H(n)){if(r.length>=(e.count??10))break;const u=Ur(a.w,null,o);if(!u)continue;const i=V(o.get(a.w)||a.w);if(!i)continue;const[l,...c]=u.distractors;r.push({id:Z("RCP-item"),index:r.length+1,base:a.w,word:a.w,missingConsonant:Q[i.cho],remaining:l,distractors:c})}return r}const ft=new Map;let no=null,oo=null;async function ro(e,t={}){const n=it(),o=ke();(n!==no||o!==oo)&&(ft.clear(),no=n,oo=o);const r=`${e}:${Wt(t)}`;if(ft.has(r))return ft.get(r);const a=await gl(e,t);return ft.set(r,a),a}const Cl={SAME_SOUND_PICK:e=>Xn("SSP",e),HEAR_AND_PICK_SAME:e=>Xn("HPS",e),HEAR_AND_PICK_INCLUDED:e=>qi(e),SAME_OR_DIFF:e=>Ji(e),STARTS_WITH_SAME_SOUND:e=>Qi(e),LISTEN_AND_REMEMBER_ORDER:e=>il(e),MERGE_2_SYLLABLES:e=>nl(e),MERGE_3_SYLLABLES:e=>ol(e),MERGE_2_PHONEMES:e=>ll(e),MERGE_3_PHONEMES:e=>sl(e),DROP_1_FROM_2SYLL:e=>rl(e),DROP_1_FROM_3SYLL:e=>al(e),DROP_PART_FROM_COMPOUND:e=>ul(e),DROP_FINAL_CONSONANT_FROM_1SYLL:e=>cl(e),REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:e=>dl(e),CHANGE_1_SYLL_IN_2SYLL:e=>Zi(e),CHANGE_1_SYLL_IN_3SYLL:e=>Xi(e),CHANGE_1_PHONEME_IN_1SYLL:e=>el(e),CHANGE_1_PHONEME_IN_2SYLL:e=>tl(e)};async function gl(e,t={}){const n=Cl[e];return n?await n(t):[]}async function fl(e){const t=["random","count"],n=Object.keys(_t);let o=0;for(const r of t)for(const a of n){const u=_t[a];ro(a,{difficulty:u.difficulty?r:null,contrastCount:1,composition:null,count:5,excludeNoImage:e,sameStructureOnly:!0,phonemeView:"char",grade:null}).catch(()=>{}),++o%6===0&&await new Promise(i=>setTimeout(i,0))}}async function ml(e){const t=await ne({...e,fullCount:!0}),n=e.choicesPerItem!=null?Math.max(1,e.choicesPerItem-1):1;return t.filter(o=>new Set(o.usable.map(r=>q(r))).size>=n).length}async function pl(e={}){const t=[];for(const i of de)i.w&&t.push(i.w);const n=e.excludeNoImage?Ne(t):t,o=new Set,r=new Set,a=new Set,u=new Set;for(const i of n){u.add(Me(i));for(const l of i){const c=V(l);if(c&&(Q[c.cho]!=="\u3147"&&o.add(Q[c.cho]),r.add(te[c.jung]),c.jong>0)){a.add(oe[c.jong]);const g=rt[c.jong];g&&g.forEach(d=>a.add(d))}}}return{cho:o,jung:r,jong:a,syllable:u}}const ue="\uC804\uCCB4";function ao(){const{t:e}=se.useTranslation();return s.useMemo(()=>({difficulty:e("wordSearch.filter.difficulty","\uB4F1\uAE09"),syllables:e("wordSearch.filter.syllables","\uC74C\uC808 \uC218"),syllable5plus:e("wordSearch.filter.syllable5plus","5\uC74C\uC808 \uC774\uC0C1"),partOfSpeech:e("wordSearch.filter.partOfSpeech","\uD488\uC0AC"),wordType:e("wordSearch.filter.wordType","\uC720\uD615"),posMap:{[e("wordSearch.filter.pos.noun","\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)")]:["\uBA85","\uC218"],[e("wordSearch.filter.pos.verb","\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)")]:["\uB3D9","\uD615"],[e("wordSearch.filter.pos.modifier","\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)")]:["\uBD80","\uAD00"]},typeMap:{[e("wordSearch.filter.type.native","\uACE0\uC720\uC5B4")]:"\uACE0\uC720",[e("wordSearch.filter.type.sino","\uD55C\uC790\uC5B4")]:"\uD55C\uC790",[e("wordSearch.filter.type.foreign","\uC678\uB798\uC5B4")]:"\uC678\uB798",[e("wordSearch.filter.type.mixed","\uD63C\uC885\uC5B4")]:"\uD63C\uC885"}}),[e])}function uo(e,t,n){return{label:t.difficulty,items:[...[1,2,3,4].map(o=>e("wordSearch.filter.grade",{n:o})),e("wordSearch.filter.gradeNone","\uC5C6\uC74C")],multiple:!0,allOption:!0,allLabel:n?.allLabel,labelAction:n?.labelAction,labelInfo:n?.labelInfo}}function io(e){return{label:e.partOfSpeech,items:Object.keys(e.posMap),multiple:!0,allOption:!0}}function lo(e){return{label:e.wordType,items:Object.keys(e.typeMap),multiple:!0,allOption:!0}}function hl(e,t){return{label:t.syllables,items:[e("wordSearch.filter.syllable",{n:1}),e("wordSearch.filter.syllable",{n:2}),e("wordSearch.filter.syllable",{n:3}),e("wordSearch.filter.syllable",{n:4}),t.syllable5plus],multiple:!0,allOption:!0}}function yl(e,t){const n=[e("wordPairs.filter.onlyHasImage","\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC")];return t?.includeStructure&&n.push(e("wordPairs.filter.onlySameStructure","\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC")),{label:e("wordPairs.filter.selectLabel","\uC120\uD0DD"),items:n,multiple:!0,labelAction:t?.labelAction,labelInfo:t?.labelInfo}}function bl(e,t){const{label:n,headValue:o,midValue:r,tailValue:a,includeMid:u=!0,headDisabled:i,midDisabled:l,tailDisabled:c,allOptionDisabled:g,groupLabel:d,labelAction:C}=t;return{label:n,...d?{groupLabel:d}:{},...C?{labelAction:C}:{},allOption:!0,allLabel:e("wordSearch.filter.positionAny",{defaultValue:"\uBB34\uAD00"}),...g?{allOptionDisabled:g}:{},items:[{value:o,displayLabel:e("wordSearch.filter.positionHead",{defaultValue:"\uC5B4\uB450"}),disabled:i},...u?[{value:r,displayLabel:e("wordSearch.filter.positionMid",{defaultValue:"\uC5B4\uC911"}),disabled:l}]:[],{value:a,displayLabel:e("wordSearch.filter.positionTail",{defaultValue:"\uC5B4\uB9D0"}),disabled:c}]}}function Sl(e,t,n){const o=Ye(n),r=o&&t!==ue?Ee(o,t):null;if(o&&(t===ue||r)){const i={},l={};for(const[f,m]of Object.entries(e))(Ye(f)===o?l:i)[f]=m;if(t===ue)return i;const c=$t(l)[o]??[],g=c.includes(r)?c.filter(f=>f!==r):[...c,r];if(g.length===0)return i;const d=Ht({[o]:g},Wi(n)),C=Object.values(d)[0]??[];return{...i,[n]:C}}if(t===ue){const{[n]:i,...l}=e;return l}const a=e[n]??[],u=a.includes(t)?a.filter(i=>i!==t):[...a,t];if(u.length===0){const{[n]:i,...l}=e;return l}return{...e,[n]:u}}Object.fromEntries(Object.entries(Nt).map(([e,{nucleus:t}])=>[e,t]));const wl={\uACE0\uC720\uC5B4:"\uACE0\uC720",\uD55C\uC790\uC5B4:"\uD55C\uC790",\uC678\uB798\uC5B4:"\uC678\uB798",\uD63C\uC885\uC5B4:"\uD63C\uC885"},El={"\uCCB4\uC5B8(\uBA85\uC0AC,\uC218\uC0AC)":["\uBA85","\uC218"],"\uC6A9\uC5B8(\uB3D9\uC0AC,\uD615\uC6A9\uC0AC)":["\uB3D9","\uD615"],"\uC218\uC2DD\uC5B8(\uBD80\uC0AC,\uAD00\uD615\uC0AC)":["\uBD80","\uAD00"]},vl={difficulty:"\uB09C\uC774\uB3C4 \uB4F1\uAE09",syllables:"\uC74C\uC808 \uC218",syllable5plus:"5\uC74C\uC808 \uC774\uC0C1",partOfSpeech:"\uD488\uC0AC",wordType:"\uC720\uD615",field:"\uC758\uBBF8\uBC94\uC8FC",posMap:El,typeMap:wl},so=new WeakMap;function Al(e,t){const n=so.get(e);if(n&&n.keys===t)return n.value;const o={grades:[],syls:[],poses:[],types:[],fields:[]},r={grade:o.grades,syllables:o.syls,pos:o.poses,wordType:o.types,field:o.fields};for(const[a,u]of Object.entries(e??{})){const i=a===t.difficulty?"grade":a===t.syllables?"syllables":a===t.partOfSpeech?"pos":a===t.wordType?"wordType":a===t.field?"field":Ye(a);if(i)for(const l of Array.isArray(u)?u:typeof u=="string"?[u]:[])r[i].includes(l)||r[i].push(l)}return so.set(e,{keys:t,value:o}),o}function Bl(e,t,n=vl){const{grades:o,syls:r,poses:a,types:u}=Al(t,n);if(o.length){const i=o.map(l=>Ee("grade",l)??l.replace(/\D/g,"")).filter(l=>l!=="");if(i.length===0||!kt(i,e.grade))return!1}if(r.length){const i=e.syllables??0;if(!r.some(l=>{const c=l===n.syllable5plus?"5+":Ee("syllables",l);return c==="5+"?i>=5:i===parseInt(c??l)}))return!1}return!(a.length&&!a.flatMap(i=>n.posMap[i]??xi[Ee("pos",i)??""]??[i]).some(i=>(e.pos??"").includes(i))||u.length&&!u.some(i=>e.wordType===(n.typeMap[i]??Fi[Ee("wordType",i)??""])))}const Dl={labial:e=>e("common.phonetics.place.labial",{defaultValue:"\uC591\uC21C\uC74C"}),alveolar:e=>e("common.phonetics.place.alveolar",{defaultValue:"\uCE58\uC870\uC74C"}),palatal:e=>e("common.phonetics.place.palatal",{defaultValue:"\uACBD\uAD6C\uAC1C\uC74C"}),velar:e=>e("common.phonetics.place.velar",{defaultValue:"\uC5F0\uAD6C\uAC1C\uC74C"}),glottal:e=>e("common.phonetics.place.glottal",{defaultValue:"\uC131\uBB38\uC74C"})},Tl={frontHigh:e=>e("common.phonetics.vowel.frontHigh",{defaultValue:"\uC804\uC124 \uACE0\uBAA8\uC74C"}),backHighUnrounded:e=>e("common.phonetics.vowel.backHighUnrounded",{defaultValue:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uD3C9\uC21C"}),backHighRounded:e=>e("common.phonetics.vowel.backHighRounded",{defaultValue:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uC6D0\uC21C"}),frontMid:e=>e("common.phonetics.vowel.frontMid",{defaultValue:"\uC804\uC124 \uC911\uBAA8\uC74C"}),backMidUnrounded:e=>e("common.phonetics.vowel.backMidUnrounded",{defaultValue:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uD3C9\uC21C"}),backMidRounded:e=>e("common.phonetics.vowel.backMidRounded",{defaultValue:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uC6D0\uC21C"}),low:e=>e("common.phonetics.vowel.low",{defaultValue:"\uC800\uBAA8\uC74C"})},Nl={j:e=>e("common.phonetics.glide.j",{defaultValue:"j\uD65C\uC74C"}),w:e=>e("common.phonetics.glide.w",{defaultValue:"w\uD65C\uC74C"}),velar:e=>e("common.phonetics.glide.velar",{defaultValue:"\u0270\uD65C\uC74C"})};function co(e,t){if("place"in t)return Dl[t.place](e);const n=Tl[t.vowel](e);return t.glide?`${n} \xB7 ${Nl[t.glide](e)}`:n}const _l=(e,{defaultValue:t})=>t,Co=(e,t)=>({jamos:e,phonetic:t,tooltip:co(_l,t)}),Ce=(e,t)=>t.map(n=>Co([n],{place:e})),J=(e,t,n)=>Co([...e],n?{vowel:t,glide:n}:{vowel:t}),Ut={cho:[Ce("labial",["\u3142","\u3143","\u314D","\u3141"]),Ce("alveolar",["\u3137","\u3138","\u314C","\u3134","\u3139"]),Ce("alveolar",["\u3145","\u3146"]),Ce("palatal",["\u3148","\u3149","\u314A"]),Ce("velar",["\u3131","\u3132","\u314B"]),Ce("glottal",["\u314E"])],jung:[[J("\u3163","frontHigh"),J("\u315F","frontHigh","w"),J("\u3162","frontHigh","velar")],[J("\u3161","backHighUnrounded")],[J("\u315C","backHighRounded"),J("\u3160","backHighRounded","j")],[J("\u3154\u3150","frontMid"),J("\u3156\u3152","frontMid","j"),J("\u3159\u315A\u315E","frontMid","w")],[J("\u3153","backMidUnrounded"),J("\u3155","backMidUnrounded","j"),J("\u315D","backMidUnrounded","w")],[J("\u3157","backMidRounded"),J("\u315B","backMidRounded","j")],[J("\u314F","low"),J("\u3151","low","j"),J("\u3158","low","w")]],jong:[Ce("labial",["\u3142","\u3141"]),Ce("alveolar",["\u3137","\u3134","\u3139"]),Ce("velar",["\u3131","\u3147"])]},Ll=[...Q],Ol=[...te],Rl=oe.filter(e=>e!==""),ge=e=>e===ie?[]:Array.from(e),ie="__NO_CODA__",go=[1,2,3,4],le=5,Pl=12,fo="SYL_",zt=e=>`${fo}${e}`,Ml=e=>Number(e.slice(fo.length));function qt(e){return e>=le?Array.from({length:Pl-le+1},(t,n)=>le+n):[e]}const mo={cho:Ll,jung:Ol,jong:Rl},Jt=e=>e.map(t=>t.map(({jamos:n,phonetic:o,tooltip:r})=>({v:n.join(""),phonetic:o,tooltip:r}))),Qt={cho:Jt(Ut.cho),jung:Jt(Ut.jung),jong:Jt(Ut.jong)},po={};Qt.jung.flat().forEach(({v:e})=>{for(const t of ge(e))po[t]=e});const Il=new Set(Qt.cho.flat().map(e=>e.v));function ho(e,t){return e==="cho"?Il.has(t)?t:null:e==="jung"?po[t]??t:Pe(t)}function yo(e,t,n){if(e==="jung"){const o=ge(t);return n&&o.includes(n)?n:o[0]??t}return e==="jong"&&n&&Pe(n)===t?n:t}function bo(e,t,n,o){const r=(a,u)=>u?a==="jong"&&u===ie?ie:t==="pron"?ho(a,u):yo(a,u,a==="jung"?n:a==="jong"?o:null):null;return{...e,cho:r("cho",e.cho),jung:r("jung",e.jung),jong:r("jong",e.jong)}}const Zt={cho:null,jung:null,jong:null,syllable:null},Xt=e=>Array.isArray(e)?e.filter(Ri):[],kl="wt_filter",So=e=>`wt_filter_${e}`,en=["noun","verb","modifier"],tn=["native","sino","foreign","mixed"];function wo(e,t,n,o,r){if(!Array.isArray(e))return[];const a=[];for(const u of e){if(typeof u!="string")continue;const i=t.includes(u)?u:t.find(l=>r.some(c=>o(c,n(l))===u));i&&!a.includes(i)&&a.push(i)}return a}function Eo(e){try{const t=localStorage.getItem(So(e))??localStorage.getItem(kl);if(t)return JSON.parse(t)}catch{}return null}function vo(e){const t=e?.phonemeView;return t==="pron"?"pron":t==="direct"?"direct":"char"}function xl(e){const t=e;return t?.composition?{cho:t.composition.cho??null,jung:t.composition.jung??null,jong:t.composition.jong??null,syllable:t.composition.syllable??null}:t?.choseong?{...Zt,cho:t.choseong}:Zt}const Ao=["1\uB4F1\uAE09 : \uD559\uB839\uC804\uAE30\uC5D0 \uC2B5\uB4DD\uD558\uC5EC \uD3C9\uC0DD\uC5D0 \uAC78\uCCD0 \uC77C\uC0C1 \uC5B8\uC5B4\uC0DD\uD65C\uC744 \uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uB294 \uC5B4\uD718","2\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 1-2\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","3\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 3-4\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","4\uB4F1\uAE09 : \uCD08\uB4F1\uD559\uAD50 5-6\uD559\uB144 \uB09C\uC774\uB3C4 \uC5B4\uD718","\uB4F1\uAE09\uC5C6\uC74C : \uAD6D\uB9BD\uAD6D\uC5B4\uC6D0 \uD45C\uC900 \uC5B4\uD718 \uC678 \uACE0\uBE48\uB3C4 \uC0DD\uD65C \uC5B4\uD718, \uC2E0\uC870\uC5B4 \uBC0F \uC678\uB798\uC5B4"];function Bo(e){const t=e("wordPairs.filter.difficultyInfo",{returnObjects:!0,defaultValue:Ao});return Array.isArray(t)&&t.length>0&&t.every(n=>typeof n=="string")?t:Ao}function Fl(e,t,n){const{t:o,i18n:r}=se.useTranslation(),[a]=s.useState(()=>n?.resetOnMount?null:Eo(e)),[u,i]=s.useState(vo(a)),[l,c]=s.useState(()=>xl(a)),g=s.useCallback(()=>t.requireSyllable?{cho:"\u3131",jung:"\u314F",jong:ie,syllable:t.fixedSyllable??null}:{cho:null,jung:null,jong:t.fixedNoCoda?ie:null,syllable:t.fixedSyllable??null},[t.requireSyllable,t.fixedSyllable,t.fixedNoCoda]);s.useEffect(()=>{!t.requireSyllable&&t.fixedSyllable==null&&!t.fixedNoCoda||c(b=>b.cho||b.jung||b.syllable!=null||b.jong?b:g())},[]);const d=s.useMemo(()=>z(l.cho)||z(l.jung)||z(l.jong)?"count":"random",[l.cho,l.jung,l.jong]),C=s.useRef(u==="char"?l.jung:null),f=s.useRef(u==="char"?l.jong:null);s.useEffect(()=>{u==="char"&&(C.current=l.jung,f.current=l.jong)},[u,l.jung,l.jong]);const[m,S]=s.useState(n?.resetOnMount?!!n?.defaultImageOnly:a?.excludeNoImage??!0),[h,p]=s.useState(n?.resetOnMount?!1:a?.sameStructureOnly??!0),[y,w]=s.useState(Xt(a?.gradeFilter)),E=Array.from(new Set([r.language,"ko","en"].filter(Boolean))),N=(b,L)=>r.getFixedT(b)(L),B=b=>wo(b,en,L=>`wordSearch.filter.pos.${L}`,N,E),T=b=>wo(b,tn,L=>`wordSearch.filter.type.${L}`,N,E),[A,I]=s.useState(()=>B(a?.posFilter)),[D,$]=s.useState(()=>T(a?.wordTypeFilter)),j=s.useRef(n?.resetKey);s.useEffect(()=>{j.current!==n?.resetKey&&(j.current=n?.resetKey,c(g()),S(!!n?.defaultImageOnly),p(!1),w([]),I([]),$([]))},[n?.resetKey]);const M=ao(),O=s.useMemo(()=>Object.keys(M.posMap),[M]),k=s.useMemo(()=>Object.keys(M.typeMap),[M]),W=s.useMemo(()=>A.map(b=>O[en.indexOf(b)]).filter(Boolean),[A,O]),X=s.useMemo(()=>D.map(b=>k[tn.indexOf(b)]).filter(Boolean),[D,k]),[U,he]=s.useState({cho:new Set,jung:new Set,jong:new Set,syllable:new Set}),[v,_]=s.useState(!1),[P,G]=s.useState(null),Y=1,ee=Math.max(1,[l.cho,l.jung,l.jong].filter(Boolean).length),[ye,Le]=s.useState(e);s.useEffect(()=>{if(ye!==e){if(!n?.resetOnMount){const b=Eo(e);c(b?.composition??g()),S(b?.excludeNoImage??!0),p(b?.sameStructureOnly??!0),i(vo(b)),w(Xt(b?.gradeFilter)),I(B(b?.posFilter)),$(T(b?.wordTypeFilter))}Le(e)}},[e,ye,n?.resetOnMount]),s.useEffect(()=>{if(!n?.resetOnMount&&ye===e)try{localStorage.setItem(So(e),JSON.stringify({contrastCount:ee,composition:l,excludeNoImage:m,sameStructureOnly:h,phonemeView:u,gradeFilter:y,posFilter:A,wordTypeFilter:D}))}catch{}},[n?.resetOnMount,e,ye,ee,l,m,h,u,y,A,D]);const[ve,dn]=s.useState(0);wn("wordpool:update",()=>dn(b=>b+1));const Cn=s.useRef(r.language);s.useEffect(()=>{Cn.current!==r.language&&(Cn.current=r.language,dn(b=>b+1))},[r.language]),s.useEffect(()=>{if(!t.choseong)return;let b=!1;return pl({difficulty:d,excludeNoImage:m}).then(L=>{b||(he(L),L.cho.size+L.jung.size+L.jong.size>0&&_(!0))}).catch(()=>{b||he({cho:new Set,jung:new Set,jong:new Set,syllable:new Set})}),()=>{b=!0}},[t.choseong,d,m,ve]),s.useEffect(()=>{let b=!1;const L=l,R=L.cho?ge(L.cho):null,x=L.jung?ge(L.jung):null,K=L.jong===ie,Ae=K?null:L.jong?ge(L.jong):null,Be=L.syllable!=null?qt(L.syllable):null,nt=!!(R||x||Ae||K||Be);return ml({difficulty:t.difficulty?d:null,contrastCount:t.difficulty?ee:1,composition:t.choseong&&nt?{cho:R,jung:x,jong:Ae,jongNone:K,syllable:Be}:null,excludeNoImage:m,sameStructureOnly:h,phonemeView:u==="pron"?"pron":"char",grade:y.length>0?y:null}).then(ot=>{b||G(ot)}).catch(()=>{b||G(null)}),()=>{b=!0}},[t.choseong,t.difficulty,d,ee,l,u,m,h,ve,y]),s.useEffect(()=>{v&&c(b=>{const L={...b};let R=!1;return["cho","jung","jong"].forEach(x=>{const K=b[x];!K||K===ie||ge(K).some(Ae=>U[x].has(Ae))||(L[x]=null,R=!0)}),b.syllable!=null&&t.fixedSyllable==null&&(b.syllable>=le?[...U.syllable].some(x=>x>=le)||(L.syllable=null,R=!0):(!U.syllable.has(b.syllable)||b.syllable<Y)&&(L.syllable=null,R=!0)),R?L:b})},[U,v,Y,t.fixedSyllable]);const gn=s.useMemo(()=>{const b=L=>{const R=new Set;for(const x of mo[L])U[L].has(x)&&R.add(x);return R};return{cho:b("cho"),jung:b("jung"),jong:b("jong")}},[U]),Et=s.useMemo(()=>({exact:new Set(go.filter(b=>U.syllable.has(b))),min:[...U.syllable].some(b=>b>=le)}),[U]),F=s.useMemo(()=>({composition:o("wordPairs.composition","\uC815\uB2F5 \uB2E8\uC5B4 \uAD6C\uC131"),syllableCount:o("wordPairs.syllableCount","\uC74C\uC808 \uC218"),onset:o("wordPairs.onset","\uCD08\uC131"),vowel:o("wordPairs.vowel","\uBAA8\uC74C"),coda:o("wordPairs.coda","\uC885\uC131"),phonemeGroup:o("training.filter.phonemeGroup",{defaultValue:"\uD6C8\uB828 \uC74C\uC808"}),trainOnset:o("training.filter.trainOnset",{defaultValue:"\uCD08\uC131"}),trainVowel:o("training.filter.trainVowel",{defaultValue:"\uBAA8\uC74C"}),trainCoda:o("training.filter.trainCoda",{defaultValue:"\uC885\uC131"}),random:o("training.filter.random","\uBB34\uC791\uC704"),exclude:o("wordSearch.filter.exclude","\uC81C\uC678"),selectLabel:o("training.filter.selectSection",{defaultValue:"\uC120\uD0DD"}),none:o("common.none","\uC5C6\uC74C"),noImage:o("wordSearch.filter.excludeNoImage","\uC774\uBBF8\uC9C0 \uC5C6\uC74C"),excludeImage:o("training.filter.excludeImage",{defaultValue:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC"}),sameStructure:o("training.filter.sameStructure",{defaultValue:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC"}),noLimit:o("training.filter.noLimit",{defaultValue:"\uBB34\uAD00"}),codaExclude:o("training.filter.codaExclude",{defaultValue:"\uC81C\uC678"}),gradeLabel:o("training.filter.gradeLabel",{defaultValue:"\uB09C\uC774\uB3C4 \uB4F1\uAE09"})}),[o]),fn=s.useMemo(()=>({[F.trainOnset]:"cho",[F.trainVowel]:"jung",[F.trainCoda]:"jong"}),[F]),tt=s.useCallback((b,L)=>({title:L,items:b}),[]),vt=s.useMemo(()=>[o("training.filter.excludeImageInfo",{defaultValue:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC: \uB2E8\uC5B4 \uC911\uC5D0 \uC774\uBBF8\uC9C0\uAC00 \uC788\uB294 \uB2E8\uC5B4\uB9CC \uACB0\uACFC\uC5D0 \uBCF4\uC5EC\uC90D\uB2C8\uB2E4."}),o("training.filter.sameStructureInfo",{defaultValue:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC: \uC815\uB2F5\uACFC \uC624\uB2F5\uC758 \uC74C\uC808 \uAD6C\uC870(\uAE00\uC790 \uC218\xB7\uBC1B\uCE68 \uC720\uBB34 \uB4F1)\uAC00 \uAC19\uC740 \uACB0\uACFC\uB9CC \uB0A8\uACA8\uC694."})],[o]),Mo=s.useMemo(()=>{const b=[];if(t.choseong){const L={value:ie,displayLabel:F.codaExclude},R=t.fixedNoCoda===!0,x=(K,Ae)=>{const Be=R&&K==="jong",nt={label:Ae,groupLabel:F.phonemeGroup,allOption:!t.requireSyllable,allLabel:F.noLimit,allOptionDisabled:Be};if(u==="pron"){const De=Qt[K].map(Ho=>Ho.map(({v:At,phonetic:Go})=>{const Bt=ge(At),mn=co(o,Go),pn=Be||!Bt.some(Vo=>U[K].has(Vo));return Bt.length>1?{value:At,labels:Bt,tooltip:mn,disabled:pn}:{value:At,tooltip:mn,disabled:pn}}));return K==="jong"&&!t.requireCoda&&De.unshift([L]),{...nt,groups:De}}const ot=mo[K].map(De=>!Be&&gn[K].has(De)?De:{value:De,disabled:!0});return{...nt,items:K==="jong"&&!t.requireCoda?[L,...ot]:ot}};b.push(x("cho",F.trainOnset)),b.push(x("jung",F.trainVowel)),b.push(x("jong",F.trainCoda))}if(b.push({...uo(o,M,{labelInfo:tt(Bo(o))}),label:F.gradeLabel}),t.partOfSpeech&&b.push(io(M)),t.wordType&&b.push(lo(M)),t.choseong||t.fixedSyllable!=null){const L=t.fixedSyllable;b.push({label:F.syllableCount,items:[...go.map(R=>({value:zt(R),displayLabel:o("wordPairs.syllableN",{n:R,defaultValue:"{{n}}\uC74C\uC808"}),disabled:L!=null?R!==L:!Et.exact.has(R)||R<Y})),{value:zt(le),displayLabel:o("wordPairs.syllableNPlus",{n:le,defaultValue:"{{n}}\uC74C\uC808 \uC774\uC0C1"}),disabled:L!=null?le!==L:!Et.min}],allOption:!0,allOptionDisabled:L!=null})}return t.choseong?b.push({label:F.exclude,displayLabel:F.selectLabel,multiple:!0,items:[F.excludeImage,F.sameStructure],labelInfo:tt(vt)}):b.push({label:F.exclude,displayLabel:F.selectLabel,multiple:!0,items:[F.excludeImage],labelInfo:tt([vt[0]])}),b},[t.choseong,t.partOfSpeech,t.wordType,t.requireSyllable,t.fixedSyllable,t.fixedNoCoda,t.requireCoda,Y,gn,U,u,Et,F,o,tt,vt,M]),Io={...(t.choseong||t.fixedSyllable!=null)&&l.syllable!=null?{[F.syllableCount]:zt(l.syllable)}:{},...t.choseong&&l.cho?{[F.trainOnset]:l.cho}:{},...t.choseong&&l.jung?{[F.trainVowel]:l.jung}:{},...t.choseong&&l.jong?{[F.trainCoda]:l.jong}:{},[F.exclude]:[...m?[F.excludeImage]:[],...h?[F.sameStructure]:[]],[F.gradeLabel]:y.map(b=>Hi("grade",b)),...t.partOfSpeech?{[M.partOfSpeech]:W}:{},...t.wordType?{[M.wordType]:X}:{}},ko=s.useCallback((b,L)=>{if(L===F.exclude)b===F.excludeImage?S(R=>!R):b===F.sameStructure&&p(R=>!R);else if(L===F.syllableCount)c(R=>{if(!b||b===ue)return{...R,syllable:null};const x=Ml(b);return{...R,syllable:R.syllable===x?null:x}});else if(L===F.gradeLabel){if(!b||b===ue){w([]);return}const R=Ee("grade",b);if(R==null)return;w(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else if(L===M.partOfSpeech){if(!b||b===ue){I([]);return}const R=en[O.indexOf(b)]??B([b])[0];if(!R)return;I(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else if(L===M.wordType){if(!b||b===ue){$([]);return}const R=tn[k.indexOf(b)]??T([b])[0];if(!R)return;$(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else{const R=fn[L];if(!R)return;c(x=>t.requireSyllable?b&&b!==ue?{...x,[R]:b}:x:!b||b===ue||x[R]===b?{...x,[R]:null}:{...x,[R]:b})}},[F,fn,M,O,k,t.requireSyllable]),xo=s.useCallback(b=>!t.partOfSpeech&&!t.wordType?!0:Bl(b,{...t.partOfSpeech?{[M.partOfSpeech]:W}:{},...t.wordType?{[M.wordType]:X}:{}},M),[t.partOfSpeech,t.wordType,W,X,M]),Fo=s.useCallback(b=>{b!==u&&(b!=="direct"&&u!=="direct"&&c(L=>bo(L,b,C.current,f.current)),i(b))},[u]),jo=s.useCallback(()=>({composition:l,contrastCount:ee,excludeNoImage:m,sameStructureOnly:h,phonemeView:u,gradeFilter:y,posFilter:A,wordTypeFilter:D}),[l,ee,m,h,u,y,A,D]),$o=s.useCallback(b=>{c(b.composition),S(b.excludeNoImage),p(b.sameStructureOnly??!0),i(b.phonemeView),w(Xt(b.gradeFilter)),Array.isArray(b.posFilter)&&I(B(b.posFilter)),Array.isArray(b.wordTypeFilter)&&$(T(b.wordTypeFilter))},[]);return{difficulty:d,contrastCount:ee,composition:l,choseong:l.cho,excludeNoImage:m,sameStructureOnly:h,gradeFilter:y,posFilter:W,wordTypeFilter:X,matchesWordAttributes:xo,poolVersion:ve,filterSections:Mo,filterSelected:Io,handleFilterSelect:ko,phonemeView:u,setPhonemeView:Fo,phonemeGroupLabel:F.phonemeGroup,wordCount:P,getFilterSnapshot:jo,restoreFilterSnapshot:$o}}function jl(e){const t=i=>i?ge(i):null,n=t(e.cho),o=t(e.jung),r=e.jong===ie,a=r?null:t(e.jong),u=e.syllable!=null?qt(e.syllable):null;return!n&&!o&&!a&&!r&&!u?null:{cho:n,jung:o,jong:a,jongNone:r,syllable:u}}function $l(e,t,n,o,r,a,u=!0,i="char",l=[]){const[c,g]=s.useState({}),[d,C]=s.useState(!1),{cho:f=null,jung:m=null,jong:S=null,syllable:h=null}=o??{},p=l.length>0?l.slice().sort().join(","):"",y=e.map(E=>E.key).join("|");s.useEffect(()=>{a>0&&fl(r).catch(()=>{})},[a,r]),s.useEffect(()=>{let E=!1;return C(!0),(async()=>{const N=jl({cho:f,jung:m,jong:S,syllable:h}),B=`${f??""}_${m??""}_${S??""}_${h??""}_${p}`,T={};await Promise.all(e.map(async A=>{const I=_t[A.key];try{const D=await ro(A.key,{difficulty:I.difficulty?t:null,contrastCount:I.difficulty?n:1,composition:I.choseong?N:null,count:5,excludeNoImage:r,sameStructureOnly:u,phonemeView:i,grade:l.length>0?l:null});D&&D.length>0?T[A.key]={id:`wt-${A.key}-${t}-${B}-${Date.now()}`,name:A.label,training_type:A.key,category_main_code:"WORD",iconColor:A.color,subTitle:A.subTitle,items:D,itemCount:D.length}:T[A.key]={id:`wt-${A.key}-empty`,name:A.label,training_type:A.key,category_main_code:"WORD",iconColor:A.color,subTitle:A.subTitle,items:[],itemCount:0,__empty:!0}}catch{T[A.key]=null}})),E||(g(T),C(!1))})(),()=>{E=!0}},[t,n,f,m,S,h,r,u,i,a,p,y]);const w=JSON.stringify(e.map(E=>[E.key,E.label,E.color,E.subTitle]));return{perTypeData:s.useMemo(()=>{const E={};for(const[N,B]of Object.entries(c)){const T=e.find(A=>A.key===N);E[N]=B&&T?{...B,name:T.label,iconColor:T.color,subTitle:T.subTitle}:B}return E},[c,w]),generating:d}}const Ue=[],ze=[],qe=[],Je=[],mt={LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]},pt={LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]},Hl={LISTEN_IN_NOISE:3,SHORT_STORY:2,LONG_STORY:1,ORDERING_SENTENCE:2};let nn=null,Do=null,pe=null;function Gl({counts:e,forceRefresh:t}={}){const n=Object.assign({},Hl,e||{}),o=Oe(),r=Re(new Date(`${o}T00:00:00+09:00`).getTime()-864e5),a=JSON.stringify(n);if(!t&&Do===o&&nn===a&&pe)return Object.assign(mt,pe.today),Object.assign(pt,pe.yesterday?.selection||{LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]}),{today:mt,yesterday:pt};const u={LISTEN_IN_NOISE:ce(Ue,Math.max(0,Number(n.LISTEN_IN_NOISE)||0)),SHORT_STORY:ce(ze,Math.max(0,Number(n.SHORT_STORY)||0)),LONG_STORY:ce(qe,Math.max(0,Number(n.LONG_STORY)||0)),ORDERING_SENTENCE:ce(Je,Math.max(0,Number(n.ORDERING_SENTENCE)||0))};let i=null;return pe&&nn===a&&pe.yesterday&&pe.yesterday.date===r&&(i=pe.yesterday.selection),i||(i={LISTEN_IN_NOISE:ce(Ue,Math.max(0,Number(n.LISTEN_IN_NOISE)||0)),SHORT_STORY:ce(ze,Math.max(0,Number(n.SHORT_STORY)||0)),LONG_STORY:ce(qe,Math.max(0,Number(n.LONG_STORY)||0)),ORDERING_SENTENCE:ce(Je,Math.max(0,Number(n.ORDERING_SENTENCE)||0))}),Object.assign(mt,u),Object.assign(pt,i),Do=o,nn=a,pe={today:u,yesterday:{date:r,countsKey:a,selection:i}},{today:mt,yesterday:pt}}let on=!1,Qe=null;async function Vl(){try{const e={url:typeof document>"u"?require("url").pathToFileURL(__filename).href:Dt&&Dt.tagName.toUpperCase()==="SCRIPT"&&Dt.src||new URL("hooks.cjs.js",document.baseURI).href}&&void 0||"/",t=await fetch(`${e}data/allTrainingData.json`);return t.ok?await t.json():null}catch{return null}}async function Wl(){if(!on)return Qe||(Qe=(async()=>{const e=await Vl();if(!e){Qe=null;try{window.dispatchEvent(new Event("speechear.data.error"))}catch{}return}const t={noise:[],short:[],long:[],order:[]};try{for(const n of Object.keys(e||{})){const o=e[n]||[];for(const r of o){if(!r||typeof r!="object")continue;const a=r,u=String(a.training_type||n),i=String(a.category_main_code||a.category_main||a.category_0||""),l=String(a.category_sub_code||a.category_sub||a.category_1||""),c=Object.assign({},a,{training_type:u,category_0:i,category_1:l});u==="LISTEN_IN_NOISE"?t.noise.push(c):u==="SHORT_STORY"?t.short.push(c):u==="LONG_STORY"?t.long.push(c):u==="ORDERING_SENTENCE"&&t.order.push(c)}}}catch{Qe=null;try{window.dispatchEvent(new Event("speechear.data.error"))}catch{}return}Ue.push(...t.noise),ze.push(...t.short),qe.push(...t.long),Je.push(...t.order),on=!0;try{Gl()}catch{}try{window.dispatchEvent(new Event("speechear.data.updated"))}catch{}})(),Qe)}async function Yl(e=3e3){const t=Wl();let n;try{await Promise.race([t,new Promise(o=>{n=setTimeout(o,e)})])}finally{n!==void 0&&clearTimeout(n)}return on}function To(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function Kl(e){let t=e>>>0;return()=>{t|=0,t=t+1831565813|0;let n=Math.imul(t^t>>>15,1|t);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}}const Ul=ce,zl=e=>{const[t,n,o]=e.split("-").map(Number);return Math.round(Date.UTC(t,(n||1)-1,o||1)/864e5)},ql=(e,t)=>{const n=e??{};return String(n.id??n.name??t)};function ht(e,t,n,o,r){if(!e.length||t<=0)return[];const a=Kl(To(`${n}|${o}|${r}`)),u=zl(o)&1,i=e.filter((c,g)=>(To(`${n}|${r}|${ql(c,g)}`)>>>7&1)===u),l=i.length>=t&&e.length-i.length>=t;return Ul(l?i:e,t,a)}function rn(e,t,n){const o=r=>Math.max(0,e[r]||0);return{LISTEN_IN_NOISE:ht(Ue,o("LISTEN_IN_NOISE"),t,n,"LISTEN_IN_NOISE"),SHORT_STORY:ht(ze,o("SHORT_STORY"),t,n,"SHORT_STORY"),LONG_STORY:ht(qe,o("LONG_STORY"),t,n,"LONG_STORY"),ORDERING_SENTENCE:ht(Je,o("ORDERING_SENTENCE"),t,n,"ORDERING_SENTENCE")}}function an(e){return e?!!(e.LISTEN_IN_NOISE?.length||e.SHORT_STORY?.length||e.LONG_STORY?.length||e.ORDERING_SENTENCE?.length):!1}const Jl={LISTEN_IN_NOISE:3,SHORT_STORY:2,LONG_STORY:1,ORDERING_SENTENCE:2};function un(e=!1,t=Jl,n){const o=Re(Date.now()),r=Re(Date.now()-864e5),a=n??"";return Ue.length>0||ze.length>0||qe.length>0||Je.length>0?{today:rn(t,a,o),yesterday:rn(t,a,r)}:{today:rn(t,a,o),yesterday:null}}function Ql(e){const t=s.useRef({LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]}),n=s.useRef(null),[o,r]=s.useState(!1),[a,u]=s.useState(!1),[i,l]=s.useState(0),[c,g]=s.useState(!1),[d,C]=s.useState(()=>Oe());s.useEffect(()=>{const m=()=>{const h=Date.now(),p=new Date(h+9*36e5),y=Date.UTC(p.getUTCFullYear(),p.getUTCMonth(),p.getUTCDate()+1)-9*36e5;return Math.max(1e3,y-h+1e3)};let S=setTimeout(function h(){C(Oe()),S=setTimeout(h,m())},m());return()=>clearTimeout(S)},[]),s.useEffect(()=>{let m=!1,S=!1,h=!1,p,y=0,w=null,E=0;const N=40,B=()=>{p!==void 0&&(clearInterval(p),p=void 0)};let T=!1;try{const j=new URLSearchParams(window.location.search),M=j.get("forceRefresh")||j.get("force");T=M==="1"||M==="true"}catch{}const A=j=>{S||(h=!0,t.current=j.today,n.current=j.yesterday,r(!0),g(!0),l(M=>M+1),m=!0,B())},I=async()=>{if(m)return;if(!T){const M=un(!1,void 0,e);if(an(M.today)){A(M);return}}if(w){++y>=N&&D();return}if(y>=E){E=y+8,w=Yl(3e3).catch(()=>!1);try{await w}finally{w=null}if(m)return}const j=un(T,void 0,e);if(an(j.today)){A(j);return}++y>=N&&D()};function D(){r(!0),g(!1),m=!0,B()}const $=()=>{if(S||h)return;const j=un(T,void 0,e);an(j.today)&&A(j)};try{window.addEventListener("speechear.data.updated",$)}catch{}return I(),p=setInterval(I,250),()=>{m=!0,S=!0,B();try{window.removeEventListener("speechear.data.updated",$)}catch{}}},[e,d]);const f=s.useCallback(m=>{const S=a?n.current:t.current,h=a?t.current:n.current;return S?.[m]?.length?S[m]:h?.[m]?.length?h[m]:void 0},[a,i]);return{loaded:o,hasData:c,showYesterday:a,setShowYesterday:u,getTrainingPerType:f}}const _e=[];let yt=!1;function No(e){if(e.key!=="Escape"||e.defaultPrevented||e.isComposing||e.keyCode===229)return;const t=_e[_e.length-1];t&&(e.stopPropagation(),t())}function _o(e){return _e.push(e),!yt&&typeof document<"u"&&(document.addEventListener("keydown",No),yt=!0),()=>{const t=_e.lastIndexOf(e);t>=0&&_e.splice(t,1),_e.length===0&&yt&&typeof document<"u"&&(document.removeEventListener("keydown",No),yt=!1)}}function Zl(e,t=!0){const n=Sn(e);s.useEffect(()=>{if(t)return _o(()=>{n.current?.()})},[t,n])}const ln=(e,t)=>`${e}:${t??1}`,bt=new Map,Lo=new Set,Oo=new Map,Xl=6e4;function es(e,t){const[n,o]=s.useState(0),r=Array.from(new Set(e.map(a=>ln(a.word,a.homonum)))).sort().join("|");return s.useEffect(()=>{const a=r?r.split("|"):[],u=Date.now(),i=a.filter(g=>!bt.has(g)&&!Lo.has(g)&&!(u-(Oo.get(g)??-1/0)<Xl));if(i.length===0)return;let l=!1;const c=Array.from(new Set(i.map(g=>g.slice(0,g.lastIndexOf(":")))));return t(c).then(g=>{for(const d of g)d.Meaning&&bt.set(ln(d.Word,d.Homonum??void 0),d.Meaning);if(g.length>0)for(const d of i)bt.has(d)||Lo.add(d);else{const d=Date.now();for(const C of i)Oo.set(C,d)}l||g.length===0||o(d=>d+1)}).catch(()=>{}),()=>{l=!0}},[r,t]),s.useMemo(()=>{const a=r?r.split("|"):[],u=new Map;for(const i of a){const l=bt.get(i);l!=null&&u.set(i,l)}return u},[r,n])}function ts(){const[e,t]=s.useState(null),n=s.useCallback(a=>t(a.getBoundingClientRect()),[]),o=s.useCallback(()=>t(null),[]),r=s.useCallback(a=>{const u=a.getBoundingClientRect();t(i=>i?null:u)},[]);return{anchorRect:e,isOpen:e!=null,openAt:n,close:o,toggleAt:r}}function ns(e){const[t,n]=s.useState(null),[o,r]=s.useState(null),a=s.useRef(null);s.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]);const u=s.useCallback((l,c)=>{a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{n(l),r(c)},e)},[e]),i=s.useCallback(()=>{a.current&&clearTimeout(a.current),n(null),r(null)},[]);return{payload:t,anchorRect:o,openAfterDelay:u,close:i}}function os(e,t,n){const o=Number.isFinite(t)&&t>=1?Math.floor(t):1,r=Math.max(1,Math.ceil(e.length/o)),a=Number.isFinite(n)?Math.min(Math.max(1,Math.floor(n)),r):1;return{pageItems:s.useMemo(()=>e.slice((a-1)*o,a*o),[e,a,o]),totalPages:r,curPage:a}}function Ro(e,t){const[n,o]=s.useState(e);n!==e&&(o(e),t(1))}function rs(e={}){const{defaultPageSize:t="25",resetOn:n}=e,[o,r]=s.useState(""),[a,u]=s.useState(t),[i,l]=s.useState(1),c=Number(t)||25,g=Number(a)||c;return Ro([o,a,...n??[]].map(String).join("|"),l),{query:o,setQuery:r,pageSize:a,setPageSize:u,perPage:g,page:i,setPage:l}}function as(e="warning"){const[t,n]=s.useState(""),[o,r]=s.useState(e),[a,u]=s.useState(0),i=s.useCallback((d,C)=>{r(C),n(d),u(f=>f+1)},[]),l=s.useCallback(d=>i(d,"warning"),[i]),c=s.useCallback(d=>i(d,"normal"),[i]),g=s.useCallback(()=>n(""),[]);return{toastMessage:t,toastType:o,toastKey:a,showToast:i,showWarning:l,showNormal:c,clearToast:g}}const us=[{key:"LISTEN_IN_NOISE",label:"\uC18C\uC74C \uD558 \uBB38\uC7A5 \uB4E3\uAE30",icon:"audio-lines",desc:"\uB2E4\uC591\uD55C \uC18C\uC74C \uD658\uACBD\uC5D0\uC11C \uBB38\uC7A5 \uCCAD\uB825\uC744 \uD6C8\uB828\uD569\uB2C8\uB2E4."},{key:"SHORT_STORY",label:"\uC9E7\uC740 \uC774\uC57C\uAE30 \uB4E3\uAE30",icon:"message-square",desc:"\uC9E7\uC740 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uBB38\uC81C\uB97C \uD480\uC5B4\uBD05\uB2C8\uB2E4."},{key:"LONG_STORY",label:"\uAE34 \uC774\uC57C\uAE30 \uB4E3\uAE30",icon:"message-square-text",desc:"\uAE34 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uB2E4\uC218\uC758 \uBB38\uC81C\uB97C \uD480\uC5B4\uBD05\uB2C8\uB2E4."},{key:"ORDERING_SENTENCE",label:"\uBB38\uC7A5 \uC21C\uC11C\uD654 \uD558\uAE30",icon:"align-start-vertical",desc:"\uC5EC\uB7EC\uAC1C\uC758 \uC9E7\uC740 \uBB38\uC7A5\uC744 \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uADF8 \uC21C\uC11C\uC5D0 \uB9DE\uAC8C \uBC30\uC5F4\uD569\uB2C8\uB2E4."}],is={LISTEN_IN_NOISE:"listenInNoise",SHORT_STORY:"shortStory",LONG_STORY:"longStory",ORDERING_SENTENCE:"orderingSentence"};function ls(e){return us.map(t=>{const n=is[t.key];return n?{...t,label:e(`trainingType.${n}.title`),desc:e(`trainingType.${n}.desc`)}:t})}const Ze={blue:"#60A5FA",green:"#4ADE80",amber:"#FBBF24",purple:"#A78BFA",pink:"#F472B6"},Xe=Ze.blue,St=Ze.green,et=Ze.amber,wt=Ze.purple,ss=Ze.pink,cs=[{key:"discrimination",label:"\uBCC0\uBCC4\uD6C8\uB828",disc:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0, \uB610\uB294 \uD2B9\uC815 \uC18C\uB9AC\uB97C \uAD6C\uBCC4\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"ear",types:[{key:"SAME_SOUND_PICK",label:"\uAC19\uC740 \uC18C\uB9AC \uACE0\uB974\uAE30",icon:"volume-2",color:Xe,subTitle:"\uB4E4\uC740 \uC18C\uB9AC\uC640 \uAC19\uC740 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"SAME_OR_DIFF",label:"\uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0 \uB9DE\uD788\uAE30",icon:"diff",color:Xe,subTitle:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0, \uB2E4\uB978\uC9C0 \uAD6C\uBD84\uD558\uC138\uC694."},{key:"HEAR_AND_PICK_SAME",label:"\uC77C\uCE58\uD558\uB294 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"headphones",color:Xe,subTitle:"\uB4E4\uC740 \uC18C\uB9AC\uC758 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"HEAR_AND_PICK_INCLUDED",label:"\uD55C \uC74C\uC808 \uD3EC\uD568 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"scan-search",color:Xe,subTitle:"\uB4E4\uC740 \uC74C\uC808\uC774 \uD3EC\uD568\uB41C \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"STARTS_WITH_SAME_SOUND",label:"\uCCAB \uC74C\uC808\uC774 \uAC19\uC740 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"play-circle",color:Xe,subTitle:"\uB4E4\uC740 \uB2E8\uC5B4\uC640 \uAC19\uC740 \uC18C\uB9AC\uB85C \uC2DC\uC791\uD558\uB294 \uB2E8\uC5B4\uB97C \uACE0\uB974\uC138\uC694."}]},{key:"synthesis",label:"\uD569\uC131\uD6C8\uB828",disc:"\uB450 \uAC1C \uC774\uC0C1\uC758 \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uD569\uCCD0 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"git-merge",types:[{key:"MERGE_2_SYLLABLES",label:"\uC74C\uC808 2\uAC1C \uD569\uCE58\uAE30",icon:"link-2",color:St,subTitle:"\uB450 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_3_SYLLABLES",label:"\uC74C\uC808 3\uAC1C \uD569\uCE58\uAE30",icon:"git-merge",color:St,subTitle:"\uC138 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_2_PHONEMES",label:"\uC74C\uC18C 2\uAC1C \uD569\uCE58\uAE30",icon:"combine",color:St,subTitle:"\uB450 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_3_PHONEMES",label:"\uC74C\uC18C 3\uAC1C \uD569\uCE58\uAE30",icon:"braces",color:St,subTitle:"\uC138 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"}]},{key:"deletion",label:"\uD0C8\uB77D\uD6C8\uB828",disc:"\uB2E8\uC5B4\uC5D0\uC11C \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uC81C\uAC70\uD588\uC744 \uB54C \uB0A8\uB294 \uC18C\uB9AC\uB97C \uC778\uC2DD\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"scissors",types:[{key:"DROP_1_FROM_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C 1\uC74C\uC808 \uD0C8\uB77D",icon:"scissors",color:et,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_1_FROM_3SYLL",label:"3\uC74C\uC808\uC5D0\uC11C 1\uC74C\uC808 \uD0C8\uB77D",icon:"minus-circle",color:et,subTitle:"3\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_PART_FROM_COMPOUND",label:"\uD569\uC131\uC5B4\uC5D0\uC11C \uBD80\uBD84\uD0C8\uB77D",icon:"unlink",color:et,subTitle:"\uD569\uC131\uC5B4\uC758 \uC77C\uBD80\uB97C \uBE7C\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_FINAL_CONSONANT_FROM_1SYLL",label:"1\uC74C\uC808\uC5D0\uC11C \uBC1B\uCE68 \uD0C8\uB77D",icon:"eraser",color:et,subTitle:"\uBC1B\uCE68\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"REMOVE_CONSONANT_AND_IDENTIFY_PHONEME",label:"1\uC74C\uC808\uC5D0\uC11C \uC790\uC74C \uD0C8\uB77D",icon:"audio-lines",color:et,subTitle:"\uC790\uC74C\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB0A8\uC744\uAE4C\uC694?"}]},{key:"substitution",label:"\uB300\uCE58\uD6C8\uB828",disc:"\uB2E8\uC5B4\uC758 \uC77C\uBD80 \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uBC14\uAFB8\uC5B4 \uC0C8\uB85C\uC6B4 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"replace",types:[{key:"CHANGE_1_SYLL_IN_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",icon:"replace",color:wt,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_SYLL_IN_3SYLL",label:"3\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",icon:"shuffle",color:wt,subTitle:"3\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_PHONEME_IN_1SYLL",label:"1\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC18C \uBC14\uAFB8\uAE30",icon:"arrow-right-left",color:wt,subTitle:"1\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_PHONEME_IN_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC18C \uBC14\uAFB8\uAE30",icon:"flip-horizontal",color:wt,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."}]},{key:"attention",label:"\uCCAD\uAC01\uC801\uC8FC\uC758\uB825\uD6C8\uB828",disc:"\uC5EC\uB7EC \uC18C\uB9AC\uB97C \uB4E3\uACE0 \uC21C\uC11C\uB97C \uAE30\uC5B5\uD558\uB294 \uC8FC\uC758\uB825\uACFC \uB2E8\uAE30 \uAE30\uC5B5 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"list-ordered",types:[{key:"LISTEN_AND_REMEMBER_ORDER",label:"\uB4E3\uACE0 \uC21C\uC11C\uB300\uB85C \uAE30\uC5B5\uD558\uAE30",icon:"list-ordered",color:ss,subTitle:"\uC138 \uB2E8\uC5B4\uB97C \uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uCE74\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694."}]}];function ds(){const{t:e}=se.useTranslation();return s.useMemo(()=>{const t=Object.fromEntries(ls(e).map(o=>[o.key,o.label])),n={...t};return cs.flatMap(o=>o.types).forEach(o=>{n[o.key]=e(`trainingType.${o.key}.label`,{defaultValue:o.label})}),{sentence:t,all:n}},[e])}function Cs({computeStyle:e,onScroll:t="close",onResize:n="close",ignoreOutsideClickSelector:o}){const[r,a]=s.useState(!1),[u,i]=s.useState({position:"fixed"}),l=s.useRef(null),c=s.useRef(null),g=s.useCallback(()=>{l.current&&i(e(l.current.getBoundingClientRect(),l.current))},[e]);s.useLayoutEffect(()=>{r&&g()},[r,g]),s.useEffect(()=>{if(!r)return;let f=c.current?.offsetHeight??0;f>0&&g();let m=0,S=null;typeof ResizeObserver<"u"&&c.current&&(S=new ResizeObserver(()=>{const T=c.current?.offsetHeight??0;if(T!==f){if(f=T,++m>4){S?.disconnect(),S=null;return}g()}}),S.observe(c.current));const h=T=>{const A=T.target;o&&A.closest?.(o)||l.current?.contains(A)||c.current?.contains(A)||a(!1)};document.addEventListener("mousedown",h),document.addEventListener("pointerdown",h);let p=null;const y=()=>{if(typeof requestAnimationFrame>"u"){g();return}p===null&&(p=requestAnimationFrame(()=>{p=null,g()}))},w=T=>{c.current?.contains(T.target)||(t==="reposition"?y():t==="close"&&a(!1))};t!=="ignore"&&window.addEventListener("scroll",w,!0);const E=()=>{n==="reposition"?y():n==="close"&&a(!1)};let N=null;const B=()=>{E(),N&&clearTimeout(N),N=setTimeout(()=>{N=null,n==="reposition"&&g()},250)};return n!=="ignore"&&(window.addEventListener("resize",E),window.addEventListener("orientationchange",B)),()=>{p!==null&&cancelAnimationFrame(p),S?.disconnect(),document.removeEventListener("mousedown",h),document.removeEventListener("pointerdown",h),t!=="ignore"&&window.removeEventListener("scroll",w,!0),n!=="ignore"&&(window.removeEventListener("resize",E),window.removeEventListener("orientationchange",B)),N&&clearTimeout(N)}},[r,g,t,n,o]),s.useEffect(()=>{if(r)return _o(()=>a(!1))},[r]);const d=s.useCallback(()=>a(f=>!f),[]),C=s.useCallback(()=>a(!1),[]);return{open:r,setOpen:a,toggle:d,close:C,style:u,triggerRef:l,menuRef:c}}function gs(e,{mode:t="playback",autoStart:n=!1,onPlaySpeaker:o,onComplete:r,playMs:a=1100,feedbackMs:u=1500}={}){const[i,l]=s.useState([]),[c,g]=s.useState(0),[d,C]=s.useState("idle"),[f,m]=s.useState(null),[S,h]=s.useState([]),[p,y]=s.useState(null),[w,E]=s.useState(0),N=s.useRef(0),B=s.useCallback(P=>{N.current=typeof P=="function"?P(N.current):P,E(N.current)},[]),T=s.useRef(o),A=s.useRef(r);s.useEffect(()=>{T.current=o,A.current=r},[o,r]);const I=s.useRef([]),D=()=>{I.current.forEach(clearTimeout),I.current=[]},$=(P,G)=>{I.current.push(setTimeout(G,P))};s.useEffect(()=>()=>D(),[]);const j=i[c]?.id??null,M=s.useRef(null),O=s.useCallback(()=>{D(),C("playing"),h([]),y(null),B(0);let P=0;e.forEach((G,Y)=>{$(P,()=>{g(Y),m(G.id),T.current?.(G)}),$(P+1e3,()=>{m(null),h(ee=>[...ee,G.id])}),P+=1300}),$(P,()=>{C("done"),A.current?.({score:0,total:e.length})})},[e,B]),k=s.useCallback((P,G)=>{if(G>=P.length){C("done"),A.current?.({score:N.current,total:P.length});return}M.current=null,g(G),y(null),C("playing"),m(P[G].id),T.current?.(P[G]),$(a,()=>{m(null),C("waiting")})},[a]),W=s.useCallback(()=>{D();const P=H(e);l(P),B(0),h([]),k(P,0)},[e,k,B]),X=s.useCallback(()=>{t==="playback"?(l(e),O()):W()},[t,e,O,W]),U=s.useCallback(()=>{D(),C("idle"),m(null),h([]),y(null),g(0),B(0),l([])},[B]),he=e.map(P=>P.id).join("|");s.useEffect(()=>(n?X():U(),()=>D()),[t,he,n]);const v=s.useCallback(P=>{d!=="waiting"||t==="playback"||M.current===c||(M.current=c,y(P),P===i[c]?.id&&B(G=>G+1),t==="exam"?(C("playing"),$(400,()=>k(i,c+1))):(C("feedback"),$(u,()=>k(i,c+1))))},[d,t,i,c,k,u,B]),_=t==="playback"?e.length:i.length;return{bind:{activeSpeakerId:f,playedIds:S,selectedId:p,answerId:j,showFeedback:d==="feedback",clickable:d==="waiting",onSelectSpeaker:v},index:c,total:_,score:w,phase:d,done:d==="done",start:X,reset:U}}const sn=new Map,cn=new Map;function Po(e){const t=/^data:image\/svg\+xml(;base64)?,([\s\S]*)$/.exec(e);if(!t)return null;try{return t[1]?atob(t[2]):decodeURIComponent(t[2])}catch{return null}}function fs(e){const t=cn.get(e);if(t)return t;const n=fetch(e).then(o=>o.ok?o.text():null).then(o=>(o!=null&&sn.set(e,o),o)).catch(()=>null).finally(()=>{cn.delete(e)});return cn.set(e,n),n}function ms(e,t=!0){const n=t&&e?Po(e)??sn.get(e)??null:null,[o,r]=s.useState(n);return s.useEffect(()=>{if(!t||!e){r(null);return}const a=Po(e)??sn.get(e)??null;if(a!==null){r(a);return}let u=!0;return fs(e).then(i=>{u&&r(i)}),()=>{u=!1}},[e,t]),o}exports.CACHE_GROUPS=Mn,exports.CORE_VERSION=Ni,exports.DocumentTitleSuppressContext=vn,exports.EMPTY_COMPOSITION=Zt,exports.MediaQueryOverrideContext=yn,exports.NO_CODA=ie,exports.SYLLABLE_MIN=le,exports.VAP_PAGE_SIZE_OPTIONS=at,exports.buildGradeSection=uo,exports.buildPartOfSpeechSection=io,exports.buildPositionSection=bl,exports.buildSelectSection=yl,exports.buildSyllableSection=hl,exports.buildWordTypeSection=lo,exports.charToPronValue=ho,exports.convertComposition=bo,exports.fmtBytes=Sr,exports.gradeDescriptions=Bo,exports.lsBytes=In,exports.meaningKey=ln,exports.normalizeWordAttributeFilter=Vi,exports.pronToCharValue=yo,exports.syllableToFilter=qt,exports.toWordAttributeFilterCodes=$t,exports.today=je,exports.toggleAttributeFilter=Sl,exports.useAnchoredMenu=Cs,exports.useCacheManagement=wr,exports.useDailyTrainingSelection=Ql,exports.useDelayedHoverAnchor=ns,exports.useDeviceManagement=Ir,exports.useDocumentTitle=Qo,exports.useEscToClose=Zl,exports.useFontScale=Yo,exports.useHoverAnchor=ts,exports.useInlineSvg=ms,exports.useListControls=rs,exports.useMediaQuery=Jo,exports.usePageResetOnChange=Ro,exports.usePagedList=os,exports.usePasswordChange=rr,exports.useRelativeDay=tr,exports.useSoundCompassExam=gs,exports.useTablePaging=Pr,exports.useTableSort=Mr,exports.useToastState=as,exports.useTrainingTypeLabels=ds,exports.useVisitAllPanel=Tr,exports.useVisitHistory=Ar,exports.useVisitSchedule=Dr,exports.useWindowEvent=wn,exports.useWordAttributeFilterKeys=ao,exports.useWordDataStats=Er,exports.useWordMeanings=es,exports.useWordTrainingDataGeneration=$l,exports.useWordTrainingFilter=Fl,exports.valueToJamos=ge,exports.wordAttributeFilterFromCodes=Ht;
|