{"id":8615,"date":"2026-02-05T13:14:25","date_gmt":"2026-02-05T13:14:25","guid":{"rendered":"https:\/\/www.merlinedv.de\/waiting-area\/"},"modified":"2026-09-14T10:29:30","modified_gmt":"2026-09-14T10:29:30","slug":"waiting-area","status":"publish","type":"page","link":"https:\/\/www.merlinedv.de\/en\/waiting-area\/","title":{"rendered":"Waiting area"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"8615\" class=\"elementor elementor-8615 elementor-4650\" data-elementor-settings=\"{&quot;scroll_snap&quot;:&quot;yes&quot;}\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-08eee8e e-flex e-con-boxed e-con e-parent\" data-id=\"08eee8e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-41066c2 e-con-full e-flex eael_liquid_glass-effect1 eael_liquid_glass_shadow-effect1 e-con e-child\" data-id=\"41066c2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c563c01 elementor-widget elementor-widget-heading\" data-id=\"c563c01\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Waiting area<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t        \n        <svg style=\"display: none\">\n            <style>\n                [data-id=\"41066c2\"].eael_liquid_glass-effect3 {\n                    backdrop-filter: url(#eael-glass-distortion3-41066c2);\n                }\n                [data-id=\"41066c2\"].eael_liquid_glass-effect4 {\n                    backdrop-filter: blur(5px) url(#eael-glass-distortion4-41066c2); webkit-backdrop-filter: blur(5px);\n                }\n                [data-id=\"41066c2\"].eael_liquid_glass-effect5 {\n                    backdrop-filter: blur(0px) url(#eael-glass-distortion5-41066c2); webkit-backdrop-filter: blur(0px);\n                }\n                [data-id=\"41066c2\"].eael_liquid_glass-effect6 {\n                    backdrop-filter: blur(7px) url(#eael-glass-distortion6-41066c2); webkit-backdrop-filter: blur(7px);\n                }\n            <\/style>\n\n            <filter id=\"eael-glass-distortion3-41066c2\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" filterUnits=\"objectBoundingBox\">\n                <feTurbulence type=\"fractalNoise\" baseFrequency=\"0.003 0.007\" numOctaves=\"1\" result=\"turbulence\" \/>\n                <feDisplacementMap in=\"SourceGraphic\" in2=\"turbulence\" scale=\"200\" xChannelSelector=\"R\" yChannelSelector=\"G\" \/>\n            <\/filter>\n            \n\t\t\t<filter id=\"eael-glass-distortion4-41066c2\" x=\"0%\" y=\"0%\" width=\"100%\" height=\"100%\">\n                <feTurbulence type=\"fractalNoise\" baseFrequency=\"0.008 0.008\" numOctaves=\"2\" seed=\"92\" result=\"noise\" \/>\n                <feGaussianBlur in=\"noise\" stdDeviation=\"0.02\" result=\"blur\" \/>\n                <feDisplacementMap in=\"SourceGraphic\" in2=\"blur\" scale=\"77\" xChannelSelector=\"R\" yChannelSelector=\"G\" \/>\n            <\/filter>\n            \n            <filter id=\"eael-glass-distortion5-41066c2\" x=\"0%\" y=\"0%\" width=\"100%\" height=\"100%\">\n                <feTurbulence type=\"fractalNoise\" baseFrequency=\"1.008 1.008\" numOctaves=\"1\" seed=\"9000\" result=\"noise\" \/>\n                <feGaussianBlur in=\"noise\" stdDeviation=\"0.1\" result=\"blurred\" \/>\n                <feDisplacementMap in=\"SourceGraphic\" in2=\"blurred\" scale=\"77\" xChannelSelector=\"R\" yChannelSelector=\"G\" \/>\n            <\/filter>\n\n            <filter id=\"eael-glass-distortion6-41066c2\">\n                <feTurbulence type=\"turbulence\" baseFrequency=\"0.02\" numOctaves=\"3\" result=\"turbulence\"\/>\n                <feDisplacementMap in2=\"turbulence\" in=\"SourceGraphic\" scale=\"30\" xChannelSelector=\"R\" yChannelSelector=\"G\"\/>\n            <\/filter>\n\t\t\t\n        <\/svg>\n        \t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-e1701e4 e-flex e-con-boxed e-con e-parent\" data-id=\"e1701e4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7c7d15b elementor-widget elementor-widget-text-editor\" data-id=\"7c7d15b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Welcome to our waiting area.<\/p><p>You may be waiting for us to call you back, or we may already be working behind the scenes on a solution to your problem. To make sure waiting doesn\u2019t feel like wasted time, we\u2019ve added a little distraction: a browser-based homage to a true arcade classic. <\/p><p>So take a moment, collect the dots, and dodge the ghosts. In the meantime, we\u2019ll take care of the rest. <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-3809321 e-flex e-con-boxed e-con e-parent\" data-id=\"3809321\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ad253cc elementor-widget elementor-widget-html\" data-id=\"ad253cc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div id=\"shim\">shim for font face<\/div>\n\n<h1>  PACMAN<h1>\n\n<\/h1><\/h1><p><a href=\"daniel estera\" target=\"_blank\">Waiting, retro-style.<\/a><\/p>\n\n<div id=\"pacman\"><\/div>\n\n\n\n\n\n\n\n    body {\n  background-color: black;\n}\n\n#pacman {\n  height: 470px;\n  width: 382px;\n  border-radius: 5px;\n  margin: 20px auto;\n}\n\n#shim {\n  font-family: 'Permanent Marker', cursive;\n  position: absolute;\n  visibility: hidden\n}\n\nh1 {\n  font-family: 'Permanent Marker', cursive;\n  text-align: center;\n  color: yellow;\n}\n\nbody {\n  width: 100%;\n  height: 100vh;\n  margin: 0px auto;\n  font-family: sans-serif;\n}\n\na {\n  text-decoration: none;\n  color: #0000FF;\n}\n\n\n\n    \/*jslint browser: true, undef: true, eqeqeq: true, nomen: true, white: true *\/\n\/*global window: false, document: false *\/\n\n\/*\n * fix looped audio\n * add fruits + levels\n * fix what happens when a ghost is eaten (should go back to base)\n * do proper ghost mechanics (blinky\/wimpy etc)\n *\/\n\nvar NONE        = 4,\n    UP          = 3,\n    LEFT        = 2,\n    DOWN        = 1,\n    RIGHT       = 11,\n    WAITING     = 5,\n    PAUSE       = 6,\n    PLAYING     = 7,\n    COUNTDOWN   = 8,\n    EATEN_PAUSE = 9,\n    DYING       = 10,\n    Pacman      = {};\n\nPacman.FPS = 30;\n\nPacman.Ghost = function (game, map, colour) {\n\n    var position  = null,\n        direction = null,\n        eatable   = null,\n        eaten     = null,\n        due       = null;\n    \n    function getNewCoord(dir, current) { \n        \n        var speed  = isVunerable() ? 1 : isHidden() ? 4 : 2,\n            xSpeed = (dir === LEFT &amp;&amp; -speed || dir === RIGHT &amp;&amp; speed || 0),\n            ySpeed = (dir === DOWN &amp;&amp; speed || dir === UP &amp;&amp; -speed || 0);\n    \n        return {\n            \"x\": addBounded(current.x, xSpeed),\n            \"y\": addBounded(current.y, ySpeed)\n        };\n    };\n\n    \/* Collision detection(walls) is done when a ghost lands on an\n     * exact block, make sure they dont skip over it \n     *\/\n    function addBounded(x1, x2) { \n        var rem    = x1 % 10, \n            result = rem + x2;\n        if (rem !== 0 &amp;&amp; result &gt; 10) {\n            return x1 + (10 - rem);\n        } else if(rem &gt; 0 &amp;&amp; result  5) { \n                return game.getTick() % 20 &gt; 10 ? \"#FFFFFF\" : \"#0000BB\";\n            } else { \n                return \"#0000BB\";\n            }\n        } else if(eaten) { \n            return \"#222\";\n        } \n        return colour;\n    };\n\n    function draw(ctx) {\n  \n        var s    = map.blockSize, \n            top  = (position.y\/10) * s,\n            left = (position.x\/10) * s;\n    \n        if (eatable &amp;&amp; secondsAgo(eatable) &gt; 8) {\n            eatable = null;\n        }\n        \n        if (eaten &amp;&amp; secondsAgo(eaten) &gt; 3) { \n            eaten = null;\n        }\n        \n        var tl = left + s;\n        var base = top + s - 3;\n        var inc = s \/ 10;\n\n        var high = game.getTick() % 10 &gt; 5 ? 3  : -3;\n        var low  = game.getTick() % 10 &gt; 5 ? -3 : 3;\n\n        ctx.fillStyle = getColour();\n        ctx.beginPath();\n\n        ctx.moveTo(left, base);\n\n        ctx.quadraticCurveTo(left, top, left + (s\/2),  top);\n        ctx.quadraticCurveTo(left + s, top, left+s,  base);\n        \n        \/\/ Wavy things at the bottom\n        ctx.quadraticCurveTo(tl-(inc*1), base+high, tl - (inc * 2),  base);\n        ctx.quadraticCurveTo(tl-(inc*3), base+low, tl - (inc * 4),  base);\n        ctx.quadraticCurveTo(tl-(inc*5), base+high, tl - (inc * 6),  base);\n        ctx.quadraticCurveTo(tl-(inc*7), base+low, tl - (inc * 8),  base); \n        ctx.quadraticCurveTo(tl-(inc*9), base+high, tl - (inc * 10), base); \n\n        ctx.closePath();\n        ctx.fill();\n\n        ctx.beginPath();\n        ctx.fillStyle = \"#FFF\";\n        ctx.arc(left + 6,top + 6, s \/ 6, 0, 300, false);\n        ctx.arc((left + s) - 6,top + 6, s \/ 6, 0, 300, false);\n        ctx.closePath();\n        ctx.fill();\n\n        var f = s \/ 12;\n        var off = {};\n        off[RIGHT] = [f, 0];\n        off[LEFT]  = [-f, 0];\n        off[UP]    = [0, -f];\n        off[DOWN]  = [0, f];\n\n        ctx.beginPath();\n        ctx.fillStyle = \"#000\";\n        ctx.arc(left+6+off[direction][0], top+6+off[direction][1], \n                s \/ 15, 0, 300, false);\n        ctx.arc((left+s)-6+off[direction][0], top+6+off[direction][1], \n                s \/ 15, 0, 300, false);\n        ctx.closePath();\n        ctx.fill();\n\n    };\n\n    function pane(pos) {\n\n        if (pos.y === 100 &amp;&amp; pos.x &gt;= 190 &amp;&amp; direction === RIGHT) {\n            return {\"y\": 100, \"x\": -10};\n        }\n        \n        if (pos.y === 100 &amp;&amp; pos.x = 10000 &amp;&amp; score - nScore = 190 &amp;&amp; direction === RIGHT) {\n            npos = {\"y\": 100, \"x\": -10};\n        }\n        \n        if (npos.y === 100 &amp;&amp; npos.x  3 || rem &lt; 7;\n    };\n\n    function calcAngle(dir, pos) { \n        if (dir == RIGHT &amp;&amp; (pos.x % 10 &lt; 5)) {\n            return {&quot;start&quot;:0.25, &quot;end&quot;:1.75, &quot;direction&quot;: false};\n        } else if (dir === DOWN &amp;&amp; (pos.y % 10 &lt; 5)) { \n            return {&quot;start&quot;:0.75, &quot;end&quot;:2.25, &quot;direction&quot;: false};\n        } else if (dir === UP &amp;&amp; (pos.y % 10 &lt; 5)) { \n            return {&quot;start&quot;:1.25, &quot;end&quot;:1.75, &quot;direction&quot;: true};\n        } else if (dir === LEFT &amp;&amp; (pos.x % 10 = 1) { \n            return;\n        }\n\n        ctx.fillStyle = \"#FFFF00\";\n        ctx.beginPath();        \n        ctx.moveTo(((position.x\/10) * size) + half, \n                   ((position.y\/10) * size) + half);\n        \n        ctx.arc(((position.x\/10) * size) + half, \n                ((position.y\/10) * size) + half,\n                half, 0, Math.PI * 2 * amount, true); \n        \n        ctx.fill();    \n    };\n\n    function draw(ctx) { \n\n        var s     = map.blockSize, \n            angle = calcAngle(direction, position);\n\n        ctx.fillStyle = \"#FFFF00\";\n\n        ctx.beginPath();        \n\n        ctx.moveTo(((position.x\/10) * s) + s \/ 2,\n                   ((position.y\/10) * s) + s \/ 2);\n        \n        ctx.arc(((position.x\/10) * s) + s \/ 2,\n                ((position.y\/10) * s) + s \/ 2,\n                s \/ 2, Math.PI * angle.start, \n                Math.PI * angle.end, angle.direction); \n        \n        ctx.fill();    \n    };\n    \n    initUser();\n\n    return {\n        \"draw\"          : draw,\n        \"drawDead\"      : drawDead,\n        \"loseLife\"      : loseLife,\n        \"getLives\"      : getLives,\n        \"score\"         : score,\n        \"addScore\"      : addScore,\n        \"theScore\"      : theScore,\n        \"keyDown\"       : keyDown,\n        \"move\"          : move,\n        \"newLevel\"      : newLevel,\n        \"reset\"         : reset,\n        \"resetPosition\" : resetPosition\n    };\n};\n\nPacman.Map = function (size) {\n    \n    var height    = null, \n        width     = null, \n        blockSize = size,\n        pillSize  = 0,\n        map       = null;\n    \n    function withinBounds(y, x) {\n        return y &gt;= 0 &amp;&amp; y = 0 &amp;&amp; x &lt; width;\n    }\n    \n    function isWall(pos) {\n        return withinBounds(pos.y, pos.x) &amp;&amp; map[pos.y][pos.x] === Pacman.WALL;\n    }\n    \n    function isFloorSpace(pos) {\n        if (!withinBounds(pos.y, pos.x)) {\n            return false;\n        }\n        var peice = map[pos.y][pos.x];\n        return peice === Pacman.EMPTY || \n            peice === Pacman.BISCUIT ||\n            peice === Pacman.PILL;\n    }\n    \n    function drawWall(ctx) {\n\n        var i, j, p, line;\n        \n        ctx.strokeStyle = &quot;#0000FF&quot;;\n        ctx.lineWidth   = 5;\n        ctx.lineCap     = &quot;round&quot;;\n        \n        for (i = 0; i &lt; Pacman.WALLS.length; i += 1) {\n            line = Pacman.WALLS[i];\n            ctx.beginPath();\n\n            for (j = 0; j  30) {\n            pillSize = 0;\n        }\n        \n        for (i = 0; i &lt; height; i += 1) {\n\t\t    for (j = 0; j &lt; width; j += 1) {\n                if (map[i][j] === Pacman.PILL) {\n                    ctx.beginPath();\n\n                    ctx.fillStyle = &quot;#000&quot;;\n\t\t            ctx.fillRect((j * blockSize), (i * blockSize), \n                                 blockSize, blockSize);\n\n                    ctx.fillStyle = &quot;#FFF&quot;;\n                    ctx.arc((j * blockSize) + blockSize \/ 2,\n                            (i * blockSize) + blockSize \/ 2,\n                            Math.abs(5 - (pillSize\/3)), \n                            0, \n                            Math.PI * 2, false); \n                    ctx.fill();\n                    ctx.closePath();\n                }\n\t\t    }\n\t    }\n    };\n    \n    function draw(ctx) {\n        \n        var i, j, size = blockSize;\n\n        ctx.fillStyle = &quot;#000&quot;;\n\t    ctx.fillRect(0, 0, width * size, height * size);\n\n        drawWall(ctx);\n        \n        for (i = 0; i &lt; height; i += 1) {\n\t\t    for (j = 0; j &lt; width; j += 1) {\n\t\t\t    drawBlock(i, j, ctx);\n\t\t    }\n\t    }\n    };\n    \n    function drawBlock(y, x, ctx) {\n\n        var layout = map[y][x];\n\n        if (layout === Pacman.PILL) {\n            return;\n        }\n\n        ctx.beginPath();\n        \n        if (layout === Pacman.EMPTY || layout === Pacman.BLOCK || \n            layout === Pacman.BISCUIT) {\n            \n            ctx.fillStyle = &quot;#000&quot;;\n\t\t    ctx.fillRect((x * blockSize), (y * blockSize), \n                         blockSize, blockSize);\n\n            if (layout === Pacman.BISCUIT) {\n                ctx.fillStyle = &quot;#FFF&quot;;\n\t\t        ctx.fillRect((x * blockSize) + (blockSize \/ 2.5), \n                             (y * blockSize) + (blockSize \/ 2.5), \n                             blockSize \/ 6, blockSize \/ 6);\n\t        }\n        }\n        ctx.closePath();\t \n    };\n\n    reset();\n    \n    return {\n        &quot;draw&quot;         : draw,\n        &quot;drawBlock&quot;    : drawBlock,\n        &quot;drawPills&quot;    : drawPills,\n        &quot;block&quot;        : block,\n        &quot;setBlock&quot;     : setBlock,\n        &quot;reset&quot;        : reset,\n        &quot;isWallSpace&quot;  : isWall,\n        &quot;isFloorSpace&quot; : isFloorSpace,\n        &quot;height&quot;       : height,\n        &quot;width&quot;        : width,\n        &quot;blockSize&quot;    : blockSize\n    };\n};\n\nPacman.Audio = function(game) {\n    \n    var files          = [], \n        endEvents      = [],\n        progressEvents = [],\n        playing        = [];\n    \n    function load(name, path, cb) { \n\n        var f = files[name] = document.createElement(&quot;audio&quot;);\n\n        progressEvents[name] = function(event) { progress(event, name, cb); };\n        \n        f.addEventListener(&quot;canplaythrough&quot;, progressEvents[name], true);\n        f.setAttribute(&quot;preload&quot;, &quot;true&quot;);\n        f.setAttribute(&quot;autobuffer&quot;, &quot;true&quot;);\n        f.setAttribute(&quot;src&quot;, path);\n        f.pause();        \n    };\n\n    function progress(event, name, callback) { \n        if (event.loaded === event.total &amp;&amp; typeof callback === &quot;function&quot;) {\n            callback();\n            files[name].removeEventListener(&quot;canplaythrough&quot;, \n                                            progressEvents[name], true);\n        }\n    };\n\n    function disableSound() {\n        for (var i = 0; i &lt; playing.length; i++) {\n            files[playing[i]].pause();\n            files[playing[i]].currentTime = 0;\n        }\n        playing = [];\n    };\n\n    function ended(name) { \n\n        var i, tmp = [], found = false;\n\n        files[name].removeEventListener(&quot;ended&quot;, endEvents[name], true);\n\n        for (i = 0; i &lt; playing.length; i++) {\n            if (!found &amp;&amp; playing[i]) { \n                found = true;\n            } else { \n                tmp.push(playing[i]);\n            }\n        }\n        playing = tmp;\n    };\n\n    function play(name) { \n        if (!game.soundDisabled()) {\n            endEvents[name] = function() { ended(name); };\n            playing.push(name);\n            files[name].addEventListener(&quot;ended&quot;, endEvents[name], true);\n            files[name].play();\n        }\n    };\n\n    function pause() { \n        for (var i = 0; i &lt; playing.length; i++) {\n            files[playing[i]].pause();\n        }\n    };\n    \n    function resume() { \n        for (var i = 0; i &lt; playing.length; i++) {\n            files[playing[i]].play();\n        }        \n    };\n    \n    return {\n        &quot;disableSound&quot; : disableSound,\n        &quot;load&quot;         : load,\n        &quot;play&quot;         : play,\n        &quot;pause&quot;        : pause,\n        &quot;resume&quot;       : resume\n    };\n};\n\nvar PACMAN = (function () {\n\n    var state        = WAITING,\n        audio        = null,\n        ghosts       = [],\n        ghostSpecs   = [&quot;#00FFDE&quot;, &quot;#FF0000&quot;, &quot;#FFB8DE&quot;, &quot;#FFB847&quot;],\n        eatenCount   = 0,\n        level        = 0,\n        tick         = 0,\n        ghostPos, userPos, \n        stateChanged = true,\n        timerStart   = null,\n        lastTime     = 0,\n        ctx          = null,\n        timer        = null,\n        map          = null,\n        user         = null,\n        stored       = null;\n\n    function getTick() { \n        return tick;\n    };\n\n    function drawScore(text, position) {\n        ctx.fillStyle = &quot;#FFFFFF&quot;;\n        ctx.font      = &quot;12px BDCartoonShoutRegular&quot;;\n        ctx.fillText(text, \n                     (position[&quot;new&quot;][&quot;x&quot;] \/ 10) * map.blockSize, \n                     ((position[&quot;new&quot;][&quot;y&quot;] + 5) \/ 10) * map.blockSize);\n    }\n    \n    function dialog(text) {\n        ctx.fillStyle = &quot;#FFFF00&quot;;\n        ctx.font      = &quot;18px Calibri&quot;;\n        var width = ctx.measureText(text).width,\n            x     = ((map.width * map.blockSize) - width) \/ 2;        \n        ctx.fillText(text, x, (map.height * 10) + 8);\n    }\n\n    function soundDisabled() {\n        return localStorage[&quot;soundDisabled&quot;] === &quot;true&quot;;\n    };\n    \n    function startLevel() {        \n        user.resetPosition();\n        for (var i = 0; i  0) {\n            startLevel();\n        }\n    }\n\n    function setState(nState) { \n        state = nState;\n        stateChanged = true;\n    };\n    \n    function collided(user, ghost) {\n        return (Math.sqrt(Math.pow(ghost.x - user.x, 2) + \n                          Math.pow(ghost.y - user.y, 2))) &lt; 10;\n    };\n\n    function drawFooter() {\n        \n        var topLeft  = (map.height * map.blockSize),\n            textBase = topLeft + 17;\n        \n        ctx.fillStyle = &quot;#000000&quot;;\n        ctx.fillRect(0, topLeft, (map.width * map.blockSize), 30);\n        \n        ctx.fillStyle = &quot;#FFFF00&quot;;\n\n        for (var i = 0, len = user.getLives(); i &lt; len; i++) {\n            ctx.fillStyle = &quot;#FFFF00&quot;;\n            ctx.beginPath();\n            ctx.moveTo(150 + (25 * i) + map.blockSize \/ 2,\n                       (topLeft+1) + map.blockSize \/ 2);\n            \n            ctx.arc(150 + (25 * i) + map.blockSize \/ 2,\n                    (topLeft+1) + map.blockSize \/ 2,\n                    map.blockSize \/ 2, Math.PI * 0.25, Math.PI * 1.75, false);\n            ctx.fill();\n        }\n\n        ctx.fillStyle = !soundDisabled() ? &quot;#00FF00&quot; : &quot;#FF0000&quot;;\n        ctx.font = &quot;bold 16px sans-serif&quot;;\n        \/\/ctx.fillText(&quot;\u266a&quot;, 10, textBase);\n        ctx.fillText(&quot;s&quot;, 10, textBase);\n\n        ctx.fillStyle = &quot;#FFFF00&quot;;\n        ctx.font      = &quot;14px Calibri&quot;;\n        ctx.fillText(&quot;Score: &quot; + user.theScore(), 30, textBase);\n        ctx.fillText(&quot;Level: &quot; + level, 260, textBase);\n    }\n\n    function redrawBlock(pos) {\n        map.drawBlock(Math.floor(pos.y\/10), Math.floor(pos.x\/10), ctx);\n        map.drawBlock(Math.ceil(pos.y\/10), Math.ceil(pos.x\/10), ctx);\n    }\n\n    function mainDraw() { \n\n        var diff, u, i, len, nScore;\n        \n        ghostPos = [];\n\n        for (i = 0, len = ghosts.length; i &lt; len; i += 1) {\n            ghostPos.push(ghosts[i].move(ctx));\n        }\n        u = user.move(ctx);\n        \n        for (i = 0, len = ghosts.length; i &lt; len; i += 1) {\n            redrawBlock(ghostPos[i].old);\n        }\n        redrawBlock(u.old);\n        \n        for (i = 0, len = ghosts.length; i &lt; len; i += 1) {\n            ghosts[i].draw(ctx);\n        }                     \n        user.draw(ctx);\n        \n        userPos = u[&quot;new&quot;];\n        \n        for (i = 0, len = ghosts.length; i  (Pacman.FPS \/ 3)) {\n            map.draw(ctx);\n            setState(PLAYING);\n        } else if (state === DYING) {\n            if (tick - timerStart &gt; (Pacman.FPS * 2)) { \n                loseLife();\n            } else { \n                redrawBlock(userPos);\n                for (i = 0, len = ghosts.length; i &lt; len; i += 1) {\n                    redrawBlock(ghostPos[i].old);\n                    ghostPos.push(ghosts[i].draw(ctx));\n                }                                   \n                user.drawDead(ctx, (tick - timerStart) \/ (Pacman.FPS * 2));\n            }\n        } else if (state === COUNTDOWN) {\n            \n            diff = 5 + Math.floor((timerStart - tick) \/ Pacman.FPS);\n            \n            if (diff === 0) {\n                map.draw(ctx);\n                setState(PLAYING);\n            } else {\n                if (diff !== lastTime) { \n                    lastTime = diff;\n                    map.draw(ctx);\n                    dialog(&quot;Starting in: &quot; + diff);\n                }\n            }\n        } \n\n        drawFooter();\n    }\n\n    function eatenPill() {\n        audio.play(&quot;eatpill&quot;);\n        timerStart = tick;\n        eatenCount = 0;\n        for (i = 0; i &lt; ghosts.length; i += 1) {\n            ghosts[i].makeEatable(ctx);\n        }        \n    };\n    \n    function completedLevel() {\n        setState(WAITING);\n        level += 1;\n        map.reset();\n        user.newLevel();\n        startLevel();\n    };\n\n    function keyPress(e) { \n        if (state !== WAITING &amp;&amp; state !== PAUSE) { \n            e.preventDefault();\n            e.stopPropagation();\n        }\n    };\n    \n    function init(wrapper, root) {\n        \n        var i, len, ghost,\n            blockSize = wrapper.offsetWidth \/ 19,\n            canvas    = document.createElement(&quot;canvas&quot;);\n        \n        canvas.setAttribute(&quot;width&quot;, (blockSize * 19) + &quot;px&quot;);\n        canvas.setAttribute(&quot;height&quot;, (blockSize * 22) + 30 + &quot;px&quot;);\n\n        wrapper.appendChild(canvas);\n\n        ctx  = canvas.getContext(&#039;2d&#039;);\n\n        audio = new Pacman.Audio({&quot;soundDisabled&quot;:soundDisabled});\n        map   = new Pacman.Map(blockSize);\n        user  = new Pacman.User({ \n            &quot;completedLevel&quot; : completedLevel, \n            &quot;eatenPill&quot;      : eatenPill \n        }, map);\n\n        for (i = 0, len = ghostSpecs.length; i &lt; len; i += 1) {\n            ghost = new Pacman.Ghost({&quot;getTick&quot;:getTick}, map, ghostSpecs[i]);\n            ghosts.push(ghost);\n        }\n        \n        map.draw(ctx);\n        dialog(&quot;Loading ...&quot;);\n\n        var extension = Modernizr.audio.ogg ? &#039;ogg&#039; : &#039;mp3&#039;;\n\n        var audio_files = [\n            [&quot;start&quot;, root + &quot;audio\/opening_song.&quot; + extension],\n            [&quot;die&quot;, root + &quot;audio\/die.&quot; + extension],\n            [&quot;eatghost&quot;, root + &quot;audio\/eatghost.&quot; + extension],\n            [&quot;eatpill&quot;, root + &quot;audio\/eatpill.&quot; + extension],\n            [&quot;eating&quot;, root + &quot;audio\/eating.short.&quot; + extension],\n            [&quot;eating2&quot;, root + &quot;audio\/eating.short.&quot; + extension]\n        ];\n\n        load(audio_files, function() { loaded(); });\n    };\n\n    function load(arr, callback) { \n        \n        if (arr.length === 0) { \n            callback();\n        } else { \n            var x = arr.pop();\n            audio.load(x[0], x[1], function() { load(arr, callback); });\n        }\n    };\n        \n    function loaded() {\n\n        dialog(&quot;Press N to Start&quot;);\n        \n        document.addEventListener(&quot;keydown&quot;, keyDown, true);\n        document.addEventListener(&quot;keypress&quot;, keyPress, true); \n        \n        timer = window.setInterval(mainLoop, 1000 \/ Pacman.FPS);\n    };\n    \n    return {\n        &quot;init&quot; : init\n    };\n    \n}());\n\n\/* Human readable keyCode index *\/\nvar KEY = {&#039;BACKSPACE&#039;: 8, &#039;TAB&#039;: 9, &#039;NUM_PAD_CLEAR&#039;: 12, &#039;ENTER&#039;: 13, &#039;SHIFT&#039;: 16, &#039;CTRL&#039;: 17, &#039;ALT&#039;: 18, &#039;PAUSE&#039;: 19, &#039;CAPS_LOCK&#039;: 20, &#039;ESCAPE&#039;: 27, &#039;SPACEBAR&#039;: 32, &#039;PAGE_UP&#039;: 33, &#039;PAGE_DOWN&#039;: 34, &#039;END&#039;: 35, &#039;HOME&#039;: 36, &#039;ARROW_LEFT&#039;: 37, &#039;ARROW_UP&#039;: 38, &#039;ARROW_RIGHT&#039;: 39, &#039;ARROW_DOWN&#039;: 40, &#039;PRINT_SCREEN&#039;: 44, &#039;INSERT&#039;: 45, &#039;DELETE&#039;: 46, &#039;SEMICOLON&#039;: 59, &#039;WINDOWS_LEFT&#039;: 91, &#039;WINDOWS_RIGHT&#039;: 92, &#039;SELECT&#039;: 93, &#039;NUM_PAD_ASTERISK&#039;: 106, &#039;NUM_PAD_PLUS_SIGN&#039;: 107, &#039;NUM_PAD_HYPHEN-MINUS&#039;: 109, &#039;NUM_PAD_FULL_STOP&#039;: 110, &#039;NUM_PAD_SOLIDUS&#039;: 111, &#039;NUM_LOCK&#039;: 144, &#039;SCROLL_LOCK&#039;: 145, &#039;SEMICOLON&#039;: 186, &#039;EQUALS_SIGN&#039;: 187, &#039;COMMA&#039;: 188, &#039;HYPHEN-MINUS&#039;: 189, &#039;FULL_STOP&#039;: 190, &#039;SOLIDUS&#039;: 191, &#039;GRAVE_ACCENT&#039;: 192, &#039;LEFT_SQUARE_BRACKET&#039;: 219, &#039;REVERSE_SOLIDUS&#039;: 220, &#039;RIGHT_SQUARE_BRACKET&#039;: 221, &#039;APOSTROPHE&#039;: 222};\n\n(function () {\n\t\/* 0 - 9 *\/\n\tfor (var i = 48; i &lt;= 57; i++) {\n        KEY[&#039;&#039; + (i - 48)] = i;\n\t}\n\t\/* A - Z *\/\n\tfor (i = 65; i &lt;= 90; i++) {\n        KEY[&#039;&#039; + String.fromCharCode(i)] = i;\n\t}\n\t\/* NUM_PAD_0 - NUM_PAD_9 *\/\n\tfor (i = 96; i &lt;= 105; i++) {\n        KEY[&#039;NUM_PAD_&#039; + (i - 96)] = i;\n\t}\n\t\/* F1 - F12 *\/\n\tfor (i = 112; i &lt;= 123; i++) {\n        KEY[&#039;F&#039; + (i - 112 + 1)] = i;\n\t}\n})();\n\nPacman.WALL    = 0;\nPacman.BISCUIT = 1;\nPacman.EMPTY   = 2;\nPacman.BLOCK   = 3;\nPacman.PILL    = 4;\n\nPacman.MAP = [\n    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n\t[0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0],\n\t[0, 4, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 4, 0],\n\t[0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0],\n\t[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],\n\t[0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0],\n\t[0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0],\n\t[0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],\n\t[2, 2, 2, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 2, 2, 2],\n\t[0, 0, 0, 0, 1, 0, 1, 0, 0, 3, 0, 0, 1, 0, 1, 0, 0, 0, 0],\n\t[2, 2, 2, 2, 1, 1, 1, 0, 3, 3, 3, 0, 1, 1, 1, 2, 2, 2, 2],\n\t[0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0],\n\t[2, 2, 2, 0, 1, 0, 1, 1, 1, 2, 1, 1, 1, 0, 1, 0, 2, 2, 2],\n\t[0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0],\n\t[0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0],\n\t[0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0],\n\t[0, 4, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 4, 0],\n\t[0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0],\n\t[0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0],\n\t[0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0],\n\t[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],\n\t[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n];\n\nPacman.WALLS = [\n    \n    [{&quot;move&quot;: [0, 9.5]}, {&quot;line&quot;: [3, 9.5]},\n     {&quot;curve&quot;: [3.5, 9.5, 3.5, 9]}, {&quot;line&quot;: [3.5, 8]},\n     {&quot;curve&quot;: [3.5, 7.5, 3, 7.5]}, {&quot;line&quot;: [1, 7.5]},\n     {&quot;curve&quot;: [0.5, 7.5, 0.5, 7]}, {&quot;line&quot;: [0.5, 1]},\n     {&quot;curve&quot;: [0.5, 0.5, 1, 0.5]}, {&quot;line&quot;: [9, 0.5]},\n     {&quot;curve&quot;: [9.5, 0.5, 9.5, 1]}, {&quot;line&quot;: [9.5, 3.5]}],\n\n    [{&quot;move&quot;: [9.5, 1]},\n     {&quot;curve&quot;: [9.5, 0.5, 10, 0.5]}, {&quot;line&quot;: [18, 0.5]},\n     {&quot;curve&quot;: [18.5, 0.5, 18.5, 1]}, {&quot;line&quot;: [18.5, 7]},\n     {&quot;curve&quot;: [18.5, 7.5, 18, 7.5]}, {&quot;line&quot;: [16, 7.5]},\n     {&quot;curve&quot;: [15.5, 7.5, 15.5, 8]}, {&quot;line&quot;: [15.5, 9]},\n     {&quot;curve&quot;: [15.5, 9.5, 16, 9.5]}, {&quot;line&quot;: [19, 9.5]}],\n\n    [{&quot;move&quot;: [2.5, 5.5]}, {&quot;line&quot;: [3.5, 5.5]}],\n\n    [{&quot;move&quot;: [3, 2.5]},\n     {&quot;curve&quot;: [3.5, 2.5, 3.5, 3]},\n     {&quot;curve&quot;: [3.5, 3.5, 3, 3.5]},\n     {&quot;curve&quot;: [2.5, 3.5, 2.5, 3]},\n     {&quot;curve&quot;: [2.5, 2.5, 3, 2.5]}],\n\n    [{&quot;move&quot;: [15.5, 5.5]}, {&quot;line&quot;: [16.5, 5.5]}],\n\n    [{&quot;move&quot;: [16, 2.5]}, {&quot;curve&quot;: [16.5, 2.5, 16.5, 3]},\n     {&quot;curve&quot;: [16.5, 3.5, 16, 3.5]}, {&quot;curve&quot;: [15.5, 3.5, 15.5, 3]},\n     {&quot;curve&quot;: [15.5, 2.5, 16, 2.5]}],\n\n    [{&quot;move&quot;: [6, 2.5]}, {&quot;line&quot;: [7, 2.5]}, {&quot;curve&quot;: [7.5, 2.5, 7.5, 3]},\n     {&quot;curve&quot;: [7.5, 3.5, 7, 3.5]}, {&quot;line&quot;: [6, 3.5]},\n     {&quot;curve&quot;: [5.5, 3.5, 5.5, 3]}, {&quot;curve&quot;: [5.5, 2.5, 6, 2.5]}],\n\n    [{&quot;move&quot;: [12, 2.5]}, {&quot;line&quot;: [13, 2.5]}, {&quot;curve&quot;: [13.5, 2.5, 13.5, 3]},\n     {&quot;curve&quot;: [13.5, 3.5, 13, 3.5]}, {&quot;line&quot;: [12, 3.5]},\n     {&quot;curve&quot;: [11.5, 3.5, 11.5, 3]}, {&quot;curve&quot;: [11.5, 2.5, 12, 2.5]}],\n\n    [{&quot;move&quot;: [7.5, 5.5]}, {&quot;line&quot;: [9, 5.5]}, {&quot;curve&quot;: [9.5, 5.5, 9.5, 6]},\n     {&quot;line&quot;: [9.5, 7.5]}],\n    [{&quot;move&quot;: [9.5, 6]}, {&quot;curve&quot;: [9.5, 5.5, 10.5, 5.5]},\n     {&quot;line&quot;: [11.5, 5.5]}],\n\n\n    [{&quot;move&quot;: [5.5, 5.5]}, {&quot;line&quot;: [5.5, 7]}, {&quot;curve&quot;: [5.5, 7.5, 6, 7.5]},\n     {&quot;line&quot;: [7.5, 7.5]}],\n    [{&quot;move&quot;: [6, 7.5]}, {&quot;curve&quot;: [5.5, 7.5, 5.5, 8]}, {&quot;line&quot;: [5.5, 9.5]}],\n\n    [{&quot;move&quot;: [13.5, 5.5]}, {&quot;line&quot;: [13.5, 7]},\n     {&quot;curve&quot;: [13.5, 7.5, 13, 7.5]}, {&quot;line&quot;: [11.5, 7.5]}],\n    [{&quot;move&quot;: [13, 7.5]}, {&quot;curve&quot;: [13.5, 7.5, 13.5, 8]},\n     {&quot;line&quot;: [13.5, 9.5]}],\n\n    [{&quot;move&quot;: [0, 11.5]}, {&quot;line&quot;: [3, 11.5]}, {&quot;curve&quot;: [3.5, 11.5, 3.5, 12]},\n     {&quot;line&quot;: [3.5, 13]}, {&quot;curve&quot;: [3.5, 13.5, 3, 13.5]}, {&quot;line&quot;: [1, 13.5]},\n     {&quot;curve&quot;: [0.5, 13.5, 0.5, 14]}, {&quot;line&quot;: [0.5, 17]},\n     {&quot;curve&quot;: [0.5, 17.5, 1, 17.5]}, {&quot;line&quot;: [1.5, 17.5]}],\n    [{&quot;move&quot;: [1, 17.5]}, {&quot;curve&quot;: [0.5, 17.5, 0.5, 18]}, {&quot;line&quot;: [0.5, 21]},\n     {&quot;curve&quot;: [0.5, 21.5, 1, 21.5]}, {&quot;line&quot;: [18, 21.5]},\n     {&quot;curve&quot;: [18.5, 21.5, 18.5, 21]}, {&quot;line&quot;: [18.5, 18]},\n     {&quot;curve&quot;: [18.5, 17.5, 18, 17.5]}, {&quot;line&quot;: [17.5, 17.5]}],\n    [{&quot;move&quot;: [18, 17.5]}, {&quot;curve&quot;: [18.5, 17.5, 18.5, 17]},\n     {&quot;line&quot;: [18.5, 14]}, {&quot;curve&quot;: [18.5, 13.5, 18, 13.5]},\n     {&quot;line&quot;: [16, 13.5]}, {&quot;curve&quot;: [15.5, 13.5, 15.5, 13]},\n     {&quot;line&quot;: [15.5, 12]}, {&quot;curve&quot;: [15.5, 11.5, 16, 11.5]},\n     {&quot;line&quot;: [19, 11.5]}],\n\n    [{&quot;move&quot;: [5.5, 11.5]}, {&quot;line&quot;: [5.5, 13.5]}],\n    [{&quot;move&quot;: [13.5, 11.5]}, {&quot;line&quot;: [13.5, 13.5]}],\n\n    [{&quot;move&quot;: [2.5, 15.5]}, {&quot;line&quot;: [3, 15.5]},\n     {&quot;curve&quot;: [3.5, 15.5, 3.5, 16]}, {&quot;line&quot;: [3.5, 17.5]}],\n    [{&quot;move&quot;: [16.5, 15.5]}, {&quot;line&quot;: [16, 15.5]},\n     {&quot;curve&quot;: [15.5, 15.5, 15.5, 16]}, {&quot;line&quot;: [15.5, 17.5]}],\n\n    [{&quot;move&quot;: [5.5, 15.5]}, {&quot;line&quot;: [7.5, 15.5]}],\n    [{&quot;move&quot;: [11.5, 15.5]}, {&quot;line&quot;: [13.5, 15.5]}],\n    \n    [{&quot;move&quot;: [2.5, 19.5]}, {&quot;line&quot;: [5, 19.5]},\n     {&quot;curve&quot;: [5.5, 19.5, 5.5, 19]}, {&quot;line&quot;: [5.5, 17.5]}],\n    [{&quot;move&quot;: [5.5, 19]}, {&quot;curve&quot;: [5.5, 19.5, 6, 19.5]},\n     {&quot;line&quot;: [7.5, 19.5]}],\n\n    [{&quot;move&quot;: [11.5, 19.5]}, {&quot;line&quot;: [13, 19.5]},\n     {&quot;curve&quot;: [13.5, 19.5, 13.5, 19]}, {&quot;line&quot;: [13.5, 17.5]}],\n    [{&quot;move&quot;: [13.5, 19]}, {&quot;curve&quot;: [13.5, 19.5, 14, 19.5]},\n     {&quot;line&quot;: [16.5, 19.5]}],\n\n    [{&quot;move&quot;: [7.5, 13.5]}, {&quot;line&quot;: [9, 13.5]},\n     {&quot;curve&quot;: [9.5, 13.5, 9.5, 14]}, {&quot;line&quot;: [9.5, 15.5]}],\n    [{&quot;move&quot;: [9.5, 14]}, {&quot;curve&quot;: [9.5, 13.5, 10, 13.5]},\n     {&quot;line&quot;: [11.5, 13.5]}],\n\n    [{&quot;move&quot;: [7.5, 17.5]}, {&quot;line&quot;: [9, 17.5]},\n     {&quot;curve&quot;: [9.5, 17.5, 9.5, 18]}, {&quot;line&quot;: [9.5, 19.5]}],\n    [{&quot;move&quot;: [9.5, 18]}, {&quot;curve&quot;: [9.5, 17.5, 10, 17.5]},\n     {&quot;line&quot;: [11.5, 17.5]}],\n\n    [{&quot;move&quot;: [8.5, 9.5]}, {&quot;line&quot;: [8, 9.5]}, {&quot;curve&quot;: [7.5, 9.5, 7.5, 10]},\n     {&quot;line&quot;: [7.5, 11]}, {&quot;curve&quot;: [7.5, 11.5, 8, 11.5]},\n     {&quot;line&quot;: [11, 11.5]}, {&quot;curve&quot;: [11.5, 11.5, 11.5, 11]},\n     {&quot;line&quot;: [11.5, 10]}, {&quot;curve&quot;: [11.5, 9.5, 11, 9.5]},\n     {&quot;line&quot;: [10.5, 9.5]}]\n];\n\nObject.prototype.clone = function () {\n    var i, newObj = (this instanceof Array) ? [] : {};\n    for (i in this) {\n        if (i === &#039;clone&#039;) {\n            continue;\n        }\n        if (this[i] &amp;&amp; typeof this[i] === &quot;object&quot;) {\n            newObj[i] = this[i].clone();\n        } else {\n            newObj[i] = this[i];\n        }\n    }\n    return newObj;\n};\n\n$(function(){\n  var el = document.getElementById(&quot;pacman&quot;);\n\n  if (Modernizr.canvas &amp;&amp; Modernizr.localstorage &amp;&amp; \n      Modernizr.audio &amp;&amp; (Modernizr.audio.ogg || Modernizr.audio.mp3)) {\n    window.setTimeout(function () { PACMAN.init(el, &quot;https:\/\/raw.githubusercontent.com\/daleharvey\/pacman\/master\/&quot;); }, 0);\n  } else { \n    el.innerHTML = &quot;Sorry, needs a decent browser<br \/><small>\" + \n      \"(firefox 3.6+, Chrome 4+, Opera 10+ and Safari 4+)<\/small>\";\n  }\n});\n\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Waiting area Welcome to our waiting area. You may be waiting for us to call you back, or we may already be working behind the scenes on a solution to your problem. To make sure waiting doesn\u2019t feel like wasted time, we\u2019ve added a little distraction: a browser-based homage to a true arcade classic. So [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":41,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-8615","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Waiting area - Merlin EDV<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.merlinedv.de\/en\/waiting-area\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Waiting area - Merlin EDV\" \/>\n<meta property=\"og:description\" content=\"Waiting area Welcome to our waiting area. You may be waiting for us to call you back, or we may already be working behind the scenes on a solution to your problem. To make sure waiting doesn\u2019t feel like wasted time, we\u2019ve added a little distraction: a browser-based homage to a true arcade classic. So [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.merlinedv.de\/en\/waiting-area\/\" \/>\n<meta property=\"og:site_name\" content=\"Merlin EDV\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-14T10:29:30+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/waiting-area\\\/\",\"url\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/waiting-area\\\/\",\"name\":\"Waiting area - Merlin EDV\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/#website\"},\"datePublished\":\"2026-02-05T13:14:25+00:00\",\"dateModified\":\"2026-09-14T10:29:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/waiting-area\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/waiting-area\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/waiting-area\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start\",\"item\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Waiting area\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/\",\"name\":\"Merlin EDV\",\"description\":\"Hard- &amp; Software\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/#organization\",\"name\":\"Merlin EDV\",\"url\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.merlinedv.de\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.merlinedv.de\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/logo.svg\",\"width\":217,\"height\":45,\"caption\":\"Merlin EDV\"},\"image\":{\"@id\":\"https:\\\/\\\/www.merlinedv.de\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Waiting area - Merlin EDV","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.merlinedv.de\/en\/waiting-area\/","og_locale":"en_US","og_type":"article","og_title":"Waiting area - Merlin EDV","og_description":"Waiting area Welcome to our waiting area. You may be waiting for us to call you back, or we may already be working behind the scenes on a solution to your problem. To make sure waiting doesn\u2019t feel like wasted time, we\u2019ve added a little distraction: a browser-based homage to a true arcade classic. So [&hellip;]","og_url":"https:\/\/www.merlinedv.de\/en\/waiting-area\/","og_site_name":"Merlin EDV","article_modified_time":"2026-09-14T10:29:30+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.merlinedv.de\/en\/waiting-area\/","url":"https:\/\/www.merlinedv.de\/en\/waiting-area\/","name":"Waiting area - Merlin EDV","isPartOf":{"@id":"https:\/\/www.merlinedv.de\/en\/#website"},"datePublished":"2026-02-05T13:14:25+00:00","dateModified":"2026-09-14T10:29:30+00:00","breadcrumb":{"@id":"https:\/\/www.merlinedv.de\/en\/waiting-area\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.merlinedv.de\/en\/waiting-area\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.merlinedv.de\/en\/waiting-area\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/www.merlinedv.de\/en\/"},{"@type":"ListItem","position":2,"name":"Waiting area"}]},{"@type":"WebSite","@id":"https:\/\/www.merlinedv.de\/en\/#website","url":"https:\/\/www.merlinedv.de\/en\/","name":"Merlin EDV","description":"Hard- &amp; Software","publisher":{"@id":"https:\/\/www.merlinedv.de\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.merlinedv.de\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.merlinedv.de\/en\/#organization","name":"Merlin EDV","url":"https:\/\/www.merlinedv.de\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.merlinedv.de\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.merlinedv.de\/wp-content\/uploads\/2024\/12\/logo.svg","contentUrl":"https:\/\/www.merlinedv.de\/wp-content\/uploads\/2024\/12\/logo.svg","width":217,"height":45,"caption":"Merlin EDV"},"image":{"@id":"https:\/\/www.merlinedv.de\/en\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.merlinedv.de\/en\/wp-json\/wp\/v2\/pages\/8615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.merlinedv.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.merlinedv.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.merlinedv.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.merlinedv.de\/en\/wp-json\/wp\/v2\/comments?post=8615"}],"version-history":[{"count":3,"href":"https:\/\/www.merlinedv.de\/en\/wp-json\/wp\/v2\/pages\/8615\/revisions"}],"predecessor-version":[{"id":8618,"href":"https:\/\/www.merlinedv.de\/en\/wp-json\/wp\/v2\/pages\/8615\/revisions\/8618"}],"wp:attachment":[{"href":"https:\/\/www.merlinedv.de\/en\/wp-json\/wp\/v2\/media?parent=8615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}