diff --git a/docs/static/skillmap/sparks/bg.gif b/docs/static/skillmap/sparks/bg.gif new file mode 100644 index 0000000000..56d55676ef Binary files /dev/null and b/docs/static/skillmap/sparks/bg.gif differ diff --git a/docs/static/skillmap/sparks/cave.gif b/docs/static/skillmap/sparks/cave.gif new file mode 100644 index 0000000000..bdff7bf555 Binary files /dev/null and b/docs/static/skillmap/sparks/cave.gif differ diff --git a/docs/static/skillmap/sparks/kindling.gif b/docs/static/skillmap/sparks/kindling.gif new file mode 100644 index 0000000000..3667c0821f Binary files /dev/null and b/docs/static/skillmap/sparks/kindling.gif differ diff --git a/docs/static/skillmap/sparks/kindling1.gif b/docs/static/skillmap/sparks/kindling1.gif new file mode 100644 index 0000000000..9ddade9220 Binary files /dev/null and b/docs/static/skillmap/sparks/kindling1.gif differ diff --git a/docs/static/tutorials/lyla/arrows.gif b/docs/static/tutorials/lyla/arrows.gif new file mode 100644 index 0000000000..38e8900b32 Binary files /dev/null and b/docs/static/tutorials/lyla/arrows.gif differ diff --git a/docs/static/tutorials/lyla/circles.gif b/docs/static/tutorials/lyla/circles.gif new file mode 100644 index 0000000000..63b5792c89 Binary files /dev/null and b/docs/static/tutorials/lyla/circles.gif differ diff --git a/docs/static/tutorials/lyla/lyla.png b/docs/static/tutorials/lyla/lyla.png new file mode 100644 index 0000000000..c3619cee9e Binary files /dev/null and b/docs/static/tutorials/lyla/lyla.png differ diff --git a/docs/static/tutorials/lyla/pickle.gif b/docs/static/tutorials/lyla/pickle.gif new file mode 100644 index 0000000000..2a1a2decff Binary files /dev/null and b/docs/static/tutorials/lyla/pickle.gif differ diff --git a/docs/static/tutorials/lyla/play.gif b/docs/static/tutorials/lyla/play.gif new file mode 100644 index 0000000000..c0fac7f825 Binary files /dev/null and b/docs/static/tutorials/lyla/play.gif differ diff --git a/docs/test/skillmap/sparks/sparks1.md b/docs/test/skillmap/sparks/sparks1.md index 5fcb314d15..2e9fb119fc 100644 --- a/docs/test/skillmap/sparks/sparks1.md +++ b/docs/test/skillmap/sparks/sparks1.md @@ -7,11 +7,13 @@ _prΔ“-(h)i-ˈstΘ―r-ik_ -: from a time before human records were kept +: from a time before records were kept --- -This tutorial will help you create your own game, set near prehistoric Mount Carmel in Israel, with the goal of lighting a fire before the wind blows away your sparks. +This tutorial will help you create your own game, set near prehistoric +Mount Carmel in Israel. +The goal is to light a fire before the wind blows away your sparks. ![Campfire Sparks](/static/skillmap/sparks/sparks1.gif "Let's create sparks") @@ -187,11 +189,11 @@ kindling.setPosition(70, 80) πŸ”₯ **Make sparks** πŸ”₯ - :game: From the ``||controller: Controller||`` category **in the toolbox**, grab
-``||controller: on [A] button [pressed]||``
+``||controller: on [B] button [pressed]||``
and drop it into an empty area of the workspace. -The is an **EVENT** block and it will cause the **ACTION** inside to happen each time the (A) button is pressed. +The is an **EVENT** block and it will cause the **ACTION** inside to happen each time the (B) button is pressed. ~hint Tell me about events! πŸ’‘ @@ -207,14 +209,14 @@ hint~ #### ~ tutorialhint ```blocks -controller.A.onEvent(ControllerButtonEvent.Pressed, function () { }) +controller.B.onEvent(ControllerButtonEvent.Pressed, function () { }) ``` ## {10. Add Points} -Now we can add a point each time the (A) button is clicked. +Now we can add a point each time the (B) button is clicked. This will be the **ACTION** that goes with our **EVENT**. @@ -222,14 +224,14 @@ This will be the **ACTION** that goes with our **EVENT**. - :id card: From the ``||info: Info||`` category in the toolbox, grab
``||info: change score by [1]||``
and snap it into the empty
-``||controller(noclick): on [A] button [pressed]||``
+``||controller(noclick): on [B] button [pressed]||``
block that's already in the workspace. #### ~ tutorialhint ```blocks -controller.A.onEvent(ControllerButtonEvent.Pressed, function () { +controller.B.onEvent(ControllerButtonEvent.Pressed, function () { //@highlight info.changeScoreBy(1) }) @@ -246,14 +248,14 @@ We can finish by adding spark effects with each click. - :paper plane: From the ``||sprites: Sprites||`` category in the toolbox, grab
``||sprites: [kindling] start [fire] effect||``
and snap it anywhere inside the
-``||controller(noclick): on [A] button [pressed]||``
+``||controller(noclick): on [B] button [pressed]||``
block that's already in the workspace. #### ~ tutorialhint ```blocks let kindling: Sprite = null -controller.A.onEvent(ControllerButtonEvent.Pressed, function () { +controller.B.onEvent(ControllerButtonEvent.Pressed, function () { info.changeScoreBy(1) //@highlight kindling.startEffect(effects.fire) @@ -268,7 +270,7 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () { - :binoculars: Take a look at the game window to see your project! -You should see sparks ignite your kindling each time you click the (A) button. You should also get a point with each click. +You should see sparks ignite your kindling each time you click the (B) button. You should also get a point with each click. @@ -277,7 +279,8 @@ You should see sparks ignite your kindling each time you click the (A) button. Y Right now, the sparks build too quickly. Let's fix that. -- :mouse pointer: Click the white plus sign to the right of the
+- :mouse pointer: Click the white plus sign ``||sprites: +||`` +to the right of the
``||sprites: [kindling] start [fire] effect||``
block. @@ -286,7 +289,7 @@ block. #### ~ tutorialhint ```blocks -controller.A.onEvent(ControllerButtonEvent.Pressed, function () { +controller.B.onEvent(ControllerButtonEvent.Pressed, function () { info.changeScoreBy(1) //@highlight kindling.startEffect(effects.fire, 100) @@ -334,12 +337,12 @@ game.gameOver(true) let kindling = sprites.create(img`.`, SpriteKind.Player) kindling.setPosition(70, 80) kindling.startEffect(effects.fire) - +controller.B.onEvent(ControllerButtonEvent.Pressed, function () {} ``` ```ghost -controller.A.onEvent(ControllerButtonEvent.Pressed, function () { +controller.B.onEvent(ControllerButtonEvent.Pressed, function () { info.changeScoreBy(1) kindling.startEffect(effects.fire, 25) }) @@ -375,4 +378,4 @@ namespace game { return game.runtime()/100; } } -``` \ No newline at end of file +``` diff --git a/docs/test/skillmap/sparks/sparks2 copy.md b/docs/test/skillmap/sparks/sparks2 copy.md new file mode 100644 index 0000000000..8ee6c99777 --- /dev/null +++ b/docs/test/skillmap/sparks/sparks2 copy.md @@ -0,0 +1,452 @@ +# When the Wind Blows +### @explicitHints true + + +## {Intro @showdialog} + +Your code from the last activity is already in the workspace. + +Let's add some code that allows the player to win or lose. + + +![Time is ticking](/static/skillmap/sparks/sparks2.gif "Let's add win & loss conditions." ) + + + + +## {2. Play Your Game} + + +**Play the clicker game!** + +Press the (B) button or the **enter key** and watch the score go up! + + + + +~hint My game doesn't work ⚠️ + +--- + +If your code isn't working and you can't figure out why, click +
"Replace my code"
+to replace the blocks in your workspace with new starter code. + +hint~ + + + + + +## {3. Win Some} + +**Add a score event.** + +- :id card: From the ``||info:Info||`` category, drag
+``||info:on score [30]||``
+into an **empty area** of the workspace. + + + +#### ~ tutorialhint + +```blocks +info.onScore(30, function () {}) +``` + + + +## {4. Game Over} + +**Win the game when the score reaches 30.** + +- :circle: From the ``||game:Game||`` category, drag
+``||game:game over ||``
+into the **empty**
+``||info(noclick):on score [30]||`` container. + + + +#### ~ tutorialhint + +```blocks +info.onScore(30, function () { + game.gameOver(true) +}) +``` + + + + + + +## {5. Check Your Game!} + + +- :binoculars: Try your project in the game window. + +Press the (B) button as quickly as possible and you should win the game when you score gets to 30. + + + + +## {6. Counting the Seconds} + +Right now, the winning score will always be 30. +Let's change the final score to the amount of time it took to win the game, +then celebrate the "lowest" score. + +--- + +- :id card: From the ``||info:Info||`` category, drag
+``||info:set score to [0]||``
+into the **top of** the
+``||info(noclick):on score [30]||`` container that's already in the workspace. + +- :circle: From the ``||game:Game||`` category, drag
+``||game:time since start (tenths)||``
+to replace **0** inside the
+``||info(noclick):set score to [0]||`` block. + + + +#### ~ tutorialhint + +```blocks +info.onScore(30, function () { + //@highlight + info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths)) + game.gameOver(true) +}) +``` + + + + +## {7. Lowest Wins} + + +- :circle: From the ``||game:Game||`` category, drag
+``||game:use [high score] as best score||``
+into the **top of** the
+``||info(noclick):on score [30]||`` container that's already in the workspace. + +- :mouse pointer: Click ``||game:high score||`` and choose +``||game: low score||`` from the dropdown menu. + + + +#### ~ tutorialhint + +```blocks +info.onScore(30, function () { + //@highlight + game.setGameOverScoringType(game.ScoringType.LowScore) + info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths)) + game.gameOver(true) +}) +``` + + + +## {8. How long has this been going on?} + +Let the user see how long they've been playing. + + +- :stopwatch: From the ``||stopwatch:Stopwatch||`` category, drag
+``||stopwatch:start timer using [tenths only]||``
+into the **end of** the
+``||loops(noclick):on start||`` container that's already in the workspace. + + +#### ~ tutorialhint + +```blocks + +//@highlight +stopwatch.startTimer(stopwatch.TimerType.Tenths) +``` + + + +## {9. Check Your Game!} + + +- :binoculars: Try your project in the game window again. + +Press the (B) button as quickly as possible and +see how long it takes you to win the game when you score gets to 30. + + + + + +## {10. Lose Some} + + +**Time for a challenge!**
+❀️‍πŸ”₯ ❀️‍πŸ”₯ ❀️‍πŸ”₯ + +It's too easy to reach 30. +Let's subtract a point every second to represent the effects of the wind. + +--- + + +- :circle: From the ``||game:Game||`` category, drag
+``||game: on game update every [500] ms||``
+into **an empty area** of the workspace. + +- :mouse pointer: Change **500** ms to **1000** ms (which is also 1 second.) + + + +#### ~ tutorialhint + +```blocks +game.onUpdateInterval(1000, function () { }) +``` + + +## {11. Losing It} + + +- :id card: From the ``||info:Info||`` category, drag
+``||info: change score by [1]||``
+into **the empty**
+``||game(noclick): on game update every [1000] ms||``
+container already in the workspace. + +- :mouse pointer: Change **1** to **-1** to remove a point. + + + +#### ~ tutorialhint + +```blocks +game.onUpdateInterval(1000, function () { +//@highlight + info.changeScoreBy(-1) +}) +``` + + + + + +## {12. Check Your Game!} + + +- :binoculars: Try your project in the game window. + +Press the (B) button as quickly as possible and see if you can hit 30 points before too many points are taken away. + + + + + +## {13. Enough is Enough} + +Let's add a way to lose the game when points fall too far below zero. + +πŸ•°οΈ πŸ•°οΈ πŸ•°οΈ + +- :id card: From the ``||info:Info||`` category, drag
+``||info:on score [30]||``
+into an **empty area** of the workspace. + +- :mouse pointer: Click inside the empty container and change **30** to **-5**. + + +#### ~ tutorialhint + +```blocks +info.onScore(-5, function () { }) +``` + + + + +## {14. Enough is Enough} + + + +- :circle: From the ``||game:Game||`` category, drag
+``||game:game over ||``
+into the **empty**
+``||info(noclick):on score [-5]||`` container. + +- :mouse pointer: Click **`** and change it to **`**. + + + +#### ~ tutorialhint + +```blocks +info.onScore(-5, function () { + //@highlight + game.gameOver(false) +}) +``` + + + +## {15. Check Your Game!} + + +- :binoculars: Take a look at the game window + +Don't touch any buttons or keys...you should lose the game after five seconds. + + + +## {16. Play again} + +- :sync alt: Reset your game and play again! + +Click the (B) button as fast as you can. Is the game any harder to win? + +πŸ’‘ _Don't worry if your game is still too easy. In the next tutorial, we'll add more +levels, which will make the game much harder!_ + + + + +## {17. Too Lossy} + +Now the player loses the game if they're not ready to start. + +Let's add a start screen to give the player a chance to catch up. + +--- + +- :circle: From the ``||game:Game||`` category, drag
+``||game:show long text [You are in ...]||``
+into the **top of** the
+``||loops(noclick):on start||`` container already in the workspace. + + +#### ~ tutorialhint + +```blocks +let kindling: Sprite = null +game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full) +scene.setBackgroundImage(sparks.background) +kindling = sprites.create(sparks.pile1, SpriteKind.Player) +kindling.setPosition(70, 80) +``` + + +## {18. More words} + +Add another block to share the goal of the game. + +--- + +- :circle: From the ``||game:Game||`` category, drag
+``||game:show long text [The world...]||``
+into the ``||loops(noclick):on start||`` container, just below the
+``||game:show long text [You are in ...]||``
+block. + + +#### ~ tutorialhint + +```blocks +let kindling: Sprite = null +game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full) +game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full) +scene.setBackgroundImage(sparks.background) +kindling = sprites.create(sparks.pile1, SpriteKind.Player) +kindling.setPosition(70, 80) +``` +```blockconfig.local +game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full) +``` + + + +## {19. Play again} + +- :binoculars: Reset your game and play again! + +You should see your messages and be able to clear them with the (A) button. + +The points won't start going down until your final message is dismissed. + + + + + +## {Finale} + +**πŸ‘¨πŸ½β€πŸš’ You're FIRE πŸ‘¨πŸ½β€πŸš’** + +What a great game you've got there! + + +~hint How do I share my game?πŸ’‘ + +--- + +**Want to share your game?** + +Click "Done" to get back out to the skillmap, then look in the lower-right corner for the share button. + +![Share your card](/static/skillmap/sparks/share.gif ) + +hint~ + + +When you're ready, click **Done** to return to the skillmap so you can +add levels to your game! + + +```blockconfig.global +info.onScore(30, function () {}) +game.gameOver(true) +let kindling = sprites.create(img`.`, SpriteKind.Player) +kindling.setPosition(70, 80) +kindling.startEffect(effects.fire) +game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full) +info.onScore(30) +controller.B.onEvent(ControllerButtonEvent.Pressed, function () {}) +stopwatch.getTimerValue(stopwatch.TimerGran.Tenths) +stopwatch.startTimer(stopwatch.TimerType.Tens) +``` + +```template + +controller.B.onEvent(ControllerButtonEvent.Pressed, function () { + info.changeScoreBy(1) + kindling.startEffect(effects.fire, 100) +}) + +let kindling: Sprite = null +scene.setBackgroundImage(sparks.background1) +kindling = sprites.create(sparks.pile1, SpriteKind.Player) +kindling.setPosition(70, 80) +``` + +```ghost +info.onScore(30, function () { + game.gameOver(true) +}) + +game.onUpdateInterval(1000, function () { + if (inCutscene == false) { + info.changeScoreBy(currentLevel * -1) + } +}) +``` + + + +```package +arcade-storytelling=github:microsoft/arcade-storytelling +arcade-text=github:microsoft/arcade-text +sparks=github:kiki-lee/sparks#v0.0.5 +stopwatch=github:kiki-lee/stopwatch#v0.0.5 +``` + diff --git a/docs/test/skillmap/sparks/sparks2.md b/docs/test/skillmap/sparks/sparks2.md index 37ce80b166..ba250972b1 100644 --- a/docs/test/skillmap/sparks/sparks2.md +++ b/docs/test/skillmap/sparks/sparks2.md @@ -1,4 +1,4 @@ -# Pile of Sticks +# Winner, Winner ### @explicitHints true @@ -9,7 +9,7 @@ Your code from the last activity is already in the workspace. Let's add some code that allows the player to win or lose. -![Time is ticking](/static/skillmap/sparks/sparks2.gif "Let's add win & loss conditions." ) +![Time is ticking](/static/skillmap/sparks/sparks2.gif "Let's add a way to win." ) @@ -19,7 +19,7 @@ Let's add some code that allows the player to win or lose. **Play the clicker game!** -Press the (A) button or **space bar** and watch the score go up! +Press the (B) button or the **enter key** and watch the score go up! @@ -85,14 +85,18 @@ info.onScore(30, function () { - :binoculars: Try your project in the game window. -Press the (A) button as quickly as possible and you should win the game when you score gets to 30. +Press the (B) button as quickly as possible and you should win the game when you score gets to 30. ## {6. Counting the Seconds} -Right now, the winning score will always be 30. Let's change the final score to the amount of time it took to win the game, then celebrate the "lowest" score. +Right now, the winning score will always be 30. +Let's change the final score to the amount of time it took to win the game, +then celebrate the "lowest" score. + +--- - :id card: From the ``||info:Info||`` category, drag
``||info:set score to [0]||``
@@ -100,7 +104,7 @@ into the **top of** the
``||info(noclick):on score [30]||`` container that's already in the workspace. - :circle: From the ``||game:Game||`` category, drag
-``||game:time since start (tenths)||``
+``||stopwatch:timer value [tenths]||``
to replace **0** inside the
``||info(noclick):set score to [0]||`` block. @@ -111,7 +115,7 @@ to replace **0** inside the
```blocks info.onScore(30, function () { //@highlight - info.setScore(game.timeSinceStartSec()) + info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths)) game.gameOver(true) }) ``` @@ -138,147 +142,49 @@ into the **top of** the
info.onScore(30, function () { //@highlight game.setGameOverScoringType(game.ScoringType.LowScore) - info.setScore(game.timeSinceStartSec()) + info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths)) game.gameOver(true) }) ``` +## {8. How long has this been going on?} -## {8. Lose Some} - - -**Time for a challenge!**
-❀️‍πŸ”₯ ❀️‍πŸ”₯ ❀️‍πŸ”₯ - -It's too easy to reach 30. Let's subtract a point every second to add a twist. - - -- :circle: From the ``||game:Game||`` category, drag
-``||game: on game update every [500] ms||``
-into **an empty area** of the workspace. - -- :mouse pointer: Change **500** ms to **1000** ms (which is also 1 second.) - - - -#### ~ tutorialhint - -```blocks -game.onUpdateInterval(1000, function () { }) -``` - - -## {9. Lose Some} - - -- :id card: From the ``||info:Info||`` category, drag
-``||info: change score by [1]||``
-into **the empty**
-``||game(noclick): on game update every [1000] ms||``
-container already in the workspace. +Let the user see how long they've been playing. -- :mouse pointer: Change **1** to **-1** to remove a point. +- :stopwatch: From the ``||stopwatch:Stopwatch||`` category, drag
+``||stopwatch:start timer using [tenths only]||``
+into the **end of** the
+``||loops(noclick):on start||`` container that's already in the workspace. #### ~ tutorialhint ```blocks -game.onUpdateInterval(1000, function () { +let kindling: Sprite = null +scene.setBackgroundImage(sparks.background1) +kindling = sprites.create(sparks.pile1, SpriteKind.Player) +kindling.setPosition(70, 80) //@highlight - info.changeScoreBy(-1) -}) -``` - - - - - -## {10. Check Your Game!} - - -- :binoculars: Try your project in the game window. - -Press the (A) button as quickly as possible and see if you can hit 30 points before too many points are taken away. - - - - - -## {11. Enough is Enough} - -Let's add a way to lose the game when points fall too far below zero. - -πŸ•°οΈ πŸ•°οΈ πŸ•°οΈ - -- :id card: From the ``||info:Info||`` category, drag
-``||info:on score [30]||``
-into an **empty area** of the workspace. - -- :mouse pointer: Click inside the empty container and change **30** to **-5**. - - -#### ~ tutorialhint - -```blocks -info.onScore(-5, function () { }) -``` - - - - -## {12. Enough is Enough} - - - -- :circle: From the ``||game:Game||`` category, drag
-``||game:game over ||``
-into the **empty**
-``||info(noclick):on score [-5]||`` container. - -- :mouse pointer: Click **`** and change it to **`**. - - - -#### ~ tutorialhint - -```blocks -info.onScore(-5, function () { - //@highlight - game.gameOver(false) -}) +stopwatch.startTimer(stopwatch.TimerType.Tens) ``` +## {9. Check Your Game!} +- :binoculars: Try your project in the game window again. -## {13. Check Your Game!} - - -- :binoculars: Take a look at the game window - -Don't touch any buttons or keys...you should lose the game after five seconds. - +Press the (B) button as quickly as possible and +see how long it takes you to win the game when you score gets to 30. -## {14. Play again} -- :binoculars: Reset your game and play again! - -Click the (A) button as fast as you can. Is the game any harder to win? - -πŸ’‘ _Don't worry if your game is still too easy. In the next tutorial, we'll add more -levels, which will make the game much harder!_ - - - - -## {9. Finale} +## {Finale} **πŸ‘¨πŸ½β€πŸš’ You're FIRE πŸ‘¨πŸ½β€πŸš’** @@ -308,19 +214,22 @@ game.gameOver(true) let kindling = sprites.create(img`.`, SpriteKind.Player) kindling.setPosition(70, 80) kindling.startEffect(effects.fire) - -info.onScore(30, function () { }) +game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full) +info.onScore(30) +controller.B.onEvent(ControllerButtonEvent.Pressed, function () {}) +stopwatch.getTimerValue(stopwatch.TimerGran.Tenths) +stopwatch.startTimer(stopwatch.TimerType.Tens) ``` ```template -controller.A.onEvent(ControllerButtonEvent.Pressed, function () { +controller.B.onEvent(ControllerButtonEvent.Pressed, function () { info.changeScoreBy(1) - kindling.startEffect(effects.fire, 25) + kindling.startEffect(effects.fire, 100) }) let kindling: Sprite = null -scene.setBackgroundImage(sparks.background) +scene.setBackgroundImage(sparks.background1) kindling = sprites.create(sparks.pile1, SpriteKind.Player) kindling.setPosition(70, 80) ``` @@ -340,24 +249,9 @@ game.onUpdateInterval(1000, function () { ```package -arcade-carnival=github:microsoft/arcade-carnival arcade-storytelling=github:microsoft/arcade-storytelling arcade-text=github:microsoft/arcade-text sparks=github:kiki-lee/sparks#v0.0.5 - +stopwatch=github:kiki-lee/stopwatch#v0.0.5 ``` - - -```customts -namespace game { - /** - * This is a reporter block that returns - * the number of seconds since the game started - */ - //% block="time since start (tenths) " - export function timeSinceStartSec(): number { - return game.runtime()/100; - } -} -``` \ No newline at end of file diff --git a/docs/test/skillmap/sparks/sparks3.md b/docs/test/skillmap/sparks/sparks3.md index 51e60ea155..ad58207b6c 100644 --- a/docs/test/skillmap/sparks/sparks3.md +++ b/docs/test/skillmap/sparks/sparks3.md @@ -1,4 +1,4 @@ -# Get Animated +# When the Wind Blows ### @explicitHints true @@ -6,10 +6,10 @@ Your code from the last activity is already in the workspace. -Let's make our game more professional by adding sound and animation. +Let's add some code that allows the player to win or lose. -![Whack-the-Mole](/static/skillmap/mole/mole3.gif "Let's add sound and an animation for the hammer." ) +![Let's add some wind](/static/skillmap/sparks/sparks3.gif "Let's add wind to take points away." ) @@ -17,9 +17,9 @@ Let's make our game more professional by adding sound and animation. ## {2. Play Your Game} -- :binoculars: Play the game you have so far. +**Play the clicker game!** -Using the joypad (or the arrow keys on your keyboard) move the hammer around the screen and earn 1 point each time it overlaps the mole! +Press the (B) button or the **enter key** and see how fast you can light your fire! ~hint My game doesn't work ⚠️ @@ -35,189 +35,210 @@ hint~ +## {3. Lose Some} +**Time for a challenge!**
+❀️‍πŸ”₯ ❀️‍πŸ”₯ ❀️‍πŸ”₯ -## {3. Add the Label} +It's too easy to reach 30. +Let's subtract a point every second to represent the effects of the wind. -**Let’s add a label to the bottom our Whack-the-Mole game booth.** +--- -- :tree: From the ``||carnival: Carnival||`` category in the toolbox, grab
-```block -carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom) -``` +- :circle: From the ``||game:Game||`` category, drag
+``||game: on game update every [500] ms||``
+into **an empty area** of the workspace. -and snap it inside and at the very **end** of the -``||loops(noclick): on start||`` -block container that's already in your workspace. +- :mouse pointer: Change **500** ms to **1000** ms (which is also 1 second.) -~hint Show me how! πŸ•΅πŸ½ -![Choose the hammer from My Assets](/static/skillmap/mole/add-label.gif "Change from the Editor to My Assets and select the hammer.") +#### ~ tutorialhint + +```blocks +//@highlight +game.onUpdateInterval(1000, function () { }) +``` -hint~ -πŸ’‘ **Tip:** _Don't forget to look at your game to see what your new addition did!_ +## {4. Losing It} +- :id card: From the ``||info:Info||`` category, drag
+``||info: change score by [1]||``
+into **the empty**
+``||game(noclick): on game update every [1000] ms||``
+container already in the workspace. + +- :mouse pointer: Change **1** to **-1** to remove a point. + #### ~ tutorialhint ```blocks -let myMole: Sprite = null -let myHammer: Sprite = null -scene.setBackgroundImage(assets.image`grid`) -myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy) -myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player) -simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast) -carnival.startCountdownGame(15, carnival.WinTypes.Score) +game.onUpdateInterval(1000, function () { //@highlight -carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom) + info.changeScoreBy(-1) +}) ``` -## {4. Drop the Beat} -**Add a sound when the rubber hammer overlaps the mole.** -- :headphones: From the ``||music: Music||`` category, grab
+## {5. Check Your Game!} -```block - music.baDing.play() -``` -and snap it in at **the end** of the ``||sprites(noclick): on sprite overlaps otherSprite||`` block already in the workspace. +- :binoculars: Try your project in the game window. -- :mouse pointer: Change ``||music(noclick): ba ding||`` to whatever sound brings you joy. +Press the (B) button as quickly as possible and see if you can hit 30 points before too many points are taken away. -~hint Click here to see how πŸ•΅πŸ½ -![Look under Controller for the block](/static/skillmap/mole/add-music.gif "Drag out the controller block to use later.") -hint~ +## {6. Enough is Enough} +Let's add a way to lose the game when points fall too far below zero. +πŸ•°οΈ πŸ•°οΈ πŸ•°οΈ +- :id card: From the ``||info:Info||`` category, drag
+``||info:on score [30]||``
+into an **empty area** of the workspace. + +- :mouse pointer: Click inside the empty container and change **30** to **-5**. #### ~ tutorialhint ```blocks -sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) { - let myMole: Sprite = null - let myHammer: Sprite = null - info.changeScoreBy(1) - simplified.moveToRandomHoleOnGrid(myMole) - //@highlight -music.knock.play() - -}) +//@highlight +info.onScore(-5, function () { }) ``` -## {5. Check Your Game!} -- :binoculars: Test your game! +## {7. Enough is Enough Contd.} -The mole should hop between holes and you should be able to move the hammer with your arrow keys or the joypad. +- :circle: From the ``||game:Game||`` category, drag
+``||game:game over ||``
+into the **empty**
+``||info(noclick):on score [-5]||`` container. -You should also see the Whack-the-Mole label, and be able to hear a sound each time the rubber hammer overlaps the mole. +- :mouse pointer: Click **`** and change it to **`**. ---- -πŸ’‘ _If you're not hearing anything in your game, you may need to **unmute** the game window using the speaker icon._ +#### ~ tutorialhint +```blocks +info.onScore(-5, function () { + //@highlight + game.gameOver(false) +}) +``` +## {8. Check Your Game!} +- :binoculars: Take a look at the game window -## {6. Add Animation} +Don't touch any buttons or keys...you should lose the game after five seconds. -**Finally, let's animate the rubber hammer each time it overlaps the mole.** -- :mouse pointer: At the bottom of the toolbox, click **Advanced** to show more categories. +## {9. Play again} -- :sync: From the ``||animation: Animation||`` category, grab
+- :sync alt: Reset your game and play again! -```block -animation.runImageAnimation( -myHammer, -[img` - . - `], -50, -false -) -``` +Click the (B) button as fast as you can. Is the game any harder to win? -and snap it in at **the end** of the ``||sprites(noclick): on sprite overlaps otherSprite||`` block already in the workspace. +πŸ’‘ _Don't worry if your game is still too easy. In the next tutorial, we'll add more +levels, which will make the game much harder!_ -- :mouse pointer: Click the empty square and when the image editor opens, switch to **My Assets** to select the **hammerAnimation** option and click **Done**. -~hint Show me how! πŸ•΅πŸ½ +## {10. Too Lossy} -![Add the sprite block.](/static/skillmap/mole/add-animation.gif "Add a sprite to your game.") +Now the player loses the game if they're not ready to start. -hint~ +Let's add a start screen to give the player a chance to catch up. +--- +- :circle: From the ``||game:Game||`` category, drag
+``||game:show long text [You are in ...]||``
+into the **top of** the
+``||loops(noclick):on start||`` container already in the workspace. #### ~ tutorialhint - ```blocks -sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) { - let myMole: Sprite = null - let myHammer: Sprite = null - info.changeScoreBy(1) - simplified.moveToRandomHoleOnGrid(myMole) - music.knock.play() - //@highlight -animation.runImageAnimation( -myHammer, -assets.animation`hammerAnimation`, -50, -false -) -}) +let kindling: Sprite = null +//@highlight +game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full) +scene.setBackgroundImage(sparks.background) +kindling = sprites.create(sparks.pile1, SpriteKind.Player) +kindling.setPosition(70, 80) ``` -## {7. Check Your Game Again!} +## {11. More words} + +Add another block to share the goal of the game. + +--- + +- :circle: From the ``||game:Game||`` category, drag
+``||game:show long text [The world...]||``
+into the ``||loops(noclick):on start||`` container, just below the
+``||game:show long text [You are in ...]||``
+block. +#### ~ tutorialhint + +```blocks +let kindling: Sprite = null +game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full) +//@highlight +game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full) +scene.setBackgroundImage(sparks.background) +kindling = sprites.create(sparks.pile1, SpriteKind.Player) +kindling.setPosition(70, 80) +``` +```blockconfig.local +game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full) +``` + -- :binoculars: Play your game in the game window! -When your rubber hammer overlaps the mole, points should show up in the top-right corner, a sound should play, and you should see the rubber hammer move back and forth. +## {12. Play again} -**How many times can you tag the mole in 15 seconds?** +- :binoculars: Reset your game and play again! +You should see your messages and be able to clear them with the (A) button. +The points won't start going down until your final message is dismissed. -## {11. Finale} +## {Finale} -**🎑 You've done it! 🎑** +**πŸ”₯ So HOT πŸ”₯** -You've created a Whack-the-Mole game! +Now that's a great game! ~hint How do I share my game?πŸ’‘ @@ -228,75 +249,67 @@ You've created a Whack-the-Mole game! Click "Done" to get back out to the skillmap, then look in the lower-right corner for the share button. -![Share your card](/static/skillmap/mole/share.gif ) +![Share your card](/static/skillmap/sparks/share.gif ) hint~ -When you're ready, click **Done** to return to the skillmap so you can turn it into a game for two players! - - - +When you're ready, click **Done** to return to the skillmap so you can +add levels to your game! ```blockconfig.global -let myHammer: Sprite = null -animation.runImageAnimation( -myHammer, -[img`.`], -50, -false -) -myHammer = sprites.create(img`.`, SpriteKind.Player) -sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) { info.changeScoreBy(1) }) -carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom) -carnival.startCountdownGame(15, carnival.WinTypes.Score) -simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast) -simplified.moveToRandomHoleOnGrid(myMole) - +info.onScore(30, function () {}) +game.gameOver(true) +let kindling = sprites.create(img`.`, SpriteKind.Player) +kindling.setPosition(70, 80) +kindling.startEffect(effects.fire) +game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full) +info.onScore(30) +controller.B.onEvent(ControllerButtonEvent.Pressed, function () {}) +stopwatch.getTimerValue(stopwatch.TimerGran.Tenths) +stopwatch.startTimer(stopwatch.TimerType.Tens) ``` +```template +controller.B.onEvent(ControllerButtonEvent.Pressed, function () { + info.changeScoreBy(1) + kindling.startEffect(effects.fire, 100) +}) -```package -carnival=github:microsoft/arcade-carnival#v0.0.7 -mole-images=github:microsoft/arcade-tutorial-extensions/mole-images#v0.0.11 -``` - +let kindling: Sprite = null +scene.setBackgroundImage(sparks.background1) +kindling = sprites.create(sparks.pile1, SpriteKind.Player) +kindling.setPosition(70, 80) +stopwatch.startTimer(stopwatch.TimerType.Tens) -```template +info.onScore(30, function () { + game.setGameOverScoringType(game.ScoringType.LowScore) + info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths)) + game.gameOver(true) +}) -sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) { - info.changeScoreBy(1) - simplified.moveToRandomHoleOnGrid(myMole) +``` +```ghost +info.onScore(30, function () { + game.gameOver(true) }) -let myMole: Sprite = null -let myHammer: Sprite = null -scene.setBackgroundImage(assets.image`grid`) -myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy) -myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player) -simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast) -carnival.startCountdownGame(15, carnival.WinTypes.Score) game.onUpdateInterval(1000, function () { - simplified.moveToRandomHoleOnGrid(myMole) + if (inCutscene == false) { + info.changeScoreBy(currentLevel * -1) + } }) - ``` +```package +arcade-storytelling=github:microsoft/arcade-storytelling +arcade-text=github:microsoft/arcade-text +sparks=github:kiki-lee/sparks#v0.0.5 +stopwatch=github:kiki-lee/stopwatch#v0.0.5 +``` -```assetjson -{ - "README.md": " ", - "assets.json": "", - "custom.ts": "", - "images.g.jres": "{\n \"Qv@;p79@e|(fGBFKaJ@[\": {\n \"data\": \"hwQQABAAAAAAAO7u7u7u7gDg7u7u7u7uAO7u7u7u7u4A7u7u7u7v7gDu7v7u7v7uAO7u7u/v/u4A7v/u8+7+7gDu7u4z7v7uAO7u7jPu/u4A7v/u8+7+7gDu7u7v7/7uAO7u/u7u/u4A7u7u7u7v7gDu7u7u7u7uAODu7u7u7u4AAO7u7u7u7g==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"mole\"\n },\n \"/LJ4HDC9/+6j@JGvC7#:\": {\n \"data\": \"hwSgAHgAAABmZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/////93d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d397u7u8t/d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3f3v7u7u8z8f3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3e/u7u7y8zM/3d3d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3e/u7u7y8zM/Hd3d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d/e7u7u7zMzMzH93d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d7+7u7u7zMzMzPx3d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d7+7u7u7zMzMzPx3d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d7+7u7vLzMzMzMx/d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d397u7u7vMzMzMzMx/d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d397u7u7vMzMzMzMx/d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d397u7u7vLzMzMzMx/d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d7+7u7vLzMzMzPx3d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d/e7u7u7zMzMzPx3d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d/e7u7u7zMzMzH93d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3e/u7u7zMzM/Hd3d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3f3u7u7y8zM/3d3d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3f3v7u7y8z8f3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d397u7u8t8d3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/////93d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d3d7+7u7v8d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3d3/7u7u8vM/3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3f3u7u7u8zM/H93d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3f3u7u7u8zMzH93d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d/e7u7u7zMzMzMz8d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d3d7+7u7u7zMzMzMz8d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d/e7u7u7zMzMzMx/d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d3e/u7u7y8zMzMx/d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3f3u7u7y8zMzH93d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3d3v7u7u8zM/H93d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3d3/7u7u8zM/3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d3d7+7u7vMd3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d3d7+7u7v8d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3d3/7u7u8vM/3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3f3u7u7u8zM/H93d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3f3u7u7u8zMzH93d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d/e7u7u7zMzMzMz8d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d3d7+7u7u7zMzMzMz8d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d/e7u7u7zMzMzMx/d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d3e/u7u7y8zMzMx/d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3f3u7u7y8zMzH93d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3d3v7u7u8zM/H93d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3d3/7u7u8zM/3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d3d7+7u7vMd3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////8=\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"grid\"\n },\n \"Oag!`vsg+~Y,+WT2meT;\": {\n \"data\": \"hwQgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwNwNAAAAAAAAAAAAAAAAAMDcDQAAAAAAAAAAAAAAAMDcvQsAAAAAAAAAAAAAAADA3L0LAAAAAAAAAAAAAADA3L0LAAAAAAAAAAAAAAAAwNy9CwAAAAAAAAAAAAAAwNy9CwAAAAAAAAAAAAAAAMDcvQsAAAAAAABABAAAAMDcvQsAAAAAAAAAQAQAAADA3L0LAAAAAAAAQCTiDgDA3L0LAAAAAAAAAEAk4g4AwNy9CwAAAAAAAEAk4u7uzty9CwAAAAAAAABAJOLu7s7cvQsAAAAAAABAJOLu7u7evQsAAAAAAAAAQCTi7u7u3r0LAAAAAAAAACTi7u7u7u7uDgAAAAAAAAAk4u7u7u7u7g4AAAAAAAAA4O7u7u7u7u7uDgAAAAAAAODu7u7u7u7u7g4AAAAAAAAA4O7u7u7u7o5oBgAAAAAAAODu7u7u7u6OaAYAAAAAAAAA4O7u7u6OaAYAAAAAAAAAAODu7u7ujmgGAAAAAAAAAAAA4O7ujmgGAAAAAAAAAAAAAODu7o5oBgAAAAAAAAAAAAAA4I5oBgAAAAAAAAAAAAAAAOCOaAYAAAAAAAAAAAAAAAAAYAYAAAAAAAAAAAAAAAAAAGAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"hammer\"\n },\n \"anim1\": {\n \"namespace\": \"myAnimations\",\n \"id\": \"anim1\",\n \"mimeType\": \"application/mkcd-animation\",\n \"data\": \"YzgwMDEwMDAxMDAwMDQwMDAwMDAwMDUwMDAwMDAwMDAwMDAwMDA1MDA1MDAwMDAwNTBlZWVlZWVlZWVlZWUwNWUwZWVlZWVlZWVlZWVlMGVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZmVlZWVlZWVlZWZlMzMzM2VmZWVlZWVlZWVlZTNmZjNlZWVlZWVlZWVlZmVlZWVlZWZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVlZWVlZWVmZWVlZWVlZmZmZmZmZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWUwMDAwNTAwMDAwMDAwMDUwMDUwMDAwMDUwMDAwMDAwNTA1MDAwMDUwMDAwMDAwNTA1MDAwMDA1MDA1MDA1MDA1MDUwMDAwMDAwMDAwMDAwMDAwZWVlZWVlZWVlZWVlMDBlMGVlZWVlZWVlZWVlZTBlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVmZmVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmZWVlZWZlZWVlZWVlZWVmZTMzMzNlZmVlZWVlZWVlZWUzZmYzZWVlZWVlZWVlZWZlZWVlZWVmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZWVlZWVlZmVlMDAwMDAwMDUwMDAwMDAwMDAwMDAwMDUwMDAwMDAwMDAwNTAwMDAwMDA1MDAwMDAwNTAwMDAwMDAwNTAwMDA1MDUwMDAwMDUwMDAwMDAwMDUwMDA1MDA1MDAwMDAwMDUwNTAwMDAwMDAwMDAwMDA1NTAwMDAwMDAwMDAwMDAwMDAwMGVlZWVlZWVlZWVlZTAwZTBlZWVlZWVlZWVlZWUwZWVlZWVlZWVmZmVlZWVlZWVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVmZWVlZWVlZWVlZmUzMzMzZWZlZWVlZWVlZWVlM2ZmM2VlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlZWVlZWVlZWVlZWUwMGUwZWVlZWVlZWVlZWVlMGVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZmVlZWVlZWVlZWZlMzMzM2VmZWVlZWVlZWVlZTNmZjNlZWVlZWVlZWVlZmVlZWVlZWZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVlZWVlZWVmZWVlZWVlZmZmZmZmZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWU=\",\n \"displayName\": \"moleAnimation\"\n },\n \"anim2\": {\n \"namespace\": \"myAnimations\",\n \"id\": \"anim2\",\n \"mimeType\": \"application/mkcd-animation\",\n \"data\": \"MzIwMDIwMDAyMDAwMDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDA0NDQ0NDQ0NDQ0MDAwMDAwMDAwMDAwMDAwMDAwMDA0MDQ0NDQ0NDQ0NDQwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMjIyMjIyMjIyMjAwMDAwMDAwMDAwMDAwMDAwMDAwMjAyMjIyMjIyMjIyMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVjMGNjY2NjY2NjY2NjY2NjY2NjY2VjZWVlZWVlZWVlZWQwZGRkZGRkZGRkZGRkZGRkZGRkZWRlZWVlZWVlZWVlZDBkZGRkZGRkZGRkZGRkZGRkZGRlZGVlZWVlZWVlZWViMGJiYmJiYmJiYmJiYmJiYmJiYmViZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDg4ODg4ODg4ODgwMDAwMDAwMDAwMDAwMDAwMDAwMDgwODg4ODg4ODg4ODAwMDAwMDAwMDAwMDAwMDAwMDAwNjA2NjY2NjY2NjY2MDAwMDAwMDAwMDAwMDAwMDAwMDA2MDY2NjY2NjY2NjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwNDQ0NDQ0NDQ0NDAwMDAwMDAwMDAwMDAwMDAwMDAwNDA0NDQ0NDQ0NDQ0MDAwMDAwMDAwMDAwMDAwMDAwMDAyMDIyMjIyMjIyMjIwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMjIyMjIyMjIyMjAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlYzBjY2NjY2NjY2NjY2NjY2NjY2NlY2VlZWVlZWVlZWVkMGRkZGRkZGRkZGRkZGRkZGRkZGVkZWVlZWVlZWVlZWQwZGRkZGRkZGRkZGRkZGRkZGRkZWRlZWVlZWVlZWVlYjBiYmJiYmJiYmJiYmJiYmJiYmJlYmVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwODA4ODg4ODg4ODg4MDAwMDAwMDAwMDAwMDAwMDAwMDA4MDg4ODg4ODg4ODgwMDAwMDAwMDAwMDAwMDAwMDAwMDYwNjY2NjY2NjY2NjAwMDAwMDAwMDAwMDAwMDAwMDAwNjA2NjY2NjY2NjY2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDQwMDQwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwNDAwNDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwZTAyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDBlMDJlNDIwNDAwMDAwMDAwMDAwMDAwMDBiMGRiY2RlY2VlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJjZGVjZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwMDBiMGRiZWRlZWVlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJlZGVlZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWUyZTQyMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZTJlNDIwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlODBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4MGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwMDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkMGNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDQwMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMGUwMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwZTAyZTQyMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmNkZWNlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiY2RlY2VlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmVkZWVlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiZWRlZWVlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlMmU0MjAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWUyZTQyMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZTgwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlODBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwMDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkMGNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwNDAwNDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDBlMDJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMGUwMmU0MjA0MDAwMDAwMDAwMDAwMDAwMGIwZGJjZGVjZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmNkZWNlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDAwMGIwZGJlZGVlZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmVkZWVlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZTJlNDIwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlMmU0MjAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4MGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZTgwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDQ0NDQ0NDQ0NDQwMDAwMDAwMDAwMDAwMDAwMDAwMDQwNDQ0NDQ0NDQ0NDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAyMjIyMjIyMjIyMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDIyMjIyMjIyMjIwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWMwY2NjY2NjY2NjY2NjY2NjY2NjZWNlZWVlZWVlZWVlZDBkZGRkZGRkZGRkZGRkZGRkZGRlZGVlZWVlZWVlZWVkMGRkZGRkZGRkZGRkZGRkZGRkZGVkZWVlZWVlZWVlZWIwYmJiYmJiYmJiYmJiYmJiYmJiZWJlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMDgwODg4ODg4ODg4ODAwMDAwMDAwMDAwMDAwMDAwMDAwODA4ODg4ODg4ODg4MDAwMDAwMDAwMDAwMDAwMDAwMDA2MDY2NjY2NjY2NjYwMDAwMDAwMDAwMDAwMDAwMDAwMDYwNjY2NjY2NjY2NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDI0ZTIwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMjRlMjBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMjRlMmVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwNDAyNGUyZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwNDAyNGUyZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDA0MDI0ZTJlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDA0MDI0ZTJlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDQwMjRlMmVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZThlNjgwNjAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlOGU2ODA2MDAwMDAwMDAwMDAwYzBkY2VkZWVlZWVlOGU2ODA2MDAwMDAwMDAwMDAwMDBjMGRjZWRlZWVlZWU4ZTY4MDYwMDAwMDAwMDAwMDBjMGRjYmRlYmVlZWU4ZTY4MDYwMDAwMDAwMDAwMDAwMGMwZGNiZGViZWVlZThlNjgwNjAwMDAwMDAwMDAwMGMwZGNiZDBiMDBlMDhlNjgwNjAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMGUwOGU2ODA2MDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDYwMDYwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGMwZGNiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGMwZGNiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA=\",\n \"displayName\": \"hammerAnimation\"\n },\n \"*\": {\n \"mimeType\": \"image/x-mkcd-f4\",\n \"dataEncoding\": \"base64\",\n \"namespace\": \"myImages\"\n }\n}", - "images.g.ts": "// Auto-generated code. Do not edit.\nnamespace myImages {\n\n helpers._registerFactory(\"image\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"Qv@;p79@e|(fGBFKaJ@[\":\n case \"mole\":return img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`;\n case \"/LJ4HDC9/+6j@JGvC7#:\":\n case \"grid\":return img`\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff777777777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc77777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777fcccccccccccccccccccccccccccccccf7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n7777777777777ffcccccccccccccccccccccccccccff777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n777777777777777fcccccccccccccccccccccccccf7777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n7777777777777777ffcccccccccccccccccccccff777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n777777777777777777ffcccccccccccccccccff7777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n77777777777777777777fffffffffffffffff77777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc7777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n777777777777fcccccccccccccccccccccccccccccccf777777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n7777777777777ffcccccccccccccccccccccccccccff77777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n777777777777777fcccccccccccccccccccccccccf77777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n7777777777777777ffcccccccccccccccccccccff77777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n77777777777777777777fffffffffffffffff777777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n777777777777777777777777777777777777777777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff777777777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc77777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777fcccccccccccccccccccccccccccccccf7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n7777777777777ffcccccccccccccccccccccccccccff777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n777777777777777fcccccccccccccccccccccccccf7777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n7777777777777777ffcccccccccccccccccccccff777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n777777777777777777ffcccccccccccccccccff7777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n77777777777777777777fffffffffffffffff77777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n`;\n case \"Oag!`vsg+~Y,+WT2meT;\":\n case \"hammer\":return img`\n.................44.............\n...............4422ee...........\n...............4422ee...........\n.............4422eeeeee.........\n.............4422eeeeee.........\n...........4422eeeeeeeeee.......\n...........4422eeeeeeeeee.......\n.........4422eeeeeeeeeeeeee.....\n.........4422eeeeeeeeeeeeee.....\n...........eeeeeeeeeeeeeeeeee...\n...........eeeeeeeeeeeeeeeeee...\n.............eeeeeeeeeeeeee8866.\n.............eeeeeeeeeeeeee8866.\n.............ccddeeeeeeee8866...\n.............ccddeeeeeeee8866...\n...........ccddbbeeeeee8866.....\n...........ccddbbeeeeee8866.....\n.........ccddbb....ee8866.......\n.........ccddbb....ee8866.......\n.......ccddbb........66.........\n.......ccddbb........66.........\n.....ccddbb.....................\n.....ccddbb.....................\n...ccddbb.......................\n...ccddbb.......................\n.ccddbb.........................\n.ccddbb.........................\n.ddbb...........................\n.ddbb...........................\n................................\n................................\n................................\n`;\n }\n return null;\n })\n\n helpers._registerFactory(\"animation\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"moleAnimation\":\n case \"anim1\":return [img`\n. . . . . . . 5 . . . . . . . . \n. . . . . . . 5 5 . . . . . . . \n. 5 e e e e e e e e e e e e 5 . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`, img`\n. . . . . 5 . . . . . . . . . 5 \n5 . . . . . 5 . . . . . . . 5 . \n5 . . . . . . 5 . . . . . . . 5 \n. 5 . . . . . 5 5 . . . . 5 5 . \n5 . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \n`, img`\n. . . . . . 5 . . . . . . . . . \n. . . . . . . 5 . . . . . . . . \n5 . . . . . . . 5 . . . . . . . \n. 5 . . . . . . 5 . . . . . . 5 \n. 5 . . . . . 5 . . . . . . 5 . \n. . 5 . . . . 5 . . . . . . . 5 \n. 5 . . . . . . . . . . . . 5 5 \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \n`, img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`];\n case \"hammerAnimation\":\n case \"anim2\":return [img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n.................44.............\n...............4422ee...........\n...............4422ee...........\n.............4422eeeeee.........\n.............4422eeeeee.........\n...........4422eeeeeeeeee.......\n...........4422eeeeeeeeee.......\n.........4422eeeeeeeeeeeeee.....\n.........4422eeeeeeeeeeeeee.....\n...........eeeeeeeeeeeeeeeeee...\n...........eeeeeeeeeeeeeeeeee...\n.............eeeeeeeeeeeeee8866.\n.............eeeeeeeeeeeeee8866.\n.............ccddeeeeeeee8866...\n.............ccddeeeeeeee8866...\n...........ccddbbeeeeee8866.....\n...........ccddbbeeeeee8866.....\n.........ccddbb....ee8866.......\n.........ccddbb....ee8866.......\n.......ccddbb........66.........\n.......ccddbb........66.........\n.....ccddbb.....................\n.....ccddbb.....................\n...ccddbb.......................\n...ccddbb.......................\n.ccddbb.........................\n.ccddbb.........................\n.ddbb...........................\n.ddbb...........................\n................................\n................................\n................................\n`];\n }\n return null;\n })\n\n}\n// Auto-generated code. Do not edit.\n", - "main.blocks": "myHammermyHammer[img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n`]{\"commentRefs\":[],\"fieldData\":{\"frames\":null}}500false", - "main.ts": "", - "pxt.json": "{\n \"name\": \"Whackem2 - Assets Only\",\n \"description\": \"\",\n \"dependencies\": {\n \"device\": \"*\"\n },\n \"files\": [\n \"main.blocks\",\n \"main.ts\",\n \"README.md\",\n \"assets.json\",\n \"images.g.jres\",\n \"images.g.ts\",\n \"custom.ts\"\n ],\n \"targetVersions\": {\n \"branch\": \"v1.8.26\",\n \"tag\": \"v1.8.26\",\n \"commits\": \"https://github.com/microsoft/pxt-arcade/commits/6434cb63948fe7c1d1a7498115a4bc495495512c\",\n \"target\": \"1.8.26\",\n \"pxt\": \"7.4.27\"\n },\n \"preferredEditor\": \"tsprj\"\n}\n" -} -``` \ No newline at end of file diff --git a/docs/test/skillmap/sparks/sparks4.md b/docs/test/skillmap/sparks/sparks4.md index ffcabedbd5..a0696f0e63 100644 --- a/docs/test/skillmap/sparks/sparks4.md +++ b/docs/test/skillmap/sparks/sparks4.md @@ -1,4 +1,4 @@ -# Play with Friends +# Another Level ### @explicitHints true @@ -6,9 +6,10 @@ Your code from the last activity is already in the workspace. -Let's add to it to create a multiplayer game. +Let's build on it to add more levels! -![Whack-the-Mole](/static/skillmap/mole/mole4.gif "Twice as much fun with two people." ) + +![Again and Again](/static/skillmap/sparks/sparks4.gif "Let's add more levels." ) @@ -16,9 +17,11 @@ Let's add to it to create a multiplayer game. ## {2. Play Your Game} -- :binoculars: Play the game you have so far. +**Play your game!** + +Press the (B) button and try to get 30 points before they all disappear! + -Using the joypad (or the arrow keys on your keyboard) move the hammer around the screen and earn 1 point each time it overlaps the mole! ~hint My game doesn't work ⚠️ @@ -32,281 +35,94 @@ to replace the blocks in your workspace with new starter code. hint~ -#### ~ tutorialhint - -```blocks - -let myMole: Sprite = null -let myHammer: Sprite = null -scene.setBackgroundImage(assets.image`grid`) -myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy) -myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player) -simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast) -carnival.startCountdownGame(15, carnival.WinTypes.Multi) -carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom) - -game.onUpdateInterval(1000, function () { - simplified.moveToRandomHoleOnGrid(myMole) -}) - -sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) { - info.changeScoreBy(1) - simplified.moveToRandomHoleOnGrid(myMole) - music.knock.play() - animation.runImageAnimation( - myHammer, - assets.animation`hammerAnimation`, - 50, - false - ) -}) - -``` - - -## {3. Player 2} -**Allow player 2 to move the mole** -- :tree: From the ``||controller: Controller||`` category, drag
+## {3. Prepping the Variable} -```blocks -controller.player2.onButtonEvent(ControllerButton.A, ControllerButtonEvent.Pressed, function () { - simplified.moveToRandomHoleOnGrid(myMole) -}) -``` +The level needs to change as the user plays. +This is the perfect place to use a variable. -into **an empty area** of your workspace. - -~hint Show me how! πŸ•΅πŸ½ - -![Add a block so a second player can control the mole](/static/skillmap/mole/player2.gif "Add a second player with the controller bundle") - -hint~ - -Now, when player 2 presses their A button (or the **U key** on the keyboard) the mole will hop to a new location. - - - -#### ~ tutorialhint - -```blocks -controller.player2.onButtonEvent(ControllerButton.A, ControllerButtonEvent.Pressed, function () { - simplified.moveToRandomHoleOnGrid(myMole) -}) -``` - - -## {4. Playing Chicken} - -**Give player 2 a point for being fearless.** - -Now that player 2 moves the mole, we don't need to have it happen automatically. - - -- :mouse pointer: From the
-``||game(noclick): on game update every [1000] ms||`` -
container already in the workspace, **delete** -```block - simplified.moveToRandomHoleOnGrid(myMole) -``` - -~hint How do I delete a block? πŸ’‘ +~hint What's a variable? πŸ’‘ --- -You can delete a block three ways:
-1) Click the block to select, then press **delete** on your keyboard
-2) Right-click the block and choose **Delete Blocks**
-3) Drag the block back into the toolbox
- - -hint~ - - - -~hint Click here to see how πŸ•΅πŸ½ - -![Delete the block you don't need](/static/skillmap/mole/delete.gif "Delete the block that moves the mole automatically.") - - -hint~ - - -#### ~ tutorialhint - -```blocks -game.onUpdateInterval(1000, function () {}) -``` +A **variable** is a placeholder that you can use for a value that changes. +In our program, we will **declare** a variable called **level**, which means that we'll tell the program +that we want it to replace the word ``||variables(noclick):level||`` with whatever +value is assigned to it. +Later in our program, we can change the value of **level** and the code will use +the newest value each time we call ``||variables(noclick):level||``. -## {5. Add a point each second} +This is the block we'll use to declare the variable in our program: -- :bolt: From ``||simplified:Simplified||``, drag ```block - simplified.checkMoleEscape(mp.playerSelector(mp.PlayerNumber.Two), 1) +let level: number = null +level = 1 ``` -into the newly **empty**
-``||game(noclick): on game update every [1000] ms||`` -
container already in the workspace. - - -~hint Click here to see how πŸ•΅πŸ½ - -![Score points for staying still](/static/skillmap/mole/check-mole.gif "Add the block to check if the mole is still in the same spot.") - - -hint~ - - -#### ~ tutorialhint - -```blocks -game.onUpdateInterval(1000, function () { - //@highlight - simplified.checkMoleEscape(mp.playerSelector(mp.PlayerNumber.Two), 1) -}) -``` - - - - - -## {6. Multiplayer Win} +This is the block we'll use to change the value as we go: -**Change to a multiplayer win screen.** - -Now that we have two scores to judge, you need to change the game over screen to **multiplayer**. - -- :mouse pointer: Find ```block -carnival.startCountdownGame(15, carnival.WinTypes.Score +let level: number = null +level++ ``` -inside the ``||loops(noclick):on start||`` container, and change **best score** to **multiplayer**. - - -~hint Show me how! πŸ•΅πŸ½ - - -![Change the type of win to multiplayer.](/static/skillmap/mole/multi.gif "Make your game multiplayer.") hint~ -#### ~ tutorialhint - - -```blocks -let myMole: Sprite = null -scene.setBackgroundImage(assets.image`grid`) -myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy) -let myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player) -simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast) -//@highlight -carnival.startCountdownGame(15, carnival.WinTypes.Multi) -carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom) -``` - - -## {7. Check Your Game Again!} - - - -- :binoculars: Play your game in the game window! - -Player 2 should be able to move the mole with the **U key** on the keyboard. - -They should also get a point for every second they stay in the same spot. -**Play against someone. Who wins?** +- :align justify: From the ``||variables:Variables||`` category, click on
+**Make a Variable**
+- :mouse pointer: Enter the name **level** and click **Ok**. -## {8. Fine Tune} +## {4. Put it in the program} -**Is your game too easy? Too hard?** - -You can change your values to make your game exactly the way you like. - - -~hint Show me how! πŸ•΅πŸ½ - ---- - -- If player 1 wins too much, change the hammer speed to **medium** or **slow** or change the number of milliseconds the mole must wait from **1000** to **500**.
-- If player 2 wins too much, change the number of milliseconds they must wait from **1000** to **1500**.
-- If you don't feel like you have long enough to play, change the countdown from **15** to **25** or **30** seconds.
+Add the variable to your program. --- +- :align justify: From the ``||variables: Variables||`` category, grab
+``||variables: set [level] to [0]||``
+and snap it to **the top** of the
+``||loops(noclick): on start||``
+container that's already in the workspace. -![Customize your game by changing the values in your blocks](/static/skillmap/mole/custom.gif "You can make your game easier or harder.") - -hint~ - - - -## {9. Add Instructions} - - -**Add some instructions to the beginning to let users know how to play!** - - -- :circle: From ``||game:Game||``, snap -```block -game.showLongText("Player 1: Use the arrow keys to move the hammer. Player 2: Press A to move the mole.", DialogLayout.Center) -``` -into the **top of** the ``||loops(noclick):on start||`` container. - -You can change the instructions to whatever you want them to be. - - -~hint Show me how! πŸ•΅πŸ½ +- :mouse pointer: Change the value of level from **0** to **1**. +--- -![Add rules.](/static/skillmap/mole/rules.gif "Add some text so users know the rules.") - -hint~ +Now the game will begin at Level 1. #### ~ tutorialhint - - ```blocks -let myMole: Sprite = null //@highlight -game.showLongText("Player 1: Use the arrow keys to move the hammer. Player 2: Press B to move the mole.", DialogLayout.Center) -scene.setBackgroundImage(assets.image`grid`) -myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy) -let myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player) -simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast) -carnival.startCountdownGame(15, carnival.WinTypes.Multi) -carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom) +let level = 1 +scene.setBackgroundImage(sparks.background) +let kindling = sprites.create(sparks.pile1, SpriteKind.Player) +kindling.setPosition(70, 80) ``` +```blockconfig.local +let level = 1 +``` -## {10. Play your finished game} - - - -- :binoculars: Play your finished game in the game window! - -You should see the instructions before the game starts. Press the A button to clear them. -**Start a Whack-the-Mole tournament? Who gets best 2 out of 3?** -## {11. Finale} +## {9. Finale} -**🎑 You've done it! 🎑** +**πŸ‘¨πŸ½β€πŸš’ You're FIRE πŸ‘¨πŸ½β€πŸš’** -You've finished your Whack-the-Mole game! +What a great game you've got there! ~hint How do I share my game?πŸ’‘ @@ -317,129 +133,108 @@ You've finished your Whack-the-Mole game! Click "Done" to get back out to the skillmap, then look in the lower-right corner for the share button. -![Share your card](/static/skillmap/mole/share.gif ) +![Share your card](/static/skillmap/sparks/share.gif ) hint~ -When you're ready, click **Done** to return to the skillmap to claim your badge and share your game with friends and family. - - - +When you're ready, click **Done** to return to the skillmap so you can +add levels to your game! ```blockconfig.global -let myHammer: Sprite = null -animation.runImageAnimation( -myHammer, -[img`.`], -50, -false -) -myHammer = sprites.create(img`.`, SpriteKind.Player) -sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) { - info.changeScoreBy(1) - simplified.moveToRandomHoleOnGrid(myMole) - music.knock.play() - animation.runImageAnimation( - myHammer, - [img`.`], - 50, - false - ) -}) -simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast) -carnival.startCountdownGame(15, carnival.WinTypes.Multi) -game.onUpdateInterval(1000, function () { - simplified.checkMoleEscape(mp.playerSelector(mp.PlayerNumber.Two), 1) -}) -controller.player2.onButtonEvent(ControllerButton.A, ControllerButtonEvent.Pressed, function () { - simplified.moveToRandomHoleOnGrid(myMole) -}) -game.showLongText("Player 1: Use the arrow keys to move the hammer. Player 2: Press A to move the mole.", DialogLayout.Center) -carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom) -carnival.startCountdownGame(15, carnival.WinTypes.Score) -simplified.moveToRandomHoleOnGrid(myMole) +info.onScore(30, function () {}) +game.gameOver(true) +let kindling = sprites.create(img`.`, SpriteKind.Player) +kindling.setPosition(70, 80) +kindling.startEffect(effects.fire) +info.onScore(30, function () { }) ``` - -```package -carnival=github:microsoft/arcade-carnival#v0.0.7 -mole-images=github:microsoft/arcade-tutorial-extensions/mole-images#v0.0.11 -``` - - ```template - -sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) { +info.onScore(-5, function () { + game.gameOver(false) +}) +controller.B.onEvent(ControllerButtonEvent.Pressed, function () { info.changeScoreBy(1) - simplified.moveToRandomHoleOnGrid(myMole) - music.knock.play() - animation.runImageAnimation( - myHammer, - assets.animation`hammerAnimation`, - 50, - false - ) + kindling.startEffect(effects.fire, 25) +}) +info.onScore(30, function () { + game.setGameOverScoringType(game.ScoringType.LowScore) + info.setScore(stopwatch.getTimerValue(stopwatch.TimerGran.Tenths)) + game.gameOver(true) }) -let myMole: Sprite = null -let myHammer: Sprite = null -scene.setBackgroundImage(assets.image`grid`) -myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy) -myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player) -simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast) -carnival.startCountdownGame(15, carnival.WinTypes.Score) -carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom) +let kindling: Sprite = null +game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full) +game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full) +scene.setBackgroundImage(sparks.background) +kindling = sprites.create(sparks.pile1, SpriteKind.Player) +kindling.setPosition(70, 80) +stopwatch.startTimer(stopwatch.TimerType.Tens) + game.onUpdateInterval(1000, function () { - simplified.moveToRandomHoleOnGrid(myMole) + info.changeScoreBy(-1) }) ``` - ```ghost - -controller.player2.onButtonEvent(ControllerButton.A, ControllerButtonEvent.Pressed, function () { - simplified.moveToRandomHoleOnGrid(myMole) -}) -sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) { +controller.B.onEvent(ControllerButtonEvent.Pressed, function () { info.changeScoreBy(1) - simplified.moveToRandomHoleOnGrid(myMole) - music.knock.play() - animation.runImageAnimation( - myHammer, - assets.animation`hammerAnimation`, - 50, - false - ) + firePit.startEffect(effects.fire, 100) +}) +info.onScore(-5, function () { + game.gameOver(false) }) -let myHammer: Sprite = null -let myMole: Sprite = null -game.showLongText("Player 1: Use the arrow keys to move the hammer. Player 2: Press A to move the mole.", DialogLayout.Center) -scene.setBackgroundImage(assets.image`grid`) -myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy) -myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player) -simplified.moveOnlyOnscreenWithArrows(myHammer, simplified.Speeds.Fast) -carnival.startCountdownGame(15, carnival.WinTypes.Multi) -carnival.addLabelTo("Whack-the-Mole", carnival.Areas.Bottom) +info.onScore(30, function () { + bumpLevels() +}) +function bumpLevels () { + if (level == 5) { + info.setScore(game.timeSinceStartSec()) + game.setGameOverMessage(true, "Great job, Fire Maker!") + game.gameOver(true) + } + game.showLongText("Congrats! You started a fire! But...can you do it with fewer sticks?", DialogLayout.Full) + game.showLongText("Try to pass Level " + level + "!", DialogLayout.Full) + info.setScore(0) + level = level + 1 + textSprite.setText("Level " + level) + firePit.setImage(list[level]) +} +let textSprite: TextSprite = null +let firePit: Sprite = null +let level = 0 +let list: Image[] = [] +game.showLongText("You are in Israel circa 100,000 B.C.", DialogLayout.Full) +game.showLongText("The world around you is starting to freeze. Press the (B) button as quickly as possible to light a fire that will keep you warm.", DialogLayout.Full) +list = [ +sparks.pile1, +sparks.pile2, +sparks.pile3, +sparks.pile4, +sparks.pile5 +] +level = 1 +scene.setBackgroundImage(sparks.background1) +firePit = sprites.create(sparks.pile1, SpriteKind.Player) +firePit.setPosition(70, 80) +textSprite = textsprite.create("Level 1") +textSprite.setPosition(30, 10) +textSprite.setOutline(1, 6) game.onUpdateInterval(1000, function () { - simplified.checkMoleEscape(mp.playerSelector(mp.PlayerNumber.Two), 1) + info.changeScoreBy(level * -1) }) ``` -```assetjson -{ - "README.md": " ", - "assets.json": "", - "custom.ts": "", - "images.g.jres": "{\n \"Qv@;p79@e|(fGBFKaJ@[\": {\n \"data\": \"hwQQABAAAAAAAO7u7u7u7gDg7u7u7u7uAO7u7u7u7u4A7u7u7u7v7gDu7v7u7v7uAO7u7u/v/u4A7v/u8+7+7gDu7u4z7v7uAO7u7jPu/u4A7v/u8+7+7gDu7u7v7/7uAO7u/u7u/u4A7u7u7u7v7gDu7u7u7u7uAODu7u7u7u4AAO7u7u7u7g==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"mole\"\n },\n \"/LJ4HDC9/+6j@JGvC7#:\": {\n \"data\": \"hwSgAHgAAABmZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/////93d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d397u7u8t/d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3f3v7u7u8z8f3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3e/u7u7y8zM/3d3d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3e/u7u7y8zM/Hd3d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d/e7u7u7zMzMzH93d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d7+7u7u7zMzMzPx3d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d7+7u7u7zMzMzPx3d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d7+7u7vLzMzMzMx/d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d397u7u7vMzMzMzMx/d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d3v7u7u7vMzMzMzMz8d3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d397u7u7vMzMzMzMz8d3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d397u7u7vMzMzMzMx/d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d397u7u7vLzMzMzMx/d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d7+7u7vLzMzMzPx3d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d/e7u7u7zMzMzPx3d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d/e7u7u7zMzMzH93d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3e/u7u7zMzM/Hd3d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3f3u7u7y8zM/3d3d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3f3v7u7y8z8f3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d397u7u8t8d3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/////93d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d3d7+7u7v8d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3d3/7u7u8vM/3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3f3u7u7u8zM/H93d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3f3u7u7u8zMzH93d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d/e7u7u7zMzMzMz8d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d3d7+7u7u7zMzMzMz8d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d/e7u7u7zMzMzMx/d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d3e/u7u7y8zMzMx/d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3f3u7u7y8zMzH93d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3d3v7u7u8zM/H93d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3d3/7u7u8zM/3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d3d7+7u7vMd3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3f3u7u7y393d3d3d3d3d3d3d7+7u7v8d3d3d3d3d3d3d/e7u7vLf3d3d3d39/////////////93d3d3d/e/u7u7zPx/d3d3d3d3d3d3/7u7u8vM/3d3d3d3d3d397+7u7vM/H93d3d39/////////////93d3d3d7+7u7vLzMz/d3d3d3d3d3f3u7u7u8zM/H93d3d3d3d3v7u7u8vMzP93d3d39/////////////93d3d3d7+7u7vLzMz8d3d3d3d3d3f3u7u7u8zMzH93d3d3d3d3v7u7u8vMzPx3d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u7vMzMzM/Hd3d3d3d/e7u7u7y8zMzMx/d3d3d3e/u7u7u8zMzMz8d3d39/////////////93d3d3v7u7u8vMzMzMzH93d3d3d/e7u7u7zMzMzMz8d3d3d3e/u7u7y8zMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3e/u7u7u8zMzMzMzPx3d3d397u7u7vLzMzMzMzMf3d3d7+7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzPx3d3d3d7+7u7vLzMzMzMzMf3d3d/e7u7u7zMzMzMzM/Hd39/////////////93d3f3u7u7u8zMzMzMzH93d3d3d7+7u7vLzMzMzMz8d3d3d/e7u7u7zMzMzMzMf3d39/////////////93d3f3u7u7u8vMzMzMzH93d3d3d7+7u7u7zMzMzMz8d3d3d/e7u7u7y8zMzMzMf3d39/////////////93d3d3v7u7u8vMzMzM/Hd3d3d3d/e7u7u7zMzMzMx/d3d3d3e/u7u7y8zMzMz8d3d39/////////////93d3d397u7u7vMzMzM/Hd3d3d3d3e/u7u7y8zMzMx/d3d3d3f3u7u7u8zMzMz8d3d39/////////////93d3d397u7u7vMzMzMf3d3d3d3d3e/u7u7y8zMzPx3d3d3d3f3u7u7u8zMzMx/d3d39/////////////93d3d3d7+7u7vMzMz8d3d3d3d3d3f3u7u7y8zMzH93d3d3d3d3v7u7u8zMzPx3d3d39/////////////93d3d3d/e7u7vLzMz/d3d3d3d3d3d3v7u7u8zM/H93d3d3d3d397u7u8vMzP93d3d39/////////////93d3d3d/e/u7vLzPx/d3d3d3d3d3d3/7u7u8zM/3d3d3d3d3d397+7u8vM/H93d3d39/////////////93d3d3d3f3u7u7y3x3d3d3d3d3d3d3d7+7u7vMd3d3d3d3d3d3d/e7u7vLfHd3d3d39/////////////93d3d3d3d3/////3d3d3d3d3d3d3d3d/f///9/d3d3d3d3d3d3d3f/////d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////93d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d39/////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////9mZnZ3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2Zm9v////////////8=\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"grid\"\n },\n \"Oag!`vsg+~Y,+WT2meT;\": {\n \"data\": \"hwQgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwNwNAAAAAAAAAAAAAAAAAMDcDQAAAAAAAAAAAAAAAMDcvQsAAAAAAAAAAAAAAADA3L0LAAAAAAAAAAAAAADA3L0LAAAAAAAAAAAAAAAAwNy9CwAAAAAAAAAAAAAAwNy9CwAAAAAAAAAAAAAAAMDcvQsAAAAAAABABAAAAMDcvQsAAAAAAAAAQAQAAADA3L0LAAAAAAAAQCTiDgDA3L0LAAAAAAAAAEAk4g4AwNy9CwAAAAAAAEAk4u7uzty9CwAAAAAAAABAJOLu7s7cvQsAAAAAAABAJOLu7u7evQsAAAAAAAAAQCTi7u7u3r0LAAAAAAAAACTi7u7u7u7uDgAAAAAAAAAk4u7u7u7u7g4AAAAAAAAA4O7u7u7u7u7uDgAAAAAAAODu7u7u7u7u7g4AAAAAAAAA4O7u7u7u7o5oBgAAAAAAAODu7u7u7u6OaAYAAAAAAAAA4O7u7u6OaAYAAAAAAAAAAODu7u7ujmgGAAAAAAAAAAAA4O7ujmgGAAAAAAAAAAAAAODu7o5oBgAAAAAAAAAAAAAA4I5oBgAAAAAAAAAAAAAAAOCOaAYAAAAAAAAAAAAAAAAAYAYAAAAAAAAAAAAAAAAAAGAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"hammer\"\n },\n \"anim1\": {\n \"namespace\": \"myAnimations\",\n \"id\": \"anim1\",\n \"mimeType\": \"application/mkcd-animation\",\n \"data\": \"YzgwMDEwMDAxMDAwMDQwMDAwMDAwMDUwMDAwMDAwMDAwMDAwMDA1MDA1MDAwMDAwNTBlZWVlZWVlZWVlZWUwNWUwZWVlZWVlZWVlZWVlMGVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZmVlZWVlZWVlZWZlMzMzM2VmZWVlZWVlZWVlZTNmZjNlZWVlZWVlZWVlZmVlZWVlZWZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVlZWVlZWVmZWVlZWVlZmZmZmZmZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWUwMDAwNTAwMDAwMDAwMDUwMDUwMDAwMDUwMDAwMDAwNTA1MDAwMDUwMDAwMDAwNTA1MDAwMDA1MDA1MDA1MDA1MDUwMDAwMDAwMDAwMDAwMDAwZWVlZWVlZWVlZWVlMDBlMGVlZWVlZWVlZWVlZTBlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVmZmVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmZWVlZWZlZWVlZWVlZWVmZTMzMzNlZmVlZWVlZWVlZWUzZmYzZWVlZWVlZWVlZWZlZWVlZWVmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZWVlZWVlZmVlMDAwMDAwMDUwMDAwMDAwMDAwMDAwMDUwMDAwMDAwMDAwNTAwMDAwMDA1MDAwMDAwNTAwMDAwMDAwNTAwMDA1MDUwMDAwMDUwMDAwMDAwMDUwMDA1MDA1MDAwMDAwMDUwNTAwMDAwMDAwMDAwMDA1NTAwMDAwMDAwMDAwMDAwMDAwMGVlZWVlZWVlZWVlZTAwZTBlZWVlZWVlZWVlZWUwZWVlZWVlZWVmZmVlZWVlZWVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVmZWVlZWVlZWVlZmUzMzMzZWZlZWVlZWVlZWVlM2ZmM2VlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlZWVlZWVlZWVlZWUwMGUwZWVlZWVlZWVlZWVlMGVlZWVlZWVlZmZlZWVlZWVlZWVlZWVlZWZmZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZlZWVlZmVlZWVlZWVlZWZlMzMzM2VmZWVlZWVlZWVlZTNmZjNlZWVlZWVlZWVlZmVlZWVlZWZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmVlZWVlZWVlZWVmZWVlZWVlZmZmZmZmZmZlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWU=\",\n \"displayName\": \"moleAnimation\"\n },\n \"anim2\": {\n \"namespace\": \"myAnimations\",\n \"id\": \"anim2\",\n \"mimeType\": \"application/mkcd-animation\",\n \"data\": \"MzIwMDIwMDAyMDAwMDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDA0NDQ0NDQ0NDQ0MDAwMDAwMDAwMDAwMDAwMDAwMDA0MDQ0NDQ0NDQ0NDQwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMjIyMjIyMjIyMjAwMDAwMDAwMDAwMDAwMDAwMDAwMjAyMjIyMjIyMjIyMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVjMGNjY2NjY2NjY2NjY2NjY2NjY2VjZWVlZWVlZWVlZWQwZGRkZGRkZGRkZGRkZGRkZGRkZWRlZWVlZWVlZWVlZDBkZGRkZGRkZGRkZGRkZGRkZGRlZGVlZWVlZWVlZWViMGJiYmJiYmJiYmJiYmJiYmJiYmViZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDg4ODg4ODg4ODgwMDAwMDAwMDAwMDAwMDAwMDAwMDgwODg4ODg4ODg4ODAwMDAwMDAwMDAwMDAwMDAwMDAwNjA2NjY2NjY2NjY2MDAwMDAwMDAwMDAwMDAwMDAwMDA2MDY2NjY2NjY2NjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwNDQ0NDQ0NDQ0NDAwMDAwMDAwMDAwMDAwMDAwMDAwNDA0NDQ0NDQ0NDQ0MDAwMDAwMDAwMDAwMDAwMDAwMDAyMDIyMjIyMjIyMjIwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMjIyMjIyMjIyMjAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlYzBjY2NjY2NjY2NjY2NjY2NjY2NlY2VlZWVlZWVlZWVkMGRkZGRkZGRkZGRkZGRkZGRkZGVkZWVlZWVlZWVlZWQwZGRkZGRkZGRkZGRkZGRkZGRkZWRlZWVlZWVlZWVlYjBiYmJiYmJiYmJiYmJiYmJiYmJlYmVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwODA4ODg4ODg4ODg4MDAwMDAwMDAwMDAwMDAwMDAwMDA4MDg4ODg4ODg4ODgwMDAwMDAwMDAwMDAwMDAwMDAwMDYwNjY2NjY2NjY2NjAwMDAwMDAwMDAwMDAwMDAwMDAwNjA2NjY2NjY2NjY2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDQwMDQwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwNDAwNDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwZTAyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDBlMDJlNDIwNDAwMDAwMDAwMDAwMDAwMDBiMGRiY2RlY2VlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJjZGVjZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwMDBiMGRiZWRlZWVlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGIwZGJlZGVlZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWUyZTQyMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZTJlNDIwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlODBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4MGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwMDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkMGNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwMDAwMDQwMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMGUwMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiY2QwYzAwZTAyZTQyMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmNkZWNlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiY2RlY2VlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMDAwYjBkYmVkZWVlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBiMGRiZWRlZWVlZWUyZTQyMDQwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlMmU0MjAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWUyZTQyMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWVlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlOGVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZTgwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwODZlODBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwMDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkMGNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDAwMDAwNDAwNDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDAwMGIwZGJjZDBjMDBlMDJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmNkMGMwMGUwMmU0MjA0MDAwMDAwMDAwMDAwMDAwMGIwZGJjZGVjZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmNkZWNlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDAwMGIwZGJlZGVlZWVlZTJlNDIwNDAwMDAwMDAwMDAwMDAwYjBkYmVkZWVlZWVlMmU0MjA0MDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZTJlNDIwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlMmU0MjAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWVlZWVlMGUwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4ZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZThlZWVlMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjA4NmU4MGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDg2ZTgwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDQ0NDQ0NDQ0NDQwMDAwMDAwMDAwMDAwMDAwMDAwMDQwNDQ0NDQ0NDQ0NDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAyMjIyMjIyMjIyMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDIyMjIyMjIyMjIwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWMwY2NjY2NjY2NjY2NjY2NjY2NjZWNlZWVlZWVlZWVlZDBkZGRkZGRkZGRkZGRkZGRkZGRlZGVlZWVlZWVlZWVkMGRkZGRkZGRkZGRkZGRkZGRkZGVkZWVlZWVlZWVlZWIwYmJiYmJiYmJiYmJiYmJiYmJiZWJlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZTAwMDAwMDAwMDAwMDAwMDAwMDAwZTBlZWVlZWVlZWVlMDAwMDAwMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWUwMDAwMDAwMDAwMDAwMDAwMDAwMDgwODg4ODg4ODg4ODAwMDAwMDAwMDAwMDAwMDAwMDAwODA4ODg4ODg4ODg4MDAwMDAwMDAwMDAwMDAwMDAwMDA2MDY2NjY2NjY2NjYwMDAwMDAwMDAwMDAwMDAwMDAwMDYwNjY2NjY2NjY2NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDI0ZTIwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMjRlMjBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMjRlMmVlZWUwZTAwMDAwMDAwMDAwMDAwMDAwMDAwNDAyNGUyZWVlZTBlMDAwMDAwMDAwMDAwMDAwMDAwNDAyNGUyZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDAwMDA0MDI0ZTJlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDA0MDI0ZTJlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMDQwMjRlMmVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZWVlZWUwZTAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlZWVlZTBlMDAwMDAwMDAwMDAwMDBlMGVlZWVlZWVlZWVlZThlNjgwNjAwMDAwMDAwMDAwMGUwZWVlZWVlZWVlZWVlOGU2ODA2MDAwMDAwMDAwMDAwYzBkY2VkZWVlZWVlOGU2ODA2MDAwMDAwMDAwMDAwMDBjMGRjZWRlZWVlZWU4ZTY4MDYwMDAwMDAwMDAwMDBjMGRjYmRlYmVlZWU4ZTY4MDYwMDAwMDAwMDAwMDAwMGMwZGNiZGViZWVlZThlNjgwNjAwMDAwMDAwMDAwMGMwZGNiZDBiMDBlMDhlNjgwNjAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMGUwOGU2ODA2MDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDA2MDA2MDAwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDYwMDYwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGMwZGNiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGMwZGNiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzBkY2JkMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjMGRjYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGQwYmQwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZDBiZDBiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA=\",\n \"displayName\": \"hammerAnimation\"\n },\n \"*\": {\n \"mimeType\": \"image/x-mkcd-f4\",\n \"dataEncoding\": \"base64\",\n \"namespace\": \"myImages\"\n }\n}", - "images.g.ts": "// Auto-generated code. Do not edit.\nnamespace myImages {\n\n helpers._registerFactory(\"image\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"Qv@;p79@e|(fGBFKaJ@[\":\n case \"mole\":return img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`;\n case \"/LJ4HDC9/+6j@JGvC7#:\":\n case \"grid\":return img`\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff777777777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc77777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777fcccccccccccccccccccccccccccccccf7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n7777777777777ffcccccccccccccccccccccccccccff777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n777777777777777fcccccccccccccccccccccccccf7777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n7777777777777777ffcccccccccccccccccccccff777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n777777777777777777ffcccccccccccccccccff7777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n77777777777777777777fffffffffffffffff77777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc7777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n777777777777fcccccccccccccccccccccccccccccccf777777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n7777777777777ffcccccccccccccccccccccccccccff77777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n777777777777777fcccccccccccccccccccccccccf77777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n7777777777777777ffcccccccccccccccccccccff77777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n77777777777777777777fffffffffffffffff777777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n777777777777777777777777777777777777777777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777\n7777777777777777777777fffffffffffff777777777777777777777777777777777777777fffffffffffff7777777777777777777777777777777777777fffffffffffff77777777777777777777777\n7777777777777777777fffbbbbbbbbbbbbbffff77777777777777777777777777777777fffbbbbbbbbbbbbbffff777777777777777777777777777777fffbbbbbbbbbbbbbffff7777777777777777777\n7777777777777777fffbbbbbbbbbbbbbbbbbbbbf7777777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf77777777777777777777777777fffbbbbbbbbbbbbbbbbbbbbf777777777777777777\n777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777\n7777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777777ffbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff7777777777777\n777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777\n77777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf777777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf7777777777777fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf77777777777\n7777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf777777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf7777777777777fbbbbbbbbcccccccccccccccccccbbbbbbbbf77777777777\n7777777777fbbbbbbbccccccccccccccccccccccbbbbbbf777777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf7777777777777fbbbbbbbccccccccccccccccccccccbbbbbbf77777777777\n7777777777fbbbbccccccccccccccccccccccccccccbbbf777777777777777fbbbbccccccccccccccccccccccccccccbbbf7777777777777fbbbbccccccccccccccccccccccccccccbbbf77777777777\n7777777777fbbccccccccccccccccccccccccccccccccbf777777777777777fbbccccccccccccccccccccccccccccccccbf7777777777777fbbccccccccccccccccccccccccccccccccbf77777777777\n7777777777fbcccccccccccccccccccccccccccccccccbf777777777777777fbcccccccccccccccccccccccccccccccccbf7777777777777fbcccccccccccccccccccccccccccccccccbf77777777777\n7777777777fcccccccccccccccccccccccccccccccccccf777777777777777fcccccccccccccccccccccccccccccccccccf7777777777777fcccccccccccccccccccccccccccccccccccf77777777777\n77777777777fcccccccccccccccccccccccccccccccccc77777777777777777fcccccccccccccccccccccccccccccccccc777777777777777fcccccccccccccccccccccccccccccccccc777777777777\n777777777777fcccccccccccccccccccccccccccccccf7777777777777777777fcccccccccccccccccccccccccccccccf77777777777777777fcccccccccccccccccccccccccccccccf7777777777777\n777777777777ffcccccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccccff77777777777777777ffcccccccccccccccccccccccccccccff7777777777777\n7777777777777ffcccccccccccccccccccccccccccff777777777777777777777ffcccccccccccccccccccccccccccff7777777777777777777ffcccccccccccccccccccccccccccff77777777777777\n777777777777777fcccccccccccccccccccccccccf7777777777777777777777777fcccccccccccccccccccccccccf77777777777777777777777fcccccccccccccccccccccccccf7777777777777777\n7777777777777777ffcccccccccccccccccccccff777777777777777777777777777ffcccccccccccccccccccccff7777777777777777777777777ffcccccccccccccccccccccff77777777777777777\n777777777777777777ffcccccccccccccccccff7777777777777777777777777777777ffcccccccccccccccccff77777777777777777777777777777ffcccccccccccccccccff7777777777777777777\n77777777777777777777fffffffffffffffff77777777777777777777777777777777777fffffffffffffffff777777777777777777777777777777777fffffffffffffffff777777777777777777777\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\n6666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766666\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n`;\n case \"Oag!`vsg+~Y,+WT2meT;\":\n case \"hammer\":return img`\n.................44.............\n...............4422ee...........\n...............4422ee...........\n.............4422eeeeee.........\n.............4422eeeeee.........\n...........4422eeeeeeeeee.......\n...........4422eeeeeeeeee.......\n.........4422eeeeeeeeeeeeee.....\n.........4422eeeeeeeeeeeeee.....\n...........eeeeeeeeeeeeeeeeee...\n...........eeeeeeeeeeeeeeeeee...\n.............eeeeeeeeeeeeee8866.\n.............eeeeeeeeeeeeee8866.\n.............ccddeeeeeeee8866...\n.............ccddeeeeeeee8866...\n...........ccddbbeeeeee8866.....\n...........ccddbbeeeeee8866.....\n.........ccddbb....ee8866.......\n.........ccddbb....ee8866.......\n.......ccddbb........66.........\n.......ccddbb........66.........\n.....ccddbb.....................\n.....ccddbb.....................\n...ccddbb.......................\n...ccddbb.......................\n.ccddbb.........................\n.ccddbb.........................\n.ddbb...........................\n.ddbb...........................\n................................\n................................\n................................\n`;\n }\n return null;\n })\n\n helpers._registerFactory(\"animation\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"moleAnimation\":\n case \"anim1\":return [img`\n. . . . . . . 5 . . . . . . . . \n. . . . . . . 5 5 . . . . . . . \n. 5 e e e e e e e e e e e e 5 . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`, img`\n. . . . . 5 . . . . . . . . . 5 \n5 . . . . . 5 . . . . . . . 5 . \n5 . . . . . . 5 . . . . . . . 5 \n. 5 . . . . . 5 5 . . . . 5 5 . \n5 . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \n`, img`\n. . . . . . 5 . . . . . . . . . \n. . . . . . . 5 . . . . . . . . \n5 . . . . . . . 5 . . . . . . . \n. 5 . . . . . . 5 . . . . . . 5 \n. 5 . . . . . 5 . . . . . . 5 . \n. . 5 . . . . 5 . . . . . . . 5 \n. 5 . . . . . . . . . . . . 5 5 \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \n`, img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . e e e e e e e e e e e e . . \n. e e e e e e e e e e e e e e . \ne e e e e e f e e f e e e e e e \ne e e e e e f e e f e e e e e e \ne e e e e e e e e e e e e e e e \ne e e e f e e e e e e f e e e e \ne e e e e f 3 3 3 3 f e e e e e \ne e e e e e f 3 3 f e e e e e e \ne e e e e f e e e e f e e e e e \ne e e e e e e e e e e e e e e e \ne e e f e e e e e e e e f e e e \ne e e e f f f f f f f f e e e e \ne e e e e e e e e e e e e e e e \ne e e e e e e e e e e e e e e e \n`];\n case \"hammerAnimation\":\n case \"anim2\":return [img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n...ddcc.........................\n...ddcc.........................\n...bbddcc.......................\n...bbddcc.......................\n.....bbddcc.....................\n.....bbddcc.....................\n.......bbddcc...................\n.......bbddcc...................\n.........bbddcc........44.......\n.........bbddcc........44.......\n...........bbddcc....ee2244.....\n...........bbddcc....ee2244.....\n.............bbddcceeeeee2244...\n.............bbddcceeeeee2244...\n...............bbddeeeeeeee2244.\n...............bbddeeeeeeee2244.\n...............eeeeeeeeeeeeee224\n...............eeeeeeeeeeeeee224\n.............eeeeeeeeeeeeeeeeee.\n.............eeeeeeeeeeeeeeeeee.\n...........6688eeeeeeeeeeeeee...\n...........6688eeeeeeeeeeeeee...\n.............6688eeeeeeeeee.....\n.............6688eeeeeeeeee.....\n...............6688eeeeee.......\n...............6688eeeeee.......\n.................6688ee.........\n.................6688ee.........\n...................66...........\n...................66...........\n................................\n`, img`\n................................\n................................\n................................\n................................\n................................\n................................\n.....................44444444444\n.....................44444444444\n.....................22222222222\n.....................22222222222\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.cccccccccccccccccccceeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.ddddddddddddddddddddeeeeeeeeeee\n.bbbbbbbbbbbbbbbbbbbbeeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................eeeeeeeeeee\n.....................88888888888\n.....................88888888888\n.....................66666666666\n.....................66666666666\n................................\n................................\n................................\n................................\n................................\n................................\n`, img`\n.................44.............\n...............4422ee...........\n...............4422ee...........\n.............4422eeeeee.........\n.............4422eeeeee.........\n...........4422eeeeeeeeee.......\n...........4422eeeeeeeeee.......\n.........4422eeeeeeeeeeeeee.....\n.........4422eeeeeeeeeeeeee.....\n...........eeeeeeeeeeeeeeeeee...\n...........eeeeeeeeeeeeeeeeee...\n.............eeeeeeeeeeeeee8866.\n.............eeeeeeeeeeeeee8866.\n.............ccddeeeeeeee8866...\n.............ccddeeeeeeee8866...\n...........ccddbbeeeeee8866.....\n...........ccddbbeeeeee8866.....\n.........ccddbb....ee8866.......\n.........ccddbb....ee8866.......\n.......ccddbb........66.........\n.......ccddbb........66.........\n.....ccddbb.....................\n.....ccddbb.....................\n...ccddbb.......................\n...ccddbb.......................\n.ccddbb.........................\n.ccddbb.........................\n.ddbb...........................\n.ddbb...........................\n................................\n................................\n................................\n`];\n }\n return null;\n })\n\n}\n// Auto-generated code. Do not edit.\n", - "main.blocks": "myHammermyHammer[img`\n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n. . . . . . . . . . . . . . . . \n`]{\"commentRefs\":[],\"fieldData\":{\"frames\":null}}500false", - "main.ts": "", - "pxt.json": "{\n \"name\": \"Whackem2 - Assets Only\",\n \"description\": \"\",\n \"dependencies\": {\n \"device\": \"*\"\n },\n \"files\": [\n \"main.blocks\",\n \"main.ts\",\n \"README.md\",\n \"assets.json\",\n \"images.g.jres\",\n \"images.g.ts\",\n \"custom.ts\"\n ],\n \"targetVersions\": {\n \"branch\": \"v1.8.26\",\n \"tag\": \"v1.8.26\",\n \"commits\": \"https://github.com/microsoft/pxt-arcade/commits/6434cb63948fe7c1d1a7498115a4bc495495512c\",\n \"target\": \"1.8.26\",\n \"pxt\": \"7.4.27\"\n },\n \"preferredEditor\": \"tsprj\"\n}\n" -} -``` \ No newline at end of file +```package +arcade-storytelling=github:microsoft/arcade-storytelling +arcade-text=github:microsoft/arcade-text +sparks=github:kiki-lee/sparks#v0.0.5 +stopwatch=github:kiki-lee/stopwatch#v0.0.5 +``` + diff --git a/docs/test/tutorials/jr-template.md b/docs/test/tutorials/jr-template.md new file mode 100644 index 0000000000..290514eda2 --- /dev/null +++ b/docs/test/tutorials/jr-template.md @@ -0,0 +1,36 @@ +# Jr Name +### @explicitHints true + + +## Jr Intro @showdialog + +Add goal here + + +## {Solver} + +Show goal again + + [![Level 2](/static/mkj/assets/next.png)](https://arcade.makecode.com/beta#recipe:/test/mkj/goal1/goal1-2) + + + +```package +pxt-block-icons=github:jwunderl/arcade-block-icons/ +your_pack=github:yourName/your_pack/ +``` + + +```customts + + + +``` + +```simtheme +{ + "theme": "junior", +} +``` + + diff --git a/docs/test/tutorials/layla-jr.md b/docs/test/tutorials/layla-jr.md index 831989a1ed..cc3da2d469 100644 --- a/docs/test/tutorials/layla-jr.md +++ b/docs/test/tutorials/layla-jr.md @@ -4,9 +4,132 @@ ## Pickle Party Intro @showdialog -Are you ready to code a pickle party? +**Ready to code a pickle party?** + +![Pickle Party Game](/static/tutorials/lyla/lyla.gif "Characters chasing pickle slices." ) + + + +## {Step 2} + +**Take a look at the game window** + +![Lyla on the screen](/static/tutorials/lyla/lyla.png "Lyla is alone on the screen." ) + +You should see Lyla on the screen. + + + +## {Step 3} + +**Click the circles for other players** + +![The circles allow you to control other players](/static/tutorials/lyla/circles.gif "Click the circles to control other players." ) + + + + + +## {Step 4} + +**You can move the selected player with the arrow keys** + +![The arrow keys move whichever player you have selected](/static/tutorials/lyla/arrows.gif "The game window is the same color as the player circle." ) + + + + + +## {Step 5} + +**Let's add pickles for them to chase!** + +![Add a flying pickle with a new block](/static/tutorials/lyla/pickle.gif "Choose the pickle from the gallery" ) + +#### ~ tutorialhint + +```blocks +game.onUpdateInterval2(1, function () { + //@highlight + sprites.sendFlying(lyla_imgs.picklechip) +}) +``` + + + + +## {Step 6} + +**Play the game!** + +![Choose a character and chase pickles](/static/tutorials/lyla/play.gif "You get points for pickles" ) + +Use the arrow keys to catch pickles. + + + +## {Step 7} + +**We need a way to win** + +Tell the computer what to do when someone scores 15 points. + +![Grab the player scores container](/static/tutorials/lyla/score.gif "When a player scores 15 points, the code inside will run." ) + +#### ~ tutorialhint + +```blocks +//@highlight +info.onScore2(15, function () {}) +``` + + + + +## {Step 8} + +**Add the _game over_ block** + +![Add the game over block to the new container](/static/tutorials/lyla/game-over.gif "This block tells the computer that the first to 15 wins" ) + +#### ~ tutorialhint + +```blocks +info.onScore2(15, function () { + //@highlight + game.gameOver(true) +}) +``` + + + + +## {Step 9} + +**Play until you win!** + + + + + +## {Step 10} + +**Let's make it fancy** + +Grab the block that runs code when the game starts. + +![Add the "on start" container](/static/tutorials/lyla/on-start.gif "This block tells the computer to run the code inside when the game starts" ) + +#### ~ tutorialhint + +```blocks +//@highlight +scene.setBackgroundImage(img`.`) +``` + + + -Follow this tutorial to create your own multiplayer experience that you can play online together with family and friends! @@ -21,44 +144,148 @@ When you're ready, sign-in, then select **Done** to start an online multiplayer **Who will be the first to score 20 points?** +```blockconfig.global +info.onScore2(15, function () { }) +game.holdText("Press (A) when everyone is ready to start the game") +``` + + ```template -sprites.step_right() -let characters: Image[] = [] +game.onUpdateInterval2(1, function () { }) +``` -characters = [ -lyla_imgs.lyla, -lyla_imgs.everett, -lyla_imgs.stu -] +```ghost +info.onScore2(15, function () { + game.gameOver(true) +}) +scene.setBackgroundImage(lyla_imgs.diner) +game.holdText("Press (A) when everyone is ready to start the game") +music.play(music.createSong(lyla_imgs.countdown), music.PlaybackMode.UntilDone) +game.onUpdateInterval2(1, function () { + sprites.sendFlying(lyla_imgs.picklechip) +}) ``` ```package multiplayer -lyla_imgs=github:kiki-lee/lyla_imgs#v0.0.2 +lyla_imgs=github:kiki-lee/lyla_imgs#v0.0.3 ``` ```customts +mp.onControllerEvent(ControllerEvent.Connected, function (thisPlayer) { + if (mp.getPlayerProperty(thisPlayer, mp.PlayerProperty.Number) <= characters.length) { + pizza.setPlayersWith(characters, mp.getPlayerProperty(thisPlayer, mp.PlayerProperty.Number)) + } +}) +sprites.onOverlap(SpriteKind.Player, SpriteKind.Projectile, function (sprite, otherSprite) { + if (!(mp.isButtonPressed(mp.getPlayerBySprite(sprite), mp.MultiplayerButton.A))) { + sprites.destroy(otherSprite, effects.disintegrate, 100) + mp.changePlayerStateBy(mp.getPlayerBySprite(sprite), MultiplayerState.score, 1) + } +}) +sprites.onOverlap(SpriteKind.Player, SpriteKind.Player, function (sprite, otherSprite) { + if (mp.isButtonPressed(mp.getPlayerBySprite(sprite), mp.MultiplayerButton.A)) { + scene.cameraShake(4, 500) + pizza.bumpSprite(sprite, otherSprite) + mp.changePlayerStateBy(mp.getPlayerBySprite(otherSprite), MultiplayerState.score, -1) + } + if (mp.isButtonPressed(mp.getPlayerBySprite(otherSprite), mp.MultiplayerButton.A)) { + scene.cameraShake(4, 500) + pizza.bumpSprite(otherSprite, sprite) + mp.changePlayerStateBy(mp.getPlayerBySprite(sprite), MultiplayerState.score, -1) + } +}) + + +let characters = [lyla_imgs.lyla, lyla_imgs.everett, lyla_imgs.stu] +pizza.setPlayersWith(characters, 1) + +namespace game { + /** + * Run code on an interval of time. This executes before game.onUpdate() + * @param body code to execute + */ + //% group="Gameplay" + //% help=game/on-update-interval weight=99 afterOnStart=true + //% blockId=gameinterval2 block="every $period second(s)" + //% period.defl=1 + //% blockAllowMultiple=1 + export function onUpdateInterval2(period: number, a: () => void): void { + period = period * 1000; + if (!a || period < 0) return; + let timer = 0; + game.eventContext().registerFrameHandler(scene.UPDATE_INTERVAL_PRIORITY, () => { + const time = game.currentScene().millis(); + if (timer <= time) { + timer = time + period; + a(); + } + }); + } + + + + //% blockId=hold_text block="hold text $msg" + //% msg.defl = "Press (A) when everyone is ready to start the game" + //% img.shadow=screen_image_picker + export function holdText(msg: string) { + game.showLongText(msg, DialogLayout.Full) + } + + + +} namespace sprites { - //% block="`lyla_imgs.stu`" - export function step_right() { - pause(500) + export enum Plyrs { + //% block="Player 1" + One = 0, + //% block="Player 2" + Two = 1, + //% block="Player 3" + Three = 2, + //% block="Player 4" + Four = 3 } + + + /** + * Run code on an interval of time. This executes before game.onUpdate() + * @param body code to execute + */ + //% blockId=assign_player_image block="$thing = $img" + //% thing.defl = Plyrs.One + //% img.shadow=screen_image_picker + export function assignPlayerImg(thing: Plyrs, img:Image) { + characters[thing] = img + pizza.setPlayersWith(characters, thing+1) + } + + + /** + * Run code on an interval of time. This executes before game.onUpdate() + * @param body code to execute + */ + //% blockId=send_flying block="add flying $thing" + //% thing.shadow=screen_image_picker + export function sendFlying(thing:Image){ + let projectile2 = sprites.createProjectileFromSide(thing, randint(-100, 100), randint(-100, 100)) + } } -//% color=#29a320 icon="\uf192" -namespace pickle { +//% color=#b79900 icon="\uf1ce" +namespace pizza { // Make sure not to remove later player when earlier player tested - export let playersConnected=0; + export let playersConnected = 0; //% blockId=set_players @@ -67,20 +294,20 @@ namespace pickle { //% list.shadow=variables_get //% list.defl=characters export function setPlayersWith(list: Image[], num: number) { - if(num >= pickle.playersConnected){ - pickle.playersConnected = num; + if (num >= pizza.playersConnected) { + pizza.playersConnected = num; sprites.destroyAllSpritesOfKind(SpriteKind.Player) let xloc = [ - 40, - 120, - 40, - 120 + 40, + 120, + 40, + 120 ] let yloc = [ - 30, - 30, - 90, - 90 + 30, + 30, + 90, + 90 ] for (let index = 0; index <= num - 1; index++) { mp.setPlayerSprite(mp.getPlayerByIndex(index), sprites.create(list[index], SpriteKind.Player)) @@ -92,52 +319,32 @@ namespace pickle { } } -} - -namespace logic{ - /** - * this just holds code - */ - //% block="check if A button pressed" weight=300 - //% handlerStatement=1 - export function wralyla(handler: () => void) { - handler(); + //% blockId=bump_sprite + //% block="$thisSprite bump $thatSprite" + //% thisSprite.shadow=variables_get + //% thisSprite.defl=sprite + //% thatSprite.shadow=variables_get + //% thatSprite.defl=otherSprite + export function bumpSprite(thisSprite: Sprite, thatSprite: Sprite) { + thatSprite.setPosition((thisSprite.x + 80) % 160, thisSprite.y) } } - -//% color=#6d5ba4 icon="\uf0f2" -namespace bundles{ - /** - * this just holds code - */ - //% block="check if A button pressed" weight=300 - //% handlerStatement=1 - export function wralyla(handler: () => void) { - handler(); - } - +namespace info { /** - * this just holds code - */ - //% block="create finish line" weight=300 - //% handlerStatement=1 - export function wraeverett(handler: () => void) { - handler(); + * Runs code once each time a player's score reaches a given value. + * @param score The score to check for, eg: 100 + * @param handler The code to run when the score is reached + */ + //% blockId=mp_onScore2 + //% block="on player scores $score" + //% score.defl=20 + //% blockGap=8 + //% help=multiplayer/on-score + //% parts="multiplayer" + export function onScore2(score: number, handler: () => void) { + mp._mpstate().onReachedScore(score, handler); } - - /** - * this just holds code - */ - //% block="create players" weight=300 - //% handlerStatement=1 - export function wrastu(handler: () => void) { - handler(); - } - - - - } ``` diff --git a/docs/test/tutorials/sparks-jr.md b/docs/test/tutorials/sparks-jr.md new file mode 100644 index 0000000000..0cdd4ed170 --- /dev/null +++ b/docs/test/tutorials/sparks-jr.md @@ -0,0 +1,147 @@ +# Sparks Flying (Jr.) +### @explicitHints true + + +## prehistoric @showdialog + + +Let's make a game! + +![Campfire Sparks](/static/skillmap/sparks/sparks1.gif "Let's create sparks") + + + + +## {2. Your First Block} + +**Add your first block** + +![Set the background with a block from the scene category](/static/skillmap/sparks/bg.gif "Let's add a background") + + +#### ~ tutorialhint + +```blocks +//@highlight +scene.setBackgroundImage(img`.`) +``` + + + +## {3. Choose the cave} + +**Choose a cave** + +![Choose your favorite cave](/static/skillmap/sparks/cave.gif "There are different caves to choose from") + + + +#### ~ tutorialhint + +```blocks +scene.setBackgroundImage(sparks.background) +``` + + + +## {4. Check Your Screen!} + + +**Look at the game window!** + +![Look for the game window in the lower right](/static/skillmap/sparks/game.png "Click the mini game window to pop open the bigger game window.") + +You should see a cave background. + + + + + +## {5. Add the Sprite} + + +**Add kindling!** + +![Add a pile of kindling](/static/skillmap/sparks/kindling.gif "Let's add a kindling sprite") + + +#### ~ tutorialhint + +```blocks +scene.setBackgroundImage(sparks.background) +//@highlight +sparksjr.addFire(img`.`) +``` + + + +## {6. Choose the kindling} + +**Choose the kindling pile from the gallery** +![Choose the biggest kindling pile](/static/skillmap/sparks/kindling1.gif "Let's add a kindling sprite") + + + +#### ~ tutorialhint + +```blocks +scene.setBackgroundImage(sparks.background) +//@highlight +sparksjr.addFire(sparks.pile1) +``` + + + + +## {8. Play!} + +- :binoculars: Take a look at what you made! + +How many points can you get in twenty seconds? + + + + +## {9. Finale} + +**πŸͺ΅ Way to Go πŸͺ΅** + +You have a clicker game! + + +When you're ready, click **Done** to finish this tutorial and share your game. + + +```blockconfig.global + sparksjr.changeScoreOverride(1) +``` + +```ghost +sparksjr.onB(function () { + sparksjr.changeScoreOverride(1) +}) +sparksjr.onScore(30, function () { + sparksjr.fireWin() +}) +sparksjr.onScore(-5, function () { + sparksjr.fireLoss() +}) +scene.setBackgroundImage(sparks.background1) +sparksjr.addFire(sparks.pile1) +game.onUpdateInterval(1000, function () { + sparksjr.changeScoreOverride(-1) +}) + +``` + + + + +```package +arcade-carnival=github:microsoft/arcade-carnival +arcade-storytelling=github:microsoft/arcade-storytelling +arcade-text=github:microsoft/arcade-text +sparks=github:kiki-lee/sparks#v0.0.9 +sparksjr=github:kiki-lee/sparksjr#v0.0.2 +``` +