{"id":1530,"date":"2026-03-17T14:14:09","date_gmt":"2026-03-17T13:14:09","guid":{"rendered":"https:\/\/jaeger.schule\/?page_id=1530"},"modified":"2026-03-25T07:53:18","modified_gmt":"2026-03-25T06:53:18","slug":"classroom-board","status":"publish","type":"page","link":"https:\/\/jaeger.schule\/?page_id=1530","title":{"rendered":"Classroom Board"},"content":{"rendered":"    <div id=\"cb-app\" data-ajax=\"{&quot;ajaxUrl&quot;:&quot;https:\\\/\\\/jaeger.schule\\\/wp-admin\\\/admin-ajax.php&quot;,&quot;nonce&quot;:&quot;65dca52127&quot;,&quot;classes&quot;:[],&quot;isLoggedIn&quot;:false,&quot;adminUrl&quot;:&quot;https:\\\/\\\/jaeger.schule\\\/wp-admin\\\/tools.php?page=classroom-board&quot;}\">\n        <div class=\"cb-toolbar\">\n            <div class=\"cb-toolbar-left\">\n                <button class=\"cb-btn\" data-add=\"text\">Text<\/button>\n                <button class=\"cb-btn\" data-add=\"timer\">Timer<\/button>\n                <button class=\"cb-btn\" data-add=\"names\">Zufall<\/button>\n                <button class=\"cb-btn\" data-add=\"classstatus\">Verwarnung<\/button>\n                <button class=\"cb-btn\" data-add=\"noise\">Lautst\u00e4rke<\/button>\n                <button class=\"cb-btn\" data-add=\"draw\">Zeichnen<\/button>\n                <button class=\"cb-btn\" data-add=\"todo\">Arbeitsauftrag<\/button>\n                <button class=\"cb-btn\" data-add=\"clock\">Uhr<\/button>\n                <button class=\"cb-btn\" data-add=\"mode\">Modus<\/button>\n                <button class=\"cb-btn\" data-add=\"geometry\">Geometrie<\/button>\n            <\/div>\n            <div class=\"cb-toolbar-right\">\n                <button class=\"cb-btn cb-secondary\" id=\"cb-save-layout\">Speichern<\/button>\n                <button class=\"cb-btn cb-secondary\" id=\"cb-reset-layout\">Zur\u00fccksetzen<\/button>\n                <button class=\"cb-btn cb-secondary\" id=\"cb-export-layout\">Export<\/button>\n                <label class=\"cb-btn cb-secondary cb-import-label\">\n                    Import\n                    <input type=\"file\" id=\"cb-import-layout\" accept=\"application\/json\">\n                <\/label>\n                <button class=\"cb-btn cb-secondary\" id=\"cb-fullscreen\">Vollbild<\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"cb-topbar\">\n            <div class=\"cb-brand\">Jaegers Klassenzimmer<\/div>\n            <div class=\"cb-bg-controls\">\n                <label>Hintergrund\n                    <select id=\"cb-bg-select\">\n                        <option value=\"gradient1\">Blau<\/option>\n                        <option value=\"gradient2\">Gr\u00fcn<\/option>\n                        <option value=\"gradient3\">Violett<\/option>\n                        <option value=\"grid\">Raster<\/option>\n                        <option value=\"chalk\">Tafel<\/option>\n                    <\/select>\n                <\/label>\n            <\/div>\n        <\/div>\n\n        <div id=\"cb-board\" class=\"cb-bg-gradient1\"><\/div>\n    <\/div>\n\n    <style>\n        #cb-app{font-family:Arial,Helvetica,sans-serif;max-width:100%;border:1px solid rgba(148,163,184,.28);border-radius:22px;overflow:hidden;background:linear-gradient(180deg,#f8fbff 0%,#eef4fb 100%);box-shadow:0 18px 40px rgba(15,23,42,.10),0 4px 12px rgba(15,23,42,.06)}\n        #cb-app:fullscreen{max-width:none;width:100vw;height:100vh;border-radius:0}\n        #cb-app:fullscreen #cb-board{height:calc(100vh - 116px);min-height:0}\n        .cb-toolbar,.cb-topbar{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;flex-wrap:wrap}\n        .cb-toolbar{background:linear-gradient(135deg,#1e293b 0%,#0f172a 100%);color:#fff;border-bottom:1px solid rgba(255,255,255,.08);box-shadow:inset 0 -1px 0 rgba(255,255,255,.04)}\n        .cb-topbar{background:linear-gradient(180deg,rgba(255,255,255,.95) 0%,rgba(241,245,249,.92) 100%);border-bottom:1px solid rgba(148,163,184,.22);box-shadow:inset 0 1px 0 rgba(255,255,255,.9)}\n        .cb-toolbar-left,.cb-toolbar-right{display:flex;gap:8px;flex-wrap:wrap;align-items:center}\n        .cb-brand{font-size:22px;font-weight:700;color:#0f172a;letter-spacing:.01em}\n        .cb-btn{border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:10px 13px;background:linear-gradient(180deg,#3b82f6 0%,#2563eb 100%);color:#fff;font-weight:700;cursor:pointer;line-height:1;transition:.18s transform,.18s box-shadow,.18s opacity;box-shadow:0 8px 18px rgba(37,99,235,.28), inset 0 1px 0 rgba(255,255,255,.22)}\n        .cb-btn:hover{transform:translateY(-1px);opacity:.98;box-shadow:0 12px 22px rgba(37,99,235,.32), inset 0 1px 0 rgba(255,255,255,.22)}\n        .cb-secondary{background:linear-gradient(180deg,#475569 0%,#334155 100%);box-shadow:0 8px 18px rgba(15,23,42,.18), inset 0 1px 0 rgba(255,255,255,.18)}\n        .cb-danger{background:linear-gradient(180deg,#dc2626 0%,#b91c1c 100%);box-shadow:0 8px 18px rgba(127,29,29,.22), inset 0 1px 0 rgba(255,255,255,.18)}\n        .cb-import-label input{display:none}\n        #cb-board{position:relative;height:78vh;min-height:650px;overflow:hidden}\n        .cb-bg-gradient1{background:radial-gradient(circle at top left, rgba(255,255,255,.55), transparent 28%),linear-gradient(135deg,#cfe4ff 0%,#eaf3ff 46%,#bdd8ff 100%)}\n        .cb-bg-gradient2{background:radial-gradient(circle at top left, rgba(255,255,255,.45), transparent 28%),linear-gradient(135deg,#d9f7e5 0%,#eefcf4 46%,#b8efcc 100%)}\n        .cb-bg-gradient3{background:radial-gradient(circle at top left, rgba(255,255,255,.48), transparent 28%),linear-gradient(135deg,#e6ddff 0%,#f3efff 46%,#d6cbff 100%)}\n        .cb-bg-grid{background-color:#f6f8fc;background-image:linear-gradient(to right, rgba(148,163,184,.18) 1px, transparent 1px),linear-gradient(to bottom, rgba(148,163,184,.18) 1px, transparent 1px),radial-gradient(circle at top left, rgba(255,255,255,.55), transparent 34%);background-size:32px 32px,32px 32px,auto}\n        .cb-bg-chalk{background:#1f4d3c;background-image:radial-gradient(rgba(255,255,255,.05) 1px, transparent 1px);background-size:8px 8px}\n        .cb-widget{position:absolute;min-width:220px;min-height:120px;background:linear-gradient(180deg,rgba(255,255,255,.96) 0%,rgba(248,250,252,.94) 100%);border:1px solid rgba(255,255,255,.55);border-radius:22px;box-shadow:0 18px 34px rgba(15,23,42,.16),0 4px 12px rgba(15,23,42,.08),inset 0 1px 0 rgba(255,255,255,.9);overflow:hidden;user-select:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}\n        .cb-widget::before{content:\"\";position:absolute;inset:0 0 auto 0;height:58px;background:linear-gradient(180deg,rgba(255,255,255,.55),rgba(255,255,255,0));pointer-events:none}\n        .cb-widget-header{position:relative;display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:linear-gradient(180deg,rgba(255,255,255,.82) 0%,rgba(241,245,249,.7) 100%);border-bottom:1px solid rgba(148,163,184,.18);cursor:move;box-shadow:inset 0 1px 0 rgba(255,255,255,.95)}\n        .cb-widget-title{font-size:14px;font-weight:800;color:#0f172a;letter-spacing:.01em}\n        .cb-widget-actions{display:flex;gap:6px}\n        .cb-icon-btn{width:32px;height:32px;border-radius:10px;border:1px solid rgba(148,163,184,.2);background:linear-gradient(180deg,#ffffff 0%,#e9eef5 100%);color:#334155;cursor:pointer;font-weight:700;box-shadow:0 4px 10px rgba(15,23,42,.08), inset 0 1px 0 rgba(255,255,255,.9)}\n        .cb-widget-body{position:relative;padding:16px;height:auto;overflow:hidden;color:#0f172a}\n        .cb-richtext{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;height:100%;min-height:0}\n        .cb-formatbar{display:flex;flex-direction:column;gap:8px;align-items:stretch}\n        .cb-format-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n        .cb-format-row-colors{padding-top:2px}\n        .cb-format-btn,.cb-format-color{border:1px solid rgba(148,163,184,.28);background:linear-gradient(180deg,#fff 0%,#f8fafc 100%);border-radius:12px;min-width:38px;height:38px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 6px rgba(15,23,42,.06);transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease, background .16s ease, color .16s ease}\n        .cb-format-btn:hover,.cb-format-color:hover{transform:translateY(-1px)}\n        .cb-format-btn.is-active{border-color:#2563eb;background:linear-gradient(180deg,#dbeafe 0%,#bfdbfe 100%);color:#1d4ed8;box-shadow:0 0 0 1px rgba(37,99,235,.18),0 4px 10px rgba(37,99,235,.12)}\n        .cb-format-color{width:30px;min-width:30px;height:30px;border-radius:999px;padding:0;border:2px solid #fff;box-shadow:0 0 0 1px rgba(148,163,184,.35),0 2px 6px rgba(15,23,42,.08);background:var(--cb-color)}\n        .cb-format-color.is-active{transform:scale(1.08);box-shadow:0 0 0 2px #2563eb,0 4px 10px rgba(37,99,235,.18)}\n        .cb-format-sep{width:1px;height:24px;background:rgba(148,163,184,.35);margin:0 2px}\n        .cb-editor-wrap{border:1px solid rgba(148,163,184,.22);border-radius:16px;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);padding:12px 14px;box-shadow:inset 0 1px 2px rgba(15,23,42,.04);overflow:auto;min-height:120px;min-width:0;flex:1}\n        .cb-text-editor,.cb-todo-editor{min-height:100%;outline:none;line-height:1.6;cursor:text;user-select:text;font-size:16px}\n        .cb-text-editor ul,.cb-todo-editor ul{padding-left:24px;margin:8px 0}\n        .cb-text-editor li,.cb-todo-editor li{margin:4px 0}\n        .cb-geometry{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:10px;height:100%;min-height:0}\n        .cb-geometry-toolbar,.cb-geometry-options{display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n        .cb-geo-btn,.cb-geo-toggle{border:1px solid rgba(148,163,184,.28);background:linear-gradient(180deg,#fff 0%,#f8fafc 100%);border-radius:12px;min-width:40px;height:38px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 6px rgba(15,23,42,.06);font-weight:700;color:#334155;transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease, background .16s ease}\n        .cb-geo-btn:hover,.cb-geo-toggle:hover{transform:translateY(-1px)}\n        .cb-geo-btn.is-active,.cb-geo-toggle.is-active{border-color:#2563eb;background:linear-gradient(180deg,#dbeafe 0%,#bfdbfe 100%);color:#1d4ed8;box-shadow:0 0 0 1px rgba(37,99,235,.18),0 4px 10px rgba(37,99,235,.12)}\n        .cb-geo-btn[data-tool=\"clear\"]{margin-left:auto}\n        .cb-geometry-stage{position:relative;border:1px solid rgba(148,163,184,.24);border-radius:18px;overflow:hidden;background:#fff;min-height:260px;box-shadow:inset 0 1px 2px rgba(15,23,42,.04)}\n        .cb-geometry-stage.is-grid{background-image:linear-gradient(to right, rgba(148,163,184,.16) 1px, transparent 1px),linear-gradient(to bottom, rgba(148,163,184,.16) 1px, transparent 1px);background-size:24px 24px}\n        .cb-geometry-svg{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair}\n        .cb-geometry-stage[data-tool=\"select\"] .cb-geometry-svg{cursor:default}\n        .cb-geometry-stage[data-tool=\"eraser\"] .cb-geometry-svg{cursor:not-allowed}\n        .cb-geo-shape{vector-effect:non-scaling-stroke}\n        .cb-geo-shape.is-selected{filter:drop-shadow(0 0 6px rgba(37,99,235,.28))}\n        .cb-geo-label,.cb-geo-length,.cb-geo-angle{font-family:Arial,Helvetica,sans-serif;fill:#0f172a;pointer-events:none;user-select:none}\n        .cb-geo-label{font-size:13px;font-weight:700}\n        .cb-geo-length,.cb-geo-angle{font-size:12px;fill:#475569}\n        .cb-geo-point{fill:#2563eb;stroke:#ffffff;stroke-width:2;vector-effect:non-scaling-stroke}\n        .cb-geo-note{position:absolute;right:12px;bottom:10px;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.92);border:1px solid rgba(148,163,184,.24);font-size:12px;color:#475569;box-shadow:0 3px 8px rgba(15,23,42,.08);pointer-events:none}\n        .cb-resize-handle{position:absolute;right:4px;bottom:4px;width:22px;height:22px;cursor:nwse-resize;border-radius:0 0 16px 0;background:linear-gradient(135deg, transparent 0 42%, rgba(148,163,184,.9) 42% 50%, transparent 50% 60%, rgba(148,163,184,.9) 60% 68%, transparent 68%)}\n        .cb-text-editor,.cb-todo-editor{min-height:120px;outline:none;line-height:1.6}\n        .cb-text-editor[contenteditable=\"true\"],.cb-todo-editor[contenteditable=\"true\"]{cursor:text;user-select:text}\n        .cb-big{font-size:48px;font-weight:800;text-align:center;letter-spacing:.03em;margin:8px 0 16px;color:#0f172a;text-shadow:0 1px 0 rgba(255,255,255,.7)}\n        .cb-timer-chalk{position:relative;width:220px;height:220px;margin:0 auto 18px;display:grid;place-items:center}\n        .cb-timer-chalk svg,.cb-timer-chalk canvas{position:absolute;inset:0;width:100%;height:100%}\n        .cb-timer-chalk svg{transform:rotate(-90deg);overflow:visible}\n        .cb-timer-chalk-track{fill:none;stroke:rgba(148,163,184,.18);stroke-width:10}\n        .cb-timer-chalk-progress{fill:none;stroke:#f8fafc;stroke-width:10;stroke-linecap:round;stroke-dasharray:0;stroke-dashoffset:0;filter:drop-shadow(0 0 1px rgba(255,255,255,.95)) drop-shadow(0 0 6px rgba(255,255,255,.30))}\n        .cb-timer-chalk-inner{position:relative;z-index:2;width:156px;height:156px;border-radius:999px;display:grid;place-items:center;background:radial-gradient(circle at 30% 28%,rgba(255,255,255,.08),rgba(255,255,255,.01) 24%,rgba(0,0,0,.06) 100%),#244b3d;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),inset 0 18px 30px rgba(255,255,255,.04),inset 0 -18px 30px rgba(0,0,0,.14),0 14px 28px rgba(15,23,42,.12)}\n        .cb-timer-chalk-face{position:absolute;inset:0;border-radius:inherit;background-image:radial-gradient(rgba(255,255,255,.035) 1px,transparent 1.3px),radial-gradient(rgba(0,0,0,.06) .9px,transparent 1.3px);background-size:8px 8px,11px 11px;background-position:0 0,2px 3px;opacity:.8;mix-blend-mode:screen;pointer-events:none}\n        .cb-timer-chalk-time{position:relative;z-index:1;font-size:46px;font-weight:800;letter-spacing:.05em;color:#f8fafc;text-shadow:0 0 1px rgba(255,255,255,.95),0 0 8px rgba(255,255,255,.12),1px 1px 0 rgba(255,255,255,.10),-1px -.5px 0 rgba(255,255,255,.05)}\n        .cb-timer-chalk-label{position:absolute;left:0;right:0;bottom:28px;text-align:center;font-size:12px;font-weight:700;letter-spacing:.12em;color:rgba(248,250,252,.75);text-transform:uppercase;text-shadow:0 0 3px rgba(255,255,255,.15)}\n        .cb-timer-adjust{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:4px}\n        .cb-timer-step{display:grid;grid-template-columns:40px 1fr 40px;align-items:center;border:1px solid rgba(148,163,184,.22);border-radius:16px;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 3px 8px rgba(15,23,42,.05);overflow:hidden}\n        .cb-timer-step-label{display:flex;align-items:center;justify-content:center;font-weight:800;color:#334155;font-size:15px;min-height:40px}\n        .cb-timer-step-btn{border:0;background:transparent;font:inherit;font-weight:900;font-size:20px;line-height:1;cursor:pointer;min-height:40px;color:#0f172a}\n        .cb-timer-step-btn:hover{background:rgba(37,99,235,.08)}\n        .cb-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}\n        .cb-input,.cb-select,.cb-textarea{width:100%;border:1px solid rgba(148,163,184,.3);border-radius:12px;padding:10px 12px;font:inherit;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);box-shadow:inset 0 1px 2px rgba(15,23,42,.04)}\n        .cb-input-inline{width:90px;border:1px solid rgba(148,163,184,.3);border-radius:12px;padding:8px 10px;font:inherit;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%)}\n        .cb-sub{color:#64748b;font-size:13px}\n        .cb-traffic{display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;padding:4px 0}\n        .cb-light{width:72px;height:72px;border-radius:999px;opacity:.25;cursor:pointer;box-shadow:inset 0 6px 12px rgba(255,255,255,.3), inset 0 -8px 14px rgba(0,0,0,.18),0 10px 18px rgba(15,23,42,.14)}\n        .cb-light.active{opacity:1;transform:scale(1.04)}\n        .cb-red{background:radial-gradient(circle at 30% 28%, #fda4af 0%, #ef4444 45%, #991b1b 100%)}.cb-yellow{background:radial-gradient(circle at 30% 28%, #fde68a 0%, #facc15 45%, #a16207 100%)}.cb-green{background:radial-gradient(circle at 30% 28%, #86efac 0%, #22c55e 45%, #166534 100%)}\n        .cb-name-result{font-size:34px;font-weight:800;text-align:center;padding:16px;border-radius:18px;background:linear-gradient(180deg,#f8fbff 0%,#e9f2ff 100%);margin:10px 0 8px;min-height:72px;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 8px 18px rgba(59,130,246,.10)}\n        .cb-class-panel{margin-top:12px;padding:12px;border-radius:18px;background:linear-gradient(180deg,rgba(248,250,252,.95) 0%,rgba(241,245,249,.9) 100%);border:1px solid rgba(148,163,184,.18);box-shadow:inset 0 1px 0 rgba(255,255,255,.9)}\n        .cb-manage-note{font-size:12px;color:#64748b;margin-top:8px;line-height:1.45}\n        .cb-meter{height:20px;border-radius:999px;background:linear-gradient(180deg,#e2e8f0 0%,#cbd5e1 100%);overflow:hidden;margin:12px 0;box-shadow:inset 0 2px 5px rgba(15,23,42,.10)}\n        .cb-meter-bar{height:100%;width:0%;background:linear-gradient(90deg,#22c55e,#eab308,#ef4444)}\n        .cb-canvas{width:100%;height:240px;border:1px solid rgba(148,163,184,.28);border-radius:16px;touch-action:none;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);box-shadow:inset 0 1px 2px rgba(15,23,42,.04)}\n        .cb-clock{font-size:42px;font-weight:800;text-align:center;margin-top:18px;color:#0f172a;text-shadow:0 1px 0 rgba(255,255,255,.85)}\n        .cb-center{display:flex;justify-content:center;align-items:center}\n        .cb-status-pill{display:inline-block;padding:6px 10px;border-radius:999px;background:linear-gradient(180deg,#eef2ff 0%,#dbeafe 100%);color:#3730a3;font-size:12px;font-weight:700;box-shadow:0 4px 10px rgba(59,130,246,.10)}\n        .cb-mode-display{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;padding:6px 0 2px}\n        .cb-mode-main{width:min(100%,300px);aspect-ratio:1\/1;object-fit:contain;display:block;margin:0 auto;border-radius:999px;background:linear-gradient(180deg,#ffffff 0%,#eef2f7 100%);box-shadow:0 10px 20px rgba(15,23,42,.08), inset 0 1px 0 rgba(255,255,255,.95)}\n        .cb-mode-options{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:12px}\n        .cb-mode-thumb{width:54px;height:54px;border-radius:999px;border:2px solid transparent;background:linear-gradient(180deg,#ffffff 0%,#eef2f7 100%);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;overflow:hidden;box-shadow:0 4px 12px rgba(15,23,42,.10), inset 0 1px 0 rgba(255,255,255,.9)}\n        .cb-mode-thumb img{width:100%;height:100%;object-fit:cover}\n        .cb-mode-thumb.active{border-color:#6366f1;box-shadow:0 0 0 4px rgba(99,102,241,.16),0 6px 14px rgba(99,102,241,.18)}\n\n        .cb-widget[data-type=\"classstatus\"] .cb-widget-body{height:calc(100% - 58px);display:flex;flex-direction:column;min-height:0}\n        .cb-classstatus{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:8px;flex:1;min-height:0;height:100%}\n        .cb-classstatus-toolbar,.cb-classstatus-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}\n        .cb-classstatus-actions{justify-content:space-between}\n        .cb-classstatus-summary{font-size:11px;line-height:1.25;color:#64748b;flex:1 1 180px}\n        .cb-classstatus .cb-btn{padding:8px 12px;border-radius:12px}\n        .cb-classstatus-list{min-height:0;height:100%;overflow-y:auto;overflow-x:hidden;border:1px solid rgba(148,163,184,.18);border-radius:14px;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);padding:6px 8px 6px 8px;box-shadow:inset 0 1px 2px rgba(15,23,42,.03);display:grid;gap:4px;padding-right:6px}\n        .cb-classstatus-list::-webkit-scrollbar{width:8px}\n        .cb-classstatus-list::-webkit-scrollbar-thumb{background:rgba(100,116,139,.42);border-radius:8px}\n        .cb-classstatus-list::-webkit-scrollbar-track{background:transparent}\n        .cb-classstatus-empty{padding:14px 10px;border-radius:12px;background:linear-gradient(180deg,#f8fafc 0%,#f1f5f9 100%);text-align:center;color:#64748b;font-size:13px}\n        .cb-student-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;min-height:40px;padding:6px 10px;border-radius:12px;background:rgba(255,255,255,.86);border:1px solid rgba(148,163,184,.14);box-shadow:0 1px 3px rgba(15,23,42,.04);transition:background .16s ease, border-color .16s ease, box-shadow .16s ease}\n        .cb-student-row:hover{box-shadow:0 3px 8px rgba(15,23,42,.06)}\n        .cb-student-row.status-green{background:rgba(241,245,249,.58)}\n        .cb-student-row.status-yellow{background:linear-gradient(180deg,rgba(254,252,232,.92) 0%,rgba(254,249,195,.82) 100%);border-color:rgba(234,179,8,.24)}\n        .cb-student-row.status-orange{background:linear-gradient(180deg,rgba(255,247,237,.92) 0%,rgba(255,237,213,.82) 100%);border-color:rgba(249,115,22,.24)}\n        .cb-student-row.status-red{background:linear-gradient(180deg,rgba(254,242,242,.94) 0%,rgba(254,226,226,.84) 100%);border-color:rgba(239,68,68,.26)}\n        .cb-student-name{min-width:0;border:0;background:transparent;padding:0;margin:0;font:inherit;font-size:16px;font-weight:600;line-height:1.15;color:#0f172a;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .16s ease, text-shadow .16s ease}\n        .cb-student-name.status-green{font-weight:600;color:#0f172a}\n        .cb-student-name.status-yellow{font-weight:800;color:#7c5a00;text-shadow:0 0 8px rgba(250,204,21,.28),0 0 1px rgba(255,255,255,.92)}\n        .cb-student-name.status-orange{font-weight:800;color:#b45309;text-shadow:0 0 9px rgba(249,115,22,.24),0 0 1px rgba(255,255,255,.88)}\n        .cb-student-name.status-red{font-weight:800;color:#b91c1c;text-shadow:0 0 10px rgba(239,68,68,.22),0 0 1px rgba(255,255,255,.84)}\n        .cb-student-status{display:flex;gap:6px;align-items:center}\n        .cb-status-dot{width:16px;height:16px;border-radius:999px;border:0;cursor:pointer;opacity:.32;transform:scale(.94);transition:opacity .16s ease, transform .16s ease, box-shadow .16s ease}\n        .cb-status-dot:hover{opacity:.82}\n        .cb-status-dot.is-active{opacity:1;transform:scale(1.02)}\n        .cb-status-dot[data-status=\"green\"]{background:radial-gradient(circle at 30% 28%, #86efac 0%, #22c55e 45%, #166534 100%)}\n        .cb-status-dot[data-status=\"yellow\"]{background:radial-gradient(circle at 30% 28%, #fde68a 0%, #facc15 45%, #a16207 100%)}\n        .cb-status-dot[data-status=\"orange\"]{background:radial-gradient(circle at 30% 28%, #fdba74 0%, #f97316 45%, #9a3412 100%)}\n        .cb-status-dot[data-status=\"red\"]{background:radial-gradient(circle at 30% 28%, #fda4af 0%, #ef4444 45%, #991b1b 100%)}\n        .cb-status-dot[data-status=\"green\"].is-active{box-shadow:0 0 0 3px rgba(34,197,94,.18),0 0 14px rgba(34,197,94,.34)}\n        .cb-status-dot[data-status=\"yellow\"].is-active{box-shadow:0 0 0 3px rgba(234,179,8,.20),0 0 14px rgba(250,204,21,.36)}\n        .cb-status-dot[data-status=\"orange\"].is-active{box-shadow:0 0 0 3px rgba(249,115,22,.18),0 0 14px rgba(249,115,22,.32)}\n        .cb-status-dot[data-status=\"red\"].is-active{box-shadow:0 0 0 3px rgba(239,68,68,.18),0 0 14px rgba(239,68,68,.30)}\n\n\n        @media (max-width: 700px){\n            #cb-board{min-height:560px}\n            .cb-widget{min-width:200px}\n            .cb-big{font-size:38px}\n            .cb-name-result{font-size:26px}\n        }\n    <\/style>\n\n    <script>\n    (function(){\n        const app = document.getElementById('cb-app');\n        if (!app || app.dataset.loaded) return;\n        app.dataset.loaded = '1';\n        const board = document.getElementById('cb-board');\n        const STORAGE_KEY = 'cb_layout_v12';\n        const BG_KEY = 'cb_background_v12';\n        const serverData = JSON.parse(app.dataset.ajax || '{}');\n        let classCache = serverData.classes || {};\n        let zCounter = 10;\n\n        const uid = () => 'w_' + Math.random().toString(36).slice(2,10);\n        const clamp = (n,min,max) => Math.max(min, Math.min(max,n));\n\n        function escapeHtml(str){\n            return String(str || '').replace(\/[&<>\"']\/g, s => ({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[s]));\n        }\n\n        function cbNameParts(raw){\n            const name = String(raw || '').replace(\/\\s+\/g, ' ').trim();\n            if (!name) return { id:'', first:'', last:'' };\n            const parts = name.split(' ');\n            const first = parts.shift() || '';\n            const last = parts.join(' ').trim();\n            return { id:name, first, last };\n        }\n\n        function cbBuildDisplayNames(names){\n            const parsed = (Array.isArray(names) ? names : []).map(cbNameParts).filter(item => item.first);\n            const groups = {};\n            parsed.forEach(item => {\n                const key = item.first.toLocaleLowerCase('de');\n                (groups[key] ||= []).push(item);\n            });\n\n            const result = [];\n            Object.values(groups).forEach(group => {\n                if (group.length === 1) {\n                    const item = group[0];\n                    result.push({ id:item.id, display:item.first });\n                    return;\n                }\n\n                const normalized = group.map(item => ({\n                    item,\n                    last: (item.last || '').replace(\/\\s+\/g, '').toLocaleLowerCase('de')\n                }));\n\n                normalized.forEach(entry => {\n                    let len = 1;\n                    const source = entry.last || 'x';\n                    while (len <= source.length) {\n                        const prefix = source.slice(0, len);\n                        const clash = normalized.some(other => other !== entry && (other.last || 'x').slice(0, len) === prefix);\n                        if (!clash) break;\n                        len += 1;\n                    }\n                    const prefix = source.slice(0, Math.min(len, source.length)) || 'x';\n                    const pretty = prefix.charAt(0).toUpperCase() + prefix.slice(1);\n                    result.push({\n                        id: entry.item.id,\n                        display: `${entry.item.first} ${pretty}.`\n                    });\n                });\n            });\n\n            return result;\n        }\n\n        function cbStatusRank(status){\n            return ({ red:0, orange:1, yellow:2, green:3 })[status] ?? 3;\n        }\n\n        async function ajaxAction(action, extra = {}) {\n            const form = new FormData();\n            form.append('action', action);\n            form.append('nonce', serverData.nonce || '');\n            Object.entries(extra).forEach(([key, value]) => form.append(key, value));\n            const response = await fetch(serverData.ajaxUrl, {\n                method: 'POST',\n                credentials: 'same-origin',\n                body: form\n            });\n            const json = await response.json();\n            if (!response.ok || !json.success) {\n                throw new Error(json?.data?.message || 'Serverfehler');\n            }\n            return json.data || {};\n        }\n\n        async function refreshClassesFromServer() {\n            if (!serverData.isLoggedIn) return classCache;\n            const data = await ajaxAction('cb_get_classes');\n            classCache = data.classes || {};\n            return classCache;\n        }\n\n        function getClasses(){ return classCache || {}; }\n\n        async function saveClassToServer(className, names) {\n            const data = await ajaxAction('cb_save_class', {\n                class_name: className,\n                names: Array.isArray(names) ? names.join('\\n') : String(names || '')\n            });\n            classCache = data.classes || {};\n            return classCache;\n        }\n\n        async function deleteClassFromServer(className) {\n            const data = await ajaxAction('cb_delete_class', { class_name: className });\n            classCache = data.classes || {};\n            return classCache;\n        }\n\n        function saveLayout(){\n            const widgets = [...board.querySelectorAll('.cb-widget')].map(el => ({\n                id: el.dataset.id,\n                type: el.dataset.type,\n                x: parseInt(el.style.left || 0, 10),\n                y: parseInt(el.style.top || 0, 10),\n                width: el.offsetWidth,\n                height: el.offsetHeight,\n                z: parseInt(el.style.zIndex || 1, 10),\n                state: collectState(el)\n            }));\n            localStorage.setItem(STORAGE_KEY, JSON.stringify(widgets));\n        }\n\n        function collectState(el){\n            const type = el.dataset.type;\n            if (type === 'text') return {html: el.querySelector('.cb-text-editor').innerHTML};\n            if (type === 'todo') return {html: el.querySelector('.cb-todo-editor').innerHTML};\n            if (type === 'timer') return {\n                seconds: parseInt(el.dataset.seconds || 0, 10),\n                totalSeconds: parseInt(el.dataset.totalSeconds || el.dataset.seconds || 0, 10),\n                baseSeconds: parseInt(el.dataset.baseSeconds || el.dataset.totalSeconds || el.dataset.seconds || 300, 10),\n                running: el.dataset.running === '1',\n                endAt: parseInt(el.dataset.endAt || 0, 10)\n            };\n            if (type === 'names') return {\n                selectedClass: el.querySelector('.cb-class-select')?.value || '',\n                draftClass: el.querySelector('.cb-class-name')?.value || '',\n                draftNames: el.querySelector('.cb-class-names')?.value || '',\n                result: el.querySelector('.cb-name-result')?.textContent || '',\n                info: el.querySelector('.cb-name-sub')?.textContent || ''\n            };\n            if (type === 'classstatus') return {\n                selectedClass: el.querySelector('.cb-classstatus-select')?.value || '',\n                sortByStatus: el.dataset.sortByStatus === '1',\n                statuses: el.__cbStatuses || {}\n            };\n            if (type === 'noise') return {active: el.dataset.active === '1'};\n            if (type === 'draw') return {image: el.querySelector('canvas').toDataURL('image\/png')};\n            if (type === 'clock') return {};\n            if (type === 'mode') return {selected: el.dataset.selectedMode || 'ruhe'};\n            if (type === 'geometry') {\n                const stage = el.querySelector('.cb-geometry-stage');\n                return stage && stage.__cbGetState ? stage.__cbGetState() : {};\n            }\n            return {};\n        }\n\n        function loadLayout(){\n            const raw = localStorage.getItem(STORAGE_KEY);\n            if (!raw) return;\n            try {\n                const widgets = JSON.parse(raw);\n                widgets.forEach(w => createWidget(w.type, w));\n            } catch(e) {}\n        }\n\n        function bringToFront(el){ zCounter++; el.style.zIndex = zCounter; }\n\n        function makeDraggable(el){\n            const handle = el.querySelector('.cb-widget-header');\n            let active = false, startX = 0, startY = 0, startLeft = 0, startTop = 0;\n            handle.addEventListener('pointerdown', e => {\n                if (e.target.closest('button') || el.classList.contains('cb-resizing')) return;\n                active = true;\n                bringToFront(el);\n                startX = e.clientX; startY = e.clientY;\n                startLeft = parseInt(el.style.left || 0, 10); startTop = parseInt(el.style.top || 0, 10);\n                handle.setPointerCapture(e.pointerId);\n            });\n            handle.addEventListener('pointermove', e => {\n                if (!active) return;\n                const rect = board.getBoundingClientRect();\n                const left = clamp(startLeft + (e.clientX - startX), 0, Math.max(0, rect.width - el.offsetWidth));\n                const top = clamp(startTop + (e.clientY - startY), 0, Math.max(0, rect.height - el.offsetHeight));\n                el.style.left = left + 'px';\n                el.style.top = top + 'px';\n            });\n            const end = () => { if (active) { active = false; saveLayout(); } };\n            handle.addEventListener('pointerup', end);\n            handle.addEventListener('pointercancel', end);\n            el.addEventListener('pointerdown', () => bringToFront(el));\n        }\n\n        function makeResizable(el){\n            const handle = document.createElement('div');\n            handle.className = 'cb-resize-handle';\n            el.appendChild(handle);\n            let active = false, startX = 0, startY = 0, startW = 0, startH = 0;\n            handle.addEventListener('pointerdown', e => {\n                e.preventDefault();\n                e.stopPropagation();\n                active = true;\n                el.classList.add('cb-resizing');\n                bringToFront(el);\n                startX = e.clientX; startY = e.clientY;\n                startW = el.offsetWidth; startH = el.offsetHeight;\n                handle.setPointerCapture(e.pointerId);\n            });\n            handle.addEventListener('pointermove', e => {\n                if (!active) return;\n                const rect = board.getBoundingClientRect();\n                const left = parseInt(el.style.left || 0, 10);\n                const top = parseInt(el.style.top || 0, 10);\n                const maxW = Math.max(220, rect.width - left);\n                const maxH = Math.max(120, rect.height - top);\n                const nextW = clamp(startW + (e.clientX - startX), 220, maxW);\n                const nextH = clamp(startH + (e.clientY - startY), 120, maxH);\n                el.style.width = nextW + 'px';\n                el.style.height = nextH + 'px';\n                const canvas = el.querySelector('canvas.cb-canvas');\n                if (canvas && typeof canvas.__cbResize === 'function') canvas.__cbResize();\n                const geometryStage = el.querySelector('.cb-geometry-stage');\n                if (geometryStage && typeof geometryStage.__cbGeometryResize === 'function') geometryStage.__cbGeometryResize();\n            });\n            const end = () => {\n                if (!active) return;\n                active = false;\n                el.classList.remove('cb-resizing');\n                saveLayout();\n            };\n            handle.addEventListener('pointerup', end);\n            handle.addEventListener('pointercancel', end);\n        }\n\n        function widgetShell(title, type){\n            const el = document.createElement('div');\n            el.className = 'cb-widget';\n            el.dataset.id = uid();\n            el.dataset.type = type;\n            el.innerHTML = `\n                <div class=\"cb-widget-header\">\n                    <div class=\"cb-widget-title\">${title}<\/div>\n                    <div class=\"cb-widget-actions\">\n                        <button class=\"cb-icon-btn cb-delete\">\u2715<\/button>\n                    <\/div>\n                <\/div>\n                <div class=\"cb-widget-body\"><\/div>\n            `;\n            el.querySelector('.cb-delete').addEventListener('click', () => { el.remove(); saveLayout(); });\n            makeDraggable(el);\n            makeResizable(el);\n            return el;\n        }\n\n        function formatTime(total){\n            total = Math.max(0, total|0);\n            const m = Math.floor(total\/60).toString().padStart(2,'0');\n            const s = (total%60).toString().padStart(2,'0');\n            return `${m}:${s}`;\n        }\n\n\n        function execRichText(command, value = null){\n            document.execCommand('styleWithCSS', false, true);\n            document.execCommand(command, false, value);\n        }\n\n        function applyFontSize(size){\n            document.execCommand('fontSize', false, '7');\n            document.querySelectorAll('font[size=\"7\"]').forEach(node => {\n                node.removeAttribute('size');\n                node.style.fontSize = size;\n            });\n        }\n\n        function initRichText(el, selector){\n            const editor = el.querySelector(selector);\n            const bar = el.querySelector('.cb-formatbar');\n            if (!editor || !bar) return;\n\n            const getSelectedElement = () => {\n                const sel = window.getSelection();\n                if (!sel || sel.rangeCount === 0) return null;\n                let node = sel.anchorNode;\n                if (!node) return null;\n                return node.nodeType === 1 ? node : node.parentElement;\n            };\n\n            const normalizeColor = value => {\n                if (!value) return '';\n                const s = value.toString().trim().replace(\/\\s+\/g, '').toLowerCase();\n                if (s.startsWith('#')) return s;\n                const m = s.match(\/^rgba?\\((\\d+),(\\d+),(\\d+)\/);\n                if (!m) return s;\n                return '#' + [m[1],m[2],m[3]].map(v => Number(v).toString(16).padStart(2,'0')).join('');\n            };\n\n            const getCurrentFontSize = () => {\n                const elNode = getSelectedElement() || editor;\n                if (!elNode) return '16px';\n                const size = window.getComputedStyle(elNode).fontSize || '16px';\n                const px = parseInt(size, 10) || 16;\n                return px + 'px';\n            };\n\n            const getCurrentColor = () => {\n                const elNode = getSelectedElement() || editor;\n                if (!elNode) return '#111827';\n                return normalizeColor(window.getComputedStyle(elNode).color || '#111827');\n            };\n\n            const updateToolbarState = () => {\n                const withinEditor = document.activeElement === editor || editor.contains(document.activeElement) || editor.contains(window.getSelection()?.anchorNode);\n                if (!withinEditor) return;\n\n                const isBold = document.queryCommandState('bold');\n                bar.querySelectorAll('[data-cmd=\"bold\"]').forEach(btn => btn.classList.toggle('is-active', !!isBold));\n\n                const currentSize = getCurrentFontSize();\n                bar.querySelectorAll('[data-size]').forEach(btn => btn.classList.toggle('is-active', btn.dataset.size === currentSize));\n\n                const currentColor = getCurrentColor();\n                bar.querySelectorAll('[data-color]').forEach(btn => btn.classList.toggle('is-active', normalizeColor(btn.dataset.color) === currentColor));\n\n                const listActive = document.queryCommandState('insertUnorderedList');\n                bar.querySelectorAll('[data-cmd=\"insertUnorderedList\"]').forEach(btn => btn.classList.toggle('is-active', !!listActive));\n            };\n\n            if (editor.innerHTML.trim() === '') editor.innerHTML = 'Hier schreiben\u2026';\n\n            editor.addEventListener('focus', () => {\n                if (editor.textContent.trim() === 'Hier schreiben\u2026') {\n                    editor.innerHTML = '';\n                }\n                updateToolbarState();\n            });\n\n            editor.addEventListener('blur', () => {\n                setTimeout(updateToolbarState, 0);\n                if (editor.textContent.trim() === '') {\n                    editor.innerHTML = 'Hier schreiben\u2026';\n                    editor.style.fontSize = '16px';\n                }\n            });\n\n            editor.style.fontSize = '16px';\n\n            bar.querySelectorAll('button').forEach(btn => {\n                btn.addEventListener('mousedown', e => {\n                    e.preventDefault();\n                    editor.focus();\n                });\n            });\n\n            bar.querySelectorAll('[data-cmd]').forEach(btn => {\n                btn.addEventListener('click', () => {\n                    execRichText(btn.dataset.cmd, btn.dataset.value || null);\n                    editor.focus();\n                    editor.dispatchEvent(new Event('input', {bubbles:true}));\n                    updateToolbarState();\n                });\n            });\n\n            bar.querySelectorAll('[data-size]').forEach(btn => {\n                btn.addEventListener('click', () => {\n                    applyFontSize(btn.dataset.size);\n                    editor.focus();\n                    editor.dispatchEvent(new Event('input', {bubbles:true}));\n                    updateToolbarState();\n                });\n            });\n\n            bar.querySelectorAll('[data-color]').forEach(btn => {\n                btn.addEventListener('click', () => {\n                    execRichText('foreColor', btn.dataset.color);\n                    editor.focus();\n                    editor.dispatchEvent(new Event('input', {bubbles:true}));\n                    updateToolbarState();\n                });\n            });\n\n            editor.addEventListener('keyup', updateToolbarState);\n            editor.addEventListener('mouseup', updateToolbarState);\n            document.addEventListener('selectionchange', () => {\n                if (editor.contains(window.getSelection()?.anchorNode)) updateToolbarState();\n            });\n            updateToolbarState();\n        }\n\n        function initTimer(el, state={}){\n            const display = el.querySelector('.cb-big');\n            const startBtn = el.querySelector('.cb-start');\n            const pauseBtn = el.querySelector('.cb-pause');\n            const resetBtn = el.querySelector('.cb-reset');\n            const adjustBtns = [...el.querySelectorAll('[data-adjust]')];\n            const progress = el.querySelector('.cb-timer-chalk-progress');\n            const canvas = el.querySelector('.cb-timer-dust');\n            const ctx = canvas?.getContext('2d');\n            const radius = 86;\n            const circumference = 2 * Math.PI * radius;\n            let seconds = Math.max(1, state.seconds ?? state.baseSeconds ?? 300);\n            let totalSeconds = Math.max(1, state.totalSeconds ?? seconds);\n            let baseSeconds = Math.max(60, state.baseSeconds ?? totalSeconds ?? seconds);\n            let interval = null;\n            let raf = null;\n            let particles = [];\n            let lastSpawn = 0;\n\n            if (progress) {\n                progress.style.strokeDasharray = `${circumference}`;\n                progress.style.strokeDashoffset = '0';\n            }\n\n            function syncDataset(){\n                el.dataset.seconds = seconds;\n                el.dataset.totalSeconds = totalSeconds;\n                el.dataset.baseSeconds = baseSeconds;\n            }\n\n            function getRatio(){\n                return totalSeconds > 0 ? Math.max(0, Math.min(1, seconds \/ totalSeconds)) : 0;\n            }\n\n            function getEndpoint(){\n                const ratio = getRatio();\n                const angle = -Math.PI \/ 2 + (Math.PI * 2 * ratio);\n                const x = 110 + Math.cos(angle) * radius;\n                const y = 110 + Math.sin(angle) * radius;\n                return {x, y, angle};\n            }\n\n            function updateRing(){\n                if (!progress) return;\n                const offset = circumference * (1 - getRatio());\n                progress.style.strokeDashoffset = `${offset}`;\n            }\n\n            function spawnDust(now){\n                if (!ctx || el.dataset.running !== '1') return;\n                if (now - lastSpawn < 85) return;\n                lastSpawn = now;\n                const point = getEndpoint();\n                const strength = 0.45 + (1 - getRatio()) * 0.4;\n                const count = 2 + Math.round(strength * 2);\n                for (let i = 0; i < count; i++) {\n                    const outward = point.angle + (Math.random() - 0.5) * 0.75;\n                    const speed = 0.18 + Math.random() * 0.35 + strength * 0.12;\n                    particles.push({\n                        x: point.x + (Math.random() - 0.5) * 4,\n                        y: point.y + (Math.random() - 0.5) * 4,\n                        vx: Math.cos(outward) * speed + (Math.random() - 0.5) * 0.10,\n                        vy: Math.sin(outward) * speed + (Math.random() - 0.5) * 0.10,\n                        life: 1,\n                        size: 0.8 + Math.random() * 1.8,\n                    });\n                }\n            }\n\n            function drawDust(now){\n                if (!ctx || !canvas) return;\n                ctx.clearRect(0, 0, canvas.width, canvas.height);\n                spawnDust(now);\n                particles = particles.filter(p => p.life > 0.03);\n                for (const p of particles) {\n                    p.x += p.vx;\n                    p.y += p.vy;\n                    p.life *= 0.963;\n                    p.vx *= 0.992;\n                    p.vy = p.vy * 0.992 + 0.002;\n                    ctx.globalAlpha = p.life * 0.42;\n                    ctx.beginPath();\n                    ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);\n                    ctx.fillStyle = '#ffffff';\n                    ctx.fill();\n                }\n                ctx.globalAlpha = 1;\n            }\n\n            function animate(now){\n                drawDust(now || performance.now());\n                if (el.dataset.running === '1' || particles.length) {\n                    raf = requestAnimationFrame(animate);\n                } else {\n                    raf = null;\n                }\n            }\n\n            function ensureAnimation(){\n                if (!raf) raf = requestAnimationFrame(animate);\n            }\n\n            function render(){\n                display.textContent = formatTime(seconds);\n                syncDataset();\n                updateRing();\n                ensureAnimation();\n            }\n\n            function stop(){\n                if (interval) clearInterval(interval);\n                interval = null;\n                el.dataset.running = '0';\n                saveLayout();\n                ensureAnimation();\n            }\n\n            function tick(){\n                const endAt = parseInt(el.dataset.endAt || 0, 10);\n                seconds = Math.max(0, Math.ceil((endAt - Date.now()) \/ 1000));\n                syncDataset();\n                render();\n                if (seconds <= 0) stop();\n            }\n\n            function adjustMinutes(deltaMinutes){\n                const deltaSeconds = deltaMinutes * 60;\n                if (!deltaSeconds) return;\n\n                if (el.dataset.running === '1') {\n                    tick();\n                    const nextSeconds = Math.max(1, seconds + deltaSeconds);\n                    const appliedDelta = nextSeconds - seconds;\n                    seconds = nextSeconds;\n                    totalSeconds = Math.max(1, totalSeconds + appliedDelta);\n                    baseSeconds = totalSeconds;\n                    el.dataset.endAt = Date.now() + seconds * 1000;\n                } else {\n                    baseSeconds = Math.max(60, baseSeconds + deltaSeconds);\n                    seconds = baseSeconds;\n                    totalSeconds = baseSeconds;\n                    delete el.dataset.endAt;\n                }\n\n                render();\n                saveLayout();\n            }\n\n            adjustBtns.forEach(btn => {\n                btn.addEventListener('click', () => adjustMinutes(parseInt(btn.dataset.adjust || '0', 10)));\n            });\n\n            startBtn.addEventListener('click', () => {\n                stop();\n                if (seconds <= 0) seconds = Math.max(1, baseSeconds);\n                totalSeconds = Math.max(1, baseSeconds);\n                particles = [];\n                lastSpawn = 0;\n                el.dataset.endAt = Date.now() + seconds * 1000;\n                el.dataset.running = '1';\n                interval = setInterval(tick, 250);\n                tick();\n            });\n\n            pauseBtn.addEventListener('click', () => {\n                stop();\n            });\n\n            resetBtn.addEventListener('click', () => {\n                stop();\n                particles = [];\n                seconds = Math.max(1, baseSeconds);\n                totalSeconds = Math.max(1, baseSeconds);\n                delete el.dataset.endAt;\n                render();\n                saveLayout();\n            });\n\n            render();\n\n            if (state.running && state.endAt) {\n                el.dataset.endAt = state.endAt;\n                el.dataset.running = '1';\n                interval = setInterval(tick, 250);\n                tick();\n            }\n        }\n\n\n        function initClassStatus(el, state={}){\n            const select = el.querySelector('.cb-classstatus-select');\n            const summary = el.querySelector('.cb-classstatus-summary');\n            const list = el.querySelector('.cb-classstatus-list');\n            const resetBtn = el.querySelector('.cb-classstatus-reset');\n            const sortBtn = el.querySelector('.cb-classstatus-sort');\n            const syncBtn = el.querySelector('.cb-classstatus-sync');\n            const statuses = Object.assign({}, state.statuses || {});\n            el.__cbStatuses = statuses;\n            el.dataset.sortByStatus = state.sortByStatus ? '1' : '0';\n\n            function classesSorted(){\n                return Object.keys(getClasses() || {}).sort((a,b) => a.localeCompare(b, 'de'));\n            }\n\n            function refreshSelect(preferred){\n                const items = classesSorted();\n                const current = preferred !== undefined ? preferred : select.value;\n                select.innerHTML = '<option value=\"\">Klasse w\u00e4hlen\u2026<\/option>' + items.map(name => `<option value=\"${escapeHtml(name)}\">${escapeHtml(name)}<\/option>`).join('');\n                if (current && items.includes(current)) select.value = current;\n                else if (!current && items.length) select.value = items[0];\n                else if (items.length && !select.value) select.value = items[0];\n                else select.value = '';\n            }\n\n            async function syncFromServer(){\n                if (!serverData.isLoggedIn) return;\n                try {\n                    await refreshClassesFromServer();\n                    refreshSelect(select.value || state.selectedClass || '');\n                    render();\n                } catch(err) {\n                    summary.textContent = err.message || 'Neu laden fehlgeschlagen.';\n                }\n            }\n\n            function cycleStatus(current){\n                return ({green:'yellow', yellow:'orange', orange:'red', red:'green'})[current] || 'green';\n            }\n\n            function setStatus(key, status){\n                statuses[key] = status;\n                el.__cbStatuses = statuses;\n                render();\n                saveLayout();\n            }\n\n            function resetAll(){\n                const className = select.value;\n                const items = className && getClasses()[className] ? cbBuildDisplayNames(getClasses()[className]) : [];\n                items.forEach(item => { statuses[`${className}__${item.id}`] = 'green'; });\n                el.__cbStatuses = statuses;\n                render();\n                saveLayout();\n            }\n\n            function render(){\n                const className = select.value;\n                const classes = getClasses();\n                const names = className && classes[className] ? classes[className] : [];\n                const items = cbBuildDisplayNames(names).map(item => {\n                    const key = `${className}__${item.id}`;\n                    return Object.assign({}, item, {key, status: statuses[key] || 'green'});\n                });\n\n                const sortByStatus = el.dataset.sortByStatus === '1';\n                sortBtn.classList.toggle('is-active', sortByStatus);\n                sortBtn.textContent = sortByStatus ? 'Nach Status' : 'Alphabet';\n                if (sortByStatus) {\n                    items.sort((a,b) => cbStatusRank(a.status) - cbStatusRank(b.status) || a.display.localeCompare(b.display, 'de'));\n                } else {\n                    items.sort((a,b) => a.display.localeCompare(b.display, 'de'));\n                }\n\n                const counts = {green:0,yellow:0,orange:0,red:0};\n                items.forEach(item => counts[item.status] = (counts[item.status] || 0) + 1);\n\n                if (!className) {\n                    list.innerHTML = '<div class=\"cb-classstatus-empty\">Bitte zuerst eine Klasse ausw\u00e4hlen.<\/div>';\n                    summary.textContent = serverData.isLoggedIn ? 'Noch keine Klasse ausgew\u00e4hlt.' : 'Bitte in WordPress anmelden, damit Klassen serverseitig verf\u00fcgbar sind.';\n                    return;\n                }\n                if (!items.length) {\n                    list.innerHTML = `<div class=\"cb-classstatus-empty\">In ${escapeHtml(className)} sind keine Namen gespeichert.<\/div>`;\n                    summary.textContent = `${className} \u00b7 0 Namen`;\n                    return;\n                }\n\n                summary.textContent = `${items.length} Sch\u00fcler \u00b7 G${counts.green || 0} \u00b7 Ge${counts.yellow || 0} \u00b7 O${counts.orange || 0} \u00b7 R${counts.red || 0}`;\n\n                list.innerHTML = items.map(item => `\n                    <div class=\"cb-student-row status-${item.status}\" data-key=\"${escapeHtml(item.key)}\">\n                        <button type=\"button\" class=\"cb-student-name status-${item.status}\" data-key=\"${escapeHtml(item.key)}\">${escapeHtml(item.display)}<\/button>\n                        <div class=\"cb-student-status\">\n                            <button type=\"button\" class=\"cb-status-dot ${item.status === 'green' ? 'is-active' : ''}\" data-key=\"${escapeHtml(item.key)}\" data-status=\"green\" title=\"Gr\u00fcn\"><\/button>\n                            <button type=\"button\" class=\"cb-status-dot ${item.status === 'yellow' ? 'is-active' : ''}\" data-key=\"${escapeHtml(item.key)}\" data-status=\"yellow\" title=\"Gelb\"><\/button>\n                            <button type=\"button\" class=\"cb-status-dot ${item.status === 'orange' ? 'is-active' : ''}\" data-key=\"${escapeHtml(item.key)}\" data-status=\"orange\" title=\"Orange\"><\/button>\n                            <button type=\"button\" class=\"cb-status-dot ${item.status === 'red' ? 'is-active' : ''}\" data-key=\"${escapeHtml(item.key)}\" data-status=\"red\" title=\"Rot\"><\/button>\n                        <\/div>\n                    <\/div>\n                `).join('');\n\n                list.querySelectorAll('.cb-status-dot').forEach(btn => {\n                    btn.addEventListener('click', () => setStatus(btn.dataset.key, btn.dataset.status));\n                });\n                list.querySelectorAll('.cb-student-name').forEach(btn => {\n                    btn.addEventListener('click', () => setStatus(btn.dataset.key, cycleStatus(statuses[btn.dataset.key] || 'green')));\n                });\n            }\n\n            select.addEventListener('change', () => { render(); saveLayout(); });\n            resetBtn.addEventListener('click', () => resetAll());\n            sortBtn.addEventListener('click', () => {\n                el.dataset.sortByStatus = el.dataset.sortByStatus === '1' ? '0' : '1';\n                render();\n                saveLayout();\n            });\n            if (syncBtn) syncBtn.addEventListener('click', syncFromServer);\n\n            refreshSelect(state.selectedClass || '');\n            render();\n        }\n\n        function initNames(el, state={}){\n            const select = el.querySelector('.cb-class-select');\n            const classNameInput = el.querySelector('.cb-class-name');\n            const namesInput = el.querySelector('.cb-class-names');\n            const panel = el.querySelector('.cb-class-panel');\n            const result = el.querySelector('.cb-name-result');\n            const info = el.querySelector('.cb-name-sub');\n            const pick = el.querySelector('.cb-pick-name');\n            const clear = el.querySelector('.cb-clear-name');\n            const toggleManage = el.querySelector('.cb-toggle-manage');\n            const saveClassBtn = el.querySelector('.cb-save-class');\n            const newClassBtn = el.querySelector('.cb-new-class');\n            const deleteClassBtn = el.querySelector('.cb-delete-class');\n            const syncBtn = el.querySelector('.cb-sync-classes');\n            let animationTimer = null;\n            let animationTimeout = null;\n            let animating = false;\n\n            function classesSorted(){\n                const classes = getClasses();\n                return Object.keys(classes).sort((a,b) => a.localeCompare(b, 'de'));\n            }\n\n            function fillClassFields(name){\n                const classes = getClasses();\n                classNameInput.value = name || '';\n                namesInput.value = name && classes[name] ? classes[name].join('\\n') : '';\n            }\n\n            function setInfo(text, isError = false){\n                info.textContent = text || '';\n                info.style.color = isError ? '#b91c1c' : '#6b7280';\n            }\n\n            function refreshSelect(preferred){\n                const items = classesSorted();\n                const current = preferred !== undefined ? preferred : select.value;\n                select.innerHTML = '<option value=\"\">Klasse w\u00e4hlen\u2026<\/option>' + items.map(name => `<option value=\"${escapeHtml(name)}\">${escapeHtml(name)}<\/option>`).join('');\n                if (current && items.includes(current)) {\n                    select.value = current;\n                    fillClassFields(current);\n                } else if (!current && items.length) {\n                    select.value = items[0];\n                    fillClassFields(items[0]);\n                } else {\n                    select.value = '';\n                    fillClassFields('');\n                }\n                saveLayout();\n            }\n\n            function selectedNames(){\n                const classes = getClasses();\n                const selected = select.value;\n                return selected && classes[selected] ? classes[selected].filter(Boolean) : [];\n            }\n\n            function stopAnimation(){\n                if (animationTimer) clearInterval(animationTimer);\n                if (animationTimeout) clearTimeout(animationTimeout);\n                animationTimer = null;\n                animationTimeout = null;\n                animating = false;\n            }\n\n            async function syncFromServer(showMessage = true) {\n                if (!serverData.isLoggedIn) {\n                    setInfo('Zum Synchronisieren bitte in WordPress anmelden.', true);\n                    return;\n                }\n                try {\n                    await refreshClassesFromServer();\n                    refreshSelect(select.value || state.selectedClass || '');\n                    if (showMessage) setInfo('Klassen erfolgreich vom Server geladen.');\n                } catch (err) {\n                    setInfo(err.message || 'Synchronisierung fehlgeschlagen.', true);\n                }\n            }\n\n            toggleManage.addEventListener('click', () => {\n                panel.hidden = !panel.hidden;\n            });\n\n            select.addEventListener('change', () => {\n                fillClassFields(select.value);\n                const count = selectedNames().length;\n                setInfo(select.value ? `${count} Name${count === 1 ? '' : 'n'} in ${select.value}` : '');\n                saveLayout();\n            });\n\n            newClassBtn.addEventListener('click', () => {\n                select.value = '';\n                classNameInput.value = '';\n                namesInput.value = '';\n                classNameInput.focus();\n                setInfo('Neue Klasse anlegen');\n                saveLayout();\n            });\n\n            saveClassBtn.addEventListener('click', async () => {\n                const name = classNameInput.value.trim();\n                const names = namesInput.value.split(\/\\n|,|;\/).map(v => v.trim()).filter(Boolean);\n                if (!name) {\n                    setInfo('Bitte einen Klassennamen eingeben.', true);\n                    return;\n                }\n                if (!names.length) {\n                    setInfo('Bitte mindestens einen Namen eingeben.', true);\n                    return;\n                }\n                if (!serverData.isLoggedIn) {\n                    setInfo('Speichern geht serverseitig nur mit WordPress-Login.', true);\n                    return;\n                }\n                try {\n                    await saveClassToServer(name, names);\n                    refreshSelect(name);\n                    setInfo(`${names.length} Name${names.length === 1 ? '' : 'n'} serverseitig gespeichert.`);\n                } catch (err) {\n                    setInfo(err.message || 'Speichern fehlgeschlagen.', true);\n                }\n            });\n\n            deleteClassBtn.addEventListener('click', async () => {\n                const name = select.value || classNameInput.value.trim();\n                if (!name) return;\n                if (!confirm(`Klasse \u201e${name}\u201c wirklich l\u00f6schen?`)) return;\n                if (!serverData.isLoggedIn) {\n                    setInfo('L\u00f6schen geht serverseitig nur mit WordPress-Login.', true);\n                    return;\n                }\n                try {\n                    await deleteClassFromServer(name);\n                    refreshSelect('');\n                    result.textContent = '';\n                    setInfo(`Klasse ${name} gel\u00f6scht.`);\n                } catch (err) {\n                    setInfo(err.message || 'L\u00f6schen fehlgeschlagen.', true);\n                }\n            });\n\n            if (syncBtn) syncBtn.addEventListener('click', () => syncFromServer(true));\n\n            clear.addEventListener('click', () => {\n                stopAnimation();\n                result.textContent = '';\n                setInfo(select.value ? `${selectedNames().length} Namen in ${select.value}` : '');\n                saveLayout();\n            });\n\n            pick.addEventListener('click', () => {\n                const names = selectedNames();\n                if (!names.length) {\n                    setInfo('Bitte zuerst eine gespeicherte Klasse ausw\u00e4hlen.', true);\n                    return;\n                }\n                stopAnimation();\n                animating = true;\n                let cycles = 0;\n                setInfo(`Ziehe aus ${select.value}\u2026`);\n                animationTimer = setInterval(() => {\n                    result.textContent = names[Math.floor(Math.random() * names.length)];\n                    cycles++;\n                }, 90);\n                const duration = 2200 + Math.floor(Math.random() * 900);\n                animationTimeout = setTimeout(() => {\n                    if (!animating) return;\n                    stopAnimation();\n                    const finalName = names[Math.floor(Math.random() * names.length)];\n                    result.textContent = finalName;\n                    setInfo(`${finalName} wurde aus ${select.value} ausgew\u00e4hlt`);\n                    saveLayout();\n                }, duration);\n            });\n\n            classNameInput.addEventListener('input', saveLayout);\n            namesInput.addEventListener('input', saveLayout);\n\n            refreshSelect(state.selectedClass || '');\n            if (state.draftClass && !select.value) classNameInput.value = state.draftClass;\n            if (state.draftNames && !namesInput.value) namesInput.value = state.draftNames;\n            result.textContent = state.result || '';\n            setInfo(state.info || (select.value ? `${selectedNames().length} Namen in ${select.value}` : (serverData.isLoggedIn ? 'Noch keine Klasse gew\u00e4hlt' : 'Bitte in WordPress anmelden, um Klassen serverseitig zu speichern.')), !serverData.isLoggedIn && !select.value);\n        }\n\n        async function initNoise(el, state={}){\n            const startBtn = el.querySelector('.cb-noise-start');\n            const stopBtn = el.querySelector('.cb-noise-stop');\n            const bar = el.querySelector('.cb-meter-bar');\n            const status = el.querySelector('.cb-noise-status');\n            let ctx, analyser, source, stream, raf;\n\n            const stop = () => {\n                if (raf) cancelAnimationFrame(raf);\n                if (stream) stream.getTracks().forEach(t => t.stop());\n                if (ctx) ctx.close();\n                ctx = analyser = source = stream = raf = null;\n                el.dataset.active = '0';\n                status.textContent = 'Mikrofon gestoppt';\n                bar.style.width = '0%';\n                saveLayout();\n            };\n\n            const loop = () => {\n                const data = new Uint8Array(analyser.fftSize);\n                analyser.getByteTimeDomainData(data);\n                let sum = 0;\n                for (let i = 0; i < data.length; i++) {\n                    const v = (data[i] - 128) \/ 128;\n                    sum += v * v;\n                }\n                const rms = Math.sqrt(sum \/ data.length);\n                const level = Math.min(100, Math.round(rms * 300));\n                bar.style.width = level + '%';\n                raf = requestAnimationFrame(loop);\n            };\n\n            startBtn.addEventListener('click', async () => {\n                try {\n                    stream = await navigator.mediaDevices.getUserMedia({audio:true});\n                    ctx = new (window.AudioContext || window.webkitAudioContext)();\n                    analyser = ctx.createAnalyser();\n                    analyser.fftSize = 1024;\n                    source = ctx.createMediaStreamSource(stream);\n                    source.connect(analyser);\n                    el.dataset.active = '1';\n                    status.textContent = 'Mikrofon aktiv';\n                    loop();\n                    saveLayout();\n                } catch(err) {\n                    status.textContent = 'Mikrofonzugriff verweigert';\n                }\n            });\n            stopBtn.addEventListener('click', stop);\n            if (state.active) status.textContent = 'Zum Aktivieren Start klicken';\n        }\n\n        function initDraw(el, state={}){\n            const canvas = el.querySelector('canvas');\n            const clearBtn = el.querySelector('.cb-draw-clear');\n            const ctx = canvas.getContext('2d');\n            let drawing = false;\n\n            function resizeCanvas(){\n                const ratio = window.devicePixelRatio || 1;\n                const rect = canvas.getBoundingClientRect();\n                const snapshot = canvas.width && canvas.height ? canvas.toDataURL('image\/png') : null;\n                canvas.width = Math.max(1, Math.floor(rect.width * ratio));\n                canvas.height = Math.max(1, Math.floor(rect.height * ratio));\n                ctx.setTransform(ratio,0,0,ratio,0,0);\n                ctx.lineWidth = 3;\n                ctx.lineJoin = 'round';\n                ctx.lineCap = 'round';\n                ctx.strokeStyle = '#111827';\n                if (snapshot && snapshot !== 'data:,') {\n                    const img = new Image();\n                    img.onload = () => ctx.drawImage(img,0,0,rect.width,rect.height);\n                    img.src = snapshot;\n                } else if (state.image) {\n                    const img = new Image();\n                    img.onload = () => {\n                        ctx.clearRect(0,0,canvas.width,canvas.height);\n                        ctx.drawImage(img,0,0,rect.width,rect.height);\n                        state.image = null;\n                    };\n                    img.src = state.image;\n                }\n            }\n            canvas.__cbResize = resizeCanvas;\n            setTimeout(resizeCanvas, 0);\n            window.addEventListener('resize', resizeCanvas);\n\n            function point(e){\n                const rect = canvas.getBoundingClientRect();\n                return {x:e.clientX - rect.left, y:e.clientY - rect.top};\n            }\n            canvas.addEventListener('pointerdown', e => {\n                drawing = true;\n                const p = point(e);\n                ctx.beginPath();\n                ctx.moveTo(p.x,p.y);\n                canvas.setPointerCapture(e.pointerId);\n            });\n            canvas.addEventListener('pointermove', e => {\n                if (!drawing) return;\n                const p = point(e);\n                ctx.lineTo(p.x,p.y);\n                ctx.stroke();\n            });\n            const stop = () => { if (drawing) { drawing = false; saveLayout(); } };\n            canvas.addEventListener('pointerup', stop);\n            canvas.addEventListener('pointercancel', stop);\n            clearBtn.addEventListener('click', () => { ctx.clearRect(0,0,canvas.width,canvas.height); saveLayout(); });\n        }\n\n        function initClock(el){\n            const out = el.querySelector('.cb-clock');\n            const render = () => {\n                const now = new Date();\n                out.textContent = now.toLocaleTimeString('de-DE', {hour:'2-digit', minute:'2-digit', second:'2-digit'});\n            };\n            render();\n            setInterval(render, 1000);\n        }\n\n        function initMode(el, state={}){\n            const thumbs = [...el.querySelectorAll('.cb-mode-thumb')];\n            const mainImg = el.querySelector('.cb-mode-main');\n\n            function apply(mode){\n                const active = thumbs.find(btn => btn.dataset.mode === mode) || thumbs[0];\n                if (!active) return;\n                thumbs.forEach(btn => btn.classList.toggle('active', btn === active));\n                const img = active.querySelector('img');\n                if (img) {\n                    mainImg.src = img.src;\n                    mainImg.alt = active.title || active.dataset.mode || '';\n                }\n                el.dataset.selectedMode = active.dataset.mode || '';\n                saveLayout();\n            }\n\n            thumbs.forEach(btn => {\n                btn.addEventListener('click', () => apply(btn.dataset.mode));\n            });\n\n            apply(state.selected || el.dataset.selectedMode || 'ruhe');\n        }\n\n        function initGeometry(el, state={}){\n            const stage = el.querySelector('.cb-geometry-stage');\n            const svg = el.querySelector('.cb-geometry-svg');\n            const note = el.querySelector('.cb-geo-note');\n            const toolButtons = [...el.querySelectorAll('.cb-geo-btn[data-tool]')];\n            const toggleButtons = [...el.querySelectorAll('.cb-geo-toggle[data-toggle]')];\n            if (!stage || !svg) return;\n\n            const ns = 'http:\/\/www.w3.org\/2000\/svg';\n            const defaults = {tool:'select',grid:true,labels:true,lengths:false,angles:false,objects:[]};\n            const data = Object.assign({}, defaults, state || {});\n            data.objects = Array.isArray(data.objects) ? data.objects : [];\n            data.selectedId = '';\n            data.draft = null;\n            data.drag = null;\n            data.width = 640;\n            data.height = 360;\n            data.pointIndex = 0;\n\n            function uidGeo(){ return 'geo_' + Math.random().toString(36).slice(2, 10); }\n            function nextPointLabel(){\n                const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n                let n = data.pointIndex++;\n                let label = '';\n                do { label = letters[n % 26] + label; n = Math.floor(n \/ 26) - 1; } while (n >= 0);\n                return label;\n            }\n            data.objects.forEach(obj => { if (!obj.id) obj.id = uidGeo(); if (!obj.label && ['point','segment','line','rect','circle','triangle'].includes(obj.type)) obj.label = nextPointLabel(); });\n\n            function resizeStage(){\n                const rect = stage.getBoundingClientRect();\n                data.width = Math.max(320, Math.round(rect.width));\n                data.height = Math.max(220, Math.round(rect.height));\n                svg.setAttribute('viewBox', `0 0 ${data.width} ${data.height}`);\n                render();\n            }\n            stage.__cbGeometryResize = resizeStage;\n            stage.__cbGetState = () => ({ tool:data.tool, grid:data.grid, labels:data.labels, lengths:data.lengths, angles:data.angles, objects:data.objects });\n\n            function setNote(text){ note.textContent = text || ''; }\n            function clampPoint(p){ return {x:Math.max(10, Math.min(data.width-10, p.x)), y:Math.max(10, Math.min(data.height-10, p.y))}; }\n            function dist(a,b){ return Math.hypot((b.x||0)-(a.x||0), (b.y||0)-(a.y||0)); }\n            function midpoint(a,b){ return {x:(a.x+b.x)\/2, y:(a.y+b.y)\/2}; }\n            function describeLength(value){ return Math.round(value) + ' px'; }\n            function angleAt(a,b,c){ const ab={x:a.x-b.x,y:a.y-b.y}, cb={x:c.x-b.x,y:c.y-b.y}; const dot=ab.x*cb.x+ab.y*cb.y; const mag=Math.hypot(ab.x,ab.y)*Math.hypot(cb.x,cb.y)||1; return Math.round(Math.acos(Math.max(-1,Math.min(1,dot\/mag)))*180\/Math.PI); }\n            function projectLine(p1,p2){\n                const dx = p2.x-p1.x, dy = p2.y-p1.y;\n                if (Math.abs(dx) < 0.0001) return [{x:p1.x,y:0},{x:p1.x,y:data.height}];\n                if (Math.abs(dy) < 0.0001) return [{x:0,y:p1.y},{x:data.width,y:p1.y}];\n                const pts = [];\n                [[0, p1.y + ((0-p1.x)*dy\/dx)], [data.width, p1.y + ((data.width-p1.x)*dy\/dx)], [p1.x + ((0-p1.y)*dx\/dy), 0], [p1.x + ((data.height-p1.y)*dx\/dy), data.height]].forEach(([x,y]) => { if (x >= -1 && x <= data.width+1 && y >= -1 && y <= data.height+1) pts.push({x,y}); });\n                return pts.length >= 2 ? [pts[0], pts[1]] : [p1,p2];\n            }\n            function createSvg(tag, attrs={}, text=''){ const node = document.createElementNS(ns, tag); Object.entries(attrs).forEach(([k,v]) => node.setAttribute(k, v)); if (text) node.textContent = text; return node; }\n            function distanceToSegment(p,a,b){ const l2=(b.x-a.x)**2+(b.y-a.y)**2; if(!l2) return dist(p,a); let t=((p.x-a.x)*(b.x-a.x)+(p.y-a.y)*(b.y-a.y))\/l2; t=Math.max(0,Math.min(1,t)); return dist(p,{x:a.x+t*(b.x-a.x), y:a.y+t*(b.y-a.y)}); }\n            function shapeHit(obj, point){\n                if (obj.type === 'point') return dist(obj, point) <= 12;\n                if (obj.type === 'segment') return distanceToSegment(point, obj.a, obj.b) <= 10;\n                if (obj.type === 'line') { const ext=projectLine(obj.a,obj.b); return distanceToSegment(point, ext[0], ext[1]) <= 10; }\n                if (obj.type === 'rect') { const x=Math.min(obj.a.x,obj.b.x), y=Math.min(obj.a.y,obj.b.y), w=Math.abs(obj.b.x-obj.a.x), h=Math.abs(obj.b.y-obj.a.y); return point.x>=x-6 && point.x<=x+w+6 && point.y>=y-6 && point.y<=y+h+6; }\n                if (obj.type === 'circle') return Math.abs(dist(obj.c, point) - obj.r) <= 10 || dist(obj.c, point) <= obj.r;\n                if (obj.type === 'triangle') { const minX=Math.min(obj.a.x,obj.b.x,obj.c.x), maxX=Math.max(obj.a.x,obj.b.x,obj.c.x), minY=Math.min(obj.a.y,obj.b.y,obj.c.y), maxY=Math.max(obj.a.y,obj.b.y,obj.c.y); return point.x>=minX-8 && point.x<=maxX+8 && point.y>=minY-8 && point.y<=maxY+8; }\n                if (obj.type === 'text') return point.x >= obj.x-12 && point.x <= obj.x+120 && point.y >= obj.y-24 && point.y <= obj.y+12;\n                return false;\n            }\n            function getObjectAt(point){ for (let i=data.objects.length-1;i>=0;i--){ if (shapeHit(data.objects[i], point)) return data.objects[i]; } return null; }\n            function moveObject(obj, dx, dy){\n                if (obj.type === 'point') { obj.x += dx; obj.y += dy; }\n                if (obj.type === 'segment' || obj.type === 'line') { obj.a.x += dx; obj.a.y += dy; obj.b.x += dx; obj.b.y += dy; }\n                if (obj.type === 'rect') { obj.a.x += dx; obj.a.y += dy; obj.b.x += dx; obj.b.y += dy; }\n                if (obj.type === 'circle') { obj.c.x += dx; obj.c.y += dy; }\n                if (obj.type === 'triangle') { obj.a.x += dx; obj.a.y += dy; obj.b.x += dx; obj.b.y += dy; obj.c.x += dx; obj.c.y += dy; }\n                if (obj.type === 'text') { obj.x += dx; obj.y += dy; }\n            }\n            function updateButtons(){ stage.dataset.tool = data.tool; stage.classList.toggle('is-grid', !!data.grid); toolButtons.forEach(btn => btn.classList.toggle('is-active', btn.dataset.tool === data.tool)); toggleButtons.forEach(btn => btn.classList.toggle('is-active', !!data[btn.dataset.toggle])); }\n            function drawLabel(group, text, x, y){ if (data.labels && text) group.appendChild(createSvg('text', {x, y, class:'cb-geo-label'}, text)); }\n            function drawLength(group, text, x, y){ if (data.lengths) group.appendChild(createSvg('text', {x, y, class:'cb-geo-length'}, text)); }\n            function drawAngle(group, text, x, y){ if (data.angles) group.appendChild(createSvg('text', {x, y, class:'cb-geo-angle'}, text)); }\n            function render(){\n                svg.innerHTML = '';\n                const root = createSvg('g');\n                data.objects.forEach(obj => {\n                    const group = createSvg('g', {'data-id':obj.id});\n                    const selected = obj.id === data.selectedId;\n                    if (obj.type === 'point') { group.appendChild(createSvg('circle', {cx:obj.x, cy:obj.y, r:5, class:'cb-geo-point cb-geo-shape' + (selected ? ' is-selected' : '')})); drawLabel(group, obj.label, obj.x+8, obj.y-8); }\n                    if (obj.type === 'segment') { group.appendChild(createSvg('line', {x1:obj.a.x,y1:obj.a.y,x2:obj.b.x,y2:obj.b.y,stroke:'#2563eb','stroke-width':3,class:'cb-geo-shape' + (selected ? ' is-selected' : '')})); const mid=midpoint(obj.a,obj.b); drawLabel(group, obj.label, mid.x+8, mid.y-8); drawLength(group, describeLength(dist(obj.a,obj.b)), mid.x+10, mid.y+16); }\n                    if (obj.type === 'line') { const ext=projectLine(obj.a,obj.b); group.appendChild(createSvg('line', {x1:ext[0].x,y1:ext[0].y,x2:ext[1].x,y2:ext[1].y,stroke:'#0f172a','stroke-width':2.5,'stroke-dasharray':'8 6',class:'cb-geo-shape' + (selected ? ' is-selected' : '')})); const mid=midpoint(obj.a,obj.b); drawLabel(group, obj.label, mid.x+8, mid.y-8); }\n                    if (obj.type === 'rect') { const x=Math.min(obj.a.x,obj.b.x), y=Math.min(obj.a.y,obj.b.y), w=Math.abs(obj.b.x-obj.a.x), h=Math.abs(obj.b.y-obj.a.y); group.appendChild(createSvg('rect', {x,y,width:w,height:h,fill:'rgba(37,99,235,.08)',stroke:'#2563eb','stroke-width':3,rx:4,class:'cb-geo-shape' + (selected ? ' is-selected' : '')})); drawLabel(group, obj.label, x+6, y-8); drawLength(group, `${Math.round(w)} \u00d7 ${Math.round(h)} px`, x + w\/2 - 24, y + h\/2 + 4); }\n                    if (obj.type === 'circle') { group.appendChild(createSvg('circle', {cx:obj.c.x,cy:obj.c.y,r:obj.r,fill:'rgba(14,165,233,.08)',stroke:'#0891b2','stroke-width':3,class:'cb-geo-shape' + (selected ? ' is-selected' : '')})); group.appendChild(createSvg('circle', {cx:obj.c.x,cy:obj.c.y,r:3,fill:'#0891b2'})); drawLabel(group, obj.label, obj.c.x + obj.r + 8, obj.c.y - 8); drawLength(group, `r = ${Math.round(obj.r)} px`, obj.c.x + 10, obj.c.y + 4); }\n                    if (obj.type === 'triangle') { const pts=`${obj.a.x},${obj.a.y} ${obj.b.x},${obj.b.y} ${obj.c.x},${obj.c.y}`; group.appendChild(createSvg('polygon', {points:pts,fill:'rgba(34,197,94,.10)',stroke:'#16a34a','stroke-width':3,class:'cb-geo-shape' + (selected ? ' is-selected' : '')})); drawLabel(group, obj.label, obj.a.x+8, obj.a.y-8); if (data.lengths) { let ab=midpoint(obj.a,obj.b), bc=midpoint(obj.b,obj.c), ca=midpoint(obj.c,obj.a); drawLength(group, describeLength(dist(obj.a,obj.b)), ab.x+8, ab.y-6); drawLength(group, describeLength(dist(obj.b,obj.c)), bc.x+8, bc.y-6); drawLength(group, describeLength(dist(obj.c,obj.a)), ca.x+8, ca.y-6); } if (data.angles) { drawAngle(group, angleAt(obj.b,obj.a,obj.c)+'\u00b0', obj.a.x+10, obj.a.y+16); drawAngle(group, angleAt(obj.a,obj.b,obj.c)+'\u00b0', obj.b.x+10, obj.b.y+16); drawAngle(group, angleAt(obj.a,obj.c,obj.b)+'\u00b0', obj.c.x+10, obj.c.y+16); } }\n                    if (obj.type === 'text') group.appendChild(createSvg('text', {x:obj.x, y:obj.y, class:'cb-geo-label'}, obj.text || 'Text'));\n                    root.appendChild(group);\n                });\n                if (data.draft) {\n                    const d = data.draft, g = createSvg('g');\n                    if (d.type === 'segment' || d.type === 'line') g.appendChild(createSvg('line', {x1:d.a.x,y1:d.a.y,x2:d.b.x,y2:d.b.y,stroke:'#94a3b8','stroke-width':2.5,'stroke-dasharray':'6 4'}));\n                    if (d.type === 'rect') g.appendChild(createSvg('rect', {x:Math.min(d.a.x,d.b.x),y:Math.min(d.a.y,d.b.y),width:Math.abs(d.b.x-d.a.x),height:Math.abs(d.b.y-d.a.y),fill:'rgba(148,163,184,.08)',stroke:'#94a3b8','stroke-width':2.5,'stroke-dasharray':'6 4'}));\n                    if (d.type === 'circle') g.appendChild(createSvg('circle', {cx:d.c.x,cy:d.c.y,r:d.r,fill:'rgba(148,163,184,.06)',stroke:'#94a3b8','stroke-width':2.5,'stroke-dasharray':'6 4'}));\n                    if (d.type === 'triangle') g.appendChild(createSvg('polygon', {points:`${d.a.x},${d.a.y} ${d.b.x},${d.b.y} ${d.c.x},${d.c.y}`,fill:'rgba(148,163,184,.06)',stroke:'#94a3b8','stroke-width':2.5,'stroke-dasharray':'6 4'}));\n                    root.appendChild(g);\n                }\n                svg.appendChild(root);\n                updateButtons();\n            }\n            function svgPoint(evt){ const pt = svg.createSVGPoint(); pt.x = evt.clientX; pt.y = evt.clientY; const result = pt.matrixTransform(svg.getScreenCTM().inverse()); return clampPoint({x:result.x, y:result.y}); }\n            function setTool(tool){ data.tool = tool; data.selectedId = ''; data.draft = null; setNote(tool === 'select' ? 'Objekte anklicken und ziehen' : ''); render(); saveLayout(); }\n            toolButtons.forEach(btn => btn.addEventListener('click', () => { if (btn.dataset.tool === 'clear') { data.objects = []; data.selectedId=''; data.draft=null; render(); saveLayout(); return; } setTool(btn.dataset.tool); }));\n            toggleButtons.forEach(btn => btn.addEventListener('click', () => { const key=btn.dataset.toggle; data[key] = !data[key]; render(); saveLayout(); }));\n            svg.addEventListener('pointerdown', evt => { const p=svgPoint(evt), hit=getObjectAt(p); if (data.tool === 'select') { if (hit) { data.selectedId = hit.id; data.drag = {id:hit.id, x:p.x, y:p.y}; } else data.selectedId=''; render(); return; } if (data.tool === 'eraser') { if (hit) { data.objects = data.objects.filter(obj => obj.id !== hit.id); data.selectedId=''; render(); saveLayout(); } return; } if (data.tool === 'point') { data.objects.push({id:uidGeo(), type:'point', x:p.x, y:p.y, label:nextPointLabel()}); render(); saveLayout(); return; } if (data.tool === 'text') { const t = prompt('Text eingeben:', 'Text'); if (t) { data.objects.push({id:uidGeo(), type:'text', x:p.x, y:p.y, text:t}); render(); saveLayout(); } return; } if (['segment','line','rect','circle','triangle'].includes(data.tool)) { evt.preventDefault(); data.draft = data.tool === 'circle' ? {type:'circle', c:p, r:1} : data.tool === 'triangle' ? {type:'triangle', a:p, b:p, c:p} : {type:data.tool, a:p, b:p}; render(); } });\n            svg.addEventListener('pointermove', evt => { const p=svgPoint(evt); if (data.drag) { const obj=data.objects.find(item => item.id === data.drag.id); if (!obj) return; moveObject(obj, p.x-data.drag.x, p.y-data.drag.y); data.drag = {id:obj.id, x:p.x, y:p.y}; render(); return; } if (!data.draft) return; if (data.draft.type === 'circle') data.draft.r = Math.max(4, dist(data.draft.c, p)); else if (data.draft.type === 'triangle') { data.draft.b = {x:p.x, y:data.draft.a.y}; data.draft.c = p; } else data.draft.b = p; render(); });\n            function finishDraft(){ if (data.drag) { data.drag = null; saveLayout(); return; } if (!data.draft) return; const d=data.draft; let obj=null; if (d.type === 'segment') obj={id:uidGeo(), type:'segment', a:d.a, b:d.b, label:nextPointLabel()}; if (d.type === 'line') obj={id:uidGeo(), type:'line', a:d.a, b:d.b, label:nextPointLabel()}; if (d.type === 'rect') obj={id:uidGeo(), type:'rect', a:d.a, b:d.b, label:nextPointLabel()}; if (d.type === 'circle') obj={id:uidGeo(), type:'circle', c:d.c, r:d.r, label:nextPointLabel()}; if (d.type === 'triangle') obj={id:uidGeo(), type:'triangle', a:d.a, b:d.b, c:d.c, label:nextPointLabel()}; if (obj) data.objects.push(obj); data.draft = null; render(); saveLayout(); }\n            svg.addEventListener('pointerup', finishDraft);\n            svg.addEventListener('pointerleave', () => { if (data.drag) { data.drag = null; saveLayout(); } });\n            svg.addEventListener('pointercancel', () => { data.drag = null; data.draft = null; render(); saveLayout(); });\n            resizeStage();\n            setTool(data.tool || 'select');\n            render();\n        }\n\n        function fitWidgetToContent(el){\n            const body = el.querySelector('.cb-widget-body');\n            const header = el.querySelector('.cb-widget-header');\n            if (!body || !header) return;\n\n            const resizeHandle = el.querySelector('.cb-resize-handle');\n            const handleSpace = resizeHandle ? 18 : 0;\n            const headerHeight = header.offsetHeight || 56;\n\n            body.style.height = 'auto';\n\n            const desiredHeight = Math.ceil(headerHeight + body.scrollHeight + handleSpace + 8);\n            const maxHeight = Math.max(140, board.clientHeight - el.offsetTop - 12);\n\n            el.style.height = Math.min(desiredHeight, maxHeight) + 'px';\n        }\n\n        function createWidget(type, cfg = {}){\n            const presets = {\n                text: {title:'Text', x:30, y:30, width:380, height:260, html:`\n                    <div class=\"cb-richtext\">\n                        <div class=\"cb-formatbar\">\n                            <div class=\"cb-format-row\">\n                                <button type=\"button\" class=\"cb-format-btn\" data-cmd=\"bold\" title=\"Fett\"><strong>B<\/strong><\/button>\n                                <button type=\"button\" class=\"cb-format-btn\" data-size=\"12px\" title=\"12 Pixel\">12<\/button>\n                                <button type=\"button\" class=\"cb-format-btn\" data-size=\"16px\" title=\"16 Pixel\">16<\/button>\n                                <button type=\"button\" class=\"cb-format-btn\" data-size=\"20px\" title=\"20 Pixel\">20<\/button>\n                                <button type=\"button\" class=\"cb-format-btn\" data-size=\"24px\" title=\"24 Pixel\">24<\/button>\n                                <span class=\"cb-format-sep\"><\/span>\n                                <button type=\"button\" class=\"cb-format-btn\" data-cmd=\"insertUnorderedList\" title=\"Aufz\u00e4hlung\">\u2022 Liste<\/button>\n                            <\/div>\n                            <div class=\"cb-format-row cb-format-row-colors\">\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#111827\" style=\"--cb-color:#111827\" title=\"Schwarz\"><\/button>\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#2563eb\" style=\"--cb-color:#2563eb\" title=\"Blau\"><\/button>\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#dc2626\" style=\"--cb-color:#dc2626\" title=\"Rot\"><\/button>\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#16a34a\" style=\"--cb-color:#16a34a\" title=\"Gr\u00fcn\"><\/button>\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#ca8a04\" style=\"--cb-color:#ca8a04\" title=\"Gelb\"><\/button>\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#9333ea\" style=\"--cb-color:#9333ea\" title=\"Lila\"><\/button>\n                            <\/div>\n                        <\/div>\n                        <div class=\"cb-editor-wrap\">\n                            <div class=\"cb-text-editor\" contenteditable=\"true\">Hier schreiben\u2026<\/div>\n                        <\/div>\n                    <\/div>`},\n                timer: {title:'Timer', x:360, y:30, width:340, height:405, html:`\n                    <div class=\"cb-timer-chalk\">\n                        <svg viewBox=\"0 0 220 220\" aria-hidden=\"true\">\n                            <circle class=\"cb-timer-chalk-track\" cx=\"110\" cy=\"110\" r=\"86\"><\/circle>\n                            <circle class=\"cb-timer-chalk-progress\" cx=\"110\" cy=\"110\" r=\"86\"><\/circle>\n                        <\/svg>\n                        <canvas class=\"cb-timer-dust\" width=\"220\" height=\"220\"><\/canvas>\n                        <div class=\"cb-timer-chalk-inner\">\n                            <div class=\"cb-timer-chalk-face\"><\/div>\n                            <div>\n                                <div class=\"cb-big cb-timer-chalk-time\">05:00<\/div>\n                                <div class=\"cb-timer-chalk-label\">Countdown<\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"cb-timer-adjust\">\n                        <div class=\"cb-timer-step\"><button type=\"button\" class=\"cb-timer-step-btn\" data-adjust=\"-1\">\u2212<\/button><div class=\"cb-timer-step-label\">1<\/div><button type=\"button\" class=\"cb-timer-step-btn\" data-adjust=\"1\">+<\/button><\/div>\n                        <div class=\"cb-timer-step\"><button type=\"button\" class=\"cb-timer-step-btn\" data-adjust=\"-5\">\u2212<\/button><div class=\"cb-timer-step-label\">5<\/div><button type=\"button\" class=\"cb-timer-step-btn\" data-adjust=\"5\">+<\/button><\/div>\n                        <div class=\"cb-timer-step\"><button type=\"button\" class=\"cb-timer-step-btn\" data-adjust=\"-10\">\u2212<\/button><div class=\"cb-timer-step-label\">10<\/div><button type=\"button\" class=\"cb-timer-step-btn\" data-adjust=\"10\">+<\/button><\/div>\n                    <\/div>\n                    <div class=\"cb-row\" style=\"margin-top:12px\"><button class=\"cb-btn cb-start\">Start<\/button><button class=\"cb-btn cb-secondary cb-pause\">Pause<\/button><button class=\"cb-btn cb-secondary cb-reset\">Reset<\/button><\/div>`},\n                names: {title:'Namensauswahl', x:30, y:280, width:380, height:430, html:`<div class=\"cb-row\"><select class=\"cb-select cb-class-select\"><\/select><\/div><div class=\"cb-name-result\">?<\/div><div class=\"cb-sub cb-name-sub\"><\/div><div class=\"cb-row\" style=\"margin-top:12px\"><button class=\"cb-btn cb-pick-name\">Ziehen<\/button><button class=\"cb-btn cb-secondary cb-clear-name\">Leeren<\/button><button class=\"cb-btn cb-secondary cb-toggle-manage\">Klassen<\/button><\/div><div class=\"cb-class-panel\" hidden><div class=\"cb-row\" style=\"margin-bottom:8px\"><input class=\"cb-input cb-class-name\" placeholder=\"Klassenname, z. B. 8a Mathe\"><\/div><div class=\"cb-row\"><textarea class=\"cb-textarea cb-class-names\" rows=\"8\" placeholder=\"Ein Name pro Zeile\"><\/textarea><\/div><div class=\"cb-row\" style=\"margin-top:10px\"><button class=\"cb-btn cb-save-class\">Speichern<\/button><button class=\"cb-btn cb-secondary cb-new-class\">Neu<\/button><button class=\"cb-btn cb-secondary cb-sync-classes\">Neu laden<\/button><button class=\"cb-btn cb-danger cb-delete-class\">L\u00f6schen<\/button><\/div><div class=\"cb-manage-note\">Serverseitig gespeichert. Alternativ auch im Backend unter <a href=\"${escapeHtml(serverData.adminUrl || '#')}\" target=\"_blank\" rel=\"noopener\">Werkzeuge \u2192 Classroom Board<\/a>.<\/div><\/div>`},\n                                classstatus: {title:'Klassenliste', x:430, y:280, width:520, height:430, html:`\n                    <div class=\"cb-classstatus\">\n                        <div class=\"cb-classstatus-toolbar\">\n                            <select class=\"cb-select cb-classstatus-select\"><\/select>\n                        <\/div>\n                    <div class=\"cb-classstatus-actions\">\n    <div class=\"cb-classstatus-buttons\">\n\t\t<button class=\"cb-btn cb-secondary cb-classstatus-sync\">Neu laden<\/button>\n        <button class=\"cb-btn cb-secondary cb-classstatus-reset\">Reset<\/button>\n        <button class=\"cb-btn cb-secondary cb-classstatus-sort\">Alphabet<\/button>\n    <\/div>\n    <div class=\"cb-classstatus-summary\"><\/div>\n<\/div>\n                        <div class=\"cb-classstatus-list\"><\/div>\n                    <\/div>`},\nnoise: {title:'Lautst\u00e4rke', x:440, y:280, width:320, height:210, html:`<span class=\"cb-status-pill cb-noise-status\">Zum Aktivieren Start klicken<\/span><div class=\"cb-meter\"><div class=\"cb-meter-bar\"><\/div><\/div><div class=\"cb-row\"><button class=\"cb-btn cb-noise-start\">Start<\/button><button class=\"cb-btn cb-secondary cb-noise-stop\">Stop<\/button><\/div>`},\n                draw: {title:'Zeichenfeld', x:780, y:280, width:380, height:330, html:`<canvas class=\"cb-canvas\"><\/canvas><div class=\"cb-row\" style=\"margin-top:10px\"><button class=\"cb-btn cb-secondary cb-draw-clear\">L\u00f6schen<\/button><\/div>`},\n                todo: {title:'Arbeitsauftrag', x:30, y:740, width:430, height:270, html:`\n                    <div class=\"cb-richtext\">\n                        <div class=\"cb-formatbar\">\n                            <div class=\"cb-format-row\">\n                                <button type=\"button\" class=\"cb-format-btn\" data-cmd=\"bold\" title=\"Fett\"><strong>B<\/strong><\/button>\n                                <button type=\"button\" class=\"cb-format-btn\" data-size=\"12px\" title=\"12 Pixel\">12<\/button>\n                                <button type=\"button\" class=\"cb-format-btn\" data-size=\"16px\" title=\"16 Pixel\">16<\/button>\n                                <button type=\"button\" class=\"cb-format-btn\" data-size=\"20px\" title=\"20 Pixel\">20<\/button>\n                                <button type=\"button\" class=\"cb-format-btn\" data-size=\"24px\" title=\"24 Pixel\">24<\/button>\n                                <span class=\"cb-format-sep\"><\/span>\n                                <button type=\"button\" class=\"cb-format-btn\" data-cmd=\"insertUnorderedList\" title=\"Aufz\u00e4hlung\">\u2022 Liste<\/button>\n                            <\/div>\n                            <div class=\"cb-format-row cb-format-row-colors\">\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#111827\" style=\"--cb-color:#111827\" title=\"Schwarz\"><\/button>\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#2563eb\" style=\"--cb-color:#2563eb\" title=\"Blau\"><\/button>\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#dc2626\" style=\"--cb-color:#dc2626\" title=\"Rot\"><\/button>\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#16a34a\" style=\"--cb-color:#16a34a\" title=\"Gr\u00fcn\"><\/button>\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#ca8a04\" style=\"--cb-color:#ca8a04\" title=\"Gelb\"><\/button>\n                                <button type=\"button\" class=\"cb-format-color\" data-color=\"#9333ea\" style=\"--cb-color:#9333ea\" title=\"Lila\"><\/button>\n                            <\/div>\n                        <\/div>\n                        <div class=\"cb-editor-wrap\">\n                            <div class=\"cb-todo-editor\" contenteditable=\"true\"><strong>Arbeitsauftrag<\/strong><ul><li>Aufgabe 1<\/li><li>Aufgabe 2<\/li><\/ul><\/div>\n                        <\/div>\n                    <\/div>`},\n                clock: {title:'Uhr', x:440, y:520, width:260, height:170, html:`<div class=\"cb-center\" style=\"height:100%\"><div class=\"cb-clock\">00:00:00<\/div><\/div>`},\n                geometry: {title:'Geometrie', x:900, y:360, width:640, height:520, html:`\n                    <div class=\"cb-geometry\">\n                        <div class=\"cb-geometry-toolbar\">\n                            <button type=\"button\" class=\"cb-geo-btn\" data-tool=\"select\">Auswahl<\/button>\n                            <button type=\"button\" class=\"cb-geo-btn\" data-tool=\"point\">Punkt<\/button>\n                            <button type=\"button\" class=\"cb-geo-btn\" data-tool=\"segment\">Strecke<\/button>\n                            <button type=\"button\" class=\"cb-geo-btn\" data-tool=\"line\">Gerade<\/button>\n                            <button type=\"button\" class=\"cb-geo-btn\" data-tool=\"rect\">Rechteck<\/button>\n                            <button type=\"button\" class=\"cb-geo-btn\" data-tool=\"circle\">Kreis<\/button>\n                            <button type=\"button\" class=\"cb-geo-btn\" data-tool=\"triangle\">Dreieck<\/button>\n                            <button type=\"button\" class=\"cb-geo-btn\" data-tool=\"text\">Text<\/button>\n                            <button type=\"button\" class=\"cb-geo-btn\" data-tool=\"eraser\">Radierer<\/button>\n                            <button type=\"button\" class=\"cb-geo-btn\" data-tool=\"clear\">Alles l\u00f6schen<\/button>\n                        <\/div>\n                        <div class=\"cb-geometry-options\">\n                            <button type=\"button\" class=\"cb-geo-toggle\" data-toggle=\"grid\">Raster<\/button>\n                            <button type=\"button\" class=\"cb-geo-toggle\" data-toggle=\"labels\">Beschriftungen<\/button>\n                            <button type=\"button\" class=\"cb-geo-toggle\" data-toggle=\"angles\">Winkel anzeigen<\/button>\n                            <button type=\"button\" class=\"cb-geo-toggle\" data-toggle=\"lengths\">L\u00e4ngen anzeigen<\/button>\n                        <\/div>\n                        <div class=\"cb-geometry-stage is-grid\" data-tool=\"select\">\n                            <svg class=\"cb-geometry-svg\" viewBox=\"0 0 640 360\" preserveAspectRatio=\"none\"><\/svg>\n                            <div class=\"cb-geo-note\">Objekte anklicken und ziehen<\/div>\n                        <\/div>\n                    <\/div>`},\n                mode: {title:'Arbeitsmodus', x:730, y:520, width:420, height:500, html:`<div class=\"cb-mode-display\"><img decoding=\"async\" class=\"cb-mode-main\" src=\"\" alt=\"\"><\/div><div class=\"cb-mode-options\"><button class=\"cb-mode-thumb active\" data-mode=\"ruhe\" title=\"Ruhe\"><img decoding=\"async\" src=\"${escapeHtml(\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAASsAAAErCAYAAACGpKW0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACOgSURBVHhe7d17lBxXfSfwb1VXdfVrumf0sCzJI4zX4BcPRSZjLMvJcpQQFk68eL2xwSYKJOCFMCFipXjWJIs3JCDkSKxymBCCzyZnfTYGs2tMhM3DsRe8SDJMjBFrsxj8wjMehCxpnv2q7qrq\/WO6x9O3e3q6q6u66\/H9nNNnNLe7R49RfefeW797rzR96kwFREQeJ4sNRERexLAiIl9gWBGRLzCsiMgXGFZE5AsMKyLyBYYVEfmCxDorAgBJkhCRZcgRuf6jJEGWZUiyBFmSINU9AKD28RWVCgBUUKkAlUpl+WFVKqhYFViWBatSgWlZsEyr7mNl6c1EDRhWISIBUBQFihJZekQiiERkRJQIIrI3OtmmZcE0TJimBcM0YRi1hwH+Rw03hlVAybIMVVWgKpHqx6WQ8jPDMFE2DJTLBsqGiXLZgGVZ4ssooBhWAaEqCqJRBVFVhar6P5jaZVRDq1Quo1QyUDYM8SUUEAwrn1KUCLRoFFpURTSqQPbIMK7fLMtCqWRAL5Whl0owDFN8CfkUw8onJEmCpqnQolHENBWRSDh6Tt0yTRNFfSm4dL3MCXwfY1h5mCzLiMWiiGlLD+peUS8tPYolznf5DMPKY2RZRjwWRUzToGmq+DQ5SNfLKOo6CgwuX2BYeUQ8piEe0xCLsQfVD8ViCYWijkJRF58ij2BY9ZGqKkjENcRjMciyUFlJfWFZFRSKReQLOspl3ln0EoZVHyTiMSTiGqJRDvO8rFQqI1\/QkS8UxaeoDxhWPRKJRJBMLIUUywz8xbIs5As6cvkiTJOlEP3CsHJZVFWQSMSRiGviU+RD+YKOfL6AEoeIPcewcommqUgm4iw5CKiiXkIuX4Cul8WnyCUMK4fFtCiSyTg0zkeFgl4qI5croKiXxKfIYQwrh2haFCmGVGjppTKyuQJ0hpZrGFZdikZVpJIc7tGSol5CNldAqcThodMYVjYpSgSpZIIT59RUvqAjm8tzIbWDGFYdkiQJA6kEUsm4+BRRg2yugMVsnguoHcCw6kAiHsNAKoFIhHVS1D7TtLCYzbO4tEsMqzaoqoJ0KsmFxdQVXS9jIZvjMh6bGFZrSA8kOeQjR2VzBSws5sRmWgPDahUxLYr0QDI02wNTbxmGiYXFHOuzOsDJF4EEIJNOYd1QmkFFrlGUCNYNpZFJp8D9NtrDntUKmhZFhr0p6jHDMDG\/mGNB6RrYs6pKDySxnr0p6gNFiWD9UBrpgaT4FK0Q+rBSFQUb1mU4iU59l0rGsWFdBqqiiE9R2MMqkYhh44ZBboJHnhGNqti4YRCJREx8KvRCG1aZdAqD6ZTYTOQJg+kUMvz\/WSd0YaUoEWxYP4gkf3KRxyUTMWxYP8h51KpQhVU8pmHj+kFEVc4JkD9EVQUb1w8iHuOC+dCE1UAqgaHBAUgSq1rIXyRJwtDgAAZSCfGpUAlFWA1mUqH\/RpP\/DaQSGMyEdx4r0GElyzLWr8sgEef8FAVDIh7D+nWZUJ6QFNi\/saou1U9xm2EKGi2qLtVjhWzuNZBhpWkq1q\/L8C4KBZaiRLB+XSZU2xYFLqziMQ3rhzKQOZHelnvuvR+TU9NiM\/mALElYP5QJzZ3CQC1kTiZiLKRr0+TUNLaP7F7+\/OTEI9g2vLXuNeQf8wtZ5PLB3ok0MD2rVDLOoOrAF798f93nx05M1H1O\/pJJpwK\/vjUQYZVKxrlivUtTL3Eo6HdB39XW92E1kEowqGwYvqB+yDfFeatASA8kA1tT6OuwGkglAvuNcZs4P8VJ9uAI6nXh27BKJeOB\/IYQOSGIZ1v6Mqw4R9U99qyCL2hzWL4Lq2QixqByAMMqHNIDycBsh+SrsIrHNJYnOIiBFQ6ZdCoQhaO+CStNUzE0OCA2E1EbhgYHfL80xxdhpaoKhgbTYjN1iT2rcBkaTPt68bPnw0qWZQxlBrjWzwViWB1\/jFXsQSZL0tK15NPtZTz\/px4aHODuCS7ZefVI3efHueQm8BQl4tvpFE8vZB7MpLhxnsu2j+yuG\/5xQXM45AtFzM1nxWZP82zPaiCVYFD1gBhMXNAcDol4zHdF1Z4Mq3hM890\/pF9ds7N+KHiC81ahMZBK+KqkwXNhpSiRUG+K32vXCPNW3IwvXAYzKd\/MCXsurAYzPC6rl3btHGkYCjKswkOSJAxm\/DHh7qmwyqRTPIC0D3YJQ0GWMIRLVFV8sTLEM2GVSMQCs4bJb8QShi9yKBg6yUQMCY9ff54IK1VRMOiDZA+qm2+6vm4oODk1zbuCITSYTkFVvDuy8URYZdLcRaFdp0+fwWf++u9w8+99CL\/9734Xe\/\/k4\/jWP39HfFnH3n3T9XWff0nYo53CwcvXYt+LQoO2546b\/vFLX8F\/vO0OlMtlSJKESqUCVVVRLpfx2+94K77wuUPQolHxbW2ZnJrGdTfsqRv+jR85gJuFEKPgy+YKWFjMic1919eelaZFGVRtOvrgQ\/ijj34M5XIZAFCpLP2MqX3+wNcfxu\/9wR\/VvacT24a3Nky0s3cVTqlkHJpm74eem\/oWVhKADDfRa9sdn7hTbKpTqVh46OFHcc+99gPmXTfW96KOnZjo6uuRf2UGkvBaAVHfwiqd9k8xWr\/9n2Pfw4uTL4nNDWRZxle++qDY3LZdO0cahn3sXYWTokSQ9thNr76EVUyLskyhA888+7zY1JRlWXjyqafF5o6wd0U1yUQMMQ8NB\/sSVtxDvTNKB7eTFaW7b2mz3tWdh8dZdxVSXrpWu\/ufbUN6IMnhX4ded\/klYlNTiqLgTVduF5s7dtu+0Ya6K\/G4eQoHRYl4JrB6GlaqqvDunw1X7ngjdux4w5o9LMMwcNO\/\/7dic8e2DW9tqLs6eIi9q7BKJeOe2A65p2GVTnkjof3ok3f8J5imhUiLLWn33PI7ePvbdovNtowJvSsA7F2FmBeu3dX\/5zssEY\/5\/nSNfrpqZAfu\/\/Lf48ILh4HqEqWVP+1GP\/T7OHLoL1a8o3vsXVGNpql93wyzJxXskiThvA1DiER6lo2BdvTBh\/CDJ36EfL6AV184jLf+5ltw8UUXii9zhLjt8a6dIxg\/cqCh10XBZ5oWXj47u1yQ3Gs9CSsuqfGvYycmcN0Ne+raxvaPYmzfaF0bhUM\/l+K43tVRlAiDysealTJwOBheqWS8b3fzXQ+rVJJ7qfudWMoATraHWr+uaVfDKhpVkYj7Z0N6ao6lDLRSIq4hGu39zTJXw4rDv+BoVsowuvf2us8pPPpxbbsWVpoW9dS6Iure+JEDdZ9z3WB4xbRoz7eRcS2s+pG85K5mk+1cNxhevb7GXQmrmBaF1ocxLblPnGznusHw0qJqT0dProRVsseJS73DyXZaqZfXuuNhpWkqe1UB12yynb2rcNKias+W0TkeVslE75KW+oe9K6rp1TXvaFhFVaWnY1jqn2a9K5YyhFNMi\/bkJHVHwyrRo4Qlb2ApA9X04tp3LKwikQir1UOmWSkDD5gIp0RcQyTi7ppBx8KKB0CEk1jKwN5VeLmdAY6FFXtV4cTDUanG7QxwJKwS8RjkFtvtUrA1613xzmD4yLLs6m6ijiSM24lK3tasd3Xn4fG6zykc3MyCrsNKVZW+bBdB3iIejnrPvfezdxVC0ajq2kk4XYeVm0lK\/rFr50hD3dWxExN1n1M4uJUJXYdVPObeGJX8RaxqP\/EYwyqM3MqErsIqHtMgy5LYTCF1zdX181YcBoaTLEuIx5zvXXUdVkQ14iQ7wyq83MgG22ElyzJiMa4DpFcwnKgmFos6Xs5k+9zAZCKGTDolNlOIXXfDnrpJdSfPF5ycmsbk1DSOPzaBqeqvaxP6O69uXPZD\/Te\/kEUuXxSbbbMdVuuHMj3bx4a8TwwqVBc6OxEizQ5aFdU2BXQqHKl7ul7Gudl5sdk2W\/00WZYZVASsCBIxqJotcrbj4OHxNYMK1Z7XwUPjDcfdU\/9omuroUNBWzyqRiGGQQ8DQG917e9NFy9uGt+LkxCNic8eahWA7tg1vxdH77m6o+6Lem1vIIu\/QUNBWWK0bSnOTvRA7eHgcBw81X06za+cIjt53t9jcsdV+j7H9oxi+YOtyEE1OTTc9YcepwKTuFPUSZmYXxGZbOg4rSZKwedN6sZlCYLUAqXFqQr3ZHFWr3lLthB3xz+bUn4e6c+r0OVQqHcVMUx2HVSwWxbrBtNhMAbbacK9m184R3LZvtKHOyi5x+NduL0kM01YBR70zM7eAYrEkNnes49kvLcrhX1iM7r0d6zZf2jKoxo8cwNH77nYsqNBkTaG4ffJq3n3j9XXBVCt3oP5yKjM6DqsY7wIG3sHD422F1Myppx2547eSGFS7do60HYS18oWVjnN9Yt85lRkdhZWiRFzfZ5n6q1YCsBq3QqpG7Al1OoQT1ycet3E3kZwViUSgKN3nRkdh5VR3jrxrtcNK3Q6pGnGnhp1C+KxFDDcx\/Kg\/nMiODsPKme4cedfwBY09mZMTj7geUhRsTmRHR2EVjbqzAyB5x8031U9So3p3jj0U6oYT2dF2WKmK4mjpPHmXOEm9WuElUbtkWYaqdBdYbaePE8lI\/jC2bxRj++uLKe+59\/5V57OI2tFthrQfVmr3Y07yjzHheC0AOHhovKG0gKhd3WZI22Hl1okV5F3Nqr85f0V2dZshbYWVLMuO1EmQv6y2XIWBRXYoSqSree+23tltIpJ\/NasKry0cJupUN1nSXlixVxVqY\/tGG+qsptizIhu6yZL2wqqLNCT\/u+fe+xvWCQ53uAyGCF1mSXth1WV9BPnXPffej9G9t4vNeLdwXDxRO7rJkjXDSqpOjFH4rBZUzSbdidqhKBHYPRZ5zbBSukhC8q9WQdXuli1EzdjNlDbCir2qsDl2YoJBRa6xmykMK2og7n8OBhU5yG6mrB1W3GwvVJoVe44fOcCgIsfYzZQ1wyoSWfMlFCDbhl855qqGOy6Qk+xmyprvitjsspF\/NatY3z6yu6HWisgOu5nSMqwkSUKki7U85E\/NKtZRPe3mIHtZ1KWILEOSOi9gaJlEDKrwGj9yoGFPK1S3ieG6QOqWnWxp+Q7Z5tiSgmFs3yjGjxxomMM6eIi9K+qOnWxp+Q476UfBcvNN1zc9ZJSb8FE37GRLy3fYST8KnmYHhbKUgbphJ1tavsNO+lGwHDsx0XDoabPyBqJO2MmWlu+QbczYU3BMTk03VLNvG96KkxOP1LURdcpOtrQOKxvpR8FQq60SNZu\/IuqUnWxp+Q5J7jz9KBiaLWTmshtyip1saRlWdrpq5H+je29vuNs3tr95oSiRHXaypWVY2akyJX9rtoXxrp0jGNvXWCBKZJedbGFY0bLJqemG4V\/tOC4iJ9nJFoYVLROX0Wwb3soJdXKFnWxZI6zEFgqy48I81W37RjmhTq6wky0tw2rpuAgKC3G9H4OK3NN5trQMKzvpR0S0FjvZ0jKsiIi8gmFFoTI5NY3JqenlEo1jJyYahr\/kTQwrCoWDh8cxuvd2bB\/Zje0juzG693aM7r0d192wZ7lNrC8jb2kZVpWK2ELkP9fdsAcHD423DKNajdl1N+xhT6sH7GRLy7ACbHxFIg+ZnJpuWDrUyrETEwysnug8W1qGlZ30I\/8SL9Ag71m1bXjrqmsdm22NQ86yky1rhJWNr0jkUbt2juDofXdj5tTTODnxCMaPHFj+tRjMzZYekXPsZAvDioAQ9KrG9o\/i6H13Ny10ra1\/FJ87dmKioyEktc9OtjCsCGiyLjBIjt5395q7RtTWQa4MrMmpadx5uH5L58mpaRw8PI7rbtiDdZsvxbrNly7fXWw1gU\/17GRLy7CybHxBCgbxVGa\/qIVObZ\/4Zj2m1Wwb3op33Vj\/917Zu7rn3vuxfWQ3Dh4ar+tx1eq2aqURYi+VGtnJlpZhVbE6\/4LkP5NT0w2HQlxzdXsXuBfdfNP1ODnxCE5OPNJ2UNXcfNP1De\/50peXgqidOaza5DwDqzU72dIyrCzLEpsogMQh4LbhrQ0XbJjcJgwZm21I2AoDa212sqV1WNnoqpG\/NOtV+XUI6JRdO0dahvW24a0Y2z+KmVNPL99NHNtfH3Asf2jNTra0DCvTRvqRv4hDm23DW9ecjA4Dce6qpjYntvLfqPZv1iywVuuRTVaLVcO6NtFOtrQMK8vs\/AuSfzQ7GCLsvaqaZj2rbdUzE5s9BwDvvrFxvmvl3cTancTaHcTrbthTtzbxoHDnMcjsZEvLsLKTfuQPzW6182CIVzSrcF9ri+dar2ulWkAdOzGxfCexmdpwPCyhZSdbIvv23\/ZfxMYaCRKSybjYTD533Q178OA3609V3ja8FY8+\/NW6tn74+jcfwZM\/fnr587e\/7Tfw+tddVveaXnndFZchk0lD6uDMxEwmDUj1W0RPTU3j83e1d+jG\/MIipqamMb+w2Nbv51fZbKHjeSv2rEKkVickDv1q9UhUrzYX1UmtFqrDwZWazUnV7rg2+7q1XpbY8w0SO9nSMqwqlYqtL0recs+99+O6G\/ZgdO\/tDRfOyiJKckazIeRKY\/tHcXLiERy9724cve\/upncTIcx3BYlpWbYq2KXpU2davmvDugyiUVVsJhfVfqJOvdT4E7kdU9VAWutO067qwl4vEefSxo8caHnhe9Xk1DS2j+wWm1v20mpV8Cv59e\/fSqlUxtmZebF5TWuG1VBmAPG4JjaTC46dmGja+3HDzTdd3zAZ7AVBCStU5wZXDrlbBVXNwcPjdZPwtTuQQVIo6JidXxSb19RyGAgAhmmKTeSCXlU915aieDGogqY2KV+bE1wrqLDKfJc4x+h3djNl7bAy7H1h6oyb8xO1XlQtpDg\/1Ru1kGpVmyVqNt91\/LGAhZXNTFlzGKgqCjZuGBSbyWHrNl9a9\/munSO4ps3\/4KLhC5bCaFt15wE\/hVOQhoF21bZWrvHi3GI3zpydQ9kwxOY1rRlWEoDN528Qm8lhYljNnHql1ihMGFaNk\/NBm7c69cuzNnZgb2MYWOmi20ZEnavVYNVMVs86DALDMG0FFdoJKwC2umxEZN\/KhdQ333S9r4byrXSTJe2FVdn+b0BEnVt51zZId267yZL2worDQOqBZpvctXsXLYia3Rn0u26ypL2w6iINidrRrHq7VqNEwdFNlrQVVpZlcZKdXNMsqNBke2HyN8MwbW1nXNNWWKHLRCRazWpB1W7FN\/lHtxnSdliVymWxiagrDKpw6TZD2g+rUnepSLQSgyp8us2QtsOqbBhdjTeJamq7S4gYVMFlWVZXNVboJKzgQDIS1XaXEDGogs2J7OgorPRSd2NOIvaowsmJ7OgwrEpiE1HbxM3owKAKDSeyo6OwMgwTps2Nsyjcagd6rrRrlQMTKFhM03SkTrOjsAKAot59d47CR9xcMGh7NNHqnMqMjsPKie4chY\/Yq2JQhYdTmdF5WDmUkhQe4gnDQVucS605lRkdh1WlUkFRdyYpKRy+KOyksHKvJgq2ol6ydUZgMx2HFap\/AKJ2iGcXclI9XJzMCnthVXTuD0DBJm7Ha\/cQDPInJ7PCVlhZluXYOJSIgknXy44u0bMVVgBQ1HWxiYhomdMZYTusCg5276j+DtnYfm46R\/7ndEbYDivLshwdj4bdbftGMbZ\/FONHDmCMO2SSzxWLJUeHgOgmrACgUHS2mxdm24a3YmzfaOBqkMQ91I8LxaEUTG5kQ9dhZVnO1FBQMIlh1WyNIAWLZVW8F1YAUCgWxSaiZeLpwgBw\/DGGVZC5lQldh1W+4HyCUrCIFescCgabW5nQdViVywZKDmysRcEl9qzEQlEKjlKp3PUpNqvpOqzgYpJSMIhDQYZVcLmZBQ6FVdHx25QULONHDiyfsMztYYLJsizkC+7MVwGANH3qjCO389IDSaSScbGZiEIimytgYTEnNjvGkZ4VAOTy7iUqEXmf2xngWFiZpunqeJWIvCtf0F0\/n8GxsAKAfL4gNhFRCPTi2nc0rEplw9HNtojI+4p6CSWXyhVWcjSsACDXg4QlIu\/o1TXveFjpetmR01eJyPv0UrlnG3E6HlYAkMv1JmmJqL96ea27ElZFvcTeFVHA6aVyT+eoXQkrVAvEiCi4en2NuxZWul7qaeoSUe8U9RL0Hl\/froUV+pC8RNQb\/bi2XQ2rUqnMqnaigMkX9L5sC+VqWAFANpcXm4jIx\/p1TbseVoZh9qXLSETOy+YKMAx31wCuxvWwAoDFbB6myf2uiPzMNC0sZvvTq0KvwqpSqfT1L0lE3VvM5lGpOLL9nS09CStUdxPtVVk+ETlL18uu7gLajp6FFQAsZN3bRZCI3OOFa7enYVUuG5xsJ\/KZbK7g2ok1nehpWAHAwmKub3cTiKgzhmG6uq96J3oeVqgGFhF5n5eu1b6EVVEvub65PBF1J5cvemp9b1\/CCgAWFrIcDhJ5lGGYWFjIis191bewqgCY91AXk4heMb+YQ\/8qqprrW1ihuo0M7w4SeUs2V+j59i\/t6GtYoTqB148V3ETUqFQqe2pSfaW+hxUAzC948x+HKGy8fC16IqzKhoE5j03mEYXN3EIWZaP\/xZ+r8URYAUA+X2Q5A1Gf5PJF5D1+\/XkmrABgfiHbk5NdyV1P\/fhpXHXt2\/Gpg3\/N8hQfKJUNzPtgZOOpsAKAufnFvm5DEUR3\/48vY93mS1s+3vHO9+CnP3tWfKstL02fwjPPPo\/Hvv84dJ3bWntZpVLB3Pyi2OxJngsrwzAxN+\/9lPeT7008ITY1eOz7j+PXdr8TX\/v6P4tPUYDNzfunONtzYQUAhaLOzfpc8KYr34jHT3wLPzn53brH\/7znLmzdshllw8Cf\/+VfYfoXp8S3UgAtZvMoFP3T8\/VkWKH6D9nvzb6CRotGsem8jdi0qf6x+y3X4guf+ytEVRXPvzCJ\/\/vkT8S3dq2o6zh9+gxmZufaGubncnmcPn0Gp0+fQa5PBxQEWb5Q9F2HwLNhhWoXlcfQ98ZFF74K5523AQDws2eeW27\/xrf+N84bvgJ\/8\/l\/WPHqVxw68rc4\/1VvwDcf+rb4FABgYWERY3\/6F9hy4Rtx2fZrcfHlb8abdv4WnnyqeSC+\/PJZvO\/WvRi+eAcu234tLtt+LYYv3oH33boXL798Vnw52aCXyr6cavF0WAHA7Nyib8bUfmZa5vKhHplMern9Z888B8Mw8eP\/99MVr37F88+\/iFKp1HRy\/tzMLG557x\/irr\/\/RyQScaiKAgB44eeTeP+H9uEXp35Z9\/qpl36Bd7zzFvzT174JANiwfh0Gq3+Wf\/raN\/GOd96CqZd+Ufce6oxhmJid88eEusjzYWVZFmbnF2G1MXQg+46dmMCpX55GJp3GVb+6Q3zalqd\/+ixM08Jjjz6Al577IX45+ST+2+c\/A1mW8cyzz+P4Y\/+y\/NpisYjbPvYJPPfCi7j6qjfhqSe+g589dQLPPz2Bxx59AK+\/4jI898KLuO1jn0CxyOkBO6xKZelasvx50pTnwwrV7ZBn5xbEZuqQXirh9MtL80ArHw89\/B386ccPAAA++pFbceklF4tvtSWqqjj06TtwyWuXvp4kSfg3b9uN3W+5FgDwgyd+tPza7008gYcefhSbNm3EZ\/\/rJ7Fl8\/nLz13y2ovxD3cdwaZNG\/HQw4+2dXeTGs3OLXhie2K7fBFWqJ6u4dfuq1c8\/oMf4U07f2t5Lqj2eNfvfhAzs3P42Ngf40O3vheSJIlvteWKyy\/Ba15zUV1bTNOwft0QUN3TrOaJHz6JSqWCbcNb8eRTP8HRB75V93j8iR9hIJVCpVLBEz98csVXpHbMzi36\/nQp34QVqiUNfqi09SpZlrH5\/E3YumXz8mPTpo1AtTjw3i9\/Fb88\/bL4NttWzlOt5dnnXgAA\/MvjJ\/G+W\/fivR\/447rHB0dvW37NzyenhHdTK\/MLWV+VKKzGV2GF6homr25h4XVXX3UlJo59A0\/+4NvLj5+c\/C6e+8n3ce01V+G5F17EwUOfbau0wC1XXH4J9txy46qPW\/\/gPfjIh98vvo1WsbCYC8yaW9+FFaqbgzGwnDM0mMH7f\/89AIDnX5hsWtdkmEZDiBV1HedmZuva7NqyZRMA4KJXvwqHPn0Hjhz6RNPHp\/\/yz3DxRReKb6cmFhZzgdrc0pdhhWpg+a2ozctqw7WXpn9RF1a1Mobnnvs55hfq5wwXFhbx8xeXhmRbtrwyIW7Hrp1XQZIkPPiNh3Hs+PfFp4FqOBa51rAti9l8oIIKfg4rVL8hDCxnnHfeBsRiMZybmcWpFfNWV\/3qDmTSafzwR0\/h81\/478tlA\/l8AUc++wU88+zzyKTTeN3ll674ap1788gOvPU3fh2WZeGW9\/0h\/tdXHoBpLtXXmaaJR779Xbx+x7\/Gb779RszMzolvpxWCel34OqxQ\/cZwSNgeRVFWvdN38UUX4orLL0GhUMR\/+PCfLBdsXnrJxfjoR24FANz5mb\/Blldvx7bXXIkL\/tWv4PN33Q04VO4Qi8Vw56c+jksvuRiFQhG3fng\/Nl5wBV77up3YeMEV+J2bP4BzM7O48lfeiIFUSnw7VS0s5gIZVAhCWIFzWGv69V+7GtFoFG98wxVIJOLi0wCAdHoAd37qP+P888+ra5ckCR+69b04+Mk\/w8DAUkhks0v\/1hvWr8NdnzuMD3\/wfXUhuGXLJgxm0rjs0tdC07Tl9po3j+yALMt4\/esvq2sfvmALvvW1L+GDH9izPCw9e24GWPF7HT54B1S1vTuMYRO0OSqRNH3qTP9u\/TgsmYghk+ZPXbdUKhXMzs2jXCojFtPqluU4zTRNzMzOwTItqFEVQ4OZVXuFtFSeEJS7fqsJVFgBQDymYWhwQGwmCqzZucVA1FGtJRDDwJUKRR3nZue5lpACz6pUcG52PhRBhSCGFapLc87NzHO3BgoswzBxbmbe90toOhHIsEJ18fPZmXnuh0WBo5fKODsz7+tFyXYENqxQ3V7m3Mw8dxylwMgXijg3M+\/bbV66Eeiwqpmbzwa29oTCYzGb9+UOn04JRVih+o2eneMxX+Q\/SyUji6H\/gRuasEL1TuGZc3M8SJV8o1Q2cObcXGju+LUSqrBC9S7K2XNzgS+gI\/\/L5Ys4e26Od7WrQhdWNfMLWcxxIz\/yqLmFLDeaFIQ2rAAgny\/izNk5lFjeQB5RKpVx5uwc8uz5Nwh1WAFA2ViqxwryAlDyh2yusFQ\/ZXBOtZnQh1XNwmIO52YXOD9APWcYJs7NLnDnkDUEbiFztyQA6XQKyURMfIrIcbl8EQsLWfAiXBt7VoJKdfJ9hr0scpFhmJiZXcA8g6pt7FmtIT2QRCrZfMM6Iju4WaQ9DKs2qKqCdCoJTVPFp4japutlLGRzoVuA7BSGVQcS8RgGUglEIhw9U\/tM08JiNs8F9V1iWHVIkiQMpBIcGlJbakfGcU1q9xhWNilKBKlkAol444EIRPmCjmwuz5s0DmJYdSkaVZFKxhHTouJTFEJFvYRsrsBVES5gWDlE06JIJePQopyEDyO9VEY2V4Cul8SnyCEMK4fFtCiSDK3Q0Etl5HIFFBlSrmNYuUTTVCQTHB4GVVEvIZcvhOrAhn5jWLksqipIJOKciA+IfEFHPl\/gBo59wLDqkUgkgmQihkRcgyyzTstPLMtCvqAjly\/CNHl3r18YVn2QiC+FVpTzWp5WKpWXelIs5vQEhlUfqaqCRFxDPBaDLEvi09QHllVBoVhEvqBzWYzHMKw8Ih7TEI9piMU4Id8PxWIJhaLOgxk8jGHlMbIsIx6LIqZpXDjtMl0vo6jrKBRLoTw01G8YVh4myzJisShi2tKDulfUS0sPBpTvMKx8QpIkaJoKLRpFTFMRiUTEl1ATpmmiqJehl0rQ9TIXFPsYw8qnFCUCLRqFFlURjSosh6iyLAulkgG9tBRQXEgcHAyrgFAVBdGogqiqQlUVKEo4el6GYaJcNlAql1EqGTwZJsAYVgElyzJUVYGqRKof\/R9ghmGibBgolw2UqyHFeafwYFiFiARAqYaWokSgRCKIRGRElAgiHhlGmpYF0zBhmhYM04Rh1B4GD1YIOYYVAdUJ\/IgsQ47I9R8lCbIsQ5IlyJIEqe4BALWPr1iaw66gUgEqlcryw6pUULEqsCwLVqUC07JgmVbdR06A02oYVkTkC97o+xMRrYFhRUS+wLAiIl9gWBGRLzCsiMgXGFZE5AsMKyLyBYYVEfkCw4qIfIFhRUS+8P8B1mYiKw6ONRwAAAAASUVORK5CYII=\")}\" alt=\"Ruhe\"><\/button><button class=\"cb-mode-thumb\" data-mode=\"fluestern\" title=\"Fl\u00fcstern\"><img decoding=\"async\" src=\"${escapeHtml(\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAASgAAAEwCAYAAAAEguzvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAADC4SURBVHhe7d17dFxXfS\/w77yfmtHDdmwrEk1IiJ0QcKAR4CgtweW2lNbUGGJswAQWySJUgLtsItJL2kAXGOXaXHOjQAq3za1zrxOH67qYAglgHkVRLmppTEKoIY+CbMWxZb1Gmvfr\/qE5ysxv9syc58w5Z36ftWYpc2bmzIyc\/dXe++yHY+rcdBGMMWZCTnqAMcbMggOKMWZaHFCMMdPigGKMmRYHFGPMtDigGGOmxQHFGDMtDijGmGk5eKBme3I4HHA5nXC6nJU\/HQ44nU44nA44HQ44Km4AIP18WbEIAEUUi0CxWFy5FYpFFAtFFAoFFIpF5AsFFPKFip\/F5RczJsQBZWMOAG63G263a\/nmcsHlcsLldsHlNEflOV8oIJ\/LI58vIJfPI5eTbjnw\/5iMA8omnE4nPB43PG5X6edyMFlZLpdHNpdDNptDNpdHNptDoVCgT2M2xgFlUR63G16vG16PBx6P9cNIrlwpqDLZLDKZHLK5HH0KsxEOKItwu13web3weT3wet1wmqSJ1mqFQgGZTA7pTBbpTAa5XJ4+hVkYB5RJORwO+Hwe+Lxe+H0euFztUUPSKp\/PI5VeDqt0Osud8BbHAWUiTqcTfr8Xft\/yjWmXSmeWb6kM919ZEAdUizmdTgT8Xvh9Pvh8Hvow01E6nUUqnUaSw8oyOKBaJOD3IeD3we\/nmlIrpFIZJFNpJFNp+hAzEQ6oJvJ43AgGfAj4\/XA6yWhH1hKFQhHJVAqJZBrZLF8RNBsOqCYIBvwIBnzwerkJZ2aZTBaJZBqJZIo+xFqEA8ogLpcLoeByMPGQAGspFApIJNOIJ1LI53nYQitxQOnM63EjGAwgGPDRh5gFJZJpJBJJZLj51xIcUDrx+TwIBQM8PMCmUukM4okk0uksfYgZiANKI7\/Pi1AoAB\/3L7WFdCaLeDyJVDpDH2IG4IBSyefzIszB1LbSmSyW4kmkOagMxQGlkNfrQTjETTm2LJXOYCmeRCbDTT8jcEDJ5Ha7EA4FufObCSWSaSzFEzxZWWccUA04HA50hIMIhwL0IcaqLMWTWFxK8CRlnXBA1REM+NERDsLl4nFMTL58voDFpQQP+NQBB5SAx+NGJBziybtMk3Q6i9hSnKfQaMABRUQ6QtycY7paiicRW4zTw0wGDqgSv8+LSEeobZbOZc2Vy+URW4zz+CmF2r5zxQEgGgmjuyvC4cQM43a70N0VQTQSBq9jIV9b16B8Pi+iXGtiTZbL5bGwGOdBnjK0bQ0q0hFCD9eaWAu43S70dEUQ6QjRhxjRdgHlcbuxqjvKHeGs5cKhAFZ1R+Fxu+lDrKStAioY9GP1qk5eOI6ZhtfrwepVnQgG\/fQh1k4BFY2E0RkJ08OMmUJnJIwo\/\/9ZxfYB5Xa7sKqnEyH+C8VMLhT0Y1VPJ\/eLlrF1QAX8Pqzu6YTXw218Zg1ejxurezoR8POkdNg5oDrCQXR1dsDh4FEnzFocDge6OjvQEQ7Sh9qOLQOqMxrmf1xmeR3hIDqj7d0vZauAcjqd6OmOIhjg\/iZmD8GAHz3d0bbdGcg239rjWR7fxEvwMrvxeT3L46XasC\/VFgHl83nQ0x3lqx\/MttxuF3q6o223BJDlAyrg96GnKwond4Yzm3M6HOjpirbVFT5LB1Qo6EdXZwc9zJitdXV2tM24PssGVDgU4JG3rG1FI+G2mE9qyYAKhwI8E5y1vXZY\/dVyAdURDnI4MVYS6QjZesyfpQKqIxy09T8GY2rYuVxYJqDCoYBt\/xEY08quezdaIqC4z2nZ5JkpTJ6ZoocZA2zaJ2X6gAoF\/RxOAIb23IlNA1uwaWALhxSrKdIRstUQBFMHVMDv46EEpZrTkaPHV+7fc3C04nHGykUjYdsM5jRtQPl8Hh6EWUJrTPQ+Y1RXZ4ctpsWYMqA8Hje6OiP0cNvq7+utuM8BxeTo6oxYfoKx6QLK6XSiK9rBc+vKcEAxNZwOx3JZsvBSLab75F2dHbwqgQCHFFPD7XZZuqvEVAHVGQ3zek6M6czn9Vh2ZU7TBFRHOMgrYdbBNSimRTDgt+RAZ1MEVMDvs+Qvr5k4oJhWHeGg5YYftDyg3G6XZaufjFlNZzRsqT7elgdUZ5S3hpJj85sGKu6PPzFRcZ8xORwOBzqj1uk0b2lARSNh3lRTJW7iMbW8HrdlZmg4ps5NF+nBZggG\/ei0yC\/JLLrXbai4f2riZFXfFGNyzceWkEik6GFTaUkNyuN2czipQMNobJybeUy9zkgYHre5WzAtCahohFcnUGPnjm0V97kfimll9rLY9ICKdITg5cGYqtxAOsrLVzhgTA2v12Pq5YyaGlA+n9d2C2o10+DmgapmHneWM63CoQB8Pi89bApNCygHgKiJk9oqBjdX1qIeeoRrUUy7aEcIZhzs07SAikSsNUDMrOh4qMe5o5zpwO12IWLCC1dNGWbg93nR3cXrO+mFhxswo8zOxZBKZ+jhlmlKDcrMnXBWRMOIm3lML2Yrq4bXoOy404QSv372efz4J0\/gwoWL6O7pwg1vuh6vefXV9GmKHDl6HEN77qw4xrUoppeleBKxxTg93BKGBpTH48bqnk56uC0Ui0Xs+eRf4cH\/83UAgNvtRj6fR7FYxLZ3\/DEOjtyNzqj6Zi\/d3WV43xCG9w5VPIcxtaZn5pHN5ujhpjO0iRcJm6u62Ezv3nXrSjgBQC6XQ7G4\/LfgxLcew5+9+xbkcvmyVyhDB22OHBjlIQdMN2Ypu669++64mx7UQzDgb9um3ZdGv4b\/9eBRenhFsVDE+QvTSCSTeMubB+nDsgxuHsBDjxzHQmxx5Vg0GqkahtAKR44ex7cfO4mHHzmOp585vXI8qqHGyJrL7XYhny8gm2ttLcqQJp7D4cCaVV1wuQytoJnWa6+\/CZNnzzUcVxIMBnD2+SfpYdlGDo5i5EDlHnmt6ouaPDOFew6O1h3dPrxvCDtv3taSz8eUy+cLuHBxbqXm3wqGJEhHONi24TR9cQZnzp6Do2E8AYlEEs\/88lf0sGzDe4eqCrtRV\/TGxidqNiEnz0xhaM+ddcMJpWbo0J47a56HmYvL5Wz5Sre6p4jb7Wrbph0AZLPZ0n\/J+6uTWXm+Okb1RUmhs2lgC7rXbcDW7buxaWALtm7fjZGDle8xtOdO2SsrjI1PrITo2PhExZbu0vuMHByVfT5mrHAo0NIB1ro38TqjHQgGrLXusd76rngd4vEEPSz0n6cnNPfN6H1FTzSMQeTUxEmg9P7Urh3b0NfXi8dLNS8amoObBxqG0K4d23CHoJbImiuRTGN+4eW+zmbStQbl9XraPpwA4F3b\/gRuV\/2\/Oh6PB2\/\/oz\/QHE7QuRYlN5xQCib63P6+XsyeO43RQ\/sxvHcIJ44dxoljh6tCplE4ofRZjGqyMvmCAV\/LViDRtQbV3RWB36SzopvpxXMv4ca3vAOLS0s1hhI44HI58INHj+HaV2+kD6pCa1GDmwcwemh\/VTDUM3lmSlgbQul8opoQdeLYYeGVxMkzU9i6fXfD14uMHtqPXSSEWXOl0hnMzsXoYcPpVoPy+bwcTiXr163Fww\/+LdavvQQoXdUs19UVwZF\/+Ipu4YRSIS5X3tcj1z0HK68I9vf14sSxw5g9dxonjh3GqYmTGN5Xu8k1uHlAGE4onavW66Rzz547LTz\/wwq\/B9Of3+dtyZIsuo2D6oyGGzZr2knv+rW47cPvR7RzuQnn9Xpx9dVX4Zb33Yyv3ncAGze8ir5Ek\/6+Xpw5O1Ux7ujMmSn8sYJm5Ps+WNlv9eAD91UFzuDmASzEFoWrKOzcsa3q+eUmz05VvU6qcUmfcXDzACKRCL796HL\/Fkq1r507tsn+HswYLpcTyWSaHjaULjUov8\/LW5YLOJ1O3H7rB\/D1I1\/DEz\/+Z3zjkQew52O3oaPDmGUtaIfy5Jkp2bUo2vTq7+utGTai4Q1q1HqPXTuqx0rRz8eaz+f1NL2VpEtAhdp4WIGZ9Pf1qu4wp0FGz0OJHm905ZDWnkTnkIiCi7Ves8u65oDy+TxcezIRUe2GXmnTQ9+lle9B31OEXrmja6zXIydkmfF8Xg98vuaVd80BFQo2N1FZY3eQmszY+ETDUd60dtMoPM6crR7XVA8NmFrNu3qkq4j0XKy5mlnmNQWU1+NuepuUNbZrx7aqy\/L3kNHfFK3dyKkRletr8Hx6fqXuOTi6MuJcuvG0mdbw+7xN2xFcU0AFm5ikTBklHeaiQt4ooLTWuOr1P0HwmUT3jxw9jk0DWzBChkcw4zWr7KsOKJfLxaPGTUxLh3mjcIKgRtSouUYDjfZhUfT89YwcGOWQarJgwAdXE4YVqQ6oUNBPDzGTkdthTsOAvoaiIdfo+RC8B22ClqPnp0TvJzd8mX6akQGqA4prT9ZAa1Fj4xNVYUGbXzc0qA0pDQL6fFHAlKPPR2kCtDTa\/NTESeFYqVpNWGaMZmSAqoAKBvxwOlW9lDVZrVqUKATkevwJZc07Ghz081Ci89PvMXpof1X40sX7mLGcTieCAWNrUapSphnJyfRDVxOgHea0f6hRhzfV6Aoe1aiGRtV6vmh1Ti3By5QzOgsUB5TH427Z0gtMHVGH+UNHj68UZtrka1QjUhpoRj2fhhM4oJrO6\/XAY+CQA8UBZXRiMmPQ2oZUi1JToJUE2uSZKUXPh8Lz05BS832YNkZmguKACviNbXMyY4hqUSMHRvHiuZcqjtECT9EAaPR8qtHzlZ6\/0ePMeEZmgqKACvh9cDobbwbAzIl2NAPA6FceqLhPH6dogDRCO8hpSFK09tTo8yjt\/2L6czodCPiNqUUpDihmbTQgvv3o9yvu1+qQloiusNVD+5MaUTrkQen5mTGMygbZAeV0OuH387w7qxPVorRoVIOhNaJaHd4SGjiNRpzTGp2e343J5\/d7DRl6JHtN8lDQj2jEmIXWWHOJNvyU1FpTXLJ1++6K0Kn3\/EnBGuez515e8VOke92Givt6P18NqaN\/\/InKHWrKw7G\/bEnj\/r5evKd0UaKdAnMhtoR4IkUPayI7oHq6ok1dB4YZi26yIGlUwJUEwtj4BLZu371yv7+vd2WrKhEaaEqfjwafR4kjR49j\/InlUfei35Ncg5sHcMPmgaqrqHaUTmcxM7dAD2siq07mdDo5nGxGVOtpVIBoQW30fNpfRfu\/KHr+RujzG30eOaQVEqSdkul7KDU2PoGRA8tLxajd1cYqfD6P7s08WWfjvif7ec\/N9cNCRGnhov1JjSgNNPp8UejKdeTocWzdvlvzNKB6xsYnbL+Old5ZIS+geFE62xncPIDu7q6KY9e99tUV9ymlgUA7yJWuWa5Uow57kcnSfn2Ntm\/ftWMbRg\/tX9kiS5q4LN1OTZxc2aR0eN9Q3d9N+TpWdgsqvbOiYUA5HA7d35SZQzgUrLgfJPcbqRcItODJaX7RgFB6xa\/R8ympRkPfVyKFkrRT8q7Stlqizu\/+0hLG0sRmKchGD+2vGVYjB0ZtV5vy+7xV+0Bq0TCguO\/JvmZn5yrur1m9quI+pSQQ6ABNWqApUSGtVbAlNFgaPb8c7cAvt2vHtpVwqbduVSP9fb3YtWNbze3fUfY5RN\/fqvTMjMYB5eXakx2NjU9gKZ6oOPbX\/3VvxX1KSyA0GnBJC6ioMJdT+vxyQ3vuFIbT4OYBnDh2WPGW8XIMbh5YaQbSc0+WrkbS369V6ZkZDQPKr2MaMnMQ1R623HRjxX1KaSAoqW1Bh\/6tRp9HIl2do4b3LTfLGr2vVlJQid7HLjUpPTOjbkC53a6mrDvMmke6WkV9YuhWeqiC0oJDA0RUIOup178FFVNiUPruonA6cexwww58vUmd6VSt8WlW4nK54Hbrkxt1A0rPqhprLanWJFqTXE7NgdZw6g0BoAVMTu1GcY2LPL\/RlJix8Ymq797f1yvruxtleO8QhvdVTz2yQ01Kr+xoEFD6VdVYa0iX0ekUFUm9q0xq0Q5yOeenn63Ra5Q8X\/odlOvv6zXkuys1vHeoKuwnz0w13MfQ7PTKjroB5fUat1IeM9bkmSkM7bmzZuerVHuQe5WK1ljq1XDOkILVqLlGCyKtUVCi59d7Da05waBgVkuqSZU7cvR4VdBbiV7ZUXMunsftxupVnfQwM7mx8Qk8\/Ii4r0Uije9RgvaN1JvzRufrNWpG0cnL0tW0Wmgnf3+dOXv03CiFk9xgpibLVggdLzV7pQC+4U3iMVJy0d8xAJyaOKn6fK02fXEe2VyOHlakZg1KrwRkzSEV2q3bd9cMJ6ngKw0nkCZUvbChBQwNni\/SqMNbSX8YDSfRtvCNSLXR7nUbVqaqSFcDjxw9vrxx6IFRbN2+W9OcO1EYtXstqnZAefRpQzLj1etjQlkwNarJ1CPVOhrVvmjBpAVOREnzEYImZC2i3YbrfXYRqZlcK\/RFxjTMuaNha+UNSfXIkJoBZeRODUw\/RgdTudFD+xsOYlRSu5HQz9\/os9ICKwq0yTNTVbUn2s9Tz9j4BLrXbVAUTJQ0pIN+3npECwreIwhaK9AjQ4QB5XQ6dRvHwIxT3h9STu9gUoLWhhqhhZcWThH6nUXfkTaN+vt6ZY91on1cVHlNcvTQ\/pXJwaLPPlkaJa4k6O4gn1OPZV9awe12aV5+RfhqPZKPGU\/0P60090tUaJuBhsfOBsu60OeLCnk5+p1rPZ8GpZyaHGoMSUDZsARp4nB5k7d8cvAJwVQW1BnBLrJLsK07\/T1ZhdYsEQcU154sQfRXu5V\/ben7yrmipXREuKhmRIlqlo2CEnXCaXjfEE5NnJTVuT5Ymsoieq6SPikaqNIVQ6vRmiXigNKYeqx5RH+xlfZ76IWGAv1cIrSmo5Qo0Oh3lxOUKIUffe3wviHZTcNyUtOPvq\/cfxvar9bKPzxaaM0ScUC5tZ2UNU+\/YEPOydKuwc2mtDYEQajRgknRQBM9X01HPQRDEgZLazupVWuUuJx\/G1Ht2JIBpTFLqgLKUercYtYhGok8cmBUeJndSHLCo5yowDXqO6OBJnq+0s8BwZCE\/tJIe62G91avril36AB9HQ1eK3C7XdCyfF1VQLk1Jh5rDdHlabkFQS9ywqMc\/Wz081Nyn6\/0cwDAQ6QDm9Z8tBA1w+lnFNlMglXu+C+z0ZIpgoDi2pNViQqC3D4PPZS\/N\/0cIrRG0CgUjPoek2V73Um0NO1EaEg+LKOZZxdaMoUDykZa3R91orTG0a7SkrmNKK0RyAk0GjRygpLWZmhzWQ+0NkQ\/pwj97HJeY0ZaMqU6oHiBOkur1R\/VDP2lwZByp5PQAteor4j2LemFdkjLGZKgFB12QL+7iG0CSkOmVAWUy1V1iFkMLcj0f3SzoDUX2gyi6PNFgUYLsZzv3l9aDUEabCnnNWrQ89LPSil9vllpyZSqV7o0VMdYa02WBhrSgixqCrUaLWy0MFL0+ZARaErRmhTTh5ZMqQgoh8MBl8a5M6w1JktLgtBw0jqWxyiiz6lEuwRJ+fe06nd2OZ2q98qrSCMOJ2uqF056jOUxAi1sjVbdpB39SgPNqqSVPxstc2N2arOl4lVODW1F1jpWCyeUPp9U+EYP7Vdcy6sVaDT4RE1DK5H+HaXflVWpzRauQVncyMFRy4WTRFp5gV7hEqEd\/6IOcggCipmD2mzhGpTF0YJrlXBSShTCckwKBmG2Cv0c7RSmarOFa1A2Y6YCqRf6fRoV7EaPG0lap1xaKli60Y0kWvkZW0FttlTWoFT2tLPWoSsGTKpYwXFsfELYVDQL+rkaFW5au6KvN4I0xKN8QwXpjwUNWJh06IeR1GZLZUCpTDnWOsN7l6eWUEN77sSIjM0fpYIl7UpCZ\/WbgdJlXOi0EqMXexsrbZIgNwjNOvTDSGqzpeJVDqe6lGOtJS2ORo0cGBUuwlaOFippmZZ6r2k22s\/WCK1hGbnYmxTwcg3vW14euN2ozRZu4tmENAeOFs6RA\/WbbqLR0yMHRhUtT2s0+vlrXcGTiL4TPYde6PgslAJy9NB+nJo4WXGbPXe67WpOErXZUlmDUnkSZg7SZXtaOOs1caTCRF8zVtrZpNUhJXp\/2sckQvt4jFjeZFKwtdVg2Zrk\/aWlhqVbO1ObLRxQNkQLda1BjRJpaAItRFLzhZ6vmeh7089Yy86bK3dGGRufUHThQA5ae+rXaRVOO1KbLRxQNjO05056SNbyIf2lGf00ACabuJ6UCF0DSk7tCaXvQ5+rd7OVrmdFa23sZWqzhQRU+T1mNaKVDEQ7i9Qj2jKpUT9WMzWqDZa7Q7AM8j06XgCg52nUN9bO1GYLufan8iys5UTjmNRezhb1Seld+5CLXsFTEgL9ghVGjxw9rluNUPT7ZrWoyxauQdnA2PhEVWet1v4Q2ifVqqae1hCotauK1vFeNKxpoLNKarNF3egpZhqicThawwk1ah\/N3iWGvpfaEBDVCEcOjGrqNKfno5+V6YMDysJE4YQaBVIN0VZWzaxF0doT\/SxySYFNX6+12UrPp+VcTIwDysJEHb56rxt0B+nDovvHGUnpFJd6pBohDRUtwyjoudSeh9VWEVDFYvk9ZmaTZ6aqmii7dmyrugKnlTTgUDJZY\/KrEWgHed+l6mpQklpbkasNKRpQdEgEe5nabCE1KJVnYU1Hm1r9pRHhRqA1sns0djDLpVcTr5xoW67J0pLJSkOKTkpudh+dtajLFq5B2QStGeiJFkQjJ99K6Pn7BQMv1RKF1Nj4RFXoN0Jrlyj94aCfnanPFhJQKs\/CbE1UEI1mdCEXXQBQM\/yA\/mEYOTAq7Btsd2qzhQOKyUILs9EFkPbn0CDQg2hqj9KQEgWdtKLm2PiE4b8nq1CbLRxQTBZaCI0ueHSem1FEww+UTu0RnUNaDUJaXbPdqc2WioAqqDwJY3qjAahkiosS\/TXGSCm5slfrHCgFlWhbsHajNlsqa1AFdSdh9kcn6dIxSnqjBVqvDnKRfh3GSEkhVau\/jjZZ243abKmsQRUK5XcZW0HHIBnZBKOhICrwetNjjFR\/aajH6KH9VUElZ8kbO1ObLdzEY7LQkJBbaNWgl\/vpextFNPxgUsUk6cHSbsknjh3GiWOHhZ3x7UZttlQEVF5lyrHmo6OsjeqjkdB1vrVMO2mE1s6MfC9KtEuO0it7kv7S2K12DydoyJbKGlRe3UlY8y0sLNJDhpMWgNu1Y5uqdabkole9mt08Ek225lHi2qjNFq5BWdTTz\/xHxX1aoIywa8c2nJo4adiUGgg6x\/tbtOGAKKSUNvXYy9RmC9egLIgWYgDYNLDFFn\/h6Tw\/2nHdLIObB6rem2tR6qnNFq5BWVCtS9ZKrjiZ0dj4RFX4Nrt5V040Spx+PiaP2mypGkmu9kSsOSYFe7FJJlXOyjcD6ZJ+OTN0MNPxV\/X2GGRi+UJBn5HkAJDP5ekhZiK0HyQa7ai4r2ZWvhnQph1K\/UCtJlrJgSmjJVOqA0plW5EZb0ywOcJHbv1A1V95q\/WViOarKd0uyyhm+AxWpyVTqgIql1efdsw4oiZQf18vhvcOCa84WaU\/ShRO0vcyA1Ez0wq\/VzPRkinVAaWhOsaMIQonlDWB+ktTLMoLkpoR0M1WK5zM0LRj+tGSKRxQJjc2PiEcQkA3RxBdFn+oCStfqiEFbq1wok1WZm1aMkUQUDl6iLXIyMFRYc2p1uYIO2+u3uDAbJfFjxw9jk0DW4Sfi8PJnrRkSlVAFTUmHtNOKsS0QxxlE1FF+gWbbT5somaetIAb1V9aqoTDyX5yubzK7RKWOabOTVe9vquzAwG\/jx5mNUxq2IpJet2Zs1MNm2TSMh71TJ6ZwqaBLRXHWj2bXlq0TfTdBjcPaN4F2Wi0id3q36eVJFNpzM2rnzcqDKhwKIBIR4geZsTIwVFhLccISmoYW7fvrmhCyQk2o9T7HSn5Tq3EAaVebDGOpXiSHpatqokHAFlu4jVUr+DpaXjfEGbPnVZUkM1SeLZu3y38HQ1uHsCpiZOKvhOzJq1ZIg6orPpOrXYwWWe6iR527diG0UP7MXvutKrxQHT0cyumZ4wcFG88MLxvqOb63WZFP6voezExrVkibOIBwJpVXXC7XfQwq1F7UlsbkP7n7+vrRd+l+ixwNlbaUUTS7H4e+v4SqzTpKDpeq5VNZivJ5fK4cHGOHlakZkB1RTsQCHBHuYiZ+nhEaEA0M6BEnfTSVTqtwdsqNKCkGi6rL5lMY07jworCJh4AZLJZeojVYLaC18rPIxpGQEe5Ww1tMouuRqolBXr3ug2qlhU2Mz0ypHZAZbS1HZl56Fmg6hENDB3eN2TJZl05ukPL2PiEbmFSPmfSapO8G9EjQ2oGVDaXU71VDGtPdO5fv4km\/WpFQ1aPMBk5WH0OK9c0yxUKBWQ1jCCX1Awo6JSArPWa8T+96MrmHTYJJ5RtGFGu1uBTuR4SLDFjF3plR92ASme0tyFZ82kpNGqJak9munCgVb9gGlG9EfKNiJbDsUttEzpmR4OAytBDjAnRvexoYbaDWmuUi1ZmqIdeBYbNak\/QMTvqBlQul0dew2JTrDXoX2ZaqIxA39PojURbRTRcYrK0FvzW7btXBqjS34dU2+pet6EqnOzUVwcA+XxetwUH6gYUAKTS+lTVWPOcOVtZOPqaEFC00NFOZbuoN6ZrrLQk89btu7FpYMvKrXvdhpq1rP6+XpyaOEkPW5qemdEwoPSqqjFmF1KoNOpjm2ywyoUdwwk6Z0bjgNIxDVlz0P6gvkur\/9rriRZCUe3CjkYP7a9Zm2pk9NB+W4YTdM6MhgFVLBaRSuuXiMx4zQ6MZr+fmUgrM5w4dnhlUKro+w9uHqiYBN6o9mVVqXRG9R54Ig0DCqU3ZdbRzoHRKoObBzC8d3mlhlMTJzF77vTKz9lzp3Hi2GHTzdk0gt5ZIS+gUvq+KTNWeQd1f18vB1SLtOPvXe+skBVQhUJB13YlM5Y06nnXjm22Gs3NzC2dzuo+PU5WQAFAKp2mh5hJSVeH2qFJwczDiIyQHVBJnatujDF7MSIjZAdUoVDQvX3JGLOHVCqje\/MOSgIKpS1kGKNoR\/wNNh1FzmozKhsUB1ShoN8YB2YP\/aWZ\/lJI7byZ+73aSaFQNEdAAUAylaKHGMPw3qGVQYjteHm9nRmZCYoDKpE0JimZ9dl1gjCrz8hMUBxQ2WwOGZ0Wo2KMWVsmk9W89109igMKBiemFdBOYK45sHZldBbU3BevkbVruuF0qso3y5s8M4V7Srt6vOfmbRxQrC0VCgW8dGGWHtaV6oCKdIQQDgXoYcZYm1iKJxFbjNPDulJdBYonjOu5Z4yZXzMyQHVA5fN5w9ufjDFzSiTTTdmvQHVAAUAikaSHGGNtoFllX1NAZbI53ReoYoyZWyqdQcbAoQXlNAUUAMSblKSMMXNoZpnXHFDpdFa3XUQZY+aWzmSbunil5oACgHi8eYnKGGudZpd1XQIqlc5wLYoxm0tnsk3vc9YloFAatMUYs69WlHHdAiqdzjQ9XRljzZFKZ5BuQfnWLaDQooRljBmvVWVb14DKZLI8upwxm0kk0y1bYknXgAKApXiCHmKMWVgry7TuAZXL5VtWHWSM6WspnkQuZ\/ycu1p0DygAWFxKIJ\/Xfwsaxljz5PMFLC61rvYEowKqWCy2\/IsxxrRZXEqgWFS1XJxuDAkoAEgkU00dEs8Y0086nUUiafx6T40YFlAAEFsydrU9xpgxzFJ2DQ2obDbHHeaMWcxSPGnoTi1KGBpQABBbjLf0KgBjTL5cLm\/4OuNKGB5QKIUUY8z8zFZWmxJQqXSmKQusM8bUiydSpptP25SAAoBYbImbeoyZVC6XRyy2RA+3XNMCqghgwWTVR8bYsoXFOFo74kmsaQGF0pIsfFWPMXNZiidbspSKHE0NKJQ64Vo1M5oxVimTyZquY7xc0wMKABZi5v2FMNZOzF4WWxJQ2VwO8ybskGOsnczHlpDNmWNAZi0tCSgASCRSPPSAsRaJJ1JIWKD8tSygAGAhttS0HUrt7Pz5aWzdvhvv++CfIy5YXCyVTmP64gzy+eVhHvl8HtMXZ5BK8+qn7SiTzWHBIi2YlgYUAMwvLLZ8SQczmb44gze\/9Z3oXreh7m3v8N0r48rOnb+Anz35FJ56+pdYIpM8E4kkdr7\/I7jq2hsw+pW\/BwD87f88jKuuvQF\/+s7diMUWK57P7K1YLGJ+wTr\/5i0PqFwuj\/kFa6R5M0y9+BKeff4FerjKhQsXkcsrq33SRQQL+TwKGv84vHjuJfzJtvfjzrs+Z5oJpqy2+QVrDZh2TJ2b1vZ\/qE46wkF0hIP0cNs59dQzePufvRfFIvC\/HxjFNRuvok8BAEQ7I\/D7fEDZa3q6u\/C9bz2CSy5ZXfHceDyBeCKBrs5OeDxuZLM5zM3PIxQMIhTS9jt\/9Ls\/xK4P3I5Le9cJ35uZx+JSwnILSba8BiVZXEqYYoEss3A4gO7uLlxyyWrhTQonOUKhINasXgWPxw0A8HjcWLN6Vd1wkvqpzp+frui\/0iKVTuP8+WmcPz+NhYUYfbiuhYUYzp+fFvaxSco\/8+zcPHcdlEkkU5YLJ5gpoFCqfvIW6vr5zmM\/wJq+a3Df\/Q\/QhwAABw59BWtf8Ro8+t0frhwrFot47Hs\/wsbX3oirrr0BGzct\/+y74vW47\/4HVppx3\/rO9\/G6N74VH\/34MADg7NQ5vPkP34lrX38TPn33SEUzIpFI4i\/\/6vO49PLrsHHTjdi46UZctmEA\/+VPduC5F36z8jzJU7\/4JS67agB7h+\/G9MUZfPC2PbhswwA2broRA4Nvw28nzyKXy2Pv8N247KoBnHrqGfzox+O49ndvWvnMV1z9RvzR1p148dxL9PRtJ53JWrYbxVQBBQBz84uWaiOb2a+ffR65XB7P\/PJX9CEAwAsv\/BaZTAa\/+vVzK8d+\/C9P4L23fBQXZ2Zx7TUbsfu9N+O6174aqVQKd31mBJ8bOQQAeOKnP8NvfnsG82U1ofPnpzH14jk888vTyGSWp07EYot47y0fxf1fO4xCoYDOaASreroBAP\/2s5\/jrW+7Gf\/+5FMr5wCAF188j4VYDE+eehq3fPgT+Oa3vot1ay9BMBjA6lU9CAYDSKfT+PWzz2MhFsO9X\/47vGvXhzFzcRa969fB416uKf7rv53C3uG7kUq1b808l8tjbt46neKU6QKqUChgbmFRc+et1RWLwOzs3EqTSLpdmL5oWGd0sVjEkUf+EYVCAfv23I4ffe8fcejAZ3Hy0f+Lx775MHq6u7C4uNzJ+pm79uFXTz+OL\/+PLwAA1q5dg3\/5\/j\/hP079BA89eD+CwQCKxSK+cOBe\/PgnT+B3XtGHn5z8Bl44PYFf\/2Icv\/j3H+Ftf\/gWLMRiGPqLv8T0xRn6cXDqqWdw4cI0Jsa+g2ee\/DHOPv8kfvS9f8TqVT0Vz\/vGNx\/F3\/z1HTj7wik8\/bMf4uwLp7Bvz+0AgMef+Fc893x1La0dFIrF5bJUsO4OS6YLKJSWCp6bV9ZHYTepVArv2vnhlSaRdNvwmkF86LY9hoxhSiZTmJ5eDopQKAiHw7Hy2PW\/uwnPPvMEDo7cDbfbBZfLhdWretAZjQIA3KX75f1jzz73Ao5+\/Rvwejy470v7cc3VL3f4r1+3Fvf+98\/juk3X4vSvnsO3vvP9lcckDocDX\/jcp3H5Za+gD1XY9Z534tYPvb+ij23Xe96JNWtWYWkpjrNT5+hL2sLcfMywP2bNYsqAQmlXCStXTY20bt0lcLuWC6OegsEA3jjwegDA50e+hHu+eB8uTF+kT5PtV8++gLn5BfT2rsPkmSmc+OfHKm5jj\/90JczG\/9+\/VnVqv6L\/Ulz76o0Vx0RuvOENcLtdFcdWr+rBla+8rOJYO5mbX7TFrkqmDSgASKbSlhnxqrdAwI8fPHYMs+dOV93u+fxdVQVSL7ff9gFsuelGZHM5fOG\/3YsNrxnEZVcN4NN3j+D8+Wn69LpeKHWA\/+dvJnH7x4Zxy62fqLo98dN\/AwBMT88gSa7i9q5fi1Cw9pVGSUc4TA+1tYXYEpIp\/WvYrWDqgEJpzpCZl4Owm0ikAw8\/eD8ePfEQtr3jj+Fxu7EQi+HLf\/sA3vh7b6\/q0Jajd\/06vP+978bu994svH3oAzvxqU9+DMFggL6UKRRbjNtqjqvpAwqlBbU4pNTL5XNVzadUOo2Z2bmKYxKXy4WB66\/D393\/Rbz4m5\/j0RMP4bpN12IhFsPwpz8ne3rM+vVrAQBrVvfgM3d9EocOfFZ4O\/CFv8Ybrn8dfTlTKLYYt92CkJYIKJRCyooDzVopGo0AAJ5\/\/jdYIKESiy3iN789A5QFSSqVwkOP\/FPF2KTysFqzZhXOn79Q1RSr5bXXXo2uziie\/PkvcPwb36YPA6ULIomEvQpVKywuJWwXTrBSQMGiQ\/Vb6Q3Xvw7RSARP\/vwXuP+r\/7AyHiiRSOLQvV\/Fs8+9gGgkgldfvQEoXZL\/8098Cm992834wY\/GKmpd5146j\/m5BYRCIbhLV8sArPSFpVJpLMRiSCRe3vTxyisux453vwMA8Mk7P4tD93515TMUi0U8\/Yv\/wOBbtuK6N\/wBnnv+P1fOyZSxc7mwVECh9I\/BzT15Nlx1Bf7i47cBAO754n1Yf9km9F\/5elz6yutw\/9cOAwD+4uO3YcNVVwAArn\/9Jmy56UYsxGJ4184P45rX\/T4++vFP4R3v+gD+9J27kclm8b6d29HT3bXyHldecTnWrb0EF2dm8cbfezsufeV1uOszy2OjHA4HPrXvY9hy040oFAr47Oe\/iPWXbcKV17wJqy+9Br\/\/1m149rkXcPXGV2HN6lUr52TyxRbjtg0nWDGgYPM+qd71a3HlKy\/H5Ze9AmtWVw5IrGXN6h5cftkrsOGqKxEOh1aOOxwO3H7bLRj53KfR0bF8pUtajmVVTze+9uWD+POPfHBlvFMk0oEH\/\/5efOauTyIaieClly7g4a\/\/E37y+E\/R3dWJr335ID5y6+6V86M0FOBLB\/8Ga9euWTnvH731LSuP03MCwMzsHAqFAvx+Pz5z1yfx0OGvIBLpWHnN+vWXoDMawcYNr4KvxpxDn8+HV135SvR0d+HS3nX0Yfh8Pmzc8Cp0RiNYv\/4S+rAt2LHPiTLNagZqhIJ+RCN8iVmOYrGIufkFZDNZ+P2+lf6pehYWYkil0vB4PejqjFYM3FSj\/DM4XU50d3XC5TJmuITdLcSWbHW1rhZLBxQABPw+dHW+\/NeXMbubm1+0zTinRizZxCuXTKUxM7fQ9nP3mP0VikXMzC20TTjBDgGF0rSYmdkFXgWB2VYul8fM7IItpq8oYYuAQmk8zcXZBV5PitlOOpPFxdkFy0\/8VcM2AYXSUi0zswu8MiezjUQyhZnZBUsvmaKFrQJKMr+wZOuxIaw9LC4lLLsSpl5sGVAo\/ePOzfOWVsx6lodjLPIfWTsHFEpX+KZn5nlzUGYZmWwO0zPzbXWlrh5bBxRKVz8uzsy3xaA2Zm3xRAoXZ+b5anQZ2weUZCG2hPk2XfyOmd98bKltF2esp20CCgASiRSmL84jw0MRmElkMllMX5xHgmv4Qm0VUACQzS2Pl7L7JEtmfkvx5PL4phz3kdbSdgEliS3GMTMX4\/Y+a7pcLo+ZuZhtV+TQk+UnC2vlABCJhBEK+ulDjOkunkghFltCWxc6Bdq2BiUpljrQZ7k2xQyUy+UxOxfDAoeTIm1fg6IiHSGEQ7y7CNOPnRdYNBoHlIDH40YkHILP56EPMSZbOp1FbCnelpN89cIBVUcw4EdHOAiXq+1bwkyBfL6AxaUET1rXAQdUAw6HAx3hIDf7mCzS9mg8B1QfHFAyud0uhENBBAPiRfxZe0sk01iKJ\/hCi844oBTyej0IhwLw+7z0IdaGUukMluJJnp1gEA4olXw+L8KhAHxe7khvR+lMFkvxJNLpDH2I6YgDSiO\/z4sQB1XbSGeyiMeTSHEwNQUHlE58Pg9CQW762VUqnUE8kWy7TQtajQNKZ16PG8FggDvTbSKRTCORSPKihy3CAWUQl8uFUNCPYMAHp5PHUVlJoVBAIplGPJFCPs9X5VqJA6oJgoHloPJyP5WpZTLZ5RoTD7A0DQ6oJvJ43AgGfAj4\/XA6HfRh1gKFQhHJVAqJZJqnpJgQB1SLBPw+BPw++P3cqd4KqVQGyVSaNycwOQ6oFnM6nQj4vfD7fDw52WDpdBapdBrJVKZtN8K0Gg4oE3E6nfD7vfD7lm9Mu1Q6s3zjULIkDiiTcjgc8Pk88Hm98Ps8cLlc9ClMIJ\/PI5XOIp3JIJ3O8qRdi+OAsgi32wWf1wuf1wOv181DF0oKhQIymRzSmeVQ4sm69sIBZVEetxterxtejwcejxtud3vUsHK5PLLZHDLZLDKZHO+IYnMcUDbhdDrh8bjhcbtKP60fWrlcHtlcDtlsDtlSMHE\/UnvhgLIxBwB3KajcbhfcLhdcLidcbhdcJmki5gsF5HN55PMF5PJ55HLSLcebCzAOqHblcDjgcjrhdDkrfzoccDqdcDgdcDoccFTcAED6+bLlfugiikWgWCyu3ArFIoqFIgqFAgrFIvKFAgr5QsVP7sRm9XBAMcZMyxz1fMYYE+CAYoyZFgcUY8y0OKAYY6bFAcUYMy0OKMaYaXFAMcZMiwOKMWZaHFCMMdPigGKMmRYHFGPMtDigGGOmxQHFGDMtDijGmGn9f\/vGB1C+yVnXAAAAAElFTkSuQmCC\")}\" alt=\"Fl\u00fcstern\"><\/button><button class=\"cb-mode-thumb\" data-mode=\"partnerarbeit\" title=\"Partnerarbeit\"><img decoding=\"async\" src=\"${escapeHtml(\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAATcAAAEmCAYAAAAHqNcMAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAADVGSURBVHhe7d17fFPl\/QfwT05OcnJrkrZAKbVlIKKoKKBWgTpv0+l0TMSJouJtup9bdWwgnRectw3rQJlW3bxtQ4fD6XCoU1G8ctm6CchFUdEppdQCvSTN\/XLy+6NJbJ6kNJdzknOS7\/v1ygv7nLRNY8+nz\/3RtHfsj4AQQooMxxYQQkgxoHAjhBQlDTVLycFoNBpoOQ6clkv8V6MBx3HQcBpwGg00CQ8AiP37jUgEACKIRIBIJBJ\/iJEIImIEoihCjEQQFkWIYTHh30j\/JxOSNgo3Ag0AnufB89r+h1YLrZaDltdCyymjch8WRYRDYYTDIkLhMEKh2CME+gUmqVC4lRiO46DT8dDx2ui\/\/aGmZqFQGMFQCMFgCMFQGMFgCKIosk8jJYbCrcjpeB56PQ+9TgedTv1Blq5QNOQCwSACgRCCoRD7FFLkKNyKDM9rIej1EPQ66PU8OIU0KwtNFEUEAiH4A0H4AwGEQmH2KaTIULipnEajgSDoIOj1MAg6aLWlUTPLVTgchs\/fH3R+f5AGLIoQhZsKcRwHg0EPg9D\/ILnz+QP9D1+A+uuKBIWbSnAcB6NBD4MgQBB07GUiIb8\/CJ\/fDy8FnapRuCmc0SDAaBBgMFANrRB8vgC8Pj+8Pj97iSgchZsC6XQ8TEYBRoMBHMfMhCUFIYoReH0+eLx+BIM08qoGFG4KYjIaYDIK0Oup2alkgUAQHq8fHq+PvUQUhMKtwLRaLcym\/lCjaRvqIooiPF4\/3B4fwmGaWqI0FG4FotfxMJmMMBkF9hJRIY\/XD4\/HiwA1WRWDwi3PBEEHs8lIUziKlM8fgNvjhd8fZC+RPKNwyxODoIfZbIRA\/WklwR8Iwu32wucPsJdInlC4yUwQ9LBQqJUsfyAIl9sLP4Vc3lG4yUSv18FipuYn6efzB+ByexEIUHM1XyjcJMbzWljMJhooICl5vH643B5auJ8HFG4S0Wg0KLOYYDEb2UuEJHG5vehzeWjBvowo3CRgMhpQZjFBq6V5aiR94bCIPpeHJgPLhMItBzodD6vFTAvZSU78\/iCcLjct65IYhVuWrGVmaoISSbncXjj73GwxyRKFW4YMgh7WMnPJbNdN8isUCsPZ56b5cRKgTqI0aQDYrBZUlFsp2IhseF6LinIrbFYLaD+Y3FDNLQ2CoIeNamskz0KhMBx9bpoAnCWquQ3BWmZGJdXWSAHwvBaV5VZYy8zsJZIGCrdB6HgewypsNGhACs5iNmJYhQ06nmcvkYOgcEvBZDJg+DA7bRpJFEOv12H4MDtMJgN7iQyCwo1hs1pgt1rYYkIUwW61wEa\/n2mhcIvieS2GVdphpr+MROHMJgOGVdqpH3gIFG7RE6aGV9qh11GfBlEHvY7H8Eo7jAbaoGEwJR9uZRYTyu1l0GhoVhFRF41Gg3J7GcosJvYSKfVws9ss9ItBVK\/MYoLdRv1wrJIMN47jUFlhg8lI\/WukOJiMBlRW2OgEtQFK7p3Q6frnr9G236TYCHpd\/3w46jsGSi3cBEGHygobjTKRosXzWlRW2GgbrlIKN6NBQGW5DRwNHJAix2k0qCy3lfxIakmEm9lkQLm9jC0mpKiV28tKet5m0YebxWykGd2kZNmslpJdH13U4WYxG2lHBVLySnXX6KINtzKLiYKNkChrmbnk5nQWZbiVWUwl9z+SkKGU2n1RdOFmMRtL6n8gIZkopbN1iyrcqI+NkKGVSh9c0YSb2WSgYCMkTdYyc9FPEymKcDMaBJruEbVi5So0L23B7rZ29hIhCWxWS1FP9FX96VeCoENluY0tLknNS1vQvKQFANAwrR6rX1jOPoWQJF09Dvj9QbZY9VRdc9PpeJTbrWxxyXp25ar4f6\/b0Eq1N5KWcru1KBfbqzbcOI5Dua2M1ooSkiNOo+m\/l4psuyTV\/jTl9jLa3YNRV1uT8DHV3Ei6eF5bdOuvVdnnZrdZaKPJFBrn3YwVA5qmLcsWY87smQnPyacVK1dhw8ZWrNvQyl4qiLraGkyfVo\/pU+tRV1uT9MeAAB6vD70OF1usSqoLt1KbZZ0JpYTbipWr0DjvZrZYUepqa9CybDEaptWzl0pen8uDPpeHLVYdVTVLjQaBgu0gpk1NvFE3bMx\/jWnGrLmKDzZEm+wzZs1F89L+0WXyjTKLqSimiKgm3HheS4dgKFzz0hbFNEHT1bykhQIuBbvNovo+bdU0S4fRuaJDWrehFTNmzY1\/nM+5brvb2jGp\/gy2GOWLFkA47li2uCDCHZ3wvLIG\/g8+RKijM+Halta11AfHCARDONDVyxarhirCzWa1FP1SESkUMtzY\/j6+ugojX3w64TlKEeroxIHrFyQEXNOCRjTNb0x4HgHcHh8cTnUOMCi+WWoyGSjY0sTWPPI5kXdgsAFA+e03JXysJHx1FUznnZVQtl5lzel8MZsMMKn0\/lN0uOl4HnZaM5q2VNMb8tEHxgYoX10FYcoxCWVKY\/3R5Qkf5+N9Uiu71QIdr74uIUWHm81Ku3xkip3akI8RUzbc1IKvrkr4WK0\/Rz6o8V5UbLhZy8zQ08HJGbv4osR5bYW4YbVMaGTD\/fIa9Ny9BB3fn4O9370QHd+bjX3X\/Azul9ckDQYQ+en1OtVtKabIcBMEfUlspieHhmn9s+9j8tnvJoVQRyf2XfMz9Ny9BO6X1yC87wDEXifCXT0IbP8Yvc0P4uvzL6eAKwCL2QhB0LPFiqW4cNMAsKnsL4TSsE1TtfQnhTo68fX5lyOw\/WP2UlwkEAAACrgCsZWZoZatKhQXblar+icPFhq7UuGvzyWOZCqV669\/Z4sOat\/l18O\/aStbTGTE81pYVTLIp6hwMwh6mvYhgVQ1NzU0Tb1vvANuQK1do+9vAumPngBtZfmAZ\/YT+1xwPPwkW0xkZjYZYFBB81RR4aa2DkulKtSUkFxV3HMrxD43OFN\/f6u96UYc8u81GPHk71D9z5UY\/ugScGWJtYbA9o+peVoAarhXFRNu1jIzNUcldAmzG4gamqbClGNwyL\/XoHLp3Tjk32tgZibaClOOgeXimeAGbHel0evh\/+DDhOcR+fG8VvEBp4hw0+n4kh8dXbehFcseegz33PsAlj\/zHNr3drBPycglF81U7ajpwSYAC1OOBWj3ZUWwmI2K3p5cEeFmtSj7L4CcPvl0F846dzZmzJqLxfc9iIceeQq\/WHgHJh53Gu5Z\/AD79LTV1dYk9b2pYSuiofg3fQjR441\/HAkEwI8amfAckj9KvncLHm4mowGCUJqTddv27MU5My7FRzs\/RQRAMBRCMBiEGBEBAPc\/+AfMu+l29tPSxk7oVVPtLZVQRyfcf3+ZLT5oTY\/ISxB0it0Vu6DhptFoSnrzyV\/ddR\/8AR88Hu+gc4eWP\/Mc3n1\/I1ucFnZCL1RYe\/Nv2grnE0+j5+4l+Pr8yxHu6km4nmoUleRXmcUEjQK7CgoabmUWE7Tagr6Egunq7sGLL70Gr9fPXkpgNAj48zPPscVpa1m2OOHjdRuUc6bBULpuvhv7r18A1zN\/g\/vlNexlIDrCSgpLq+UUWUkpWLLwvLakBxE+2\/UFW5SS1+fHxx9\/whanrWFafdI5Co3zblZ88zTU0QnvW+8DAESvj70MxDbCpCapIljMRsXNdihYuFnMykv6fMqkGp\/reZIXMyOnu9va8azCp4aEOzrj891iYh8bTz8Zwx9dkjRVhBSW0u7p3O6aLOn1OpiM6j+AIheHjx\/HFqVkNBpw1FFHsMUZaZhWnzRy+uzKVYqvvQ2k0ethPP1kjHzxaVQuXkQ1NgUyGQVF7eRTkHAr5eZojN1mxewfng9BOHjIe70+XDX3YrY4YwvnN6qq9qatrgK0A5o54TD0k49J2oONKIuS7u28h5sg6FWxLi0f7rxtASrKbTAeZCj9+h9fgaknHs8WZ6yutiZp1ULzkhbF1t746ioIJ0wGV2aGtrIcnN1KzVAVMAh6xWyLlPdwU1KyF9qIEcPw6upnceIJkwEAWl4Lna6\/Ws9xHG6\/ZT5+fYd0UzeamNobANyn4GPtKhcvgvGU6eBH12L4kw+yl4lCKeUez2u4GQQ9BAW1yZWgrrYGf1\/5R6x97XksvusW3LLwRjzx6FLs+uhfmHfDtezTc8bW3lasXJV0uItSxHbeDX72Oe3fpiKCXqeI1llew82skERXosnHHo0fXXUpftZ4LS44\/1zYbVb2KZIYrPamtOZpqKMToa\/aAABinxvIYr83UjhKuNfzFm6CoKNam0KsfmG54gcX+nf6SDxSl93uiCiXoNcVfFll3sLNzMxZIoWjhsGF\/sEDTcLmlcIUZZxcT9JT6Hs+L+Gm1\/GKaIOTb6Rqniqt9lZ53x0wnjI9PmmX5rapi0HQQ1\/ALZHyEm6mAic4SS1V7U1J606FKcegfNECmrSrYoW892UPN61WW\/KrEZQqVe1NDetOiXqYjAK0Aydj55Hs4UYHvihby7LFih9ckAs7tYQNeiKNQmWA7OFGtTZla5hWn7J5mkntjV236t+0NSk4lIZ9fRRs8ilUBsgabiajIecdLYj8UjVPM629sZ\/veSX1\/mtKwb4+9vUT6XAcV5DdemVNnkIlNsmc1LU35+NPJ9WOlMK\/aSucjz+dUDadef3Ziq34yOS9KwWFyAJNe8f+xJmSEtHpeAyvtLPFRMEm1Z+RcFM2TKvH6heWJzxnMLvb2jFj1tykm1qYcgyE446FdmR2u3nwo0ZCW12V0W4goY7OQY\/787yyJumU+rraGmxpXZtQlo3mpS1oXtK\/VrdpQSOa5jeyTylp+7t6EQyG2GLZyBZuNqu54JP4SGbWbWjFjFlzE8pali1O2sl3MANvbqkJU45B+e03HTTk3C+vQd8TmdcYV7+wPKnmmY2K6m\/23ZMqMIuJ2+OFw9m\/lC4fZGuWGg35b2OT3KTakjyTw5yb5jeiaUFy\/50U\/Ju24sD1C1IGl3\/TVuy\/fgF67l6S8vrBSBVsbI1VjvdA7fKdCbKEm9EggOPS30abKEeq4wAz2TWkaX5j0vQSqYQ6OhFmwsv5xNPYf\/2CpKbmUBqm1WNL61pJgi0VOX5+teM4DYyG\/PW9ydIsrbBbYTDQciu1apx3c0KgZdL3NlDsnNS2Pe1oy7KDnT1rtXzRApjPOwuhjk703PXbQUONrYHGTJvav+W61OHDNumpzy01ny+A7l4nWywLycON4ziMHFHBFhMVSTU4IFXzLVNsP5712suB6GhsKnNmz0zaUj0fVqxclXAmLIXb4L7e1w1R7D94XE6SN0uNVGNTvbramqQgy6TvTU7Ox59OGWx1tTVY\/cJy2ZrEQ2nbk1gzrT0k\/69BLfKVEZKHm2GIA0+IOrB9b0qeuyV3\/1k2ChGwapGvjJA03DiOK\/gGdUQaqfqllLRjSMzqF5Zn1R8otWeZQRclBa3SCIIuLyuXJP0ONIhQXBYyfUYbNuY\/3KZPTR0SDdPq0d2xUxEhsrutPaFWy\/5RIMnykRXShhttSFlU2ODIZEqIVBqm1aNpQWLIKqW2FsOuw2WXspFk+cgKycJNo9Hk5QWT\/KmrrVFELaRpfmM80JRSWxtoPdNcH6y2Sb5hEPTQaOSdCyvZVBCDQY8KuzwnNpHCGbikCAC2tK5VROApxe62dkyqPyP+MS27Sl93rxM+X4AtloxkNTdBT7W2YtPMHNislJqcklCTNHtyZ4Zk4WagUdKismLlqqRF8HTjJmNHSWl+W\/rkzgxJmqU8r8WIYeVsMVGpGbPmJk37oOZWMnbJVSbvUfveDvzlr6uwecs2DB9eiSsu\/SGOK8GjC\/cd6EEoFGaLJSFJzU3u6iXJjxUrV2FS\/RlJwYbo1kck0cDlVsigZvvOexsw+cQz8cgf\/ojX33gb\/3z1DcycfTUW3XUf+9SiJ2d2SFJzo4Xy6rZi5SrctzT1zrt1tTVoWbZYcSOUhZZLre2wo6eiq6uHLYbJZMSrq1dg4lET2EtFS86F9JLU3PT6wh28SrIXq6kNdpyfEpc1KUUutbZIJHV9wmgw4LnnV7PFRU3O7Mg53HQ8n5elFEQ6Q4Uaos1QJU2UVZJmppZbV1uT9g4gDodz0D4ml9uN3l4HW1zUOI6Djpcn4HJOJTmTl0grnVBrWtCI7o6dg+6HVup2t7UnjSJn0h85\/rBDEYmk3u7HbDbjxBOmsMVFT64MyT3cdPIO55LcrdvQOmSozZk9E1ta16ZdAylV9zFz\/xqm9W9+ma4JRxyG+uMnY2TV8IRyo0GAXq9Lu3lbTOTKkJwHFEYMKwfPa9lioiDsqVYDFWpzRzViBxGQw4qNy69qxFvvrIMg6CFGRIwd8y088ej9GDumjn1q0QuFwth3IHmAJVc5hRvtuqsO7BIqRJufl1w0M6sbs1SxfyRy3W13374D+PKrNlRWVuDQsaPZyyVFjt15c2qW6nTytJWJtNgAq6utoWDLUC6DCIMZMWIY6k+YXPLBBpmyJLdwo+aoKrD9OLvb2pPWRJLB5TqIQIYmR5bkFm4ypC2RXuw80YGal7QkLYwnqbFz2jIdRCBDkyNLcupzo8EEdWH7jJBDh3ipkHIQgQxOjkGFrGtumuiCeaIeq19YnnRTskf4kURsra1pAY0sy4HntZB668qsw42XaVYxkU9dbU3K\/rfB1pWWOjkGEcjgpM6UHMKNam1qlKr\/bcXKVTTAwKBBhPyTOlMo3EpQU4pJu+yNXOrYsKdBBPlJnSnZh5tW2hdC8ottnpJvUK2tMKTOlKzDTavN+lNJgTUvbUm6edmaXClja200iJAfUmdK1lNBqkZUQEtbHalO47ybU54\/uvqF5dTsSnGaFQB0d+xM+JjIIyyK6NzXzRZnLat00mg0FGwqRME2tFS1NpIfWo6T9CzTrBKKgk19mpe2ULClgT3N6pKLqG8yn6TMlqy+Eidx25jIK1UHeV1tDQUbY3dbe9K8Nupryy8psyWrryRluhL5sU2tOjr0JSV2IjONKOeflNmS1VeSMl2J\/NqYm5a9iUlq7PtG5CdltmT1laRMVyK\/aVOTa2gzZs2lXUEYDdPqE5qhK1auSlqCReQlZbZo5y9YeAdbOBSjQZBlixIij4lHTwA0wHrmsOX1G1rRtqcdRx81ATabNeFaqXI4+xLep\/UbWrF9x07UUv9bXoRCYfj8AbY4K1mFm8lokHypBJFXw7R6QNPf1HI4++Ll23bsxPYdOzF9Wj0F3ID3aWDAxTb3XL+xlUJOZuGwCK\/PzxZnJbtwMxkkXypB5NcwrR5HHzUB6ze2JgTc7rb+2tvEo0vnpPODSRVwoJDLi7AowuuVJtyyauByEk60I\/nVMK0+5b5uf6VdQRI0zW9M+T5hwAaWM2bNxTomAElupMyWrMJNylnEpDDYTvJUN3Gpa5hWjy2ta9GybHHK9ycWcjQwIx0ps4XCrQSxu8sCwMU0E39QsQOrBwu55iU0oioVKbOFwq3EpGpKNS1opAm9aYiF3OoXlrOXkt5Tkh0psyXLcGNLiBo0L21JugkbptXT1tkZWr8xOcjoj4M0pMyWrMKt\/3gYoibrNrQOur6UpC\/V+0j7vUlJumzJKtykTFciv91t7UnH01GwZS7V+0g1X2lJmS1ZhRtRj1Q3JKLbZlNtIzPs+0h\/IJSNwq3IPfvcqqSRvGLdEaRx3s2YVH8GJtWfIfn0jFRrTOlcBWWjcCtiqfZxmzN7JuYU2VY+6za0YlL9GVixsj\/IYz93qs05pTJn9kyq+SpcVuEWyerUBZJvbE0jto9bMWle2oIZs+Ym\/ayQeNVF7SGJQRY76zXV9yXZkzJbsgo3QMJXQGTD3njF1BSNrw7I03mrc2bPTDpPoXlJCwWc5KTLlqzCTcp0JSRTsdoaO2dPbk3zG5Oa9LGAI9KQMluyDDcJXwEhaTpYbc1ercUp11jYYsm1LFucVINjD5Uh2ZMyW7I6t3TEsHLaz00FVqxclbCOdM7smXnvc4t16rftGbrpxvZrDfTX51YNWlOb9D0jZtxqx5ebA1je2BUvr6utwcL5jfHvPX3qNzvt5jIYEAvZgehsU2mEQmHsO9DDFmclq3AbXmmnnXhVoFDhtrutHY3zbh40jKRir9Zixq12fGuyPl521\/SOhOcMpmlBIy65KPMRz1Rnv9bV1mBL69qEMpKdYDCE\/V29bHFWsmqWihJWHUlxiU3LkDvYJn3PiBufH5EQbACSPh5M85IWNM67OaPBgFRnv9JEXmlJmS1ZhVtElO4FkOKRqrkmtW9N1mNuSyVm3GpnLwEAZtxqh706vS6TWBCnE3Cp5gwOtvEnyZ6U2ZJVs9RutcBkMrDFRGGal7Yk3JBNCxplWwcZW+bFBsW3Juthr9bClmbgAICjI8wWoW6yAHu1Nu2a2ZebA\/hqc+J21V9tCqD36zB6ma\/fMK1+yOVobHDHamwH+xySOY\/Hh16niy3OSlbhZi0zw2I2ssVEYfIZbuz3AoC5LZVph1E+vftUH959MvEGalm2OGmaB4ut5cn5fpYql9sLZ5+bLc5KVs3SsCiyRUSB2ANODjYamSv2e51yjUWRwQYAp1xdljRtZEOKPdpY7An0zUtaJF\/DWuqkzJaswk0MS\/cCiDx2t7UndeoPVTPJBfu9Trm6LOFjpRk9WUj4mG1Op9I0vzFpjhttMS4tKbMlq3CTMl2JPNhZ83L2DbE3d7od+oUU6wuMWbehNennSKVpfvLGlGxzlWRPymzJKtykTFciD3bWPNukkhJ7Y9tHKj\/ccpFqICHVoTskc1JmS1YDChqNBtVVlWwxUYhUnftbWtcm3ZBSYUcSY9M1UvlorReiKOF2q0OwDOMG7ft78MJ9CSOnmbxHqUaHV7+wvKg2JyiEjs4uyZZgZRVuAFA1ogJaLquKH5HR7rZ2TKo\/I6FM7lG9dMPtk\/d9+NutPRCTZ3rIava95Tj85OSpS7mEG1L8EUlnxJUMLiyK6NzXzRZnLet0Cofy\/BtKhrQ7uuxpoLraGlmDLRM73\/HnPdgAoOPjIFskielTE2tp6ayfJYOTOlOyDzcJ28ZEGqnWcy5USLABgG1U1r9uOTHYC\/N9SWakzpSs\/6+HwtKmLMlerP+HDTalbSneMNeCky62oO5Yfd4eDXMtOPLU5CYpUR6pMyXrPjejQUC5XdlzmUoBu\/NHTGzdYz6k2+emNLn2ubE\/t9x9m8Wup7cPXl\/ikrlcZF9zk7h9TDKzYuUqTKo\/o+DBRohUpM6UrGtuGgDVI4exxeQg2GZjumLTDdr2tGP9htaDfp187dk2EFuDoZobyUbH1wckPEEhh3AD7cibNnbKgFwKNRWBvclLJdzYaTeF+MNSLKTcgTcmp3Art5fBaEhco0cSperol1qhb6pMwu3dJ1zo3CXP1IxURk\/W4+izDDCXJ\/8RzjXcwCy9ou6A7Hl9fvT09rHFOckp3CxmI6xlZraYRLE3vZTmzJ6J2tqarLbKlhr7cw4Wbuv+7MLbT7gk3ZAwHWf\/3Ib6C01ssSThxv7xyuZrEMDZ54bL7WWLc5JTuAmCHpXlVraYRKVqjmazPCd2s9TW1qD2kBo0TPvmoBMlSDfcVt3Zi21rpP0FTsfJV1hw2nXJI\/tShBt7pgL1u2Wnq8cJvz\/AFuckp3DjOA4jR1SwxSSK\/aterGsP0w23HW968cKvpDn8IxM\/vKccE05LnusmRbit29CadBZDNl+n1H29rxuihDuCINdwAw0qHBSFW7IPX\/XC787pVy4j9motxk9P3S8sRbghRQ29jrYgz4gcgwmQItzKbWUwGlP\/8pQ6CjdlkyrcMMieboUavVYbr9ePHoe0gwnIZRJvTCCYv5EvQpQqVU2tcd7NmDFrLpqXtmBdmpthliK5MiT3cAuE2CJCSk5dbU3KE7TWbWhF85IWzJg1F5Pqz0BF9RFpP2LBWOyhKFeG5BxuwVBI8o5AQtSoYVo9trSulawpGgtGdsCimIiiiGBInnDLuc8NACrsVhgMqXc7LWXU55boqy1+fPCiBx+9lfniaFuVFlN+YMT0yxJPrcqFlH1urBUrV+E+CWtdxTrFxOcLoLvXyRZLQpJwM5uMsFlpMi+Lwi3Ry8292LQ6+3luBguHha9XscVZkzPcBlq3oRXrN7YmHX84lN1t7Qnh2N2xM+F6MXA43XB7sv+dOBhJwo3ntRgxrJwtLnkUbolevKsXW1\/P\/hdZb9Tgl2+OZIuzlq9wyxY7QVhpr08K+w70SL4bSEzOfW6IzlMJS7zRHCk+R59pwLiTsps2xGmBky6i1kExCYfDsgUbpKq5AYDNaoHZlDwLvJRRzS1Z954QtHzmp18ZyjTQ6jXgdZl\/7mCo5lZYbo8PDqeLLZaMJDU3APAHpF0XRopTxSE8bCO1GT8EMydpsJHCkzszpAs3vzwT8QiRy8BaGwZsUEDyQ+7MkCzcIpEIfBKv6ifqwDa1v9ys\/N8DCrbC8vkDkh2+PBjJwg3RF0xKExsObHgojRoCuJjlIyukDTef\/C+YKBMbbstv6FJswPV2hLH614lbL10i0aoCkp58ZIWk4SaKouztaKJMC+c3JgRcb0cYy2\/owpebA4oJud6OMLb804sHL9zHXsIlF1G45YvfH8zLkk3JpoLEmE0G2KzSLZFRs1KZChLD7mumFkpd2lSsU0EcThfcHh9bLDlJa24A4M1DdZMoU9P8RtWFd8O0ekUGWzHLV0ZIHm6iKOalPU2UafULy9G0ILGJqlSrX1hOp1Xlmc8XyEuTFHKEG6LHdJHS1TS\/ES3LFqNpQX9NTilBV1dbEz8GcUvrWtXVMotBPrNB8j63mJEjKsFxpT2jvNT63Ii0iq3PTRQj+HpfF1ssG1lqbgDg9cnfYah07C8i+zEhpSTfmSBbuHm8+at+KtXA6RFzZhf+8GSiLrVF9scx35kgW7MUAIZV2KDX69hiQkgadre1Y8asudjd1q76k7QCgSAOdDvYYlnJGm4mowF2G815IyQXu9vaVV9r63W44PEWSbMUADxeX96GfQkpVmoPNlEU8x5skDvcUIB2NiFEWQqVAbKHWz6WWRBClKtQGSB7uIXD4YIlNyGksDxef8HOV5E93ADAI9PRXYQQZSvkvZ+XcAsEQ3nZnI4Qohw+fwCBoDynyacjL+EGQLaDVwkhylToez5v4eb3B+EP0EaWhJQCfyBY8I1r8xZuAOB2FzbJCSH5oYR7Pa\/h5vMHqPZGSJHzB4KK6GPPa7gBgEsBiU4IkY9S7vG8h5vfH1BEqhNCpOfzB+BXyP2d93CDgpKdECItJd3bBQm3QCBIqxYIKTIerx8BBfWpFyTcAMDl9rBFhBAVU9o9XbBwC4XCiqrCEkKy53J7EQoVZg3pYAoWbgDQ5\/IgHKb93ghRs3BYRJ9LWbU2FDrcIpGIIt8UQkj6+lweRCKybeidtYKGG6K79RZ6mQYhJDt+f7Agu+ymo+DhBgBOl5stIoSogJLvXUWEWzAYosEFQlTG5fYiWMAtjYaiiHADAGefW3GjLYSQ1EKhMJx9yq21QUnhhmjAEUKUTw33qqLCzecPFOwwCUJIetwenyrWhysq3ADA6XRR85QQhQqFwnA6XWyxIiku3CIAHCqo8hJSihx9bihvRltqigs3RLdFotFTQpTF5fYqZjujdCgy3BDtsFTSDgOElLJAIKiKQYSBFBtuAOBwquvNJKRYqfFeVHS4BUMh9Kqk85KQYtXrdCEYUu5k3cEoOtwAwOPx0fQQQgrE7fHBo9L7T\/HhBgAOp6ugJ1cT9XO7Pbjimhsw86Kr0Nm5n71MUggEQ3CouOWkinADgF5HnyK3VYlEIrjtjmZUVB+R8jHm8Hrc+eul8BT49O1S53K5sfnD7Wj972Z0dO5jL0vK5\/fjymt\/horqI3DbHc3sZVWIRCLodfSxxaqimnALhcLodSjvr4jH48WHW7ezxXEOpxO\/a3kcl175Ezid+f1leezJZzD1lPOw+cPBXx+RnhgW4XA4AQDd3T0J1\/Z2fI3zZl6Omxf9WtGLznsd6p9Mr5pwAwCvz6\/ozS0fefBefLzl\/fhj+6Z3sPjuW8FxHN59fyMefezP7KfIxu324KVXXscnn+7Ce+9vZC8TGZlMRrQs+w2e+8tjuOfOXyZc27rtY2z413\/wyqtvJgWfUvS5PPD61H+Ak6rCDdE3Xqmb49ltNlRVDY8\/RlWPxHXXXIZf3PhjAMCLL72GrhS\/0MFgCPv2H0Bn53509\/TGm9\/BYAg9vY4hm+MOhxOdnfvhzvGAjnA4jP0HupJex2AikQi6e3rR2bkf+\/YfyKgm4vP7D\/p93G4POjv3J\/1cbrdnyJ9z4Ovy+Qe\/SWOvgf0eBzPwc2K1s1RqRlWjYfqJqCi3s5cUzeP1KboCkQnVhRuiVWa\/Sib4ajQanP3d02EwGNC+twMdHZ3xa8FgCA\/\/\/o8YPf54HHFMAyZMOhnjjjwJ3\/neRdiydQeuvm4eDjtqKt5975ua19btH2HM4fWY33QH9h\/owlXXzcOYI+oxYdLJqG84Bzs++gRXXHMD6hvOwcZ\/fwAA+O0Dj2Dicadh6innYfuOnUC0mT+\/6Q6MObweW7buwDvvbsDE40\/D4ROnx1\/H2TMuwd6Or+Pfe6D1G\/+Dk759LsYdeRImTDoZRxzTgNHjj8fDv\/9jUsi53R5cMPtqnHjy97CnvQN\/eOJpjB53XPz7rPrHP+PP3bfvAK66bh5qx03BhEknY8Kkk1E7bgqabr0bH2z6EFNOOhNnnnsR9h\/oin\/Oq6+\/hRG1R+Hh3\/8Ru9vacfaMS+Kv6\/sXzE3qDggGgnjokSfjryH2Pa66bh727TuQ8NwYj8eLW27\/DQ4ZOzn+OWOOqMdZ583Gri++ZJ+OJcseRc2YSXhmxfMAgFdefRNTTjoTP7mxCQCwp70Dp373Akw87jTcdkezIpqA\/kBQkV0\/2VJluAFAT2+fIn4h0hEIBBAKBaHjeej1OiAabL+87R4surMZPp8PHMehemQVTCYjNm\/ZhrPOvQhvvPUeRFHEh9t2xL\/W3r2dcDid2LxlG6780c\/w0itr4p83fFgl3B4P\/tW6CR1fd0IU+w\/f8Xi8aN\/bgU8+3YWvo53pfr8fn372ORxOJx565ElcOOdH6DrQjZpR1dDxPADgP\/\/dgvlNd8DnS6wpr35lDX5w4RX4bNcX8det43n4fD4surMZN918V0LAuVxu7Pr8f9jTvhe\/af4dbrn9N7DZrBhWWQG9Xo+KinIAQNuevTj\/oivxj5deA6LNu+qRVeA4Do8\/9Rf84IdX4kBXN77avQfte78J3U8\/+xyhUBhvvvUeLr78x9iyZXv85xg1ckT8PQeAYDCIG35xK351928RFsX4ewcA\/3jpNZx7\/qVo27M3\/nwAcDr7cOmVP8HvH18OURRhj752APjvBx\/izHMuwqbNWxM+54svvkIkEsGGf\/0XALDx3x\/gy6\/a0DugttfZuR\/tezuw46OdCAQKu6wpFAqjpze\/fcJyU224iaKIHkcfxBRNGiWJRCJ46+11CIXC+NboWowYMRwA8Nobb+NPT68EACz8xU+x5\/NN2LH5XXz16X+x\/KmHoNPpDvoLv2XrDuzbtx+t617Fjs3vYs\/nm\/HOG39H\/fGTselfb+C\/G17H8ccdCwBYMO96fLzlfez66F8447ST2S+Ff7z0Gu7+1ULs+WILtn3wNvZ8sQUL5l0PRGtouz7\/pmay85NdmL\/wVxBFMeF17\/3yQzz28BIYjQYs\/8tzeObZ\/hrLQF6vD8+9sBpPPLoUn2xbj0+3b8DXX23Fqd+ehlAojN8+8Ah2frILNqsVzz\/7BNp29X\/t3Z99gP+7di48Hm\/KJmzMu+9vxPBhldi5bT22ffA2Otu2489PPgSDwRB\/TigUxqeffY6rr7gE\/9vZih2b30Xbrk14\/tknYLNa8fn\/vsJvH3gk\/oczEong3iUP4d33N+Jbo2vx\/tp\/4Iudrfh0+wZs3\/QOzvnu6XA4nWj8+S0JtUnWnYsW4JNt6\/HIg\/cCAEaOHIH33nwRH295H88+\/ft4wBaCGIn030vRP4bFQrXhhnif1OD9HvnW63DE+2M6O\/ejbc9e3Hf\/w7j\/wT8AAC44\/1zYbVb4fD78+emViEQimDN7JubPuz5+A2q1Wpx3zpl44Ld3MV89kUajwb2\/vg1jx4xmL8FsNqFqxHAIev03H1cNR0W5HRqNhn065lx8Aa69+nLodP01Np2Ox5yLL8CIEcPgcrmxp70j\/tw\/Pf1XdHX34AffPzvpdV94wXnx1\/3Yk8+k7F+8+opLcP6Mc5Jex2e7vsBLL6+BRqPB\/ffdgdNPbYg\/x2Qy4s5FC\/GD75+d8Dksm9WKe++5DeV2G3spwQ++fzYW330rysosQPS9PP3UBtx\/3x3QaDR46eU1+GzXF0D0da382z+g1+nw8O8W46gjD49\/nVHVI\/HQA7\/B5EkTsfOTXXjl1Tfj11harRbDh1XCbut\/bXz046qq4TAIAvv0vOrpdSZ1JRQDVYcboqfvKKU6\/ZMbfxnvj5kw6WQce8LpaF7SAlEUMeO87+LyORcCAL7u3I\/tH+0Ez2tx2ZwL46Ey0KnfnobDxo1li+NG1x2CiUdPYIuzcvL0E8Hz2oSy4cMqcdihYxLKXC43tm77GIje2K++vharX3494dHR0Qme1+Kr3Xvw1e49CZ8PAGd955SkYAOA7R\/thMPpxKRjjsJppzawl6HT8bjsklkpPzdm0rFHYXTdIWxxAo1Gg8sumZXyPT\/t1AZMOuYoOJxObP+ov2\/yk8++QE+vAzU11djd1p70865b\/+94OG34138OWrNUop7evqI9fU714YboFBGlzqSuPWQU7r3nNvz+oWZYrWUAgF6HE319LoysGoExo+vYTwEAWMxmjKquYovjakaNhNlkYouzUmbpr8EMxe32YE97f3\/Uo4\/9CVde+7Okx52\/XopQKAyfz5c01cFoNGDYsMqEspi90T60w8ePg91mZS8DAKpGDIfZPPjPPLD\/bDAGg4DKaH8Zy26z4vDx44ABr+eL6GDB\/77cjetvaEr6ea+89mfY+O\/+frX9+7vgVehIfioOp6sopnwMpijCDdE1cIXekmXFnx9Fd8fOhMeH\/3kL111zWUK\/T0w4LCIsqmNQZCCNRoPvnnkq5l560aCPRTf\/HNNOOoH91CGFwiFF1n5qRlXj8kt\/mPRzxh5XX3EJfnnTDUOGq1I4+9xFv2a7aMIN0c30Ch1w6RgxvL\/vZf+BA9jd1s5eBgC43G7sHTBtRAkEg4DhwyoRiURwwfnnYtmSuwZ9\/PzGH2d0o48d+y0AwOeffwnHICs5OvelPx9tMF6vL2E6zkC9Dic++XQXAGDUqJEJ\/44YXok7F92U9HPGHkvu\/RVOPGFKwtdTKmefuyQ2gy2qcEM04JQ+CbGiohxHH3UEQqEw\/vDE0yk7c1959c14p7ZS2G1WnHD8JADAAw\/+YdDRQZfLjXA4sxrp4YeNRbndhs0fbseaN99hL8Pn8+GJP\/5Fklrd4089kzIk335nHbZs3YFyuw3HTjwSAHDsxCPjr2vgfLyBgsGQatYO97k8JRFsKMZwQ\/R\/oJIDziAIuP7aK8BxHP7x0mu4edGv0dfX32cYDIbwzIrn8ctb72E\/LSMajQZ8dL7aga7u\/oOvJTgd\/MrLL0ZlRTl2frILF178o3hNB9H5dM1LW1B32HH41d1LEj5vKIeNG4vZP\/wBAODnN92O5\/\/+cjwgu3t68YuFd+D1N5JDLxvvvLcBP194O7p7eoHoyoyXX30DjT+\/BZFIBOfPOAdjx\/TXJAe+rptuvgvLHnosPu8vEolg2\/aP0XD6DEw+8TvY9fn\/BnyX1GIDNz6fHw6nEx5P\/g42Vvp9IbWiDDdE\/0cquYl6yren4vZbfgEAeOrPz2L0+OMx9oh6VNUdjRvn3wa7vX8pV7ZMJiNOqj8OAPDw7\/+IqrqjcewJp+PTzz5nn5qRIw4fh\/t\/exd0PI9tOz7G1FPOQ1Xt0Rh7RD0OOXQympe0gOM41J8wmf3Ug9JoNPjlghtwyslT4fX6cN1PF6CqbiLGHF6PcUeehL\/+7UWMP+zQpFHdTPG8FuMPOxTP\/\/1ljDvyJIw5vB5VdRMx9+ob4PX6MGXyMVj4i5\/Gv0\/sdZ1x2skQRRF3\/eZ+jBozCYcdNRXDDzkKp5w5E5\/t+gJHThiPEcOHsd8OPDMqe9i4sageWYUDXd046dvn4pBDJ2PRnf1z3+Tk7HOXVLChmMMNeeqDM5mMOPaYo2G3WTFq1OCjmyyNRoOf\/t9VePyRpfHZ7rHZ6+edcybWvLIS3\/\/eWbDbrDjt1Onxzxs1qgp2mxUTjhgPYYj5UddfdwUumjUDHNf\/v\/ms75yKmlHVAABBEDD+sENRWVGOQ2r6ywYSBAETjhif8uf6\/vfOxHtrX8TUE48HYjsmR1\/78ccdi\/Vvr8aMc8+KP99iMWPcoWMwdsxojBieerQUAKzWMix\/8iFcd81l4DgOoijC4XRCx\/O447YF+MufHsHh48fhxBOmJExTGX\/YodDxPCZOHHxqjE6vg81mRbndjscfWYI7F90Eg8EAh9MJURTBcRyuu+YyrFr5VNIfFau1DE8\/9RDuXHQTbNb+kdyu7h6IogiDwYA7F92EZ5c\/Gh8NB4CJEydAx\/M456zTB3yl\/ik8v1t6N0aOHAEAGFZZgbPPTHyO1Eqlj42lae\/Yn3snhsKZTQbYrOlNdyiESCSCnl4HgoEgLBbzQac7KI3P74cjOpFaytfeP0G7v9lYbrennJeWKZ\/fj3AoHH+N4XAY3T29EMMibHZrWpNpB\/6\/4rQcKsrt0Gpzq03KyeF0Ff2o6GBKItwAwGgQUG7\/5i8rIcWup7evqOexDaWom6UDeX1+dPU4FL8WlZBciZEIunocJR1sKKVwQ3SpVle3QzW7iRCSqVAojK5uR9EuqcpESYUbon05B7odqtkPjpB0+QNBHOh25G1qidKVXLghul1SV7dDsTv6EpIpj9eHrm5H0W1blIuSDLeYXoer5Ob+kOLT5\/IU1Q66UinpcEP0F6OnV5nHBhJyMP3TUvroD\/QgSj7cEB1J3d\/VSwc\/E9UIBEPY39Vb8iOiB0PhFhUKhXGgq7dkJzwS9XB7fDjQ1Uuj\/kOgcGM4nC70KnTjS0J6nS7FbsyqNBRuKXg8Puw\/0IsATRchChEIBLH\/QC881LJIG4XbIIKh\/vlwpbjgmCiLy+3tn78Woj7hTFC4DcHZ50ZXj5P6N0jehUJhdPU4Zd\/ZpliVzML5XGkAWK0WmE3JZyEQIjW3xwen0wW6ObNHNbc0RaKDDd1UiyMyCoXC6O5xwkHBljOquWXJWmaGxZz+ASiEDCUfm6uWEgq3HOh0PKwWMwRBx14iJG1+fxBOl5sWvEuMwk0CJqMBZRYTtFpq5ZP0hcMi+lwe2sBBJhRuEtFoNCizmKipStISO4KS1jTLh8JNYjyvhcVsgsk49H78pPR4vH643B4alMoDCjeZ6PU6WMxGGAQ9e4mUIJ8\/AJfbS6te8ojCTWaCoIfFbISgp0GHUuQPBOFye+H3B9hLRGYUbnliEPQwU8iVDH8gCLfbCx+FWsFQuOWZIOhgNlFztVj5\/AG4PV46oEUBKNwKRK\/jYTIZaeChSHi8fng8XtrwVEEo3ApMq9XCbDLAZBTAcTRPTk1EUYTH64fb40M4TKOfSkPhpiAmY3\/I6alfTtECgWB\/TY0m3yoahZsC6XQ8TEYBRoMBHKdhL5MCEMUIvD4fPF4\/LZNSCQo3hTMaBBgNAgwGGoAoBJ8vAK\/PTwexqBCFm0pwHAejQQ+DINBCfZn5\/UH4\/H54fQE65FjFKNxUiOM4GAx6GIT+B8mdzx\/of1CgFQ0KN5XTaDQQBB0EvR4GQQetVss+haQQDofh8wfhDwTg9wdpAXsRonArMjyvhaDXQ9DroNfzNL0kShRFBAIh+AP9gUYL14sfhVuR0\/E89Hoeep0OOh0Pni+Nml0oFEYwGEIgGEQgEKKTo0oQhVuJ4TgOOh0PHa+N\/qv+wAuFwgiGQggGQwhGQ436zQiFG4EGAB8NOZ7XgtdqodVy0PJaaBXSrA2LIsKhMMJhEaFwGKFQ7BGig1RIShRu5KA0Gg20HAdOyyX+q9GA4zhoOA04jQaahAcAxP79Rn+ffQSRCBCJROIPMRJBRIxAFEWIkQjCoggxLCb8Sx3+JFMUboSQoqSMNgchhEiMwo0QUpQo3AghRYnCjRBSlCjcCCFFicKNEFKUKNwIIUWJwo0QUpQo3AghRYnCjRBSlP4fez5iFv8BWloAAAAASUVORK5CYII=\")}\" alt=\"Partnerarbeit\"><\/button><button class=\"cb-mode-thumb\" data-mode=\"gruppenarbeit\" title=\"Gruppenarbeit\"><img decoding=\"async\" src=\"${escapeHtml(\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAATwAAAE3CAYAAAA3wv3FAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAADaQSURBVHhe7d15fFTlvT\/wz+xrZrISIARk3xVQY1msC9p7tS1iacG9Yq+0VmzxilL8dXHp1cbCldYoVttSwaJ4i6i1LlVUFILGXRZRNk0IGLPOZPb190dmQuaZk2SWc86c5ft+veaVV55Zs8xnnv3RNJ9ojYMQQlRAyxYQQohSUeARQlSDAo8QohoUeIQQ1aDAI4SoBgUeIUQ1KPAIIapBgUcIUQ0KPEKIalDgEUJUgwKPEKIaGlpLS\/ig0Wig02qh1WlTv2o00Gq10Gg10Go00KRcACD59aR4HADiiMeBeDzee4nF44jH4ojFYojF44jGYohFYylf4z13JoQTBR7JmAaAXq+HXq\/rueh00Om00Ol10Gml0ViIxmKIRqKIRmOIRKOIRJKXCOgfnVDgEU5arRYGgx4GvS7xtSfo5CwSiSIciSAcjiAciSIcjiAWi7E3IwpGgUcAAAa9HkajHkaDAQaD\/MMtU5FE8IXCYYRCEYQjEfYmREEo8FRKr9fBZDTCZDTAaNRDK5EmaaHFYjGEQhEEQ2EEQyFEIlH2JkTGKPBUQqPRwGQywGQ0wmwyQKdTRw0uX9FoFIFgT\/gFg2EaFJE5CjwF02q1MJuNMJt6LiR\/gWCo5xIIUf+fDFHgKYxWq4XFbITZZILJZGCvJjwKBsMIBIPwU\/jJBgWeQljMJljMJpjNVJMrhEAgBH8gCH8gyF5FJIQCT8YMBj2sFhMsZjO0Wmb2LimIWCwOfyAAnz+IcJhGfKWGAk+GrBYzrBYTjEZqskpZKBSGzx+Ezx9gryIFQoEnEzqdDjZrT9DRFBJ5icVi8PmD8PoCiEZpmkshUeBJnNGgh9VqgdViYq8iMuTzB+Hz+RGi5m5BUOBJlMlkgM1qoekkChUIhuD1+REMhtmriIAo8CTGbDLCZrPARP1zqhAMheH1+hEIhtiriAAo8CTCZDLCTkGnWsFQGB6vH0EKPkFR4BWY0WiA3UZNV9IjEAzB4\/UjFKKmrhAo8ApEr9fBbrPSYATh5PMH4fH6aPMCnlHgiUyj0aDIboXdZmGvIiSNx+tHt8dHmxbwhAJPRFaLGUV2K3Q6mkdHMheNxtDt8dEEZh5Q4InAYNDDYbfRYn6Sl2AwDLfHS0vW8kCBJzBHkY2ar4RXHq8f7m4vW0wyQIEnELPJCEeRTTVbpRNxRSJRuLu9NH8vS9SZxDMNAKfDjtISB4UdEYxer0NpiQNOhx20T07mqIbHI5PJCCfV6ojIIpEoXN1emrScAarh8cRRZEMZ1epIAej1OpSVOOAosrFXEQYFXp4Mej3KS500MEEKzm6zoLzUCYNez15FEijw8mC1mlFRXkwbcRLJMBoNqCgvhtVqZq8iFHi5czrsKHbY2WJCJKHYYYeT\/j\/TUOBlSa\/XobysGDb6BCUSZ7OaUV5WTP3KfVDgZcFiNqGirBhGA\/WREHkwGvSoKCuGxUybVIACL3NFditKioug0dCsJyIvGo0GJcVFKLJb2atUhwIvA8VOO\/2zENkrsltR7FR3vx4F3gC0Wi3KSp2wWqi\/jiiD1WJGWalTtSffqfOnzoDB0DO\/jrZcJ0pjMhp65uupsC+aAo+DyWRAWamTRreIYun1OpSVOlW3ZRkFHsNiNqGsxAktDU4o1uYt29DY1MwWq45Wo0FZiVNVI7gUeH3YrGaUFBexxURBFiy6BstXrMaMmvnYvGUbe7UqlRQXqWZeKQVegt1moZnpCtfY1Iyd9Q293z\/5FAVektNhV8V6cAq8RNjRThPK1zfsSDo17M6t+sArslsp7FSi6Vhqv93I6qqU70lP6Cl5zqmqA6\/IblX0H5cMrJoCj5OS3xeqDTy7zaLYPyrh1kQjsxlT6tnJqgw86rNTJ3YqytzZNSnfk1RK7NNTXeDZrGYKOxViR2hBfXgZcRTZFDVlRVWBZzGbaOqJSj3BTEEZWV1FgZchp8OumMnJqgk8k8lAk4pJr8uXXMoWkQGUFBcpYhmaKgLPYNCjpNjBFhMVqV1Tl\/I99d9lr6TYIfsNBxQfeFqtFiXOIlobq2K1a1PDbmR1FebNocDLllaj6XkvyXhrKfm+8gyVFBfRricq9wSzZnaw5qzP58fud97DwUNH2KtUT6\/XybprSNN8ojXOFipFsdOuus07kwvi2VUFUjJ3do1ogwabt2zD8hWrU8o+atje73P\/5W+bUbumDtFYFHqdHuPHj8HzT29ib6Z6Pn8AXS4PWyx5ig08Jc8W51K7ti6tn0rKRlZX4bZbluOKQWpb+ZpRMz9l\/t2qlcux6pblKbdJ+vDjvVhy9Y\/R1tqeUr74+9\/Fww\/8PqWMAN0eH7o9PrZY0hTZpLWYTaoKuwWLrpFV2CExL275itVp\/Wt8ql1blzbZ+PLF\/QfstmdfSAs7AHjjzd1sEUlUKuQ2XUVxgafX61R1UEnt2rq0CbVyUrumTpB96RqbmtM+BFatXN5vUxaJ071Idoqddln1kSuuSVuuonNjG5uaMaNmPluMKZMuRVFR\/2\/sQmo+3gC3uxnu7pM1r5HVVXhu68YBwyhbbBN\/ZHUVPmrYnnIb1kef7MOSK5ehte1kLU+j0WDx9xdg\/R9rU25LTgqFI2hr72KLJUlRged02BW1DGYw7JvaUVSFpVcP\/KaWig2b5qeE3nNbN\/I2VYTrg2Cgvru+Hnv8KfzP79YhFotBp9dh0oTxePYff2NvRhheXwAut\/QHMRTTpLVazaoKOwDYxTRlJ0\/qv39KakZUpYYb29eWD3ZUdmR1VUZhBwA\/vGoxPnn\/dWx+bD1eeGYzhV2GbFYzrDJ4\/yki8Ax6PYpVuEaWDYkpMgq8quGpgVe\/m59+SK4+zbp196Z8PxizyYSaM2di7JhR7FVkAMUOOwx6aXcnKSLwnA7a\/YRwD1TMm1PDW1OZDE7q70XZB56jyAYjHZZNOHZEQQ61O5Ifo9Eg6e3XZB14JpNRcRsUktxw1e4Gm4ZChGG3WWAyGdliSZBt4GkAOCX8SULElc9ABeGfs8gGKc5qlG3gORzymvAoJT5fGzyeFsEuYttZ35D3QAXhl16vg0OCA4mynIdnNhlRWkL727HrRJdevR2OQSYcv7L9F9j\/2TNsMa\/KyyZiwbcfRpF9GHtVr\/0HtuGV107Wyq5YcmnOIcX+HubNqcFzWzem3IYURkenG4FgiC0uGFnW8KTcKSplLS2fCB52ANDW\/hn27HuSLRZEY1Nz2vScXIOT8E9q71XZBZ6jyEZN2RwZjOJtqGA0iNOcuY\/ZfGDenJ6tp4g06PU6SYWerALPYNDTqGweSkvGYd7sW+F0jIDdNlSwy+QJl+CMWdezT8+7xqbmtI0HqHYnPXabRTJbw8uqD6+sxKmIg0T4wvZdZdKHJxV89OHtrG\/AgkXX9H6fyQYBpDCCwTDaO11ssehkU8OzWswUdiQF23c3b05NWhmRBpPJIIndx2UReBqNRlUbeqoBWxPNJajYvrrNW7bhiae25fRYRHhFdmvB9xyUReAV2a3Q6WTxUkmGHI7UsNpZ35D17sdcAxS1a+qwYNE12LyFgk9qdDptwSsukk8RvV5HAxUK5CiqSqvl1a6pyzr0uDYObUxsH0\/BJz12m6WgsywkH3h2W2E\/EYhwFi3cmHfoDbRbMht8RBoK+Z6WdOAZjQZYLfI6JIRkzlFUhQvPv5eX0PuoYXu\/mwUkgy+bxyTCsVpMBdvhSNLTUkpLHDBLdNcFKch1WsrxE+8jjsz\/7Hq9BZUVU9li3hxrbsArr61O2fIdWWzLzlq+YjV21jdwNmUHOpOWiCcQDKGj080WC06ygWcyGVFG62UHlG3ghcN+PPX0ZWhr\/4y9alDTpizG\/HPvYot5w3foIXF8JbupQMeJAynfk8Jp73QjKPI6W8k2aWmggn8Hj7ycU9gBwN79TyEYFO4TeURVDeeZHNk2b5Mam5rTwo5qdtJSiPe4JAPPbDLCVKA2vpLZbZVsUcZstiEwmfivcR9rbsCGTfPxh4cm4Z13uYMt27NrGzlOLQMtO5Mck9EgepeVJJu0ZaVOCrwMZNukBYAPP96II0dfyaIHDzAYrDh9xo\/SThrL17HmBmx99uTSsIFks+UTe3wleD4GkvAnGAqjvUO8JWeSCzyTyYCyEidbTDjkEnhS4e5uxoZN6bWw\/mTTl1c6bFLK99ncl4ivvdOFYDDMFgtCck1am1X8dj2RhuQJY30vyU0Fsgkstq\/uCZp8LGlivuclVcMzGvQoLytmi0k\/5FzD42O3lP5wNWkHmqBMCq+tvQuhcIQt5p2kanhWEZOeKNeqW5bjiiWpI76NTc2cxzgSaRDrvS+ZwNPpdLSqgvCmbt29aaG3i5mmQqTDajFBpxN+ja1kAs9mLfxeWXLDNs+ONcvnDc1OMK7muam5ecu2tKksc2mUVtLEyADJBB7V7rLHBl7zcfkEHjvnbu5s\/sIouXaWxedzEP6JkQGSGLSwWswodopz6IuSbN6yLe2NPaKqBlXDayQ7eNF8vAH7D6TWvPjemp1r0ILm4clDl8sDnz\/AFvNGEoFXXuos2O4Jcsf15pYbvufJLV+xOqU5SyO08hEKhdEm4ETkgjdpDQY9hV0eVt3CvSWSXMybU8Nr2IGjP5BGaOXDaDQIesJZwQNPjHa70n3UsB1XLLlUdsH33NaNGS8Xy8aqW5anNV9z3YSAiE\/ITCh4k3bokDJotYU92EMpGpua0djUjF27G9Ak0ZUFcxIDB1znUfCNnZgN2g9PFmKxOL76up0t5kVBA89iNqGkuIgtVqTNW7aJ8iYnJzU2NWPBomtSQi+bTQhI4XR2dcMfCLLFeStok9ZiFq7qKiXLV6zG8hWrMaNmPjWrRDSyugq3Mf2D\/e2ETKRFqGwoWOBptVqYzeLuhVUIjU3NKSOGNNtfXHLs2ySA2WyEVst\/PPH\/iBmyqCDswDE5mN2FlxDCTYiMKFjgmU3CVFmliA09alIRMjghMqIggafVamEy0dw7Qkj\/TCYD781afh8tQ2rou+uLaniE5IbvrChM4Il8cEehUeARkhu+s0L0wNNoNLz\/EFLHLnWq300DF4RkwmwyQqPhb2GC6BOPzWYjSov5P+5PynbWN2DBotTTuaQy4z85ZUaqIVxdXYW5s3smbOf6+2IP5ObaHJRIV0eXG4EAPwd2ix54ToddlI3+pIZd5lTo7Yq4tpaSulUrl+PyxdnPq2N3T+F7dxYiLK8vAJfbwxbnRHfLytvuYAuFVOyw8T7yIgd79x3Ann0Her\/XaICL\/\/OClNuIZcGia\/Dwo\/JbXrWrvgF79x3A3Dk1cDozbyV0ubrxwksn99vbVd8AaHr6VrN5HFIYOq0GXh8\/e+SJWsPT63UYUl7CFqsCV42qEM1ate6fxzZrkVhXO3dODapHZPY3SDarxf6bEeDrtk5EIlG2OGuiBp7NaoHTYWOLZe\/thvdh0Otx+qzT2KtSsM3aXN64+WhsasaMmvTDr6dMuhRVwwvXvB5I8\/EGHGtuSDsDI9suAa6NBHKVa9Oa5M7l9sLr87PFWRM18EqLHbzPqymkN96sxw0\/W4VwKAyNVgOLyYwtf38EkyeNZ28K9FO7ErOWxw6eOIqqsPRq\/rZWF9LWZ69JOaQolw+LnfUNWL5iNS+hx+c5umRwgUAIHV1utjhronamGY3C7WRaCDfctAotLa3o6OxCe3snjh0\/gauuu5G9WS+u3YnF3Il3FzMSO3mSfEYqJ0\/M\/8jFeXNqejdLzRfXqWhEOHxlh2g1PINej4ryYrZYtt7YUY+lP14Blyv1U6eivAwvPrcZY0aPSilPKmQtjx2tvPD8ezFFJqHn7m7Ghk0nm+Mj8zz4J5fNUtmtpaiWJ67Wti6EIxG2OCuiBZ7NaobToZyTyd54sx7XLbsZXa7UA0cqysvw8vNP4pRR1SnlfRWqL48CLz9slwBtJioul9uT92itaE1ao0FZmwWc+805MHNsUlhS7Bww7ADgcqZJVbumjpd+JUKUjI8MES3whDyJqFA2PLoOw4dWorysFBXlZRg75hRs3rievVkarr48vkYQCVEqPjJElMDTarXQ63VsseyddeYs7P1wB7Y++Rc8+4\/H8O6ul\/rtu2OxfT+NdJQgIQPS63V5L1rI794Z4iOZpWz6tMmYNHEcWzygeXNq0kYLpdq0DYd96Ow6ItjF4\/2KfUpCOOWbJaIMWthtFjiKlDfhOF9ck2GFHMDIZdDi8NFX8dK\/\/xuRKD+Lt\/tTc\/oNmH3Wz9niXmodtNi8ZRuajjXTROcEd7cXHm\/uE5CphldAI6urJD+A8fGexwUPOwB494OHEYvlv3RISZLLEWvX1KWN7KtVvlkiTuDp83uRSib1AQyrpYwtEoTNOgRarfL6efPBbtnFrgVWo3yzRPDA0yQ6G0n\/pDyAMW\/2bRg7+gKUlowV7DJs6AzMP+9u9qlVj\/3QYz8Y1Uiv1yGf7UAF78NT2goLobD9ayOrq\/Dc1o28\/pOzz5FJH55UqLEPj23GirUiR+ryWXEheA2PaneZuY1p2kqplkcKg2p43PLJFAo8ieAawHhiy7a0f\/p8sH1AjiJ6A0kVn393pcknU4QPPF3uL05t2KkHjU3NaSGVK65tkUZUZb6fHOlpwvb9+8zNYj++fFHt7qR8MkXwwNPpBH8KxeCq5bEjdblg++5AYZezjxq2o27dvfioYbtg8yXBsW0YBd5J+WRK7vfMkC6P6qcazZ2dGkRsUGWLK+wcRVVYdIlwne1Kd8US4ScBP8H8zcSsTUpdPpkiaOBpNBro8lz7pjZ8vpG4wg6J0VkiXY2Jvfr6ErI2KTc6rTbns2oFTSMKu+wktyDvK9cA7C\/sFl2yMevmbEvLJ\/jiyx1ZXXy+NvZhSIaoOTu4XLNF0Hl4RqMB5aVOtpgwGpuasXzFas4BilzW1vIZdm83PIB33nuQLR6UXm\/G9xc+jsoh09irciKFeXhiYeff5fI\/oHRtHS6EQmG2eFC5xWSGck1htUgG3Yya+ZxhN29OTdb\/6P2F3VlnLofDkX1NYe+nT7FFGYlEAjh4+CW2mAyidm36WurLF\/c\/OTwWi+GJp7Zhzf3rOf+HlCrXbMntXhnS5jGaomR9g44rnJD4VM92Fn\/t2rp+H++dd+uwYdN8bNg0P+X0r8GUlXCfwJaJYudItogMgh2sWLUyfa110pGjX2L6rHOxctUduOe+P+C6ZSvwk5tuZW+mSLlmi6BNWkeRDXabhS1WtcZ+zoZNmjenBrfdsjyrM1eTuA6b7k+my8o83q+wu+EB+H3t7FUDGj5sFs6YtYwtzpkamrTZHvD07YVXof6d91LWlpaXlWD9A\/dh\/nln9ylVHo\/XD3e3ly0elKCBV+yww2o1s8WqxvVPjTyDLqm\/x+biKKrCooUbZbPaQumBx\/VBOFjf3cTpc9Halv5B9OMfXY17f\/v\/2GJF8fkC6HJ72OJB5VYvzFC+2zGrRd26e\/Hc1o15hR0SUxee27oRVyy5tPcyb05N76UvdzctXZISdmQWg\/TdYYD5aJWVFWyR4uSaLYLW8MpKnTAZ8z9pSEkaOXY5HinAzihc2AGNTJu1UqDkGl4utTsAWHP\/ejz4p7\/B1eeo0IqKMuzc\/hwqKsTZx7BQgqEw2jtSj0jNRG4xmSFtjpMDlYxr+Vgj7YyialxzLwcLOwBYefMNuH7plRgypBxlpSWYMH4MNv2lTvFhhzyyRdDAy3U2tNKt4uirk9rW7kQcO+sb0gaabssg7JJuX\/UzHPh4Jz7fW4+333wBNWfOZG+iSLlmCwVegXA1Ye9bm9mAQ66qmedrPp7ZiK4U7D+gzNUHfTcUReLnYk+zy4Ta3mu5\/rwUeAWymWOvOzaQ+FY9IvXx9x\/YJpvBi0+ZwFPCYvpajg+4bOdeqlWu2SLooMWwyrKcX5iSsVuFJw0054ov7LIlJLaKqhouzQDp7m7GseaGtGAW43clpFwHKkiPeDyOEy3pU3IGI3DglYPyLl3psElsES\/TUjKRzVw9qVJCMLCTxJU06iyGeBw40ZL9BhUCN2nZEsLWrpCYhydG2CExYLJqpXzDIpf1xVKT70AFyT1bBA08km5kdVVaU+w+jgXjQlp1y3LUrbs37XVIXS7ri6WIaxpKLgMVJHuCNmmHDy1ni0g\/zUqxJh+zdtY3YBcP28gLpXpEzwcE1weFHHH134rVnaE0x7\/KvklLgVcg7KoH0D++KrCDRvMEPttWyXIJPEGbtHHBolT+LhtknSRRnkaOrdvr1tF2+7nINVsEDTwgx1elcMn1tH2NrK6i2p3CscsHldJML4zcskXQwMs1hZWO7bQGfdKrwi5mZJZdU00yl2u2CBx4Ob4qBatdW5c2JWHVyvS1tYSQ\/uWaLRR4Impsak4bnVXCvDKSGXY5XO2aOs4zLMjgcs0WCjwRsTW75FQUog6XL04\/wLt2TR0WLLqGc2016V+u2SJo4MVyfFFK1XSMOY2K+nBUZWRiL0Q29BoThzpR8GUu12wRNPDisdxeFCFKNdAql2TwDXSaHemRa7YIGnixWIwtIkT15s2pwUcN2wc8gpFrYjo5KddsEXSlBR3TmIpdUqaEXT\/ytbO+AU8m5qexfZxSkQyluXNqOPvh8rV8xWrsrG9Ia8rSKoz+SfKYRpvNAmeRjS1WLQq8VOzvQw5GVlfhtluW877Yn2t\/PAq8\/rm6vfB6\/WzxoIRt0kZzq3YS5Vuw6BrZhR369LNx7VacD67J6LRlVP9yzRZBAy+aYzubKBvXfnByw+ehSzQZPXu5ZougTVq9TochFSVssWqxu9yqtUnL7vg8oqoGkydeihFV0nyDu93NOHa8AZ8yZ4BcseTSvJcEUlM2N1+3diISjbLFgxI08DQaDYZVKv+MzExw\/WOrcTsort\/Dz396IOV7qdp\/YBteee1k05OPYNq8ZVtac1bu53WI4URLe06TjwVt0sbj8ZyrnkqS7PfpS627o7DNQEeRfN7YUyZdmvJ6uUZWs8UVbMtXrM77cZUsGovlFHYQuoYHAOWlThiNBrZY1rKZH1W\/u4Hz9mqs3YGjRjNl0qW48Pz8moVi2rBpfkqzlo\/aGNvVARV3d2QiFAqjrcPFFmdE8MArcRbBYjGxxbKzs74B93F0LueCj74fuaLA48buhAwVfygOxu8PotPVzRZnRNAmLYCcOhalpjGxYScfYTdvTo1qw06pGjl2Ms4WV19gvo+pVPlkivCBF8n9xUnFfTzNuXpu60bOf2wiH+xI8oya+b2X0mGTei\/JjQAywTWQg37690h+mSJ4k9ag16OivJgtlhV2GsW8OTUZ\/zPOmV2T1e2VTu5N2rffrcM772b+AZhJk5dr3SwfI8BK1drWhXAkwhZnRPDA0wAYJuPTy9hP35F0Qnxecg28g4deTOk745vBYMWp065gizllE3qDBR77\/wUKu0Gd+KotxxMtRAg8ABhSXgK9XscWywL7D0mBl59cAu\/d9\/+E+nfuZ4t5d8rIb+KS7zzCFnM61tyAd96rg9vdE8JcYZzp4BTbgqAR2v5FIlF83dbJFmdM8D48ADlXPwkBgC8b32KLBPFF45sIh31sMacRVTVYdMlGLFq4Ma+wQ+K2fSW3fifp8s0ScQIvnN+LJOrGDhQIZcTwM2EwWNnifrm7m7FhU\/pgQzZhh8QmAWyzt3YNP1OglCbfLBGlSWsyGVFW4mCLZYGatPzKpUkLAHv3PwWXu4kt5o3RaMdp066E0Whnr+LEV9glJac+9Z2KMjJx5gkbhmrW3ulGMBhiizMmSuBptVoMHVLKFssCBR6\/cg08KeE77JJq19bhCeZMi7p196Y1edXsq687ct7tGGI1aWOxWF5zZwiRkr4bCCTlG3ZInHfBHuxUv5uatUmRSDSvsINYgQce2t6ESMHb79bhWHNqCPERdknVI1Kbr7Ta4iQ+MkS0wAuFw2wRIbLTzYzI8hl2ZGB8ZIh4gRfKP50JKTS2dnfZYupfEwsfGSJa4IUjkbzb34RIDY2giiMWi+U9Bw9iBh54Smix0T80IYXHV3aIGnjBUP5t8ELouycZO4pGhBeLRfHOu3V4bccdWV32H8hstxIifXxlhyjz8JL0eh2GlMvzUJ\/krHfakDE\/uczDe+HlFTh4+CW2OCP\/ccF9mDRhAVucM6E2AE3aWd+ABYuu6f2eNhLo8XVbJy9T20St4UUiUUTz2LyvkObN6dnmiYjv+Ffvs0UZa\/l6H1skaez\/GB\/nZshdNBrlJewgduABQCDIT9WUqMeEcRexRRkbPeqbbJHksTXGJ55Sd9Ocz8wQtUkLAGazEaXF8lxXS\/KXS5MWAA4dfQUBf3bbAlWUT0HlkGlscV6EbtIiscSsdk3qbilqXmLW0eVGIJD7+tm+RA88OqtW3XINPKkQI\/DQz6E+yZ2zqzN8vrmze24vxOsTU65n0HIRPfAAoLTEAbPJyBYTFaDAywxXLS9Xq1Yux+WLLxXkdQotEAyho9PNFudM9D48JH4IQkj\/Vt2ynLetoWrX1Mm2H5DvrChM4PHUHidEyZJTUq5Ykn\/trHZNXVoTWQ74zoqCNGkBoKzECZPJwBYThZN7k\/YPD6WeP9Fx4kDK90JKzgXNNLjuW5sacnI72DsYDKO908UW56VggWezmuF0ZLa7LFEOdmItACy9ejscRfnVYMTAbvwp9c1g2eMf5TbS63J74PUF2OK8FKRJCwB+nquqRB64zujdf2Ab50E4UnKsuSFt40\/25yD8EiIjClbDA4DSYgfMZhqtVZv+RiDFOqwnW253M2cgS72JKOcaXiAQQkcXf6OzSQUNPIvZhJLiIraYqADXPDM5kcPGn3IOvM6ubvgDQbY4bwVr0gKAPxBELFawvCUFxNeUi0KYN6dG8mEnZ7FYXJCwQ6EDDwD8AX47JYk8JDv8V61MP5NVqpLTRGj3EmEJmQkFbdICgMGgR0VZMVtMVEiqB0\/LdXmWXJu0re1dvBzYw6XggQcA5aVOGI00J48QPskx8EKhMNo6+J1711fBm7QA4PML014nhMiL0FkgkcAL0AE\/hKhcLBaDzy9c\/x2kEngQIdkJIdImRgZIJvD4XkJCCEkl9YEXMTJAMoEXjUZFSXhC1OKyPnvgSf1MFp8\/KMp5N5IYpU0yGvQopykqhPCqsalZ8rW7tvYuhASaitKXZGp4ABAKR3jf8I8QtZN62AWCIVHCDlILPADw+vxsESFEwcR8z0su8ILBMG+njBNCpC0YCiPI4zGMg5Fc4AGA1yte4hNCCkfs97okAy8QDFEtjxCFC4bCovfZSzLwAMAjcvITQsRViPe4ZAMvGAyJnv6EEHEEgiEEC\/D+lmzgoUCfAIQQ4RXqvS3pwAuFwrT6ghCF8fmDCBWoj17SgQcAHq+PLSKEyFgh39OSD7xIJFqw6i8hhF8erx+RiPBrZvsj+cADgG6PD9Eo7ZdHiJxFozF0ewpXu4NcAi8ejxf8F0UIyU+3x4d4vLB7lcgi8JDYFVnMJSiEEP4Eg2HBdzPOhGwCDwDcHi9bRAiRAam8d2UVeOFwhAYwCJEZj9cv2LGL2ZJV4AGAu9tb0FEeQkjmIpEo3N3SqN1BjoGHROgRQqRPau9VWQZeIBgS5cAPQkjuvL6A5NbDyzLwAMDt9lDTlhCJikSicLs9bHHByTbw4gBcEqsuE0J6uLq9KOyMO26yDTwktpCiUVtCpMXj9Rdk66dMyDrwkOgULdTOC4SQVKFQWHIDFX3JPvAAwOWW7i+YEDWR+ntREYEXjkTQJcEOUkLUpMvtQTgijQnG\/VFE4AGAzxegqSqEFIjXF4BPBu8\/xQQeALjcHtFOMM+Fy+VGS0srWlpaEQjSTs5ysnffAZx19sW4p\/YPNB2KEQpH4JJJC0tRgQcAXa7ugm9B01dLSyt+eUctRk+swehJNZg842xMnnE2hp9yGmrmXYRnnnsR0Si9gaTuWPMJHDx0BLvfeQ9BgT+sDh35AlNmfhPlVVOws76BvVpS4vE4ulzdbLFkKS7wIpEoulyF\/7SJx+N4+pl\/YdbsC\/HQnzbA5XazN8Ghw0dx3Y9vxr9efJW9iqhYwB+Ax+NFLBaDh9llZO++A5h9znew\/tHHJPHB3uWS1wIAxQUeAPgDwYJuGBqPx\/HnDX\/Hshtvhd8fQFGRHXf8ciX2fvAGWo\/tQ9OhD\/Dmq8\/giiWXYuKEcRgzehT7EETFJk8aj+e2bsTz2zZh\/nlnp1y3\/fW38Nnnh\/DCi6\/C5yvsHNRujw\/+gLC1Xb4pMvCQ+GMUasPBDz\/ag3tq\/4hYLIbZZ52B3Tuex89u\/C8MHzYUOp0ONpsV06ZOQt26e7F7x\/OYNnUS+xApAsEgWlpa0dHZxfunejQaRWtbO75ubctqC59c7pf8OVpaWuFypdd4B5Ls\/8z0+frrL3W53IP2n4bDEXzd2obWtvYBuxuyfU0A4PX6el+Xt5\/DbHQ6HaZPnYQzT58Jg0HPXi0JPn+goJWKXCk28JCobgdFnpQcDkfwwPq\/wuV245RR1Vj\/QC2GDxvK3qxfXq8P31tyHc46+2Icaz6BP\/15E0aNOx2TZ5yNcVO+gW3PvgAAePHl1zCkeioefHgD+xAAgDXr1mPoqFPx0r9f7y3r6OzC\/P\/8Ps46+2J88WUTHnx4A6rHnY6J0+di0qnzMOyUU\/GLX\/4W3d2pXQK53i\/J5\/Pj9l\/fgxFjZvb2YY6eVINvfWcJDh35gr15ys92\/MRXWHTZj3r7PyedOg\/jpn4Dr772Jns3INH\/9a3vLEnpLx017nT88cE\/49XX3sTYKd\/A0ut\/jkCg58MwEonillV3YPTEGnz0yT68\/MobGDf1G5h06jxMnD4Xa+5fzz4FvmppxTXX3ZTymkZNOAMPPryh3+D7+us2LF22AtXjZvW+rupxs7B02Qp8\/XVbym3d7m4sWPRDTJt1Dg4dPop4PI71jz6G6aefh9\/f\/xAAYPc776Nm3kWYfvp5eOQvj6fcX2jBUFgS3Ua5UHTgAUBnV7eofQyHDh\/FGzvqAQA3LPshRlZXsTcZkMfjxaHDR3Gs+Tjuqf0Dbv\/1PXA6HSgvK4XRaERpaQkA4PODhxGJRLFv\/2fsQwAAjhz5EqFQCJ99fqi3LBwKo7WtHUe\/+BKXXf0T\/OrOWgQCATgdDmi1WsRiMTzyl8ex8AfX4viJr\/K+HxJv3iuv\/SkefnQjYrEYihM\/CwC89\/7HuPCixfjgw09S7pP82Z7550u4ZNEP8fqOXaisrECx0wEA6O724IabVuHAZyd\/NgD48OO9uOi7l+O99z8GABQ7HaisrEA4EsEdv12DH994K2KxGPbt\/wyuREd7MBjE5wcPw+V2Y+PjT+HKa38KnVaLysoKaLVaDBs6JOU5Dh35AhdfcgWef\/EVWK0WDBtaCa1Wi0AggF\/dWYtbV9+VFnpNx47j2wuvxLP\/fAkAUF5W2vuzPPvPl\/DthVei6djx3tv7\/QE0HWtGa1s7Dh3+AsFQCPX176L5+IneZmwsFsOJr1rQfPwE9u4\/0HtfoUUiUXR2yWeQgqX4wIvFYuh0dSPGc1OwP3v3H4DL7UZJsRPnnD2bvTpjfn8AT219Dn9evxaf7dmFz\/fW46svP8G535zD3jRrkUgUnx88jMt+sBCH9r+No581oKVxDzb+9QFYLGZ8+PFerF33cNoHRbb3i8fj+N2aB7Djrd04ZVQ13tr+LI4caMDne+ux94M3cNF\/nA+X243lN9+O1rb2lOcCgPc\/+BhTJk\/AZ3t24dOP3sKRAw3Y+uRfYLGY0d7RidfeeKv3tl6vD7++sxbtHZ0pz\/XpR2\/hsz278N2LL0Rnlyvl8Vl\/27QF\/2\/Vz3Fw3258+tFbaGvej2uuWpxym5aWVni8Xjzy4Bp8+fl72PfhDhw7\/AFu++8bAQCbNv8fXnrlZK06EAjgttvvwuGjX2L2WWdg7wdv4PO99ThyoAG7dzyP6VMn4\/DRL3Hb7Xf11jpZZpMJf31kHQ58shMrV9wAADjj9NPwXv3LOPDJTqz93R3sXQQRi8d73ksx+Z4gqPjAQ6KZ2dmVXZ9Rro4f76nh2GxWOB09n+J97f\/0czz3\/Mspl7cb3ufsK7ruh5dj4YKLoNFo2Kvy9h8Xnov\/ve8OlJYUA4l+o+9cdCHq7r8HGo0GTz\/zAg4eOsLeLav7HTx0BFv+71kYDQY8+Id7MXXKxN7HGT5sKB64\/x7MnDEdBz47xDlSPWb0SNxz9+2oKC\/rLTt77jdwwfnfBADs3Xeydvt2w\/uof\/s9WCxmPPrQmpTnqigvw\/1r7sbMGdN7y7icf+483LDsh9DpdOxVKe7\/\/V34\/ve+03s7s9mMW1bcgCuWXIp4PI7HNm3pDa+3Gz7Av1\/dgcrKCjxw\/\/+kdG9MnDAOGx5dh8rKCvz71R14u+GD3utYBoMeQyrKYbNZAQAmoxGVQyowpKJctH6+zi53Wu1VblQReEicmlToqvjXrW24aumNuPb6n6dcvr3wKry16x325vjWBecIEnYajQb\/tfRKmM1m9iqcd+48zDh1Klxud1pTKdv7fXbwCDq7XKiqGobGpua0oN+56x2YTSYAQP3b76YNyEydMgmVQ1KblHq9DrM4gmv3O+8hHo\/jgvO\/idNOncZejdKSYlz2g0vY4hTnnzuX82fra\/y4MZy1bINBj6uu+D70eh327j+Ar1paAQAffLgH8XgcI6ursGfvp2m\/g\/c++BhFdjvi8Tg++HAP+7CS0dnVrYhTA1UTeEhMVxF6Rvjw4T2f4F6vL23uXUlxMb638GJUDR+GquHDevuy4vE4AszwvsViRnmfmg2fzGYTyhLPzSp2OjBxwjigT201Kdv7HUkMSBz9ohE33LQqLeivvf7n2P3OewCA1tZ2+JlRdZvVCr1+4NpW0vHjLQCAWTOm93uf0aeMZItSjBl9CluUZkhFGWzWnloWa\/SokRhaOQTd3R50JUahDx0+CgB4972PsHTZirSf\/yfLb+u9zReNTSmPJxUut0d200\/6o6rAQ2LNn5Db10ybMglOhwOdXS7seGt3ynUGgx6\/\/MXN2PP+69jz\/ut4avOjsFgGrlEoQdXwYbj6yh\/gmisXc16u++Hl+MWtN8FqtbB3zVo0Ks3+palTJqb93H0vy350FX5243+xdys4d7dXUWvUVRd4SGxQKFTojRs7Guee09PkWf\/IY2hsamZvwqtINJLWFAwEg2jv6Ewp68vvD+DEiZ4aEavL5e4d2U3WVpOyvV\/y65CKMtz5q1uxbs1dnJc1v\/sNzjpzVsrjZWvc2NEAgI\/37EsbbEk6+kUjW5S1xqZmuN3cXSNHv2zEVy1fo6jI3jsKO3x4JQBgzOhRWPO736T97MnL7377S4wbM3gNU0zubq\/iNthVZeAhEXpCTJw0GPS46Ybr4HQ48MWXTVh6\/c8FCT1n4g11+PAXcDFvQLe7G1982dM8YkMr6ZG\/bOJ8477+xk589Mk+lBQ7cdr0KezVWd3vtOlTUFLsxIcf7+2dP8gKhyO8rBiYNXM6NBoNXv7363j3\/Q\/Zq9Ha1o4NG59ki7PWdOw4nub4WcLhCB7f\/A9EIlGcNn0qhiams8ybcxY0Gg3+9eKr2MnRT4vEB9Rgk6HF1u3xKS7soObAQ+KPKkTozZwxHbev+hm0Wi0+\/Hgvzp5\/Cf744J9x\/MRXiEaj8Hp9+PTAQWz6+\/+l9d1l6qwzZ8HpcODDj\/fi4Uce6x0V9Pn8WPfAIzh46AicDgemTeFexbHjrd1YufpOdHR2AYmVE\/94+nksv\/l2xONxLFxwEWefVjb3Gz9uDJYkBgpuXX0X1j3wSO\/rjMfj2LP3U8w7fwFmnnVBbz9Wrr5RMwvfuuAchMJhLPvprXhz59u9Nd8vG49h2U9Xps3by9Vv7v49Nj7+VO+Ipc\/nx2\/uvg+bt2yDVqvFtVcv6R2MSb6uWCyGK5f+FP94+vneEfloNIrtr7+F6bPOxYUXL+79nQ4kOSLrdnvg8\/vh8Xg5R\/jzIdT7QgpUHXhI\/HH5bt4mRzMfefD3sFjM6O724I7frsG0WeeiYsRUVI+bhbnnfRcbNj6JeDyOqVMm4tTpk9mHGdCkieNw88+WAQDu+98HMXz0DIwcfzpGjJ2Jhx\/dCAC4+WfLMGliz0BCX3q9DhPGj8U\/nn4e46Z8A0NHTkfFiKlYduNK+P0BzJp5Km777xvTOv+zvZ9Go8EvVt6E+eedjVgshrvu+V8MHz0D46fORsWIqTjnwktx8NARTJk8AUMqylOeK1tmsxn33fNrjB09Cs3HT2DhD67F0JHTMWLsTMw86wLseGs3Zpw6lb1b1iorK1BWWoIVt\/4alSOnYcykmpTf+fIbrsOF88\/pvX3ydU2aOA5+fwDLblyJihFTMWHaHFSMmIofXHE92js6cfrM01Bkt\/d5ph7s3+DM02fCaDBgz75PMXH6XIwcfzo2bf5Hym3y4e72KjbsQIHXQ4g+PY1Gg+8t\/DY+2P0KfvrjpZzTHcaNHY2H\/vg7vPKvLb3zs+x2G8aNHY0xo0dhSEX\/o7QajQY3LLsWtf\/zSxQV9bxRkjtrlJeV4tGH1uLGnyzlnNZiMBjwh7V3485f3Qqz2YxQuGe6gVarxbIfXYVtW\/6KysoK9m453c\/hKMKmvz6AO391a++8xPaOTsRiMZjNZtz5q1vxxMb1cDiKeu8zYfxYGPR6TO\/nQ2DihHEwGo0pc+0AoHrEcDy79TFc8t3\/BBI7Yft8fhQV2fHoQ2tx\/5q7UVZaggvnn9M72mwymTBh\/FiUlZZgRNWwlMfry263QavV4oyZp+GFZzf3PkdyNDb5O\/\/V6pvTQqp6xHC8\/M8n8ZPrr4FB31NDa2vvSLnf2trf9Nbe7HYbJk0cj\/HjxmDK5Akpj3XG6afhnrtv7\/1djh83BjVnzEy5Ta6U2GfH0jSfaBVnCYIM2KxmOB3pn7J8iMfj6OxyIZxY2+ssdvQ2e\/LV97HNZlNv\/x6rpaUVF357Mdo7OvGvZ\/6OGadORTQa7d2UoKS4mHMSa673Y\/V9nVqdFqUlxYNO8s1VIBiEq8vN6\/O43d2wWCy9P2suz5H8vcWiMRiMBpQUOzk\/lMTmcnsUNRrbH6rh9eH1BQSbnKzRaFBaUozKygpUVlbwFnZgHru\/sOuPTqdDRXlZ1jP2c7lf39dZUV6WUUDkymwy8f48DkdRys+ay3Mkf2+VlRUoLSmWRNh1dnWrIuxAgZfOHwiivdMl2tpbQgolFo+jvdOlmEnFmaDA4xAMhtHe4ep3PhchcheJRNHe4VLEcrFsUB\/eALRaLUqKi2AyGtirZCkej+OFl7ajvb0Dly\/5XsZN0VzvR6QpGOpZVy7nXU9yRYGXgWKnHVYVLAEjyufzB2S7eScfqEmbgS6XR9Fzk4g6dHt8qg47UOBlrtvjQ2eXtI6AJCQTPdOBuulDmwIvO\/5AEK3tXZI+7JuQvkLhCFrbu1Q1EjsQCrwsRSJRtLV3qWbeEpEvry+AtvYumm3QBwVejlxuD7oE3kyUkFx1uT2Cb3YrRxR4efD5Amht60JI5KMgCelPKBRGa1sXfNQC4USBl6dwJIK2DpfiF10T6fN4\/WjrcCEcoT7m\/lDg8cTd7UV7p5v6S4joIpEo2jvdvO\/4o0Q08ZhnGgAOhx02K01UJsLz+gJwuz2gN3FmqIbHs3hiQKODantEQJFIFB2dbrgo7LJCNTyBOYpssNvyP42LkCQhNqxVCwo8ERgMejjsNphMytiEgBRGMBiG2+PtPUuDZI8CT0RWixlFdit0OupJIJmLRmPo9vjgYw4qJ9mjwBOZRqNBkd1KzVySkeRxorSGmx8UeAWi1+tgt1lhtfC31TtRDp8\/CI\/XRwNfPKPAKzCj0QC7zQKzycheRVQoEAzB4\/XT6h2BUOBJhMlkhN1mUczuyiQ7wVAYHq8fwWCIvYrwiAJPYswmI2wUfKoRDIXh9foRoKATBQWeRJlMBtis1NRVqkAwBK\/Pr7pDdAqNAk\/ijAY9rFYLDW4ohM8fhM\/np01kC4QCTyZ0Oh1sVjOsFhO0WprHJyexWAw+fxBeXwDRKI26FhIFngxZLT3BZ6R+PkkLhcI9NTqaMCwZFHgyZjDoYbWYYDGbodVq2KtJAcRicfgDAfj8QVoCJkEUeAphMZtgMZtgNtMgRyEEAiH4A0E6LEfiKPAURqvVwmI2wmwy0WYFAgsGwwgEg\/AHQojFYuzVRIIo8BRMq9XCbDbCbOq5kPwFgqGeC4WcLFHgqYRGo4HJZIDJaITZZIBOp2NvQjhEo1EEgmEEQyEEg2FaxC9zFHgqpdfrYDIaYTIaYDTqaapLQiwWQygUQTDUE3K0eF9ZKPAIAMCg18No1MNoMMBg0EOvV0cNMBKJIhyOIBQOIxSK0IlfCkeBRzhptVoYDHoY9LrEV\/mHYCQSRTgSQTgcQTgRdNQPpy4UeCRjGgD6RPDp9TrodTrodFro9DroJNIkjsZiiEaiiEZjiESjiESSlwgddkMo8Ag\/NBoNdFottDpt6leNBlqtFhqtBlqNBpqUCwAkv57UMy4QRzwOxOPx3kssHkc8FkcsFkMsHkc0FkMsGkv5SoMKZCAUeIQQ1ZBGO4QQQkRAgUcIUQ0KPEKIalDgEUJUgwKPEKIaFHiEENWgwCOEqAYFHiFENSjwCCGqQYFHCFENCjxCiGpQ4BFCVIMCjxCiGhR4hBDVoMAjhKgGBR4hRDUo8AghqkGBRwhRjf8PrhB\/cTMgpGEAAAAASUVORK5CYII=\")}\" alt=\"Gruppenarbeit\"><\/button><\/div>`}\n            };\n\n            const def = presets[type];\n            if (!def) return;\n            const el = widgetShell(def.title, type);\n            el.querySelector('.cb-widget-body').innerHTML = def.html;\n            board.appendChild(el);\n            el.style.left = (cfg.x ?? def.x) + 'px';\n            el.style.top = (cfg.y ?? def.y) + 'px';\n            el.style.width = (cfg.width ?? def.width) + 'px';\n            el.style.height = (cfg.height ?? def.height) + 'px';\n            el.style.zIndex = cfg.z || ++zCounter;\n            if (cfg.id) el.dataset.id = cfg.id;\n            const state = cfg.state || {};\n\n            if (type === 'text') {\n                const editor = el.querySelector('.cb-text-editor');\n                if (state.html) editor.innerHTML = state.html;\n                initRichText(el, '.cb-text-editor');\n                editor.addEventListener('input', () => { saveLayout(); });\n            }\n            if (type === 'todo') {\n                const editor = el.querySelector('.cb-todo-editor');\n                if (state.html) editor.innerHTML = state.html;\n                initRichText(el, '.cb-todo-editor');\n                editor.addEventListener('input', () => { saveLayout(); });\n            }\n            if (type === 'timer') initTimer(el, state);\n            if (type === 'names') initNames(el, state);\n            if (type === 'classstatus') initClassStatus(el, state);\n            if (type === 'noise') initNoise(el, state);\n            if (type === 'draw') initDraw(el, state);\n            if (type === 'clock') initClock(el, state);\n            if (type === 'mode') initMode(el, state);\n            if (type === 'geometry') initGeometry(el, state);\n\n            bringToFront(el);\n\n            const autoFitTypes = ['timer','noise','clock','mode','names'];\n            if (autoFitTypes.includes(type)) {\n                fitWidgetToContent(el);\n            } else {\n                el.style.width = (cfg.width ?? def.width) + 'px';\n                el.style.height = (cfg.height ?? def.height) + 'px';\n            }\n\n            if (cfg.width) el.style.width = cfg.width + 'px';\n            if (cfg.height && !autoFitTypes.includes(type)) el.style.height = cfg.height + 'px';\n\n            saveLayout();\n        }\n\n        document.querySelectorAll('[data-add]').forEach(btn => btn.addEventListener('click', () => createWidget(btn.dataset.add)));\n        document.getElementById('cb-save-layout').addEventListener('click', saveLayout);\n        document.getElementById('cb-reset-layout').addEventListener('click', () => {\n            if (!confirm('Gesamtes Layout wirklich l\u00f6schen?')) return;\n            localStorage.removeItem(STORAGE_KEY);\n            board.innerHTML = '';\n        });\n        document.getElementById('cb-export-layout').addEventListener('click', () => {\n            saveLayout();\n            const data = localStorage.getItem(STORAGE_KEY) || '[]';\n            const blob = new Blob([data], {type:'application\/json'});\n            const a = document.createElement('a');\n            a.href = URL.createObjectURL(blob);\n            a.download = 'classroom-board-layout.json';\n            a.click();\n            URL.revokeObjectURL(a.href);\n        });\n        document.getElementById('cb-import-layout').addEventListener('change', e => {\n            const file = e.target.files[0];\n            if (!file) return;\n            const reader = new FileReader();\n            reader.onload = () => {\n                try {\n                    const parsed = JSON.parse(reader.result);\n                    localStorage.setItem(STORAGE_KEY, JSON.stringify(parsed));\n                    board.innerHTML = '';\n                    loadLayout();\n                } catch(err) { alert('Import fehlgeschlagen.'); }\n            };\n            reader.readAsText(file);\n        });\n\n        const fullscreenBtn = document.getElementById('cb-fullscreen');\n        fullscreenBtn.addEventListener('click', async () => {\n            const el = document.getElementById('cb-app');\n            try {\n                if (!document.fullscreenElement) await el.requestFullscreen?.();\n                else await document.exitFullscreen?.();\n            } catch(err) {}\n        });\n        document.addEventListener('fullscreenchange', () => {\n            document.body.classList.toggle('cb-fullscreen-active', !!document.fullscreenElement);\n            fullscreenBtn.textContent = document.fullscreenElement ? 'Vollbild beenden' : 'Vollbild';\n        });\n\n        const bgSelect = document.getElementById('cb-bg-select');\n        function setBackground(value){\n            board.className = '';\n            const map = {\n                gradient1:'cb-bg-gradient1',\n                gradient2:'cb-bg-gradient2',\n                gradient3:'cb-bg-gradient3',\n                grid:'cb-bg-grid',\n                chalk:'cb-bg-chalk'\n            };\n            board.classList.add(map[value] || 'cb-bg-gradient1');\n            localStorage.setItem(BG_KEY, value);\n        }\n        bgSelect.addEventListener('change', e => setBackground(e.target.value));\n        const savedBg = localStorage.getItem(BG_KEY) || 'gradient1';\n        bgSelect.value = savedBg;\n        setBackground(savedBg);\n\n        loadLayout();\n        if (!board.querySelector('.cb-widget')) {\n            createWidget('clock');\n            createWidget('timer');\n            createWidget('classstatus');\n            createWidget('names');\n        }\n    })();\n    <\/script>\n    \n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":4,"featured_media":0,"parent":1522,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1530","page","type-page","status-publish","hentry"],"featured_image_src":null,"_links":{"self":[{"href":"https:\/\/jaeger.schule\/index.php?rest_route=\/wp\/v2\/pages\/1530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jaeger.schule\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jaeger.schule\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/jaeger.schule\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/jaeger.schule\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1530"}],"version-history":[{"count":2,"href":"https:\/\/jaeger.schule\/index.php?rest_route=\/wp\/v2\/pages\/1530\/revisions"}],"predecessor-version":[{"id":1535,"href":"https:\/\/jaeger.schule\/index.php?rest_route=\/wp\/v2\/pages\/1530\/revisions\/1535"}],"up":[{"embeddable":true,"href":"https:\/\/jaeger.schule\/index.php?rest_route=\/wp\/v2\/pages\/1522"}],"wp:attachment":[{"href":"https:\/\/jaeger.schule\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}