-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
79 lines (72 loc) · 35.1 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
<script
src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"
integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30="
crossorigin="anonymous"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/tabulator/3.5.3/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tabulator/3.5.3/js/tabulator.min.js"></script>
<meta charset="UTF-8">
<title>Yehuda Snake Game</title>
<style>
canvas, div{
padding-left: 0;
padding-right: 0;
margin-left: auto;
margin-right: auto;
display: block;
width: 608px;
}
</style>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="menu">
<h3 style="color: firebrick">Roles: To move the snake, click the arrows keys or click 'w' ,'a' ,'s', 'd'.<br> To pause: click 'p' key. Let's see you break the record ! Enjoy...</h3>
<button id="pauseBtn" style="height: 50px">pause</button>
<button id="viewScores" style="height: 50px">view scores</button>
<button disabled id="downloadScores" style="height: 50px">Download all scores</button>
<button type="button" onClick="window.location.reload()" style="height: 50px">Start new game</button>
<button style="height: 50px" onclick="window.open('https://www.draw.io/?lightbox=1&highlight=0000ff&edit=_blank&layers=1&nav=1&page=3&title=snakeUmlDiagram.xml#R%3Cmxfile%3E%3Cdiagram%20id%3D%226133507b-19e7-1e82-6fc7-422aa6c4b21f%22%20name%3D%22Food%22%3E7V1dc6M2FP01mdk%2BJMM39uM62ex2Zttmmn4%2ByiDb6mJEQU7i%2FvpKIGGERIwTA25HO5m1uUjC6BzdeySEdOXebl8%2B5yDb%2FIBjmFw5Vvxy5d5dOY7tOTP6wSz7yjILvMqwzlHMEx0Mj%2BgfyI0Wt%2B5QDAspIcE4ISiTjRFOUxgRyQbyHD%2FLyVY4ka%2BagTVUDI8RSFTr7ygmG34XvnWwf4FovRFXti1%2BZgtEYm4oNiDGzw2T%2B%2BnKvc0xJtW37cstTFjliXqp8t13nK1%2FWA5TosnwawHzn5Z%2FsTpxrAQsKS5loipbgtJv1fGGEFaVH1lG536NyGa3vInwlh4k6CnFKaLfihR8g5%2FBFtLvywQv6ccWFATm9EuUgKKgn%2FcYxzd%2FFVX54lc6QQhXlhuvIsv23Fl4PQ%2FqW69vqSB7Ud053qUxZJntK3fxvEEEPmYgYmefKcGobUO2CT9dXeoJ5gS%2BdFaK3bjeZ4i3kOR7moRncDk4nJ12WB0%2BH6C2rRlPs2ngPPM5jQHn17ou%2BgABq6XqHsVhAxQ9qsu5t4xsdxaB%2BcyCq2t%2BQ08g2UGBX5DQ3ItMqrjg7x3j0WIL8jVKSzgtK3uh%2F5f1ZFX2a4Kz6pzXOEdrj1yDBK15vojWHUNWlEm%2FrflneWXUMIAtwyRRj75nZawYcsIsZ5FKpDWD2ldZ5opFGB5JDghc7xvZl8ez01RZ29YwHH5auixKooHiF7SFP%2B3Ih%2B%2F0ZTgydxkREfUcH6uqvCsre8Er9i6BK5YL01SrpPQDK8SYsVjhlHC%2FZzv8%2BB5sUcI4%2BQUmT5CVKjP%2F0EwYhrVnYQe06aKIfy%2Bb%2FQJE39Zlhluc4Jyeoo0asmwkx9%2BgMF7RtlD%2Bq88If8cuyH5rI%2BWq%2FHeeJujZvtQG%2FdBSG%2BFc0wbD8OQmqLQ3xT%2FZjtLimGNTwC6e0TYBZT02cCmx5InsBvi8SbkLPUeiDUrir2CPd%2BzWCkIRE0eLDc7RP7RYIK5BT%2BeCME4gpXhkOTn2OSxomgcBg12bvlLHXXMlSUBWoGX9gys%2FscCE0AjA2cXv9L6DApNykWeX2sxvMI9BCjqalu4a52Cx40ksdnUkDlQSO0IvnJfFriZulL5%2Bg4ob4c2KDKTCm2W4QARhHgIeMKK3fXB6zZRKU2DxQ24GMpoCIxW2lm%2FUNw567Qil669lmjvvYPmZ16LXoRQarnaD4himJVkJIKDiu1XeNr3Rsub9Bf2jWNxaN%2F6VT%2B%2Frlh7bh2P6x5LnlEApvT%2BASl5A2pieYUH6kqjD36i02ov0PWkUDMEi71QWFRHOYUWhH3fbZakiDIcm5pDvTMkhX8OhFvi0MwJ14B9x%2BkeQ31K8EniA%2BhfGhLtrW6GDq9LB1cBcBrCH2k3e5VXaFvyTIBzO%2BiE8GwLgQO8kZDGtcxZrSF6PM2oWSYkbhzIR3WaTBqWwD98otx5ZLGKEMcwYjRm2PWmsmfWhRoJB%2FICiDxkgG8OOUdnh9oxTg7DDUcfSvtRDPKZ%2Fb%2Fr3r%2FbvXU8eKQ5Ff7%2FJ5UAzSmXbg5BZHabSuLqyn7bE6a4a4LcW5Vfj8s7o8rpo80r%2FXceSYTyerv9u%2Bl7nRVjXu9YhPETfy9F1ro88yDCNfzRqBJox4PEaf69%2BeQyjnFYDNJ2l8emh60aPRw%2B1r3SHYZESo4mNJu6piX23rYn9foyeO0Mwem4k8WW4vdnlSmLBWCOJB0R4Skns6mZMGUl8KY1%2FUknsqt2lj1lG684IHSN0XhM6YSgLnXpWc4PG9UQeSegMMbnH7dWzK4VOIWZKMq0jnz%2Bq9o0bfIcbrFzNKRpIy59h3KDuCarRQOdFWKOBtAgPooF6PQdl0y9QZPTPqLTQ6J%2FxGr6nauMFjaU0mhoBZATQqyM9njxHf1oB5PV%2F%2BGkE0ER%2B0Dv5ueiIflA3O94IoPMiPKUA8jomrhsBNHnDn1YAqQNAv9PwkG9hQpuPEUFGBL0mglznokSQGQW6fF94waNAnhkFGh7hSUWQGQW61IY%2FrQhS50noJ0EY%2FWP0T1P%2F1EvbXIT%2BESvwvE%2F%2FGOUzkAOcX67y8XVTRIzyOS%2FCUyofcW2jfC6u4U%2BqfHxV%2BbC1fe5BRDAv2ugfo3%2B69E84k%2FWP7fX0ceEQ%2BicwUewM7so%2Fj04ZIooFvaIYe32HQObGPpB9Bql%2Fz3KcFSaqjUkTV30XeLyoFqqO4NMLgWms9uip8SNbE5UeLRPM4siCmoT7DKrD%2B3JZwrLeG2SBL4j8wcy0nqujP3mi6iowVtZRbflV%2BkvwLo%2FgicJBN1M4hwkg6Em%2BoK5SeXF8mRnhyJ3Wu9xu20FXP5TnOkCjFOT5ckH1qm%2BiIBrHD6vctDCu7%2FGNsKvuYVDYgwbs19aN5brc8ABz2oMutc9JfBgFak9Mlq3HLPy3Qe1bE0KtzlcYFGqviTWFmtXuu6A%2B1vTH44Pvn6npt999G5UP6vSG%2F6LH75oqOQDsgVgrtnYDb4V9Ph3ss5E9fht2Cm6%2Br065ji0M7KxNw8FcGAZyEvXq72UFV4m0q2WPIyHar7564dsI5bWY6bcLGpJQI8eVVwgVuM7ohJpdEqG8NqFEn%2BJkQs1kxRMEI3oo3SvY3UzCWdnbOzDHlmnldBEpHCgi6SjR8frVKKRojzgF7WjTlxRz70hBA5JCvOw%2FNCkCez6ubO3FlmqMcByR03Ihfrvl92VLOD9S0JBs6TE3%2ByxsacciDU8a8WnuN8MT7f%2FavjdBfOqY5DOO5Gn1gIP2yvV96eUGRwoakl49lkQ7B72coSKURgV3TI0YhRR2O7B4byVFm13tgoYkhW4qZLXM9Mbu3IVG2Q5H2Qipe3Mb3Y411Na8WouU7x%2B%2B73xAWT%2FP0Q3Py4%2F%2BeD29axaR0woumklEYvMv6RHL6Rsu9VlMWidOOoBmjxYlUMQGSezEdVG6BLakkOOzzZXauyfVT5lpXREKRNrAvSr5NYq0XVSSoKxgmBUbkDFjjHfLBH6q7cNvnRWG8nR44UmPAWlb7iBI6oTDIEgetp%2F6v0ApRpaE7x0VStf3oU3dAgiBCz3f1u551mtDgepZ6M8gjXF68s4C5RZ3CxzvzRYDAzxRPbZ5kuxK7LlmITlhkx6o%2Bifzjx4e9lys1MNh50r3078%3D%3C%2Fdiagram%3E%3Cdiagram%20id%3D%2250ca1547-e1eb-6335-717b-36a0f9b8290b%22%20name%3D%22Game%22%3E7Zxbc5s4FMc%2FjWeyD8lw9eWxTpvuzrTbznov7VNHBtmoAeQFOXb66VdXc5Hw4tRAZ5e8xByEDPr%2FODo6kjVx75Pj2wzsovc4hPHEscLjxH09cRzbc%2Bb0H7M8C8t86gnDNkOhLFQYVugblEZLWvcohHmlIME4JmhXNQY4TWFAKjaQZfhQLbbBcfVbd2ALNcMqALFu%2FQuFJJJP4VuF%2FWeItpH6ZtuSZxKgCktDHoEQH0om983Evc8wJuJTcryHMWs81S7iuoeGs6cby2BK2lzgTGdwY7nhJrBsz53Pbm1HVPEE4r18Wnmn5Fk9PoFHWvkyJxl%2BhPc4xhm1pzilp5cbFMc1E4jRNqWHMdywy55gRhBty1fSnKAwZDUv8x0IULr9He%2Bo9dYuLO%2F4ha%2B9wvKbbFxmyjABBKz5zVn0OAZrGH%2FEOSIIs%2FozUXa5wyglXHh%2FOfFfc0tG7nFKnwMg3lwQ5OQAc1ZatgK9V3hsbFv7pBhFHeIEkuyZFpEXzKXGEvKZLak%2FFMgoDKIyLfJdABLS7aniQkf6QUrJD%2F%2FIYfZh%2FZWh7lj8%2BcvKxSh9FMcRIewNecXqcR62iET79V2AE3oQoycqF6Kf8hQ8wrcggfTzOsZr9l20XWBGPwQxyHP6n52%2B%2B5qL%2BptZ8kvtI8ErYZThfRpCdjHT%2BhAhAldUXnb2QP0GtUUkieXpK%2BjhVPVwfU%2FTw7YWBkWmvnOxJPSwpErbl29qePmmMeMxos823QoyhQUpgyaKOE8tqH4NtZUrMr%2FXpVa%2F9BUPqBQUlDMvuUnmAgTrOkrb1qwqtWd49WyD0vPL370Wqs40VcXrVWv%2B%2FICSGPD2LEmwwSlZyUJ2m6YmzH8ugwjF4TvwjPfs0XICgkd1tIxwhr7RakEhM8iI7GadaaXEil0plclgTst8VDLYJ9M7wHwmLxPgOAa7HK1PN5yAbIvSJSaEOhpRSD3pQ4mkieNu%2BJ8GxKmPFPUnKCh7%2BiW9vy2%2FoMZklV1avcX%2FTmdUz22bkWbt%2FgASFDOG%2FoRZCFKg5BAtRbtKcWz6jmtQbFcp9lxXo9ibGSj2vVkXGM8Nzol5FpAw4NJ1zv6RCOV3X3LaR8eQsP6XdjaWwF24oHXWof9pCDHEK9EqmjD5J0zr28QcwYj6MZgaoo5qdLGkqtxbdz6LM5x7emwXx9cJPRq8jA7Tsyrfjh1V7rroLMzoWJwWHnAIUFb840jKkKSoYKcPUlzfh7ZjO2AGXOj59q1%2FDhS8phHVE%2Bv0GCsf1NGIy5C4zPTQqj%2FHokL6Fn1SzkIEWlQ6GnE0kjMgObalD8B6RMdujc76FGIKeIqQcyRoWIJca0iCTKmyU2dVI%2BcdyglMVd%2B11O0jSYOS5A8ZHzvuOZI2GIcPICCY37AA6KFsq7qskaRhSZr3GD%2FrJHlnR1oBzuRI69d9sh69ztCDcmvQ4PnsYCsBKdhC5meKHM7d%2B8LoWDco5R2XxRPQP40sDcuSO2g0bZq5OLG0pex8OA3clxjHEKQjLwMnBHuMnbU8T8PgS%2BCyA%2FtczECOvPw4vMzbRsjzLvyLPoc2AvNjA%2BPaPXZImoM5OzZXZFA1UsVGBmNA0BNcNcXIbGlEqfzIUp8seYMmekwznzX1Y1SfuG81y3yttVGuzoNr0LnHtVEXSzxt2b%2BonN91JW6YoaymVsIMHG7Ggc7AvmAxJChuqxknUwfDF9mUV0JoHYp%2BTQFbQ%2BGRwUEY9AZdTuG2mro6BcVqiuFmB0j008hJn5y0XUzhdrHw0G0IgqucfEH5A0pRHo189M9H20F1N3w0TDvV%2BGBLOlFOA8YRkAEWY7Ud%2BHQS7OizSXwawBSqlKcG2g2Yx%2FXO43rn8nrnWe0HM%2F7C9IMZE%2FvdRPoN02Om9c5sij6fqMl5kGXgeYzQu3Wcwjddst7ZzE4nAXrDbJgBnfLiDgZPtUh1mcfI03A8GQL5Hnk6O%2FsR0M6AyMnVKj7jIo8fgBzDAukeyRlT190rbFrIbJS4i5lRt1XmGoThEqf7%2FIagBLKomL4bFAIWRo757GH9g20P2bV4rfLZFB8WitwoYEY8%2BsPDHbL%2F8NqlmjPaFgyQ%2FGaEo1c4pi17nm7gaJVfhoDciJ94Fn2O%2FMiWWozA9ArMQs8n9giMnnD%2BRa4hfgIZYu2YaziU0oTl3CBPjn1X0s8A0IV5QGF6D46VgtfODrYC4XxqzZ%2FXthLwFxoGtmdMK3eRWvMa8srlHLLZKfTvCXp%2B66vp7xe5APGWXZIZM0vfiQfQk6pc%2BdKOEf9X5TsR25C26lFsPQ1ae83vgifd4Y%2BCf4fghmyTUXC1NuC6gpt3OqoITo6j4NcU3Lb1iM6s%2BBV6cm2ZtR7QccH52iMxGbbZpwFP2Y2qX1N1w4Lo%2FlRvCN9o%2BLtPNNlpJ%2BDaxRTxSMCVCJj1SIB%2Bcy3mFWAavmKbrdIjvONtTC1skDMRQyF6VF5ZUBrv00bJnj8xIWgLy8PPUhd4ROSTKkc%2Ffz4VEzcAQ23v1tooiecgsgD%2By%2BCEDhe38NJhdlkM9QM79cuSyi2Y1JDVfWTkFWO3mVMbuy1qu7uJp5FXFZpqFc3rg8B6ReKJtYo4HKdnfCEvplkKOe1QX9PMhkAVkqZ%2F77E6cZtzZJiLcfzdsTipalmpgQTk2hMCs7S0IklUru2KuW6c%2BqAPhnY5n8iKwI4ZQ7ynbuLNyd79zqVzy68o55qyOKb9LG3L7cD9N%2B9S%2BmItbcekZfMWX%2F8RYadKNBW9q0VHZT9i2iTY66JbVzdzzqmrttrE8Ci9%2B7Lk6PlWAGzBWmVJ39nE1qUOu2nPuLK%2FNiN71l37hlb2r%2BPBvUVVZW0%2F4bYe3PdqFVm1il7swelhsem4KF5s3e6%2B%2BQc%3D%3C%2Fdiagram%3E%3Cdiagram%20id%3D%221e062e01-9405-bd79-a1ab-a6e8eeba07b8%22%20name%3D%22Snake%22%3E7Zpbb6M4FMc%2FTaTuw1TcQjOPk3Taeehqq81en1YGHPDU2JFxmmY%2B%2FR5jm0shCpVaeR6IIoGPj238Pz8fkGERbsqXe4H2xa88w3QReNnLIrxdBIEfBSs4KMtJW1ZxpA25IJlxag1b8gMbo2esB5LhqucoOaeS7PvGlDOGU9mzISH4se%2B247Q%2F6h7leGDYpogOrX%2BTTBZmFkuvtX%2FDJC%2FsyL5nakpknY2hKlDGjx1T%2BHURbgTnUp%2BVLxtMlXhWF93u7kxtc2ECMznS4M8Ki9%2BS70qTwKMogbjUTroZJexJlwsplZRfVMPgLieyOCTXKS%2BhQMkz44zAWcXQE75HJYbzhPIEDiWqJBZwklJUVXDcKp%2Fr75UewF5mEN%2FgnRdmu9Tzo3B188lvpt5MqZInK7fgB5Zh1dZfhOtjQSTe7lGqao8AGNgKWVJTrUd6xkLil7OidMe7x7zEUpzAxTSITHAMndFnXTy2oQ6tS9EJcxQuDWIGr7zpuY2AEklP0RY7MRkP6kAtE65nRA9GoTVKn%2FJaJoNVK151JCVFDPdV2nEmt8ZJlRElOYPzFCSCAIZrJSAB4r%2BYCsmVzmlBaPaATvyg5lxJGNaW1gUX5Ad0i%2BwYUC2kWbxB3PPYqpZg9sAqcAU%2BjzY6fmN6AJiMT8opRfuKJM0Fl0jkhK25lECldrIzvSOUbjjlohYg3NU%2F1WuDUe1tV57uvySpOa%2BXRSuo7Qmgx%2FWkBH%2FCne69%2BtfU2HxQi9y5ENNc6X6HSkIVW39hkSGGbDi0Un5gymNjvAPcfhj06G7KHbz9aDXEO%2FSCN%2BN9meVwwPIigGnGqFS8saRSB1mQ6vq%2FhKv7BeQk75ETJnUuRzB8TBV%2FCeSdOJeNSp01AGrJPv%2F9MNrgDONl1wXFO3l2VVSQjAjLH2qf26i1%2FG7Ui86kLQ797WhNYUGyDLOaUokk0qCrkO%2FVXGvFl2v4Q97ZeNfLxRLmtYGy35bhr9wFkMNgfojUQGBYRUdcyan0jGebIU4n6z6NHuv3rvBEI%2FC8Cj3c0%2FBY6C%2Bs0wtxLyFaFLeB%2FkNxcPvJH8AQDmEIR4Jc55xHXhFJuOpfaN9XwXcR3%2BXE7LD6gPAup%2BQGwkA0uKOoB42rX17XzsnBZXKIvYnJIfoAeuIp9ORYfsMos0uvBmgGxhkwq2giMN4HAHMzEZhbjPczND8PNL7nkprVG9LMPzMqjlEJXKLy%2BQ2o%2FDuj4hiVyCUqdqfzIisPmOWymGFxDEvsFBZ%2FEiyCH69qHWdY3MLi9CnXH%2B4ej8BSgs5XGRE4VU%2B4MzBu99icPuD6k7ZoCUvpIcNzgvkZeHH6lOuP7coOeNnz%2FfzQ4hgTt0%2B4k3Z3M5i%2BOKSSi5kW1y96nNIytpurcSj8FgdtIdYw%2FApBO4CJvG4Etm5P7w7W2TfrzbukMXD676wnxfXC61%2FPbHOasIbDjxuaz2x673fevkUPxfZDlrqu8zlQ%2BPV%2F%3C%2Fdiagram%3E%3Cdiagram%20name%3D%22Observer%22%20id%3D%22ebb93329-aa99-f462-73d2-6b91d3567e94%22%3E7ZlJc%2Bo4EIB%2FDVVvDqG8Au8YyDKHzLzUMOtR2MJWIkuULAK8Xz8tWfKCTYCEkBxIpQqr1dq6P7XUds%2BfZOt7gRbpbzzGtOc58brn3%2FQ8zw28EfwoyaaQjAZBIUgEiY1SJZiSn9gIHSNdkhjnDUXJOZVk0RRGnDEcyYYMCcFXTbU5p81RFyjBLcE0QrQt%2FYfEMjWrCJ1K%2FismSWpHdh1TkyGrbAR5imK%2Bqon8254%2FEZzL4ilbTzBVxrN2Kdrd7agtJyYwkx0N%2Fsqx%2BDF7UjbxHIpm4BetVDSjhD0X5VRKZcpr1dC7S4hMl7N%2BxDMoUPLCOCPwlDP0jO9RhuF5RvkMfjKUSyzgIaIoz%2BH3xwxGfMGi%2F5QXY9iZeuViy0XkcmMNLPiSxVipuj1%2FvEqJxNMFilTtCpACWSozaqqLjmEQidc7zeDWxrvHPMNSbEDFNLCeMzwGo35YCFaVe8OhUUprrvVdi5VBKin7rqyuDFMs0hZrfuh2pG8WhejSmMRa0nBT2SpfkYwihptGmXMmp0ZJlRElCYPnCCwCnfhjZS8CSF%2BbCsmVWaOU0PgBbfhSLTCXKHq2pXHKBfkJ3SI7BlQLaXanN2hoTFVLEDsgFTgHnUfrDLcUPQAtRifilKJFTmblhDMkEsLGXErArlCyK70jlE445UIbwJ%2FrP9VrSY3Wtlur6D8jkXnW3I9hfoluYHsCqrFelODPuNa9o%2F%2FKGrvhtZFrEzHNld3vUEaoQulvLGLEkHVHYSnXM%2BWuMU7Asut7DZjLco1lNxi1WS6FR7DcAjdogdvzYFUDlCm82Cxf6FUOqCIqXyAGz4l6linJrVwFl1pVl3r%2FCF38AqY7pnMd%2BZxb1aw4MdBmT%2BuZqCRb%2BxM8KZt7s4mYBafNkt2zFM%2Flzh0Ls4kISx60zk1QSf4wng12RFAO%2Fc2p3iEpiWPM9A6SSKJiEyocF5woy8E6wjH8QwCcOBAaQ1jXBMpuVYZ%2FpS6AagbrQ0TDimGHr3Be2WUP2X432YZkiDEHgWz13sNx2MHxlmPhuMRdjt0TIfZ4NQNfUFy58U%2Fl5Zsrt%2BVqv%2B1qv8OFOto98pxIwlX%2FotDdcu0ZvBceGIZOEIQGbw1CjEsy37fX67JvOrb8srPFJRZ8EE0D58BYELwfp%2BFbcYK8B0t8Tak%2BSvJvF07OzskoOJAT5%2F2cjHZw0r6QsAhy4mPCzIWcs5PjOmdEx%2B2KMYXHU3ebDGIFnVl2yQnZbgeyemcnJ2dnblneabrIaGZtp0iAnGEjAfK%2Ft%2FxYvklqXDxOcFT4YYhdz%2FXQEPk4CN2rDseavOKSxl%2FS%2BFcoDmwKYpMfd3RYOHKdE9yg2xzvOtw%2BM7Fn%2BuXjkWn9VAo4ry75%2FFlO2O5w%2BCUy%2FNbcvuS7qzzi4njGf19mM%2FWq%2BML412P80PcgH8N4%2B8PC5zMuyRvC%2BA2S%2BJW06IL4JyI%2BPPCq8jGIhy1f4zjB9hYNtkh5whmit5VU3TIXqnZO8fpafSFu3UNroIBdxOZfJe8HoW8F%2F4Hgyuk7zncrecQCyNb3dN3FE5ZyY66PaCm58nY5mweuX%2FRWHzTVpF%2B%2FO8Ia%2BVJERsucXnCZT%2FCxfhOYIklemuMd90mz%2Bmat62pf%2Fv3b%2FwE%3D%3C%2Fdiagram%3E%3Cdiagram%20id%3D%2264411bc8-c96d-d378-fd65-e506ebddd256%22%20name%3D%22Utils%22%3E7Z1bc6M2FIB%2FjWfSh3i4%2BvKYy2bbadrN1O32cUcG2WgjECvk2O6vrwTIGBAx9gbj7CqTGYOQhHXOpyNxjoQH9l24%2BUhBHPxBfIgHluFvBvb9wLJMx5rwD5GyzVImIydLWFLk55mKhBn6D%2BaJRp66Qj5MShkZIZihuJzokSiCHiulAUrJupxtQXD5rjFYwlrCzAO4nvov8lmQt8I1ivRfIVoG8s6mkV8JgcycJyQB8Ml6L8n%2BMLDvKCEsOwo3dxAL4Um5ZOUeGq7uvhiFEVMU%2BCeB9NP8q5CJZWAw53pJM2XFMIqes%2FOAMSHKG1HQelgiFqzmQ4%2BE%2FASjl4hEiB8lEXiGH0EI%2BfEckzn%2FCEHCIOUHHgZJwj9vgfe8pGQV%2BY%2BIX4ogHX5NsrvJ72yNxnBh2P7CM0zHnoyvzZ0cdu1L2FbKPq0MirLmwL5dB4jBWQw8cXXNaeNpAQtxfjm70wukDG4aJbR%2Fv4%2BQhJDRLc%2BSF3AmuapyVt2c3XWheNvJswR7SnfGuVRBDttyV3WhDyGyrI3ydE9DfWvssKasi9KUe5qidlbl%2BxRV64s1adl5GwFe5RIqZJ1bg0J4yRqFGESwLKUFidgszyTOAUbLiB97XERci%2FatECDihuomv8CIkLMXIOw%2Fgi1ZiTYnjN9Wnt0GhKL%2FeLVA3oNfpiy3udaolGMmSvJkg6dSmPA8T1I75i7pkROV5%2FEIxiBO0Hz3hUNAlyi6JYxxNLNMsqUPCOM7gglNBWAv0j9R6w6jNLc0mFn9IfLy47RvFAKVNXHyYdooSp7hXvVG%2Bre7Is14KuS9L5IXF3J%2FACHCgq3PkPogAlIdmaRMKz9X3eMN4OaDZolu0zFreJsjBd7TydF0H0bZqaE8sHgrRyAUuEXzJE5bPcKCsCQGET9eimMWoESmC4O0d0mVfXhEXtmRWhdIraXxWygG%2B9dLzWmRUumnXKOs3EfLqEmA6kzJvovhgjX2XP5tPBQtH9M8906R8leuYafBtBJe3wKnPSVAvg%2BjtCcxwEDWGQWWMUERS7Fwb%2Fk%2Fh%2BfOGLoDl7frjp%2BbxTn%2FF9kppzvi7QMohRbynr6GSSGXA4SrLWId%2Ba3M3o5wme9NCXcVhFdUzwdfqFL9AVtyQO8h1xaGhaL%2FFhzcX5s1GOw6DLZCyaldfCIJYoiI%2BmmWt6L8PvTrWu3024UBG51qwJZQTMSOsDIxH6Ha5776pTGzNjznAlNC2IvhGb8yS5TPUHq2qGeLrz8KjcvPQmbbsdR2umB6coHTxeSk2eKsRSk9W%2BzGaI8vZrZouy40eacCY2BDxzWvzQsEnMwTSF%2FEYHEk45%2FaFdSY94F520lzN5jXJyf9c47TSdHRlN8SgiE4VE5D3gfk47rr9nyQWxfIOEPhIR9VnfB7wLRj6xLxNg2nxwfMqfZsda5gu6UHoQvXlgxnHW%2FAnuF2TgDduRm0M%2BoSjIXd52Bonv5kQ1ZeoEm6JJJGZxx26iSdbJZisErSVQuF%2B1P7098VeNMzOtRr4J3sfHxBcD3zCIXJ24Knp949egnNXt2EJ4cdv%2FhkHWEC%2FAzIm8ifBVwRmsf3zqNc1tMLj6pHwVY4VmhM7mafNYvvnsXRGZ806o%2BtJz9p%2BCgRQr4RC7t%2Fh9tjfHCaxMskcdrrk4pq7VcrEhM%2BJusZ44%2FFom31uRrIVEUjMhwCswoIkgkNa%2Fl3dKFqSZ62X92b09W44mjnE1bRU17L00q5BxZRywBmrlunPuDtdgOU3LROF6qt7wc4SbWljTU%2FvYpd52wqPvvWnCdhKVvsn3L2JHR523Jst6YR5b4cWwZRut6Xoxjv9cacgV5qedrGnJE5rc8XpBUqzReM4%2FluAfPJLqYOly982Ry9eOHPVTjXS9B6mhFnFvGopZZKwruYEVsnx5G6BHyrAf%2BBAFctsjwb4MpFlhXl6wU636lh1QpDlYY7WaDTKiKZbTTbFF4hbQt6IWXSdrDrwkdgtXKKZ6hsNSo9o2KaCleheurfBSutNuVrVi6EFdUS0fOx0irEAb%2BtAL5KJalx6RkXt1dcWjkVfN5%2BuvIYodq69I3LuE9cpAfstMhG4eX%2B6YMZ1XiVa9V95%2B82mjFr%2BY4xa09E%2FUczHKcSznDqzwcjo89whqXfM6bDGadH6%2BxKOKP1PLUbb2%2FDjmNDOHOH6TsceHuM1B4d9gDfrHxEGl2uen7ydvMT6%2FhXe6mgsrtwqjgNs9k9pizN1LtjSvXWJiVTXUx5nQaf7h5Ttmbq3TGl2rh0PqYOj32OZurdMWWqFpSe7dncUT6bV%2BgxLjJpOBxqUM8JqtOrz1G%2Fp%2BIMKm47aeoiDi4Hzde9yl88CgGD6fDFH93hVQxYoP3LPZsG1Vaxs0XF7VZR8RiD7VU6S9K09EzL1OpxILFVsc7W0YiZ3j1TLOSvRCPsuhfnfNtnbJUXJ%2B%2FmVQUJf2lJKaNvKyIvXCepZ1WsybTceFNclLXMeEdhcCkk8QQY18T%2BSwOzqms8zBtx4M1CcZJOLwIQi0SfrHhf%2FrBL7z6IMa78ps3IqHdQpSZNw%2F5%2BVdY2XHagSdNSabL6ZtNiPIh%2FDMVOxtOSYs2pYpy2FIp13sDy1vTaYiGrFNUCw026gZvLAUZ%2BfnifWmEReikFpxoCOFnl0K%2F8dhcDVCx6ehW9moT5lyQr6sGGYg1a2JOyqxCyTKMQA4Zeyl9TJfn8DmlEvFCyMzKHhjWZTlxukfmZW1J5dcaVtSOvolBmrdaJUUZHVivrycRYqyeFYieChiBm8XtmWfbiV%2BHsD%2F8D%3C%2Fdiagram%3E%3Cdiagram%20id%3D%2298a8d23b-abf7-5d8f-ed26-9f6b74d2b58d%22%20name%3D%22REST%20API%22%3E7VrbkqM2EP0aP44LIa6Pc0%2BldrNT8SbZPMpGttnBiIA8Y%2Bfr05IAIxC%2BDd5JUrNbW2ta1%2B4%2BfdRqGOHb1eYxJ9nyM4toMrKtYkki9jrCdyPbtuAfiOYsiZQAKcGK8KXWIyMLOpmRhGrdpmT2vMjZOi1H7%2Fr%2BEUfVDMixGpP8ROPFkquWwJUN%2BH6Eb3PGuPq12tzSRGw0jppbeOhpRdXcOU25YcBvBc2%2FTL%2FTGYdeCZmCDRp7TeL0WT0vOc%2BKEb4WA%2B2HRcyX6%2Bl4xlbwkMQvKUtj%2BFWk5Jk%2BkhWF39OETeG%2FFSk4zUUbzV9oPv5eqJmr%2FWHXpchGNvEJpo6LrnCtc61LwbeVZaU1qRiLRvjmdRlzOsnITLS%2BghdBtuSrpGxWK8GqnG56rYEa6z1StqI830KXakDpm616dMvH14b%2FsFMKlw3f%2BZVTSaEEi3rqne2FeZSO1WPDGwe84yXQ5SbLwdTegktllajISNqWTduCOUu5ZljvrzWrGq6K%2BG8qXW0hJ9vsGqtZdCyU7pe%2BHy9pzp7XJMsUNtRq0EktqG9CgMQgMykAYk3Vfdjct5%2B9yEN7kQeCOCuosPCSZEI4S9g6%2BiEo9AIdhijs4hDU6cIQB%2B4QMOywSsd2JV%2B8kGRNdYiej73AhL1fgKah8eeJmEJSykkos3Wngku47q2CA2DoLUtYDhIAkvD4PE6Slogk8SIVIAAXwh7wjXBwDEfAddmwiqNILGOEx47GrGEQ4nt47GoYwcjAVUHQxYhzOlMdxoNjwEPL9nUYbSGSI2nDA5E0VVb7NK0F9QH7Zc1hFjog8SNPjznbcbv2NFG%2FY58ec4cN6v6oAPvM0gWD1rubj8CSOPB1HGDbEFe2CQeXiCv%2F%2BLiaJ3Rznecil72haVT%2BhFOLFEU8053T9MPIxnP5R4zbxPyb6DO2LFw%2B%2FymMO3bs6vmJ5jEoJnwljQ6GzbffZCfkoEqgRrl%2BLWgPU3rQaEH3ewp0Zet8RvsO8bITJ%2FmC8r5OZpc3POoaHFrJcpoQHr%2Fo%2BzR5uVzhicUyIEtEOa3DHOMWXyj9ylHN1L41kRc64wBjB5JNz8de4OnThtYYQzNynMD3QshT9VWUgTqrSETWNjkPpEEvVx1LTbYx79RnUbKnL5OvaozM%2FvYyVjOzLCAkJjMmk8oDmac%2B1UGiyynoQaaygwB2Jkwsje7ejNy7kyhOpvw39SlnCtFejpuxNIUMrtzJqHFX3UWUmV96yfAK4h7bGsyqzO%2BNQRHqMRHq49l8XtDBYRq%2BH5f6GpeK0D3MpQjrXOo7%2BINLbR03DrLHZ7Kpj%2FaxKXDoOHgfNq3y%2BH81nUY0Afx9EKqZZN6BUAPUug8G7cA4h1RPqRbWBRnhyiynLzF9HZeFw5jJRR%2FeXFUUN8fNWILlQHFnf3WnInoFvoitlZOPKDKSIpN1krt5vBEXj0HqPYevnnaIu6xaCy9d7kE%2FrN5zm8RUssXHVRRZLVj471nhqU7AQdKnAs5P%2FrasSsuobFdPnqzA15Mn7AQfyVMLT7iNk6Mvorg1EWpNdMnsyFRpHCI7erz%2FKrKgKhcqRGpTHOChaf4%2FTWv2E5PjheMQrnDIdZCHAqtViEDh2PdcFGLf97wQoT3l0R58%2Ba0MaYhU5ghomWquPQynUp%2Bme79TzrcTCbI7suYMRCznS7ZgKUk%2BMZY1SEuRVNi6FjpO9dx7LYT80YII0GtsbnhpajuC2Zz3ZDZkuS1GCs6kNlSX%2BPtmuiS3eb3cpsLVtqYsl69OGuyGmlzWMHjdLmjf1TrNYCMZiaI4XWhdHa1Xl0jLyWX2Vs6qYFY71dCktnw1Y0lC5AvVa0lC5VPvLZVPWbTtCHPjvnbvhcQyggoVi2Piz0LHrreiN5ZUqe%2BzVEGcEBAUCfhK9g2D6dxGe3a7FBApaXrXLaFz3h2UyrtNfbKIsW%2BYrWhdwrvTCWF%2BrCnfZIWokvwuIQxTNPcQHe5v7%2B1%2FkiJ9mKBkbkd4ILd3FHBOVNgdTuFhFfFPVCT4r3tOJLEnaYz2g9uoshCaiE3IFcWfeasFlWeW%2BDvqvzsxyAbnibxziS6jy7w%2BbX2WYLq0IkMqUBc9Br219p%2BoUfxiRF8U55AdxyxVwMp50g%2Bis2sftmu6gvx6PxF3kCfCIYVLT6qB1DKpVg%2BGup80qcLXfS2%2F%2FKdN7Qp%2B0IUH9gzwQO075hHwOPQ13TDl9NoLso4BW5jsvnzc66puWfwdPr9EzTeA3Tppl3aGIIkWBpBlqHdaBhAM83UbiHaf16q8ffdBML7%2FBw%3D%3D%3C%2Fdiagram%3E%3Cdiagram%20id%3D%2212b50bd2-5ec2-b933-551a-0ba1113ecac9%22%20name%3D%22Config%22%3E5ZVNc5swEIZ%2FDcd6QMKEa0xj99LpwdPpWcAaFAvkEbKx%2B%2Bu7siQ%2BYjKddnLLidW7uxJ6HyECmjXXnWKn%2BrssQQQkLK8B%2FRoQEsUkxYdRblZJk9gKleKlKxqFPf8NTgydeuYldLNCLaXQ%2FDQXC9m2UOiZxpSS%2FbzsIMV81ROr4EHYF0w8qr94qWu3i3U46t%2BAV7VfOQpdpmG%2B2AldzUrZTyT6EtBMSalt1FwzEMY874vt276THV5MQasXGn52oH7kr8YTEgqWI5d7kW0TvD3aca21sfLZNJJtxXV9zleFbHAg%2BKWVLceoa9kRdqwBjHMhc3w0rNOgMEDnD7xavXZ2Zv9%2BJHmCQ0jLQxFGMU2fvkTDnoe9dPrmfVby3JZgeqOAbvqaa9ifWGGyPZ4s1GrdCJe2K11Aabi%2B68Z0vR3IBrS6YYlrIJ6TO5dRurbjfqRMY1dTTwhT6kTmTlY1zD2ab%2Fyxm%2FTDCY5lno9%2BuT1dmDiDZ5cIbazAVFLpuxNW4V4oBOuQxDYbqdgK1PjbLtSmU5E5EjRXz33vtJJHyKSQChU8G1i5OXAh3khM8KrFYYEw8IzQjUHF8aN6domGl6VZZhH0eBTCD2KdrGesiUc4YT1cOFPWafzPqP%2FOlTxgzQQvjubKgPvtZiJ5MbH7Glerz8OGJgtswgU2yX99huN1e89Nflr05Q8%3D%3C%2Fdiagram%3E%3C%2Fmxfile%3E');" target="_blank">
<a href="https://www.draw.io/?lightbox=1&highlight=0000ff&edit=_blank&layers=1&nav=1&page=3&title=snakeUmlDiagram.xml#R%3Cmxfile%3E%3Cdiagram%20id%3D%226133507b-19e7-1e82-6fc7-422aa6c4b21f%22%20name%3D%22Food%22%3E7V1dc6M2FP01mdk%2BJMM39uM62ex2Zttmmn4%2ByiDb6mJEQU7i%2FvpKIGGERIwTA25HO5m1uUjC6BzdeySEdOXebl8%2B5yDb%2FIBjmFw5Vvxy5d5dOY7tOTP6wSz7yjILvMqwzlHMEx0Mj%2BgfyI0Wt%2B5QDAspIcE4ISiTjRFOUxgRyQbyHD%2FLyVY4ka%2BagTVUDI8RSFTr7ygmG34XvnWwf4FovRFXti1%2BZgtEYm4oNiDGzw2T%2B%2BnKvc0xJtW37cstTFjliXqp8t13nK1%2FWA5TosnwawHzn5Z%2FsTpxrAQsKS5loipbgtJv1fGGEFaVH1lG536NyGa3vInwlh4k6CnFKaLfihR8g5%2FBFtLvywQv6ccWFATm9EuUgKKgn%2FcYxzd%2FFVX54lc6QQhXlhuvIsv23Fl4PQ%2FqW69vqSB7Ud053qUxZJntK3fxvEEEPmYgYmefKcGobUO2CT9dXeoJ5gS%2BdFaK3bjeZ4i3kOR7moRncDk4nJ12WB0%2BH6C2rRlPs2ngPPM5jQHn17ou%2BgABq6XqHsVhAxQ9qsu5t4xsdxaB%2BcyCq2t%2BQ08g2UGBX5DQ3ItMqrjg7x3j0WIL8jVKSzgtK3uh%2F5f1ZFX2a4Kz6pzXOEdrj1yDBK15vojWHUNWlEm%2FrflneWXUMIAtwyRRj75nZawYcsIsZ5FKpDWD2ldZ5opFGB5JDghc7xvZl8ez01RZ29YwHH5auixKooHiF7SFP%2B3Ih%2B%2F0ZTgydxkREfUcH6uqvCsre8Er9i6BK5YL01SrpPQDK8SYsVjhlHC%2FZzv8%2BB5sUcI4%2BQUmT5CVKjP%2F0EwYhrVnYQe06aKIfy%2Bb%2FQJE39Zlhluc4Jyeoo0asmwkx9%2BgMF7RtlD%2Bq88If8cuyH5rI%2BWq%2FHeeJujZvtQG%2FdBSG%2BFc0wbD8OQmqLQ3xT%2FZjtLimGNTwC6e0TYBZT02cCmx5InsBvi8SbkLPUeiDUrir2CPd%2BzWCkIRE0eLDc7RP7RYIK5BT%2BeCME4gpXhkOTn2OSxomgcBg12bvlLHXXMlSUBWoGX9gys%2FscCE0AjA2cXv9L6DApNykWeX2sxvMI9BCjqalu4a52Cx40ksdnUkDlQSO0IvnJfFriZulL5%2Bg4ob4c2KDKTCm2W4QARhHgIeMKK3fXB6zZRKU2DxQ24GMpoCIxW2lm%2FUNw567Qil669lmjvvYPmZ16LXoRQarnaD4himJVkJIKDiu1XeNr3Rsub9Bf2jWNxaN%2F6VT%2B%2Frlh7bh2P6x5LnlEApvT%2BASl5A2pieYUH6kqjD36i02ov0PWkUDMEi71QWFRHOYUWhH3fbZakiDIcm5pDvTMkhX8OhFvi0MwJ14B9x%2BkeQ31K8EniA%2BhfGhLtrW6GDq9LB1cBcBrCH2k3e5VXaFvyTIBzO%2BiE8GwLgQO8kZDGtcxZrSF6PM2oWSYkbhzIR3WaTBqWwD98otx5ZLGKEMcwYjRm2PWmsmfWhRoJB%2FICiDxkgG8OOUdnh9oxTg7DDUcfSvtRDPKZ%2Fb%2Fr3r%2FbvXU8eKQ5Ff7%2FJ5UAzSmXbg5BZHabSuLqyn7bE6a4a4LcW5Vfj8s7o8rpo80r%2FXceSYTyerv9u%2Bl7nRVjXu9YhPETfy9F1ro88yDCNfzRqBJox4PEaf69%2BeQyjnFYDNJ2l8emh60aPRw%2B1r3SHYZESo4mNJu6piX23rYn9foyeO0Mwem4k8WW4vdnlSmLBWCOJB0R4Skns6mZMGUl8KY1%2FUknsqt2lj1lG684IHSN0XhM6YSgLnXpWc4PG9UQeSegMMbnH7dWzK4VOIWZKMq0jnz%2Bq9o0bfIcbrFzNKRpIy59h3KDuCarRQOdFWKOBtAgPooF6PQdl0y9QZPTPqLTQ6J%2FxGr6nauMFjaU0mhoBZATQqyM9njxHf1oB5PV%2F%2BGkE0ER%2B0Dv5ueiIflA3O94IoPMiPKUA8jomrhsBNHnDn1YAqQNAv9PwkG9hQpuPEUFGBL0mglznokSQGQW6fF94waNAnhkFGh7hSUWQGQW61IY%2FrQhS50noJ0EY%2FWP0T1P%2F1EvbXIT%2BESvwvE%2F%2FGOUzkAOcX67y8XVTRIzyOS%2FCUyofcW2jfC6u4U%2BqfHxV%2BbC1fe5BRDAv2ugfo3%2B69E84k%2FWP7fX0ceEQ%2BicwUewM7so%2Fj04ZIooFvaIYe32HQObGPpB9Bql%2Fz3KcFSaqjUkTV30XeLyoFqqO4NMLgWms9uip8SNbE5UeLRPM4siCmoT7DKrD%2B3JZwrLeG2SBL4j8wcy0nqujP3mi6iowVtZRbflV%2BkvwLo%2FgicJBN1M4hwkg6Em%2BoK5SeXF8mRnhyJ3Wu9xu20FXP5TnOkCjFOT5ckH1qm%2BiIBrHD6vctDCu7%2FGNsKvuYVDYgwbs19aN5brc8ABz2oMutc9JfBgFak9Mlq3HLPy3Qe1bE0KtzlcYFGqviTWFmtXuu6A%2B1vTH44Pvn6npt999G5UP6vSG%2F6LH75oqOQDsgVgrtnYDb4V9Ph3ss5E9fht2Cm6%2Br065ji0M7KxNw8FcGAZyEvXq72UFV4m0q2WPIyHar7564dsI5bWY6bcLGpJQI8eVVwgVuM7ohJpdEqG8NqFEn%2BJkQs1kxRMEI3oo3SvY3UzCWdnbOzDHlmnldBEpHCgi6SjR8frVKKRojzgF7WjTlxRz70hBA5JCvOw%2FNCkCez6ubO3FlmqMcByR03Ihfrvl92VLOD9S0JBs6TE3%2ByxsacciDU8a8WnuN8MT7f%2FavjdBfOqY5DOO5Gn1gIP2yvV96eUGRwoakl49lkQ7B72coSKURgV3TI0YhRR2O7B4byVFm13tgoYkhW4qZLXM9Mbu3IVG2Q5H2Qipe3Mb3Y411Na8WouU7x%2B%2B73xAWT%2FP0Q3Py4%2F%2BeD29axaR0woumklEYvMv6RHL6Rsu9VlMWidOOoBmjxYlUMQGSezEdVG6BLakkOOzzZXauyfVT5lpXREKRNrAvSr5NYq0XVSSoKxgmBUbkDFjjHfLBH6q7cNvnRWG8nR44UmPAWlb7iBI6oTDIEgetp%2F6v0ApRpaE7x0VStf3oU3dAgiBCz3f1u551mtDgepZ6M8gjXF68s4C5RZ3CxzvzRYDAzxRPbZ5kuxK7LlmITlhkx6o%2Bifzjx4e9lys1MNh50r3078%3D%3C%2Fdiagram%3E%3Cdiagram%20id%3D%2250ca1547-e1eb-6335-717b-36a0f9b8290b%22%20name%3D%22Game%22%3E7Zxbc5s4FMc%2FjWeyD8lw9eWxTpvuzrTbznov7VNHBtmoAeQFOXb66VdXc5Hw4tRAZ5e8xByEDPr%2FODo6kjVx75Pj2wzsovc4hPHEscLjxH09cRzbc%2Bb0H7M8C8t86gnDNkOhLFQYVugblEZLWvcohHmlIME4JmhXNQY4TWFAKjaQZfhQLbbBcfVbd2ALNcMqALFu%2FQuFJJJP4VuF%2FWeItpH6ZtuSZxKgCktDHoEQH0om983Evc8wJuJTcryHMWs81S7iuoeGs6cby2BK2lzgTGdwY7nhJrBsz53Pbm1HVPEE4r18Wnmn5Fk9PoFHWvkyJxl%2BhPc4xhm1pzilp5cbFMc1E4jRNqWHMdywy55gRhBty1fSnKAwZDUv8x0IULr9He%2Bo9dYuLO%2F4ha%2B9wvKbbFxmyjABBKz5zVn0OAZrGH%2FEOSIIs%2FozUXa5wyglXHh%2FOfFfc0tG7nFKnwMg3lwQ5OQAc1ZatgK9V3hsbFv7pBhFHeIEkuyZFpEXzKXGEvKZLak%2FFMgoDKIyLfJdABLS7aniQkf6QUrJD%2F%2FIYfZh%2FZWh7lj8%2BcvKxSh9FMcRIewNecXqcR62iET79V2AE3oQoycqF6Kf8hQ8wrcggfTzOsZr9l20XWBGPwQxyHP6n52%2B%2B5qL%2BptZ8kvtI8ErYZThfRpCdjHT%2BhAhAldUXnb2QP0GtUUkieXpK%2BjhVPVwfU%2FTw7YWBkWmvnOxJPSwpErbl29qePmmMeMxos823QoyhQUpgyaKOE8tqH4NtZUrMr%2FXpVa%2F9BUPqBQUlDMvuUnmAgTrOkrb1qwqtWd49WyD0vPL370Wqs40VcXrVWv%2B%2FICSGPD2LEmwwSlZyUJ2m6YmzH8ugwjF4TvwjPfs0XICgkd1tIxwhr7RakEhM8iI7GadaaXEil0plclgTst8VDLYJ9M7wHwmLxPgOAa7HK1PN5yAbIvSJSaEOhpRSD3pQ4mkieNu%2BJ8GxKmPFPUnKCh7%2BiW9vy2%2FoMZklV1avcX%2FTmdUz22bkWbt%2FgASFDOG%2FoRZCFKg5BAtRbtKcWz6jmtQbFcp9lxXo9ibGSj2vVkXGM8Nzol5FpAw4NJ1zv6RCOV3X3LaR8eQsP6XdjaWwF24oHXWof9pCDHEK9EqmjD5J0zr28QcwYj6MZgaoo5qdLGkqtxbdz6LM5x7emwXx9cJPRq8jA7Tsyrfjh1V7rroLMzoWJwWHnAIUFb840jKkKSoYKcPUlzfh7ZjO2AGXOj59q1%2FDhS8phHVE%2Bv0GCsf1NGIy5C4zPTQqj%2FHokL6Fn1SzkIEWlQ6GnE0kjMgObalD8B6RMdujc76FGIKeIqQcyRoWIJca0iCTKmyU2dVI%2BcdyglMVd%2B11O0jSYOS5A8ZHzvuOZI2GIcPICCY37AA6KFsq7qskaRhSZr3GD%2FrJHlnR1oBzuRI69d9sh69ztCDcmvQ4PnsYCsBKdhC5meKHM7d%2B8LoWDco5R2XxRPQP40sDcuSO2g0bZq5OLG0pex8OA3clxjHEKQjLwMnBHuMnbU8T8PgS%2BCyA%2FtczECOvPw4vMzbRsjzLvyLPoc2AvNjA%2BPaPXZImoM5OzZXZFA1UsVGBmNA0BNcNcXIbGlEqfzIUp8seYMmekwznzX1Y1SfuG81y3yttVGuzoNr0LnHtVEXSzxt2b%2BonN91JW6YoaymVsIMHG7Ggc7AvmAxJChuqxknUwfDF9mUV0JoHYp%2BTQFbQ%2BGRwUEY9AZdTuG2mro6BcVqiuFmB0j008hJn5y0XUzhdrHw0G0IgqucfEH5A0pRHo189M9H20F1N3w0TDvV%2BGBLOlFOA8YRkAEWY7Ud%2BHQS7OizSXwawBSqlKcG2g2Yx%2FXO43rn8nrnWe0HM%2F7C9IMZE%2FvdRPoN02Om9c5sij6fqMl5kGXgeYzQu3Wcwjddst7ZzE4nAXrDbJgBnfLiDgZPtUh1mcfI03A8GQL5Hnk6O%2FsR0M6AyMnVKj7jIo8fgBzDAukeyRlT190rbFrIbJS4i5lRt1XmGoThEqf7%2FIagBLKomL4bFAIWRo757GH9g20P2bV4rfLZFB8WitwoYEY8%2BsPDHbL%2F8NqlmjPaFgyQ%2FGaEo1c4pi17nm7gaJVfhoDciJ94Fn2O%2FMiWWozA9ArMQs8n9giMnnD%2BRa4hfgIZYu2YaziU0oTl3CBPjn1X0s8A0IV5QGF6D46VgtfODrYC4XxqzZ%2FXthLwFxoGtmdMK3eRWvMa8srlHLLZKfTvCXp%2B66vp7xe5APGWXZIZM0vfiQfQk6pc%2BdKOEf9X5TsR25C26lFsPQ1ae83vgifd4Y%2BCf4fghmyTUXC1NuC6gpt3OqoITo6j4NcU3Lb1iM6s%2BBV6cm2ZtR7QccH52iMxGbbZpwFP2Y2qX1N1w4Lo%2FlRvCN9o%2BLtPNNlpJ%2BDaxRTxSMCVCJj1SIB%2Bcy3mFWAavmKbrdIjvONtTC1skDMRQyF6VF5ZUBrv00bJnj8xIWgLy8PPUhd4ROSTKkc%2Ffz4VEzcAQ23v1tooiecgsgD%2By%2BCEDhe38NJhdlkM9QM79cuSyi2Y1JDVfWTkFWO3mVMbuy1qu7uJp5FXFZpqFc3rg8B6ReKJtYo4HKdnfCEvplkKOe1QX9PMhkAVkqZ%2F77E6cZtzZJiLcfzdsTipalmpgQTk2hMCs7S0IklUru2KuW6c%2BqAPhnY5n8iKwI4ZQ7ynbuLNyd79zqVzy68o55qyOKb9LG3L7cD9N%2B9S%2BmItbcekZfMWX%2F8RYadKNBW9q0VHZT9i2iTY66JbVzdzzqmrttrE8Ci9%2B7Lk6PlWAGzBWmVJ39nE1qUOu2nPuLK%2FNiN71l37hlb2r%2BPBvUVVZW0%2F4bYe3PdqFVm1il7swelhsem4KF5s3e6%2B%2BQc%3D%3C%2Fdiagram%3E%3Cdiagram%20id%3D%221e062e01-9405-bd79-a1ab-a6e8eeba07b8%22%20name%3D%22Snake%22%3E7Zpbb6M4FMc%2FTaTuw1TcQjOPk3Taeehqq81en1YGHPDU2JFxmmY%2B%2FR5jm0shCpVaeR6IIoGPj238Pz8fkGERbsqXe4H2xa88w3QReNnLIrxdBIEfBSs4KMtJW1ZxpA25IJlxag1b8gMbo2esB5LhqucoOaeS7PvGlDOGU9mzISH4se%2B247Q%2F6h7leGDYpogOrX%2BTTBZmFkuvtX%2FDJC%2FsyL5nakpknY2hKlDGjx1T%2BHURbgTnUp%2BVLxtMlXhWF93u7kxtc2ECMznS4M8Ki9%2BS70qTwKMogbjUTroZJexJlwsplZRfVMPgLieyOCTXKS%2BhQMkz44zAWcXQE75HJYbzhPIEDiWqJBZwklJUVXDcKp%2Fr75UewF5mEN%2FgnRdmu9Tzo3B188lvpt5MqZInK7fgB5Zh1dZfhOtjQSTe7lGqao8AGNgKWVJTrUd6xkLil7OidMe7x7zEUpzAxTSITHAMndFnXTy2oQ6tS9EJcxQuDWIGr7zpuY2AEklP0RY7MRkP6kAtE65nRA9GoTVKn%2FJaJoNVK151JCVFDPdV2nEmt8ZJlRElOYPzFCSCAIZrJSAB4r%2BYCsmVzmlBaPaATvyg5lxJGNaW1gUX5Ad0i%2BwYUC2kWbxB3PPYqpZg9sAqcAU%2BjzY6fmN6AJiMT8opRfuKJM0Fl0jkhK25lECldrIzvSOUbjjlohYg3NU%2F1WuDUe1tV57uvySpOa%2BXRSuo7Qmgx%2FWkBH%2FCne69%2BtfU2HxQi9y5ENNc6X6HSkIVW39hkSGGbDi0Un5gymNjvAPcfhj06G7KHbz9aDXEO%2FSCN%2BN9meVwwPIigGnGqFS8saRSB1mQ6vq%2FhKv7BeQk75ETJnUuRzB8TBV%2FCeSdOJeNSp01AGrJPv%2F9MNrgDONl1wXFO3l2VVSQjAjLH2qf26i1%2FG7Ui86kLQ797WhNYUGyDLOaUokk0qCrkO%2FVXGvFl2v4Q97ZeNfLxRLmtYGy35bhr9wFkMNgfojUQGBYRUdcyan0jGebIU4n6z6NHuv3rvBEI%2FC8Cj3c0%2FBY6C%2Bs0wtxLyFaFLeB%2FkNxcPvJH8AQDmEIR4Jc55xHXhFJuOpfaN9XwXcR3%2BXE7LD6gPAup%2BQGwkA0uKOoB42rX17XzsnBZXKIvYnJIfoAeuIp9ORYfsMos0uvBmgGxhkwq2giMN4HAHMzEZhbjPczND8PNL7nkprVG9LMPzMqjlEJXKLy%2BQ2o%2FDuj4hiVyCUqdqfzIisPmOWymGFxDEvsFBZ%2FEiyCH69qHWdY3MLi9CnXH%2B4ej8BSgs5XGRE4VU%2B4MzBu99icPuD6k7ZoCUvpIcNzgvkZeHH6lOuP7coOeNnz%2FfzQ4hgTt0%2B4k3Z3M5i%2BOKSSi5kW1y96nNIytpurcSj8FgdtIdYw%2FApBO4CJvG4Etm5P7w7W2TfrzbukMXD676wnxfXC61%2FPbHOasIbDjxuaz2x673fevkUPxfZDlrqu8zlQ%2BPV%2F%3C%2Fdiagram%3E%3Cdiagram%20name%3D%22Observer%22%20id%3D%22ebb93329-aa99-f462-73d2-6b91d3567e94%22%3E7ZlJc%2Bo4EIB%2FDVVvDqG8Au8YyDKHzLzUMOtR2MJWIkuULAK8Xz8tWfKCTYCEkBxIpQqr1dq6P7XUds%2BfZOt7gRbpbzzGtOc58brn3%2FQ8zw28EfwoyaaQjAZBIUgEiY1SJZiSn9gIHSNdkhjnDUXJOZVk0RRGnDEcyYYMCcFXTbU5p81RFyjBLcE0QrQt%2FYfEMjWrCJ1K%2FismSWpHdh1TkyGrbAR5imK%2Bqon8254%2FEZzL4ilbTzBVxrN2Kdrd7agtJyYwkx0N%2Fsqx%2BDF7UjbxHIpm4BetVDSjhD0X5VRKZcpr1dC7S4hMl7N%2BxDMoUPLCOCPwlDP0jO9RhuF5RvkMfjKUSyzgIaIoz%2BH3xwxGfMGi%2F5QXY9iZeuViy0XkcmMNLPiSxVipuj1%2FvEqJxNMFilTtCpACWSozaqqLjmEQidc7zeDWxrvHPMNSbEDFNLCeMzwGo35YCFaVe8OhUUprrvVdi5VBKin7rqyuDFMs0hZrfuh2pG8WhejSmMRa0nBT2SpfkYwihptGmXMmp0ZJlRElCYPnCCwCnfhjZS8CSF%2BbCsmVWaOU0PgBbfhSLTCXKHq2pXHKBfkJ3SI7BlQLaXanN2hoTFVLEDsgFTgHnUfrDLcUPQAtRifilKJFTmblhDMkEsLGXErArlCyK70jlE445UIbwJ%2FrP9VrSY3Wtlur6D8jkXnW3I9hfoluYHsCqrFelODPuNa9o%2F%2FKGrvhtZFrEzHNld3vUEaoQulvLGLEkHVHYSnXM%2BWuMU7Asut7DZjLco1lNxi1WS6FR7DcAjdogdvzYFUDlCm82Cxf6FUOqCIqXyAGz4l6linJrVwFl1pVl3r%2FCF38AqY7pnMd%2BZxb1aw4MdBmT%2BuZqCRb%2BxM8KZt7s4mYBafNkt2zFM%2Flzh0Ls4kISx60zk1QSf4wng12RFAO%2Fc2p3iEpiWPM9A6SSKJiEyocF5woy8E6wjH8QwCcOBAaQ1jXBMpuVYZ%2FpS6AagbrQ0TDimGHr3Be2WUP2X432YZkiDEHgWz13sNx2MHxlmPhuMRdjt0TIfZ4NQNfUFy58U%2Fl5Zsrt%2BVqv%2B1qv8OFOto98pxIwlX%2FotDdcu0ZvBceGIZOEIQGbw1CjEsy37fX67JvOrb8srPFJRZ8EE0D58BYELwfp%2BFbcYK8B0t8Tak%2BSvJvF07OzskoOJAT5%2F2cjHZw0r6QsAhy4mPCzIWcs5PjOmdEx%2B2KMYXHU3ebDGIFnVl2yQnZbgeyemcnJ2dnblneabrIaGZtp0iAnGEjAfK%2Ft%2FxYvklqXDxOcFT4YYhdz%2FXQEPk4CN2rDseavOKSxl%2FS%2BFcoDmwKYpMfd3RYOHKdE9yg2xzvOtw%2BM7Fn%2BuXjkWn9VAo4ry75%2FFlO2O5w%2BCUy%2FNbcvuS7qzzi4njGf19mM%2FWq%2BML412P80PcgH8N4%2B8PC5zMuyRvC%2BA2S%2BJW06IL4JyI%2BPPCq8jGIhy1f4zjB9hYNtkh5whmit5VU3TIXqnZO8fpafSFu3UNroIBdxOZfJe8HoW8F%2F4Hgyuk7zncrecQCyNb3dN3FE5ZyY66PaCm58nY5mweuX%2FRWHzTVpF%2B%2FO8Ia%2BVJERsucXnCZT%2FCxfhOYIklemuMd90mz%2Bmat62pf%2Fv3b%2FwE%3D%3C%2Fdiagram%3E%3Cdiagram%20id%3D%2264411bc8-c96d-d378-fd65-e506ebddd256%22%20name%3D%22Utils%22%3E7Z1bc6M2FIB%2FjWfSh3i4%2BvKYy2bbadrN1O32cUcG2WgjECvk2O6vrwTIGBAx9gbj7CqTGYOQhHXOpyNxjoQH9l24%2BUhBHPxBfIgHluFvBvb9wLJMx5rwD5GyzVImIydLWFLk55mKhBn6D%2BaJRp66Qj5MShkZIZihuJzokSiCHiulAUrJupxtQXD5rjFYwlrCzAO4nvov8lmQt8I1ivRfIVoG8s6mkV8JgcycJyQB8Ml6L8n%2BMLDvKCEsOwo3dxAL4Um5ZOUeGq7uvhiFEVMU%2BCeB9NP8q5CJZWAw53pJM2XFMIqes%2FOAMSHKG1HQelgiFqzmQ4%2BE%2FASjl4hEiB8lEXiGH0EI%2BfEckzn%2FCEHCIOUHHgZJwj9vgfe8pGQV%2BY%2BIX4ogHX5NsrvJ72yNxnBh2P7CM0zHnoyvzZ0cdu1L2FbKPq0MirLmwL5dB4jBWQw8cXXNaeNpAQtxfjm70wukDG4aJbR%2Fv4%2BQhJDRLc%2BSF3AmuapyVt2c3XWheNvJswR7SnfGuVRBDttyV3WhDyGyrI3ydE9DfWvssKasi9KUe5qidlbl%2BxRV64s1adl5GwFe5RIqZJ1bg0J4yRqFGESwLKUFidgszyTOAUbLiB97XERci%2FatECDihuomv8CIkLMXIOw%2Fgi1ZiTYnjN9Wnt0GhKL%2FeLVA3oNfpiy3udaolGMmSvJkg6dSmPA8T1I75i7pkROV5%2FEIxiBO0Hz3hUNAlyi6JYxxNLNMsqUPCOM7gglNBWAv0j9R6w6jNLc0mFn9IfLy47RvFAKVNXHyYdooSp7hXvVG%2Bre7Is14KuS9L5IXF3J%2FACHCgq3PkPogAlIdmaRMKz9X3eMN4OaDZolu0zFreJsjBd7TydF0H0bZqaE8sHgrRyAUuEXzJE5bPcKCsCQGET9eimMWoESmC4O0d0mVfXhEXtmRWhdIraXxWygG%2B9dLzWmRUumnXKOs3EfLqEmA6kzJvovhgjX2XP5tPBQtH9M8906R8leuYafBtBJe3wKnPSVAvg%2BjtCcxwEDWGQWWMUERS7Fwb%2Fk%2Fh%2BfOGLoDl7frjp%2BbxTn%2FF9kppzvi7QMohRbynr6GSSGXA4SrLWId%2Ba3M3o5wme9NCXcVhFdUzwdfqFL9AVtyQO8h1xaGhaL%2FFhzcX5s1GOw6DLZCyaldfCIJYoiI%2BmmWt6L8PvTrWu3024UBG51qwJZQTMSOsDIxH6Ha5776pTGzNjznAlNC2IvhGb8yS5TPUHq2qGeLrz8KjcvPQmbbsdR2umB6coHTxeSk2eKsRSk9W%2BzGaI8vZrZouy40eacCY2BDxzWvzQsEnMwTSF%2FEYHEk45%2FaFdSY94F520lzN5jXJyf9c47TSdHRlN8SgiE4VE5D3gfk47rr9nyQWxfIOEPhIR9VnfB7wLRj6xLxNg2nxwfMqfZsda5gu6UHoQvXlgxnHW%2FAnuF2TgDduRm0M%2BoSjIXd52Bonv5kQ1ZeoEm6JJJGZxx26iSdbJZisErSVQuF%2B1P7098VeNMzOtRr4J3sfHxBcD3zCIXJ24Knp949egnNXt2EJ4cdv%2FhkHWEC%2FAzIm8ifBVwRmsf3zqNc1tMLj6pHwVY4VmhM7mafNYvvnsXRGZ806o%2BtJz9p%2BCgRQr4RC7t%2Fh9tjfHCaxMskcdrrk4pq7VcrEhM%2BJusZ44%2FFom31uRrIVEUjMhwCswoIkgkNa%2Fl3dKFqSZ62X92b09W44mjnE1bRU17L00q5BxZRywBmrlunPuDtdgOU3LROF6qt7wc4SbWljTU%2FvYpd52wqPvvWnCdhKVvsn3L2JHR523Jst6YR5b4cWwZRut6Xoxjv9cacgV5qedrGnJE5rc8XpBUqzReM4%2FluAfPJLqYOly982Ry9eOHPVTjXS9B6mhFnFvGopZZKwruYEVsnx5G6BHyrAf%2BBAFctsjwb4MpFlhXl6wU636lh1QpDlYY7WaDTKiKZbTTbFF4hbQt6IWXSdrDrwkdgtXKKZ6hsNSo9o2KaCleheurfBSutNuVrVi6EFdUS0fOx0irEAb%2BtAL5KJalx6RkXt1dcWjkVfN5%2BuvIYodq69I3LuE9cpAfstMhG4eX%2B6YMZ1XiVa9V95%2B82mjFr%2BY4xa09E%2FUczHKcSznDqzwcjo89whqXfM6bDGadH6%2BxKOKP1PLUbb2%2FDjmNDOHOH6TsceHuM1B4d9gDfrHxEGl2uen7ydvMT6%2FhXe6mgsrtwqjgNs9k9pizN1LtjSvXWJiVTXUx5nQaf7h5Ttmbq3TGl2rh0PqYOj32OZurdMWWqFpSe7dncUT6bV%2BgxLjJpOBxqUM8JqtOrz1G%2Fp%2BIMKm47aeoiDi4Hzde9yl88CgGD6fDFH93hVQxYoP3LPZsG1Vaxs0XF7VZR8RiD7VU6S9K09EzL1OpxILFVsc7W0YiZ3j1TLOSvRCPsuhfnfNtnbJUXJ%2B%2FmVQUJf2lJKaNvKyIvXCepZ1WsybTceFNclLXMeEdhcCkk8QQY18T%2BSwOzqms8zBtx4M1CcZJOLwIQi0SfrHhf%2FrBL7z6IMa78ps3IqHdQpSZNw%2F5%2BVdY2XHagSdNSabL6ZtNiPIh%2FDMVOxtOSYs2pYpy2FIp13sDy1vTaYiGrFNUCw026gZvLAUZ%2BfnifWmEReikFpxoCOFnl0K%2F8dhcDVCx6ehW9moT5lyQr6sGGYg1a2JOyqxCyTKMQA4Zeyl9TJfn8DmlEvFCyMzKHhjWZTlxukfmZW1J5dcaVtSOvolBmrdaJUUZHVivrycRYqyeFYieChiBm8XtmWfbiV%2BHsD%2F8D%3C%2Fdiagram%3E%3Cdiagram%20id%3D%2298a8d23b-abf7-5d8f-ed26-9f6b74d2b58d%22%20name%3D%22REST%20API%22%3E7VrbkqM2EP0aP44LIa6Pc0%2BldrNT8SbZPMpGttnBiIA8Y%2Bfr05IAIxC%2BDd5JUrNbW2ta1%2B4%2BfdRqGOHb1eYxJ9nyM4toMrKtYkki9jrCdyPbtuAfiOYsiZQAKcGK8KXWIyMLOpmRhGrdpmT2vMjZOi1H7%2Fr%2BEUfVDMixGpP8ROPFkquWwJUN%2BH6Eb3PGuPq12tzSRGw0jppbeOhpRdXcOU25YcBvBc2%2FTL%2FTGYdeCZmCDRp7TeL0WT0vOc%2BKEb4WA%2B2HRcyX6%2Bl4xlbwkMQvKUtj%2BFWk5Jk%2BkhWF39OETeG%2FFSk4zUUbzV9oPv5eqJmr%2FWHXpchGNvEJpo6LrnCtc61LwbeVZaU1qRiLRvjmdRlzOsnITLS%2BghdBtuSrpGxWK8GqnG56rYEa6z1StqI830KXakDpm616dMvH14b%2FsFMKlw3f%2BZVTSaEEi3rqne2FeZSO1WPDGwe84yXQ5SbLwdTegktllajISNqWTduCOUu5ZljvrzWrGq6K%2BG8qXW0hJ9vsGqtZdCyU7pe%2BHy9pzp7XJMsUNtRq0EktqG9CgMQgMykAYk3Vfdjct5%2B9yEN7kQeCOCuosPCSZEI4S9g6%2BiEo9AIdhijs4hDU6cIQB%2B4QMOywSsd2JV%2B8kGRNdYiej73AhL1fgKah8eeJmEJSykkos3Wngku47q2CA2DoLUtYDhIAkvD4PE6Slogk8SIVIAAXwh7wjXBwDEfAddmwiqNILGOEx47GrGEQ4nt47GoYwcjAVUHQxYhzOlMdxoNjwEPL9nUYbSGSI2nDA5E0VVb7NK0F9QH7Zc1hFjog8SNPjznbcbv2NFG%2FY58ec4cN6v6oAPvM0gWD1rubj8CSOPB1HGDbEFe2CQeXiCv%2F%2BLiaJ3Rznecil72haVT%2BhFOLFEU8053T9MPIxnP5R4zbxPyb6DO2LFw%2B%2FymMO3bs6vmJ5jEoJnwljQ6GzbffZCfkoEqgRrl%2BLWgPU3rQaEH3ewp0Zet8RvsO8bITJ%2FmC8r5OZpc3POoaHFrJcpoQHr%2Fo%2BzR5uVzhicUyIEtEOa3DHOMWXyj9ylHN1L41kRc64wBjB5JNz8de4OnThtYYQzNynMD3QshT9VWUgTqrSETWNjkPpEEvVx1LTbYx79RnUbKnL5OvaozM%2FvYyVjOzLCAkJjMmk8oDmac%2B1UGiyynoQaaygwB2Jkwsje7ejNy7kyhOpvw39SlnCtFejpuxNIUMrtzJqHFX3UWUmV96yfAK4h7bGsyqzO%2BNQRHqMRHq49l8XtDBYRq%2BH5f6GpeK0D3MpQjrXOo7%2BINLbR03DrLHZ7Kpj%2FaxKXDoOHgfNq3y%2BH81nUY0Afx9EKqZZN6BUAPUug8G7cA4h1RPqRbWBRnhyiynLzF9HZeFw5jJRR%2FeXFUUN8fNWILlQHFnf3WnInoFvoitlZOPKDKSIpN1krt5vBEXj0HqPYevnnaIu6xaCy9d7kE%2FrN5zm8RUssXHVRRZLVj471nhqU7AQdKnAs5P%2FrasSsuobFdPnqzA15Mn7AQfyVMLT7iNk6Mvorg1EWpNdMnsyFRpHCI7erz%2FKrKgKhcqRGpTHOChaf4%2FTWv2E5PjheMQrnDIdZCHAqtViEDh2PdcFGLf97wQoT3l0R58%2Ba0MaYhU5ghomWquPQynUp%2Bme79TzrcTCbI7suYMRCznS7ZgKUk%2BMZY1SEuRVNi6FjpO9dx7LYT80YII0GtsbnhpajuC2Zz3ZDZkuS1GCs6kNlSX%2BPtmuiS3eb3cpsLVtqYsl69OGuyGmlzWMHjdLmjf1TrNYCMZiaI4XWhdHa1Xl0jLyWX2Vs6qYFY71dCktnw1Y0lC5AvVa0lC5VPvLZVPWbTtCHPjvnbvhcQyggoVi2Piz0LHrreiN5ZUqe%2BzVEGcEBAUCfhK9g2D6dxGe3a7FBApaXrXLaFz3h2UyrtNfbKIsW%2BYrWhdwrvTCWF%2BrCnfZIWokvwuIQxTNPcQHe5v7%2B1%2FkiJ9mKBkbkd4ILd3FHBOVNgdTuFhFfFPVCT4r3tOJLEnaYz2g9uoshCaiE3IFcWfeasFlWeW%2BDvqvzsxyAbnibxziS6jy7w%2BbX2WYLq0IkMqUBc9Br219p%2BoUfxiRF8U55AdxyxVwMp50g%2Bis2sftmu6gvx6PxF3kCfCIYVLT6qB1DKpVg%2BGup80qcLXfS2%2F%2FKdN7Qp%2B0IUH9gzwQO075hHwOPQ13TDl9NoLso4BW5jsvnzc66puWfwdPr9EzTeA3Tppl3aGIIkWBpBlqHdaBhAM83UbiHaf16q8ffdBML7%2FBw%3D%3D%3C%2Fdiagram%3E%3Cdiagram%20id%3D%2212b50bd2-5ec2-b933-551a-0ba1113ecac9%22%20name%3D%22Config%22%3E5ZVNc5swEIZ%2FDcd6QMKEa0xj99LpwdPpWcAaFAvkEbKx%2B%2Bu7siQ%2BYjKddnLLidW7uxJ6HyECmjXXnWKn%2BrssQQQkLK8B%2FRoQEsUkxYdRblZJk9gKleKlKxqFPf8NTgydeuYldLNCLaXQ%2FDQXC9m2UOiZxpSS%2FbzsIMV81ROr4EHYF0w8qr94qWu3i3U46t%2BAV7VfOQpdpmG%2B2AldzUrZTyT6EtBMSalt1FwzEMY874vt276THV5MQasXGn52oH7kr8YTEgqWI5d7kW0TvD3aca21sfLZNJJtxXV9zleFbHAg%2BKWVLceoa9kRdqwBjHMhc3w0rNOgMEDnD7xavXZ2Zv9%2BJHmCQ0jLQxFGMU2fvkTDnoe9dPrmfVby3JZgeqOAbvqaa9ifWGGyPZ4s1GrdCJe2K11Aabi%2B68Z0vR3IBrS6YYlrIJ6TO5dRurbjfqRMY1dTTwhT6kTmTlY1zD2ab%2Fyxm%2FTDCY5lno9%2BuT1dmDiDZ5cIbazAVFLpuxNW4V4oBOuQxDYbqdgK1PjbLtSmU5E5EjRXz33vtJJHyKSQChU8G1i5OXAh3khM8KrFYYEw8IzQjUHF8aN6domGl6VZZhH0eBTCD2KdrGesiUc4YT1cOFPWafzPqP%2FOlTxgzQQvjubKgPvtZiJ5MbH7Glerz8OGJgtswgU2yX99huN1e89Nflr05Q8%3D%3C%2Fdiagram%3E%3C%2Fmxfile%3E" target="_blank" >View Snake UML Diagram</a>
</button>
</div>
<div id="gameDiv">
<canvas id="snake" width="608" height="608" ></canvas>
</div>
<div>
<p id="scores"></p>
</div>
<div>
<h3 id ="totalGames" style="color: #2d78b2; text-align: center"></h3>
</div>
<div id='loader' class='container' style="display: block">
<div class='loader'>
<div class='loader--dot'></div>
<div class='loader--dot'></div>
<div class='loader--dot'></div>
<div class='loader--dot'></div>
<div class='loader--dot'></div>
<div class='loader--dot'></div>
<div class='loader--text'></div>
</div>
</div>
<div id="score-table"></div>
<div>
<button id="showAllScores" style="height: 50px; display: none">Show all Scores</button>
</div>
<script src="config.js"></script>
<script src="class/Observer.js"></script>
<script src="class/BackgroundListener.js"></script>
<script src="class/Background.js"></script>
<script src="class/Sound.js"></script>
<script src="class/Point.js"></script>
<script src="class/Game.js"></script>
<script src="class/Snake.js"></script>
<script src="class/Food.js"></script>
<script src="index.js"></script>
</body>
</html>