{"id":3723,"date":"2026-07-25T17:12:30","date_gmt":"2026-07-25T17:12:30","guid":{"rendered":"https:\/\/abhidham.mcu.ac.th\/?page_id=3723"},"modified":"2026-08-11T09:19:49","modified_gmt":"2026-08-11T09:19:49","slug":"%e0%b9%82%e0%b8%ab%e0%b8%a5%e0%b8%94%e0%b8%82%e0%b9%89%e0%b8%ad%e0%b8%a1%e0%b8%b9%e0%b8%a5%e0%b8%99%e0%b8%b1%e0%b8%81%e0%b8%a8%e0%b8%b6%e0%b8%81%e0%b8%a9%e0%b8%b2%e0%b8%aa%e0%b8%a1%e0%b8%b1%e0%b8%84","status":"publish","type":"page","link":"https:\/\/abhidham.mcu.ac.th\/?page_id=3723","title":{"rendered":"\u0e23\u0e30\u0e1a\u0e1a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32-ASIS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3723\" class=\"elementor elementor-3723\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7efbd04 e-flex e-con-boxed e-con e-parent\" data-id=\"7efbd04\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0ad4f4c elementor-widget elementor-widget-html\" data-id=\"0ad4f4c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Mitr:wght@300;400;500;600&family=Sarabun:wght@300;400;500;600;700&family=Trirong:wght@400;500;600&display=swap\" rel=\"stylesheet\">\n  <style>\n  :root {\n    --primary: #e6007e;\n    --primary-hover: #c00069;\n    --primary-soft: #fdeaf4;\n    --gold: #c8961e;\n    --gold-dark: #a97c12;\n    --gold-soft: #f9f1dd;\n    --ink: #2b2130;\n    --muted: #7a6b74;\n    --line: #f2dfea;\n    --line-strong: #e6c2d7;\n    --surface: #ffffff;\n    --background: #fdf2f8;\n    --success: #1f9d55;\n    --success-soft: #eafaf1;\n    --warning: #b8860b;\n    --warning-soft: #fbf3e0;\n    --danger: #dc3545;\n    --shadow-sm: 0 1px 2px rgba(214, 51, 132, .06);\n    --shadow-md: 0 12px 34px rgba(214, 51, 132, .16);\n    --shadow: var(--shadow-sm);\n    font-family: \"Sarabun\", system-ui, -apple-system, sans-serif;\n  }\n  * { box-sizing: border-box; }\n  html { color-scheme: light; font-size: 14px; }\n  body { margin: 0; color: var(--ink); background: var(--background); }\n  button, input, select { font: inherit; }\n  button { cursor: pointer; }\n  h1, h2, h3 { font-family: \"Mitr\", \"Sarabun\", sans-serif; font-weight: 500; }\n  .btn, .auth-tab { font-family: \"Mitr\", \"Sarabun\", sans-serif; }\n  .hidden { display: none !important; }\n  .muted { color: var(--muted); }\n  .eyebrow { margin: 0 0 .25rem; color: var(--gold-dark); font-size: .72rem; font-weight: 700; letter-spacing: .13em; }\n  .brand-sub { margin: .2rem 0 0; color: var(--muted); font-size: .82rem; font-family: \"Trirong\", serif; line-height: 1.4; }\n\n  \/* Authentication *\/\n  .auth-shell {\n    min-height: 100vh;\n    display: grid;\n    place-items: center;\n    padding: 1rem;\n    background:\n      radial-gradient(circle at 12% 12%, rgba(230, 0, 126, .10), transparent 32%),\n      radial-gradient(circle at 88% 90%, rgba(200, 150, 30, .10), transparent 30%),\n      #fdf2f8;\n  }\n  .auth-card {\n    width: min(460px, 100%);\n    padding: 1rem;\n    background: var(--surface);\n    border: 1px solid var(--line);\n    border-top: 3px solid var(--gold);\n    border-radius: 2px;\n  }\n  .auth-brand { display: flex; align-items: center; gap: .6rem; margin-bottom: .6rem; }\n  .auth-logo {\n    width: 40px; height: 40px; display: grid; place-items: center; flex: 0 0 auto;\n    color: var(--gold); background: var(--primary); border: 2px solid var(--gold);\n    border-radius: 50%; font-size: 1.1rem; font-weight: 700;\n  }\n  .auth-brand h1 { margin: 0; font-size: 1.15rem; line-height: 1.3; }\n  .auth-intro { margin: 0 0 .8rem; color: var(--muted); font-size: .82rem; line-height: 1.5; }\n  .section-heading { margin-bottom: .7rem; }\n  .section-heading h2 { margin: 0 0 .2rem; font-size: 1.05rem; }\n  .section-heading p { margin: 0; color: var(--muted); font-size: .8rem; line-height: 1.5; }\n  .auth-tabs {\n    display: grid; grid-template-columns: 1fr 1fr; gap: .3rem;\n    margin-top: .7rem; padding: .2rem; background: #f1f5f9; border-radius: 2px;\n  }\n  .auth-tab { min-height: 30px; padding: .4rem; border: 0; border-radius: 2px; color: var(--muted); background: transparent; font-weight: 600; }\n  .auth-tab.active { color: var(--primary); background: #fff; border: 1px solid var(--line); }\n  .security-note { display: flex; align-items: center; justify-content: center; gap: .4rem; margin-top: .6rem; color: var(--muted); font-size: .72rem; }\n\n  \/* Forms *\/\n  .field { display: grid; gap: .3rem; margin: .55rem 0; color: #334155; font-size: .82rem; font-weight: 600; }\n  .field small { color: var(--muted); font-size: .72rem; font-weight: 400; }\n  .form-two-columns { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }\n  input, select {\n    width: 100%; min-height: 32px; padding: .35rem .55rem; color: var(--ink);\n    border: 1px solid var(--line-strong); border-radius: 2px; background: #fff; outline: none;\n    transition: border-color .1s, box-shadow .1s;\n  }\n  input::placeholder { color: #94a3b8; }\n  input:focus, select:focus { border-color: var(--primary); box-shadow: 0 0 0 2px rgba(230, 0, 126, .14); }\n  .password-wrap { position: relative; display: block; }\n  .password-wrap input { padding-right: 4.25rem; }\n  .password-toggle {\n    position: absolute; right: .3rem; top: 50%; transform: translateY(-50%);\n    min-height: 26px; padding: 0 .5rem; color: var(--primary); border: 0; border-radius: 2px; background: transparent; font-size: .74rem; font-weight: 600;\n  }\n  .password-toggle:hover { background: var(--primary-soft); }\n  .btn {\n    min-height: 30px; padding: .35rem .65rem; border: 1px solid transparent;\n    border-radius: 2px; font-weight: 600; font-size: .85rem; transition: background .1s, border-color .1s;\n  }\n  .btn:disabled { cursor: not-allowed; opacity: .55; }\n  .btn-primary { color: #fff; background: var(--primary); }\n  .btn-primary:hover { background: var(--primary-hover); }\n  .btn-outline { color: #334155; border-color: var(--line-strong); background: #fff; }\n  .btn-outline:hover { border-color: #94a3b8; background: #f8fafc; }\n  .btn-ghost { color: #334155; background: #f1f5f9; }\n  .btn-block { width: 100%; }\n  .btn-small { min-height: 26px; padding: .3rem .55rem; font-size: .78rem; }\n  .text-button, .back-button { padding: .5rem 0; color: var(--primary); border: 0; background: transparent; font-weight: 600; }\n\n  \/* Application *\/\n  .app-shell { min-height: 100vh; }\n  .topbar {\n    min-height: 44px; padding: .4rem .9rem;\n    display: flex; align-items: center; justify-content: space-between; gap: 1rem;\n    background: #fff; border-bottom: 1px solid var(--line);\n  }\n  .topbar-brand, .user-menu { display: flex; align-items: center; gap: .6rem; }\n  .mini-mark {\n    width: 30px; height: 30px; display: grid; place-items: center;\n    color: #fff; background: var(--primary); border-radius: 3px; font-weight: 700;\n  }\n  .topbar-brand strong, .topbar-brand small, .user-copy strong, .user-copy small { display: block; }\n  .topbar-brand strong { font-size: .86rem; }\n  .topbar-brand small, .user-copy small { color: var(--muted); font-size: .68rem; }\n  .user-copy { text-align: right; }\n  .notification-bell {\n    position: relative; width: 32px; height: 32px; flex: 0 0 32px;\n    display: grid; place-items: center; padding: 0; color: #475569;\n    border: 1px solid var(--line-strong); border-radius: 50%; background: #fff;\n    font-size: 1.02rem; line-height: 1;\n    transition: color .1s, border-color .1s, background .1s;\n  }\n  .notification-bell:hover { color: var(--primary); border-color: var(--primary); background: var(--primary-soft); }\n  .notification-bell.has-notifications { color: var(--warning); background: var(--warning-soft); }\n  .notification-bell svg { width: 19px; height: 19px; fill: none; }\n  .notification-badge {\n    position: absolute; top: -6px; right: -7px; min-width: 18px; height: 18px; padding: 0 4px;\n    display: grid; place-items: center; color: #fff; background: #dc2626;\n    border: 2px solid #fff; border-radius: 999px; font-size: .62rem; font-weight: 700; line-height: 1;\n  }\n  .app-content { width: min(1320px, calc(100% - 1.5rem)); margin: 0 auto; padding: .9rem 0 1.5rem; }\n  .page-heading { display: flex; align-items: end; justify-content: space-between; gap: 1.5rem; }\n  .page-heading h1 { margin: 0; font-size: 1.2rem; }\n  .page-heading .muted { margin: .25rem 0 0; font-size: .82rem; }\n  .heading-actions { display: flex; align-items: end; justify-content: flex-end; gap: .5rem; flex-wrap: wrap; }\n  .live-status { display: flex; align-items: center; gap: .35rem; margin: .25rem 0 0; font-size: .74rem; color: var(--muted); }\n  .live-dot { width: .5rem; height: .5rem; border-radius: 50%; background: var(--success); box-shadow: 0 0 0 0 rgba(31,157,85,.45); animation: livePulse 2.4s ease-out infinite; }\n  @keyframes livePulse { 0% { box-shadow: 0 0 0 0 rgba(31,157,85,.45); } 70% { box-shadow: 0 0 0 .35rem rgba(31,157,85,0); } 100% { box-shadow: 0 0 0 0 rgba(31,157,85,0); } }\n  @media (prefers-reduced-motion: reduce) { .live-dot { animation: none; } }\n  .compact-field { min-width: 200px; color: #334155; font-size: .74rem; font-weight: 600; }\n  .compact-field span { display: block; margin-bottom: .2rem; }\n  .download-group { display: flex; gap: .4rem; }\n\n  .stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; margin: .8rem 0; }\n  .stat-card {\n    padding: .6rem .7rem; display: flex; align-items: center; gap: .6rem;\n    background: #fff; border: 1px solid var(--line); border-radius: 2px;\n  }\n  .stat-card small, .stat-card strong { display: block; }\n  .stat-card small { color: var(--muted); font-size: .76rem; }\n  .stat-card strong { margin-top: .1rem; font-size: 1.15rem; }\n  .stat-icon { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 3px; flex: 0 0 auto; }\n  .stat-icon.teal { background: var(--primary-soft); }\n  .stat-icon.green { color: var(--success); background: var(--success-soft); }\n  .stat-icon.amber { color: var(--warning); background: var(--warning-soft); }\n\n  .records-panel { padding: .6rem; background: #fff; border: 1px solid var(--line); border-radius: 2px; }\n  .records-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .5rem; }\n  .records-toolbar h2 { margin: 0; font-size: .95rem; }\n  .records-toolbar .muted { margin: .15rem 0 0; font-size: .74rem; }\n  .records-tools { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; justify-content: flex-end; }\n  .sort-box { display: flex; align-items: center; gap: .35rem; color: var(--muted); font-size: .74rem; font-weight: 600; white-space: nowrap; }\n  .sort-box select { padding: .3rem .45rem; min-height: 28px; }\n  .search-box { width: min(360px, 100%); display: flex; align-items: center; gap: .35rem; }\n  .search-box input { flex: 1; min-width: 0; min-height: 28px; }\n  .records-list { display: grid; }\n  .record-row {\n    display: grid; grid-template-columns: minmax(220px, 1.6fr) minmax(135px, .7fr) auto;\n    align-items: center; gap: .6rem; padding: .4rem .3rem;\n    border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent;\n    transition: background .1s;\n  }\n  .record-row:hover { background: #f8fafc; }\n  .record-title { min-width: 0; }\n  .record-title strong, .record-title small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n  .record-title strong { font-size: .85rem; }\n  .record-title small { margin-top: .12rem; color: var(--muted); font-size: .72rem; }\n  .record-title small.applied { color: var(--primary); font-weight: 600; }\n  .record-actions { display: flex; gap: .35rem; }\n  .status-badge { justify-self: start; padding: .2rem .5rem; border-radius: 2px; font-size: .7rem; font-weight: 700; }\n  .status-badge.confirmed { color: var(--success); background: var(--success-soft); }\n  .status-badge.pending { color: var(--warning); background: var(--warning-soft); }\n  .pagination { display: flex; justify-content: center; align-items: center; gap: .6rem; padding-top: .6rem; font-size: .78rem; }\n  .empty-state { padding: 1.6rem 1rem; text-align: center; color: var(--muted); }\n  .empty-state h3 { margin: .4rem 0 .15rem; color: var(--ink); font-size: .95rem; }\n  .empty-state p { margin: 0; font-size: .82rem; }\n  .empty-icon { font-size: 1.4rem; }\n\n  \/* Dialogs *\/\n  .modal {\n    width: min(860px, calc(100% - 2rem)); max-height: 88vh; padding: 0; overflow: auto;\n    border: 1px solid var(--line); border-radius: 2px; box-shadow: var(--shadow-md);\n  }\n  .modal::backdrop { background: rgba(15, 23, 42, .55); }\n  .modal-small { width: min(440px, calc(100% - 2rem)); }\n  .modal-header {\n    position: sticky; top: 0; z-index: 2; padding: .6rem .75rem;\n    display: flex; align-items: center; justify-content: space-between; background: #fff; border-bottom: 1px solid var(--line);\n  }\n  .modal-header h2 { margin: 0; font-size: .95rem; }\n  .icon-button { width: 28px; height: 28px; border: 0; border-radius: 2px; background: #f1f5f9; font-size: 1.1rem; }\n  .detail-grid { margin: .6rem; display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; overflow: hidden; border: 1px solid var(--line); border-radius: 2px; background: var(--line); }\n  .detail-cell { min-width: 0; padding: .55rem; background: #fff; }\n  .detail-cell small { display: block; margin-bottom: .15rem; color: var(--muted); font-size: .72rem; }\n  .detail-cell div { overflow-wrap: anywhere; white-space: pre-wrap; font-size: .84rem; }\n  .modal-actions { padding: .6rem .75rem .75rem; display: flex; justify-content: flex-end; gap: .45rem; }\n  #changePasswordForm { padding: 0 .75rem; }\n\n  \/* Feedback *\/\n  .loading-overlay { position: fixed; inset: 0; z-index: 999; display: grid; place-content: center; justify-items: center; gap: .6rem; color: #fff; background: rgba(15, 23, 42, .62); }\n  .spinner { width: 32px; height: 32px; border: 4px solid rgba(255,255,255,.3); border-top-color: #fff; border-radius: 50%; animation: spin .75s linear infinite; }\n  @keyframes spin { to { transform: rotate(360deg); } }\n  .toast-region { position: fixed; right: .75rem; top: .75rem; z-index: 1200; width: min(340px, calc(100% - 1.5rem)); display: grid; gap: .4rem; }\n  .toast { padding: .55rem .75rem; color: #fff; border-radius: 2px; box-shadow: var(--shadow-md); animation: toast-in .2s ease-out; font-size: .84rem; }\n  .toast.success { background: var(--success); }\n  .toast.error { background: var(--danger); }\n  .toast.info { background: #334155; }\n  @keyframes toast-in { from { opacity: 0; transform: translateY(-6px); } }\n  <\/style>\n\n  <style>\n  html { -webkit-text-size-adjust: 100%; }\n  button { touch-action: manipulation; }\n  button, input, select { -webkit-tap-highlight-color: transparent; }\n  button:focus-visible, input:focus-visible, select:focus-visible {\n    outline: 3px solid var(--primary-soft); outline-offset: 2px;\n  }\n  <\/style>\n  <style>\n  .workspace-shell { width:min(1440px, 100%); margin:0 auto; display:grid; grid-template-columns:190px minmax(0, 1fr); gap:.75rem; align-items:start; }\n  .app-sidebar { position:sticky; top:0; padding:.75rem 0 .75rem .75rem; }\n  .app-nav { display:grid; padding:0; background:#fff; border:1px solid var(--line); border-radius:2px; }\n  .app-nav-button { border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--muted); border-radius:0; padding:.5rem .6rem; display:flex; align-items:center; gap:.5rem; font:inherit; font-weight:700; font-size:.85rem; text-align:left; cursor:pointer; }\n  .app-nav-button:hover { background:#f1f8f7; color:var(--primary); }\n  .app-nav-button.active { background:var(--primary); color:#fff; }\n  .nav-icon { width:1.3rem; text-align:center; font-size:.95rem; }\n  .workspace-main { min-width:0; }\n  .workspace-main .app-content, .module-content { width:100%; margin:0; padding:.9rem .75rem 1.5rem; }\n  .home-hero { padding:.9rem 1rem; border-radius:2px; background:linear-gradient(135deg, #075e54, #14957f); color:#fff; }\n  .home-hero .eyebrow, .home-hero .muted { color:rgba(255,255,255,.82); }\n  .home-hero h1 { font-size:1.15rem; margin:.2rem 0 .35rem; }\n  .module-card-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:.6rem; margin:.7rem 0; }\n  .module-card { border:1px solid var(--line); border-radius:2px; padding:.7rem; background:#fff; text-align:left; font:inherit; color:inherit; cursor:pointer; transition:border-color .1s ease; }\n  .module-card:hover { border-color:var(--primary); }\n  .module-card-icon { display:grid; place-items:center; width:32px; height:32px; border-radius:3px; background:#e7f6f3; font-size:1.05rem; }\n  .module-card h2 { margin:.5rem 0 .25rem; font-size:.92rem; }\n  .module-card p { min-height:2.2em; margin:0; color:var(--muted); font-size:.8rem; }\n  .module-card-meta { display:flex; justify-content:space-between; align-items:center; gap:.6rem; margin-top:.6rem; padding-top:.5rem; border-top:1px solid var(--line); font-size:.8rem; }\n  .module-card-meta strong { color:var(--primary); font-size:1rem; }\n  .placeholder-panel { padding:.75rem; border:1px solid var(--line); border-radius:2px; background:#fff; }\n  .placeholder-panel h1 { margin-top:0; }\n  .placeholder-panel { max-width:860px; margin:0 auto; }\n  .placeholder-panel h1 { font-size:1.05rem; line-height:1.35; }\n  .placeholder-icon { font-size:1.4rem; margin-bottom:.4rem; }\n  .future-steps { margin:.75rem 0 0; padding-left:1.1rem; color:var(--muted); font-size:.85rem; }\n  .future-steps li + li { margin-top:.4rem; }\n  .future-steps li.done { color:var(--primary); font-weight:700; }\n  .future-steps li.active { color:var(--ink); font-weight:700; }\n  .exam-entry-panel { max-width:860px; margin:.75rem auto 0; padding:.75rem; border:1px solid var(--line); border-radius:2px; background:#fff; }\n  .file-upload-btn { display:inline-flex; align-items:center; gap:.35rem; }\n  .exam-table-wrap { overflow-x:auto; border:1px solid var(--line); border-radius:2px; }\n  .exam-table { width:100%; border-collapse:collapse; min-width:640px; }\n  .exam-table th, .exam-table td { padding:.35rem .5rem; border-bottom:1px solid var(--line); text-align:left; font-size:.82rem; }\n  .exam-table th { position:sticky; top:0; background:#f8fafc; color:var(--muted); font-size:.72rem; font-weight:700; }\n  .exam-table tbody tr:last-child td { border-bottom:0; }\n  .exam-submit-bar { margin-top:.75rem; padding-top:.75rem; border-top:1px solid var(--line); display:grid; gap:.4rem; justify-items:start; }\n  <\/style>\n  <style>\n  @media (max-width: 700px) {\n    html { font-size: 15px; }\n    .auth-shell { padding: .75rem; }\n    .auth-card { width: 100%; padding: .9rem; }\n    .topbar { flex-wrap: wrap; gap: .5rem; padding: .5rem .75rem; }\n    .topbar-brand small { display: none; }\n    .user-menu { width: 100%; justify-content: space-between; }\n    .workspace-shell { display: block; }\n    .app-sidebar { position: fixed; inset: auto 0 0 0; z-index: 40; padding: 0; }\n    .app-nav { grid-template-columns: repeat(4, 1fr); border: 0; border-top: 1px solid var(--line); box-shadow: 0 -4px 12px rgba(0,0,0,.08); }\n    .app-nav-button { flex-direction: column; gap: .2rem; border-bottom: 0; padding: .5rem .2rem; font-size: .68rem; text-align: center; }\n    .nav-icon { font-size: 1.1rem; }\n    .workspace-main { padding-bottom: 64px; }\n    .workspace-main .app-content, .module-content { padding: .75rem .6rem 1.25rem; }\n    .home-hero { padding: .75rem; }\n    .module-card-grid { grid-template-columns: 1fr; }\n    .page-heading { flex-direction: column; align-items: stretch; gap: .6rem; }\n    .heading-actions { justify-content: stretch; }\n    .compact-field, .download-group { width: 100%; }\n    .download-group .btn { flex: 1; }\n    .stats-grid { gap: .35rem; }\n    .stat-card { flex-direction: column; align-items: flex-start; padding: .5rem; gap: .3rem; }\n    .stat-card strong { font-size: 1rem; }\n    .records-toolbar { flex-direction: column; align-items: stretch; gap: .5rem; }\n    .records-tools { justify-content: stretch; }\n    .search-box { width: 100%; }\n    .record-row { grid-template-columns: 1fr; gap: .3rem; padding: .6rem .3rem; }\n    .file-upload-btn { width: 100%; justify-content: center; }\n    .modal, .modal-small { width: 100%; max-width: none; margin: auto auto 0; border-radius: 8px 8px 0 0; max-height: calc(100dvh - .5rem); }\n    input, select, .btn { min-height: 40px; }\n    .btn-small { min-height: 36px; }\n  }\n  <\/style>\n  <style>\n  \/* Modern visual refresh \u2014 presentation only. *\/\n  :root {\n    --primary:#db2777; --primary-hover:#9d174d; --primary-soft:#fdf2f8;\n    --ink:#172033; --muted:#64748b; --line:#e3e8ef; --line-strong:#cbd5e1;\n    --surface:#fff; --background:#f4f7f9; --success:#15803d; --success-soft:#ecfdf3;\n    --warning:#b45309; --warning-soft:#fff7e6; --danger:#be123c;\n    --shadow-sm:0 1px 2px rgba(15,23,42,.04),0 5px 18px rgba(15,23,42,.05);\n    --shadow-md:0 20px 50px rgba(15,23,42,.13); --shadow:var(--shadow-sm);\n  }\n  html { font-size:15px; }\n  body { min-width:0; min-height:100vh; overflow-x:hidden; color:var(--ink); background:radial-gradient(circle at 8% 0%,rgba(219,39,119,.06),transparent 24rem),var(--background); }\n  ::selection { color:#fff; background:var(--primary); }\n  .eyebrow { margin-bottom:.35rem; color:var(--primary); font-size:.7rem; letter-spacing:.16em; }\n\n  \/* Authentication *\/\n  .auth-shell { min-height:100svh; padding:clamp(1rem,4vw,3rem); background:radial-gradient(circle at 16% 14%,rgba(244,114,182,.18),transparent 28rem),radial-gradient(circle at 90% 88%,rgba(59,130,246,.1),transparent 25rem),linear-gradient(145deg,#f8fbfc,#eef4f6); }\n  .auth-card { position:relative; width:min(500px,100%); padding:clamp(1.35rem,4vw,2rem); overflow:hidden; border:1px solid rgba(255,255,255,.9); border-radius:24px; background:rgba(255,255,255,.94); box-shadow:0 26px 70px rgba(131,24,67,.13); backdrop-filter:blur(16px); }\n  .auth-card::before { content:\"\"; position:absolute; inset:0 0 auto; height:4px; background:linear-gradient(90deg,#db2777,#f472b6,#3b82f6); }\n  .auth-brand { gap:.85rem; margin-bottom:1rem; }\n  .auth-logo { width:48px; height:48px; border-radius:14px; background:linear-gradient(145deg,#db2777,#9d174d); box-shadow:0 10px 22px rgba(219,39,119,.24); font-size:1.25rem; }\n  .auth-brand h1 { font-size:1.3rem; letter-spacing:-.015em; }\n  .auth-intro { margin-bottom:1.35rem; font-size:.9rem; line-height:1.7; }\n  .section-heading { margin-bottom:1rem; }\n  .section-heading h2 { font-size:1.22rem; }\n  .section-heading p { margin-top:.3rem; font-size:.84rem; line-height:1.65; }\n  .auth-tabs { gap:.3rem; margin-top:1.2rem; padding:.3rem; border:1px solid #e8edf2; border-radius:12px; background:#f3f6f8; }\n  .auth-tab { min-height:40px; border-radius:9px; transition:.18s ease; }\n  .auth-tab.active { color:var(--primary); border-color:transparent; background:#fff; box-shadow:0 2px 8px rgba(15,23,42,.07); }\n  .security-note { margin-top:.9rem; font-size:.74rem; }\n\n  \/* Forms and buttons *\/\n  .field { gap:.4rem; margin:.8rem 0; font-size:.84rem; }\n  .field small { font-size:.73rem; line-height:1.5; }\n  .form-two-columns { gap:.75rem; }\n  input,select { min-height:44px; padding:.62rem .75rem; border-color:#d7dee7; border-radius:10px; background:#fff; transition:border-color .16s,box-shadow .16s; }\n  input:hover,select:hover { border-color:#aebaca; }\n  input:focus,select:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(219,39,119,.12); }\n  .password-toggle { right:.4rem; min-height:32px; padding-inline:.65rem; border-radius:8px; }\n  .btn { min-height:40px; padding:.55rem .85rem; border-radius:10px; font-size:.84rem; transition:transform .16s,background .16s,border-color .16s,box-shadow .16s; }\n  .btn:hover:not(:disabled) { transform:translateY(-1px); }\n  .btn-primary { background:linear-gradient(145deg,#db2777,#be185d); box-shadow:0 7px 16px rgba(219,39,119,.17); }\n  .btn-primary:hover { background:linear-gradient(145deg,#be185d,#9d174d); }\n  .btn-outline { border-color:#d5dde7; }\n  .btn-outline:hover { border-color:#9cabbc; background:#f8fafc; }\n  .btn-ghost { background:#eef2f6; }\n  .btn-small { min-height:34px; padding:.4rem .7rem; }\n\n  .btn-excel { display:inline-flex; align-items:center; justify-content:center; gap:.55rem; color:#fff; border-color:#15803d; background:linear-gradient(145deg,#1f9d55,#15803d); box-shadow:0 7px 16px rgba(21,128,61,.2); }\n  .btn-excel:hover { color:#fff; border-color:#166534; background:linear-gradient(145deg,#198a49,#166534); box-shadow:0 10px 22px rgba(21,128,61,.24); }\n  .btn-excel:focus-visible { outline-color:#bbf7d0; }\n  .excel-logo { width:22px; height:22px; flex:0 0 22px; overflow:visible; }\n  .excel-sheet { fill:#f0fdf4; }\n  .excel-grid { fill:none; stroke:#86efac; stroke-width:1; }\n  .excel-panel { fill:#107c41; stroke:#fff; stroke-width:.7; }\n  .excel-x { fill:none; stroke:#fff; stroke-width:1.8; stroke-linecap:round; }\n  \/* Application shell *\/\n  .topbar { position:sticky; top:0; z-index:30; min-height:64px; padding:.65rem clamp(1rem,3vw,2rem); border-bottom:1px solid rgba(226,232,240,.9); background:rgba(255,255,255,.92); backdrop-filter:blur(14px); }\n  .topbar-brand,.user-menu { gap:.75rem; }\n  .mini-mark { width:38px; height:38px; border-radius:12px; background:linear-gradient(145deg,#db2777,#9d174d); box-shadow:0 7px 16px rgba(219,39,119,.2); }\n  .topbar-brand strong { font-size:.95rem; }\n  .notification-bell { width:40px; height:40px; flex-basis:40px; border-color:#d8e0e8; box-shadow:0 2px 8px rgba(15,23,42,.04); }\n  .workspace-shell { width:min(1460px,100%); grid-template-columns:220px minmax(0,1fr); gap:1.2rem; padding:0 1rem; }\n  .app-sidebar { top:64px; padding:1.25rem 0; }\n  .app-nav { gap:.35rem; padding:.55rem; border-radius:16px; box-shadow:var(--shadow-sm); }\n  .app-nav-button { min-height:44px; gap:.7rem; padding:.65rem .75rem; border:0; border-radius:11px; font-size:.86rem; transition:.16s ease; }\n  .app-nav-button:hover { transform:translateX(2px); background:#fdf2f8; }\n  .app-nav-button.active { background:linear-gradient(145deg,#db2777,#be185d); box-shadow:0 8px 18px rgba(219,39,119,.2); }\n  .nav-icon { width:1.5rem; font-size:1.05rem; }\n  .workspace-main .app-content,.module-content { padding:1.25rem 0 3rem; }\n\n  \/* Home *\/\n  .home-hero { position:relative; min-height:164px; padding:clamp(1.3rem,3vw,2rem); overflow:hidden; border:0; border-radius:22px; background:linear-gradient(130deg,#831843,#db2777 58%,#ec4899); box-shadow:0 18px 38px rgba(157,23,77,.2); }\n  .home-hero::after { content:\"\"; position:absolute; width:260px; height:260px; right:-75px; top:-105px; border:38px solid rgba(255,255,255,.07); border-radius:50%; }\n  .home-hero .eyebrow { color:#fce7f3; }\n  .home-hero h1 { position:relative; margin:.35rem 0 .45rem; font-size:clamp(1.45rem,3vw,2rem); }\n  .home-hero .muted { position:relative; color:rgba(255,255,255,.8); }\n  .module-card-grid { gap:1rem; margin:1.15rem 0; }\n  .module-card { min-height:190px; padding:1.2rem; border-color:#e1e7ee; border-radius:18px; box-shadow:var(--shadow-sm); transition:.18s ease; }\n  .module-card:hover { transform:translateY(-3px); border-color:rgba(219,39,119,.35); box-shadow:0 14px 30px rgba(15,23,42,.09); }\n  .module-card-icon { width:46px; height:46px; border-radius:13px; font-size:1.25rem; }\n  .module-card h2 { margin:.85rem 0 .3rem; font-size:1.02rem; }\n  .module-card p { font-size:.82rem; line-height:1.65; }\n  .module-card-meta { margin-top:.9rem; padding-top:.75rem; }\n\n  \/* Dashboards and data *\/\n  .app-content { width:100%; padding-inline:0; }\n  .page-heading { gap:2rem; padding:.25rem 0 .2rem; }\n  .page-heading h1 { font-size:1.45rem; }\n  .page-heading .muted { font-size:.84rem; line-height:1.55; }\n  .stats-grid { gap:.8rem; margin:1rem 0; }\n  .stat-card { min-height:92px; padding:1rem; gap:.85rem; border-color:#e1e7ee; border-radius:16px; box-shadow:var(--shadow-sm); }\n  .stat-card strong { font-size:1.5rem; }\n  .stat-icon { width:44px; height:44px; border-radius:13px; }\n  .records-panel,.placeholder-panel,.exam-entry-panel { border-color:#e1e7ee; border-radius:18px; box-shadow:var(--shadow-sm); }\n  .records-panel { padding:1rem; }\n  .records-toolbar { gap:1.25rem; margin-bottom:.8rem; }\n  .records-toolbar h2 { font-size:1.02rem; }\n  .records-tools { gap:.55rem; }\n  .status-filters { display:flex; align-items:center; gap:.35rem; flex-wrap:wrap; }\n  .status-filter { min-height:36px; padding:.4rem .72rem; color:#475569; border:1px solid var(--line); border-radius:999px; background:#fff; font:inherit; font-size:.8rem; font-weight:700; }\n  .status-filter:hover { color:var(--primary); border-color:rgba(219,39,119,.4); background:var(--primary-soft); }\n  .status-filter.active { color:#fff; border-color:var(--primary); background:var(--primary); }\n  .sort-box select,.search-box input { min-height:38px; }\n  .search-box { width:min(390px,100%); }\n  .records-list { border-top:1px solid var(--line); }\n  .record-row { gap:.85rem; padding:.8rem .55rem; }\n  .record-row:hover { background:#fff7fb; }\n  .record-title strong { font-size:.88rem; }\n  .record-title small { margin-top:.18rem; font-size:.74rem; }\n  .status-badge { padding:.32rem .65rem; border-radius:999px; }\n  .pagination { gap:.8rem; padding-top:1rem; }\n  .empty-state { padding:3rem 1rem; }\n  .exam-entry-panel { max-width:980px; margin-top:1rem; padding:1.1rem; }\n  .exam-table-wrap { border-radius:12px; }\n  .exam-table th,.exam-table td { padding:.55rem .6rem; }\n  .exam-table th { z-index:1; background:#f5f8fa; }\n\n  .exam-list-head strong { font-size:1.05rem; }\n  .exam-list-head .muted { color:var(--muted); font-size:.86rem; line-height:1.6; }\n  \/* Overflow safety for long Thai labels, school names, and narrow screens *\/\n  .workspace-main,.module-view,.app-content,.placeholder-panel,.exam-entry-panel,.records-panel,\n  .page-heading>*,.heading-actions,.topbar-brand>div:last-child,.user-copy,\n  .exam-list-head,.exam-tools,.exam-check,.exam-check-copy,\n  .module-card,.module-card-meta,.record-title { min-width:0; max-width:100%; }\n  .auth-brand h1,.topbar-brand strong,.user-copy strong,.page-heading h1,\n  .placeholder-panel h1,.module-card h2,.module-card p,.module-card-meta,\n  .exam-list-head strong,.exam-list-head .muted,.exam-check-copy strong,\n  .exam-check-copy small,.record-title strong,.record-title small,\n  .future-steps li,.detail-cell div,.empty-state p { overflow-wrap:anywhere; word-break:normal; }\n  .topbar-brand strong,.user-copy strong { white-space:normal; }\n  .heading-actions,.download-group,.records-tools,.record-actions { flex-wrap:wrap; }\n  .heading-actions .btn,.download-group .btn,.record-actions .btn { max-width:100%; white-space:normal; }\n  select,input { max-width:100%; }\n  .exam-table-wrap { width:100%; max-width:100%; overflow-x:auto; overscroll-behavior-inline:contain; -webkit-overflow-scrolling:touch; }\n  .exam-table { min-width:760px; }\n  \/* Readability pass: stronger contrast, comfortable Thai sizing, consistent rhythm *\/\n  :root { --ink:#1e293b; --muted:#526173; --line:#dce3eb; font-family:\"Noto Sans Thai\",\"Sarabun\",system-ui,-apple-system,sans-serif; }\n  body { font-size:1rem; line-height:1.6; text-rendering:optimizeLegibility; -webkit-font-smoothing:antialiased; }\n  h1,h2,h3,strong { color:var(--ink); }\n  h1,h2,h3,p { overflow-wrap:anywhere; }\n  h1,h2,h3 { line-height:1.35; }\n  p,li { line-height:1.65; }\n  .muted { color:var(--muted); }\n  .eyebrow { font-size:.76rem; line-height:1.45; }\n  .auth-brand h1 { font-size:1.38rem; }\n  .auth-intro { font-size:.94rem; }\n  .section-heading h2 { font-size:1.25rem; }\n  .section-heading p { font-size:.9rem; }\n  .field { font-size:.9rem; }\n  .field small,.security-note { font-size:.8rem; }\n  input,select,.btn { font-size:.9rem; }\n  .btn { min-height:42px; font-weight:600; }\n  .btn-small { min-height:36px; font-size:.82rem; }\n  .topbar-brand strong { font-size:1rem; }\n  .topbar-brand small,.user-copy small { color:var(--muted); font-size:.76rem; }\n  .user-copy strong { font-size:.9rem; }\n  .app-nav-button { font-size:.9rem; }\n  .home-hero h1 { color:#fff; }\n  .home-hero .muted { color:rgba(255,255,255,.88); font-size:.92rem; }\n  .module-card h2 { font-size:1.08rem; }\n  .module-card p { color:var(--muted); font-size:.88rem; }\n  .module-card-meta { color:#475569; font-size:.84rem; }\n  .page-heading h1 { font-size:1.55rem; }\n  .page-heading .muted { font-size:.9rem; }\n  .compact-field,.sort-box { color:#475569; font-size:.82rem; }\n  .stat-card small { color:var(--muted); font-size:.82rem; }\n  .stat-card strong { font-size:1.55rem; }\n  .records-toolbar h2 { font-size:1.08rem; }\n  .records-toolbar .muted { color:var(--muted); font-size:.82rem; }\n  .record-title strong { font-size:.94rem; line-height:1.5; }\n  .record-title small { color:var(--muted); font-size:.8rem; line-height:1.5; }\n  .status-badge { font-size:.78rem; line-height:1.35; }\n  .pagination,.empty-state p { font-size:.86rem; }\n  .placeholder-panel h1 { font-size:1.2rem; }\n  .future-steps { color:#475569; font-size:.9rem; }\n  .exam-check-copy strong { font-size:.9rem; }\n  .exam-check-copy small { color:var(--muted); font-size:.8rem; }\n  .exam-row-count { font-size:.86rem; }\n\n  .exam-table th { color:#475569; font-size:.8rem; }\n  .exam-table td { font-size:.88rem; }\n  .detail-cell small { color:var(--muted); font-size:.8rem; }\n  .detail-cell div { font-size:.9rem; line-height:1.6; }\n  .toast { font-size:.9rem; line-height:1.5; }\n  \/* WordPress button reset: allow long text inside the manual-entry card to wrap *\/\n  \/* Keep all exam-submission instructions in high-contrast black *\/\n  .future-steps,.future-steps li,.future-steps li.done,.future-steps li.active,.future-steps strong { color:var(--ink)!important; }\n  \/* Dialogs and feedback *\/\n  .modal { border:0; border-radius:20px; box-shadow:var(--shadow-md); }\n  .modal::backdrop { background:rgba(15,23,42,.58); backdrop-filter:blur(3px); }\n  .modal-header { padding:.85rem 1rem; }\n  .icon-button { width:34px; height:34px; border-radius:9px; }\n  .detail-grid { margin:.9rem; border-radius:12px; }\n  .detail-cell { padding:.75rem; }\n  .modal-actions { padding:.8rem 1rem 1rem; }\n  #changePasswordForm { padding-inline:1rem; }\n  .loading-overlay { backdrop-filter:blur(4px); }\n  .toast { padding:.75rem .9rem; border-radius:11px; }\n\n  @media (max-width:900px) {\n    .topbar { flex-wrap:wrap; }\n    .user-menu { min-width:0; max-width:100%; flex-wrap:wrap; }\n    .exam-table { min-width:680px; }\n    .topbar { position:relative; }\n    .workspace-shell { display:block; padding:0; }\n    .app-sidebar { position:fixed; inset:auto 0 0; z-index:40; padding:0; }\n    .app-nav { grid-template-columns:repeat(4,minmax(0,1fr)); gap:.25rem; padding:.4rem max(.4rem,env(safe-area-inset-right)) calc(.4rem + env(safe-area-inset-bottom)) max(.4rem,env(safe-area-inset-left)); border:0; border-top:1px solid var(--line); border-radius:0; box-shadow:0 -8px 24px rgba(15,23,42,.1); }\n    .app-nav-button { min-width:0; padding:.45rem .2rem; flex-direction:column; gap:.15rem; font-size:.7rem; text-align:center; }\n    .app-nav-button:hover { transform:none; }\n    .workspace-main { padding:0 .85rem 76px; }\n    .records-toolbar { align-items:stretch; flex-direction:column; }\n    .records-tools { justify-content:stretch; }\n  }\n  @media (max-width:640px) {\n    body { font-size:1rem; }\n    .app-nav-button { font-size:.76rem; }\n    .page-heading h1 { font-size:1.4rem; }\n    .home-hero h1 { font-size:1.5rem; }\n    .stat-card small { font-size:.8rem; }\n    .stat-card strong { font-size:1.3rem; }\n    .auth-shell { padding:.75rem; }\n    .auth-card { padding:1.15rem; border-radius:20px; }\n    .form-two-columns,.detail-grid { grid-template-columns:1fr; }\n    input,select { font-size:16px; }\n    .topbar { align-items:flex-start; padding:.65rem .75rem; flex-direction:column; gap:.65rem; }\n    .topbar-brand small { display:none; }\n    .user-menu { width:100%; display:grid; grid-template-columns:40px minmax(0,1fr) minmax(0,1fr); gap:.45rem; }\n    .user-copy { grid-column:1\/-1; text-align:left; }\n    .user-menu .btn { min-width:0; padding-inline:.45rem; font-size:.78rem; }\n    .workspace-main { padding-inline:.65rem; }\n    .home-hero { min-height:150px; padding:1.2rem; border-radius:18px; }\n    .module-card-grid { grid-template-columns:1fr; gap:.75rem; }\n    .module-card { min-height:0; padding:1rem; }\n    .page-heading { align-items:stretch; flex-direction:column; gap:.85rem; }\n    .heading-actions,.compact-field,.download-group { width:100%; }\n    .download-group { display:grid; grid-template-columns:1fr 1fr; }\n    .stats-grid { gap:.45rem; }\n    .stat-card { min-height:100px; padding:.7rem; flex-direction:column; align-items:flex-start; gap:.45rem; }\n    .records-panel { padding:.75rem; }\n    .records-tools,.sort-box,.search-box { width:100%; }\n    .status-filters { width:100%; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }\n    .status-filter { min-width:0; padding-inline:.35rem; }\n    .sort-box select { flex:1; }\n    .search-box { display:grid; grid-template-columns:auto minmax(0,1fr) auto; }\n    .record-row { display:flex; align-items:stretch; flex-direction:column; padding:.85rem .3rem; }\n    .record-title strong,.record-title small { overflow:visible; white-space:normal; overflow-wrap:anywhere; }\n    .record-actions .btn { flex:1; }\n    .pagination { display:grid; grid-template-columns:1fr auto 1fr; gap:.45rem; }\n\n    .exam-list-section { padding:.8rem; }\n    .file-upload-btn { width:100%; justify-content:center; }\n    .modal,.modal-small { width:100%; max-width:none; max-height:calc(100dvh - .5rem); margin:auto auto 0; border-radius:20px 20px 0 0; }\n  }\n  @media (prefers-reduced-motion:reduce) { *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; } }\n  <\/style>\n  <style>\n  \/* ===== \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23: \u0e15\u0e32\u0e23\u0e32\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e48\u0e32\u0e22\u0e41\u0e25\u0e30\u0e41\u0e22\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e44\u0e14\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 ===== *\/\n  .records-list { border-top: 0; }\n  .records-head,\n  .record-row {\n    display: grid;\n    \/* \u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e27\u0e49\u0e32\u0e07\u0e04\u0e07\u0e17\u0e35\u0e48 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 auto \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07\u0e01\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e25\u0e30\u0e41\u0e16\u0e27\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e19\u0e25\u0e30 grid\n       \u0e16\u0e49\u0e32\u0e43\u0e0a\u0e49 auto \u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1b\u0e38\u0e48\u0e21\u0e40\u0e14\u0e35\u0e22\u0e27 (\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27) \u0e08\u0e30\u0e44\u0e14\u0e49\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e15\u0e48\u0e32\u0e07\u0e08\u0e32\u0e01\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2a\u0e2d\u0e07\u0e1b\u0e38\u0e48\u0e21 \u0e41\u0e25\u0e49\u0e27\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e08\u0e30\u0e40\u0e2b\u0e25\u0e37\u0e48\u0e2d\u0e21\u0e01\u0e31\u0e19 *\/\n    grid-template-columns: 3.2rem minmax(0, 2.4fr) minmax(0, 1.7fr) minmax(0, 1.1fr) 8rem 13.5rem;\n    align-items: center;\n    gap: .75rem;\n  }\n  .records-head {\n    position: sticky; top: 64px; z-index: 1;\n    padding: .55rem .75rem;\n    color: #475569; background: #eef2f7;\n    border: 1px solid var(--line); border-bottom-width: 2px;\n    border-left: 4px solid #cbd5e1;\n    border-radius: 6px 6px 0 0;\n    font-size: .78rem; font-weight: 700;\n  }\n  .records-head span:first-child { text-align: center; }\n  .records-head span:last-child { text-align: right; }\n  .record-row {\n    padding: .7rem .75rem;\n    border: 1px solid var(--line); border-top: 0;\n    border-left: 4px solid #d97706;\n    border-radius: 0; background: #fff;\n    transition: background .12s;\n  }\n  .record-row:nth-child(even) { background: #fafbfd; }\n  .record-row:hover { background: #eef4fb; }\n  .record-row.is-confirmed { border-left-color: #16a34a; }\n  .record-row:last-child { border-radius: 0 0 6px 6px; }\n  .record-seq { color: var(--muted); font-size: .82rem; font-weight: 700; text-align: center; }\n  \/* break-word \u0e15\u0e31\u0e14\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e1a\u0e04\u0e33\u0e01\u0e48\u0e2d\u0e19 \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e15\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e1a\u0e1a \"29\/7\/256 | 8 08:30\" \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48 anywhere \u0e17\u0e33 *\/\n  .record-name { min-width: 0; color: var(--ink); font-size: .95rem; font-weight: 700; line-height: 1.45; overflow-wrap: break-word; }\n  .record-meta, .record-date { min-width: 0; color: #475569; font-size: .84rem; line-height: 1.45; overflow-wrap: break-word; }\n  .record-meta-label { display: block; color: var(--muted); font-size: .74rem; font-weight: 600; }\n  .record-empty { color: #a3adba; }\n  .record-row .status-badge {\n    display: inline-flex; align-items: center; gap: .4rem; justify-self: start;\n    padding: .3rem .6rem; border: 1px solid; border-radius: 4px;\n    font-size: .8rem; font-weight: 700; white-space: nowrap;\n  }\n  .record-row .status-badge::before { content: \"\"; width: .5rem; height: .5rem; border-radius: 50%; background: currentColor; }\n  .record-row .status-badge.pending { color: #92400e; border-color: #fcd34d; background: #fffbeb; }\n  .record-row .status-badge.confirmed { color: #15803d; border-color: #86efac; background: #f0fdf4; }\n  .record-actions { justify-content: flex-end; gap: .4rem; }\n\n  \/* ===== \u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07: \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2b\u0e25\u0e31\u0e01\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07 ===== *\/\n  .doc-rank {\n    display: inline-block; margin-bottom: .3rem; padding: .18rem .5rem;\n    color: #fff; background: var(--primary); border-radius: 4px;\n    font-size: .72rem; font-weight: 700; letter-spacing: .02em;\n  }\n  .doc-rank-attach { color: #475569; background: #e2e8f0; }\n  .cover-letter {\n    margin-bottom: 1.1rem; padding: .95rem;\n    border: 1px solid var(--line); border-left: 4px solid var(--primary);\n    border-radius: 12px; background: #fff;\n  }\n  .cover-letter-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }\n  .cover-letter-head strong { display: block; font-size: 1rem; }\n  \/* \u0e1b\u0e38\u0e48\u0e21\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e01\u0e31\u0e1a\u0e1b\u0e38\u0e48\u0e21\u0e41\u0e19\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e0a\u0e34\u0e14\u0e01\u0e31\u0e19 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e2d\u0e07\u0e02\u0e31\u0e49\u0e19\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 *\/\n  .cover-letter-actions { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }\n  .cover-letter-head .muted { display: block; margin-top: .15rem; font-size: .82rem; line-height: 1.5; }\n  .cover-letter-file {\n    display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .7rem;\n    margin-top: .75rem; padding: .55rem .7rem;\n    border: 1px solid var(--line); border-radius: 9px; background: #f8fafc;\n  }\n  .cover-letter-empty { margin: .7rem 0 0; font-size: .82rem; line-height: 1.55; }\n\n  @media (max-width: 640px) {\n    .cover-letter-head { align-items: stretch; flex-direction: column; gap: .6rem; }\n    .cover-letter-actions { width: 100%; }\n    .cover-letter-actions > * { flex: 1 1 100%; justify-content: center; }\n    .cover-letter-file { grid-template-columns: auto minmax(0, 1fr); }\n    .cover-letter-file .btn { grid-column: 1 \/ -1; width: 100%; }\n  }\n\n  \/* ===== \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a ===== *\/\n  .exam-attachments { margin-top: 1rem; padding: .85rem; border: 1px solid var(--line); border-radius: 12px; background: #f8fafc; }\n  .exam-attach-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }\n  .exam-attach-head strong { display: block; font-size: .95rem; }\n  .exam-attach-head .muted { display: block; margin-top: .15rem; font-size: .82rem; line-height: 1.5; }\n  .exam-attach-list { list-style: none; margin: .75rem 0 0; padding: 0; display: grid; gap: .45rem; }\n  .exam-attach-list:empty { display: none; }\n  .exam-attach-item {\n    display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .7rem;\n    padding: .55rem .7rem; border: 1px solid var(--line); border-radius: 9px; background: #fff;\n  }\n  .exam-attach-icon {\n    min-width: 2.6rem; padding: .18rem .35rem;\n    color: #475569; border: 1px solid var(--line-strong); border-radius: 4px; background: #fff;\n    font-size: .68rem; font-weight: 700; letter-spacing: .04em; text-align: center;\n  }\n  .exam-attach-copy { min-width: 0; }\n  .exam-attach-copy strong { display: block; font-size: .88rem; font-weight: 600; overflow-wrap: break-word; }\n  .exam-attach-copy small { display: block; margin-top: .1rem; color: var(--muted); font-size: .78rem; }\n  .exam-attach-empty { margin: .7rem 0 0; font-size: .82rem; line-height: 1.55; }\n\n  @media (max-width: 640px) {\n    .exam-attach-head { align-items: stretch; flex-direction: column; gap: .6rem; }\n    .exam-attach-head .file-upload-btn { width: 100%; justify-content: center; }\n    .exam-attach-item { grid-template-columns: auto minmax(0, 1fr); }\n    .exam-attach-item .btn { grid-column: 1 \/ -1; width: 100%; }\n  }\n\n  \/* \u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32 1100px \u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e41\u0e04\u0e1a\u0e08\u0e19\u0e15\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07\u0e40\u0e25\u0e02\u0e1b\u0e35 \u0e08\u0e36\u0e07\u0e2a\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e0a\u0e48\u0e27\u0e07\u0e19\u0e35\u0e49 *\/\n  @media (max-width: 1100px) {\n    .records-head { display: none; }\n    .record-row {\n      grid-template-columns: minmax(0, 1fr) auto;\n      grid-template-areas: \"seq status\" \"name name\" \"meta meta\" \"date date\" \"actions actions\";\n      gap: .35rem .75rem;\n      margin-bottom: .55rem;\n      padding: .8rem .85rem;\n      border: 1px solid var(--line); border-left: 4px solid #d97706; border-radius: 8px;\n    }\n    .record-row.is-confirmed { border-left-color: #16a34a; }\n    .record-row:nth-child(even) { background: #fff; }\n    .record-row:last-child { margin-bottom: 0; border-radius: 8px; }\n    .record-seq { grid-area: seq; text-align: left; }\n    .record-seq::before { content: \"\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48 \"; font-weight: 600; }\n    .record-name { grid-area: name; }\n    .record-meta { grid-area: meta; }\n    \/* \u0e42\u0e2b\u0e21\u0e14\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07 \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e33\u0e01\u0e31\u0e1a\u0e40\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e19\u0e35\u0e49\u0e04\u0e37\u0e2d\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e30\u0e44\u0e23 *\/\n    .record-date { grid-area: date; }\n    .record-date::before { content: \"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e21\u0e37\u0e48\u0e2d \"; color: var(--muted); }\n    .record-row .status-badge { grid-area: status; justify-self: end; }\n    .record-actions { grid-area: actions; margin-top: .35rem; justify-content: stretch; }\n    .record-actions .btn { flex: 1; }\n  }\n  \/* ===== \u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e2a\u0e48\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d: \u0e1a\u0e2d\u0e01\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e27\u0e48\u0e32\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2a\u0e48\u0e07\u0e43\u0e19\u0e19\u0e32\u0e21\u0e43\u0e04\u0e23 \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e23 ===== *\/\n  .exam-page-heading { align-items: flex-start; }\n  .exam-meta { display: grid; gap: .35rem; margin: 0; }\n  .exam-meta > div { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: .5rem; }\n  .exam-meta dt { color: var(--muted); font-size: .8rem; }\n  .exam-meta dd { margin: 0; color: var(--ink); font-size: .84rem; font-weight: 600; overflow-wrap: anywhere; }\n\n  \/* ===== \u0e41\u0e16\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e23\u0e49\u0e2d\u0e21: \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e43\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e27\u0e48\u0e32\u0e22\u0e31\u0e07\u0e02\u0e32\u0e14\u0e2d\u0e30\u0e44\u0e23 ===== *\/\n  .exam-checklist {\n    list-style: none; margin: 0 0 1rem; padding: .7rem .8rem;\n    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .6rem;\n    border: 1px solid var(--line); border-radius: 8px; background: #f8fafc;\n  }\n  .exam-check { display: block; min-width: 0; }\n  .exam-check-mark {\n    width: 26px; height: 26px; display: grid; place-items: center;\n    color: var(--muted); border: 1px solid var(--line-strong); border-radius: 50%;\n    background: #fff; font-size: .8rem; font-weight: 700;\n  }\n  .exam-check-copy { min-width: 0; }\n  .exam-check-copy strong { display: block; font-size: .85rem; }\n  .exam-check-copy small { display: block; margin-top: .1rem; color: var(--muted); font-size: .76rem; overflow-wrap: anywhere; }\n  .exam-check[data-state=\"done\"] .exam-check-mark { color: #fff; border-color: var(--success); background: var(--success); }\n  .exam-check[data-state=\"done\"] .exam-check-copy small { color: var(--success); font-weight: 600; }\n  \/* \u0e17\u0e31\u0e49\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e47\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e25\u0e31\u0e14 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e22\u0e32\u0e27 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e23\u0e30\u0e42\u0e14\u0e14\u0e44\u0e1b\u0e41\u0e01\u0e49\u0e08\u0e38\u0e14\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e02\u0e32\u0e14\u0e44\u0e14\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e47\u0e19\u0e27\u0e48\u0e32\u0e02\u0e32\u0e14 *\/\n  .exam-check-jump {\n    display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: .55rem;\n    width: 100%; margin: -.3rem; padding: .3rem;\n    color: inherit; border: 0; border-radius: 8px; background: none;\n    font: inherit; text-align: left; cursor: pointer;\n  }\n  .exam-check-jump:hover { background: #eef4fb; }\n  .exam-check-jump:focus-visible { outline: 2px solid var(--primary); outline-offset: 1px; }\n  \/* \u0e40\u0e1c\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e49\u0e41\u0e16\u0e1a\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\u0e02\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e17\u0e35\u0e48\u0e01\u0e23\u0e30\u0e42\u0e14\u0e14\u0e44\u0e1b\u0e08\u0e30\u0e16\u0e39\u0e01\u0e1a\u0e31\u0e07 *\/\n  .exam-jump-target { scroll-margin-top: 96px; }\n  .exam-jump-flash { animation: examJumpFlash 1.4s ease; }\n  @keyframes examJumpFlash {\n    from { box-shadow: 0 0 0 3px var(--primary-soft); }\n    to { box-shadow: 0 0 0 0 rgba(0,0,0,0); }\n  }\n\n  \/* ===== \u0e15\u0e32\u0e23\u0e32\u0e07\u0e15\u0e23\u0e27\u0e08\u0e17\u0e32\u0e19: \u0e04\u0e49\u0e19\u0e2b\u0e32 \u0e41\u0e08\u0e49\u0e07\u0e41\u0e16\u0e27\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a \u0e41\u0e25\u0e30\u0e08\u0e33\u0e01\u0e31\u0e14\u0e08\u0e33\u0e19\u0e27\u0e19\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07 ===== *\/\n  .exam-review-tools { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; margin: 0 0 .55rem; }\n  .exam-review-tools input {\n    flex: 1 1 13rem; min-width: 0; padding: .42rem .6rem;\n    border: 1px solid var(--line); border-radius: 6px; font: inherit; font-size: .85rem;\n  }\n  .exam-issue-note {\n    margin: 0 0 .55rem; padding: .5rem .7rem;\n    color: var(--warning); border: 1px solid var(--warning); border-left-width: 3px;\n    border-radius: 6px; background: var(--warning-soft); font-size: .82rem; line-height: 1.55;\n  }\n  .exam-preview-more {\n    display: flex; flex-wrap: wrap; align-items: center; justify-content: center;\n    gap: .5rem; margin: .6rem 0 0; color: var(--muted); font-size: .82rem;\n  }\n\n  \/* \u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e2a\u0e32\u0e22\u0e15\u0e32\u0e40\u0e2a\u0e21\u0e2d \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e01\u0e27\u0e48\u0e32\u0e08\u0e30\u0e16\u0e36\u0e07\u0e1b\u0e38\u0e48\u0e21 *\/\n  .exam-submit-bar {\n    position: sticky; bottom: 0; z-index: 5;\n    grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .3rem .9rem;\n    justify-items: stretch;\n    padding: .7rem 0 calc(.7rem + env(safe-area-inset-bottom));\n    background: #fff;\n  }\n  .exam-submit-bar .exam-submit-summary { grid-column: 1; }\n  .exam-submit-bar #submitExamListButton { grid-column: 2; grid-row: 1 \/ span 2; }\n  .exam-submit-bar .muted { grid-column: 1; margin: 0; font-size: .8rem; }\n  \/* \u0e08\u0e2d\u0e17\u0e35\u0e48\u0e41\u0e16\u0e1a\u0e40\u0e21\u0e19\u0e39\u0e25\u0e2d\u0e22\u0e2d\u0e22\u0e39\u0e48\u0e25\u0e48\u0e32\u0e07\u0e2a\u0e38\u0e14 \u0e15\u0e49\u0e2d\u0e07\u0e22\u0e01\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e17\u0e31\u0e1a\u0e01\u0e31\u0e19 *\/\n  @media (max-width: 900px) { .exam-submit-bar { bottom: 68px; } }\n  @media (max-width: 560px) {\n    .exam-submit-bar { grid-template-columns: minmax(0, 1fr); }\n    .exam-submit-bar #submitExamListButton { grid-column: 1; grid-row: auto; }\n  }\n\n  \/* ===== \u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d: \u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e41\u0e16\u0e27\u0e40\u0e14\u0e35\u0e22\u0e27\u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e27\u0e34\u0e18\u0e35 ===== *\/\n  .exam-list-section { margin-top: 1.1rem; padding: .95rem; border: 1px solid var(--line); border-left: 4px solid var(--line-strong); border-radius: 8px; background: #fff; }\n  .exam-list-head strong { display: block; font-size: 1rem; }\n  .exam-list-head .muted { display: block; margin-top: .15rem; font-size: .82rem; line-height: 1.5; }\n  .exam-tools {\n    display: flex; flex-wrap: wrap; align-items: center; gap: .45rem;\n    margin: .8rem 0 .7rem; padding-bottom: .7rem; border-bottom: 1px solid var(--line);\n  }\n  \/* \u0e15\u0e31\u0e27\u0e19\u0e31\u0e1a\u0e14\u0e31\u0e19\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e07\u0e44\u0e1b\u0e0a\u0e34\u0e14\u0e02\u0e27\u0e32\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e1b\u0e38\u0e48\u0e21\u0e25\u0e49\u0e32\u0e07 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e41\u0e22\u0e01\u0e01\u0e25\u0e38\u0e48\u0e21 \"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" \u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e01\u0e25\u0e38\u0e48\u0e21 \"\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\" *\/\n  .exam-row-count { margin-left: auto; color: var(--muted); font-size: .82rem; font-weight: 600; }\n  .exam-row-seq { width: 3.5rem; color: var(--muted); font-weight: 700; text-align: center; }\n  .exam-source-file {\n    margin: 0 0 .55rem; padding: .45rem .65rem;\n    color: #475569; border: 1px solid var(--line); border-left: 3px solid var(--line-strong);\n    border-radius: 6px; background: #f8fafc; font-size: .8rem; font-weight: 600; overflow-wrap: anywhere;\n  }\n  \/* \u0e15\u0e32\u0e23\u0e32\u0e07\u0e15\u0e23\u0e27\u0e08\u0e17\u0e32\u0e19: \u0e41\u0e16\u0e27\u0e2a\u0e25\u0e31\u0e1a\u0e2a\u0e35\u0e43\u0e2b\u0e49\u0e01\u0e27\u0e32\u0e14\u0e15\u0e32\u0e15\u0e32\u0e21\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e07\u0e48\u0e32\u0e22 \u0e41\u0e25\u0e30\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e14\u0e49\u0e27\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07\u0e08\u0e23\u0e34\u0e07 *\/\n  .exam-table tbody tr:nth-child(even) { background: #fafbfd; }\n  \/* \u0e15\u0e49\u0e2d\u0e07\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e28\u0e2b\u0e25\u0e31\u0e07\u0e01\u0e0e\u0e41\u0e16\u0e1a\u0e2a\u0e25\u0e31\u0e1a\u0e2a\u0e35 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e19\u0e49\u0e33\u0e2b\u0e19\u0e31\u0e01\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19 \u0e01\u0e0e\u0e17\u0e35\u0e48\u0e21\u0e32\u0e17\u0e35\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e36\u0e07\u0e0a\u0e19\u0e30\n     \u0e16\u0e49\u0e32\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e28\u0e44\u0e27\u0e49\u0e01\u0e48\u0e2d\u0e19 \u0e41\u0e16\u0e27\u0e04\u0e39\u0e48\u0e17\u0e35\u0e48\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e08\u0e30\u0e44\u0e21\u0e48\u0e15\u0e34\u0e14\u0e2a\u0e35\u0e40\u0e25\u0e22 \u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e44\u0e2e\u0e44\u0e25\u0e15\u0e4c\u0e41\u0e04\u0e48\u0e41\u0e16\u0e27\u0e04\u0e35\u0e48 *\/\n  .exam-table tbody tr.exam-row-issue { background: var(--warning-soft); }\n  .exam-table tbody tr:hover { background: #eef4fb; }\n  .exam-cell-empty { color: #a3adba; }\n  .exam-submit-summary { margin: 0; color: var(--ink); font-size: .86rem; font-weight: 600; }\n\n  \/* ===== \u0e43\u0e1a\u0e23\u0e31\u0e1a\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07 ===== *\/\n  .receipt-body { padding: .25rem 1rem 0; }\n  .receipt-grid { display: grid; gap: .4rem; margin: 0 0 1rem; }\n  .receipt-grid > div { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: .6rem; align-items: baseline; }\n  .receipt-grid dt { color: var(--muted); font-size: .82rem; }\n  .receipt-grid dd { margin: 0; color: var(--ink); font-size: .88rem; font-weight: 600; overflow-wrap: anywhere; }\n  #receiptNumber { font-family: ui-monospace, \"Cascadia Mono\", Consolas, monospace; font-size: .82rem; }\n  .receipt-files-title { display: block; font-size: .88rem; }\n  .receipt-files { list-style: none; margin: .5rem 0 0; padding: 0; display: grid; gap: .4rem; }\n  .receipt-files li {\n    display: grid; grid-template-columns: 7rem minmax(0, 1fr) auto; align-items: center; gap: .6rem;\n    padding: .55rem .7rem; border: 1px solid var(--line); border-radius: 8px; background: #f8fafc;\n  }\n  .receipt-file-role { color: var(--muted); font-size: .78rem; font-weight: 700; }\n  .receipt-files strong { min-width: 0; font-size: .84rem; font-weight: 600; overflow-wrap: anywhere; }\n  .receipt-note { margin: .9rem 0 0; font-size: .8rem; line-height: 1.6; }\n\n  @media (max-width: 640px) {\n    .receipt-grid > div, .receipt-files li { grid-template-columns: minmax(0, 1fr); gap: .15rem; }\n    .receipt-files li .btn { justify-self: stretch; margin-top: .3rem; text-align: center; }\n  }\n\n  \/* \u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e43\u0e1a\u0e23\u0e31\u0e1a \u0e44\u0e21\u0e48\u0e40\u0e2d\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e19\u0e49\u0e32 *\/\n  @media print {\n    body > *:not(#receiptDialog) { display: none !important; }\n    #receiptDialog { position: static; max-width: none; width: auto; margin: 0; border: 0; box-shadow: none; }\n    #receiptDialog .icon-button, #receiptDialog .modal-actions { display: none !important; }\n    .receipt-files li { background: #fff; }\n  }\n\n  @media (max-width: 640px) {\n    .exam-checklist { grid-template-columns: 1fr; gap: .5rem; }\n    .exam-tools { flex-direction: column; align-items: stretch; }\n    .exam-tools .btn, .exam-tools .file-upload-btn { width: 100%; justify-content: center; }\n    .exam-row-count { margin: .2rem 0 0; text-align: center; }\n    .exam-row-seq { width: auto; text-align: left; }\n  }\n\n\n\n  \/* ===== \u0e01\u0e23\u0e32\u0e1f =====\n     \u0e2a\u0e35\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e1c\u0e39\u0e01\u0e01\u0e31\u0e1a\u0e42\u0e17\u0e19\u0e41\u0e1a\u0e23\u0e19\u0e14\u0e4c\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c (--primary) \u0e08\u0e36\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e09\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e17\u0e31\u0e49\u0e07\u0e01\u0e23\u0e32\u0e1f\n     \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e49\u0e04\u0e39\u0e48\u0e40\u0e02\u0e35\u0e22\u0e27\/\u0e41\u0e14\u0e07 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e04\u0e39\u0e48\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e2a\u0e35\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e15\u0e32\u0e1a\u0e2d\u0e14\u0e2a\u0e35\u0e41\u0e14\u0e07-\u0e40\u0e02\u0e35\u0e22\u0e27 *\/\n  .viz { position: relative; --viz-track: #f0dbe6; --viz-grid: #e6e9ee; --viz-axis: #cbd5e1; }\n  @supports (color: color-mix(in srgb, red 10%, white)) {\n    .viz { --viz-track: color-mix(in srgb, var(--primary) 17%, #fff); }\n  }\n  .viz-meters { display: grid; gap: .55rem; }\n  .viz-meter { display: grid; grid-template-columns: minmax(5.5rem, 8.5rem) minmax(0, 1fr) auto; align-items: center; gap: .7rem; }\n  .viz-meter-label { color: var(--ink); font-size: .82rem; overflow-wrap: anywhere; }\n  .viz-track { height: 18px; border-radius: 3px; background: var(--viz-track); overflow: hidden; }\n  .viz-fill { height: 100%; border-radius: 0 4px 4px 0; background: var(--primary); transition: width .3s ease; }\n  .viz-fill.is-full { border-radius: 3px; }\n  .viz-meter-value { min-width: 3.4rem; color: var(--ink); font-size: .8rem; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }\n  .viz-meter:hover .viz-track { outline: 2px solid var(--primary-soft); outline-offset: 1px; }\n\n  .viz-plot svg { display: block; width: 100%; height: auto; }\n  .viz-grid-line { stroke: var(--viz-grid); stroke-width: 1; }\n  .viz-axis-line { stroke: var(--viz-axis); stroke-width: 1; }\n  .viz-tick { fill: var(--muted); font-size: 11px; font-variant-numeric: tabular-nums; }\n  .viz-line { fill: none; stroke: var(--primary); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }\n  .viz-dot { fill: var(--primary); stroke: #fff; stroke-width: 2; }\n  .viz-end-label { fill: var(--ink); font-size: 12px; font-weight: 700; }\n  .viz-hit { fill: transparent; cursor: pointer; }\n  .viz-placeholder { margin: 0; padding: 1.2rem 0; text-align: center; font-size: .84rem; }\n  .viz-tip {\n    position: absolute; z-index: 5; display: none; padding: .45rem .6rem;\n    color: #fff; background: rgba(15,23,42,.94); border-radius: 6px;\n    font-size: .78rem; line-height: 1.5; white-space: nowrap; pointer-events: none;\n    transform: translate(-50%, -115%);\n  }\n  .viz-tip strong, .viz-tip span { display: block; }\n  .viz-tip strong { margin-bottom: .12rem; font-size: .8rem; }\n\n  @media (max-width: 640px) {\n    .viz-meter { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: \"label value\" \"track track\"; gap: .3rem .5rem; }\n    .viz-meter-label { grid-area: label; }\n    .viz-meter-value { grid-area: value; }\n    .viz-track { grid-area: track; }\n  }\n\n  @media (max-width: 640px) {\n    .stats-panel { padding: .75rem; }\n    .stats-table { min-width: 520px; }\n  }\n\n  \/* ===== \u0e44\u0e2d\u0e04\u0e2d\u0e19\u0e41\u0e1a\u0e1a SVG: \u0e44\u0e21\u0e48\u0e1e\u0e36\u0e48\u0e07\u0e1f\u0e2d\u0e19\u0e15\u0e4c\u0e2d\u0e35\u0e42\u0e21\u0e08\u0e34 \u0e08\u0e36\u0e07\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19\u0e17\u0e38\u0e01\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 ===== *\/\n  .ui-icon {\n    width: 1em; height: 1em; display: block; flex: 0 0 auto;\n    fill: none; stroke: currentColor; stroke-width: 1.8;\n    stroke-linecap: round; stroke-linejoin: round;\n  }\n  .nav-icon { display: grid; place-items: center; }\n  .nav-icon .ui-icon { width: 1.15em; height: 1.15em; }\n  .module-card-icon .ui-icon, .stat-icon .ui-icon { width: 58%; height: 58%; }\n  .notification-bell .ui-icon { width: 19px; height: 19px; fill: none; }\n  .search-box .ui-icon { width: 1.05rem; height: 1.05rem; color: var(--muted); }\n  .empty-icon .ui-icon { width: 1.8rem; height: 1.8rem; margin: 0 auto; color: var(--muted); }\n  .security-note .ui-icon { width: .95rem; height: .95rem; }\n  \/* ===== \u0e2b\u0e19\u0e49\u0e32\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 ===== *\/\n  .stat-note { display: block; margin-top: .1rem; color: var(--muted); font-size: .76rem; font-weight: 600; }\n  .stats-panel {\n    margin-top: 1rem; padding: 1rem;\n    border: 1px solid var(--line); border-radius: 10px; background: #fff; box-shadow: var(--shadow-sm);\n  }\n  .stats-panel-head { margin-bottom: .7rem; }\n  .stats-panel-head h2 { margin: 0; font-size: 1rem; }\n  .stats-panel-head p { margin: .25rem 0 0; font-size: .8rem; line-height: 1.6; }\n  .stats-table-wrap { overflow-x: auto; }\n  .stats-table { width: 100%; border-collapse: collapse; min-width: 560px; }\n  .stats-table th, .stats-table td { padding: .5rem .6rem; border-bottom: 1px solid var(--line); text-align: right; font-size: .86rem; }\n  .stats-table th:first-child, .stats-table td:first-child { text-align: left; }\n  .stats-table thead th { color: #475569; background: #f1f5f9; font-size: .78rem; font-weight: 700; white-space: nowrap; }\n  .stats-table tbody tr:nth-child(even) { background: #fafbfd; }\n  .stats-table tbody tr:hover { background: #eef4fb; }\n  \/* \u0e41\u0e16\u0e27\u0e23\u0e27\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e2d\u0e01\u0e17\u0e31\u0e19\u0e17\u0e35\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e22\u0e2d\u0e14\u0e23\u0e27\u0e21 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e2d\u0e35\u0e01\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e2b\u0e21\u0e27\u0e14 *\/\n  .stats-table tr.stats-total-row { border-top: 2px solid var(--line-strong); background: #f8fafc!important; font-weight: 700; }\n  \/* \u0e41\u0e16\u0e27\u0e02\u0e2d\u0e07\u0e40\u0e17\u0e2d\u0e21\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e22\u0e39\u0e48 \u0e15\u0e49\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e14\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35\u0e27\u0e48\u0e32\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\u0e21\u0e32\u0e08\u0e32\u0e01\u0e41\u0e16\u0e27\u0e44\u0e2b\u0e19 *\/\n  .stats-table tr.stats-active-row { background: var(--primary-soft)!important; font-weight: 700; }\n  .stats-table tr.stats-active-row td:first-child::after { content: \" (\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e2a\u0e14\u0e07)\"; color: var(--primary); font-size: .74rem; font-weight: 600; }\n  .stats-table td.stats-empty { color: #a3adba; }\n  .stats-rate { font-variant-numeric: tabular-nums; }\n  .stats-footnote { margin: .7rem 0 0; font-size: .78rem; line-height: 1.6; }\n\n\n  @media (max-width: 640px) {\n    .stats-panel { padding: .75rem; }\n    .stats-table { min-width: 520px; }\n  }\n\n  <\/style>\n<\/head>\n\n<body>\n  <div id=\"toastRegion\" class=\"toast-region\" aria-live=\"polite\"><\/div>\n  <div id=\"loadingOverlay\" class=\"loading-overlay hidden\" aria-live=\"polite\" aria-busy=\"true\">\n    <div class=\"spinner\"><\/div>\n    <span id=\"loadingText\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14...<\/span>\n  <\/div>\n\n  <main id=\"authView\" class=\"auth-shell\">\n    <section class=\"auth-card\" aria-labelledby=\"authTitle\">\n      <div class=\"auth-brand\">\n        <div class=\"auth-logo\" id=\"brandLogo\" aria-hidden=\"true\">\u0e2d<\/div>\n        <div>\n          <h1 id=\"authTitle\">Abhidhamma Student Information System - ASIS<\/h1>\n          <p class=\"brand-sub\">\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22<br>\u0e21\u0e2b\u0e32\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e21\u0e2b\u0e32\u0e08\u0e38\u0e2c\u0e32\u0e25\u0e07\u0e01\u0e23\u0e13\u0e23\u0e32\u0e0a\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22<\/p>\n        <\/div>\n      <\/div>\n\n      <div id=\"loginPanel\" class=\"auth-content\">\n        <form id=\"loginForm\" novalidate>\n          <label class=\"field\">\n            <span>\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25<\/span>\n            <input id=\"loginId\" name=\"login\" autocomplete=\"username\" placeholder=\"username@example.com\" required>\n          <\/label>\n          <label class=\"field\">\n            <span>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/span>\n            <span class=\"password-wrap\">\n              <input id=\"loginPassword\" name=\"password\" type=\"password\" autocomplete=\"current-password\" placeholder=\"\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\" required>\n              <button class=\"password-toggle\" type=\"button\" aria-label=\"\u0e41\u0e2a\u0e14\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e0b\u0e48\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\">\u0e41\u0e2a\u0e14\u0e07<\/button>\n            <\/span>\n          <\/label>\n          <button class=\"btn btn-primary btn-block\" type=\"submit\">\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a<\/button>\n          <button id=\"forgotButton\" class=\"text-button btn-block\" type=\"button\">\u0e25\u0e37\u0e21\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19?<\/button>\n        <\/form>\n      <\/div>\n\n      <div id=\"registerPanel\" class=\"auth-content hidden\">\n        <div class=\"section-heading\">\n          <h2>\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01<\/h2>\n          <p>\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e30\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34<\/p>\n        <\/div>\n        <form id=\"registerForm\" novalidate>\n          <div class=\"form-two-columns\">\n            <label class=\"field\">\n              <span>\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49<\/span>\n              <input name=\"username\" minlength=\"4\" maxlength=\"80\" autocomplete=\"username\" required>\n            <\/label>\n            <label class=\"field\">\n              <span>\u0e2d\u0e35\u0e40\u0e21\u0e25<\/span>\n              <input name=\"email\" type=\"email\" maxlength=\"200\" autocomplete=\"email\" required>\n            <\/label>\n          <\/div>\n          <label class=\"field\">\n            <span>\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19<\/span>\n            <select name=\"schoolName\" required>\n              <option value=\"\">\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 \u2014<\/option>\n              <option value=\"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 (\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07)\">\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 (\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07 (\u0e1a\u0e32\u0e07\u0e1b\u0e25\u0e32\u0e21\u0e49\u0e32)\">\u0e27\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07 (\u0e1a\u0e32\u0e07\u0e1b\u0e25\u0e32\u0e21\u0e49\u0e32)<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e01\u0e25\u0e38\u0e48\u0e21\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e23\u0e32\u0e0d\u0e23\u0e21\u0e22\u0e4c \u0e01\u0e23\u0e30\u0e17\u0e23\u0e27\u0e07\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e01\u0e25\u0e38\u0e48\u0e21\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e23\u0e32\u0e0d\u0e23\u0e21\u0e22\u0e4c \u0e01\u0e23\u0e30\u0e17\u0e23\u0e27\u0e07\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e40\u0e01\u0e48\u0e32\u0e42\u0e1a\u0e23\u0e32\u0e13\">\u0e27\u0e31\u0e14\u0e40\u0e01\u0e48\u0e32\u0e42\u0e1a\u0e23\u0e32\u0e13<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e17\u0e38\u0e48\u0e07\u0e27\u0e31\u0e27\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e17\u0e38\u0e48\u0e07\u0e27\u0e31\u0e27<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e1e\u0e38\u0e17\u0e18\u0e42\u0e04\u0e14\u0e21\">\u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e1e\u0e38\u0e17\u0e18\u0e42\u0e04\u0e14\u0e21<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e08\u0e31\u0e19\u0e17\u0e23\u0e2a\u0e38\u0e02\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e08\u0e31\u0e19\u0e17\u0e23\u0e2a\u0e38\u0e02<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e41\u0e14\u0e07\">\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e41\u0e14\u0e07<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e18\u0e23\u0e23\u0e21\u0e32\u0e23\u0e32\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e18\u0e23\u0e23\u0e21\u0e32\u0e23\u0e32\u0e21<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e2a\u0e21\u0e13\u0e01\u0e34\u0e08(\u0e2b\u0e25\u0e31\u0e07\u0e28\u0e32\u0e25)\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e2a\u0e21\u0e13\u0e01\u0e34\u0e08(\u0e2b\u0e25\u0e31\u0e07\u0e28\u0e32\u0e25)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e15\u0e36\u0e01\">\u0e27\u0e31\u0e14\u0e15\u0e36\u0e01 (\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d\">\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e32\u0e21\u0e39\u0e25\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e32\u0e21\u0e39\u0e25\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e19\u0e32\u0e1e\u0e23\u0e49\u0e32\u0e27\u0e40\u0e01\u0e48\u0e32\">\u0e27\u0e31\u0e14\u0e19\u0e32\u0e1e\u0e23\u0e49\u0e32\u0e27\u0e40\u0e01\u0e48\u0e32<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e19\u0e34\u0e2a\u0e2a\u0e23\u0e13\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e19\u0e34\u0e2a\u0e2a\u0e23\u0e13\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e0a\u0e31\u0e22\u0e21\u0e07\u0e04\u0e25\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e0a\u0e31\u0e22\u0e21\u0e07\u0e04\u0e25<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e42\u0e2a\u0e20\u0e13\">\u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e42\u0e2a\u0e20\u0e13<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e27\u0e0a\u0e34\u0e23\u0e1a\u0e23\u0e23\u0e1e\u0e15\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e27\u0e0a\u0e34\u0e23\u0e1a\u0e23\u0e23\u0e1e\u0e15<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1c\u0e48\u0e2d\u0e07\u0e1e\u0e25\u0e2d\u0e22\u0e27\u0e34\u0e23\u0e34\u0e22\u0e32\u0e23\u0e32\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1c\u0e48\u0e2d\u0e07\u0e1e\u0e25\u0e2d\u0e22\u0e27\u0e34\u0e23\u0e34\u0e22\u0e32\u0e23\u0e32\u0e21<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e2b\u0e21\u0e08\u0e23\u0e34\u0e22\u0e32\u0e27\u0e32\u0e2a\">\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e2b\u0e21\u0e08\u0e23\u0e34\u0e22\u0e32\u0e27\u0e32\u0e2a<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e18\u0e32\u0e15\u0e38\u0e28\u0e23\u0e35\u0e08\u0e2d\u0e21\u0e17\u0e2d\u0e07\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\">\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e18\u0e32\u0e15\u0e38\u0e28\u0e23\u0e35\u0e08\u0e2d\u0e21\u0e17\u0e2d\u0e07\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1e\u0e38\u0e17\u0e18\u0e1a\u0e39\u0e0a\u0e32\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1e\u0e38\u0e17\u0e18\u0e1a\u0e39\u0e0a\u0e32<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e04\u0e39\u0e49\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e04\u0e39\u0e49<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e23\u0e31\u0e0d\u0e0d\u0e34\u0e01\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e23\u0e31\u0e0d\u0e0d\u0e34\u0e01<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e41\u0e2b\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e41\u0e2b\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e1e\u0e25\u0e07(\u0e01\u0e25\u0e32\u0e07\u0e2a\u0e27\u0e19)\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e1e\u0e25\u0e07(\u0e01\u0e25\u0e32\u0e07\u0e2a\u0e27\u0e19)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e21\u0e2b\u0e32\u0e18\u0e32\u0e15\u0e38\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23 (\u0e23\u0e32\u0e0a\u0e1a\u0e38\u0e23\u0e35)\">\u0e27\u0e31\u0e14\u0e21\u0e2b\u0e32\u0e18\u0e32\u0e15\u0e38\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23 (\u0e23\u0e32\u0e0a\u0e1a\u0e38\u0e23\u0e35)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e21\u0e40\u0e2b\u0e22\u0e07\u0e04\u0e13\u0e4c\">\u0e27\u0e31\u0e14\u0e21\u0e40\u0e2b\u0e22\u0e07\u0e04\u0e13\u0e4c<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e40\u0e21\u0e37\u0e2d\u0e07\u0e21\u0e32\u0e07\">\u0e27\u0e31\u0e14\u0e40\u0e21\u0e37\u0e2d\u0e07\u0e21\u0e32\u0e07<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e22\u0e32\u0e19\u0e19\u0e32\u0e27\u0e32\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e22\u0e32\u0e19\u0e19\u0e32\u0e27\u0e32<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e22\u0e38\u0e27\u0e1e\u0e38\u0e17\u0e18\u0e34\u0e01\u0e2a\u0e21\u0e32\u0e04\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e22\u0e38\u0e27\u0e1e\u0e38\u0e17\u0e18\u0e34\u0e01\u0e2a\u0e21\u0e32\u0e04\u0e21<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e04\u0e24\u0e2b\u0e4c \u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e04\u0e24\u0e2b\u0e4c \u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a\u0e27\u0e34\u0e2b\u0e32\u0e23\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a\u0e27\u0e34\u0e2b\u0e32\u0e23<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e23\u0e4d\u0e48\u0e32\u0e40\u0e1b\u0e34\u0e07 (\u0e15\u0e42\u0e1b\u0e17\u0e32\u0e23\u0e32\u0e21)\">\u0e27\u0e31\u0e14\u0e23\u0e4d\u0e48\u0e32\u0e40\u0e1b\u0e34\u0e07 (\u0e15\u0e42\u0e1b\u0e17\u0e32\u0e23\u0e32\u0e21)<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e31\u0e07\u0e2b\u0e34\u0e19\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e31\u0e07\u0e2b\u0e34\u0e19<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e18\u0e23\u0e23\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e18\u0e23\u0e23\u0e21<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e28\u0e34\u0e23\u0e34\u0e1e\u0e07\u0e29\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e19\u0e34\u0e21\u0e34\u0e15\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e28\u0e34\u0e23\u0e34\u0e1e\u0e07\u0e29\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e19\u0e34\u0e21\u0e34\u0e15<\/option>\n              <option value=\"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2f (\u0e40\u0e02\u0e32\u0e14\u0e34\u0e19\u0e2b\u0e19\u0e2d\u0e07\u0e41\u0e2a\u0e07)\">\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2f (\u0e40\u0e02\u0e32\u0e14\u0e34\u0e19\u0e2b\u0e19\u0e2d\u0e07\u0e41\u0e2a\u0e07)<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e16\u0e32\u0e19\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e1e\u0e34\u0e28\u0e0d\u0e32\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e16\u0e32\u0e19\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e16\u0e32\u0e19\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e1e\u0e34\u0e28\u0e0d\u0e32\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e16\u0e32\u0e19<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2a\u0e23\u0e30\u0e1a\u0e31\u0e27\">\u0e27\u0e31\u0e14\u0e2a\u0e23\u0e30\u0e1a\u0e31\u0e27<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2a\u0e27\u0e48\u0e32\u0e07\u0e21\u0e35\u0e0a\u0e31\u0e22\">\u0e27\u0e31\u0e14\u0e2a\u0e27\u0e48\u0e32\u0e07\u0e21\u0e35\u0e0a\u0e31\u0e22<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e0a\u0e38\u0e01\">\u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e0a\u0e38\u0e01<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e22\u0e32\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e22\u0e32<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e21\u0e48\u0e0a\u0e35\u0e44\u0e17\u0e22 \u0e28\u0e32\u0e25\u0e32\u0e22\u0e32\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e21\u0e48\u0e0a\u0e35\u0e44\u0e17\u0e22 \u0e28\u0e32\u0e25\u0e32\u0e22\u0e32<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e38\u0e17\u0e18\u0e08\u0e34\u0e19\u0e14\u0e32\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e38\u0e17\u0e18\u0e08\u0e34\u0e19\u0e14\u0e32<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2a\u0e38\u0e27\u0e23\u0e23\u0e13\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\">\u0e27\u0e31\u0e14\u0e2a\u0e38\u0e27\u0e23\u0e23\u0e13\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2b\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48\u0e2a\u0e34\u0e15\u0e32\u0e23\u0e32\u0e21\">\u0e27\u0e31\u0e14\u0e2b\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48\u0e2a\u0e34\u0e15\u0e32\u0e23\u0e32\u0e21<\/option>\n              <option value=\"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e17\u0e32\u0e07\u0e44\u0e01\u0e25 (\u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e21\u0e31\u0e07\u0e04\u0e25\u0e32\u0e23\u0e32\u0e21)\">\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e17\u0e32\u0e07\u0e44\u0e01\u0e25 (\u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e21\u0e31\u0e07\u0e04\u0e25\u0e32\u0e23\u0e32\u0e21)<\/option>\n              <option value=\"\u0e27\u0e31\u0e14\u0e2d\u0e38\u0e14\u0e21\u0e21\u0e07\u0e04\u0e25\">\u0e27\u0e31\u0e14\u0e2d\u0e38\u0e14\u0e21\u0e21\u0e07\u0e04\u0e25<\/option>\n              <option value=\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e38\u0e1a\u0e25\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e38\u0e1a\u0e25\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21<\/option>\n            <\/select>\n            <small>\u0e41\u0e15\u0e48\u0e25\u0e30\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e21\u0e35\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e17\u0e35\u0e48\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e41\u0e25\u0e49\u0e27\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 3 \u0e1a\u0e31\u0e0d\u0e0a\u0e35<\/small>\n          <\/label>\n          <label class=\"field\">\n            <span>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/span>\n            <span class=\"password-wrap\">\n              <input name=\"password\" type=\"password\" minlength=\"8\" autocomplete=\"new-password\" required>\n              <button class=\"password-toggle\" type=\"button\" aria-label=\"\u0e41\u0e2a\u0e14\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e0b\u0e48\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\">\u0e41\u0e2a\u0e14\u0e07<\/button>\n            <\/span>\n            <small>\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22 8 \u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23 \u0e41\u0e25\u0e30\u0e21\u0e35\u0e17\u0e31\u0e49\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e01\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02<\/small>\n          <\/label>\n          <label class=\"field\">\n            <span>\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/span>\n            <input name=\"confirmPassword\" type=\"password\" minlength=\"8\" autocomplete=\"new-password\" required>\n          <\/label>\n          <button class=\"btn btn-primary btn-block\" type=\"submit\">\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01<\/button>\n        <\/form>\n      <\/div>\n\n      <div id=\"forgotPanel\" class=\"auth-content hidden\">\n        <button class=\"back-button\" type=\"button\" data-back-login>\u2190 \u0e01\u0e25\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a<\/button>\n        <div class=\"section-heading\">\n          <h2>\u0e25\u0e37\u0e21\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/h2>\n          <p>\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e2a\u0e48\u0e07\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e15\u0e31\u0e49\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e17\u0e35\u0e48\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19<\/p>\n        <\/div>\n        <form id=\"forgotForm\">\n          <label class=\"field\">\n            <span>\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25<\/span>\n            <input name=\"loginId\" autocomplete=\"username\" required>\n          <\/label>\n          <button class=\"btn btn-primary btn-block\" type=\"submit\">\u0e2a\u0e48\u0e07\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15<\/button>\n        <\/form>\n      <\/div>\n\n      <div id=\"resetPanel\" class=\"auth-content hidden\">\n        <div class=\"section-heading\">\n          <h2>\u0e15\u0e31\u0e49\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/h2>\n          <p>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22 8 \u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23<\/p>\n        <\/div>\n        <form id=\"resetForm\">\n          <label class=\"field\">\n            <span>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/span>\n            <input name=\"newPassword\" type=\"password\" minlength=\"8\" autocomplete=\"new-password\" required>\n          <\/label>\n          <label class=\"field\">\n            <span>\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/span>\n            <input name=\"confirmPassword\" type=\"password\" minlength=\"8\" autocomplete=\"new-password\" required>\n          <\/label>\n          <button class=\"btn btn-primary btn-block\" type=\"submit\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/button>\n        <\/form>\n      <\/div>\n\n      <div class=\"auth-tabs\" role=\"tablist\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e27\u0e34\u0e18\u0e35\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\">\n        <button id=\"loginTab\" class=\"auth-tab active\" type=\"button\" data-auth-target=\"loginPanel\">\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a<\/button>\n        <button id=\"registerTab\" class=\"auth-tab\" type=\"button\" data-auth-target=\"registerPanel\">\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01<\/button>\n      <\/div>\n      <div class=\"security-note\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"5\" y=\"10.5\" width=\"14\" height=\"9.5\" rx=\"1.5\"\/><path d=\"M8.5 10.5V7.5a3.5 3.5 0 0 1 7 0v3\"\/><\/svg> \u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07<\/div>\n    <\/section>\n  <\/main>\n  <main id=\"appView\" class=\"app-shell hidden\">\n    <header class=\"topbar\">\n      <div class=\"topbar-brand\">\n        <div class=\"mini-mark\" id=\"brandMark\">\u2713<\/div>\n        <div>\n          <strong id=\"appNameTopbar\">Abhidhamma Student Information System - ASIS<\/strong>\n          <small>Student Verification Portal<\/small>\n        <\/div>\n      <\/div>\n      <div class=\"user-menu\">\n        <div class=\"user-copy\">\n          <strong id=\"userDisplay\"><\/strong>\n          <small id=\"userRole\"><\/small>\n        <\/div>\n        <button id=\"notificationBell\" class=\"notification-bell\" type=\"button\" aria-label=\"\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\" title=\"\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M6.5 10a5.5 5.5 0 0 1 11 0c0 4 1.5 5.5 1.5 5.5H5S6.5 14 6.5 10\"\/><path d=\"M10 18.5a2 2 0 0 0 4 0\"\/><\/svg><span id=\"notificationBadge\" class=\"notification-badge hidden\" aria-hidden=\"true\">0<\/span><\/button>\n        <button id=\"changePasswordButton\" class=\"btn btn-ghost\" type=\"button\">\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/button>\n        <button id=\"logoutButton\" class=\"btn btn-outline\" type=\"button\">\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a<\/button>\n      <\/div>\n    <\/header>\n\n    <div class=\"workspace-shell\">\n      <aside class=\"app-sidebar\">\n        <nav class=\"app-nav\" aria-label=\"\u0e40\u0e21\u0e19\u0e39\u0e2b\u0e25\u0e31\u0e01\">\n          <button class=\"app-nav-button active\" type=\"button\" data-module=\"home\"><span class=\"nav-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 10.5 12 3l9 7.5\"\/><path d=\"M5.5 9.5V20h13V9.5\"\/><path d=\"M10 20v-6h4v6\"\/><\/svg><\/span><span>\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e25\u0e31\u0e01<\/span><\/button>\n          <button class=\"app-nav-button\" type=\"button\" data-module=\"applicants\"><span class=\"nav-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"8\" r=\"3.2\"\/><path d=\"M3.5 19.5c0-3 2.5-5 5.5-5s5.5 2 5.5 5\"\/><path d=\"M16 5.5a3 3 0 0 1 0 5.6\"\/><path d=\"M17.5 14.8c1.9.6 3 2.2 3 4.7\"\/><\/svg><\/span><span>\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/span><\/button>\n          <button class=\"app-nav-button\" type=\"button\" data-module=\"exams\"><span class=\"nav-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M6 3h8l4 4v14H6z\"\/><path d=\"M14 3v4h4\"\/><path d=\"M9 12h6M9 16h6\"\/><\/svg><\/span><span>\u0e2a\u0e48\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e2d\u0e1a<\/span><\/button>\n          <button class=\"app-nav-button\" type=\"button\" data-module=\"stats\"><span class=\"nav-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20V4\"\/><path d=\"M4 20h16\"\/><path d=\"M8 20v-5M12.5 20V9M17 20v-8\"\/><\/svg><\/span><span>\u0e2a\u0e16\u0e34\u0e15\u0e34<\/span><\/button>\n        <\/nav>\n      <\/aside>\n\n      <div class=\"workspace-main\">\n        <section id=\"homeModule\" class=\"module-view module-content\">\n          <div class=\"home-hero\">\n            <h1 id=\"homeSchoolName\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23<\/h1>\n          <\/div>\n\n          <div class=\"module-card-grid\" aria-label=\"\u0e07\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e01\">\n            <button class=\"module-card\" type=\"button\" data-open-module=\"applicants\">\n              <span class=\"module-card-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"8\" r=\"3.2\"\/><path d=\"M3.5 19.5c0-3 2.5-5 5.5-5s5.5 2 5.5 5\"\/><path d=\"M16 5.5a3 3 0 0 1 0 5.6\"\/><path d=\"M17.5 14.8c1.9.6 3 2.2 3 4.7\"\/><\/svg><\/span>\n              <h2>\u0e14\u0e39\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h2>\n              <p>\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c\u0e41\u0e25\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/p>\n              <span class=\"module-card-meta\"><span>\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 <strong id=\"homeApplicantTotal\">0<\/strong><\/span><span>\u0e43\u0e2b\u0e21\u0e48 <strong id=\"homeApplicantPending\">0<\/strong><\/span><\/span>\n            <\/button>\n            <button class=\"module-card\" type=\"button\" data-open-module=\"exams\">\n              <span class=\"module-card-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M6 3h8l4 4v14H6z\"\/><path d=\"M14 3v4h4\"\/><path d=\"M9 12h6M9 16h6\"\/><\/svg><\/span>\n              <h2>\u0e2a\u0e48\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a<\/h2>\n              <p>\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e32\u0e01\u0e44\u0e1f\u0e25\u0e4c Excel \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07<\/p>\n              <span class=\"module-card-meta\"><span>\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e2a\u0e48\u0e07<\/span><strong id=\"homeExamDraftCount\">0<\/strong><\/span>\n            <\/button>\n            <button class=\"module-card\" type=\"button\" data-open-module=\"stats\">\n              <span class=\"module-card-icon\" aria-hidden=\"true\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20V4\"\/><path d=\"M4 20h16\"\/><path d=\"M8 20v-5M12.5 20V9M17 20v-8\"\/><\/svg><\/span>\n              <h2>\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/h2>\n              <p>\u0e14\u0e39\u0e08\u0e33\u0e19\u0e27\u0e19\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e41\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32<\/p>\n              <span class=\"module-card-meta\"><span>\u0e1b\u0e35\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14<\/span><strong id=\"homeStatsYear\">\u2014<\/strong><\/span>\n            <\/button>\n          <\/div>\n        <\/section>\n\n        <section id=\"applicantsModule\" class=\"module-view hidden\">\n    <div class=\"app-content\">\n      <section class=\"page-heading\">\n        <div>\n          <p class=\"eyebrow\">DASHBOARD<\/p>\n          <h1>\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h1>\n          <p id=\"schoolDescription\" class=\"muted\"><\/p>\n        <\/div>\n        <div class=\"heading-actions\">\n          <label id=\"scopeField\" class=\"compact-field hidden\">\n            <span>\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19<\/span>\n            <select id=\"scopeSelect\"><\/select>\n          <\/label>\n          <div class=\"download-group\">\n            <button id=\"downloadCsv\" class=\"btn btn-primary\" type=\"button\">\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 CSV<\/button>\n            <button id=\"downloadXlsx\" class=\"btn btn-outline\" type=\"button\">\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 Excel<\/button>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <section class=\"stats-grid\" aria-label=\"\u0e2a\u0e23\u0e38\u0e1b\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\">\n        <article class=\"stat-card\">\n          <span class=\"stat-icon teal\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"8\" r=\"3.2\"\/><path d=\"M3.5 19.5c0-3 2.5-5 5.5-5s5.5 2 5.5 5\"\/><path d=\"M16 5.5a3 3 0 0 1 0 5.6\"\/><path d=\"M17.5 14.8c1.9.6 3 2.2 3 4.7\"\/><\/svg><\/span>\n          <div><small>\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/small><strong id=\"totalCount\">0<\/strong><\/div>\n        <\/article>\n        <article class=\"stat-card\">\n          <span class=\"stat-icon green\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m5 12.5 4.5 4.5L19 7\"\/><\/svg><\/span>\n          <div><small>\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27<\/small><strong id=\"confirmedCount\">0<\/strong><\/div>\n        <\/article>\n        <article class=\"stat-card\">\n          <span class=\"stat-icon amber\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M12 7.5V12l3 2\"\/><\/svg><\/span>\n          <div><small>\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/small><strong id=\"pendingCount\">0<\/strong><\/div>\n        <\/article>\n      <\/section>\n\n      <section class=\"records-panel\">\n        <div class=\"records-toolbar\">\n          <div>\n            <h2 id=\"recordsTitle\">\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h2>\n            <p id=\"resultSummary\" class=\"muted\"><\/p>\n            <p id=\"liveStatus\" class=\"live-status hidden\" role=\"status\"><span class=\"live-dot\" aria-hidden=\"true\"><\/span><span id=\"liveStatusText\"><\/span><\/p>\n          <\/div>\n          <div class=\"records-tools\">\n            <div class=\"status-filters\" role=\"group\" aria-label=\"\u0e01\u0e23\u0e2d\u0e07\u0e15\u0e32\u0e21\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\">\n              <button class=\"status-filter active\" type=\"button\" data-status=\"all\" aria-pressed=\"true\">\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/button>\n              <button class=\"status-filter\" type=\"button\" data-status=\"pending\" aria-pressed=\"false\">\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/button>\n              <button class=\"status-filter\" type=\"button\" data-status=\"confirmed\" aria-pressed=\"false\">\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27<\/button>\n            <\/div>\n            <label class=\"sort-box\">\n              <span>\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a<\/span>\n              <select id=\"sortSelect\" aria-label=\"\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\">\n                <option value=\"latest\">\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e01\u0e48\u0e2d\u0e19<\/option>\n                <option value=\"sheet\">\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e43\u0e19\u0e0a\u0e35\u0e15<\/option>\n              <\/select>\n            <\/label>\n            <form id=\"searchForm\" class=\"search-box\">\n              <svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"10.5\" cy=\"10.5\" r=\"6\"\/><path d=\"m15 15 4.5 4.5\"\/><\/svg>\n              <input id=\"searchInput\" type=\"search\" placeholder=\"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e08\u0e32\u0e01\u0e17\u0e38\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c...\" aria-label=\"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\">\n              <button class=\"btn btn-small btn-outline\" type=\"submit\">\u0e04\u0e49\u0e19\u0e2b\u0e32<\/button>\n            <\/form>\n          <\/div>\n        <\/div>\n        <div id=\"recordsHead\" class=\"records-head\" aria-hidden=\"true\">\n          <span>\u0e25\u0e33\u0e14\u0e31\u0e1a<\/span>\n          <span>\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23<\/span>\n          <span>\u0e23\u0e2b\u0e31\u0e2a \/ \u0e2d\u0e35\u0e40\u0e21\u0e25<\/span>\n          <span>\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23<\/span>\n          <span>\u0e2a\u0e16\u0e32\u0e19\u0e30<\/span>\n          <span>\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23<\/span>\n        <\/div>\n        <div id=\"recordsList\" class=\"records-list\"><\/div>\n        <div id=\"emptyState\" class=\"empty-state hidden\">\n          <div class=\"empty-icon\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"10.5\" cy=\"10.5\" r=\"6\"\/><path d=\"m15 15 4.5 4.5\"\/><\/svg><\/div>\n          <h3>\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/h3>\n          <p>\u0e25\u0e2d\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e04\u0e33\u0e04\u0e49\u0e19\u0e2b\u0e32 \u0e2b\u0e23\u0e37\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19 Google Sheets<\/p>\n        <\/div>\n        <nav class=\"pagination\" aria-label=\"\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32\">\n          <button id=\"prevPage\" class=\"btn btn-outline\" type=\"button\">\u2190 \u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32<\/button>\n          <span id=\"pageInfo\">\u0e2b\u0e19\u0e49\u0e32 1 \/ 1<\/span>\n          <button id=\"nextPage\" class=\"btn btn-outline\" type=\"button\">\u0e16\u0e31\u0e14\u0e44\u0e1b \u2192<\/button>\n        <\/nav>\n      <\/section>\n    <\/div>\n        <\/section>\n\n        <section id=\"statsModule\" class=\"module-view module-content hidden\">\n          <section class=\"page-heading\">\n            <div>\n              <p class=\"eyebrow\">\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/p>\n              <h1>\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e41\u0e25\u0e30\u0e1c\u0e25\u0e2a\u0e2d\u0e1a<\/h1>\n              <p id=\"statsSubtitle\" class=\"muted\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e2a\u0e16\u0e34\u0e15\u0e34<\/p>\n            <\/div>\n            <div class=\"heading-actions\">\n              <label class=\"compact-field\">\n                <span>\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32<\/span>\n                <select id=\"statsYearSelect\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\"><\/select>\n              <\/label>\n              <label class=\"compact-field\">\n                <span>\u0e40\u0e17\u0e2d\u0e21<\/span>\n                <select id=\"statsTermSelect\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e17\u0e2d\u0e21\"><\/select>\n              <\/label>\n              <button id=\"statsRefreshButton\" class=\"btn btn-outline\" type=\"button\">\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48<\/button>\n              <button id=\"statsClearCacheButton\" class=\"btn btn-ghost btn-small\" type=\"button\">\u0e25\u0e49\u0e32\u0e07\u0e41\u0e04\u0e0a\u0e17\u0e38\u0e01\u0e1b\u0e35<\/button>\n            <\/div>\n          <\/section>\n\n          <section class=\"stats-grid\" aria-label=\"\u0e22\u0e2d\u0e14\u0e23\u0e27\u0e21\u0e02\u0e2d\u0e07\u0e1b\u0e35\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\">\n            <article class=\"stat-card\">\n              <span class=\"stat-icon teal\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"8\" r=\"3.2\"\/><path d=\"M3.5 19.5c0-3 2.5-5 5.5-5s5.5 2 5.5 5\"\/><path d=\"M16 5.5a3 3 0 0 1 0 5.6\"\/><path d=\"M17.5 14.8c1.9.6 3 2.2 3 4.7\"\/><\/svg><\/span>\n              <div><small>\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/small><strong id=\"statsTotal\">0<\/strong><\/div>\n            <\/article>\n            <article class=\"stat-card\">\n              <span class=\"stat-icon green\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m5 12.5 4.5 4.5L19 7\"\/><\/svg><\/span>\n              <div><small>\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e23\u0e27\u0e21<\/small><strong id=\"statsPassed\">0<\/strong><span id=\"statsPassedRate\" class=\"stat-note\"><\/span><\/div>\n            <\/article>\n            <article class=\"stat-card\">\n              <span class=\"stat-icon amber\"><svg class=\"ui-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M12 7.5V12l3 2\"\/><\/svg><\/span>\n              <div><small>\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a<\/small><strong id=\"statsAbsent\">0<\/strong><span id=\"statsAbsentRate\" class=\"stat-note\"><\/span><\/div>\n            <\/article>\n          <\/section>\n\n          <section class=\"stats-panel viz\">\n            <div class=\"stats-panel-head\">\n              <h2>\u0e2a\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19\u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19<\/h2>\n              <p class=\"muted\">\u0e41\u0e16\u0e1a\u0e40\u0e15\u0e47\u0e21\u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27 = \u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21\u0e19\u0e31\u0e49\u0e19 \u00b7 \u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e32\u0e22\u0e2a\u0e35 = \u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19<\/p>\n            <\/div>\n            <div id=\"statsGroupChart\" class=\"viz-meters\"><\/div>\n          <\/section>\n\n          <section class=\"stats-panel viz\">\n            <div class=\"stats-panel-head\">\n              <h2>\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21\u0e23\u0e49\u0e2d\u0e22\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e23\u0e32\u0e22\u0e1b\u0e35<\/h2>\n              <p id=\"statsTrendScope\" class=\"muted\">\u0e23\u0e27\u0e21\u0e17\u0e38\u0e01\u0e40\u0e17\u0e2d\u0e21\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35 \u2014 \u0e04\u0e34\u0e14\u0e08\u0e32\u0e01\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19\u0e1b\u0e35\u0e19\u0e31\u0e49\u0e19 \u0e23\u0e27\u0e21\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a<\/p>\n            <\/div>\n            <div id=\"statsTrendChart\" class=\"viz-plot\"><p class=\"viz-placeholder muted\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07...<\/p><\/div>\n          <\/section>\n\n          <section class=\"stats-panel\">\n            <div class=\"stats-panel-head\">\n              <h2>\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19<\/h2>\n              <p class=\"muted\">\u0e08\u0e33\u0e41\u0e19\u0e01\u0e08\u0e32\u0e01\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e1c\u0e25\u0e2a\u0e2d\u0e1a \u2014 \u0e41\u0e16\u0e27 \u201c\u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38\u201d \u0e04\u0e37\u0e2d\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e1a\u0e2d\u0e01\u0e40\u0e1e\u0e28 \u0e40\u0e0a\u0e48\u0e19 \u201c\u0e04\u0e38\u0e13\u201d \u0e22\u0e28\u0e17\u0e2b\u0e32\u0e23\/\u0e15\u0e33\u0e23\u0e27\u0e08 \u0e41\u0e25\u0e30\u0e0a\u0e37\u0e48\u0e2d\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29<\/p>\n            <\/div>\n            <div class=\"stats-table-wrap\">\n              <table class=\"stats-table\">\n                <thead><tr><th>\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17<\/th><th>\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/th><th>\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e2a\u0e2d\u0e1a\u0e15\u0e01<\/th><th>\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a<\/th><th>% \u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e04\u0e30\u0e41\u0e19\u0e19\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22<\/th><\/tr><\/thead>\n                <tbody id=\"statsGroupBody\"><\/tbody>\n              <\/table>\n            <\/div>\n          <\/section>\n\n          <section class=\"stats-panel\">\n            <div class=\"stats-panel-head\"><h2>\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e0a\u0e31\u0e49\u0e19<\/h2><\/div>\n            <div class=\"stats-table-wrap\">\n              <table class=\"stats-table\">\n                <thead><tr><th>\u0e0a\u0e31\u0e49\u0e19<\/th><th>\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/th><th>\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e2a\u0e2d\u0e1a\u0e15\u0e01<\/th><th>\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a<\/th><th>% \u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e04\u0e30\u0e41\u0e19\u0e19\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22<\/th><\/tr><\/thead>\n                <tbody id=\"statsClassBody\"><\/tbody>\n              <\/table>\n            <\/div>\n          <\/section>\n\n          <section class=\"stats-panel\">\n            <div class=\"stats-panel-head\"><h2>\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e40\u0e17\u0e2d\u0e21<\/h2><\/div>\n            <div class=\"stats-table-wrap\">\n              <table class=\"stats-table\">\n                <thead><tr><th>\u0e40\u0e17\u0e2d\u0e21<\/th><th>\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/th><th>\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e2a\u0e2d\u0e1a\u0e15\u0e01<\/th><th>\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a<\/th><th>% \u0e1c\u0e48\u0e32\u0e19<\/th><th>\u0e04\u0e30\u0e41\u0e19\u0e19\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22<\/th><\/tr><\/thead>\n                <tbody id=\"statsTermBody\"><\/tbody>\n              <\/table>\n            <\/div>\n            <p id=\"statsFootnote\" class=\"stats-footnote muted\"><\/p>\n          <\/section>\n\n\n        <\/section>\n\n        <section id=\"examsModule\" class=\"module-view module-content hidden\">\n          <section class=\"page-heading exam-page-heading\">\n            <div>\n              <p class=\"eyebrow\">\u0e07\u0e32\u0e19\u0e2a\u0e32\u0e23\u0e1a\u0e23\u0e23\u0e13 \u00b7 \u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a<\/p>\n              <h1>\u0e2a\u0e48\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a<\/h1>\n              <p id=\"examSchoolName\" class=\"muted\"><\/p>\n            <\/div>\n            <dl class=\"exam-meta\">\n              <div><dt>\u0e1c\u0e39\u0e49\u0e08\u0e31\u0e14\u0e17\u0e33\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23<\/dt><dd id=\"examSenderName\">\u2014<\/dd><\/div>\n              <div><dt>\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e08\u0e31\u0e14\u0e17\u0e33<\/dt><dd id=\"examTodayDate\">\u2014<\/dd><\/div>\n            <\/dl>\n          <\/section>\n\n          <div class=\"exam-entry-panel\">\n            <ol class=\"exam-checklist\" aria-label=\"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e08\u0e31\u0e14\u0e2a\u0e48\u0e07\">\n              <li id=\"checkCoverLetter\" class=\"exam-check\" data-state=\"todo\" data-order=\"\u0e51\">\n                <button class=\"exam-check-jump\" type=\"button\" data-jump=\"coverLetterSection\">\n                  <span class=\"exam-check-mark\" aria-hidden=\"true\">1<\/span>\n                  <span class=\"exam-check-copy\"><strong>\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07<\/strong><small>\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e41\u0e19\u0e1a<\/small><\/span>\n                <\/button>\n              <\/li>\n              <li id=\"checkExamRows\" class=\"exam-check\" data-state=\"todo\" data-order=\"\u0e52\">\n                <button class=\"exam-check-jump\" type=\"button\" data-jump=\"examListSection\">\n                  <span class=\"exam-check-mark\" aria-hidden=\"true\">2<\/span>\n                  <span class=\"exam-check-copy\"><strong>\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d<\/strong><small>\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d<\/small><\/span>\n                <\/button>\n              <\/li>\n              <li id=\"checkExamAttachments\" class=\"exam-check\" data-state=\"optional\" data-order=\"\u0e53\">\n                <button class=\"exam-check-jump\" type=\"button\" data-jump=\"examAttachmentsSection\">\n                  <span class=\"exam-check-mark\" aria-hidden=\"true\">3<\/span>\n                  <span class=\"exam-check-copy\"><strong>\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a<\/strong><small>\u0e08\u0e30\u0e41\u0e19\u0e1a\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e01\u0e47\u0e44\u0e14\u0e49<\/small><\/span>\n                <\/button>\n              <\/li>\n            <\/ol>\n\n            <section id=\"coverLetterSection\" class=\"cover-letter exam-jump-target\" aria-labelledby=\"coverLetterTitle\">\n              <div class=\"cover-letter-head\">\n                <div>\n                  <span class=\"doc-rank\">\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2b\u0e25\u0e31\u0e01<\/span>\n                  <strong id=\"coverLetterTitle\">\u0e51. \u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e09\u0e1a\u0e31\u0e1a\u0e25\u0e07\u0e19\u0e32\u0e21<\/strong>\n                  <span class=\"muted\">\u0e42\u0e1b\u0e23\u0e14\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21 \u0e08\u0e31\u0e14\u0e17\u0e33\u0e41\u0e25\u0e30\u0e25\u0e07\u0e19\u0e32\u0e21\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22 \u0e41\u0e25\u0e49\u0e27\u0e41\u0e19\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e40\u0e02\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1f\u0e25\u0e4c Word \u0e2b\u0e23\u0e37\u0e2d PDF \u0e08\u0e33\u0e19\u0e27\u0e19 \u0e51 \u0e09\u0e1a\u0e31\u0e1a \u0e17\u0e31\u0e49\u0e07\u0e19\u0e35\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e08\u0e36\u0e07\u0e08\u0e30\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e44\u0e14\u0e49<\/span>\n                <\/div>\n                <div class=\"cover-letter-actions\">\n                  <button id=\"downloadCoverLetterTemplateButton\" class=\"btn btn-outline btn-small\" type=\"button\">\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21<\/button>\n                  <label class=\"btn btn-primary btn-small file-upload-btn\">\n                    <span id=\"coverLetterButtonLabel\">\u0e41\u0e19\u0e1a\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07<\/span>\n                    <input id=\"coverLetterInput\" type=\"file\" hidden accept=\".doc,.docx,.pdf\">\n                  <\/label>\n                <\/div>\n              <\/div>\n              <div id=\"coverLetterFile\" class=\"cover-letter-file hidden\"><\/div>\n              <p id=\"coverLetterEmpty\" class=\"muted cover-letter-empty\">\n                \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e41\u0e19\u0e1a\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07 \u0e42\u0e1b\u0e23\u0e14\u0e40\u0e25\u0e37\u0e2d\u0e01 \u201c\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u201d \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e14\u0e17\u0e33\u0e41\u0e25\u0e30\u0e25\u0e07\u0e19\u0e32\u0e21 \u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e44\u0e1f\u0e25\u0e4c .doc .docx \u0e41\u0e25\u0e30 .pdf \u0e02\u0e19\u0e32\u0e14\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 5 MB\n              <\/p>\n            <\/section>\n\n            <section id=\"examListSection\" class=\"exam-list-section exam-jump-target\" aria-labelledby=\"examListTitle\">\n              <div class=\"exam-list-head\">\n                <span class=\"doc-rank doc-rank-attach\">\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e21\u0e32\u0e14\u0e49\u0e27\u0e22<\/span>\n                <strong id=\"examListTitle\">\u0e52. \u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a<\/strong>\n                <span class=\"muted\">\u0e42\u0e1b\u0e23\u0e14\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21 \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c Excel \u0e41\u0e25\u0e49\u0e27\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a \u0e2a\u0e48\u0e07\u0e44\u0e14\u0e49\u0e04\u0e23\u0e31\u0e49\u0e07\u0e25\u0e30\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 500 \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d<br>\u0e15\u0e32\u0e23\u0e32\u0e07\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e41\u0e2a\u0e14\u0e07\u0e44\u0e27\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e17\u0e32\u0e19\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e2b\u0e32\u0e01\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e04\u0e25\u0e32\u0e14\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19 \u0e42\u0e1b\u0e23\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c Excel \u0e41\u0e25\u0e49\u0e27\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e43\u0e2b\u0e21\u0e48<\/span>\n              <\/div>\n              <div class=\"exam-tools\">\n                <button id=\"downloadExamTemplateButton\" class=\"btn btn-outline btn-small\" type=\"button\">\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21 Excel<\/button>\n                <label class=\"btn btn-primary btn-small file-upload-btn\">\n                  <span id=\"examFileButtonLabel\">\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1f\u0e25\u0e4c Excel<\/span>\n                  <input id=\"examFileInput\" type=\"file\" accept=\".xlsx\" hidden>\n                <\/label>\n                <span id=\"examRowCount\" class=\"exam-row-count\">\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d<\/span>\n                <button id=\"clearExamRowsButton\" class=\"btn btn-ghost btn-small hidden\" type=\"button\">\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/button>\n              <\/div>\n              <p id=\"examSourceFile\" class=\"exam-source-file hidden\"><\/p>\n              <p id=\"examIssueNote\" class=\"exam-issue-note hidden\"><\/p>\n              <div id=\"examReviewTools\" class=\"exam-review-tools hidden\">\n                <input id=\"examSearchInput\" type=\"search\" autocomplete=\"off\"\n                       placeholder=\"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e08\u0e32\u0e01\u0e0a\u0e37\u0e48\u0e2d \u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e0a\u0e31\u0e49\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e31\u0e07\u0e01\u0e31\u0e14\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2f\"\n                       aria-label=\"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e43\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\">\n                <button id=\"examIssueFilterButton\" class=\"btn btn-ghost btn-small hidden\" type=\"button\"><\/button>\n              <\/div>\n              <div id=\"examTableWrap\" class=\"exam-table-wrap hidden\">\n                <table class=\"exam-table\">\n                  <thead>\n                    <tr>\n                      <th>\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48<\/th><th>\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/th><th>\u0e0a\u0e37\u0e48\u0e2d - \u0e09\u0e32\u0e22\u0e32\/\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25<\/th><th>\u0e0a\u0e31\u0e49\u0e19<\/th><th>\u0e2a\u0e31\u0e07\u0e01\u0e31\u0e14\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2f<\/th>\n                    <\/tr>\n                  <\/thead>\n                  <tbody id=\"examTableBody\"><\/tbody>\n                <\/table>\n              <\/div>\n              <div id=\"examPreviewMore\" class=\"exam-preview-more hidden\"><\/div>\n              <div id=\"examEmptyState\" class=\"empty-state\">\n                <h3>\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d<\/h3>\n                <p>\u0e42\u0e1b\u0e23\u0e14\u0e40\u0e25\u0e37\u0e2d\u0e01 \u201c\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21 Excel\u201d \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c \u0e41\u0e25\u0e49\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01 \u201c\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1f\u0e25\u0e4c Excel\u201d \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e19\u0e33\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e02\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a<\/p>\n              <\/div>\n            <\/section>\n\n            <section id=\"examAttachmentsSection\" class=\"exam-attachments exam-jump-target\" aria-labelledby=\"examAttachTitle\">\n              <div class=\"exam-attach-head\">\n                <div>\n                  <strong id=\"examAttachTitle\">\u0e53. \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21<\/strong>\n                  <span class=\"muted\">\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2d\u0e37\u0e48\u0e19\u0e19\u0e2d\u0e01\u0e40\u0e2b\u0e19\u0e37\u0e2d\u0e08\u0e32\u0e01\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e41\u0e25\u0e30\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d \u0e08\u0e30\u0e41\u0e19\u0e1a\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e01\u0e47\u0e44\u0e14\u0e49<\/span>\n                <\/div>\n                <label class=\"btn btn-outline btn-small file-upload-btn\">\n                  <span>\u0e41\u0e19\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21<\/span>\n                  <input id=\"examAttachmentInput\" type=\"file\" multiple hidden\n                         accept=\".doc,.docx,.pdf,.xls,.xlsx,.jpg,.jpeg,.png\">\n                <\/label>\n              <\/div>\n              <ul id=\"examAttachmentList\" class=\"exam-attach-list\"><\/ul>\n              <p id=\"examAttachmentEmpty\" class=\"muted exam-attach-empty\">\n                \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a \u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e44\u0e1f\u0e25\u0e4c Word, PDF, Excel \u0e41\u0e25\u0e30\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e \u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 5 \u0e44\u0e1f\u0e25\u0e4c \u0e44\u0e1f\u0e25\u0e4c\u0e25\u0e30\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 5 MB \u0e41\u0e25\u0e30\u0e23\u0e27\u0e21\u0e01\u0e31\u0e19\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 10 MB\n              <\/p>\n            <\/section>\n\n            <div class=\"exam-submit-bar\">\n              <p id=\"examSubmitSummary\" class=\"exam-submit-summary\"><\/p>\n              <button id=\"submitExamListButton\" class=\"btn btn-primary\" type=\"button\" disabled>\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a<\/button>\n              <p id=\"submitExamHint\" class=\"muted\"><\/p>\n            <\/div>\n          <\/div>\n        <\/section>\n      <\/div>\n    <\/div>\n  <\/main>\n\n  <dialog id=\"detailDialog\" class=\"modal\">\n    <div class=\"modal-header\">\n      <div><p class=\"eyebrow\">\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14<\/p><h2 id=\"detailTitle\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/h2><\/div>\n      <button class=\"icon-button\" type=\"button\" data-close-dialog=\"detailDialog\" aria-label=\"\u0e1b\u0e34\u0e14\">\u00d7<\/button>\n    <\/div>\n    <div id=\"detailGrid\" class=\"detail-grid\"><\/div>\n    <div class=\"modal-actions\">\n      <button class=\"btn btn-outline\" type=\"button\" data-close-dialog=\"detailDialog\">\u0e1b\u0e34\u0e14<\/button>\n      <button id=\"detailConfirmButton\" class=\"btn btn-primary\" type=\"button\">\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/button>\n    <\/div>\n  <\/dialog>\n\n  <dialog id=\"receiptDialog\" class=\"modal\" aria-labelledby=\"receiptTitle\">\n    <div class=\"modal-header\">\n      <div><p class=\"eyebrow\">\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07<\/p><h2 id=\"receiptTitle\">\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27<\/h2><\/div>\n      <button class=\"icon-button\" type=\"button\" data-close-dialog=\"receiptDialog\" aria-label=\"\u0e1b\u0e34\u0e14\">\u00d7<\/button>\n    <\/div>\n    <div class=\"receipt-body\">\n      <dl class=\"receipt-grid\">\n        <div><dt>\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07<\/dt><dd id=\"receiptNumber\">\u2014<\/dd><\/div>\n        <div><dt>\u0e27\u0e31\u0e19\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07<\/dt><dd id=\"receiptDateTime\">\u2014<\/dd><\/div>\n        <div><dt>\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19<\/dt><dd id=\"receiptSchool\">\u2014<\/dd><\/div>\n        <div><dt>\u0e1c\u0e39\u0e49\u0e08\u0e31\u0e14\u0e17\u0e33<\/dt><dd id=\"receiptSender\">\u2014<\/dd><\/div>\n        <div><dt>\u0e08\u0e33\u0e19\u0e27\u0e19\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d<\/dt><dd id=\"receiptRowCount\">\u2014<\/dd><\/div>\n      <\/dl>\n      <strong class=\"receipt-files-title\">\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e40\u0e02\u0e49\u0e32\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e23\u0e2d\u0e1a\u0e2a\u0e2d\u0e1a<\/strong>\n      <ul id=\"receiptFiles\" class=\"receipt-files\"><\/ul>\n      <p class=\"receipt-note muted\">\u0e42\u0e1b\u0e23\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e44\u0e27\u0e49\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07 \u0e2b\u0e32\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e40\u0e08\u0e49\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e01\u0e48\u0e2d\u0e19\u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33<\/p>\n    <\/div>\n    <div class=\"modal-actions\">\n      <button class=\"btn btn-outline\" type=\"button\" data-close-dialog=\"receiptDialog\">\u0e1b\u0e34\u0e14<\/button>\n      <button id=\"printReceiptButton\" class=\"btn btn-primary\" type=\"button\">\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19<\/button>\n    <\/div>\n  <\/dialog>\n  <dialog id=\"passwordDialog\" class=\"modal modal-small\">\n    <div class=\"modal-header\">\n      <h2>\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/h2>\n      <button class=\"icon-button\" type=\"button\" data-close-dialog=\"passwordDialog\" aria-label=\"\u0e1b\u0e34\u0e14\">\u00d7<\/button>\n    <\/div>\n    <form id=\"changePasswordForm\">\n      <label class=\"field\"><span>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19<\/span><input name=\"currentPassword\" type=\"password\" required><\/label>\n      <label class=\"field\"><span>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/span><input name=\"newPassword\" type=\"password\" minlength=\"8\" required><\/label>\n      <label class=\"field\"><span>\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48<\/span><input name=\"confirmPassword\" type=\"password\" minlength=\"8\" required><\/label>\n      <div class=\"modal-actions\">\n        <button class=\"btn btn-outline\" type=\"button\" data-close-dialog=\"passwordDialog\">\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01<\/button>\n        <button class=\"btn btn-primary\" type=\"submit\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01<\/button>\n      <\/div>\n    <\/form>\n  <\/dialog>\n\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx@0.18.5\/dist\/xlsx.full.min.js\"><\/script>\n  <script>\n  (() => {\n    'use strict';\n\n    \/\/ ============================================================\n    \/\/ \u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e15\u0e23\u0e07\u0e19\u0e35\u0e49: \u0e27\u0e32\u0e07 URL \u0e02\u0e2d\u0e07 Web App \u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23 Deploy Apps Script\n    \/\/ (\u0e25\u0e07\u0e17\u0e49\u0e32\u0e22\u0e14\u0e49\u0e27\u0e22 \/exec) \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e04\u0e33\u0e1e\u0e39\u0e14\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\n    const API_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycbwRT8ri5Okru3PsZVvN4eVmHr61VY7l7jK0Wo7dNNA7hfUfbXY7rnxDCFX-CE33Lpeh\/exec';\n    const REQUIRED_BACKEND_VERSION = 'live-updates-v5';\n    \/\/ (\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a) \u0e27\u0e32\u0e07 URL \u0e23\u0e39\u0e1b\u0e42\u0e25\u0e42\u0e01\u0e49 \u0e21\u0e08\u0e23 \u0e16\u0e49\u0e32\u0e21\u0e35 \u2014 \u0e16\u0e49\u0e32\u0e40\u0e27\u0e49\u0e19\u0e27\u0e48\u0e32\u0e07\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23 \"\u0e2d\"\n    const LOGO_URL = 'data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAAFDCAYAAAAEfIP9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhe7J0HmB1XefdN6pdAGoTQjHbPOVeycRKSUAKBUAIhhFQgOCGhJ6EFCL0XQ+gdY1vW3jszd+burmTJ3RgXbCNb0t5etqjZlrvl3uRuydZ+z+8959w9O7orycbGhX2fZx5p752ZO+Wc87b\/+38POGBRHtNy7hFDf5H\/bFEWZVEeBVIvqjecv2bp3RNR4c\/y3y3KoizKwyRnjejfyX+Wl2rpwCd2yvqqS09YNtuIdXfNmgN+Ob9PXjauOeQJ+c8WZVEW5UEUJmIj0lNTY+aEdnno4Pz3XmoltfLCY5fO1iM9u+24pbO1ovpSfh8v7XLhhTPjZl21pE7Lf7coi7IoD6I0IvUmJuYFa5bOdjNzV6+iv1MrqaeE+9Qi\/cYtxxRmm4lG+852UjPbq5j7mol5UbhftWQK3cyUexUze\/6apbMz44XZernwwnCfRVmURXmQZO1hL\/uVeqTPl4kW2YnJZO5VzDWNSH1k7doDfoX96rHubl5VkMnLxr7s14j0sXy\/ITrot1qx\/lo307ezELTKdp+tq5fOVov6J\/nfXZRFWZS9yOzsAY+rR8NfmVlZ+MR0pp93wWmFX8\/vgzQi\/XYmnJ+YMjljPTs9ZmTydVL1bParR+q0cAKzoWEbsT5Cvi+b115x8jI0uBzv90Fjy+JQVC\/J\/zayJTrot3pj+sVbjln6pXqsP5T\/flEW5RdWGpHatP1HB832MjPbSvQl7VQf08n0eyYrT3k836898pAn1GN12fTY\/InpNzdhX8e+9UgtdxN23gSul9SH7ff64\/mFwG+Y3o1IrZ897IBfYt\/Jiv6DjWOFD7fK+pRmoq+aGjWz1512EBP\/5NwtLMqi\/OJKI1ZttF8r0bOTo2Z26zGF2atOPWi2WlSH8z0TuBGri9knP+n8BG1G+uPsW4v0J\/MTmAleK+nX83091qXzV+9lAsd6rZ\/A9ZI6jYWFz\/GV0dJ2kltzfFEWZVFkAuupvHbFx+1meifBJvZpRvqN+YnpN0zoRqQj2S8x\/+YmomwsCjL5RtTz7W+pn25auedCwH5To4XZVkn9OfvVE\/0K9uPzcD8Wg3qkT8ndwqIsyi+uNGK9GV82nCj4p0zYWqTWsM\/sAfjKujdo8rnP1rLfxIh5EVo8jELXI3XPhuiZT+f7eqQvwhTOnwOtXCupE\/w11SPVzvvSwQQ+I7j8RVmUx67Ui0tUp6y\/3UzUf3Yr5kW9dOkzwu8ltxvra\/ITmI0I8dSY6WvFRqz+QVJEuf3chLyYfdqZXtKI1a52as83WZF\/t8\/OHvBL6+LCk+uRvotJHR7fLouWvm8i0n8k1xzrf19Y28ukboT3MPKuA361Vx4a7pXNy7upem89Vt9YP77k98J9FmVRHpVSXWGes43c7bFLxb9tlfUdU6N64\/qSepXfpxGrb5HqYcLmJwwTtlZS5\/p9ayVVzWtGq2X1XUzQ9shzf7URqWsxm\/nO+c1duZaS+nMmtNfObGh6glrVSI+yz2mHF369keiL8v42+xG5tjlm9T\/+euqxeev0mNnWTNTdLEIXH79M7qMbF57s91mURXnUSq009CwmAFqOicNkYwJOjZpd1Ui9ye\/XiPVXmUjsF04cHziaKKp\/YL96ZP4KkzmchPyfidn3X2M1433qzdYfFp+1UVL\/EfrHfvJ3Ur2zlRYM+1RL6sOSN85NXhYEfrda0u\/uX3OiP8m9bBwvzKLxuQ72q0fquvaafUM+F2VRHvFCEKoe6Xvb5TmzFeCEnxCtRH3E79uI9OfwRfMm7saVhVkmpY8O14rq7PxElL8T9R98j4\/qtbSYwpE+Uo6L1JfCFBITk8laK6mj+R6zt5XoG5zZ3b9W\/mZBQNv6a20l6vuy4KD9g+tg33qkr5qsPFtSYIuyKI9qmYiGh+qx2ul90nDyMFGdr\/ltv38jVh9lMuaBFpjg9Vj9F\/vU4uEXiG8caGF7HvVFvq\/HuuhTRZIDdimmRqRWkqLyx\/AbnbK+o+r88lrJmvJMWj958a8nR8191eLwv7IPiLBO2awEY52PUMsEFn9cXYEp3n8Ii7Ioj1bZEB30dCZv3m\/1G\/7ihcehyXTlMJ9\/Lar3bVo1fxJPjRG8Ulee6cAd1ZI6OcznElyqx2qc75qR+ozXtKKZy+pQOW+k65i7MjnntK8sHiw0ndTc1cnsQsPkRetOjpp7NowM\/xP7nPr1Jb\/XSc05XG\/+PvzGxCYoN7vm0H1WQC3KojzipD2+7PdnRs3LW\/HSF\/jPMD17mb7QYZfnaVY2osoM\/E5Zn3na4YXflmMi9Z8EkqxPafeTCVcc\/hzftxL1x93M7PY+MxOz7qLDFD1sPcZqSBu0sjngeqy2e\/NYcsNlfQvXy3e1kqow6bk2fo\/fnho1d2xYMfw3fL\/26KHhXmamFkJxYRGg7XsV067F+jX+3nuj5uVE3y9a9IkX5ZEqtUj9y9SoHmmWdb2Z6JsY\/JiSvYo+ph4P\/4nb7XGTmf5UN9M3Yg7nfUc\/Qbup7p5xlHkmB5DOmRo1uzmX+M2ZIci1A4ij\/G5RjftJ5yb6VXxO5RERYfGlI7VroqL\/gKqlRqx34Yt77Vsv6S+wf6M49Ke9il0M+B187smK3jGxYvilfH\/eCvOcXqavEC3vFhM2H5mW666YS3pl807\/TFqklCrmTPx8zPBWoq5tJfq8TeOFHxKI8\/styqI87FKP1Q+vP\/1g0VoMaKKxmMaYuN3U3NtNdUw+mH3POuLpT+pm+ohexezk+9CP9FVBvcxcuu4oW5xQLerXTY6aXUwCX1lULemj+K4jJYFa\/GsXJNvFRO1EBz29Eev7mMT1SF0LCKQW67\/EJJaItQA91HX1UavtayV9Jr\/L+Zlwk6PmhurRLqIdDf\/NZMXs4PO+b+yi6lLWmOod3bRw2GGH2WqoVmKe083MCfy2L2uU6HRmg3bXCpZavW\/eA1yURXk4pRsXDmmnZnc+jztvoGfmzk5mDp9YbrVnMxo+qJeZ45j0+fI\/\/N\/JirmpXtSvYN\/1I0OvmRw1dzEBOV8307saRbWM72qRGkGjc+z0eGGWiUq0uh7pGx3oYsr+nvpPgVw67UsJohxfUq\/yv8+\/vYq5el3JVzYNv2WqYu6VCLSbvExGztPNzH3dTI\/4++F6upkeZQHj+0EBLiZxPda39MpDvxs+v0VZlIddapHuXX7ysj1SQH4i8zkTrZuZW7qp\/sqZ37bBqE669KXdzGxg0M+43K34oGNieu6cKOp\/Z78NK4b+arKib2PCi7Ys6eP4vF4sHNgpmzv9xPGRauCZl5ywjL9Pt3+rb+GjWsSXuuKS8tD\/k+suqS4ms41868vPWT58kJw3Gv44C0nog6NB2XqZPqXpUFut0SVP61bM0VgCnD+fx\/Yb10eBRiPSAg1dlEV5REmtZF6+cdycio+K5vOpoPxE9j5jJzXX9lL9SX98p6Lf2MvM1n6gy+VfxXR19be1FcMvQDM7IMjshsiyTtZL+rsct+24ZbO1yNb9NiJdv3vdIeSGM\/k71meev6Yg1kA9Hn6XvWb1Zia9Ndv1hetH9BI+b6X6O+znEF4SjWZydjLT7JT1K+U3Dy\/8di\/T3+5m+rZB+WACc1w\/5+Z622V93fSYOdZP\/EVZlIdVVn\/3wN\/YuLLwhpls6bPCzwkwdTLzlnaqj2sn+gaQUDJBiPoGE5nBLRq5Yi5rl03fJ5zMzEe6mb6eCYlf63PFzbL6Bt+vP3r4T3qZufaKUw7CF17HZ0AoW4m5SyLEDrRB4f5lJy\/7MguL\/B3pH6GRG5G+ZO1hB\/yKQCYjfQlWQy\/Tm7wp3En1GBFxTOV+gCozF3dTC+IAu93N9Be6mbnRfdefuBzDwsL1otXbZX1lJzVpL9WvgwnE36P8Tqafx+fhZ4uyKD8X6ZT1G7uZ3sIAbiX6vnZZNzqZ+mKrMtxPHSGwWHQy\/fpOprN2WW9HmzK4GeQMdgY+\/3c+8lYmPsetLQ\/9v16qv9vN9D0emeUmdMr3645QyyZH9ZU2IDQsEwsmjW5l+E9mF2CgBCO9ebTwwqajmW3G5ss3\/eRgiXqjTZnQnVSf5awDf003d7PCp\/w5epn+UC\/T28VKYOJGdtKiodmffztlva1TVssnM\/NqftMfy3X1UvNXaPdWWU0z8e1v6FortamqRVmUh1QakX7e9Kg5D\/PYg\/3x+cjBMhjRqp1Ub+1m+sjJivlbJqI\/lsHMZ93UHN1J9UVzg95OZjFTVxdmuxXdbWXmnzmmmZhn9jKziu\/4TTRjO9WnH3roAb98zpHDQxesKTTJ+c67yP2URqw+Oz1m1mNJoH27melxfhug0vdOZvqIDd98kmjNyUz9ZzfTFzFxBXPt6He4fiyLdllv6qT6O1Oj8+l4Ljlx6He7qXpDp2zSVlld5o\/hfnyQCz97ZtywkJziI\/WLsigPidTLQy+0QZw9c7h5E5L92qm+ulPWq1upeev0yvnskRK8SvV322W9WcxpxwyJv+j85w2U58m+mX5eN9Nr8a2vPAU+K73Rwx9\/ViHtAzEe53XAkeOb8VLNd9208IZuZma4Nu4Hs1j83bIE5dqdivnS1Kh5Tni+TWPDQ52yfk871ae0y\/om7oVFIV8F1Y8LkHemGKKs76yVh4bDcy3KojzoUisN\/y+aaNBgnDeZHbgC7LFLq9zeTs3ZvYr68NSojfR66aTmud3MfLmT6k47tWmny05c5rXhmUwy2a9S+MdeRV\/UTfVVpKHCczxQaUTDL50aNbd3M9PuZEaCYt1K4VXdzDTQyJeeuEwWpFaid3VSs75d1p\/qZEPz\/P7WqHlOt6w\/3071RKtso9GDgniDNhYDSxKg\/j4856IsykMmpGaoe8U\/ZbASqMIsZMCSC84X3LPhV2IuMjlbZb2bydrL9Ff9pPEyPT50cDs1n26XZTLcd\/WPD5ol+NTN9MlM2jO+e+ATAYOEx+SlMzY81M3MP\/cq5l1o\/+6oer7HWQ+SnxzxzKevPfLJT4DkHc2PNr7ylINYpO5ql\/VZncx8YGaVRYchMGl2M\/XXndQcjgXBQsV92cDVnpOWxc6RBoiWZ3Lz3FigeI7VSC2ff0WLsigPoVBQML2y8KpWWb+nkejvUW\/biNV0I9Y34tv5YBUTXFI+Y\/BbzVUPMcnn\/EGDqX1Rp6xLnUT9Y0gry6Rh8rRTvZZBz1ZL9NL5VzMn64vmDydHC2u6qblTJolLEUlFUcVMd1L9jvwxXkBcMWnBV7fK+kfs63HSCFjmycz8Wyc14wTkmKw+rxzeF\/fJYsZ9+2fgCih2N2J1bSNWnVaij2vG6huwlExnhZftT+uXRVmUh1zoSUSes5mof2zF6sP1RC1vJvrMRqy3NmJ1K4PbD2wmFhOdCeB9S8mXJvqGVqpP7GTqP0O\/mf9XY\/26hQb7RFG9YXrM3E5qKg8mQQMyiSQ9VFbjgyqFSPO0U\/26sI53srJMtcr6fymyaJf1rfjgomnH7XVjUXgrRHx+q31vaiRqphmrUxux+kGzbN7XTsyrcRs8dHNRFuXnJq2y\/urMeKHTLOuTGon6fqM8\/AEmaDce\/hNwxwulbULB5JwGo5ya57Zi9YZmoj7dSlTSSPS5zURf3Iz1nRb0UBBz+aofHTR7xSkW1YVf2Un1J2H2yJ\/Xy4T1Y6XkMCw2yG9MZM5fLaly\/hxeoN3BH2+nuocmhVaW7eLj5\/m1tzVidWE9Vmc3Ej3STMzHWon5Zwo3GtnBezXvvcy2n\/urgtmO9POaiX49xAatRB\/ZStRpM2Om2yibD+SPWZRF2W+hfK5L7euxVuN4v22+tlG3MpCbifopE7KV6s+1EvUfrbJ+MSRvl68+8Dfy583L7NqX\/crUaOFAKoiasXpzq6y+2Cqr8UYilU3XMInI1zYiPclCkD+e\/G09UhfYQNCekza\/Ye5yD4OCRu2Rp\/1mPVa3Xnu6mNLc35XNRK1vJDprxeazUNZC23PeiiVP25tP7YWOh1D1dNLhlwIEaaXqS61EjzZjva4Z64vrsb4jtEq8y+HN805mVlKDnD\/voizKXgVqmsmKvm4hAnSCVN7fQ\/MxoTGJffTVskSqeyjAb8S62Uz0sa1EfasVq\/c2Y\/0azOz90VTglTFjzz9m6V8v1Oe3EQ\/\/K7+bv8a9bVLkH+k+UV4o7Vj\/5ebxwstgtwyBGIOEBQXkGQCSZjT8T81IfxCzuRHrk5ux7jVjfXUz1rts+5c514EJyjPCwhhU9CDPOLEsJJMVcwEFF\/nfXpRFWVAakUroH7Q\/Gm3QJlHXVAJH86KuPqDjUlA3NRO9uRHrn7QSPdJK9Cfb5cKhrXj4BVDP7mvyeGnEunJ\/J7CtE9Z3tVYseVr+fHlhESGqjVXRSvW\/t8rms1gbzUT\/tBmrC5qx2kGEuR+4c4uYJyPAUtlXym1vG4G1Rqz7aLBFWZR9CmZpM1FtBuIDmcRoaAZtuKFp0NpMbNHcY9Z0JCiEf4lvetFx1oS0x6jrmrGeIiLcjPURjfLQU\/PXidQjNYFGy1\/D3jbOLyQBA9qJ4msLOUGszqCiiYWGCcqzuMhf5\/FzrgSalPthonJ\/3Gf+3gel1fa1+drneqSOz1\/joizKPsX2z9W3MWB9pJXJxuY1jXzuNkxDBjkTUFBL4wVfEiiaSMxFV2pXj\/V9EN01Yn1nPVa31SN9cz1W18MlBe1NPVKX12N9aSPSF7fK+Nh6s6d9zQtVRw9kAgtLRkm\/OH8+MNUzY2ZLI1bbIIvnOtz1bJfri9QN1PQ2YnUbWpz74H44L\/fHfXK\/LFBoYZ4Dz8MjzMTVCDf3LOc929VLZy87aRm544vPGlmk4lmUBygbSvrvNh9jIip8GpH+Hh0H6iX15VqsP9+I9CfrpIpi9b5GNPzORqLfBgVOs6RfT4CoUdavpLh+YkQ9H\/4qCt4hjmscOfTU6fElv0e6Bqz02rUv+xUK8AkK4VNSKXTB4YVfJ61DlRHwQqK7Ia46lEasj2NS5Cfp3jaX7rl3EPaYVA+tSiktbI8s+30aq2GRkHri+uQ6DzvglzDx5fqPPOQJpM8IbHGtgE06JfVsotn1RL0E\/5WOEtAOwUtNm9R6bN5VL6n3QypQi\/WnGrH+fD3SX2lE6puNSH2\/EeujNq0slKrJknkwzUVZlJ+rkGK6YLTw2xTdt8tDB4OlbiTm1URz6yX9bhYBGbSJHqlH6oRapNfRarQe6asbsb65megbW2V9UausmwsBOFqRfo8wbAyYqAttlmdaTw2KajPpZlYW2s1ELICbuQ6rfdV0PVJra5E+th6ro+uR+jrpo1o0\/E5SY0xUItSNTC2jDxMRaM9jvSiL8nMVBjYpFQFmJOaZ+IUwOzZj9df04YUxEu3bSNSXmok6vBmrtBGpkxqxOqcRqbYANyJ1JaYxZiaTBj8RkxLzELOc3CrlgGyXn7TM9zC6EuAHpOnwQwOimKzor2xaWch814W8cI34qZis+Ym60IavjRbMnwtpltQ\/8nu9zHyxUzYfaMX6E\/QcbsZ6bTNW13IP5Kj9tRNkwofHCvBwUou60nfWI32TmN+R3kI\/pUakz2KhapV1XC+pHzRj\/YUaketEv62VDP8zHRHJlU+MDB1MIG\/98iW\/V\/3uvlNxi\/ILLvWjC4dMVsxKOI\/rker4CSioonACOoggBQp9P9ilRvDvbGmcxUWzr08voSHZ+LuZ6F2NWF1G9LmZqG8S2QWrPF1ednA3Uc9vl9WbOqk+ijpdaoR7o1JL\/HZPDTtIqqXht\/k63vxkDTcCQ8LbHKn1gxBdmPMUN4Chhq+rl5kLuqmuUyrYLKt\/mcwKf8Z12py1fgeLlwOj4B\/v5tn4e\/XpIp4Fm\/jCoR8cPD\/\/7IIFgO0OoKl+AajHqtWrmLN6FV06\/Xv7jp4vyi+INKPht\/Qq+lYGNhOMCYg2QyMymHzwyUdXwwlBdJUILfsK+MANTBdUurcZqyuaiT6vmaij22XzTsoCPT\/yJWuH\/l9vpflDmZxlkzZjfQnHCj90qifbmfqfamKeA3nAxvHChvoCeVsv9UgfJmmqBQJa3AeFA51Ud6GZzR+PVFcf+BssXjNj5lRw2aCk2qn6NPXLWA08n1ZZb2qV1XIhNUj0UhBVHLs5O\/hJPVJNaG3STLGuuTzwbp9ikknt0kt5AkB5ni5a78oV5fnbti7WemGSEwGfrOjLwW7nr39RfoGEIFGnrI9i9Xf9fPYYUPmJysBjgngN4ibLfU0xfdX6VqKL7UR\/EN6ojbm0D0Grblx4Wbesv9BK9FnNRF+Pxrrmx5ihEnG9spvqwwB51OPCId2KPmxq1Fw\/PWru6GXms2u\/s+z3G6n5w\/CcecEXnRw1m0NNzH1x3b3M3N5N9Q8JOuWPQ2iZwvnXHjn01KlRc\/jUqLlvatRc0i3r\/yUCjgXQSc3326m5+epTDxKCOjQm2rdV1qe0M\/3x3rj683z+moKMbqpf0yrrTzQTnWFKgzBjsvrqLJ6n5I1dNVf++YebEP65RZbg18Y1h\/xa+HuL8gsga9Yc8mu1WJ153ekHy4rf53RyqZD8REWDOL\/uqmaiNjQTHXVS9WEGJsElBn\/+NwRCmJm3MKlbZT3ZSvRdDFjMS2ps0Wjtsr4Nzqj2qHoJyCwmfq+iT\/LMF9D0fPfDB\/4GpuvMuDmvEasVg0zfUNYcdsivtRIahltNDNuF4KnHhofy+4YyWXnK4ymimBkrnEg0mbLFXqaWe63OdUoQLjv4Sa1M\/10nMye0y3oX98ImkFPrItwGxVArMYdDCJDvh4wIOCRb+qxmOvxP1Be3El0BsdZI1HU8f58fB701aGIziVmkrj\/jYPLElCLuEYxblMewEKRqlIf+tJPqtZisYUWNAx9c1YjVRLus41bZfLRVVn9PFHmhjntEXCcz\/Zftsv54qywD+2I0NguA1y5SceRI4DqpPrdXUW9qj+jfEVrWsvkolDVoYwFGVPRXRg572m+Smtm0yhy3cdxsmxot\/A9BNBaf\/O\/npV7SHX6TwW65odWq\/D552bjmyU+oJfrvpkcLn9o4bq7cOG6OXnPYIU9Yd3jhyd1UF5lQBKw6me5RKUXwjGKOblb4H2qb0Yi+UonN+7athM6Memu7bFZ2EvN+\/PyFtCbPY7Ki\/6hdNq\/FdG8leowIfCNW1\/vCf58r5l\/YTjx7yKL8Ysrj2qk+bGbMjDL5wPNivjIh8zuG4gvm22X1DWp1m7G+AT\/ND1rXyFsmKxMYzdtO9YWYyF4TtjP9l93UrGqX9W40CftC00pvpPJhQ\/9vZtwcvmmluWdmTI+ct2LJcxqRqz2ObLuTvUk90lN+AnM9tUidlN8nL\/XIvLYe6e8QEBPurzFzysbxwp3TY+bTfF89eukz0MKcD8ulk+rbuplZQc6Y77ujhUO6mf5eO9Xb2YfNxw9YlHzgT9g5E31Vq6zPwMLolM3fsojlrycUiOD5HQgC26n5zKbxwspmebG7w6Lsh1i2RvVsis9bZV1qJbqHOey1AVqbyecDXAxYH7TBX+xlOkM7cy40TDvTH+qkehNaH43bsR0Ojlg7YovnuxXzsY0rzc6ZMUP+98Vrlw+9kPagNADHXCT9spAl4IVcsjehuc5GpH6c3ycUUmX1SJfglG5E6ksALM458pl\/yCK1caW5aWbc3DjpGDPReCw8WBRcvzWvdb2b6bd5zTqNiZ3qk9qppbplMfHPh3+ZxP75cXyrrG9tlXW9XdZHUM1F7fC+XIVFWZSBsnH1IU+EcA6N3C6r45uJvsSbw0w6BmO+1y+DEg3MgATl1E71uZMV81Y\/oCcrS1\/QTfUYxG3kYMn7dlJzXy\/TETWx7NPN1H9Mj5nrpAIn059f\/eEDf4PyQhBLzVh\/txbpI6X+NtI1kFr56\/YibVVifb7PC7syw7Py+4ViG5+pbXRNYCLXY\/VlyOSrJfWPJ33zSb\/Vq5ijgTZOj5mtrcRWBvVS84eTmTmB58H9CO1tqm\/speYo\/FvZpzz0u92K\/t9ualpYJTwf3x0xfHZo6tDsblqq3q2UVXZS8\/5eqv4cit78dS\/Koswzh5uJXtsq6+u9Pxeaw+Gg8xuady7Io7f2KuZL3kQmJcPga2d6ytPO4m+LqZyqce+7SeBq1Mxce9rBDO7zzvvhEgWAoR6pz1Tj4X+tx2oVmhc\/lvahQBU590JEAiwajVhfYhttW2ugEVsC+EFC1JhjqiX9YkGBCcpKjzYTtRzoYy1WHwXeSRR6atRsRutOVvRaYggc34n083qZOY2JvO1Y65vy28KqWSn0KW+nxtQfdzLzg06qLw9N7PwzZWPBFLPbxSZCsxuXB87pjWsGF3csymNY0FwMpF6q34E5DOsExG2+oDxvDg\/afDCFidtJ9Q2dss7gdfK\/IRSwqSm3U32rNxEZiNJuNDPH+VRQo7z0T3uZ+QmkdbBCNsr67XwOlJHJK9DEsq7XSvrblAzWY30GQSzqb4FmMumYfATk6D7of3\/y2095fD3WVzHouV4mFiAI\/z0ixwjazOKZMaHJDTfBK8dqQz1Sh9cjlbQSffrECv1KcsyeEQR2EJ4TrJmY0hzL5+1EvaSbmXP4ToAZLi\/eSc01kN9NZrYZmz2H+Sei2K2yvqNvRu\/lme\/L7O6mtGEdPmgRuvkYFGB5U6P64+3U7GkO00lgAS2QH0CeiL1T1vd2hR5Wv90T0ImfnOn3YCqyH+dnIYCtkgnUzcypQATZlwHfyfQYJqdrhpb6pt74nsA0wUtPVsxVjUR\/shnrMUrqgDgSCWcBgIh9\/fiS3yOX7X1nL5it9Ujf4BFNXE+9pGbCfZi8G0uHPJGODPjlLAgE7zh3PVZvaETqHAJmzUR\/b2rUnD8xYl6ESc21cXzt6KHhTmZOQxtz\/l5mfuBbp9BloVcx6\/0kZuKxOHI93Uz\/lB5Q\/jpISWFi40N7ZktvOextG2R2E+1ulfVWSPc2jpv3g8cO73lRHoWCxm3E+lJ8tH2Zw4M28o\/e7yXwJFHkiin480Nq3i3rkU6qb\/TBGjSJLymkVQnRZvZlgHcz871eZu4l6tyrmC2NZPjVfEeQDI03EelXTo3qtxHEAqrYiNRK2C0akX4lJm69ZJ5LhJhJSmWTaM14ybw0CnXDUP34hUl84UhdkNdOaFRSQVQkcb5aPPwCkF9Euasl87f1WFXpaNhO1Wc2rizc0SgN\/W01Uoc2EjXiiQA6sXpzNzPX3nDmwTyrWzpl81l\/ftySyYpp+FyuBPeAoVrL5YpOpr8dPsteeemfCtF9qi8RuOrq\/Vtc\/SZmN8wfx1ger1pJn+fPvSiPUgEof38rdbyJzEBrp\/q6TqYjevr4c2K6diuF\/+qkeoIFwWsXjmXScmw30+f5YA\/SrZhPdzJ9I+B\/gjjtVH\/Ff4e53IzV+DmHF8zUmPk656tBT5OI5j0XAj3K8WQCJ\/oVaL8NKwpGAk+R+QtKDv25kE40PFSP1D0+0GZRZuryfDkiQBPKHDmfr5aqlYZezu\/I70fqX5qx2thM9FdaiX43BQuTmX4PzdXqsT7ZtzGlXpdFjOcFQqubmkt7mXln\/3rK+o2dzEz6hdBfkw346d3dTJ8+WVH\/El5bZ9T8UyfVa7wb4iCce7yrhTY09JZjljKJ\/y4876I8ioS6VqpnLD\/Vni85\/8IZXGIip3pnN9VnkDYJO+p1K0v\/BCgiPh2D0YM+OB6fDA1Po65OUvjH\/jGp+e9uqi8mggtaCRPSB38IYklUOdZfBfU0s7LwYybveSuGX9pJTbmVqBZ9j2qRfiMTt1VSr6pH5q8wn\/n3zG8\/+\/GNkn5bHoVEkItrYiHiX+sLq2vzUVyqfGjgTUAMvxvfGtO9Gqu\/riXqVdQ2t2Lz1lZZX9oq6883yupQgBzTY+aoU5cv+b1GrGNqkTHDOR\/1z93MTFGp5DDXk72yea3\/PdJMdEHkGROxB\/3mUVc2oKUvpm\/y9PgcMINFqlcx7+umZn3XNVyTxnAD3mF+4\/3UI90bVDK5KI8Cqcf6hwDf94Zx9v4ZfhzR4qlR8xkA+v4caFvgkEw8tCwDyAeH2Jj00pAs0512pXCoPw6KVaqJvJ\/bzfSN3VS9t\/89+OKyPr+V6L876wd6yaaV5qLNqwq71h459Kfdii52UnN+LdJvb5TUf9vyxeG\/kQCT+KiFQzB16TII+Z4\/pxcWCE9vwzVy3TBo5DU1AhnBBkvt+kohDkjNc\/GBCZZRgF+L1P9wHd3M3NTL9McnisOv5n5mxs26Nd\/Qv0NNs6R7YvUGd8rH0Xq0l+m74RRjYvYyc453I5Beqt9NL2I\/GT2M1XdpZAEFTkqga+5KabBW+LNupr7RTfWFTE4fZ8i\/03CTsslEvT88z6I8SoRIKqs72jFsRIZpycByvthVoIm6QRQZIcfZrZhv0bEeXwzfLTThmPBiOqdmplMeFoADInSyFXMWv3vxCctEu\/RSM37eUTZSi0aZrJgz0dQEnyaK+hWbV5mdG1eaHT\/6wTOWTmaFI6dGzbUTRf3vwvoRm3\/FFKeFKFFpoJVUT8GKQXdBmDrC60Ywq13aRa7V+ZF3+mhxKDCHVEvqv\/GBWSjwq2uxfg2an8WFSUwb0mpJctS72qn+4HlHmRexMM2Mm6t\/ctTQs\/Clu6nZOlnRo+CwOW81IWWkf8KERBtPjRLM0mtYfPieqDnn6mXmUsl7B1aS59\/i2blOj58Pcdykz4C2djMz1k71zT57kDexOcfGcbOrEZuPhve8KI8iQXNNVvRGD7R3ftfdnVT\/COBE2CmAlEo7Nf\/aTfXpnVTfJxHRHOjA54ep06U80B9rB7E+xmsR8r3U0oLp9fv0Rgtvnh4zN0xWzPfl2krqw2iz6XFz1Y++cuAzuhXz\/Zlxc\/eGkeF\/asa6BC4ZE7cZ6TeifSFvnygPHQy4g2slVzsoF4y57aqE+hMCzqpBjB5Q5tRKusL\/G5H5QCd6pmhjfgMQh1DfROrv67EqbigN\/xvPEUvizO8P\/enG8cK9TDImOceTIpseM5eR1\/bnty6EuZbnYTtG6F29VB\/lg2DSB7miP9HvOYy\/HjxvD47ppPrOXkUf06mYvw0uXwJ21C4DnMGfZl\/\/nnuZWbdhhX5euP+iPArllMOe9psUpG8cN01ymDM5cjjhcErN\/1HzKis\/KYncau5RRL3MXAQ4w5OaM4CAQXYzvRO\/GK3eqwjC6ts0C2OfE78\/9Lsz4+ZYtGyvbMnUW4kpgyeeHNXbVkvVj\/42A3j9yNBrGrE6noVHgBwErqLhj6MVwQsz6btx4clwQcPRFd6HFwJeUhXkrp17kS1Rf5zfFyHSjSZnY+LyPITHqqQ+S7MzYJxQAOHzViP1Jkofm7F511lHqGUzY+ZWTOVmov6PczG5N640d0+N6R8ecIBdXDYc8cyn0+Dck+PLAlgBYqq+COsJ+7CQTo7qz\/cyfZ0sErn2rVgRPFsBzGRmGrhpvsppKlF\/TBHIxpWFDii68LtFeYwJOFsBE6T4Wnqn98fCSSsTt2IEItjN9BXdzHx07WE2knvKyNN+E18P39AGZfyqrydCqlaKIzatLNw4M15o01GQydxNdfUGW7wwXfn2Ux7fSdXXSXucd\/TwP9vJpP6LvkpEhAXSmOhXNKLCoUSXa5H+GuetR\/pHnDu8Jy+Y3YJ\/9hM4sX4wJHP5fRGQVpDI8X9w1mJOR+pN5J35zuWF3wSZn\/B3xeq91512EOCQ\/8J\/x+S\/5rSDZoGdyjniJYdsHC9cTgUVqSn\/O5i9vYrZjCaW52Wf6+VUM\/l98NNdx8abB03kXLDxVnDmYYZgUR7jQpeDLoGqTG\/x0c98O0wGDPlfN4Cu6WTmsz7SigDY6PtuBMFs8+pbqA\/2+xx52JOfMD1WKFHzOzlqRFPCTompeN3pBwEGaYy864Bfpe8SkxlTuRHrbzciHRHNpXeSBK\/g3YoKh6Lp6yX9BSYEHQPJ64bXFEqtpN9hSwjnBr0sTgtUMdVKS59Vj\/VW\/u9ZI8lLC\/lepL6OTw1TJEyTTaLmJfXeZll\/geueGFH\/eeZy\/Qe9irmMFBlRaO\/vT48X1hBE6lWMaGfEWkPq673M7OLZe5ejl5lp3Be\/H5VPvYr+DrS+vllbvqE6n3kwDr2NexXzfiLp\/hyL8tiRx7Uz82pqR7uphe7hW+W1LQNEIs1WM9yIWR22P2ml6g29zEx6bc05JHWUmuPJy\/r9AGNsWmWu2LzS3EM+lc+I5E5WzC5YLCg\/5DPyqzefdTApno\/ia0KiDnoI1BWUrpKiwbQtqfcL4CLWx3AcwatGrH7qfy8vRJYZ2OEElvaeDjQySOqRPp9rJepej\/Vxs7MH\/BKmswBHYnUMYA\/YKPFdG5G6jmh0p6yWM4lrRf12csFEzrm\/XsXcSBSb87ZS9V7835lx0yN\/7H9PwCgVfa5M3qB7BZ+1E\/2K\/nUVl6hJcVFsVRMByPxE9vfntPKN1C53K+ZF\/hyL8igVwAmYvUw6j0cehOxhQPC5TNxU7+hm5pthy5Fe2bycNBIDTCqRyrZjwGTFXIJv6PejhhekFT7i9Jhp0DSbz1uJ+RYakYBVq2xO47NmpP7vlrOehXn7HSY8\/FmiZWM1jpatx+oH9aJ6Q72o3ifIqkh9ycMY65HaBqzR\/25e6iX9CSKz\/QE+V9Dwuvy+XpqxLvqKJcx0MaFH1PMbkToU6thGNPyBZlm\/ESpZSWEletfa5Qf+EekeLIoNxaG3Uz3VLusp7lNytZH+IOcjNTYzXriUiQztTvi7UmlUMTdyvR7BJho1NceDFff7gaPuZLrUI9ZgA5F7vEc2KS5xcMxOpicAlMDBHf7mojzChQlH0KST6h2symEt6sCJK1FlDe\/UD0ij+POg\/Uh94K95n5J0kq200UdQMeT3Jdg0NWq2SH1vqr\/DZ+Cj26k+hYGLKU1Taz6vRepLN\/\/kWZjuK9f+cOhgNJAEjSL9nmakv4N2qkfqNIjgoV21EWc1wfkkPZPiz85BEPPSiNUXwwnMxuJTK6k35\/f1gnZuJno3uGjR\/o5Ar5no77ha4TopLChhAZGwgHQzc+Nphz\/jwMkxXQOBVS0Ov\/XQQ4kt6Jp0s7CllSs4D+5CLzOrgJBOjprzwKf73+aZ8x3P2EfPJceb6nuFMCB4J82K\/qNuqiud1OzGysgHG\/3GOXxNdjczV\/cq+ocUmfjzLMojTMivspp3MtOUHO0+kvys4M7kuoda1zDF0h7RS3oVc1Q307s4D4OBczmt26RVpt\/3sMMO+JV22XyZXOfMuLmrVtKv5\/MNy4cP6mZ6I5OXDc4nPqeqxwaw9NqTf6CeMjVqbqRrIYO4Hqlpyvbqse5VV6g\/BqElaR3J9+rvcny1pIrQ3frfHySwauQnMPexEA80AtEdNbjVyPbkdRP1tROJeZHUI5NSitRpUvgQ662yOJXNaVOjpuvu4yIQWBMjNifeKeuf4v9eKOWT+qcgzfi8Gav3uRzyfa0cwKKT6NdPZvpCqSumh5R7R91MrKIvhwtmKzHP6WZ6te2pbLV3\/h37zRdJ+GKKPMJuUR5GoQcvjbgoJOclBZ3\/Bm6s2BaAoe+dzEzSdcACZK3QtpgvkeLAnPbBLQa\/MDpm+lNrDp3Lu5JjnKyYFr17exVdpY6XzyeK6h8mK+ZmzGYGI5SyfF4t6S9YLLTeRM\/b6bFCp5eZNt\/h\/zp\/87OkawA8+ElLwIoJzuRuJfp2HzFeSKjnDX1guQcmdKQ+kt83FHDXtZINZrUi81cQ1PP\/ZqzK5Ivhkq4nw\/9cg2TAmdssQL1Rs2rt4c84cGbM3ARcdIPT9J1Uncr9uyDVxT4ne97R6s+nRs02FjIqmtYvnyvGIDDXTQvf9aWDoOj84tnN9JWdzHwgZL0kzdVL9Uks2lgZ+3r3HuNO9HuyYr7VyJ6+zxavi\/IQSq2kziYFszdtKy\/Pm2UU01fMuMcjI2LeVcz7epm+vJ+6iOYKyrup+ZGvhfXSTMxnWCzQOpTczX0+\/DEGkw+qYILyeS0a\/hzXOTlqrjkNkriKPmbjuNmJBhcGjEgtl\/xupG8+k3reSKX48BRj1GN1upy7pP6Rqqp98SHXYz0WRqH7EzhWX8zvGwqaloIFf6\/1WM3Ui\/oV4KQbsf6aw27fwHcE0bi2c44cHgLnTVPysw8nfWR2YXFUi0oK+dtlvYZnKq5HxdwJvprPYflop2YVufCpUXNrq2wLI7xAHM+iKOCO4H04jbyR+t9wfxhUehVzmuSaXXfH\/BgINzQ3ddhVy2i5KA+HOIaIvZpP4k+5dEUv08e10vm50E5m\/o0Uho8sM1BYqa25rK9speat4f7rSurZ3cyssyAMcyuMGf67dqojfx7RgIn6Ep\/XSuqzgrgaNXee9b0lms\/xldFETEY6\/rEfRfekjZoj5kXQx9rP9FXkgfl\/taRO66b6nhA9NkgasTo1zAP7CdyMzOH5fUMBwCGTr9Q3199fj3WX\/0OK53zgtBGrCnlw4JngpzGb0aYbiupNFGLwDPi96gqL024lqszz5LkIJNU9F6QR6\/9l0lEk0U3V8SxawSU9DkbQXkXvkOt39L\/ENOzCCg\/3\/Mbf3US9ypMK8Ft7K3pgoYZQYLFu+GEQkFD1WJ\/Ci8y\/GD9xJWosEU39oxBMjwD3o+TP4mXtYGdw8OJtAb4eoeonPKaVmI9MVvTdTF7AGOuKlmGCgc25vLbgnESC+a5aUp\/2HQ2YsBtWqDdjck+U9KckZROpewlaCVAiUtdxTD3SZxA4Ih8LTxWf4eNPjZrdtdLeua0Q6niJuofPg+eEZs7vGwpVO7WSvlQoXEee+6tUKzUitYPra8bDL6vHKgUAU4\/07kZx6E\/rsXlr3S0+TFJSSOceMfQX65YPvZF7ZhGZGLHF+61EH+mtG\/k31cesdj2PIAuguMHWSOvraC0TXte5R+ul3UyfyHMVcgJXnCIRa\/uuTvRkCV7amfqHkFQgPz78+8ZVgrggPHZRfg5iSdj07flgDRPXFzD0Mv2TdmUup4hQwdOtmON58V5LeZJwmYAVM5Vf1TdEwwdBfYP5KgGp1BzufeH1xaEXTmbmUm+es+qTh+W7ejz8CQnkHLt0tjYy\/E8\/PVq\/GDO6XVY2lQS\/VayL\/B+tj6atJwY0VsZn0ou3ZAM9mKsMcDRWeG15YRISZMrnuZ0\/eUZ+\/7zQRpWIcjPWr+Fv\/OlGrGv2O3UO0eNmoj9Imab7vkpjN\/4\/WTFbzl9d2HXGd2gGpz56+ckHyeLorRT6QNlcrrVw8P\/PWfFMyZ9TnkieHkvFtpZR42f\/QD0lvDbqigGMcKw8r8hZWPbZA18t5ckNOmX1L73MNHEp\/EIdbhSckAPfG0ngojwEwkCVyZhaP4kJGBbT50HvmHpo1W6m7\/VRS7+Sbz2Giavvhm3jtA\/Mf5EAEeibJACFTO8AqeS\/Azc8OWruYmAQdEE7ANjgu3o0\/DFWdzTRxIj6HyCHW1cXdk6NmaupxKnH0mbkVjlPok6gSTf\/b0Sqg\/atCgpL7\/RY4WpxeApXgLYrc1e3pxBdbUTq2rDkkU14sUpKzOG9CX42i0y9ZFNe+L2ciyIKSR+5RQAebHxqrg\/TmMDd2d898BmbVxXunRk329GuoLeuONlS7lRHlJRa1mP9BdwLAoQC3Bg111ZHLOgDaSXqI72K2W3jGvpKGqoFlyedGGn8RlGJ16y8xyBifVsn01\/L0wy1MvUf3Yrp8duOAsjuX9Ynr89N+kX5OYrNO5r\/mxk3O+GjgsYl\/B78MUXiTD5Z\/csWycNL92waaNdayZKTezmvuERherM4oHm7mWmEgax2or9C0QMDgfNMjZp7oZvhu1pRfYSBQkQW4AODeXrMXIVmAdRw7lFDzxIfsaT+fP2I\/kt+QzipSvrd9UgJ2orevGg\/\/g9wgkWnVlLb8rQ4eSEF1ojV3XnACtcIKwfpn\/wxoYA8ayb6jk6q7\/IuRD3W582BPFStHeu\/rEdDf8XzxBISlNmomcUvXne0egP+Pe9CzhfpY9Gqk6Nm94YROxnBVzN5uUYm0+Soua8ZqT4eul6EHE9fRJGELMipjsMUEtIqm5f3KqYdBh09ks5+pq8C2hreL1ZTJ9XvoEpsatTc0SybRWL4R4p0x\/VSXyGEUJcqfMSZvrL\/kt1gRvu61Ma1YUmgl2aq3wGUkglo0Vv6KF\/nSr60k+ljxYxzRHdTo+auiRW2yghTFyoXjm0m1hSm7Qh+87oVw5Jj7Wb6em869zJzUyNSI\/y\/EelLAFGAzGKAe7AGdc0c7yf03kS6GdINIRfYs4Nc3caEyx+TFyL71ox2rkA0\/DcsSFybmPmx1eStWE+0yroj\/y\/rCfDd7vgf4udTVeW+WweD5WTF3DcR2fJKFivcHK7LY5qbiVQwiaBBO2VzggfBwGpClZX\/XvY57IBf6abmM5MVcwfvyQeseM\/96rGK3txJC\/MALFSJAdEMP1uUR5DA7N+t6I39yHLwYjF3hSkx09nZRx84rxyNv5mcDIaLT5CXf2szKNZfd4Ra1qtYlg1\/LiLRG1YMSTUM\/ioawzUt+wmfNWJ10o1nHoxpvYa\/W2U92quYW2T\/SH+H63OBocPAPvN5M1GbapHlcSaQVIv01QBFPEhkb8IgHxS0seWEep8mOAIG+ipI4SLd9J\/RgbBa9NVGuttM9Osx9blXYJTkb2XRKarPsA\/9jPDZq0VJoz2uk+ot+JuTFXMv9c7sAzKM+yelgy9ra6j16Wu\/87S++dsp609gUpPecsSCR5GC8t\/b61lySK9ifswi4DMJoevA+6RKjBYu4XGL8giTVlr4G7iT8Gk9eZqfuEGQajNlbXscG+t\/71XM1ezjivHbE8FgRwtNjZrrBJIYWUhlr2JuWLfClsvVYvVeJq\/gfVM9KZ+V1PcBbrQSTST5cRNF9QbSJURd0a6Y5vjHjoj9pnaml4CDJq\/qCw+YtJCl12N1x0I9fUOpldR7B0XmmSDCDFmaH6AbJABK\/MTyjB\/Vov4Qz0Z4syJ4otVlfF6L1IqZ8cJugkDVovovrp2ihbVHDj11sqJ3XHHKQQA73isAjcxcw\/OhqGMisu9gfUm\/fmrUEBuQiSd+acWcv6E4l6fHXO9WzCUc697hFl8sEQp9lnuZvsoHucL77wc2K4WTaa6WP3ZRHkYhhUBdLxoxn\/9kY9IxaChjo\/42PFbqTyu6Iggd1y2gXdYjvu4XgakCH47ILpNXfN+K2b7uKOs3V0v63Wg9F0S5HK1JDpXBPDVqdq0vmj8EvOHykiWOgYqnmxqZBIA4apGW5mNgjluJvtK7A7VI\/4jiCFBS\/Yvei+Bz5yPzfpNUkiuI2JsI9rqkL8F39WgwaoSnxsyuDSMq4e96pDaC3aZTIvEHoJdybGo2TI+Zq\/n\/uqL6B58TpnrpnMOfaTB3pdigYnauH7GRbr7DJ2WB8Yvj5Ki+1TN9yD7L9R90M30y5yOizAID5jx8T4hAajMdca58Ki2IWO\/uZirp7AVPvig\/ByFl0El1RApBfKDA72M17xOFV8y55DLzx1Od06voy9nHRURvx\/8NdsH0O9IB4mVwiTlW0RfVjrbYafikmLxyfKZ3rD28cOCGkv479oNQD63EfgTBgB3y\/w3F4Q+gmTG9BaIYq12ifUvq2UxWgmDsR2Crlai7MR+BWAbXtaA0ErUyj8LymwVzWOaMfQmADRuE01d6OtpaSUfcJwEltHAjVjv4HCuC+1k\/ov66ccTBTxJ\/NlbjfFctqW+4INZOgndYH0w+eV4Vfc8GhyoDADI1am5m0vGc2UdYRRJrkntplc1n8W9ZcJ02nqrF83P8CBZMr2KmfYYidKOCiPXtk5n5Rj7fvygPsdCvtpfpr0mxtystC2tEmcg2gGGo6d2DkXAtrBgVXWSlZ6UW0zCbX69KkXonNWdhvgoCKLITAFrUOYI6\/Q4GGRMY344WoGuX6z9C2zNoqyVVtvupL8JYsW5k+GVEeTevKuyGTpbvqP0FkML\/J0r6rOkxs5NUCX9TxudMztk8gmwhoWopr3n8JqZ1pEfzxwwSII\/sL6CUxEb28Z+Z1BMlZTm9Yr0V353\/EzWeHjOSG54oDb\/r+tMPnj3XIbGIYpNO6qb6ep49KSUPsAAY49NIYKUJLDI5mcTe7WmnukKppr82zGcWXt6Hc2V2w7NNUMvvg3BMp2K+1Mv0PVhX4bMII9a9zFzdTc3HsJzC4xflQRY0AamBXmbEzwkjy\/6leIAGSJ+wNNALAIVeRW\/zAS4xqVIdwxTh96muMM\/pjVraUzmv983wi31qpTj8Vkx2fo+BSB6Uiptuqm+wPqxtZXLeUUtehN9bK+lYjov0GUJ1Wlyi8IO5B66zkallRGqrRWuiun2nuM9apK7YV\/oHIVJej\/WlC7UmkeBWpNbnjxsk1XTpM0hHye+X5noL10pqApOZ\/skwh3BeeKVh10QLV4vqB+zXKitQULuqRx\/4DCLKEOQz+dtlvUnOX9Qf4plKILBi7pwoLhHAzfojn\/mHYNJl4XBADatpdZUouL8OfOxOan4si+9ofyI2gdf6fbyAGutm5mwx3XNBLolYY6nZ47fCg73Y1vQhEvwxJoO8hNzEJb\/rXvQ2ytLyx6458pAnQMrOhANe6bTmnZCzhfuBGqLRmCCq3IsWM6xs1sM6wT5U23AewTyTzx3R7+bzFpHW45cxEO7AxGbBIf9Ly1B8WvKgRGY3rBg+gv1dfvVH\/H9iRJ1ARNcHjVrx8As8A+a+IJBeJJcc7ZkD9ptM7EhfElbz7E1oY+rSM3dR1shnBNUo4K+OqC\/LPrG6AB+e\/9cj\/RMWIVwB4KWS681saokGacQQeD5NF6GvldS3sXB4lpOj5o7qyLBQ+1KdRK7W+ux2AbWui9k+sWI+LVC7rL9AKo9zO228CwqkPNk90kmEj\/p6nmk+zcbGeQgs4tvnj12Un1GYDLVIXeV73oYbGhd\/t53p7w3iiaI0juizNcf60ehpNO28\/cr68zKxg1VaoJNlfSYgBfaBr1nAB47sDqYMOTZRZ7Mvg5Z9+IzUEaAGfEM06OSouXGqYnZMVp7yeEAc\/BYIMTYGVbWoqv5ayPnagA0TeHheQcVC0oiG\/sKnZPLPiE18wUjflWdzXEgg1OMaZBEpWb4vIubNRG3vZfo26WoYq79mQSRCDq0QC1rLWR\/rV6j3Ce67OCxtZKjI4pnxnKjA4jMat\/EZE5AYxIbl6iV8TkoP\/5bz+UmMtiZi7Vu6eGmUzN\/2Kno7vrc3u7sVsz4PzkEsS4se9Zj3UBH4sVSPlKDiFuVBFPKbYYRZglR9H0bXKD\/LHyMdA1PzLQmI2A6B1o9NTeopXxGQUnS08xNcTDc3eQETjLzLaqxqUbSzLBYUqvuIMvW7kuI4TnoaiXZdP6L+U\/iiIosTrhaHY\/LBBHzkmMTMeO1bLaoK5idUsfwNWKReUtdJKizROwe5AoMEylcWkPzE9RsTW3iuI\/MX+WMHCWWELFay0JRUz3\/ORHS57U\/ydzNWF4C44v8TxeEjbjqTyqRhoc5pxHoCrea1K6QAPGe2IGd8FosEk5joM4EuPicf3M10nX2ZaD4wSZqwVdbf9teDYKp3K\/oMeYeOGB4Li2qmcD8v9JvCZBbrKghykX5qp2Z3o2hbwC7KgyT1SI2DR\/ZYVimyr+hb4bwaZC4xobsV3eMF8VKsZtV3t+K59iYIRfhEiNnPay4PKgB04c9NSoNqIMHQ2n1l8tVK+vMca8sHrblI9QyEduB8WURqI\/ov8f8asd7ijvk70WrFJQqu5+kxcx9lg75VKTxbaF4Wnborqt8fgapnoRSS3ySPHS9MrRMKOOd6pK+RnLA1vyWSjzk9OarvaSX6hrVrX\/Yr5MglXlBUy6QDY4VostkJ0IN64c0rC\/dOjZrtWEeQJrTL+gquQ6yVo621Qu6cv611o3dQJMLntF3tpHqtWDvOXeJ98n5IK0HTG15zKwFWa03qIPd\/Vkjh42XtYU9+Qjs136RbJL\/NcTw\/QCw+OLcoD5JAeUMnhXaiju5lZgYytUGdBize1XwJcnV8Il66fYl6c54XmTQOPXitmepWYBc08VxOSLWoXzc1au6T1d9CK8XEomgdbeAggTd7TQm8EDD+hqNtZ7xmoi4ksEXTMP7ulM1ltZI6Vc4RqeW05iRS7X+vFukzGFDOdP2G\/3xf0ojVqoVSSH4TkzS2\/uv+COgwoKEuoCfWBVIrqZXX4wtHFh4qWtgxZU4U1fuAfgLJ5O\/1K\/SH0NjVyCK5JkaWvAj8s\/N979uwYugvLBOHuUxMW4uPvpnyS\/aXaHKqTmXShvfiAk8z646eY1VBsNYmK+Zqz0riUn+3LoR9Zlz0MnMeQcp2WX93MtOvDwNmi\/JzEhBE3uQiqIXJzMDDPM77xgSvSP2IH+T8Xc822XTgBQTYH4UKnuKFxlqkGyhCANwhReorC7MeHlgtDn9H\/L6RYQk8EewhcDVRtKwa1dLw2wjk0NoTfmeagMG06AcM\/nCrrHeiPeTaAorVfQmEAINK5sLNmdgC69wfgUfLAS94Ttf0q6NK+sXOtN0ufZqS4VdLAMsRuTditVkWMUevQ0CMVFp1ZFgCfnUXheYe6SvM\/UvwqmJuQXu6z29aX7J1vkSGYfdgEntLifcG+wb0RXmcNOcj8uwtMF991KuYHy3ioB+B0k7Vp3sVvROUFC\/WRZl3tsqWpG3evmX9PTSVr2JhMAigPgd0AO43OWp2MXjtgNLXQzhOP12I3BloMogj9XX2r64Y+tuLjpfKpWvxY6lewjyeHjP3Yl4yCMlNe+0LFlo0VaT6E6qeqE87zcJ5r1+75pC+r743Ia0DIUC+jDC\/2cDNvssKvWDl0PmeBZFcKl0a\/HfVouri1vigUivR5zdjLb4yZjULVTvVN0GER8oMs5reT+uOXiIak4WESYWl1Mn0NlBVmM4EqrgPV6Z5w7nLh\/7M\/yYtafKTmPeA6Q2\/tt\/PS6esv4aFJFBNZ4EIb3Wyb0TaovwcBLxyNzPChuHTJ\/xf8LS5YA152k5mxBTzWFmf0MdMpEbX7wvMj4GE78cEJiDCQJKWKqm+iAXCmqtKSNpBVIH1xVTeUBwW4AOld9eeBqBfCZXNxMjwx\/CFmRQM6lZZ3yY+q2O5RJNVI7WZSSaaMprLv+5LIOeDFjaPAc5vjl\/qRn4\/f46FBLZMzFp5RpH6cf\/zWP0XnGC1krqIv+nfJLXEDueM1WFNaZsGqxaHP06wrpnoSRYzFrl2ai5ggmHukjuW46Kh1\/IZAUX+nazo6+aRwjt2j\/Ad8u4lPVTWpTygAyAK5\/BpKd9No5uZ41iQw30X5eco7bL+ENhan\/Tvm8yZXg3DQ7jvuSvUH0tfniDIw4tnQDMZPYsGsmHF8N9Mjpq7MY855xQF6aUhqWQB62sDaQYz\/drGkUNP5XO0qq2+sfW8tRH1P6Cx2om+ob1G\/w4acnrM3DmnfdX\/ob1qJVv4IMfE+i+ZvGgXZw30a2T3JQzSQTjw\/CZR1rLwUO+RYllIapH6Ps+NCdVK1D3e3CdgVY\/V9QK5dGR19Apup1omNBxbuCncC7zX9ly6yaTe4BY1QBZAKj0qCiio7FdS75VJ7fidsWrC4pKGZ\/cI2uL0K5oq+lxPqu+FYGUn1eeGi7czqa8Z1GN5UR5CgYuqWzFn8gI8Rtmu1ObeVtCfyEu9aP55qmJucbQydvK6lVhYNIqWRQMhZwvLBiYXL1qitu77RqyPsf61Nduo25VjivpDFJ93yvp6QP\/nrTj4aZ1U34ZPSECHfSaK6ptoZ6Kh7VOEEE4oWKmL9b9NXySnRdh207PIf7cvaST6k+HitLeN55BnutibEDUXFJcLHIWWCuAatC6WA3+DSCP3XS3pt9lj1Q\/5vhnri4lYi1sxanZxrezLPhuKw++0+WPtUnG+gZv6Px+4ciCNq735jTRi\/Xmf+w3vT8zkzFzqI9mB\/BLpJ+6FxdljrnnH3dSMLWKifw7SKtNYTO8QXK97YbZBtL6QdM0e+8f6Ex41FU5eVy7XZ9FANqwwRKXvZFJ7CF+jpD\/Fd0SDxfdyJjpMk3xO+w+wzxQuUC7IZ9WSPtmZkhuh\/qE1yqZVhfuqRWt+1kvq0wK3jOdMWVBe\/O2peeqR2syx\/RvZh1gq2f2bwBLdjvUX8udYSCheqEf6FhZLnmWtpGagBeI7IKDd1NxrYwG2WL+V6K30BN542CG\/xoLWTPSNLHAE+Pie\/C+IOhY8ng2f1SOViFnsrI+JkkXIQXzggB8esLM9TAnVIvURAlkhrFZAHxaQc9eglBm9licr5gZvUgt23pZKXk6dc37\/RXkQhBRNNzWnuCCEPHjxeyx9ynFQ54T7gwtul1WS72zHcS5NcRdVQ35\/Cg2A89lgiDXFYMLgu2px6D1i0roiCZ8DBokEIbttK+LappT069nXIrJsTS8leDJhbVnhrzdida3ld56jeaU7oU97iCaN9JH+u\/2ReqzaAvwYMGHz2\/2NRCP1SJ1BgJBnIM8oiC9Ad8sE9ZxbNEnDTMbnl2Nj9T4qqig68HzckMbz3EiZ8Tf1xK1ETzFJeV\/8xnnu+bUSfbIsmm4Sdyv6Ss8Ias8\/\/C5b6zt\/kZbMgb1mQYKFAmoMtJb3pW0wzOLoIcfLU\/gsys8gUqhdMTd4kIKssDZCubs5oJHzWuByFbM+jFaGx01WzI71paGX+\/0lJVTRt\/mUkhwXqdX2u6HX8GIZVBxLDtdXC1WLaoSB2y6jSZf9\/sYjD3lCK9FXCfLIBXvQUAwSr31hlURbd1LAG3P5y1pJneN9WFuNM7j37yCRdieRuhF\/Pj9ZB212Aqrp\/Hn2JnR1cJrb5YQtbzXSSvTfeWCGJyJoJHorhO1cm1AAR2qj4IxjC0yhdQwWkJD+RXaio1m7mbmdiecspNvqLsfbLusqv9ufxJm+fG1QzwsKDaBNvljBpwZhWgnRdwiYATISnM9baB4H0Mv0RdxXuP+i3E+hszv9b4j2hi9Ggg+ZubhWMv1J6EU4hik1y5mT3gSbrOjrQ0CHgAoq+lYxDV3VUausBZAgga\/M3G6LxwWNdN+GFVbzYC5jgvGyPfaZCS38TZneBYuj2+9k6VyQqD+eXXPALzdidQX7VKNhAfTLcSVT6JT1Lgab565aOzJHK7MvQatxfYMA+oM2\/xt0gsifayGhyILj+A3RdLG6nsAc33Ff9ZK64JIThajPUtDG+nWUFOL7y9+JeTXPn0osX+9MqxniAExkj\/LiWQKOYeGV4FVqLmsc8fQnkcenfanEJErWiuji5wZtWeDbInNgXZD59yyTsmK6oOT6N+WkWTL\/NlkxN0kw1FtpEAJYzukjiJbnj1mUfUgt0m8EJeVM1r7JbNNF+iRqgvPHNBL9NiKamFPhC+T\/vJzJirnSs2ggtRXDLyCf6yevRVmZaYAaMHV0U31FGLyZGLHtMoEItlN9s2haV2qH\/83AIffp00aeHgcTU\/6Oht\/J9ctAcakmBNie+NseTO9qhfdXiKLm6133tnlMdL1cyAd5FpS1hwGZVNtYzDiHQ6\/125tAo4vlIrXIrpE4Wpj2MeCU+ZvnwPPppOZO13HwcY1ITxKtbyb6fA8SIfDl\/V4W4nZqmsQDXBfDa3zRP88RTbn26KFhfx0QBJCZCAE64RjoVfT1g1rTkKenZJHqKG9S86+d+Hoz1VT5YxZlAakW9WG8QM+T5FdEtDCAjfz+SCtRX7cvaL4Jxf8dlG5b2JJzYkQ9HwQPq6ynccEsowzOon5Mi+P4zgZobHNtpB7ptWiOVqJvJgjD\/iCPXJDrBt+PtlrS6y49Ydms+H0QrkdqmwuAXeRL+ji2WlIXeN9bOgW4IoH9lUZkUyrhJOW+fb1z\/pn4CdhI1H\/nz7U3IUru3RiXuutbEVQjNRN9G8+gVrKQSgKEtnewrYUmAo11IvXQkUWmTURDfwbsVawSVwvNM2kmtpSR6+aZwZ3Nd+uXm+cyQX0U2WpivS2EPlqXyNws6cHcWLBYa7M73xkRoUdWO9U\/lMXeWXxsLBg2gzFHcLgoCwh9alqJvscSqtkHz+CcrJjLoHHJ7y9g97I5gfRDHsQgK7hrhuVZNBA3CG70K7l7qbfApsH3jVifFAZNQBh5M6pWHP4cg5Tz0g+Xz6po0OMsXrjmcreUuEl6paQkSEPrFLSJnDe2kW0EfmMWEbRi3zx18MH9FZqf5XPA1oVQMywGdHhwE27u+xy2eX+EZt8uACa+ZSvVO0NYoo8k8zxbzk2px9qZvTYlVo3U4Tw\/JmfVkeRXS+rLINiwIrC8+MwFLW\/y5aOikUuWLICcPDBWvzBxXCczFxD78NeyfvmS55LjDVOHfkz4qjTokkgt+WO8wGpKP6bQpBZLLFJX+oKTRVlAGpFa4c2nvsmcmVNhYMjva1ueWNaKcPDKi3ITH4Jx6HH6xwhwwNzgJ69DWe3yQS0izz73yAChY4NHAYH\/ZfUmCOUBGWgVIJxMGAI1js0B03AKc9FPxlqkNuHLQ5ruUyfu88xrNQmklPSl+1twjwgBXcDC4eGC9O6dXfsyQSR1ooOe3k11N5zEFryiz8ufb2+CddKM9Z0h4i3k6sKP5R74fY\/YorIK9NWEczUIAFLFxARulfV168eX\/J6zYGZscE\/v8A29qyX1j1ynLBYuAwDvtv1u+G1MTl\/+6dyfrcRN\/PWQM6YVS37xYuN8vGdI\/Qe5Y3JsZprco+\/iIeNiHy1af6HFla81eRmYWVOjBV7y5\/P7IbUR\/ZrJUXPDoJfjBxctVjyLBkJnQSB13rTqZBaqR52vnLNoI61oQ4+GmnAsjqCO2mV9Medtl\/UOD8FrRHodk5dzThSNjcBG6k0CZiiqM+W8Jf167olzV4tznFSY2vXY5le55q2SPrJk8HsTUiCeYAC0EwuN+G3Oh\/aQxEZx+NUbVxZ+SkqNtEgn1Rf5VJPDTN\/m\/U765OLb538rL\/VIbfBxAednbgkJ9WslVfUmaC218YZ6pC7gfW6IhiQASFqJZyHWSNHWSzdH1PPJKuCDhrQ\/E0X9Nb+g+kzA+uLQ6+Q8Jf0JCTq6CSbuQqY3hYs9QS5gtd4cz48TGxDVF+bJHZDDP1D49U6mlm9ZbUkIxO2I1fH3Jz\/\/CyeYKLSI3LKqUGw4pE5e2on+ICv9oGgjG4Ogm+rTQ5IyzGPgeJ4qhwHvzGApdmCSMZklZ+xWW1gY\/fG1SEnBfzip6yVbqcME9hpZGCtiLRzGfTOypLqSquB6A3QQFK9e+8oEtn7pPmF9RHinRs1FnVS9mfx3KzEzTBAmTTczd+EuAKBop\/pWyvh8f2GK6iWWULHUNuR2WQh6mf5QO9WX44\/mfysvBNzETw+4pn3QCmHx4j5EC7v+SqR46MVbKynR+JbIXm1kokvAca596jdwRXjOE8W5FqTNWJ1jtXofgHPXuSOW+6oR6e+52IN8Lxjn1MyEjdGAVfYyPSlpsNx4EfOY3O+ouR0XwR8TSitW\/7VxpTmKtq+gyfLfL8p+Cit9OzVCNYP29D6y3zyLRrusjvcsGogzpa72\/pBHWdVK+qt8T1oJYIcPXDCwWonueSK5DUX9dq9BffAFc7KT2gg2gZm2Sxth4lHAAMMkf+MLbz5mqcvt2oJ\/L\/WSPs\/7rpiCzVjdneuPO1BY5JqxvtmlYE479yj1\/MlMf0Guz3V3qMf6KCYN\/ZBAPdUTB6qI9NSmVYW7Opl+DxNvctS0wGQ3Yj2V\/51BAlECk8jn190CJEEqBIK7Rqy22+dCz6Phg0BtNSJ1gZQbutwq+WImjmjzRF3Is8YdABjDJBT8uWPxQKN2M3O1jywLaCMzV\/m4RiNSK72Wlkls4x5ToWksPbIyXRvobrk+Wc6yGGjxLcrPKO4lnuNpXvMvwQPZ24muhMeJn1wx28NghqzYidWuRC+Z3Jb9wr5I6Go90scSCZjbHXjgVm9mVkv6OAYKA6Lqgiuuwuh6GSQOqYRJybEy0BOLD5Z9y0MHA+bwgTebfrE51P0R6GgJ3shgHzU3glqikyCAElggaZkJ7JR92+XCofVI9yiDpPkZiwSLEqTz\/tr2lzgA9Fm9pLcLNc+cKX4TBRt+n0asv8pi4rSmuAzVonmrhZfqKW+CAm5hYZRnWLQlmZjZHp\/cKpvLYPDgc1gvPaBGzGVLqzPlXQmh5bHZgv4k7mS6FyL0aMnSTe0Yyo8flIHnS+ukesz3Ll6UB0FI+UCmHpqb4ebRM81kfvMvmCG7mb7CT142u5+FQp5ZecrjW6maZjDwnS9e8D4xnQCbiW4QfLKDfFjwuaCk2M8VPFzfTxsVh79y7ekHM6HPkf1KQy\/3wHkiwZOVZ\/e7QtQj\/RVvirJZ7WnuB1OG+mxoVoopWrSmqOSw48KTDzvggF\/aNG7xyZjUXrtDRs8i5n1v7oVgU\/43FhI6KFp\/0F471wEda\/97qILKeieTvJvqnZAU2Ibs6kL4oX06RgKAmd7lSjbv9YycsFXynng+vqcUUi2pT3sN6t9lI7E5dogC26nueV+XTSy1VHcoI\/XnoOa4U9Y\/8ho7v3nrrJvpRphfXpQHKPWi\/nfabuRzen4Tln2bfJ9Hckagp5eaywC6h6tyq6zr3jRuxkpI0ELNTOmcP0ctUt\/kezcoxCQGfdQu68unxy3lDWWD8nvRM5\/eSW3Dcd8poFpSP+X3bW7XIpIQTMVapC72TbjFl8RkjK3JuD+Cr+lTOmgPF1W+1Pv9WAq9ijmfel3fJQHhOpuJuttrUA\/qGEQKuJCI7x5MYHEPHJ2Ol1pJnejdjprrvggRPtfTiPUlvtsDqSGesVtkhaqI90NBBCY2z5NqJX9eSPC9pvXvzMM6WyuWPA10Vrhg20lsmhDK+3M4COUxzhLbY0xxHNcOkGgQ2m9R9lNaZfVF6ZMzAIjA5lk0WvEcnxQivX0zc4mPULPxf4rHMTHZh5aeod\/kIowTvv8uNcGY1dZs07ejRfgc1kkGnGi8kprxJOATkVrhiM2lwJ9gFT4b19hJ9a4QRAISyEdy2Ww+U13rI8L7I+B0uQY\/ALFCRKOm5g+5h0ZsuyjynSXUs2wVVAz5ic\/GAihItwCXvS\/BVG8lFvrpz9Eu63tDjjJy9gKFzADfwCt90NPXrDmU4NVFV0oDcVv2KWmlsr4eLWxNacugwiLomTZ6mbnTxxiIprfL5lK\/oAfxDMmtrz\/S\/CFUPN5f7k\/isq7naZVaiUr2Nok5B25GY0AL2kXZi9AloZuaVbwY35B73sPts2jIS5pXzCAAgMxcFE5eBrqlubGTiHI2Z0rL98JgmOkbvX9re9Pqq3iBToOIlgV6iNnMpLSrvIXk2VSO3iWLgIvIkgflb1gsaiVrsnsh6BJqMGvCW8K3\/ZVWol7F9fnBx78SXMoKfyZcW6SW3Hduwkq7Utql5iewLI5Bdc\/+CLQ8PiXFZs3ducgxfm4tUhvZRxYSZ9nA4gG8tJnY2mk+4\/kKjVBFFrvb5uIMc9q5GauOjwA7COy9voQQ35V9PCYd8vfJirmnj6ZyLkon1ROkA\/s3Yf11WZDzICA\/ifkN3iNkd+Fxi7KAOGKzltce+Y2HStWNBWLMZ6yQ9EmmLwwnr0s73IEfzT7VFeo\/eNm8dD+AOZdv0I3US+pkNDv5P8+0OLvmUMAG06z8vFC6Bvr9qyV9rJTGlSwwArAIVgODQqLMriwOwQJoJgo63P49iS8bW\/96fwVQSRgN5l+P4gK33Ih1X0u5lJEEiWpl\/cZwAttSy\/2LfofSiPW3mRT+PCyC9UhdSGGD34d+ybbcUxaT2\/DNLQ2tvmS7bTcjWQBJK8VqhvdgATG2VxTuAIyeWEKinUtzk4juj5zbWg\/23mmgBoyS7+mC4SLhdty4RYYcObEPfx6kmaivcy\/eoshvHvTRydSpi2WGexFoXiYr5pqFku58xqoqgyUImiAAK7qpOd8HpOSlQoczanbDKME+G4rqJaCubDWNPScvBihf\/zxuYLBPNzN3wh4pnzutjUUA8soXlZPr5XrsomGk0bdEqFcvFb+2Hqkts7NzQAcYOMKBLyijsr6vO4Aid28CmqseqXswMRmkXlN4uCm8VAz8S04QoMPF\/UBbpN\/DhPbHiCUR3z\/0F1KPCn8jJry7DyYSf7cDFs0QqCJmrmPagBHUNUG\/3QNisGa4FhY97sMTLeCD+onIghTWcGPJ+BiGN3khHiT+wfeQ6Dvt2Z\/E8g5Tfa6PXs+dS3+OfT3KbNDGuGiX9WbiCOGxi+IEGKVrabnHw\/PaFJ\/EM194ISfbzcwWosX+2Hbq6HAiS4eDD9qr6BtC38hFcSU4hbCA9Cqmz89UKw3\/r1wXFD6Zlp5D9vN5ga5zSI9MFNUG\/sZXI\/\/JQJRgS6w\/5Pd1+9c8XzUb1wPDRbjP\/kotUitnxguX0WybfO+mleaKWkAEsH6Ffv35qwvrvXZlklIUMDNurmB\/tPSWYwqX+Yl1f+SC0cJv1yN9U1iDHKaNvNA3iQWL\/ZqJvkmI3R38k+bf1ZIq+n0BwzCJeM+tRF\/tU0jV0rCQ2OG+wEPmG51LFiHRW8KglY116M0+aIVZ790lf53OZP5pPlXEu7Lpwj3dNhmDsZ4V8z\/3ThfFpWxqkT7fV+XkJy8DHQQOEMrwOPLDnVRvcqaX7C+42TCwYWGEW0PTWgJMZX2V50GykU81w+QSEzOyPiPSiNQ5Lipp8bvOjKLGlX3ZfMd4oJIMWAZBM1E7aCfqz0N7zm5q5jFHWm1s88j3R85dcdAfd6Lfe+P6H\/zq29Z+95fefO53f+k\/zv3eAf967vd\/6a3nfP2AV5z1tQOef\/rnDjjoxM8c8KenHXbAIWd\/5YA\/\/+l3Dnj1usN\/6S0\/\/c4B\/8b+637wS2\/e8MNffft0+cmH1o4+6H6nTBqxOjU0x625qnZsdIQHCIuiM6G9Fv6cO\/a9wtIR1k7bxU+CY9ZktpO7PfLc38SK4J1JKjFgxgQe2xs1d7l8tLxbnmmrrM7xEM8wYOk3zt8p67P2aBAeDb\/TkUUMVCQwfNRKWiCyixJIWDCen7yYZlOj5haPzPFiu7ab6XDysvGyfOWKy+WulTyr2wdNyiofnq9aVMt5qVxDr2Lu8kEdUh\/e5HXat9+aBYik6wMsTcloOE7eU1JbFhXV1y6IlP0Fvj3mJwuGN\/H3Vyai4Zf2KsN3bfvRy2e3nvpa2bb86LWzm3\/02tlNp7x29vwfv3b2gtPs5xtPfu0u\/zf\/8j37sb8c++PXzl50yotmu+mSqwd1utibwC4SugNs1p+f33ysGqm1aDZJV8XqWnK2LJhYAY69pB\/Aw7oRDdmHaS61tcWRfiXjwNfoVl0UW44p6rczBsKxY+GVtj8z0nQVZqFmdbW\/Z8Ld5fdDqJLypP35SewWqVvDhXlR7GD4FA84fFg8PMGpZvp6H4TyctrhhSd3Mj3pwQzhi6PFSP+8kc4Grb7V0hyzIq1TWFn94Jgo2ZQLplon1Tcy8GzaR037tFGjpP6DwRsGqWpFNcJnPqA0ERX62GIw0rWSutyBOvqDoRapHVTk+P32JfXRwm\/D6jGd\/v7s9RceP\/tgyBWd785uHn0S\/vrE\/emNC81rJ7UAGH9PgjUvze9BTF8pm6bzWthW9BDkAsMtmHaHEce6IUJNrMOlyTZTjOHOs0I0J+woFb0rLECol1Sf\/I7fmUsv2RSjWFhlPREu5HI9Ar01p+VjAHB7T46ae2xwbm5\/zmuDmPvP6vkLIY1YbeBl8tIwy1hR8Yd7FX0F1DbhvsDjOqnuhpNXTCeCDIk52xN7V4vq\/0L\/h33sIqFO9OciiCKT1MH36rGa8N\/hY0qks68pLbcxk7ER621ShF6yrSjxMyXf6VIatcAEl+8j9fc2HTI3GGTyx\/fPHCMQx3VWj34S9zHbO+bFs1PH\/tXsxpP+cXbjyf\/U36aOfcXs5OqXyneTq18yO3XcX8\/7fuakf5idXPPy2d4xL5qtFZ8x2xj5A5kYNPbO\/+ZCQnAOyKYHpLAxmdup3t0pDfUpcXle+LwuhiF1tQA5BJYZqSulL3Jk8+cIVo6LH1hwjSts2Hjkk5\/QTNRlaGYW1FaiN1\/iACFo0VZCyeTcmCDgKHEQRwvsxs0W70qFkxh0Vp4Qfn1JvYpe0Vwfk5b3hXktefVE77Nq7BdGALvDGTU1ql7CQG\/F+t8hNd84XviUz916YYWmCVV+8hLAapf1JAX+7EfFEBHpfgTSmeKUBIZdCaCvYbFg8HYzfQ\/wPj5vxvo1MuEoK5Rqo7m0Ua2k\/5eB5Sak+OQguLwFwcvOQxNrkT7WayG\/Of93j3YgC4ktclfdTvyU2c2n\/tvsld3DZ69of3d20ymvm11\/xBNmq0c\/eba64imz63\/4G7MzJ75m9qrp4uwNF50ye2XvhzLR+bw28tTZieVPmp046ndnt5z+lv45Zk78u9lu\/AdiUqLl87+9kICCEr80vK8g4uylFtsujn6h9U20Kf7IP0sBokQ2Zcd76WVm13rX7hOmTz73GhbN63+DQCV49dDKIXgGl5mnxAHmSWGEAHFylls70SeD0pq76gMOWLdi+AVbVxc+yfXyTuk+MTOmX0zuP9xvUfZDiCzS8T00g7yZDfmZT0lUR9RfSzfBIEKKuUoKKTTFQ2xtaFaDiGol+hIJdKUMAr3TvzAGN36ckLNFusln4I7Jc\/IbDJ5apK7wUEGkVlJPaST6jjBF4ZFT5Iz9fnsT5zO2z1\/51NnLGl\/LW8Gz23tHzlZX\/IFo5ovWfTz\/9ex99949u+W0N8nkrZcOnL1h20nzvt99367ZC8953+y21U9lcu035SxlmGEgi81RIV0SmqU0FW8lWCiWAaUe6YvIV1O9VI\/0VY5mp+cLHVol9SqJ1id6dotkF+bMcso8vWUl1khQBkiGguovb9YzPhzjys1+caZhWq9ibsuXozKJW2V1QljfvCgPklhWQl3LT17heK6Ymz0dTv3oJYf4xmN+P140x\/nm2rJfceiFsGv4dFMjsThcZKKov0eAw5vctaL+3txxtluANX9tvTLVN167OB+vj0hC4F\/KB3vsIFfb8mbbQkKUe\/P4M2d7q144O7t797zJ5wWTuZkUZu+959b8VyJ33LTVad43578SueeOq2c7GZpoSPo35a9hkBAnaMTq9nBx8i4HpZThvvWSWuW1tQ122Vw+PjHPzdVV94nYsXr8\/mjtatFqbRbRVllfIRPT1kDfHHJi8b7CuAfvhfdFAzUPpUWT+5ax8wJb4hNLs\/LFov0HS0765kG\/1U71hPhFfvLGFtQB+gZSdvZzTJIX+bygf3k2mGEbbCHwW7XKehtmlA2ImJ2+7w60MDKxyw6aWNbXecgfYHkaktnrsPzGrvPATQ4GyMu\/u53N7y1bK6kWvxVOYCl6KM3V0e5LKDbfNHag+LQLyfRxr5rtjD03\/3Ffdt1142xt5GmzF5z97vxXIvfes2O2U\/nD2W461G\/mvT9Sj9S5zp+fuz9LMdQnAkTC3k82H682S433yHN\/sxnpq90id3G\/2MRSJu0ENWcrm8wtYKr5DuScd3EcgOVc\/zvS7jRWG0JAEP\/yzJuJ2uAtg4mR4bfIxM6BN0QTJ1p4wRflZ5Qzv\/2Ux3dSvc5rOP+QhQ5nHPyrBXUQKCHKmPeNeUGtst4UIm9qJV2ZpzFdmxT34jt+ARCz2vlqCKAEPpMgSL8Dof6cP5eNTg6zevfFsS7ukR6zGOnh\/S7hg56GBaJefNrA6PPNl501Wxt5ukzQHds35L8WuXbL+OyGo353tlleNnvHjZvzX89e2fn+bKv0ZAJ59ytNQmlj3sKweXC9B\/d0PVIdv5gJHtyZv9Wi\/jjPUZ55cQ4oUYv09\/zz5TeqxSDlFKnUfyfBrtJcMT5BxU6qbxAzObguAlZhlgI6XJs3nv9+JA3lGq0tygMUJl0n1WvlJQUPF+0oq6trHIbUI72alxPuJ\/jYirmTliZ+P3rlMHAw86zvptre5\/GDiHNYHLGa9tVJDo21U9BeroUInRgkr+kwyRZaOD9X7Tv7hYNDVvxI34VGD\/fdmwh5eqy3zowNzdajodnL6l+e3bF9\/ezNl\/909tLal2ZrxafPThz9+7MTy5842ywfJMGre3feNrt7932zu+66afaaTalEmwl0TRz1e7PNZOnsFZ3vzd5y5brZm69YO3vReR+brY48bXbrMWJSCuvI\/gr817Ykcf4kkPsO8uYItcj+efCMa5GSfsJYRbScgaSgWVbX+UAjQUvAM\/4Z884gcOc7oQ0q6+1MUiLOWEweCy3HjujX2MDlfPMe9wj6Hr9fPRr+js0b7zmJW+X5yLJF2U8B5tYpm3Pyk7cffQwacQOQyOd60XiCqXXUr4j0w8n0bQw2F93sF5ELCCMzdzrNIYOr6tBVCE24GXhoTjip3Gfiu\/F7WAPVaD4tDSmOeqy2e8ZIv9naXQu9vD9Si8w7LzmBTn9DoknRtt2VL5jtjD3HpYxeMTt17Ctne6teNNtd9cLZ8898h0xMglfd8efP9lb\/5dw+x7xYjuNzmdTLnzjbSZVdGAM88\/6I5LgjdcXA+3RpNi9booN+qxGr6z1yyi2iNpYQ6U\/inljLZ7jfzwgryI8DYhv4v76qyJMr+AW0nehLwrJBUlB7jA340GRszFlXjUSP5vebo2gyQry3KPspwo9U1mf5yRFubqXspw4ITAkKJzCB+vnD0hxDh3QJjHVNusxjHksRw1yHvnqkz\/CILvFPi8NSEYPAmMjqLjC6yPbzZXICqPApC9Eqgbltzzm\/9tZvEohL9GHhvvsrsFZOj5n7qsufOLt9anneCp4nu++7V6LPaOG9iWjfo584O0MXhZG5wo77I80B3RF9pD3fi7iR6O\/5eIbk1x2VEJOykShhDW2V9e3e38UKwhry1VUywUv6KH8+4ht85kn4yd\/P+71YSyva0AXjutDcHppL+qiV6DO9Se7385O4kVjS+UXZh6yxvqwwZYSDwb84OtX5fQlksCJbeNvcfnZFVu0wjUHpGi\/C+8XNWPcoMOe7DSX1Zh\/ttJpZ7wzrY2sldTams2in2PrcTFYPi3TaZI+u97VInZQf1GiKacD6Jf3icN\/7I1CbzmRPmb1k4nOzd+24dPbuWy97wNtdt1w0u\/XMt89uGn0q1zeP1eT+CBHl\/L2ySU44d16CU\/CBeTIBiVi7KqpqpD7DMUw4kFf9Y2L11z7\/y3FMPvpgyTGlA5\/YLutrGAuSt5f2pPod\/liCm+1UC9FeGB8hE0A6yfN+Y8ZDwZOH5nJOpzhK\/pyLMkBGRg741XZZ\/Thvynit2Crrqs+vCkE7jcdyUDc0YjfTOzaseKaUlCEQovHy8IVkglbMfdXEwvAI1rRTfZ3HvbrVvV93KuwZsCdaJNYMmlyqaSJ9kS+8cKihH\/pjEBBNNu8536x07CJXhZS391fqsT4ZX7URm9nO+PPEDB68PW8f3z9fzOhGpJxboqV\/7wMRQCaNhIjx\/Ans8+K0Dw33h91TUFPOjPZMJiyCtKexJYR6VwiYqEX6FD+5bEWXmiaXLN9JPnoOxtrLzB3hIlwvqpdQWhq+D38eMARUtLGfrWzTF4eZjHASh10ZFyUQ8qEtyMYGaF5eMNVEPjIK+37HNR4LH7IvoF9fmmvSXC0dwup8pV99eQlh\/W+tpDJvNtkyNnWtL2NDiJrykq12MUJ21ygNv81rbH6zk5rdHinkRdpxDnABXGrjZ0pRNCP19YuPffrsjZecPrv7vp172e6xgaw9Pp+\/XT1TnN226snEFYTv+oFKPVYtYgH5e4YXrFlS\/xjui9\/r3QufVvJWCdFknp24MpHkZEVcJ46dTMLATep3hqhG6hiHAnO+tW6G2G4izrzrMFglysHWDDd9eWHtKLptmBtDje2v0ymXvvm+KHMkYycN0rwEJrqZuca3kQS500pMO8zx+c290HnmWj1Wx3v\/yJrOanrtWoeVdmaZT\/GIJi3pd\/tj6dPDy+UaaiW1Ce3r\/LHNUinjtEfNcUCHQnQ1n\/tlkzRX8rNNFOmiED2jce26Q2dv7H129urWZ2e3Nz4ze2X9M7NX1D8ze3ntM7OXVT8ze9nEp2cv2fBJ+\/+q\/Zzv2e+qxmdmr2l9dvamyc\/Obj\/7NbPVkaefRDAq\/1v3R1hY8hF3Nvuu5lMGsWDXInWht2Ik4Oi6OLrc+o1YV8L8GbSDxTryC65UjmX67g3LrZYGpBFaU248fCv83XqkTsj7ud7yaiZGGqi533nx5Ki+W2h5gnuRSSyLgJpncf3CiiTyy+r4QZNXfJRRc\/uGFXOgAt94LHyofhVtJvo8cNV+XwHFk7x3vEkANJqJhVJiijditc3zQUu1UaSnfEoJX5zvpQZVfF\/Lt9QoFw4NfT0mcCsx\/VahCL9htfn8gSzsG4neRcQ73P+ByMY1h\/5a4+jffGdz+W+eMHHUb09vOOq3L5046ne2Txz5O1dtOPJ3b9pw5O\/eseGo39tJcGriqN+7Z8NRv3v7+iN\/98YN8j3bb19SPeq3eo3lv7GydtTj9zsfvTches3zzKeT0Jj0VPJman\/\/yKbt2AdLRiaL6yXlW67afPkc46VM7vLcJLXvYu57KIH5zPvKLKKgrvq\/OVr47XZZX5S33tgkRuLKUGXfyLwWpF8YY2HzmZAHUsf9WJPHNcv62D0m71wOdzed6PzOYeOxcF9hjsz0dSHVycRy\/Uc0JuPh901nRx6OkAeUF+aipW4C97sfUurGS3Jm1GafD0azyr7ud6GHzZeiNSJ95CBN5M4lec8HW\/AFN64+5ImQBpAaA0kF8gkfHspYJgbRYFgrGcTed3wwhShyPZpLEYWbcyeE4cTLJC1JY327nyAOvSWaGjoeEG7EDATlldi+U4jQEgXuiY0wz1k1mN0+6gz9byfVV3kIJYJCoBF4fmIKEYTtX9UHklRLw+9mQcjzZXmCgnr8C0x213LcvPmX7Uvywhyubzy2h1ZLjUwMGjv7fakfbcZ6irSPaFcLudvUbtuJ1rAdCu8TX8pT65RUP7pNHrGV6GtY5UN8rvfbvA8lL7A0v19x+5Sn\/aYlcR8wiLEGfoZA0d4Eehny3I1YXd5J9dWkuBqRvqQRqwsp5aOED74xgCtMjvtDYXt\/pB6rkwelzmz1j4Wf5vYv+8UOLcx78cAbcv08Ywv40D1vXVnEnJ6y+XSrudtlcxNFI3zPwtAp6xu8lpbJHFuiPC\/kgOV9DLAWJKdftLl+2ddZA\/l9\/SRuxGaemf6YF2knmcz1s8k\/FLd69uliYRj0uOX8\/oK+CvK5CB3evZ\/jETphN\/p6pBue8J1zgrAKwfu1WH2xr31jvdUHQshXesyvmIWJviOPpgIaOCidIgB\/GcR7dod\/MARCPcrpqNphQbL+oUTc5V\/+pgdvLdYxHNA+Cv9gC2Wg+fJC\/16Fkij3u97d8JND0kcOt46vTxN17kHOGTR+a5T1K93CbCepXUz7EEnYR51bZceJgEMs57SXWkn1IbX+Ov2CACtLWLnWTNTygePVkUB41s9fCMEUpkg6\/zB8lC80S6jH7DceC\/adW1ltszEv9JR1+Oe+6RwGtiZGhj\/o\/S7OJ4CO4pxWhO2Rrn4M+LBiJhwwHGsx18N7wOzqkTptkAZiEtUjdVM+V\/xgCWYlk7iZqE8PMt\/lmu3C8jq6Onj004MtNPJuJXoe75ffnKl7+J7HzBH9YapChN9xRPjk73lfjrb2ojDQJvS\/LpjJe+G9h\/TAjZI60ZvSrpx0p0feIaTyWona6C01f5383wZP9VVhlVMrVsfnsyRs3CuLY95FeMwK5s+gCK2dvHNtQBxJe7\/x2LwHTF431VeEoHvJ4aX6el9K6CLMW30Okiohuix4H82njcJJBcLHDhhpNnZBP2JdVGvDtIeA5MtzrUKRTsUUWmV9T4i99RvH+qbXD4XUY\/WNWqz\/F2L5fGWQDLLEWg3nJeaZ+Oj12NwvHur9FcxbmpkPIid0bsVV+UWsGQBpWFRtXt0W6gPCaCVqBxOQ9wKZgj\/O49O9ZeYqnS71vM+2g6S+yRO8y8Ke6I1hTtqVn96Rd3nYX0giUj0JwIN9QQh2ynqdXxTC\/eX6I9vE\/DEt4r9E6gJeMBMhNHFaiT7Lm6u2obaZ8tDH8GHxMqnlDIHrCJA5X41k0Tqm36cIqUe2vtSfz5pdc4TqrhnaTqp+nCknaB7yk74MjuPEJyvZYv5QWol+ty1Mn3+98lvW\/5Xu8g+F0IuXQQ8jZDPRgnIKf99ZANcLpDRS6+vxA4NM7o8sFMRjk4Ush7W+nKL+WF\/lsdRMSMoyvfbDPGV82IIGdW3YtL2fVnKTDiUwEdD+EkfpLw7ue6rK\/PcIMQ7cnnx8hf3F9y3PLby2tYve7N0kP4btAr1nOvExJ4J3jdWtmD5MYjYeUqesO0Hbi8e1En36hQNWOh\/C31C0xGheqsXhfkpi4IuM59IL7OOizpNht3XqV3nZlqlBbfPRZfKToV9rV1vLsxQKGr5VtuZ3eM1e+zUrtub4oRCgoX4A1SN9dT4SLHlr1zzMckLP+YsPtlBgMMgKICIMl1i+vQnSiPXX5rk2tuWomNuwj\/rn6vzNfiELoJtWYq71mHQWLrIXof9KFw2\/cGPuutx9H+yDwEo6yMdlEzcsgHXStZCul36ssIkJHalN4TkfkyJNnKPhl7Yr+hWsxGxbVy97RdiyYhCPr7xYT0oXoHMQ2350LqosZX2JutDDFV23+qs9+ZpPG4WagLSLmNR9SlhLjUr6hZXfr84WCmmpUcNr8EKfXa8R\/DULkCHWl94fxsf7I5iEsFuyIPF3PdJNDzTxm2gI557UI3V7I7YlkQ+FEHyqR\/peuxDOXYNYIfEcRjmUycoS1XGUvOzLZG0m+vbGkUNP5ftarL7Fc+XzdlnfFgYPcQd8WonnbhcP1fWpP2CtkAH4Jnm8505qblobtJNxSMDmIIAQiz7nn3A848gZR5lnblu9rD+GJxnPjlnzF1pIy4jZMsCcIdDRKusLwxVc+KvK5gKfmGcAMHhDzudapEt25XagDwuUn+evgKaCBE8meaQv9sESCshd8McOwn2kDaCYaSdafDZ+i4kzOWpuggwtv++DJXA9ucXpYv4ml5oPpDkz8qsOx31vLVK35X3RB1NYAOmi4eMXdkFRF+Zz5qFUS3PFH14L++guwUXYUOZ84blKM+uW6Umfn2eTY4vD\/UxGyO8tY8ACQKSPsxdHeHeL1+bhhnJg\/E1E+o3hMYsSSL7xWLg5YMc9IRcwUo9UEk5Oa+4MH+G\/p8CeQeSjoi5tdA\/+rt8HulgfYbYBFOsXk4+kTYrXCvybb6M5SACJEN3mXJMV0zv3qDmK1YdCSK9cdLwEUa6TvyN9ZLjosLlF638ANGBNYM6GqbWHQoSAHlNztcM1L6B9vUjFURDp5503Y30z1UZ87\/1d3kM31bvCYoUJ187UH8tEp747LGqhgCKMgTgz\/TP+eznPiHmtjMFcDEHSSxWJvewEZhkesyiO75iHkycZY+Ol8OAnVszv4EfzbyKFfM8xbqJe5EEKaNFmrLf4ldmb4HvgpSPVZuDYpmn6Uh+lJB\/pAyBszrya1yp0kEjHiFSCYSeuOfLJEsF8KIWgDG1KGrG+jS6KkOqF1+2vvREP\/6vrnWw1VDzX3eChkrOPPvAZkxXTpAJrb9oXQZPWXUtSf93yvmJLldMaFU6y27uuLzQkC+HxWFUO9trXsmEbFNqWdjJ9q48PsJjjL2+IzF\/kzrMHQYQfP1xb2EBtUejzc7ReGjYem\/fQ5tJL\/TYZCA23KRv0kUs0rOBeQzikQ\/L4BcECBuanjWol829eW4l57IryyUOSj+yvxC7PmGdaXEjIX+c\/e6ikHukpgCmNWN0Nhxhc0\/kJ7GqgXwOIg2fmTMg+wf1DKWuPfPITGuX9o89tRMMfCGGSjqrnOs+y4fm3sSLc+5wLViU+i2DHBOAZWfij4bf4fSZK5l2hKc2YYdGHHsnvgzQSfa7PMc8bj2EDtaBq7RdW8o3HBj2sZllNhzzLRKlD1sFAs\/b9IlgmexWzK0Rv2VKz4X63ddslT13IwmFhd+py\/zsQhocDiX1qpTlU1iNFWMiow7WWi9opeOREvT8\/gX3QDjw098pWK+mrqe7Kn\/PhFMzlhmtJ6q+dd+sJ8Kvpgc9olfWdvFdJMZbU2eHxWFf5RbtV1teHWOh6rH\/iJ6cfO\/muigTJOqm5VgJxwXP049IG5Mw5PlD2CylMhlaifzooMc4mkLbM3O578XqhZUpo4jC5WmV9qU+4I\/VIbfAF4zKALXSyTxwu+xTV+7z\/7MADQpLXHgHwYeYV4\/+8TM77K5D0sZBJBN5P4Fi9L5zAczBO81e2A4aNtkuwJmc+PhKkHqujw8XTBpXUld418lBZvrOF93PwVCEESFQ\/rRQs7hW\/D4teCOgRFy3Hn4bQWoWxNSgmw8YYDBuo\/cLJoMZjfsNEIio8UbRlfF6ILkv1kXuoDMQ8xpgyQv+C\/QuyYHrbgBthoDdjW7DgBsgVPu1ESVm4iqMNQAOFq\/gjRRqxrjD45HlE+k7QQrUFTGgi4Y1MLWPgesx5w\/mXjySRPs0887ANq+W6EmJ+oYwtG9HCdmFWnXnHR8PvDIEkkjYMelshcKmFY8TyTuvbfUP3\/n6l4c8Pgk\/6ceUUwAPiN3tUy6DGy+GWjyYjjkb0cklNhKtrNNznKnLNynZ4aBz7SMCjNN\/fk3pTh5pyL9I28y4PPZX8Y2jCWQth7jceKeLYIKXjobveG\/m8kQwOYuHvSzommVv4QGXlz\/tIkFppPlm8Te+pfnqvXtJHeS0tkeVgocfKgnwwTCtJnTIN6QJXjDri0A3DJKdDR761SiNWP17ISiRGIsCQ4tAewJ7HrEyMqP+UQMAAzLA8SIuYqsOFHB5Hzx5v8rKvmM6JvmIejWhJnRA+bFbpTqrvoVIn2Ocp7bK+lVVeAiGBeeZhe\/56WGAw5avJkoekeudnkUY09Bc2kGPNTHi6+Jyo9KA0UiMyH5DOipH1IQUdFuu7fE+pR5JAHpiv6hKt6hBwFtdu3RyXY942r9ChqF8hASqnIHwwtFZU3\/T7CM1wau4Me2ixT1g3jghpXuoUx4BJ7MbRvetcA7XHtKx3jcfycEP\/kGHh6GTm5k40PBQe56OHXmPzYsQsDJpjV2P9Ok9sJueb83\/mAS\/Q7H4hkH9ds2heFHnHEIYoPlau3+0jRYiyey0UalNoYwYCOSI7eOuRusxH72WxjOf6ET1SxDVzu4zx4O\/BZSm2+EAivnLuPb4\/PAfAENHO7ngmO4g9umX4fWql4f8NF+w5INAcJzgCAyZdDklhhc\/VjzPcOnp0PdQ5\/4dV1h1dOKQnjccGr2Q8PHyVDSPD\/xQeB9KI+kw\/sfwLq5bmAgiuCP\/KsApGgjWJviZslyktKG2O1vm++ioPi\/QtMMNrEtPzEYq+qce64au6RFtFOpLPI93Mk8uJeejwz\/VIn+vNS6vlHjpc9M8i1HkPfB8l27rVBaPuZmI6S+ra0BqjOqyb6nt8vIRx4xa2Rti8rB7r8\/qmtFsooKH1ABIvMHWI25cbt\/7cLPadst62duRpj7hYyc8slIV1co3H8tsg82Xt2pf9im3cPHcck7RV1tvDPBxg9NC8ZhOTq6T+OzxftaRWeRPb7j\/8MT7nxTcTdV1YVmbNUtuMOjzHI0FqRw8NN6FxdW4ImqaZuCAP3SByxQwyoR2BeiMePsL7yOxXix556SREmqbnqHn7RShuAlZduq9vbeU6Q+bTSmyy+Ae0OSC6UBDeKuRcjJF83ASp5dy4cOMznmurrNbvC7TyqBLbeEzNazw26MYbse6Tk3mpldT3w0g15jGTmcJ9vw\/QNiZ1CH8blDaCDUJYIRyBWjPR12xcY1NPjZL6aH61ty\/K9CtfHkkC1thPQp6JxAPi4RdAl9OIAaDMn8BYL0xUjhVa3KAczua4h16e\/41HgkiFWM4Xtm6Sff8QBBLjEPPYRq5vI1Dnjyet5OmRwmfRSc3t1Jv7\/aBsCt8\/WlYmcdCSFmG8gL1fSBGxUNjzPDKtmgckjVgfk288Ft4wA6iTmmvCB4\/g30pRftCs2a1+\/aQ7GrqRqBmZsP7hu7RRq2zmDcpqpH\/iTSW3KvcbepNnDF8yJjbF+eFLfiQJBQuk2ey12hQSWtRjv\/NmHs+QOmEACs4l6ccKxCKJ55p9PZKknqiXMD7CbIVbnPs9l6olHYdWVdh2BZG0UjA5vcKoldSp4X71SE2E9eeWiogxML8M1DYV0PeEwa\/8ZjMcjwGanUGNx8KNwYf2pHtCeByRYo+E8fu6xlbXhL5JLRqW9p5+n+Dl9Dl+ERgnPVBetG+srp1rkKX+J3zBbILUKenjwnM8UqR9ynN\/k5JGHxOQKGy\/lHD44\/kUkt+gjsFycawZN\/gB6MzrPQjnHilSK6luyODCOwzzuuRugVACuGDLc5xhhdUj1fO0Pf4cFis91+K1XR46mAkbmtIWgqqm85zZ1aK1gBZKg7JgurjEvH5Zjyqh2mVQZUe4WX9kfkWIHBup08N0kDWdl842ArZA2m6ED5zNp43yCXmabHuzR7SvY5N0aZWLfa2w\/y3R4KX5GvyRIrQJ8X2AuF4xMX0AK96zlNBvEsX35XmxXtvnobLtUO4J+Z8eSZIHZrCB\/SZX7Peplyy7ZbCAz+t+UY+G\/ipMK7E5RBpNA\/q16NWS\/sQ8hdBvGDB8ZHg+hAbtgDwGmdJsrv54N0UU+WMfFdKKbbVQ\/sbkwbhAQSNH94nk\/RHZ1066eX5FPdJrvUns98N0oZok3C9kipTgTqKv97Qs5BXzg8Pm+4bntQp9JIk01A6ejzwDR75HNVXoCoSbCwCtY79apL8W3red9LZ1zCNNCDA2Yj2Pb9r77m1HmbQOfixXfGJhonKv\/YYACEGpMK3kF\/NayS5+Th4Hc0kYNOV8LP4bXFN3L1StNRM9NQjH768Ra4\/+yeFxjxoBODDInGMVRJu2U3NpuPoh0J1OVsyuUKu6lfK6EMoYNoqet1+irw7TRraAXV3gK53khUXDn+M78onkFS0QYO489rzzG1M\/3LKxPPTUjSv1KyDxa8T6OK9lGVytst5NxLYurBbzIYjhZp+p2oHVQWFDiFSyfrBlA6ViifPlr+HhlAaN0vMpJbo2RHOspLWSrngtjC+bb3mDVeYDXv4cUsXG2FgxB7OF\/B4Gy3A\/LJ5Oqm\/I0wjT1qWbmdvzfjobcQhhh3kIyRweUoHn6LKTlslNoCWYzKxkrKTTY4Vr1+coSGzfI1u\/G5rOaPFqpA7tn\/dIoX69OZ8qcQUJQoXjJcRFSwQ61jf49FNYSug35xfe9HCViuGvUfdKmVyrrP6rk+piu2xa7bK6VVyARL0EuJ83+W13RrWNY1l08gtmflDZoKB5uTQfj5TU1vK5nNtR9MKttWll4U7Sd+2yjrtl9V\/TmX7ew4kFxz\/tpPPJ+nxJode04lKl5l72yfvJXgD1uABm\/zzOtN4a+rm4dXkr0D3bn4TnQzaUhv9tZtzcyvhiYWU\/FhAWhotPWJhG6BEv4FW3HFO4ktI\/CheaifpMu6wO7aTmuWd8d36SHBHqm4DV0ZvZtdJ8DqxaSa8O\/WMZmBYx1Q3TRoT8m4m+ysEMne87RwJfK83Hy7LZmuD5GOyfh2ANOC5kito\/06voe6497aDZi49fJtdNwb4NupiXY1F4c9KWxSnpIF8v6X5XBO6Xxcj3T\/bPylkXQmgAcsvfv1gosWrJ57E+87rTD5J9Lz5h2ex1px88O1nRV\/Db8n02x4Tx85RapM7I+\/f2mczla+slPebHhit0mBecwzojfRi6GeLnWhetz9RJoK8Zq1aeM5p3MVHUnwzPiaxFqZQLL3Sc219sJmolcODzVy+lS4aUQj7qRHrv7mcLD1gjeTn5IAMtMmC48PtNFF17k2A\/jmEV9QOsf06H5OEFubTJTeRJ+Y48ogTFgsGAOdXJzG5MqPA8D5VMjZrn9DL91W5mjsOVwEzceow5t52af6XMr5Oa\/+tmejsEfe1UH0fgbUN00NOpW\/YTOESK1WN9jdQFO07seqzPx\/9vxmqHLGJ7TFT1RW+Whp\/TyG3jeOEkSjS7FX1lp6w\/QYVQJ9Xv2DhuJnGNYGbcuLJwUq+iPzE9vmxeuedDJUTQ8xOYd9bNzG56QrFPPV5ySEiDxARvOuSWF6y0vPuFuYzr5s+DcM98FprSbr\/7qkHHxL3JlpMO+i2KcPKfP6aE+ts8mZgP84dVJpOVZz++majLQp\/Vmzb59pX0x2mX1Q7hQ\/bULAFKp15S9TCtwMbgqOUKxB9sacZLNYO+m5oWmpEJdOUpB0n\/Y+lcn+nrcDs6md7Yraj3hpxOXuqRPh\/NKnWqidopRfCp+UOf2+U50nl+YsROLEotfQmmG4x3UDuNmc7nHOMi9GfkfwsmjW5qPtPN9OVX\/\/ig2XZZtZyPeMvlJy8TLd1O9L2dVJ\/bTdV787n8B1NoyFYPWpL6TaLO0VxDAIKdHjRkx8p8Mj1JK8W6G75\/xojUj0dqov+DTgmEaVC\/ODYTfeFCzKS\/cNIMsKj+IVnTeT6UrerrdAOThgHZpUdsjqMo7I\/kBvbNjSOeLl0cQhK7cCDgt1AQEZ7nQZLHdTP9d93UHN9JzZ3cG\/fLv5JnLOvrZsbMj8FpQwTHtc2MW96qXqYvbJTVm8KTwcvFYmNrnK2JSIzgfDoJODy5bzHSzWy9Lx0N+D2sFUuTq\/7Y9jq2Wts97z6Pthyb6g\/2KuZqrgN\/jubaLLaQ5W9cWfgpNdI+tsFiy790Quhmpjw1ql4SnuvBEsA3oW\/KRhqMCLTP\/bLAhFpYxkHRkjV4wVrLp5X8vr7uGHGkE90QeeXdsZpzXX6hpVq0dbnhQ2SAwdsbruaYLHweBjG8Zp0ISsSQEF7n96kWh7\/ivyd\/mDfFZFWP9B6tQn8WASiCVupmWlqSSnCDgU67ylTf1MnMym66Z4SSIg2\/+HBdouXKOvPX1kzMx9DcYgZG+mt8RuSYiXjpicuYiF+Uz0pq1Q1nHEyeXeCgaCm0fSNSO+jgwGdwbBMklFSI63O8dmTZ73czfSaax5vkXM+GXL6eoE9v1PxrJ9U\/apf1nfb+7PUSXOtmZl031f8+MnLAg\/ZMAfhIvXZg1vKO7QI03E8HQXjnU0Y+O5EnlAfsE6aV2CzMUt8aRuGrK5Y8x\/OO+\/1scFUKavoN137hhJVc\/NzwwXgispE5IjI0BZ0HbKR07mH300ZBBYqcN1LjEshwUeVmYm7xEVR+c1DI304Ysweg5IHIGaUDn9ir6E92U3MZ98Lk4HpYgLqpWd9J9bv94nTqkUNP3Thm3jczrt77kyNsf2P8YQAG3m\/lWglmUVgu5l9xiWqn+j7RtNHwS\/3v1iJ9RDOxJYXVkn4398SztfvpV3LsVMVsqgUtXoiQMunrkboBF0UaYKe6581GJq977j3P\/7TuCLVsZrzwwalR89+nHObqqCtLVC\/TH6eXENqaRYoBzr13M72xVzHvKh\/24BSFoPkG+bDtVN\/toa9YGPjG+Mj9RTzHnDEorbSg9edonMLxJ+8zY7IvUeG+vxAiIPOyvlTMwODhOd9lHrijFulP5s0mNhttnGvsjDSjwp\/5goU539dqKXsudbrHEIcvv5XoO\/M5vvsrsC8yiAk8iXnsJm6nrG9vl03SyebzT7Vi9YbpMXM3\/ZTgdaZ\/b79DvVDmzr9OOjrSrU++j\/RPGpG6h0opJp2vkeVfj1BzoH3HGWauYaFb7WiDOI4AI5pG0iOR\/h6f0xybNiHeXMTiYSHxYATapkyPmTv8NU+NmRvyTd7amXl1LzPHdVJ9L\/fvUyu9itnSrRT+K894cX8l35JUxo5fhEvqh34\/oLBew7KQQ+Lgewh7ocDfWzv+XD51GbZfEcx9pKZDzD3H2HekJsLsxy+EVCN1TP7BMfE6qbmlevSBfYYIqd\/N5kq9\/GZ9EuFCmvfgaiV1hkUm9V\/aDh\/F7rdPyWlf95KlJ+0DFSK03Uxv834t\/9IpsZvqr4TAEi8sYKCLXLRYNlnho7nBUCupn4pp665TuLnKeheDkDYejUhl7Me\/zUj3oYO1kqpuWY3mExoaoRdyJXdSBCKTPNFV34O5Hg2fwjl5PpInzhMiFC2dkBR9ROpKSa0E2qoRqc4gtk7Lw6yWd1N9h38uaOZupjud1Myr+b6\/Uh0QhLTcZfp2vxDX46V\/0qvM18JYKeF5XB351WEAlc2XrIbvjufD+UKNzWbLYOdctMe8oDWZNOEKKlFnm\/Odl\/QGTWNznfP3tQiXufYpiEcX8f3cC5vzj2GqyAM32Nf6vw+MnRFgRa9i1nPe\/sTNzI2kgPzC0S4XDt280iyfqujPkS\/kM6K7rqRx3gCsx\/oWz67p9rmvX43VL1Wz\/F1EQcl1oyXpUCHXU9Lv5hqcGXgqzCaNWM2wqIm1U9SvkA6FsdoGiTrH+JJK8vahpYMGb5fNLXP3AZhi\/gIocYZI3+XbvIJMmhotfG1mvHAknRb4TIoNUn1kJzN3eY3M5Otl+uQwbXN\/pB4Nv0Ush+Bd9rVwUFkl8Em3oLuA586QXgmhMCFvkvcXr4CqGMGay5vSZAMYQxtWDPXRXI9ZcdCzO0Nc65zprE4L960WzVt5sGFpXH\/fAZVCtPxkErGfW41v8yYTA8X7ROGLYsJT6JA\/177krCOe\/qRexRzFJBQT0WqWuycz871OdJD4sgha75ITbboFE7iTmsvgNpbUT6SlcbkffBJYi9SmUJtJd4hg0XEuRp9gr5no17cSfSOMmuQbW4m+gQFGD6mNh1lkEZqQNJ0lCrSTlkg8QPuwsguSN\/\/82MRFCYAvkquO1Q6fxuGanSV0kaR4UvPcyYq+FROcwW9brc51EmQB6GU66yOW3DPrZOaLUOj4\/fZHxPyP9NX++fnNxjz0LX5BcdDcvkvFPUHqkDsdLVc7eY3OMdxr2MaWQGIzUZvmmdL9klh9eR4a\/JgSa7qplpiFe5jO+tawaqM9vuz322V9Q960kVxmpu8mnxqeOyRB62vfku63UCGwlV+x2UTr30+oG5OmVzGX8hsMYBYBfD58z3A\/aGy5pr4Gjawf6\/vTkhJhUjGo+NdODPUP884RD2MG9rWw3KMznRF6DnuiN6wNAlIQ2gPuh097ZsycQ\/S1Whr6W65VglMl\/TY5d6ROCNNvITKLBbAZ6x10GvTfyzGJej\/mOPfOuWyBhIW5AsEM3SJPDUtWIDwHxAPdzBaicDzH9DIAInMBuf2RPAFh+O7Jbvj9qiV1sh8bXA+T3scavEgddS6txLnEoovVxlnX6B3BfWFcuiqu\/ru1BTd7KpbHjEBvMqg2WMy94lzHBLvv8FjeR+6bSANodwA3eB4o5yve7iO90nKDSpXggbNZLLW6NiSE35uc9Q39O53MRDJpMZftwNtKjtfvEwZoIFjPl5uJhnMVQUgrMf88M2biqbHCd89ZbheAtTlOpVqktqHN\/LNqxHN+nI\/ASw\/dRN\/KBPZ0Me2yuRQoZDNWVXeeFaSROB\/PDFRaqO2BUHoNDEijFs\/1FUI2ezN5xdBfTI9hfeiRsAukVEIFZZlsFhwxx9nN7\/r\/Ezcgz+zNalnIM\/3VQw\/d058eJCzi7XLQ\/iZ8r4m+3vuv+diHpH+Ke2Kaq5E63lk4885HmhNAR7gvmGoZyznXTjT8iH53uO9jQtAArHDz8riuARUR1XDfiaJ5NRMkH2ySyGO8Zz6vGun3eEhg3090UVWE\/GDex5EXw365RmcLCTW4vYrZyu8wyJ3V8B16EfF9u6yPmKyYSyYrZiuYbz5D0xDwCRcOJlh4bV7Iy\/Yy885OqtdtXlW4ia7x\/jsx\/1OznntAS5PS6caFl9WLhRfOBbz0p646VXK80\/ztc8m1krqLFBR1riwumNhYAU0XYT2z8pTHdxPzokYy\/OpGrIWVREzb1Bwf5kIbif7c1mMKN7bL5rTJzPzbIA4tACZhBNu9r3s5Dznjdll\/b7JiLpqsmAuasZ0Q561Y8jTMam\/JWG2sJ2r7ye5Yi3S\/JWn+3UJu0N+vpE71+zHRxFwO+mghLAhYd\/kgFQoBBg5cAL8vJn8j0Vt9ENLvi9UBvxaQzvDcj2pxhHZXz+T6zLik+e0QtPl98eVaib4oz6rIJpo6Z+4SyIFZ0pvaTvve0YlsTpW8YLu850thIensR6tQpFU2H8WM9UGqXsVsDov9Sb1ccfIyGbD4QpeftAzOJiEMABGGFma1Rhu2y3rKa3w0xGRm3tJN9Rntsr6Hcwvgww60S8m7evQY0k5sFwZfpMAg9JjcaqQ2X0Y+t6heAqiD5+eKGO4SJpNE3yNtV0rD76JIgq71cg2x\/nfSQb7oweHM+xFVrtGVMO5iAZZIsgWW3NbN9HHdzPyzr+LBVO5lZjuFF9yvuEqOspcgm39G\/BYaPqScocill5mrfP64l+kdtE313y8krWQwqk7GQ6K3eyw+zynUwtzHoNiHbw07z\/KTdJGklc6bvy9cbDlwke\/nFevegwkKeliFlVkCIjnTBG1GuV+476ByL\/\/AB9G+1IqWUof9+yZ2pA7vf+8hlbnzSS1pjhMpL5VvP+XxndQIKITBy4uhvC80uYmw8gJDLeuahF\/pB3YrgdvLfKlXKQgksiedFdU3uqm+gsHKvUFCxwQCzuncjO02Wqw\/v\/WYpdX1y60f2Ur06ZilDsQ\/i1aAmJ1BXCv1te9paNlGpC+BV4xgmfW99XfkHGV9UyPWt0Ocb4s67ARwgUTxzyn1PH9NYaZeVG9w6Ked3vqQOIRrLub+Ph+8NFbE4R8o\/Pr0qH73xpWFw2gZy7kI6jUifW+YCnTBpxvXugg4cvbRS59BZNo\/b87dSuw1LySOHmhTvqabzb73OQglzyXU1iwWFNGE53Mtd\/ZIK7G5ANg8ltOJku2WGI4v\/i+ppZL6Qbjvo1ImRvQH9wg0uAQ4ec5wX5p3kzbJN5OSaiMh256fNurGhSeT5vARbUHjlPWd3vTDPCMvmM8h+1ahtZE9YYxe1sdLdTfVHQat889uG0SAjnnL74fmvlCpxOr6fCUW1kAv0yW4jMV\/ljSNvRaeB0G7Tlmv7lXUm6gJ5hg0F+V83czQFnUJiDJpHeNSUNV06TNakfmrq350kFgnExX9BzwHiQCXrC+GyW7RVvpm23bEMn0y8ZtxQYI3MgESfZGU0SVCYn7PNT8+iPv5lNwnRRipeVcnNafyTJnsEvQB6DFm88wQ8k+Omm\/kI7Ecy\/MJmTKddXD7elcdFkqrrD\/BM\/QmdSc1Pz51L9HdWqz\/17tQ4SbuRqQv6bdjKRZe6Is3+N5yiakL8pqSNOcgl4trog49hPhSV90qqwtCQBIbz0UQcMX5QclHlcDeNzlqduYnEAO3l5k7wuikrRBx9ZfBvvzfrnzDe0T3wiZkXvvWojnuIvKB+dXRv7h6vHCr0HUl\/WKCKx7X263ojetK6tl81ymbv904XvjC1Kh+G9BA+Imhr8XPZGDw4jAPw651wPp6FTPeSc1uMT8dBSrnbpf1fZ2yPnOyYt66dXx+wfzaww6Q4BzaQO7DVUrVIv09\/ua5EkUmEMYiAwlBPdYfopqJZm1ozmpJfdgSoJu7OIbcLOkeGaBFtYx+xzxzm5qzDdRp0SK5WhuRnhfIQmZWmWf2KuZ9nVRPMKg51uZY7USmXUk300fwu\/4YItxYAUxknhHX6CO2QE+7WeF\/ZlYu\/ZzPx5PmCt9BLzMz9JEOr8OLpOSS+S1J\/WYtvzm0XrWkzgy1sCiXnBWIABLyAb3+WPQwy1xjcRSLRbvN\/21bMaavy6O\/HhUCVK+V6E08hLzpzEOrFoc\/EO7PQMtrajZA62is9blUBH+3AxyraN\/U3OWJ2fDbyAcOov6U1ToyHwnP56UemddOjpq7fJS5m+mTPX\/WRKRWcI3iz9oJ2yAKvCEaPqhXMS0mWi8zuzuZEUZMutP3UnNUN9O7GOSirUbtxIVGt1PR35msLAxkoKoGuhyOY+MeN0TPxBx9HgOGCYZvh4lei5RtbBbrM68mmBWbz2IeMlGAQZJPphywmZjDhcgvVvcwwerx8Fu5H0xkFgBSOb5O2k2ImwZpSS9To4UXYlV0U73DxQfkOu0Co3cAaDnpmwf9Flq5WzHrsRxkn7I+k1Qh7kQn1RfzPK3fLGgpKZin5ribmQbnFSto1FxdW6BxOhH2QVrYL9a+zxbWhUw2p4Ul0Jboq\/Zo8B0NvzSfVmJjkeZaQl5yZKI4fATXP0\/5eMxCrPu0P48a4YEODgaIaTcvGMBAAm6Xn2xzWnUOy9w\/xjMveC1tfV\/x3xDpPjhA+0p+M9G3Mnjmn1HO+Q7I0Hhx+Eetsun7MOR0+SwMWIimC2qMp1cue\/bUqDXfu5XCe3uZvp5rwHT0Exe4ZSczH8m37QjFD7ZGrF\/HAuiBLAwcWoTig9citVM0amL+DdOc9iAcRyrHBo\/Mc4nuO1\/4SPLLUokUq59aJk7VXnPYIb9GJ0OpYIrUFfwmPZD9RPCLBrloAmqHHbAwhpkcfg8CgtRcYxc+q5HdRL64k9mo9wWrCmbjaKEfoYUAXfxzd4\/OTJ31aCmKJTqZPjaI\/t+2YcVcWsqL5MtzLUn9xnsL2+OA7vN4eD\/G8mkipOqx1DkFZIth1GVhLAR3qVUeHHyVMVx6FLFy1CL1Lwyi\/MN0L\/WufOS3XlKn5eGSbNM2knhVPm0ExBBMqp9MVvvqu31DNImcJup6m+edf04xHR0FayjUgKJ1eQGSwnKk717ADW87dm6gsRHEaToeKS+QgHczs4GXhqbpm5WZuaSTmvfn\/WIv+FWY0b3MrCI9AVaayimeo\/89MemK6h\/wu5jAaFRfTojpKfcdq9uqJXVFL136DLSnxAciNS245FTfV4\/UNCkgb6oC5sDXpZGYnCfoLcz7k2dcHnpqNx7+k5kxs4WijKnRwhsWYpnAR+9m+gssXs5FEF+Uhbub6ROJS4T7ox3zAShZ5CPz2nC\/ZllLOxisDtyyvAZE6tH8lqR+s3XTesq3YyFSH1akuVjEDkggwvO5stQ9MhiMU97vRFA4gfQ7Ig4Y95MVc++GFfNZMh+RIs2XU3PToCieXenmd7mfKA79O5M330mAzU22PfquSkWRw7d67VstqhH\/Pfm\/Qeb4XDG7mdcqtFpS7+fF8\/DxW\/LEeEgrUn9vNd7cSwQi6ZkcCf50UvMlXpSLntoKnMzc0kn1507LlTzmpRarN5PH5VmIeR4N\/5P1gdXlVovZFFWttPRZcGdRBrd5VeGCkIDAYZyvqEXqJAJ8mKO2ObXaRaCmFqmL6\/F8xpF6Yt6\/dXXhcia77QhoXmuthn7OWkAn9Xj4E\/j2F65xEMlyYV4FUl4IwnUy84NeRe\/sR7lXU3Gld\/geTggZCjE93eLNZJGxM4DWqBWrL\/LeeU8851quCV5IH5zfxCoJaGFrJXWOXxz7ll5uQiL06hJLLqdc+lVaOZMe7HR+f\/4vRSJlvXVQ\/vwRJZhoeW3K\/61fpTaE+4IEapXVtXn0Dpv1nfdMG7XKQ8Kk4CcSLVDwhX1Npm2TorcPWkAk8hzNv4aJ0vC7\/OQVDl9naoGh3bzSvK+bFt4AzpfPmBgMahYWCciU9TZ+Dx+4WzEbmCwEqJhonK9b0ZUwkDNISEP5Ag60ES+afDF0t0w6fNzpUTM9M252gmNmoQDNdPXx87WFF3xKD0mlK0CrbD7rQSHkh\/PQSC8ev+0agF8zNSrliOu5fo5pJupW3qszR4V6h4m4L\/ZONHcvM6cRjMIiEovEuhInnrlc\/0G9uEzRlpPcMZ9z70TJORbk2\/Ro4c2bVhbe4wNYwE+ZeG4S7wIg5H+r35J0wLu3aTbd9PsSeJo\/jmxDgDyzi6SVIEbMjVEmvWj7SE+GwVBKSluJvjRvVXitDRl8eP5HlNRK6rN2xZ\/\/8HhpvYq+G2xuuH+1qJL8asWG9uIBhMXqXuCy8maSj1CH4H7yfoOCGWyysMRzHFvrjtb\/7icbL71atDlBgiiY0mgGtlaiawRh8AM7qXnXxpUmmho1n6G2tllW\/4JWEZchsS8JeCWBJf87CwkLA60ubUTWPNeTtnVSTF79PTSw3\/eWMw55Iqs35jOmHn4vtc8AShqJebUEshL9d62yfnGrpP68Aw3s+LLfB2nFpLTlh\/p51Xj4Zf19o+G\/IVjTSdWzpeCBtNzIc3+VQXvTWTZwJ9eJWVzRxXaqL2Qgg\/mGkvf60w8eVBgwULqpeauHTXrIYa9iLqPvLhOZCqaNY4VS0y+gJVOATsi\/g+lxXC9LTkdHSdwXMacr5k4AFf53fOwj\/+75TasU5vznkJnFj6VqSa3038\/tp98h1uCAMWVNaZtq87IhGv4bp3Hn7cv4sPiDuXYujxiZGFlC7nCPWkl\/k9WirT31Ui8uGegvMJl5WPlQPYJvHZpIaLtOqnf6VdO1SbkkT3rGJqtypK5kArAvDZwxw3wOtBpZ3qn1RSFss1Qy7liZYM5UDqWd6q8wANiX84vWzfQR+4utFqz0cTY404hVB+2K6cjEvnw11UXm5e1Uf7CdqqObsT6jWVYXNGJ1tw+Ioa1AfRGc2v4ju\/F\/PsNC8LlaFjT+xgTO78u9YbIL+snGDO5olfWmZqJ\/1E71D9Gyk5XhF4xgDaw+8Dcmlus\/ImILgwfPTSyrkulrwb0JjJrdTK\/murxLIICOAf2D6NghATg3ubgPIaV3wT+odzkPz65XMTfSsI3PWYhaA5B3bKTLaiXVD6ASmJRiBaeFGYu8+2bQAHxuX9Ue5F9LXKdi7qrlUlzUUA9SThKFz8wtj6imeazYrbK+WIIFucnoVjjpS+sFU6cZ6\/PtSxnwQDJzV56mBG3UiPQWH+Wb0762DhaBHmZvK2U9try\/TFKgephVkhIIBhBgiPyDd3hXmkKLSFFDqk4V7eyaWKFdyMf6ffYlzl\/t+JWa1dlXWBGM65TNW7pl\/QU0cTNRhwPGoFFcPdJfgQ6WMr9GpD9HmxUGM5SzgC5qbCX9Kf5PhBxyffaXz\/ks1p9i33qiPs1xHM95OB+snTB+gIbDjCXl1Iz1d0FZ9SqFQ9HQXB+5ZD+YXZpkjxz93qSV6HdPVswd3DsTjQWmleiij3JLcQqN13OmsIwvh+5CeB4cyyJC72kgu3xOD18HR523MVFtI7d5NETrmNh+TDmA0R7snFiDonByaSXGiTtmfmzh8MJvt8v68kGmtFNC\/YKWh1WkRDDWe1QOsZHD7VXMzkZxfkCCQZLPmfkH6PwEoY0JpR6bd4WTk9RMByZCt\/KtWXMoKZQ9IppsrlXoTpgaiO7yspm4YjLleJIoK8M88y+KewIr3IjVMXxv0VRm0g06lyYxZ5931P1rYEWtbj3W0oi7H+3NPacHKpjB8FuFn2EVhCb5zyKkpPwEFrBHNH+B3h8B5NPNzDTvgOfIeOik+gwf7CPN5QOVMpZciii\/sAOY4R2wkHg+MCLsM4FmDbctgQ+PVGP11yGWmn9lwc51y0RoMDAorcTG51VXptnfP9av8QHN\/P5i5ueakT8sgvnqIIwDL9J3AfRSBZWUmXsHmTiuXcgeSfUzK8+mYGG7DyR47VsrzdXFEnwatOqyCeY1shOQ1hgcKw8w2TOdhMAxjWnJAGLyoq2ZuOceNfSsXqYvt36qke87ZcG7PhA+JJpoTXIdzoQW4D3AiqnRwk9bsT5DeK9i9VMCb81ETzZjfXEj1psbsd7aiNX1wDUpesBtwPRtJnp3Pdb3zYyZO+uxPqWTLX3W9Hihwjvit\/AXG7G+rxnr3Y1Y3dqI1cWNWF1Wj9UNlFUSOGMRbMSaaHW3XlLr5fdL+sx2Wf9kctT8BIQUpYv0GuZ9SKT6fmpgLwA8OqnteM\/kdOm29tqRp\/0+TCe4QsRUeH+ObXNg5VgrUWczgWTxj9QKPquVVGeQhcdksuAN9Xx\/fD1SG0LzWIKdQcCrv19xmRqUVmJzjKk3eCvAS8gwmt8fLHh75LkD04o\/N6HNRj3W\/ZwsGxNMwvaxauXJvuqxqtrv9pxoomFzq5gcE83vUyOVRKm+1xfQOzjj1KAXJmYTq3Gk\/0iCbMfZAdEqa2lNifk\/OWY+vXHcjE6OFj5FFJHPe5n+0MyYOYG6V9Bd1je2HFZoTQAfzYA\/+IEIhQYzY+aajSvNrQ1HTwoYo1XW38b\/Y\/FAO+CvdlJ9fSPSnyRtgdaAWhZiARvMGj6I46fHzftppLX5mMILwUTXS\/oTs\/U\/lJQU+02Pm7\/g\/zPj+oOkizDZmdxgvCEGwCckqNSM1TeI7OMj8+yYPBKkS+dSgDzLLccU7pgaNdvIy8+7sfspmPnWDLaLYq+iN6\/9ztN+n7zp9Cgc0+a4RtmmE0GiTVb0V2fGzSh5dT4DKUeAjXOIVTWiDoUidyF3ykbS1Un+9wlsMWlDjW21v3pDeJ1Irai\/Zt2x+ef0UWZau4T7t9cIeeN2KvHC\/V284Zr9jZc8ZMIE7o3ayhReMiuhaK2K2U1rinBfyLXDiRhuEiF0rT1CIZIqkMgAlGF9X0vQhpDf89HE\/MYAxD+pR+rv8X\/4nXZZXwngAI1H2RcD1K\/yzVi187m6c4rPJLB1M+Y5VsLUqLkjn4N8IHLY24b+H9FtD2648Fjzcm8iNkvqH9GYBJg6mTkc1FQvVX9OszGKENiHgdtLCx+uZUslgENsAfCHPz8uA6CKkK4mLINspMMv3Thm3ukL6OlZNTVqjmZBwNXopvo4SgApEdzgG4hV9B910qXiQ\/ZWL33Gmm\/o3zns0PnNrx+I0JiNQQ6aSgKDmb4wX8AAxqCd6it8gI7ySV8WSXDN+9VQNqHB67G6cBCYB20PvVI4PiECDLWwg2CeHxIQIAulleS8vs44GX51eAzZBca9N\/XFfbOLQJ\/\/7GETVvFGrLdQiI6fSMkanMH5yiF5+GV9WzgRwxuXBxYEKLx44L5f8dC+3UzfGxZX1yPdkAc3YAJPjZr7mrH5ciPWl7iI5X1oGTku1h8CjBHuL7C+RMnKLr9fUs8mysn1sfUq5qYwbfFApbpi+G2XHL\/0+nrSrxg6lt+eGjV3Y3HIPiXzt9Qi8\/9mbFLqeJuxSrFqmon+zgXHFu5pxrpD1LqTmQ9QsYR2Bjy\/aeXSPsCAheriY5e+4MTvD\/0uKRHBFEfqX8jhdlJ93QVrCjd4hspWoqtEq6uRZVmcGjVfXHeUHej1RC3H\/KRonwCSfBbr715w7NKr4Z32v\/dAhTQemQEmnXNTzqcTpf++HqsfurJIeVdoTGue2i4UkKxzHFst0rVaSR85yCpjsz7rXApMijpyWlgAQgMi5LUBPaX95hBeF5+SQ9wxiSfHzEcbsfpBM9HH9iq6yjU+7BNYMLL7wfOLyeI057wb5m8eZi2a31EdQRvlfQ7ZN8jVDTJ\/\/MZxtUhfRddCtK\/4zUXVL2KoRWokbxG4v4\/ie2pwe5m+yqeaJivmekoe\/fFeyJPmP9ubwPnMOS2WWq9x4BPpiYwGkuKCwDxvxLpCSSF+MH\/XSqpCwQLFAo0jDn4SAT40JamwRjT8zslRc6NNwdh61EasTmXSTY7qyxnszcR8ht+mlJAFCqsCc5mFgwHVycw1tiDCtmWRa470d7BQCB7KYhupy4RwINKTLILiXw\/I2y8kLEIQA+Y\/X79C\/ePUqNnJJMaMhWTe0wY1Iv2T0NJiUbcoLvMxfzx4eN4hCw3uGrS6+VQlm3fDwk6LtWi4EWphBwi5atAkgwxgUFpJrskW6+y1jhkhAJx3MR+R4vO3gyYZgxa60UGIpX7D5uCh0\/MGRFGwz3kLmc\/8HowUHjjQiNSPw\/M3Ev02oZcJIpAu9\/g6VtBOqrdsWYXZbHONE8v3zA8yaVqJPj\/sLbsv4TrI4Tpal2PBFVPwzuRgQXPX0C\/jq0fqx0zgmmu8RTtRYdVwBfyNRH+S50t6qxHpUXzmK04RxgvBadPci8lHzTCTlGAcWtYT6DVjfYPQ8bja30asLuf8lGv2rzlW28QvdL2mgGxasnM9RTzg8pMP4j3tkStfSPDJp8bMtkHWDDW0aGJ+x0apbYoGlhNbKmnfFwu0xFOSOcuN99BKzIzl4tI8X3n\/+bHBZgOhc8goFjfOF8J6bWBMS0P4UPhNFrJBEWYpF62Y3XnivEel4KfhMwwCV\/i0UTWao3Dx4tgY+8Ex9nXat6+peYho1oVeEBvfURRBm9JBdZmA+T3ax67mtstdM9Fn8oIl8T5qbs83I0do7Dw1Znbj83szbn+kVrJw0GtPO1iKEQhcERVm4uLzYgoLeXus\/72VmrcKzrqsfwTyibYopIlaZbX++jMOZnAL7FC6A2Z6CxH8VmK+tXX10k3eVaBi6aLjl26CT5rz9ir61lZi8+dy3jMO5vpdlF6tuO40qVqSaG4rUR\/henkfaEaeEdq+HqsZt\/+JLC6dVN+ZL1LZm3AfLDSg2AZN4vUj6lAmCAu8TTlafuZWWa\/jefOZLO4DWC8moqE\/I9PhKs\/2GBN+I72IhRcqDzRr6I7ZQoc5buxQABsNtCodaKQeq\/ajQsPuTaSscEAYnQ3TrZno7YNMFLROmAdkIuO\/5vq3nkFeL3\/ecOMF2kS7ha+Bcd60qvBBuKjWul49vbJ57caV5tO+WwDtORggDAB86BBv66Uem7diYvGCWe1hNMzvszfZUFL\/vWll4XiCU\/wNOGLrMYU1U6P6O2cfvuSQdqoPQxuI356Z5Zi6G1fpt4cDdmZUf3zTKtPA7z3ssAN+pVcxILaEkRIBa97N9PeozfafNWL1rV7FSP4RX27rMYVqKzVCE2M7L+iRyUy\/vjVqntPJzLE8B557OzPvXHuEft7MmFkxPWZWQVLAMQTUth279JR1K\/Z8RnuTWqR7c3EF4e9+VX4f+jtZM9o4s9RIDXk3U\/8h76ts\/e7TDi88eWrMvHN61HzAY6Y91VJ+PIRbH3cQdGvoUwzl9qkW52iavEgtc2bu6gyoOWfjuIkVj6Iywry0XSOxQT4Im0XxDL81f5zn6A1XT+sn62P7+7j+OINMGL\/1\/WvXqKoaDX+A62FQUlHTTc1MvrzN414lpcHELO5ZmWTZQ\/RWMd8ia8o1H0BvJYJKM+Pms5OjQi4gK7XDAE94lJevaoI+tZmoE1tl9dFWOvw3nnIHWWiVb0SFQ28+6+BZMNP575AwdoEWIsXUzvSnyPmyeDnEUFCgb07w\/j4R4qkx\/Tlqm1\/2svsHEAGrbXOxc0AZFuz8fgigHvfbs0Sp9wiOxsN\/Mlkx23mfPDP6NjEJ+Q7\/HG2aT\/mEmwOI3BE+z3rJIuT8PoJzSPU9eS5yRK5vACjJnxvLJA8+eVSIZbDXmxwMcY+bs8nyPdNGSC1StTBA4LTvbl5Wf5+SGkgnGm6WHcJ2Z6DappXo3Ta4Yb93aaM+9Y1EnF1TMFmZS+pb\/YvKST3WP2Ri+d9y5ty8Usm9iSwCkVqPX+r8uu7atQf8SjNWxTvOPUTSWtwfiwSLGc+R33CTGRP38maszmnG6mhqeBux+VcQSGiFLa5+Gn8wLGSXzg1pweB6tBL1HwK3jHXcLOt1zXiuTzC\/4X9TUoOu9++d5x4Ck8kHICNop3o7z49gVz14hvsjRLPDKK57dv3If14AirAPbhhMJt4VEux4pNZ7VJ+YrraK7VrGHz6oLPILKBC2vhaO5941OXIW774W7ncs3LN\/Fi4LVuSgtJIoEIkbzO848qgQmPF5sPmbYuOBognDnKUXAkiUnoWBBIek6puoYevI\/LnDTUyYaFgilPa8869HYJeJ2sT3NvihN7JiO0TXHlxQEyv0K7euKXyI32dibFxZ2O2vU3C6kerlj1lIwBU3Yn2nj7Db9NXwP1M1BOcWhHTUt1JpBA0MFUNETAHrS8nfiiVPY1GC6I7WngLIiIYPIsDHQgTvFZoOlwN+agYz121LCtUy9kczcD6KDLBEOG8700sEGFIc+lPeD8AQfGgID2bGzRexEKjWciR5Dj2ntu1PJgIRattIXe\/TiZKTTfUu\/OBWqv78\/NVLP+7TVl7g3m4lejMLirwbNyHap0iztR1oOv9O0eoCT\/UmfkkVLVvLnuPDb9ZXVjt8C1oEEz\/UwlwnSmQQaAUIZbgghZu0y81VwT3ipVNa+iwKuQdBzljx7Gq2Z9rIBXM2h7k7XyFCYMLvV4vUylD7Ddpc0cMWn4hvlJf+KSt4PygGckYWGEstCwUoE94RkW0PX6Z8v0L9MXQuQdT6SnoL9V+Uw9DmycIXEglSRep2Z36LpvPNwPiuO6qe3y6b1wJwoBjB0eKson1JM9F17g14aSPSN9cjdQ\/PCW2DBuL5EgxjklGAz7+YqTwzQZJ514OmZDEUs+oKejK5joVnNBM9RgFFK9Gfa8bmXe1Y\/cNkVvizM77bbwr+Hr84u3TNhfs7gaX5WuCbWjNa7eJemEhUUnUyfcnZuYAjQA0I0711VC3a\/CzPwYKA7PkcRPEuz67hWvTcNAjQ4TevhRuuMTpCa9FwwWcfiaW4yH5e6tFcX678hnZul821e6NRekQJ\/EyYIINWPesXUH61Z9qokaj\/ztfyuofWh73BpEj+bhD22m+sekyIPO1KvaSKoHdYEfGZQFShkfCnfcSTf\/OgBJlQqblU\/Kmoj+SZ95tMRFuyuH+5UEnBxGobA84FUgRgXy0Nf2Jm3IB1hiVjeyNSV9A8zOGUe41Y1RqxXkuKqFFSJ9pJrVKixvBhE6RqxPqr9UQfRjcFqVJKpGrpi3zeiPW3AUQ0IjVSi1RWj9UxPF8mLu+tEek6sFSPiZbJHevtcEBNj5tNksOGS4uJ47oMNiJ1Tv7+FhLfVTCMXTCJhc\/K+cS8n3ZZV\/MNz2i\/w7FMYtBW+K1YCCxKPEMWLvLdnhSvf1xJfXRfAS0pI4z1DSDQOMa6OPPhuVynVCSV59Bs\/d\/w8Z4BMRlRFpaN5n65Gg+LQE26kDnhV7p6yZb1heJ7z4bpJh5GngKHvJ34TAPO7zcJLpVsZcqaQw\/45fOPWfon+H78Tcnh9HjhmMkxc5Q31Xxpo13Z5yfgGUSdVNesL7Pnb\/nN+cwScaRYfjKzCKq9CZMIPqpuqrf7ABir9EJBqb0Jx+D3+cbdVCNJBZLb+JvPLzi88OssHg\/sNw79ZSLb\/H8iKvwZGpFUUNO5KQsJEXKI3n0wDdoZ77fmnyMbnxN1biZzPY+9sGgxiV1OWlryENiaHDXJZMWsrEU2k9AdLRwSMn5S9OGKZRbc7Nic40IbRNFjfWxd9\/uEglU5KK3ExlhmjOWVwyNKxC8rm1sWMldc2ujKgWmjkvp0fpW06R+LdUXQ2nlkVn6TVVJWwiXPQbtOVsy0S\/fsaia6X73kBV8dU9pFvTeHgAzBSif6WHmxA36Lza+uVDDZYwS8fhVAiW6mT99bbhS3YMsxZlse3TW9Uj2FIvpOWb+xnZiPUQvcjNU4WhINibkLNJQKIvLH9VjdTRUS986zQUOx8PkoPf96kgJvsgMcERM6UjsA1TttO0O3eYIuoL\/Q5q1YfbhTVv8CTjrvVmBmUsyQr8AJBUrbXmaaDtklFT4sIK3EtMDPDxrsfrPPVX8nJF6XgGSqb+SebBZjvm+JdcBzR6O7ez6PRZGYxUKKxW\/O\/L4KFhPO5bjKZ\/JwTGcV\/kv4u4jwbw9oRu83GWOxuoBFNH\/sI0JI8yy0ArHJA4+G35I\/joHRSvTNIU7aD7yJoOyLfN3eJhOb5RW2fgqmJ\/szYMklAkBoxGYu2lhcoiAP4MWh+fNBNQJInhVi0MZ9SkF+ord5uB9FFn4h4kVTitguz7X3yEv08SdJxNilVg7vpKZNv19K\/hgILs3Bb91nfVa1AzYMeuPasj8pLZyGiJxiEHyxJqZwrM8k2APQoh6r06U0MVLr67Fuyn6UC8qE1VspR3Tnu9EvCJQdOuSbdRcSFgh1HWTundR83TNgnPRNe\/15QesKyV9mSf689eXpW6XTQ2ZucXDFgRuLjWitAPeOEDTCInJdFraHrKVoaKL6PgXnyh0lIAlJ\/vSAevFwk\/GV2ConhACeC2r2NxQEz91zpYUChnyhMSqWxXEEVvekSX7YpRYN\/xOTZyHki3uJfVaLUOol\/d38TVsTaS43SBkZ+bqFVjc276NgqlF3LIXawfcz4xIxvdCfEyQNi4pLEexBNiYd6GK1QUzyAb\/HtUxWzM71DjI3UVRvEKpZ9wyY4D4106uY0+jZm\/8NL6zeW1cuezZWxrrDC08WGtjomU\/3LTJDQYMJjnaBwBHXfdHJ6ilSQDKil9B+5aKV6ikL7P84OdeaA355UKcKtBfHcy65rnip3ji29E\/z+fNQROumpsU7ZRL6Z8f\/JyvmPl\/ZVC1a3utB2QSfugEaOsjcr0da+KxkUXBIPtc0\/c5wjABPZQxIE7xIvWlfWtiZ2Zd6\/5tnRu+lPN+zdeOMdLIIhXLUZoIrOHicOgvp3nyl3sMqllJHXZ6vefSbTxtBuJY\/1prF5q7QLGbl5AEwEPr7LdD0LNwkyFRS4p\/gN7vKkLnvLa+ShQDSM3asIBFCtP8gqByClu5VzK15s53z8hKrpWGpJnKm3fULaRRWcWCD\/qU7MMjJU6OmUY\/V2nqsjicYBZoq7GpPymfjSvNRcMDdiv6K73oo38V6zdSo2Yxm2XJM4SICVPZz9d6tqws7vZlMi09YLenkJ\/cUqdUbx8xFaJHNq8wmzwLJIKf3cisx\/0eOuFcpfJi6Yvvdsx\/fLuvvtstmBQ3GG5E+qRHpczetLDR9ET0aqRarL3pq3fwzYFJK4UmsNnpXpbpAz2iBMKb68oXMTd\/4XNyEVN8hbWRWH\/gblOiFLhyTuR6rnUxuFijiLAu9I7\/ZyTkH4KHWOp\/1cOfYnmc+QQAnLbRQ8Awsdl\/dbxaTh0xqRX1EvgtDeMEy0IsWa5sXWDXyQSlp5RiE60H\/LNQmJdxswMEIsySDqR6ptZhTvFAms\/A4u4ZfsPNLAfgAwj1oWDeOmeWNRGcM9lpJ3xw2XPN+b44RZGC1VXiMzRXrXfjW+Mr1SN\/LxGZhYWDzYjmHLZkzf8V5ITgg0MXnpIbEj3WtU5uxOpt7YjDZxc0tTsnwqzkXJjCDl+fGAkQgD3I6BjnfcxxFCB73DBCE3+BcbFyHxynXouF34sd6cAnXy3ULR7QjhafEU6CfASFgfvNmZD2ywULLDabX5YOETDy6RRBlB2yzaVXhyJBR0l1Tiecied6SrSCDtQNXydVtW7cpIPJvRPuGWEq1VUld4E1kJj5ZgLwWtj66Lf3MC9bmoEUsPDbfXuhhEWp4HZ3IHhfJJj5Uau4cxMLnARnhsWg2255zSDoHIKzq+3roko+M1GVhEIpew93MJJOj5rKpCppGf5DPhTPJ4XChlAmxwkyOVlnfx+BlsHoTzw9I0SIyOcwM55frc\/DLvPuA6RamFcScjNQ9YpaWTEH8tAHPzQIPrBZmIvuOev7ZeDghuVqvGdyA3yHMkbB0JPo+OXekJXdaj9R1DET8SRYj\/7sycZzPRxMwH3V1lVH3esbPekmtykdk\/e\/S9RCznnQcYyF8DoPSKrxvnr2\/DwApnUxf55qXyz48Z54XiwW\/a\/sJ66vCd4Vp3ynrOyR3X9Z343ZIE\/Oy\/mqvorf1Rs3FsJv4\/RFST61kDkCz0CZ+r2NJQSDez2thW+igbxnUpgdrc6G0UnDsbXke6p+71GN91Lbj5rcc8ZtPB4QmYSi+a\/o87Uv+tmjTAwiaivzcQpFtv4lGDEjCgBTSRa\/\/YwFvlS+UEI3pNLIX33rTT5j85iLad\/ggDpOlm+lbF7o+Bji\/hVVhgR7qNhYZ2xx6cCWVY0m0KZIV6o\/DiW4Hke2mB3TTp2MYKBJhjvQf4bcBJxSLJdJ3WSZG1bH3bl4bagYbCbaVVES7wwVBJqYjboedYpBfJy1DI30vwAkQXBxHrMFr6kETheuVfGqiL+43O18x\/Dc+F59\/5n7jXvP9pImfsOBZLTxX6BEyaZx\/3FLtrRZ7jFqVD0zlN66vVlIz3v\/2nSLtoj93H3bc6e\/5c4cCD9tCVhmfCTFC2RZoPGyCPzRoZWaTARrrKwf5CdL9Leej8v+8r0xebl\/alxUdsD8wQPy4dlmvgUie1BGMkWE\/V4JbaH0HfbwsBAvg77YS24meFTK\/MXnxs6tFyyGNAGLIm39s+Neke4Axtsp0SFDj02MG9NZV8luR+nsmdBhkk4lYdrDKWJ\/PfmiMeqT6qTMbybdN3HwHPRucsz4+VDzyXazamMMsLJ44wH0uvY+8L9ZM1N0epE+01k9uNCmN0uTzDNIAfQfvIb\/gcL1iQRXVMhZbJnOvYi7oZLqE+Y+FVo\/1DfngY98NKQ73SfmJUDPgfcorv8k4S\/T2MLAnGrWs77DxDrUjJFdgMZsaNS3et+3vbKuOBo29QZsol\/JcjyaJfue0MO+F1OagggXiO7bV6p6LGBvnqgWkCQ+LEIixTvngCxyUNkLqkZrwfLx+kxRQwK8rXQUG8APnN5dcF42Fv4Pfw4NlYAlmN9bn+QhrLdIj4jdZAP284gPwyRvH9V+CRx600UrTQzoh0iOgtFCwwl7TnrA7D2awxeNzxzKgfTqLrog0GGc\/ChNgn\/T+v0TEg5YzlBJOVvSVVsvPRUZhpeymusbznx4zF\/hie\/KqEnm3FT7TLGh87joWXucDPOIHRnqK7\/AFadrWSc2416reamIC8zcWCZo\/n9NGQG0NqgfHapCWJ+W5ggvSae1yYY9n77c2NeBr5uMIpLWouycWKD4jrccC7au6mETODJd4Rz1SFw66pnCz7VjmCm4sX7W6MK+FbYxnjqMtlGpJfXmh4KssBgto75+bNBKJRO5xcW5SDU4b5ao92FgN86TbVKjsS\/vKg3D+iguI2I587junnWnD+UxLXaN22IS6vmmhDnv7I0RHhU5mgTwx10SlEPvWY5VuGi8cCSmdP57VuZnoe3h2tchOGEjZAEeEvyP3FFk+L19a2IgsLZCvjQaj3M30eRT8w\/PFZ749JwJpne\/c2IjMCvbrptoHFR+3Ybll92xEcz1ubWRY\/dSfw0srMe\/HlLZ+dZ9c\/\/IQnNOtqFdtWlXI5niz1NmDOMt451ecTM9idYLvHPhAhOBZJzX3yYSLrOVST\/Qr8opFrC4X6IPkPw\/bzW9cn1gkiemT1BEnyC\/aUi2Xza+W84L12YwHp5Xsgvswwyt5INwkq7AErDK0iLHmXGIZIUJxofxNeXSLK4pf6\/eTRlX7AX+zgSF9O5NRysuSOS0iD5eADRjb0cJvU4TvtS+Ddf6V3X9BY9PMm0XGRnznrsuZR0JRQ9SXSLKl5tFn+DaTtHeZGjXXukj5LT7ii9bcurrQ8FhuYagcNfdJi5ei+jqfkXPevKpwX69i1q0t2p7EU6PmnFqs\/9df33krhl+6aZU5ZcOKZ\/YDJZRBdlIjZXFrV+jnTVbMlqlR+gvZxaUVm1XAI7uZuclTwlDQsGV1oQkzB383YiGf2411Qx8otLN8ngy\/ujdqpHfVjWfKYtKV34xUErpZTHwsCqk6S9TyhVqu3h+pReoMxpArKHkeeVZJWQVmsiiVWNlr8v2E92FGcwzdG\/zvSJlipC4KtTfvXSbjAjXNvE+i9bgGzA8IABi3F6yRc5yc3\/\/nJtwMaCDycQ4ldCtonk2rCteE7T5Dqcbqv\/IrmGhfghoB5Sl5uPx+gzZnUvYfHPA\/TGgXbBKziXwp30Edyv74RINWywcqrbL6ItdvI+H2umxwyLoPNNGeGSvcgVbmRdNVz2tKOKe3HFNY7TGyE0X1Pu77ylOIghdmN6ywqYYNxaG3t8q2idt5K5Y8hwmN9ie1A9kejeNG3nXAr\/q87cSIej7v5brTZTJe6zsW+i6E6+3icd9210upl+nriBWg8adG9TEbVgxJGqtW0t+++ASu5yDu7z5I59zn79i4UmeQs8szSMy3eAY8X+5z40pzA6knviOI6d+lT6dNVsw9LAzuEf7MQptVJrCLEaR8Bpkhi4xVKpbf2v+mq8fevC9klh+bNIXzv8V95cem3w8yivC6vNADGw5w5kc9UreBdtu4snAfgJT8vj83mZ094JekOqhkCgwQSaaXDnxi3kfx4kzYK\/JalZcOOZ3fb5Y2KbmI30KbvLAgkoyGZzD1KvqKyYq5mobUmDGYlO2y3i0TvjQYjP6zCPXGkxVzkzfbwjQJ4hg217CiM6Bc3vYb4TkmRoZeS163Vda7qpFqcw5xIQK3gkWzm+oLMf+ouqlF6ptUWHWk1anFDEPT0y5z\/3pHrTT8VRf86Q8U3hOVWLgsco6S+paQ2iX6LL8PQtDGkd3Bodxi\/5nxwn15P7eZqJWUK6JV2Keb6h+GwSS\/GHt\/sZuZi2mGF57jZxXSS\/VYbXeu282Ai0gz9Sr6pMmKxirbRlfD8Bhy0fmJOGgTgrwgM0K8oD6giZ7V1gsDNK5de8gTNpYOeaKvu+6O66Xr4yV7sHw8YoXBkvdpWbkwe\/BZ\/H4A1PcV5mfDbCVqvFAuLVxIaOIl6Qb7wvpm5oMpaMFupjsWc62uICLO52hZv0+rrE\/BVyOwIn6mK32D4H1q1NyyaVXhJm+SEujaurpwbz3SkgJCmsnwx5hUG4Jm1fAhY\/b6Ln8A7XuZvugnR9jUCRobHLMPwFFOKCmZAPuNRYCZ76PYF5xW+PV2Wd+4aWXhWj9hJ4rDr+b5tct6k4Nl0qBtBdFuO9DFRO03yfb3LSQBid6JBuxk5jTaifp9HkxpxPoIro\/4Cma+\/3zLSXNY6VCwemz0es+xFW4WGSidKfoxjHxds9+cq9Bvuv6YEVIRrWR+gIlN2Ptc6R\/iTJvpvI88aOPh1yLLlSy\/kaj\/nh41p2ACwp7R\/3E7QBu2aZm6ZxCo5MGSUw572m9OjxVOhm2Sv2kbctmJy+5quPxlCHZwyB5J1fic7llHqGU0\/tq0qiDm8tqjh17Ovj4q3Yj0RbXS8P8CIpms6E0sCHzuOg\/a\/5fUs2GxwFzcuNJcVBvRr8Ffb60oGBvoU+31Rw+9DmuFXkTtVEvsoVlWK3zgCtQTDa\/Xfn9oGP7mrccUyvx73vLhV4tbUtavtB0j1T3i19kqpzu8CQ+sk\/v2kERYL7uZEcTXQyWe6tXlyuf1LaY0cGpUnzg1ao73gUJpk0qEf4EcfriJj1tSfX+VBW5QiaJLT27Bigx\/\/1Ev1Nnmw+mifW2ovs9ISIQ6TK\/sbeNFNSMjbIFEPFnhBaAhLSclD3uonFOoY\/QuvgsDEg+liJlFKiPWt8ABDe6Yz6ulQ55YK6nbvV\/Gy+ZzaoPXF9V\/4YpMVvRt+JydVHds6sK8tV4svFACgLF6r3BnldU094n28y1WKW73v4\/fyYLQz59GtreQUAc5SCL+F\/sQYKnF6lTbadJWTqFFmMSYe71MX4GGb6f6Uss1pb5RT6w5Wo\/0LdyLBA4jdQGfWdocfTv37bDnjwsRVA+VUEpYi9Rl1hLQ1\/jgWD3Wn+BasOoYM5LP9um2SJ0WAlsW2rCYJPJ+9FzshHcxSAtb98aI\/\/+YEDReOzV30W40vFGXKxWyci95Xt69bbwous0TYabczSfMWSTkpURa+K5asXkrLw\/zykeGfx5CgQQgDMvkoS7nM0ulo6V4ww56fTETp5fafkdE9ZlUPCtMWsoB+TysJKrH5ss7zn6WDMiLj7eBsdBMR7h3otYMOks8Nz\/aibaCUI\/BzHO56SfPmgcd9AikeqQ2+ry6Lc2z18N92PuzsEQBfpSsNUF5KBhs9w4uHlRN9FAJOADuRxZH8saC\/Va3hpkJF1sBUPM4\/OL98YPZmPy+yyUifnekLs9rYff3lQ9GdP0RIbWiSn0Qw98kOeB8jo3\/50P\/+Y3v2AT9k+idBEs6paFn8dDC46xZpK7nvEQl+X3SBpC9zbu4h1CsO6DPve2nz0I7SeFDqzz0cgZQO+3XEs9SKsl3\/FuP1T2txMBVdc3MWOEC2r\/kzwsYZGal+T+AJFNj+hPNAcXlDJ6N48v+slUaevnmcdPHlYfSLuu39yr6EzT4FiK94rJ5aCKXZTh5sqK3AfKAsROKH0oP+b5eHnohg5qKLoFAlvVOn29mYb7tHO57cAvXh0oaZXUoCztcYKD4XPN5wDH9sWFTj+oesZKKQy90iMG9jjs2qY8OumIi9NEapIXF2sy11n1UCmADIQbPgfZF+7rSPy\/SLX0f2hciOTSY838laU8NZiNS19o8n93Pma3iE4K6seazuuL+tEB5MIQBvXW1+YgnNKtHerWP7LZTfUm7bE4jyOP3h93CB7\/2JWgAanSJsBMExOxtRsNvAQBTi9RHmpH+OME7tAzgDyHIk1Yw5p+JbONauKzBfj0TLB1PqYOQb904Xjibonre79U\/RtMboUsCnsl9eyz1z0uoW27E6m4Hb5XIMZVEoZa1PM4WYcX9k9Zx1tudIbho0CaKyLkscvzqA39jUIkiCoQy1TyLyaNOoMSRhxncnCWdWzoLd5Tfjzyb5NH2sgqSCMeXJJHuakj7jaXp8zM9VriFz3lBvYo531blmGfS+No9+PvVPeGhEDjDNq8uvIygkv+MdBwVLdT+duPhP8H3pKUKEepGpL5fj\/VYIxGGjbYQ3MX6BikTdF38MKMJLLEwYHbT18hv5Hhp4eL\/5nv8WT7H9\/VpLQY9WrYRqwtg9Wgk6rRGpDMhwYuGPyY80pF+JQEyyhJJh4T3RX75wtXmb+kVFX7+cAgAEjuB1Q02ml5Ay17L2KC4Zmq0cHk1WdJPhVHoYS1ENVOP1JULYZfZHET3nhD7TJVbPrvisd7V0v73i3rEyUJMfY7dcR7Msiqd5\/Y0RcJN8m4M6EhfQ96xGVt6Fi8nfO3pT9o4VviP6VHzr57qBS4kBjkviKbY4f4\/T0F72d66wy+lqRq56kaiT24mwgB5AwsX14mfyQRDmzEh8WO5drfCAwC5EV4lR4tzBtFWUjkE8QDGo3mp2GlE5p3cr5C+R\/o9gA\/QzJiVjUh9CWw0pO4sghRk1CPda1qKnlug04GcgcHuFwauh+sCPOJiFLupeGrEqtMs62Obif5Ki15OZf3iqdHhg\/bXingoxOPdWeA8wmztkUNPnV5ZePPUaOENZddSxws0SA4SO4XJvzcr0Fcg+fpjRPANkLvntLAUOtC4bwAD66NC6pGlowlvylO++s54iPBBkWfbi\/YV\/zXWl7bLhUNZIV3Osd9BnQm7\/ZRD5gVyEMASPHAb8bVF8j8PsTWu6j87qR6jeyH5aq6ZhYfrcagtfN1LhKguhiL2\/7f3HeBxHdX+Azw6AQKEEEhi3bkrxym0B38g8CB0AgESSugQEjqPFkoIEHBIj9Xdpb13m5otJ07ck9iJq7RNu+quknuT1ZvV9\/y\/38yd1dXVypYTOXZ4Pt83n63ZW+fOmTn1d\/gC6KNRj\/ZTWOPBDFBBBJi7f9ZbEZCCEFPopvLfy16HEFLA20BkxbFAMakt1j6r\/LniWXz6B5qWz\/wfgJLHPTwdBjOIdmAyK8kjaWTC39i1IFrivsjZxqID3zJEcKRshkzuBp42dq6IqR2CNKCCTvB+0o6hDUS9Wm3My90xv\/5t5459NgkWYKhM2IUr3Jqo+2Sno6uvnjHbqkkFAvqIjAHXuiMe\/vWIyftT5WmrhvmHDCgV1QaCG3DCLqws0jbgh5cMhQr0m53MiyaCNmzZNOJYt7bCHiubqlmZJveCaTFQWN3gL8X5KBRWW6QfqvILiJX99nQ\/hFlK8Zn3q8r2IOguzoii6SKBo+TWflVb5PJHPLwg6tWhh\/4w6NY\/CSbbvEC\/AiIzmA8NubTArgKDIXgDUkPYq\/8MEkbEw+cGDV4WNrVnJS400Ch5e9jQhkXkk1VyBYyD3RsW4471V2MyPq4s19iZW5+eJUqOYqeB6IzxxqImE\/e1QQlox\/cjQQNQOajaKHZ2kz8Y9eq\/BR40AN4RDy2qM7i1SyvL+JsQLAND0Xb\/rLfCEh5EBQkvRG1+O0JIo15uNpTongpbYMV0E3Rxu5UeYBBQt8ROaYwVJatw87sgSqNEbW2RvnObW6pwETf\/OuIRBJqpmfZh1KpONXdVU7tw2K0lwQIEFpbJjzl3YWH48uuIZDt\/MLBOR9Dp4H5IFYwhQN+MNIHdC0LJEGRynGrFs9LBErDSgonh+wwaWg+CGRAYgRVfieoyJtlF4YJ0wdzQmYUBw9B247nUfeXuwgcrvTrCGc+am+PIysteB6tlpV\/\/QtSHKgvQKfnSsMmDQANBDDk+OhjQcm+EIcbKbB+LsQy+D8W9YdmFYQ4ZLCjeDVEYhqqQqd2JNELsurDkV\/lcn7cntIMQmVQVcN1aUZD2LYjw2HUihgbsq4fCBp+HjCkwrQXuXo18ZIlUqXXLhH2hJx+G6I7Jjd3NSuDoRNirVacJ17gv7OU\/jvtdN1QHZmpUOQYJO91UNv+SN8T9ehHQRuzQs1gQUfXCsg5biJT6LQCewFhjnuAdgOIBPze+DxZDGbaq3QrEllMxMJrYhT28yw6pC1tBql1YGFDdsgLIS4JSpVyhid3XLbNBkscWaEucSdLOhsEMWuj\/SEyQ+orWKM53a7l2RBCRCidC+7R7BTKFW+sWaA0WwoUiVE4Es4sqhX6+0Z5+90IIO2m1X3805uXhqId3452xM0KXxHMr\/QqTLuzR6oBrBQzm2kL9USXiwyqMiCYnEzqJHL8H87Vf1xbzX0AMxN9YpLaXuPJV2iT8vHXFrl\/ZDU2Af0XU0Kl8tSh2rkqVgGDtrityZQn928M3AZo2ZPB2MDQSMPCeeF94AkQIooe3Vfn4ppiP32O3Yr8QCi4WeNN1Ej9MG1HuK5DISrMWbhVAEzG4AF1PMhYQMWAIdWs\/tXDC+mAMjJiy6EDQPT7jyNmSunDBGNoMpBFgdTvz19XGMtWqHeeULLP6BOc2Gj6uPU5UQLCcpkwKmqy2PkMgI4RMbZsVULBN\/O3mWU1gYCsLSEGVCAPO\/BnvwO4tV0UJ3KYIxh0pYsnnqvLr7fZAhudLIUP\/4fZSVwQ6YsTDs7cV8F9C34eksLngSg0uo1RQsYoMG84y\/Kz1xa6lNUWu8qBVeDxkark7l7jaELAf9XCgTHTAog3RFQxjAajvQ34u0B9FWp\/BC0VRcA8Xhijspgi1lD5QvTfs0bpxPXFdKxIr5NY2VAX4piqfXmy3uObPnjw4AXozYIw2ztdd2MWAZlHh1n6DlMGIyZ+qLdYj02GHiPm0O6sL9SFhDLWkOsAa249BDrK1G7Zbf\/vE91YMKBhYFCpXoZ4HxcbgkYn58AA4d1NnE+VYPLzN7ipLFe+PJhId3FqF7RHPT4KekeoFsAIFDQ1xy3ZsKk+qndrehLHHzfer3QgrqqyMpy3H38Iw49dFlhHEIIgriOGFoQZWcOg12IEjDvTAoMlvx84PUUihYeAaiAdWOxZ2JXwcGCuQdYX82IjpugHi2K6y9B\/b851\/eyObAH8KnXDPYzO\/DYkEroaGEv0+4D9D\/60p0pfDAry91LUU0gCOh\/61Z5nrsEI6hG4H4wqeUwR\/iKSAtD\/DIgwRG2OKd8aiGSzgDyH80lrcMrDLQtUQQQuAVV16zVsiJl+HSQrL9rYC7ftYQPGtMBGx4B5aeRXG9SboucrYJtA450tIoqCbG7VF+j5V0R72iF1L0pdGvdrjUa8ECCjP1z+6+zHXv1CGFOGb24v5d1ItWHZLcNDkX9y+RP8RmBCIGwhUQYYbKn3YQdvh4435+BMWmogAQkAQSW2RPmJPhgEBydJi2ASeH8+l8oWVuBz18jZVqhRWeJFuaNWoQj9iu3Gsc07aG64TdI9F98moQO1EKow0WS9sDKLnvCOswBiUlA8Pv1zBmNUYqzr8aVMZIECB4hyBW2zwYxZmVIG6VnkBfMB6vDqgt9UW6ZGtVmw1YoixOlvJ1neo4xUht7UqoLerZ8AOBSYIuiVOMiYqXCWwOMK1guMEWEGpS+xk0CVxXNTNP7ZrafqebW7tB\/brg9lhVIKopioEInIsaKTNw\/lKtEYJGMDWIPwRu6hY2a1oH8RKqxhvBXQH\/Vf4NCECevhta\/Ncb8Rz1Ra5YtC1xbMb\/PfH185KQtFCV0OaIarbby917Uf+rzjOnfYgfMKWeiMghiq9fKd6RxUMg2R9fAtrgRD6HAJC2p+ZJd4L4yZLovIPAvEDz4aFQubIji+MjQmP9D6oG\/J9+EN4VjwDFmzxPQw+EvfzXthSsECJ80xttZXfLZpVPmX\/pgVj1TuS9zD4Q3heXE9lXQEuuLZIb7DmyRbkTKvjsWPLjUGWf5HH88Dp1DuRmGLyY3bcNyzAk21iALNIBaB\/XtBk4OtWhkatXc+CHy3VsfaGDxn1jFmPRRyxqXWLAH5HLm0qgnEHO7yErRkvYokC5F7+nbhPbwZCgrrnbhn4L8L\/AMGKlR4MZaUuikAT\/Ct2bissE8djsgspI398eZaKAu1h5OsiuKSiQPsJ4GuqC\/WE3Pl4S4UFUAeGRXI57oWJFLSSDwBQjywasUOuEKVNRboeqtDDaAWmjHl5PY5BvyjGBonBO+MdcZ\/2qx1LXN9HeibSFQ88Kd0eWXde\/tqaQr0q7tcFcyJWHCIvvk+llz+JdwFETW2h7o1Y+aqwRoMhhaHN4P2ozStigd38sZiP94p8YL\/ese3Rqy6qcGuP7If\/WgT1y6R+RWAifD+BR22lUmInF9KPFc6ogPJwLxjJVFpoyOQb7T5aLEwxv77biRctjnVb3x5itkdPpl5ORiGTPyYY2OQ71TyFRIQd\/lTBRWgWsyZTVAWSqoenzHKyAkaSoPHnDUFcjPnGl7VQTe4eY24EUSbFx\/ucyQ3OBksnagGr8+AQDxnakAUmnhSJhZO+UP9WrZ9\/yS6aoQoiJpFMGhhvQEAQAz6YjIsdf0+1uwOoDX1OHV3BvAKLSV5LO4R7yA85Po0NVOnVvg8RDztldYA34b5Rn56H9Dx1jAXgt7c6oHfUF7uaAVZnvwaqKiC6TOz8Jq\/BLgbJpK7YdSDms0IGTe0R5BTXl7j6QwX800j3qy92CYNV2ODLdi5xDdYU6dsB3YO0x7hf31lfrFfDegr\/bsTk+xC0UeXn5RG\/BN9TFDbSfrZjSfqJumJXpzMBJVaUNiPmlSGiMZ8usr2iPu2bzvKuIFVH14oFEHYMJKQ4ETrRpO9fa1EiOAJO7IkuQvUJ6MJoFjb1f9jvAzcW5p1ARjHTfqT6gR9WVci\/VhvQb1FoIqCwR\/NYBrGD9sypoMHDqTDf7A2LKwD04D8fOy81gLw0jGmHzrtEh4oCzWNZe8c9sKX71tv9dEDPP93ui1UPO5LCiQKJCvQGT0A8i3gkSDsYo7aQn8D1rOibHdBXxW9W0W7BpBa+k6KQoW1N5SoQ4rYpoWvCBfq1akeY8GwAWLfKnoYMvlJUOJS7U0pEBoiWVX59NxiwwuCzVX\/Mz7++Z5nr\/rBPvxb5qbD4wj22tfjKi1FNsb5E34SwShy7euGVF8e8PCT04qVSR8VzLM26\/LVgltanZonFSmJxp30exjNRvtR0XRMytKcgDloicDeutw2VGJbLSC9cD9eFPqvsFDG\/9sedS11bYCiEGIuJrcqUAjpm3+Pp\/474xxYauJFwPxRAg8FO9dtJliORbjOF44wEBMtXP26cBQMbWiv8zfJc7blUzCTmkgWjk7yPod2KhUKmnGq\/Rh8gbmsK9WPJueLne6C+iN\/cfIFYCAyt2a6zAxr3dGI0mrDleMaCRmBHgYErlTqJ+ztrGJ9TAoIEnOPOnQpNQN4UjJWAhAEn6tG6Uu3U9maJ3eMCPgTIucf6YKb2E7gLQqZ2wB4EIvNjVRC7thDHguEUfKoiMHBKP7VNhEYUEu7nZGAwCQpeh\/1yB8VOF\/XymHXvHdAzawrHAwog2R4MhpIu+FtWjtfX4PlanppFUVP7CUqR7lyibxL+7gJtJsZu11KXLEViSiu0LHCOQAQXIdxRWjf53XiGSi9fAbETTKnCTBGlZdUsOoR7YYcOeazyMobmwyKGcyxkinYwKQxHEQ\/fCLeK2kVEZpKhX799iWujhf+cDQs3xivi4cY+74zXwP0VMfl2BI0Avla9O6SiqkLtJmQ\/hdzaCQFobvJk0fagO\/3quJ93Oe0hloGxvXahdD2hVE4qBra+2bhoJ6gYKsjFqsgBIIM9dmYUi4gpoZxg+JM7MG9X3xVkSUbHUzGivQlx39D22F1\/IYPPTrULW4kO7YiuU8eeU6pwayucCQtoogyjwbfblXYEH5xu90VLpSsg0B+LhPVRvgM9zzLljw2ODLnsxPFwX6gBVCutIgRMOGvdoInJ4JHZJvJ+Y2VIVBPv6k77hYhAKtU9AMhDdFXMzzvwPLA2gjHifn2bQv+AmGgZyIShCzsEdit8eGmY0TKwyOwqc9VXLLr8XRFT+yyMS2BQq76PQB4BLI6UQLQDKmhfLETW6h8L6K7aEv5BWGwhnTSUuN6P54PRcO+y9A9DdBZjY+oCr9jSM8OouQuG2ZiDyLBLXw8dThrPpLgrMM9M\/j87lrjqYRALm9oaMDh+w7+QMHBd6Pzy+6qdTf9AdUDfjufEsVYgRSN2cVi8q\/1cpEtWuLVcHGMfZ8HAiM22JjqYLRUDW+L4uNpbSJQRHgjMI4\/2G+yIlk3Fef0++Zza\/VYGW6c90QSEOPNUjOhsYnGw+dhlOOpEFJpkokPB2CJ3zqjiFDVgnC8EUWgqZVLE74Z2wu5CAMFlBIYS4oqhfb8y\/wOvi5jasH2A5Ae2gjxMrWBSBjZ4dapqimJHsbB6ISI7P7q6BxgJbhIKX4uPLrKiKtxpC9QkhD6HiQ3IHxhFBBKGR8TYJvXHkJH2l+pC3lhX7NoTsVAqsVPA4AQXFUIxawpdz1UXimgxIenEfHpzfbH+aN5vXa+GDhfxav8LJseYVHr5yqoiqXIAJwtGJ7F7W5bVWxl7RSzg+krMpwtfenWhyDv+GnzGMD7VFeklMT9v2JCrXfpEzow31xTqi2oC\/Dn8ixBQhS0lYHk82qN1xfq+2kJXvULflDq+vr\/cre3F32CasKm12RkTc6LcnSYMPrAwD2y5BovR\/8PzOvNqrSypLsVQp2JgFJezxk\/QOAY2tTslcD3vt889CeqnHcLxMNIJbC9j7H6KEOQT8\/HhVBKmvYkNy1aOBYRAj1TMD\/sPqnKeTXinKRHwrFLpktbKvtOODTQV5ziaWMFTpGEJkdYKzEhCopjaI5ioeAZMFDEJLPdOyOBuHCvE4AkiNKoFTFxIpDgmg8+xq6RiYDEhDf5jiLyNj6XvjXikiypo8PmYoDgeE8WqBCBE5nKrDAoYCpZeeznTslvZK6xJsheGpO2lrk4UlrY9Lt79j8CBjnol1lbMp\/u2l7r2Ih4ciQYw7mC3lDnRWl3Qzb8U8\/ERKSZqG3B9uI4wTiJwJaAPA5+6fLEAzjsc8co83kqv9viOJa72iOka5xJDPPXOpS5EW+2FK0RWWBwLX0QqZMzHQ4CgjftlMTuJ7a3tAdImmBGSEhiqwpBQuSGDP1Bf4tqNhRoeDOcObPmwe5SvFlUMUzGw9c7jqmDA64BjLd1aVGNAbDYWLjVXhCRjzaOIh2daO3BK0TZkpK2UYHkT56u9OYOVcK1UlTVFogMkyYLxuvuLSjCcKPO\/80WE7mtK4wtIiGUGP+YMM3M2rHKYeJgQ4++WtAoLI5YdwBzpctUB\/enqgGsFikYnjzf4fDCwWMktEQ8kcKYMrTXVYmLp0wEch1Q0K+Z13DFWeODO+rJL3nDDDUzoPBvzL3tbpU8Gs+OcuI8fifv5PAS55\/9cQMHurysGVrI2hAUn5uPHgIaBhHzxrGbah\/FBcb6sZSR93yGgbhS6mk+sm4WdStgEYCiD3gzRGhMROjPKiwAiBwsYfLMY+6Bb+wfE8KhP\/xTEwM4NV4tJA0NauZv\/Dm4SRG7BzQV91tIjXxbz8hYcU1ekNyksLeQkY\/JjERIFzax6U5vnAi5Xfzjm4z0CeN6tddcXu05WeqVuCVG+OqAXxn28BeMipDUvr8aihd8xfvAuVFoivH2cLX9wryomHvZMtFtgURDjZY75b8WxZtq3lBHL7uKBqlEVcD0F8MMKCzNNHs\/nWVboE8poZqdwQZpEi0kxZ+1N+NMdtpugmz+YSm3EXAfYhaqw8aKSiDM2tTrngKJZCv1uu0IPhkvFMM4mzP5ube34u0mCHoeoIhHAMAVsK+zOmNDYaVVVAZCEukn7YVVAr0QwiV2HtgwiIpwOoYaWwSHlcwKMD6IZ3BKVXl4jxVWtPh5Iey\/8s+p+QH1E1YTf\/hY7Utp74379KCaLiL318A5MUOxoEOfgihEGPAt4PmxqtbVF+mB9sasTerGoVevhq2JefRVE94ZSfRnUA5xfW+iaj5105xLXXQDBw\/lbFl0pVAckkNSXuv4a8\/KHUJZUXNs948ZdS9PLAHRQXaivUQsXwOV3LNG7dpS6hkOmRGJEWCQY2ArV3CLEaFjWA\/oo3hvvg1pLYGy4x6oC+k5gcqsxQI2n2mL9ejCIEPd9+gblv0X4piXqjxtji4FPwiZgjcU2+3zDd4v59JPVAb4R0VzqXiBIRcKNJMuXnNbvCreiFWN\/SJWNtZPIMDP4DivhZNKGZxKGRdvzSMMtn2C4BUMLV6mbrxp\/txeBEIoodNEULyF1VLlyg+Afg58slcg67uVVzKgNqcNOmBwQqTDxQ4YsMQKCqFYV0P+3odRVUOXnfwEaJPpV8TEJIJA6hC3m07badWHpN5QWX+ihznq34jmtMqMw0ACdQhiSLEtuyCrjCT0W+cD1JfoO7EZwAdWXuNZgXGDwivtkCZL6Er07aOgiyATW2L3LZ86GWGt\/RjBLqugd9MOFhBBLYFJvWsTTsZqjZAoWF6TwIUot6Na\/DSyurQv1D8BdBRxtSDMI+LBXZ7RTqgQHLHrbS13\/UiItXHk7lrj6kIqHEMf1sE6b2r1Rj14Kf2vMz\/dtL9E3xzz6txVsj8TW0qUaYnLCQhf2aN\/DuDvng7RKa6Lur7i\/qVXYGVhIAx59gt8dpKowysAPGYOwMe9dl9cU6vfWlbjyY159XNE9JMnISCxtN7wb9t8U4X2denqqJuawIX3cijBfU+3CmEti3ni0j9uPP6sEcRgpbqmyNaxJnKwSAILYMhmzjztXwqzuTjVZQdCVYNK3\/HUiOUEiA\/KNGHzcQwRJeHgVio8hmgkrsFjlHBFByPap9PJlwiVkewY5kTRRigWTHoOOiYJ3HWvSj4lV1qre3o7VVa7gsqA0kg4odC0mYadwwbj5bU2Pp++wuzv2rxgPIgewOAATALEfFlqMW8QrcK3mIBgfqXHAdIaRDv5K7E5iMSmSlm88q8gEenKmKM0CMRiGGfyLvyFqQs\/DcVB9LHUGGGO9InXQ0HbDOg8LM1xpmHTQvSMmvx0iJGouw0+tQO3UM6P+rvg\/KnWY2pqGEr0R\/nuI9pjMQ1uvSVbPCBvak9htrZ1MVD8EXhcis6xw0GTbvkQCEdpir6POHbimUB9BdJqzGkgE0pcVQ17u0T8qI9P4EYyPmCfLZ45LtA8b\/BnhI3eIv3aCeykCo9ppXKB4LhH\/4B2T+jDfol7enepcfAsY6JwL5lkjrN5AVXS6V9Asq19SZIEYjYlxOtEDTaxQjvIXdpJ+X75LDLSHL0MfomxUZQDVxO9u7adwe2D3lc80Hn4HOwXcOvbz8D6Y6CooIOq5EmGMcSsXtxbiccjUtsM4t73UtUcZK5Df27l+FhaOHXAdWGiUmXuXp+dsdMCpID8W7qmYL+2rsCBHPNoikZJnIFFf1MsRTAimg5sJIiuMYZj0IuEchdpMxGYDzobvRQlQREbJhH9tHSLBkCQCA17Yo+UD5QPWePwt8ogNXhYyOKB4ngsbWlDgQJl8v4h4QoikTxamwwIFHRv3R\/IExgp9lhSF++8JG3w9KjGAOaNe7SanpR+01a1\/4MATMwvCpi7KfsKPHQ\/orVJPl6l7sBLvWJK+B+MKAxmwpDHe0JWh2yrUzrChbYW+bl9wMR5CB\/aMzyRDBpYQ1b2cagB0Z2g5wkhlienot9xjIiEFC6MMchmfduokROlNZTMSTGn5\/BVNFmps2Wg6UiV9nBUCSBh0Q6doKTGr+F47yiGyYqYSyWJZKXvs1tlUBDFKrpQSoF346KROnGyWCD8f4i2eU1j73Nwcdx1D6kg4Hh8VCwwmbqVXX2xP0k5FKIUJnUhFl+E+u5e6\/rXBEi3tFPPzD0Y9\/K8RD18W9Wq7VSAK3gEhoQIOV6Ih7sO7hU3tcQSgAFpH7MCAsjH4Z2DUC8+b9Vbs5ggumAxJEllYIvLKh8yptBsQgokMH+ES86dfPdn4ChidpZe\/FiI1jtlaoF8rorkM7daoR+QYzwb4PHC8BOidqR0Kmxp0c7HL430sC\/xwpVdHnnNx3Mt\/h2dx3muTe8bV25e4ZiukTkgxlth6yh1I1Jfy68shUcHKj++mouKcRcVChrYJzxM0eB9UqqBbe84ZhilsMpaqBzQSmSQj1afJCK7Myewi9obfRYilZYuwzkV6q0LATLYxXX8MMeasEsQ77BRqJcTOpYLtgbqojhM7kVurSxUw4Wxil7TBdU5GSCO0rIWiCgCMKzL\/d+xaQpcxtZ88nfGe1wPVQupb42vdCv3WSlLAh6wq1PfGPBNjd8+UhA\/X1H8e9+vLUXAs6uEtUa92MOJBgr9WiiwZxBWHvfqNcG2pSXw6ws5VV6R\/Ku7Xb1axutDx64r11TtKXdXhAokxBqQPabiDfi2TI6QKYIUvqoguI+23u8rSY9tLXE8qiQk4WQ1F+s3bi103KL3zdARmx6RG2GYUsLVuLQNpkhGTx6IefhgBIZU+vrPKr5cA9G46YoCBGVYV0NvAoDKWfUxPBkGshxpnuQQPoC9i8ixrh00yjZjDBr9OBJUI24oQq5MwOZPRVOCP0XB\/p4EKKJXwFuC7qEUA\/IP5i0XTfuxZIwSKQ88CY+Ah8SBxP28Mu3nAbhSBiGn5xU7ZcL5MOBhz9UxGwDhSETMIFLCsoWWYnBAz8RGAcgEduExUOdQOWgaSvbRRunxAMSRUWFFdcZ9uTpWRTkcIioB7JubXr0eCx0YHAqKTooVXXtZQnP5ZGJvwN3S5iMkLkBTQUOI6AN0T\/RAfMeYyxc9KQjd5GDhXlirwoOizhY+KBdbg\/SrLx+oXMeRIboBoLrGcuagXjFKiEJlFaqClRsBFt3Opa191QN8Aq77S0wQ0jy\/tE9uXT\/SZ2gm7OuoTI8AEmVWTGc3OlLAbx336KowJ9He7zQXfFjuaZYEWSfQCw8vL6+GnxjzBIodyP\/htfHyBBDQ4FQU9+reV9HaqhmuKICMLu02c69Yujfn4kzEfP4idGDy0q0y6u140QxYc8TuXpDdEPbygMsB\/XOXTr7UPoKKplkkR9ZEcGS6TEXx6GGiREWQLzoh5tW9sL3XdHQuM30WBjGl9yGTVANBBiRyyFbuC\/fjpJCwwStSVAOJ89s4lrhKF\/BExhBV3CPqSSHl0a++xbAbNWIgsSUNgWWPnFB9bhqwKhkMfFidpBEke9xPb5ErIus1joiYC+uVxPA61Qepz2r3og04sgh\/ERJY2A0SSYcJb4ZwCiB95wMonXFesDyDuWFzTSPvzjiWuAIxSaj5Y4n7KcrPTQXGf\/mckk9j7kHmGDcGKBEwaquB7rg7w79SX6H+zpyCKoI9S+Q0Q8pq80CQECQix5WLTSTGf7U2I8W5tqfMa2PWxoMX8\/JeVPh6oK4FNZQyp9aySlbx8Sn1FoCxMgXnFSwL+c4qA4IgwwkCL6BuHawhB84efvOoqe21a7GaYpMJ66ZG7GQj66+kwp54vAUnCMnT1Kp82MKWw4sIwhSgw9CHhXwQHYHdEcIolvsEfCya09Lxjos\/NMzAZhDHQclXBMIM+AZkri4ipwt5KPEsysJU22Y\/IIDEBDd6hdgBlIQZ4Ac5VkWbC6m9IyCPLriCCSxC2iGNwzQis2AWuy63Y5l68X9DQWkUqI0qXuLW6hlK9CzYLu298Osna1ZPzEbsons8yXt6l+uFPPrx81oQAIRRqk\/HlPDFVMRaL3lTiGgQqpU8fUamnkxESTmDhd\/afM0KI5VQYWPhTDe2oQl04HSGlMOLhInjAnhOMqKOaQr0HzF1bpHeoeNugof0ak9zaacbljJ4twoSCuwuuHbzfWL1fvkPoXR6eQKgh3hmRS2AkMVbJLKq0P+OZrdjbBHZyJKijz4rlPYLjUKgNfTgfQAeiXGahMNiI6od2BoarSVUPhN4nQkSVJdZI+6qAgrGgakVorCftC\/BzY8FIBidYoAiwP0iXj6yUgT4Y2jD2ljQgwhqjnrSbMe6W5XUckP\/ZJLjcMC7ClWOhs6AQek2h3m\/ZA05sKxiLUwgbmgdqWdDQWpzx95PRVj+\/stKrDTgzqFI1YUQ9lyGTZ0rAP7Ym6oSXcTZrFRP621QIaWuoxG6VrhROfJTVxHVUoDqYBhMO6YdwbcDfKXXxFw\/aE+4I4cISemeyFOd6PJfcdaXYCbeJSA20BYHA8ozgCOyiAnXCDZA47fvYlSUIgtYjIHg8\/DbsNOI4\/1h+cthMxnknGVhKLJrAe1IFwFQQAQpXI1YaTK+QMAAGD3ESx0kbB5g17b2wwEPEx3NZ1xQShlp0pIivLRLvYfIC1ecEFTxbBB09aGgNcvPQBkTMgsm\/ZkWKifmB98PzJzOmTB6WsQVSRZgqBd182VR0YTA5cNoUusl5T8h5Fat4ipexN\/gcoz4+ZEc9nArBoix9elq99fdiuzgjoGUfE075f+P3kKGh0jxW2ObpsIJOhTCJlZFPhShiZ1CBJahygD6VpC4ZmFeJPqtyPHZIgenknnE1LP8YUwEyZ\/BhJPwrNQWMKMrSWGoIAj4s6SfJwMJIYjEWxD\/sCmBMTC5EZsGACKZXhhckakBFgY4NpgaQAmKWRQitIYtiC2Y1JPhB0BLnhd5pSTrwT2Mht3TRP9rH52wRmAS1oOXikiYDRUxeJp\/LPj\/E37+zfPYdlo9YvMtUCa6rqWxUInFBVmgQ439eU9RM\/7CYCKd5KTRpZpf1Zs+EQkZaJqzOWGGtGq33wZVkh5YVwR2eJObSBkx+iJEoV+K83tkgeygfAiesvjlqkiOVUPQZ2pPKiKWSy5HHCwaWiR0yEglwrMJPbYls24B7JZhOTiBrgopMJQRsWAvHeAa2VA7EUIvFAEkJhjYMAxsMP+qeYGKRT2ykfR7Pj3uGTD6qavwg6ARSjXVPqbcbWj7+tgyGFlQrJIHU9oqzRQLI0CrkrUqzYjzssdYKUlaAuBdoM7FICn3ZAjo4E4KRzx4dNlkD7lqll59UdaDPW4JFcCpiBVwbIjXMGI9cMRXCwGMCYmKUG\/wzAm7Ur\/cLMRqQMgIahrcr3yCML\/hAlq85CcR9NkllwwgLu+WDRoZRcpeydiT4tfEucsykSgCQNxlfLHZbASCnCsUJw5EA19OvgNiLHRKoHfAtjgW3cAMVCcWiZcHl4m9EPFn3PKxyhWGkkn7TGWKBsHS6UVmxgF8nfeUywyopohs8lNxZPdqj1jUX4m8heVlZPojWwjPjXDsC5NmksKGVYCwhkaiUTNTeqgroCTwf5odwNXq4SFpAIgXmjVARHLBLUyEw\/VQis7AL4z7ndbVC6EjCApoixNLZ8GEFVtbziP\/EjoTi3tiFkceJPsTe1hTpzwCutKZIX63qJoEQDYOJLJMaJo91nU6CeIUdX6oSUvdWyRXQxxXMLcRdHCNT8aTrBswAhoOPF8wmjvOkfeHQCpkuCAaG\/xiY1SFDWxf18lW1xa6yMV9w2g8bStKLrbDK4rBHK2ko0YvVYglRusrPl1UHdBQoE6CBCGzBYoBJJia\/mc6F\/ujhhHxeWJfh9pLn8yIVU4xnFecb2sP4GwuPqgwBFUfsvqZ2xmrS8yFpCefHZdiuNgB\/sPpt2+K0z9cU6puqMT8K9ceBDor+kMlXCOAFNz82VUOqnQS8kMnbnKgbqRoWCVTrcAIGnDcEf5dd1zhVEwB4bu03zmtMkV4Gt4mILLLh+E5GcGcE3dpBISL6+Ki9wvrZIokekjTSiTBOlPQEE2LyR8dS6Q4gpLIqwA8BUscKTMlGZlVdif5vlZmFjKPaEtcd1QH9RsDdOu83HYQFuNqvfVnkzFrg9vCTVwf4A9uXuLyq4nzYrd+I3GYEUYRNbaPoM\/nvEGSChWgMbIFvtlw5nacLT50OwnNhkbaMa1udv4PsGwZ24KChHRPZbRb+9fOhkMnnTiVLSe3CgO9xXuOcU6V3JjCUT1smBc1CJ+iAIcZ5nakSUARFbRtTG3SG\/cV8+s\/rimVqITCexPEGd2NxsXaNcVUazgYBcgcfC0B2Knc5bGqBXUtcOyNevqXC0oWEcapMiG4pU9gUqbhrEQ\/tnTELOzIC+ME4smojSpNqJRFTWyeTG3iNyFpC0oGpAbKnCoErEVNbjR3USkL4F3ymAl\/M4J+BSK7KhEyWEaYIaYx7SvWPIkcZfwuXU5GrAgD3aoIimqtj\/SyhLr0Yleqh6wr\/r0R0Ef5fpG4ihbCmiOdX+vRxFRKhlsBeI5iqIAlpdMYEazZAHacieVoYbm1qgTxvCAiHU9EF0Oyi1\/Ml+C6x0ood3y0hdBAoAJFSpRZC9It6tTqEN8JIAx1P4CC5ZdDD2SSxmwV4YU2R606VPzsZwYGPXGC4w5A4EPLwBzAZIyZ\/BplQqAqINLaQwUcwSSCKKV0YRb8RNiiqBJpaq4BFla01LIt1t1m\/tVgFuZHF1AbsJ2HgMjjS8SxXh2V8NLRhLLAIQw2ZWjzs0dZGZE1glHf9CRIkwOwoCuZ8FzvBko2op6iHB2B0c\/4+nYSEhZCptUFtqfTyUQHC552RFg\/oxwR07rJ0kUpZbqWhinMM\/gDsADEfFy7H8Vc8MwIS6lQ8L2jWLiykmfOCoC\/Bz4WBcD6ss6kJ+ELrpSJpABPTAnkXYYQwHAm92HY\/K4Bd7IBAvFA5p\/a6RmdKokBZwYyP2PNiT0fIpY169U9GvfyXAHWPevi6iIfXoywH\/LphZCR5wHDaYaTThU2+MWRqpSiQBiwxWRIURdL0jyIwxMJtEkn3diByEPoQyohdfvsSfh0WEESdOe0N8KnjXwFr49YuRWgq6jRhcQSiBSSViCnqEy8DCkfEwxsQGRbxaN1hj0gpREHsIxGT10S9fGXUwzOjXu0nuMaZWFuFJ8GjfRzIFc7fpkqwPmP3tSBtRDI9JJ5xKYQ+C67YMlYFDa3Kmj87Jkvinyqh+sNUGdjKwz6OjcV5nXNCKoDemeeYqsHIUWFIvemFUtjkK4Q7yeAdoqSkwe+x\/HvJJtwnFmokdEvszPjQqHvjvN7pCJX5Gkpci6sDvEGJjpMRIpsqPfqf4z6+JOrhFVGPVof81qgX5Ti1JUgMgOiKoltwZWDHQCSV8zqTESbhvuXphspJxvlAk7QfEzX4Lw+vnNkM3dDeDxyrCvc1InnDilRbhAXGfsypCIYbVGOALQFgfRGv\/kMsNCJl0qNtjXhFLi+YekvMx4ugE58uiQFwu8gIqyvShe\/+TCno1sqTud9j4AExu4sHjCzEa2PGLTK5QRf4arBNOK93poQFM2SgJOnpjVloL1RsnzbCKh9DmZQUSAOpGsILgaLovM7zIYWar\/CpUGRMuJBsPmgkgCt9CLs+ntOylPchZtl5zcnomXlXvLOhxFVXW6T3IMsIfZVe\/X93LHFtcJb1AMFAUmnyr0V9aZ+HKJkqRC\/q0X\/TUKr\/Y+siiX91KhKYWW5tLlZtgcts8H5YhiES43dUA4z59F32QBVYg+XCmp68PmB0aor0Y\/ArYweG2CwykgzeCD0bi4mKyT7drgTm3b3M9c9QwVjpEkXQ8aAWVPq1L0M1QOSY8xiADewqS1+J0jP4G4sZvmd9keupVLhUkxFgaeFlEJF4kA4sVEm402RqqZwL+PZgMMzZkMn\/gLGBNKaKn71QglhsDyg6VRNhqI4yLueEKtxpWVPdfUXcs8n3T5aMfqYEc3zY5D1g2qChCVxg1NFNphaKeq\/aVvukDrr5ZujOIjLGitQ6HSE5oq5I34GdGwgbz85Pm1Hl12tQhS\/u148hJ3Zj\/oxZu5am3wboFOf5iuC6qC\/WVyG9DOIwAOzwnPBbVuSn3QBVBEgSymCFeOmIhVCCxAUcKwDKjbQZmIxWJQiB+hB0a8uBVAn4G3U\/6OEVBj8OdSPZ59Ye6Vh\/NSQQ4XJCfLQEZte6YLgCEqdMMdR\/LuGCtL+rxUekOnr4MhQWh6VagBJYYw3GhzSwo9RVopA2UxGivhqXpd+2LvvKy+Bnhn8W1uu4T9+A1Muti2Z8EimNcb++IVWGWyoKubXSZPCGDbgByQtY1DAP8IyW50MV8K6z5k1jqsXl+RA2hIiX99mL5Z2qieexLPbnhMBAlVMok6IaGD1opv3TeZ0XQhCP8SEiHj6goFeQWlhb5HqwptCVLGeaPL5A+6bK9AmbPFk4azJCXnGll1eAWbfkz\/gOJmfcrzfDhRLz8VbshihnikLZneuvxo4o6v0oqljEP4YdCDphzKe3H151FcFHjTIlKqsKQfbYpSvcWoYVkCHyomFJjhhantgZDd4h\/d7aV2T4n9YDHGah6y7W3l3l10eQ6xqxMJCRxmdVUHgC5wMV0rqmKYx7Pt6BCCyIkrVF+iGFT4W4bSvnWBj6EISCxQH\/R5VDwM8GC\/iPYbUWgSoyBS8B\/RXVHgGVA8hdITGY2g+Ci3i6fTwQlYZjqgP60W0QwRfOeH91QB+RULu6uGdFgXafgNwxJqbhOQnjBtB1zEF8UxVsYqOX1Ra67qgt4g\/A+CbOMdNEtKCMzhoDR5wOChlphVN1paL2F3CzsSA6r\/OiEFazqe6+loWzX7lPpouwk2EiWc+RTB0DAaWxtkhfVluox6sLdQ9cCgJXy9AaITpNxRoY8WjLRYqcW4Y5Rr28AedVBfjg1gLXR7CL4G+BslCo90OcU+c+nXHp66NefhRlQCGyYccSPkpP2s2w4IYMbbi2iO9BCht22yq\/PixEMEDoGPyDInjCoz0MMQvWYik1SIQHGOxQCQGWd0DawoCCSQnxflsB\/+VY2KRMUAcIYPlC\/mlcWwSTCDxvbQ1+wzgBIQT\/R3CN5U0QGU8IQsHfUmzXf4uFq9LHT0CKQnBEQ4mrfawSBr8Lk1fs6B79C8iWghVbjYf1PN+EropAlZiPD9UWX3lxeQH\/Lnz00n4hnyni4fuBTwa7hf18J1W4NS+eD+8fdGvPog8qifjuRXq8pkg3Vz883l0J0Vpan\/UECtjZf3uhBOOmCm918kCqhvGKmOPrSr8ohPxW4c+aQgSKeFCRdzqx9OYLJZFzavL9Ync3+C7lv0RQRDwgwysxOcA8EVPbjR0LiCL4gHgm+K1VoWknRb2aB8eJyWGmfRigZNgFrXBBEUII\/+auZelfry123bouZ0Ya7qt8fMipPbFO1EP6HMD3hAFNhlGq8MObAhmXisLQlV4eF9lG0kJ\/KeK4sRMGrUAVpO1htwMOs0pPBFPFfLqojIHnxGSGhLC91AXXklQpFKKjwXdU+\/WjYrwMrVwlWqAsqBqzUEHazTAy4nohQzISIpssvOQvY3LiNznp5PWhTkCftt5HhIWKRapgxkeABY6FLQkiAHC5Am3mhkVXXlNXqn+7oVi\/RalT8CTgPMS04\/ug1ApUBHEvz1g1RzsB+QTfV0ky0KERoRb36cI7AZRTETTj4YeT1R3mSWRJa76I0NPpJnwzESacgg+cTZRjMbX6F10XxkfBAJ0OqR5Npa1Nl7HASSq5Gh8xakhMZQSyW5FayecQ2FnWageLIertxn18rprkioT\/0MtX4JoQN5HbDD8yVla4wcD0EQ\/fF\/HwVZBCyg3tjqCb\/66hxPU4giaA9mE912IwcNij\/RGTF8wp3BimzKICQYyN+fh6hFcKicBK+cMOiucXSf0AtDf4X9Q7QizG4oDqDvjbYsR6TM5KL4\/IaCgtqu6BkEi4f8Qi5uFLoRtWBfRWPAvuCzRNWMQB24rvhIUGqYRYeGB0xPVhEEMqIRZJ1YfyLsrQBVUDC7oIYzS0Hhn9xs3mtcLQJhApMQaiNlah7gV4fAWQQ908I+LhT8OdpmKuK328G2gVAM4DI2Kxifv1xfaqgaCwN\/19CNipL3YdDLqTceAPWbYB8c1FYgtyfdUzoOj7MisjzEJGmW4SaZ5TFKPxzvDvO4ORzjpNVjcoVcMkC7rHi1LTSZs9+hVRDx\/YIzNQhBgF3dg+iCrFUImWcIXYrwG9ssqnfajSx+fGfLxL7oYCx3c5Vm9cD0YniJ4wxmGiYhKAqbD7AXIGUVdKZBXPYPBMnBN0axvwd4XBa8A0GDeI7hFDuw\/lWLBrgWlifn2f0uOtqn6iv8KtlYJBYDnHBEfDCq9+rw7wehQ5j3r5UjyPYHo336+MQDKziPfjvsJeYGgPP7sw7aqagKyVhPdRzyXcIAYXxckQNy7HUOvDzoY+RJhVBfRunIcGpE34qZFOiDERSRmGhPwNurUmeAGilltHXNPUcrs2XC0kIjwrGs5RAAH4v1X94cEtBdpMVF2I+\/STeE\/gOsd8+n2RwMRSJBZKDNA4vEINsc0\/qevyB8T9Da1RqAiGdvhMLN1nQnLB1E5MBXJHJo9oPapUzYtGsHAKXKpThI8pJAexItrqJJ0NgvEAH07kz6JCgYd\/HZMEzns8i5iksgD3BxG0LnQvIFN49R9GvdrCSg+vB2NgwkItgKga82oLZ1shjsL36dN+UOXTiqNevh1iGLJ2rPKjo9UBvcmqQ5sk+DbxTFEvHxDRYG7tVypmVu2cYAIcU+XXn4VOaz8fYiV+s6LH3lNRwP+gdhc8KyZm3M9XFj985cWVXu6XOmSyumNygqqSNCp6Sz6Tdu+GLLETR3GeCoGVkz3t8+UF2jcxFuJvtyaqIyraOF93VQf0WqVe4D0U8qhUL9I+gRxm9IlJbOjXq3NhUIt6+YPVhfywkmbCpogGa4fvuMrPDSBvKr8xKjxgEcU3QQAEmA+IJlGPVlnp41mVXtetMGQhLFeoR4b2DUhayhKM8\/B8GD\/kT+P\/Qnw2+bQaU50UMfT7AFZ\/OkRWfMeQMVZC9UUjxH\/iAVLFPivGlTob3wQjjvP86SYZuqgLY1LI4JtEn6EtxASCmFhbpPeVG2mCwYDjXOnV9qgJiJ1UiMc2aSIZXujljTE\/z4gG0j5sv59IOvDPeiuMcvVWUISTMGmiXlmMDQYeMFTUw\/swqTA2mIxVAb1JlfmIefUbdy11RcDo4vxFM9JiPt5ribDb4e6IenkEqJEwogF3GWVA4359daNt15Erv7Yn6Y4K8LdjlbdSBcW74fi4T19k\/OWtF1X79Uewewrrs6Etgdso5uPt4r6mdkBFDAVNfQ4KfMeloe5lVQHtzqoAPwGGwPmisoab7xfHGppflsDhHVgsx4+MxNbeWTzzbcBC3vfExLjgygD\/dKVfX1wpisSN38nA+EoCwvdDbm\/Eo21TyKJAm6wp0ket7z5Qka\/9TQb6aIchKYkKCWc5uQLfCt815udVUDkmyxmW9ay1FhWD\/qIRVj0JeDY2uBIZQqJLwI+HzBnneWeTKtzaEzuW6PGQR\/+NChtEeODOZ678TD6xcSLzVqQ++vUQmEvgRaUYXDQwA3Yi\/IuwQUDloDgY9Dr4QisK+C8bSl0PIbJKGSJaWNYPEuzJizZuvOQNiEkGs0L3Qzhj0OBlmPAxP99YFXDdihjemJd\/Ju7XBdawBK3XahXzob4sJqoEMND\/ARF791JX\/taFV3KI2VV+Pq7qPJqlJwtVop0teI9V\/qXJKdKJnT\/AK3Ct8GL+wYYSl1uWBOVFQt9G0I1VkBwSiECueHymWOzifr4CsDsoZFZTqP807tdVZYN\/olhbzMtHxHNYhck72Fytmc0RATzQZZHSWFvkmg0c8bCh\/wwLHAqyI1INWNLYufDepzKSqvq\/WMAipe8cp0Ou6mPvalp35WcRsy2fX+RU\/xPJJFBt7MeeTcLCEffx78Z9ehS8Yc2F5DtY73f0TKLwpoUQegfQdAGL45E1hfBhq\/x8nfK3vdh0qnzOfmZ+tpvlFvWy3PVtbE5SpIsF9N9U+fW9YAJMuFQSBRoWJ7FzIoHCChoQ+toa1PRxUdh3+SdwvRaW8es2lknEisWuo8rK4FxYu2G9byhKmwFxr8qr3xL38yDyb9WHlSsyb4EehfNFcICH90nXjozxxa4JqUDp4s6qfkJELLxCQMWeYHMEmFrI1JYIw43tOJyHd477+UA8oCdL2iAeG++GgnRKj5bhntj9pBiuFmp87yqv\/klAttYUpl0FXTRq6J\/C+Mj8axlo0sKyP9jH8hLNbI5Y1AH\/AwsxXEW4F45XsczYcSdzw0CKkPq3YO6aqG8MFriLZd\/Uz\/K29LDchQm29EOq3075P2evnK5AojOlKq\/rVnxvIZ1aUEgSeVQ7qOLSXzSS4WjagNjBUBPXp69CHVrnceeSTrK5H+9mOfM7Wc7BYbaAEmwRjbKF1MNyqYflLGpli6RPmtjLYwF+O3bFqIePKL+ilfo1YRKhYZLBQoq46HVPXiTyi9tZ5u8TLJ9aWcZRYmXCNQMGtuB\/RFJ\/dWCmFvPyu2I+3oQJ69SRhFvB0GrtYYzIebb0W9QyegTirbAUA\/rG8Vzow3Ovj7ya97Ky9\/WwvMFWFnrj5uWXfN7JwGhgYjAFrlfp4wcjBp8N8dvStZeoZ7B24Hb7jqhUJas6YTXSOBGqKXZ8U6sT17AMeM1s\/js6WM7oSTZvsJVliACbrYWXfrImoB\/FgjPZwqlwwQSTC8s374v7+KpYkQQNALWx+df2sNyyQTafRthCIraIBtg86mDZu3pY3sMdLNsZ3HFOqSqg3xL36VvBxJaase9FD+ao8F3+rohHG6gp1Fei9o7z93NFbSzzih6W+6culhM\/yeaKj9nL8gi7YivLpBaWiQ9LxBZTN8vp7GJ5j\/axpcngkmDw1WnxQu3XKJcZ9fBDyvAjclq9csezjE59lSUzhHGHGL2mm+V4EmLyFFALyxAoF9D9YKAQriNDJDE8pxYIpzgrmEm4uibmKyMzCdfAJIekIwwfjnOVi0saaGRYaTPLMIkVUgvLlqiYbq0ODId3SnV\/ML4I8IBEJa3Jhv05kN9rWXQnnIv7W4sKspRWh9zSrw2ESHX+CZYRJpZvMVeOiID6U4K9Pl6cZiKfFs8OS7RiZmUkjXp4Y6VPL42XpN1W3siSoaoDzH11D8st6GI5Q1ic21mW+MZobSyL5PdfTF0sh7pY9tZulvOzLvbQi2ssOgUBPKG2yIXCdIfOJLNtWgiGDvjqnP3nirpZ9se6Wa6\/i+V046NhkuAjqg\/qbGDkbpYrPnAny+7rYjlFXSz3S2BGdU3oTdhVoNthtYx6+GA8oFXGnrjsLqVTd7GFt3WznAO4DiYQdvpWli2T3AskOB0mI\/RsiIfOnUZYYiXousQIM7WDqr4xSIZRartrClMbQZSPHb5l7I4xP+\/evPltl\/Wxgsu7WPZAP5uH5zpGrP5V20qu+KB8Hm0QVR5PFfX\/XOEAADZaSURBVGwARlfir6Kt5pVIGz0Ja7DauZ0SCvpwrkgYESL3GOpoC8v4JcbJtoDW9jK3QBx5IsGuiJVd\/mClX2sA7jeYXyw2Xv1Ge0w0sao397C8b3WynJWdLHsEC3Qnyxbf0\/mNVcN3GWLzxWLexXKae1luXjvLOm0CyYtFwAubatz3fxq9rJvlfqOL5W5Uuy1WW+cHPF3DOdg9IYINsvltLSwzR91g8xMXX1G18p23B6v\/68NGgol44gRLXNTH8n\/dybK3Y+XvY3PpBMsQ4vkJlpEsERN08yKxk6VgEOyg2AWFT9jgIxYI\/LAz2AXGwkovKv5NPB\/nYscOejSRGhnx8S8G3bImbQvLWIV3amEZglma2RwRkrgtX\/tG2H+FiLWO+LSNEOFSuQLBgAA6d+asooKGirYSuMtQn1JIBKphV1ZYX8TyX9fKsg5iUcFzYZHFgtfNckMnmed7xEhM4uUJ9tZw+A2fCD122U\/WrmXJxayFZS47yeZ2j7AFQlTGQuD8lqdrUJ+sRTvRw3Ke7LEW2wv0IlIZu\/UVXSznR90sJw6mwSSwi0\/Pt0njkxCBx+08mFiD7Mn3d7GFf+hgOc90sOyTWCz62dzkudgF+lgezhWx0KiLiyB9J+OpspMQRasL+QnEBsNS3lDq2oGYYPt9QUCvlAYs2zW8Moa2plAfCpdeIaBzW9mCq9U5zezRX2NhUWoDJjqYRhmQ7MdHi2fkYVcGUzp3UzBpKhdg0Ei7p8qvVwNwHr7v6oB+EuIvmNl5DSEV+PT28HwZqNDGsm7F2CnpCM+IhRPP28myOrpY3vJe5v5pgj1zNTEal87YyjIb8b2d3+35NIwJroVFpIflbOpi2RPe8wKdBepkOd\/tZrnV+OCDbN6ED\/NCG8TqFpbZ0MIyl7ayzM1tLHN3G8vqBbNi4kEUA7M6zwPjN7M5MkXPD9wq3gQmVbjIwspqlUGJFaXVRde8\/U83EEuK6xkBJqzObSz7Y63skcvxfwmiLrGVoYOryCtco6qIL1u9iwmk\/26W5xlii0Za2JybT7CMT\/SyvFG7JALxEhIKdP4WljmrlWXcOcgWj3axecJSvWnTa1FPaYPwrcI3bfldYZwKuiWmNaiVZVzTznIFkoq9jk9egl0SWXHZA7GA1gRVAc8oLMqlMsEC1uaIh29W1t8TLKMMujB2YfsY4pmxu9rsFl1tLHN7K8t4roVllrawzAPdz0PCOlXDQoINAK2H5W7uZDnJ+lkXaBqphWV+poflbcWqeTYYVzVMKohZuA+YFRMfE2syfVqJqG0sc9NsNvvlcGUBzrWuyNWJoAaAyUU92rpo0Yzcimfe\/L11xNLqb731VQm28bpBZs5tZZnJGj3tLPf32GWa2WwhtgJ6VkDJwiUjQh35wapCLW9LNRMFuk6ywEd7WV4d7o8J38oye1tZZh\/+79QJ8Zx4lxaW2d7CMoZ6WJ547h6Wu2mArRIpf5FNb\/x\/8ULNE\/PJEEvsqmiIrMLvnSybt7LMY60sO5mm2cIy7x5m5kPEIrysnr3q2QF2VWjt2+6IFF4Jn+76iKnVhk3tQF2x3gUM6dnEXt7OHnlTO8tqBNM4mVg1SFQYdzwzvgO+B\/6e7PgX2iAJ4HkgDfSw3JUn2KPnjX3nJU1H2f0zellOIURAaSCaOPjnqmEy4Zm6WPa+YyxDWEcr89krw2WXvCOf2ASjRIJtvfYkc\/+zi+XVSJ3djesMnGAZ32lnmeuI+eGCEpUq4KaD9bWh1FVZ6efZ8SVXJnW1BFur97K8YkgFmHBgVjyLtLZikk98Vvm8UsKwG32w43WznJFuNndugh0WFlo8e2XxjFsqvTwfZWThvlJJ\/S0so56YgQnvb2UZt0MEhfSB63azvIo+Zv4hwaonYECvTbBXY1yUe+wge\/jdvSyvG+9wtpjy+TQs1JDu5Jjk5hxgD0+IIrtAU6R2lvXrXpbXpiy8k03Mc9Ww0\/WyvN2Kee2UYNsu6mPuD3Sy3F93sJzSTpa9Xxna8C8mCt4H7wUmkFbSxZjMIqwS4Y+hFZeOY4STbPEnulnO0k6WM6rcJi90THA+GNpyt\/R2sdyCQeZNguKDIkvfeZUCPmhjGfeBYbFwpXoPa1cXPthOluPpYLm3DzLjOmL7JgQqHGYPv\/8km9v8fAyPZ7ONjUk+9bC8fR02ieMCTYH2s\/u1bpa7VomG59MKbW94thMsI9jGMu9vZZmZLSyjoJVlrGhjWfE2ltkmLZ4yeETqdKnFcPRbIvAJYvnjdu5eNv993Sx3difLrgWDwLIMA8wLZVxnw\/XASHhePHcnywl2CX\/6wnEg+O0s98pOljPceQq1AswMyzwWGTSpgmQ2t7GsSBvLevwEy1zUyjIyMG4nWMZO3M95jfOhYUwg+VlSiq+ezU4Z836BbIQonV6W14KJ5BzQ861hYQHj4VnRMFnxscFoECmnahmH\/jXEFoy2soy\/Qc\/sZFnf62BZizpYdoNkqsViIk3GMNPd8NwQzaVun5VoZ1nxTpaT3cFyvt7Kst7VzDIKhtj8hPO8yRquBybFuKhIKdVglDpfF2jV8PxyM8ndc5RlCHvAeU+AeKn283\/VFOkPB22xzVbGxynRCp8vdbCsB5Vodr5\/1OlsYOAWljnSyjL3trLMEezYStSe6iJwthp2eykaLxJicwvLGGhhmfvbWOaUGfg\/oWE+YlHrY3kjrSzj+ZYEOiV5Z894jR2jLWpq36wt1B+NevlddmDClIQMkWq\/fj9QCfG3FUSfOLhCotoHjWSpzjv3LHNVqYCB6aAKdudrO1n2Y9A5zoZ4+FJplu44of98ahCdIV04+\/8vNGUEtLwOec55\/EKowkz71o4lrt3K7x40tMVAEkGKJ\/DJVG53lU\/kav8bmW3jLoCAAoCoyewWidSH8h5IjoZfEEnrwHpCYj4QEwSubUHazeMu8jxoH5v95k6WswXM6xywC+1COx+bFKkLsNiWEpv9gqXRsFf\/Ldx1Et6XfxAooxLtRFYWAZySOM7kAfjpBTqp4Xr\/uIsE3XyVqkmLLJIKN78NmSXxgN6GE1qfngUMoZ\/iBnDQS+QFbTeCDZ4vrm4Te+RNXSwnLK2vEwfqQrvQztemovbaWOZyYnTGJXJByFmXxdX5SWycIi4+f+bbwiafB34DH1Z6+S7stuUF\/CEwMyL5wMRBO1onEAcBhAYGVjmmlT4+AJweoA5WF7ru3lOWno26PPAHAp7FYuATItje5CvHXXAKVM9mv6qDZW2WETkTB+hCu9BeCg1M3MoyC53z+zQEXO\/lgMwFA8vsrzE0k6hHv7nxsfTs2kL9t6iuqTZNhKqCP1VgT7K+WIVb+8rOJenLwob2bMSDcpT8pIBX8aSuIBgy+GyAtYVMrUBgFqug9TNIKzzBMooviM0X2ku9wTNghdFOueZv2J12G\/gnbPL9gBZC4TiA8k+GG4c0VIADAhYJ8MIoCl9XrC9TBQAmENABti\/Vr684RQEvgeCYz98kKsuZWgv04og5tWJNx9mcP4B5Xyy3yIV2oZ3NBsOjZaGfUkIE4IZR6SNk8Cr8jag7oH06jwNBzIZhq74o\/X2TphyCCSOG9vfaIv3ZKj9fFvfpP105eyxY\/XQUMrS8+mK9F3jKk97EojaWfW03yx3+v2rJvND+85oM+JhLHSzrxBGWOWmJVDCjSFDxuj6yu8w1jMqQzmMmo7V5rkuq\/PwPcR9fWR3QN4jaVbdaIAAhn\/4BlMyQWEMSzT7u5z1TreGLnfip+ZcL8LCIqS1CVTrnMYqaWcYWBDz8X\/LzXmj\/+U0mteTTCTbH45zzigDXq4rKPZ17+XUoi+M8JhWhPCzsUjAmI7NNZbklC8dLMZivBONCURZgZFadobDJf7dzqb5S+YcnI1EP18cfOIR6Nu6J5TZBSHez56leaBfaf1KDKA1ffvMkaB+oPAnmi\/n035wOWA8Y1rvK0p8aq\/\/M58L6jJRS8GnI1OaOK\/8K0bfSx42dS119SGOTJ+l\/rit2NTeU6quBNGi7\/jgSGMmGVoKKcgKTyeC7UonSzWxO5HzLKLrQLrTpahClrYQUgYlmJ1RvDJtaN\/hDVPCwypxORmGvduvOpa7nqgv1Y6gKiT5U8thV5uoLe05RFnezhV8EQDZUrNt9mvKbikRdHp\/+aHWhfnyciduiVpb1oZNJcDm7+Iz\/q+bssw\/Q+dyn\/j5XfervyfrmUAt7hFrYo7ZjHhV9+O1UfThH9qlrTrVP3RN9zud4IX3qHabal\/q9Jvahqb5Tnzv2rhP7ulgWjLP9zWzOuFIpIa9+CyKrAGGM0Eh7zepTUX3ZjHeEPWlfUJDJzjpe006I2dxerF9vB2YDHWd\/f5REIr78wC3sYWph99s+EgbhQWphD4wbwNR9D1h9agDx0dD3YLIPA3pCXP8h26RK3Sefw943Z8Jxqa6HZ5d9D5+mL9W7PuTom+pxk42Jsw\/Xw7kPUttrc6n9XYup\/VJgZGGcHqK2N86l9nflU9ubgU8lr9928Xxqvzyf2l6HLKv7xLXa3rpA9LW+Ksfqy6D2SxbKvpdnWX2Z4tqiT3yL+6nt1TnU\/s7F4r7yvR4Q1xjrA5PdT62vzJZ9lyMeQH6L1v\/KpvbLVB+Oe2Dseu\/EuY73egdsKlN414uRO22965vmyXcV728ddxGOW0xtb1HHPTx23BuBe2aNyVvUOOWKPjx3su\/1eTTKsqmZ3f8rInozEaUR0cVID21anv6hs1WP6ZQE\/Xd7qeupuF9\/FBXqVT+sadUpCk05KZFIvGvYOLiLtvQR7R6i\/vlV1PXuIhpe2EQUOUm0Z5B6f7WBuq5fSiOBQ0RVA0S7B6j7S8up53NP0MiSo0Q1g0Q7+6nr+lLqvWUtjS5vJqobokRDL3Ve66O+Hz5Ho6taiRqGabSygzqu9VP\/XVFKPNdFtHuUhkqbqO3ieTRwd4wSz3XKvqVN4sMM\/KWSEhs6iHaN0NAT+6jtjfNo4I8RSjzTQbRzhIbWHKCOywpo4O9VlNiI643QYOFO6ri8gAYfaKDE1m6iPSPUnxMXk0n0bekm2j1M\/fOqqPPdAfmu0ZNEjcPU+\/NnqOt9hTRs7CeK9RM1DlH3N1ZSZ7qHhuc2EoX7xJj0\/WEjdb23iIYL9hNV9osx6bltHXXf8DiNFB8hqh4g2tVPXf+zhHo+uTzZl9jTT50fLabOd\/tp9MlmohNENEI0XHGUer62hhIbO4k6iWiUaMCoo97vPyWfrVce1\/f3rdT38+fkmJ8komGi3l+sp5N\/riDaMUw0QESDRD3fXk0D98WIGhNEQySO7fneGhoy9xAdk9dP7OilzvcGaNi3l+io6uuhzuv8NGQ2ER22+vb2Ued1ARrKbyQ6JJ8jcXiAum5YRsOB\/cnrjdZ3UNcnymhk+TGiFtk3vPEIdX6wmEaeOCbfFX0Vx6jnllWU2Ngx9q6LaqjnayspUdFD1C37+v5VQd2fLKPEsx1EHfK+A4EGee62HqIu2dc\/N059d2wgivcT9Y2NSd\/tjr6fb6CBHzxHtHO0M5FItCQSicFEIvGQkycUVQfSP4yStOpv1DauDugLqgP6WiQUjT\/6eVL5Qv72qIe3n1g3C0auNhSJRn\/I5DWwXqM8R8jQf6jKgdgpkUh8dHTwRHP78TLaW\/dPOrQ9U7xs\/\/EmOn60kPZW\/4MO75pPdHyUTrbtoWOHvbQ3fjcd22MS7R2kvq6ddPSgm5pid1Hz3hKipkHq7amjI\/sXU1Pln6ll73JKNA1QT28VHd67gBqjf6T2g08TdSSo+2SUDjfmUWPlH6kj+hQlmvqoq7eCDu3OocbYH6krtoVGd3RRR\/dmOrQ7kxrjf6behjiN1LVSe8cGOrhzDjXF\/kL9x\/fRyP52amtfRwd2PCKeb+joURo+1EqtbavoQMODtLfmHhraeYyG9hymlpbltL\/+Ptpf829KdA3SUNsxam4uo321s+lA3cOUaOylgdZDdPxYMe2ruYcObc+mkWdP0MkDu+j4kQDtrf47HdmzmOjwCPUd3U7HDnlob\/yvdGyvn+jYKPW21dPRAwXi2U7sW0qJeA\/1tMTpyP5F1BT\/M7XsX04j8w\/QUNtxOnH8MdoX+xftj84WE2xopI2aD5fSvug\/6EDsIcGMg6PNdPxAgPaG76ZD1dmCkQcSR+jYPg81Be+iI\/ULRV9\/Yj8dbSygpoo\/0bHtXsGwfSO76cjuhdRYfied2L2UQL1D9XR4+1xq3PYHaok\/Jr5390CcDjXkUOO231N77TqizgR19YXoUEMWNW77HXXt3ErUNkydPVvpYH0G7dn6O+o9Vkc0MErtXc\/RwdpHxPX6jzdSYmiY2tqfpgPVD4pnGTh4gEZ7+qi1dTXtr7pfPPNIXzeN0klqOb6c9sdm077wP2i0tZeGE13UfGQp7Yv+k\/ZH\/02jde002HOcmg+X0N7oP+hg1SPy\/QeO0PGDfjEmh2vzxII1MHyQju0zqSn4FzrakC++xcmBPXSkKZ8aK\/5IzY2llNjbT51tFXR81zw6WP4nov56SiQSAqRBkSjFavI\/oLIEeEoB6AcN\/mMAFbYjbNnkNTjOft6USEC5ePl6XLwqwJdFvbLebiRf+3\/VAb2\/5SlcXOuGkSpsar9CMa6qQn0lwjGd10okEq9u3lm6v3HFh2nb\/DfS5pyXU+3jX6CWfcspHHDJvmxGDatvpea9pRTyzhB9m7IY7XrmJ3Ss0UtB4520bf6bRF\/j5j\/SkR0LqCL\/7bRtwZtoUyaj\/cHZdLD2USpf\/DbZl8XoUDyL9kXuofKFbxF9uMfR7fnUGLqTyhe+WVxvS+5\/UfPuQtq19WdUvuBN4r5b572OTjSW0fbnvifO2zbvIipfeDG17ltBdeu+Yh3zegoWvIvaDq6hmpWfkX1zX0sRTzq1HV5H8eXXi74tea+mWNF\/U9vBtVRZ+l7Zl\/tfVL30E9R6eBVFCmclx6Ru+U3UcuBxChfqyTHZsfZ71NxURCHvlckx2b3hV3R0l5uCxmXJMWnachcd3jGXKgreLvo2LmC0b\/Fd1BOPUOUTH7Ce5VUUK\/4gte1bTdHC65LPUrPsU9Sy70mK+NKt+76M6lfcQieayihkjn2LnU\/9iI7v8lOwAN9C9u157jd0tGERVSy+VD5LJqO92\/5OB+MZVLFo7FscjD1C+yvvHfsWWYyO1C0QTFC+4GLZl\/NyOrbDS7u3\/IrKF+D7yPFr3lVKO575gfwW8y8S\/S1Ny6l+9S3i\/9vmvUHcv\/XAaqpd8TnrW7wOIb7Utn8NVS39qOzLew1F\/ddR26G1FCt5v\/X+r6Sq4o9Q66E1FC26Jvktah\/\/vJyfPtv8XPVNat5TQiFj7FvsevoOOrbbmxwTHLdr9U9ob+RvVL74LWJMKhe\/mo5U5dUS0QR9N+rht1UH9PU7lrhCEY\/2FcRAA7wfpXpiPn4URd9wXKXX9f2qgL6mtlCvDZu8TJVRnZSezrj09QjdOrF2ljBXWzV5SvHblsVpH95e4noyZKRlpkpgiKNioU+\/VhX5Ol7r+9qeJ\/5bfNBg\/mVUvvCttHfr3RTxXkUVi98uBh\/9+7b9nULGDAoufgdVLHo7hdwzRB9+Q8P5Ee9McS6uAQbChKgMvJeatvxFfGD0bVvwZoqXfpgaN\/1BfNxQweVicKvLPkm7n\/21YL6QG31voLrlXxIfAR8cx22d\/3pqeOwW2r7qO\/I49M17He1Y8wNqWPE12jrvDRRE39zX0a5nfioWIlwb98W5u9f8gqqXfFxMQPlRL6LGTXcKxsGzivdf8Gbau+UuMZnkmLyDKha+jRqX\/Y7CHpdtTN5Jezf\/jULuK+Qxiy7BNxAMon6vWPRWipqzqOmpP1H5orfIMVn8Forku6jlHg\/Fiz8kFh8ci+ds2vwnsaCI8RPf4mLau\/WvFPVdI64v7rP47bR3298EIiXug7+D7svFfXF9+S0uoYhHF8eJ8wreKa4Z9V8r3g1MKb\/PxeLdmzb\/UYyF+BYL3kTVSz8umF+NMX4D0+x65mfyW7gx7q8XC8mOdT8c+z7zXkfb13yXGlbdOvZ95r6Odj59O9U9cZO4jvgWC15Pu5\/9FdUs+3RyXmyd\/wZq3Ph7ipd+RD4fxmTRm6lp\/Z1iDpXb5+eW8fOzIv8dyflZgfm5WM7PvZvuHj8\/PelU5\/2ieG88W\/n8i+jwhpuo63Dwq4o\/UMAsHkh777bFLn0c46jSNabuqy3SS\/E7\/o54+EaU7wEfolB6yNA8qaRcBp9UPOD6SW1xuoApBUU9\/J7qgH7EQujfcSrlm4i9POTR\/lZbpD9d5dfvLc+fMYuI3nC0Nn9vtf9yinhcVLX8Y3RiXxkdq\/eKQYx406l6xSep9eAqOhzPE5MbO0HNms9Rx5ENdCB0nzzON5Nqn\/oSdR7bRk2b\/yyYIeK\/iurX30LdzRHatf7nYgCjhVdTw\/pbqedEFW1f8x0x0NHia2nH5h9Rb0sd1T3xJTHY0ZLraFf5z0UfdkN84MqSd9Oe8B+ot7maYkUfoJD7SqoseS\/trfwb9TTHxCTHB4wteT\/tr76fuo6WC4ZCiy37IB3ankMdB54V18Lkjy\/7EB3ZsZja9q4SzwHmrHrio3S8MUAndi4REyXidVHVyk9Qy97H6Gh8sfjwYkxWforajqyjQ5WZcky8M6lmzeep49hG2lfxL3mcbybVPf1l6moOiokprue7ihq2fpO6tm6ljvJnqMJ\/GYV9OsVXXE\/H9hjU2rSCKhZfQhF\/OlWt\/jg1N5VQ885iKl\/0VooEZlL1uk9Ry\/4n6GjtInmPwquo5unPUfuhp+lg5aNUvuhiihTPotr1X6TOI5toX\/k\/xMIRLb2a6jZ8lbqOBQVjVuS\/jaJl11HDhm9Sz\/EY7Xz6R0I6iJa9m3Zs\/D71nqih+lW3UNB9mejbue0n1Heinmoe\/ywF3e+iyrL30p7wb6i3tVYwXMi8kiofez81Vf5FfNvKwndTyJNGseUfoH2Rf1L3sbBgnrBXo\/jKD9OB4EPUeWiz2C3F+6+6ng43zKe2\/U9RRcE7KOJ3UdWa\/6Fj9Sa17H6cKha\/TY7Jmk\/Qif1ldHy7X7yXHJNPy\/lZNdc2Jl+g9sMb6EDkQTkmhbOo7tmvUvuBZ2j72m+Je0SLrqUDlb+k7hPx+kQikeSbqE\/7EBL0qwP8ubCH3zaei8YTKjxGTN6BtN3qgN6ISpjqt2q\/6\/3bCngSzZRFPNodCK5GXZuIly+LB\/jvagq1j2\/N51ceXX31DGc1eyeVlV3zqkrvjFn2vkQi8QOhEAkrQBclmruEkSBBIzRAR2iQjtNIY5vQo0ZpkAboMA0mjtFwTbMwiIxQv+wbPU4jcVgm0Ncr+4aO00glLBhQ67plX98xShzoF31D1EEDdIgGmw\/RyGZ57hC1yeNajtLI+marr1X0DXU008h6edwgnRDPN9zVSolaWCbQ1yz7WlqIdg6KvgE6JvuOnKBEGBYR9B0VbfhYqzSc2Pt2HCNqxvsnxHnoG4odpsS2Thql4bExaWoXxyXHhJppZHe7NSYnrXFqpuHQcaJWvH+PfAdqoZGKZuq\/MyrPTRym\/r79NBjZR4lINyVolPpHDlJ\/1z4aeGoXUX0\/jdIQ9Q8foP7WvTRQ1kC0ZwhHUf\/wfupvbqKBonqi47hvH\/UP7af+w4004GsQOiLGvX9wH\/U37aahNfvFuw5TB\/X3NdHJqgYamFdvjXEb9fftpf6aHTSQXWf1tVD\/yb3U37CHBrPrMSjiPfv799HAjiYaLpHXG6Rj4tyBqj008hgsW3I8+3v30kB0jzREJfv20cnHqmi48KDsGz1E\/R1N1L+qXoxxgki+f3sT9T9WS8PmPkpg3EcPUn\/3fhpcv4cSWzvE2PWPHKD+zv00uGa3GBOMuxiTln00UFhHicpuMRfRN9C6Xxi9RtYcF\/MJ4zTYeQzzro+O0DiesBOiFccFYqQg2J4OP6VfsXnulVqtX\/ssiuJFPHxdpZcnkDucBNUIGXwVojwggyMHEdEistCU62B5wUTd1knQh0MFrst3LNG\/gJq16EskEu9NJBL\/SCQS\/0q0JH7d8a6Czr6PLqWT94ZpYHaMer\/1DLW\/aR51f3k59d8fof5\/VFLPl9dQ22vyqOfbq6j\/gUrqvztCPZ9bSW2vzqOeO56i\/gcrqf8vYer+xOPU9to86v3Ns9T\/YIz6\/xiirg8soY4rCqjvr1uo\/4EYnfzFVurUvNT+toVjfb\/cSp26j9rePF\/2PRink7\/eRp0z\/dT2hnnUd9cWGniwik7+Zht1zvJT+zsWU9\/dW2nggSo6+Yst1DHDpA5u0Ml\/lNPA\/XHqu30jdVyWT+1pBXTyHvRVUd8dm6jjnfnU+bFSOnlviPrxrt9+htovmkddny6jk\/eFqf+fldT79aeEa6TzA4VyTO6NU9\/31gu3Rtcnl1L\/fREa+FeMer\/xlHBvdH99hRyTv0ep54urqPUVWeP7vrRauo9ek0Pdn3+cer+6jro\/9Bi1vSJHuDi6b3yCer+8lrres0S6gq4soO6bnqTeL66hrquKhHuk4yoP9Xx5JfXcuJo6eUD0db7XTz1fWUU9n1tFnZd7Zd+Hiqjnq6uo59MrqeMSQONmU9enl1LPV1dT90eXU\/vrZLAO3nd8XwZ1fQrHraGe\/3mC2t+AKgtzxPv23LyWej7+BLVfJCsvdH1mGfV+dS11X7+c2l8zT7ibuj73mOzDe70yjzo\/VEy9dzxDfbc9R90ffky6sy5ZSN03Lqfem9aMvetli6j7S09Q75fWUNe1JeKe48bkfUvlcW9fSN1fepJ6b1pLXdfJ4zp0Q47JF9dQZ3ohtbJHqMM1vg\/upvbLF1PPF1ZSz+dX09DMJXSCPbzdySdg2FCB9vGGUv6ZoFu7dONsNkENdVKFm\/+iplBvBz+CLxFOqSp7hD1WCm\/I0DYCNgcA3CFTOxA2eSLi4UMNJa5jYU\/aPc6L2glV1YDcgQuqQtghM21CKFkLe6RygGULH6n0k0qfJXx38KXJPunHTd33gK0Pvljpbxzrg69R+mClb075TqX\/9vR90vc71ofrTTxu7B7yHZQDf2LfQ453xfOiTz2v6nvYcZw613lcqjFx9sHvLPuVb1P6iOU4yyb90\/JdVJ\/0MSt\/7en74HNVfnf4ncf80OrbTH9fqvdSPvIzeVf0Kf+\/87hUfXh\/1afeP9XYjfWNCky3OcucPAAEG8UnstSrJipjnIrCBs+vK9JPhE0+Gjb5SMjQmkImP2oVgs8XB6GAVm2x3DlBW0zXJY2P87fnpwiHBCEIe1dZ+vsQJYK\/EbwR8+nFMHhFPNogdmPnOS0sIwthZirI4EK70P5Tm4Xm+QsnDyCeAslCKD8T8+k5qKOM\/lhR2ozakpmTJg6hjE1tiXapBSjJYEDevsT1kQl8ho6q4vQP7Syd+ZnQItc1qh8FiVXVvIgx4\/1VAX4QhagrvbyrtlBfi\/KI+K3Gl\/6JsKFfb7+molaW9ZHzAWXxQrvQzmaTeNmZA4DfdfIAaJuR9nlVlrdisfaV2kJ9c9TD+0XpWZ9eHfHoV+C3kKHdFPbKeAtQDMXySvinY37+waDKQrITTNTbS1wjyEaCQStiypKQQSPNDWczUPLEcWByP3dDBIAsjq0cYnPQPWPSFEJFzWxO5YVkhgvtP7XJZIZFQOdY6pz7TkJqIXgHIjVSBcWG6OMPbPTOeLP8Xdt4eOVVhEqQ+BvJQvgb1R53LHENhU1Hxl\/Qk\/ZtyOaqolzMp70nZLquEdXqAsKUfbLSq9+ijg97eGFdsT4oduEiJBhP1HtBCABRgdjNLOPrF9IJL7T\/1IZ0QlmtI1Oga6BK5baCGePK1CiKmNpn64r1IDw\/9SWu\/pCR9oD6DSiV1YV6Ahsjir9XBy59fdCjfxubJrCzqvz6CPDpxl8RZusC7Zu1Rfqh5rWzCCfAjYTVAQyMkpa4YNyve5XsvTMwU4Nsrs7fkHflNcgfhl8Yf6MaXdjg\/dv9s0TRLNAJlrENwOUXgOwutP+kNpbQn+FXcz1ckP6+2iJ9QCFvIAMJKbqr50jbEWjX0vR3Vfr5lfh\/ucGvqw64ViD2AnWlsSsDn25tnuvVIVO7HzA81QG9YWv++CLw42j1wisv3rU0\/XcRk9+Ov0Nu7W91RfowDFSNy1Cblu+ImGMBH4qQeLx7WfrJsKlVqvMACo8VpNzmIz7O5rynh+WOTHed1\/OnwXIJi7myLMM66jxGNWVZVQ0W3emwEUgLrby\/stLKZ8J9pLXaec4LbSojTN7Pbi3H79JifKqxeOk2bEaw73Sw7FZ7oTukAUKChQsIVRYkGiVvh3cnVDDjI+o4RUEz7cNVfr0Zx4Pfagr1nrChfR+\/gfHri123o3qD87zTEgxadUX6D6sD+o2pnM8QkUOGduLIyqtg2l6DPgRjYyXBKlKeP367P84y\/iRB7SYOxku3oUqfdEd13\/wk9c0up74\/baLODwQmYZo51Pa2BdT1xcep68bHqfuLjwvfrD0d8Pk0yUTw1RZS7x+eo\/6F1TRQvJ0GPHXU94+t1HUDfKNy4XCe+3ybSB+8KJd6vrtKZO0MFG2nk49GqOvGZdT6OqQh\/luMSdfnllkpefYc3Jd+g+iMmk\/HWWZSxQSFzLQfKWYMGdrj6AubfPtRIL4aPGI\/VhFCmWsD+i31JenfBaSz8\/ezQthhgW0r4HQstICQoVUhUylkaI2pkpdbWcaS\/yxMaOSE5tHQcwdkeJCNTj5QMWH3AQOBee3U+\/vnZD7shGtPpUm\/eNcXl9FwOXL0JqfhyDHq+gyCDZ7vvVTDTn8\/dX9vFY3ss0LPHIT+wVW7k3\/33bOV2t4E6es\/g4kVwPtx9qioZmInqJpRL++R1RW05egLm3yJgGw2tFZ7HaRzSogugYUsYvKnkn2GFttemj4AuR5\/I+DDfk6C5b26g2VtsyBIJgzMS62BIQeKdiQn6ujhHqJRBPBJ6r5p+bhdTzDw55Ylfwf1\/nrD82RgGfhw8oHguOudjnpuX\/c876fu+QD13VvuvOxpqfsrT0yrBHAum8Q2z5oAoaOSfYJu\/iUUTYAVGX+DaeN+vW5HqQtJIcJldM4pZqTNqCnURbB1xODXITkiaKR9dcMC7T0I8qgK8CcjRtq4OrMgVD\/vYtmVL\/3SKo8KEIBEBzLdiQYf200nXn0f9fzk6eSkHfDWj2OW6WRgnNN358Zx10r0j1C\/WUM9d6yl7m88Sb1\/fo6GrZhyOyEs8vkwE+7Z+4tnxl1reNsR6v72k9T1pWXUd385jdSOv19iYIT6\/r6FWl42hkLyUm5WfaQVZezWcZsTCDnz1QFdMO2WxfwzYSPtE2DesF+bCV046tF\/c7ocgxedaov0x0KmtkdFmCAYO+7X92EFAnqH83jQQTb7Ld0sp\/ylXaXhUQG9kui0Eh1KdlAzu4d6vrs6OXnB1Nix1DnTxcDQu9tn5BMNjSavM3q0lzre66UT7F4rDBRGpX9TyyseEQghdhp6at8E8f50TdzzisVEJ4fHLjSaEPHlnR8rpI50g1pfgyqLj1C7VkA9tz8lUEg6ZhrWGLy0JS5Z3CwfQRvLiJVNYF5Q2K19D7nzEZMHFX5z3HRdglz6qE+f1sqG00Jhk69ok0gC8WSfwQ3I\/1YdJWFNS0WVbPbrulj2Ey\/l8qJggsHle5LzeWRnOyX6gDMjabBs11lhYOixffdWjLsODGLN7K\/JmGzFNDJe92EajstsLFCic8DCipq68Qz3PJkZHXdPJyX6hmk4eIT6\/raZ2tPyxYJ2pgvF+dZkeVFZcL2NZS9wzmM7Ic4ZxiuxebklRDNsQWGTtwkUDpNnOc85ZwTRIGTwDvmw2oZkP7KclkowaogQ48+aSO0sew4q3PexvJecXgzmaHvnAhqOArxpIp0tBoYxCFlEnR8pFtk5HdeZ1O4qoP6FVQIDa2jtXpHJJYPzpaFroLAhec\/E4Iiwfqug\/NO3DGp92RwaKj9Cid4hufOPJGQ7BZ28b6Ih76XUZIHveQjUSLSyrNOWEAqa\/HZkDsGNFDa0HPQh+yhk8CaRiGBqdc5zzhlFfS4du2xtkX7SHpEVNvljHeuvpgq35h1\/xuTUxrK+08ty2xGx5RzE87vBjfQwtb4yi7q+9gT1\/buCEjYR8+wxsFw8pN\/3XmrX8mm0BUh046l\/cU3SLztcM6abJlpOCv39jNxXL8sSqXdI02vX3CK9riPdpI73+KjrhlLq+ck6GijbOe7+oK4vPPa89O1z3WQBs8XUy3L3trBHJ8VHd1LI0DZ1rr8aNX+ToHaIcd6DVECD9yNJYfwZ54iAnlcV0FdtmKt9vNxwvV\/BfoRNfrdS5AFO7cSKnoya2UOuXpbzDAYNSPcvLZEaaYn\/FjtVonWMkc4mA49d8yEaWrdPXAuLR\/\/COA2HxySCrk+VCV3dri8Ph49a4vOZSjwyjVKJ5WMNKY4IYrmXen60ligxtjMDAfOFvN+L3bDrIkADkYPdLLdoJ5s9ad0jO4UM\/VNbFs+4EXxQV+xaFzT4d9Av4iXMtPduWpj21bCprU7lXj1ntGFR+rt2LHFtCJkTHdRBQ\/s33ExhQ7vV+dupqJ1l\/76H5XaCkV9KWUxyJ84ez8AlO6hFMLY6ZroZeA61vjybRg9KmAoYzY6x3wrxWlF\/diV1frzUdkei\/nnxafAHp2qPUOtrcynRLlFSQINP7HlJ7MDYMDpZtjBU9bLcg20sU1RGmCqFDX4PohDL3TKaUZEAvjD4sZoivRB1tu2\/nVOC1TlsaDFRMsKQvmCUW8G\/FWbat5oen0lNjwm5\/0\/Oc09Hx9nDvJvlLhlk80UJR+dgn29N7LKvyqSuGx+jRM+YEWvomf3UehF+R4ihTP6eXgaWCenKQDV6qJu6f7iCBkwJYwMaXNU00eB1y5PjJIPpa48KJBGI6Mn7L4cl\/vxmYIjL1o6b6GI586e669opZGqLAESHKERnTTHU9wWfAGHS3n9OCeUeggZPiMgrU+q7FQXa30UWhZtnAO0DUD0QqZ3nTpU6Wc4XelhuELrxgKjwMHHwz3XD5Oz54Woa2dU+jkkUIbjj5KNhart0nrDKdn22bNzvL4yB5eIhxNZJaPRAFw1X2SzQ3YPU\/lbUtT0D\/XcKDeOA9wA80Dgp5DxmYERUYYMYYgugtq1FKSDnHJwqSYSamapO2I9hI9q2WPuV9ds2Yew1+DHU4Xaee04obMy4HiJD3K8fBzNDzo\/59JPAuoU5XQDmeXj7dESedLHsH3az3HrkXZ5PjCyYxxHYMBmNNvdR97eeEEEUdnqhDCyf4yHq\/dV6GmnqJBoeFe4cgeiWggZXN007Q2Ecuj61hAZXNdLIjrZx1unzkYGx44JpEcvcw3LKu1juaTHgTkdhg3+wyq8nRASWV7sViQtVfr097J3xDgBe1BXrQ0jZBQa789xzQtHFLr2uyOVTZVfCRto8MHR1gL89bKT9bE+Zq7t88endSFOlSvbzV\/ayvDu6WW4txB18AHwI58d58dqj1PbmucKnqmigcLvY8ZJkC6tUNLTp4LgJPh0MrEIcW1+dQx28QADujR6w4BsdhNIgL\/x+Y02oBV8YrxbY6XxiYNhU5NyZjx13WzfL+bpznr0Q2lagfX9PWfoA8nYr3PxjrU\/PwiYmYHY25Wv\/L+rhRc76YeeMgMZRWzyWMojkhphf70ccNBR3950Sy2e6CVEwPSz3Oz0sZ2s\/m0cQr7vOQZoiJiVQKJMT9fHdQkS2+4TR13P76nF6sZOmh4FVU4B599HgykbnrcTC0THTYwN5e6Etg1pfMYdGLBcVpIy+f22m4W1jiRWDT5x7Bu5mucIlhH+7Wc6aTpZ3o3NeTReVWXm\/QUP7Rtynt1dZaBugxsf5dSGrEug5JSq79RVhUzsEeb\/Kr+9EuRX0VyxOuw0ic8jUvrlrWXpRxKP9LW66bkiFSj8d1MNyPtnNcoo7WXYfPhAY+sXalSG2dn6kJDlR4cppuzSPRptQLcuavEt3UTO7mzre55WJDikIMLnTx8CygYH7\/rbVeSsa2dlGrS\/HMWfqPkrdZIW+Bcnos5NZlXSU\/Yo6\/7swec9zZYXGbgsjqGTcnNYelruwl2ULXKrpJuA9Bz3a56I+\/b49ZemFwJKr8Oj\/DXhmGHZjPn4PMOUsVMmtzvPPCSHTAqBcwNOCIQshlMnfTF6D\/Edg\/wDRo75YHwm5pShxNqiD5aR1s9y7u1hOLXRk6MrwJTs\/6vS2OSIfdrR5zGCDomZ26l9ULZgTDNVxrWecuK2o96dPTzsDC7H20+ONZSDkCE+v9XkOtb4qi0b3S7VhpKGVOr9SSgP+saiv\/tzYWXJZTWwwSiGiT8USdLPcik6W\/b89toT76aagoT0qIalcYr4fX3MVPC8iDxgUNrRnoRcD3UZWPBmD0TmnFDLS\/lzp174cdGtP1xW7Eni4iEciVQYNvqWuSB9CvrCE5OHA0aKYccU7ndeZTiJGL+tg2Z\/uYbn5nSz7CEI0IWKfLWYWRqzvjSUvjKOhUep8vz8ZSohAj57vr3EeRR2zzGkUaWUTiQdvWzAueAOExAOZXD\/xnOfbMAa9\/7th3H2SNDRKHddNp8g+sUHiAiYVFm3suF0sp7GbZWf1vQCL8lQp6tY+hLDhqFcbAAxVyOCjAIlUXhkEMqHOEYonhE2+AMn+ISNtXNXCc0KINgkZfCXiPBFdEjS0vRGv9g0LQgShY2vDBg9BlKgtcvUHTf50xKM9GjG1+53XOlvUyvLeCCNFN8sp6mDZx+EuwEfGCj2dASLCAnvTY8I4lWjrF0EMQxsPUucNpQ7RUSYWDK5oFC6n4a2HqfubK85SrDBE5EdFYAdKtOB+aPBBT784K6F8+v6ySWRECRpN0HDlcer67NKzcD8pHvezuWKnhcTVybL3d7Hcxb0s7\/PIOXfOhbNFYUPzRD38r2GT74CIjAolYZMfDxk8U\/6e9rOoR78ZAO0RQ7sP0YsqR\/ickjCNm3wL\/h8yNF\/E4L\/H\/2G8Er8bmidk8Cr8f+vitNvwAsgXDhVo3zwXVrgOlvPmPpb3lS6WXdDBshuVmAVr5HQYwKQP9BFRukNWepdBG87jJGMhekpC8aQ+Zrqapee+PGusTZPuO7FJK3jbm+ZSx3v81DHTtPqm5\/0gGsMAJRfhxeKbdbKs+k6Wk9vJsj+bYFmTFuE7WwR3EGBiNy\/Qr4CUiSqe6Af+lQpeKiuTOcMhU5uLaieIxEKsdMpqgy8mhQu0mSGDr8f\/QwafrWojKYp40v6Mki3J401tm8pMslvlzgURm\/2qLpZzfTfLuaeTZW\/sYNndanfGao7J8fxwu+Sud\/oYY4uJT3nMdDV1L9Wcv093U6mMskTJxN+n1iAWI4UPCywYFhlB7SyzrYvlrOtiuX\/qZTnvIyaj\/s4VVeZfJqK1sMuGTP4Y\/g8GDRv8ZIVb+4r9WOzCIQ\/\/haiTZGobz3k8dHTxlZdh58X\/Qya\/K+y1lT2UL\/WJsKm1qQdFmcTzQvZPQb0s+7JulndzO8vO6WDZoQ6W3asmDhgb+vN0itwX2sSmsJVhs1BicTvL6uhgWZu7WPYDvSz7811sXhKm+HyiiJf\/pdKjf0H830i7KmRq3c7yJ0GT\/zNspn0L\/w8ZvHAqBc7OKsE0rkCmK9z8trCpjUOMR13hkMl3hQv0a8Xf+dpnQ4Z2h\/2Y85X62KJ3dbHsmzpY9gMdLOvpdpZ5FLtygi0UuzSYG5MNk845ES+0UzdINhg3qDBK6kE0FBbIDpa1v4NlrexmOf\/oYJmfSbC8S5zf5nwkSJsohoD\/hwr0m1Ml9oQNPj\/k0T6OHXiyMkTnjCJm2g0hg08wjYcM7b6gO+3b4v9m2o+Clp78UiNi89\/QwTLf38Vyb2tjmXmdLPu5dpZ5GGKe0snA3LCAYrfGBH2xfNHna8P7I7MHCx0WPHgC1OLXyjJH2ljWvg6W9VQ7y5zTyXK\/083yriHmPT9ihM+QQob2cNCti5q98MyEvfrPnMfAAr3Nd3ZiIV4wycANPgGtAPoAKiDi\/9h9oQM4j3mp0jGW8fpWlnFNO8u+uZtl393BsgLtLDPYxjKPYoKqCDEwtwrd62NzhV73Umdw7KJyx8wWhiXkzo4xqXxf9LWyzME2lnUAYnAny3J3sKw\/tbGsL3Wx3PQX01J8tini4bNRMgX\/R3QibZTIlHYKG\/yv500iv5NgTKgvu+YNzn47oeLaqfCx\/lOomc1\/QyfLcsEX3cFy7mhjWQ+0scziNpa5pY1l7W5lGR2tLDNhFyHRMPkVo0P\/w+\/YzaW1NVswC5gGjC\/bRMY6k4bzcR1cUzEjKuxhgcF9wYB4DsSb47nsz4nnxs6KhaqFZbS1sawdbSzzuQ6W5WtnmbPbWfYP21n2xxFc81LdVc+Ewkbab8M+qSpORudVHvDzIVieK\/PH4qb\/LxJiuLtZ5ttaWOYsOcGzv9nKMn7TxjLvb2dZi1pY5uNghFaWWdXKMhtbWcbxFpbZZe1kgpnB2IqxwEjQH8FgYCwlpjqb+g3H4XiZPicXCjDimBstY6CFZXa2sMxjrSxzdyvLjLWxzPVtLKusjWXNb2NZ97axjF92sJxb2ljmR7FQdbKHL0bwjPNd\/y9R1KO9e\/da14sqUfx\/\/d2YofOAiucAAAAASUVORK5CYII=';\n    \/\/ ============================================================\n\n    const state = {\n      sessionToken: localStorage.getItem('studentVerificationSession') || '',\n      session: null,\n      scopeRef: '',\n      dashboard: null,\n      dashboardSignature: '',  \/\/ \u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e0a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e2a\u0e14\u0e07 \u0e43\u0e0a\u0e49\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e27\u0e48\u0e32\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e31\u0e07\n      liveTimer: null,         \/\/ \u0e15\u0e31\u0e27\u0e08\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e16\u0e32\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\n      liveBusy: false,         \/\/ \u0e01\u0e31\u0e19\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e22\u0e34\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22\u0e0a\u0e49\u0e32\n      liveLastChangeAt: 0,     \/\/ \u0e04\u0e23\u0e31\u0e49\u0e07\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 \u0e43\u0e0a\u0e49\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e27\u0e48\u0e32\u0e04\u0e27\u0e23\u0e15\u0e23\u0e27\u0e08\u0e16\u0e35\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e2b\u0e48\u0e32\u0e07\n      liveLastActivityAt: 0,   \/\/ \u0e04\u0e23\u0e31\u0e49\u0e07\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e41\u0e15\u0e30\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d \u0e43\u0e0a\u0e49\u0e1e\u0e31\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e04\u0e49\u0e32\u0e07\u0e17\u0e34\u0e49\u0e07\u0e44\u0e27\u0e49\n      liveErrors: 0,           \/\/ \u0e08\u0e33\u0e19\u0e27\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e15\u0e23\u0e27\u0e08\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e15\u0e34\u0e14\u0e01\u0e31\u0e19 \u0e43\u0e0a\u0e49\u0e16\u0e2d\u0e22\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e19\u0e47\u0e15\u0e21\u0e35\u0e1b\u0e31\u0e0d\u0e2b\u0e32\n      liveAsleep: false,       \/\/ \u0e1e\u0e31\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2d\u0e22\u0e39\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\n      liveEpoch: 0,            \/\/ \u0e23\u0e38\u0e48\u0e19\u0e02\u0e2d\u0e07\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19 \u0e43\u0e0a\u0e49\u0e17\u0e34\u0e49\u0e07\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e49\u0e32\u0e07\u0e21\u0e32\u0e08\u0e32\u0e01\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\n      page: 1,\n      search: '',\n      sort: 'latest',\n      status: 'all',\n      selectedRecord: null,\n      activeModule: 'home',\n      examRows: [],\n      examCoverLetter: null,\n      examAttachments: [],\n      examSubmissionId: '',\n      examSourceFile: '',\n      examSearch: '',        \/\/ \u0e04\u0e33\u0e04\u0e49\u0e19\u0e43\u0e19\u0e15\u0e32\u0e23\u0e32\u0e07\u0e15\u0e23\u0e27\u0e08\u0e17\u0e32\u0e19 \u0e44\u0e21\u0e48\u0e01\u0e23\u0e30\u0e17\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\u0e08\u0e23\u0e34\u0e07\n      examShowAll: false,    \/\/ \u0e01\u0e14 \"\u0e41\u0e2a\u0e14\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\" \u0e41\u0e25\u0e49\u0e27\u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e31\u0e07\n      examOnlyIssues: false, \/\/ \u0e01\u0e23\u0e2d\u0e07\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\n      stats: null,\n      statsYear: 0,\n      statsTerm: 0, \/\/ 0 = \u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35\n      statsTrend: null,\n      statsTrendComplete: false, \/\/ \u0e01\u0e23\u0e32\u0e1f\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21\u0e2d\u0e32\u0e08\u0e44\u0e14\u0e49\u0e21\u0e32\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e1b\u0e35\u0e43\u0e19\u0e04\u0e33\u0e02\u0e2d\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e39\u0e49\u0e27\u0e48\u0e32\u0e04\u0e23\u0e1a\u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e31\u0e07\n      statsTrendLoading: false\n    };\n    let transportCheckPromise = null;\n\n    const $ = (selector, root = document) => root.querySelector(selector);\n    const $$ = (selector, root = document) => Array.from(root.querySelectorAll(selector));\n\n    document.addEventListener('DOMContentLoaded', init);\n\n    function init() {\n      applyLogo();\n      bindEvents();\n      updateExamSubmitState(); \/\/ \u0e41\u0e16\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\n      const resetToken = new URLSearchParams(location.search).get('reset');\n      if (resetToken) {\n        showAuthPanel('resetPanel');\n        $('.auth-tabs').classList.add('hidden');\n        $('#resetForm').dataset.token = resetToken;\n        history.replaceState({}, '', location.pathname + location.hash);\n        return;\n      }\n      if (state.sessionToken) {\n        setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19...');\n        server('restoreSession', state.sessionToken)\n          .then(enterApp)\n          .catch(error => {\n            clearSession(false);\n            toast(error && error.message ? error.message : '\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08', 'error', 9000);\n          })\n          .finally(() => setLoading(false));\n      }\n    }\n\n    function applyLogo() {\n      if (!LOGO_URL) return;\n      ['brandLogo', 'brandMark'].forEach(id => {\n        const box = document.getElementById(id);\n        if (!box) return;\n        box.textContent = '';\n        box.style.background = 'transparent';\n        box.style.border = '0';\n        const img = document.createElement('img');\n        img.src = LOGO_URL;\n        img.alt = '\u0e21\u0e08\u0e23';\n        img.style.width = '100%';\n        img.style.height = '100%';\n        img.style.objectFit = 'contain';\n        box.appendChild(img);\n      });\n    }\n\n    function bindEvents() {\n      $$('.auth-tab').forEach(button => {\n        button.addEventListener('click', () => {\n          $$('.auth-tab').forEach(tab => tab.classList.toggle('active', tab === button));\n          showAuthPanel(button.dataset.authTarget);\n        });\n      });\n      $$('.password-toggle').forEach(button => {\n        button.addEventListener('click', () => {\n          const input = button.parentElement.querySelector('input');\n          input.type = input.type === 'password' ? 'text' : 'password';\n          button.textContent = input.type === 'password' ? '\u0e41\u0e2a\u0e14\u0e07' : '\u0e0b\u0e48\u0e2d\u0e19';\n        });\n      });\n      $('[data-back-login]').addEventListener('click', () => {\n        $('.auth-tabs').classList.remove('hidden');\n        $('#loginTab').click();\n      });\n      $('#forgotButton').addEventListener('click', () => {\n        $('.auth-tabs').classList.add('hidden');\n        showAuthPanel('forgotPanel');\n      });\n\n      $('#loginForm').addEventListener('submit', onLogin);\n      $('#registerForm').addEventListener('submit', onRegister);\n      $('#forgotForm').addEventListener('submit', onForgotPassword);\n      $('#resetForm').addEventListener('submit', onResetPassword);\n      $('#logoutButton').addEventListener('click', onLogout);\n      $('#changePasswordButton').addEventListener('click', () => $('#passwordDialog').showModal());\n      $('#notificationBell').addEventListener('click', onNotificationBell);\n      \/\/ \u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e17\u0e35\u0e48\u0e41\u0e17\u0e47\u0e1a\u0e19\u0e35\u0e49\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e23 \u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e04\u0e23\u0e1a\u0e23\u0e2d\u0e1a\n      document.addEventListener('visibilitychange', () => {\n        if (document.hidden) return;\n        noteUserActivity();\n        scheduleLivePoll(0);\n      });\n      \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e22\u0e31\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d = \u0e22\u0e31\u0e07\u0e04\u0e27\u0e23\u0e15\u0e23\u0e27\u0e08\u0e16\u0e35\u0e48 \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e34\u0e14\u0e04\u0e49\u0e32\u0e07\u0e17\u0e34\u0e49\u0e07\u0e44\u0e27\u0e49\u0e40\u0e09\u0e22 \u0e46 \u0e08\u0e30\u0e1e\u0e31\u0e01\u0e40\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e23\u0e30\u0e2b\u0e22\u0e31\u0e14\u0e42\u0e04\u0e27\u0e15\u0e32\n      ['pointerdown', 'keydown', 'wheel'].forEach(type => {\n        window.addEventListener(type, noteUserActivity, {passive: true});\n      });\n      $$('.app-nav-button').forEach(button => button.addEventListener('click', () => showModule(button.dataset.module)));\n      $$('[data-open-module]').forEach(button => button.addEventListener('click', () => showModule(button.dataset.openModule)));\n      $('#changePasswordForm').addEventListener('submit', onChangePassword);\n      $('#scopeSelect').addEventListener('change', event => {\n        state.scopeRef = event.target.value;\n        state.page = 1;\n        state.search = '';\n        state.status = 'all';\n        $('#searchInput').value = '';\n        loadDashboard();\n      });\n      $$('.status-filter').forEach(button => {\n        button.addEventListener('click', () => {\n          if (!state.scopeRef || state.status === button.dataset.status) return;\n          state.status = button.dataset.status;\n          state.page = 1;\n          loadDashboard();\n        });\n      });\n      $('#searchForm').addEventListener('submit', event => {\n        event.preventDefault();\n        if (!state.scopeRef) return;\n        state.search = $('#searchInput').value.trim();\n        state.page = 1;\n        loadDashboard();\n      });\n      $('#sortSelect').addEventListener('change', async event => {\n        if (!state.scopeRef) return;\n        const previous = state.sort;\n        state.sort = event.target.value;\n        state.page = 1;\n        await loadDashboard();\n        \/\/ \u0e42\u0e2b\u0e25\u0e14\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u2014 \u0e43\u0e2b\u0e49\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e08\u0e23\u0e34\u0e07\n        const applied = state.dashboard && state.dashboard.sort;\n        if (applied && applied !== state.sort) {\n          state.sort = previous;\n          event.target.value = previous;\n        }\n      });\n      $('#prevPage').addEventListener('click', () => changePage(-1));\n      $('#nextPage').addEventListener('click', () => changePage(1));\n      $('#downloadCsv').addEventListener('click', () => download('csv'));\n      $('#downloadXlsx').addEventListener('click', () => download('xlsx'));\n      $('#examFileInput').addEventListener('change', handleExamFileUpload);\n      $('#examAttachmentInput').addEventListener('change', handleExamAttachmentUpload);\n      $('#coverLetterInput').addEventListener('change', handleCoverLetterUpload);\n      renderCoverLetter();   \/\/ \u0e15\u0e31\u0e49\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e1a\u0e2d\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\n      $('#statsYearSelect').addEventListener('change', event => loadStats(Number(event.target.value)));\n      \/\/ \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e17\u0e2d\u0e21\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e01\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e32\u0e22\u0e40\u0e17\u0e2d\u0e21\u0e21\u0e32\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27\n      $('#statsTermSelect').addEventListener('change', event => {\n        state.statsTerm = Number(event.target.value) || 0;\n        if (state.stats) renderStats(state.stats);\n        if (state.statsTrend) renderTrendChart(state.statsTrend);\n      });\n      $('#statsRefreshButton').addEventListener('click', () => loadStats(state.statsYear, true));\n      $('#statsClearCacheButton').addEventListener('click', () => loadStats(state.statsYear, 'all'));\n      \/\/ \u0e41\u0e16\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e32\u0e23\u0e1a\u0e31\u0e0d\u0e14\u0e49\u0e27\u0e22 \u0e01\u0e14\u0e41\u0e25\u0e49\u0e27\u0e1e\u0e32\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e02\u0e32\u0e14\n      $$('.exam-check-jump').forEach(jump => jump.addEventListener('click', () => {\n        const target = $('#' + jump.dataset.jump);\n        if (!target) return;\n        target.scrollIntoView({behavior: 'smooth', block: 'start'});\n        target.classList.remove('exam-jump-flash');\n        void target.offsetWidth; \/\/ \u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e43\u0e2b\u0e49 animation \u0e40\u0e23\u0e34\u0e48\u0e21\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e01\u0e14\u0e1b\u0e38\u0e48\u0e21\u0e40\u0e14\u0e34\u0e21\u0e0b\u0e49\u0e33\n        target.classList.add('exam-jump-flash');\n      }));\n      $('#examSearchInput').addEventListener('input', event => {\n        state.examSearch = event.target.value;\n        state.examShowAll = false; \/\/ \u0e04\u0e33\u0e04\u0e49\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e34\u0e48\u0e21\u0e19\u0e31\u0e1a\u0e08\u0e33\u0e19\u0e27\u0e19\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e43\u0e2b\u0e21\u0e48\n        renderExamTable();\n      });\n      $('#examIssueFilterButton').addEventListener('click', () => {\n        state.examOnlyIssues = !state.examOnlyIssues;\n        state.examShowAll = false;\n        renderExamTable();\n      });\n      $('#downloadCoverLetterTemplateButton').addEventListener('click', downloadCoverLetterTemplate);\n      $('#downloadExamTemplateButton').addEventListener('click', downloadExamTemplate);\n      $('#printReceiptButton').addEventListener('click', () => window.print());\n      $('#clearExamRowsButton').addEventListener('click', clearExamRows);\n      $('#submitExamListButton').addEventListener('click', submitExamListToDrive);\n      $('#detailConfirmButton').addEventListener('click', confirmSelectedRecord);\n      $$('[data-close-dialog]').forEach(button => {\n        button.addEventListener('click', () => $('#' + button.dataset.closeDialog).close());\n      });\n      $$('.modal').forEach(dialog => {\n        dialog.addEventListener('click', event => {\n          if (event.target === dialog) dialog.close();\n        });\n      });\n    }\n\n    async function onLogin(event) {\n      event.preventDefault();\n      if (!event.target.reportValidity()) return;\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a...');\n      try {\n        const result = await server('login', {\n          login: $('#loginId').value,\n          password: $('#loginPassword').value\n        });\n        enterApp(result);\n        event.target.reset();\n        toast('\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27', 'success');\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    async function onRegister(event) {\n      event.preventDefault();\n      if (!event.target.reportValidity()) return;\n      const data = Object.fromEntries(new FormData(event.target));\n      if (data.password !== data.confirmPassword) {\n        toast('\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19', 'error');\n        return;\n      }\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01...');\n      try {\n        const result = await server('register', {\n          username: data.username,\n          email: data.email,\n          schoolName: data.schoolName,\n          password: data.password\n        });\n        toast(result.message, 'success', 6500);\n        event.target.reset();\n        $('#loginTab').click();\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    async function onForgotPassword(event) {\n      event.preventDefault();\n      if (!event.target.reportValidity()) return;\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23...');\n      try {\n        const result = await server('requestPasswordReset', new FormData(event.target).get('loginId'));\n        toast(result.message, 'success', 7000);\n        event.target.reset();\n        $('[data-back-login]').click();\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    async function onResetPassword(event) {\n      event.preventDefault();\n      if (!event.target.reportValidity()) return;\n      const data = Object.fromEntries(new FormData(event.target));\n      if (data.newPassword !== data.confirmPassword) {\n        toast('\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19', 'error');\n        return;\n      }\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48...');\n      try {\n        const result = await server('resetPassword', {\n          token: event.target.dataset.token,\n          newPassword: data.newPassword\n        });\n        history.replaceState({}, '', location.pathname);\n        $('.auth-tabs').classList.remove('hidden');\n        $('#loginTab').click();\n        event.target.reset();\n        toast(result.message, 'success', 6000);\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    async function onChangePassword(event) {\n      event.preventDefault();\n      if (!event.target.reportValidity()) return;\n      const data = Object.fromEntries(new FormData(event.target));\n      if (data.newPassword !== data.confirmPassword) {\n        toast('\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19', 'error');\n        return;\n      }\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19...');\n      try {\n        const result = await server('changePassword', state.sessionToken, {\n          currentPassword: data.currentPassword,\n          newPassword: data.newPassword\n        });\n        $('#passwordDialog').close();\n        event.target.reset();\n        clearSession(false);\n        toast(result.message, 'success', 6500);\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    function showModule(name) {\n      const target = $('#' + name + 'Module');\n      if (!target) return;\n      state.activeModule = name;\n      $$('.module-view').forEach(module => module.classList.toggle('hidden', module !== target));\n      $$('.app-nav-button').forEach(button => button.classList.toggle('active', button.dataset.module === name));\n      window.scrollTo({top: 0, behavior: 'smooth'});\n      \/\/ \u0e2a\u0e16\u0e34\u0e15\u0e34\u0e2d\u0e48\u0e32\u0e19\u0e0a\u0e35\u0e15\u0e2b\u0e25\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e41\u0e16\u0e27 \u0e08\u0e36\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e15\u0e2d\u0e19\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e42\u0e2b\u0e25\u0e14\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\n      if (name === 'stats' && !state.stats) loadStats();\n    }\n\n    \/* ---- \u0e2a\u0e16\u0e34\u0e15\u0e34\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32: \u0e22\u0e2d\u0e14\u0e23\u0e27\u0e21\u0e23\u0e32\u0e22\u0e1b\u0e35 \u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e19 \u0e0a\u0e31\u0e49\u0e19 \u0e41\u0e25\u0e30\u0e40\u0e17\u0e2d\u0e21 ---- *\/\n    async function loadStats(year = 0, refresh = false) {\n      setLoading(true, refresh === 'all'\n        ? '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e38\u0e01\u0e1b\u0e35 \u0e2d\u0e32\u0e08\u0e43\u0e0a\u0e49\u0e40\u0e27\u0e25\u0e32\u0e2a\u0e31\u0e01\u0e04\u0e23\u0e39\u0e48...'\n        : '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e23\u0e27\u0e1a\u0e23\u0e27\u0e21\u0e2a\u0e16\u0e34\u0e15\u0e34...');\n      try {\n        const data = await server('getStudentStats', state.sessionToken, {year, refresh});\n        state.stats = data;\n        state.statsYear = data.year;\n        renderStats(data);\n        if (refresh) {\n          \/\/ \u0e22\u0e2d\u0e14\u0e23\u0e32\u0e22\u0e1b\u0e35\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 \u0e01\u0e23\u0e32\u0e1f\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e14\u0e36\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e14\u0e49\u0e27\u0e22\n          state.statsTrend = null;\n          state.statsTrendComplete = false;\n          toast(refresh === 'all'\n            ? '\u0e25\u0e49\u0e32\u0e07\u0e41\u0e04\u0e0a\u0e17\u0e38\u0e01\u0e1b\u0e35\u0e41\u0e25\u0e30\u0e2d\u0e48\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e49\u0e27'\n            : '\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e08\u0e32\u0e01\u0e44\u0e1f\u0e25\u0e4c\u0e15\u0e49\u0e19\u0e17\u0e32\u0e07\u0e41\u0e25\u0e49\u0e27', 'success');\n        }\n        loadStatsTrend();\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    \/* ---- \u0e01\u0e23\u0e32\u0e1f: \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e14\u0e49\u0e27\u0e22 DOM \u0e25\u0e49\u0e27\u0e19 \u0e44\u0e21\u0e48\u0e1e\u0e36\u0e48\u0e07\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e1d\u0e31\u0e07\u0e43\u0e19 WordPress \u0e14\u0e49\u0e27\u0e22 ---- *\/\n    const SVG_NS = 'http:\/\/www.w3.org\/2000\/svg';\n\n    function svgEl(tag, attrs = {}) {\n      const node = document.createElementNS(SVG_NS, tag);\n      Object.keys(attrs).forEach(key => node.setAttribute(key, attrs[key]));\n      return node;\n    }\n\n    \/** \u0e01\u0e25\u0e48\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e25\u0e2d\u0e22\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e2d\u0e31\u0e19\u0e15\u0e48\u0e2d\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e41\u0e1c\u0e07 \u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e17\u0e38\u0e01\u0e08\u0e38\u0e14\u0e43\u0e19\u0e01\u0e23\u0e32\u0e1f\u0e19\u0e31\u0e49\u0e19 *\/\n    function vizTooltip(panel) {\n      let tip = panel.querySelector('.viz-tip');\n      if (!tip) {\n        tip = document.createElement('div');\n        tip.className = 'viz-tip';\n        panel.appendChild(tip);\n      }\n      return tip;\n    }\n\n    \/** anchor \u0e41\u0e22\u0e01\u0e08\u0e32\u0e01 target \u0e44\u0e14\u0e49 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e01\u0e23\u0e32\u0e1f\u0e40\u0e2a\u0e49\u0e19\u0e23\u0e31\u0e1a\u0e40\u0e21\u0e32\u0e2a\u0e4c\u0e14\u0e49\u0e27\u0e22\u0e41\u0e16\u0e1a\u0e2a\u0e39\u0e07\u0e40\u0e15\u0e47\u0e21\u0e1e\u0e25\u0e47\u0e2d\u0e15 \u0e41\u0e15\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e25\u0e2d\u0e22\u0e17\u0e35\u0e48\u0e08\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 *\/\n    function bindVizTip(panel, target, buildLines, anchor) {\n      const tip = vizTooltip(panel);\n      const show = () => {\n        tip.replaceChildren(...buildLines().map((line, index) => {\n          const el = document.createElement(index === 0 ? 'strong' : 'span');\n          el.textContent = line;\n          return el;\n        }));\n        const box = panel.getBoundingClientRect();\n        const spot = (anchor || target).getBoundingClientRect();\n        tip.style.left = (spot.left - box.left + spot.width \/ 2) + 'px';\n        tip.style.top = (spot.top - box.top) + 'px';\n        tip.style.display = 'block';\n      };\n      const hide = () => { tip.style.display = 'none'; };\n      target.addEventListener('mouseenter', show);\n      target.addEventListener('focus', show);\n      target.addEventListener('mouseleave', hide);\n      target.addEventListener('blur', hide);\n    }\n\n    \/** \u0e41\u0e16\u0e1a\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c: \u0e23\u0e32\u0e07\u0e40\u0e15\u0e47\u0e21 = \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u00b7 \u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e32\u0e22 = \u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19 (\u0e40\u0e09\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 \u0e08\u0e36\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e14\u0e49\u0e17\u0e38\u0e01\u0e20\u0e32\u0e27\u0e30\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e2a\u0e35) *\/\n    function renderGroupChart(groups) {\n      const host = $('#statsGroupChart');\n      const panel = host.closest('.viz');\n      host.replaceChildren();\n      const visible = groups.filter(group => group.counts.total > 0);\n      if (!visible.length) {\n        const empty = document.createElement('p');\n        empty.className = 'viz-placeholder muted';\n        empty.textContent = '\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07\u0e1b\u0e35\u0e19\u0e35\u0e49';\n        host.appendChild(empty);\n        return;\n      }\n      visible.forEach(group => {\n        const pct = group.counts.total ? group.counts.passed * 100 \/ group.counts.total : 0;\n        const row = document.createElement('div');\n        row.className = 'viz-meter';\n\n        const label = document.createElement('span');\n        label.className = 'viz-meter-label';\n        label.textContent = group.label;\n\n        const track = document.createElement('div');\n        track.className = 'viz-track';\n        track.setAttribute('role', 'img');\n        track.setAttribute('aria-label',\n          `${group.label} \u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19 ${formatNumber(group.counts.passed)} \u0e08\u0e32\u0e01 ${formatNumber(group.counts.total)} \u0e04\u0e19`);\n        track.tabIndex = 0;\n        const fill = document.createElement('div');\n        fill.className = 'viz-fill' + (pct >= 99.5 ? ' is-full' : '');\n        fill.style.width = pct.toFixed(1) + '%';\n        track.appendChild(fill);\n\n        const value = document.createElement('span');\n        value.className = 'viz-meter-value';\n        value.textContent = pct.toFixed(1) + '%';\n\n        row.append(label, track, value);\n        host.appendChild(row);\n        bindVizTip(panel, track, () => [\n          group.label,\n          `\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 ${formatNumber(group.counts.total)} \u0e04\u0e19`,\n          `\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19 ${formatNumber(group.counts.passed)} \u0e04\u0e19 (${pct.toFixed(1)}%)`,\n          `\u0e2a\u0e2d\u0e1a\u0e15\u0e01 ${formatNumber(group.counts.failed)} \u00b7 \u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a ${formatNumber(group.counts.absent)}`\n        ]);\n      });\n    }\n\n    \/** \u0e01\u0e23\u0e32\u0e1f\u0e40\u0e2a\u0e49\u0e19\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21 % \u0e1c\u0e48\u0e32\u0e19\u0e23\u0e32\u0e22\u0e1b\u0e35 \u2014 \u0e0b\u0e35\u0e23\u0e35\u0e2a\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e2a\u0e35 *\/\n    function renderTrendChart(allPoints) {\n      const host = $('#statsTrendChart');\n      const panel = host.closest('.viz');\n      host.replaceChildren();\n\n      \/\/ \u0e01\u0e23\u0e32\u0e1f\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19 \u0e1b\u0e35\u0e44\u0e2b\u0e19\u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e17\u0e2d\u0e21\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e47\u0e44\u0e21\u0e48\u0e27\u0e32\u0e14\u0e08\u0e38\u0e14\u0e02\u0e2d\u0e07\u0e1b\u0e35\u0e19\u0e31\u0e49\u0e19\n      const points = (allPoints || []).map(point => {\n        if (!state.statsTerm) return point;\n        const term = (point.terms || []).find(item => item.term === state.statsTerm);\n        return term ? {year: point.year, counts: term.counts} : null;\n      }).filter(Boolean);\n\n      $('#statsTrendScope').textContent = state.statsTerm\n        ? `\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e17\u0e2d\u0e21 ${state.statsTerm} \u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35 \u2014 \u0e04\u0e34\u0e14\u0e08\u0e32\u0e01\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19\u0e40\u0e17\u0e2d\u0e21\u0e19\u0e31\u0e49\u0e19 \u0e23\u0e27\u0e21\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a`\n        : '\u0e23\u0e27\u0e21\u0e17\u0e38\u0e01\u0e40\u0e17\u0e2d\u0e21\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35 \u2014 \u0e04\u0e34\u0e14\u0e08\u0e32\u0e01\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19\u0e1b\u0e35\u0e19\u0e31\u0e49\u0e19 \u0e23\u0e27\u0e21\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a';\n\n      if (!points || points.length < 2) {\n        const empty = document.createElement('p');\n        empty.className = 'viz-placeholder muted';\n        empty.textContent = '\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e1e\u0e2d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e27\u0e32\u0e14\u0e01\u0e23\u0e32\u0e1f\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21';\n        host.appendChild(empty);\n        return;\n      }\n\n      const W = 720, H = 250, padL = 42, padR = 46, padT = 14, padB = 32;\n      const plotW = W - padL - padR;\n      const plotH = H - padT - padB;\n      const svg = svgEl('svg', {viewBox: `0 0 ${W} ${H}`, role: 'img'});\n      svg.setAttribute('aria-label', '\u0e01\u0e23\u0e32\u0e1f\u0e40\u0e2a\u0e49\u0e19\u0e41\u0e2a\u0e14\u0e07\u0e23\u0e49\u0e2d\u0e22\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32');\n\n      const xAt = index => padL + (points.length === 1 ? plotW \/ 2 : index * plotW \/ (points.length - 1));\n      const yAt = pct => padT + plotH - (pct \/ 100) * plotH;\n\n      [0, 25, 50, 75, 100].forEach(tick => {\n        const y = yAt(tick);\n        svg.appendChild(svgEl('line', {\n          x1: padL, x2: padL + plotW, y1: y, y2: y,\n          class: tick === 0 ? 'viz-axis-line' : 'viz-grid-line'\n        }));\n        const text = svgEl('text', {x: padL - 8, y: y + 4, 'text-anchor': 'end', class: 'viz-tick'});\n        text.textContent = tick + '%';\n        svg.appendChild(text);\n      });\n\n      const rates = points.map(point =>\n        point.counts.total ? point.counts.passed * 100 \/ point.counts.total : 0);\n\n      const path = svgEl('path', {class: 'viz-line', d: rates\n        .map((rate, index) => `${index ? 'L' : 'M'}${xAt(index).toFixed(1)},${yAt(rate).toFixed(1)}`)\n        .join(' ')});\n      svg.appendChild(path);\n\n      \/\/ \u0e1b\u0e49\u0e32\u0e22\u0e1b\u0e35\u0e1a\u0e32\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1b\u0e35\u0e40\u0e22\u0e2d\u0e30 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e17\u0e31\u0e1a\u0e01\u0e31\u0e19\n      const labelStep = points.length > 9 ? 2 : 1;\n      points.forEach((point, index) => {\n        const x = xAt(index);\n        const y = yAt(rates[index]);\n        if (index % labelStep === 0 || index === points.length - 1) {\n          const tick = svgEl('text', {x: x, y: H - 10, 'text-anchor': 'middle', class: 'viz-tick'});\n          tick.textContent = String(point.year);\n          svg.appendChild(tick);\n        }\n        const dot = svgEl('circle', {cx: x, cy: y, r: 4, class: 'viz-dot'});\n        svg.appendChild(dot);\n\n        \/\/ \u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e31\u0e1a\u0e40\u0e21\u0e32\u0e2a\u0e4c\u0e01\u0e27\u0e49\u0e32\u0e07\u0e01\u0e27\u0e48\u0e32\u0e08\u0e38\u0e14 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e25\u0e47\u0e07\u0e07\u0e48\u0e32\u0e22\n        const hit = svgEl('rect', {\n          x: x - plotW \/ (points.length * 2) - 6, y: padT,\n          width: plotW \/ points.length + 12, height: plotH, class: 'viz-hit', tabindex: '0'\n        });\n        svg.appendChild(hit);\n        bindVizTip(panel, hit, () => [\n          '\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ' + point.year,\n          `\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 ${formatNumber(point.counts.total)} \u0e04\u0e19`,\n          `\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19 ${formatNumber(point.counts.passed)} \u0e04\u0e19 (${rates[index].toFixed(1)}%)`,\n          `\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a ${formatNumber(point.counts.absent)} \u0e04\u0e19`\n        ], dot);\n      });\n\n      \/\/ \u0e1b\u0e49\u0e32\u0e22\u0e04\u0e48\u0e32\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22 \u0e44\u0e21\u0e48\u0e15\u0e34\u0e14\u0e1b\u0e49\u0e32\u0e22\u0e17\u0e38\u0e01\u0e08\u0e38\u0e14\n      const lastIndex = points.length - 1;\n      const endLabel = svgEl('text', {\n        x: xAt(lastIndex) + 9, y: yAt(rates[lastIndex]) + 4, class: 'viz-end-label'\n      });\n      endLabel.textContent = rates[lastIndex].toFixed(1) + '%';\n      svg.appendChild(endLabel);\n\n      host.appendChild(svg);\n    }\n\n    \/**\n     * \u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e04\u0e37\u0e19\u0e40\u0e17\u0e48\u0e32\u0e17\u0e35\u0e48\u0e04\u0e33\u0e19\u0e27\u0e13\u0e17\u0e31\u0e19\u0e43\u0e19\u0e07\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e15\u0e48\u0e2d\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d (\u0e01\u0e31\u0e19\u0e0a\u0e19\u0e40\u0e1e\u0e14\u0e32\u0e19 6 \u0e19\u0e32\u0e17\u0e35\u0e02\u0e2d\u0e07 Apps Script)\n     * \u0e16\u0e49\u0e32\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e1b\u0e35\u0e08\u0e30\u0e1a\u0e2d\u0e01 complete=false \u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e15\u0e48\u0e2d\u0e08\u0e19\u0e04\u0e23\u0e1a \u2014 \u0e1b\u0e35\u0e17\u0e35\u0e48\u0e17\u0e33\u0e41\u0e25\u0e49\u0e27\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e41\u0e04\u0e0a \u0e23\u0e2d\u0e1a\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e08\u0e36\u0e07\u0e40\u0e23\u0e47\u0e27\n     * \u0e27\u0e32\u0e14\u0e01\u0e23\u0e32\u0e1f\u0e17\u0e38\u0e01\u0e23\u0e2d\u0e1a\u0e40\u0e25\u0e22 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e30\u0e44\u0e14\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e1b\u0e35\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e23\u0e2d \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e08\u0e49\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e40\u0e1b\u0e25\u0e48\u0e32\n     * \u0e08\u0e33\u0e01\u0e31\u0e14\u0e08\u0e33\u0e19\u0e27\u0e19\u0e23\u0e2d\u0e1a\u0e44\u0e27\u0e49 \u0e01\u0e31\u0e19\u0e27\u0e19\u0e44\u0e21\u0e48\u0e08\u0e1a\u0e16\u0e49\u0e32\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e44\u0e21\u0e48\u0e04\u0e37\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e14\u0e49\u0e27\u0e22\u0e40\u0e2b\u0e15\u0e38\u0e17\u0e35\u0e48\u0e04\u0e32\u0e14\u0e44\u0e21\u0e48\u0e16\u0e36\u0e07\n     *\/\n    const STATS_TREND_MAX_ROUNDS = 8;\n\n    async function loadStatsTrend() {\n      \/\/ \u0e21\u0e35\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e1b\u0e35\u0e41\u0e25\u0e49\u0e27\u0e08\u0e36\u0e07\u0e43\u0e0a\u0e49\u0e02\u0e2d\u0e07\u0e40\u0e14\u0e34\u0e21\u0e44\u0e14\u0e49 \u0e16\u0e49\u0e32\u0e44\u0e14\u0e49\u0e21\u0e32\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e15\u0e48\u0e2d \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e01\u0e23\u0e32\u0e1f\u0e08\u0e30\u0e04\u0e49\u0e32\u0e07\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e16\u0e32\u0e27\u0e23\n      if (state.statsTrend && state.statsTrendComplete) {\n        renderTrendChart(state.statsTrend);\n        return;\n      }\n      if (state.statsTrendLoading) return; \/\/ \u0e25\u0e39\u0e1b\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e08\u0e30\u0e27\u0e32\u0e14\u0e43\u0e2b\u0e49\u0e40\u0e2d\u0e07 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e22\u0e34\u0e07\u0e0b\u0e49\u0e33\n      state.statsTrendLoading = true;\n      try {\n        for (let round = 0; round < STATS_TREND_MAX_ROUNDS; round++) {\n          const data = await server('getStudentStatsTrend', state.sessionToken);\n          const points = data.points || [];\n          \/\/ \u0e01\u0e31\u0e19\u0e01\u0e23\u0e13\u0e35\u0e04\u0e37\u0e19\u0e21\u0e32\u0e19\u0e49\u0e2d\u0e22\u0e25\u0e07\u0e01\u0e27\u0e48\u0e32\u0e23\u0e2d\u0e1a\u0e01\u0e48\u0e2d\u0e19 \u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e16\u0e2d\u0e22\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e19\u0e01\u0e23\u0e32\u0e1f\u0e01\u0e30\u0e1e\u0e23\u0e34\u0e1a\n          if (!state.statsTrend || points.length >= state.statsTrend.length) {\n            state.statsTrend = points;\n          }\n          renderTrendChart(state.statsTrend);\n          if (data.complete !== false) {\n            state.statsTrendComplete = true;\n            return;\n          }\n        }\n      } catch (error) {\n        const host = $('#statsTrendChart');\n        host.replaceChildren();\n        const message = document.createElement('p');\n        message.className = 'viz-placeholder muted';\n        message.textContent = '\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u2014 ' + (error.message || '\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07');\n        host.appendChild(message);\n      } finally {\n        state.statsTrendLoading = false;\n      }\n    }\n\n    function statsRate(counts) {\n      if (!counts || !counts.total) return '\u2014';\n      return (counts.passed * 100 \/ counts.total).toFixed(1) + '%';\n    }\n\n    \/** \u0e2b\u0e19\u0e36\u0e48\u0e07\u0e41\u0e16\u0e27\u0e02\u0e2d\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07\u0e2a\u0e16\u0e34\u0e15\u0e34 \u2014 \u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e17\u0e31\u0e49\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17 \u0e0a\u0e31\u0e49\u0e19 \u0e41\u0e25\u0e30\u0e40\u0e17\u0e2d\u0e21 *\/\n    function statsRow(label, counts, isTotal = false) {\n      const tr = document.createElement('tr');\n      if (isTotal) tr.className = 'stats-total-row';\n      const cells = [\n        label,\n        formatNumber(counts.total),\n        formatNumber(counts.passed),\n        formatNumber(counts.failed),\n        formatNumber(counts.absent),\n        statsRate(counts),\n        \/\/ \u0e04\u0e48\u0e32\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22\u0e21\u0e32\u0e08\u0e32\u0e01\u0e0a\u0e48\u0e2d\u0e07 \"\u0e23\u0e27\u0e21\" \u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e1c\u0e25\u0e2a\u0e2d\u0e1a \u0e19\u0e31\u0e1a\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e04\u0e19\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a\u0e08\u0e23\u0e34\u0e07\n        \/\/ \u0e41\u0e17\u0e47\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e0a\u0e48\u0e2d\u0e07\u0e23\u0e27\u0e21 (\u0e1a\u0e32\u0e07\u0e40\u0e17\u0e2d\u0e21) \u0e08\u0e30\u0e44\u0e14\u0e49 null \u0e08\u0e36\u0e07\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e35\u0e14\u0e41\u0e17\u0e19\u0e40\u0e25\u0e02 0 \u0e17\u0e35\u0e48\u0e0a\u0e27\u0e19\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e1c\u0e34\u0e14\n        counts.average === null || counts.average === undefined ? '\u2013' : formatNumber(counts.average)\n      ];\n      cells.forEach((value, index) => {\n        const td = document.createElement('td');\n        td.textContent = value;\n        if (index === 5) td.className = 'stats-rate';\n        if (index > 0 && index < 5 && !counts.total) td.classList.add('stats-empty');\n        if (index === 6 && (counts.average === null || counts.average === undefined)) {\n          td.classList.add('stats-empty');\n        }\n        tr.appendChild(td);\n      });\n      return tr;\n    }\n\n    \/** \u0e0a\u0e38\u0e14\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e2a\u0e14\u0e07 \u2014 \u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35 \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e17\u0e2d\u0e21\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01 *\/\n    function activeStatsSlice() {\n      const data = state.stats;\n      if (!data) return null;\n      if (!state.statsTerm) {\n        return {label: '\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35', overall: data.overall, groups: data.groups, classes: data.classes,\n                schoolCount: data.schoolCount};\n      }\n      const term = data.terms.find(item => item.term === state.statsTerm);\n      if (!term) return {label: '\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35', overall: data.overall, groups: data.groups, classes: data.classes,\n                         schoolCount: data.schoolCount};\n      return {label: term.label, overall: term.counts, groups: term.groups || [],\n              classes: term.classes || [], schoolCount: term.schoolCount};\n    }\n\n    function renderStatsSelectors(data) {\n      const yearSelect = $('#statsYearSelect');\n      yearSelect.replaceChildren(...data.years.map(year => {\n        const option = document.createElement('option');\n        option.value = String(year);\n        option.textContent = '\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ' + year;\n        option.selected = year === data.year;\n        return option;\n      }));\n\n      const termSelect = $('#statsTermSelect');\n      const options = [{value: 0, label: data.terms.length > 1 ? '\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35 (\u0e23\u0e27\u0e21\u0e17\u0e38\u0e01\u0e40\u0e17\u0e2d\u0e21)' : '\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35'}]\n        .concat(data.terms.map(term => ({value: term.term, label: term.label})));\n      termSelect.replaceChildren(...options.map(item => {\n        const option = document.createElement('option');\n        option.value = String(item.value);\n        option.textContent = item.label;\n        option.selected = item.value === state.statsTerm;\n        return option;\n      }));\n      \/\/ \u0e1b\u0e35\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e32\u0e08\u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e17\u0e2d\u0e21\u0e40\u0e14\u0e34\u0e21 \u0e08\u0e36\u0e07\u0e16\u0e2d\u0e22\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e40\u0e1b\u0e47\u0e19 \"\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35\"\n      if (state.statsTerm && !data.terms.some(term => term.term === state.statsTerm)) {\n        state.statsTerm = 0;\n        termSelect.value = '0';\n      }\n      termSelect.disabled = data.terms.length < 2;\n    }\n\n    function renderStats(data) {\n      renderStatsSelectors(data);\n      const slice = activeStatsSlice();\n      const counts = slice.overall;\n\n      const scopeLabel = state.statsTerm\n        ? slice.label\n        : (data.terms.map(term => '\u0e40\u0e17\u0e2d\u0e21 ' + term.term).join(' \u0e41\u0e25\u0e30 ') || '\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e17\u0e2d\u0e21');\n      $('#statsSubtitle').textContent =\n        \/\/ \u0e15\u0e49\u0e2d\u0e07\u0e1a\u0e2d\u0e01\u0e27\u0e48\u0e32 \"\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a\" \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32 50 \u0e08\u0e30\u0e16\u0e39\u0e01\u0e2d\u0e48\u0e32\u0e19\u0e27\u0e48\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e2b\u0e32\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\n        \/\/ \u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e41\u0e15\u0e48\u0e25\u0e30\u0e40\u0e17\u0e2d\u0e21\u0e21\u0e35\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1a\u0e32\u0e07\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e2a\u0e2d\u0e1a \u0e22\u0e2d\u0e14\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32 50 \u0e08\u0e36\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e1b\u0e01\u0e15\u0e34\n        `\u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 ${data.year} \u2022 ${scopeLabel} \u2022 ${formatNumber(slice.schoolCount)} \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a`;\n      $('#homeStatsYear').textContent = data.years.length ? String(data.years[0]) : '\u2014';\n\n      $('#statsTotal').textContent = formatNumber(counts.total);\n      $('#statsPassed').textContent = formatNumber(counts.passed);\n      $('#statsAbsent').textContent = formatNumber(counts.absent);\n\n      const attended = counts.total - counts.absent;\n      $('#statsPassedRate').textContent = counts.total\n        ? `${statsRate(counts)} \u0e02\u0e2d\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u2022 ` +\n          `${attended ? (counts.passed * 100 \/ attended).toFixed(1) : '0.0'}% \u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a`\n        : '';\n      $('#statsAbsentRate').textContent = counts.total\n        ? `${(counts.absent * 100 \/ counts.total).toFixed(1)}% \u0e02\u0e2d\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14`\n        : '';\n\n      const fill = (bodyId, rows) => {\n        const body = $('#' + bodyId);\n        body.replaceChildren(...rows.map(row => statsRow(row.label, row.counts)));\n        body.appendChild(statsRow('\u0e23\u0e27\u0e21', counts, true));\n      };\n      renderGroupChart(slice.groups);\n      fill('statsGroupBody', slice.groups);\n      fill('statsClassBody', slice.classes);\n\n      \/\/ \u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e17\u0e2d\u0e21\u0e41\u0e2a\u0e14\u0e07\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e40\u0e17\u0e2d\u0e21\u0e40\u0e2a\u0e21\u0e2d \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e40\u0e19\u0e49\u0e19\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e22\u0e39\u0e48\n      const termBody = $('#statsTermBody');\n      termBody.replaceChildren(...data.terms.map(term => {\n        const row = statsRow(term.label, term.counts);\n        if (state.statsTerm === term.term) row.classList.add('stats-active-row');\n        return row;\n      }));\n      termBody.appendChild(statsRow('\u0e23\u0e27\u0e21\u0e17\u0e31\u0e49\u0e07\u0e1b\u0e35', data.overall, true));\n\n      $('#statsFootnote').textContent =\n        `\u0e19\u0e31\u0e1a \u201c\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u201d \u0e08\u0e32\u0e01\u0e40\u0e01\u0e23\u0e14 D \u0e02\u0e36\u0e49\u0e19\u0e44\u0e1b \u00b7 \u201c\u0e2a\u0e2d\u0e1a\u0e15\u0e01\u201d \u0e04\u0e37\u0e2d\u0e40\u0e01\u0e23\u0e14 F \u00b7 \u201c\u0e02\u0e32\u0e14\u0e2a\u0e2d\u0e1a\u201d \u0e04\u0e37\u0e2d\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e21\u0e35\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a` +\n        (data.generatedAt ? ` \u2014 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e13 ${data.generatedAt}` : '');\n    }\n\n\n\n\n\n    function enterApp(result) {\n      state.session = result;\n      state.sessionToken = result.sessionToken;\n      localStorage.setItem('studentVerificationSession', state.sessionToken);\n      $('#authView').classList.add('hidden');\n      $('#appView').classList.remove('hidden');\n      $('#userDisplay').textContent = result.user.username || result.user.email;\n      $('#userRole').textContent = result.user.role === 'admin'\n        ? '\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a'\n        : (result.user.schoolName || '\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19');\n      $('#homeSchoolName').textContent = result.user.role === 'admin'\n        ? '\u0e20\u0e32\u0e1e\u0e23\u0e27\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e38\u0e01\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19'\n        : `\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19: ${result.user.schoolName || '\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19'}`;\n      $('#examSchoolName').textContent = result.user.role === 'admin'\n        ? '\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a \u2014 \u0e2a\u0e48\u0e07\u0e44\u0e14\u0e49\u0e17\u0e38\u0e01\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19'\n        : `\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19: ${result.user.schoolName || '\u2014'}`;\n      $('#examSenderName').textContent = result.user.username || result.user.email || '\u2014';\n      $('#examTodayDate').textContent = formatThaiDate(new Date());\n      restoreExamDraft();\n      showModule('home');\n\n      const select = $('#scopeSelect');\n      const makeOptions = () => result.scopes.map(scope => {\n        const option = document.createElement('option');\n        option.value = scope.ref;\n        option.textContent = scope.label;\n        return option;\n      });\n      select.replaceChildren(...makeOptions());\n      $('#scopeField').classList.toggle('hidden', result.user.role !== 'admin');\n      if (!result.scopes.length) {\n        $('.heading-actions').classList.add('hidden');\n        $('#recordsList').replaceChildren();\n        $('#recordsHead').classList.add('hidden');\n        $('#emptyState').classList.remove('hidden');\n        $('.pagination').classList.add('hidden');\n        toast('\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e41\u0e17\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e44\u0e14\u0e49', 'error');\n        return;\n      }\n      $('.heading-actions').classList.remove('hidden');\n      state.scopeRef = result.scopes[0].ref;\n      state.page = 1;\n      state.search = '';\n      state.status = 'all';\n      loadDashboard();\n      startLiveUpdates();\n    }\n\n    async function loadDashboard(options) {\n      if (!state.scopeRef) return;\n      \/\/ silent = \u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e1a\u0e37\u0e49\u0e2d\u0e07\u0e2b\u0e25\u0e31\u0e07 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e02\u0e36\u0e49\u0e19\u0e21\u0e48\u0e32\u0e19\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2a\u0e30\u0e14\u0e38\u0e14\n      const silent = Boolean(options && options.silent);\n      if (!silent) {\n        state.dashboardSignature = ''; \/\/ \u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e1b\u0e01\u0e15\u0e34 \u0e43\u0e2b\u0e49\u0e15\u0e31\u0e49\u0e07\u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e10\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e19\u0e23\u0e2d\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e16\u0e31\u0e14\u0e44\u0e1b\n        state.liveEpoch++;             \/\/ \u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e23\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e49\u0e32\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e40\u0e01\u0e48\u0e32\u0e41\u0e25\u0e49\u0e27\n        state.liveLastChangeAt = Date.now(); \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e25\u0e07\u0e21\u0e37\u0e2d\u0e17\u0e33\u0e2d\u0e30\u0e44\u0e23 \u0e43\u0e2b\u0e49\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e15\u0e23\u0e27\u0e08\u0e16\u0e35\u0e48\n        setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d...');\n      }\n      try {\n        const result = await server('getDashboard', state.sessionToken, {\n          scopeRef: state.scopeRef,\n          page: state.page,\n          pageSize: 25,\n          search: state.search,\n          sort: state.sort,\n          status: state.status\n        });\n        state.dashboard = result;\n        state.scopeRef = result.scope.ref;\n        renderDashboard(result);\n      } catch (error) {\n        if (silent) throw error;\n        handleError(error);\n      } finally {\n        if (!silent) setLoading(false);\n      }\n    }\n\n    \/* ---- \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 ----\n       Apps Script \u0e44\u0e21\u0e48\u0e21\u0e35\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e21\u0e32\u0e2b\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e40\u0e2d\u0e07 \u0e08\u0e36\u0e07\u0e43\u0e0a\u0e49\u0e27\u0e34\u0e18\u0e35\u0e16\u0e32\u0e21\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e30\u0e22\u0e30\n       \u0e14\u0e49\u0e27\u0e22\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e17\u0e35\u0e48\u0e40\u0e1a\u0e32\u0e21\u0e32\u0e01 (getDashboardSignal \u0e2d\u0e48\u0e32\u0e19\u0e41\u0e04\u0e48\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27) \u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e23\u0e34\u0e07\n       \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 \u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e08\u0e36\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e2b\u0e19\u0e49\u0e32 *\/\n    const LIVE_FAST_MS = 5000;                    \/\/ \u0e0a\u0e48\u0e27\u0e07\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e2b\u0e27 \u2014 \u0e15\u0e23\u0e27\u0e08\u0e16\u0e35\u0e48\n    const LIVE_IDLE_MS = 20000;                   \/\/ \u0e40\u0e07\u0e35\u0e22\u0e1a\u0e21\u0e32\u0e2a\u0e31\u0e01\u0e1e\u0e31\u0e01 \u2014 \u0e1c\u0e48\u0e2d\u0e19\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e25\u0e07\n    const LIVE_SLOW_MS = 60000;                   \/\/ \u0e40\u0e07\u0e35\u0e22\u0e1a\u0e21\u0e32\u0e19\u0e32\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e41\u0e17\u0e47\u0e1a\u0e16\u0e39\u0e01\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48\n    const LIVE_IDLE_AFTER_MS = 3 * 60 * 1000;\n    const LIVE_SLOW_AFTER_MS = 15 * 60 * 1000;\n    const LIVE_SLEEP_AFTER_MS = 30 * 60 * 1000;   \/\/ \u0e40\u0e1b\u0e34\u0e14\u0e04\u0e49\u0e32\u0e07\u0e17\u0e34\u0e49\u0e07\u0e44\u0e27\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e41\u0e15\u0e30\u0e40\u0e25\u0e22 \u0e43\u0e2b\u0e49\u0e1e\u0e31\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e44\u0e27\u0e49\u0e01\u0e48\u0e2d\u0e19\n\n    function startLiveUpdates() {\n      stopLiveUpdates();\n      if (!state.sessionToken) return;\n      const now = Date.now();\n      state.liveLastChangeAt = now;\n      state.liveLastActivityAt = now;\n      state.liveErrors = 0;\n      state.liveAsleep = false;\n      setLiveStatus('\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u2022 \u0e15\u0e23\u0e27\u0e08\u0e17\u0e38\u0e01 5 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35');\n      \/\/ \u0e44\u0e21\u0e48\u0e15\u0e23\u0e27\u0e08\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e01\u0e48\u0e2d\u0e19 \u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e41\u0e22\u0e48\u0e07\u0e01\u0e31\u0e19\u0e15\u0e2d\u0e19\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\n      scheduleLivePoll(LIVE_FAST_MS);\n    }\n\n    function stopLiveUpdates() {\n      if (state.liveTimer) clearTimeout(state.liveTimer);\n      state.liveTimer = null;\n      state.liveBusy = false;\n      state.liveAsleep = false;\n      state.liveErrors = 0;\n      state.dashboardSignature = '';\n      setLiveStatus('');\n    }\n\n    function scheduleLivePoll(delay) {\n      if (state.liveTimer) clearTimeout(state.liveTimer);\n      state.liveTimer = null;\n      if (!state.sessionToken || state.liveAsleep) return;\n      state.liveTimer = setTimeout(runLivePoll, delay == null ? liveDelay() : delay);\n    }\n\n    \/* \u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e1b\u0e23\u0e31\u0e1a\u0e15\u0e32\u0e21\u0e2a\u0e16\u0e32\u0e19\u0e01\u0e32\u0e23\u0e13\u0e4c \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e47\u0e27\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e19\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e08\u0e23\u0e34\u0e07\n       \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e40\u0e1c\u0e32\u0e42\u0e04\u0e27\u0e15\u0e32 Apps Script \u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e40\u0e09\u0e22 \u0e46 *\/\n    function liveDelay() {\n      if (state.liveErrors) {\n        return Math.min(LIVE_SLOW_MS, LIVE_FAST_MS * Math.pow(2, Math.min(4, state.liveErrors)));\n      }\n      if (document.hidden) return LIVE_SLOW_MS;\n      const quiet = Date.now() - state.liveLastChangeAt;\n      if (quiet >= LIVE_SLOW_AFTER_MS) return LIVE_SLOW_MS;\n      if (quiet >= LIVE_IDLE_AFTER_MS) return LIVE_IDLE_MS;\n      return LIVE_FAST_MS;\n    }\n\n    async function runLivePoll() {\n      state.liveTimer = null;\n      if (!state.sessionToken) return;\n      if (Date.now() - state.liveLastActivityAt >= LIVE_SLEEP_AFTER_MS) {\n        state.liveAsleep = true;\n        setLiveStatus('\u0e1e\u0e31\u0e01\u0e01\u0e32\u0e23\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 (\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19) \u2014 \u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e34\u0e48\u0e21\u0e43\u0e2b\u0e21\u0e48');\n        return;\n      }\n      await pollLiveUpdates();\n      scheduleLivePoll();\n    }\n\n    \/* \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e02\u0e22\u0e31\u0e1a = \u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e15\u0e23\u0e27\u0e08\u0e16\u0e35\u0e48\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e41\u0e25\u0e30\u0e1b\u0e25\u0e38\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e17\u0e35\u0e48\u0e1e\u0e31\u0e01\u0e44\u0e27\u0e49 *\/\n    function noteUserActivity() {\n      state.liveLastActivityAt = Date.now();\n      if (!state.sessionToken || !state.liveAsleep) return;\n      state.liveAsleep = false;\n      setLiveStatus('\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u2022 \u0e15\u0e23\u0e27\u0e08\u0e17\u0e38\u0e01 5 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35');\n      scheduleLivePoll(0);\n    }\n\n    function setLiveStatus(text) {\n      const box = $('#liveStatus');\n      if (!box) return;\n      $('#liveStatusText').textContent = text;\n      box.classList.toggle('hidden', !text);\n    }\n\n    async function pollLiveUpdates() {\n      if (!state.sessionToken || !state.scopeRef) return;\n      if (state.liveBusy) return;\n      if (document.hidden) return;                        \/\/ \u0e41\u0e17\u0e47\u0e1a\u0e16\u0e39\u0e01\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e1a\u0e01\u0e27\u0e19\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\n      if (document.querySelector('dialog[open]')) return; \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e33\u0e25\u0e31\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e43\u0e19\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a \u0e2d\u0e22\u0e48\u0e32\u0e2a\u0e25\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e15\u0e49\u0e21\u0e37\u0e2d\n      state.liveBusy = true;\n      \/\/ \u0e2a\u0e48\u0e07\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e44\u0e1b\u0e14\u0e49\u0e27\u0e22 \u0e16\u0e49\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e08\u0e23\u0e34\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e08\u0e30\u0e41\u0e19\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e0a\u0e38\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e40\u0e25\u0e22\n      \/\/ \u0e1b\u0e23\u0e30\u0e2b\u0e22\u0e31\u0e14\u0e01\u0e32\u0e23\u0e27\u0e34\u0e48\u0e07\u0e44\u0e1b-\u0e01\u0e25\u0e31\u0e1a\u0e2d\u0e35\u0e01\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e2d\u0e1a \u0e0b\u0e36\u0e48\u0e07\u0e1a\u0e19 Apps Script \u0e01\u0e34\u0e19\u0e40\u0e27\u0e25\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\n      const view = {\n        page: state.page, pageSize: 25, search: state.search,\n        sort: state.sort, status: state.status\n      };\n      \/\/ \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2a\u0e25\u0e31\u0e1a\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2b\u0e19\u0e49\u0e32\/\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e43\u0e2b\u0e21\u0e48 \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e04\u0e33\u0e02\u0e2d\u0e19\u0e35\u0e49\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\n      \/\/ \u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e40\u0e01\u0e48\u0e32 \u0e15\u0e49\u0e2d\u0e07\u0e17\u0e34\u0e49\u0e07 \u0e44\u0e21\u0e48\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e31\u0e49\u0e19\u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e10\u0e32\u0e19\u0e08\u0e30\u0e40\u0e1e\u0e35\u0e49\u0e22\u0e19\u0e02\u0e49\u0e32\u0e21\u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\n      const epoch = state.liveEpoch;\n      try {\n        const signal = await server('getDashboardSignal', state.sessionToken, {\n          scopeRef: state.scopeRef,\n          since: state.dashboardSignature,\n          view: view\n        });\n        if (epoch !== state.liveEpoch) return;\n        state.liveErrors = 0;\n        const signature = String((signal && signal.signature) || '');\n        if (!signature) return;\n        if (!state.dashboardSignature) {          \/\/ \u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01 \u2014 \u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e10\u0e32\u0e19\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\n          state.dashboardSignature = signature;\n          return;\n        }\n        if (signature === state.dashboardSignature) return;\n        const previous = state.dashboardSignature;\n        state.dashboardSignature = signature;\n        const before = totalOf(state.dashboard);\n        const beforeDigest = viewDigest(state.dashboard);\n        try {\n          \/\/ \u0e43\u0e0a\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e41\u0e19\u0e1a\u0e21\u0e32\u0e44\u0e14\u0e49\u0e01\u0e47\u0e15\u0e48\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e22\u0e31\u0e07\u0e14\u0e39\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e40\u0e14\u0e34\u0e21\u0e2d\u0e22\u0e39\u0e48 \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2b\u0e19\u0e49\u0e32\/\u0e04\u0e33\u0e04\u0e49\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e23\u0e2d\n          if (signal.dashboard && signal.dashboard.scope && sameView(view)) {\n            state.dashboard = signal.dashboard;\n            state.scopeRef = signal.dashboard.scope.ref;\n            renderDashboard(signal.dashboard);\n          } else {\n            await loadDashboard({silent: true});\n          }\n        } catch (error) {\n          state.dashboardSignature = previous;   \/\/ \u0e42\u0e2b\u0e25\u0e14\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e43\u0e2b\u0e49\u0e23\u0e2d\u0e1a\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\n          throw error;\n        }\n        state.liveLastChangeAt = Date.now();\n        setLiveStatus('\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 ' + new Intl.DateTimeFormat('th-TH', {\n          hour: '2-digit', minute: '2-digit', second: '2-digit'\n        }).format(new Date()) + ' \u0e19.');\n        \/\/ \u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e2d\u0e32\u0e08\u0e02\u0e22\u0e31\u0e1a\u0e42\u0e14\u0e22\u0e17\u0e35\u0e48\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 (\u0e40\u0e0a\u0e48\u0e19\u0e41\u0e01\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e2d\u0e37\u0e48\u0e19\n        \/\/ \u0e2b\u0e23\u0e37\u0e2d\u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e43\u0e19\u0e41\u0e04\u0e0a\u0e15\u0e32\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e23\u0e34\u0e07\u0e44\u0e21\u0e48\u0e17\u0e31\u0e19\u0e1e\u0e2d\u0e14\u0e35) \u0e01\u0e23\u0e13\u0e35\u0e19\u0e31\u0e49\u0e19\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e40\u0e07\u0e35\u0e22\u0e1a \u0e46 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e14\u0e49\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\n        if (viewDigest(state.dashboard) === beforeDigest) return;\n        const added = before == null ? null : totalOf(state.dashboard) - before;\n        if (added && added > 0) {\n          toast(`\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48 ${formatNumber(added)} \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27`, 'success');\n        } else {\n          toast('\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27', 'info', 3000);\n        }\n      } catch (error) {\n        const message = error && error.message ? error.message : String(error || '');\n        if (\/\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19|\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48|\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\/.test(message)) {\n          stopLiveUpdates();\n          handleError(error);\n          return;\n        }\n        \/\/ \u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e2d\u0e37\u0e48\u0e19 \u0e46 (\u0e40\u0e19\u0e47\u0e15\u0e2b\u0e25\u0e38\u0e14) \u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e07\u0e35\u0e22\u0e1a \u0e46 \u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22 \u0e46 \u0e16\u0e2d\u0e22\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e25\u0e07\n        state.liveErrors++;\n      } finally {\n        state.liveBusy = false;\n      }\n    }\n\n    function sameView(view) {\n      return view.page === state.page && view.search === state.search &&\n        view.sort === state.sort && view.status === state.status;\n    }\n\n    function totalOf(data) {\n      if (!data) return null;\n      return Number(data.matchingTotal == null ? data.total : data.matchingTotal) || 0;\n    }\n\n    \/* \u0e2a\u0e23\u0e38\u0e1b\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e1a\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e15\u0e23\u0e34\u0e07\u0e2a\u0e31\u0e49\u0e19 \u0e46 \u0e43\u0e0a\u0e49\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e27\u0e48\u0e32\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e41\u0e25\u0e49\u0e27\u0e21\u0e35\u0e2d\u0e30\u0e44\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e08\u0e23\u0e34\u0e07\u0e44\u0e2b\u0e21 *\/\n    function viewDigest(data) {\n      if (!data) return '';\n      return [\n        data.total, data.matchingTotal, data.confirmedCount, data.pendingCount,\n        (data.records || []).map(record => record.rowNumber + ':' + (record.confirmed ? 1 : 0)).join(',')\n      ].join('|');\n    }\n\n    function renderDashboard(data) {\n      $('#schoolDescription').textContent = '\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19: ' + data.scope.label;\n      $('#recordsTitle').textContent = '\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23 \u2014 ' + data.scope.label;\n      const matchingTotal = data.matchingTotal == null ? data.total : data.matchingTotal;\n      $('#totalCount').textContent = formatNumber(matchingTotal);\n      $('#confirmedCount').textContent = formatNumber(data.confirmedCount);\n      $('#pendingCount').textContent = formatNumber(data.pendingCount);\n      if (!state.search) $('#homeApplicantTotal').textContent = formatNumber(matchingTotal);\n      $('#homeApplicantPending').textContent = formatNumber(data.notificationCount == null ? data.pendingCount : data.notificationCount);\n      updateNotificationBadge(data.notificationCount == null ? data.pendingCount : data.notificationCount);\n      state.status = data.status || state.status || 'all';\n      $$('.status-filter').forEach(button => {\n        const active = button.dataset.status === state.status;\n        button.classList.toggle('active', active);\n        button.setAttribute('aria-pressed', String(active));\n      });\n      const statusLabel = state.status === 'pending' ? '\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a' : state.status === 'confirmed' ? '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27' : '';\n      $('#resultSummary').textContent = (state.search\n        ? `\u0e1e\u0e1a ${formatNumber(data.total)} \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23${statusLabel ? ` \u0e2a\u0e16\u0e32\u0e19\u0e30 \u201c${statusLabel}\u201d` : ''} \u0e08\u0e32\u0e01\u0e04\u0e33\u0e04\u0e49\u0e19 \u201c${state.search}\u201d`\n        : `${statusLabel || '\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14'} ${formatNumber(data.total)} \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23`) + sortSummary(data);\n      if (data.sort) $('#sortSelect').value = data.sort;\n      $('#pageInfo').textContent = `\u0e2b\u0e19\u0e49\u0e32 ${data.page} \/ ${data.totalPages}`;\n      $('#prevPage').disabled = data.page <= 1;\n      $('#nextPage').disabled = data.page >= data.totalPages;\n      $('#scopeSelect').value = data.scope.ref;\n\n      const list = $('#recordsList');\n      const seqOffset = ((data.page || 1) - 1) * (data.pageSize || 25);\n      list.replaceChildren(...data.records.map(function (record, index) {\n        return createRecordElement(record, seqOffset + index + 1);\n      }));\n      $('#recordsHead').classList.toggle('hidden', data.records.length === 0);\n      $('#emptyState').classList.toggle('hidden', data.records.length > 0);\n      $('.pagination').classList.toggle('hidden', data.total === 0);\n    }\n\n    function sortSummary(data) {\n      if (!data.sort) return '';                    \/\/ \u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\n      if (data.sort !== 'latest') return ' \u2022 \u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e43\u0e19\u0e0a\u0e35\u0e15';\n      const label = data.sortColumn\n        ? `\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21 \u201c${data.sortColumn}\u201d \u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e01\u0e48\u0e2d\u0e19`\n        : '\u0e40\u0e23\u0e35\u0e22\u0e07\u0e08\u0e32\u0e01\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e01\u0e48\u0e2d\u0e19';\n      return data.latestAppliedAt ? ` \u2022 ${label} (\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14: ${data.latestAppliedAt})` : ` \u2022 ${label}`;\n    }\n\n    function updateNotificationBadge(value) {\n      const count = Math.max(0, Number(value) || 0);\n      const bell = $('#notificationBell');\n      const badge = $('#notificationBadge');\n      badge.textContent = count > 99 ? '99+' : formatNumber(count);\n      badge.classList.toggle('hidden', count === 0);\n      bell.classList.toggle('has-notifications', count > 0);\n      bell.dataset.count = String(count);\n      bell.setAttribute('aria-label', count\n        ? `\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48 ${formatNumber(count)} \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a`\n        : '\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48');\n    }\n\n    async function onNotificationBell() {\n      const count = Number($('#notificationBell').dataset.count || 0);\n      toast(count\n        ? `\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48 ${formatNumber(count)} \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a`\n        : '\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a', 'info');\n      if (count) {\n        state.status = 'pending';\n        state.page = 1;\n        showModule('applicants');\n        await loadDashboard();\n        $('.records-panel').scrollIntoView({behavior: 'smooth', block: 'start'});\n      }\n    }\n\n    function createRecordElement(record, seqNumber) {\n      const row = document.createElement('article');\n      row.className = 'record-row' + (record.confirmed ? ' is-confirmed' : '');\n\n      const seq = document.createElement('span');\n      seq.className = 'record-seq';\n      seq.textContent = formatNumber(seqNumber || record.rowNumber - 1);\n      seq.title = '\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48 ' + record.rowNumber + ' \u0e43\u0e19\u0e0a\u0e35\u0e15';\n\n      const name = document.createElement('div');\n      name.className = 'record-name';\n      name.textContent = record.title;\n\n      \/\/ subtitle \u0e21\u0e32\u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a \"\u0e0a\u0e37\u0e48\u0e2d\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c: \u0e04\u0e48\u0e32\" \u0e08\u0e36\u0e07\u0e41\u0e22\u0e01\u0e1b\u0e49\u0e32\u0e22\u0e01\u0e33\u0e01\u0e31\u0e1a\u0e2d\u0e2d\u0e01\u0e21\u0e32\u0e43\u0e2b\u0e49\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e48\u0e32\u0e22\n      const meta = document.createElement('div');\n      meta.className = 'record-meta';\n      const separator = String(record.subtitle || '').indexOf(': ');\n      if (separator > 0) {\n        const label = document.createElement('span');\n        label.className = 'record-meta-label';\n        label.textContent = record.subtitle.slice(0, separator);\n        const value = document.createElement('span');\n        value.textContent = record.subtitle.slice(separator + 2);\n        meta.append(label, value);\n      } else if (record.subtitle) {\n        meta.textContent = record.subtitle;\n      } else {\n        meta.textContent = '\u2014';\n        meta.classList.add('record-empty');\n      }\n\n      const date = document.createElement('div');\n      date.className = 'record-date';\n      date.textContent = record.appliedAt || '\u2014';\n      if (!record.appliedAt) date.classList.add('record-empty');\n\n      const status = document.createElement('span');\n      status.className = 'status-badge ' + (record.confirmed ? 'confirmed' : 'pending');\n      status.textContent = record.confirmed ? '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27' : '\u0e23\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a';\n\n      const actions = document.createElement('div');\n      actions.className = 'record-actions';\n      actions.append(button('\u0e14\u0e39\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14', 'btn btn-outline btn-small', () => showDetails(record)));\n      if (!record.confirmed) {\n        actions.append(button('\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25', 'btn btn-primary btn-small', () => confirmRecord(record)));\n      }\n\n      row.append(seq, name, meta, date, status, actions);\n      return row;\n    }\n\n    function showDetails(record) {\n      state.selectedRecord = record;\n      $('#detailTitle').textContent = record.title;\n      const grid = $('#detailGrid');\n      grid.replaceChildren(...record.cells.map(cell => {\n        const item = document.createElement('div');\n        item.className = 'detail-cell';\n        const label = document.createElement('small');\n        label.textContent = cell.label;\n        const value = document.createElement('div');\n        value.textContent = cell.value || '\u2014';\n        item.append(label, value);\n        return item;\n      }));\n      $('#detailConfirmButton').classList.toggle('hidden', record.confirmed);\n      $('#detailDialog').showModal();\n    }\n\n    function confirmSelectedRecord() {\n      if (state.selectedRecord) confirmRecord(state.selectedRecord, true);\n    }\n\n    async function confirmRecord(record, closeDialog = false) {\n      if (!confirm(`\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e27\u0e48\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07 \u201c${record.title}\u201d \u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e25\u0e49\u0e27\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?`)) return;\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19...');\n      try {\n        const result = await server('confirmRecord', state.sessionToken, record.ref);\n        if (closeDialog && $('#detailDialog').open) $('#detailDialog').close();\n        toast(result.message, 'success');\n        await loadDashboard();\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    function changePage(delta) {\n      if (!state.dashboard) return;\n      const next = state.dashboard.page + delta;\n      if (next < 1 || next > state.dashboard.totalPages) return;\n      state.page = next;\n      loadDashboard();\n      scrollTo({top: 0, behavior: 'smooth'});\n    }\n\n    async function download(format) {\n      if (!state.scopeRef) return;\n      setLoading(true, format === 'csv' ? '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c CSV...' : '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c Excel...');\n      try {\n        const file = await server('downloadData', state.sessionToken, {\n          scopeRef: state.scopeRef,\n          format\n        });\n        saveBase64File(file);\n        toast('\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27', 'success');\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    \/* \u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07 \u2014 \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e41\u0e19\u0e1a \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e2b\u0e22\u0e34\u0e1a\u0e44\u0e1b\u0e01\u0e23\u0e2d\u0e01\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49 *\/\n    async function downloadCoverLetterTemplate() {\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21...');\n      try {\n        const file = await server('getCoverLetterTemplate', state.sessionToken);\n        saveBase64File(file);\n        toast('\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27 \u0e42\u0e1b\u0e23\u0e14\u0e08\u0e31\u0e14\u0e17\u0e33\u0e41\u0e25\u0e30\u0e25\u0e07\u0e19\u0e32\u0e21\u0e01\u0e48\u0e2d\u0e19\u0e41\u0e19\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e40\u0e02\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a', 'success', 6000);\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    \/* \u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21 Excel \u0e17\u0e35\u0e48\u0e2b\u0e31\u0e27\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19 \u2014 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e2b\u0e22\u0e34\u0e1a\u0e44\u0e1b\u0e01\u0e23\u0e2d\u0e01\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49 *\/\n    async function downloadExamTemplate() {\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21...');\n      try {\n        const file = await server('getExamTemplate', state.sessionToken);\n        saveBase64File(file);\n        toast('\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27 \u0e42\u0e1b\u0e23\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e25\u0e49\u0e27\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07', 'success', 6000);\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    function saveBase64File(file) {\n      const binary = atob(file.base64);\n      const bytes = new Uint8Array(binary.length);\n      for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n      const url = URL.createObjectURL(new Blob([bytes], {type: file.mimeType}));\n      const anchor = document.createElement('a');\n      anchor.href = url;\n      anchor.download = file.fileName;\n      document.body.appendChild(anchor);\n      anchor.click();\n      anchor.remove();\n      setTimeout(() => URL.revokeObjectURL(url), 1000);\n    }\n\n    async function onLogout() {\n      const token = state.sessionToken;\n      clearSession(false);\n      try { await server('logout', token); } catch (_) {}\n      toast('\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e25\u0e49\u0e27', 'info');\n    }\n\n    function clearSession(showMessage = true) {\n      stopLiveUpdates();\n      localStorage.removeItem('studentVerificationSession');\n      state.sessionToken = '';\n      state.session = null;\n      state.scopeRef = '';\n      state.dashboard = null;\n      state.activeModule = 'home';\n      state.status = 'all';\n      \/\/ \u0e15\u0e49\u0e2d\u0e07\u0e25\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e41\u0e19\u0e1a\u0e44\u0e27\u0e49\u0e14\u0e49\u0e27\u0e22 \u0e44\u0e21\u0e48\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e31\u0e49\u0e19\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e04\u0e19\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e1a\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e08\u0e30\u0e40\u0e2b\u0e47\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e02\u0e2d\u0e07\u0e04\u0e19\u0e01\u0e48\u0e2d\u0e19\n      try { localStorage.removeItem(EXAM_DRAFT_KEY); } catch (_) {}\n      state.examRows = [];\n      state.examCoverLetter = null;\n      state.examAttachments = [];\n      state.examSubmissionId = '';\n      state.examSourceFile = '';\n      renderExamTable();\n      renderCoverLetter();\n      renderExamAttachments();\n      $('#homeApplicantTotal').textContent = '0';\n      $('#homeApplicantPending').textContent = '0';\n      updateNotificationBadge(0);\n      $('#appView').classList.add('hidden');\n      $('#authView').classList.remove('hidden');\n      $('.auth-tabs').classList.remove('hidden');\n      $('#loginTab').click();\n      if (showMessage) toast('\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48', 'info');\n    }\n\n    function showAuthPanel(id) {\n      $$('.auth-content').forEach(panel => panel.classList.toggle('hidden', panel.id !== id));\n    }\n\n    function setLoading(show, text = '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14...') {\n      $('#loadingText').textContent = text;\n      $('#loadingOverlay').classList.toggle('hidden', !show);\n    }\n\n    function toast(message, type = 'info', duration = 4500) {\n      const item = document.createElement('div');\n      item.className = 'toast ' + type;\n      item.textContent = message;\n      $('#toastRegion').appendChild(item);\n      setTimeout(() => item.remove(), duration);\n    }\n\n    function handleError(error) {\n      const message = error && error.message ? error.message : String(error || '\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14');\n      if (\/\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19|\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48|\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\/.test(message)) {\n        clearSession(false);\n      }\n      toast(message.replace(\/^Exception:\\s*\/, ''), 'error', 6500);\n    }\n\n    function button(label, className, handler) {\n      const element = document.createElement('button');\n      element.type = 'button';\n      element.className = className;\n      element.textContent = label;\n      element.addEventListener('click', handler);\n      return element;\n    }\n\n    function formatNumber(value) {\n      return new Intl.NumberFormat('th-TH').format(Number(value) || 0);\n    }\n\n    \/* \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e1a\u0e1a\u0e23\u0e32\u0e0a\u0e01\u0e32\u0e23\u0e44\u0e17\u0e22 \u0e40\u0e0a\u0e48\u0e19 4 \u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21 2569 *\/\n    function formatThaiDate(date) {\n      return new Intl.DateTimeFormat('th-TH', {\n        day: 'numeric', month: 'long', year: 'numeric'\n      }).format(date);\n    }\n\n    function formatThaiDateTime(date) {\n      return formatThaiDate(date) + ' \u0e40\u0e27\u0e25\u0e32 ' + new Intl.DateTimeFormat('th-TH', {\n        hour: '2-digit', minute: '2-digit'\n      }).format(date) + ' \u0e19.';\n    }\n\n    \/\/ \u0e40\u0e23\u0e35\u0e22\u0e01 backend \u0e1c\u0e48\u0e32\u0e19 form POST \u0e43\u0e19 iframe \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e30 session token \u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 URL\n    function server(action, ...args) {\n      return ensurePostTransport().then(() => callPost(action, buildParams(action, args)));\n    }\n\n    \/\/ \u0e15\u0e49\u0e2d\u0e07\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a EXAM_MAX_ROWS_PER_SUBMISSION \u0e1d\u0e31\u0e48\u0e07 Apps Script\n    \/\/ \u0e16\u0e49\u0e32\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e19\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e15\u0e2d\u0e19\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e30\u0e40\u0e2b\u0e47\u0e19\u0e15\u0e32\u0e23\u0e32\u0e07\u0e04\u0e23\u0e1a \u0e41\u0e19\u0e1a\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e40\u0e2a\u0e23\u0e47\u0e08\n    \/\/ \u0e41\u0e25\u0e49\u0e27\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e15\u0e2d\u0e19\u0e01\u0e14\u0e2a\u0e48\u0e07 \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e1a\u0e2d\u0e01\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e15\u0e2d\u0e19\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e1f\u0e25\u0e4c\n    const EXAM_MAX_ROWS = 500;\n\n    \/\/ \u0e2d\u0e48\u0e32\u0e19\u0e2b\u0e31\u0e27\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e41\u0e1a\u0e1a\u0e22\u0e37\u0e14\u0e2b\u0e22\u0e38\u0e48\u0e19 \u0e40\u0e1c\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2a\u0e25\u0e31\u0e1a\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e2b\u0e23\u0e37\u0e2d\u0e21\u0e35\u0e41\u0e16\u0e27\u0e27\u0e48\u0e32\u0e07\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\n    const EXAM_HEADER_ALIASES = {\n      no: ['\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48', '\u0e25\u0e33\u0e14\u0e31\u0e1a'],\n      studentId: ['\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32', '\u0e23\u0e2b\u0e31\u0e2a'],\n      name: ['\u0e0a\u0e37\u0e48\u0e2d', '\u0e09\u0e32\u0e22\u0e32', '\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25'],\n      klass: ['\u0e0a\u0e31\u0e49\u0e19'],\n      unit: ['\u0e2a\u0e31\u0e07\u0e01\u0e31\u0e14', '\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23']\n    };\n\n    async function handleExamFileUpload(event) {\n      const file = event.target.files[0];\n      event.target.value = '';\n      if (!file) return;\n      if (typeof XLSX === 'undefined') {\n        toast('\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e42\u0e2b\u0e25\u0e14\u0e15\u0e31\u0e27\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e1f\u0e25\u0e4c Excel \u0e44\u0e14\u0e49 \u0e42\u0e1b\u0e23\u0e14\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48', 'error');\n        return;\n      }\n      \/\/ \u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e17\u0e35\u0e48\u0e19\u0e33\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a \u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e36\u0e07\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e07\u0e40\u0e14\u0e34\u0e21\u0e17\u0e31\u0e49\u0e07\u0e0a\u0e38\u0e14 \u0e15\u0e49\u0e2d\u0e07\u0e16\u0e32\u0e21\u0e01\u0e48\u0e2d\u0e19\n      if (state.examRows.length && !confirm(\n        '\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e30\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e15\u0e32\u0e23\u0e32\u0e07\u0e02\u0e13\u0e30\u0e19\u0e35\u0e49 (' +\n        formatNumber(state.examRows.length) + ' \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d)\\n\\n\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c\u0e08\u0e30\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?')) {\n        return;\n      }\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e1f\u0e25\u0e4c Excel...');\n      try {\n        const buffer = await file.arrayBuffer();\n        const workbook = XLSX.read(new Uint8Array(buffer), {type: 'array'});\n        const sheet = workbook.Sheets[workbook.SheetNames[0]];\n        const rows = XLSX.utils.sheet_to_json(sheet, {header: 1, defval: ''});\n        const parsed = parseExamRows(rows);\n        if (!parsed.length) {\n          toast('\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32 \u0e42\u0e1b\u0e23\u0e14\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2b\u0e31\u0e27\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c', 'error');\n          return;\n        }\n        if (parsed.length > EXAM_MAX_ROWS) {\n          toast('\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e21\u0e35 ' + formatNumber(parsed.length) + ' \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d \u0e2a\u0e48\u0e07\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 ' +\n            formatNumber(EXAM_MAX_ROWS) + ' \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e48\u0e2d\u0e04\u0e23\u0e31\u0e49\u0e07 \u0e42\u0e1b\u0e23\u0e14\u0e41\u0e1a\u0e48\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e25\u0e49\u0e27\u0e2a\u0e48\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e2d\u0e1a',\n            'error', 9000);\n          return;\n        }\n        state.examRows = parsed;\n        \/\/ \u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e34\u0e48\u0e21\u0e14\u0e39\u0e08\u0e32\u0e01\u0e15\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e04\u0e33\u0e04\u0e49\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e1a\u0e31\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e27\u0e49\n        state.examSearch = '';\n        state.examShowAll = false;\n        state.examOnlyIssues = false;\n        $('#examSearchInput').value = '';\n        state.examSourceFile = file.name;\n        state.examSubmissionId = '';\n        renderExamTable();\n        toast('\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e32\u0e01\u0e44\u0e1f\u0e25\u0e4c ' + formatNumber(parsed.length) +\n          ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27 \u0e42\u0e1b\u0e23\u0e14\u0e15\u0e23\u0e27\u0e08\u0e17\u0e32\u0e19\u0e01\u0e48\u0e2d\u0e19\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23', 'success', 6000);\n      } catch (error) {\n        toast('\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49 \u0e42\u0e1b\u0e23\u0e14\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1f\u0e25\u0e4c Excel (.xlsx) \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07', 'error');\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    \/* ---- \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a: \u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07 (Word\/PDF) \u0e41\u0e25\u0e30\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2d\u0e37\u0e48\u0e19 ----\n       \u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e2d\u0e48\u0e32\u0e19\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49 \u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2a\u0e48\u0e07\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e40\u0e01\u0e47\u0e1a\u0e43\u0e19 Drive \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\n       \u0e04\u0e48\u0e32\u0e08\u0e33\u0e01\u0e31\u0e14\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e1d\u0e31\u0e48\u0e07 Apps Script (EXAM_MAX_ATTACHMENTS \/ EXAM_ATTACHMENT_MAX_BYTES) *\/\n    const EXAM_ATTACHMENT_MAX_FILES = 5;\n    const EXAM_ATTACHMENT_MAX_BYTES = 5 * 1024 * 1024;\n    const EXAM_ATTACHMENT_TOTAL_MAX_BYTES = 10 * 1024 * 1024;\n    const EXAM_ATTACHMENT_EXTENSIONS = ['doc', 'docx', 'pdf', 'xls', 'xlsx', 'jpg', 'jpeg', 'png'];\n    \/\/ \u0e1b\u0e49\u0e32\u0e22\u0e0a\u0e19\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e1a\u0e1a\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23 \u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e2d\u0e01\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19\u0e17\u0e38\u0e01\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 \u0e41\u0e25\u0e30\u0e14\u0e39\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e01\u0e27\u0e48\u0e32\u0e2d\u0e35\u0e42\u0e21\u0e08\u0e34\n    const EXAM_ATTACHMENT_ICONS = {\n      doc: 'DOC', docx: 'DOC', pdf: 'PDF', xls: 'XLS', xlsx: 'XLS',\n      jpg: 'IMG', jpeg: 'IMG', png: 'IMG'\n    };\n\n    function fileExtension(name) {\n      const dot = String(name || '').lastIndexOf('.');\n      return dot === -1 ? '' : String(name).slice(dot + 1).toLowerCase();\n    }\n\n    function formatFileSize(bytes) {\n      if (bytes < 1024) return bytes + ' B';\n      if (bytes < 1024 * 1024) return (bytes \/ 1024).toFixed(0) + ' KB';\n      return (bytes \/ 1024 \/ 1024).toFixed(1) + ' MB';\n    }\n\n    function createSubmissionId() {\n      if (window.crypto && typeof crypto.randomUUID === 'function') {\n        return 'sub_' + crypto.randomUUID();\n      }\n      return 'sub_' + Date.now() + '_' + Math.random().toString(36).slice(2, 14);\n    }\n\n    function readFileAsBase64(file) {\n      return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onload = () => {\n          const result = String(reader.result || '');\n          const comma = result.indexOf(',');\n          if (comma === -1) reject(new Error('\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07'));\n          else resolve(result.slice(comma + 1));\n        };\n        reader.onerror = () => reject(new Error('\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08'));\n        reader.readAsDataURL(file);\n      });\n    }\n\n    async function handleExamAttachmentUpload(event) {\n      const files = Array.from(event.target.files || []);\n      event.target.value = '';\n      if (!files.length) return;\n\n      const rejected = [];\n      const accepted = [];\n      \/\/ \u0e40\u0e1e\u0e14\u0e32\u0e19\u0e23\u0e27\u0e21\u0e04\u0e38\u0e21\u0e17\u0e31\u0e49\u0e07\u0e0a\u0e38\u0e14 \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e19\u0e31\u0e1a\u0e02\u0e19\u0e32\u0e14\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e14\u0e49\u0e27\u0e22\n      let totalBytes = state.examAttachments.reduce((sum, item) => sum + item.size, 0) +\n        (state.examCoverLetter ? state.examCoverLetter.size : 0);\n\n      for (const file of files) {\n        const extension = fileExtension(file.name);\n        if (EXAM_ATTACHMENT_EXTENSIONS.indexOf(extension) === -1) {\n          rejected.push(file.name + ' (\u0e0a\u0e19\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a)');\n        } else if (file.size > EXAM_ATTACHMENT_MAX_BYTES) {\n          rejected.push(file.name + ' (\u0e43\u0e2b\u0e0d\u0e48\u0e40\u0e01\u0e34\u0e19 ' + formatFileSize(EXAM_ATTACHMENT_MAX_BYTES) + ')');\n        } else if (state.examAttachments.length + accepted.length >= EXAM_ATTACHMENT_MAX_FILES) {\n          rejected.push(file.name + ' (\u0e40\u0e01\u0e34\u0e19 ' + EXAM_ATTACHMENT_MAX_FILES + ' \u0e44\u0e1f\u0e25\u0e4c)');\n        } else if (totalBytes + file.size > EXAM_ATTACHMENT_TOTAL_MAX_BYTES) {\n          rejected.push(file.name + ' (\u0e23\u0e27\u0e21\u0e01\u0e31\u0e19\u0e40\u0e01\u0e34\u0e19 ' + formatFileSize(EXAM_ATTACHMENT_TOTAL_MAX_BYTES) + ')');\n        } else {\n          totalBytes += file.size;\n          accepted.push(file);\n        }\n      }\n\n      if (accepted.length) {\n        setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a...');\n        try {\n          const prepared = [];\n          for (const file of accepted) {\n            prepared.push({\n              name: file.name,\n              size: file.size,\n              data: await readFileAsBase64(file)\n            });\n          }\n          state.examAttachments = state.examAttachments.concat(prepared);\n          state.examSubmissionId = '';\n          renderExamAttachments();\n          toast('\u0e41\u0e19\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e25\u0e49\u0e27 ' + formatNumber(accepted.length) + ' \u0e44\u0e1f\u0e25\u0e4c', 'success');\n        } catch (error) {\n          toast('\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08: ' + error.message, 'error');\n        } finally {\n          setLoading(false);\n        }\n      }\n\n      if (rejected.length) {\n        toast('\u0e41\u0e19\u0e1a\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 ' + formatNumber(rejected.length) + ' \u0e44\u0e1f\u0e25\u0e4c \u2014 ' + rejected.join(', '), 'error', 8000);\n      }\n    }\n\n    \/* ---- \u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07: \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2b\u0e25\u0e31\u0e01\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07 (Word\/PDF \u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27) ---- *\/\n    const COVER_LETTER_EXTENSIONS = ['doc', 'docx', 'pdf'];\n\n    async function handleCoverLetterUpload(event) {\n      const file = event.target.files[0];\n      event.target.value = '';\n      if (!file) return;\n\n      const extension = fileExtension(file.name);\n      if (COVER_LETTER_EXTENSIONS.indexOf(extension) === -1) {\n        toast('\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1f\u0e25\u0e4c Word (.doc, .docx) \u0e2b\u0e23\u0e37\u0e2d PDF \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19', 'error', 6500);\n        return;\n      }\n      if (file.size > EXAM_ATTACHMENT_MAX_BYTES) {\n        toast('\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e43\u0e2b\u0e0d\u0e48\u0e40\u0e01\u0e34\u0e19 ' + formatFileSize(EXAM_ATTACHMENT_MAX_BYTES), 'error', 6500);\n        return;\n      }\n      \/\/ \u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e40\u0e25\u0e48\u0e21\u0e43\u0e2b\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e27\u0e21\u0e01\u0e31\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19\u0e40\u0e1e\u0e14\u0e32\u0e19\u0e23\u0e27\u0e21\n      const attachedBytes = state.examAttachments.reduce((sum, item) => sum + item.size, 0);\n      if (attachedBytes + file.size > EXAM_ATTACHMENT_TOTAL_MAX_BYTES) {\n        toast('\u0e23\u0e27\u0e21\u0e01\u0e31\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a\u0e41\u0e25\u0e49\u0e27\u0e40\u0e01\u0e34\u0e19 ' + formatFileSize(EXAM_ATTACHMENT_TOTAL_MAX_BYTES) +\n          ' \u0e42\u0e1b\u0e23\u0e14\u0e19\u0e33\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a\u0e1a\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e2d\u0e2d\u0e01\u0e01\u0e48\u0e2d\u0e19', 'error', 7000);\n        return;\n      }\n\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07...');\n      try {\n        state.examCoverLetter = {\n          name: file.name,\n          size: file.size,\n          data: await readFileAsBase64(file)\n        };\n        state.examSubmissionId = '';\n        renderCoverLetter();\n        toast('\u0e41\u0e19\u0e1a\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e41\u0e25\u0e49\u0e27', 'success');\n      } catch (error) {\n        toast('\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08: ' + error.message, 'error');\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    function removeCoverLetter() {\n      state.examCoverLetter = null;\n      state.examSubmissionId = '';\n      renderCoverLetter();\n    }\n\n    function renderCoverLetter() {\n      const box = $('#coverLetterFile');\n      const item = state.examCoverLetter;\n      box.classList.toggle('hidden', !item);\n      $('#coverLetterEmpty').classList.toggle('hidden', !!item);\n      $('#coverLetterButtonLabel').textContent = item ? '\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07' : '\u0e41\u0e19\u0e1a\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07';\n      if (item) {\n        const icon = document.createElement('span');\n        icon.className = 'exam-attach-icon';\n        icon.textContent = EXAM_ATTACHMENT_ICONS[fileExtension(item.name)] || 'FILE';\n        icon.setAttribute('aria-hidden', 'true');\n\n        const copy = document.createElement('div');\n        copy.className = 'exam-attach-copy';\n        const name = document.createElement('strong');\n        name.textContent = item.name;\n        const size = document.createElement('small');\n        size.textContent = formatFileSize(item.size);\n        copy.append(name, size);\n\n        const remove = button('\u0e19\u0e33\u0e2d\u0e2d\u0e01', 'btn btn-outline btn-small', removeCoverLetter);\n        remove.setAttribute('aria-label', '\u0e19\u0e33\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07 ' + item.name + ' \u0e2d\u0e2d\u0e01');\n        box.replaceChildren(icon, copy, remove);\n      } else {\n        box.replaceChildren();\n      }\n      updateExamSubmitState();\n    }\n\n    \/* \u0e41\u0e16\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\u0e01\u0e31\u0e1a\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e1a\u0e2d\u0e01\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e40\u0e2a\u0e21\u0e2d \u0e08\u0e36\u0e07\u0e04\u0e33\u0e19\u0e27\u0e13\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e40\u0e14\u0e35\u0e22\u0e27 *\/\n    function setExamCheck(id, done, detail) {\n      const item = $('#' + id);\n      item.dataset.state = done ? 'done' : (id === 'checkExamAttachments' ? 'optional' : 'todo');\n      item.querySelector('.exam-check-mark').textContent = done ? '\u2713' : item.dataset.order;\n      item.querySelector('small').textContent = detail;\n    }\n\n    \/* \u0e2a\u0e48\u0e07\u0e44\u0e14\u0e49\u0e15\u0e48\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e04\u0e23\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2b\u0e25\u0e31\u0e01\u0e41\u0e25\u0e30\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d *\/\n    function updateExamSubmitState() {\n      const rowCount = state.examRows.length;\n      const attachmentCount = state.examAttachments.length;\n      const hasRows = rowCount > 0;\n      const hasLetter = !!state.examCoverLetter;\n\n      setExamCheck('checkCoverLetter', hasLetter,\n        hasLetter ? state.examCoverLetter.name : '\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e41\u0e19\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23');\n      setExamCheck('checkExamRows', hasRows,\n        hasRows ? `${formatNumber(rowCount)} \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d` : '\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d');\n      setExamCheck('checkExamAttachments', attachmentCount > 0,\n        attachmentCount ? `${formatNumber(attachmentCount)} \u0e09\u0e1a\u0e31\u0e1a` : '\u0e08\u0e30\u0e41\u0e19\u0e1a\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e01\u0e47\u0e44\u0e14\u0e49');\n\n      $('#submitExamListButton').disabled = !(hasRows && hasLetter);\n      $('#examSubmitSummary').textContent =\n        `\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07 ${hasLetter ? '1 \u0e09\u0e1a\u0e31\u0e1a' : '\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e41\u0e19\u0e1a'} \u00b7 \u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d ${formatNumber(rowCount)} \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d` +\n        ` \u00b7 \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a ${formatNumber(attachmentCount)} \u0e09\u0e1a\u0e31\u0e1a`;\n\n      const hint = $('#submitExamHint');\n      if (!hasLetter && !hasRows) {\n        hint.textContent = '\u0e42\u0e1b\u0e23\u0e14\u0e41\u0e19\u0e1a\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e41\u0e25\u0e30\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e32\u0e01\u0e44\u0e1f\u0e25\u0e4c Excel \u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e01\u0e48\u0e2d\u0e19\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23';\n      } else if (!hasLetter) {\n        hint.textContent = '\u0e22\u0e31\u0e07\u0e02\u0e32\u0e14\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e09\u0e1a\u0e31\u0e1a\u0e25\u0e07\u0e19\u0e32\u0e21\u0e0b\u0e36\u0e48\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2b\u0e25\u0e31\u0e01 \u0e08\u0e36\u0e07\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e44\u0e14\u0e49';\n      } else if (!hasRows) {\n        hint.textContent = '\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d \u0e42\u0e1b\u0e23\u0e14\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1f\u0e25\u0e4c Excel \u0e17\u0e35\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27';\n      } else {\n        hint.textContent = '\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e08\u0e31\u0e14\u0e17\u0e33\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1f\u0e25\u0e4c Excel \u0e41\u0e25\u0e30\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e44\u0e27\u0e49\u0e43\u0e19\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e23\u0e2d\u0e1a\u0e2a\u0e2d\u0e1a\u0e17\u0e31\u0e19\u0e17\u0e35';\n      }\n    }\n\n    function removeExamAttachment(index) {\n      state.examAttachments.splice(index, 1);\n      state.examSubmissionId = '';\n      renderExamAttachments();\n    }\n\n    function renderExamAttachments() {\n      const list = $('#examAttachmentList');\n      list.replaceChildren(...state.examAttachments.map((item, index) => {\n        const row = document.createElement('li');\n        row.className = 'exam-attach-item';\n\n        const icon = document.createElement('span');\n        icon.className = 'exam-attach-icon';\n        icon.textContent = EXAM_ATTACHMENT_ICONS[fileExtension(item.name)] || 'FILE';\n        icon.setAttribute('aria-hidden', 'true');\n\n        const copy = document.createElement('div');\n        copy.className = 'exam-attach-copy';\n        const name = document.createElement('strong');\n        name.textContent = item.name;\n        const size = document.createElement('small');\n        size.textContent = formatFileSize(item.size);\n        copy.append(name, size);\n\n        const remove = button('\u0e19\u0e33\u0e2d\u0e2d\u0e01', 'btn btn-outline btn-small', () => removeExamAttachment(index));\n        remove.setAttribute('aria-label', '\u0e19\u0e33\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a ' + item.name + ' \u0e2d\u0e2d\u0e01');\n\n        row.append(icon, copy, remove);\n        return row;\n      }));\n      $('#examAttachmentEmpty').classList.toggle('hidden', state.examAttachments.length > 0);\n      updateExamSubmitState();\n    }\n\n    \/* ---- \u0e23\u0e48\u0e32\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d: \u0e01\u0e31\u0e19\u0e07\u0e32\u0e19\u0e2b\u0e32\u0e22\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e2b\u0e23\u0e37\u0e2d\u0e1b\u0e34\u0e14\u0e41\u0e17\u0e47\u0e1a\u0e01\u0e25\u0e32\u0e07\u0e04\u0e31\u0e19 ---- *\/\n    const EXAM_DRAFT_KEY = 'examListDraft';\n    let examDraftTimer = 0;\n\n    \/\/ \u0e40\u0e01\u0e47\u0e1a\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e41\u0e16\u0e27\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d \u0e44\u0e21\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e19\u0e1a \u0e40\u0e1e\u0e23\u0e32\u0e30 base64 \u0e43\u0e2b\u0e0d\u0e48\u0e40\u0e01\u0e34\u0e19\u0e42\u0e04\u0e27\u0e15\u0e32 localStorage\n    function saveExamDraft() {\n      clearTimeout(examDraftTimer);\n      examDraftTimer = setTimeout(() => {\n        try {\n          if (state.examRows.length) {\n            localStorage.setItem(EXAM_DRAFT_KEY, JSON.stringify({\n              file: state.examSourceFile,\n              rows: state.examRows\n            }));\n          } else {\n            localStorage.removeItem(EXAM_DRAFT_KEY);\n          }\n        } catch (_) { \/* \u0e42\u0e04\u0e27\u0e15\u0e32\u0e40\u0e15\u0e47\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e1b\u0e34\u0e14\u0e44\u0e27\u0e49 \u2014 \u0e44\u0e21\u0e48\u0e04\u0e27\u0e23\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e2b\u0e19\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 *\/ }\n      }, 400);\n    }\n\n    function restoreExamDraft() {\n      let saved = null;\n      try {\n        saved = JSON.parse(localStorage.getItem(EXAM_DRAFT_KEY) || 'null');\n      } catch (_) {\n        saved = null;\n      }\n      const rows = (saved && Array.isArray(saved.rows)) ? saved.rows : [];\n      if (!rows.length) return;\n      state.examRows = rows.slice(0, EXAM_MAX_ROWS).map((row, index) => ({\n        no: String(index + 1),\n        studentId: String((row && row.studentId) || ''),\n        name: String((row && row.name) || ''),\n        klass: String((row && row.klass) || ''),\n        unit: String((row && row.unit) || '')\n      }));\n      state.examSourceFile = String(saved.file || '');\n      renderExamTable();\n      toast('\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49 ' + formatNumber(state.examRows.length) +\n        ' \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d (\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e19\u0e1a\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e43\u0e2b\u0e21\u0e48)', 'info', 7000);\n    }\n\n    \/**\n     * \u0e2b\u0e32\u0e41\u0e16\u0e27\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07 \u0e42\u0e14\u0e22\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e2b\u0e31\u0e27\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e17\u0e35\u0e48\u0e23\u0e39\u0e49\u0e08\u0e31\u0e01 \"\u0e21\u0e32\u0e01\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\"\n     *\n     * \u0e2b\u0e49\u0e32\u0e21\u0e43\u0e0a\u0e49 \"\u0e41\u0e16\u0e27\u0e41\u0e23\u0e01\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e33\u0e27\u0e48\u0e32\u0e0a\u0e37\u0e48\u0e2d\" \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e15\u0e34\u0e21\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e44\u0e27\u0e49\u0e02\u0e49\u0e32\u0e07\u0e1a\u0e19\n     * (\u0e40\u0e0a\u0e48\u0e19 \"\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e2d\u0e1a \u0e1b\u0e23\u0e30\u0e08\u0e33\u0e20\u0e32\u0e04\u0e40\u0e23\u0e35\u0e22\u0e19\u0e17\u0e35\u0e48 \u0e51\") \u0e01\u0e47\u0e21\u0e35\u0e04\u0e33\u0e27\u0e48\u0e32 \"\u0e0a\u0e37\u0e48\u0e2d\" \u0e2d\u0e22\u0e39\u0e48\u0e14\u0e49\u0e27\u0e22\n     * \u0e41\u0e16\u0e27\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07\u0e08\u0e23\u0e34\u0e07\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e16\u0e27\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\n     * \u0e41\u0e25\u0e49\u0e27\u0e17\u0e31\u0e49\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e16\u0e39\u0e01\u0e2d\u0e48\u0e32\u0e19\u0e1c\u0e34\u0e14\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c \u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e25\u0e02\u0e25\u0e33\u0e14\u0e31\u0e1a \u0e23\u0e2b\u0e31\u0e2a\/\u0e0a\u0e31\u0e49\u0e19\/\u0e2a\u0e31\u0e07\u0e01\u0e31\u0e14\u0e27\u0e48\u0e32\u0e07\u0e2b\u0e21\u0e14\n     * \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e13\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e43\u0e14 \u0e46\n     *\/\n    function findExamHeaderRow(rows) {\n      const fields = Object.keys(EXAM_HEADER_ALIASES);\n      let bestIndex = -1;\n      let bestScore = 0;\n      const limit = Math.min(rows.length, 20);\n      for (let r = 0; r < limit; r++) {\n        const cells = (rows[r] || []).map(cell => String(cell || '').trim()).filter(Boolean);\n        const score = fields.filter(field =>\n          cells.some(text => EXAM_HEADER_ALIASES[field].some(alias => text.indexOf(alias) !== -1))\n        ).length;\n        if (score > bestScore) { bestScore = score; bestIndex = r; }\n      }\n      \/\/ \u0e15\u0e49\u0e2d\u0e07\u0e15\u0e23\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22\u0e2a\u0e2d\u0e07\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e08\u0e36\u0e07\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07 \u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e31\u0e01\u0e15\u0e23\u0e07\u0e41\u0e04\u0e48\u0e04\u0e33\u0e40\u0e14\u0e35\u0e22\u0e27\n      return bestScore >= 2 ? bestIndex : -1;\n    }\n\n    function parseExamRows(rows) {\n      if (!rows.length) return [];\n      let headerRowIndex = findExamHeaderRow(rows);\n      if (headerRowIndex === -1) headerRowIndex = 0;\n      const headerRow = rows[headerRowIndex].map(cell => String(cell || '').trim());\n      const columnIndex = {};\n      Object.keys(EXAM_HEADER_ALIASES).forEach(field => {\n        columnIndex[field] = headerRow.findIndex(text =>\n          EXAM_HEADER_ALIASES[field].some(alias => text.indexOf(alias) !== -1));\n      });\n\n      const parsed = [];\n      rows.slice(headerRowIndex + 1).forEach(row => {\n        const studentId = columnIndex.studentId > -1 ? String(row[columnIndex.studentId] || '').trim() : '';\n        const name = columnIndex.name > -1 ? String(row[columnIndex.name] || '').trim() : '';\n        if (!studentId && !name) return; \/\/ \u0e02\u0e49\u0e32\u0e21\u0e41\u0e16\u0e27\u0e27\u0e48\u0e32\u0e07\n        parsed.push({\n          no: String(parsed.length + 1),\n          studentId,\n          name,\n          klass: columnIndex.klass > -1 ? String(row[columnIndex.klass] || '').trim() : '',\n          unit: columnIndex.unit > -1 ? String(row[columnIndex.unit] || '').trim() : ''\n        });\n      });\n      return parsed;\n    }\n\n    function clearExamRows() {\n      if (!state.examRows.length) return;\n      if (!confirm('\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c\u0e08\u0e30\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e44\u0e27\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?\\n\\n' +\n        (state.examSourceFile ? state.examSourceFile + '\\n' : '') +\n        '\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 ' + formatNumber(state.examRows.length) + ' \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\\n' +\n        '\u0e2b\u0e32\u0e01\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c\u0e08\u0e30\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e49\u0e2d\u0e07\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07')) return;\n      state.examRows = [];\n      state.examSourceFile = '';\n      state.examSubmissionId = '';\n      renderExamTable();\n    }\n\n    const EXAM_FIELD_LABELS = {\n      no: '\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48', studentId: '\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32', name: '\u0e0a\u0e37\u0e48\u0e2d - \u0e09\u0e32\u0e22\u0e32\/\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25',\n      klass: '\u0e0a\u0e31\u0e49\u0e19', unit: '\u0e2a\u0e31\u0e07\u0e01\u0e31\u0e14\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2f'\n    };\n\n    \/* \u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e27\u0e08\u0e17\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 \u2014 \u0e44\u0e1f\u0e25\u0e4c Excel \u0e17\u0e35\u0e48\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e04\u0e37\u0e2d\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a \u0e41\u0e01\u0e49\u0e17\u0e35\u0e48\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e25\u0e49\u0e27\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 *\/\n    function examCell(row, field) {\n      const td = document.createElement('td');\n      td.dataset.label = EXAM_FIELD_LABELS[field];\n      const value = String(row[field] || '').trim();\n      td.textContent = value || '\u2014';\n      if (!value) td.classList.add('exam-cell-empty');\n      return td;\n    }\n\n    \/\/ \u0e08\u0e33\u0e19\u0e27\u0e19\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e27\u0e32\u0e14\u0e01\u0e48\u0e2d\u0e19 \u0e01\u0e14 \"\u0e41\u0e2a\u0e14\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\" \u0e08\u0e36\u0e07\u0e04\u0e48\u0e2d\u0e22\u0e27\u0e32\u0e14\u0e04\u0e23\u0e1a\n    \/\/ \u0e44\u0e1f\u0e25\u0e4c 500 \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e2b\u0e19\u0e49\u0e32\u0e22\u0e32\u0e27\u0e08\u0e19\u0e2b\u0e32\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07\u0e44\u0e21\u0e48\u0e40\u0e08\u0e2d \u0e41\u0e25\u0e30\u0e27\u0e32\u0e14\u0e0a\u0e49\u0e32\u0e1a\u0e19\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\n    const EXAM_PREVIEW_LIMIT = 50;\n\n    \/* \u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e27\u0e48\u0e32\u0e07\u0e43\u0e19\u0e41\u0e16\u0e27 \u2014 \u0e15\u0e49\u0e2d\u0e07\u0e1a\u0e2d\u0e01\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e15\u0e2d\u0e19\u0e15\u0e23\u0e27\u0e08\u0e17\u0e32\u0e19 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e23\u0e30\u0e1a\u0e1a\u0e23\u0e31\u0e1a\u0e41\u0e16\u0e27\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e1b\u0e44\u0e14\u0e49\n       \u0e41\u0e25\u0e49\u0e27\u0e08\u0e30\u0e44\u0e1b\u0e1e\u0e1a\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e40\u0e2d\u0e32\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e16\u0e36\u0e07\u0e1b\u0e25\u0e32\u0e22\u0e17\u0e32\u0e07\u0e41\u0e25\u0e49\u0e27 \u0e0b\u0e36\u0e48\u0e07\u0e41\u0e01\u0e49\u0e22\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32\u0e21\u0e32\u0e01 *\/\n    function examRowIssues(row) {\n      return ['name', 'studentId', 'klass', 'unit']\n        .filter(field => !String(row[field] || '').trim())\n        .map(field => EXAM_FIELD_LABELS[field]);\n    }\n\n    function examRowMatches(row, needle) {\n      if (!needle) return true;\n      return ['studentId', 'name', 'klass', 'unit']\n        .some(field => String(row[field] || '').toLowerCase().indexOf(needle) !== -1);\n    }\n\n    function renderExamTable() {\n      const body = $('#examTableBody');\n      if (!state.examRows.length) {\n        \/\/ \u0e25\u0e49\u0e32\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e25\u0e49\u0e27\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e25\u0e31\u0e1a\u0e2a\u0e39\u0e48\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e15\u0e31\u0e49\u0e07\u0e15\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\u0e40\u0e01\u0e48\u0e32\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e08\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e2b\u0e32\u0e22\n        state.examSearch = '';\n        state.examShowAll = false;\n        state.examOnlyIssues = false;\n        if ($('#examSearchInput').value) $('#examSearchInput').value = '';\n      }\n      const needle = state.examSearch.trim().toLowerCase();\n      \/\/ \u0e1c\u0e39\u0e01\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e40\u0e14\u0e34\u0e21\u0e44\u0e27\u0e49\u0e01\u0e31\u0e1a\u0e41\u0e16\u0e27\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e23\u0e2d\u0e07 \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e43\u0e19\u0e15\u0e32\u0e23\u0e32\u0e07\u0e08\u0e36\u0e07\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e44\u0e1f\u0e25\u0e4c Excel \u0e1b\u0e25\u0e32\u0e22\u0e17\u0e32\u0e07\u0e40\u0e2a\u0e21\u0e2d\n      const all = state.examRows.map((row, index) => ({row, index, issues: examRowIssues(row)}));\n      const issueCount = all.filter(item => item.issues.length).length;\n      if (!issueCount) state.examOnlyIssues = false;\n      const matched = all.filter(item =>\n        examRowMatches(item.row, needle) && (!state.examOnlyIssues || item.issues.length));\n      const visible = state.examShowAll ? matched : matched.slice(0, EXAM_PREVIEW_LIMIT);\n\n      body.replaceChildren(...visible.map(item => {\n        const tr = document.createElement('tr');\n        if (item.issues.length) {\n          tr.className = 'exam-row-issue';\n          tr.title = '\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35 ' + item.issues.join(', ');\n        }\n        \/\/ \u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e21\u0e32\u0e08\u0e32\u0e01\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e2a\u0e21\u0e2d \u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e40\u0e02\u0e35\u0e22\u0e19\u0e25\u0e07\u0e44\u0e1f\u0e25\u0e4c Excel \u0e1b\u0e25\u0e32\u0e22\u0e17\u0e32\u0e07\n        const seqTd = document.createElement('td');\n        seqTd.className = 'exam-row-seq';\n        seqTd.dataset.label = EXAM_FIELD_LABELS.no;\n        seqTd.textContent = formatNumber(item.index + 1);\n        tr.appendChild(seqTd);\n        tr.appendChild(examCell(item.row, 'studentId'));\n        tr.appendChild(examCell(item.row, 'name'));\n        tr.appendChild(examCell(item.row, 'klass'));\n        tr.appendChild(examCell(item.row, 'unit'));\n        return tr;\n      }));\n\n      const note = $('#examIssueNote');\n      note.classList.toggle('hidden', !issueCount);\n      if (issueCount) {\n        note.textContent = '\u0e15\u0e23\u0e27\u0e08\u0e1e\u0e1a ' + formatNumber(issueCount) + ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 (\u0e41\u0e2a\u0e14\u0e07\u0e14\u0e49\u0e27\u0e22\u0e41\u0e16\u0e1a\u0e2a\u0e35\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e07) ' +\n          '\u0e23\u0e30\u0e1a\u0e1a\u0e22\u0e31\u0e07\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e44\u0e14\u0e49 \u0e41\u0e15\u0e48\u0e04\u0e27\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c Excel \u0e41\u0e25\u0e49\u0e27\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e43\u0e2b\u0e21\u0e48';\n      }\n\n      \/\/ \u0e0a\u0e48\u0e2d\u0e07\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e22\u0e2d\u0e30\u0e08\u0e19\u0e01\u0e27\u0e32\u0e14\u0e15\u0e32\u0e2b\u0e32\u0e44\u0e21\u0e48\u0e44\u0e2b\u0e27 \u0e16\u0e49\u0e32\u0e21\u0e35\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e41\u0e16\u0e27\u0e01\u0e47\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e04\u0e48\u0e02\u0e2d\u0e07\u0e23\u0e01\n      $('#examReviewTools').classList.toggle('hidden', state.examRows.length <= 10 && !issueCount);\n      const issueButton = $('#examIssueFilterButton');\n      issueButton.classList.toggle('hidden', !issueCount);\n      issueButton.textContent = state.examOnlyIssues\n        ? '\u0e41\u0e2a\u0e14\u0e07\u0e17\u0e38\u0e01\u0e41\u0e16\u0e27'\n        : '\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e09\u0e1e\u0e32\u0e30 ' + formatNumber(issueCount) + ' \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19';\n\n      const more = $('#examPreviewMore');\n      more.replaceChildren();\n      if (state.examRows.length && !matched.length) {\n        const none = document.createElement('span');\n        none.textContent = '\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e17\u0e35\u0e48\u0e04\u0e49\u0e19\u0e2b\u0e32';\n        more.appendChild(none);\n      } else if (matched.length > visible.length) {\n        const label = document.createElement('span');\n        label.textContent = '\u0e41\u0e2a\u0e14\u0e07 ' + formatNumber(visible.length) + ' \u0e08\u0e32\u0e01 ' +\n          formatNumber(matched.length) + ' \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d';\n        more.append(label, button('\u0e41\u0e2a\u0e14\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14', 'btn btn-outline btn-small', () => {\n          state.examShowAll = true;\n          renderExamTable();\n        }));\n      } else if (state.examShowAll && matched.length > EXAM_PREVIEW_LIMIT) {\n        const label = document.createElement('span');\n        label.textContent = '\u0e41\u0e2a\u0e14\u0e07\u0e04\u0e23\u0e1a\u0e17\u0e31\u0e49\u0e07 ' + formatNumber(matched.length) + ' \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d';\n        more.append(label, button('\u0e22\u0e48\u0e2d\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23', 'btn btn-ghost btn-small', () => {\n          state.examShowAll = false;\n          renderExamTable();\n        }));\n      }\n      more.classList.toggle('hidden', !more.childNodes.length);\n      $('#examSourceFile').textContent = state.examSourceFile\n        ? '\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e08\u0e32\u0e01\u0e44\u0e1f\u0e25\u0e4c ' + state.examSourceFile\n        : '';\n      $('#examSourceFile').classList.toggle('hidden', !state.examSourceFile);\n      $('#examTableWrap').classList.toggle('hidden', visible.length === 0);\n      $('#examEmptyState').classList.toggle('hidden', state.examRows.length > 0);\n      $('#clearExamRowsButton').classList.toggle('hidden', state.examRows.length === 0);\n      $('#examFileButtonLabel').textContent = state.examRows.length\n        ? '\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1f\u0e25\u0e4c Excel \u0e43\u0e2b\u0e21\u0e48'\n        : '\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1f\u0e25\u0e4c Excel';\n      $('#examRowCount').textContent = state.examRows.length\n        ? '\u0e23\u0e27\u0e21 ' + formatNumber(state.examRows.length) + ' \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d'\n        : '\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d';\n      $('#homeExamDraftCount').textContent = formatNumber(state.examRows.length);\n      saveExamDraft();\n      updateExamSubmitState();\n    }\n\n    async function submitExamListToDrive() {\n      if (!state.examRows.length) return;\n      if (!state.examCoverLetter) {\n        toast('\u0e42\u0e1b\u0e23\u0e14\u0e41\u0e19\u0e1a\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07\u0e09\u0e1a\u0e31\u0e1a\u0e25\u0e07\u0e19\u0e32\u0e21\u0e0b\u0e36\u0e48\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2b\u0e25\u0e31\u0e01\u0e01\u0e48\u0e2d\u0e19\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23', 'error', 6500);\n        $('.cover-letter').scrollIntoView({behavior: 'smooth', block: 'center'});\n        return;\n      }\n      const confirmed = confirm(\n        '\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e0a\u0e38\u0e14\u0e19\u0e35\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?\\n\\n' +\n        '\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2b\u0e25\u0e31\u0e01: ' + state.examCoverLetter.name + '\\n' +\n        '\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d: ' + formatNumber(state.examRows.length) + ' \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d' +\n        (state.examSourceFile ? ' (\u0e08\u0e32\u0e01 ' + state.examSourceFile + ')' : '') +\n        (state.examAttachments.length\n          ? '\\n\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21: ' + formatNumber(state.examAttachments.length) + ' \u0e44\u0e1f\u0e25\u0e4c'\n          : '')\n      );\n      if (!confirmed) return;\n      setLoading(true, '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e23\u0e2d\u0e1a\u0e2a\u0e2d\u0e1a...');\n      try {\n        if (!state.examSubmissionId) state.examSubmissionId = createSubmissionId();\n        \/\/ \u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e23\u0e38\u0e1b\u0e44\u0e27\u0e49\u0e01\u0e48\u0e2d\u0e19 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e48\u0e07\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 state \u0e08\u0e30\u0e16\u0e39\u0e01\u0e25\u0e49\u0e32\u0e07\u0e17\u0e31\u0e19\u0e17\u0e35\n        const user = (state.session && state.session.user) || {};\n        const receipt = {\n          rowCount: state.examRows.length,\n          school: user.role === 'admin' ? '\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a' : (user.schoolName || '\u2014'),\n          sender: user.username || user.email || '\u2014'\n        };\n        const result = await server('submitExamList', state.sessionToken, {\n          submissionId: state.examSubmissionId,\n          rows: state.examRows,\n          coverLetter: state.examCoverLetter,\n          attachments: state.examAttachments\n        });\n        state.examRows = [];\n        state.examCoverLetter = null;\n        state.examAttachments = [];\n        state.examSubmissionId = '';\n        state.examSourceFile = '';\n        renderExamTable();\n        renderCoverLetter();\n        renderExamAttachments();\n        toast(result.message, 'success', 7000);\n        showExamReceipt(result, receipt);\n      } catch (error) {\n        handleError(error);\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    \/* \u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e27\u0e48\u0e32\u0e2a\u0e48\u0e07\u0e2d\u0e30\u0e44\u0e23\u0e44\u0e1b\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e23 \u2014 \u0e15\u0e49\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e41\u0e25\u0e30\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e14\u0e49 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e41\u0e04\u0e48 toast \u0e17\u0e35\u0e48\u0e2b\u0e32\u0e22\u0e44\u0e1b *\/\n    function showExamReceipt(result, summary) {\n      $('#receiptNumber').textContent = result.submissionId || '\u2014';\n      $('#receiptDateTime').textContent = formatThaiDateTime(new Date());\n      $('#receiptSchool').textContent = summary.school || '\u2014';\n      $('#receiptSender').textContent = summary.sender || '\u2014';\n      $('#receiptRowCount').textContent = formatNumber(summary.rowCount) + ' \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d';\n\n      \/\/ \u0e1d\u0e31\u0e48\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e04\u0e37\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e41\u0e23\u0e01\u0e43\u0e19 attachments \u0e40\u0e2a\u0e21\u0e2d\n      const files = [{fileName: result.fileName, fileUrl: result.fileUrl, role: '\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e19\u0e33\u0e2a\u0e48\u0e07'}]\n        .concat((result.attachments || []).map((item, index) => ({\n          fileName: item.fileName,\n          fileUrl: item.fileUrl,\n          role: index === 0 ? '\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d' : '\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e19\u0e1a'\n        })));\n\n      $('#receiptFiles').replaceChildren(...files.map(item => {\n        const row = document.createElement('li');\n        const role = document.createElement('span');\n        role.className = 'receipt-file-role';\n        role.textContent = item.role;\n        const name = document.createElement('strong');\n        name.textContent = item.fileName || '\u2014';\n        row.append(role, name);\n        if (item.fileUrl) {\n          const link = document.createElement('a');\n          link.className = 'btn btn-small btn-outline';\n          link.href = item.fileUrl;\n          link.target = '_blank';\n          link.rel = 'noopener';\n          link.textContent = '\u0e40\u0e1b\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c';\n          link.setAttribute('aria-label', '\u0e40\u0e1b\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c ' + (item.fileName || ''));\n          row.appendChild(link);\n        }\n        return row;\n      }));\n\n      $('#receiptDialog').showModal();\n    }\n\n    \/\/ \u0e41\u0e1b\u0e25\u0e07 argument \u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e40\u0e14\u0e34\u0e21\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 \u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e41\u0e1a\u0e1a query string\n    function buildParams(action, args) {\n      switch (action) {\n        case 'restoreSession':\n        case 'logout':\n        case 'getCoverLetterTemplate':\n        case 'getExamTemplate':\n          return { sessionToken: args[0] };\n        case 'login':\n          return { login: args[0].login, password: args[0].password };\n        case 'register':\n          return {\n            username: args[0].username, email: args[0].email,\n            schoolName: args[0].schoolName, password: args[0].password\n          };\n        case 'requestPasswordReset':\n          return { loginId: args[0] };\n        case 'resetPassword':\n          return { token: args[0].token, newPassword: args[0].newPassword };\n        case 'changePassword':\n          return {\n            sessionToken: args[0],\n            currentPassword: args[1].currentPassword, newPassword: args[1].newPassword\n          };\n        case 'getStudentStatsTrend':\n          return { sessionToken: args[0] };\n        case 'getStudentStats':\n          return { sessionToken: args[0], year: args[1].year, refresh: args[1].refresh };\n        case 'getDashboard':\n          return {\n            sessionToken: args[0], scopeRef: args[1].scopeRef,\n            page: args[1].page, pageSize: args[1].pageSize,\n            search: args[1].search, sort: args[1].sort, status: args[1].status\n          };\n        case 'getDashboardSignal':\n          \/\/ \u0e17\u0e38\u0e01\u0e04\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e15\u0e23\u0e34\u0e07 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2a\u0e48\u0e07\u0e1c\u0e48\u0e32\u0e19 hidden input \u0e02\u0e2d\u0e07 form POST\n          return {\n            sessionToken: args[0], scopeRef: args[1].scopeRef,\n            since: args[1].since || '', view: JSON.stringify(args[1].view || null)\n          };\n        case 'confirmRecord':\n          return { sessionToken: args[0], recordRef: args[1] };\n        case 'downloadData':\n          return { sessionToken: args[0], scopeRef: args[1].scopeRef, format: args[1].format };\n        case 'submitExamList':\n          \/\/ \u0e17\u0e38\u0e01\u0e04\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e15\u0e23\u0e34\u0e07 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2a\u0e48\u0e07\u0e1c\u0e48\u0e32\u0e19 hidden input \u0e02\u0e2d\u0e07 form POST\n          return {\n            sessionToken: args[0],\n            submissionId: args[1].submissionId,\n            rows: JSON.stringify(args[1].rows || []),\n            coverLetter: JSON.stringify(args[1].coverLetter || null),\n            attachments: JSON.stringify(args[1].attachments || [])\n          };\n        default:\n          return {};\n      }\n    }\n\n    function ensurePostTransport() {\n      if (!transportCheckPromise) {\n        transportCheckPromise = callPublicJsonp('config').then(config => {\n          if (!config || config.transport !== 'postMessage-v1') {\n            throw new Error('Apps Script \u0e22\u0e31\u0e07\u0e40\u0e1b\u0e47\u0e19 deployment \u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15 Code.gs \u0e41\u0e25\u0e49\u0e27 Deploy \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e43\u0e2b\u0e21\u0e48');\n          }\n          if (config.backendVersion !== REQUIRED_BACKEND_VERSION ||\n              config.registrationApproval !== 'required') {\n            throw new Error(\n              'Apps Script \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e23\u0e38\u0e48\u0e19\u0e17\u0e35\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e23\u0e2d\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e1a\u0e31\u0e0d\u0e0a\u0e35 ' +\n              '\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15 Code.gs \u0e41\u0e25\u0e49\u0e27 Deploy \u0e40\u0e1b\u0e47\u0e19\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e1b\u0e34\u0e14\u0e23\u0e31\u0e1a\u0e2a\u0e21\u0e31\u0e04\u0e23'\n            );\n          }\n          return true;\n        }).catch(error => {\n          transportCheckPromise = null;\n          throw error;\n        });\n      }\n      return transportCheckPromise;\n    }\n\n    \/\/ JSONP \u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e2d\u0e48\u0e32\u0e19 public config \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d session token\n    function callPublicJsonp(action) {\n      return new Promise((resolve, reject) => {\n        if (!API_URL || API_URL.indexOf('http') !== 0) {\n          reject(new Error('\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 API_URL \u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a (\u0e41\u0e01\u0e49\u0e17\u0e35\u0e48\u0e15\u0e49\u0e19\u0e44\u0e1f\u0e25\u0e4c)'));\n          return;\n        }\n        const callbackName = 'asis_public_' + Date.now() + '_' + Math.floor(Math.random() * 1e6);\n        const script = document.createElement('script');\n        let timer = null;\n        const cleanup = () => {\n          if (timer) clearTimeout(timer);\n          try { delete window[callbackName]; } catch (_) { window[callbackName] = undefined; }\n          script.remove();\n        };\n        window[callbackName] = response => {\n          cleanup();\n          if (response && response.success) resolve(response.data);\n          else reject(new Error((response && response.message) || '\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 Apps Script \u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08'));\n        };\n        script.onerror = () => {\n          cleanup();\n          reject(new Error('\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d Apps Script \u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a API_URL \u0e41\u0e25\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c Web App'));\n        };\n        timer = setTimeout(() => {\n          cleanup();\n          reject(new Error('Apps Script \u0e44\u0e21\u0e48\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a deployment'));\n        }, 15000);\n        script.src = API_URL + '?action=' + encodeURIComponent(action) + '&callback=' + encodeURIComponent(callbackName);\n        document.body.appendChild(script);\n      });\n    }\n\n    \/\/ form POST + postMessage \u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e02\u0e49\u0e32\u0e21\u0e42\u0e14\u0e40\u0e21\u0e19\u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e1e\u0e36\u0e48\u0e07 CORS\n    function callPost(action, params) {\n      return new Promise((resolve, reject) => {\n        if (!API_URL || API_URL.indexOf('http') !== 0) {\n          reject(new Error('\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 API_URL \u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a (\u0e41\u0e01\u0e49\u0e17\u0e35\u0e48\u0e15\u0e49\u0e19\u0e44\u0e1f\u0e25\u0e4c)'));\n          return;\n        }\n        const requestId = window.crypto && crypto.randomUUID\n          ? 'req_' + crypto.randomUUID()\n          : 'req_' + Date.now() + '_' + Math.floor(Math.random() * 1e9);\n        const frameName = 'asis_frame_' + requestId;\n        const iframe = document.createElement('iframe');\n        const form = document.createElement('form');\n        const allowedMessageOrigins = new Set([\n          new URL(API_URL).origin,\n          'https:\/\/script.googleusercontent.com',\n          'https:\/\/n-wvxh7huhz36xzxd2c2gpjeoig5ljswtqtmzjbza-0lu-script.googleusercontent.com'\n        ]);\n        iframe.name = frameName;\n        iframe.hidden = true;\n        iframe.setAttribute('aria-hidden', 'true');\n        form.method = 'POST';\n        form.action = API_URL;\n        form.target = frameName;\n        form.hidden = true;\n\n        const fields = Object.assign({}, params || {}, {action, requestId});\n        Object.keys(fields).forEach(key => {\n          const value = fields[key];\n          if (value === undefined || value === null) return;\n          const input = document.createElement('input');\n          input.type = 'hidden';\n          input.name = key;\n          input.value = String(value);\n          form.appendChild(input);\n        });\n\n        let timer = null;\n        const cleanup = () => {\n          if (timer) clearTimeout(timer);\n          window.removeEventListener('message', onMessage);\n          form.remove();\n          iframe.remove();\n        };\n        const onMessage = event => {\n          \/\/ Apps Script HtmlService \u0e2a\u0e48\u0e07 postMessage \u0e08\u0e32\u0e01 sandbox iframe \u0e0a\u0e31\u0e49\u0e19\u0e43\u0e19\n          \/\/ \u0e08\u0e36\u0e07\u0e15\u0e23\u0e27\u0e08 origin \u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19 + channel + requestId \u0e41\u0e17\u0e19 iframe \u0e0a\u0e31\u0e49\u0e19\u0e19\u0e2d\u0e01\n          if (!allowedMessageOrigins.has(event.origin)) return;\n          const envelope = event.data;\n          if (!envelope || envelope.channel !== 'asis-api-v1' ||\n              envelope.requestId !== requestId) return;\n          cleanup();\n          const response = envelope.response;\n          if (response && response.success) resolve(response.data);\n          else reject(new Error((response && response.message) || '\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14'));\n        };\n        window.addEventListener('message', onMessage);\n        iframe.addEventListener('error', () => {\n          cleanup();\n          reject(new Error('\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e14\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07'));\n        }, {once: true});\n        \/\/ \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2b\u0e19\u0e31\u0e01\u0e1d\u0e31\u0e48\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e19\u0e32\u0e19\u0e01\u0e27\u0e48\u0e32\u0e1b\u0e01\u0e15\u0e34\n        \/\/ \u0e2a\u0e16\u0e34\u0e15\u0e34\u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01 (\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35 cache) \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e17\u0e38\u0e01\u0e41\u0e17\u0e47\u0e1a\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e1c\u0e25\u0e2a\u0e2d\u0e1a \u0e16\u0e49\u0e32\u0e43\u0e2b\u0e49\u0e41\u0e04\u0e48 60 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\n        \/\/ \u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e08\u0e30\u0e02\u0e36\u0e49\u0e19 \"\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e0a\u0e49\u0e32\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\" \u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48 Apps Script \u0e22\u0e31\u0e07\u0e04\u0e33\u0e19\u0e27\u0e13\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e30\u0e08\u0e30\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e43\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\n        const timeoutMs = ['login', 'register', 'resetPassword', 'changePassword',\n          'downloadData', 'getExamTemplate', 'submitExamList',\n          'getStudentStats', 'getStudentStatsTrend'].includes(action)\n          ? 180000 : 60000;\n        timer = setTimeout(() => {\n          cleanup();\n          reject(new Error('\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e0a\u0e49\u0e32\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07'));\n        }, timeoutMs);\n        document.body.append(iframe, form);\n        form.submit();\n      });\n    }\n\n  })();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14&#8230; \u0e2d Abhidhamma Student Information System &#8211; ASIS \u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e21\u0e2b\u0e32\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e21\u0e2b\u0e32\u0e08\u0e38\u0e2c\u0e32\u0e25\u0e07\u0e01\u0e23\u0e13\u0e23\u0e32\u0e0a\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 \u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25 \u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19 \u0e41\u0e2a\u0e14\u0e07 \u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a \u0e25\u0e37\u0e21\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19? \u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01 \u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e30\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34 \u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 \u0e2d\u0e35\u0e40\u0e21\u0e25 \u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 \u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e33\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19 \u2014\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 (\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07)\u0e27\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07 (\u0e1a\u0e32\u0e07\u0e1b\u0e25\u0e32\u0e21\u0e49\u0e32)\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e01\u0e25\u0e38\u0e48\u0e21\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e23\u0e32\u0e0d\u0e23\u0e21\u0e22\u0e4c \u0e01\u0e23\u0e30\u0e17\u0e23\u0e27\u0e07\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e27\u0e31\u0e14\u0e40\u0e01\u0e48\u0e32\u0e42\u0e1a\u0e23\u0e32\u0e13\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e17\u0e38\u0e48\u0e07\u0e27\u0e31\u0e27\u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e1e\u0e38\u0e17\u0e18\u0e42\u0e04\u0e14\u0e21\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e08\u0e31\u0e19\u0e17\u0e23\u0e2a\u0e38\u0e02\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e41\u0e14\u0e07\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e18\u0e23\u0e23\u0e21\u0e32\u0e23\u0e32\u0e21\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e2a\u0e21\u0e13\u0e01\u0e34\u0e08(\u0e2b\u0e25\u0e31\u0e07\u0e28\u0e32\u0e25)\u0e27\u0e31\u0e14\u0e15\u0e36\u0e01 (\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32)\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e32\u0e21\u0e39\u0e25\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e27\u0e31\u0e14\u0e19\u0e32\u0e1e\u0e23\u0e49\u0e32\u0e27\u0e40\u0e01\u0e48\u0e32\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e19\u0e34\u0e2a\u0e2a\u0e23\u0e13\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e0a\u0e31\u0e22\u0e21\u0e07\u0e04\u0e25\u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e42\u0e2a\u0e20\u0e13\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e27\u0e0a\u0e34\u0e23\u0e1a\u0e23\u0e23\u0e1e\u0e15\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1c\u0e48\u0e2d\u0e07\u0e1e\u0e25\u0e2d\u0e22\u0e27\u0e34\u0e23\u0e34\u0e22\u0e32\u0e23\u0e32\u0e21\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e2b\u0e21\u0e08\u0e23\u0e34\u0e22\u0e32\u0e27\u0e32\u0e2a\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e18\u0e32\u0e15\u0e38\u0e28\u0e23\u0e35\u0e08\u0e2d\u0e21\u0e17\u0e2d\u0e07\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1e\u0e38\u0e17\u0e18\u0e1a\u0e39\u0e0a\u0e32\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e04\u0e39\u0e49\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e23\u0e31\u0e0d\u0e0d\u0e34\u0e01\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e41\u0e2b\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e1e\u0e25\u0e07(\u0e01\u0e25\u0e32\u0e07\u0e2a\u0e27\u0e19)\u0e27\u0e31\u0e14\u0e21\u0e2b\u0e32\u0e18\u0e32\u0e15\u0e38\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23 (\u0e23\u0e32\u0e0a\u0e1a\u0e38\u0e23\u0e35)\u0e27\u0e31\u0e14\u0e21\u0e40\u0e2b\u0e22\u0e07\u0e04\u0e13\u0e4c\u0e27\u0e31\u0e14\u0e40\u0e21\u0e37\u0e2d\u0e07\u0e21\u0e32\u0e07\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e22\u0e32\u0e19\u0e19\u0e32\u0e27\u0e32\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e22\u0e38\u0e27\u0e1e\u0e38\u0e17\u0e18\u0e34\u0e01\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e04\u0e24\u0e2b\u0e4c \u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e27\u0e31\u0e14\u0e23\u0e4d\u0e48\u0e32\u0e40\u0e1b\u0e34\u0e07 (\u0e15\u0e42\u0e1b\u0e17\u0e32\u0e23\u0e32\u0e21)\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e31\u0e07\u0e2b\u0e34\u0e19\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e18\u0e23\u0e23\u0e21\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e28\u0e34\u0e23\u0e34\u0e1e\u0e07\u0e29\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e19\u0e34\u0e21\u0e34\u0e15\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2f (\u0e40\u0e02\u0e32\u0e14\u0e34\u0e19\u0e2b\u0e19\u0e2d\u0e07\u0e41\u0e2a\u0e07)\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e16\u0e32\u0e19\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e1e\u0e34\u0e28\u0e0d\u0e32\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e16\u0e32\u0e19\u0e27\u0e31\u0e14\u0e2a\u0e23\u0e30\u0e1a\u0e31\u0e27\u0e27\u0e31\u0e14\u0e2a\u0e27\u0e48\u0e32\u0e07\u0e21\u0e35\u0e0a\u0e31\u0e22\u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e0a\u0e38\u0e01\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3723","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/3723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3723"}],"version-history":[{"count":207,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/3723\/revisions"}],"predecessor-version":[{"id":3981,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/3723\/revisions\/3981"}],"wp:attachment":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}