{"id":55,"date":"2026-06-27T17:12:14","date_gmt":"2026-06-27T09:12:14","guid":{"rendered":"https:\/\/www.wanglixian.com\/?p=55"},"modified":"2026-06-27T22:07:38","modified_gmt":"2026-06-27T14:07:38","slug":"leo%e5%ad%a6%e6%b1%89%e5%ad%97","status":"publish","type":"post","link":"https:\/\/www.wanglixian.com\/index.php\/2026\/06\/27\/leo%e5%ad%a6%e6%b1%89%e5%ad%97\/","title":{"rendered":"Leo\u5b66\u6c49\u5b57"},"content":{"rendered":"\n<meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.5, user-scalable=yes\">\n    <title>\ud83e\udde9 Leo\u62fc\u5b57 \u00b7 \u9752\u5c9b63\u5236<\/title>\n    <style>\n        * {\n            box-sizing: border-box;\n            margin: 0;\n            padding: 0;\n        }\n        body {\n            font-family: 'Segoe UI', Roboto, system-ui, -apple-system, sans-serif;\n            background: #f5f1eb;\n            min-height: 100vh;\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            padding: 16px;\n        }\n        .app {\n            max-width: 780px;\n            width: 100%;\n            background: #ffffff;\n            border-radius: 40px;\n            box-shadow: 0 20px 40px rgba(0,0,0,0.12), 0 8px 16px rgba(0,0,0,0.05);\n            padding: 24px 20px 32px;\n        }\n        h1 {\n            font-size: 26px;\n            font-weight: 600;\n            color: #2d3e50;\n            display: flex;\n            align-items: center;\n            gap: 8px;\n            margin-bottom: 12px;\n            letter-spacing: -0.3px;\n            border-bottom: 2px solid #eae3da;\n            padding-bottom: 14px;\n            flex-wrap: wrap;\n        }\n        h1 small {\n            font-size: 16px;\n            font-weight: 400;\n            color: #6b7b8c;\n            margin-left: auto;\n            background: #ecf0f3;\n            padding: 4px 14px;\n            border-radius: 40px;\n        }\n        .user-section {\n            display: flex;\n            align-items: center;\n            gap: 12px;\n            background: #f8f5f0;\n            border-radius: 28px;\n            padding: 12px 18px;\n            margin-bottom: 16px;\n            flex-wrap: wrap;\n        }\n        .user-section label {\n            font-weight: 600;\n            color: #2d3e50;\n            font-size: 15px;\n        }\n        .user-section input {\n            flex: 1;\n            min-width: 120px;\n            padding: 8px 16px;\n            border-radius: 40px;\n            border: 1px solid #d6cdc2;\n            font-size: 15px;\n            outline: none;\n            background: white;\n            font-weight: 500;\n        }\n        .user-section input:focus {\n            border-color: #b2a18b;\n            box-shadow: 0 0 0 3px rgba(177, 148, 120, 0.2);\n        }\n        .user-section .user-badge {\n            background: #2d3e50;\n            color: white;\n            padding: 6px 20px;\n            border-radius: 40px;\n            font-size: 14px;\n            font-weight: 600;\n            white-space: nowrap;\n        }\n        .filter-panel {\n            background: #f8f5f0;\n            border-radius: 28px;\n            padding: 18px 16px 12px;\n            margin-bottom: 20px;\n            display: flex;\n            flex-wrap: wrap;\n            align-items: center;\n            gap: 10px 8px;\n        }\n        .filter-panel select,\n        .filter-panel button {\n            font-size: 15px;\n            padding: 8px 12px;\n            border-radius: 40px;\n            border: 1px solid #d6cdc2;\n            background: white;\n            color: #1e2b36;\n            font-weight: 500;\n            cursor: pointer;\n            outline: none;\n            transition: 0.15s;\n            flex: 1 0 auto;\n            min-width: 70px;\n        }\n        .filter-panel select {\n            background-image: url('data:image\/svg+xml;utf8,<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"8\" viewBox=\"0 0 12 8\"><path fill=\"%236b7b8c\" d=\"M6 8L0 0h12z\"\/><\/svg>');\n            background-repeat: no-repeat;\n            background-position: right 12px center;\n            background-size: 12px;\n            appearance: none;\n            padding-right: 32px;\n        }\n        .filter-panel select:focus {\n            border-color: #b2a18b;\n            box-shadow: 0 0 0 3px rgba(177, 148, 120, 0.2);\n        }\n        .btn-primary {\n            background: #2d3e50;\n            border-color: #2d3e50;\n            color: white;\n            font-weight: 600;\n            flex: 0.8;\n        }\n        .btn-primary:active {\n            transform: scale(0.96);\n        }\n        .btn-outline {\n            background: transparent;\n            border-color: #b2a18b;\n            color: #3d4e5e;\n        }\n        .game-area {\n            background: #fdfcfa;\n            border-radius: 32px;\n            padding: 24px 18px 20px;\n            box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.02), 0 4px 12px rgba(0, 0, 0, 0.02);\n        }\n        .char-display {\n            font-size: 80px;\n            font-weight: 500;\n            text-align: center;\n            letter-spacing: 6px;\n            color: #1e2b36;\n            background: #f2ede7;\n            border-radius: 48px;\n            padding: 24px 10px 20px;\n            margin-bottom: 20px;\n            line-height: 1.2;\n            font-family: 'Noto Serif SC', 'Times New Roman', serif;\n            box-shadow: 0 2px 0 #d6cdc2;\n        }\n        .component-grid {\n            display: flex;\n            flex-wrap: wrap;\n            justify-content: center;\n            gap: 14px 18px;\n            margin-bottom: 20px;\n            min-height: 70px;\n        }\n        .component-btn {\n            background: white;\n            border: 2px solid #d0c4b6;\n            border-radius: 60px;\n            font-size: 38px;\n            padding: 6px 22px;\n            line-height: 1.4;\n            font-weight: 400;\n            color: #1e2b36;\n            box-shadow: 0 4px 0 #c0b2a2;\n            transition: 0.08s linear;\n            cursor: pointer;\n            font-family: 'Noto Serif SC', serif;\n            min-width: 70px;\n            user-select: none;\n        }\n        .component-btn:active {\n            transform: translateY(4px);\n            box-shadow: 0 0px 0 #b2a18b;\n        }\n        .component-btn.selected {\n            background: #d9e3e8;\n            border-color: #6b7b8c;\n            box-shadow: 0 4px 0 #6b7b8c;\n            color: #1e2b36;\n        }\n        .component-btn.correct-highlight {\n            background: #b8d9c0;\n            border-color: #3a8a5a;\n            box-shadow: 0 4px 0 #3a8a5a;\n            color: #1a5a3a;\n        }\n        .component-btn:disabled {\n            opacity: 0.6;\n            cursor: not-allowed;\n            transform: none;\n            box-shadow: 0 2px 0 #c0b2a2;\n        }\n        .component-btn.color-0 { border-color: #e74c3c; color: #e74c3c; }\n        .component-btn.color-1 { border-color: #2980b9; color: #2980b9; }\n        .component-btn.color-2 { border-color: #27ae60; color: #27ae60; }\n        .component-btn.color-3 { border-color: #8e44ad; color: #8e44ad; }\n        .component-btn.color-4 { border-color: #d35400; color: #d35400; }\n        .component-btn.color-5 { border-color: #1abc9c; color: #1abc9c; }\n        .component-btn.color-6 { border-color: #c0392b; color: #c0392b; }\n        .component-btn.color-7 { border-color: #2c3e50; color: #2c3e50; }\n        .component-btn.color-8 { border-color: #16a085; color: #16a085; }\n        .component-btn.color-9 { border-color: #d4ac0d; color: #d4ac0d; }\n        .component-btn.selected {\n            background: #f0f0f0;\n            border-color: #6b7b8c;\n            color: #1e2b36;\n            box-shadow: 0 4px 0 #6b7b8c;\n        }\n        .component-btn.correct-highlight {\n            background: #b8d9c0;\n            border-color: #3a8a5a;\n            color: #1a5a3a;\n            box-shadow: 0 4px 0 #3a8a5a;\n        }\n        .action-bar {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-top: 8px;\n            gap: 12px;\n            flex-wrap: wrap;\n        }\n        .message-box {\n            font-size: 17px;\n            padding: 10px 18px;\n            border-radius: 50px;\n            background: #eef3f7;\n            flex: 2;\n            min-width: 140px;\n            color: #1e3a4b;\n            font-weight: 500;\n            border-left: 4px solid #b2a18b;\n        }\n        .btn-group {\n            display: flex;\n            gap: 8px;\n            flex-wrap: wrap;\n        }\n        .btn-icon {\n            background: #f0ebe4;\n            border: none;\n            border-radius: 60px;\n            padding: 8px 18px;\n            font-size: 15px;\n            font-weight: 500;\n            color: #1f2e3c;\n            box-shadow: 0 2px 0 #cdc0b2;\n            cursor: pointer;\n            transition: 0.06s linear;\n            display: inline-flex;\n            align-items: center;\n            gap: 4px;\n        }\n        .btn-icon:active {\n            transform: translateY(2px);\n            box-shadow: 0 0px 0 #b2a18b;\n        }\n        .word-example {\n            font-size: 22px;\n            background: #e5ede8;\n            border-radius: 32px;\n            padding: 14px 18px;\n            margin: 12px 0 6px;\n            text-align: center;\n            color: #1a3b2e;\n            font-weight: 600;\n            letter-spacing: 3px;\n            min-height: 60px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            gap: 12px;\n            flex-wrap: wrap;\n        }\n        .word-example .word-item {\n            background: white;\n            padding: 4px 18px;\n            border-radius: 30px;\n            box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\n        }\n        .continue-btn {\n            background: #2d8f5a;\n            color: white;\n            border: none;\n            border-radius: 60px;\n            padding: 10px 32px;\n            font-size: 18px;\n            font-weight: 600;\n            cursor: pointer;\n            box-shadow: 0 4px 0 #1a5a3a;\n            transition: 0.06s linear;\n            margin-top: 6px;\n        }\n        .continue-btn:active {\n            transform: translateY(4px);\n            box-shadow: 0 0px 0 #1a5a3a;\n        }\n        .continue-btn.hidden {\n            display: none;\n        }\n        .progress-bar {\n            background: #ecf0f1;\n            border-radius: 30px;\n            height: 10px;\n            margin: 6px 0 10px;\n            overflow: hidden;\n            position: relative;\n        }\n        .progress-bar .fill {\n            height: 100%;\n            background: #2d8f5a;\n            border-radius: 30px;\n            transition: width 0.3s ease;\n            width: 0%;\n        }\n        .progress-label {\n            font-size: 15px;\n            color: #2d3e50;\n            font-weight: 500;\n            text-align: center;\n            margin-bottom: 4px;\n        }\n        .footer-stats {\n            display: flex;\n            justify-content: space-between;\n            font-size: 14px;\n            color: #5d6f7e;\n            margin-top: 16px;\n            border-top: 1px solid #e5ddd4;\n            padding-top: 14px;\n            flex-wrap: wrap;\n            gap: 8px;\n        }\n        .error-list {\n            background: #faf6f2;\n            border-radius: 28px;\n            padding: 12px 16px;\n            margin-top: 12px;\n            max-height: 110px;\n            overflow-y: auto;\n            font-size: 15px;\n            color: #1f2e3c;\n            border: 1px solid #e3d9cf;\n        }\n        .error-list span {\n            display: inline-block;\n            background: #eddcd2;\n            padding: 0 14px;\n            border-radius: 40px;\n            margin: 4px 6px 4px 0;\n            font-weight: 500;\n        }\n        .rank-section {\n            margin-top: 16px;\n            border-top: 2px solid #eae3da;\n            padding-top: 14px;\n        }\n        .rank-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            cursor: pointer;\n            user-select: none;\n        }\n        .rank-header h3 {\n            font-size: 16px;\n            color: #2d3e50;\n        }\n        .rank-header .toggle-btn {\n            background: none;\n            border: none;\n            font-size: 20px;\n            cursor: pointer;\n            color: #6b7b8c;\n            padding: 0 8px;\n        }\n        .rank-list {\n            max-height: 200px;\n            overflow-y: auto;\n            margin-top: 8px;\n            transition: max-height 0.3s ease;\n        }\n        .rank-list.collapsed {\n            max-height: 0;\n            overflow: hidden;\n            margin-top: 0;\n        }\n        .rank-item {\n            display: flex;\n            justify-content: space-between;\n            padding: 6px 14px;\n            border-radius: 30px;\n            background: #f8f5f0;\n            margin-bottom: 4px;\n            font-size: 14px;\n            font-weight: 500;\n        }\n        .rank-item .rank-num {\n            color: #6b7b8c;\n            width: 30px;\n        }\n        .rank-item .rank-name {\n            flex: 1;\n            color: #1e2b36;\n        }\n        .rank-item .rank-score {\n            color: #2d8f5a;\n            font-weight: 700;\n        }\n        .rank-item.me {\n            background: #d9e3e8;\n            border: 1px solid #6b7b8c;\n        }\n        .rank-empty {\n            color: #6b7b8c;\n            text-align: center;\n            padding: 12px 0;\n            font-size: 14px;\n        }\n        @media (max-width: 550px) {\n            .app { padding: 16px; }\n            .char-display { font-size: 64px; padding: 16px 6px; }\n            .component-btn { font-size: 32px; padding: 4px 16px; min-width: 60px; }\n            .word-example { font-size: 18px; padding: 10px 12px; }\n            .user-section { flex-direction: column; align-items: stretch; }\n            .user-section .user-badge { text-align: center; }\n        }\n    <\/style>\n\n\n<div class=\"app\" id=\"app\">\n    <h1>\ud83e\udde9 Leo\u62fc\u5b57 <small>\u9752\u5c9b\u00b763\u5236<\/small><\/h1>\n\n    <div class=\"user-section\">\n        <label for=\"userNameInput\">\ud83d\udc64 \u59d3\u540d<\/label>\n        <input type=\"text\" id=\"userNameInput\" placeholder=\"\u8bf7\u8f93\u5165\u60a8\u7684\u540d\u5b57\" maxlength=\"12\" value=\"Leo\">\n        <span class=\"user-badge\" id=\"userBadge\">\ud83d\udcda \u5df2\u901a\u5173: 0<\/span>\n    <\/div>\n\n    <div class=\"filter-panel\">\n        <select id=\"gradeSelect\" aria-label=\"\u5e74\u7ea7\">\n            <option value=\"4\">\u56db\u5e74\u7ea7<\/option>\n        <\/select>\n        <select id=\"termSelect\" aria-label=\"\u5b66\u671f\">\n            <option value=\"2\">\u4e0b\u518c<\/option>\n        <\/select>\n        <select id=\"unitSelect\" aria-label=\"\u5355\u5143\">\n            <option value=\"all\">\ud83d\udcda \u5168\u90e8\u5355\u5143<\/option>\n            <option value=\"1\">\u7b2c\u4e00\u5355\u5143<\/option>\n            <option value=\"2\">\u7b2c\u4e8c\u5355\u5143<\/option>\n            <option value=\"3\">\u7b2c\u4e09\u5355\u5143<\/option>\n            <option value=\"4\">\u7b2c\u56db\u5355\u5143<\/option>\n            <option value=\"5\">\u7b2c\u4e94\u5355\u5143<\/option>\n            <option value=\"6\">\u7b2c\u516d\u5355\u5143<\/option>\n            <option value=\"7\">\u7b2c\u4e03\u5355\u5143<\/option>\n            <option value=\"8\">\u7b2c\u516b\u5355\u5143<\/option>\n        <\/select>\n        <select id=\"lessonSelect\" aria-label=\"\u8bfe\">\n            <option value=\"all\">\ud83d\udcd6 \u5168\u90e8\u8bfe\u6587<\/option>\n        <\/select>\n        <select id=\"charTypeSelect\" aria-label=\"\u5b57\u7c7b\u578b\">\n            <option value=\"all\">\ud83d\udcdd \u5168\u90e8 (\u4f1a\u8ba4+\u4f1a\u5199)<\/option>\n            <option value=\"recognize\">\ud83d\udc40 \u4f1a\u8ba4<\/option>\n            <option value=\"write\">\u270d\ufe0f \u4f1a\u5199<\/option>\n        <\/select>\n        <button class=\"btn-primary\" id=\"loadBtn\">\ud83c\udfaf \u9501\u5b9a\u5b57\u5e93<\/button>\n        <button class=\"btn-outline\" id=\"errorModeBtn\" style=\"flex:0.6;\">\ud83d\udcd5 \u9519\u5b57\u5e93<\/button>\n    <\/div>\n\n    <div class=\"game-area\">\n        <div class=\"progress-label\" id=\"progressLabel\">\ud83d\udcca \u8fdb\u5ea6\uff1a0 \/ 0<\/div>\n        <div class=\"progress-bar\"><div class=\"fill\" id=\"progressFill\"><\/div><\/div>\n\n        <div class=\"char-display\" id=\"charDisplay\">\u7684<\/div>\n        <div class=\"component-grid\" id=\"componentGrid\"><\/div>\n        <div id=\"wordExample\" class=\"word-example\">\u2728 \u62fc\u5bf9\u663e\u793a\u8bcd\u8bed<\/div>\n\n        <div style=\"display:flex; justify-content:center;\">\n            <button class=\"continue-btn hidden\" id=\"continueBtn\">\ud83d\udc49 \u7ee7\u7eed\u4e0b\u4e00\u5b57<\/button>\n        <\/div>\n\n        <div class=\"action-bar\">\n            <div class=\"message-box\" id=\"messageBox\">\u70b9\u51fb\u90e8\u4ef6\u62fc\u5b57<\/div>\n            <div class=\"btn-group\">\n                <button class=\"btn-icon\" id=\"resetBtn\">\ud83d\udd04 \u91cd\u7f6e<\/button>\n                <button class=\"btn-icon\" id=\"nextBtn\">\u23e9 \u4e0b\u4e00\u5b57<\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"error-list\" id=\"errorList\">\n            <span style=\"background:transparent; color:#6b7b8c;\">\ud83d\udccc \u9519\u5b57\u5e93\u7a7a<\/span>\n        <\/div>\n        <div class=\"footer-stats\">\n            <span>\u2705 \u6b63\u786e: <strong id=\"correctCount\">0<\/strong><\/span>\n            <span>\u274c \u9519\u5b57: <strong id=\"errorCount\">0<\/strong><\/span>\n            <span>\ud83d\udcdd \u5f53\u524d\u5b57: <span id=\"currentCharLabel\">&#8211;<\/span><\/span>\n        <\/div>\n    <\/div>\n\n    <div class=\"rank-section\">\n        <div class=\"rank-header\" id=\"rankToggle\">\n            <h3>\ud83c\udfc6 \u6392\u884c\u699c<\/h3>\n            <button class=\"toggle-btn\" id=\"rankToggleBtn\">\u25bc<\/button>\n        <\/div>\n        <div class=\"rank-list\" id=\"rankList\">\n            <div class=\"rank-empty\">\u6682\u65e0\u8bb0\u5f55\uff0c\u5feb\u6765\u6311\u6218\u5427\uff01<\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\n(function() {\n    \/\/ ========== \u5b8c\u6574\u5b57\u5e93\uff08\u6db5\u76d6\u56db\u5e74\u7ea7\u4e0b\u518c\u5168\u90e8\u751f\u5b57\uff09 ==========\n    const FULL_BANK = [\n        \/\/ \u7b2c\u4e00\u5355\u5143 \u7b2c1\u8bfe\n        { char: '\u6742', components: ['\u4e5d', '\u6728'], words: ['\u6742\u5fd7', '\u6742\u4e71', '\u5939\u6742'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u7bf1', components: ['\u2eae', '\u79bb'], words: ['\u7bf1\u7b06', '\u7af9\u7bf1', '\u7bf1\u843d'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u5f90', components: ['\u5f73', '\u4f59'], words: ['\u5f90\u5f90', '\u5f90\u5dde', '\u5f90\u7f13'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u758f', components: ['\u758b', '\u342c'], words: ['\u7a00\u758f', '\u758f\u5bfc', '\u758f\u5ffd'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u9504', components: ['\u9485', '\u52a9'], words: ['\u9504\u5934', '\u9504\u8349', '\u9504\u5730'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u5265', components: ['\u5f55', '\u5202'], words: ['\u5265\u524a', '\u5265\u843d', '\u5265\u76ae'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u7a00', components: ['\u79be', '\u5e0c'], words: ['\u7a00\u758f', '\u7a00\u5c11', '\u7a00\u996d'], type: 'write', unit: 1, lesson: 1 },\n        { char: '\u873b', components: ['\u866b', '\u9752'], words: ['\u873b\u8713', '\u873b\u86c9', '\u873b\u8713\u70b9\u6c34'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u8713', components: ['\u866b', '\u5ef7'], words: ['\u873b\u8713', '\u8713\u7ffc', '\u8713\u86b0'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u8776', components: ['\u866b', '\u53f6'], words: ['\u8774\u8776', '\u8776\u6cf3', '\u8776\u53d8'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u5bbf', components: ['\u5b80', '\u4ebb', '\u767e'], words: ['\u5bbf\u820d', '\u661f\u5bbf', '\u5bbf\u613f'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u8305', components: ['\u8279', '\u77db'], words: ['\u8305\u8349', '\u8305\u5c4b', '\u8305\u585e\u987f\u5f00'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u6a90', components: ['\u6728', '\u8a79'], words: ['\u5c4b\u6a90', '\u623f\u6a90', '\u6a90\u4e0b'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u7fc1', components: ['\u516c', '\u7fbd'], words: ['\u8001\u7fc1', '\u7fc1\u59aa', '\u6e14\u7fc1'], type: 'both', unit: 1, lesson: 1 },\n        { char: '\u8d56', components: ['\u675f', '\u8d1f'], words: ['\u4f9d\u8d56', '\u65e0\u8d56', '\u8d56\u76ae'], type: 'write', unit: 1, lesson: 1 },\n        \/\/ \u7b2c2\u8bfe\n        { char: '\u6784', components: ['\u6728', '\u52fe'], words: ['\u7ed3\u6784', '\u6784\u5efa', '\u6784\u56fe'], type: 'both', unit: 1, lesson: 2 },\n        { char: '\u51a0', components: ['\u5196', '\u5143', '\u5bf8'], words: ['\u51a0\u519b', '\u7687\u51a0', '\u51a0\u5195'], type: 'both', unit: 1, lesson: 2 },\n        { char: '\u6734', components: ['\u6728', '\u535c'], words: ['\u6734\u7d20', '\u8d28\u6734', '\u6734\u5b9e'], type: 'both', unit: 1, lesson: 2 },\n        { char: '\u7d20', components: ['\u7cf8', '\u9fb6'], words: ['\u6734\u7d20', '\u7d20\u8d28', '\u7d20\u6750'], type: 'both', unit: 1, lesson: 2 },\n        { char: '\u7387', components: ['\u4ea0', '\u5e7a', '\u5341'], words: ['\u7387\u9886', '\u6548\u7387', '\u5766\u7387'], type: 'both', unit: 1, lesson: 2 },\n        { char: '\u5018', components: ['\u4ebb', '\u5c1a'], words: ['\u5018\u82e5', '\u5018\u4f7f', '\u5018\u7136'], type: 'both', unit: 1, lesson: 2 },\n        { char: '\u9644', components: ['\u961d', '\u4ed8'], words: ['\u9644\u8fd1', '\u9644\u5c5e', '\u9644\u52a0'], type: 'both', unit: 1, lesson: 2 },\n        { char: '\u6363', components: ['\u624c', '\u5c9b'], words: ['\u6363\u4e71', '\u6363\u788e', '\u6363\u86cb'], type: 'both', unit: 1, lesson: 2 },\n        { char: '\u7ed8', components: ['\u7e9f', '\u4f1a'], words: ['\u7ed8\u753b', '\u7ed8\u56fe', '\u63cf\u7ed8'], type: 'both', unit: 1, lesson: 2 },\n        { char: '\u8c10', components: ['\u8ba0', '\u7686'], words: ['\u548c\u8c10', '\u8c10\u97f3', '\u8bd9\u8c10'], type: 'both', unit: 1, lesson: 2 },\n        { char: '\u9970', components: ['\u9963', '\u5dfe'], words: ['\u88c5\u9970', '\u9970\u54c1', '\u4fee\u9970'], type: 'write', unit: 1, lesson: 2 },\n        { char: '\u8e72', components: ['\u8db3', '\u5c0a'], words: ['\u8e72\u4e0b', '\u8e72\u70b9', '\u8e72\u5b88'], type: 'write', unit: 1, lesson: 2 },\n        { char: '\u51e4', components: ['\u51e0', '\u53c8'], words: ['\u51e4\u51f0', '\u51e4\u68a8', '\u51e4\u5c3e'], type: 'write', unit: 1, lesson: 2 },\n        { char: '\u5e8f', components: ['\u5e7f', '\u4e88'], words: ['\u987a\u5e8f', '\u79e9\u5e8f', '\u5e8f\u5e55'], type: 'write', unit: 1, lesson: 2 },\n        { char: '\u4f8b', components: ['\u4ebb', '\u5217'], words: ['\u4f8b\u5b50', '\u4f8b\u5916', '\u4f8b\u9898'], type: 'write', unit: 1, lesson: 2 },\n        { char: '\u89c5', components: ['\u2e88', '\u89c1'], words: ['\u5bfb\u89c5', '\u89c5\u98df', '\u89c5\u53cb'], type: 'write', unit: 1, lesson: 2 },\n        { char: '\u8038', components: ['\u4ece', '\u8033'], words: ['\u8038\u7acb', '\u8038\u4eba\u542c\u95fb', '\u8038\u80a9'], type: 'write', unit: 1, lesson: 2 },\n        { char: '\u8e0f', components: ['\u8db3', '\u6c93'], words: ['\u8e0f\u6b65', '\u8e0f\u9752', '\u811a\u8e0f\u5b9e\u5730'], type: 'write', unit: 1, lesson: 2 },\n        { char: '\u5bc4', components: ['\u5b80', '\u5947'], words: ['\u5bc4\u6258', '\u5bc4\u4fe1', '\u5bc4\u751f'], type: 'write', unit: 1, lesson: 2 },\n        { char: '\u7720', components: ['\u76ee', '\u6c11'], words: ['\u7761\u7720', '\u5b89\u7720', '\u7720\u5e8a'], type: 'write', unit: 1, lesson: 2 },\n        \/\/ \u7b2c3\u8bfe\n        { char: '\u6170', components: ['\u5c09', '\u5fc3'], words: ['\u5b89\u6170', '\u6170\u52b3', '\u6b23\u6170'], type: 'both', unit: 1, lesson: 3 },\n        { char: '\u85c9', components: ['\u8279', '\u8024'], words: ['\u6170\u85c9', '\u72fc\u85c9', '\u85c9\u53e3'], type: 'both', unit: 1, lesson: 3 },\n        { char: '\u535c', components: ['\u535c'], words: ['\u5360\u535c', '\u841d\u535c', '\u535c\u5366'], type: 'both', unit: 1, lesson: 3 },\n        { char: '\u9510', components: ['\u9485', '\u5151'], words: ['\u9510\u5229', '\u654f\u9510', '\u9510\u6c14'], type: 'write', unit: 1, lesson: 3 },\n        { char: '\u6ee9', components: ['\u6c35', '\u96be'], words: ['\u6c99\u6ee9', '\u6ee9\u6d82', '\u6cb3\u6ee9'], type: 'write', unit: 1, lesson: 3 },\n        { char: '\u5e10', components: ['\u5dfe', '\u957f'], words: ['\u5e10\u7bf7', '\u5e10\u76ee', '\u868a\u5e10'], type: 'write', unit: 1, lesson: 3 },\n        { char: '\u70c1', components: ['\u706b', '\u4e50'], words: ['\u95ea\u70c1', '\u70c1\u5149', '\u70c1\u4eae'], type: 'write', unit: 1, lesson: 3 },\n        { char: '\u8759', components: ['\u866b', '\u6241'], words: ['\u8759\u8760', '\u8759\u7ffc', '\u8759\u98de'], type: 'write', unit: 1, lesson: 3 },\n        { char: '\u8760', components: ['\u866b', '\u7550'], words: ['\u8759\u8760', '\u8760\u9cbc', '\u8760\u7ffc'], type: 'write', unit: 1, lesson: 3 },\n        { char: '\u9738', components: ['\u96e8', '\u9769', '\u6708'], words: ['\u9738\u738b', '\u9738\u6743', '\u9738\u4e1a'], type: 'write', unit: 1, lesson: 3 },\n        { char: '\u9e70', components: ['\u5e7f', '\u4ebb', '\u96b9'], words: ['\u8001\u9e70', '\u9e70\u6d3e', '\u732b\u5934\u9e70'], type: 'write', unit: 1, lesson: 3 },\n        \/\/ \u7b2c4\u8bfe\uff08\u7565\u8bfb\uff09\n        { char: '\u7eee', components: ['\u7e9f', '\u5947'], words: ['\u7eee\u4e3d', '\u7eee\u7f57', '\u7eee\u68a6'], type: 'recognize', unit: 1, lesson: 4 },\n        { char: '\u548c', components: ['\u79be', '\u53e3'], words: ['\u548c\u5e73', '\u548c\u8c10', '\u548c\u7166'], type: 'recognize', unit: 1, lesson: 4 },\n        { char: '\u8c08', components: ['\u8ba0', '\u708e'], words: ['\u8c08\u8bdd', '\u8c08\u5fc3', '\u8c08\u8bba'], type: 'recognize', unit: 1, lesson: 4 },\n        \/\/ \u7b2c\u4e8c\u5355\u5143 \u7b2c5\u8bfe\n        { char: '\u7425', components: ['\u738b', '\u864e'], words: ['\u7425\u73c0', '\u864e\u73c0', '\u7425\u73c0\u8272'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u73c0', components: ['\u738b', '\u767d'], words: ['\u7425\u73c0', '\u73c0\u91d1', '\u73c0\u8272'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u55e1', components: ['\u53e3', '\u7fc1'], words: ['\u55e1\u55e1', '\u55e1\u9e23', '\u55e1\u7136'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u8102', components: ['\u6708', '\u65e8'], words: ['\u8102\u80aa', '\u6cb9\u8102', '\u8102\u7c89'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u62ed', components: ['\u624c', '\u5f0f'], words: ['\u64e6\u62ed', '\u62ed\u76ee\u4ee5\u5f85', '\u62ed\u6cea'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u6e17', components: ['\u6c35', '\u53c2'], words: ['\u6e17\u900f', '\u6e17\u51fa', '\u6e17\u5165'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u5e9c', components: ['\u5e7f', '\u4ed8'], words: ['\u653f\u5e9c', '\u5b98\u5e9c', '\u5e9c\u90b8'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u624e', components: ['\u624c', '\u4e5a'], words: ['\u624e\u6839', '\u624e\u9488', '\u624e\u5806'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u756a', components: ['\u91c6', '\u7530'], words: ['\u756a\u53f7', '\u756a\u85af', '\u756a\u90a6'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u57cb', components: ['\u571f', '\u91cc'], words: ['\u57cb\u85cf', '\u57cb\u6ca1', '\u57cb\u4f0f'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u6f8e', components: ['\u6c35', '\u5f6d'], words: ['\u6f8e\u6e43', '\u6f8e\u6e56', '\u6f8e\u80c0'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u6e43', components: ['\u6c35', '\u62dc'], words: ['\u6f8e\u6e43', '\u6e43\u6d9b', '\u6e43\u58f0'], type: 'both', unit: 2, lesson: 5 },\n        { char: '\u6012', components: ['\u5974', '\u5fc3'], words: ['\u6124\u6012', '\u53d1\u6012', '\u6012\u6c14'], type: 'write', unit: 2, lesson: 5 },\n        { char: '\u543c', components: ['\u53e3', '\u5b54'], words: ['\u543c\u53eb', '\u6012\u543c', '\u543c\u58f0'], type: 'write', unit: 2, lesson: 5 },\n        { char: '\u9910', components: ['\ud840\udda2', '\u53c8', '\u98df'], words: ['\u65e9\u9910', '\u9910\u5177', '\u9910\u5385'], type: 'write', unit: 2, lesson: 5 },\n        { char: '\u5212', components: ['\u6208', '\u5202'], words: ['\u5212\u8239', '\u8ba1\u5212', '\u5212\u5206'], type: 'write', unit: 2, lesson: 5 },\n        { char: '\u664c', components: ['\u65e5', '\u5411'], words: ['\u664c\u5348', '\u534a\u664c', '\u6b47\u664c'], type: 'write', unit: 2, lesson: 5 },\n        { char: '\u8fa3', components: ['\u8f9b', '\u675f'], words: ['\u8fa3\u6912', '\u6bd2\u8fa3', '\u9ebb\u8fa3'], type: 'write', unit: 2, lesson: 5 },\n        { char: '\u6323', components: ['\u624c', '\u4e89'], words: ['\u6323\u624e', '\u6323\u94b1', '\u6323\u8131'], type: 'write', unit: 2, lesson: 5 },\n        { char: '\u5237', components: ['\u5c38', '\u5dfe', '\u5202'], words: ['\u5237\u7259', '\u5237\u5b50', '\u5237\u65b0'], type: 'write', unit: 2, lesson: 5 },\n        { char: '\u6d4b', components: ['\u6c35', '\u5219'], words: ['\u6d4b\u91cf', '\u6d4b\u9a8c', '\u6d4b\u8bd5'], type: 'write', unit: 2, lesson: 5 },\n        { char: '\u8be6', components: ['\u8ba0', '\u7f8a'], words: ['\u8be6\u7ec6', '\u8be6\u89e3', '\u8be6\u8c08'], type: 'write', unit: 2, lesson: 5 },\n        \/\/ \u7b2c6\u8bfe\n        { char: '\u949d', components: ['\u9485', '\u5c6f'], words: ['\u8fdf\u949d', '\u949d\u89d2', '\u949d\u5668'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u4ec5', components: ['\u4ebb', '\u53c8'], words: ['\u4ec5\u4ec5', '\u4ec5\u6709', '\u4e0d\u4ec5'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u63cf', components: ['\u624c', '\u82d7'], words: ['\u63cf\u5199', '\u63cf\u7ed8', '\u63cf\u7ea2'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u96a7', components: ['\u961d', '\u9042'], words: ['\u96a7\u9053', '\u96a7\u6d1e', '\u96a7\u7a7f'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u884d', components: ['\u5f73', '\u6c34'], words: ['\u7e41\u884d', '\u884d\u751f', '\u884d\u53d8'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u5428', components: ['\u53e3', '\u5c6f'], words: ['\u5428\u4f4d', '\u5428\u7ea7', '\u5428\u516c\u91cc'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u9885', components: ['\u9875', '\u5362'], words: ['\u5934\u9885', '\u9885\u9aa8', '\u9885\u8111'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u81a8', components: ['\u6708', '\u5f6d'], words: ['\u81a8\u80c0', '\u81a8\u5927', '\u81a8\u5316'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u6377', components: ['\u624c', '\u758c'], words: ['\u654f\u6377', '\u5feb\u6377', '\u6377\u62a5'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u6816', components: ['\u6728', '\u897f'], words: ['\u6816\u606f', '\u6816\u8eab', '\u6816\u5c45'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u8f9f', components: ['\u5c38', '\u53e3', '\u8f9b'], words: ['\u5f00\u8f9f', '\u8f9f\u90aa', '\u7cbe\u8f9f'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u5d2d', components: ['\u5c71', '\u65a9'], words: ['\u5d2d\u65b0', '\u5d2d\u9732', '\u5d2d\u9f50'], type: 'both', unit: 2, lesson: 6 },\n        { char: '\u7b28', components: ['\u7af9', '\u672c'], words: ['\u7b28\u91cd', '\u7b28\u62d9', '\u7b28\u86cb'], type: 'write', unit: 2, lesson: 6 },\n        { char: '\u9e3d', components: ['\u5408', '\u9e1f'], words: ['\u9e3d\u5b50', '\u4fe1\u9e3d', '\u548c\u5e73\u9e3d'], type: 'write', unit: 2, lesson: 6 },\n        { char: '\u6beb', components: ['\u4ea0', '\u53e3', '\u6bdb'], words: ['\u6beb\u6bdb', '\u4e1d\u6beb', '\u6beb\u7c73'], type: 'write', unit: 2, lesson: 6 },\n        { char: '\u51cc', components: ['\u51ab', '\u590c'], words: ['\u51cc\u7a7a', '\u51cc\u6668', '\u51cc\u9a7e'], type: 'write', unit: 2, lesson: 6 },\n        { char: '\u672b', components: ['\u6728', '\u4e00'], words: ['\u672b\u5c3e', '\u672b\u65e5', '\u7c89\u672b'], type: 'write', unit: 2, lesson: 6 },\n        { char: '\u6001', components: ['\u592a', '\u5fc3'], words: ['\u6001\u5ea6', '\u72b6\u6001', '\u5f62\u6001'], type: 'write', unit: 2, lesson: 6 },\n        { char: '\u65a4', components: ['\u65a4'], words: ['\u516c\u65a4', '\u65a4\u4e24', '\u65a4\u65a4\u8ba1\u8f83'], type: 'write', unit: 2, lesson: 6 },\n        { char: '\u80a2', components: ['\u6708', '\u652f'], words: ['\u80a2\u4f53', '\u56db\u80a2', '\u80a2\u89e3'], type: 'write', unit: 2, lesson: 6 },\n        { char: '\u7ffc', components: ['\u7fbd', '\u5f02'], words: ['\u7fbd\u7ffc', '\u673a\u7ffc', '\u5c0f\u5fc3\u7ffc\u7ffc'], type: 'write', unit: 2, lesson: 6 },\n        \/\/ \u7b2c7\u8bfe\n        { char: '\u4e52', components: ['\u4e18', '\u4e36'], words: ['\u4e52\u4e53', '\u4e52\u575b', '\u4e52\u58f0'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u4e53', components: ['\u4e18', '\u4e36'], words: ['\u4e52\u4e53', '\u4e53\u4e53', '\u4e53\u54cd'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u62e5', components: ['\u624c', '\u7528'], words: ['\u62e5\u62b1', '\u62e5\u6709', '\u62e5\u62a4'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u83cc', components: ['\u8279', '\u56f7'], words: ['\u7ec6\u83cc', '\u83cc\u7c7b', '\u83cc\u83c7'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u81ed', components: ['\u81ea', '\u72ac'], words: ['\u81ed\u5473', '\u81ed\u6c27', '\u81ed\u7f8e'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u852c', components: ['\u8279', '\u758f'], words: ['\u852c\u83dc', '\u679c\u852c', '\u852c\u679c'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u78b3', components: ['\u77f3', '\u70ad'], words: ['\u78b3\u7d20', '\u4f4e\u78b3', '\u78b3\u9178'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u764c', components: ['\u7592', '\u5d52'], words: ['\u764c\u75c7', '\u809d\u764c', '\u9632\u764c'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u75c7', components: ['\u7592', '\u6b63'], words: ['\u75c7\u72b6', '\u75c5\u75c7', '\u75c7\u5019'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u75be', components: ['\u7592', '\u77e2'], words: ['\u75be\u75c5', '\u75be\u82e6', '\u8fc5\u75be'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u7076', components: ['\u706b', '\u571f'], words: ['\u7076\u53f0', '\u7076\u5177', '\u7076\u795e'], type: 'both', unit: 2, lesson: 7 },\n        { char: '\u7eb3', components: ['\u7e9f', '\u5185'], words: ['\u7eb3\u7c73', '\u7eb3\u5165', '\u7eb3\u51c9'], type: 'write', unit: 2, lesson: 7 },\n        { char: '\u7bb1', components: ['\u7af9', '\u76f8'], words: ['\u7bb1\u5b50', '\u4fe1\u7bb1', '\u51b0\u7bb1'], type: 'write', unit: 2, lesson: 7 },\n        { char: '\u94a2', components: ['\u9485', '\u5188'], words: ['\u94a2\u94c1', '\u94a2\u7b14', '\u94a2\u6750'], type: 'write', unit: 2, lesson: 7 },\n        { char: '\u9690', components: ['\u961d', '\u6025'], words: ['\u9690\u85cf', '\u9690\u7792', '\u9690\u79c1'], type: 'write', unit: 2, lesson: 7 },\n        { char: '\u5065', components: ['\u4ebb', '\u5efa'], words: ['\u5065\u5eb7', '\u5065\u58ee', '\u5065\u8eab'], type: 'write', unit: 2, lesson: 7 },\n        { char: '\u5eb7', components: ['\u5e7f', '\u96b6'], words: ['\u5065\u5eb7', '\u5eb7\u590d', '\u5c0f\u5eb7'], type: 'write', unit: 2, lesson: 7 },\n        { char: '\u80de', components: ['\u6708', '\u5305'], words: ['\u7ec6\u80de', '\u80de\u8863', '\u540c\u80de'], type: 'write', unit: 2, lesson: 7 },\n        { char: '\u9632', components: ['\u961d', '\u65b9'], words: ['\u9884\u9632', '\u9632\u6b62', '\u9632\u5907'], type: 'write', unit: 2, lesson: 7 },\n        { char: '\u9700', components: ['\u96e8', '\u800c'], words: ['\u9700\u8981', '\u9700\u6c42', '\u5fc5\u9700'], type: 'write', unit: 2, lesson: 7 },\n        \/\/ \u7b2c8\u8bfe\uff08\u7565\u8bfb\uff09\n        { char: '\u9e4f', components: ['\u670b', '\u9e1f'], words: ['\u9e4f\u7a0b', '\u5927\u9e4f', '\u9cb2\u9e4f'], type: 'recognize', unit: 2, lesson: 8 },\n        { char: '\u63fd', components: ['\u624c', '\u89c8'], words: ['\u63fd\u6d3b', '\u63fd\u80dc', '\u63fd\u6708'], type: 'recognize', unit: 2, lesson: 8 },\n        { char: '\u9a71', components: ['\u9a6c', '\u533a'], words: ['\u9a71\u9010', '\u9a71\u8d76', '\u9a71\u52a8'], type: 'recognize', unit: 2, lesson: 8 },\n        { char: '\u8df5', components: ['\u8db3', '\u620b'], words: ['\u5b9e\u8df5', '\u8df5\u8e0f', '\u8df5\u884c'], type: 'recognize', unit: 2, lesson: 8 },\n        { char: '\u7740', components: ['\u7f8a', '\u76ee'], words: ['\u770b\u7740', '\u7740\u843d', '\u7740\u6025'], type: 'recognize', unit: 2, lesson: 8 },\n        { char: '\u515a', components: ['\u5c1a', '\u9ed1'], words: ['\u653f\u515a', '\u515a\u5458', '\u515a\u6d3e'], type: 'recognize', unit: 2, lesson: 8 },\n        { char: '\u65bd', components: ['\u65b9', '\u4eba\u4e5f'], words: ['\u5b9e\u65bd', '\u65bd\u5c55', '\u65bd\u820d'], type: 'recognize', unit: 2, lesson: 8 },\n        { char: '\u61c8', components: ['\u5fc4', '\u89e3'], words: ['\u677e\u61c8', '\u61c8\u6020', '\u4e0d\u61c8'], type: 'recognize', unit: 2, lesson: 8 },\n        { char: '\u5b9b', components: ['\u5b80', '\u5917'], words: ['\u5b9b\u5982', '\u5b9b\u7136', '\u5927\u5b9b'], type: 'recognize', unit: 2, lesson: 8 },\n        { char: '\u7891', components: ['\u77f3', '\u5351'], words: ['\u77f3\u7891', '\u7891\u6587', '\u91cc\u7a0b\u7891'], type: 'recognize', unit: 2, lesson: 8 },\n        \/\/ \u56ed\u5730\u4e8c\n        { char: '\u5bbe', components: ['\u5b80', '\u5175'], words: ['\u5bbe\u5ba2', '\u5bbe\u9986', '\u5bbe\u81f3\u5982\u5f52'], type: 'recognize', unit: 2, lesson: 0 },\n        { char: '\u5409', components: ['\u58eb', '\u53e3'], words: ['\u5409\u5229', '\u5409\u7965', '\u5409\u5e86'], type: 'recognize', unit: 2, lesson: 0 },\n        { char: '\u54b8', components: ['\u620c', '\u53e3'], words: ['\u54b8\u5473', '\u54b8\u83dc', '\u54b8\u6de1'], type: 'recognize', unit: 2, lesson: 0 },\n        { char: '\u5146', components: ['\u5146'], words: ['\u5146\u5934', '\u9884\u5146', '\u5409\u5146'], type: 'recognize', unit: 2, lesson: 0 },\n        { char: '\u5ef7', components: ['\u5ef4', '\u58ec'], words: ['\u671d\u5ef7', '\u5ef7\u6756', '\u5bab\u5ef7'], type: 'recognize', unit: 2, lesson: 0 },\n        { char: '\u4e88', components: ['\u4e88'], words: ['\u7ed9\u4e88', '\u8d50\u4e88', '\u8d4b\u4e88'], type: 'recognize', unit: 2, lesson: 0 },\n        { char: '\u80bf', components: ['\u6708', '\u4e2d'], words: ['\u80bf\u80c0', '\u80bf\u75db', '\u80bf\u5757'], type: 'recognize', unit: 2, lesson: 0 },\n        { char: '\u9636', components: ['\u961d', '\u4ecb'], words: ['\u53f0\u9636', '\u9636\u6bb5', '\u9636\u68af'], type: 'recognize', unit: 2, lesson: 0 },\n        { char: '\u8dbe', components: ['\u8db3', '\u6b62'], words: ['\u811a\u8dbe', '\u8dbe\u9ad8\u6c14\u626c', '\u8dbe\u7532'], type: 'recognize', unit: 2, lesson: 0 },\n        { char: '\u653f', components: ['\u6b63', '\u6535'], words: ['\u653f\u5e9c', '\u653f\u6cbb', '\u653f\u7b56'], type: 'recognize', unit: 2, lesson: 0 },\n        { char: '\u6d4f', components: ['\u6c35', '\u5218'], words: ['\u6d4f\u89c8', '\u6d4f\u9633', '\u6d4f\u4eae'], type: 'recognize', unit: 2, lesson: 0 },\n        \/\/ \u7b2c\u4e09\u5355\u5143 \u7b2c9\u8bfe\n        { char: '\u6f2b', components: ['\u6c35', '\u66fc'], words: ['\u6d6a\u6f2b', '\u6f2b\u6e38', '\u6f2b\u957f'], type: 'both', unit: 3, lesson: 9 },\n        { char: '\u6d9b', components: ['\u6c35', '\u5bff'], words: ['\u6ce2\u6d9b', '\u6d6a\u6d9b', '\u6d9b\u58f0'], type: 'both', unit: 3, lesson: 9 },\n        { char: '\u7e41', components: ['\u654f', '\u7cf8'], words: ['\u7e41\u8363', '\u7e41\u591a', '\u7e41\u884d'], type: 'write', unit: 3, lesson: 9 },\n        { char: '\u706d', components: ['\u706b', '\u4e00'], words: ['\u706d\u706b', '\u706d\u4ea1', '\u6d88\u706d'], type: 'write', unit: 3, lesson: 9 },\n        { char: '\u85e4', components: ['\u8279', '\u6ed5'], words: ['\u85e4\u8513', '\u85e4\u6905', '\u85e4\u6761'], type: 'write', unit: 3, lesson: 9 },\n        { char: '\u841d', components: ['\u8279', '\u7f57'], words: ['\u841d\u535c', '\u85e4\u841d', '\u841d\u7b50'], type: 'write', unit: 3, lesson: 9 },\n        { char: '\u819d', components: ['\u6708', '\u687c'], words: ['\u819d\u76d6', '\u819d\u4e0b', '\u819d\u884c'], type: 'write', unit: 3, lesson: 9 },\n        { char: '\u8eb2', components: ['\u8eab', '\u6735'], words: ['\u8eb2\u85cf', '\u8eb2\u907f', '\u8eb2\u5f00'], type: 'write', unit: 3, lesson: 9 },\n        \/\/ \u7b2c10\u8bfe\n        { char: '\u6324', components: ['\u624c', '\u9f50'], words: ['\u62e5\u6324', '\u6324\u6ee1', '\u6324\u5151'], type: 'both', unit: 3, lesson: 10 },\n        { char: '\u53c9', components: ['\u53c8', '\u4e36'], words: ['\u53c9\u5b50', '\u4ea4\u53c9', '\u53c9\u8170'], type: 'both', unit: 3, lesson: 10 },\n        { char: '\u74f6', components: ['\u5e76', '\u74e6'], words: ['\u74f6\u5b50', '\u82b1\u74f6', '\u6c34\u74f6'], type: 'write', unit: 3, lesson: 10 },\n        { char: '\u6325', components: ['\u624c', '\u519b'], words: ['\u6325\u52a8', '\u6325\u624b', '\u53d1\u6325'], type: 'write', unit: 3, lesson: 10 },\n        \/\/ \u7b2c11\u8bfe\n        { char: '\u7ee3', components: ['\u7e9f', '\u79c0'], words: ['\u7ee3\u82b1', '\u7ee3\u7403', '\u9526\u7ee3'], type: 'both', unit: 3, lesson: 11 },\n        { char: '\u6f47', components: ['\u6c35', '\u8427'], words: ['\u6f47\u6d12', '\u6f47\u6e58', '\u98ce\u96e8\u6f47\u6f47'], type: 'both', unit: 3, lesson: 11 },\n        { char: '\u7efd', components: ['\u7e9f', '\u5b9a'], words: ['\u7efd\u653e', '\u7efd\u5f00', '\u7834\u7efd'], type: 'both', unit: 3, lesson: 11 },\n        { char: '\u6726', components: ['\u6708', '\u8499'], words: ['\u6726\u80e7', '\u6726\u6726', '\u6726\u6627'], type: 'both', unit: 3, lesson: 11 },\n        { char: '\u80e7', components: ['\u6708', '\u9f99'], words: ['\u6726\u80e7', '\u80e7\u6708', '\u80e7\u5149'], type: 'both', unit: 3, lesson: 11 },\n        { char: '\u6656', components: ['\u65e5', '\u519b'], words: ['\u6625\u6656', '\u671d\u6656', '\u4f59\u6656'], type: 'both', unit: 3, lesson: 11 },\n        { char: '\u5f9c', components: ['\u5f73', '\u5c1a'], words: ['\u5f9c\u5f89', '\u5f9c\u5f89\u5c71\u6c34'], type: 'both', unit: 3, lesson: 11 },\n        { char: '\u5f89', components: ['\u5f73', '\u7f8a'], words: ['\u5f9c\u5f89', '\u5f89\u5f9c'], type: 'both', unit: 3, lesson: 11 },\n        { char: '\u6866', components: ['\u6728', '\u534e'], words: ['\u767d\u6866', '\u6866\u6811', '\u6866\u6797'], type: 'write', unit: 3, lesson: 11 },\n        { char: '\u6d82', components: ['\u6c35', '\u4f59'], words: ['\u6d82\u8272', '\u6d82\u9e26', '\u6d82\u62b9'], type: 'write', unit: 3, lesson: 11 },\n        { char: '\u8338', components: ['\u8279', '\u8033'], words: ['\u8338\u6bdb', '\u9e7f\u8338', '\u677e\u8338'], type: 'write', unit: 3, lesson: 11 },\n        { char: '\u7a57', components: ['\u79be', '\u60e0'], words: ['\u7a3b\u7a57', '\u7a57\u5b50', '\u82b1\u7a57'], type: 'write', unit: 3, lesson: 11 },\n        { char: '\u5bc2', components: ['\u5b80', '\u53d4'], words: ['\u5bc2\u9759', '\u5bc2\u5bde', '\u5bc2\u5be5'], type: 'write', unit: 3, lesson: 11 },\n        { char: '\u971e', components: ['\u96e8', '\u53da'], words: ['\u971e\u5149', '\u5f69\u971e', '\u70df\u971e'], type: 'write', unit: 3, lesson: 11 },\n        { char: '\u62b9', components: ['\u624c', '\u672b'], words: ['\u62b9\u5e03', '\u62b9\u53bb', '\u6d82\u62b9'], type: 'write', unit: 3, lesson: 11 },\n        \/\/ \u7b2c12\u8bfe\uff08\u7565\u8bfb\uff09\n        { char: '\u70ab', components: ['\u706b', '\u7384'], words: ['\u70ab\u76ee', '\u70ab\u8000', '\u70ab\u5f69'], type: 'recognize', unit: 3, lesson: 12 },\n        { char: '\u57a2', components: ['\u571f', '\u540e'], words: ['\u6c61\u57a2', '\u5c18\u57a2', '\u85cf\u57a2\u7eb3\u6c61'], type: 'recognize', unit: 3, lesson: 12 },\n        { char: '\u602f', components: ['\u5fc4', '\u53bb'], words: ['\u602f\u61e6', '\u602f\u573a', '\u7f9e\u602f'], type: 'recognize', unit: 3, lesson: 12 },\n        { char: '\u66dd', components: ['\u65e5', '\u66b4'], words: ['\u66dd\u5149', '\u66dd\u6652', '\u66dd\u9732'], type: 'recognize', unit: 3, lesson: 12 },\n        { char: '\u8d64', components: ['\u8d64'], words: ['\u8d64\u811a', '\u8d64\u8bda', '\u9762\u7ea2\u8033\u8d64'], type: 'recognize', unit: 3, lesson: 12 },\n        { char: '\u6d89', components: ['\u6c35', '\u6b65'], words: ['\u6d89\u53ca', '\u6d89\u8db3', '\u8dcb\u6d89'], type: 'recognize', unit: 3, lesson: 12 },\n        { char: '\u6655', components: ['\u65e5', '\u519b'], words: ['\u6655\u8f66', '\u7729\u6655', '\u6655\u5934\u8f6c\u5411'], type: 'recognize', unit: 3, lesson: 12 },\n        \/\/ \u56ed\u5730\u4e09\n        { char: '\u5c48', components: ['\u5c38', '\u51fa'], words: ['\u5c48\u670d', '\u59d4\u5c48', '\u5c48\u6307'], type: 'recognize', unit: 3, lesson: 0 },\n        { char: '\u6e0a', components: ['\u6c35', '\u5dde'], words: ['\u6df1\u6e0a', '\u6e0a\u535a', '\u6e0a\u6e90'], type: 'recognize', unit: 3, lesson: 0 },\n        { char: '\u5b5f', components: ['\u5b50', '\u76bf'], words: ['\u5b5f\u5b50', '\u5b5f\u6625', '\u5b5f\u590f'], type: 'recognize', unit: 3, lesson: 0 },\n        { char: '\u752b', components: ['\u7528', '\u4e36'], words: ['\u752b\u5fd7', '\u752b\u5efa', '\u752b\u7acb'], type: 'recognize', unit: 3, lesson: 0 },\n        { char: '\u97e9', components: ['\u97e6', '\u65e5'], words: ['\u97e9\u56fd', '\u97e9\u6108', '\u97e9\u4fe1'], type: 'recognize', unit: 3, lesson: 0 },\n        { char: '\u6108', components: ['\u4fde', '\u5fc3'], words: ['\u6108\u52a0', '\u75ca\u6108', '\u6108\u6f14\u6108\u70c8'], type: 'recognize', unit: 3, lesson: 0 },\n        { char: '\u79b9', components: ['\u79b9'], words: ['\u5927\u79b9', '\u79b9\u738b', '\u79b9\u7538'], type: 'recognize', unit: 3, lesson: 0 },\n        { char: '\u9521', components: ['\u9485', '\u6613'], words: ['\u65e0\u9521', '\u9521\u7eb8', '\u9521\u5668'], type: 'recognize', unit: 3, lesson: 0 },\n        { char: '\u4ef2', components: ['\u4ebb', '\u4e2d'], words: ['\u4ef2\u590f', '\u4ef2\u5c3c', '\u4ef2\u88c1'], type: 'recognize', unit: 3, lesson: 0 },\n        { char: '\u9f9a', components: ['\u9f99', '\u5171'], words: ['\u9f9a\u59d3', '\u9f9a\u81ea\u73cd'], type: 'recognize', unit: 3, lesson: 0 },\n        \/\/ \u7b2c\u56db\u5355\u5143 \u7b2c13\u8bfe\n        { char: '\u8651', components: ['\u864d', '\u5fc3'], words: ['\u8003\u8651', '\u5fe7\u8651', '\u987e\u8651'], type: 'both', unit: 4, lesson: 13 },\n        { char: '\u804c', components: ['\u8033', '\u53ea'], words: ['\u804c\u4e1a', '\u804c\u8d23', '\u804c\u52a1'], type: 'both', unit: 4, lesson: 13 },\n        { char: '\u5c4f', components: ['\u5c38', '\u5e76'], words: ['\u5c4f\u98ce', '\u5c4f\u5e55', '\u5c4f\u606f'], type: 'both', unit: 4, lesson: 13 },\n        { char: '\u8e6d', components: ['\u8db3', '\u66fe'], words: ['\u78e8\u8e6d', '\u8e6d\u996d', '\u8e6d\u7834'], type: 'both', unit: 4, lesson: 13 },\n        { char: '\u7a3f', components: ['\u79be', '\u9ad8'], words: ['\u7a3f\u5b50', '\u8349\u7a3f', '\u7a3f\u4ef6'], type: 'both', unit: 4, lesson: 13 },\n        { char: '\u8154', components: ['\u6708', '\u7a7a'], words: ['\u53e3\u8154', '\u8154\u8c03', '\u80f8\u8154'], type: 'both', unit: 4, lesson: 13 },\n        { char: '\u6b83', components: ['\u6b79', '\u592e'], words: ['\u906d\u6b83', '\u7978\u6b83', '\u6b83\u53ca'], type: 'both', unit: 4, lesson: 13 },\n        { char: '\u6298', components: ['\u624c', '\u65a4'], words: ['\u6298\u65ad', '\u6253\u6298', '\u5468\u8f6c'], type: 'both', unit: 4, lesson: 13 },\n        { char: '\u5fe7', components: ['\u5fc4', '\u5c24'], words: ['\u5fe7\u8651', '\u62c5\u5fe7', '\u5fe7\u4f24'], type: 'write', unit: 4, lesson: 13 },\n        { char: '\u8d2a', components: ['\u4eca', '\u8d1d'], words: ['\u8d2a\u5fc3', '\u8d2a\u5a6a', '\u8d2a\u73a9'], type: 'write', unit: 4, lesson: 13 },\n        { char: '\u89e3', components: ['\u89d2', '\u5200', '\u725b'], words: ['\u89e3\u51b3', '\u7406\u89e3', '\u89e3\u5f00'], type: 'write', unit: 4, lesson: 13 },\n        { char: '\u95f7', components: ['\u95e8', '\u5fc3'], words: ['\u70e6\u95f7', '\u95f7\u70ed', '\u82e6\u95f7'], type: 'write', unit: 4, lesson: 13 },\n        { char: '\u86c7', components: ['\u866b', '\u5b83'], words: ['\u6bd2\u86c7', '\u86c7\u76ae', '\u86c7\u5f62'], type: 'write', unit: 4, lesson: 13 },\n        { char: '\u906d', components: ['\u8fb6', '\u66f9'], words: ['\u906d\u53d7', '\u906d\u9047', '\u906d\u96be'], type: 'write', unit: 4, lesson: 13 },\n        { char: '\u76c6', components: ['\u5206', '\u76bf'], words: ['\u82b1\u76c6', '\u8138\u76c6', '\u76c6\u5730'], type: 'write', unit: 4, lesson: 13 },\n        { char: '\u52c3', components: ['\u5b5b', '\u529b'], words: ['\u84ec\u52c3', '\u52c3\u53d1', '\u52c3\u7136'], type: 'write', unit: 4, lesson: 13 },\n        \/\/ \u7b2c14\u8bfe\n        { char: '\u7599', components: ['\u7592', '\u4e5e'], words: ['\u7599\u7629', '\u7599\u75a4', '\u7599\u76b1'], type: 'both', unit: 4, lesson: 14 },\n        { char: '\u7629', components: ['\u7592', '\u8fbe'], words: ['\u7599\u7629', '\u7629\u80cc', '\u7629\u5b50'], type: 'both', unit: 4, lesson: 14 },\n        { char: '\u4fae', components: ['\u4ebb', '\u6bcf'], words: ['\u4fae\u8fb1', '\u6b3a\u4fae', '\u4fae\u8511'], type: 'both', unit: 4, lesson: 14 },\n        { char: '\u6076', components: ['\u4e9a', '\u5fc3'], words: ['\u6076\u5fc3', '\u6076\u4e60', '\u6076\u52a3'], type: 'both', unit: 4, lesson: 14 },\n        { char: '\u804b', components: ['\u9f99', '\u8033'], words: ['\u804b\u54d1', '\u8033\u804b', '\u804b\u5b50'], type: 'both', unit: 4, lesson: 14 },\n        { char: '\u5544', components: ['\u53e3', '\u8c55'], words: ['\u5544\u98df', '\u5544\u6728\u9e1f', '\u5544\u5544'], type: 'both', unit: 4, lesson: 14 },\n        { char: '\u4f0f', components: ['\u4ebb', '\u72ac'], words: ['\u57cb\u4f0f', '\u4f0f\u6848', '\u4f0f\u51fb'], type: 'both', unit: 4, lesson: 14 },\n        { char: '\u54fc', components: ['\u53e3', '\u4ea8'], words: ['\u54fc\u5531', '\u54fc\u58f0', '\u54fc\u54c8'], type: 'both', unit: 4, lesson: 14 },\n        { char: '\u557c', components: ['\u53e3', '\u5e1d'], words: ['\u557c\u53eb', '\u557c\u54ed', '\u9e1f\u557c'], type: 'both', unit: 4, lesson: 14 },\n        { char: '\u51c4', components: ['\u51ab', '\u59bb'], words: ['\u51c4\u51c9', '\u51c4\u60e8', '\u51c4\u82e6'], type: 'both', unit: 4, lesson: 14 },\n        { char: '\u8ba8', components: ['\u8ba0', '\u5bf8'], words: ['\u8ba8\u538c', '\u8ba8\u8bba', '\u8ba8\u4f10'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u538c', components: ['\u5382', '\u72ac'], words: ['\u8ba8\u538c', '\u538c\u5026', '\u538c\u70e6'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u575d', components: ['\u571f', '\u8d1d'], words: ['\u5824\u575d', '\u575d\u5b50', '\u6c34\u575d'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u5fe0', components: ['\u4e2d', '\u5fc3'], words: ['\u5fe0\u5b9e', '\u5fe0\u8bda', '\u5fe0\u544a'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u6bd2', components: ['\u4e30', '\u6bcb'], words: ['\u6bd2\u836f', '\u6bd2\u5bb3', '\u6bd2\u86c7'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u7ee9', components: ['\u7e9f', '\u8d23'], words: ['\u6210\u7ee9', '\u7ee9\u70b9', '\u4e1a\u7ee9'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u5b75', components: ['\u5375', '\u5b5a'], words: ['\u5b75\u5316', '\u5b75\u86cb', '\u5b75\u80b2'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u8b66', components: ['\u656c', '\u8a00'], words: ['\u8b66\u5bdf', '\u8b66\u60d5', '\u62a5\u8b66'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u6212', components: ['\u6208', '\u5efe'], words: ['\u6212\u70df', '\u6212\u5c3a', '\u6212\u9a84\u6212\u8e81'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u6b6a', components: ['\u4e0d', '\u6b63'], words: ['\u6b6a\u659c', '\u6b6a\u66f2', '\u6b6a\u7406'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u5495', components: ['\u53e3', '\u53e4'], words: ['\u5495\u5495', '\u5495\u549a', '\u5495\u565c'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u6c64', components: ['\u6c35', '\u6c64'], words: ['\u559d\u6c64', '\u6c64\u5706', '\u6c64\u836f'], type: 'write', unit: 4, lesson: 14 },\n        { char: '\u6398', components: ['\u624c', '\u5c48'], words: ['\u6316\u6398', '\u6398\u8fdb', '\u6398\u5893'], type: 'write', unit: 4, lesson: 14 },\n        \/\/ \u7b2c15\u8bfe\n        { char: '\u770b', components: ['\u624b', '\u76ee'], words: ['\u770b\u89c1', '\u770b\u4e66', '\u770b\u62a4'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u56a3', components: ['\u9875', '\u53e3', '\u53e3'], words: ['\u56a3\u5f20', '\u55a7\u56a3', '\u53eb\u56a3'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u542d', components: ['\u53e3', '\u4ea2'], words: ['\u542d\u58f0', '\u542d\u6c14', '\u5f15\u542d\u9ad8\u6b4c'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u5420', components: ['\u53e3', '\u72ac'], words: ['\u72ac\u5420', '\u5420\u53eb', '\u5420\u58f0'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u4fc3', components: ['\u4ebb', '\u8db3'], words: ['\u4fc3\u8fdb', '\u50ac\u4fc3', '\u4fc3\u6210'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u9887', components: ['\u76ae', '\u9875'], words: ['\u504f\u9887', '\u9887\u4e3a', '\u9887\u4e45'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u5962', components: ['\u5927', '\u8005'], words: ['\u5962\u4f88', '\u5962\u671b', '\u5962\u534e'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u4f88', components: ['\u4ebb', '\u591a'], words: ['\u5962\u4f88', '\u4f88\u9761', '\u4f88\u8c08'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u82df', components: ['\u8279', '\u53e5'], words: ['\u82df\u4e14', '\u82df\u5168', '\u82df\u540c'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u4f8d', components: ['\u4ebb', '\u5bfa'], words: ['\u4f8d\u5019', '\u4f8d\u536b', '\u4f8d\u4ece'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u7aa5', components: ['\u7a74', '\u89c4'], words: ['\u7aa5\u89c6', '\u7aa5\u63a2', '\u7aa5\u6d4b'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u4f3a', components: ['\u4ebb', '\u53f8'], words: ['\u7aa5\u4f3a', '\u4f3a\u673a', '\u4f3a\u5019'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u4f9b', components: ['\u4ebb', '\u5171'], words: ['\u63d0\u4f9b', '\u4f9b\u517b', '\u4f9b\u54c1'], type: 'both', unit: 4, lesson: 15 },\n        { char: '\u5267', components: ['\u5c45', '\u5202'], words: ['\u620f\u5267', '\u5267\u573a', '\u5267\u70c8'], type: 'write', unit: 4, lesson: 15 },\n        { char: '\u8b6c', components: ['\u8f9f', '\u8a00'], words: ['\u8b6c\u5982', '\u8b6c\u55bb', '\u8b6c\u82e5'], type: 'write', unit: 4, lesson: 15 },\n        { char: '\u9986', components: ['\u9963', '\u5b98'], words: ['\u65c5\u9986', '\u535a\u7269\u9986', '\u996d\u9986'], type: 'write', unit: 4, lesson: 15 },\n        { char: '\u813e', components: ['\u6708', '\u5351'], words: ['\u813e\u80c3', '\u813e\u810f', '\u813e\u6c14'], type: 'write', unit: 4, lesson: 15 },\n        { char: '\u654f', components: ['\u6bcf', '\u6535'], words: ['\u654f\u6377', '\u654f\u611f', '\u654f\u9510'], type: 'write', unit: 4, lesson: 15 },\n        { char: '\u6377', components: ['\u624c', '\u758c'], words: ['\u654f\u6377', '\u5feb\u6377', '\u6377\u62a5'], type: 'write', unit: 4, lesson: 15 },\n        { char: '\u6602', components: ['\u65e5', '\u6602'], words: ['\u9ad8\u6602', '\u6602\u626c', '\u6602\u9996'], type: 'write', unit: 4, lesson: 15 },\n        { char: '\u6dfb', components: ['\u6c35', '\u5fdd'], words: ['\u589e\u6dfb', '\u6dfb\u52a0', '\u6dfb\u4e71'], type: 'write', unit: 4, lesson: 15 },\n        \/\/ \u56ed\u5730\u56db\n        { char: '\u809d', components: ['\u6708', '\u5e72'], words: ['\u809d\u810f', '\u809d\u708e', '\u809d\u706b'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u79c6', components: ['\u79be', '\u5e72'], words: ['\u79f8\u79c6', '\u79c6\u5b50', '\u9ea6\u79c6'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u4fcf', components: ['\u4ebb', '\u8096'], words: ['\u4fcf\u4e3d', '\u4fcf\u76ae', '\u4fcf\u5a9a'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u5ced', components: ['\u5c71', '\u8096'], words: ['\u5ced\u58c1', '\u9661\u5ced', '\u5ced\u7acb'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u54fa', components: ['\u53e3', '\u752b'], words: ['\u54fa\u80b2', '\u54fa\u4e73', '\u54fa\u517b'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u6d66', components: ['\u6c35', '\u752b'], words: ['\u6d66\u53e3', '\u6d66\u6c5f', '\u6d66\u53d1'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u6ca6', components: ['\u6c35', '\u4ed1'], words: ['\u6ca6\u9677', '\u6ca6\u843d', '\u6c89\u6ca6'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u62a1', components: ['\u624c', '\u4ed1'], words: ['\u62a1\u8d77', '\u62a1\u62f3', '\u62a1\u81c2'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u6da3', components: ['\u6c35', '\u5942'], words: ['\u6da3\u6563', '\u6da3\u7136', '\u6da3\u91ca'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u7115', components: ['\u706b', '\u5942'], words: ['\u7115\u53d1', '\u7115\u7136\u4e00\u65b0', '\u7115\u5f69'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u4fca', components: ['\u4ebb', '\u590b'], words: ['\u4fca\u7f8e', '\u4fca\u4fcf', '\u82f1\u4fca'], type: 'recognize', unit: 4, lesson: 0 },\n        { char: '\u5cfb', components: ['\u5c71', '\u590b'], words: ['\u5cfb\u5cad', '\u4e25\u5cfb', '\u9661\u5cfb'], type: 'recognize', unit: 4, lesson: 0 },\n        \/\/ \u7b2c\u4e94\u5355\u5143 \u7b2c16\u8bfe\n        { char: '\u6269', components: ['\u624c', '\u5e7f'], words: ['\u6269\u5927', '\u6269\u5c55', '\u6269\u5145'], type: 'both', unit: 5, lesson: 16 },\n        { char: '\u8377', components: ['\u8279', '\u4f55'], words: ['\u8377\u82b1', '\u8377\u53f6', '\u8377\u5858'], type: 'both', unit: 5, lesson: 16 },\n        { char: '\u5239', components: ['\u5202', '\u6740'], words: ['\u5239\u8f66', '\u5239\u90a3', '\u5239\u4f4f'], type: 'both', unit: 5, lesson: 16 },\n        { char: '\u9576', components: ['\u9485', '\u8944'], words: ['\u9576\u5d4c', '\u9576\u7259', '\u9576\u91d1'], type: 'both', unit: 5, lesson: 16 },\n        { char: '\u8303', components: ['\u8279', '\u6c3e'], words: ['\u6a21\u8303', '\u8303\u56f4', '\u8303\u4f8b'], type: 'write', unit: 5, lesson: 16 },\n        { char: '\u52aa', components: ['\u5974', '\u529b'], words: ['\u52aa\u529b', '\u52aa\u5634', '\u52aa\u52b2'], type: 'write', unit: 5, lesson: 16 },\n        { char: '\u70c2', components: ['\u706b', '\u5170'], words: ['\u707f\u70c2', '\u7834\u70c2', '\u70c2\u6f2b'], type: 'write', unit: 5, lesson: 16 },\n        { char: '\u66ff', components: ['\u592b', '\u65e5'], words: ['\u4ee3\u66ff', '\u66ff\u6362', '\u66ff\u8eab'], type: 'write', unit: 5, lesson: 16 },\n        { char: '\u7d2b', components: ['\u6b64', '\u7cf8'], words: ['\u7d2b\u8272', '\u7d2b\u7ea2', '\u7d2b\u6a80'], type: 'write', unit: 5, lesson: 16 },\n        { char: '\u4ec5', components: ['\u4ebb', '\u53c8'], words: ['\u4ec5\u4ec5', '\u4ec5\u6709', '\u4e0d\u4ec5'], type: 'write', unit: 5, lesson: 16 },\n        \/\/ \u7b2c17\u8bfe\n        { char: '\u6d59', components: ['\u6c35', '\u6298'], words: ['\u6d59\u6c5f', '\u6d59\u83dc', '\u6d59\u5927'], type: 'both', unit: 5, lesson: 17 },\n        { char: '\u7c07', components: ['\u2eae', '\u65cf'], words: ['\u7c07\u62e5', '\u82b1\u7c07', '\u4e00\u7c07'], type: 'both', unit: 5, lesson: 17 },\n        { char: '\u81c0', components: ['\u6708', '\u6bbf'], words: ['\u81c0\u90e8', '\u81c0\u5c16', '\u81c0\u56f4'], type: 'both', unit: 5, lesson: 17 },\n        { char: '\u6f06', components: ['\u6c35', '\u687c'], words: ['\u6cb9\u6f06', '\u6f06\u9ed1', '\u6f06\u5668'], type: 'both', unit: 5, lesson: 17 },\n        { char: '\u873f', components: ['\u866b', '\u5b9b'], words: ['\u873f\u8712', '\u873f\u66f2', '\u873f\u7ed5'], type: 'both', unit: 5, lesson: 17 },\n        { char: '\u8712', components: ['\u866b', '\u5ef6'], words: ['\u873f\u8712', '\u8712\u86b0', '\u8712\u8712'], type: 'both', unit: 5, lesson: 17 },\n        { char: '\u7f57', components: ['\u7f52', '\u5915'], words: ['\u7f57\u5217', '\u7f57\u7f51', '\u7f57\u76d8'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u675c', components: ['\u6728', '\u571f'], words: ['\u675c\u9e43', '\u675c\u64b0', '\u675c\u7edd'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u9e43', components: ['\u53e3', '\u9e1f'], words: ['\u675c\u9e43', '\u9e43\u9e1f', '\u9e43\u557c'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u7a84', components: ['\u7a74', '\u4e4d'], words: ['\u72ed\u7a84', '\u7a84\u5c0f', '\u5bbd\u7a84'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u90c1', components: ['\u6709', '\u961d'], words: ['\u5fe7\u90c1', '\u90c1\u95f7', '\u90c1\u90c1\u8471\u8471'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u80a9', components: ['\u6237', '\u6708'], words: ['\u80a9\u8180', '\u80a9\u80db', '\u80a9\u8d1f'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u79fb', components: ['\u79be', '\u591a'], words: ['\u79fb\u52a8', '\u8fc1\u79fb', '\u8f6c\u79fb'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u989d', components: ['\u5ba2', '\u9875'], words: ['\u989d\u5934', '\u989d\u5916', '\u540d\u989d'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u9646', components: ['\u961d', '\u51fb'], words: ['\u9646\u5730', '\u9646\u7eed', '\u5927\u9646'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u4e73', components: ['\u4e73', '\u4e5a'], words: ['\u4e73\u767d', '\u4e73\u6c41', '\u4e73\u916a'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u7b0b', components: ['\u2eae', '\u5c39'], words: ['\u7af9\u7b0b', '\u6625\u7b0b', '\u7b0b\u82bd'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u7aef', components: ['\u7acb', '\u7aef'], words: ['\u7aef\u6b63', '\u7aef\u8be6', '\u5f00\u7aef'], type: 'write', unit: 5, lesson: 17 },\n        { char: '\u6e90', components: ['\u6c35', '\u539f'], words: ['\u6c34\u6e90', '\u6765\u6e90', '\u8d44\u6e90'], type: 'write', unit: 5, lesson: 17 },\n        \/\/ \u7b2c\u516d\u5355\u5143 \u7b2c18\u8bfe\n        { char: '\u606d', components: ['\u5171', '\u2e97'], words: ['\u606d\u656c', '\u606d\u7ef4', '\u606d\u559c'], type: 'both', unit: 6, lesson: 18 },\n        { char: '\u52e4', components: ['\u5807', '\u529b'], words: ['\u52e4\u594b', '\u52e4\u52b3', '\u52e4\u6073'], type: 'both', unit: 6, lesson: 18 },\n        { char: '\u7109', components: ['\u7109'], words: ['\u7109\u77e5', '\u7109\u80fd', '\u5fc3\u4e0d\u5728\u7109'], type: 'both', unit: 6, lesson: 18 },\n        { char: '\u5352', components: ['\u4ea0', '\u4ece'], words: ['\u58eb\u5352', '\u5352\u4e1a', '\u5352\u7136'], type: 'both', unit: 6, lesson: 18 },\n        { char: '\u56ca', components: ['\u4e00', '\u53e3', '\u4e00', '\u8944'], words: ['\u884c\u56ca', '\u56ca\u62ec', '\u56ca\u4e2d\u7f9e\u6da9'], type: 'write', unit: 6, lesson: 18 },\n        { char: '\u8424', components: ['\u8279', '\u8367'], words: ['\u8424\u706b\u866b', '\u8424\u5149', '\u8424\u77f3'], type: 'write', unit: 6, lesson: 18 },\n        { char: '\u535a', components: ['\u5341', '\u5c03'], words: ['\u535a\u5b66', '\u535a\u58eb', '\u535a\u5927'], type: 'write', unit: 6, lesson: 18 },\n        { char: '\u8d2b', components: ['\u5206', '\u8d1d'], words: ['\u8d2b\u56f0', '\u8d2b\u7a77', '\u8d2b\u5bcc'], type: 'write', unit: 6, lesson: 18 },\n        { char: '\u9022', components: ['\u8fb6', '\u5906'], words: ['\u91cd\u9022', '\u9022\u8fce', '\u6bcf\u9022'], type: 'write', unit: 6, lesson: 18 },\n        \/\/ \u7b2c19\u8bfe\n        { char: '\u664b', components: ['\u4e9a', '\u65e5'], words: ['\u664b\u4ee3', '\u664b\u7ea7', '\u664b\u57ce'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u7d6e', components: ['\u5982', '\u7cf8'], words: ['\u67f3\u7d6e', '\u68c9\u7d6e', '\u7d6e\u53e8'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u626d', components: ['\u624c', '\u4e11'], words: ['\u626d\u52a8', '\u626d\u6253', '\u522b\u626d'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u59e5', components: ['\u5973', '\u8001'], words: ['\u59e5\u59e5', '\u59e5\u7237', '\u5916\u59e5'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u5427', components: ['\u53e3', '\u5df4'], words: ['\u7f51\u5427', '\u9152\u5427', '\u5427\u53f0'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u585e', components: ['\u5b80', '\u4e95', '\u571f'], words: ['\u585e\u8f66', '\u585e\u5916', '\u585e\u8d23'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u545c', components: ['\u53e3', '\u4e4c'], words: ['\u545c\u54bd', '\u545c\u547c', '\u545c\u545c'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u54c7', components: ['\u53e3', '\u572d'], words: ['\u54c7\u54c7', '\u54c7\u585e', '\u54c7\u5566'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u7ce0', components: ['\u7c73', '\u5eb7'], words: ['\u7c73\u7ce0', '\u7ce0\u79d5', '\u7ce0\u919b'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u6813', components: ['\u6728', '\u5168'], words: ['\u67aa\u6813', '\u6813\u5b50', '\u87ba\u6813'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u6346', components: ['\u624c', '\u56f0'], words: ['\u6346\u7ed1', '\u6346\u624e', '\u6346\u4f4f'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u7ed1', components: ['\u7e9f', '\u90a6'], words: ['\u7ed1\u67b6', '\u7ed1\u5e26', '\u7ed1\u624e'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u52ab', components: ['\u53bb', '\u529b'], words: ['\u62a2\u52ab', '\u52ab\u96be', '\u52ab\u6301'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u6bd9', components: ['\u6bd4', '\u6b7b'], words: ['\u51fb\u6bd9', '\u67aa\u6bd9', '\u6bd9\u547d'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u6252', components: ['\u624c', '\u516b'], words: ['\u6252\u5f00', '\u6252\u624b', '\u6252\u62c9'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u5c38', components: ['\u5c38'], words: ['\u5c38\u4f53', '\u5c38\u9996', '\u5c38\u9aa8'], type: 'both', unit: 6, lesson: 19 },\n        { char: '\u7095', components: ['\u706b', '\u4ea2'], words: ['\u7095\u5934', '\u7095\u5e2d', '\u706b\u7095'], type: 'write', unit: 6, lesson: 19 },\n        { char: '\u94c5', components: ['\u9485', '\u357b'], words: ['\u94c5\u7b14', '\u94c5\u7403', '\u94c5\u5c18'], type: 'write', unit: 6, lesson: 19 },\n        { char: '\u54e9', components: ['\u53e3', '\u91cc'], words: ['\u53fd\u54e9\u5495\u565c', '\u54e9\u54e9\u5566\u5566'], type: 'write', unit: 6, lesson: 19 },\n        { char: '\u80f3', components: ['\u6708', '\u5404'], words: ['\u80f3\u818a', '\u80f3\u81c2', '\u80f3\u80a2'], type: 'write', unit: 6, lesson: 19 },\n        { char: '\u818a', components: ['\u6708', '\u5c03'], words: ['\u80f3\u818a', '\u8d64\u818a', '\u818a\u5b50'], type: 'write', unit: 6, lesson: 19 },\n        { char: '\u7ef8', components: ['\u7e9f', '\u5468'], words: ['\u4e1d\u7ef8', '\u7ef8\u7f0e', '\u7ef8\u5e03'], type: 'write', unit: 6, lesson: 19 },\n        { char: '\u654c', components: ['\u820c', '\u6535'], words: ['\u654c\u4eba', '\u654c\u5bf9', '\u65e0\u654c'], type: 'write', unit: 6, lesson: 19 },\n        { char: '\u8d81', components: ['\u8d70', '\u3431'], words: ['\u8d81\u65e9', '\u8d81\u673a', '\u8d81\u70ed'], type: 'write', unit: 6, lesson: 19 },\n        { char: '\u614c', components: ['\u5fc4', '\u8352'], words: ['\u614c\u5fd9', '\u614c\u5f20', '\u60ca\u614c'], type: 'write', unit: 6, lesson: 19 },\n        \/\/ \u7b2c20\u8bfe\uff08\u7565\u8bfb\uff09\n        { char: '\u5fbd', components: ['\u5f73', '\u7cfb'], words: ['\u5fbd\u7ae0', '\u56fd\u5fbd', '\u5b89\u5fbd'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u8c1c', components: ['\u8ba0', '\u8ff7'], words: ['\u8c1c\u8bed', '\u8c1c\u56e2', '\u89e3\u8c1c'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u5507', components: ['\u8fb0', '\u53e3'], words: ['\u5634\u5507', '\u5507\u9f7f', '\u5507\u5370'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u5c1a', components: ['\u5c0f', '\u518b'], words: ['\u9ad8\u5c1a', '\u65f6\u5c1a', '\u5d07\u5c1a'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u8364', components: ['\u8279', '\u519b'], words: ['\u8364\u83dc', '\u8364\u8165', '\u8364\u98df'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u5014', components: ['\u4ebb', '\u5c48'], words: ['\u5014\u5f3a', '\u5014\u5934', '\u5014\u6c14'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u5f3a', components: ['\u5f13', '\u867d'], words: ['\u5f3a\u5927', '\u575a\u5f3a', '\u5f3a\u8feb'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u5631', components: ['\u53e3', '\u5c5e'], words: ['\u5631\u5490', '\u5631\u6258', '\u53ee\u5631'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u5490', components: ['\u53e3', '\u4ed8'], words: ['\u5631\u5490', '\u5429\u5490', '\u5490\u6258'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u6cae', components: ['\u6c35', '\u4e14'], words: ['\u6cae\u4e27', '\u6cae\u574f', '\u6cae\u6cfd'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u7eea', components: ['\u7e9f', '\u8005'], words: ['\u60c5\u7eea', '\u601d\u7eea', '\u7eea\u8a00'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u542d', components: ['\u53e3', '\u4ea2'], words: ['\u542d\u58f0', '\u542d\u6c14', '\u5f15\u542d\u9ad8\u6b4c'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u5639', components: ['\u53e3', '\u5c1e'], words: ['\u5639\u4eae', '\u5639\u5533', '\u5639\u7545'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u4eea', components: ['\u4ebb', '\u4e49'], words: ['\u4eea\u5f0f', '\u793c\u4eea', '\u4eea\u5668'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u8e6c', components: ['\u8db3', '\u767b'], words: ['\u8e6c\u8f66', '\u8e6c\u817f', '\u8e6c\u8e0f'], type: 'recognize', unit: 6, lesson: 20 },\n        { char: '\u59a8', components: ['\u5973', '\u65b9'], words: ['\u59a8\u788d', '\u59a8\u5bb3', '\u4e0d\u59a8'], type: 'recognize', unit: 6, lesson: 20 },\n        \/\/ \u7b2c21\u8bfe\uff08\u7565\u8bfb\uff09\n        { char: '\u6413', components: ['\u624c', '\u5dee'], words: ['\u6413\u624b', '\u6413\u6d17', '\u6413\u6fa1'], type: 'recognize', unit: 6, lesson: 21 },\n        { char: '\u8475', components: ['\u8279', '\u7678'], words: ['\u5411\u65e5\u8475', '\u8475\u82b1', '\u8475\u6247'], type: 'recognize', unit: 6, lesson: 21 },\n        { char: '\u7948', components: ['\u793b', '\u65a4'], words: ['\u7948\u7977', '\u7948\u6c42', '\u7948\u96e8'], type: 'recognize', unit: 6, lesson: 21 },\n        { char: '\u9057', components: ['\u8fb6', '\u8d35'], words: ['\u9057\u4f20', '\u9057\u5931', '\u9057\u61be'], type: 'recognize', unit: 6, lesson: 21 },\n        { char: '\u61be', components: ['\u5fc4', '\u611f'], words: ['\u9057\u61be', '\u7f3a\u61be', '\u9707\u61be'], type: 'recognize', unit: 6, lesson: 21 },\n        { char: '\u6c61', components: ['\u6c35', '\u4e8f'], words: ['\u6c61\u67d3', '\u6c61\u70b9', '\u6c61\u8511'], type: 'recognize', unit: 6, lesson: 21 },\n        { char: '\u5c51', components: ['\u5c38', '\u8096'], words: ['\u7eb8\u5c51', '\u6728\u5c51', '\u7410\u5c51'], type: 'recognize', unit: 6, lesson: 21 },\n        \/\/ \u7b2c\u4e03\u5355\u5143 \u7b2c22\u8bfe\n        { char: '\u8299', components: ['\u8279', '\u592b'], words: ['\u8299\u84c9', '\u8299\u8556', '\u8299\u5bb9'], type: 'both', unit: 7, lesson: 22 },\n        { char: '\u84c9', components: ['\u8279', '\u5bb9'], words: ['\u8299\u84c9', '\u84c9\u57ce', '\u8c46\u84c9'], type: 'both', unit: 7, lesson: 22 },\n        { char: '\u6d1b', components: ['\u6c35', '\u5404'], words: ['\u6d1b\u9633', '\u6d1b\u6cb3', '\u6d1b\u6c34'], type: 'both', unit: 7, lesson: 22 },\n        { char: '\u5355', components: ['\u4e37', '\u5341'], words: ['\u5355\u72ec', '\u7b80\u5355', '\u5355\u4f4d'], type: 'both', unit: 7, lesson: 22 },\n        { char: '\u781a', components: ['\u77f3', '\u89c1'], words: ['\u781a\u53f0', '\u781a\u6c60', '\u781a\u5c71'], type: 'both', unit: 7, lesson: 22 },\n        { char: '\u4e7e', components: ['\u501d', '\u4e5e'], words: ['\u4e7e\u5764', '\u4e7e\u9686', '\u4e7e\u71e5'], type: 'both', unit: 7, lesson: 22 },\n        { char: '\u5764', components: ['\u571f', '\u7533'], words: ['\u4e7e\u5764', '\u5764\u89d2', '\u5764\u8f66'], type: 'both', unit: 7, lesson: 22 },\n        { char: '\u58f6', components: ['\u58eb', '\u5196', '\u4e1a'], words: ['\u6c34\u58f6', '\u9152\u58f6', '\u8336\u58f6'], type: 'write', unit: 7, lesson: 22 },\n        { char: '\u96c1', components: ['\u5382', '\u4ebb', '\u96b9'], words: ['\u5927\u96c1', '\u96c1\u7fa4', '\u96c1\u9635'], type: 'write', unit: 7, lesson: 22 },\n        \/\/ \u7b2c23\u8bfe\n        { char: '\u5f25', components: ['\u5f13', '\u5c14'], words: ['\u5f25\u8865', '\u5f25\u6f2b', '\u5f25\u6563'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u8109', components: ['\u6708', '\u6c38'], words: ['\u8109\u640f', '\u5c71\u8109', '\u8109\u7edc'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u5256', components: ['\u5485', '\u5202'], words: ['\u89e3\u5256', '\u5256\u5f00', '\u5256\u9762'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u88f8', components: ['\u8864', '\u679c'], words: ['\u88f8\u9732', '\u88f8\u4f53', '\u8d64\u88f8'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u6ce3', components: ['\u6c35', '\u7acb'], words: ['\u54ed\u6ce3', '\u6ce3\u8bc9', '\u6ce3\u4e0d\u6210\u58f0'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u6c79', components: ['\u6c35', '\u5308'], words: ['\u6c79\u6d8c', '\u6c79\u6c79', '\u6c79\u6d9b'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u7ef4', components: ['\u7e9f', '\u96b9'], words: ['\u7ef4\u6301', '\u7ef4\u62a4', '\u601d\u7ef4'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u9163', components: ['\u9149', '\u7518'], words: ['\u9163\u7761', '\u9163\u7545', '\u9152\u9163'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u68b0', components: ['\u6728', '\u6212'], words: ['\u673a\u68b0', '\u5668\u68b0', '\u68b0\u6597'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u5351', components: ['\u767d', '\u5341'], words: ['\u5351\u5fae', '\u5351\u52a3', '\u5351\u8d31'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u5c97', components: ['\u5c71', '\u5188'], words: ['\u5c97\u4f4d', '\u5c97\u54e8', '\u5c97\u4ead'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u5bb0', components: ['\u5b80', '\u8f9b'], words: ['\u5c60\u5bb0', '\u5bb0\u6740', '\u4e3b\u5bb0'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u9063', components: ['\u8fb6', '\u3749'], words: ['\u6d3e\u9063', '\u9063\u9001', '\u6d88\u9063'], type: 'both', unit: 7, lesson: 23 },\n        { char: '\u4f26', components: ['\u4ebb', '\u4ed1'], words: ['\u4f26\u7406', '\u4f26\u6566', '\u4eba\u4f26'], type: 'write', unit: 7, lesson: 23 },\n        { char: '\u8179', components: ['\u6708', '\u590d'], words: ['\u8179\u90e8', '\u8179\u5730', '\u7a7a\u8179'], type: 'write', unit: 7, lesson: 23 },\n        { char: '\u7a9f', components: ['\u7a74', '\u5c48'], words: ['\u7a9f\u7abf', '\u77f3\u7a9f', '\u6d1e\u7a9f'], type: 'write', unit: 7, lesson: 23 },\n        { char: '\u7abf', components: ['\u7a74', '\u9686'], words: ['\u7a9f\u7abf', '\u7abf\u7a79', '\u7abf\u6d1e'], type: 'write', unit: 7, lesson: 23 },\n        { char: '\u6df7', components: ['\u6c35', '\u6606'], words: ['\u6df7\u5408', '\u6df7\u4e71', '\u6df7\u6d4a'], type: 'write', unit: 7, lesson: 23 },\n        { char: '\u5636', components: ['\u53e3', '\u65af'], words: ['\u5636\u53eb', '\u5636\u54d1', '\u5636\u9e23'], type: 'write', unit: 7, lesson: 23 },\n        { char: '\u79e9', components: ['\u79be', '\u5931'], words: ['\u79e9\u5e8f', '\u79e9\u6b21', '\u79e9\u7136'], type: 'write', unit: 7, lesson: 23 },\n        { char: '\u63aa', components: ['\u624c', '\u6614'], words: ['\u63aa\u65bd', '\u63aa\u8f9e', '\u4e0d\u77e5\u6240\u63aa'], type: 'write', unit: 7, lesson: 23 },\n        { char: '\u8df5', components: ['\u8db3', '\u620b'], words: ['\u5b9e\u8df5', '\u8df5\u8e0f', '\u8df5\u884c'], type: 'write', unit: 7, lesson: 23 },\n        \/\/ \u7b2c24\u8bfe\uff08\u7565\u8bfb\uff09\n        { char: '\u5f79', components: ['\u5f73', '\u6bb3'], words: ['\u6218\u5f79', '\u670d\u5f79', '\u52b3\u5f79'], type: 'recognize', unit: 7, lesson: 24 },\n        { char: '\u5c61', components: ['\u5c38', '\u5a04'], words: ['\u5c61\u6b21', '\u5c61\u5c61', '\u5c61\u89c1\u4e0d\u9c9c'], type: 'recognize', unit: 7, lesson: 24 },\n        { char: '\u542f', components: ['\u6237', '\u53e3'], words: ['\u542f\u53d1', '\u542f\u52a8', '\u5f00\u542f'], type: 'recognize', unit: 7, lesson: 24 },\n        { char: '\u6467', components: ['\u624c', '\u5d14'], words: ['\u6467\u6bc1', '\u6467\u6b8b', '\u6467\u6298'], type: 'recognize', unit: 7, lesson: 24 },\n        { char: '\u96f9', components: ['\u96e8', '\u5305'], words: ['\u51b0\u96f9', '\u96f9\u5b50', '\u96f9\u707e'], type: 'recognize', unit: 7, lesson: 24 },\n        { char: '\u6655', components: ['\u65e5', '\u519b'], words: ['\u6655\u8f66', '\u7729\u6655', '\u6655\u5934\u8f6c\u5411'], type: 'recognize', unit: 7, lesson: 24 },\n        { char: '\u819b', components: ['\u6708', '\u5802'], words: ['\u80f8\u819b', '\u819b\u7ebf', '\u67aa\u819b'], type: 'recognize', unit: 7, lesson: 24 },\n        \/\/ \u7b2c25\u8bfe\uff08\u7565\u8bfb\uff09\n        { char: '\u6cf0', components: ['\u592b', '\u6c3a'], words: ['\u6cf0\u5c71', '\u6cf0\u5b89', '\u5b89\u6cf0'], type: 'recognize', unit: 7, lesson: 25 },\n        { char: '\u6756', components: ['\u6728', '\u4e08'], words: ['\u62d0\u6756', '\u6756\u8d23', '\u624b\u6756'], type: 'recognize', unit: 7, lesson: 25 },\n        { char: '\u655e', components: ['\u5c1a', '\u6535'], words: ['\u655e\u4eae', '\u655e\u5f00', '\u5bbd\u655e'], type: 'recognize', unit: 7, lesson: 25 },\n        { char: '\u62d8', components: ['\u624c', '\u53e5'], words: ['\u62d8\u675f', '\u62d8\u8c28', '\u62d8\u7559'], type: 'recognize', unit: 7, lesson: 25 },\n        { char: '\u8574', components: ['\u8279', '\u7f0a'], words: ['\u8574\u542b', '\u8574\u85cf', '\u8574\u6db5'], type: 'recognize', unit: 7, lesson: 25 },\n        \/\/ \u56ed\u5730\u4e03\n        { char: '\u853c', components: ['\u8279', '\u8c12'], words: ['\u548c\u853c', '\u853c\u7136', '\u853c\u853c'], type: 'recognize', unit: 7, lesson: 0 },\n        { char: '\u6177', components: ['\u5fc4', '\u5eb7'], words: ['\u6177\u6168', '\u6177\u8fbe', '\u6177\u723d'], type: 'recognize', unit: 7, lesson: 0 },\n        { char: '\u6168', components: ['\u5fc4', '\u65e2'], words: ['\u6177\u6168', '\u6168\u53f9', '\u611f\u6168'], type: 'recognize', unit: 7, lesson: 0 },\n        { char: '\u8d24', components: ['\u81e3', '\u53c8', '\u8d1d'], words: ['\u8d24\u60e0', '\u8d24\u660e', '\u8d24\u826f'], type: 'recognize', unit: 7, lesson: 0 },\n        { char: '\u621a', components: ['\u6208', '\u53d4'], words: ['\u4eb2\u621a', '\u621a\u621a', '\u60b2\u621a'], type: 'recognize', unit: 7, lesson: 0 },\n        { char: '\u60e7', components: ['\u5fc4', '\u5177'], words: ['\u6050\u60e7', '\u60e7\u6015', '\u754f\u60e7'], type: 'recognize', unit: 7, lesson: 0 },\n        { char: '\u5f6c', components: ['\u6728', '\u6749'], words: ['\u5f6c\u5f6c', '\u5f6c\u5f6c\u6709\u793c', '\u6587\u8d28\u5f6c\u5f6c'], type: 'recognize', unit: 7, lesson: 0 },\n        { char: '\u8e81', components: ['\u8db3', '\u55bf'], words: ['\u6025\u8e81', '\u66b4\u8e81', '\u8e81\u52a8'], type: 'recognize', unit: 7, lesson: 0 },\n        { char: '\u711a', components: ['\u6797', '\u706b'], words: ['\u711a\u70e7', '\u711a\u6bc1', '\u711a\u4e66'], type: 'recognize', unit: 7, lesson: 0 },\n        \/\/ \u7b2c\u516b\u5355\u5143 \u7b2c26\u8bfe\n        { char: '\u5996', components: ['\u5973', '\u592d'], words: ['\u5996\u602a', '\u5996\u5a06', '\u5996\u5a9a'], type: 'both', unit: 8, lesson: 26 },\n        { char: '\u77e9', components: ['\u77e2', '\u5de8'], words: ['\u77e9\u5f62', '\u89c4\u77e9', '\u77e9\u5c3a'], type: 'both', unit: 8, lesson: 26 },\n        { char: '\u4e56', components: ['\u5343', '\u5317'], words: ['\u4e56\u5de7', '\u4e56\u987a', '\u4e56\u5f20'], type: 'both', unit: 8, lesson: 26 },\n        { char: '\u64b5', components: ['\u624c', '\u8f87'], words: ['\u64b5\u8d70', '\u64b5\u51fa', '\u64b5\u8dd1'], type: 'both', unit: 8, lesson: 26 },\n        { char: '\u4e2b', components: ['\u4e2b'], words: ['\u4e2b\u73af', '\u4e2b\u5934', '\u679d\u4e2b'], type: 'both', unit: 8, lesson: 26 },\n        { char: '\u62fd', components: ['\u624c', '\u66f3'], words: ['\u62fd\u4f4f', '\u62c9\u62fd', '\u751f\u62c9\u786c\u62fd'], type: 'both', unit: 8, lesson: 26 },\n        { char: '\u51b2', components: ['\u51ab', '\u4e2d'], words: ['\u51b2\u6d17', '\u51b2\u52b2', '\u51b2\u52a8'], type: 'both', unit: 8, lesson: 26 },\n        { char: '\u7626', components: ['\u7592', '\u53df'], words: ['\u7626\u5f31', '\u7626\u5c0f', '\u6d88\u7626'], type: 'both', unit: 8, lesson: 26 },\n        { char: '\u4ecb', components: ['\u4eba', '\u4e28'], words: ['\u4ecb\u7ecd', '\u4e2d\u4ecb', '\u4ecb\u8d28'], type: 'write', unit: 8, lesson: 26 },\n        { char: '\u7ecd', components: ['\u7e9f', '\u53ec'], words: ['\u4ecb\u7ecd', '\u7ecd\u4ecb', '\u7ecd\u5174'], type: 'write', unit: 8, lesson: 26 },\n        { char: '\u70eb', components: ['\u6c64', '\u706b'], words: ['\u70eb\u4f24', '\u70eb\u624b', '\u6eda\u70eb'], type: 'write', unit: 8, lesson: 26 },\n        { char: '\u798f', components: ['\u793b', '\u7550'], words: ['\u798f\u6c14', '\u798f\u661f', '\u5e78\u798f'], type: 'write', unit: 8, lesson: 26 },\n        { char: '\u8214', components: ['\u820c', '\u5fdd'], words: ['\u8214\u8210', '\u8214\u98df', '\u8214\u76d8'], type: 'write', unit: 8, lesson: 26 },\n        { char: '\u8475', components: ['\u8279', '\u7678'], words: ['\u5411\u65e5\u8475', '\u8475\u82b1', '\u8475\u6247'], type: 'write', unit: 8, lesson: 26 },\n        { char: '\u68d2', components: ['\u6728', '\u5949'], words: ['\u68d2\u5b50', '\u6728\u68d2', '\u68d2\u7403'], type: 'write', unit: 8, lesson: 26 },\n        { char: '\u7f62', components: ['\u7f52', '\u53bb'], words: ['\u7f62\u5de5', '\u7f62\u514d', '\u7f62\u4f11'], type: 'write', unit: 8, lesson: 26 },\n        \/\/ \u7b2c27\u8bfe\n        { char: '\u7855', components: ['\u77f3', '\u9875'], words: ['\u7855\u5927', '\u7855\u58eb', '\u4e30\u7855'], type: 'both', unit: 8, lesson: 27 },\n        { char: '\u5141', components: ['\u53b6', '\u513f'], words: ['\u5141\u8bb8', '\u5141\u8bfa', '\u5e94\u5141'], type: 'both', unit: 8, lesson: 27 },\n        { char: '\u780c', components: ['\u77f3', '\u5207'], words: ['\u780c\u5899', '\u780c\u7b51', '\u5806\u780c'], type: 'both', unit: 8, lesson: 27 },\n        { char: '\u8986', components: ['\u8980', '\u590d'], words: ['\u8986\u76d6', '\u8986\u706d', '\u98a0\u8986'], type: 'both', unit: 8, lesson: 27 },\n        { char: '\u5578', components: ['\u53e3', '\u8083'], words: ['\u547c\u5578', '\u5578\u53eb', '\u957f\u5578'], type: 'both', unit: 8, lesson: 27 },\n        { char: '\u7f15', components: ['\u7e9f', '\u5a04'], words: ['\u4e00\u7f15', '\u7f15\u7f15', '\u7f15\u8ff0'], type: 'both', unit: 8, lesson: 27 },\n        { char: '\u6402', components: ['\u624c', '\u5a04'], words: ['\u6402\u62b1', '\u6402\u4f4f', '\u6402\u7740'], type: 'both', unit: 8, lesson: 27 },\n        { char: '\u988a', components: ['\u5939', '\u9875'], words: ['\u8138\u988a', '\u816e\u988a', '\u988a\u9aa8'], type: 'both', unit: 8, lesson: 27 },\n        { char: '\u724c', components: ['\u7247', '\u5351'], words: ['\u724c\u5b50', '\u7eb8\u724c', '\u62db\u724c'], type: 'write', unit: 8, lesson: 27 },\n        { char: '\u7981', components: ['\u6797', '\u793a'], words: ['\u7981\u6b62', '\u7981\u70df', '\u7981\u533a'], type: 'write', unit: 8, lesson: 27 },\n        { char: '\u60e9', components: ['\u5f81', '\u5fc3'], words: ['\u60e9\u7f5a', '\u60e9\u6212', '\u60e9\u529e'], type: 'write', unit: 8, lesson: 27 },\n        { char: '\u8e2a', components: ['\u8db3', '\u5b97'], words: ['\u8e2a\u8ff9', '\u8ddf\u8e2a', '\u5931\u8e2a'], type: 'write', unit: 8, lesson: 27 },\n        { char: '\u79c1', components: ['\u79be', '\u53b6'], words: ['\u79c1\u4eba', '\u81ea\u79c1', '\u79c1\u5bc6'], type: 'write', unit: 8, lesson: 27 },\n        { char: '\u62c6', components: ['\u624c', '\u65a5'], words: ['\u62c6\u5f00', '\u62c6\u6563', '\u62c6\u8fc1'], type: 'write', unit: 8, lesson: 27 },\n        \/\/ \u7b2c28\u8bfe\uff08\u7565\u8bfb\uff09\n        { char: '\u77e2', components: ['\u77e2'], words: ['\u77e2\u5fd7', '\u77e2\u53e3', '\u6d41\u77e2'], type: 'recognize', unit: 8, lesson: 28 },\n        { char: '\u851a', components: ['\u8279', '\u5c09'], words: ['\u851a\u84dd', '\u851a\u7136', '\u851a\u8d77'], type: 'recognize', unit: 8, lesson: 28 },\n        { char: '\u629a', components: ['\u624c', '\u65e0'], words: ['\u629a\u6478', '\u629a\u6170', '\u629a\u517b'], type: 'recognize', unit: 8, lesson: 28 },\n        { char: '\u786b', components: ['\u77f3', '\u7559'], words: ['\u786b\u78fa', '\u786b\u9178', '\u786b\u5316'], type: 'recognize', unit: 8, lesson: 28 },\n        { char: '\u9cb8', components: ['\u9c7c', '\u4eac'], words: ['\u9cb8\u9c7c', '\u9cb8\u541e', '\u9cb8\u6ce2'], type: 'recognize', unit: 8, lesson: 28 },\n        { char: '\u6635', components: ['\u53e3', '\u5c3c'], words: ['\u6635\u79f0', '\u6635\u7231', '\u6635\u8bed'], type: 'recognize', unit: 8, lesson: 28 },\n        { char: '\u6070', components: ['\u5fc4', '\u5408'], words: ['\u6070\u597d', '\u6070\u5f53', '\u6070\u5de7'], type: 'recognize', unit: 8, lesson: 28 }\n    ];\n\n    \/\/ ========== \u5168\u5c40\u5e72\u6270\u90e8\u4ef6\u6c60 ==========\n    const DISTRACTOR_POOL = ['\u53e3', '\u6728', '\u6c35', '\u4ebb', '\u624c', '\u866b', '\u6708', '\u8279', '\u7e9f', '\u8ba0', '\u9485', '\u571f', '\u706b', '\u65e5', '\u5b80', '\u961d',\n        '\u5fc3', '\u529b', '\u5973', '\u738b', '\u77f3', '\u76ee', '\u79be', '\u5c71', '\u8d70', '\u8fb6', '\u5dfe', '\u5c38', '\u5e7f', '\u96e8', '\u2eae', '\u7a74', '\u7c73', '\u89d2', '\u7fbd',\n        '\u53c8', '\u4e3f', '\u342c', '\u5c22', '\u6535'\n    ];\n\n    \/\/ ========== \u72b6\u6001 ==========\n    let errorChars = [];\n    let currentWord = null;\n    let selectedComponents = [];\n    let correctCount = 0;\n    let isErrorMode = false;\n    let currentFilteredBank = [...FULL_BANK];\n    let isWaitingForNext = false;\n    let isCorrectState = false;\n    let completedCount = 0;\n    let completedWordsSet = new Set();\n    let totalBankSize = 0;\n    let currentUserName = 'Leo';\n    let rankData = [];\n    let currentComponentList = [];\n\n    \/\/ ========== DOM\u5f15\u7528 ==========\n    const charDisplay = document.getElementById('charDisplay');\n    const componentGrid = document.getElementById('componentGrid');\n    const messageBox = document.getElementById('messageBox');\n    const wordExample = document.getElementById('wordExample');\n    const errorListEl = document.getElementById('errorList');\n    const correctSpan = document.getElementById('correctCount');\n    const errorSpan = document.getElementById('errorCount');\n    const currentCharLabel = document.getElementById('currentCharLabel');\n    const continueBtn = document.getElementById('continueBtn');\n    const progressLabel = document.getElementById('progressLabel');\n    const progressFill = document.getElementById('progressFill');\n    const userNameInput = document.getElementById('userNameInput');\n    const userBadge = document.getElementById('userBadge');\n    const rankList = document.getElementById('rankList');\n    const rankToggleBtn = document.getElementById('rankToggleBtn');\n    const rankToggle = document.getElementById('rankToggle');\n\n    const gradeSelect = document.getElementById('gradeSelect');\n    const termSelect = document.getElementById('termSelect');\n    const unitSelect = document.getElementById('unitSelect');\n    const lessonSelect = document.getElementById('lessonSelect');\n    const charTypeSelect = document.getElementById('charTypeSelect');\n    const loadBtn = document.getElementById('loadBtn');\n    const errorModeBtn = document.getElementById('errorModeBtn');\n    const resetBtn = document.getElementById('resetBtn');\n    const nextBtn = document.getElementById('nextBtn');\n\n    \/\/ ========== \u6392\u884c\u699c\u51fd\u6570 ==========\n    function loadRank() {\n        try {\n            const stored = localStorage.getItem('puzzleRank');\n            if (stored) rankData = JSON.parse(stored);\n            else rankData = [];\n        } catch { rankData = []; }\n        renderRank();\n    }\n\n    function saveRank() {\n        try {\n            localStorage.setItem('puzzleRank', JSON.stringify(rankData));\n        } catch {}\n    }\n\n    function updateRank(userName, score) {\n        if (!userName || userName.trim() === '') return;\n        const name = userName.trim();\n        const existing = rankData.find(item => item.name === name);\n        if (existing) {\n            if (score > existing.score) {\n                existing.score = score;\n            }\n        } else {\n            rankData.push({ name, score });\n        }\n        rankData.sort((a, b) => b.score - a.score);\n        saveRank();\n        renderRank();\n    }\n\n    function renderRank() {\n        if (rankData.length === 0) {\n            rankList.innerHTML = '<div class=\"rank-empty\">\u6682\u65e0\u8bb0\u5f55\uff0c\u5feb\u6765\u6311\u6218\u5427\uff01<\/div>';\n            return;\n        }\n        const currentName = userNameInput.value.trim() || 'Leo';\n        let html = '';\n        rankData.slice(0, 20).forEach((item, idx) => {\n            const isMe = item.name === currentName;\n            html += `<div class=\"rank-item ${isMe ? 'me' : ''}\">\n                <span class=\"rank-num\">${idx + 1}<\/span>\n                <span class=\"rank-name\">${item.name}<\/span>\n                <span class=\"rank-score\">${item.score} \u5b57<\/span>\n            <\/div>`;\n        });\n        rankList.innerHTML = html;\n    }\n\n    \/\/ ========== \u8f85\u52a9\u51fd\u6570 ==========\n    function shuffleArray(arr) {\n        for (let i = arr.length - 1; i > 0; i--) {\n            const j = Math.floor(Math.random() * (i + 1));\n            [arr[i], arr[j]] = [arr[j], arr[i]];\n        }\n        return arr;\n    }\n\n    function getDistractors(correctComps, count = 2) {\n        const available = DISTRACTOR_POOL.filter(d => !correctComps.includes(d));\n        const shuffled = shuffleArray([...available]);\n        return shuffled.slice(0, count);\n    }\n\n    function filterBank() {\n        const unit = unitSelect.value;\n        const lesson = lessonSelect.value;\n        const charType = charTypeSelect.value;\n        let filtered = FULL_BANK.filter(item => {\n            if (unit !== 'all' && item.unit !== parseInt(unit, 10)) return false;\n            if (lesson !== 'all' && item.lesson !== parseInt(lesson, 10)) return false;\n            if (charType === 'recognize' && item.type !== 'recognize' && item.type !== 'both') return false;\n            if (charType === 'write' && item.type !== 'write' && item.type !== 'both') return false;\n            return true;\n        });\n        return filtered;\n    }\n\n    function updateLessonOptions() {\n        const unit = unitSelect.value;\n        const currentLesson = lessonSelect.value;\n        lessonSelect.innerHTML = '<option value=\"all\">\ud83d\udcd6 \u5168\u90e8\u8bfe\u6587<\/option>';\n        const lessons = new Set();\n        FULL_BANK.forEach(item => {\n            if (unit === 'all' || item.unit === parseInt(unit, 10)) {\n                if (item.lesson !== 0) lessons.add(item.lesson);\n            }\n        });\n        const sorted = Array.from(lessons).sort((a, b) => a - b);\n        sorted.forEach(les => {\n            const opt = document.createElement('option');\n            opt.value = les;\n            opt.textContent = `\u7b2c${les}\u8bfe`;\n            lessonSelect.appendChild(opt);\n        });\n        if (currentLesson !== 'all' && sorted.includes(parseInt(currentLesson, 10))) {\n            lessonSelect.value = currentLesson;\n        } else {\n            lessonSelect.value = 'all';\n        }\n    }\n\n    function isOrderMatch(selected, correct) {\n        if (selected.length !== correct.length) return false;\n        return selected.every((c, i) => c === correct[i]);\n    }\n\n    function addToError(char) {\n        if (!errorChars.includes(char)) {\n            errorChars.push(char);\n            updateStats();\n            renderErrorList();\n        }\n    }\n\n    function setComponentsEnabled(enabled) {\n        const btns = componentGrid.querySelectorAll('.component-btn');\n        btns.forEach(btn => {\n            btn.disabled = !enabled;\n        });\n    }\n\n    function updateProgress() {\n        const total = totalBankSize || currentFilteredBank.length;\n        const done = completedCount;\n        progressLabel.textContent = `\ud83d\udcca \u8fdb\u5ea6\uff1a${done} \/ ${total}`;\n        const pct = total > 0 ? Math.min(100, (done \/ total) * 100) : 0;\n        progressFill.style.width = pct + '%';\n        userBadge.textContent = `\ud83d\udcda \u5df2\u901a\u5173: ${done}`;\n        const userName = userNameInput.value.trim() || 'Leo';\n        if (done > 0) {\n            updateRank(userName, done);\n        }\n        currentUserName = userName;\n    }\n\n    function getNextUncompletedWord() {\n        if (isErrorMode) {\n            if (errorChars.length === 0) return null;\n            const available = errorChars.filter(char => !completedWordsSet.has(char));\n            if (available.length === 0) return null;\n            const randomChar = available[Math.floor(Math.random() * available.length)];\n            return FULL_BANK.find(w => w.char === randomChar) || null;\n        }\n        const available = currentFilteredBank.filter(w => !completedWordsSet.has(w.char));\n        if (available.length === 0) return null;\n        return available[Math.floor(Math.random() * available.length)];\n    }\n\n    function renderGame() {\n        if (isWaitingForNext) return;\n\n        if (!currentWord) {\n            charDisplay.textContent = '\ud83c\udfaf';\n            componentGrid.innerHTML = '';\n            wordExample.textContent = '\u2728 \u8bf7\u9501\u5b9a\u5b57\u5e93';\n            messageBox.textContent = '\u70b9\u51fb\"\u9501\u5b9a\u5b57\u5e93\" \u6216 \"\u9519\u5b57\u5e93\"';\n            currentCharLabel.textContent = '-';\n            continueBtn.classList.add('hidden');\n            updateProgress();\n            return;\n        }\n\n        charDisplay.textContent = currentWord.char;\n        currentCharLabel.textContent = currentWord.char;\n\n        const correctComps = currentWord.components;\n        const distractors = getDistractors(correctComps, 2);\n        let allComps = [...correctComps, ...distractors];\n        while (allComps.length < correctComps.length + 2) {\n            allComps.push('?');\n        }\n        if (currentComponentList.length === 0 || currentComponentList._char !== currentWord.char) {\n            currentComponentList = shuffleArray(allComps);\n            currentComponentList._char = currentWord.char;\n            currentComponentList._colors = currentComponentList._colors || [];\n            currentComponentList.forEach((comp, idx) => {\n                currentComponentList._colors[idx] = idx % 10;\n            });\n        }\n\n        componentGrid.innerHTML = '';\n        currentComponentList.forEach((comp, idx) => {\n            const btn = document.createElement('button');\n            btn.className = 'component-btn';\n            const colorIdx = currentComponentList._colors ? currentComponentList._colors[idx] : (idx % 10);\n            btn.classList.add('color-' + colorIdx);\n            btn.textContent = comp;\n            btn.dataset.comp = comp;\n            if (selectedComponents.includes(comp)) {\n                btn.classList.add('selected');\n            }\n            btn.addEventListener('click', () => handleComponentClick(comp));\n            componentGrid.appendChild(btn);\n        });\n\n        if (isCorrectState) {\n            setComponentsEnabled(false);\n        } else {\n            setComponentsEnabled(true);\n        }\n\n        if (isCorrectState) {\n            messageBox.textContent = '\u2705 \u62fc\u5bf9\u4e86\uff01\u70b9\u51fb\"\u7ee7\u7eed\"\u8fdb\u5165\u4e0b\u4e00\u5b57';\n        } else if (selectedComponents.length === 0) {\n            messageBox.textContent = '\u70b9\u51fb\u90e8\u4ef6\u62fc\u5b57\uff08\u6309\u987a\u5e8f\uff09';\n        } else {\n            messageBox.textContent = `\u5df2\u9009: ${selectedComponents.join(' + ')}`;\n        }\n\n        updateStats();\n        renderErrorList();\n        updateProgress();\n    }\n\n    function handleComponentClick(comp) {\n        if (isWaitingForNext || isCorrectState) return;\n        if (!currentWord) return;\n\n        if (selectedComponents.length === currentWord.components.length) {\n            messageBox.textContent = '\u5df2\u9009\u6ee1\uff0c\u70b9\u51fb\"\u91cd\u7f6e\"\u91cd\u65b0\u62fc';\n            return;\n        }\n\n        if (selectedComponents.includes(comp)) {\n            messageBox.textContent = `\u90e8\u4ef6 \"${comp}\" \u5df2\u9009\uff0c\u4e0d\u80fd\u91cd\u590d`;\n            return;\n        }\n\n        if (!currentWord.components.includes(comp)) {\n            addToError(currentWord.char);\n            messageBox.textContent = `\u274c \u90e8\u4ef6\u201c${comp}\u201d\u4e0d\u6b63\u786e\uff0c\u5df2\u8bb0\u5165\u9519\u5b57\u5e93`;\n            wordExample.textContent = `\ud83d\udcd5 \u9519\u5b57: ${currentWord.char}`;\n            updateStats();\n            renderErrorList();\n            return;\n        }\n\n        selectedComponents.push(comp);\n\n        if (selectedComponents.length === currentWord.components.length) {\n            if (isOrderMatch(selectedComponents, currentWord.components)) {\n                isCorrectState = true;\n                correctCount++;\n                completedCount++;\n                completedWordsSet.add(currentWord.char);\n                const idx = errorChars.indexOf(currentWord.char);\n                if (idx !== -1) {\n                    errorChars.splice(idx, 1);\n                }\n                updateStats();\n                renderErrorList();\n\n                wordExample.innerHTML = `\u2705 \u8bcd\u8bed\uff1a${currentWord.words.map(w => `<span class=\"word-item\">${w}<\/span>`).join('')}`;\n                messageBox.textContent = '\ud83c\udf89 \u62fc\u5b57\u6b63\u786e\uff01\u70b9\u51fb\u4e0b\u65b9\"\u7ee7\u7eed\"\u6309\u94ae\u8fdb\u5165\u4e0b\u4e00\u9898';\n                continueBtn.classList.remove('hidden');\n                setComponentsEnabled(false);\n                const btns = componentGrid.querySelectorAll('.component-btn');\n                btns.forEach(btn => {\n                    if (currentWord.components.includes(btn.dataset.comp)) {\n                        btn.classList.add('correct-highlight');\n                    }\n                });\n                updateProgress();\n                const userName = userNameInput.value.trim() || 'Leo';\n                updateRank(userName, completedCount);\n                return;\n            } else {\n                addToError(currentWord.char);\n                messageBox.textContent = '\u274c \u987a\u5e8f\u9519\u8bef\uff01\u5df2\u8bb0\u5165\u9519\u5b57\u5e93';\n                wordExample.textContent = `\ud83d\udcd5 \u6b63\u786e\u987a\u5e8f: ${currentWord.components.join(' + ')}`;\n                const btns = componentGrid.querySelectorAll('.component-btn');\n                btns.forEach(btn => {\n                    if (currentWord.components.includes(btn.dataset.comp)) {\n                        btn.classList.add('correct-highlight');\n                    }\n                });\n                updateStats();\n                renderErrorList();\n                return;\n            }\n        }\n\n        renderGame();\n    }\n\n    function goToNextWord() {\n        if (!isCorrectState) return;\n        isCorrectState = false;\n        continueBtn.classList.add('hidden');\n        setComponentsEnabled(true);\n        document.querySelectorAll('.correct-highlight').forEach(el => el.classList.remove('correct-highlight'));\n        currentComponentList = [];\n        loadNextWord();\n    }\n\n    function loadNextWord() {\n        if (isWaitingForNext) return;\n        isCorrectState = false;\n        continueBtn.classList.add('hidden');\n        document.querySelectorAll('.correct-highlight').forEach(el => el.classList.remove('correct-highlight'));\n        currentComponentList = [];\n\n        const next = getNextUncompletedWord();\n\n        if (!next) {\n            if (isErrorMode) {\n                messageBox.textContent = '\ud83c\udf89 \u9519\u5b57\u5e93\u5df2\u6e05\u7a7a\uff01\u5207\u6362\u56de\u666e\u901a\u6a21\u5f0f';\n                wordExample.textContent = '\u2728 \u5168\u90e8\u638c\u63e1\uff01';\n            } else {\n                const total = totalBankSize || currentFilteredBank.length;\n                const done = completedCount;\n                if (done >= total && total > 0) {\n                    messageBox.textContent = '\ud83c\udf89 \u592a\u68d2\u4e86\uff01\u5f53\u524d\u5b57\u5e93\u5168\u90e8\u638c\u63e1\uff01';\n                    wordExample.textContent = '\u2728 \u6240\u6709\u751f\u5b57\u5df2\u5b8c\u6210\uff01';\n                } else {\n                    messageBox.textContent = '\ud83d\udced \u5f53\u524d\u5b57\u5e93\u65e0\u53ef\u7528\u5b57\uff0c\u8bf7\u8c03\u6574\u7b5b\u9009';\n                    wordExample.textContent = '\u2728 \u8c03\u6574\u5b57\u5e93\u8303\u56f4\u5427';\n                }\n            }\n            charDisplay.textContent = '\ud83c\udf1f';\n            componentGrid.innerHTML = '';\n            currentWord = null;\n            selectedComponents = [];\n            updateStats();\n            renderErrorList();\n            updateProgress();\n            return;\n        }\n\n        currentWord = next;\n        selectedComponents = [];\n        wordExample.textContent = `\ud83d\udcdd \u5df2\u9009 0\/${currentWord.components.length}`;\n        renderGame();\n    }\n\n    function resetCurrent() {\n        if (isWaitingForNext) return;\n        if (isCorrectState) {\n            isCorrectState = false;\n            continueBtn.classList.add('hidden');\n            document.querySelectorAll('.correct-highlight').forEach(el => el.classList.remove('correct-highlight'));\n        }\n        if (!currentWord) { loadNextWord(); return; }\n        selectedComponents = [];\n        wordExample.textContent = `\ud83d\udcdd \u5df2\u9009 0\/${currentWord.components.length}`;\n        renderGame();\n        messageBox.textContent = '\ud83d\udd04 \u5df2\u91cd\u7f6e\uff0c\u91cd\u65b0\u62fc\u5b57';\n        setComponentsEnabled(true);\n    }\n\n    function updateStats() {\n        correctSpan.textContent = correctCount;\n        errorSpan.textContent = errorChars.length;\n    }\n\n    function renderErrorList() {\n        if (errorChars.length === 0) {\n            errorListEl.innerHTML = '<span style=\"background:transparent; color:#6b7b8c;\">\ud83d\udccc \u9519\u5b57\u5e93\u7a7a<\/span>';\n            return;\n        }\n        let html = '';\n        errorChars.forEach(ch => {\n            html += `<span>${ch}<\/span>`;\n        });\n        errorListEl.innerHTML = html;\n    }\n\n    function lockWordBank() {\n        if (isWaitingForNext) return;\n        isErrorMode = false;\n        errorModeBtn.textContent = '\ud83d\udcd5 \u9519\u5b57\u5e93';\n        currentFilteredBank = filterBank();\n        totalBankSize = currentFilteredBank.length;\n        \/\/completedCount = 0;\n        completedWordsSet = new Set();\n        currentComponentList = [];\n        if (currentFilteredBank.length === 0) {\n            messageBox.textContent = '\u26a0\ufe0f \u7b5b\u9009\u540e\u65e0\u5b57\uff0c\u8c03\u6574\u5355\u5143\/\u8bfe\/\u5b57\u7c7b\u578b';\n            charDisplay.textContent = '\ud83d\udced';\n            componentGrid.innerHTML = '';\n            currentWord = null;\n            selectedComponents = [];\n            updateProgress();\n            return;\n        }\n        const next = getNextUncompletedWord();\n        if (next) {\n            currentWord = next;\n        } else {\n            currentWord = currentFilteredBank[0];\n        }\n        selectedComponents = [];\n        isCorrectState = false;\n        continueBtn.classList.add('hidden');\n        wordExample.textContent = `\ud83d\udcdd \u5df2\u9009 0\/${currentWord.components.length}`;\n        renderGame();\n        messageBox.textContent = `\ud83d\udd12 \u5b57\u5e93\u5df2\u9501\u5b9a (${currentFilteredBank.length}\u5b57)`;\n        document.querySelectorAll('.correct-highlight').forEach(el => el.classList.remove('correct-highlight'));\n        setComponentsEnabled(true);\n        updateProgress();\n        const userName = userNameInput.value.trim() || 'Leo';\n        updateRank(userName, completedCount);\n    }\n\n    \/\/ ========== \u4e8b\u4ef6\u7ed1\u5b9a ==========\n    unitSelect.addEventListener('change', function() {\n        updateLessonOptions();\n    });\n\n    loadBtn.addEventListener('click', lockWordBank);\n\n    errorModeBtn.addEventListener('click', function() {\n        if (isWaitingForNext) return;\n        isErrorMode = !isErrorMode;\n        if (isErrorMode) {\n            this.textContent = '\ud83d\udcd6 \u666e\u901a\u6a21\u5f0f';\n            messageBox.textContent = '\ud83d\udcd5 \u9519\u5b57\u5e93\u6a21\u5f0f';\n            \/\/completedCount = 0;\n            completedWordsSet = new Set();\n            currentComponentList = [];\n            if (errorChars.length === 0) {\n                messageBox.textContent = '\ud83d\udced \u9519\u5b57\u5e93\u4e3a\u7a7a\uff0c\u5148\u6536\u96c6\u9519\u5b57\u5427';\n                charDisplay.textContent = '\ud83d\udced';\n                componentGrid.innerHTML = '';\n                currentWord = null;\n                selectedComponents = [];\n                isCorrectState = false;\n                continueBtn.classList.add('hidden');\n                updateProgress();\n            } else {\n                loadNextWord();\n            }\n        } else {\n            this.textContent = '\ud83d\udcd5 \u9519\u5b57\u5e93';\n            completedCount = 0;\n            completedWordsSet = new Set();\n            currentComponentList = [];\n            lockWordBank();\n        }\n        renderErrorList();\n        document.querySelectorAll('.correct-highlight').forEach(el => el.classList.remove('correct-highlight'));\n    });\n\n    resetBtn.addEventListener('click', resetCurrent);\n\n    nextBtn.addEventListener('click', function() {\n        if (isWaitingForNext) return;\n        if (isCorrectState) {\n            goToNextWord();\n            return;\n        }\n        currentComponentList = [];\n        loadNextWord();\n        document.querySelectorAll('.correct-highlight').forEach(el => el.classList.remove('correct-highlight'));\n    });\n\n    continueBtn.addEventListener('click', goToNextWord);\n\n    userNameInput.addEventListener('change', function() {\n        const name = this.value.trim() || 'Leo';\n        renderRank();\n        if (completedCount > 0) {\n            updateRank(name, completedCount);\n        }\n    });\n\n    let rankCollapsed = false;\n    rankToggle.addEventListener('click', function() {\n        rankCollapsed = !rankCollapsed;\n        rankList.classList.toggle('collapsed', rankCollapsed);\n        rankToggleBtn.textContent = rankCollapsed ? '\u25b6' : '\u25bc';\n    });\n\n    \/\/ ========== \u521d\u59cb\u5316 ==========\n    function init() {\n        updateLessonOptions();\n        currentFilteredBank = filterBank();\n        totalBankSize = currentFilteredBank.length;\n        completedCount = 0;\n        completedWordsSet = new Set();\n        loadRank();\n        lockWordBank();\n        updateStats();\n        renderErrorList();\n        updateProgress();\n        const name = userNameInput.value.trim() || 'Leo';\n        if (completedCount > 0) {\n            updateRank(name, completedCount);\n        }\n    }\n    init();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\ud83e\udde9 Leo\u62fc\u5b57 \u00b7 \u9752\u5c9b63\u5236 \ud83e\udde9 Leo\u62fc\u5b57 \u9752\u5c9b\u00b763\u5236 \ud83d\udc64 \u59d3\u540d \ud83d\udcda \u5df2\u901a\u5173: 0 \u56db\u5e74\u7ea7 \u4e0b\u518c \ud83d\udcda \u5168\u90e8\u5355\u5143\u7b2c\u4e00\u5355\u5143\u7b2c\u4e8c\u5355\u5143\u7b2c\u4e09\u5355\u5143\u7b2c\u56db\u5355\u5143\u7b2c\u4e94\u5355\u5143\u7b2c\u516d\u5355\u5143\u7b2c\u4e03\u5355\u5143\u7b2c\u516b\u5355\u5143 \ud83d\udcd6 \u5168\u90e8\u8bfe\u6587 \ud83d\udcdd \u5168\u90e8 (\u4f1a\u8ba4+\u4f1a\u5199)\ud83d\udc40 \u4f1a\u8ba4\u270d\ufe0f \u4f1a\u5199 \ud83c\udfaf \u9501\u5b9a\u5b57\u5e93 \ud83d\udcd5 \u9519\u5b57\u5e93 \ud83d\udcca \u8fdb\u5ea6\uff1a0 \/ 0 \u7684 \u2728 \u62fc\u5bf9\u663e\u793a\u8bcd\u8bed \ud83d\udc49 \u7ee7\u7eed\u4e0b\u4e00\u5b57 \u70b9\u51fb\u90e8\u4ef6\u62fc\u5b57 \ud83d\udd04 \u91cd\u7f6e \u23e9 \u4e0b\u4e00\u5b57 \ud83d\udccc \u9519\u5b57\u5e93\u7a7a \u2705 \u6b63\u786e: 0 \u274c \u9519\u5b57: 0 \ud83d\udcdd \u5f53\u524d\u5b57: &#8211; \ud83c\udfc6 \u6392\u884c\u699c \u25bc \u6682\u65e0\u8bb0\u5f55\uff0c\u5feb\u6765\u6311\u6218\u5427\uff01<\/p>\n","protected":false},"author":1,"featured_media":61,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-55","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-study-tools"],"_links":{"self":[{"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/posts\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":15,"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/posts\/55\/revisions"}],"predecessor-version":[{"id":95,"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/posts\/55\/revisions\/95"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/media\/61"}],"wp:attachment":[{"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/media?parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/categories?post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wanglixian.com\/index.php\/wp-json\/wp\/v2\/tags?post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}