{"id":11,"date":"2026-09-14T18:29:31","date_gmt":"2026-09-14T18:29:31","guid":{"rendered":"https:\/\/game.ussl.co\/?page_id=11"},"modified":"2026-09-28T08:25:16","modified_gmt":"2026-09-28T08:25:16","slug":"swipe","status":"publish","type":"page","link":"https:\/\/game.ussl.co\/?page_id=11","title":{"rendered":"\u05d7\u05d9\u05d3\u05d5\u05df \u05d2\u05dc\u05d9\u05dc\u05d4"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"11\" class=\"elementor elementor-11\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8f29a64 e-con-full e-flex e-con e-parent\" data-id=\"8f29a64\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0130b8f elementor-widget-mobile__width-initial elementor-widget elementor-widget-html\" data-id=\"0130b8f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"hussla-app\" data-version=\"2.1.0\">\r\n\r\n    <div id=\"hussla-feed\" class=\"hussla-feed\" role=\"feed\"><\/div>\r\n\r\n    <header class=\"hussla-hud\">\r\n\r\n        <div class=\"hussla-brand\">\r\n            HussLa<span><\/span>\r\n        <\/div>\r\n\r\n        <div class=\"hussla-hud-center\">\r\n\r\n            <div class=\"hussla-hud-score\">\r\n                <span>\u05e0\u05d9\u05e7\u05d5\u05d3<\/span>\r\n                <strong id=\"hussla-score\">0<\/strong>\r\n            <\/div>\r\n\r\n            <div class=\"hussla-hud-streak\">\r\n                <span class=\"hussla-streak-mark\">\u25c6<\/span>\r\n                <strong id=\"hussla-streak\">0<\/strong>\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n        <div class=\"hussla-hud-actions\">\r\n\r\n            <button id=\"hussla-theme-toggle\"\r\n                    class=\"hussla-icon-button\"\r\n                    type=\"button\"\r\n                    aria-label=\"\u05e2\u05e8\u05db\u05ea \u05e0\u05d5\u05e9\u05d0\"><\/button>\r\n\r\n            <button id=\"hussla-sound-toggle\"\r\n                    class=\"hussla-icon-button\"\r\n                    type=\"button\"\r\n                    aria-label=\"\u05e6\u05dc\u05d9\u05dc\u05d9\u05dd\"><\/button>\r\n\r\n            <button id=\"hussla-settings-toggle\"\r\n                    class=\"hussla-icon-button\"\r\n                    type=\"button\"\r\n                    aria-label=\"\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea\"><\/button>\r\n\r\n        <\/div>\r\n\r\n    <\/header>\r\n\r\n\r\n    <div id=\"hussla-scroll-cue\"\r\n         class=\"hussla-scroll-cue\"\r\n         hidden>\r\n\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\">\r\n            <path\r\n                d=\"m6 9 6 6 6-6\"\r\n                stroke=\"currentColor\"\r\n                stroke-width=\"1.6\"\r\n                stroke-linecap=\"round\"\r\n                stroke-linejoin=\"round\"\r\n            \/>\r\n        <\/svg>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div id=\"hussla-settings\"\r\n         class=\"hussla-settings\"\r\n         hidden>\r\n\r\n        <div class=\"hussla-settings-title\">\r\n            \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea\r\n        <\/div>\r\n\r\n        <label class=\"hussla-setting\">\r\n\r\n            <span>\r\n                <strong>\u05e8\u05d8\u05d8<\/strong>\r\n                <small>\u05e2\u05d3\u05d9\u05df. \u05d1\u05dc\u05d9 \u05dc\u05d4\u05e6\u05d9\u05e7.<\/small>\r\n            <\/span>\r\n\r\n            <input id=\"hussla-haptics-toggle\"\r\n                   type=\"checkbox\">\r\n\r\n        <\/label>\r\n\r\n        <label class=\"hussla-setting\">\r\n\r\n            <span>\r\n                <strong>\u05d0\u05e0\u05d9\u05de\u05e6\u05d9\u05d5\u05ea<\/strong>\r\n                <small>\u05db\u05d5\u05dc\u05dc \u05d7\u05d2\u05d9\u05d2\u05d5\u05ea \u05e8\u05e6\u05e3.<\/small>\r\n            <\/span>\r\n\r\n            <input id=\"hussla-motion-toggle\"\r\n                   type=\"checkbox\">\r\n\r\n        <\/label>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div id=\"hussla-toast\"\r\n         class=\"hussla-toast\"\r\n         aria-live=\"polite\"><\/div>\r\n\r\n    <div id=\"hussla-flash\"\r\n         class=\"hussla-flash\"><\/div>\r\n\r\n    <div id=\"hussla-celebration\"\r\n         class=\"hussla-celebration\"><\/div>\r\n\r\n<\/div>\r\n\r\n\r\n<style>\r\n\r\n\/* =========================================================\r\n   HUSSLA 2.1\r\n   ========================================================= *\/\r\n\r\nhtml,\r\nbody {\r\n    margin: 0 !important;\r\n    padding: 0 !important;\r\n    width: 100%;\r\n    overflow-x: hidden !important;\r\n    background: #05080d;\r\n}\r\n\r\nbody {\r\n    overscroll-behavior-x: none;\r\n}\r\n\r\n#hussla-app {\r\n\r\n    --bg: #05080d;\r\n\r\n    --surface:\r\n        rgba(12,19,28,.72);\r\n\r\n    --surface-strong:\r\n        rgba(8,14,21,.94);\r\n\r\n    --soft:\r\n        rgba(255,255,255,.055);\r\n\r\n    --border:\r\n        rgba(255,255,255,.105);\r\n\r\n    --border-strong:\r\n        rgba(255,255,255,.20);\r\n\r\n    --text:\r\n        #f5f8fb;\r\n\r\n    --muted:\r\n        #95a3af;\r\n\r\n    --faint:\r\n        #687581;\r\n\r\n    --accent:\r\n        #2de6e6;\r\n\r\n    --accent-rgb:\r\n        45,230,230;\r\n\r\n    --success:\r\n        #51ecb4;\r\n\r\n    --success-rgb:\r\n        81,236,180;\r\n\r\n    --error:\r\n        #ff7182;\r\n\r\n    --error-rgb:\r\n        255,113,130;\r\n\r\n    --hint:\r\n        #f2c86a;\r\n\r\n    --hint-rgb:\r\n        242,200,106;\r\n\r\n    --safe-top:\r\n        env(safe-area-inset-top,0px);\r\n\r\n    --safe-bottom:\r\n        env(safe-area-inset-bottom,0px);\r\n\r\n    direction: rtl;\r\n\r\n    position: relative;\r\n\r\n    left: 50%;\r\n\r\n    width: 100vw;\r\n    width: 100dvw;\r\n\r\n    max-width: none !important;\r\n\r\n    height: 100vh;\r\n    height: 100svh;\r\n    height: 100dvh;\r\n\r\n    margin: 0 !important;\r\n    padding: 0 !important;\r\n\r\n    transform:\r\n        translateX(-50%);\r\n\r\n    overflow: hidden;\r\n\r\n    isolation: isolate;\r\n\r\n    color: var(--text);\r\n\r\n    background:\r\n        radial-gradient(\r\n            circle at 88% 0%,\r\n            rgba(var(--accent-rgb),.11),\r\n            transparent 32%\r\n        ),\r\n        radial-gradient(\r\n            circle at 4% 88%,\r\n            rgba(94,73,255,.08),\r\n            transparent 35%\r\n        ),\r\n        var(--bg);\r\n\r\n    font-family:\r\n        \"Heebo\",\r\n        \"Assistant\",\r\n        Arial,\r\n        sans-serif;\r\n\r\n    -webkit-font-smoothing:\r\n        antialiased;\r\n\r\n    text-rendering:\r\n        optimizeLegibility;\r\n\r\n    color-scheme: dark;\r\n}\r\n\r\n\r\n\/* \u05db\u05dc \u05d4\u05de\u05e9\u05d7\u05e7 \u05de\u05e2\u05d8 \u05e9\u05de\u05d0\u05dc\u05d4 \u05d1\u05de\u05d5\u05d1\u05d9\u05d9\u05dc *\/\r\n\r\n@media (max-width:767px) {\r\n\r\n    #hussla-app {\r\n\r\n        width:\r\n            calc(100vw + 16px);\r\n\r\n        width:\r\n            calc(100dvw + 16px);\r\n\r\n        transform:\r\n            translateX(\r\n                calc(-50% - 8px)\r\n            );\r\n    }\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   LIGHT\r\n   ========================================================= *\/\r\n\r\n#hussla-app[data-theme=\"light\"] {\r\n\r\n    --bg:\r\n        #f4f8fa;\r\n\r\n    --surface:\r\n        rgba(255,255,255,.80);\r\n\r\n    --surface-strong:\r\n        rgba(255,255,255,.97);\r\n\r\n    --soft:\r\n        rgba(16,34,46,.055);\r\n\r\n    --border:\r\n        rgba(13,35,49,.11);\r\n\r\n    --border-strong:\r\n        rgba(13,35,49,.21);\r\n\r\n    --text:\r\n        #10202c;\r\n\r\n    --muted:\r\n        #62737f;\r\n\r\n    --faint:\r\n        #88959e;\r\n\r\n    --accent:\r\n        #008e98;\r\n\r\n    --accent-rgb:\r\n        0,142,152;\r\n\r\n    --success:\r\n        #087f5c;\r\n\r\n    --success-rgb:\r\n        8,127,92;\r\n\r\n    --error:\r\n        #d6455b;\r\n\r\n    --error-rgb:\r\n        214,69,91;\r\n\r\n    --hint:\r\n        #966707;\r\n\r\n    --hint-rgb:\r\n        150,103,7;\r\n\r\n    color-scheme: light;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RESET\r\n   ========================================================= *\/\r\n\r\n#hussla-app *,\r\n#hussla-app *::before,\r\n#hussla-app *::after {\r\n    box-sizing: border-box;\r\n}\r\n\r\n#hussla-app button,\r\n#hussla-app input {\r\n    font: inherit;\r\n}\r\n\r\n#hussla-app button {\r\n    -webkit-tap-highlight-color: transparent;\r\n}\r\n\r\n#hussla-app button:focus-visible,\r\n#hussla-app input:focus-visible {\r\n\r\n    outline:\r\n        2px solid\r\n        var(--accent);\r\n\r\n    outline-offset: 3px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   FEED\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-feed {\r\n\r\n    position: absolute;\r\n\r\n    inset: 0;\r\n\r\n    width: 100%;\r\n    height: 100%;\r\n\r\n    overflow-x: hidden;\r\n    overflow-y: auto;\r\n\r\n    scrollbar-width: none;\r\n\r\n    scroll-snap-type:\r\n        y mandatory;\r\n\r\n    overscroll-behavior-y:\r\n        contain;\r\n\r\n    -webkit-overflow-scrolling:\r\n        touch;\r\n}\r\n\r\n#hussla-app\r\n.hussla-feed::-webkit-scrollbar {\r\n    display: none;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HUD\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-hud {\r\n\r\n    position: absolute;\r\n\r\n    z-index: 50;\r\n\r\n    top: 0;\r\n    right: 0;\r\n    left: 0;\r\n\r\n    height:\r\n        calc(\r\n            67px +\r\n            var(--safe-top)\r\n        );\r\n\r\n    padding:\r\n        calc(\r\n            9px +\r\n            var(--safe-top)\r\n        )\r\n        14px\r\n        9px;\r\n\r\n    display: grid;\r\n\r\n    grid-template-columns:\r\n        1fr\r\n        auto\r\n        1fr;\r\n\r\n    align-items: center;\r\n\r\n    pointer-events: none;\r\n\r\n    background:\r\n        linear-gradient(\r\n            180deg,\r\n            rgba(3,7,11,.72),\r\n            rgba(3,7,11,.17),\r\n            transparent\r\n        );\r\n}\r\n\r\n#hussla-app[data-theme=\"light\"]\r\n.hussla-hud {\r\n\r\n    background:\r\n        linear-gradient(\r\n            180deg,\r\n            rgba(244,248,250,.9),\r\n            rgba(244,248,250,.24),\r\n            transparent\r\n        );\r\n}\r\n\r\n#hussla-app .hussla-brand {\r\n\r\n    justify-self: start;\r\n\r\n    direction: ltr;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    gap: 7px;\r\n\r\n    font-size: 19px;\r\n\r\n    font-weight: 900;\r\n\r\n    letter-spacing:\r\n        -.055em;\r\n\r\n    pointer-events: auto;\r\n}\r\n\r\n#hussla-app .hussla-brand span {\r\n\r\n    width: 6px;\r\n    height: 6px;\r\n\r\n    border-radius: 50%;\r\n\r\n    background:\r\n        var(--accent);\r\n\r\n    box-shadow:\r\n        0 0 12px\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .75\r\n        );\r\n}\r\n\r\n#hussla-app .hussla-hud-center {\r\n\r\n    justify-self: center;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    gap: 7px;\r\n\r\n    pointer-events: auto;\r\n}\r\n\r\n#hussla-app .hussla-hud-score,\r\n#hussla-app .hussla-hud-streak {\r\n\r\n    min-height: 35px;\r\n\r\n    padding:\r\n        6px\r\n        10px;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    gap: 6px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius:\r\n        999px;\r\n\r\n    background:\r\n        rgba(8,14,21,.34);\r\n\r\n    backdrop-filter:\r\n        blur(14px);\r\n\r\n    -webkit-backdrop-filter:\r\n        blur(14px);\r\n}\r\n\r\n#hussla-app[data-theme=\"light\"]\r\n.hussla-hud-score,\r\n#hussla-app[data-theme=\"light\"]\r\n.hussla-hud-streak {\r\n\r\n    background:\r\n        rgba(255,255,255,.62);\r\n}\r\n\r\n#hussla-app .hussla-hud-score span {\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    font-size: 9px;\r\n\r\n    font-weight: 650;\r\n}\r\n\r\n#hussla-app .hussla-hud-score strong,\r\n#hussla-app .hussla-hud-streak strong {\r\n\r\n    direction: ltr;\r\n\r\n    font-size: 12px;\r\n\r\n    font-weight: 850;\r\n\r\n    font-variant-numeric:\r\n        tabular-nums;\r\n}\r\n\r\n#hussla-app .hussla-streak-mark {\r\n\r\n    color:\r\n        var(--accent);\r\n\r\n    font-size: 8px;\r\n}\r\n\r\n#hussla-app .hussla-hud-actions {\r\n\r\n    justify-self: end;\r\n\r\n    display: flex;\r\n\r\n    gap: 1px;\r\n\r\n    pointer-events: auto;\r\n}\r\n\r\n#hussla-app .hussla-icon-button {\r\n\r\n    width: 42px;\r\n    height: 42px;\r\n\r\n    min-width: 42px;\r\n    min-height: 42px;\r\n\r\n    padding: 0;\r\n\r\n    border: 0;\r\n\r\n    border-radius: 50%;\r\n\r\n    display: grid;\r\n\r\n    place-items: center;\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    background:\r\n        transparent;\r\n\r\n    cursor: pointer;\r\n}\r\n\r\n#hussla-app .hussla-icon-button:hover {\r\n\r\n    background:\r\n        var(--soft);\r\n}\r\n\r\n#hussla-app .hussla-icon-button:active {\r\n\r\n    transform:\r\n        scale(.92);\r\n}\r\n\r\n#hussla-app .hussla-icon-button svg {\r\n\r\n    width: 19px;\r\n    height: 19px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SETTINGS\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-settings {\r\n\r\n    position: absolute;\r\n\r\n    z-index: 100;\r\n\r\n    top:\r\n        calc(\r\n            62px +\r\n            var(--safe-top)\r\n        );\r\n\r\n    left: 18px;\r\n\r\n    width:\r\n        min(\r\n            305px,\r\n            calc(100vw - 36px)\r\n        );\r\n\r\n    padding: 16px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 20px;\r\n\r\n    background:\r\n        var(--surface-strong);\r\n\r\n    box-shadow:\r\n        0 24px 70px\r\n        rgba(0,0,0,.3);\r\n\r\n    backdrop-filter:\r\n        blur(25px);\r\n\r\n    -webkit-backdrop-filter:\r\n        blur(25px);\r\n}\r\n\r\n#hussla-app .hussla-settings-title {\r\n\r\n    margin-bottom: 7px;\r\n\r\n    font-size: 14px;\r\n\r\n    font-weight: 850;\r\n}\r\n\r\n#hussla-app .hussla-setting {\r\n\r\n    min-height: 61px;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    justify-content:\r\n        space-between;\r\n\r\n    gap: 20px;\r\n\r\n    cursor: pointer;\r\n}\r\n\r\n#hussla-app\r\n.hussla-setting\r\n+\r\n.hussla-setting {\r\n\r\n    border-top:\r\n        1px solid\r\n        var(--border);\r\n}\r\n\r\n#hussla-app .hussla-setting span {\r\n\r\n    display: grid;\r\n\r\n    gap: 2px;\r\n}\r\n\r\n#hussla-app .hussla-setting strong {\r\n\r\n    font-size: 14px;\r\n}\r\n\r\n#hussla-app .hussla-setting small {\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    font-size: 11px;\r\n}\r\n\r\n#hussla-app .hussla-setting input {\r\n\r\n    width: 20px;\r\n    height: 20px;\r\n\r\n    accent-color:\r\n        var(--accent);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CARD\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-card {\r\n\r\n    position: relative;\r\n\r\n    width: 100%;\r\n    height: 100%;\r\n\r\n    min-height: 100%;\r\n\r\n    overflow: hidden;\r\n\r\n    scroll-snap-align:\r\n        start;\r\n\r\n    scroll-snap-stop:\r\n        normal;\r\n\r\n    background:\r\n        var(--bg);\r\n}\r\n\r\n#hussla-app .hussla-card-bg {\r\n\r\n    position: absolute;\r\n\r\n    inset: -12%;\r\n\r\n    pointer-events: none;\r\n\r\n    background:\r\n        radial-gradient(\r\n            circle at 82% 18%,\r\n            rgba(\r\n                var(\r\n                    --card-accent,\r\n                    var(--accent-rgb)\r\n                ),\r\n                .14\r\n            ),\r\n            transparent 31%\r\n        ),\r\n        radial-gradient(\r\n            circle at 8% 80%,\r\n            rgba(91,72,255,.075),\r\n            transparent 35%\r\n        );\r\n\r\n    filter:\r\n        blur(12px);\r\n}\r\n\r\n#hussla-app\r\n.hussla-card[data-family=\"logic\"] {\r\n\r\n    --card-accent:\r\n        73,236,198;\r\n}\r\n\r\n#hussla-app\r\n.hussla-card[data-family=\"math\"] {\r\n\r\n    --card-accent:\r\n        54,200,255;\r\n}\r\n\r\n#hussla-app\r\n.hussla-card[data-family=\"visual\"] {\r\n\r\n    --card-accent:\r\n        182,113,255;\r\n}\r\n\r\n#hussla-app\r\n.hussla-card[data-family=\"word\"] {\r\n\r\n    --card-accent:\r\n        255,159,86;\r\n}\r\n\r\n#hussla-app\r\n.hussla-card[data-family=\"memory\"] {\r\n\r\n    --card-accent:\r\n        255,95,165;\r\n}\r\n\r\n#hussla-app\r\n.hussla-card[data-family=\"knowledge\"] {\r\n\r\n    --card-accent:\r\n        92,151,255;\r\n}\r\n\r\n#hussla-app .hussla-card-layout {\r\n\r\n    position: relative;\r\n\r\n    z-index: 2;\r\n\r\n    width: 100%;\r\n    height: 100%;\r\n\r\n    padding-top:\r\n        calc(\r\n            82px +\r\n            var(--safe-top)\r\n        );\r\n\r\n    padding-right: 31px;\r\n    padding-left: 12px;\r\n\r\n    padding-bottom:\r\n        calc(\r\n            24px +\r\n            var(--safe-bottom)\r\n        );\r\n\r\n    display: flex;\r\n\r\n    align-items: flex-start;\r\n\r\n    justify-content: center;\r\n}\r\n\r\n#hussla-app .hussla-main {\r\n\r\n    width:\r\n        min(\r\n            100%,\r\n            630px\r\n        );\r\n\r\n    margin-top:\r\n        clamp(\r\n            24px,\r\n            5vh,\r\n            52px\r\n        );\r\n\r\n    margin-inline: auto;\r\n\r\n    padding-left: 49px;\r\n\r\n    display: flex;\r\n\r\n    flex-direction: column;\r\n\r\n    gap: 14px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   META\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-meta-row {\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    justify-content:\r\n        space-between;\r\n\r\n    gap: 12px;\r\n}\r\n\r\n#hussla-app .hussla-meta-left {\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    flex-wrap: wrap;\r\n\r\n    gap: 6px;\r\n}\r\n\r\n#hussla-app .hussla-pill {\r\n\r\n    min-height: 25px;\r\n\r\n    padding:\r\n        4px\r\n        9px;\r\n\r\n    display: inline-flex;\r\n\r\n    align-items: center;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius:\r\n        999px;\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    background:\r\n        var(--soft);\r\n\r\n    font-size: 9.5px;\r\n\r\n    font-weight: 750;\r\n}\r\n\r\n#hussla-app .hussla-pill-accent {\r\n\r\n    color:\r\n        var(--accent);\r\n\r\n    border-color:\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .25\r\n        );\r\n\r\n    background:\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .075\r\n        );\r\n}\r\n\r\n#hussla-app .hussla-pill-solved {\r\n\r\n    color:\r\n        var(--success);\r\n\r\n    border-color:\r\n        rgba(\r\n            var(--success-rgb),\r\n            .22\r\n        );\r\n\r\n    background:\r\n        rgba(\r\n            var(--success-rgb),\r\n            .065\r\n        );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CHRONOGRAPH\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-chrono {\r\n\r\n    direction: ltr;\r\n\r\n    flex: 0 0 auto;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    gap: 6px;\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    font-family:\r\n        \"Roboto Mono\",\r\n        \"SFMono-Regular\",\r\n        Consolas,\r\n        monospace;\r\n\r\n    font-size: 12px;\r\n\r\n    font-weight: 650;\r\n\r\n    font-variant-numeric:\r\n        tabular-nums;\r\n\r\n    letter-spacing:\r\n        .01em;\r\n}\r\n\r\n#hussla-app .hussla-chrono-dot {\r\n\r\n    width: 5px;\r\n    height: 5px;\r\n\r\n    border-radius: 50%;\r\n\r\n    background:\r\n        var(--accent);\r\n\r\n    box-shadow:\r\n        0 0 8px\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .55\r\n        );\r\n\r\n    opacity: .8;\r\n}\r\n\r\n#hussla-app\r\n.hussla-card.is-timer-frozen\r\n.hussla-chrono-dot {\r\n\r\n    opacity: .24;\r\n\r\n    box-shadow: none;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   QUESTION\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-question-block {\r\n\r\n    display: grid;\r\n\r\n    gap: 8px;\r\n}\r\n\r\n#hussla-app .hussla-eyebrow {\r\n\r\n    color:\r\n        var(--accent);\r\n\r\n    font-size: 11px;\r\n\r\n    font-weight: 850;\r\n}\r\n\r\n#hussla-app .hussla-question {\r\n\r\n    max-width: 590px;\r\n\r\n    margin: 0;\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    font-size:\r\n        clamp(\r\n            26px,\r\n            6.7vw,\r\n            42px\r\n        );\r\n\r\n    line-height: 1.13;\r\n\r\n    font-weight: 790;\r\n\r\n    letter-spacing:\r\n        -.035em;\r\n\r\n    text-wrap: balance;\r\n}\r\n\r\n#hussla-app\r\n.hussla-question.is-long {\r\n\r\n    font-size:\r\n        clamp(\r\n            21px,\r\n            5.3vw,\r\n            33px\r\n        );\r\n\r\n    line-height: 1.22;\r\n}\r\n\r\n#hussla-app .hussla-subprompt {\r\n\r\n    max-width: 570px;\r\n\r\n    margin: 0;\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    font-size:\r\n        clamp(\r\n            13px,\r\n            3.5vw,\r\n            16px\r\n        );\r\n\r\n    line-height: 1.48;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   INTERACTION\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-interaction {\r\n\r\n    width: 100%;\r\n\r\n    display: grid;\r\n\r\n    gap: 10px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CHOICES\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-choices {\r\n\r\n    display: grid;\r\n\r\n    gap: 8px;\r\n}\r\n\r\n#hussla-app .hussla-choice {\r\n\r\n    width: 100%;\r\n\r\n    min-height: 51px;\r\n\r\n    padding:\r\n        9px\r\n        13px;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    gap: 11px;\r\n\r\n    text-align: right;\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 15px;\r\n\r\n    background:\r\n        linear-gradient(\r\n            135deg,\r\n            rgba(255,255,255,.052),\r\n            rgba(255,255,255,.019)\r\n        );\r\n\r\n    cursor: pointer;\r\n\r\n    backdrop-filter:\r\n        blur(10px);\r\n\r\n    -webkit-backdrop-filter:\r\n        blur(10px);\r\n\r\n    transition:\r\n        transform 120ms ease,\r\n        background 140ms ease,\r\n        border-color 140ms ease;\r\n}\r\n\r\n#hussla-app[data-theme=\"light\"]\r\n.hussla-choice {\r\n\r\n    background:\r\n        rgba(255,255,255,.66);\r\n}\r\n\r\n#hussla-app .hussla-choice:hover {\r\n\r\n    border-color:\r\n        var(--border-strong);\r\n\r\n    background:\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .045\r\n        );\r\n}\r\n\r\n#hussla-app .hussla-choice:active {\r\n\r\n    transform:\r\n        scale(.987);\r\n}\r\n\r\n#hussla-app .hussla-choice-letter {\r\n\r\n    flex: 0 0 auto;\r\n\r\n    width: 29px;\r\n    height: 29px;\r\n\r\n    display: grid;\r\n\r\n    place-items: center;\r\n\r\n    border-radius: 9px;\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    background:\r\n        var(--soft);\r\n\r\n    font-size: 11px;\r\n\r\n    font-weight: 850;\r\n}\r\n\r\n#hussla-app .hussla-choice-text {\r\n\r\n    flex: 1;\r\n\r\n    font-size: 14px;\r\n\r\n    line-height: 1.37;\r\n\r\n    font-weight: 650;\r\n}\r\n\r\n#hussla-app .hussla-choice.is-correct {\r\n\r\n    border-color:\r\n        rgba(\r\n            var(--success-rgb),\r\n            .48\r\n        );\r\n\r\n    background:\r\n        rgba(\r\n            var(--success-rgb),\r\n            .10\r\n        );\r\n}\r\n\r\n#hussla-app .hussla-choice.is-wrong {\r\n\r\n    border-color:\r\n        rgba(\r\n            var(--error-rgb),\r\n            .46\r\n        );\r\n\r\n    background:\r\n        rgba(\r\n            var(--error-rgb),\r\n            .07\r\n        );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TEXT INPUT\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-answer-form {\r\n\r\n    display: grid;\r\n\r\n    grid-template-columns:\r\n        minmax(0,1fr)\r\n        auto;\r\n\r\n    gap: 8px;\r\n}\r\n\r\n#hussla-app .hussla-answer-input {\r\n\r\n    width: 100%;\r\n\r\n    min-height: 52px;\r\n\r\n    padding:\r\n        0 15px;\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 15px;\r\n\r\n    background:\r\n        var(--surface);\r\n\r\n    outline: none;\r\n}\r\n\r\n#hussla-app\r\n.hussla-answer-input::placeholder {\r\n\r\n    color:\r\n        var(--faint);\r\n}\r\n\r\n#hussla-app\r\n.hussla-answer-input:focus {\r\n\r\n    border-color:\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .5\r\n        );\r\n\r\n    box-shadow:\r\n        0 0 0 3px\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .07\r\n        );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   BUTTONS\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-primary,\r\n#hussla-app .hussla-secondary {\r\n\r\n    min-height: 51px;\r\n\r\n    padding:\r\n        0 16px;\r\n\r\n    border:\r\n        1px solid\r\n        transparent;\r\n\r\n    border-radius: 15px;\r\n\r\n    font-size: 13px;\r\n\r\n    font-weight: 850;\r\n\r\n    cursor: pointer;\r\n}\r\n\r\n#hussla-app .hussla-primary {\r\n\r\n    color: #001718;\r\n\r\n    background:\r\n        var(--accent);\r\n}\r\n\r\n#hussla-app[data-theme=\"light\"]\r\n.hussla-primary {\r\n\r\n    color: #fff;\r\n}\r\n\r\n#hussla-app .hussla-secondary {\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    border-color:\r\n        var(--border);\r\n\r\n    background:\r\n        var(--soft);\r\n}\r\n\r\n#hussla-app .hussla-primary:active,\r\n#hussla-app .hussla-secondary:active {\r\n\r\n    transform:\r\n        scale(.965);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HINTS AND RESULTS\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-tools {\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    flex-wrap: wrap;\r\n\r\n    gap: 2px;\r\n}\r\n\r\n#hussla-app .hussla-tool {\r\n\r\n    min-height: 40px;\r\n\r\n    padding:\r\n        7px 9px;\r\n\r\n    border: 0;\r\n\r\n    border-radius: 10px;\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    background:\r\n        transparent;\r\n\r\n    font-size: 11px;\r\n\r\n    font-weight: 720;\r\n\r\n    cursor: pointer;\r\n}\r\n\r\n#hussla-app .hussla-tool:hover {\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    background:\r\n        var(--soft);\r\n}\r\n\r\n#hussla-app .hussla-hint {\r\n\r\n    padding:\r\n        11px 13px;\r\n\r\n    border:\r\n        1px solid\r\n        rgba(\r\n            var(--hint-rgb),\r\n            .20\r\n        );\r\n\r\n    border-radius: 13px;\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    background:\r\n        rgba(\r\n            var(--hint-rgb),\r\n            .065\r\n        );\r\n\r\n    font-size: 12.5px;\r\n\r\n    line-height: 1.48;\r\n}\r\n\r\n#hussla-app .hussla-feedback {\r\n\r\n    min-height: 18px;\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    font-size: 11px;\r\n\r\n    font-weight: 750;\r\n}\r\n\r\n#hussla-app .hussla-feedback.wrong {\r\n\r\n    color:\r\n        var(--error);\r\n}\r\n\r\n#hussla-app .hussla-feedback.correct {\r\n\r\n    color:\r\n        var(--success);\r\n}\r\n\r\n#hussla-app .hussla-result {\r\n\r\n    padding: 13px;\r\n\r\n    display: grid;\r\n\r\n    gap: 5px;\r\n\r\n    border:\r\n        1px solid\r\n        rgba(\r\n            var(--success-rgb),\r\n            .20\r\n        );\r\n\r\n    border-radius: 15px;\r\n\r\n    background:\r\n        rgba(\r\n            var(--success-rgb),\r\n            .06\r\n        );\r\n\r\n    animation:\r\n        h-result-in\r\n        220ms\r\n        ease-out\r\n        both;\r\n}\r\n\r\n#hussla-app\r\n.hussla-result[hidden] {\r\n\r\n    display: none;\r\n}\r\n\r\n#hussla-app .hussla-score-hit {\r\n\r\n    direction: ltr;\r\n\r\n    color:\r\n        var(--success);\r\n\r\n    font-size: 27px;\r\n\r\n    font-weight: 950;\r\n\r\n    letter-spacing:\r\n        -.04em;\r\n}\r\n\r\n#hussla-app .hussla-score-breakdown {\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    font-size: 10px;\r\n\r\n    line-height: 1.4;\r\n}\r\n\r\n#hussla-app .hussla-result-answer {\r\n\r\n    margin-top: 3px;\r\n\r\n    font-size: 16px;\r\n\r\n    font-weight: 850;\r\n}\r\n\r\n#hussla-app .hussla-result-explanation {\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    font-size: 12px;\r\n\r\n    line-height: 1.45;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   VISUAL\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-visual {\r\n\r\n    width: 100%;\r\n\r\n    padding: 15px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 20px;\r\n\r\n    background:\r\n        linear-gradient(\r\n            145deg,\r\n            rgba(255,255,255,.05),\r\n            rgba(255,255,255,.015)\r\n        );\r\n}\r\n\r\n#hussla-app .hussla-symbol-grid {\r\n\r\n    width:\r\n        min(\r\n            100%,\r\n            360px\r\n        );\r\n\r\n    margin-inline: auto;\r\n\r\n    display: grid;\r\n\r\n    grid-template-columns:\r\n        repeat(\r\n            var(--cols,3),\r\n            1fr\r\n        );\r\n\r\n    gap: 8px;\r\n}\r\n\r\n#hussla-app .hussla-symbol-cell {\r\n\r\n    aspect-ratio: 1;\r\n\r\n    min-height: 54px;\r\n\r\n    padding: 0;\r\n\r\n    display: grid;\r\n\r\n    place-items: center;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 14px;\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    background:\r\n        var(--soft);\r\n\r\n    font-size:\r\n        clamp(\r\n            23px,\r\n            7vw,\r\n            36px\r\n        );\r\n\r\n    cursor: pointer;\r\n\r\n    user-select: none;\r\n}\r\n\r\n#hussla-app .hussla-square-grid {\r\n\r\n    width:\r\n        min(\r\n            54vw,\r\n            215px\r\n        );\r\n\r\n    aspect-ratio: 1;\r\n\r\n    margin-inline: auto;\r\n\r\n    display: grid;\r\n\r\n    grid-template-columns:\r\n        repeat(3,1fr);\r\n\r\n    grid-template-rows:\r\n        repeat(3,1fr);\r\n\r\n    border:\r\n        2px solid\r\n        var(--text);\r\n}\r\n\r\n#hussla-app .hussla-square-grid span {\r\n\r\n    border:\r\n        1px solid\r\n        var(--text);\r\n}\r\n\r\n#hussla-app .hussla-number-grid {\r\n\r\n    direction: ltr;\r\n\r\n    width:\r\n        min(\r\n            100%,\r\n            320px\r\n        );\r\n\r\n    margin-inline: auto;\r\n\r\n    display: grid;\r\n\r\n    grid-template-columns:\r\n        repeat(3,1fr);\r\n\r\n    gap: 7px;\r\n}\r\n\r\n#hussla-app .hussla-number-grid span {\r\n\r\n    min-height: 55px;\r\n\r\n    display: grid;\r\n\r\n    place-items: center;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 13px;\r\n\r\n    font-size: 20px;\r\n\r\n    font-weight: 850;\r\n\r\n    background:\r\n        var(--soft);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MEMORY\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-memory-stage {\r\n\r\n    min-height: 115px;\r\n\r\n    padding: 15px;\r\n\r\n    display: grid;\r\n\r\n    place-items: center;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 19px;\r\n\r\n    background:\r\n        var(--soft);\r\n}\r\n\r\n#hussla-app .hussla-memory-sequence {\r\n\r\n    direction: ltr;\r\n\r\n    display: flex;\r\n\r\n    flex-wrap: wrap;\r\n\r\n    justify-content: center;\r\n\r\n    gap: 8px;\r\n}\r\n\r\n#hussla-app .hussla-memory-token {\r\n\r\n    width: 45px;\r\n    height: 45px;\r\n\r\n    display: grid;\r\n\r\n    place-items: center;\r\n\r\n    border:\r\n        1px solid\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .17\r\n        );\r\n\r\n    border-radius: 13px;\r\n\r\n    background:\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .07\r\n        );\r\n\r\n    font-size: 22px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ARRANGE\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-arrange {\r\n\r\n    display: grid;\r\n\r\n    gap: 9px;\r\n}\r\n\r\n#hussla-app .hussla-arrange-label {\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    font-size: 10px;\r\n\r\n    font-weight: 700;\r\n}\r\n\r\n#hussla-app .hussla-arrange-zone {\r\n\r\n    min-height: 55px;\r\n\r\n    padding: 6px;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    flex-wrap: wrap;\r\n\r\n    gap: 6px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 14px;\r\n\r\n    background:\r\n        var(--soft);\r\n}\r\n\r\n#hussla-app .hussla-chip {\r\n\r\n    min-height: 42px;\r\n\r\n    padding:\r\n        7px 11px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 11px;\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    background:\r\n        var(--surface);\r\n\r\n    font-size: 13px;\r\n\r\n    font-weight: 750;\r\n\r\n    cursor: pointer;\r\n}\r\n\r\n#hussla-app .hussla-arrange-actions {\r\n\r\n    display: flex;\r\n\r\n    gap: 7px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   REACTION\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-reaction {\r\n\r\n    width: 100%;\r\n\r\n    min-height: 112px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 20px;\r\n\r\n    color:\r\n        var(--muted);\r\n\r\n    background:\r\n        var(--soft);\r\n\r\n    font-size: 18px;\r\n\r\n    font-weight: 850;\r\n\r\n    cursor: pointer;\r\n}\r\n\r\n#hussla-app\r\n.hussla-reaction.ready {\r\n\r\n    color: #001718;\r\n\r\n    border-color:\r\n        var(--accent);\r\n\r\n    background:\r\n        var(--accent);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SLIDER\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-slider-wrap {\r\n\r\n    display: grid;\r\n\r\n    gap: 10px;\r\n}\r\n\r\n#hussla-app .hussla-slider-value {\r\n\r\n    direction: ltr;\r\n\r\n    text-align: center;\r\n\r\n    color:\r\n        var(--accent);\r\n\r\n    font-size: 28px;\r\n\r\n    font-weight: 900;\r\n}\r\n\r\n#hussla-app .hussla-slider {\r\n\r\n    width: 100%;\r\n\r\n    accent-color:\r\n        var(--accent);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   AUDIO\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-audio-box {\r\n\r\n    display: grid;\r\n\r\n    gap: 9px;\r\n}\r\n\r\n#hussla-app .hussla-audio-play {\r\n\r\n    min-height: 68px;\r\n\r\n    border:\r\n        1px solid\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .20\r\n        );\r\n\r\n    border-radius: 18px;\r\n\r\n    color:\r\n        var(--accent);\r\n\r\n    background:\r\n        rgba(\r\n            var(--accent-rgb),\r\n            .065\r\n        );\r\n\r\n    font-size: 15px;\r\n\r\n    font-weight: 850;\r\n\r\n    cursor: pointer;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SOCIAL\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-social {\r\n\r\n    position: absolute;\r\n\r\n    z-index: 6;\r\n\r\n    left: 17px;\r\n\r\n    bottom:\r\n        calc(\r\n            26px +\r\n            var(--safe-bottom)\r\n        );\r\n\r\n    display: flex;\r\n\r\n    flex-direction: column;\r\n\r\n    gap: 6px;\r\n}\r\n\r\n#hussla-app .hussla-social-button {\r\n\r\n    width: 46px;\r\n    height: 46px;\r\n\r\n    min-width: 46px;\r\n    min-height: 46px;\r\n\r\n    padding: 0;\r\n\r\n    display: grid;\r\n\r\n    place-items: center;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius: 50%;\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    background:\r\n        rgba(7,13,20,.40);\r\n\r\n    backdrop-filter:\r\n        blur(14px);\r\n\r\n    -webkit-backdrop-filter:\r\n        blur(14px);\r\n\r\n    cursor: pointer;\r\n}\r\n\r\n#hussla-app[data-theme=\"light\"]\r\n.hussla-social-button {\r\n\r\n    background:\r\n        rgba(255,255,255,.66);\r\n}\r\n\r\n#hussla-app .hussla-social-button svg {\r\n\r\n    width: 19px;\r\n    height: 19px;\r\n}\r\n\r\n#hussla-app\r\n.hussla-social-button.liked {\r\n\r\n    color: #ff6683;\r\n\r\n    border-color:\r\n        rgba(255,102,131,.26);\r\n\r\n    background:\r\n        rgba(255,102,131,.075);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SCROLL CUE\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-scroll-cue {\r\n\r\n    position: absolute;\r\n\r\n    z-index: 70;\r\n\r\n    right: 50%;\r\n\r\n    bottom:\r\n        calc(\r\n            9px +\r\n            var(--safe-bottom)\r\n        );\r\n\r\n    width: 33px;\r\n    height: 33px;\r\n\r\n    display: grid;\r\n\r\n    place-items: center;\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    opacity: .29;\r\n\r\n    transform:\r\n        translateX(50%);\r\n\r\n    pointer-events: none;\r\n}\r\n\r\n#hussla-app .hussla-scroll-cue svg {\r\n\r\n    width: 23px;\r\n    height: 23px;\r\n\r\n    animation:\r\n        h-scroll-cue\r\n        920ms\r\n        ease-in-out\r\n        2;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TOAST\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-toast {\r\n\r\n    position: absolute;\r\n\r\n    z-index: 120;\r\n\r\n    right: 50%;\r\n\r\n    bottom:\r\n        calc(\r\n            18px +\r\n            var(--safe-bottom)\r\n        );\r\n\r\n    max-width:\r\n        min(\r\n            88vw,\r\n            420px\r\n        );\r\n\r\n    padding:\r\n        9px 14px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--border);\r\n\r\n    border-radius:\r\n        999px;\r\n\r\n    color:\r\n        var(--text);\r\n\r\n    background:\r\n        var(--surface-strong);\r\n\r\n    font-size: 11px;\r\n\r\n    font-weight: 750;\r\n\r\n    text-align: center;\r\n\r\n    opacity: 0;\r\n\r\n    pointer-events: none;\r\n\r\n    transform:\r\n        translate(50%,10px)\r\n        scale(.96);\r\n\r\n    transition:\r\n        opacity 170ms ease,\r\n        transform 170ms ease;\r\n}\r\n\r\n#hussla-app\r\n.hussla-toast.show {\r\n\r\n    opacity: 1;\r\n\r\n    transform:\r\n        translate(50%,0)\r\n        scale(1);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CELEBRATION\r\n   ========================================================= *\/\r\n\r\n#hussla-app .hussla-flash {\r\n\r\n    position: absolute;\r\n\r\n    z-index: 105;\r\n\r\n    inset: 0;\r\n\r\n    opacity: 0;\r\n\r\n    pointer-events: none;\r\n\r\n    background:\r\n        radial-gradient(\r\n            circle at center,\r\n            rgba(\r\n                var(--success-rgb),\r\n                .12\r\n            ),\r\n            transparent 62%\r\n        );\r\n}\r\n\r\n#hussla-app\r\n.hussla-flash.go {\r\n\r\n    animation:\r\n        h-flash\r\n        340ms\r\n        ease-out;\r\n}\r\n\r\n#hussla-app .hussla-celebration {\r\n\r\n    position: absolute;\r\n\r\n    z-index: 110;\r\n\r\n    inset: 0;\r\n\r\n    overflow: hidden;\r\n\r\n    pointer-events: none;\r\n}\r\n\r\n#hussla-app .hussla-milestone {\r\n\r\n    position: absolute;\r\n\r\n    top: 50%;\r\n    left: 50%;\r\n\r\n    width:\r\n        min(\r\n            90vw,\r\n            600px\r\n        );\r\n\r\n    text-align: center;\r\n\r\n    transform:\r\n        translate(-50%,-50%);\r\n\r\n    animation:\r\n        h-milestone\r\n        1100ms\r\n        cubic-bezier(.1,.9,.15,1)\r\n        both;\r\n}\r\n\r\n#hussla-app .hussla-milestone-number {\r\n\r\n    direction: ltr;\r\n\r\n    font-size:\r\n        clamp(\r\n            80px,\r\n            30vw,\r\n            190px\r\n        );\r\n\r\n    line-height: .85;\r\n\r\n    font-weight: 950;\r\n\r\n    letter-spacing:\r\n        -.075em;\r\n}\r\n\r\n#hussla-app .hussla-milestone-copy {\r\n\r\n    margin-top: 12px;\r\n\r\n    color:\r\n        var(--accent);\r\n\r\n    font-size:\r\n        clamp(\r\n            17px,\r\n            5vw,\r\n            26px\r\n        );\r\n\r\n    font-weight: 850;\r\n}\r\n\r\n#hussla-app .hussla-particle {\r\n\r\n    position: absolute;\r\n\r\n    width: 7px;\r\n    height: 16px;\r\n\r\n    border-radius: 4px;\r\n\r\n    background:\r\n        var(--accent);\r\n\r\n    opacity: 0;\r\n\r\n    animation:\r\n        h-particle\r\n        var(--duration)\r\n        cubic-bezier(.14,.65,.3,1)\r\n        forwards;\r\n}\r\n\r\n#hussla-app .soft-shake {\r\n\r\n    animation:\r\n        h-soft-shake\r\n        170ms\r\n        ease-in-out;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ANIMATION\r\n   ========================================================= *\/\r\n\r\n@keyframes h-result-in {\r\n\r\n    from {\r\n        opacity: 0;\r\n\r\n        transform:\r\n            translateY(6px);\r\n    }\r\n\r\n    to {\r\n        opacity: 1;\r\n\r\n        transform:\r\n            translateY(0);\r\n    }\r\n}\r\n\r\n@keyframes h-scroll-cue {\r\n\r\n    0%,\r\n    100% {\r\n        transform:\r\n            translateY(0);\r\n    }\r\n\r\n    50% {\r\n        transform:\r\n            translateY(5px);\r\n    }\r\n}\r\n\r\n@keyframes h-flash {\r\n\r\n    0% {\r\n        opacity: 0;\r\n    }\r\n\r\n    22% {\r\n        opacity: 1;\r\n    }\r\n\r\n    100% {\r\n        opacity: 0;\r\n    }\r\n}\r\n\r\n@keyframes h-soft-shake {\r\n\r\n    0%,\r\n    100% {\r\n        transform:\r\n            translateX(0);\r\n    }\r\n\r\n    35% {\r\n        transform:\r\n            translateX(-3px);\r\n    }\r\n\r\n    70% {\r\n        transform:\r\n            translateX(2px);\r\n    }\r\n}\r\n\r\n@keyframes h-milestone {\r\n\r\n    0% {\r\n        opacity: 0;\r\n\r\n        transform:\r\n            translate(-50%,-50%)\r\n            scale(.58);\r\n    }\r\n\r\n    20% {\r\n        opacity: 1;\r\n    }\r\n\r\n    52% {\r\n        transform:\r\n            translate(-50%,-50%)\r\n            scale(1.04);\r\n    }\r\n\r\n    76% {\r\n        opacity: 1;\r\n    }\r\n\r\n    100% {\r\n        opacity: 0;\r\n\r\n        transform:\r\n            translate(-50%,-53%)\r\n            scale(1.13);\r\n    }\r\n}\r\n\r\n@keyframes h-particle {\r\n\r\n    0% {\r\n        opacity: 0;\r\n\r\n        transform:\r\n            translate3d(0,0,0)\r\n            rotate(0deg);\r\n    }\r\n\r\n    12% {\r\n        opacity: 1;\r\n    }\r\n\r\n    100% {\r\n        opacity: 0;\r\n\r\n        transform:\r\n            translate3d(\r\n                var(--x),\r\n                var(--y),\r\n                0\r\n            )\r\n            rotate(\r\n                var(--r)\r\n            );\r\n    }\r\n}\r\n\r\n#hussla-app[data-motion=\"off\"] *,\r\n#hussla-app[data-motion=\"off\"] *::before,\r\n#hussla-app[data-motion=\"off\"] *::after {\r\n\r\n    animation-duration:\r\n        1ms !important;\r\n\r\n    animation-iteration-count:\r\n        1 !important;\r\n\r\n    transition-duration:\r\n        1ms !important;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MOBILE\r\n   ========================================================= *\/\r\n\r\n@media (max-width:380px) {\r\n\r\n    #hussla-app .hussla-brand {\r\n        display: none;\r\n    }\r\n\r\n    #hussla-app .hussla-hud {\r\n\r\n        grid-template-columns:\r\n            1fr auto;\r\n    }\r\n\r\n    #hussla-app .hussla-hud-center {\r\n\r\n        justify-self: start;\r\n    }\r\n\r\n    #hussla-app .hussla-card-layout {\r\n\r\n        padding-right: 27px;\r\n        padding-left: 8px;\r\n    }\r\n\r\n    #hussla-app .hussla-main {\r\n\r\n        padding-left: 44px;\r\n\r\n        margin-top:\r\n            clamp(\r\n                17px,\r\n                3.6vh,\r\n                37px\r\n            );\r\n    }\r\n\r\n    #hussla-app .hussla-social {\r\n\r\n        left: 13px;\r\n    }\r\n\r\n    #hussla-app .hussla-question {\r\n\r\n        font-size:\r\n            clamp(\r\n                24px,\r\n                7vw,\r\n                35px\r\n            );\r\n    }\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   DESKTOP\r\n   ========================================================= *\/\r\n\r\n@media (min-width:800px) {\r\n\r\n    #hussla-app .hussla-card-layout {\r\n\r\n        padding-right: 38px;\r\n        padding-left: 30px;\r\n    }\r\n\r\n    #hussla-app .hussla-main {\r\n\r\n        width:\r\n            min(\r\n                100%,\r\n                680px\r\n            );\r\n\r\n        padding-left: 68px;\r\n    }\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n<script>\r\n\r\n(() => {\r\n\r\n\"use strict\";\r\n\r\n\r\n\/* =========================================================\r\n   BOOT\r\n   ========================================================= *\/\r\n\r\nconst APP =\r\n    document.getElementById(\r\n        \"hussla-app\"\r\n    );\r\n\r\nif (\r\n    !APP ||\r\n    APP.dataset.booted ===\r\n    \"1\"\r\n) {\r\n    return;\r\n}\r\n\r\nAPP.dataset.booted =\r\n    \"1\";\r\n\r\n\r\n\/* =========================================================\r\n   DOM\r\n   ========================================================= *\/\r\n\r\nconst FEED =\r\n    APP.querySelector(\r\n        \"#hussla-feed\"\r\n    );\r\n\r\nconst SCORE_NODE =\r\n    APP.querySelector(\r\n        \"#hussla-score\"\r\n    );\r\n\r\nconst STREAK_NODE =\r\n    APP.querySelector(\r\n        \"#hussla-streak\"\r\n    );\r\n\r\nconst THEME_BUTTON =\r\n    APP.querySelector(\r\n        \"#hussla-theme-toggle\"\r\n    );\r\n\r\nconst SOUND_BUTTON =\r\n    APP.querySelector(\r\n        \"#hussla-sound-toggle\"\r\n    );\r\n\r\nconst SETTINGS_BUTTON =\r\n    APP.querySelector(\r\n        \"#hussla-settings-toggle\"\r\n    );\r\n\r\nconst SETTINGS =\r\n    APP.querySelector(\r\n        \"#hussla-settings\"\r\n    );\r\n\r\nconst HAPTICS_TOGGLE =\r\n    APP.querySelector(\r\n        \"#hussla-haptics-toggle\"\r\n    );\r\n\r\nconst MOTION_TOGGLE =\r\n    APP.querySelector(\r\n        \"#hussla-motion-toggle\"\r\n    );\r\n\r\nconst SCROLL_CUE =\r\n    APP.querySelector(\r\n        \"#hussla-scroll-cue\"\r\n    );\r\n\r\nconst TOAST =\r\n    APP.querySelector(\r\n        \"#hussla-toast\"\r\n    );\r\n\r\nconst FLASH =\r\n    APP.querySelector(\r\n        \"#hussla-flash\"\r\n    );\r\n\r\nconst CELEBRATION =\r\n    APP.querySelector(\r\n        \"#hussla-celebration\"\r\n    );\r\n\r\n\r\n\/* =========================================================\r\n   CONFIG\r\n   ========================================================= *\/\r\n\r\nconst STORAGE_KEY =\r\n    \"hussla.v2.1.state\";\r\n\r\nconst EVENTS_KEY =\r\n    \"hussla.v2.1.events\";\r\n\r\nconst MAX_EVENTS =\r\n    3000;\r\n\r\nconst INITIAL_CARDS =\r\n    8;\r\n\r\nconst APPEND_BATCH =\r\n    5;\r\n\r\nconst MEMORY_VISIBLE_MS =\r\n    3300;\r\n\r\nconst SECOND_CHANCE_EVERY =\r\n    10;\r\n\r\nconst SECOND_CHANCE_MIN_GAP =\r\n    12;\r\n\r\nconst ARCHETYPE_COOLDOWN =\r\n    24;\r\n\r\nconst VARIATION_COOLDOWN =\r\n    60;\r\n\r\nconst RECENT_ID_WINDOW =\r\n    30;\r\n\r\nconst DIFFICULTY_WAVE = [\r\n    4,\r\n    5,\r\n    5,\r\n    6,\r\n    7,\r\n    5,\r\n    6,\r\n    7,\r\n    5,\r\n    6,\r\n    8,\r\n    5,\r\n    6,\r\n    7,\r\n    5,\r\n    7,\r\n    6,\r\n    8,\r\n    5,\r\n    7\r\n];\r\n\r\nconst LETTERS = [\r\n    \"\u05d0\",\r\n    \"\u05d1\",\r\n    \"\u05d2\",\r\n    \"\u05d3\",\r\n    \"\u05d4\",\r\n    \"\u05d5\"\r\n];\r\n\r\n\r\n\/* =========================================================\r\n   HELPERS\r\n   ========================================================= *\/\r\n\r\nfunction clamp(\r\n    value,\r\n    min,\r\n    max\r\n) {\r\n\r\n    return Math.min(\r\n        max,\r\n        Math.max(\r\n            min,\r\n            value\r\n        )\r\n    );\r\n}\r\n\r\n\r\nfunction escapeHTML(\r\n    value\r\n) {\r\n\r\n    return String(\r\n        value ?? \"\"\r\n    )\r\n    .replaceAll(\r\n        \"&\",\r\n        \"&amp;\"\r\n    )\r\n    .replaceAll(\r\n        \"<\",\r\n        \"&lt;\"\r\n    )\r\n    .replaceAll(\r\n        \">\",\r\n        \"&gt;\"\r\n    )\r\n    .replaceAll(\r\n        '\"',\r\n        \"&quot;\"\r\n    )\r\n    .replaceAll(\r\n        \"'\",\r\n        \"&#039;\"\r\n    );\r\n}\r\n\r\n\r\nfunction uid(\r\n    prefix = \"id\"\r\n) {\r\n\r\n    if (\r\n        window.crypto &&\r\n        crypto.randomUUID\r\n    ) {\r\n\r\n        return (\r\n            prefix +\r\n            \"-\" +\r\n            crypto.randomUUID()\r\n        );\r\n    }\r\n\r\n    return (\r\n        prefix +\r\n        \"-\" +\r\n        Date.now()\r\n            .toString(36) +\r\n        \"-\" +\r\n        Math.random()\r\n            .toString(36)\r\n            .slice(2)\r\n    );\r\n}\r\n\r\n\r\nfunction hash(\r\n    text\r\n) {\r\n\r\n    let h =\r\n        2166136261;\r\n\r\n    const source =\r\n        String(text);\r\n\r\n    for (\r\n        let i = 0;\r\n        i < source.length;\r\n        i++\r\n    ) {\r\n\r\n        h ^=\r\n            source.charCodeAt(i);\r\n\r\n        h =\r\n            Math.imul(\r\n                h,\r\n                16777619\r\n            );\r\n    }\r\n\r\n    return h >>> 0;\r\n}\r\n\r\n\r\nfunction seededRandom(\r\n    seed\r\n) {\r\n\r\n    let value =\r\n        hash(seed);\r\n\r\n    return () => {\r\n\r\n        value +=\r\n            0x6D2B79F5;\r\n\r\n        let t =\r\n            value;\r\n\r\n        t =\r\n            Math.imul(\r\n                t ^\r\n                (\r\n                    t >>> 15\r\n                ),\r\n                t | 1\r\n            );\r\n\r\n        t ^=\r\n            t +\r\n            Math.imul(\r\n                t ^\r\n                (\r\n                    t >>> 7\r\n                ),\r\n                t | 61\r\n            );\r\n\r\n        return (\r\n            (\r\n                t ^\r\n                (\r\n                    t >>> 14\r\n                )\r\n            ) >>>\r\n            0\r\n        ) \/\r\n        4294967296;\r\n    };\r\n}\r\n\r\n\r\nfunction shuffle(\r\n    input,\r\n    seed\r\n) {\r\n\r\n    const array =\r\n        [...input];\r\n\r\n    const random =\r\n        seededRandom(\r\n            seed\r\n        );\r\n\r\n    for (\r\n        let i =\r\n            array.length - 1;\r\n        i > 0;\r\n        i--\r\n    ) {\r\n\r\n        const j =\r\n            Math.floor(\r\n                random() *\r\n                (\r\n                    i + 1\r\n                )\r\n            );\r\n\r\n        [\r\n            array[i],\r\n            array[j]\r\n        ] = [\r\n            array[j],\r\n            array[i]\r\n        ];\r\n    }\r\n\r\n    return array;\r\n}\r\n\r\n\r\nfunction now() {\r\n\r\n    return performance.now();\r\n}\r\n\r\n\r\nfunction formatTimer(\r\n    milliseconds\r\n) {\r\n\r\n    const total =\r\n        Math.max(\r\n            0,\r\n            Math.floor(\r\n                milliseconds\r\n            )\r\n        );\r\n\r\n    const ms =\r\n        total %\r\n        1000;\r\n\r\n    const allSeconds =\r\n        Math.floor(\r\n            total \/\r\n            1000\r\n        );\r\n\r\n    const seconds =\r\n        allSeconds %\r\n        60;\r\n\r\n    const allMinutes =\r\n        Math.floor(\r\n            allSeconds \/\r\n            60\r\n        );\r\n\r\n    const minutes =\r\n        allMinutes %\r\n        60;\r\n\r\n    const hours =\r\n        Math.floor(\r\n            allMinutes \/\r\n            60\r\n        );\r\n\r\n    const milli =\r\n        String(ms)\r\n            .padStart(\r\n                3,\r\n                \"0\"\r\n            );\r\n\r\n    if (\r\n        hours >\r\n        0\r\n    ) {\r\n\r\n        return (\r\n            String(hours)\r\n                .padStart(\r\n                    2,\r\n                    \"0\"\r\n                ) +\r\n            \":\" +\r\n            String(minutes)\r\n                .padStart(\r\n                    2,\r\n                    \"0\"\r\n                ) +\r\n            \":\" +\r\n            String(seconds)\r\n                .padStart(\r\n                    2,\r\n                    \"0\"\r\n                ) +\r\n            \".\" +\r\n            milli\r\n        );\r\n    }\r\n\r\n    return (\r\n        String(minutes)\r\n            .padStart(\r\n                2,\r\n                \"0\"\r\n            ) +\r\n        \":\" +\r\n        String(seconds)\r\n            .padStart(\r\n                2,\r\n                \"0\"\r\n            ) +\r\n        \".\" +\r\n        milli\r\n    );\r\n}\r\n\r\n\r\nfunction israelDateKey() {\r\n\r\n    try {\r\n\r\n        return new Intl\r\n            .DateTimeFormat(\r\n                \"en-CA\",\r\n                {\r\n                    timeZone:\r\n                        \"Asia\/Jerusalem\",\r\n\r\n                    year:\r\n                        \"numeric\",\r\n\r\n                    month:\r\n                        \"2-digit\",\r\n\r\n                    day:\r\n                        \"2-digit\"\r\n                }\r\n            )\r\n            .format(\r\n                new Date()\r\n            );\r\n\r\n    } catch {\r\n\r\n        return new Date()\r\n            .toISOString()\r\n            .slice(\r\n                0,\r\n                10\r\n            );\r\n    }\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ICONS\r\n   ========================================================= *\/\r\n\r\nfunction icon(\r\n    name\r\n) {\r\n\r\n    const common =\r\n        'viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"';\r\n\r\n    const icons = {\r\n\r\n        sun: `\r\n            <svg ${common}>\r\n                <circle cx=\"12\" cy=\"12\" r=\"3.5\"\/>\r\n                <path d=\"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4\"\/>\r\n            <\/svg>\r\n        `,\r\n\r\n        moon: `\r\n            <svg ${common}>\r\n                <path d=\"M20.5 15.7A8.5 8.5 0 0 1 8.3 3.5 8.7 8.7 0 1 0 20.5 15.7Z\"\/>\r\n            <\/svg>\r\n        `,\r\n\r\n        sound: `\r\n            <svg ${common}>\r\n                <path d=\"M11 5 6.8 8.5H3v7h3.8L11 19V5Z\"\/>\r\n                <path d=\"M15 9a4 4 0 0 1 0 6\"\/>\r\n                <path d=\"M17.7 6.6a7.5 7.5 0 0 1 0 10.8\"\/>\r\n            <\/svg>\r\n        `,\r\n\r\n        mute: `\r\n            <svg ${common}>\r\n                <path d=\"M11 5 6.8 8.5H3v7h3.8L11 19V5Z\"\/>\r\n                <path d=\"m16 9 5 5M21 9l-5 5\"\/>\r\n            <\/svg>\r\n        `,\r\n\r\n        settings: `\r\n            <svg ${common}>\r\n                <circle cx=\"12\" cy=\"12\" r=\"3\"\/>\r\n                <path d=\"M19.4 15a1.7 1.7 0 0 0 .3 1.9l.1.1-2.8 2.8-.1-.1a1.7 1.7 0 0 0-1.9-.3 1.7 1.7 0 0 0-1 1.6V21h-4v-.1a1.7 1.7 0 0 0-1-1.6 1.7 1.7 0 0 0-1.9.3l-.1.1L4.2 17l.1-.1a1.7 1.7 0 0 0 .3-1.9A1.7 1.7 0 0 0 3 14H3v-4h.1a1.7 1.7 0 0 0 1.6-1 1.7 1.7 0 0 0-.3-1.9L4.2 7 7 4.2l.1.1a1.7 1.7 0 0 0 1.9.3 1.7 1.7 0 0 0 1-1.6V3h4v.1a1.7 1.7 0 0 0 1 1.6 1.7 1.7 0 0 0 1.9-.3l.1-.1L19.8 7l-.1.1a1.7 1.7 0 0 0-.3 1.9 1.7 1.7 0 0 0 1.6 1H21v4h-.1a1.7 1.7 0 0 0-1.5 1Z\"\/>\r\n            <\/svg>\r\n        `,\r\n\r\n        heart: `\r\n            <svg ${common}>\r\n                <path d=\"M20.8 4.9a5.4 5.4 0 0 0-7.6 0L12 6.1l-1.2-1.2a5.4 5.4 0 0 0-7.6 7.6L12 21l8.8-8.5a5.4 5.4 0 0 0 0-7.6Z\"\/>\r\n            <\/svg>\r\n        `,\r\n\r\n        share: `\r\n            <svg ${common}>\r\n                <circle cx=\"18\" cy=\"5\" r=\"2.5\"\/>\r\n                <circle cx=\"6\" cy=\"12\" r=\"2.5\"\/>\r\n                <circle cx=\"18\" cy=\"19\" r=\"2.5\"\/>\r\n                <path d=\"m8.2 10.8 7.5-4.4M8.2 13.2l7.5 4.4\"\/>\r\n            <\/svg>\r\n        `\r\n    };\r\n\r\n    return (\r\n        icons[name] ||\r\n        \"\"\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ANSWERS\r\n   ========================================================= *\/\r\n\r\nfunction Answer(\r\n    primary,\r\n    accepted = [],\r\n    options = {}\r\n) {\r\n\r\n    return {\r\n\r\n        primary,\r\n\r\n        accepted,\r\n\r\n        fuzzy:\r\n            options.fuzzy !==\r\n            false,\r\n\r\n        maxDistance:\r\n            options.maxDistance ??\r\n            1\r\n    };\r\n}\r\n\r\n\r\nfunction numericAnswer(\r\n    value,\r\n    accepted = []\r\n) {\r\n\r\n    return Answer(\r\n        String(value),\r\n        accepted.map(\r\n            String\r\n        ),\r\n        {\r\n            fuzzy:\r\n                false\r\n        }\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ANSWER NORMALIZATION\r\n   ========================================================= *\/\r\n\r\nfunction canonicalHebrew(\r\n    value\r\n) {\r\n\r\n    return value\r\n        .replaceAll(\r\n            \"\u05da\",\r\n            \"\u05db\"\r\n        )\r\n        .replaceAll(\r\n            \"\u05dd\",\r\n            \"\u05de\"\r\n        )\r\n        .replaceAll(\r\n            \"\u05df\",\r\n            \"\u05e0\"\r\n        )\r\n        .replaceAll(\r\n            \"\u05e3\",\r\n            \"\u05e4\"\r\n        )\r\n        .replaceAll(\r\n            \"\u05e5\",\r\n            \"\u05e6\"\r\n        );\r\n}\r\n\r\n\r\nfunction normalizeAnswer(\r\n    value\r\n) {\r\n\r\n    return canonicalHebrew(\r\n        String(\r\n            value ??\r\n            \"\"\r\n        )\r\n        .normalize(\r\n            \"NFKC\"\r\n        )\r\n        .toLowerCase()\r\n        .replace(\r\n            \/[\\u0591-\\u05C7]\/g,\r\n            \"\"\r\n        )\r\n        .replace(\r\n            \/[\u05f4\"'\u05f3`]\/g,\r\n            \"\"\r\n        )\r\n        .replace(\r\n            \/[.,!?;:()[\\]{}]\/g,\r\n            \"\"\r\n        )\r\n        .replace(\r\n            \/[\\s_\\-\u2013\u2014]+\/g,\r\n            \"\"\r\n        )\r\n        .trim()\r\n    );\r\n}\r\n\r\n\r\nfunction normalizedForms(\r\n    value\r\n) {\r\n\r\n    const normal =\r\n        normalizeAnswer(\r\n            value\r\n        );\r\n\r\n    const forms =\r\n        new Set([\r\n            normal\r\n        ]);\r\n\r\n    if (\r\n        normal.startsWith(\r\n            \"\u05d4\"\r\n        ) &&\r\n        normal.length >=\r\n        4\r\n    ) {\r\n\r\n        forms.add(\r\n            normal.slice(1)\r\n        );\r\n    }\r\n\r\n    return [\r\n        ...forms\r\n    ];\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TYPO DISTANCE\r\n   ========================================================= *\/\r\n\r\nfunction levenshtein(\r\n    a,\r\n    b\r\n) {\r\n\r\n    if (\r\n        a === b\r\n    ) {\r\n        return 0;\r\n    }\r\n\r\n    if (!a.length) {\r\n        return b.length;\r\n    }\r\n\r\n    if (!b.length) {\r\n        return a.length;\r\n    }\r\n\r\n    const previous =\r\n        Array.from(\r\n            {\r\n                length:\r\n                    b.length + 1\r\n            },\r\n            (\r\n                _,\r\n                index\r\n            ) =>\r\n                index\r\n        );\r\n\r\n    const current =\r\n        new Array(\r\n            b.length + 1\r\n        );\r\n\r\n    for (\r\n        let i = 1;\r\n        i <= a.length;\r\n        i++\r\n    ) {\r\n\r\n        current[0] =\r\n            i;\r\n\r\n        for (\r\n            let j = 1;\r\n            j <= b.length;\r\n            j++\r\n        ) {\r\n\r\n            const cost =\r\n                a[\r\n                    i - 1\r\n                ] ===\r\n                b[\r\n                    j - 1\r\n                ]\r\n                    ? 0\r\n                    : 1;\r\n\r\n            current[j] =\r\n                Math.min(\r\n                    current[\r\n                        j - 1\r\n                    ] + 1,\r\n\r\n                    previous[j] + 1,\r\n\r\n                    previous[\r\n                        j - 1\r\n                    ] + cost\r\n                );\r\n        }\r\n\r\n        for (\r\n            let j = 0;\r\n            j <= b.length;\r\n            j++\r\n        ) {\r\n\r\n            previous[j] =\r\n                current[j];\r\n        }\r\n    }\r\n\r\n    return (\r\n        previous[\r\n            b.length\r\n        ]\r\n    );\r\n}\r\n\r\n\r\nfunction answerMatches(\r\n    riddle,\r\n    input\r\n) {\r\n\r\n    if (\r\n        riddle.acceptAnyChoice\r\n    ) {\r\n\r\n        return true;\r\n    }\r\n\r\n    const answer =\r\n        typeof riddle.answer ===\r\n        \"string\"\r\n            ? Answer(\r\n                riddle.answer\r\n            )\r\n            : riddle.answer;\r\n\r\n    const candidates = [\r\n        answer.primary,\r\n        ...(\r\n            answer.accepted ||\r\n            []\r\n        )\r\n    ];\r\n\r\n    const inputForms =\r\n        normalizedForms(\r\n            input\r\n        );\r\n\r\n    for (\r\n        const candidate\r\n        of candidates\r\n    ) {\r\n\r\n        const targetForms =\r\n            normalizedForms(\r\n                candidate\r\n            );\r\n\r\n        for (\r\n            const inputForm\r\n            of inputForms\r\n        ) {\r\n\r\n            for (\r\n                const targetForm\r\n                of targetForms\r\n            ) {\r\n\r\n                if (\r\n                    inputForm ===\r\n                    targetForm\r\n                ) {\r\n\r\n                    return true;\r\n                }\r\n\r\n                if (\r\n                    answer.fuzzy &&\r\n                    inputForm.length >=\r\n                        4 &&\r\n                    targetForm.length >=\r\n                        4\r\n                ) {\r\n\r\n                    const allowed =\r\n                        Math.min(\r\n                            answer.maxDistance ??\r\n                                1,\r\n\r\n                            targetForm.length >=\r\n                                9\r\n                                ? 2\r\n                                : 1\r\n                        );\r\n\r\n                    if (\r\n                        Math.abs(\r\n                            inputForm.length -\r\n                            targetForm.length\r\n                        ) <=\r\n                            allowed &&\r\n                        levenshtein(\r\n                            inputForm,\r\n                            targetForm\r\n                        ) <=\r\n                            allowed\r\n                    ) {\r\n\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    return false;\r\n}\r\n\r\n\r\nfunction displayAnswer(\r\n    riddle\r\n) {\r\n\r\n    if (\r\n        riddle.displayAnswer\r\n    ) {\r\n\r\n        return (\r\n            riddle.displayAnswer\r\n        );\r\n    }\r\n\r\n    if (\r\n        typeof riddle.answer ===\r\n        \"string\"\r\n    ) {\r\n\r\n        return (\r\n            riddle.answer\r\n        );\r\n    }\r\n\r\n    return (\r\n        riddle.answer.primary\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   PUZZLE SCHEMA\r\n   ========================================================= *\/\r\n\r\nfunction P(\r\n    id,\r\n    config\r\n) {\r\n\r\n    return {\r\n\r\n        id,\r\n\r\n        title:\r\n            \"\",\r\n\r\n        prompt:\r\n            \"\",\r\n\r\n        subPrompt:\r\n            \"\",\r\n\r\n        answer:\r\n            Answer(\"\"),\r\n\r\n        displayAnswer:\r\n            \"\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices:\r\n            [],\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"deduction\",\r\n\r\n        archetype:\r\n            \"general\",\r\n\r\n        variationGroup:\r\n            id,\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            10,\r\n\r\n        isTrick:\r\n            false,\r\n\r\n        isVisual:\r\n            false,\r\n\r\n        isLong:\r\n            false,\r\n\r\n        isKnowledge:\r\n            false,\r\n\r\n        hints:\r\n            [],\r\n\r\n        explanation:\r\n            \"\",\r\n\r\n        secondChance:\r\n            true,\r\n\r\n        qualityTier:\r\n            \"curated\",\r\n\r\n        acceptAnyChoice:\r\n            false,\r\n\r\n        ...config\r\n    };\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CURATED CORE\r\n   ========================================================= *\/\r\n\r\nconst CORE = [\r\n\r\nP(\r\n    \"onboarding\",\r\n    {\r\n        title:\r\n            \"\u05d1\u05dc\u05d9 \u05de\u05d3\u05e8\u05d9\u05da\",\r\n\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d6\u05d4 HussLa?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05e4\u05d9\u05d3 \u05e9\u05de\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d4\u05e8\u05d0\u05e9\",\r\n            \"\u05de\u05e9\u05d7\u05e7 \u05d7\u05d9\u05d3\u05d5\u05ea \u05e9\u05d0\u05e4\u05e9\u05e8 \u05dc\u05d2\u05dc\u05d5\u05dc \u05d1\u05d5 \u05d7\u05d5\u05e4\u05e9\u05d9\",\r\n            \"\u05de\u05e7\u05d5\u05dd \u05e9\u05d1\u05d5 \u05de\u05d5\u05ea\u05e8 \u05d2\u05dd \u05dc\u05d0 \u05dc\u05d3\u05e2\u05ea\",\r\n            \"\u05db\u05dc \u05d4\u05ea\u05e9\u05d5\u05d1\u05d5\u05ea \u05e0\u05db\u05d5\u05e0\u05d5\u05ea\"\r\n        ],\r\n\r\n        acceptAnyChoice:\r\n            true,\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05db\u05dc \u05d4\u05ea\u05e9\u05d5\u05d1\u05d5\u05ea \u05e0\u05db\u05d5\u05e0\u05d5\u05ea\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"onboarding\",\r\n\r\n        archetype:\r\n            \"onboarding\",\r\n\r\n        variationGroup:\r\n            \"onboarding\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            6,\r\n\r\n        explanation:\r\n            \"\u05d1\u05d3\u05d9\u05d5\u05e7. \u05d7\u05d5\u05e9\u05d1\u05d9\u05dd \u05d0\u05dd \u05d1\u05d0, \u05e4\u05d5\u05ea\u05e8\u05d9\u05dd \u05d0\u05dd \u05d1\u05d0, \u05d5\u05d2\u05d5\u05dc\u05dc\u05d9\u05dd \u05de\u05ea\u05d9 \u05e9\u05d1\u05d0.\",\r\n\r\n        secondChance:\r\n            false\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"echo\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05e0\u05d9 \u05de\u05d3\u05d1\u05e8 \u05d1\u05dc\u05d9 \u05e4\u05d4, \u05e2\u05d5\u05e0\u05d4 \u05d1\u05dc\u05d9 \u05d0\u05d5\u05d6\u05e0\u05d9\u05d9\u05dd \u05d5\u05d0\u05d9\u05df \u05dc\u05d9 \u05d2\u05d5\u05e3. \u05de\u05d9 \u05d0\u05e0\u05d9?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d4\u05d3\",\r\n                [\r\n                    \"\u05d4\u05d4\u05d3\",\r\n                    \"\u05d4\u05d3 \u05e7\u05d5\u05dc\u05d9\",\r\n                    \"\u05d4\u05d3 \u05e9\u05dc \u05e7\u05d5\u05dc\"\r\n                ],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"word\",\r\n\r\n        cognitive:\r\n            \"semantic-shift\",\r\n\r\n        archetype:\r\n            \"concept-riddle\",\r\n\r\n        variationGroup:\r\n            \"echo-concept\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            12,\r\n\r\n        hints: [\r\n            \"\u05d0\u05e4\u05e9\u05e8 \u05dc\u05e9\u05de\u05d5\u05e2 \u05d0\u05d5\u05ea\u05d9.\",\r\n            \"\u05d0\u05e0\u05d9 \u05de\u05d7\u05d6\u05d9\u05e8 \u05de\u05e9\u05d4\u05d5 \u05e9\u05db\u05d1\u05e8 \u05e0\u05d0\u05de\u05e8.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"candle\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05ea \u05d4\u05d7\u05d9\u05d9\u05dd \u05e9\u05dc\u05d9 \u05de\u05d5\u05d3\u05d3\u05d9\u05dd \u05d1\u05e9\u05e2\u05d5\u05ea. \u05db\u05e9\u05d0\u05e0\u05d9 \u05e8\u05d6\u05d4 \u05d0\u05e0\u05d9 \u05e0\u05d2\u05de\u05e8 \u05de\u05d4\u05e8 \u05d9\u05d5\u05ea\u05e8, \u05d5\u05db\u05e9\u05d0\u05e0\u05d9 \u05e9\u05de\u05df \u05d0\u05e0\u05d9 \u05de\u05d7\u05d6\u05d9\u05e7 \u05d9\u05d5\u05ea\u05e8. \u05d4\u05e8\u05d5\u05d7 \u05d4\u05d9\u05d0 \u05d4\u05d0\u05d5\u05d9\u05d1 \u05e9\u05dc\u05d9. \u05de\u05d4 \u05d0\u05e0\u05d9?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05e0\u05e8\",\r\n                [\r\n                    \"\u05d4\u05e0\u05e8\",\r\n                    \"\u05e0\u05e8 \u05e9\u05e2\u05d5\u05d5\u05d4\",\r\n                    \"\u05e0\u05e8 \u05d3\u05d5\u05dc\u05e7\"\r\n                ],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"conceptual\",\r\n\r\n        archetype:\r\n            \"concept-life-riddle\",\r\n\r\n        variationGroup:\r\n            \"candle-life\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            15,\r\n\r\n        hints: [\r\n            \"\u05d4\u05e8\u05d5\u05d7 \u05d9\u05db\u05d5\u05dc\u05d4 \u05dc\u05db\u05d1\u05d5\u05ea \u05d0\u05d5\u05ea\u05d9.\",\r\n            \"\u05d0\u05e0\u05d9 \u05d4\u05d5\u05dc\u05da \u05d5\u05e0\u05e2\u05e9\u05d4 \u05e7\u05e6\u05e8.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"map\",\r\n    {\r\n        prompt:\r\n            \"\u05d9\u05e9 \u05d1\u05d9 \u05e2\u05e8\u05d9\u05dd \u05d1\u05dc\u05d9 \u05d1\u05ea\u05d9\u05dd, \u05d4\u05e8\u05d9\u05dd \u05d1\u05dc\u05d9 \u05e2\u05e6\u05d9\u05dd \u05d5\u05de\u05d9\u05dd \u05d1\u05dc\u05d9 \u05d3\u05d2\u05d9\u05dd. \u05de\u05d4 \u05d0\u05e0\u05d9?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05de\u05e4\u05d4\",\r\n                [\r\n                    \"\u05d4\u05de\u05e4\u05d4\",\r\n                    \"\u05de\u05e4\u05ea \u05e2\u05d5\u05dc\u05dd\",\r\n                    \"\u05de\u05e4\u05d4 \u05d2\u05d9\u05d0\u05d5\u05d2\u05e8\u05e4\u05d9\u05ea\",\r\n                    \"\u05d0\u05d8\u05dc\u05e1\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"representation\",\r\n\r\n        archetype:\r\n            \"impossible-description\",\r\n\r\n        variationGroup:\r\n            \"map-description\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            10,\r\n\r\n        hints: [\r\n            \"\u05d4\u05d3\u05d1\u05e8\u05d9\u05dd \u05e7\u05d9\u05d9\u05de\u05d9\u05dd \u05d1\u05d9 \u05e8\u05e7 \u05db\u05d9\u05d9\u05e6\u05d5\u05d2.\",\r\n            \"\u05d0\u05e4\u05e9\u05e8 \u05dc\u05de\u05e6\u05d5\u05d0 \u05d1\u05d9 \u05de\u05d3\u05d9\u05e0\u05d5\u05ea.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"photo-husband\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05d9\u05e9\u05d4 \u05d9\u05e8\u05ea\u05d4 \u05d1\u05d1\u05e2\u05dc\u05d4, \u05d4\u05d8\u05d1\u05d9\u05e2\u05d4 \u05d0\u05d5\u05ea\u05d5 \u05d1\u05de\u05d9\u05dd \u05dc\u05db\u05de\u05d4 \u05d3\u05e7\u05d5\u05ea \u05d5\u05d0\u05d6 \u05ea\u05dc\u05ea\u05d4 \u05d0\u05d5\u05ea\u05d5. \u05d1\u05e2\u05e8\u05d1 \u05d4\u05dd \u05d0\u05db\u05dc\u05d5 \u05d9\u05d7\u05d3 \u05d0\u05e8\u05d5\u05d7\u05d4. \u05d0\u05d9\u05da?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05d4\u05d9\u05d0 \u05e6\u05d9\u05dc\u05de\u05d4 \u05d0\u05d5\u05ea\u05d5 \u05d5\u05e4\u05d9\u05ea\u05d7\u05d4 \u05d0\u05ea \u05d4\u05ea\u05de\u05d5\u05e0\u05d4\",\r\n            \"\u05d6\u05d4 \u05d4\u05d9\u05d4 \u05d7\u05dc\u05d5\u05dd\",\r\n            \"\u05d6\u05d4 \u05d4\u05d9\u05d4 \u05db\u05e4\u05d9\u05dc \u05e9\u05dc\u05d5\",\r\n            \"\u05d4\u05d5\u05d0 \u05d4\u05d9\u05d4 \u05e9\u05d7\u05e7\u05df \u05d1\u05e1\u05e8\u05d8\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d4\u05d9\u05d0 \u05e6\u05d9\u05dc\u05de\u05d4 \u05d0\u05d5\u05ea\u05d5 \u05d5\u05e4\u05d9\u05ea\u05d7\u05d4 \u05d0\u05ea \u05d4\u05ea\u05de\u05d5\u05e0\u05d4\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"reinterpretation\",\r\n\r\n        archetype:\r\n            \"verb-double-meaning\",\r\n\r\n        variationGroup:\r\n            \"photo-darkroom\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            22,\r\n\r\n        isLong:\r\n            true,\r\n\r\n        hints: [\r\n            \"\u05d4\u05de\u05d9\u05dc\u05d4 '\u05d9\u05e8\u05ea\u05d4' \u05dc\u05d0 \u05de\u05d7\u05d9\u05d9\u05d1\u05ea \u05d0\u05e7\u05d3\u05d7.\",\r\n            \"\u05d0\u05e4\u05e9\u05e8 \u05d2\u05dd \u05dc\u05e6\u05dc\u05dd.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05d4\u05d9\u05d0 \u05e6\u05d9\u05dc\u05de\u05d4 \u05d0\u05d5\u05ea\u05d5, \u05e4\u05d9\u05ea\u05d7\u05d4 \u05d0\u05ea \u05d4\u05ea\u05de\u05d5\u05e0\u05d4 \u05d1\u05e0\u05d5\u05d6\u05dc\u05d9\u05dd \u05d5\u05d0\u05d6 \u05ea\u05dc\u05ea\u05d4 \u05d0\u05ea \u05d4\u05ea\u05de\u05d5\u05e0\u05d4.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"pencil\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05e0\u05d9 \u05de\u05d2\u05d9\u05e2 \u05de\u05de\u05db\u05e8\u05d4, \u05de\u05d5\u05e7\u05e3 \u05d1\u05e2\u05e5 \u05d5\u05db\u05de\u05e2\u05d8 \u05db\u05d5\u05dc\u05dd \u05d4\u05e9\u05ea\u05de\u05e9\u05d5 \u05d1\u05d9. \u05de\u05d4 \u05d0\u05e0\u05d9?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05e2\u05d9\u05e4\u05e8\u05d5\u05df\",\r\n                [\r\n                    \"\u05e2\u05e4\u05e8\u05d5\u05df\",\r\n                    \"\u05d4\u05e2\u05d9\u05e4\u05e8\u05d5\u05df\",\r\n                    \"\u05d4\u05e2\u05e4\u05e8\u05d5\u05df\",\r\n                    \"\u05d2\u05e8\u05e4\u05d9\u05d8\",\r\n                    \"\u05d7\u05d5\u05d3 \u05e2\u05d9\u05e4\u05e8\u05d5\u05df\",\r\n                    \"\u05e2\u05d5\u05e4\u05e8\u05ea \u05e2\u05d9\u05e4\u05e8\u05d5\u05df\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"material-association\",\r\n\r\n        archetype:\r\n            \"object-description\",\r\n\r\n        variationGroup:\r\n            \"pencil-material\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            10,\r\n\r\n        hints: [\r\n            \"\u05d4\u05d7\u05d5\u05de\u05e8 \u05e9\u05d1\u05de\u05e8\u05db\u05d6\u05d9 \u05d0\u05d9\u05e0\u05d5 \u05d1\u05d0\u05de\u05ea \u05e2\u05d5\u05e4\u05e8\u05ea.\",\r\n            \"\u05db\u05d5\u05ea\u05d1\u05d9\u05dd \u05d0\u05d9\u05ea\u05d9.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"siblings-hard\",\r\n    {\r\n        prompt:\r\n            \"\u05dc\u05d9\u05dc\u05d3\u05d4 \u05d9\u05e9 \u05de\u05e1\u05e4\u05e8 \u05d6\u05d4\u05d4 \u05e9\u05dc \u05d0\u05d7\u05d9\u05dd \u05d5\u05d0\u05d7\u05d9\u05d5\u05ea. \u05dc\u05db\u05dc \u05d0\u05d7\u05d3 \u05de\u05d4\u05d0\u05d7\u05d9\u05dd \u05e9\u05dc\u05d4 \u05d9\u05e9 \u05d7\u05e6\u05d9 \u05de\u05de\u05e1\u05e4\u05e8 \u05d4\u05d0\u05d7\u05d9\u05dd \u05dc\u05e2\u05d5\u05de\u05ea \u05d4\u05d0\u05d7\u05d9\u05d5\u05ea. \u05db\u05de\u05d4 \u05d1\u05e0\u05d9\u05dd \u05d5\u05db\u05de\u05d4 \u05d1\u05e0\u05d5\u05ea \u05d1\u05de\u05e9\u05e4\u05d7\u05d4?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"3 \u05d1\u05e0\u05d9\u05dd \u05d5\u05be4 \u05d1\u05e0\u05d5\u05ea\",\r\n            \"4 \u05d1\u05e0\u05d9\u05dd \u05d5\u05be3 \u05d1\u05e0\u05d5\u05ea\",\r\n            \"2 \u05d1\u05e0\u05d9\u05dd \u05d5\u05be3 \u05d1\u05e0\u05d5\u05ea\",\r\n            \"3 \u05d1\u05e0\u05d9\u05dd \u05d5\u05be3 \u05d1\u05e0\u05d5\u05ea\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"3 \u05d1\u05e0\u05d9\u05dd \u05d5\u05be4 \u05d1\u05e0\u05d5\u05ea\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"family-counting\",\r\n\r\n        archetype:\r\n            \"relationship-count\",\r\n\r\n        variationGroup:\r\n            \"siblings-equations\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            22,\r\n\r\n        hints: [\r\n            \"\u05e1\u05e4\u05e8\u05d5 \u05de\u05e0\u05e7\u05d5\u05d3\u05ea \u05d4\u05de\u05d1\u05d8 \u05e9\u05dc \u05d1\u05ea, \u05d5\u05d0\u05d6 \u05de\u05e0\u05e7\u05d5\u05d3\u05ea \u05d4\u05de\u05d1\u05d8 \u05e9\u05dc \u05d1\u05df.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05dc\u05d1\u05ea \u05d9\u05e9 3 \u05d0\u05d7\u05d9\u05dd \u05d5\u05be3 \u05d0\u05d7\u05d9\u05d5\u05ea. \u05dc\u05d1\u05df \u05d9\u05e9 2 \u05d0\u05d7\u05d9\u05dd \u05d5\u05be4 \u05d0\u05d7\u05d9\u05d5\u05ea.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"silence\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05e0\u05e2\u05dc\u05dd \u05d1\u05e8\u05d2\u05e2 \u05e9\u05d0\u05d5\u05de\u05e8\u05d9\u05dd \u05d0\u05ea \u05e9\u05de\u05d5?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05e9\u05e7\u05d8\",\r\n                [\r\n                    \"\u05d4\u05e9\u05e7\u05d8\",\r\n                    \"\u05d3\u05de\u05de\u05d4\",\r\n                    \"\u05d4\u05d3\u05de\u05de\u05d4\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"word\",\r\n\r\n        cognitive:\r\n            \"conceptual\",\r\n\r\n        archetype:\r\n            \"self-defeating-answer\",\r\n\r\n        variationGroup:\r\n            \"silence-name\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            7\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"keyboard\",\r\n    {\r\n        prompt:\r\n            \"\u05d9\u05e9 \u05dc\u05d9 \u05de\u05e7\u05e9\u05d9\u05dd \u05d0\u05d1\u05dc \u05d0\u05d9\u05df \u05dc\u05d9 \u05de\u05e0\u05e2\u05d5\u05dc\u05d9\u05dd. \u05d9\u05e9 \u05dc\u05d9 Space \u05d0\u05d1\u05dc \u05d0\u05d9\u05df \u05dc\u05d9 \u05d7\u05d3\u05e8\u05d9\u05dd. \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e2\u05e9\u05d5\u05ea \u05d1\u05d9 Enter \u05d0\u05d1\u05dc \u05dc\u05d0 \u05dc\u05e6\u05d0\u05ea \u05d4\u05d7\u05d5\u05e6\u05d4. \u05de\u05d4 \u05d0\u05e0\u05d9?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05de\u05e7\u05dc\u05d3\u05ea\",\r\n                [\r\n                    \"\u05d4\u05de\u05e7\u05dc\u05d3\u05ea\",\r\n                    \"\u05de\u05e7\u05dc\u05d3\u05ea \u05de\u05d7\u05e9\u05d1\",\r\n                    \"keyboard\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"word\",\r\n\r\n        cognitive:\r\n            \"double-meaning\",\r\n\r\n        archetype:\r\n            \"interface-wordplay\",\r\n\r\n        variationGroup:\r\n            \"keyboard-keys-space-enter\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            10,\r\n\r\n        hints: [\r\n            \"Space \u05d5\u05beEnter \u05d4\u05dd \u05e8\u05de\u05d6\u05d9\u05dd \u05de\u05d0\u05d5\u05d3 \u05de\u05d9\u05dc\u05d5\u05dc\u05d9\u05d9\u05dd.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"towel\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05e0\u05d4\u05d9\u05d4 \u05e8\u05d8\u05d5\u05d1 \u05d1\u05d6\u05de\u05df \u05e9\u05d4\u05d5\u05d0 \u05de\u05d9\u05d9\u05d1\u05e9?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05de\u05d2\u05d1\u05ea\",\r\n                [\r\n                    \"\u05d4\u05de\u05d2\u05d1\u05ea\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"functional-paradox\",\r\n\r\n        archetype:\r\n            \"object-function\",\r\n\r\n        variationGroup:\r\n            \"towel-drying\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            6\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"your-name\",\r\n    {\r\n        prompt:\r\n            \"\u05d6\u05d4 \u05e9\u05d9\u05d9\u05da \u05dc\u05db\u05dd, \u05d0\u05d1\u05dc \u05d0\u05e0\u05e9\u05d9\u05dd \u05d0\u05d7\u05e8\u05d9\u05dd \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05d1\u05d5 \u05d9\u05d5\u05ea\u05e8 \u05de\u05db\u05dd. \u05de\u05d4 \u05d6\u05d4?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d4\u05e9\u05dd \u05e9\u05dc\u05d9\",\r\n                [\r\n                    \"\u05d4\u05e9\u05dd\",\r\n                    \"\u05e9\u05dd\",\r\n                    \"\u05e9\u05de\u05d9\",\r\n                    \"\u05d4\u05e9\u05dd \u05e9\u05dc\u05da\",\r\n                    \"\u05d4\u05e9\u05dd \u05e9\u05dc\u05db\u05dd\"\r\n                ]\r\n            ),\r\n\r\n        displayAnswer:\r\n            \"\u05d4\u05e9\u05dd \u05e9\u05dc\u05db\u05dd\",\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"perspective\",\r\n\r\n        archetype:\r\n            \"ownership-paradox\",\r\n\r\n        variationGroup:\r\n            \"your-name\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            7\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"cow-water\",\r\n    {\r\n        prompt:\r\n            \"\u05d7\u05e9\u05d1\u05d5 \u05e2\u05dc \u05dc\u05d1\u05df. \u05e2\u05e0\u05e0\u05d9\u05dd \u05dc\u05d1\u05e0\u05d9\u05dd. \u05e9\u05dc\u05d2 \u05dc\u05d1\u05df. \u05d9\u05e8\u05d7 \u05d1\u05d4\u05d9\u05e8. \u05de\u05d4\u05e8: \u05de\u05d4 \u05e4\u05e8\u05d5\u05ea \u05e9\u05d5\u05ea\u05d5\u05ea?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05d7\u05dc\u05d1\",\r\n            \"\u05de\u05d9\u05dd\",\r\n            \"\u05d9\u05d5\u05d2\u05d5\u05e8\u05d8\",\r\n            \"\u05ea\u05dc\u05d5\u05d9 \u05d1\u05e4\u05e8\u05d4\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05de\u05d9\u05dd\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"priming-resistance\",\r\n\r\n        archetype:\r\n            \"association-trap\",\r\n\r\n        variationGroup:\r\n            \"cow-white-priming\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            4,\r\n\r\n        isTrick:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"left-hand\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d4\u05d7\u05d6\u05d9\u05e7 \u05d1\u05d9\u05d3 \u05d9\u05de\u05d9\u05df \u05d0\u05d1\u05dc \u05dc\u05e2\u05d5\u05dc\u05dd \u05dc\u05d0 \u05d1\u05d9\u05d3 \u05e9\u05de\u05d0\u05dc?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d9\u05d3 \u05e9\u05de\u05d0\u05dc\",\r\n                [\r\n                    \"\u05d4\u05d9\u05d3 \u05d4\u05e9\u05de\u05d0\u05dc\u05d9\u05ea\",\r\n                    \"\u05d9\u05d3 \u05e9\u05de\u05d0\u05dc \u05e9\u05dc\u05d9\",\r\n                    \"\u05d4\u05d9\u05d3 \u05d4\u05e9\u05de\u05d0\u05dc\u05d9\u05ea \u05e9\u05dc\u05d9\",\r\n                    \"\u05d4\u05d9\u05d3 \u05d4\u05e9\u05de\u05d0\u05dc\u05d9\u05ea \u05e9\u05dc\u05da\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"embodied-lateral\",\r\n\r\n        archetype:\r\n            \"body-position\",\r\n\r\n        variationGroup:\r\n            \"left-hand\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            9\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"back-to-back\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05d9\u05da \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e2\u05de\u05d5\u05d3 \u05de\u05d0\u05d7\u05d5\u05e8\u05d9 \u05d0\u05d1\u05d0 \u05e9\u05dc\u05db\u05dd \u05d1\u05d6\u05de\u05df \u05e9\u05d4\u05d5\u05d0 \u05e2\u05d5\u05de\u05d3 \u05de\u05d0\u05d7\u05d5\u05e8\u05d9\u05db\u05dd?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d2\u05d1 \u05d0\u05dc \u05d2\u05d1\",\r\n                [\r\n                    \"\u05dc\u05e2\u05de\u05d5\u05d3 \u05d2\u05d1 \u05d0\u05dc \u05d2\u05d1\",\r\n                    \"\u05e2\u05d5\u05de\u05d3\u05d9\u05dd \u05d2\u05d1 \u05d0\u05dc \u05d2\u05d1\",\r\n                    \"\u05db\u05e9\u05e2\u05d5\u05de\u05d3\u05d9\u05dd \u05d2\u05d1 \u05d0\u05dc \u05d2\u05d1\"\r\n                ],\r\n                {\r\n                    maxDistance:\r\n                        2\r\n                }\r\n            ),\r\n\r\n        displayAnswer:\r\n            \"\u05e2\u05d5\u05de\u05d3\u05d9\u05dd \u05d2\u05d1 \u05d0\u05dc \u05d2\u05d1\",\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"spatial-lateral\",\r\n\r\n        archetype:\r\n            \"position-paradox\",\r\n\r\n        variationGroup:\r\n            \"back-to-back\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            10\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"umbrella-chimney\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d9\u05db\u05d5\u05dc \u05dc\u05e2\u05dc\u05d5\u05ea \u05d1\u05d0\u05e8\u05d5\u05d1\u05d4 \u05db\u05e9\u05d4\u05d5\u05d0 \u05dc\u05de\u05d8\u05d4, \u05d0\u05d1\u05dc \u05dc\u05d0 \u05dc\u05e8\u05d3\u05ea \u05d1\u05d0\u05e8\u05d5\u05d1\u05d4 \u05db\u05e9\u05d4\u05d5\u05d0 \u05dc\u05de\u05e2\u05dc\u05d4?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05de\u05d8\u05e8\u05d9\u05d9\u05d4\",\r\n                [\r\n                    \"\u05d4\u05de\u05d8\u05e8\u05d9\u05d9\u05d4\",\r\n                    \"\u05de\u05d8\u05e8\u05d9\u05d4\",\r\n                    \"\u05d4\u05de\u05d8\u05e8\u05d9\u05d4\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"word-state\",\r\n\r\n        archetype:\r\n            \"up-down-wordplay\",\r\n\r\n        variationGroup:\r\n            \"umbrella-chimney\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            20,\r\n\r\n        hints: [\r\n            \"\u05dc'\u05dc\u05de\u05e2\u05dc\u05d4' \u05d5\u05dc'\u05dc\u05de\u05d8\u05d4' \u05d9\u05e9 \u05db\u05d0\u05df \u05de\u05e9\u05de\u05e2\u05d5\u05ea \u05e4\u05d9\u05d6\u05d9\u05ea.\",\r\n            \"\u05d7\u05e4\u05e5 \u05e9\u05e0\u05e4\u05ea\u05d7 \u05d5\u05e0\u05e1\u05d2\u05e8.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"doctors-sisters\",\r\n    {\r\n        prompt:\r\n            \"\u05e9\u05dc\u05d5\u05e9\u05d4 \u05e8\u05d5\u05e4\u05d0\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd \u05d0\u05d5\u05de\u05e8\u05d9\u05dd \u05e9\u05e4\u05d5\u05dc \u05d4\u05d5\u05d0 \u05d0\u05d7 \u05e9\u05dc\u05d4\u05dd. \u05e4\u05d5\u05dc \u05d0\u05d5\u05de\u05e8 \u05e9\u05d0\u05d9\u05df \u05dc\u05d5 \u05d0\u05d7\u05d9\u05dd. \u05de\u05d9 \u05de\u05e9\u05e7\u05e8?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05e4\u05d5\u05dc\",\r\n            \"\u05e9\u05dc\u05d5\u05e9\u05ea \u05d4\u05e8\u05d5\u05e4\u05d0\u05d9\u05dd\",\r\n            \"\u05db\u05d5\u05dc\u05dd\",\r\n            \"\u05d0\u05e3 \u05d0\u05d7\u05d3\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d0\u05e3 \u05d0\u05d7\u05d3\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"assumption-check\",\r\n\r\n        archetype:\r\n            \"gender-assumption\",\r\n\r\n        variationGroup:\r\n            \"doctors-sisters\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            9,\r\n\r\n        hints: [\r\n            \"\u05d0\u05d7 \u05e9\u05dc\u05d4\u05dd \u05dc\u05d0 \u05d0\u05d5\u05de\u05e8 \u05e9\u05d4\u05dd \u05d0\u05d7\u05d9\u05dd \u05e9\u05dc\u05d5.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05e9\u05dc\u05d5\u05e9\u05ea \u05d4\u05e8\u05d5\u05e4\u05d0\u05d9\u05dd \u05d9\u05db\u05d5\u05dc\u05d5\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05d4\u05d0\u05d7\u05d9\u05d5\u05ea \u05e9\u05dc \u05e4\u05d5\u05dc.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"egg\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d7\u05d9\u05d9\u05d1\u05d9\u05dd \u05dc\u05e9\u05d1\u05d5\u05e8 \u05dc\u05e4\u05e0\u05d9 \u05e9\u05d0\u05e4\u05e9\u05e8 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05d5?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d1\u05d9\u05e6\u05d4\",\r\n                [\r\n                    \"\u05d4\u05d1\u05d9\u05e6\u05d4\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"functional-lateral\",\r\n\r\n        archetype:\r\n            \"before-use\",\r\n\r\n        variationGroup:\r\n            \"egg-break\",\r\n\r\n        difficulty:\r\n            3,\r\n\r\n        estimatedTime:\r\n            4\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"hole\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05e0\u05d4\u05d9\u05d4 \u05d2\u05d3\u05d5\u05dc \u05d9\u05d5\u05ea\u05e8 \u05db\u05db\u05dc \u05e9\u05dc\u05d5\u05e7\u05d7\u05d9\u05dd \u05de\u05de\u05e0\u05d5 \u05d9\u05d5\u05ea\u05e8?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d1\u05d5\u05e8\",\r\n                [\r\n                    \"\u05d4\u05d1\u05d5\u05e8\",\r\n                    \"\u05d7\u05d5\u05e8\",\r\n                    \"\u05d4\u05d7\u05d5\u05e8\"\r\n                ],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"inverse-property\",\r\n\r\n        archetype:\r\n            \"concept-paradox\",\r\n\r\n        variationGroup:\r\n            \"hole-growing\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            6\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"stamp\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d9\u05db\u05d5\u05dc \u05dc\u05d4\u05e7\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e2\u05d5\u05dc\u05dd \u05d1\u05d6\u05de\u05df \u05e9\u05d4\u05d5\u05d0 \u05e0\u05e9\u05d0\u05e8 \u05d1\u05e4\u05d9\u05e0\u05d4?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d1\u05d5\u05dc\",\r\n                [\r\n                    \"\u05d4\u05d1\u05d5\u05dc\",\r\n                    \"\u05d1\u05d5\u05dc \u05d3\u05d5\u05d0\u05e8\"\r\n                ],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"literal-location\",\r\n\r\n        archetype:\r\n            \"object-position\",\r\n\r\n        variationGroup:\r\n            \"stamp-corner\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            8\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"needle\",\r\n    {\r\n        prompt:\r\n            \"\u05dc\u05de\u05d9 \u05d9\u05e9 \u05e2\u05d9\u05df \u05d0\u05d7\u05ea \u05d0\u05d1\u05dc \u05d4\u05d5\u05d0 \u05dc\u05d0 \u05e8\u05d5\u05d0\u05d4?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05de\u05d7\u05d8\",\r\n                [\r\n                    \"\u05d4\u05de\u05d7\u05d8\",\r\n                    \"\u05de\u05d7\u05d8 \u05ea\u05e4\u05d9\u05e8\u05d4\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"word\",\r\n\r\n        cognitive:\r\n            \"double-meaning\",\r\n\r\n        archetype:\r\n            \"body-word-object\",\r\n\r\n        variationGroup:\r\n            \"needle-eye\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            6\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"three-switches\",\r\n    {\r\n        prompt:\r\n            \"\u05e9\u05dc\u05d5\u05e9\u05d4 \u05de\u05ea\u05d2\u05d9\u05dd \u05de\u05d7\u05d5\u05e5 \u05dc\u05d7\u05d3\u05e8. \u05d1\u05e4\u05e0\u05d9\u05dd \u05e0\u05d5\u05e8\u05d4 \u05d0\u05d7\u05ea. \u05de\u05d5\u05ea\u05e8 \u05dc\u05d4\u05d9\u05db\u05e0\u05e1 \u05dc\u05d7\u05d3\u05e8 \u05e4\u05e2\u05dd \u05d0\u05d7\u05ea \u05d1\u05dc\u05d1\u05d3. \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d3\u05e2\u05ea \u05d0\u05d9\u05d6\u05d4 \u05de\u05ea\u05d2 \u05e9\u05d9\u05d9\u05da \u05dc\u05e0\u05d5\u05e8\u05d4?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05db\u05df\",\r\n            \"\u05dc\u05d0\",\r\n            \"\u05e8\u05e7 \u05e2\u05dd \u05de\u05e8\u05d0\u05d4\",\r\n            \"\u05e8\u05e7 \u05d0\u05dd \u05d4\u05e0\u05d5\u05e8\u05d4 \u05e9\u05e7\u05d5\u05e4\u05d4\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05db\u05df\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"lateral\",\r\n\r\n        archetype:\r\n            \"hidden-state-test\",\r\n\r\n        variationGroup:\r\n            \"three-switches\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            24,\r\n\r\n        isLong:\r\n            true,\r\n\r\n        hints: [\r\n            \"\u05dc\u05e0\u05d5\u05e8\u05d4 \u05d9\u05e9 \u05ea\u05db\u05d5\u05e0\u05d4 \u05e0\u05d5\u05e1\u05e4\u05ea \u05de\u05dc\u05d1\u05d3 \u05d0\u05d5\u05e8.\",\r\n            \"\u05d0\u05e4\u05e9\u05e8 \u05dc\u05ea\u05ea \u05dc\u05d4 \u05dc\u05d4\u05ea\u05d7\u05de\u05dd.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05de\u05d3\u05dc\u05d9\u05e7\u05d9\u05dd \u05de\u05ea\u05d2 \u05d0\u05d7\u05d3, \u05de\u05d7\u05db\u05d9\u05dd, \u05de\u05db\u05d1\u05d9\u05dd \u05d0\u05d5\u05ea\u05d5 \u05d5\u05de\u05d3\u05dc\u05d9\u05e7\u05d9\u05dd \u05e9\u05e0\u05d9. \u05e0\u05db\u05e0\u05e1\u05d9\u05dd. \u05d3\u05d5\u05dc\u05e7\u05ea, \u05d7\u05de\u05d4 \u05d0\u05d5 \u05e7\u05e8\u05d4 \u05de\u05d6\u05d4\u05d4 \u05d0\u05ea \u05e9\u05dc\u05d5\u05e9\u05ea \u05d4\u05de\u05ea\u05d2\u05d9\u05dd.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"two-ropes\",\r\n    {\r\n        prompt:\r\n            \"\u05e9\u05e0\u05d9 \u05d7\u05d1\u05dc\u05d9\u05dd \u05e0\u05e9\u05e8\u05e4\u05d9\u05dd \u05e9\u05e2\u05d4 \u05db\u05dc \u05d0\u05d7\u05d3, \u05d0\u05d1\u05dc \u05dc\u05d0 \u05d1\u05e7\u05e6\u05d1 \u05d0\u05d7\u05d9\u05d3. \u05d0\u05d9\u05da \u05de\u05d5\u05d3\u05d3\u05d9\u05dd \u05d1\u05d3\u05d9\u05d5\u05e7 45 \u05d3\u05e7\u05d5\u05ea?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05de\u05d3\u05dc\u05d9\u05e7\u05d9\u05dd \u05d7\u05d1\u05dc \u05d0\u05d7\u05d3 \u05de\u05e9\u05e0\u05d9 \u05d4\u05e6\u05d3\u05d3\u05d9\u05dd \u05d5\u05d4\u05e9\u05e0\u05d9 \u05de\u05e6\u05d3 \u05d0\u05d7\u05d3\",\r\n            \"\u05d7\u05d5\u05ea\u05db\u05d9\u05dd \u05d7\u05d1\u05dc \u05d0\u05d7\u05d3 \u05dc\u05d0\u05e8\u05d1\u05e2\",\r\n            \"\u05de\u05d3\u05dc\u05d9\u05e7\u05d9\u05dd \u05d0\u05ea \u05e9\u05e0\u05d9\u05d4\u05dd \u05de\u05e6\u05d3 \u05d0\u05d7\u05d3\",\r\n            \"\u05d0\u05d9 \u05d0\u05e4\u05e9\u05e8\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05de\u05d3\u05dc\u05d9\u05e7\u05d9\u05dd \u05d7\u05d1\u05dc \u05d0\u05d7\u05d3 \u05de\u05e9\u05e0\u05d9 \u05d4\u05e6\u05d3\u05d3\u05d9\u05dd \u05d5\u05d4\u05e9\u05e0\u05d9 \u05de\u05e6\u05d3 \u05d0\u05d7\u05d3\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"lateral\",\r\n\r\n        archetype:\r\n            \"irregular-rate\",\r\n\r\n        variationGroup:\r\n            \"two-ropes\",\r\n\r\n        difficulty:\r\n            8,\r\n\r\n        estimatedTime:\r\n            32,\r\n\r\n        isLong:\r\n            true,\r\n\r\n        hints: [\r\n            \"\u05d7\u05d1\u05dc \u05e9\u05de\u05d3\u05dc\u05d9\u05e7\u05d9\u05dd \u05de\u05e9\u05e0\u05d9 \u05d4\u05e7\u05e6\u05d5\u05d5\u05ea \u05d9\u05d9\u05d2\u05de\u05e8 \u05d0\u05d7\u05e8\u05d9 \u05d7\u05e6\u05d9 \u05e9\u05e2\u05d4.\",\r\n            \"\u05d0\u05d7\u05e8\u05d9 \u05d7\u05e6\u05d9 \u05e9\u05e2\u05d4 \u05e0\u05e9\u05d0\u05e8\u05ea \u05d3\u05e8\u05da \u05dc\u05de\u05d3\u05d5\u05d3 \u05e2\u05d5\u05d3 \u05e8\u05d1\u05e2 \u05e9\u05e2\u05d4.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05db\u05e9\u05d4\u05e8\u05d0\u05e9\u05d5\u05df \u05e0\u05d2\u05de\u05e8 \u05e2\u05d1\u05e8\u05d5 30 \u05d3\u05e7\u05d5\u05ea. \u05de\u05d3\u05dc\u05d9\u05e7\u05d9\u05dd \u05d0\u05d6 \u05d2\u05dd \u05d0\u05ea \u05d4\u05e7\u05e6\u05d4 \u05d4\u05e9\u05e0\u05d9 \u05e9\u05dc \u05d4\u05d7\u05d1\u05dc \u05d4\u05e9\u05e0\u05d9, \u05d5\u05d4\u05d5\u05d0 \u05d9\u05d9\u05d2\u05de\u05e8 \u05db\u05e2\u05d1\u05d5\u05e8 15 \u05d3\u05e7\u05d5\u05ea.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"boxes\",\r\n    {\r\n        prompt:\r\n            \"\u05e9\u05dc\u05d5\u05e9 \u05e7\u05d5\u05e4\u05e1\u05d0\u05d5\u05ea \u05de\u05e1\u05d5\u05de\u05e0\u05d5\u05ea \u05ea\u05e4\u05d5\u05d7\u05d9\u05dd, \u05ea\u05e4\u05d5\u05d6\u05d9\u05dd \u05d5\u05de\u05e2\u05d5\u05e8\u05d1. \u05db\u05dc \u05e9\u05dc\u05d5\u05e9 \u05d4\u05ea\u05d5\u05d5\u05d9\u05d5\u05ea \u05e9\u05d2\u05d5\u05d9\u05d5\u05ea. \u05de\u05d0\u05d9\u05d6\u05d5 \u05e7\u05d5\u05e4\u05e1\u05d4 \u05de\u05e1\u05e4\u05d9\u05e7 \u05dc\u05d4\u05d5\u05e6\u05d9\u05d0 \u05e4\u05e8\u05d9 \u05d0\u05d7\u05d3?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05ea\u05e4\u05d5\u05d7\u05d9\u05dd\",\r\n            \"\u05ea\u05e4\u05d5\u05d6\u05d9\u05dd\",\r\n            \"\u05de\u05e2\u05d5\u05e8\u05d1\",\r\n            \"\u05e6\u05e8\u05d9\u05da \u05dc\u05e4\u05d7\u05d5\u05ea \u05e9\u05e0\u05d9 \u05e4\u05d9\u05e8\u05d5\u05ea\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05de\u05e2\u05d5\u05e8\u05d1\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"deduction\",\r\n\r\n        archetype:\r\n            \"mislabel-deduction\",\r\n\r\n        variationGroup:\r\n            \"three-boxes\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            22,\r\n\r\n        hints: [\r\n            \"\u05d4\u05e7\u05d5\u05e4\u05e1\u05d4 \u05e9\u05db\u05ea\u05d5\u05d1 \u05e2\u05dc\u05d9\u05d4 '\u05de\u05e2\u05d5\u05e8\u05d1' \u05d1\u05d5\u05d5\u05d3\u05d0\u05d5\u05ea \u05d0\u05d9\u05e0\u05d4 \u05de\u05e2\u05d5\u05e8\u05d1\u05ea.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"fathers-sons\",\r\n    {\r\n        prompt:\r\n            \"\u05e9\u05e0\u05d9 \u05d0\u05d1\u05d5\u05ea \u05d5\u05e9\u05e0\u05d9 \u05d1\u05e0\u05d9\u05dd \u05d9\u05e6\u05d0\u05d5 \u05d9\u05d7\u05d3, \u05d0\u05d1\u05dc \u05d4\u05d9\u05d5 \u05e8\u05e7 \u05e9\u05dc\u05d5\u05e9\u05d4 \u05d0\u05e0\u05e9\u05d9\u05dd. \u05d0\u05d9\u05da?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05e1\u05d1\u05d0 \u05d0\u05d1\u05d0 \u05d5\u05d1\u05df\",\r\n                [\r\n                    \"\u05e1\u05d1\u05d0 \u05d0\u05d1\u05d0 \u05d1\u05df\",\r\n                    \"\u05e1\u05d1\u05d0 \u05d0\u05d1 \u05d5\u05d1\u05df\",\r\n                    \"\u05e1\u05d1\u05d0 \u05d0\u05d1 \u05d5\u05e0\u05db\u05d3\",\r\n                    \"\u05e1\u05d1\u05d0 \u05d0\u05d1\u05d0 \u05d5\u05e0\u05db\u05d3\"\r\n                ],\r\n                {\r\n                    maxDistance:\r\n                        2\r\n                }\r\n            ),\r\n\r\n        displayAnswer:\r\n            \"\u05e1\u05d1\u05d0, \u05d0\u05d1\u05d0 \u05d5\u05d1\u05df\",\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"overlapping-roles\",\r\n\r\n        archetype:\r\n            \"family-role-overlap\",\r\n\r\n        variationGroup:\r\n            \"two-fathers-two-sons\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            8,\r\n\r\n        isTrick:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"overtake\",\r\n    {\r\n        prompt:\r\n            \"\u05d1\u05de\u05e8\u05d5\u05e5 \u05e2\u05e7\u05e4\u05ea \u05d0\u05ea \u05de\u05d9 \u05e9\u05d4\u05d9\u05d4 \u05d1\u05de\u05e7\u05d5\u05dd \u05d4\u05e9\u05e0\u05d9. \u05d1\u05d0\u05d9\u05d6\u05d4 \u05de\u05e7\u05d5\u05dd \u05d0\u05ea\u05dd \u05e2\u05db\u05e9\u05d9\u05d5?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05e8\u05d0\u05e9\u05d5\u05df\",\r\n            \"\u05e9\u05e0\u05d9\",\r\n            \"\u05e9\u05dc\u05d9\u05e9\u05d9\",\r\n            \"\u05d0\u05d9 \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d3\u05e2\u05ea\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05e9\u05e0\u05d9\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"inhibition\",\r\n\r\n        archetype:\r\n            \"position-trap\",\r\n\r\n        variationGroup:\r\n            \"overtake-second\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            4,\r\n\r\n        isTrick:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"bat-ball\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d7\u05d1\u05d8 \u05d5\u05db\u05d3\u05d5\u05e8 \u05e2\u05d5\u05dc\u05d9\u05dd \u05d9\u05d7\u05d3 110 \u20aa. \u05d4\u05de\u05d7\u05d1\u05d8 \u05e2\u05d5\u05dc\u05d4 100 \u20aa \u05d9\u05d5\u05ea\u05e8 \u05de\u05d4\u05db\u05d3\u05d5\u05e8. \u05db\u05de\u05d4 \u05e2\u05d5\u05dc\u05d4 \u05d4\u05db\u05d3\u05d5\u05e8?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"5 \u20aa\",\r\n            \"10 \u20aa\",\r\n            \"15 \u20aa\",\r\n            \"20 \u20aa\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(\r\n                5,\r\n                [\r\n                    \"5 \u20aa\",\r\n                    \"5 \u05e9\u05e7\u05dc\",\r\n                    \"5 \u05e9\u05e7\u05dc\u05d9\u05dd\"\r\n                ]\r\n            ),\r\n\r\n        displayAnswer:\r\n            \"5 \u20aa\",\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"inhibition\",\r\n\r\n        archetype:\r\n            \"intuitive-math-trap\",\r\n\r\n        variationGroup:\r\n            \"bat-ball\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            8,\r\n\r\n        isTrick:\r\n            true,\r\n\r\n        hints: [\r\n            \"\u05d0\u05dd \u05d4\u05db\u05d3\u05d5\u05e8 10, \u05d4\u05de\u05d7\u05d1\u05d8 110 \u05d5\u05d4\u05e1\u05db\u05d5\u05dd \u05db\u05d1\u05e8 120.\",\r\n            \"x + x + 100 = 110.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"clock-strikes\",\r\n    {\r\n        prompt:\r\n            \"\u05e9\u05e2\u05d5\u05df \u05de\u05e6\u05dc\u05e6\u05dc 6 \u05e4\u05e2\u05de\u05d9\u05dd \u05d1\u05be5 \u05e9\u05e0\u05d9\u05d5\u05ea. \u05db\u05de\u05d4 \u05d6\u05de\u05df \u05d9\u05d9\u05e7\u05d7 \u05dc\u05d5 \u05dc\u05e6\u05dc\u05e6\u05dc 12 \u05e4\u05e2\u05de\u05d9\u05dd?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"10 \u05e9\u05e0\u05d9\u05d5\u05ea\",\r\n            \"11 \u05e9\u05e0\u05d9\u05d5\u05ea\",\r\n            \"12 \u05e9\u05e0\u05d9\u05d5\u05ea\",\r\n            \"15 \u05e9\u05e0\u05d9\u05d5\u05ea\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"11 \u05e9\u05e0\u05d9\u05d5\u05ea\"\r\n            ),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"interval-counting\",\r\n\r\n        archetype:\r\n            \"events-vs-gaps\",\r\n\r\n        variationGroup:\r\n            \"clock-strikes\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            10,\r\n\r\n        isTrick:\r\n            true,\r\n\r\n        hints: [\r\n            \"6 \u05e6\u05dc\u05e6\u05d5\u05dc\u05d9\u05dd \u05d9\u05d5\u05e6\u05e8\u05d9\u05dd 5 \u05de\u05e8\u05d5\u05d5\u05d7\u05d9\u05dd.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"socks\",\r\n    {\r\n        prompt:\r\n            \"\u05d1\u05de\u05d2\u05d9\u05e8\u05d4 \u05d7\u05e9\u05d5\u05db\u05d4 5 \u05d2\u05e8\u05d1\u05d9\u05d9\u05dd \u05e9\u05d7\u05d5\u05e8\u05d9\u05dd \u05d5\u05be5 \u05dc\u05d1\u05e0\u05d9\u05dd. \u05db\u05de\u05d4 \u05d7\u05d9\u05d9\u05d1\u05d9\u05dd \u05dc\u05e9\u05dc\u05d5\u05e3 \u05db\u05d3\u05d9 \u05dc\u05d4\u05d1\u05d8\u05d9\u05d7 \u05d6\u05d5\u05d2 \u05d1\u05d0\u05d5\u05ea\u05d5 \u05e6\u05d1\u05e2?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"2\",\r\n            \"3\",\r\n            \"4\",\r\n            \"5\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(3),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"pigeonhole\",\r\n\r\n        archetype:\r\n            \"guarantee-count\",\r\n\r\n        variationGroup:\r\n            \"socks-pigeonhole\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            7\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"eight-balls\",\r\n    {\r\n        prompt:\r\n            \"8 \u05db\u05d3\u05d5\u05e8\u05d9\u05dd \u05e0\u05e8\u05d0\u05d9\u05dd \u05d6\u05d4\u05d9\u05dd. \u05d0\u05d7\u05d3 \u05db\u05d1\u05d3 \u05d9\u05d5\u05ea\u05e8. \u05db\u05de\u05d4 \u05e9\u05e7\u05d9\u05dc\u05d5\u05ea \u05de\u05d9\u05e0\u05d9\u05de\u05d5\u05dd \u05d1\u05de\u05d0\u05d6\u05e0\u05d9\u05d9\u05dd \u05d3\u05d5\u05be\u05db\u05e4\u05d9\u05d9\u05dd \u05e6\u05e8\u05d9\u05da \u05db\u05d3\u05d9 \u05dc\u05de\u05e6\u05d5\u05d0 \u05d0\u05d5\u05ea\u05d5?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"1\",\r\n            \"2\",\r\n            \"3\",\r\n            \"4\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(2),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"ternary-search\",\r\n\r\n        archetype:\r\n            \"balance-search\",\r\n\r\n        variationGroup:\r\n            \"eight-balls\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            22,\r\n\r\n        hints: [\r\n            \"\u05d7\u05dc\u05e7\u05d5 3, 3 \u05d5\u05be2.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"average-speed\",\r\n    {\r\n        prompt:\r\n            \"\u05d7\u05e6\u05d9 \u05de\u05d4\u05d3\u05e8\u05da \u05e0\u05e1\u05e2\u05ea\u05dd \u05d1\u05be60 \u05e7\u05de\u05f4\u05e9 \u05d5\u05d7\u05e6\u05d9 \u05d1\u05be30 \u05e7\u05de\u05f4\u05e9. \u05de\u05d4 \u05d4\u05de\u05d4\u05d9\u05e8\u05d5\u05ea \u05d4\u05de\u05de\u05d5\u05e6\u05e2\u05ea?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"36 \u05e7\u05de\u05f4\u05e9\",\r\n            \"40 \u05e7\u05de\u05f4\u05e9\",\r\n            \"45 \u05e7\u05de\u05f4\u05e9\",\r\n            \"50 \u05e7\u05de\u05f4\u05e9\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"40 \u05e7\u05de\u05f4\u05e9\",\r\n                [\r\n                    \"40\"\r\n                ],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"rate\",\r\n\r\n        archetype:\r\n            \"harmonic-average\",\r\n\r\n        variationGroup:\r\n            \"average-speed\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            14,\r\n\r\n        hints: [\r\n            \"\u05d3\u05de\u05d9\u05d9\u05e0\u05d5 \u05d3\u05e8\u05da \u05e9\u05dc 120 \u05e7\u05f4\u05de.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"60 \u05e7\u05f4\u05de \u05d1\u05e9\u05e2\u05d4 \u05d5\u05e2\u05d5\u05d3 60 \u05e7\u05f4\u05de \u05d1\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd. 120 \u05e7\u05f4\u05de \u05d1\u05e9\u05dc\u05d5\u05e9 \u05e9\u05e2\u05d5\u05ea \u05d4\u05dd 40 \u05e7\u05de\u05f4\u05e9.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"clock-angle\",\r\n    {\r\n        prompt:\r\n            \"\u05d4\u05e9\u05e2\u05d4 3:15. \u05de\u05d4 \u05d4\u05d6\u05d5\u05d5\u05d9\u05ea \u05d4\u05e7\u05d8\u05e0\u05d4 \u05d1\u05d9\u05df \u05d4\u05de\u05d7\u05d5\u05d2\u05d9\u05dd?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"0\u00b0\",\r\n            \"7.5\u00b0\",\r\n            \"15\u00b0\",\r\n            \"22.5\u00b0\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"7.5\u00b0\",\r\n                [\r\n                    \"7.5\",\r\n                    \"7.5 \u05de\u05e2\u05dc\u05d5\u05ea\"\r\n                ],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"spatial-math\",\r\n\r\n        archetype:\r\n            \"clock-angle\",\r\n\r\n        variationGroup:\r\n            \"clock-angle-315\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            15,\r\n\r\n        hints: [\r\n            \"\u05de\u05d7\u05d5\u05d2 \u05d4\u05e9\u05e2\u05d5\u05ea \u05db\u05d1\u05e8 \u05d6\u05d6 \u05e7\u05e6\u05ea \u05d0\u05d7\u05e8\u05d9 3.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05de\u05d7\u05d5\u05d2 \u05d4\u05d3\u05e7\u05d5\u05ea \u05d1\u05be90\u00b0. \u05de\u05d7\u05d5\u05d2 \u05d4\u05e9\u05e2\u05d5\u05ea \u05d1\u05be97.5\u00b0. \u05d4\u05d4\u05e4\u05e8\u05e9 7.5\u00b0.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"handshakes\",\r\n    {\r\n        prompt:\r\n            \"6 \u05d0\u05e0\u05e9\u05d9\u05dd \u05dc\u05d5\u05d7\u05e6\u05d9\u05dd \u05d9\u05d3 \u05e4\u05e2\u05dd \u05d0\u05d7\u05ea \u05e2\u05dd \u05db\u05dc \u05d0\u05d3\u05dd \u05d0\u05d7\u05e8. \u05db\u05de\u05d4 \u05dc\u05d7\u05d9\u05e6\u05d5\u05ea \u05d9\u05d3 \u05d9\u05e9?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            numericAnswer(15),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"combinatorial\",\r\n\r\n        archetype:\r\n            \"pair-count\",\r\n\r\n        variationGroup:\r\n            \"handshake-six\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            12,\r\n\r\n        hints: [\r\n            \"\u05db\u05dc \u05d6\u05d5\u05d2 \u05e0\u05e1\u05e4\u05e8 \u05e4\u05e2\u05dd \u05d0\u05d7\u05ea.\",\r\n            \"6\u00d75\u00f72.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"coin-condition\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d8\u05d9\u05dc\u05d9\u05dd \u05e9\u05e0\u05d9 \u05de\u05d8\u05d1\u05e2\u05d5\u05ea \u05d4\u05d5\u05d2\u05e0\u05d9\u05dd. \u05d9\u05d3\u05d5\u05e2 \u05e9\u05dc\u05e4\u05d7\u05d5\u05ea \u05d0\u05d7\u05d3 \u05d9\u05e6\u05d0 \u05e2\u05e5. \u05de\u05d4 \u05d4\u05d4\u05e1\u05ea\u05d1\u05e8\u05d5\u05ea \u05e9\u05e9\u05e0\u05d9\u05d4\u05dd \u05e2\u05e5?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"1\/2\",\r\n            \"1\/3\",\r\n            \"1\/4\",\r\n            \"2\/3\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"1\/3\"\r\n            ),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"conditional-probability\",\r\n\r\n        archetype:\r\n            \"conditional-sample-space\",\r\n\r\n        variationGroup:\r\n            \"two-coins-conditioned\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            18,\r\n\r\n        hints: [\r\n            \"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05ea\u05e0\u05d0\u05d9 \u05e0\u05e9\u05d0\u05e8\u05d5 \u05e9\u05dc\u05d5\u05e9 \u05ea\u05d5\u05e6\u05d0\u05d5\u05ea \u05d0\u05e4\u05e9\u05e8\u05d9\u05d5\u05ea.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"monty\",\r\n    {\r\n        prompt:\r\n            \"\u05e9\u05dc\u05d5\u05e9 \u05d3\u05dc\u05ea\u05d5\u05ea. \u05d1\u05d7\u05e8\u05ea\u05dd \u05d0\u05d7\u05ea. \u05d4\u05de\u05e0\u05d7\u05d4 \u05d9\u05d5\u05d3\u05e2 \u05d0\u05d9\u05e4\u05d4 \u05d4\u05e4\u05e8\u05e1 \u05d5\u05e4\u05d5\u05ea\u05d7 \u05d3\u05dc\u05ea \u05e8\u05d9\u05e7\u05d4 \u05d0\u05d7\u05e8\u05ea. \u05db\u05d3\u05d0\u05d9 \u05dc\u05d4\u05d7\u05dc\u05d9\u05e3?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05db\u05df\",\r\n            \"\u05dc\u05d0\",\r\n            \"\u05dc\u05d0 \u05de\u05e9\u05e0\u05d4\",\r\n            \"\u05e8\u05e7 \u05d1\u05d7\u05e6\u05d9 \u05de\u05d4\u05de\u05e7\u05e8\u05d9\u05dd\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05db\u05df\"\r\n            ),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"probability\",\r\n\r\n        archetype:\r\n            \"information-probability\",\r\n\r\n        variationGroup:\r\n            \"monty-hall\",\r\n\r\n        difficulty:\r\n            8,\r\n\r\n        estimatedTime:\r\n            25,\r\n\r\n        hints: [\r\n            \"\u05d4\u05d1\u05d7\u05d9\u05e8\u05d4 \u05d4\u05e8\u05d0\u05e9\u05d5\u05e0\u05d4 \u05e0\u05db\u05d5\u05e0\u05d4 \u05e8\u05e7 \u05d1\u05e9\u05dc\u05d9\u05e9 \u05de\u05d4\u05de\u05e7\u05e8\u05d9\u05dd.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"painted-cube\",\r\n    {\r\n        prompt:\r\n            \"\u05e7\u05d5\u05d1\u05d9\u05d9\u05d4 3\u00d73\u00d73 \u05e0\u05e6\u05d1\u05e2\u05d4 \u05de\u05d1\u05d7\u05d5\u05e5 \u05d5\u05d0\u05d6 \u05e4\u05d5\u05e8\u05e7\u05d4. \u05dc\u05db\u05de\u05d4 \u05e7\u05d5\u05d1\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea \u05d9\u05e9 \u05d1\u05d3\u05d9\u05d5\u05e7 \u05e9\u05ea\u05d9 \u05e4\u05d0\u05d5\u05ea \u05e6\u05d1\u05d5\u05e2\u05d5\u05ea?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"8\",\r\n            \"12\",\r\n            \"18\",\r\n            \"20\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(12),\r\n\r\n        category:\r\n            \"visual\",\r\n\r\n        cognitive:\r\n            \"spatial\",\r\n\r\n        archetype:\r\n            \"painted-cube\",\r\n\r\n        variationGroup:\r\n            \"painted-cube-3\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            22,\r\n\r\n        isVisual:\r\n            true,\r\n\r\n        hints: [\r\n            \"\u05d7\u05e9\u05d1\u05d5 \u05e2\u05dc \u05d4\u05d0\u05de\u05e6\u05e2 \u05e9\u05dc \u05db\u05dc \u05de\u05e7\u05e6\u05d5\u05e2.\",\r\n            \"\u05dc\u05e7\u05d5\u05d1\u05d9\u05d9\u05d4 12 \u05de\u05e7\u05e6\u05d5\u05e2\u05d5\u05ea.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"doors-100\",\r\n    {\r\n        prompt:\r\n            \"100 \u05d3\u05dc\u05ea\u05d5\u05ea \u05e1\u05d2\u05d5\u05e8\u05d5\u05ea. \u05d1\u05e1\u05d9\u05d1\u05d5\u05d1 1 \u05d4\u05d5\u05e4\u05db\u05d9\u05dd \u05d0\u05ea \u05db\u05d5\u05dc\u05df, \u05d1\u05e1\u05d9\u05d1\u05d5\u05d1 2 \u05db\u05dc \u05e9\u05e0\u05d9\u05d9\u05d4, \u05d1\u05e1\u05d9\u05d1\u05d5\u05d1 3 \u05db\u05dc \u05e9\u05dc\u05d9\u05e9\u05d9\u05ea \u05d5\u05db\u05da \u05e2\u05d3 100. \u05db\u05de\u05d4 \u05e0\u05e9\u05d0\u05e8\u05d5\u05ea \u05e4\u05ea\u05d5\u05d7\u05d5\u05ea?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"5\",\r\n            \"10\",\r\n            \"25\",\r\n            \"50\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(10),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"divisor-parity\",\r\n\r\n        archetype:\r\n            \"toggle-divisors\",\r\n\r\n        variationGroup:\r\n            \"hundred-doors\",\r\n\r\n        difficulty:\r\n            8,\r\n\r\n        estimatedTime:\r\n            35,\r\n\r\n        isLong:\r\n            true,\r\n\r\n        hints: [\r\n            \"\u05d3\u05dc\u05ea \u05de\u05e9\u05ea\u05e0\u05d4 \u05e4\u05e2\u05dd \u05dc\u05db\u05dc \u05de\u05d7\u05dc\u05e7 \u05e9\u05dc \u05d4\u05de\u05e1\u05e4\u05e8 \u05e9\u05dc\u05d4.\",\r\n            \"\u05de\u05d9 \u05de\u05e7\u05d1\u05dc \u05de\u05e1\u05e4\u05e8 \u05d0\u05d9 \u05d6\u05d5\u05d2\u05d9 \u05e9\u05dc \u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd?\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"page-digits\",\r\n    {\r\n        prompt:\r\n            \"\u05db\u05de\u05d4 \u05e1\u05e4\u05e8\u05d5\u05ea \u05e6\u05e8\u05d9\u05da \u05db\u05d3\u05d9 \u05dc\u05db\u05ea\u05d5\u05d1 \u05d0\u05ea \u05db\u05dc \u05de\u05e1\u05e4\u05e8\u05d9 \u05d4\u05e2\u05de\u05d5\u05d3\u05d9\u05dd \u05de\u05be1 \u05e2\u05d3 99?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"180\",\r\n            \"189\",\r\n            \"198\",\r\n            \"199\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(189),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"counting\",\r\n\r\n        archetype:\r\n            \"digit-count\",\r\n\r\n        variationGroup:\r\n            \"pages-1-99\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            14,\r\n\r\n        hints: [\r\n            \"1 \u05e2\u05d3 9 \u05e9\u05d5\u05e0\u05d9\u05dd \u05de\u05be10 \u05e2\u05d3 99.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"modular-25\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d4\u05de\u05e1\u05e4\u05e8 \u05d4\u05d7\u05d9\u05d5\u05d1\u05d9 \u05d4\u05e7\u05d8\u05df \u05d1\u05d9\u05d5\u05ea\u05e8 \u05e9\u05de\u05ea\u05d7\u05dc\u05e7 \u05d1\u05be5 \u05d5\u05de\u05e9\u05d0\u05d9\u05e8 \u05e9\u05d0\u05e8\u05d9\u05ea 1 \u05d1\u05d7\u05dc\u05d5\u05e7\u05d4 \u05dc\u05be2, 3 \u05d5\u05d2\u05dd 4?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            numericAnswer(25),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"number-theory\",\r\n\r\n        archetype:\r\n            \"remainder-system\",\r\n\r\n        variationGroup:\r\n            \"remainder-25\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            20,\r\n\r\n        hints: [\r\n            \"\u05d4\u05de\u05e1\u05e4\u05e8 \u05d4\u05d5\u05d0 1 \u05d9\u05d5\u05ea\u05e8 \u05de\u05db\u05e4\u05d5\u05dc\u05d4 \u05e9\u05dc 12.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"lcm-60\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d4\u05de\u05e1\u05e4\u05e8 \u05d4\u05d7\u05d9\u05d5\u05d1\u05d9 \u05d4\u05e7\u05d8\u05df \u05d1\u05d9\u05d5\u05ea\u05e8 \u05e9\u05de\u05ea\u05d7\u05dc\u05e7 \u05d1\u05dc\u05d9 \u05e9\u05d0\u05e8\u05d9\u05ea \u05d1\u05be2, 3, 4, 5 \u05d5\u05d2\u05dd 6?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            numericAnswer(60),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"number-theory\",\r\n\r\n        archetype:\r\n            \"lcm\",\r\n\r\n        variationGroup:\r\n            \"lcm-basic\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            11\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"father-age\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05d1 \u05d1\u05df \u05e4\u05d9 4 \u05de\u05d1\u05e0\u05d5. \u05d1\u05e2\u05d5\u05d3 20 \u05e9\u05e0\u05d4 \u05d4\u05d0\u05d1 \u05d9\u05d4\u05d9\u05d4 \u05d1\u05df \u05e4\u05d9 2 \u05de\u05d4\u05d1\u05df. \u05d1\u05df \u05db\u05de\u05d4 \u05d4\u05d1\u05df \u05d4\u05d9\u05d5\u05dd?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            numericAnswer(\r\n                10,\r\n                [\r\n                    \"10 \u05e9\u05e0\u05d9\u05dd\",\r\n                    \"\u05d1\u05df 10\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"algebra\",\r\n\r\n        archetype:\r\n            \"age-equation\",\r\n\r\n        variationGroup:\r\n            \"father-son-age\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            15,\r\n\r\n        hints: [\r\n            \"\u05d0\u05dd \u05d4\u05d1\u05df x, \u05d4\u05d0\u05d1 4x.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"bridge-torch\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05e8\u05d1\u05e2\u05d4 \u05d0\u05e0\u05e9\u05d9\u05dd \u05e6\u05e8\u05d9\u05db\u05d9\u05dd \u05dc\u05e2\u05d1\u05d5\u05e8 \u05d2\u05e9\u05e8 \u05d1\u05dc\u05d9\u05dc\u05d4. \u05d6\u05de\u05e0\u05d9 \u05d4\u05de\u05e2\u05d1\u05e8 \u05e9\u05dc\u05d4\u05dd: 1, 2, 5 \u05d5\u05be10 \u05d3\u05e7\u05d5\u05ea. \u05d9\u05e9 \u05e4\u05e0\u05e1 \u05d0\u05d7\u05d3 \u05d5\u05e8\u05e7 \u05e9\u05e0\u05d9\u05d9\u05dd \u05d9\u05db\u05d5\u05dc\u05d9\u05dd \u05dc\u05e2\u05d1\u05d5\u05e8 \u05d9\u05d7\u05d3. \u05de\u05d4 \u05d4\u05d6\u05de\u05df \u05d4\u05de\u05d9\u05e0\u05d9\u05de\u05dc\u05d9?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"15\",\r\n            \"17\",\r\n            \"19\",\r\n            \"20\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(\r\n                17,\r\n                [\r\n                    \"17 \u05d3\u05e7\u05d5\u05ea\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"optimization\",\r\n\r\n        archetype:\r\n            \"bridge-torch\",\r\n\r\n        variationGroup:\r\n            \"bridge-1-2-5-10\",\r\n\r\n        difficulty:\r\n            8,\r\n\r\n        estimatedTime:\r\n            35,\r\n\r\n        isLong:\r\n            true,\r\n\r\n        hints: [\r\n            \"\u05dc\u05d0 \u05ea\u05de\u05d9\u05d3 \u05d4\u05d0\u05d3\u05dd \u05d4\u05de\u05d4\u05d9\u05e8 \u05d1\u05d9\u05d5\u05ea\u05e8 \u05e6\u05e8\u05d9\u05da \u05dc\u05dc\u05d5\u05d5\u05ea \u05d0\u05ea \u05db\u05d5\u05dc\u05dd.\",\r\n            \"\u05e0\u05e1\u05d5 \u05dc\u05d4\u05e2\u05d1\u05d9\u05e8 \u05d0\u05ea 5 \u05d5\u05be10 \u05d9\u05d7\u05d3.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"river-crossing\",\r\n    {\r\n        prompt:\r\n            \"\u05d7\u05e7\u05dc\u05d0\u05d9 \u05e6\u05e8\u05d9\u05da \u05dc\u05d4\u05e2\u05d1\u05d9\u05e8 \u05e9\u05d5\u05e2\u05dc, \u05ea\u05e8\u05e0\u05d2\u05d5\u05dc\u05ea \u05d5\u05e9\u05e7 \u05ea\u05d1\u05d5\u05d0\u05d4 \u05d1\u05e1\u05d9\u05e8\u05d4 \u05e9\u05de\u05db\u05d9\u05dc\u05d4 \u05e8\u05e7 \u05d0\u05d5\u05ea\u05d5 \u05d5\u05e2\u05d5\u05d3 \u05d0\u05d7\u05d3. \u05d0\u05d9 \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d4\u05e9\u05d0\u05d9\u05e8 \u05e9\u05d5\u05e2\u05dc \u05e2\u05dd \u05ea\u05e8\u05e0\u05d2\u05d5\u05dc\u05ea \u05d0\u05d5 \u05ea\u05e8\u05e0\u05d2\u05d5\u05dc\u05ea \u05e2\u05dd \u05ea\u05d1\u05d5\u05d0\u05d4. \u05de\u05d4 \u05de\u05e2\u05d1\u05d9\u05e8\u05d9\u05dd \u05e8\u05d0\u05e9\u05d5\u05df?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05e9\u05d5\u05e2\u05dc\",\r\n            \"\u05ea\u05e8\u05e0\u05d2\u05d5\u05dc\u05ea\",\r\n            \"\u05ea\u05d1\u05d5\u05d0\u05d4\",\r\n            \"\u05d6\u05d4 \u05dc\u05d0 \u05de\u05e9\u05e0\u05d4\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05ea\u05e8\u05e0\u05d2\u05d5\u05dc\u05ea\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"constraint-solving\",\r\n\r\n        archetype:\r\n            \"river-crossing\",\r\n\r\n        variationGroup:\r\n            \"fox-chicken-grain\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            16,\r\n\r\n        isLong:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"ravens\",\r\n    {\r\n        prompt:\r\n            \"\u05db\u05dc \u05d4\u05e2\u05d5\u05e8\u05d1\u05d9\u05dd \u05d4\u05dd \u05e6\u05d9\u05e4\u05d5\u05e8\u05d9\u05dd. \u05d7\u05dc\u05e7 \u05de\u05d4\u05e6\u05d9\u05e4\u05d5\u05e8\u05d9\u05dd \u05dc\u05d1\u05e0\u05d5\u05ea. \u05d4\u05d0\u05dd \u05d1\u05d4\u05db\u05e8\u05d7 \u05d9\u05e9 \u05e2\u05d5\u05e8\u05d1\u05d9\u05dd \u05dc\u05d1\u05e0\u05d9\u05dd?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05db\u05df\",\r\n            \"\u05dc\u05d0\",\r\n            \"\u05e8\u05e7 \u05d0\u05dd \u05d9\u05e9 \u05d9\u05d5\u05ea\u05e8 \u05de\u05e2\u05d5\u05e8\u05d1 \u05d0\u05d7\u05d3\",\r\n            \"\u05e8\u05e7 \u05d1\u05d7\u05d5\u05e8\u05e3\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05dc\u05d0\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"syllogism\",\r\n\r\n        archetype:\r\n            \"set-logic\",\r\n\r\n        variationGroup:\r\n            \"ravens-white\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            9\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"family-abc\",\r\n    {\r\n        prompt:\r\n            \"\u05d0' \u05d4\u05d5\u05d0 \u05d0\u05d7 \u05e9\u05dc \u05d1'. \u05d1' \u05d4\u05d5\u05d0 \u05d0\u05d7 \u05e9\u05dc \u05d2'. \u05d2' \u05d4\u05d5\u05d0 \u05d0\u05d1\u05d0 \u05e9\u05dc \u05d3'. \u05de\u05d4 \u05d4\u05e7\u05e9\u05e8 \u05e9\u05dc \u05d0' \u05dc\u05d3'?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d3\u05d5\u05d3\",\r\n                [\r\n                    \"\u05d4\u05d3\u05d5\u05d3\",\r\n                    \"\u05d3\u05d5\u05d3 \u05e9\u05dc\u05d5\",\r\n                    \"\u05d3\u05d5\u05d3 \u05e9\u05dc\u05d4\",\r\n                    \"\u05d4\u05d5\u05d0 \u05d4\u05d3\u05d5\u05d3\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"relationship\",\r\n\r\n        archetype:\r\n            \"family-chain\",\r\n\r\n        variationGroup:\r\n            \"family-uncle\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            9\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"square-count\",\r\n    {\r\n        prompt:\r\n            \"\u05db\u05de\u05d4 \u05e8\u05d9\u05d1\u05d5\u05e2\u05d9\u05dd \u05d9\u05e9 \u05db\u05d0\u05df?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        visualHTML: `\r\n            <div class=\"hussla-square-grid\">\r\n                <span><\/span><span><\/span><span><\/span>\r\n                <span><\/span><span><\/span><span><\/span>\r\n                <span><\/span><span><\/span><span><\/span>\r\n            <\/div>\r\n        `,\r\n\r\n        choices: [\r\n            \"9\",\r\n            \"12\",\r\n            \"14\",\r\n            \"16\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(14),\r\n\r\n        category:\r\n            \"visual\",\r\n\r\n        cognitive:\r\n            \"visual-count\",\r\n\r\n        archetype:\r\n            \"count-shapes\",\r\n\r\n        variationGroup:\r\n            \"3x3-squares\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            9,\r\n\r\n        isVisual:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"magic-square\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05d9\u05d6\u05d4 \u05de\u05e1\u05e4\u05e8 \u05d7\u05e1\u05e8?\",\r\n\r\n        subPrompt:\r\n            \"\u05db\u05dc \u05e9\u05d5\u05e8\u05d4 \u05d5\u05db\u05dc \u05e2\u05de\u05d5\u05d3\u05d4 \u05de\u05e1\u05ea\u05db\u05de\u05d9\u05dd \u05dc\u05d0\u05d5\u05ea\u05d5 \u05de\u05e1\u05e4\u05e8.\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        visualHTML: `\r\n            <div class=\"hussla-number-grid\">\r\n                <span>8<\/span>\r\n                <span>1<\/span>\r\n                <span>6<\/span>\r\n\r\n                <span>3<\/span>\r\n                <span>5<\/span>\r\n                <span>7<\/span>\r\n\r\n                <span>4<\/span>\r\n                <span>9<\/span>\r\n                <span>?<\/span>\r\n            <\/div>\r\n        `,\r\n\r\n        choices: [\r\n            \"2\",\r\n            \"3\",\r\n            \"5\",\r\n            \"6\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(2),\r\n\r\n        category:\r\n            \"visual\",\r\n\r\n        cognitive:\r\n            \"pattern-grid\",\r\n\r\n        archetype:\r\n            \"magic-square\",\r\n\r\n        variationGroup:\r\n            \"magic-square-lo-shu\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            10,\r\n\r\n        isVisual:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"odd-arrow-core\",\r\n    {\r\n        prompt:\r\n            \"\u05dc\u05d7\u05e6\u05d5 \u05e2\u05dc \u05d4\u05d7\u05e8\u05d9\u05d2.\",\r\n\r\n        interaction:\r\n            \"tap\",\r\n\r\n        tapItems: [\r\n            {label:\"\u2197\",value:\"no\"},\r\n            {label:\"\u2197\",value:\"no\"},\r\n            {label:\"\u2197\",value:\"no\"},\r\n            {label:\"\u2197\",value:\"no\"},\r\n            {label:\"\u2196\",value:\"yes\"},\r\n            {label:\"\u2197\",value:\"no\"},\r\n            {label:\"\u2197\",value:\"no\"},\r\n            {label:\"\u2197\",value:\"no\"},\r\n            {label:\"\u2197\",value:\"no\"}\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"yes\",\r\n                [],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"visual\",\r\n\r\n        cognitive:\r\n            \"attention\",\r\n\r\n        archetype:\r\n            \"odd-one-out\",\r\n\r\n        variationGroup:\r\n            \"odd-direction\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            3,\r\n\r\n        isVisual:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"fractions-arrange\",\r\n    {\r\n        prompt:\r\n            \"\u05e1\u05d3\u05e8\u05d5 \u05de\u05d4\u05e7\u05d8\u05df \u05dc\u05d2\u05d3\u05d5\u05dc.\",\r\n\r\n        interaction:\r\n            \"arrange\",\r\n\r\n        arrangeItems: [\r\n            \"1\/2\",\r\n            \"2\/3\",\r\n            \"3\/5\",\r\n            \"5\/8\"\r\n        ],\r\n\r\n        correctOrder: [\r\n            \"1\/2\",\r\n            \"3\/5\",\r\n            \"5\/8\",\r\n            \"2\/3\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"1\/2|3\/5|5\/8|2\/3\",\r\n                [],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        displayAnswer:\r\n            \"1\/2 \u2192 3\/5 \u2192 5\/8 \u2192 2\/3\",\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"magnitude\",\r\n\r\n        archetype:\r\n            \"arrange-magnitude\",\r\n\r\n        variationGroup:\r\n            \"fractions-arrange\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            18\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"reaction-core\",\r\n    {\r\n        prompt:\r\n            \"\u05dc\u05d7\u05e6\u05d5 \u05e8\u05e7 \u05db\u05e9\u05d4\u05db\u05e4\u05ea\u05d5\u05e8 \u05de\u05e9\u05ea\u05e0\u05d4.\",\r\n\r\n        subPrompt:\r\n            \"\u05d0\u05dc \u05ea\u05ea\u05e4\u05ea\u05d5 \u05dc\u05d4\u05e7\u05d3\u05d9\u05dd.\",\r\n\r\n        interaction:\r\n            \"reaction\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"reaction\"\r\n            ),\r\n\r\n        category:\r\n            \"visual\",\r\n\r\n        cognitive:\r\n            \"reaction\",\r\n\r\n        archetype:\r\n            \"reaction-timing\",\r\n\r\n        variationGroup:\r\n            \"reaction-basic\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            6,\r\n\r\n        isVisual:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"slider-37\",\r\n    {\r\n        prompt:\r\n            \"\u05db\u05d5\u05d5\u05e0\u05d5 \u05d1\u05d3\u05d9\u05d5\u05e7 \u05dc\u05be37.\",\r\n\r\n        subPrompt:\r\n            \"\u05d1\u05dc\u05d9 \u05de\u05e7\u05dc\u05d3\u05ea.\",\r\n\r\n        interaction:\r\n            \"slider\",\r\n\r\n        sliderMin:\r\n            0,\r\n\r\n        sliderMax:\r\n            100,\r\n\r\n        sliderStart:\r\n            50,\r\n\r\n        answer:\r\n            numericAnswer(37),\r\n\r\n        category:\r\n            \"visual\",\r\n\r\n        cognitive:\r\n            \"precision\",\r\n\r\n        archetype:\r\n            \"slider-target\",\r\n\r\n        variationGroup:\r\n            \"slider-target\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            8,\r\n\r\n        isVisual:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"audio-count\",\r\n    {\r\n        prompt:\r\n            \"\u05db\u05de\u05d4 \u05e6\u05dc\u05d9\u05dc\u05d9\u05dd \u05d0\u05ea\u05dd \u05e9\u05d5\u05de\u05e2\u05d9\u05dd?\",\r\n\r\n        subPrompt:\r\n            \"\u05d4\u05e6\u05dc\u05d9\u05dc \u05dc\u05d0 \u05de\u05ea\u05e0\u05d2\u05df \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea.\",\r\n\r\n        interaction:\r\n            \"audio\",\r\n\r\n        audioPattern: [\r\n            {\r\n                frequency:\r\n                    440,\r\n                duration:\r\n                    120\r\n            },\r\n            {\r\n                frequency:\r\n                    550,\r\n                duration:\r\n                    120\r\n            },\r\n            {\r\n                frequency:\r\n                    660,\r\n                duration:\r\n                    120\r\n            },\r\n            {\r\n                frequency:\r\n                    550,\r\n                duration:\r\n                    120\r\n            }\r\n        ],\r\n\r\n        choices: [\r\n            \"3\",\r\n            \"4\",\r\n            \"5\",\r\n            \"6\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(4),\r\n\r\n        category:\r\n            \"memory\",\r\n\r\n        cognitive:\r\n            \"auditory-attention\",\r\n\r\n        archetype:\r\n            \"audio-count\",\r\n\r\n        variationGroup:\r\n            \"audio-four-tones\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            8\r\n    }\r\n)\r\n\r\n];\r\n\r\n\r\n\/* =========================================================\r\n   ADVANCED CURATED BANK\r\n   ========================================================= *\/\r\n\r\nconst ADVANCED_CURATED = [\r\n\r\nP(\r\n    \"guards-two-doors\",\r\n    {\r\n        prompt:\r\n            \"\u05e9\u05ea\u05d9 \u05d3\u05dc\u05ea\u05d5\u05ea. \u05d0\u05d7\u05ea \u05de\u05d5\u05d1\u05d9\u05dc\u05d4 \u05d4\u05d7\u05d5\u05e6\u05d4 \u05d5\u05d0\u05d7\u05ea \u05dc\u05de\u05dc\u05db\u05d5\u05d3\u05ea. \u05dc\u05d9\u05d3\u05df \u05e9\u05e0\u05d9 \u05e9\u05d5\u05de\u05e8\u05d9\u05dd: \u05d0\u05d7\u05d3 \u05ea\u05de\u05d9\u05d3 \u05d0\u05d5\u05de\u05e8 \u05d0\u05de\u05ea \u05d5\u05d4\u05e9\u05e0\u05d9 \u05ea\u05de\u05d9\u05d3 \u05de\u05e9\u05e7\u05e8. \u05de\u05d5\u05ea\u05e8 \u05dc\u05e9\u05d0\u05d5\u05dc \u05e9\u05d5\u05de\u05e8 \u05d0\u05d7\u05d3 \u05e9\u05d0\u05dc\u05d4 \u05d0\u05d7\u05ea. \u05de\u05d4 \u05e9\u05d5\u05d0\u05dc\u05d9\u05dd?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05d0\u05d9\u05d6\u05d5 \u05d3\u05dc\u05ea \u05d4\u05e9\u05d5\u05de\u05e8 \u05d4\u05e9\u05e0\u05d9 \u05d4\u05d9\u05d4 \u05d0\u05d5\u05de\u05e8 \u05e9\u05de\u05d5\u05d1\u05d9\u05dc\u05d4 \u05d4\u05d7\u05d5\u05e6\u05d4?\",\r\n            \"\u05d0\u05d9\u05d6\u05d5 \u05d3\u05dc\u05ea \u05d0\u05ea\u05d4 \u05d4\u05d9\u05d9\u05ea \u05d1\u05d5\u05d7\u05e8?\",\r\n            \"\u05d4\u05d0\u05dd \u05d0\u05ea\u05d4 \u05d4\u05e9\u05d5\u05de\u05e8 \u05e9\u05d0\u05d5\u05de\u05e8 \u05d0\u05de\u05ea?\",\r\n            \"\u05d4\u05d0\u05dd \u05d4\u05d3\u05dc\u05ea \u05d4\u05d9\u05de\u05e0\u05d9\u05ea \u05d1\u05d8\u05d5\u05d7\u05d4?\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d0\u05d9\u05d6\u05d5 \u05d3\u05dc\u05ea \u05d4\u05e9\u05d5\u05de\u05e8 \u05d4\u05e9\u05e0\u05d9 \u05d4\u05d9\u05d4 \u05d0\u05d5\u05de\u05e8 \u05e9\u05de\u05d5\u05d1\u05d9\u05dc\u05d4 \u05d4\u05d7\u05d5\u05e6\u05d4?\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"meta-reasoning\",\r\n\r\n        archetype:\r\n            \"truth-liar-question\",\r\n\r\n        variationGroup:\r\n            \"two-guards-two-doors\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            22,\r\n\r\n        isLong:\r\n            true,\r\n\r\n        hints: [\r\n            \"\u05e6\u05e8\u05d9\u05da \u05dc\u05d2\u05e8\u05d5\u05dd \u05dc\u05e9\u05e7\u05e8\u05df \u05d5\u05dc\u05d0\u05d5\u05de\u05e8 \u05d4\u05d0\u05de\u05ea \u05dc\u05ea\u05ea \u05dc\u05de\u05e2\u05e9\u05d4 \u05d0\u05d5\u05ea\u05d4 \u05ea\u05e9\u05d5\u05d1\u05d4.\",\r\n            \"\u05e9\u05d0\u05dc\u05d5 \u05de\u05d4 \u05d4\u05e9\u05d5\u05de\u05e8 \u05d4\u05d0\u05d7\u05e8 \u05d4\u05d9\u05d4 \u05d0\u05d5\u05de\u05e8.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05e9\u05e0\u05d9\u05d4\u05dd \u05d9\u05e6\u05d1\u05d9\u05e2\u05d5 \u05e2\u05dc \u05d4\u05d3\u05dc\u05ea \u05d4\u05dc\u05d0 \u05e0\u05db\u05d5\u05e0\u05d4. \u05dc\u05db\u05df \u05d1\u05d5\u05d7\u05e8\u05d9\u05dd \u05d1\u05d3\u05dc\u05ea \u05d4\u05e9\u05e0\u05d9\u05d9\u05d4.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"water-jugs-4\",\r\n    {\r\n        prompt:\r\n            \"\u05d9\u05e9 \u05db\u05dc\u05d9 \u05e9\u05dc 5 \u05dc\u05d9\u05d8\u05e8 \u05d5\u05db\u05dc\u05d9 \u05e9\u05dc 3 \u05dc\u05d9\u05d8\u05e8, \u05d1\u05dc\u05d9 \u05e1\u05d9\u05de\u05d5\u05e0\u05d9\u05dd. \u05d0\u05d9\u05da \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d4\u05d2\u05d9\u05e2 \u05d1\u05d3\u05d9\u05d5\u05e7 \u05dc\u05be4 \u05dc\u05d9\u05d8\u05e8?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05de\u05de\u05dc\u05d0\u05d9\u05dd 5, \u05e9\u05d5\u05e4\u05db\u05d9\u05dd \u05dc\u05be3, \u05de\u05e2\u05d1\u05d9\u05e8\u05d9\u05dd \u05d0\u05ea \u05d4\u05be2 \u05e9\u05e0\u05e9\u05d0\u05e8\u05d5 \u05dc\u05be3, \u05de\u05de\u05dc\u05d0\u05d9\u05dd \u05e9\u05d5\u05d1 5 \u05d5\u05de\u05e9\u05dc\u05d9\u05de\u05d9\u05dd \u05d0\u05ea \u05d4\u05be3\",\r\n            \"\u05de\u05de\u05dc\u05d0\u05d9\u05dd 3 \u05e4\u05e2\u05de\u05d9\u05d9\u05dd \u05d5\u05e9\u05d5\u05e4\u05db\u05d9\u05dd \u05d7\u05e6\u05d9\",\r\n            \"\u05de\u05de\u05dc\u05d0\u05d9\u05dd 5 \u05d5\u05de\u05d5\u05e6\u05d9\u05d0\u05d9\u05dd \u05dc\u05d9\u05d8\u05e8 \u05dc\u05e4\u05d9 \u05d4\u05e2\u05d9\u05df\",\r\n            \"\u05d0\u05d9 \u05d0\u05e4\u05e9\u05e8\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05de\u05de\u05dc\u05d0\u05d9\u05dd 5, \u05e9\u05d5\u05e4\u05db\u05d9\u05dd \u05dc\u05be3, \u05de\u05e2\u05d1\u05d9\u05e8\u05d9\u05dd \u05d0\u05ea \u05d4\u05be2 \u05e9\u05e0\u05e9\u05d0\u05e8\u05d5 \u05dc\u05be3, \u05de\u05de\u05dc\u05d0\u05d9\u05dd \u05e9\u05d5\u05d1 5 \u05d5\u05de\u05e9\u05dc\u05d9\u05de\u05d9\u05dd \u05d0\u05ea \u05d4\u05be3\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"state-planning\",\r\n\r\n        archetype:\r\n            \"water-jugs\",\r\n\r\n        variationGroup:\r\n            \"water-jugs-3-5\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            25,\r\n\r\n        hints: [\r\n            \"\u05e0\u05e1\u05d5 \u05e7\u05d5\u05d3\u05dd \u05dc\u05d9\u05d9\u05e6\u05e8 \u05d1\u05d3\u05d9\u05d5\u05e7 2 \u05dc\u05d9\u05d8\u05e8.\",\r\n            \"\u05d0\u05d7\u05e8\u05d9 \u05e9\u05d9\u05e9 2 \u05dc\u05d9\u05d8\u05e8 \u05d1\u05db\u05dc\u05d9 \u05e9\u05dc 3 \u05d7\u05e1\u05e8 \u05d1\u05d5 \u05dc\u05d9\u05d8\u05e8 \u05d0\u05d7\u05d3.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"5 \u05d0\u05dc 3 \u05de\u05e9\u05d0\u05d9\u05e8 2. \u05de\u05e2\u05d1\u05d9\u05e8\u05d9\u05dd \u05d0\u05ea \u05d4\u05be2 \u05dc\u05db\u05dc\u05d9 \u05d4\u05e7\u05d8\u05df, \u05de\u05de\u05dc\u05d0\u05d9\u05dd \u05e9\u05d5\u05d1 5 \u05d5\u05de\u05e9\u05dc\u05d9\u05de\u05d9\u05dd \u05de\u05de\u05e0\u05d5 \u05dc\u05d9\u05d8\u05e8 \u05d0\u05d7\u05d3. \u05e0\u05e9\u05d0\u05e8\u05d9\u05dd 4.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"boxes-one-true\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d8\u05d1\u05e2 \u05e0\u05de\u05e6\u05d0 \u05d1\u05d0\u05d7\u05ea \u05de\u05e9\u05dc\u05d5\u05e9 \u05e7\u05d5\u05e4\u05e1\u05d0\u05d5\u05ea. \u05e2\u05dc \u05d0' \u05db\u05ea\u05d5\u05d1: '\u05d4\u05de\u05d8\u05d1\u05e2 \u05d1\u05d1''. \u05e2\u05dc \u05d1' \u05db\u05ea\u05d5\u05d1: '\u05d4\u05de\u05d8\u05d1\u05e2 \u05dc\u05d0 \u05d1\u05d1''. \u05e2\u05dc \u05d2' \u05db\u05ea\u05d5\u05d1: '\u05d4\u05de\u05d8\u05d1\u05e2 \u05dc\u05d0 \u05d1\u05d0''. \u05d9\u05d3\u05d5\u05e2 \u05e9\u05e8\u05e7 \u05de\u05e9\u05e4\u05d8 \u05d0\u05d7\u05d3 \u05e0\u05db\u05d5\u05df. \u05d0\u05d9\u05e4\u05d4 \u05d4\u05de\u05d8\u05d1\u05e2?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05d1\u05e7\u05d5\u05e4\u05e1\u05d4 \u05d0'\",\r\n            \"\u05d1\u05e7\u05d5\u05e4\u05e1\u05d4 \u05d1'\",\r\n            \"\u05d1\u05e7\u05d5\u05e4\u05e1\u05d4 \u05d2'\",\r\n            \"\u05d0\u05d9\u05df \u05de\u05e1\u05e4\u05d9\u05e7 \u05de\u05d9\u05d3\u05e2\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d1\u05e7\u05d5\u05e4\u05e1\u05d4 \u05d0'\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"truth-constraints\",\r\n\r\n        archetype:\r\n            \"exactly-one-true\",\r\n\r\n        variationGroup:\r\n            \"three-box-statements\",\r\n\r\n        difficulty:\r\n            8,\r\n\r\n        estimatedTime:\r\n            25,\r\n\r\n        hints: [\r\n            \"\u05d1\u05d3\u05e7\u05d5 \u05db\u05dc \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d5\u05e1\u05e4\u05e8\u05d5 \u05db\u05de\u05d4 \u05de\u05e9\u05e4\u05d8\u05d9\u05dd \u05d4\u05d5\u05e4\u05db\u05d9\u05dd \u05dc\u05e0\u05db\u05d5\u05e0\u05d9\u05dd.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05d0\u05dd \u05d4\u05de\u05d8\u05d1\u05e2 \u05d1\u05d0', \u05e8\u05e7 \u05d4\u05de\u05e9\u05e4\u05d8 \u05e9\u05e2\u05dc \u05d1' \u05e0\u05db\u05d5\u05df.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"three-hats-red\",\r\n    {\r\n        prompt:\r\n            \"\u05d0' \u05e8\u05d5\u05d0\u05d4 \u05d0\u05ea \u05d4\u05db\u05d5\u05d1\u05e2\u05d9\u05dd \u05e9\u05dc \u05d1' \u05d5\u05d2'. \u05d1' \u05e8\u05d5\u05d0\u05d4 \u05d0\u05ea \u05d4\u05db\u05d5\u05d1\u05e2 \u05e9\u05dc \u05d2'. \u05d2' \u05dc\u05d0 \u05e8\u05d5\u05d0\u05d4 \u05d0\u05e3 \u05db\u05d5\u05d1\u05e2. \u05db\u05d5\u05dc\u05dd \u05d9\u05d5\u05d3\u05e2\u05d9\u05dd \u05e9\u05dc\u05e4\u05d7\u05d5\u05ea \u05db\u05d5\u05d1\u05e2 \u05d0\u05d7\u05d3 \u05d0\u05d3\u05d5\u05dd. \u05d0' \u05d0\u05d5\u05de\u05e8: '\u05d0\u05e0\u05d9 \u05dc\u05d0 \u05d9\u05d5\u05d3\u05e2 \u05de\u05d4 \u05d4\u05e6\u05d1\u05e2 \u05e9\u05dc\u05d9'. \u05d1' \u05d0\u05d5\u05de\u05e8: '\u05d2\u05dd \u05d0\u05e0\u05d9 \u05dc\u05d0 \u05d9\u05d5\u05d3\u05e2'. \u05de\u05d4 \u05d2' \u05d9\u05db\u05d5\u05dc \u05dc\u05d3\u05e2\u05ea?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05e9\u05d4\u05db\u05d5\u05d1\u05e2 \u05e9\u05dc\u05d5 \u05d0\u05d3\u05d5\u05dd\",\r\n            \"\u05e9\u05d4\u05db\u05d5\u05d1\u05e2 \u05e9\u05dc\u05d5 \u05db\u05d7\u05d5\u05dc\",\r\n            \"\u05e9\u05d4\u05db\u05d5\u05d1\u05e2 \u05e9\u05dc \u05d0' \u05d0\u05d3\u05d5\u05dd\",\r\n            \"\u05e2\u05d3\u05d9\u05d9\u05df \u05d0\u05d9 \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d3\u05e2\u05ea\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05e9\u05d4\u05db\u05d5\u05d1\u05e2 \u05e9\u05dc\u05d5 \u05d0\u05d3\u05d5\u05dd\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"recursive-knowledge\",\r\n\r\n        archetype:\r\n            \"knowledge-about-knowledge\",\r\n\r\n        variationGroup:\r\n            \"three-hats-red\",\r\n\r\n        difficulty:\r\n            9,\r\n\r\n        estimatedTime:\r\n            40,\r\n\r\n        isLong:\r\n            true,\r\n\r\n        hints: [\r\n            \"\u05d0' \u05dc\u05d0 \u05e8\u05d0\u05d4 \u05e9\u05e0\u05d9 \u05db\u05d5\u05d1\u05e2\u05d9\u05dd \u05db\u05d7\u05d5\u05dc\u05d9\u05dd.\",\r\n            \"\u05d0\u05dd \u05d2' \u05d4\u05d9\u05d4 \u05db\u05d7\u05d5\u05dc, \u05de\u05d4 \u05d1' \u05d4\u05d9\u05d4 \u05de\u05e1\u05d9\u05e7?\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05d0' \u05dc\u05d0 \u05d9\u05d5\u05d3\u05e2 \u05d5\u05dc\u05db\u05df \u05dc\u05e4\u05d7\u05d5\u05ea \u05d0\u05d7\u05d3 \u05de\u05d1' \u05d5\u05d2' \u05d0\u05d3\u05d5\u05dd. \u05d0\u05d9\u05dc\u05d5 \u05d2' \u05d4\u05d9\u05d4 \u05db\u05d7\u05d5\u05dc, \u05d1' \u05d4\u05d9\u05d4 \u05d9\u05d5\u05d3\u05e2 \u05e9\u05d4\u05d5\u05d0 \u05d0\u05d3\u05d5\u05dd. \u05de\u05db\u05d9\u05d5\u05d5\u05df \u05e9\u05d2\u05dd \u05d1' \u05d0\u05d9\u05e0\u05d5 \u05d9\u05d5\u05d3\u05e2, \u05d2' \u05d7\u05d9\u05d9\u05d1 \u05dc\u05d4\u05d9\u05d5\u05ea \u05d0\u05d3\u05d5\u05dd.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"poison-1000\",\r\n    {\r\n        prompt:\r\n            \"\u05d9\u05e9 1,000 \u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05d5\u05e8\u05e7 \u05d0\u05d7\u05ea \u05e0\u05db\u05d5\u05e0\u05d4. \u05db\u05dc \u05d1\u05d3\u05d9\u05e7\u05d4 \u05e0\u05d5\u05ea\u05e0\u05ea \u05ea\u05e9\u05d5\u05d1\u05d4 \u05d1\u05d9\u05e0\u05d0\u05e8\u05d9\u05ea \u05d1\u05dc\u05d1\u05d3: \u05db\u05df \u05d0\u05d5 \u05dc\u05d0. \u05db\u05de\u05d4 \u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05d1\u05d9\u05e0\u05d0\u05e8\u05d9\u05d5\u05ea \u05e9\u05d5\u05e0\u05d5\u05ea \u05d3\u05e8\u05d5\u05e9\u05d5\u05ea \u05dc\u05e4\u05d7\u05d5\u05ea \u05db\u05d3\u05d9 \u05dc\u05d6\u05d4\u05d5\u05ea \u05d1\u05d5\u05d5\u05d3\u05d0\u05d5\u05ea \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d0\u05d7\u05ea \u05de\u05ea\u05d5\u05da 1,000?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"8\",\r\n            \"9\",\r\n            \"10\",\r\n            \"100\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(10),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"information-theory\",\r\n\r\n        archetype:\r\n            \"binary-encoding\",\r\n\r\n        variationGroup:\r\n            \"binary-thousand\",\r\n\r\n        difficulty:\r\n            9,\r\n\r\n        estimatedTime:\r\n            40,\r\n\r\n        hints: [\r\n            \"\u05db\u05dc \u05ea\u05e9\u05d5\u05d1\u05ea \u05db\u05df \u05d0\u05d5 \u05dc\u05d0 \u05de\u05d5\u05e1\u05d9\u05e4\u05d4 \u05d1\u05d9\u05d8 \u05d0\u05d7\u05d3.\",\r\n            \"2 \u05d1\u05d7\u05d6\u05e7\u05ea \u05db\u05de\u05d4 \u05db\u05d1\u05e8 \u05e2\u05d5\u05d1\u05e8 \u05d0\u05ea 1,000?\"\r\n        ],\r\n\r\n        explanation:\r\n            \"2\u00b9\u2070 \u05d4\u05dd 1,024 \u05de\u05e6\u05d1\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd. 9 \u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05d9\u05d5\u05e6\u05e8\u05d5\u05ea \u05e8\u05e7 512.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"counterfeit-bags\",\r\n    {\r\n        prompt:\r\n            \"\u05d9\u05e9 10 \u05e9\u05e7\u05d9 \u05de\u05d8\u05d1\u05e2\u05d5\u05ea. \u05d1\u05e9\u05e7 \u05d0\u05d7\u05d3 \u05db\u05dc \u05de\u05d8\u05d1\u05e2 \u05e9\u05d5\u05e7\u05dc 9 \u05d2\u05e8\u05dd \u05d5\u05d1\u05d9\u05ea\u05e8 10 \u05d2\u05e8\u05dd. \u05d9\u05e9 \u05de\u05e9\u05e7\u05dc \u05d3\u05d9\u05d2\u05d9\u05d8\u05dc\u05d9 \u05d5\u05de\u05d5\u05ea\u05e8\u05ea \u05e9\u05e7\u05d9\u05dc\u05d4 \u05d0\u05d7\u05ea \u05d1\u05dc\u05d1\u05d3. \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d6\u05d4\u05d5\u05ea \u05d0\u05ea \u05d4\u05e9\u05e7?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05db\u05df. \u05dc\u05d5\u05e7\u05d7\u05d9\u05dd 1 \u05de\u05d4\u05e8\u05d0\u05e9\u05d5\u05df, 2 \u05de\u05d4\u05e9\u05e0\u05d9 \u05d5\u05db\u05df \u05d4\u05dc\u05d0\u05d4\",\r\n            \"\u05db\u05df. \u05e9\u05d5\u05e7\u05dc\u05d9\u05dd \u05e9\u05e7 \u05d0\u05d7\u05d3 \u05e9\u05dc\u05dd\",\r\n            \"\u05dc\u05d0. \u05d3\u05e8\u05d5\u05e9\u05d5\u05ea \u05e9\u05ea\u05d9 \u05e9\u05e7\u05d9\u05dc\u05d5\u05ea\",\r\n            \"\u05e8\u05e7 \u05d0\u05dd \u05d1\u05db\u05dc \u05e9\u05e7 \u05d0\u05d5\u05ea\u05d5 \u05de\u05e1\u05e4\u05e8 \u05de\u05d8\u05d1\u05e2\u05d5\u05ea\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05db\u05df. \u05dc\u05d5\u05e7\u05d7\u05d9\u05dd 1 \u05de\u05d4\u05e8\u05d0\u05e9\u05d5\u05df, 2 \u05de\u05d4\u05e9\u05e0\u05d9 \u05d5\u05db\u05df \u05d4\u05dc\u05d0\u05d4\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"encoding\",\r\n\r\n        archetype:\r\n            \"weighted-encoding\",\r\n\r\n        variationGroup:\r\n            \"counterfeit-ten-bags\",\r\n\r\n        difficulty:\r\n            8,\r\n\r\n        estimatedTime:\r\n            28,\r\n\r\n        hints: [\r\n            \"\u05d0\u05dd \u05db\u05dc \u05d4\u05de\u05d8\u05d1\u05e2\u05d5\u05ea \u05d4\u05d9\u05d5 \u05ea\u05e7\u05d9\u05e0\u05d9\u05dd, \u05d4\u05de\u05e9\u05e7\u05dc \u05d4\u05db\u05d5\u05dc\u05dc \u05d9\u05d3\u05d5\u05e2 \u05de\u05e8\u05d0\u05e9.\",\r\n            \"\u05d7\u05d5\u05e1\u05e8 \u05e9\u05dc 7 \u05d2\u05e8\u05dd \u05d9\u05e6\u05d1\u05d9\u05e2 \u05e2\u05dc \u05e9\u05e7 \u05de\u05e1\u05e4\u05e8 7.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05dc\u05d5\u05e7\u05d7\u05d9\u05dd 1 \u05de\u05d4\u05e9\u05e7 \u05d4\u05e8\u05d0\u05e9\u05d5\u05df \u05d5\u05e2\u05d3 10 \u05de\u05d4\u05e2\u05e9\u05d9\u05e8\u05d9. \u05d4\u05d4\u05e4\u05e8\u05e9 \u05de\u05d4\u05de\u05e9\u05e7\u05dc \u05d4\u05e6\u05e4\u05d5\u05d9 \u05de\u05d6\u05d4\u05d4 \u05d9\u05e9\u05d9\u05e8\u05d5\u05ea \u05d0\u05ea \u05d4\u05e9\u05e7.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"conditional-door\",\r\n    {\r\n        prompt:\r\n            \"\u05d4\u05db\u05dc\u05dc \u05d4\u05d5\u05d0: \u05d0\u05dd \u05d4\u05e7\u05d5\u05d3 \u05e0\u05db\u05d5\u05df, \u05d4\u05d3\u05dc\u05ea \u05e0\u05e4\u05ea\u05d7\u05ea. \u05d4\u05d3\u05dc\u05ea \u05dc\u05d0 \u05e0\u05e4\u05ea\u05d7\u05d4. \u05de\u05d4 \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d4\u05e1\u05d9\u05e7 \u05d1\u05d5\u05d5\u05d3\u05d0\u05d5\u05ea?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05d4\u05e7\u05d5\u05d3 \u05dc\u05d0 \u05d4\u05d9\u05d4 \u05e0\u05db\u05d5\u05df\",\r\n            \"\u05d4\u05e7\u05d5\u05d3 \u05d4\u05d9\u05d4 \u05e0\u05db\u05d5\u05df\",\r\n            \"\u05d4\u05d3\u05dc\u05ea \u05de\u05e7\u05d5\u05dc\u05e7\u05dc\u05ea\",\r\n            \"\u05d0\u05d9 \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d4\u05e1\u05d9\u05e7 \u05d3\u05d1\u05e8\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d4\u05e7\u05d5\u05d3 \u05dc\u05d0 \u05d4\u05d9\u05d4 \u05e0\u05db\u05d5\u05df\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"formal-logic\",\r\n\r\n        archetype:\r\n            \"contrapositive\",\r\n\r\n        variationGroup:\r\n            \"conditional-inference\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            12\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"conditional-alarm\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05dd \u05d4\u05d0\u05d6\u05e2\u05e7\u05d4 \u05e4\u05d5\u05e2\u05dc\u05ea, \u05d4\u05e0\u05d5\u05e8\u05d4 \u05d4\u05d0\u05d3\u05d5\u05de\u05d4 \u05e0\u05d3\u05dc\u05e7\u05ea. \u05d4\u05e0\u05d5\u05e8\u05d4 \u05d4\u05d0\u05d3\u05d5\u05de\u05d4 \u05d3\u05d5\u05dc\u05e7\u05ea. \u05d4\u05d0\u05dd \u05de\u05db\u05d0\u05df \u05e0\u05d5\u05d1\u05e2 \u05e9\u05d4\u05d0\u05d6\u05e2\u05e7\u05d4 \u05e4\u05d5\u05e2\u05dc\u05ea?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05db\u05df\",\r\n            \"\u05dc\u05d0\",\r\n            \"\u05e8\u05e7 \u05d0\u05dd \u05d4\u05e0\u05d5\u05e8\u05d4 \u05d7\u05d3\u05e9\u05d4\",\r\n            \"\u05e8\u05e7 \u05d1\u05dc\u05d9\u05dc\u05d4\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05dc\u05d0\"\r\n            ),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"formal-logic\",\r\n\r\n        archetype:\r\n            \"affirming-consequent\",\r\n\r\n        variationGroup:\r\n            \"conditional-inference\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            11,\r\n\r\n        explanation:\r\n            \"\u05d9\u05d9\u05ea\u05db\u05e0\u05d5 \u05e1\u05d9\u05d1\u05d5\u05ea \u05d0\u05d7\u05e8\u05d5\u05ea \u05dc\u05db\u05da \u05e9\u05d4\u05e0\u05d5\u05e8\u05d4 \u05d3\u05d5\u05dc\u05e7\u05ea.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"balls-same-color\",\r\n    {\r\n        prompt:\r\n            \"\u05d1\u05e9\u05e7 \u05d9\u05e9 2 \u05db\u05d3\u05d5\u05e8\u05d9\u05dd \u05d0\u05d3\u05d5\u05de\u05d9\u05dd \u05d5\u05be3 \u05db\u05d7\u05d5\u05dc\u05d9\u05dd. \u05e9\u05d5\u05dc\u05e4\u05d9\u05dd \u05e9\u05e0\u05d9\u05d9\u05dd \u05d1\u05dc\u05d9 \u05dc\u05d4\u05d7\u05d6\u05d9\u05e8. \u05de\u05d4 \u05d4\u05d4\u05e1\u05ea\u05d1\u05e8\u05d5\u05ea \u05e9\u05e9\u05e0\u05d9\u05d4\u05dd \u05d9\u05d4\u05d9\u05d5 \u05d1\u05d0\u05d5\u05ea\u05d5 \u05e6\u05d1\u05e2?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"1\/5\",\r\n            \"2\/5\",\r\n            \"1\/2\",\r\n            \"3\/5\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"2\/5\"\r\n            ),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"probability\",\r\n\r\n        archetype:\r\n            \"without-replacement\",\r\n\r\n        variationGroup:\r\n            \"balls-same-color\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            20,\r\n\r\n        hints: [\r\n            \"\u05d9\u05e9 10 \u05d6\u05d5\u05d2\u05d5\u05ea \u05d0\u05e4\u05e9\u05e8\u05d9\u05d9\u05dd.\",\r\n            \"\u05d9\u05e9 \u05d6\u05d5\u05d2 \u05d0\u05d3\u05d5\u05dd \u05d0\u05d7\u05d3 \u05d5\u05e2\u05d5\u05d3 3 \u05d6\u05d5\u05d2\u05d5\u05ea \u05db\u05d7\u05d5\u05dc\u05d9\u05dd.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"4 \u05d6\u05d5\u05d2\u05d5\u05ea \u05de\u05ea\u05d0\u05d9\u05de\u05d9\u05dd \u05de\u05ea\u05d5\u05da 10, \u05db\u05dc\u05d5\u05de\u05e8 2\/5.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"missing-digit-936\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05d9\u05d6\u05d5 \u05e1\u05e4\u05e8\u05d4 \u05d7\u05e1\u05e8\u05d4 \u05d1\u05de\u05e1\u05e4\u05e8 ?36 \u05db\u05da \u05e9\u05d4\u05de\u05e1\u05e4\u05e8 \u05d9\u05ea\u05d7\u05dc\u05e7 \u05d2\u05dd \u05d1\u05be8 \u05d5\u05d2\u05dd \u05d1\u05be9?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"3\",\r\n            \"6\",\r\n            \"8\",\r\n            \"9\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(9),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"number-properties\",\r\n\r\n        archetype:\r\n            \"missing-digit-divisibility\",\r\n\r\n        variationGroup:\r\n            \"divisibility-missing-digit\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            18,\r\n\r\n        hints: [\r\n            \"\u05db\u05d3\u05d9 \u05dc\u05d4\u05ea\u05d7\u05dc\u05e7 \u05d1\u05be9 \u05e1\u05db\u05d5\u05dd \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05e6\u05e8\u05d9\u05da \u05dc\u05d4\u05ea\u05d7\u05dc\u05e7 \u05d1\u05be9.\",\r\n            \"9 + 3 + 6 = 18.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"three-digit-reversal\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05e1\u05e4\u05e8 \u05d1\u05df \u05e9\u05dc\u05d5\u05e9 \u05e1\u05e4\u05e8\u05d5\u05ea \u05de\u05ea\u05d7\u05d9\u05dc \u05d1\u05be4. \u05db\u05e9\u05de\u05d4\u05e4\u05db\u05d9\u05dd \u05d0\u05ea \u05e1\u05d3\u05e8 \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05de\u05ea\u05e7\u05d1\u05dc \u05de\u05e1\u05e4\u05e8 \u05d4\u05d2\u05d3\u05d5\u05dc \u05de\u05de\u05e0\u05d5 \u05d1\u05be198. \u05d0\u05d9\u05d6\u05d5 \u05e1\u05e4\u05e8\u05d4 \u05e0\u05de\u05e6\u05d0\u05ea \u05d1\u05e1\u05d5\u05e3 \u05d4\u05de\u05e1\u05e4\u05e8?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"5\",\r\n            \"6\",\r\n            \"7\",\r\n            \"8\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(6),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"algebraic-structure\",\r\n\r\n        archetype:\r\n            \"digit-reversal\",\r\n\r\n        variationGroup:\r\n            \"three-digit-reversal\",\r\n\r\n        difficulty:\r\n            8,\r\n\r\n        estimatedTime:\r\n            25,\r\n\r\n        hints: [\r\n            \"\u05d4\u05e1\u05e4\u05e8\u05d4 \u05d4\u05d0\u05de\u05e6\u05e2\u05d9\u05ea \u05d0\u05d9\u05e0\u05d4 \u05de\u05e9\u05e4\u05d9\u05e2\u05d4 \u05e2\u05dc \u05d4\u05d4\u05e4\u05e8\u05e9.\",\r\n            \"198 \u05d7\u05dc\u05e7\u05d9 99 \u05d4\u05d5\u05d0 2.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"power-last-digit\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d4\u05e1\u05e4\u05e8\u05d4 \u05d4\u05d0\u05d7\u05e8\u05d5\u05e0\u05d4 \u05e9\u05dc 7\u00b9\u2070\u2070?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"1\",\r\n            \"3\",\r\n            \"7\",\r\n            \"9\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(1),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"cyclic-pattern\",\r\n\r\n        archetype:\r\n            \"last-digit-cycle\",\r\n\r\n        variationGroup:\r\n            \"powers-last-digit\",\r\n\r\n        difficulty:\r\n            7,\r\n\r\n        estimatedTime:\r\n            18,\r\n\r\n        hints: [\r\n            \"\u05d1\u05d3\u05e7\u05d5 \u05d0\u05ea \u05d4\u05e1\u05e4\u05e8\u05d4 \u05d4\u05d0\u05d7\u05e8\u05d5\u05e0\u05d4 \u05e9\u05dc 7\u00b9, 7\u00b2, 7\u00b3 \u05d5\u05be7\u2074.\",\r\n            \"\u05d9\u05e9 \u05de\u05d7\u05d6\u05d5\u05e8 \u05e9\u05dc 4.\"\r\n        ],\r\n\r\n        explanation:\r\n            \"\u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05d4\u05d0\u05d7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d4\u05df 7, 9, 3, 1 \u05d5\u05d7\u05d5\u05d6\u05e8 \u05d7\u05dc\u05d9\u05dc\u05d4. 100 \u05de\u05ea\u05d7\u05dc\u05e7 \u05d1\u05be4.\"\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"direction-turns\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05ea\u05dd \u05e4\u05d5\u05e0\u05d9\u05dd \u05e6\u05e4\u05d5\u05e0\u05d4. \u05e4\u05d5\u05e0\u05d9\u05dd \u05d9\u05de\u05d9\u05e0\u05d4, \u05de\u05e1\u05ea\u05d5\u05d1\u05d1\u05d9\u05dd 180\u00b0, \u05d5\u05d0\u05d6 \u05e4\u05d5\u05e0\u05d9\u05dd \u05e9\u05de\u05d0\u05dc\u05d4. \u05dc\u05d0\u05d9\u05d6\u05d4 \u05db\u05d9\u05d5\u05d5\u05df \u05d0\u05ea\u05dd \u05e4\u05d5\u05e0\u05d9\u05dd \u05e2\u05db\u05e9\u05d9\u05d5?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"\u05e6\u05e4\u05d5\u05df\",\r\n            \"\u05d3\u05e8\u05d5\u05dd\",\r\n            \"\u05de\u05d6\u05e8\u05d7\",\r\n            \"\u05de\u05e2\u05e8\u05d1\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d3\u05e8\u05d5\u05dd\"\r\n            ),\r\n\r\n        category:\r\n            \"visual\",\r\n\r\n        cognitive:\r\n            \"spatial-orientation\",\r\n\r\n        archetype:\r\n            \"mental-rotation\",\r\n\r\n        variationGroup:\r\n            \"direction-turns\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            12,\r\n\r\n        isVisual:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"stroop-blue\",\r\n    {\r\n        prompt:\r\n            \"\u05dc\u05d7\u05e6\u05d5 \u05e2\u05dc \u05d4\u05de\u05d9\u05dc\u05d4 \u05e9\u05e6\u05d1\u05d5\u05e2\u05d4 \u05d1\u05db\u05d7\u05d5\u05dc. \u05dc\u05d0 \u05e2\u05dc \u05d4\u05de\u05d9\u05dc\u05d4 \u05e9\u05db\u05ea\u05d5\u05d1 \u05d1\u05d4 '\u05db\u05d7\u05d5\u05dc'.\",\r\n\r\n        interaction:\r\n            \"tap\",\r\n\r\n        tapColumns:\r\n            2,\r\n\r\n        tapItems: [\r\n            {\r\n                label:\r\n                    \"\u05d0\u05d3\u05d5\u05dd\",\r\n\r\n                value:\r\n                    \"correct\",\r\n\r\n                style: {\r\n                    color:\r\n                        \"#4f8cff\",\r\n\r\n                    fontSize:\r\n                        \"20px\"\r\n                }\r\n            },\r\n\r\n            {\r\n                label:\r\n                    \"\u05db\u05d7\u05d5\u05dc\",\r\n\r\n                value:\r\n                    \"wrong\",\r\n\r\n                style: {\r\n                    color:\r\n                        \"#ff7182\",\r\n\r\n                    fontSize:\r\n                        \"20px\"\r\n                }\r\n            },\r\n\r\n            {\r\n                label:\r\n                    \"\u05d9\u05e8\u05d5\u05e7\",\r\n\r\n                value:\r\n                    \"wrong\",\r\n\r\n                style: {\r\n                    color:\r\n                        \"#51ecb4\",\r\n\r\n                    fontSize:\r\n                        \"20px\"\r\n                }\r\n            },\r\n\r\n            {\r\n                label:\r\n                    \"\u05e6\u05d4\u05d5\u05d1\",\r\n\r\n                value:\r\n                    \"wrong\",\r\n\r\n                style: {\r\n                    color:\r\n                        \"#f2c86a\",\r\n\r\n                    fontSize:\r\n                        \"20px\"\r\n                }\r\n            }\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"correct\",\r\n                [],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"visual\",\r\n\r\n        cognitive:\r\n            \"inhibition\",\r\n\r\n        archetype:\r\n            \"stroop\",\r\n\r\n        variationGroup:\r\n            \"stroop-color-word\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            5,\r\n\r\n        isVisual:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"largest-number-trap\",\r\n    {\r\n        prompt:\r\n            \"\u05dc\u05d7\u05e6\u05d5 \u05e2\u05dc \u05d4\u05de\u05e1\u05e4\u05e8 \u05d4\u05d2\u05d3\u05d5\u05dc \u05d1\u05d9\u05d5\u05ea\u05e8.\",\r\n\r\n        interaction:\r\n            \"tap\",\r\n\r\n        tapColumns:\r\n            2,\r\n\r\n        tapItems: [\r\n            {\r\n                label:\r\n                    \"8\",\r\n\r\n                value:\r\n                    \"wrong\",\r\n\r\n                style: {\r\n                    fontSize:\r\n                        \"42px\"\r\n                }\r\n            },\r\n\r\n            {\r\n                label:\r\n                    \"27\",\r\n\r\n                value:\r\n                    \"wrong\",\r\n\r\n                style: {\r\n                    fontSize:\r\n                        \"18px\"\r\n                }\r\n            },\r\n\r\n            {\r\n                label:\r\n                    \"103\",\r\n\r\n                value:\r\n                    \"correct\",\r\n\r\n                style: {\r\n                    fontSize:\r\n                        \"15px\"\r\n                }\r\n            },\r\n\r\n            {\r\n                label:\r\n                    \"64\",\r\n\r\n                value:\r\n                    \"wrong\",\r\n\r\n                style: {\r\n                    fontSize:\r\n                        \"28px\"\r\n                }\r\n            }\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"correct\",\r\n                [],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"visual\",\r\n\r\n        cognitive:\r\n            \"inhibition\",\r\n\r\n        archetype:\r\n            \"size-vs-value\",\r\n\r\n        variationGroup:\r\n            \"visual-size-number\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            4,\r\n\r\n        isVisual:\r\n            true,\r\n\r\n        isTrick:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"memory-missing-symbol\",\r\n    {\r\n        prompt:\r\n            \"\u05d6\u05db\u05e8\u05d5 \u05d0\u05d9\u05dc\u05d5 \u05e1\u05de\u05dc\u05d9\u05dd \u05de\u05d5\u05e4\u05d9\u05e2\u05d9\u05dd.\",\r\n\r\n        subPrompt:\r\n            \"\u05dc\u05d0 \u05e6\u05e8\u05d9\u05da \u05dc\u05d6\u05db\u05d5\u05e8 \u05d0\u05ea \u05d4\u05e1\u05d3\u05e8.\",\r\n\r\n        interaction:\r\n            \"memory\",\r\n\r\n        memorySequence: [\r\n            \"\u25c6\",\r\n            \"\u25b2\",\r\n            \"\u25cf\",\r\n            \"\u2605\",\r\n            \"\u25a0\",\r\n            \"\u25cb\"\r\n        ],\r\n\r\n        memoryQuestion:\r\n            \"\u05d0\u05d9\u05d6\u05d4 \u05de\u05d4\u05e1\u05de\u05dc\u05d9\u05dd \u05d4\u05d0\u05dc\u05d4 \u05dc\u05d0 \u05d4\u05d5\u05e4\u05d9\u05e2?\",\r\n\r\n        choices: [\r\n            \"\u25b2\",\r\n            \"\u2726\",\r\n            \"\u25cf\",\r\n            \"\u25a0\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u2726\",\r\n                [],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"memory\",\r\n\r\n        cognitive:\r\n            \"recognition-memory\",\r\n\r\n        archetype:\r\n            \"memory-exclusion\",\r\n\r\n        variationGroup:\r\n            \"memory-missing-symbol\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            11,\r\n\r\n        isVisual:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"memory-after-triangle\",\r\n    {\r\n        prompt:\r\n            \"\u05d6\u05db\u05e8\u05d5 \u05d2\u05dd \u05d0\u05ea \u05d4\u05e1\u05d3\u05e8.\",\r\n\r\n        interaction:\r\n            \"memory\",\r\n\r\n        memorySequence: [\r\n            \"\u25cb\",\r\n            \"\u25c6\",\r\n            \"\u25b2\",\r\n            \"\u2605\",\r\n            \"\u25a0\",\r\n            \"\u25cf\"\r\n        ],\r\n\r\n        memoryQuestion:\r\n            \"\u05d0\u05d9\u05d6\u05d4 \u05e1\u05de\u05dc \u05d4\u05d5\u05e4\u05d9\u05e2 \u05de\u05d9\u05d3 \u05d0\u05d7\u05e8\u05d9 \u25b2?\",\r\n\r\n        choices: [\r\n            \"\u25c6\",\r\n            \"\u2605\",\r\n            \"\u25a0\",\r\n            \"\u25cf\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u2605\",\r\n                [],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"memory\",\r\n\r\n        cognitive:\r\n            \"sequence-memory\",\r\n\r\n        archetype:\r\n            \"memory-neighbor\",\r\n\r\n        variationGroup:\r\n            \"memory-sequence-neighbor\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            11,\r\n\r\n        isVisual:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"future-riddle\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05e0\u05d9 \u05ea\u05de\u05d9\u05d3 \u05dc\u05e4\u05e0\u05d9\u05db\u05dd, \u05d0\u05d1\u05dc \u05dc\u05e2\u05d5\u05dc\u05dd \u05dc\u05d0 \u05ea\u05d5\u05db\u05dc\u05d5 \u05dc\u05e8\u05d0\u05d5\u05ea \u05d0\u05d5\u05ea\u05d9. \u05de\u05d4 \u05d0\u05e0\u05d9?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d4\u05e2\u05ea\u05d9\u05d3\",\r\n                [\r\n                    \"\u05e2\u05ea\u05d9\u05d3\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"word\",\r\n\r\n        cognitive:\r\n            \"conceptual\",\r\n\r\n        archetype:\r\n            \"abstract-riddle\",\r\n\r\n        variationGroup:\r\n            \"future-ahead\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            8\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"darkness-more\",\r\n    {\r\n        prompt:\r\n            \"\u05db\u05db\u05dc \u05e9\u05d9\u05e9 \u05de\u05de\u05e0\u05d9 \u05d9\u05d5\u05ea\u05e8, \u05d0\u05ea\u05dd \u05e8\u05d5\u05d0\u05d9\u05dd \u05e4\u05d7\u05d5\u05ea. \u05de\u05d4 \u05d0\u05e0\u05d9?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d7\u05d5\u05e9\u05da\",\r\n                [\r\n                    \"\u05d4\u05d7\u05d5\u05e9\u05da\",\r\n                    \"\u05d0\u05e4\u05dc\u05d4\",\r\n                    \"\u05d7\u05e9\u05db\u05d4\"\r\n                ]\r\n            ),\r\n\r\n        category:\r\n            \"word\",\r\n\r\n        cognitive:\r\n            \"inverse-concept\",\r\n\r\n        archetype:\r\n            \"abstract-inverse-riddle\",\r\n\r\n        variationGroup:\r\n            \"darkness-less-vision\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            6\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"cards-hearts\",\r\n    {\r\n        prompt:\r\n            \"\u05dc\u05de\u05d9 \u05d9\u05e9 13 \u05dc\u05d1\u05d1\u05d5\u05ea \u05d0\u05d1\u05dc \u05d0\u05d9\u05df \u05d0\u05e4\u05d9\u05dc\u05d5 \u05d0\u05d9\u05d1\u05e8 \u05d0\u05d7\u05d3?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d7\u05e4\u05d9\u05e1\u05ea \u05e7\u05dc\u05e4\u05d9\u05dd\",\r\n                [\r\n                    \"\u05e7\u05dc\u05e4\u05d9\u05dd\",\r\n                    \"\u05d7\u05d1\u05d9\u05dc\u05ea \u05e7\u05dc\u05e4\u05d9\u05dd\",\r\n                    \"\u05d7\u05e4\u05d9\u05e1\u05d4\",\r\n                    \"\u05d7\u05e4\u05d9\u05e1\u05ea \u05de\u05e9\u05d7\u05e7\"\r\n                ],\r\n                {\r\n                    maxDistance:\r\n                        2\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"word\",\r\n\r\n        cognitive:\r\n            \"double-meaning\",\r\n\r\n        archetype:\r\n            \"object-wordplay\",\r\n\r\n        variationGroup:\r\n            \"cards-hearts\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            9\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"not-twins\",\r\n    {\r\n        prompt:\r\n            \"\u05e9\u05e0\u05d9 \u05d9\u05dc\u05d3\u05d9\u05dd \u05e0\u05d5\u05dc\u05d3\u05d5 \u05dc\u05d0\u05d5\u05ea\u05d4 \u05d0\u05de\u05d0, \u05d1\u05d0\u05d5\u05ea\u05d5 \u05d9\u05d5\u05dd, \u05d1\u05d0\u05d5\u05ea\u05d4 \u05e9\u05e2\u05d4 \u05d5\u05d1\u05d0\u05d5\u05ea\u05d4 \u05e9\u05e0\u05d4, \u05d0\u05d1\u05dc \u05d4\u05dd \u05dc\u05d0 \u05ea\u05d0\u05d5\u05de\u05d9\u05dd. \u05d0\u05d9\u05da \u05d6\u05d4 \u05d0\u05e4\u05e9\u05e8\u05d9?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d4\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9\u05d9\u05d4\",\r\n                [\r\n                    \"\u05e9\u05dc\u05d9\u05e9\u05d9\u05d9\u05d4\",\r\n                    \"\u05e9\u05dc\u05d9\u05e9\u05d9\u05d4\",\r\n                    \"\u05d4\u05dd \u05d7\u05dc\u05e7 \u05de\u05e9\u05dc\u05d9\u05e9\u05d9\u05d9\u05d4\",\r\n                    \"\u05d9\u05e9 \u05d9\u05dc\u05d3 \u05e9\u05dc\u05d9\u05e9\u05d9\",\r\n                    \"\u05d4\u05dd \u05d7\u05dc\u05e7 \u05de\u05dc\u05d9\u05d3\u05d4 \u05de\u05e8\u05d5\u05d1\u05ea \u05d9\u05dc\u05d3\u05d9\u05dd\"\r\n                ],\r\n                {\r\n                    maxDistance:\r\n                        2\r\n                }\r\n            ),\r\n\r\n        displayAnswer:\r\n            \"\u05d4\u05dd \u05d7\u05dc\u05e7 \u05de\u05e9\u05dc\u05d9\u05e9\u05d9\u05d9\u05d4 \u05d0\u05d5 \u05de\u05dc\u05d9\u05d3\u05d4 \u05de\u05e8\u05d5\u05d1\u05ea \u05d9\u05dc\u05d3\u05d9\u05dd\",\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"assumption-check\",\r\n\r\n        archetype:\r\n            \"hidden-third-option\",\r\n\r\n        variationGroup:\r\n            \"not-twins\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            8,\r\n\r\n        isTrick:\r\n            true\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"three-statements-number\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05e0\u05d9 \u05d7\u05d5\u05e9\u05d1 \u05e2\u05dc \u05de\u05e1\u05e4\u05e8. \u05d4\u05d5\u05d0 \u05d2\u05d3\u05d5\u05dc \u05de\u05be20, \u05e7\u05d8\u05df \u05de\u05be30, \u05d6\u05d5\u05d2\u05d9, \u05dc\u05d0 \u05de\u05ea\u05d7\u05dc\u05e7 \u05d1\u05be4 \u05d5\u05e1\u05db\u05d5\u05dd \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05e9\u05dc\u05d5 \u05d4\u05d5\u05d0 8. \u05de\u05d4 \u05d4\u05de\u05e1\u05e4\u05e8?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            numericAnswer(26),\r\n\r\n        category:\r\n            \"logic\",\r\n\r\n        cognitive:\r\n            \"constraint-solving\",\r\n\r\n        archetype:\r\n            \"number-constraints\",\r\n\r\n        variationGroup:\r\n            \"number-property-elimination\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            12,\r\n\r\n        hints: [\r\n            \"\u05d4\u05de\u05e1\u05e4\u05e8\u05d9\u05dd \u05d4\u05d6\u05d5\u05d2\u05d9\u05d9\u05dd \u05d1\u05d8\u05d5\u05d5\u05d7 \u05d4\u05dd 22, 24, 26 \u05d5\u05be28.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"ages-reversed\",\r\n    {\r\n        prompt:\r\n            \"\u05dc\u05d0\u05dd \u05d5\u05dc\u05d1\u05ea \u05d9\u05d7\u05d3 66 \u05e9\u05e0\u05d9\u05dd. \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05d1\u05d2\u05d9\u05dc \u05d4\u05d0\u05dd \u05d4\u05df \u05d4\u05e1\u05e4\u05e8\u05d5\u05ea \u05d1\u05d2\u05d9\u05dc \u05d4\u05d1\u05ea \u05d1\u05e1\u05d3\u05e8 \u05d4\u05e4\u05d5\u05da, \u05d5\u05d4\u05d0\u05dd \u05de\u05d1\u05d5\u05d2\u05e8\u05ea \u05de\u05d4\u05d1\u05ea \u05d1\u05be36 \u05e9\u05e0\u05d9\u05dd. \u05de\u05d4 \u05d2\u05d9\u05dc\u05df?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"42 \u05d5\u05be24\",\r\n            \"51 \u05d5\u05be15\",\r\n            \"60 \u05d5\u05be6\",\r\n            \"48 \u05d5\u05be18\"\r\n        ],\r\n\r\n        answer:\r\n            Answer(\r\n                \"51 \u05d5\u05be15\"\r\n            ),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"digit-reversal\",\r\n\r\n        archetype:\r\n            \"age-digit-reversal\",\r\n\r\n        variationGroup:\r\n            \"age-reversed-digits\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            10\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"sequence-square-plus\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d4\u05d1\u05d0?\\n2, 5, 10, 17, 26, ?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"35\",\r\n            \"36\",\r\n            \"37\",\r\n            \"38\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(37),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"pattern\",\r\n\r\n        archetype:\r\n            \"growing-difference\",\r\n\r\n        variationGroup:\r\n            \"sequence-odd-differences\",\r\n\r\n        difficulty:\r\n            5,\r\n\r\n        estimatedTime:\r\n            10,\r\n\r\n        hints: [\r\n            \"\u05d4\u05d4\u05e4\u05e8\u05e9\u05d9\u05dd \u05d4\u05dd 3, 5, 7, 9...\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"sequence-interleaved\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d4\u05d1\u05d0?\\n2, 20, 4, 18, 6, 16, 8, ?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"10\",\r\n            \"12\",\r\n            \"14\",\r\n            \"15\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(14),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"pattern\",\r\n\r\n        archetype:\r\n            \"interleaved-sequences\",\r\n\r\n        variationGroup:\r\n            \"interleaved-two-series\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            13,\r\n\r\n        hints: [\r\n            \"\u05e0\u05e1\u05d5 \u05dc\u05e7\u05e8\u05d5\u05d0 \u05db\u05dc \u05d0\u05d9\u05d1\u05e8 \u05e9\u05e0\u05d9.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"sequence-products\",\r\n    {\r\n        prompt:\r\n            \"\u05de\u05d4 \u05d4\u05d1\u05d0?\\n1, 2, 6, 24, 120, ?\",\r\n\r\n        interaction:\r\n            \"choice\",\r\n\r\n        choices: [\r\n            \"240\",\r\n            \"360\",\r\n            \"600\",\r\n            \"720\"\r\n        ],\r\n\r\n        answer:\r\n            numericAnswer(720),\r\n\r\n        category:\r\n            \"math\",\r\n\r\n        cognitive:\r\n            \"pattern\",\r\n\r\n        archetype:\r\n            \"factorial-sequence\",\r\n\r\n        variationGroup:\r\n            \"factorial\",\r\n\r\n        difficulty:\r\n            6,\r\n\r\n        estimatedTime:\r\n            12,\r\n\r\n        hints: [\r\n            \"\u05db\u05dc \u05de\u05e1\u05e4\u05e8 \u05de\u05d5\u05db\u05e4\u05dc \u05d1\u05de\u05e1\u05e4\u05e8 \u05e9\u05d4\u05d5\u05dc\u05da \u05d5\u05d2\u05d3\u05dc.\"\r\n        ]\r\n    }\r\n),\r\n\r\n\r\nP(\r\n    \"word-self-reference\",\r\n    {\r\n        prompt:\r\n            \"\u05d0\u05d9\u05d6\u05d5 \u05de\u05d9\u05dc\u05d4 \u05e0\u05de\u05e6\u05d0\u05ea \u05d1\u05e1\u05d5\u05e3 \u05d4\u05de\u05e9\u05e4\u05d8 \u05d4\u05d6\u05d4?\",\r\n\r\n        interaction:\r\n            \"text\",\r\n\r\n        answer:\r\n            Answer(\r\n                \"\u05d4\u05d6\u05d4\",\r\n                [\r\n                    \"\u05d6\u05d4\"\r\n                ],\r\n                {\r\n                    fuzzy:\r\n                        false\r\n                }\r\n            ),\r\n\r\n        category:\r\n            \"word\",\r\n\r\n        cognitive:\r\n            \"self-reference\",\r\n\r\n        archetype:\r\n            \"self-referential-text\",\r\n\r\n        variationGroup:\r\n            \"sentence-self-reference\",\r\n\r\n        difficulty:\r\n            4,\r\n\r\n        estimatedTime:\r\n            5,\r\n\r\n        isTrick:\r\n            true\r\n    }\r\n)\r\n\r\n];\r\n\r\n\r\n\/* =========================================================\r\n   GENERATED SUPPORT BANKS\r\n   Each template receives one variationGroup.\r\n   ========================================================= *\/\r\n\r\nfunction buildMemoryBank() {\r\n\r\n    const symbols = [\r\n        \"\u25c6\",\r\n        \"\u25cf\",\r\n        \"\u25b2\",\r\n        \"\u25a0\",\r\n        \"\u2605\",\r\n        \"\u25cb\",\r\n        \"\u25c7\",\r\n        \"\u25b3\",\r\n        \"\u2726\",\r\n        \"\u2b1f\",\r\n        \"\u2b22\",\r\n        \"\u271a\"\r\n    ];\r\n\r\n    const output =\r\n        [];\r\n\r\n    for (\r\n        let i = 0;\r\n        i < 24;\r\n        i++\r\n    ) {\r\n\r\n        const random =\r\n            seededRandom(\r\n                \"memory-\" +\r\n                i\r\n            );\r\n\r\n        const sequence =\r\n            [];\r\n\r\n        while (\r\n            sequence.length <\r\n            6\r\n        ) {\r\n\r\n            sequence.push(\r\n                symbols[\r\n                    Math.floor(\r\n                        random() *\r\n                        symbols.length\r\n                    )\r\n                ]\r\n            );\r\n        }\r\n\r\n        const index =\r\n            1 +\r\n            (\r\n                i %\r\n                5\r\n            );\r\n\r\n        const correct =\r\n            sequence[\r\n                index\r\n            ];\r\n\r\n        const wrongs =\r\n            shuffle(\r\n                symbols.filter(\r\n                    symbol =>\r\n                        symbol !==\r\n                        correct\r\n                ),\r\n                \"memory-wrong-\" +\r\n                i\r\n            )\r\n            .slice(\r\n                0,\r\n                3\r\n            );\r\n\r\n        output.push(\r\n            P(\r\n                \"memory-\" +\r\n                i,\r\n                {\r\n                    prompt:\r\n                        \"\u05d6\u05db\u05e8\u05d5 \u05d0\u05ea \u05d4\u05e8\u05e6\u05e3.\",\r\n\r\n                    subPrompt:\r\n                        \"\u05d4\u05d5\u05d0 \u05d9\u05d9\u05e2\u05dc\u05dd \u05d1\u05e2\u05d5\u05d3 3.3 \u05e9\u05e0\u05d9\u05d5\u05ea.\",\r\n\r\n                    interaction:\r\n                        \"memory\",\r\n\r\n                    memorySequence:\r\n                        sequence,\r\n\r\n                    memoryQuestion:\r\n                        `\u05de\u05d4 \u05d4\u05d9\u05d4 \u05d4\u05e1\u05de\u05dc \u05d1\u05de\u05e7\u05d5\u05dd ${index + 1}?`,\r\n\r\n                    choices:\r\n                        shuffle(\r\n                            [\r\n                                correct,\r\n                                ...wrongs\r\n                            ],\r\n                            \"memory-choice-\" +\r\n                            i\r\n                        ),\r\n\r\n                    answer:\r\n                        Answer(\r\n                            correct,\r\n                            [],\r\n                            {\r\n                                fuzzy:\r\n                                    false\r\n                            }\r\n                        ),\r\n\r\n                    category:\r\n                        \"memory\",\r\n\r\n                    cognitive:\r\n                        \"working-memory\",\r\n\r\n                    archetype:\r\n                        \"symbol-position-memory\",\r\n\r\n                    variationGroup:\r\n                        \"memory-position-template\",\r\n\r\n                    difficulty:\r\n                        4 +\r\n                        (\r\n                            i %\r\n                            4\r\n                        ),\r\n\r\n                    estimatedTime:\r\n                        10,\r\n\r\n                    isVisual:\r\n                        true,\r\n\r\n                    qualityTier:\r\n                        \"variant\"\r\n                }\r\n            )\r\n        );\r\n    }\r\n\r\n    return output;\r\n}\r\n\r\n\r\nfunction buildVisualBank() {\r\n\r\n    const pairs = [\r\n        [\"\u2197\",\"\u2196\",\"direction\"],\r\n        [\"\u25e2\",\"\u25e3\",\"corner\"],\r\n        [\"\u25d0\",\"\u25d1\",\"fill-side\"],\r\n        [\"\u25b3\",\"\u25bd\",\"orientation\"],\r\n        [\"\u25b7\",\"\u25c1\",\"triangle-direction\"],\r\n        [\"\u25c6\",\"\u25c7\",\"fill\"],\r\n        [\"\u25cf\",\"\u25cb\",\"fill-circle\"],\r\n        [\"\u25a0\",\"\u25a1\",\"fill-square\"],\r\n        [\"\u2b06\",\"\u2b07\",\"vertical-direction\"],\r\n        [\"\u271a\",\"\u2716\",\"cross-shape\"]\r\n    ];\r\n\r\n    const output =\r\n        [];\r\n\r\n    for (\r\n        let i = 0;\r\n        i < 30;\r\n        i++\r\n    ) {\r\n\r\n        const pair =\r\n            pairs[\r\n                i %\r\n                pairs.length\r\n            ];\r\n\r\n        const oddIndex =\r\n            (\r\n                i *\r\n                5 +\r\n                2\r\n            ) %\r\n            9;\r\n\r\n        const items =\r\n            Array.from(\r\n                {\r\n                    length:\r\n                        9\r\n                },\r\n                (\r\n                    _,\r\n                    index\r\n                ) => ({\r\n                    label:\r\n                        index ===\r\n                        oddIndex\r\n                            ? pair[1]\r\n                            : pair[0],\r\n\r\n                    value:\r\n                        index ===\r\n                        oddIndex\r\n                            ? \"odd\"\r\n                            : \"normal\"\r\n                })\r\n            );\r\n\r\n        output.push(\r\n            P(\r\n                \"visual-odd-\" +\r\n                i,\r\n                {\r\n                    prompt:\r\n                        \"\u05dc\u05d7\u05e6\u05d5 \u05e2\u05dc \u05d4\u05d7\u05e8\u05d9\u05d2.\",\r\n\r\n                    interaction:\r\n                        \"tap\",\r\n\r\n                    tapItems:\r\n                        items,\r\n\r\n                    answer:\r\n                        Answer(\r\n                            \"odd\",\r\n                            [],\r\n                            {\r\n                                fuzzy:\r\n                                    false\r\n                            }\r\n                        ),\r\n\r\n                    category:\r\n                        \"visual\",\r\n\r\n                    cognitive:\r\n                        \"visual-discrimination\",\r\n\r\n                    archetype:\r\n                        \"odd-one-out\",\r\n\r\n                    variationGroup:\r\n                        \"visual-odd-template\",\r\n\r\n                    difficulty:\r\n                        3 +\r\n                        (\r\n                            i %\r\n                            4\r\n                        ),\r\n\r\n                    estimatedTime:\r\n                        4,\r\n\r\n                    isVisual:\r\n                        true,\r\n\r\n                    qualityTier:\r\n                        \"variant\"\r\n                }\r\n            )\r\n        );\r\n    }\r\n\r\n    return output;\r\n}\r\n\r\n\r\nfunction buildOrderingBank() {\r\n\r\n    const names = [\r\n        \"\u05e0\u05d5\u05e2\u05d4\",\r\n        \"\u05d9\u05d5\u05d0\u05d1\",\r\n        \"\u05ea\u05de\u05e8\",\r\n        \"\u05e2\u05d9\u05d3\u05d5\",\r\n        \"\u05de\u05d0\u05d9\u05d4\",\r\n        \"\u05e8\u05d5\u05df\",\r\n        \"\u05d0\u05dc\u05d4\",\r\n        \"\u05e0\u05d5\u05e2\u05dd\"\r\n    ];\r\n\r\n    const output =\r\n        [];\r\n\r\n    for (\r\n        let i = 0;\r\n        i < 20;\r\n        i++\r\n    ) {\r\n\r\n        const people =\r\n            shuffle(\r\n                names,\r\n                \"ordering-\" +\r\n                i\r\n            )\r\n            .slice(\r\n                0,\r\n                4\r\n            );\r\n\r\n        const [\r\n            a,\r\n            b,\r\n            c,\r\n            d\r\n        ] =\r\n            people;\r\n\r\n        output.push(\r\n            P(\r\n                \"ordering-\" +\r\n                i,\r\n                {\r\n                    prompt:\r\n                        `${a} \u05d2\u05d1\u05d5\u05d4 \u05de\u05be${b}. ${b} \u05d2\u05d1\u05d5\u05d4 \u05de\u05be${c}. ${d} \u05e0\u05de\u05d5\u05da \u05de\u05be${c}. \u05de\u05d9 \u05d4\u05d2\u05d1\u05d5\u05d4 \u05d1\u05d9\u05d5\u05ea\u05e8?`,\r\n\r\n                    interaction:\r\n                        \"choice\",\r\n\r\n                    choices:\r\n                        shuffle(\r\n                            [\r\n                                a,\r\n                                b,\r\n                                c,\r\n                                d\r\n                            ],\r\n                            \"ordering-options-\" +\r\n                            i\r\n                        ),\r\n\r\n                    answer:\r\n                        Answer(\r\n                            a\r\n                        ),\r\n\r\n                    category:\r\n                        \"logic\",\r\n\r\n                    cognitive:\r\n                        \"ordering\",\r\n\r\n                    archetype:\r\n                        \"linear-order\",\r\n\r\n                    variationGroup:\r\n                        \"ordering-height-template\",\r\n\r\n                    difficulty:\r\n                        4 +\r\n                        (\r\n                            i %\r\n                            3\r\n                        ),\r\n\r\n                    estimatedTime:\r\n                        8,\r\n\r\n                    qualityTier:\r\n                        \"variant\"\r\n                }\r\n            )\r\n        );\r\n    }\r\n\r\n    return output;\r\n}\r\n\r\n\r\nfunction buildAttentionBank() {\r\n\r\n    const source = [\r\n\r\n        [\r\n            \"\u05de\u05e9\u05d4 \u05de\u05e9\u05da \u05de\u05e9\u05d5\u05d8 \u05de\u05e9\u05d5\u05de\u05e9 \u05de\u05d4\u05de\u05d7\u05e1\u05df\",\r\n            \"\u05de\"\r\n        ],\r\n\r\n        [\r\n            \"\u05e0\u05d5\u05e2\u05d4 \u05e0\u05e1\u05e2\u05d4 \u05e6\u05e4\u05d5\u05e0\u05d4 \u05d5\u05e0\u05db\u05e0\u05e1\u05d4 \u05dc\u05e0\u05de\u05dc\",\r\n            \"\u05e0\"\r\n        ],\r\n\r\n        [\r\n            \"\u05e9\u05dc\u05d5\u05e9\u05d4 \u05e9\u05d5\u05e2\u05dc\u05d9\u05dd \u05e9\u05e7\u05d8\u05d9\u05dd \u05e9\u05db\u05d1\u05d5 \u05d1\u05e9\u05de\u05e9\",\r\n            \"\u05e9\"\r\n        ],\r\n\r\n        [\r\n            \"\u05d3\u05e0\u05d9 \u05d3\u05d2\u05d3\u05d2 \u05d3\u05d5\u05d1 \u05d3\u05de\u05d9\u05d5\u05e0\u05d9 \u05d1\u05d3\u05e8\u05da\",\r\n            \"\u05d3\"\r\n        ],\r\n\r\n        [\r\n            \"\u05e8\u05d5\u05e0\u05d9 \u05e8\u05d0\u05d4 \u05e8\u05db\u05d1\u05ea \u05d5\u05e8\u05d5\u05d3\u05d4 \u05d1\u05e8\u05d7\u05d5\u05d1\",\r\n            \"\u05e8\"\r\n        ],\r\n\r\n        [\r\n            \"\u05e1\u05d9\u05d5\u05df \u05e1\u05d9\u05de\u05e0\u05d4 \u05e1\u05d9\u05e8\u05d4 \u05e7\u05d8\u05e0\u05d4 \u05d1\u05e1\u05e4\u05e8\",\r\n            \"\u05e1\"\r\n        ],\r\n\r\n        [\r\n            \"\u05ea\u05de\u05e8 \u05ea\u05dc\u05ea\u05d4 \u05ea\u05de\u05d5\u05e0\u05d4 \u05ea\u05d7\u05ea \u05d4\u05ea\u05e7\u05e8\u05d4\",\r\n            \"\u05ea\"\r\n        ],\r\n\r\n        [\r\n            \"\u05d2\u05d3\u05d9 \u05d2\u05dc\u05d2\u05dc \u05d2\u05dc\u05d2\u05dc \u05d2\u05d3\u05d5\u05dc \u05d1\u05d2\u05d9\u05e0\u05d4\",\r\n            \"\u05d2\"\r\n        ]\r\n    ];\r\n\r\n    return source.map(\r\n        (\r\n            [\r\n                sentence,\r\n                letter\r\n            ],\r\n            index\r\n        ) => {\r\n\r\n            const count =\r\n                [\r\n                    ...sentence\r\n                ]\r\n                .filter(\r\n                    character =>\r\n                        character ===\r\n                        letter\r\n                )\r\n                .length;\r\n\r\n            return P(\r\n                \"attention-\" +\r\n                index,\r\n                {\r\n                    prompt:\r\n                        `\u05db\u05de\u05d4 \u05e4\u05e2\u05de\u05d9\u05dd \u05de\u05d5\u05e4\u05d9\u05e2\u05d4 \u05d4\u05d0\u05d5\u05ea \"${letter}\"?`,\r\n\r\n                    subPrompt:\r\n                        sentence,\r\n\r\n                    interaction:\r\n                        \"text\",\r\n\r\n                    answer:\r\n                        numericAnswer(\r\n                            count\r\n                        ),\r\n\r\n                    category:\r\n                        \"word\",\r\n\r\n                    cognitive:\r\n                        \"attention\",\r\n\r\n                    archetype:\r\n                        \"letter-count\",\r\n\r\n                    variationGroup:\r\n                        \"letter-count-template\",\r\n\r\n                    difficulty:\r\n                        4 +\r\n                        (\r\n                            index %\r\n                            3\r\n                        ),\r\n\r\n                    estimatedTime:\r\n                        8,\r\n\r\n                    qualityTier:\r\n                        \"variant\"\r\n                }\r\n            );\r\n        }\r\n    );\r\n}\r\n\r\n\r\nfunction buildMathSupportBank() {\r\n\r\n    const output =\r\n        [];\r\n\r\n    for (\r\n        let i = 1;\r\n        i <= 14;\r\n        i++\r\n    ) {\r\n\r\n        const a =\r\n            3 +\r\n            (\r\n                i %\r\n                7\r\n            );\r\n\r\n        const b =\r\n            2 +\r\n            (\r\n                i %\r\n                6\r\n            );\r\n\r\n        const missing =\r\n            2 +\r\n            (\r\n                i %\r\n                9\r\n            );\r\n\r\n        const result =\r\n            a *\r\n            b +\r\n            missing;\r\n\r\n        output.push(\r\n            P(\r\n                \"reverse-equation-\" +\r\n                i,\r\n                {\r\n                    prompt:\r\n                        `${a} \u00d7 ${b} + ? = ${result}`,\r\n\r\n                    interaction:\r\n                        \"text\",\r\n\r\n                    answer:\r\n                        numericAnswer(\r\n                            missing\r\n                        ),\r\n\r\n                    category:\r\n                        \"math\",\r\n\r\n                    cognitive:\r\n                        \"reverse-calculation\",\r\n\r\n                    archetype:\r\n                        \"missing-number-equation\",\r\n\r\n                    variationGroup:\r\n                        \"reverse-equation-template\",\r\n\r\n                    difficulty:\r\n                        4 +\r\n                        (\r\n                            i %\r\n                            3\r\n                        ),\r\n\r\n                    estimatedTime:\r\n                        7,\r\n\r\n                    qualityTier:\r\n                        \"variant\"\r\n                }\r\n            )\r\n        );\r\n    }\r\n\r\n    const days = [\r\n        \"\u05e8\u05d0\u05e9\u05d5\u05df\",\r\n        \"\u05e9\u05e0\u05d9\",\r\n        \"\u05e9\u05dc\u05d9\u05e9\u05d9\",\r\n        \"\u05e8\u05d1\u05d9\u05e2\u05d9\",\r\n        \"\u05d7\u05de\u05d9\u05e9\u05d9\",\r\n        \"\u05e9\u05d9\u05e9\u05d9\",\r\n        \"\u05e9\u05d1\u05ea\"\r\n    ];\r\n\r\n    for (\r\n        let i = 0;\r\n        i < 14;\r\n        i++\r\n    ) {\r\n\r\n        const start =\r\n            i %\r\n            7;\r\n\r\n        const offset =\r\n            8 +\r\n            (\r\n                i %\r\n                18\r\n            );\r\n\r\n        const result =\r\n            (\r\n                start +\r\n                offset\r\n            ) %\r\n            7;\r\n\r\n        output.push(\r\n            P(\r\n                \"day-offset-\" +\r\n                i,\r\n                {\r\n                    prompt:\r\n                        `\u05d0\u05dd \u05d4\u05d9\u05d5\u05dd ${days[start]}, \u05d0\u05d9\u05d6\u05d4 \u05d9\u05d5\u05dd \u05d9\u05d4\u05d9\u05d4 \u05d1\u05e2\u05d5\u05d3 ${offset} \u05d9\u05de\u05d9\u05dd?`,\r\n\r\n                    interaction:\r\n                        \"choice\",\r\n\r\n                    choices:\r\n                        shuffle(\r\n                            [\r\n                                days[result],\r\n\r\n                                days[\r\n                                    (\r\n                                        result +\r\n                                        1\r\n                                    ) %\r\n                                    7\r\n                                ],\r\n\r\n                                days[\r\n                                    (\r\n                                        result +\r\n                                        2\r\n                                    ) %\r\n                                    7\r\n                                ],\r\n\r\n                                days[\r\n                                    (\r\n                                        result +\r\n                                        6\r\n                                    ) %\r\n                                    7\r\n                                ]\r\n                            ],\r\n                            \"day-\" +\r\n                            i\r\n                        ),\r\n\r\n                    answer:\r\n                        Answer(\r\n                            days[result]\r\n                        ),\r\n\r\n                    category:\r\n                        \"logic\",\r\n\r\n                    cognitive:\r\n                        \"temporal\",\r\n\r\n                    archetype:\r\n                        \"day-offset\",\r\n\r\n                    variationGroup:\r\n                        \"day-offset-template\",\r\n\r\n                    difficulty:\r\n                        4 +\r\n                        (\r\n                            i %\r\n                            2\r\n                        ),\r\n\r\n                    estimatedTime:\r\n                        7,\r\n\r\n                    qualityTier:\r\n                        \"variant\"\r\n                }\r\n            )\r\n        );\r\n    }\r\n\r\n    return output;\r\n}\r\n\r\n\r\nfunction buildKnowledgeBank() {\r\n\r\n    const source = [\r\n\r\n        {\r\n            q:\r\n                \"\u05d0\u05d9\u05d6\u05d4 \u05db\u05d5\u05db\u05d1 \u05dc\u05db\u05ea \u05d4\u05d5\u05d0 \u05d4\u05d2\u05d3\u05d5\u05dc \u05d1\u05de\u05e2\u05e8\u05db\u05ea \u05d4\u05e9\u05de\u05e9?\",\r\n            a:\r\n                \"\u05e6\u05d3\u05e7\",\r\n            c:\r\n                [\"\u05de\u05d0\u05d3\u05d9\u05dd\",\"\u05e6\u05d3\u05e7\",\"\u05e9\u05d1\u05ea\u05d0\u05d9\",\"\u05e0\u05e4\u05d8\u05d5\u05df\"]\r\n        },\r\n\r\n        {\r\n            q:\r\n                \"\u05de\u05d4 \u05d4\u05e1\u05de\u05dc \u05d4\u05db\u05d9\u05de\u05d9 \u05e9\u05dc \u05d6\u05d4\u05d1?\",\r\n            a:\r\n                \"Au\",\r\n            c:\r\n                [\"Ag\",\"Au\",\"Fe\",\"Go\"]\r\n        },\r\n\r\n        {\r\n            q:\r\n                \"\u05de\u05d4 \u05d4\u05de\u05e1\u05e4\u05e8 \u05d4\u05d0\u05d8\u05d5\u05de\u05d9 \u05e9\u05dc \u05de\u05d9\u05de\u05df?\",\r\n            a:\r\n                \"1\",\r\n            c:\r\n                [\"1\",\"2\",\"6\",\"8\"]\r\n        },\r\n\r\n        {\r\n            q:\r\n                \"\u05d0\u05d9\u05d6\u05d5 \u05d9\u05d1\u05e9\u05ea \u05d4\u05d9\u05d0 \u05d4\u05d2\u05d3\u05d5\u05dc\u05d4 \u05d1\u05d9\u05d5\u05ea\u05e8 \u05d1\u05e9\u05d8\u05d7?\",\r\n            a:\r\n                \"\u05d0\u05e1\u05d9\u05d4\",\r\n            c:\r\n                [\"\u05d0\u05e4\u05e8\u05d9\u05e7\u05d4\",\"\u05d0\u05e1\u05d9\u05d4\",\"\u05d0\u05d9\u05e8\u05d5\u05e4\u05d4\",\"\u05d0\u05de\u05e8\u05d9\u05e7\u05d4 \u05d4\u05d3\u05e8\u05d5\u05de\u05d9\u05ea\"]\r\n        },\r\n\r\n        {\r\n            q:\r\n                \"\u05db\u05de\u05d4 \u05de\u05d9\u05ea\u05e8\u05d9\u05dd \u05d9\u05e9 \u05d1\u05db\u05d9\u05e0\u05d5\u05e8 \u05e8\u05d2\u05d9\u05dc?\",\r\n            a:\r\n                \"4\",\r\n            c:\r\n                [\"4\",\"5\",\"6\",\"8\"]\r\n        },\r\n\r\n        {\r\n            q:\r\n                \"\u05d0\u05d9\u05d6\u05d4 \u05d2\u05d6 \u05de\u05d4\u05d5\u05d5\u05d4 \u05d0\u05ea \u05e8\u05d5\u05d1 \u05d4\u05d0\u05d8\u05de\u05d5\u05e1\u05e4\u05e8\u05d4 \u05e9\u05dc \u05db\u05d3\u05d5\u05e8 \u05d4\u05d0\u05e8\u05e5?\",\r\n            a:\r\n                \"\u05d7\u05e0\u05e7\u05df\",\r\n            c:\r\n                [\"\u05d7\u05de\u05e6\u05df\",\"\u05d7\u05e0\u05e7\u05df\",\"\u05e4\u05d7\u05de\u05df \u05d3\u05d5\u05be\u05d7\u05de\u05e6\u05e0\u05d9\",\"\u05de\u05d9\u05de\u05df\"]\r\n        }\r\n    ];\r\n\r\n    return source.map(\r\n        (\r\n            item,\r\n            index\r\n        ) =>\r\n            P(\r\n                \"knowledge-\" +\r\n                index,\r\n                {\r\n                    prompt:\r\n                        item.q,\r\n\r\n                    interaction:\r\n                        \"choice\",\r\n\r\n                    choices:\r\n                        item.c,\r\n\r\n                    answer:\r\n                        Answer(\r\n                            item.a\r\n                        ),\r\n\r\n                    category:\r\n                        \"knowledge\",\r\n\r\n                    cognitive:\r\n                        \"knowledge\",\r\n\r\n                    archetype:\r\n                        \"knowledge\",\r\n\r\n                    variationGroup:\r\n                        \"knowledge-\" +\r\n                        index,\r\n\r\n                    difficulty:\r\n                        4 +\r\n                        (\r\n                            index %\r\n                            3\r\n                        ),\r\n\r\n                    estimatedTime:\r\n                        6,\r\n\r\n                    isKnowledge:\r\n                        true,\r\n\r\n                    qualityTier:\r\n                        \"variant\"\r\n                }\r\n            )\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   BALANCE LIBRARY\r\n   ========================================================= *\/\r\n\r\nfunction balancedLibrary(\r\n    banks,\r\n    target\r\n) {\r\n\r\n    const result =\r\n        [];\r\n\r\n    const indexes =\r\n        banks.map(\r\n            () =>\r\n                0\r\n        );\r\n\r\n    let safety =\r\n        10000;\r\n\r\n    while (\r\n        result.length <\r\n            target &&\r\n        safety-- >\r\n            0\r\n    ) {\r\n\r\n        let added =\r\n            false;\r\n\r\n        for (\r\n            let b = 0;\r\n            b < banks.length;\r\n            b++\r\n        ) {\r\n\r\n            if (\r\n                result.length >=\r\n                target\r\n            ) {\r\n\r\n                break;\r\n            }\r\n\r\n            if (\r\n                indexes[b] >=\r\n                banks[b].length\r\n            ) {\r\n\r\n                continue;\r\n            }\r\n\r\n            result.push(\r\n                banks[b][\r\n                    indexes[b]\r\n                ]\r\n            );\r\n\r\n            indexes[b]++;\r\n\r\n            added =\r\n                true;\r\n        }\r\n\r\n        if (\r\n            !added\r\n        ) {\r\n            break;\r\n        }\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\n\r\nconst CURATED_BANK = [\r\n\r\n    ...CORE.map(\r\n        puzzle => ({\r\n            ...puzzle,\r\n            qualityTier:\r\n                \"curated\"\r\n        })\r\n    ),\r\n\r\n    ...ADVANCED_CURATED.map(\r\n        puzzle => ({\r\n            ...puzzle,\r\n            qualityTier:\r\n                \"curated\"\r\n        })\r\n    )\r\n\r\n];\r\n\r\n\r\nconst VARIANT_BANKS = [\r\n\r\n    buildMemoryBank(),\r\n\r\n    buildVisualBank(),\r\n\r\n    buildOrderingBank(),\r\n\r\n    buildAttentionBank(),\r\n\r\n    buildMathSupportBank(),\r\n\r\n    buildKnowledgeBank()\r\n\r\n];\r\n\r\n\r\nconst VARIANT_SPACE =\r\n    Math.max(\r\n        0,\r\n        200 -\r\n        CURATED_BANK.length\r\n    );\r\n\r\n\r\nconst VARIANT_FILL =\r\n    balancedLibrary(\r\n        VARIANT_BANKS,\r\n        VARIANT_SPACE\r\n    );\r\n\r\n\r\nconst PUZZLES = [\r\n    ...CURATED_BANK,\r\n    ...VARIANT_FILL\r\n];\r\n\r\n\r\nconst PUZZLE_MAP =\r\n    new Map(\r\n        PUZZLES.map(\r\n            puzzle => [\r\n                puzzle.id,\r\n                puzzle\r\n            ]\r\n        )\r\n    );\r\n\r\n\r\n\/* =========================================================\r\n   AUDIT\r\n   ========================================================= *\/\r\n\r\nfunction auditLibrary() {\r\n\r\n    const ids =\r\n        new Set();\r\n\r\n    const prompts =\r\n        new Map();\r\n\r\n    const duplicateIds =\r\n        [];\r\n\r\n    const duplicatePrompts =\r\n        [];\r\n\r\n    for (\r\n        const puzzle\r\n        of PUZZLES\r\n    ) {\r\n\r\n        if (\r\n            ids.has(\r\n                puzzle.id\r\n            )\r\n        ) {\r\n\r\n            duplicateIds.push(\r\n                puzzle.id\r\n            );\r\n        }\r\n\r\n        ids.add(\r\n            puzzle.id\r\n        );\r\n\r\n        const normalized =\r\n            normalizeAnswer(\r\n                puzzle.prompt\r\n            );\r\n\r\n        if (\r\n            prompts.has(\r\n                normalized\r\n            )\r\n        ) {\r\n\r\n            duplicatePrompts.push([\r\n                prompts.get(\r\n                    normalized\r\n                ),\r\n                puzzle.id\r\n            ]);\r\n\r\n        } else {\r\n\r\n            prompts.set(\r\n                normalized,\r\n                puzzle.id\r\n            );\r\n        }\r\n    }\r\n\r\n    return {\r\n\r\n        count:\r\n            PUZZLES.length,\r\n\r\n        curated:\r\n            PUZZLES.filter(\r\n                puzzle =>\r\n                    puzzle.qualityTier ===\r\n                    \"curated\"\r\n            ).length,\r\n\r\n        variants:\r\n            PUZZLES.filter(\r\n                puzzle =>\r\n                    puzzle.qualityTier ===\r\n                    \"variant\"\r\n            ).length,\r\n\r\n        duplicateIds,\r\n\r\n        duplicatePrompts\r\n    };\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   STATE\r\n   ========================================================= *\/\r\n\r\nfunction defaultState() {\r\n\r\n    const reducedMotion =\r\n        window.matchMedia &&\r\n        window.matchMedia(\r\n            \"(prefers-reduced-motion: reduce)\"\r\n        ).matches;\r\n\r\n    return {\r\n\r\n        score:\r\n            0,\r\n\r\n        streak:\r\n            0,\r\n\r\n        bestStreak:\r\n            0,\r\n\r\n        theme:\r\n            \"dark\",\r\n\r\n        sound:\r\n            true,\r\n\r\n        haptics:\r\n            true,\r\n\r\n        motion:\r\n            !reducedMotion,\r\n\r\n        onboardingSeen:\r\n            false,\r\n\r\n        scrollCueSeen:\r\n            false,\r\n\r\n        sessionCount:\r\n            0,\r\n\r\n        sequence:\r\n            0,\r\n\r\n        likes:\r\n            {},\r\n\r\n        riddles:\r\n            {},\r\n\r\n        rounds:\r\n            {}\r\n    };\r\n}\r\n\r\n\r\nfunction loadState() {\r\n\r\n    try {\r\n\r\n        const raw =\r\n            localStorage.getItem(\r\n                STORAGE_KEY\r\n            );\r\n\r\n        if (\r\n            !raw\r\n        ) {\r\n\r\n            return defaultState();\r\n        }\r\n\r\n        const parsed =\r\n            JSON.parse(\r\n                raw\r\n            );\r\n\r\n        return {\r\n\r\n            ...defaultState(),\r\n\r\n            ...parsed,\r\n\r\n            likes:\r\n                parsed.likes ||\r\n                {},\r\n\r\n            riddles:\r\n                parsed.riddles ||\r\n                {},\r\n\r\n            rounds:\r\n                parsed.rounds ||\r\n                {}\r\n        };\r\n\r\n    } catch {\r\n\r\n        return defaultState();\r\n    }\r\n}\r\n\r\n\r\nlet STATE =\r\n    loadState();\r\n\r\nSTATE.sessionCount++;\r\n\r\n\r\nfunction saveState() {\r\n\r\n    try {\r\n\r\n        localStorage.setItem(\r\n            STORAGE_KEY,\r\n            JSON.stringify(\r\n                STATE\r\n            )\r\n        );\r\n\r\n    } catch {}\r\n}\r\n\r\n\r\nfunction riddleState(\r\n    id\r\n) {\r\n\r\n    if (\r\n        !STATE.riddles[\r\n            id\r\n        ]\r\n    ) {\r\n\r\n        STATE.riddles[\r\n            id\r\n        ] = {\r\n\r\n            seen:\r\n                0,\r\n\r\n            solved:\r\n                0,\r\n\r\n            skipped:\r\n                0,\r\n\r\n            revealed:\r\n                0,\r\n\r\n            wrong:\r\n                0,\r\n\r\n            hints:\r\n                0,\r\n\r\n            totalActiveMs:\r\n                0,\r\n\r\n            lastSeenAt:\r\n                0,\r\n\r\n            lastSequence:\r\n                -999,\r\n\r\n            lastSession:\r\n                null,\r\n\r\n            bestSolveMs:\r\n                null,\r\n\r\n            secondChanceSolves:\r\n                0\r\n        };\r\n    }\r\n\r\n    return (\r\n        STATE.riddles[\r\n            id\r\n        ]\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ANALYTICS\r\n   ========================================================= *\/\r\n\r\nfunction readEvents() {\r\n\r\n    try {\r\n\r\n        return JSON.parse(\r\n            localStorage.getItem(\r\n                EVENTS_KEY\r\n            ) ||\r\n            \"[]\"\r\n        );\r\n\r\n    } catch {\r\n\r\n        return [];\r\n    }\r\n}\r\n\r\n\r\nconst SESSION_ID =\r\n    uid(\r\n        \"session\"\r\n    );\r\n\r\n\r\nfunction track(\r\n    eventName,\r\n    payload = {}\r\n) {\r\n\r\n    const event = {\r\n\r\n        event:\r\n            eventName,\r\n\r\n        timestamp:\r\n            Date.now(),\r\n\r\n        session_id:\r\n            SESSION_ID,\r\n\r\n        ...payload\r\n    };\r\n\r\n    try {\r\n\r\n        const events =\r\n            readEvents();\r\n\r\n        events.push(\r\n            event\r\n        );\r\n\r\n        if (\r\n            events.length >\r\n            MAX_EVENTS\r\n        ) {\r\n\r\n            events.splice(\r\n                0,\r\n                events.length -\r\n                MAX_EVENTS\r\n            );\r\n        }\r\n\r\n        localStorage.setItem(\r\n            EVENTS_KEY,\r\n            JSON.stringify(\r\n                events\r\n            )\r\n        );\r\n\r\n    } catch {}\r\n\r\n    if (\r\n        Array.isArray(\r\n            window.dataLayer\r\n        )\r\n    ) {\r\n\r\n        window.dataLayer.push({\r\n\r\n            event:\r\n                \"hussla_\" +\r\n                eventName,\r\n\r\n            ...payload\r\n        });\r\n    }\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   AUDIO\r\n   ========================================================= *\/\r\n\r\nlet AUDIO_CONTEXT =\r\n    null;\r\n\r\n\r\nfunction audioContext() {\r\n\r\n    const Context =\r\n        window.AudioContext ||\r\n        window.webkitAudioContext;\r\n\r\n    if (\r\n        !Context\r\n    ) {\r\n        return null;\r\n    }\r\n\r\n    if (\r\n        !AUDIO_CONTEXT\r\n    ) {\r\n\r\n        AUDIO_CONTEXT =\r\n            new Context();\r\n    }\r\n\r\n    if (\r\n        AUDIO_CONTEXT.state ===\r\n        \"suspended\"\r\n    ) {\r\n\r\n        AUDIO_CONTEXT.resume();\r\n    }\r\n\r\n    return (\r\n        AUDIO_CONTEXT\r\n    );\r\n}\r\n\r\n\r\nfunction tone(\r\n    frequency,\r\n    duration,\r\n    volume = .04\r\n) {\r\n\r\n    const ctx =\r\n        audioContext();\r\n\r\n    if (\r\n        !ctx\r\n    ) {\r\n\r\n        return Promise.resolve();\r\n    }\r\n\r\n    return new Promise(\r\n        resolve => {\r\n\r\n            const oscillator =\r\n                ctx.createOscillator();\r\n\r\n            const gain =\r\n                ctx.createGain();\r\n\r\n            oscillator.connect(\r\n                gain\r\n            );\r\n\r\n            gain.connect(\r\n                ctx.destination\r\n            );\r\n\r\n            const start =\r\n                ctx.currentTime;\r\n\r\n            oscillator.frequency\r\n                .setValueAtTime(\r\n                    frequency,\r\n                    start\r\n                );\r\n\r\n            gain.gain\r\n                .setValueAtTime(\r\n                    .0001,\r\n                    start\r\n                );\r\n\r\n            gain.gain\r\n                .exponentialRampToValueAtTime(\r\n                    volume,\r\n                    start +\r\n                    .01\r\n                );\r\n\r\n            gain.gain\r\n                .exponentialRampToValueAtTime(\r\n                    .0001,\r\n                    start +\r\n                    duration \/\r\n                    1000\r\n                );\r\n\r\n            oscillator.start(\r\n                start\r\n            );\r\n\r\n            oscillator.stop(\r\n                start +\r\n                duration \/\r\n                1000 +\r\n                .02\r\n            );\r\n\r\n            setTimeout(\r\n                resolve,\r\n                duration +\r\n                50\r\n            );\r\n        }\r\n    );\r\n}\r\n\r\n\r\nasync function playPattern(\r\n    pattern\r\n) {\r\n\r\n    for (\r\n        const note\r\n        of pattern\r\n    ) {\r\n\r\n        await tone(\r\n            note.frequency,\r\n            note.duration,\r\n            .04\r\n        );\r\n\r\n        await new Promise(\r\n            resolve =>\r\n                setTimeout(\r\n                    resolve,\r\n                    90\r\n                )\r\n        );\r\n    }\r\n}\r\n\r\n\r\nfunction feedbackSound(\r\n    type\r\n) {\r\n\r\n    if (\r\n        !STATE.sound\r\n    ) {\r\n        return;\r\n    }\r\n\r\n    if (\r\n        type ===\r\n        \"correct\"\r\n    ) {\r\n\r\n        tone(\r\n            520,\r\n            70,\r\n            .025\r\n        )\r\n        .then(\r\n            () =>\r\n                tone(\r\n                    720,\r\n                    90,\r\n                    .027\r\n                )\r\n        );\r\n\r\n    } else {\r\n\r\n        tone(\r\n            220,\r\n            90,\r\n            .018\r\n        );\r\n    }\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HAPTICS\r\n   ========================================================= *\/\r\n\r\nfunction vibrate(\r\n    pattern\r\n) {\r\n\r\n    if (\r\n        !STATE.haptics ||\r\n        !navigator.vibrate\r\n    ) {\r\n        return;\r\n    }\r\n\r\n    navigator.vibrate(\r\n        pattern\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HUD\r\n   ========================================================= *\/\r\n\r\nfunction updateHUD() {\r\n\r\n    SCORE_NODE.textContent =\r\n        STATE.score\r\n            .toLocaleString(\r\n                \"he-IL\"\r\n            );\r\n\r\n    STREAK_NODE.textContent =\r\n        String(\r\n            STATE.streak\r\n        );\r\n\r\n    APP.dataset.theme =\r\n        STATE.theme;\r\n\r\n    APP.dataset.motion =\r\n        STATE.motion\r\n            ? \"on\"\r\n            : \"off\";\r\n\r\n    THEME_BUTTON.innerHTML =\r\n        STATE.theme ===\r\n        \"dark\"\r\n            ? icon(\r\n                \"sun\"\r\n            )\r\n            : icon(\r\n                \"moon\"\r\n            );\r\n\r\n    SOUND_BUTTON.innerHTML =\r\n        STATE.sound\r\n            ? icon(\r\n                \"sound\"\r\n            )\r\n            : icon(\r\n                \"mute\"\r\n            );\r\n\r\n    SETTINGS_BUTTON.innerHTML =\r\n        icon(\r\n            \"settings\"\r\n        );\r\n\r\n    HAPTICS_TOGGLE.checked =\r\n        STATE.haptics;\r\n\r\n    MOTION_TOGGLE.checked =\r\n        STATE.motion;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TOAST\r\n   ========================================================= *\/\r\n\r\nlet toastTimer =\r\n    null;\r\n\r\n\r\nfunction showToast(\r\n    text,\r\n    duration = 1450\r\n) {\r\n\r\n    clearTimeout(\r\n        toastTimer\r\n    );\r\n\r\n    TOAST.textContent =\r\n        text;\r\n\r\n    TOAST.classList.add(\r\n        \"show\"\r\n    );\r\n\r\n    toastTimer =\r\n        setTimeout(\r\n            () =>\r\n                TOAST.classList\r\n                    .remove(\r\n                        \"show\"\r\n                    ),\r\n            duration\r\n        );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   DAILY\r\n   ========================================================= *\/\r\n\r\nfunction dailyRiddle() {\r\n\r\n    const eligible =\r\n        PUZZLES.filter(\r\n            puzzle =>\r\n                puzzle.id !==\r\n                    \"onboarding\" &&\r\n                !puzzle.isKnowledge &&\r\n                !puzzle.isLong &&\r\n                puzzle.difficulty >=\r\n                    5 &&\r\n                puzzle.difficulty <=\r\n                    7 &&\r\n                puzzle.qualityTier ===\r\n                    \"curated\"\r\n        );\r\n\r\n    return (\r\n        eligible[\r\n            hash(\r\n                \"daily-\" +\r\n                israelDateKey()\r\n            ) %\r\n            eligible.length\r\n        ]\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   DEEP LINK\r\n   ========================================================= *\/\r\n\r\nfunction deepLinkId() {\r\n\r\n    try {\r\n\r\n        const params =\r\n            new URLSearchParams(\r\n                location.hash\r\n                    .replace(\r\n                        \/^#\/,\r\n                        \"\"\r\n                    )\r\n            );\r\n\r\n        const id =\r\n            params.get(\r\n                \"riddle\"\r\n            );\r\n\r\n        return (\r\n            id &&\r\n            PUZZLE_MAP.has(\r\n                id\r\n            )\r\n                ? id\r\n                : null\r\n        );\r\n\r\n    } catch {\r\n\r\n        return null;\r\n    }\r\n}\r\n\r\n\r\nconst DEEP_LINK_ID =\r\n    deepLinkId();\r\n\r\nlet deepLinkConsumed =\r\n    false;\r\n\r\n\r\n\/* =========================================================\r\n   FEED ENGINE\r\n   ========================================================= *\/\r\n\r\nconst FEED_ENTRIES =\r\n    [];\r\n\r\nconst USED_IDS =\r\n    new Set();\r\n\r\nconst INTERACTIONS_SEEN =\r\n    new Set();\r\n\r\nlet ACTIVE_ENTRY =\r\n    null;\r\n\r\nlet appendLock =\r\n    false;\r\n\r\n\r\nfunction previousEntries(\r\n    count\r\n) {\r\n\r\n    return FEED_ENTRIES.slice(\r\n        Math.max(\r\n            0,\r\n            FEED_ENTRIES.length -\r\n            count\r\n        )\r\n    );\r\n}\r\n\r\n\r\nfunction lastEntry() {\r\n\r\n    return (\r\n        FEED_ENTRIES[\r\n            FEED_ENTRIES.length -\r\n            1\r\n        ] ||\r\n        null\r\n    );\r\n}\r\n\r\n\r\nfunction distanceSince(\r\n    field,\r\n    value\r\n) {\r\n\r\n    for (\r\n        let i =\r\n            FEED_ENTRIES.length -\r\n            1;\r\n        i >= 0;\r\n        i--\r\n    ) {\r\n\r\n        if (\r\n            FEED_ENTRIES[i]\r\n                .riddle[\r\n                    field\r\n                ] ===\r\n            value\r\n        ) {\r\n\r\n            return (\r\n                FEED_ENTRIES.length -\r\n                i\r\n            );\r\n        }\r\n    }\r\n\r\n    return Infinity;\r\n}\r\n\r\n\r\nfunction desiredDifficulty(\r\n    position\r\n) {\r\n\r\n    if (\r\n        position <\r\n        DIFFICULTY_WAVE.length\r\n    ) {\r\n\r\n        return (\r\n            DIFFICULTY_WAVE[\r\n                position\r\n            ]\r\n        );\r\n    }\r\n\r\n    const previous =\r\n        lastEntry();\r\n\r\n    if (\r\n        previous &&\r\n        previous.riddle\r\n            .difficulty >=\r\n            8\r\n    ) {\r\n\r\n        return (\r\n            4 +\r\n            (\r\n                position %\r\n                3\r\n            )\r\n        );\r\n    }\r\n\r\n    const wave = [\r\n        6,\r\n        5,\r\n        7,\r\n        6,\r\n        5,\r\n        8,\r\n        5,\r\n        6,\r\n        7,\r\n        5,\r\n        7,\r\n        6\r\n    ];\r\n\r\n    return (\r\n        wave[\r\n            position %\r\n            wave.length\r\n        ]\r\n    );\r\n}\r\n\r\n\r\nfunction violatesRules(\r\n    puzzle,\r\n    relaxed = false\r\n) {\r\n\r\n    const lastTwo =\r\n        previousEntries(\r\n            2\r\n        );\r\n\r\n    const lastThree =\r\n        previousEntries(\r\n            3\r\n        );\r\n\r\n    if (\r\n        lastTwo.length ===\r\n            2 &&\r\n        lastTwo.every(\r\n            entry =>\r\n                entry.riddle\r\n                    .category ===\r\n                puzzle.category\r\n        )\r\n    ) {\r\n        return true;\r\n    }\r\n\r\n    if (\r\n        lastTwo.length ===\r\n            2 &&\r\n        lastTwo.every(\r\n            entry =>\r\n                entry.riddle\r\n                    .interaction ===\r\n                puzzle.interaction\r\n        )\r\n    ) {\r\n        return true;\r\n    }\r\n\r\n    if (\r\n        lastThree.some(\r\n            entry =>\r\n                entry.riddle\r\n                    .cognitive ===\r\n                puzzle.cognitive\r\n        )\r\n    ) {\r\n        return true;\r\n    }\r\n\r\n    const archetypeGap =\r\n        distanceSince(\r\n            \"archetype\",\r\n            puzzle.archetype\r\n        );\r\n\r\n    if (\r\n        archetypeGap <\r\n        (\r\n            relaxed\r\n                ? 14\r\n                : ARCHETYPE_COOLDOWN\r\n        )\r\n    ) {\r\n        return true;\r\n    }\r\n\r\n    const variationGap =\r\n        distanceSince(\r\n            \"variationGroup\",\r\n            puzzle.variationGroup\r\n        );\r\n\r\n    if (\r\n        variationGap <\r\n        (\r\n            relaxed\r\n                ? 32\r\n                : VARIATION_COOLDOWN\r\n        )\r\n    ) {\r\n        return true;\r\n    }\r\n\r\n    if (\r\n        puzzle.difficulty >=\r\n            7 &&\r\n        lastTwo.length ===\r\n            2 &&\r\n        lastTwo.every(\r\n            entry =>\r\n                entry.riddle\r\n                    .difficulty >=\r\n                7\r\n        )\r\n    ) {\r\n        return true;\r\n    }\r\n\r\n    const previous =\r\n        lastEntry();\r\n\r\n    if (\r\n        previous &&\r\n        previous.riddle\r\n            .difficulty >=\r\n            8 &&\r\n        (\r\n            puzzle.difficulty <\r\n                4 ||\r\n            puzzle.difficulty >\r\n                6\r\n        )\r\n    ) {\r\n        return true;\r\n    }\r\n\r\n    if (\r\n        puzzle.isTrick &&\r\n        previousEntries(\r\n            9\r\n        )\r\n        .some(\r\n            entry =>\r\n                entry.riddle\r\n                    .isTrick\r\n        )\r\n    ) {\r\n        return true;\r\n    }\r\n\r\n    if (\r\n        puzzle.isLong &&\r\n        previousEntries(\r\n            5\r\n        )\r\n        .some(\r\n            entry =>\r\n                entry.riddle\r\n                    .isLong\r\n        )\r\n    ) {\r\n        return true;\r\n    }\r\n\r\n    if (\r\n        puzzle.difficulty >=\r\n            7 &&\r\n        !INTERACTIONS_SEEN.has(\r\n            puzzle.interaction\r\n        )\r\n    ) {\r\n        return true;\r\n    }\r\n\r\n    return false;\r\n}\r\n\r\n\r\nfunction candidateScore(\r\n    puzzle,\r\n    position\r\n) {\r\n\r\n    const target =\r\n        desiredDifficulty(\r\n            position\r\n        );\r\n\r\n    const rs =\r\n        riddleState(\r\n            puzzle.id\r\n        );\r\n\r\n    let score =\r\n        100;\r\n\r\n    if (\r\n        puzzle.qualityTier ===\r\n        \"curated\"\r\n    ) {\r\n\r\n        score +=\r\n            38;\r\n\r\n    } else {\r\n\r\n        score -=\r\n            14;\r\n    }\r\n\r\n    score -=\r\n        Math.abs(\r\n            puzzle.difficulty -\r\n            target\r\n        ) *\r\n        15;\r\n\r\n    if (\r\n        rs.seen ===\r\n        0\r\n    ) {\r\n\r\n        score +=\r\n            40;\r\n\r\n    } else {\r\n\r\n        score -=\r\n            Math.min(\r\n                55,\r\n                rs.seen *\r\n                12\r\n            );\r\n    }\r\n\r\n    if (\r\n        puzzle.isKnowledge\r\n    ) {\r\n\r\n        if (\r\n            position %\r\n            20 ===\r\n            17\r\n        ) {\r\n\r\n            score +=\r\n                70;\r\n\r\n        } else {\r\n\r\n            score -=\r\n                140;\r\n        }\r\n    }\r\n\r\n    if (\r\n        puzzle.isVisual &&\r\n        previousEntries(\r\n            3\r\n        )\r\n        .length ===\r\n            3 &&\r\n        previousEntries(\r\n            3\r\n        )\r\n        .every(\r\n            entry =>\r\n                !entry.riddle\r\n                    .isVisual\r\n        )\r\n    ) {\r\n\r\n        score +=\r\n            26;\r\n    }\r\n\r\n    return score;\r\n}\r\n\r\n\r\nfunction secondChanceSlot(\r\n    position\r\n) {\r\n\r\n    return (\r\n        position >=\r\n            SECOND_CHANCE_MIN_GAP &&\r\n        position %\r\n            SECOND_CHANCE_EVERY ===\r\n        8\r\n    );\r\n}\r\n\r\n\r\nfunction secondChanceCandidate() {\r\n\r\n    const recentIds =\r\n        new Set(\r\n            previousEntries(\r\n                RECENT_ID_WINDOW\r\n            )\r\n            .map(\r\n                entry =>\r\n                    entry.riddle.id\r\n            )\r\n        );\r\n\r\n    const candidates =\r\n        PUZZLES\r\n            .filter(\r\n                puzzle => {\r\n\r\n                    if (\r\n                        puzzle.id ===\r\n                        \"onboarding\"\r\n                    ) {\r\n                        return false;\r\n                    }\r\n\r\n                    if (\r\n                        !puzzle.secondChance\r\n                    ) {\r\n                        return false;\r\n                    }\r\n\r\n                    if (\r\n                        recentIds.has(\r\n                            puzzle.id\r\n                        )\r\n                    ) {\r\n                        return false;\r\n                    }\r\n\r\n                    const rs =\r\n                        riddleState(\r\n                            puzzle.id\r\n                        );\r\n\r\n                    if (\r\n                        rs.solved >\r\n                        0\r\n                    ) {\r\n                        return false;\r\n                    }\r\n\r\n                    if (\r\n                        rs.skipped ===\r\n                            0 &&\r\n                        rs.revealed ===\r\n                            0\r\n                    ) {\r\n                        return false;\r\n                    }\r\n\r\n                    const gap =\r\n                        STATE.sequence -\r\n                        rs.lastSequence;\r\n\r\n                    if (\r\n                        rs.lastSession ===\r\n                        SESSION_ID\r\n                    ) {\r\n\r\n                        return (\r\n                            gap >=\r\n                            20\r\n                        );\r\n                    }\r\n\r\n                    return (\r\n                        gap >=\r\n                        SECOND_CHANCE_MIN_GAP\r\n                    );\r\n                }\r\n            )\r\n            .map(\r\n                puzzle => {\r\n\r\n                    const rs =\r\n                        riddleState(\r\n                            puzzle.id\r\n                        );\r\n\r\n                    return {\r\n\r\n                        puzzle,\r\n\r\n                        weight:\r\n                            Math.min(\r\n                                35,\r\n                                rs.totalActiveMs \/\r\n                                1000\r\n                            ) +\r\n                            rs.wrong *\r\n                                6 +\r\n                            rs.revealed *\r\n                                3\r\n                    };\r\n                }\r\n            )\r\n            .sort(\r\n                (\r\n                    a,\r\n                    b\r\n                ) =>\r\n                    b.weight -\r\n                    a.weight\r\n            );\r\n\r\n    return (\r\n        candidates[0]\r\n            ?.puzzle ||\r\n        null\r\n    );\r\n}\r\n\r\n\r\nfunction normalCandidate(\r\n    position\r\n) {\r\n\r\n    let candidates =\r\n        PUZZLES.filter(\r\n            puzzle =>\r\n                puzzle.id !==\r\n                    \"onboarding\" &&\r\n                !USED_IDS.has(\r\n                    puzzle.id\r\n                )\r\n        );\r\n\r\n    if (\r\n        candidates.length ===\r\n        0\r\n    ) {\r\n\r\n        const recent =\r\n            new Set(\r\n                previousEntries(\r\n                    50\r\n                )\r\n                .map(\r\n                    entry =>\r\n                        entry.riddle.id\r\n                )\r\n            );\r\n\r\n        USED_IDS.clear();\r\n\r\n        candidates =\r\n            PUZZLES.filter(\r\n                puzzle =>\r\n                    puzzle.id !==\r\n                        \"onboarding\" &&\r\n                    !recent.has(\r\n                        puzzle.id\r\n                    )\r\n            );\r\n    }\r\n\r\n    let valid =\r\n        candidates.filter(\r\n            puzzle =>\r\n                !violatesRules(\r\n                    puzzle,\r\n                    false\r\n                )\r\n        );\r\n\r\n    if (\r\n        valid.length ===\r\n        0\r\n    ) {\r\n\r\n        valid =\r\n            candidates.filter(\r\n                puzzle =>\r\n                    !violatesRules(\r\n                        puzzle,\r\n                        true\r\n                    )\r\n            );\r\n    }\r\n\r\n    if (\r\n        valid.length ===\r\n        0\r\n    ) {\r\n\r\n        valid =\r\n            candidates;\r\n    }\r\n\r\n    const ranked =\r\n        valid\r\n            .map(\r\n                puzzle => ({\r\n                    puzzle,\r\n\r\n                    score:\r\n                        candidateScore(\r\n                            puzzle,\r\n                            position\r\n                        )\r\n                })\r\n            )\r\n            .sort(\r\n                (\r\n                    a,\r\n                    b\r\n                ) =>\r\n                    b.score -\r\n                    a.score\r\n            );\r\n\r\n    const top =\r\n        ranked.slice(\r\n            0,\r\n            Math.min(\r\n                8,\r\n                ranked.length\r\n            )\r\n        );\r\n\r\n    const random =\r\n        seededRandom(\r\n            SESSION_ID +\r\n            \"-select-\" +\r\n            position\r\n        );\r\n\r\n    return (\r\n        top[\r\n            Math.floor(\r\n                random() *\r\n                Math.min(\r\n                    4,\r\n                    top.length\r\n                )\r\n            )\r\n        ]\r\n        ?.puzzle ||\r\n        candidates[0]\r\n    );\r\n}\r\n\r\n\r\nfunction nextPuzzle(\r\n    position\r\n) {\r\n\r\n    if (\r\n        position ===\r\n            0 &&\r\n        DEEP_LINK_ID &&\r\n        !deepLinkConsumed\r\n    ) {\r\n\r\n        deepLinkConsumed =\r\n            true;\r\n\r\n        return {\r\n\r\n            riddle:\r\n                PUZZLE_MAP.get(\r\n                    DEEP_LINK_ID\r\n                ),\r\n\r\n            secondChance:\r\n                false,\r\n\r\n            daily:\r\n                false\r\n        };\r\n    }\r\n\r\n    if (\r\n        position ===\r\n            0 &&\r\n        !STATE.onboardingSeen\r\n    ) {\r\n\r\n        return {\r\n\r\n            riddle:\r\n                PUZZLE_MAP.get(\r\n                    \"onboarding\"\r\n                ),\r\n\r\n            secondChance:\r\n                false,\r\n\r\n            daily:\r\n                false\r\n        };\r\n    }\r\n\r\n    if (\r\n        position ===\r\n        5\r\n    ) {\r\n\r\n        const daily =\r\n            dailyRiddle();\r\n\r\n        if (\r\n            !USED_IDS.has(\r\n                daily.id\r\n            )\r\n        ) {\r\n\r\n            return {\r\n\r\n                riddle:\r\n                    daily,\r\n\r\n                secondChance:\r\n                    false,\r\n\r\n                daily:\r\n                    true\r\n            };\r\n        }\r\n    }\r\n\r\n    if (\r\n        secondChanceSlot(\r\n            position\r\n        )\r\n    ) {\r\n\r\n        const candidate =\r\n            secondChanceCandidate();\r\n\r\n        if (\r\n            candidate\r\n        ) {\r\n\r\n            return {\r\n\r\n                riddle:\r\n                    candidate,\r\n\r\n                secondChance:\r\n                    true,\r\n\r\n                daily:\r\n                    false\r\n            };\r\n        }\r\n    }\r\n\r\n    return {\r\n\r\n        riddle:\r\n            normalCandidate(\r\n                position\r\n            ),\r\n\r\n        secondChance:\r\n            false,\r\n\r\n        daily:\r\n            false\r\n    };\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SCORING\r\n   ========================================================= *\/\r\n\r\nfunction scoreSolve(\r\n    riddle,\r\n    entry,\r\n    elapsed,\r\n    newStreak\r\n) {\r\n\r\n    const base =\r\n        riddle.difficulty *\r\n        100;\r\n\r\n    let clean =\r\n        0;\r\n\r\n    if (\r\n        entry.wrongAttempts ===\r\n        0\r\n    ) {\r\n\r\n        clean =\r\n            Math.round(\r\n                base *\r\n                .20\r\n            );\r\n\r\n    } else if (\r\n        entry.wrongAttempts ===\r\n        1\r\n    ) {\r\n\r\n        clean =\r\n            Math.round(\r\n                base *\r\n                .10\r\n            );\r\n\r\n    } else if (\r\n        entry.wrongAttempts ===\r\n        2\r\n    ) {\r\n\r\n        clean =\r\n            Math.round(\r\n                base *\r\n                .05\r\n            );\r\n    }\r\n\r\n    let independent =\r\n        0;\r\n\r\n    if (\r\n        entry.hintsUsed ===\r\n        0\r\n    ) {\r\n\r\n        independent =\r\n            Math.round(\r\n                base *\r\n                .10\r\n            );\r\n\r\n    } else if (\r\n        entry.hintsUsed ===\r\n        1\r\n    ) {\r\n\r\n        independent =\r\n            Math.round(\r\n                base *\r\n                .05\r\n            );\r\n    }\r\n\r\n    const expected =\r\n        Math.max(\r\n            4000,\r\n            riddle.estimatedTime *\r\n            1000\r\n        );\r\n\r\n    const ratio =\r\n        clamp(\r\n            elapsed \/\r\n            expected,\r\n            0,\r\n            1\r\n        );\r\n\r\n    const speed =\r\n        elapsed <\r\n        expected\r\n            ? Math.round(\r\n                base *\r\n                .15 *\r\n                (\r\n                    1 -\r\n                    ratio\r\n                )\r\n            )\r\n            : 0;\r\n\r\n    const streak =\r\n        Math.min(\r\n            Math.round(\r\n                base *\r\n                .15\r\n            ),\r\n\r\n            Math.max(\r\n                0,\r\n                newStreak -\r\n                1\r\n            ) *\r\n            10\r\n        );\r\n\r\n    return {\r\n\r\n        base,\r\n        clean,\r\n        independent,\r\n        speed,\r\n        streak,\r\n\r\n        total:\r\n            base +\r\n            clean +\r\n            independent +\r\n            speed +\r\n            streak\r\n    };\r\n}\r\n\r\n\r\nfunction scoreBreakdownText(\r\n    score\r\n) {\r\n\r\n    const pieces = [\r\n        `${score.base} \u05e7\u05d5\u05e9\u05d9`\r\n    ];\r\n\r\n    if (\r\n        score.clean\r\n    ) {\r\n\r\n        pieces.push(\r\n            `${score.clean} \u05e0\u05e7\u05d9`\r\n        );\r\n    }\r\n\r\n    if (\r\n        score.independent\r\n    ) {\r\n\r\n        pieces.push(\r\n            `${score.independent} \u05e2\u05e6\u05de\u05d0\u05d9`\r\n        );\r\n    }\r\n\r\n    if (\r\n        score.speed\r\n    ) {\r\n\r\n        pieces.push(\r\n            `${score.speed} \u05de\u05d4\u05d9\u05e8\u05d5\u05ea`\r\n        );\r\n    }\r\n\r\n    if (\r\n        score.streak\r\n    ) {\r\n\r\n        pieces.push(\r\n            `${score.streak} \u05e8\u05e6\u05e3`\r\n        );\r\n    }\r\n\r\n    return (\r\n        pieces.join(\r\n            \" \u00b7 \"\r\n        )\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TIMER\r\n   ========================================================= *\/\r\n\r\nfunction entryElapsed(\r\n    entry\r\n) {\r\n\r\n    if (\r\n        entry.timerFrozen\r\n    ) {\r\n\r\n        return (\r\n            entry.elapsedMs\r\n        );\r\n    }\r\n\r\n    if (\r\n        entry ===\r\n            ACTIVE_ENTRY &&\r\n        entry.activeStartedAt\r\n    ) {\r\n\r\n        return (\r\n            entry.elapsedMs +\r\n            (\r\n                now() -\r\n                entry.activeStartedAt\r\n            )\r\n        );\r\n    }\r\n\r\n    return (\r\n        entry.elapsedMs\r\n    );\r\n}\r\n\r\n\r\nfunction pauseEntryTimer(\r\n    entry\r\n) {\r\n\r\n    if (\r\n        entry.timerFrozen ||\r\n        !entry.activeStartedAt\r\n    ) {\r\n        return;\r\n    }\r\n\r\n    entry.elapsedMs +=\r\n        now() -\r\n        entry.activeStartedAt;\r\n\r\n    entry.activeStartedAt =\r\n        0;\r\n}\r\n\r\n\r\nfunction startEntryTimer(\r\n    entry\r\n) {\r\n\r\n    if (\r\n        entry.timerFrozen ||\r\n        entry.activeStartedAt\r\n    ) {\r\n        return;\r\n    }\r\n\r\n    entry.activeStartedAt =\r\n        now();\r\n}\r\n\r\n\r\nfunction freezeEntryTimer(\r\n    entry\r\n) {\r\n\r\n    pauseEntryTimer(\r\n        entry\r\n    );\r\n\r\n    entry.timerFrozen =\r\n        true;\r\n\r\n    entry.card.classList.add(\r\n        \"is-timer-frozen\"\r\n    );\r\n}\r\n\r\n\r\nfunction chronoLoop() {\r\n\r\n    if (\r\n        ACTIVE_ENTRY &&\r\n        ACTIVE_ENTRY.card\r\n    ) {\r\n\r\n        const node =\r\n            ACTIVE_ENTRY.card\r\n                .querySelector(\r\n                    \".hussla-chrono-value\"\r\n                );\r\n\r\n        if (\r\n            node\r\n        ) {\r\n\r\n            node.textContent =\r\n                formatTimer(\r\n                    entryElapsed(\r\n                        ACTIVE_ENTRY\r\n                    )\r\n                );\r\n        }\r\n    }\r\n\r\n    requestAnimationFrame(\r\n        chronoLoop\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CELEBRATION\r\n   ========================================================= *\/\r\n\r\nfunction flashSuccess() {\r\n\r\n    FLASH.classList.remove(\r\n        \"go\"\r\n    );\r\n\r\n    void FLASH.offsetWidth;\r\n\r\n    FLASH.classList.add(\r\n        \"go\"\r\n    );\r\n}\r\n\r\n\r\nfunction particles(\r\n    count\r\n) {\r\n\r\n    if (\r\n        !STATE.motion\r\n    ) {\r\n        return;\r\n    }\r\n\r\n    for (\r\n        let i = 0;\r\n        i < count;\r\n        i++\r\n    ) {\r\n\r\n        const particle =\r\n            document.createElement(\r\n                \"span\"\r\n            );\r\n\r\n        particle.className =\r\n            \"hussla-particle\";\r\n\r\n        const random =\r\n            seededRandom(\r\n                SESSION_ID +\r\n                \"-particle-\" +\r\n                STATE.streak +\r\n                \"-\" +\r\n                i\r\n            );\r\n\r\n        particle.style.left =\r\n            `${\r\n                15 +\r\n                random() *\r\n                70\r\n            }%`;\r\n\r\n        particle.style.top =\r\n            `${\r\n                40 +\r\n                random() *\r\n                30\r\n            }%`;\r\n\r\n        particle.style\r\n            .setProperty(\r\n                \"--x\",\r\n                `${\r\n                    (\r\n                        random() -\r\n                        .5\r\n                    ) *\r\n                    500\r\n                }px`\r\n            );\r\n\r\n        particle.style\r\n            .setProperty(\r\n                \"--y\",\r\n                `${\r\n                    -100 -\r\n                    random() *\r\n                    430\r\n                }px`\r\n            );\r\n\r\n        particle.style\r\n            .setProperty(\r\n                \"--r\",\r\n                `${\r\n                    (\r\n                        random() -\r\n                        .5\r\n                    ) *\r\n                    900\r\n                }deg`\r\n            );\r\n\r\n        particle.style\r\n            .setProperty(\r\n                \"--duration\",\r\n                `${\r\n                    800 +\r\n                    random() *\r\n                    750\r\n                }ms`\r\n            );\r\n\r\n        CELEBRATION.appendChild(\r\n            particle\r\n        );\r\n\r\n        setTimeout(\r\n            () =>\r\n                particle.remove(),\r\n            1800\r\n        );\r\n    }\r\n}\r\n\r\n\r\nfunction milestoneCopy(\r\n    streak\r\n) {\r\n\r\n    if (\r\n        streak >=\r\n        100\r\n    ) {\r\n        return \"\u05d6\u05d4 \u05db\u05d1\u05e8 \u05de\u05d2\u05d5\u05d7\u05da.\";\r\n    }\r\n\r\n    if (\r\n        streak >=\r\n        50\r\n    ) {\r\n        return \"50. \u05d0\u05d5\u05e7\u05d9\u05d9.\";\r\n    }\r\n\r\n    if (\r\n        streak >=\r\n        25\r\n    ) {\r\n        return \"\u05d6\u05d4 \u05de\u05ea\u05d7\u05d9\u05dc \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05d5\u05d2\u05d6\u05dd.\";\r\n    }\r\n\r\n    if (\r\n        streak >=\r\n        15\r\n    ) {\r\n        return \"\u05e2\u05d3\u05d9\u05d9\u05df \u05db\u05d0\u05df?\";\r\n    }\r\n\r\n    if (\r\n        streak >=\r\n        10\r\n    ) {\r\n        return \"\u05e2\u05e9\u05e8 \u05d1\u05e8\u05e6\u05e3.\";\r\n    }\r\n\r\n    return \"\u05d7\u05de\u05e9.\";\r\n}\r\n\r\n\r\nfunction milestone(\r\n    streak\r\n) {\r\n\r\n    const wrapper =\r\n        document.createElement(\r\n            \"div\"\r\n        );\r\n\r\n    wrapper.className =\r\n        \"hussla-milestone\";\r\n\r\n    wrapper.innerHTML = `\r\n\r\n        <div class=\"hussla-milestone-number\">\r\n            ${streak}\r\n        <\/div>\r\n\r\n        <div class=\"hussla-milestone-copy\">\r\n            ${\r\n                escapeHTML(\r\n                    milestoneCopy(\r\n                        streak\r\n                    )\r\n                )\r\n            }\r\n        <\/div>\r\n    `;\r\n\r\n    CELEBRATION.appendChild(\r\n        wrapper\r\n    );\r\n\r\n    setTimeout(\r\n        () =>\r\n            wrapper.remove(),\r\n        1250\r\n    );\r\n}\r\n\r\n\r\nfunction celebrate(\r\n    streak\r\n) {\r\n\r\n    flashSuccess();\r\n\r\n    vibrate(\r\n        streak >=\r\n        10\r\n            ? [\r\n                14,\r\n                24,\r\n                22\r\n            ]\r\n            : 12\r\n    );\r\n\r\n    if (\r\n        streak ===\r\n        5\r\n    ) {\r\n\r\n        milestone(\r\n            streak\r\n        );\r\n    }\r\n\r\n    if (\r\n        streak ===\r\n        10\r\n    ) {\r\n\r\n        particles(26);\r\n        milestone(streak);\r\n    }\r\n\r\n    if (\r\n        streak ===\r\n        15\r\n    ) {\r\n\r\n        particles(34);\r\n        milestone(streak);\r\n    }\r\n\r\n    if (\r\n        streak ===\r\n        25\r\n    ) {\r\n\r\n        particles(50);\r\n        milestone(streak);\r\n    }\r\n\r\n    if (\r\n        streak ===\r\n        50\r\n    ) {\r\n\r\n        particles(85);\r\n        milestone(streak);\r\n    }\r\n\r\n    if (\r\n        streak >\r\n            0 &&\r\n        streak %\r\n            100 ===\r\n        0\r\n    ) {\r\n\r\n        particles(140);\r\n        milestone(streak);\r\n    }\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RENDER CHOICE\r\n   ========================================================= *\/\r\n\r\nfunction renderChoice(\r\n    riddle,\r\n    container,\r\n    entry\r\n) {\r\n\r\n    const choices =\r\n        riddle.id ===\r\n        \"onboarding\"\r\n            ? riddle.choices\r\n            : shuffle(\r\n                riddle.choices,\r\n                riddle.id +\r\n                \"-choices\"\r\n            );\r\n\r\n    const wrapper =\r\n        document.createElement(\r\n            \"div\"\r\n        );\r\n\r\n    wrapper.className =\r\n        \"hussla-choices\";\r\n\r\n    choices.forEach(\r\n        (\r\n            choice,\r\n            index\r\n        ) => {\r\n\r\n            const button =\r\n                document.createElement(\r\n                    \"button\"\r\n                );\r\n\r\n            button.type =\r\n                \"button\";\r\n\r\n            button.className =\r\n                \"hussla-choice\";\r\n\r\n            button.innerHTML = `\r\n\r\n                <span class=\"hussla-choice-letter\">\r\n                    ${\r\n                        LETTERS[\r\n                            index\r\n                        ] ||\r\n                        index + 1\r\n                    }\r\n                <\/span>\r\n\r\n                <span class=\"hussla-choice-text\">\r\n                    ${\r\n                        escapeHTML(\r\n                            choice\r\n                        )\r\n                    }\r\n                <\/span>\r\n            `;\r\n\r\n            button.addEventListener(\r\n                \"click\",\r\n                () =>\r\n                    evaluate(\r\n                        entry,\r\n                        choice,\r\n                        button\r\n                    )\r\n            );\r\n\r\n            wrapper.appendChild(\r\n                button\r\n            );\r\n        }\r\n    );\r\n\r\n    container.appendChild(\r\n        wrapper\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RENDER TEXT\r\n   ========================================================= *\/\r\n\r\nfunction renderText(\r\n    riddle,\r\n    container,\r\n    entry\r\n) {\r\n\r\n    const form =\r\n        document.createElement(\r\n            \"form\"\r\n        );\r\n\r\n    form.className =\r\n        \"hussla-answer-form\";\r\n\r\n    form.innerHTML = `\r\n\r\n        <input\r\n            class=\"hussla-answer-input\"\r\n            type=\"text\"\r\n            autocomplete=\"off\"\r\n            spellcheck=\"false\"\r\n            enterkeyhint=\"done\"\r\n            placeholder=\"\u05de\u05d4 \u05d4\u05ea\u05e9\u05d5\u05d1\u05d4?\"\r\n        >\r\n\r\n        <button\r\n            class=\"hussla-primary\"\r\n            type=\"submit\"\r\n        >\r\n            \u05d1\u05d3\u05d9\u05e7\u05d4\r\n        <\/button>\r\n    `;\r\n\r\n    form.addEventListener(\r\n        \"submit\",\r\n        event => {\r\n\r\n            event.preventDefault();\r\n\r\n            const input =\r\n                form.querySelector(\r\n                    \"input\"\r\n                );\r\n\r\n            const value =\r\n                input.value.trim();\r\n\r\n            if (\r\n                !value\r\n            ) {\r\n                return;\r\n            }\r\n\r\n            evaluate(\r\n                entry,\r\n                value,\r\n                input\r\n            );\r\n        }\r\n    );\r\n\r\n    container.appendChild(\r\n        form\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RENDER TAP\r\n   ========================================================= *\/\r\n\r\nfunction renderTap(\r\n    riddle,\r\n    container,\r\n    entry\r\n) {\r\n\r\n    const visual =\r\n        document.createElement(\r\n            \"div\"\r\n        );\r\n\r\n    visual.className =\r\n        \"hussla-visual\";\r\n\r\n    const grid =\r\n        document.createElement(\r\n            \"div\"\r\n        );\r\n\r\n    grid.className =\r\n        \"hussla-symbol-grid\";\r\n\r\n    grid.style\r\n        .setProperty(\r\n            \"--cols\",\r\n            riddle.tapColumns ||\r\n            3\r\n        );\r\n\r\n    riddle.tapItems\r\n        .forEach(\r\n            item => {\r\n\r\n                const button =\r\n                    document.createElement(\r\n                        \"button\"\r\n                    );\r\n\r\n                button.type =\r\n                    \"button\";\r\n\r\n                button.className =\r\n                    \"hussla-symbol-cell\";\r\n\r\n                button.textContent =\r\n                    item.label;\r\n\r\n                if (\r\n                    item.style\r\n                ) {\r\n\r\n                    Object.assign(\r\n                        button.style,\r\n                        item.style\r\n                    );\r\n                }\r\n\r\n                button.addEventListener(\r\n                    \"click\",\r\n                    () =>\r\n                        evaluate(\r\n                            entry,\r\n                            item.value,\r\n                            button\r\n                        )\r\n                );\r\n\r\n                grid.appendChild(\r\n                    button\r\n                );\r\n            }\r\n        );\r\n\r\n    visual.appendChild(\r\n        grid\r\n    );\r\n\r\n    container.appendChild(\r\n        visual\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RENDER ARRANGE\r\n   ========================================================= *\/\r\n\r\nfunction renderArrange(\r\n    riddle,\r\n    container,\r\n    entry\r\n) {\r\n\r\n    const root =\r\n        document.createElement(\r\n            \"div\"\r\n        );\r\n\r\n    root.className =\r\n        \"hussla-arrange\";\r\n\r\n    root.innerHTML = `\r\n\r\n        <div class=\"hussla-arrange-label\">\r\n            \u05d6\u05de\u05d9\u05e0\u05d9\u05dd\r\n        <\/div>\r\n\r\n        <div class=\"hussla-arrange-zone source\"><\/div>\r\n\r\n        <div class=\"hussla-arrange-label\">\r\n            \u05d4\u05e1\u05d3\u05e8 \u05e9\u05dc\u05db\u05dd\r\n        <\/div>\r\n\r\n        <div class=\"hussla-arrange-zone target\"><\/div>\r\n\r\n        <div class=\"hussla-arrange-actions\">\r\n\r\n            <button\r\n                class=\"hussla-primary check\"\r\n                type=\"button\"\r\n            >\r\n                \u05d1\u05d3\u05d9\u05e7\u05d4\r\n            <\/button>\r\n\r\n            <button\r\n                class=\"hussla-secondary reset\"\r\n                type=\"button\"\r\n            >\r\n                \u05d0\u05d9\u05e4\u05d5\u05e1\r\n            <\/button>\r\n\r\n        <\/div>\r\n    `;\r\n\r\n    const source =\r\n        root.querySelector(\r\n            \".source\"\r\n        );\r\n\r\n    const target =\r\n        root.querySelector(\r\n            \".target\"\r\n        );\r\n\r\n    const check =\r\n        root.querySelector(\r\n            \".check\"\r\n        );\r\n\r\n    const reset =\r\n        root.querySelector(\r\n            \".reset\"\r\n        );\r\n\r\n    let current =\r\n        [];\r\n\r\n\r\n    function rebuild() {\r\n\r\n        source.innerHTML =\r\n            \"\";\r\n\r\n        target.innerHTML =\r\n            \"\";\r\n\r\n        riddle.arrangeItems\r\n            .filter(\r\n                item =>\r\n                    !current.includes(\r\n                        item\r\n                    )\r\n            )\r\n            .forEach(\r\n                item => {\r\n\r\n                    const chip =\r\n                        document.createElement(\r\n                            \"button\"\r\n                        );\r\n\r\n                    chip.type =\r\n                        \"button\";\r\n\r\n                    chip.className =\r\n                        \"hussla-chip\";\r\n\r\n                    chip.textContent =\r\n                        item;\r\n\r\n                    chip.addEventListener(\r\n                        \"click\",\r\n                        () => {\r\n\r\n                            current.push(\r\n                                item\r\n                            );\r\n\r\n                            rebuild();\r\n                        }\r\n                    );\r\n\r\n                    source.appendChild(\r\n                        chip\r\n                    );\r\n                }\r\n            );\r\n\r\n        current.forEach(\r\n            (\r\n                item,\r\n                index\r\n            ) => {\r\n\r\n                const chip =\r\n                    document.createElement(\r\n                        \"button\"\r\n                    );\r\n\r\n                chip.type =\r\n                    \"button\";\r\n\r\n                chip.className =\r\n                    \"hussla-chip\";\r\n\r\n                chip.textContent =\r\n                    item;\r\n\r\n                chip.addEventListener(\r\n                    \"click\",\r\n                    () => {\r\n\r\n                        current.splice(\r\n                            index,\r\n                            1\r\n                        );\r\n\r\n                        rebuild();\r\n                    }\r\n                );\r\n\r\n                target.appendChild(\r\n                    chip\r\n                );\r\n            }\r\n        );\r\n    }\r\n\r\n\r\n    check.addEventListener(\r\n        \"click\",\r\n        () => {\r\n\r\n            if (\r\n                current.length !==\r\n                riddle.arrangeItems.length\r\n            ) {\r\n\r\n                showToast(\r\n                    \"\u05e2\u05d5\u05d3 \u05dc\u05d0 \u05e1\u05d9\u05d3\u05e8\u05ea\u05dd \u05d0\u05ea \u05db\u05d5\u05dc\u05dd.\"\r\n                );\r\n\r\n                return;\r\n            }\r\n\r\n            evaluate(\r\n                entry,\r\n                current.join(\r\n                    \"|\"\r\n                ),\r\n                check\r\n            );\r\n        }\r\n    );\r\n\r\n\r\n    reset.addEventListener(\r\n        \"click\",\r\n        () => {\r\n\r\n            current =\r\n                [];\r\n\r\n            rebuild();\r\n        }\r\n    );\r\n\r\n\r\n    rebuild();\r\n\r\n    container.appendChild(\r\n        root\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RENDER MEMORY\r\n   ========================================================= *\/\r\n\r\nfunction renderMemory(\r\n    riddle,\r\n    container,\r\n    entry\r\n) {\r\n\r\n    const stage =\r\n        document.createElement(\r\n            \"div\"\r\n        );\r\n\r\n    stage.className =\r\n        \"hussla-memory-stage\";\r\n\r\n    const sequence =\r\n        document.createElement(\r\n            \"div\"\r\n        );\r\n\r\n    sequence.className =\r\n        \"hussla-memory-sequence\";\r\n\r\n    riddle.memorySequence\r\n        .forEach(\r\n            symbol => {\r\n\r\n                const token =\r\n                    document.createElement(\r\n                        \"span\"\r\n                    );\r\n\r\n                token.className =\r\n                    \"hussla-memory-token\";\r\n\r\n                token.textContent =\r\n                    symbol;\r\n\r\n                sequence.appendChild(\r\n                    token\r\n                );\r\n            }\r\n        );\r\n\r\n    stage.appendChild(\r\n        sequence\r\n    );\r\n\r\n    container.appendChild(\r\n        stage\r\n    );\r\n\r\n    let remaining =\r\n        MEMORY_VISIBLE_MS;\r\n\r\n    let startedAt =\r\n        0;\r\n\r\n    let timer =\r\n        null;\r\n\r\n    let revealed =\r\n        false;\r\n\r\n\r\n    function revealQuestion() {\r\n\r\n        if (\r\n            revealed\r\n        ) {\r\n            return;\r\n        }\r\n\r\n        revealed =\r\n            true;\r\n\r\n        clearTimeout(\r\n            timer\r\n        );\r\n\r\n        timer =\r\n            null;\r\n\r\n        stage.innerHTML = `\r\n\r\n            <div style=\"\r\n                color:var(--muted);\r\n                font-size:13px;\r\n                font-weight:750;\r\n                text-align:center;\r\n            \">\r\n                ${\r\n                    escapeHTML(\r\n                        riddle.memoryQuestion\r\n                    )\r\n                }\r\n            <\/div>\r\n        `;\r\n\r\n        renderChoice(\r\n            riddle,\r\n            container,\r\n            entry\r\n        );\r\n    }\r\n\r\n\r\n    entry.activateInteraction =\r\n        () => {\r\n\r\n            if (\r\n                revealed ||\r\n                timer\r\n            ) {\r\n                return;\r\n            }\r\n\r\n            startedAt =\r\n                now();\r\n\r\n            timer =\r\n                setTimeout(\r\n                    revealQuestion,\r\n                    remaining\r\n                );\r\n        };\r\n\r\n\r\n    entry.deactivateInteraction =\r\n        () => {\r\n\r\n            if (\r\n                revealed ||\r\n                !timer\r\n            ) {\r\n                return;\r\n            }\r\n\r\n            clearTimeout(\r\n                timer\r\n            );\r\n\r\n            timer =\r\n                null;\r\n\r\n            remaining -=\r\n                now() -\r\n                startedAt;\r\n\r\n            remaining =\r\n                Math.max(\r\n                    0,\r\n                    remaining\r\n                );\r\n\r\n            if (\r\n                remaining <=\r\n                0\r\n            ) {\r\n\r\n                revealQuestion();\r\n            }\r\n        };\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RENDER REACTION\r\n   ========================================================= *\/\r\n\r\nfunction renderReaction(\r\n    riddle,\r\n    container,\r\n    entry\r\n) {\r\n\r\n    const button =\r\n        document.createElement(\r\n            \"button\"\r\n        );\r\n\r\n    button.type =\r\n        \"button\";\r\n\r\n    button.className =\r\n        \"hussla-reaction\";\r\n\r\n    button.textContent =\r\n        \"\u05d7\u05db\u05d5\u2026\";\r\n\r\n    container.appendChild(\r\n        button\r\n    );\r\n\r\n    let ready =\r\n        false;\r\n\r\n    let readyAt =\r\n        0;\r\n\r\n    let timer =\r\n        null;\r\n\r\n\r\n    function arm() {\r\n\r\n        clearTimeout(\r\n            timer\r\n        );\r\n\r\n        ready =\r\n            false;\r\n\r\n        button.classList.remove(\r\n            \"ready\"\r\n        );\r\n\r\n        button.textContent =\r\n            \"\u05d7\u05db\u05d5\u2026\";\r\n\r\n        const random =\r\n            seededRandom(\r\n                riddle.id +\r\n                \"-\" +\r\n                entry.position +\r\n                \"-\" +\r\n                entry.activationCount\r\n            );\r\n\r\n        timer =\r\n            setTimeout(\r\n                () => {\r\n\r\n                    ready =\r\n                        true;\r\n\r\n                    readyAt =\r\n                        now();\r\n\r\n                    button.classList.add(\r\n                        \"ready\"\r\n                    );\r\n\r\n                    button.textContent =\r\n                        \"\u05e2\u05db\u05e9\u05d9\u05d5\";\r\n\r\n                },\r\n                1300 +\r\n                random() *\r\n                2200\r\n            );\r\n    }\r\n\r\n\r\n    entry.activateInteraction =\r\n        () => {\r\n\r\n            if (\r\n                !entry.solvedThisVisit &&\r\n                !entry.revealedThisVisit\r\n            ) {\r\n\r\n                arm();\r\n            }\r\n        };\r\n\r\n\r\n    entry.deactivateInteraction =\r\n        () => {\r\n\r\n            clearTimeout(\r\n                timer\r\n            );\r\n\r\n            timer =\r\n                null;\r\n\r\n            ready =\r\n                false;\r\n\r\n            button.classList.remove(\r\n                \"ready\"\r\n            );\r\n        };\r\n\r\n\r\n    button.addEventListener(\r\n        \"click\",\r\n        () => {\r\n\r\n            if (\r\n                !ready\r\n            ) {\r\n\r\n                handleWrong(\r\n                    entry,\r\n                    button\r\n                );\r\n\r\n                arm();\r\n\r\n                return;\r\n            }\r\n\r\n            const reaction =\r\n                Math.round(\r\n                    now() -\r\n                    readyAt\r\n                );\r\n\r\n            button.textContent =\r\n                `${reaction}ms`;\r\n\r\n            evaluate(\r\n                entry,\r\n                \"reaction\",\r\n                button,\r\n                {\r\n                    reaction_ms:\r\n                        reaction\r\n                }\r\n            );\r\n        }\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RENDER SLIDER\r\n   ========================================================= *\/\r\n\r\nfunction renderSlider(\r\n    riddle,\r\n    container,\r\n    entry\r\n) {\r\n\r\n    const root =\r\n        document.createElement(\r\n            \"div\"\r\n        );\r\n\r\n    root.className =\r\n        \"hussla-slider-wrap\";\r\n\r\n    root.innerHTML = `\r\n\r\n        <div class=\"hussla-slider-value\">\r\n            ${riddle.sliderStart}\r\n        <\/div>\r\n\r\n        <input\r\n            class=\"hussla-slider\"\r\n            type=\"range\"\r\n            min=\"${riddle.sliderMin}\"\r\n            max=\"${riddle.sliderMax}\"\r\n            value=\"${riddle.sliderStart}\"\r\n            step=\"1\"\r\n        >\r\n\r\n        <button\r\n            class=\"hussla-primary check\"\r\n            type=\"button\"\r\n        >\r\n            \u05d1\u05d3\u05d9\u05e7\u05d4\r\n        <\/button>\r\n    `;\r\n\r\n    const slider =\r\n        root.querySelector(\r\n            \".hussla-slider\"\r\n        );\r\n\r\n    const value =\r\n        root.querySelector(\r\n            \".hussla-slider-value\"\r\n        );\r\n\r\n\r\n    slider.addEventListener(\r\n        \"input\",\r\n        () => {\r\n\r\n            value.textContent =\r\n                slider.value;\r\n        }\r\n    );\r\n\r\n\r\n    root.querySelector(\r\n        \".check\"\r\n    )\r\n    .addEventListener(\r\n        \"click\",\r\n        event => {\r\n\r\n            evaluate(\r\n                entry,\r\n                slider.value,\r\n                event.currentTarget\r\n            );\r\n        }\r\n    );\r\n\r\n\r\n    container.appendChild(\r\n        root\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RENDER AUDIO\r\n   ========================================================= *\/\r\n\r\nfunction renderAudio(\r\n    riddle,\r\n    container,\r\n    entry\r\n) {\r\n\r\n    const root =\r\n        document.createElement(\r\n            \"div\"\r\n        );\r\n\r\n    root.className =\r\n        \"hussla-audio-box\";\r\n\r\n    const play =\r\n        document.createElement(\r\n            \"button\"\r\n        );\r\n\r\n    play.type =\r\n        \"button\";\r\n\r\n    play.className =\r\n        \"hussla-audio-play\";\r\n\r\n    play.textContent =\r\n        \"\u25b6 \u05d4\u05e9\u05de\u05d9\u05e2\u05d5 \u05dc\u05d9\";\r\n\r\n\r\n    play.addEventListener(\r\n        \"click\",\r\n        async () => {\r\n\r\n            play.disabled =\r\n                true;\r\n\r\n            play.textContent =\r\n                \"\u05de\u05e0\u05d2\u05df\u2026\";\r\n\r\n            await playPattern(\r\n                riddle.audioPattern\r\n            );\r\n\r\n            play.disabled =\r\n                false;\r\n\r\n            play.textContent =\r\n                \"\u21bb \u05e9\u05d5\u05d1\";\r\n        }\r\n    );\r\n\r\n\r\n    root.appendChild(\r\n        play\r\n    );\r\n\r\n    container.appendChild(\r\n        root\r\n    );\r\n\r\n    renderChoice(\r\n        riddle,\r\n        container,\r\n        entry\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RENDER INTERACTION\r\n   ========================================================= *\/\r\n\r\nfunction renderInteraction(\r\n    entry,\r\n    container\r\n) {\r\n\r\n    const riddle =\r\n        entry.riddle;\r\n\r\n    switch (\r\n        riddle.interaction\r\n    ) {\r\n\r\n        case \"text\":\r\n\r\n            renderText(\r\n                riddle,\r\n                container,\r\n                entry\r\n            );\r\n\r\n            break;\r\n\r\n\r\n        case \"tap\":\r\n\r\n            renderTap(\r\n                riddle,\r\n                container,\r\n                entry\r\n            );\r\n\r\n            break;\r\n\r\n\r\n        case \"arrange\":\r\n\r\n            renderArrange(\r\n                riddle,\r\n                container,\r\n                entry\r\n            );\r\n\r\n            break;\r\n\r\n\r\n        case \"memory\":\r\n\r\n            renderMemory(\r\n                riddle,\r\n                container,\r\n                entry\r\n            );\r\n\r\n            break;\r\n\r\n\r\n        case \"reaction\":\r\n\r\n            renderReaction(\r\n                riddle,\r\n                container,\r\n                entry\r\n            );\r\n\r\n            break;\r\n\r\n\r\n        case \"slider\":\r\n\r\n            renderSlider(\r\n                riddle,\r\n                container,\r\n                entry\r\n            );\r\n\r\n            break;\r\n\r\n\r\n        case \"audio\":\r\n\r\n            renderAudio(\r\n                riddle,\r\n                container,\r\n                entry\r\n            );\r\n\r\n            break;\r\n\r\n\r\n        default:\r\n\r\n            renderChoice(\r\n                riddle,\r\n                container,\r\n                entry\r\n            );\r\n    }\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CARD\r\n   ========================================================= *\/\r\n\r\nfunction categoryLabel(\r\n    category\r\n) {\r\n\r\n    return (\r\n        {\r\n            logic:\r\n                \"\u05dc\u05d5\u05d2\u05d9\u05e7\u05d4\",\r\n\r\n            math:\r\n                \"\u05de\u05e1\u05e4\u05e8\u05d9\u05dd\",\r\n\r\n            visual:\r\n                \"\u05d5\u05d9\u05d6\u05d5\u05d0\u05dc\u05d9\",\r\n\r\n            word:\r\n                \"\u05de\u05d9\u05dc\u05d9\u05dd\",\r\n\r\n            memory:\r\n                \"\u05d6\u05d9\u05db\u05e8\u05d5\u05df\",\r\n\r\n            knowledge:\r\n                \"\u05d9\u05d3\u05e2\"\r\n        }[\r\n            category\r\n        ] ||\r\n        \"\u05d7\u05d9\u05d3\u05d4\"\r\n    );\r\n}\r\n\r\n\r\nfunction renderCard(\r\n    entry\r\n) {\r\n\r\n    const riddle =\r\n        entry.riddle;\r\n\r\n    const rs =\r\n        riddleState(\r\n            riddle.id\r\n        );\r\n\r\n    entry.alreadySolvedLifetime =\r\n        rs.solved >\r\n        0;\r\n\r\n    const card =\r\n        document.createElement(\r\n            \"article\"\r\n        );\r\n\r\n    entry.card =\r\n        card;\r\n\r\n    card.className =\r\n        \"hussla-card\";\r\n\r\n    card.dataset.position =\r\n        entry.position;\r\n\r\n    card.dataset.riddleId =\r\n        riddle.id;\r\n\r\n    card.dataset.family =\r\n        riddle.category;\r\n\r\n    const solved =\r\n        rs.solved >\r\n        0;\r\n\r\n\r\n    card.innerHTML = `\r\n\r\n        <div class=\"hussla-card-bg\"><\/div>\r\n\r\n        <div class=\"hussla-card-layout\">\r\n\r\n            <main class=\"hussla-main\">\r\n\r\n                <div class=\"hussla-meta-row\">\r\n\r\n                    <div class=\"hussla-meta-left\">\r\n\r\n                        <span class=\"hussla-pill\">\r\n                            ${\r\n                                escapeHTML(\r\n                                    categoryLabel(\r\n                                        riddle.category\r\n                                    )\r\n                                )\r\n                            }\r\n                        <\/span>\r\n\r\n                        ${\r\n                            entry.daily\r\n                                ? `\r\n                                    <span class=\"hussla-pill hussla-pill-accent\">\r\n                                        \u05d4\u05d7\u05d9\u05d3\u05d4 \u05e9\u05dc \u05d4\u05d9\u05d5\u05dd\r\n                                    <\/span>\r\n                                `\r\n                                : \"\"\r\n                        }\r\n\r\n                        ${\r\n                            solved\r\n                                ? `\r\n                                    <span class=\"hussla-pill hussla-pill-solved\">\r\n                                        \u2713 \u05e0\u05e4\u05ea\u05e8\u05d4\r\n                                    <\/span>\r\n                                `\r\n                                : \"\"\r\n                        }\r\n\r\n                    <\/div>\r\n\r\n                    <div class=\"hussla-chrono\">\r\n\r\n                        <span class=\"hussla-chrono-dot\"><\/span>\r\n\r\n                        <span class=\"hussla-chrono-value\">\r\n                            00:00.000\r\n                        <\/span>\r\n\r\n                    <\/div>\r\n\r\n                <\/div>\r\n\r\n\r\n                <div class=\"hussla-question-block\">\r\n\r\n                    ${\r\n                        riddle.title\r\n                            ? `\r\n                                <div class=\"hussla-eyebrow\">\r\n                                    ${\r\n                                        escapeHTML(\r\n                                            riddle.title\r\n                                        )\r\n                                    }\r\n                                <\/div>\r\n                            `\r\n                            : \"\"\r\n                    }\r\n\r\n                    <h2 class=\"hussla-question ${\r\n                        riddle.isLong\r\n                            ? \"is-long\"\r\n                            : \"\"\r\n                    }\">\r\n\r\n                        ${\r\n                            escapeHTML(\r\n                                riddle.prompt\r\n                            )\r\n                            .replaceAll(\r\n                                \"\\n\",\r\n                                \"<br>\"\r\n                            )\r\n                        }\r\n\r\n                    <\/h2>\r\n\r\n                    ${\r\n                        riddle.subPrompt\r\n                            ? `\r\n                                <p class=\"hussla-subprompt\">\r\n                                    ${\r\n                                        escapeHTML(\r\n                                            riddle.subPrompt\r\n                                        )\r\n                                    }\r\n                                <\/p>\r\n                            `\r\n                            : \"\"\r\n                    }\r\n\r\n                <\/div>\r\n\r\n\r\n                ${\r\n                    riddle.visualHTML\r\n                        ? `\r\n                            <div class=\"hussla-visual\">\r\n                                ${riddle.visualHTML}\r\n                            <\/div>\r\n                        `\r\n                        : \"\"\r\n                }\r\n\r\n\r\n                <div class=\"hussla-interaction\"><\/div>\r\n\r\n\r\n                <div\r\n                    class=\"hussla-hint\"\r\n                    hidden\r\n                ><\/div>\r\n\r\n\r\n                <div\r\n                    class=\"hussla-feedback\"\r\n                    aria-live=\"polite\"\r\n                ><\/div>\r\n\r\n\r\n                <div\r\n                    class=\"hussla-result\"\r\n                    hidden\r\n                >\r\n\r\n                    <div class=\"hussla-score-hit\"><\/div>\r\n\r\n                    <div class=\"hussla-score-breakdown\"><\/div>\r\n\r\n                    <div class=\"hussla-result-answer\"><\/div>\r\n\r\n                    <div class=\"hussla-result-explanation\"><\/div>\r\n\r\n                <\/div>\r\n\r\n\r\n                <div class=\"hussla-tools\">\r\n\r\n                    ${\r\n                        riddle.hints &&\r\n                        riddle.hints.length\r\n                            ? `\r\n                                <button\r\n                                    type=\"button\"\r\n                                    class=\"hussla-tool hint-button\"\r\n                                >\r\n                                    \u05e8\u05de\u05d6 \u05e7\u05d8\u05df\r\n                                <\/button>\r\n                            `\r\n                            : \"\"\r\n                    }\r\n\r\n                    <button\r\n                        type=\"button\"\r\n                        class=\"hussla-tool reveal-button\"\r\n                    >\r\n                        ${\r\n                            solved\r\n                                ? \"\u05e4\u05ea\u05e8\u05d5\u05df\"\r\n                                : \"\u05ea\u05d2\u05dc\u05d5 \u05dc\u05d9\"\r\n                        }\r\n                    <\/button>\r\n\r\n                <\/div>\r\n\r\n            <\/main>\r\n\r\n\r\n            <aside class=\"hussla-social\">\r\n\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"hussla-social-button like-button ${\r\n                        STATE.likes[\r\n                            riddle.id\r\n                        ]\r\n                            ? \"liked\"\r\n                            : \"\"\r\n                    }\"\r\n                    aria-label=\"\u05d0\u05d4\u05d1\u05ea\u05d9\"\r\n                >\r\n                    ${icon(\"heart\")}\r\n                <\/button>\r\n\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"hussla-social-button share-button\"\r\n                    aria-label=\"\u05e9\u05d9\u05ea\u05d5\u05e3\"\r\n                >\r\n                    ${icon(\"share\")}\r\n                <\/button>\r\n\r\n            <\/aside>\r\n\r\n        <\/div>\r\n    `;\r\n\r\n\r\n    renderInteraction(\r\n        entry,\r\n        card.querySelector(\r\n            \".hussla-interaction\"\r\n        )\r\n    );\r\n\r\n\r\n    setupCardActions(\r\n        entry\r\n    );\r\n\r\n\r\n    return card;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HINT\r\n   ========================================================= *\/\r\n\r\nfunction openHint(\r\n    entry\r\n) {\r\n\r\n    const riddle =\r\n        entry.riddle;\r\n\r\n    if (\r\n        !riddle.hints.length\r\n    ) {\r\n        return;\r\n    }\r\n\r\n    const index =\r\n        Math.min(\r\n            entry.hintsUsed,\r\n            riddle.hints.length -\r\n            1\r\n        );\r\n\r\n    const panel =\r\n        entry.card.querySelector(\r\n            \".hussla-hint\"\r\n        );\r\n\r\n    const button =\r\n        entry.card.querySelector(\r\n            \".hint-button\"\r\n        );\r\n\r\n    panel.textContent =\r\n        riddle.hints[\r\n            index\r\n        ];\r\n\r\n    panel.hidden =\r\n        false;\r\n\r\n    if (\r\n        entry.hintsUsed <\r\n        riddle.hints.length\r\n    ) {\r\n\r\n        entry.hintsUsed++;\r\n\r\n        const rs =\r\n            riddleState(\r\n                riddle.id\r\n            );\r\n\r\n        rs.hints++;\r\n\r\n        saveState();\r\n\r\n        track(\r\n            \"hint_open\",\r\n            {\r\n                riddle_id:\r\n                    riddle.id,\r\n\r\n                hint_number:\r\n                    entry.hintsUsed\r\n            }\r\n        );\r\n    }\r\n\r\n    button.textContent =\r\n        entry.hintsUsed <\r\n        riddle.hints.length\r\n            ? \"\u05e2\u05d5\u05d3 \u05e8\u05de\u05d6\"\r\n            : \"\u05d6\u05d4 \u05d4\u05e8\u05de\u05d6\";\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   WRONG\r\n   ========================================================= *\/\r\n\r\nfunction showWrong(\r\n    entry\r\n) {\r\n\r\n    const feedback =\r\n        entry.card\r\n            .querySelector(\r\n                \".hussla-feedback\"\r\n            );\r\n\r\n    feedback.className =\r\n        \"hussla-feedback wrong\";\r\n\r\n    feedback.textContent =\r\n        \"\u05dc\u05d0 \u05d6\u05d4.\";\r\n\r\n    setTimeout(\r\n        () => {\r\n\r\n            if (\r\n                feedback.textContent ===\r\n                \"\u05dc\u05d0 \u05d6\u05d4.\"\r\n            ) {\r\n\r\n                feedback.textContent =\r\n                    \"\";\r\n\r\n                feedback.className =\r\n                    \"hussla-feedback\";\r\n            }\r\n        },\r\n        850\r\n    );\r\n}\r\n\r\n\r\nfunction handleWrong(\r\n    entry,\r\n    element\r\n) {\r\n\r\n    if (\r\n        entry.alreadySolvedLifetime\r\n    ) {\r\n\r\n        showWrong(\r\n            entry\r\n        );\r\n\r\n        return;\r\n    }\r\n\r\n    if (\r\n        entry.solvedThisVisit ||\r\n        entry.revealedThisVisit\r\n    ) {\r\n        return;\r\n    }\r\n\r\n    entry.wrongAttempts++;\r\n\r\n    const rs =\r\n        riddleState(\r\n            entry.riddle.id\r\n        );\r\n\r\n    rs.wrong++;\r\n\r\n    STATE.streak =\r\n        0;\r\n\r\n    saveState();\r\n\r\n    updateHUD();\r\n\r\n    vibrate(\r\n        8\r\n    );\r\n\r\n    feedbackSound(\r\n        \"wrong\"\r\n    );\r\n\r\n    showWrong(\r\n        entry\r\n    );\r\n\r\n    if (\r\n        element\r\n    ) {\r\n\r\n        element.classList.add(\r\n            \"is-wrong\",\r\n            \"soft-shake\"\r\n        );\r\n\r\n        setTimeout(\r\n            () =>\r\n                element.classList\r\n                    .remove(\r\n                        \"is-wrong\",\r\n                        \"soft-shake\"\r\n                    ),\r\n            380\r\n        );\r\n    }\r\n\r\n    track(\r\n        \"answer_wrong\",\r\n        {\r\n            riddle_id:\r\n                entry.riddle.id,\r\n\r\n            attempts:\r\n                entry.wrongAttempts,\r\n\r\n            active_ms:\r\n                Math.round(\r\n                    entryElapsed(\r\n                        entry\r\n                    )\r\n                )\r\n        }\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RESULT\r\n   ========================================================= *\/\r\n\r\nfunction showResult(\r\n    entry,\r\n    score = null\r\n) {\r\n\r\n    const riddle =\r\n        entry.riddle;\r\n\r\n    const result =\r\n        entry.card.querySelector(\r\n            \".hussla-result\"\r\n        );\r\n\r\n    const hit =\r\n        result.querySelector(\r\n            \".hussla-score-hit\"\r\n        );\r\n\r\n    const breakdown =\r\n        result.querySelector(\r\n            \".hussla-score-breakdown\"\r\n        );\r\n\r\n    const answer =\r\n        result.querySelector(\r\n            \".hussla-result-answer\"\r\n        );\r\n\r\n    const explanation =\r\n        result.querySelector(\r\n            \".hussla-result-explanation\"\r\n        );\r\n\r\n\r\n    if (\r\n        score\r\n    ) {\r\n\r\n        hit.textContent =\r\n            `+${score.total}`;\r\n\r\n        breakdown.textContent =\r\n            scoreBreakdownText(\r\n                score\r\n            );\r\n\r\n    } else {\r\n\r\n        hit.textContent =\r\n            \"\";\r\n\r\n        breakdown.textContent =\r\n            \"\";\r\n    }\r\n\r\n\r\n    answer.textContent =\r\n        displayAnswer(\r\n            riddle\r\n        );\r\n\r\n\r\n    if (\r\n        riddle.explanation\r\n    ) {\r\n\r\n        explanation.textContent =\r\n            riddle.explanation;\r\n\r\n        explanation.hidden =\r\n            false;\r\n\r\n    } else {\r\n\r\n        explanation.textContent =\r\n            \"\";\r\n\r\n        explanation.hidden =\r\n            true;\r\n    }\r\n\r\n\r\n    result.hidden =\r\n        false;\r\n}\r\n\r\n\r\nfunction collapseResult(\r\n    entry\r\n) {\r\n\r\n    const result =\r\n        entry.card\r\n            ?.querySelector(\r\n                \".hussla-result\"\r\n            );\r\n\r\n    if (\r\n        result\r\n    ) {\r\n\r\n        result.hidden =\r\n            true;\r\n    }\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CORRECT\r\n   ========================================================= *\/\r\n\r\nfunction updateSolvedPill(\r\n    entry\r\n) {\r\n\r\n    const meta =\r\n        entry.card.querySelector(\r\n            \".hussla-meta-left\"\r\n        );\r\n\r\n    if (\r\n        meta.querySelector(\r\n            \".hussla-pill-solved\"\r\n        )\r\n    ) {\r\n        return;\r\n    }\r\n\r\n    const pill =\r\n        document.createElement(\r\n            \"span\"\r\n        );\r\n\r\n    pill.className =\r\n        \"hussla-pill hussla-pill-solved\";\r\n\r\n    pill.textContent =\r\n        \"\u2713 \u05e0\u05e4\u05ea\u05e8\u05d4\";\r\n\r\n    meta.appendChild(\r\n        pill\r\n    );\r\n}\r\n\r\n\r\nfunction evaluate(\r\n    entry,\r\n    submitted,\r\n    element,\r\n    extra = {}\r\n) {\r\n\r\n    const riddle =\r\n        entry.riddle;\r\n\r\n    track(\r\n        \"answer_submit\",\r\n        {\r\n            riddle_id:\r\n                riddle.id,\r\n\r\n            interaction:\r\n                riddle.interaction\r\n        }\r\n    );\r\n\r\n\r\n    if (\r\n        !answerMatches(\r\n            riddle,\r\n            submitted\r\n        )\r\n    ) {\r\n\r\n        handleWrong(\r\n            entry,\r\n            element\r\n        );\r\n\r\n        return;\r\n    }\r\n\r\n\r\n    if (\r\n        entry.alreadySolvedLifetime &&\r\n        !entry.solvedThisVisit\r\n    ) {\r\n\r\n        freezeEntryTimer(\r\n            entry\r\n        );\r\n\r\n        entry.solvedThisVisit =\r\n            true;\r\n\r\n        showResult(\r\n            entry\r\n        );\r\n\r\n        return;\r\n    }\r\n\r\n\r\n    if (\r\n        entry.solvedThisVisit ||\r\n        entry.revealedThisVisit\r\n    ) {\r\n\r\n        showResult(\r\n            entry\r\n        );\r\n\r\n        return;\r\n    }\r\n\r\n\r\n    freezeEntryTimer(\r\n        entry\r\n    );\r\n\r\n\r\n    const elapsed =\r\n        entry.elapsedMs;\r\n\r\n\r\n    const newStreak =\r\n        STATE.streak +\r\n        1;\r\n\r\n\r\n    const score =\r\n        scoreSolve(\r\n            riddle,\r\n            entry,\r\n            elapsed,\r\n            newStreak\r\n        );\r\n\r\n\r\n    const rs =\r\n        riddleState(\r\n            riddle.id\r\n        );\r\n\r\n\r\n    entry.solvedThisVisit =\r\n        true;\r\n\r\n    entry.outcome =\r\n        \"solved\";\r\n\r\n\r\n    rs.solved++;\r\n\r\n\r\n    if (\r\n        rs.bestSolveMs ===\r\n            null ||\r\n        elapsed <\r\n            rs.bestSolveMs\r\n    ) {\r\n\r\n        rs.bestSolveMs =\r\n            Math.round(\r\n                elapsed\r\n            );\r\n    }\r\n\r\n\r\n    if (\r\n        entry.secondChance\r\n    ) {\r\n\r\n        rs.secondChanceSolves++;\r\n    }\r\n\r\n\r\n    STATE.streak =\r\n        newStreak;\r\n\r\n\r\n    STATE.bestStreak =\r\n        Math.max(\r\n            STATE.bestStreak,\r\n            STATE.streak\r\n        );\r\n\r\n\r\n    STATE.score +=\r\n        score.total;\r\n\r\n\r\n    saveState();\r\n\r\n    updateHUD();\r\n\r\n\r\n    if (\r\n        element\r\n    ) {\r\n\r\n        element.classList.add(\r\n            \"is-correct\"\r\n        );\r\n    }\r\n\r\n\r\n    showResult(\r\n        entry,\r\n        score\r\n    );\r\n\r\n\r\n    updateSolvedPill(\r\n        entry\r\n    );\r\n\r\n\r\n    feedbackSound(\r\n        \"correct\"\r\n    );\r\n\r\n\r\n    celebrate(\r\n        STATE.streak\r\n    );\r\n\r\n\r\n    const feedback =\r\n        entry.card\r\n            .querySelector(\r\n                \".hussla-feedback\"\r\n            );\r\n\r\n\r\n    if (\r\n        score.speed >\r\n        0\r\n    ) {\r\n\r\n        feedback.textContent =\r\n            `${formatTimer(elapsed)}  \u26a1`;\r\n\r\n    } else {\r\n\r\n        feedback.textContent =\r\n            formatTimer(\r\n                elapsed\r\n            );\r\n    }\r\n\r\n\r\n    feedback.className =\r\n        \"hussla-feedback correct\";\r\n\r\n\r\n    track(\r\n        \"answer_correct\",\r\n        {\r\n            riddle_id:\r\n                riddle.id,\r\n\r\n            difficulty:\r\n                riddle.difficulty,\r\n\r\n            solve_ms:\r\n                Math.round(\r\n                    elapsed\r\n                ),\r\n\r\n            wrong_attempts:\r\n                entry.wrongAttempts,\r\n\r\n            hints_used:\r\n                entry.hintsUsed,\r\n\r\n            score_total:\r\n                score.total,\r\n\r\n            score_base:\r\n                score.base,\r\n\r\n            score_clean:\r\n                score.clean,\r\n\r\n            score_independent:\r\n                score.independent,\r\n\r\n            score_speed:\r\n                score.speed,\r\n\r\n            score_streak:\r\n                score.streak,\r\n\r\n            streak:\r\n                STATE.streak,\r\n\r\n            second_chance:\r\n                entry.secondChance,\r\n\r\n            ...extra\r\n        }\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   REVEAL\r\n   ========================================================= *\/\r\n\r\nfunction reveal(\r\n    entry\r\n) {\r\n\r\n    const rs =\r\n        riddleState(\r\n            entry.riddle.id\r\n        );\r\n\r\n\r\n    if (\r\n        entry.alreadySolvedLifetime ||\r\n        entry.solvedThisVisit\r\n    ) {\r\n\r\n        showResult(\r\n            entry\r\n        );\r\n\r\n        return;\r\n    }\r\n\r\n\r\n    if (\r\n        !entry.revealedThisVisit\r\n    ) {\r\n\r\n        entry.revealedThisVisit =\r\n            true;\r\n\r\n        entry.outcome =\r\n            \"revealed\";\r\n\r\n        freezeEntryTimer(\r\n            entry\r\n        );\r\n\r\n        rs.revealed++;\r\n\r\n        STATE.streak =\r\n            0;\r\n\r\n        saveState();\r\n\r\n        updateHUD();\r\n\r\n\r\n        track(\r\n            \"solution_reveal\",\r\n            {\r\n                riddle_id:\r\n                    entry.riddle.id,\r\n\r\n                active_ms:\r\n                    Math.round(\r\n                        entry.elapsedMs\r\n                    ),\r\n\r\n                wrong_attempts:\r\n                    entry.wrongAttempts,\r\n\r\n                hints_used:\r\n                    entry.hintsUsed\r\n            }\r\n        );\r\n    }\r\n\r\n\r\n    showResult(\r\n        entry\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SHARE\r\n   ========================================================= *\/\r\n\r\nasync function share(\r\n    entry\r\n) {\r\n\r\n    const riddle =\r\n        entry.riddle;\r\n\r\n    const rs =\r\n        riddleState(\r\n            riddle.id\r\n        );\r\n\r\n    const base =\r\n        location.href.split(\r\n            \"#\"\r\n        )[0];\r\n\r\n    const url =\r\n        `${base}#riddle=${encodeURIComponent(\r\n            riddle.id\r\n        )}`;\r\n\r\n\r\n    let text =\r\n        \"\u05ea\u05e4\u05ea\u05e8\u05d5 \u05d0\u05ea \u05d6\u05d4.\";\r\n\r\n\r\n    if (\r\n        rs.bestSolveMs\r\n    ) {\r\n\r\n        text =\r\n            `\u05e4\u05ea\u05e8\u05ea\u05d9 \u05d0\u05ea \u05d6\u05d4 \u05d1\u05be${formatTimer(\r\n                rs.bestSolveMs\r\n            )}. \u05d0\u05ea\u05dd \u05de\u05e6\u05dc\u05d9\u05d7\u05d9\u05dd \u05de\u05d4\u05e8 \u05d9\u05d5\u05ea\u05e8?`;\r\n    }\r\n\r\n\r\n    track(\r\n        \"share_open\",\r\n        {\r\n            riddle_id:\r\n                riddle.id\r\n        }\r\n    );\r\n\r\n\r\n    try {\r\n\r\n        if (\r\n            navigator.share\r\n        ) {\r\n\r\n            await navigator.share(\r\n                {\r\n                    title:\r\n                        \"HussLa\",\r\n\r\n                    text,\r\n\r\n                    url\r\n                }\r\n            );\r\n\r\n        } else if (\r\n            navigator.clipboard\r\n        ) {\r\n\r\n            await navigator\r\n                .clipboard\r\n                .writeText(\r\n                    `${text} ${url}`\r\n                );\r\n\r\n            showToast(\r\n                \"\u05d4\u05e7\u05d9\u05e9\u05d5\u05e8 \u05d4\u05d5\u05e2\u05ea\u05e7.\"\r\n            );\r\n        }\r\n\r\n\r\n        track(\r\n            \"share_complete\",\r\n            {\r\n                riddle_id:\r\n                    riddle.id\r\n            }\r\n        );\r\n\r\n    } catch {}\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CARD ACTIONS\r\n   ========================================================= *\/\r\n\r\nfunction setupCardActions(\r\n    entry\r\n) {\r\n\r\n    const card =\r\n        entry.card;\r\n\r\n\r\n    const hint =\r\n        card.querySelector(\r\n            \".hint-button\"\r\n        );\r\n\r\n\r\n    if (\r\n        hint\r\n    ) {\r\n\r\n        hint.addEventListener(\r\n            \"click\",\r\n            () =>\r\n                openHint(\r\n                    entry\r\n                )\r\n        );\r\n    }\r\n\r\n\r\n    card.querySelector(\r\n        \".reveal-button\"\r\n    )\r\n    .addEventListener(\r\n        \"click\",\r\n        () =>\r\n            reveal(\r\n                entry\r\n            )\r\n    );\r\n\r\n\r\n    const like =\r\n        card.querySelector(\r\n            \".like-button\"\r\n        );\r\n\r\n\r\n    like.addEventListener(\r\n        \"click\",\r\n        () => {\r\n\r\n            const next =\r\n                !STATE.likes[\r\n                    entry.riddle.id\r\n                ];\r\n\r\n            STATE.likes[\r\n                entry.riddle.id\r\n            ] =\r\n                next;\r\n\r\n            like.classList.toggle(\r\n                \"liked\",\r\n                next\r\n            );\r\n\r\n            saveState();\r\n\r\n\r\n            track(\r\n                \"riddle_like\",\r\n                {\r\n                    riddle_id:\r\n                        entry.riddle.id,\r\n\r\n                    liked:\r\n                        next\r\n                }\r\n            );\r\n        }\r\n    );\r\n\r\n\r\n    card.querySelector(\r\n        \".share-button\"\r\n    )\r\n    .addEventListener(\r\n        \"click\",\r\n        () =>\r\n            share(\r\n                entry\r\n            )\r\n    );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ACTIVE \/ SKIP\r\n   ========================================================= *\/\r\n\r\nfunction activateEntry(\r\n    entry\r\n) {\r\n\r\n    if (\r\n        ACTIVE_ENTRY ===\r\n        entry\r\n    ) {\r\n        return;\r\n    }\r\n\r\n\r\n    if (\r\n        ACTIVE_ENTRY\r\n    ) {\r\n\r\n        deactivateEntry(\r\n            ACTIVE_ENTRY\r\n        );\r\n    }\r\n\r\n\r\n    ACTIVE_ENTRY =\r\n        entry;\r\n\r\n\r\n    startEntryTimer(\r\n        entry\r\n    );\r\n\r\n\r\n    if (\r\n        entry.activateInteraction\r\n    ) {\r\n\r\n        entry.activateInteraction();\r\n    }\r\n\r\n\r\n    const rs =\r\n        riddleState(\r\n            entry.riddle.id\r\n        );\r\n\r\n\r\n    const returning =\r\n        entry.activationCount >\r\n        0;\r\n\r\n\r\n    entry.activationCount++;\r\n\r\n\r\n    STATE.sequence++;\r\n\r\n\r\n    rs.seen++;\r\n\r\n    rs.lastSeenAt =\r\n        Date.now();\r\n\r\n    rs.lastSequence =\r\n        STATE.sequence;\r\n\r\n    rs.lastSession =\r\n        SESSION_ID;\r\n\r\n\r\n    saveState();\r\n\r\n\r\n    if (\r\n        !entry.impressionTracked\r\n    ) {\r\n\r\n        entry.impressionTracked =\r\n            true;\r\n\r\n\r\n        track(\r\n            \"riddle_impression\",\r\n            {\r\n                riddle_id:\r\n                    entry.riddle.id,\r\n\r\n                position:\r\n                    entry.position,\r\n\r\n                category:\r\n                    entry.riddle.category,\r\n\r\n                cognitive:\r\n                    entry.riddle.cognitive,\r\n\r\n                archetype:\r\n                    entry.riddle.archetype,\r\n\r\n                variation_group:\r\n                    entry.riddle\r\n                        .variationGroup,\r\n\r\n                interaction:\r\n                    entry.riddle.interaction,\r\n\r\n                difficulty:\r\n                    entry.riddle.difficulty,\r\n\r\n                quality_tier:\r\n                    entry.riddle.qualityTier,\r\n\r\n                second_chance:\r\n                    entry.secondChance,\r\n\r\n                daily:\r\n                    entry.daily\r\n            }\r\n        );\r\n    }\r\n\r\n\r\n    track(\r\n        \"riddle_active\",\r\n        {\r\n            riddle_id:\r\n                entry.riddle.id,\r\n\r\n            position:\r\n                entry.position,\r\n\r\n            returning,\r\n\r\n            second_chance:\r\n                entry.secondChance\r\n        }\r\n    );\r\n\r\n\r\n    if (\r\n        returning\r\n    ) {\r\n\r\n        track(\r\n            \"riddle_return\",\r\n            {\r\n                riddle_id:\r\n                    entry.riddle.id\r\n            }\r\n        );\r\n    }\r\n\r\n\r\n    if (\r\n        entry.riddle.id ===\r\n        \"onboarding\"\r\n    ) {\r\n\r\n        STATE.onboardingSeen =\r\n            true;\r\n\r\n        saveState();\r\n\r\n        maybeShowScrollCue();\r\n    }\r\n\r\n\r\n    maybeFinalizeRound(\r\n        entry.position\r\n    );\r\n}\r\n\r\n\r\nfunction deactivateEntry(\r\n    entry\r\n) {\r\n\r\n    pauseEntryTimer(\r\n        entry\r\n    );\r\n\r\n\r\n    if (\r\n        entry.deactivateInteraction\r\n    ) {\r\n\r\n        entry.deactivateInteraction();\r\n    }\r\n\r\n\r\n    const elapsed =\r\n        entry.elapsedMs;\r\n\r\n\r\n    const rs =\r\n        riddleState(\r\n            entry.riddle.id\r\n        );\r\n\r\n\r\n    rs.totalActiveMs +=\r\n        Math.max(\r\n            0,\r\n            elapsed -\r\n            entry.lastStoredElapsed\r\n        );\r\n\r\n\r\n    entry.lastStoredElapsed =\r\n        elapsed;\r\n\r\n\r\n    if (\r\n        !entry.solvedThisVisit &&\r\n        !entry.revealedThisVisit &&\r\n        !entry.skipLogged &&\r\n        elapsed >\r\n            350\r\n    ) {\r\n\r\n        entry.skipLogged =\r\n            true;\r\n\r\n        entry.outcome =\r\n            \"skipped\";\r\n\r\n        rs.skipped++;\r\n\r\n\r\n        track(\r\n            \"riddle_skip\",\r\n            {\r\n                riddle_id:\r\n                    entry.riddle.id,\r\n\r\n                active_ms:\r\n                    Math.round(\r\n                        elapsed\r\n                    ),\r\n\r\n                wrong_attempts:\r\n                    entry.wrongAttempts,\r\n\r\n                hints_used:\r\n                    entry.hintsUsed\r\n            }\r\n        );\r\n    }\r\n\r\n\r\n    collapseResult(\r\n        entry\r\n    );\r\n\r\n\r\n    saveState();\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ROUND BONUS\r\n   ========================================================= *\/\r\n\r\nfunction maybeFinalizeRound(\r\n    currentPosition\r\n) {\r\n\r\n    const round =\r\n        Math.floor(\r\n            currentPosition \/\r\n            10\r\n        ) -\r\n        1;\r\n\r\n\r\n    if (\r\n        round <\r\n        0\r\n    ) {\r\n        return;\r\n    }\r\n\r\n\r\n    if (\r\n        STATE.rounds[\r\n            round\r\n        ]\r\n    ) {\r\n        return;\r\n    }\r\n\r\n\r\n    const start =\r\n        round *\r\n        10;\r\n\r\n\r\n    const entries =\r\n        FEED_ENTRIES.slice(\r\n            start,\r\n            start +\r\n            10\r\n        );\r\n\r\n\r\n    if (\r\n        entries.length <\r\n        10\r\n    ) {\r\n        return;\r\n    }\r\n\r\n\r\n    const solved =\r\n        entries.filter(\r\n            entry =>\r\n                entry.solvedThisVisit ||\r\n                entry.alreadySolvedLifetime\r\n        )\r\n        .length;\r\n\r\n\r\n    const unsolved =\r\n        10 -\r\n        solved;\r\n\r\n\r\n    const eligible =\r\n        unsolved <=\r\n        3;\r\n\r\n\r\n    STATE.rounds[\r\n        round\r\n    ] = {\r\n\r\n        solved,\r\n        unsolved,\r\n        eligible\r\n    };\r\n\r\n\r\n    if (\r\n        eligible\r\n    ) {\r\n\r\n        const bonus =\r\n            150 +\r\n            round *\r\n            10;\r\n\r\n        STATE.score +=\r\n            bonus;\r\n\r\n        showToast(\r\n            `\u05d1\u05d5\u05e0\u05d5\u05e1 \u05e1\u05d1\u05d1 +${bonus}`\r\n        );\r\n\r\n\r\n        track(\r\n            \"round_bonus\",\r\n            {\r\n                round:\r\n                    round + 1,\r\n\r\n                solved,\r\n                unsolved,\r\n                bonus\r\n            }\r\n        );\r\n    }\r\n\r\n\r\n    saveState();\r\n\r\n    updateHUD();\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   INTERSECTION\r\n   ========================================================= *\/\r\n\r\nconst OBSERVER =\r\n    new IntersectionObserver(\r\n        entries => {\r\n\r\n            let best =\r\n                null;\r\n\r\n\r\n            entries.forEach(\r\n                observed => {\r\n\r\n                    if (\r\n                        !observed\r\n                            .isIntersecting\r\n                    ) {\r\n                        return;\r\n                    }\r\n\r\n\r\n                    if (\r\n                        !best ||\r\n                        observed\r\n                            .intersectionRatio >\r\n                        best\r\n                            .intersectionRatio\r\n                    ) {\r\n\r\n                        best =\r\n                            observed;\r\n                    }\r\n                }\r\n            );\r\n\r\n\r\n            if (\r\n                !best ||\r\n                best.intersectionRatio <\r\n                .58\r\n            ) {\r\n                return;\r\n            }\r\n\r\n\r\n            const position =\r\n                Number(\r\n                    best.target\r\n                        .dataset\r\n                        .position\r\n                );\r\n\r\n\r\n            const entry =\r\n                FEED_ENTRIES[\r\n                    position\r\n                ];\r\n\r\n\r\n            if (\r\n                entry\r\n            ) {\r\n\r\n                activateEntry(\r\n                    entry\r\n                );\r\n            }\r\n        },\r\n        {\r\n            root:\r\n                FEED,\r\n\r\n            threshold: [\r\n                .30,\r\n                .58,\r\n                .72,\r\n                .90\r\n            ]\r\n        }\r\n    );\r\n\r\n\r\n\/* =========================================================\r\n   APPEND\r\n   ========================================================= *\/\r\n\r\nfunction appendOne() {\r\n\r\n    const position =\r\n        FEED_ENTRIES.length;\r\n\r\n\r\n    const selection =\r\n        nextPuzzle(\r\n            position\r\n        );\r\n\r\n\r\n    const entry = {\r\n\r\n        ...selection,\r\n\r\n        position,\r\n\r\n        card:\r\n            null,\r\n\r\n        elapsedMs:\r\n            0,\r\n\r\n        activeStartedAt:\r\n            0,\r\n\r\n        timerFrozen:\r\n            false,\r\n\r\n        wrongAttempts:\r\n            0,\r\n\r\n        hintsUsed:\r\n            0,\r\n\r\n        solvedThisVisit:\r\n            false,\r\n\r\n        revealedThisVisit:\r\n            false,\r\n\r\n        alreadySolvedLifetime:\r\n            false,\r\n\r\n        skipLogged:\r\n            false,\r\n\r\n        impressionTracked:\r\n            false,\r\n\r\n        activationCount:\r\n            0,\r\n\r\n        lastStoredElapsed:\r\n            0,\r\n\r\n        outcome:\r\n            \"seen\",\r\n\r\n        activateInteraction:\r\n            null,\r\n\r\n        deactivateInteraction:\r\n            null\r\n    };\r\n\r\n\r\n    const card =\r\n        renderCard(\r\n            entry\r\n        );\r\n\r\n\r\n    FEED_ENTRIES.push(\r\n        entry\r\n    );\r\n\r\n\r\n    if (\r\n        !entry.secondChance\r\n    ) {\r\n\r\n        USED_IDS.add(\r\n            entry.riddle.id\r\n        );\r\n    }\r\n\r\n\r\n    INTERACTIONS_SEEN.add(\r\n        entry.riddle.interaction\r\n    );\r\n\r\n\r\n    FEED.appendChild(\r\n        card\r\n    );\r\n\r\n\r\n    OBSERVER.observe(\r\n        card\r\n    );\r\n}\r\n\r\n\r\nfunction appendCards(\r\n    amount\r\n) {\r\n\r\n    if (\r\n        appendLock\r\n    ) {\r\n        return;\r\n    }\r\n\r\n\r\n    appendLock =\r\n        true;\r\n\r\n\r\n    for (\r\n        let i = 0;\r\n        i < amount;\r\n        i++\r\n    ) {\r\n\r\n        appendOne();\r\n    }\r\n\r\n\r\n    appendLock =\r\n        false;\r\n}\r\n\r\n\r\nFEED.addEventListener(\r\n    \"scroll\",\r\n    () => {\r\n\r\n        if (\r\n            FEED.scrollTop >\r\n            24\r\n        ) {\r\n\r\n            markScrollCueSeen();\r\n        }\r\n\r\n\r\n        const remaining =\r\n            FEED.scrollHeight -\r\n            FEED.scrollTop -\r\n            FEED.clientHeight;\r\n\r\n\r\n        if (\r\n            remaining <\r\n            FEED.clientHeight *\r\n            4\r\n        ) {\r\n\r\n            appendCards(\r\n                APPEND_BATCH\r\n            );\r\n        }\r\n    },\r\n    {\r\n        passive:\r\n            true\r\n    }\r\n);\r\n\r\n\r\n\/* =========================================================\r\n   SCROLL CUE\r\n   ========================================================= *\/\r\n\r\nlet cueTimer =\r\n    null;\r\n\r\n\r\nfunction maybeShowScrollCue() {\r\n\r\n    if (\r\n        STATE.scrollCueSeen\r\n    ) {\r\n        return;\r\n    }\r\n\r\n\r\n    clearTimeout(\r\n        cueTimer\r\n    );\r\n\r\n\r\n    cueTimer =\r\n        setTimeout(\r\n            () => {\r\n\r\n                if (\r\n                    STATE.scrollCueSeen\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n                SCROLL_CUE.hidden =\r\n                    false;\r\n\r\n\r\n                setTimeout(\r\n                    () => {\r\n\r\n                        if (\r\n                            !STATE\r\n                                .scrollCueSeen\r\n                        ) {\r\n\r\n                            SCROLL_CUE.hidden =\r\n                                true;\r\n                        }\r\n                    },\r\n                    2200\r\n                );\r\n\r\n            },\r\n            1350\r\n        );\r\n}\r\n\r\n\r\nfunction markScrollCueSeen() {\r\n\r\n    if (\r\n        STATE.scrollCueSeen\r\n    ) {\r\n        return;\r\n    }\r\n\r\n\r\n    STATE.scrollCueSeen =\r\n        true;\r\n\r\n\r\n    SCROLL_CUE.hidden =\r\n        true;\r\n\r\n\r\n    saveState();\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SETTINGS\r\n   ========================================================= *\/\r\n\r\nTHEME_BUTTON.addEventListener(\r\n    \"click\",\r\n    () => {\r\n\r\n        STATE.theme =\r\n            STATE.theme ===\r\n            \"dark\"\r\n                ? \"light\"\r\n                : \"dark\";\r\n\r\n\r\n        saveState();\r\n\r\n        updateHUD();\r\n\r\n\r\n        track(\r\n            \"theme_change\",\r\n            {\r\n                theme:\r\n                    STATE.theme\r\n            }\r\n        );\r\n    }\r\n);\r\n\r\n\r\nSOUND_BUTTON.addEventListener(\r\n    \"click\",\r\n    () => {\r\n\r\n        STATE.sound =\r\n            !STATE.sound;\r\n\r\n\r\n        saveState();\r\n\r\n        updateHUD();\r\n\r\n\r\n        track(\r\n            \"audio_toggle\",\r\n            {\r\n                enabled:\r\n                    STATE.sound\r\n            }\r\n        );\r\n    }\r\n);\r\n\r\n\r\nSETTINGS_BUTTON.addEventListener(\r\n    \"click\",\r\n    event => {\r\n\r\n        event.stopPropagation();\r\n\r\n        SETTINGS.hidden =\r\n            !SETTINGS.hidden;\r\n    }\r\n);\r\n\r\n\r\nHAPTICS_TOGGLE.addEventListener(\r\n    \"change\",\r\n    () => {\r\n\r\n        STATE.haptics =\r\n            HAPTICS_TOGGLE.checked;\r\n\r\n\r\n        saveState();\r\n\r\n\r\n        if (\r\n            STATE.haptics\r\n        ) {\r\n\r\n            vibrate(\r\n                10\r\n            );\r\n        }\r\n    }\r\n);\r\n\r\n\r\nMOTION_TOGGLE.addEventListener(\r\n    \"change\",\r\n    () => {\r\n\r\n        STATE.motion =\r\n            MOTION_TOGGLE.checked;\r\n\r\n\r\n        saveState();\r\n\r\n        updateHUD();\r\n    }\r\n);\r\n\r\n\r\ndocument.addEventListener(\r\n    \"click\",\r\n    event => {\r\n\r\n        if (\r\n            SETTINGS.hidden\r\n        ) {\r\n            return;\r\n        }\r\n\r\n\r\n        if (\r\n            SETTINGS.contains(\r\n                event.target\r\n            ) ||\r\n            SETTINGS_BUTTON.contains(\r\n                event.target\r\n            )\r\n        ) {\r\n            return;\r\n        }\r\n\r\n\r\n        SETTINGS.hidden =\r\n            true;\r\n    }\r\n);\r\n\r\n\r\n\/* =========================================================\r\n   SESSION END\r\n   ========================================================= *\/\r\n\r\nlet sessionEnded =\r\n    false;\r\n\r\n\r\nfunction sessionEnd(\r\n    reason\r\n) {\r\n\r\n    if (\r\n        sessionEnded\r\n    ) {\r\n        return;\r\n    }\r\n\r\n\r\n    sessionEnded =\r\n        true;\r\n\r\n\r\n    if (\r\n        ACTIVE_ENTRY\r\n    ) {\r\n\r\n        deactivateEntry(\r\n            ACTIVE_ENTRY\r\n        );\r\n    }\r\n\r\n\r\n    track(\r\n        \"session_end\",\r\n        {\r\n            reason,\r\n\r\n            last_riddle_id:\r\n                ACTIVE_ENTRY\r\n                    ?.riddle\r\n                    ?.id ||\r\n                null,\r\n\r\n            feed_depth:\r\n                ACTIVE_ENTRY\r\n                    ? ACTIVE_ENTRY\r\n                        .position + 1\r\n                    : 0,\r\n\r\n            score:\r\n                STATE.score,\r\n\r\n            streak:\r\n                STATE.streak\r\n        }\r\n    );\r\n}\r\n\r\n\r\nwindow.addEventListener(\r\n    \"pagehide\",\r\n    () =>\r\n        sessionEnd(\r\n            \"pagehide\"\r\n        )\r\n);\r\n\r\n\r\n\/* =========================================================\r\n   DEBUG API\r\n   ========================================================= *\/\r\n\r\nwindow.HussLa = {\r\n\r\n    version:\r\n        \"2.1.0\",\r\n\r\n\r\n    getState() {\r\n\r\n        return JSON.parse(\r\n            JSON.stringify(\r\n                STATE\r\n            )\r\n        );\r\n    },\r\n\r\n\r\n    getEvents() {\r\n\r\n        return (\r\n            readEvents()\r\n        );\r\n    },\r\n\r\n\r\n    getPuzzles() {\r\n\r\n        return (\r\n            PUZZLES.map(\r\n                puzzle => ({\r\n                    ...puzzle\r\n                })\r\n            )\r\n        );\r\n    },\r\n\r\n\r\n    getPuzzleCount() {\r\n\r\n        return (\r\n            PUZZLES.length\r\n        );\r\n    },\r\n\r\n\r\n    auditLibrary() {\r\n\r\n        return (\r\n            auditLibrary()\r\n        );\r\n    },\r\n\r\n\r\n    getFeed() {\r\n\r\n        return FEED_ENTRIES.map(\r\n            entry => ({\r\n\r\n                position:\r\n                    entry.position,\r\n\r\n                id:\r\n                    entry.riddle.id,\r\n\r\n                quality:\r\n                    entry.riddle\r\n                        .qualityTier,\r\n\r\n                archetype:\r\n                    entry.riddle\r\n                        .archetype,\r\n\r\n                variationGroup:\r\n                    entry.riddle\r\n                        .variationGroup,\r\n\r\n                difficulty:\r\n                    entry.riddle\r\n                        .difficulty,\r\n\r\n                secondChance:\r\n                    entry.secondChance,\r\n\r\n                outcome:\r\n                    entry.outcome,\r\n\r\n                elapsedMs:\r\n                    Math.round(\r\n                        entryElapsed(\r\n                            entry\r\n                        )\r\n                    )\r\n            })\r\n        );\r\n    },\r\n\r\n\r\n    resetPrototype() {\r\n\r\n        localStorage.removeItem(\r\n            STORAGE_KEY\r\n        );\r\n\r\n        localStorage.removeItem(\r\n            EVENTS_KEY\r\n        );\r\n\r\n        location.reload();\r\n    },\r\n\r\n\r\n    exportAnalytics() {\r\n\r\n        const payload = {\r\n\r\n            exported_at:\r\n                new Date()\r\n                    .toISOString(),\r\n\r\n            library_audit:\r\n                auditLibrary(),\r\n\r\n            state:\r\n                this.getState(),\r\n\r\n            feed:\r\n                this.getFeed(),\r\n\r\n            events:\r\n                this.getEvents()\r\n        };\r\n\r\n\r\n        const blob =\r\n            new Blob(\r\n                [\r\n                    JSON.stringify(\r\n                        payload,\r\n                        null,\r\n                        2\r\n                    )\r\n                ],\r\n                {\r\n                    type:\r\n                        \"application\/json\"\r\n                }\r\n            );\r\n\r\n\r\n        const url =\r\n            URL.createObjectURL(\r\n                blob\r\n            );\r\n\r\n\r\n        const link =\r\n            document.createElement(\r\n                \"a\"\r\n            );\r\n\r\n\r\n        link.href =\r\n            url;\r\n\r\n\r\n        link.download =\r\n            \"hussla-v2.1-analytics.json\";\r\n\r\n\r\n        document.body\r\n            .appendChild(\r\n                link\r\n            );\r\n\r\n\r\n        link.click();\r\n\r\n\r\n        link.remove();\r\n\r\n\r\n        URL.revokeObjectURL(\r\n            url\r\n        );\r\n    }\r\n};\r\n\r\n\r\n\/* =========================================================\r\n   INIT\r\n   ========================================================= *\/\r\n\r\nupdateHUD();\r\n\r\n\r\ntrack(\r\n    \"app_open\",\r\n    {\r\n        version:\r\n            \"2.1.0\",\r\n\r\n        puzzle_count:\r\n            PUZZLES.length,\r\n\r\n        library_audit:\r\n            auditLibrary()\r\n    }\r\n);\r\n\r\n\r\ntrack(\r\n    \"session_start\",\r\n    {\r\n        number:\r\n            STATE.sessionCount,\r\n\r\n        deep_link:\r\n            !!DEEP_LINK_ID\r\n    }\r\n);\r\n\r\n\r\nappendCards(\r\n    INITIAL_CARDS\r\n);\r\n\r\n\r\nrequestAnimationFrame(\r\n    chronoLoop\r\n);\r\n\r\n\r\nsaveState();\r\n\r\n})();\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>HussLa \u05e0\u05d9\u05e7\u05d5\u05d3 0 \u25c6 0 \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea \u05e8\u05d8\u05d8 \u05e2\u05d3\u05d9\u05df. \u05d1\u05dc\u05d9 \u05dc\u05d4\u05e6\u05d9\u05e7. \u05d0\u05e0\u05d9\u05de\u05e6\u05d9\u05d5\u05ea \u05db\u05d5\u05dc\u05dc \u05d7\u05d2\u05d9\u05d2\u05d5\u05ea \u05e8\u05e6\u05e3.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-11","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/game.ussl.co\/index.php?rest_route=\/wp\/v2\/pages\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/game.ussl.co\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/game.ussl.co\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/game.ussl.co\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/game.ussl.co\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11"}],"version-history":[{"count":53,"href":"https:\/\/game.ussl.co\/index.php?rest_route=\/wp\/v2\/pages\/11\/revisions"}],"predecessor-version":[{"id":76,"href":"https:\/\/game.ussl.co\/index.php?rest_route=\/wp\/v2\/pages\/11\/revisions\/76"}],"wp:attachment":[{"href":"https:\/\/game.ussl.co\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}