{"owner":"4ian","repo":"GDevelop","hasSkills":true,"totalSkillsCount":24,"totalTokensCount":24879,"categories":["plugin-manifest","anthropic-skill"],"hasMcp":false,"mcpConfig":null,"found":["Extensions/NavMeshPathfinding/README.md","Extensions/Firebase/README.md","Extensions/PlatformBehavior/README.md","Extensions/LICENSE.md","Extensions/DialogueTree/bondage.js/LICENSE.md","Extensions/BBText/pixi-multistyle-text/README.md","Extensions/DialogueTree/bondage.js/README.md","Extensions/TileMap/example/anotherIsland.json","Extensions/README.md","Extensions/Effects/pixi-filters/README.md","Extensions/Physics3DBehavior/README.md","Extensions/Firebase/A_firebasejs/LICENSE.md","Extensions/TileMap/example/island.json","Extensions/TileMap/helper/README.md","GDevelop.js/__tests__/extensions/EBAsyncAction.json","GDevelop.js/__tests__/extensions/EBObject.json","Extensions/DialogueTree/bondage.js/tests/assignment.json","Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json","Extensions/DialogueTree/bondage.js/tests/conditions.json","Extensions/DialogueTree/bondage.js/tests/links.json","Extensions/DialogueTree/bondage.js/tests/shortcuts.json","Extensions/TileMap/tests/flipped and animated tiles/example.json","Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json","Extensions/TileMap/tests/flipped and animated tiles/tileset.json"],"skills":{"Extensions/NavMeshPathfinding/README.md":"# NavMesh pathfinding extension\n\nTo update the library:\n- Clone this fork https://github.com/D8H/recast-navigation-js\n- Check out `main`\n- Get the wasm build with npm\n- Copy the wasm build into `recast-navigation-js/packages/recast-navigation-wasm/build`\n- Run `yarn build`\n- Check out `umd-build`\n- Run `yarn build`\n- Copy `recast-navigation-js/packages/recast-navigation/recast-navigation-generators.js` into this folder as `A_recast-navigation-generators.js` (include files are loaded sorted by name: it must be loaded before the behaviors), and the wasm build\n","Extensions/Firebase/README.md":"# Firebase Extension\n\nThis is the wrapper for the Firebase SDK for GDevelop.\nThe files are prefixed with A_, B_, C_ and D_ to classify their import priority (where A has the highest and D the lowest).\n\nfirebasejs contains the Web SDK.\nfirebasetools contains wrappers for GDevelop.\n","Extensions/PlatformBehavior/README.md":"# Platformer Extension technical documentation\n\n## Floor following\n\n### Horizontal search\n\nWhen the character walks on a platform, he must follow its slope.\nThe `slopeMaxAngle` property is used to calculate how much the character can move vertically to follow it.\nIf the platform is too high, the platform is considered to be an obstacle and the character will stop before it.\n\nWhen there is no obstacle detected by the horizontal search, the movement is done in 1 step and the vertical search is done at the new `x` position.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingRequestedDeltaX.png)](./diagrams/SlopeFollowingRequestedDeltaX.svgz)\n\nOtherwise, when there is a junction, 2 vertical searches are done:\n\n- one before a potential obstacle (in pink)\n- one at the end of the movement\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingClimbFactor.png)](./diagrams/SlopeFollowingClimbFactor.svgz)\n\nThis allows to calculate the right slope angle. Indeed, in one step, the angle could appear lower (the dotted line).\nWhich means that the character could climb it during 1 frame and then stop.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingClimbFactorMean.png)](./diagrams/SlopeFollowingClimbFactorMean.svgz)\n\nFor further details on the implementation, please take a look at the comments in:\n\n- the function `gdjs.PlatformerObjectRuntimeBehavior._moveX`\n- the function `gdjs.PlatformerObjectRuntimeBehavior.OnFloor.beforeMovingY`\n\n### Vertical search\n\nThe aim of the vertical search is to find the highest platform where the character can land.\nThere are 2 constraints:\n\n- `allowedMinDeltaY` how much the character can go upward\n- `allowedMaxDeltaY` how much the character can go downward\n\nDuring the search, these 2 constraints can tighten around the character.\nIf they become incompatible, it means that the character can't go through the hole,\nit will go back to its original position and lose its speed.\n\nThere are also more obvious obstacles that cover the character in the middle and end the search directly.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingResult.png)](./diagrams/SlopeFollowingResult.svgz)\n\nObstacles can eventually encompass the character. So, platforms edges don't have any collision with character.\nTo detect such cases, 2 flags are used:\n\n- `foundOverHead` when an edge is over `headMaxY`\n- `foundUnderHead` when an edge is under `floorMinY`\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingContext.png)](./diagrams/SlopeFollowingContext.svgz)\n\nFor further details on the implementation, please take a look at the comments in:\n\n- the function `gdjs.PlatformerObjectRuntimeBehavior._findHighestFloorAndMoveOnTop`\n- the class `gdjs.PlatformerObjectRuntimeBehavior.FollowConstraintContext`\n\n## Jump trajectory\n\n### Sequential calculus of the engine\n\nThe engine uses the previous speeds and positions to evaluate the new ones (with Verlet integrations). This is fast for sequential access and it's a good fit for what the engine does.\n\nThe model doesn't follow the laws of physics and this is fine because more realism doesn't mean more fun. Internally, it uses 2 independent speeds:\n\n- the current jumping speed `currentJumpSpeed`\n- the current falling speed `currentFallSpeed`\n\nNote that in the engine `currentJumpSpeed` is actually an absolute speed but it's easier to visualize as a negative value as it is subtracted to `currentFallSpeed`.\n\nThe jump speed stays at its initial value while the jump is sustained. Then, it decreases (in absolute) according to the gravity until it reaches 0 and stays constant until the end.\nThe falling speed starts at 0 and increase according to the gravity, as soon as the jump start. Until, it reaches the maximum falling speed and stays constant until the end too.\n\n[![Jump speed](./diagrams/JumpSpeed.png)](./diagrams/JumpSpeed.svgz) [![Falling speed](./diagrams/FallingSpeed.png)](./diagrams/FallingSpeed.svgz)\n\n### Requests solving and random access\n\n#### Why a continuous model?\n\nA function allows to get a position for any given time without calculating every previous positions.\n\n#### Polynomial piece-wise function\n\nThe character trajectory during a jump looks like a quadratic function, but it's actually a piece-wise function.\n\nOn this first trajectory example, the curve almost follows the quadratic function in white, but it actually follows the grey ones at the start and the end of the jump. There is also an affine part at the end of the jump. It's not shown on this plot because it happens later on.\n\n![Trajectory with default settings](./diagrams/DefaultSettings.png)\n\nThis example of trajectory shows the 4 functions. It has an affine part in the middle instead of a quadratic one like in the previous example. In practice, this jump trajectory will seem off, but a tiny affine part can happen in some configurations.\n\n![Trajectory with an affine part](./diagrams/WithAffine.png)\n\nThe piece-wise function has 3 borders:\n\n- at the end of the jump sustaining (jumpSustainTime)\n- when the maximum falling speed is reached (maxFallingTime)\n- when the jump speed reach 0 (jumpEndTime)\n\nDepending on the when the maximum falling speed is reached, there can be 3 piece-wise functions:\n\n- after the jump end\n  - sustain case\n  - common case\n  - free fall case\n  - gliding case\n- before the jump end and after the sustaining\n  - sustain case\n  - common case\n  - max falling case\n  - gliding case\n- during the sustaining\n  - sustain case\n  - affine case\n  - max falling case\n  - gliding case\n\n[![Jump cases](./diagrams/JumpCases.png)](./diagrams/JumpCases.svgz)\n\n#### SageMath model\n\nThe following model is written for [SageMath](https://www.sagemath.org/), an open-source mathematics software system.\n\n```Python\n# First define the jump and falling functions #\n\ncurrentFallingSpeed(t, gravity) = gravity * t\nfallingX(t, gravity) = integral(currentFallingSpeed(t, gravity), t)\nmaxFallingTime(gravity, maxFallingSpeed) = solve([currentFallingSpeed(t, gravity)==maxFallingSpeed],t)[0].rhs()\nfallEndedX(t, gravity) = fallingX(maxFallingTime(gravity, maxFallingSpeed), gravity) + maxFallingSpeed * (t - maxFallingTime(gravity, maxFallingSpeed))\n\ncurrentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) = -jumpSpeed + gravity * (t - jumpSustainTime)\nsustainedX(t, jumpSpeed) = -jumpSpeed * t\njumpingX(t, gravity, jumpSpeed, jumpSustainTime) = sustainedX(jumpSustainTime, jumpSpeed) + integral(currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime), t, jumpSustainTime, t)\njumpEndTime(gravity, jumpSpeed, jumpSustainTime) = jumpSustainTime + jumpSpeed / gravity\njumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) = jumpingX(jumpEndTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# t < jumpSustainTime && t < maxFallingTime #\n\nsustainCaseSpeed(t, gravity, jumpSpeed) = -jumpSpeed + currentFallingSpeed(t, gravity)\nsustainCaseHeight(t, gravity, jumpSpeed) = sustainedX(t, jumpSpeed) + fallingX(t, gravity)\nsustainCasePeakTime(gravity, jumpSpeed, jumpSustainTime) = solve([sustainCaseSpeed(t, gravity, jumpSpeed)==0], t)[0].rhs()\nsustainCasePeakHeight(gravity, jumpSpeed, jumpSustainTime) = sustainCaseHeight(sustainCasePeakTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# jumpSustainTime < t && t < maxFallingTime && t < jumpEndTime #\n\ncommonCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime) = currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) + currentFallingSpeed(t, gravity)\ncommonCaseHeight(t, gravity, jumpSpeed, jumpSustainTime) = jumpingX(t, gravity, jumpSpeed, jumpSustainTime) + fallingX(t, gravity)\ncommonCasePeakTime(gravity, jumpSpeed, jumpSustainTime) = solve([commonCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime)==0], t)[0].rhs()\ncommonCasePeakHeight(gravity, jumpSpeed, jumpSustainTime) = commonCaseHeight(commonCasePeakTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# jumpSustainTime < t && maxFallingTime < t && t < jumpEndTime #\n\nmaxFallingCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) + maxFallingSpeed\nmaxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpingX(t, gravity, jumpSpeed, jumpSustainTime) + fallEndedX(t, gravity)\nmaxFallingCasePeakTime(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==0], t)[0].rhs()\nmaxFallingCasePeakHeight(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = maxFallingCaseHeight(maxFallingCasePeakTime(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed), gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)\n\n# maxFallingTime < t && t < jumpSustainTime #\n# in this case the speed is constant (-jumpSpeed + maxFallingSpeed) there is no strict maximum. #\n\naffineCaseSpeed(t, jumpSpeed, maxFallingSpeed) = -jumpSpeed + maxFallingSpeed\naffineCaseHeight(t, gravity, jumpSpeed, maxFallingSpeed) = sustainedX(t, jumpSpeed) + fallEndedX(t, gravity)\n\n\n# jumpEndTime < t && maxFallingTime < t #\n# This is a strictly descending phase, the peak can't happen here #\n\nglidingCaseSpeed(t, maxFallingSpeed) = maxFallingSpeed\nglidingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) + fallEndedX(t, gravity)\n\n\n# jumpEndTime < t && t < maxFallingTime #\n# This is a strictly descending phase, the peak can't happen here #\n\nfreeFallCaseSpeed(t, gravity) = currentFallingSpeed(t, gravity)\nfreeFallCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) + fallingX(t, gravity)\n```\n\n#### Find the initial jump speed for a given jump height\n\nThe great thing about quadratic functions is that it's easy to find solutions to a constraint. For instance, to find which initial jump speed to choose to jump a given height, the formula can be extracted like this:\n\n```Python\nvar('givenHeight')\nsolve([sustainCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\nsolve([commonCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\nsolve([maxFallingCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\n```\n\nThe program will have to determine which formula to use. As the initial jump speed is unknown, it's not possible to know where the peak will happen, but jump speed solutions of each formula can be used to check if the peak actually happens during the right interval of time.\n\n```JavaScript\nif (maxFallingSpeedReachedTime > jumpSustainTime) {\n    // common case\n    jumpSpeed = commonCaseJumpSpeed(jumpHeight);\n    peakTime = commonCasePeakTime(jumpSpeed);\n\n    if (peakTime < jumpSustainTime) {\n        // sustain case\n        jumpSpeed = sustainCaseJumpSpeed(jumpHeight);\n    }\n    else if (peakTime > maxFallingSpeedReachedTime) {\n        // max falling case\n        jumpSpeed = maxFallingCaseJumpSpeed(jumpHeight);\n    }\n}\nelse {\n    // affine case can't have a maximum\n\n    // sustain case\n    jumpSpeed = sustainCaseJumpSpeed(jumpHeight);\n    peakTime = jumpSpeed / gravity;\n\n    if (peakTime > maxFallingSpeedReachedTime) {\n        // max falling case\n        jumpSpeed = maxFallingCaseJumpSpeed(jumpHeight);\n    }\n}\n```\n\n#### Find the time for a given Y displacement\n\nThe same kind of logic from the previous section can be used to evaluate at which time a character will be at a given ordinate when going up or going down.\n\n```Python\nsustainCaseUpTime(y, gravity, jumpSpeed) = solve([sustainCaseHeight(t, gravity, jumpSpeed)==y], t)[0].rhs()\ncommonCaseUpTime(y, gravity, jumpSpeed, jumpSustainTime) = solve([height(t, gravity, jumpSpeed, jumpSustainTime)==y], t)[0].rhs()\nmaxFallingCaseCaseUpTime(y, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[0].rhs()\n\nsustainCaseDownTime(y, gravity, jumpSpeed) = solve([sustainCaseHeight(t, gravity, jumpSpeed)==y], t)[1].rhs()\ncommonCaseDownTime(y, gravity, jumpSpeed, jumpSustainTime) = solve([height(t, gravity, jumpSpeed, jumpSustainTime)==y], t)[1].rhs()\nmaxFallingCaseCaseDownTime(y, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[1].rhs()\nglidingCaseDownTime(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([glidingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[0].rhs() # only one solution (it's affine) #\nfreeFallCaseDownTime(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([freeFallCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[1].rhs()\n\naffineCaseTime(y, jumpSpeed, maxFallingSpeed) = solve([affineCaseHeight(t, jumpSpeed, maxFallingSpeed)==y], t)[0].rhs()\n```\n\nThe root conditions are the 3 piece-wise functions described at the end of the [Polynomial piece-wise function](#polynomial-piece-wise-function) section.\nNote that quadratic functions have a maximum or a minimum value which means there won't always be a solution. That's why there are \"not a number\" checks.\n\n```JavaScript\nif (maxFallingSpeedReachedTime > jumpEndTime) {\n    time = sustainCase(y);\n    if (time > jumpSustainTime || Number.isNaN(time)) {\n        time = commonCase(y);\n        if (time > jumpEndTime || Number.isNaN(time)) {\n            time = freeFallCase(y);\n            if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\nelse if (maxFallingSpeedReachedTime > jumpSustainTime) {\n    time = sustainCase(y);\n    if (time > jumpSustainTime || Number.isNaN(time)) {\n        time = commonCase(y);\n        if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n            time = maxFallingCase(y);\n            if (time > jumpEndTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\nelse {\n    time = sustainCase(y);\n    if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n        time = maxFallingSpeed >= jumpSpeed ? affineCase(y) : time = Number.MAX_VALUE;\n        if (time > jumpSustainTime || Number.isNaN(time)) {\n            time = maxFallingCase(y);\n            if (time > jumpEndTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\n```\n\n#### Plotting trajectories\n\nThis is the code used to plot the first graphic of the [Polynomial piece-wise function](#polynomial-piece-wise-function) section.\n\n```Python\n# The trajectory of the default jump settings\n#\n# gravity: 1000\n# maxFallingSpeed: 700\n# jumpSustainTime: 0.2\n# jumpSpeed: 600\n#\n# n(maxFallingTime(1000, 700))\n# 0.7\n\n(\n  plot(-sustainCaseHeight(t, 1000, 600), 0, 0.8, ymin=0, color='grey')\n+ plot(-commonCaseHeight(t, 1000, 600, 0.2), 0, 0.8, ymin=0, color='black')\n+ plot(-maxFallingCaseHeight(t, 1000, 600, 0.2, 700), 0, 0.8, ymin=0, color='grey')\n+ plot(-piecewise([\n    ((0, 0.2), sustainCaseHeight(t, 1000, 600)),\n    ((0.2, maxFallingTime(1000, 700)), commonCaseHeight(t, 1000, 600, 0.2)),\n    ((maxFallingTime(1000, 700), 2), maxFallingCaseHeight(t, 1000, 600, 0.2, 700))\n  ]), 0, 0.8, ymin=0, color='cyan')\n)\n```\n","Extensions/LICENSE.md":"GDevelop extensions\n-------------------\n\nThe MIT License (MIT)\n\nCopyright (c) 2008-2016 Florian Rival\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nExternal libraries used by extensions\n-------------------------------------\n\nFor external libraries, refer to the readme or license file included in their\ndirectories\n","Extensions/DialogueTree/bondage.js/LICENSE.md":"The MIT License (MIT)\n\nCopyright (c) 2017 j hayley\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","Extensions/BBText/pixi-multistyle-text/README.md":"# pixi-multistyle-text\n\n[![NPM](https://nodei.co/npm/pixi-multistyle-text.png)](https://nodei.co/npm/pixi-multistyle-text/)\n\nAdd a `MultiStyleText` object inside [pixi.js](https://github.com/GoodBoyDigital/pixi.js) to easily create text using different styles.\n\n## Example\n\nIn the example below, we are defining 4 text styles.\n`default` is the default style for the text, and the others matches the tags inside the text.\n\n```js\nlet text = new MultiStyleText(\"Let's make some <ml>multiline</ml>\\nand <ms>multistyle</ms> text for\\n<pixi>Pixi.js!</pixi>\",\n{\n    \"default\": {\n        fontFamily: \"Arial\",\n        fontSize: \"24px\",\n        fill: \"#cccccc\",\n        align: \"center\"\n    },\n    \"ml\": {\n        fontStyle: \"italic\",\n        fill: \"#ff8888\"\n    },\n    \"ms\": {\n        fontStyle: \"italic\",\n        fill: \"#4488ff\"\n    },\n    \"pixi\": {\n        fontSize: \"64px\",\n        fill: \"#efefef\"\n    }\n});\n```\n\n## Build instructions\n\nThe library is no longer maintain and need this fix to work with Pixi 7: \n- [Fix empty color attribute errors with Pixi 7](https://github.com/D8H/pixi-multistyle-text/pull/1)\n\n```bash\nyarn install\nyarn build\n```\n\n## Usage\n\n### `text = new MultiStyleText(text, textStyles)`\n\nCreates a new `MultiStyleText` with the given text and styles.\n\n#### `textStyles`\n\nType: `{ [key: string]: ExtendedTextStyle }`\n\nEach key of this dictionary should match with a tag in the text. Use the key `default` for the default style.\n\nEach `ExtendedTextStyle` object can have [any of the properties of a standard PIXI text style](http://pixijs.download/release/docs/PIXI.TextStyle.html), in addition to a `valign` property that allows you to specify where text is rendered relative to larger text on the same line (`\"top\"`, `\"middle\"`, or `\"bottom\"`).\n\nThe `align`, `wordWrap`, `wordWrapWidth`, and `breakWord` properties are ignored on all styles _except for the `default` style_, which controls those properties for the entire text object.\n\nIf text is rendered without any value assigned to a given parameter, Pixi's defaults are used.\n\n## Demo\n\n```bash\nyarn demo\n```\n\n## License\n\nMIT, see [LICENSE.md](http://github.com/tleunen/pixi-multistyle-text/blob/master/LICENSE.md) for details.\n","Extensions/DialogueTree/bondage.js/README.md":"# bondage.js [![Build Status](https://travis-ci.org/jhayley/bondage.js.svg?branch=master)](https://travis-ci.org/jhayley/bondage.js)\n\n[Yarn](https://github.com/InfiniteAmmoInc/Yarn) parser for Javascript, in the same vein as [YarnSpinner](https://github.com/thesecretlab/YarnSpinner).\n\n# Usage\n\n#### As a Web Tool\n\nTo run through your yarn files in your browser, go to <http://hayley.zone/bondage.js>, paste your yarn data in the field, then hit \"compile\".\n\n#### As a Command Line Tool\nInstallation: `npm install -g bondage`\n\nNow you can use the `bondage` command to run through Yarn files from the command line. You can load one or multiple files at a time. If you load multiple files and a two nodes are encountered with the same name, the node will be overwritten.\n\n**Examples**\n\n* Running a single file from the default start node (named \"Start\"): `bondage run yarnfile.json`\n* Running a single file from the specified node name: `bondage run -s StartNode yarnfile.json`\n* Running multiple files from the specified node name: `bondage run -s StartNode yarnfile1.json yarnfile2.json ...`\n* See the compiled ast: `bondage compile --ast yarnfile.json`\n* See the tokenized input: `bondage compile --tokens yarnfile.json`\n\n#### As a Library\n\n**Web**\n\nInclude [dist/bondage.min.js](https://github.com/jhayley/bondage.js/blob/master/dist/bondage.min.js) somewhere in your html, and the `bondage` variable will be added to the global scope. You can then access everything in the example below (such as `bondage.Runner`) through that variable.\n\n**Node**\n\nInstallation: `npm install bondage`\n\n```javascript\nconst fs = require('fs');\nconst bondage = require('bondage');\n\nconst runner = new bondage.Runner();\nconst yarnData = JSON.parse(fs.readFileSync('yarnFile.json'));\n\nrunner.load(yarnData);\n\n// Loop over the dialogue from the node titled 'Start'\nfor (const result of runner.run('Start')) {\n  // Do something else with the result\n  if (result instanceof bondage.TextResult) {\n    console.log(result.text);\n  } else if (result instanceof bondage.OptionsResult) {\n    // This works for both links between nodes and shortcut options\n    console.log(result.options);\n\n    // Select based on the option's index in the array (if you don't select an option, the dialog will continue past them)\n    result.select(1);\n  } else if (result instanceof bondage.CommandResult) {\n     // If the text was inside <<here>>, it will get returned as a CommandResult string, which you can use in any way you want\n    console.log(result.text);\n  }\n}\n\n// Advance the dialogue manually from the node titled 'Start'\nconst d = runner.run('Start')\nlet result = d.next().value;\nlet nextResult = d.next().value;\n// And so on\n```\n\nFor usage of the yarn format itself, please see the [YarnSpinner Documentation](https://github.com/thesecretlab/YarnSpinner/tree/master/Documentation), everything there should carry here too (if something does not match up, please open an issue).\n","Extensions/TileMap/example/anotherIsland.json":"{ \"compressionlevel\":0,\n \"height\":20,\n \"infinite\":false,\n \"layers\":[\n        {\n         \"data\":[70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 94, 95, 95, 95, 95, 96, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 94, 95, 95, 95, 84, 188, 190, 176, 133, 83, 95, 95, 95, 95, 96, 70, 70, 70, 70, 70, 70, 70, 70, 94, 84, 164, 133, 133, 188, 178, 202, 133, 164, 133, 85, 87, 87, 133, 83, 96, 70, 70, 70, 70, 70, 70, 94, 84, 176, 85, 86, 87, 200, 165, 214, 133, 133, 176, 97, 74, 86, 87, 133, 108, 70, 70, 70, 70, 70, 70, 106, 133, 214, 97, 122, 99, 212, 214, 85, 86, 87, 164, 109, 63, 122, 99, 71, 120, 70, 70, 70, 70, 70, 70, 106, 97, 74, 75, 62, 111, 164, 133, 97, 122, 74, 86, 86, 75, 62, 111, 108, 70, 70, 70, 70, 70, 70, 70, 106, 109, 63, 98, 74, 87, 133, 176, 97, 62, 110, 110, 110, 110, 111, 133, 108, 70, 70, 70, 70, 70, 70, 70, 106, 164, 109, 110, 63, 74, 86, 86, 75, 74, 86, 86, 73, 73, 73, 97, 108, 70, 70, 70, 70, 70, 70, 70, 106, 164, 97, 85, 75, 62, 63, 98, 98, 122, 98, 122, 74, 73, 73, 109, 108, 70, 70, 70, 70, 70, 70, 70, 106, 133, 97, 75, 62, 111, 109, 110, 63, 62, 63, 98, 71, 119, 119, 119, 120, 70, 70, 70, 70, 70, 70, 70, 118, 119, 72, 110, 111, 164, 133, 133, 97, 99, 109, 110, 108, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 120, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70],\n         \"height\":20,\n         \"id\":1,\n         \"name\":\"teren\",\n         \"opacity\":1,\n         \"type\":\"tilelayer\",\n         \"visible\":true,\n         \"width\":24,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"data\":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 152, 152, 152, 152, 152, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 256, 256, 0, 229, 152, 152, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n         \"height\":20,\n         \"id\":2,\n         \"name\":\"obiekty\",\n         \"opacity\":1,\n         \"type\":\"tilelayer\",\n         \"visible\":true,\n         \"width\":24,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":3,\n         \"name\":\"Domek1\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":230,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":336\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":233,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":336\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":234,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":235,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":236,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":237,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":252\n                }, \n                {\n                 \"height\":75,\n                 \"id\":239,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":176,\n                 \"y\":252\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":4,\n         \"name\":\"Domek2\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":254,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":504\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":255,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":504\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":256,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":257,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":258,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":259,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":420\n                }, \n                {\n                 \"height\":75,\n                 \"id\":260,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":219,\n                 \"y\":420\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":5,\n         \"name\":\"Domek3\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":261,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":262,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":263,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":264,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":265,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":168\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":266,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":168\n                }, \n                {\n                 \"height\":75,\n                 \"id\":267,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":302,\n                 \"y\":168\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":6,\n         \"name\":\"Domek4\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":268,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":269,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":270,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":271,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":272,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":273,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":210\n                }, \n                {\n                 \"height\":75,\n                 \"id\":274,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":512,\n                 \"y\":210\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":7,\n         \"name\":\"Domek5\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":282,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":283,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":284,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":285,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":286,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":378\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":287,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":378\n                }, \n                {\n                 \"height\":75,\n                 \"id\":288,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":764,\n                 \"y\":378\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":8,\n         \"name\":\"Domek6\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":289,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":290,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":291,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":292,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":293,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":168\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":294,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":168\n                }, \n                {\n                 \"height\":75,\n                 \"id\":295,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":680,\n                 \"y\":168\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":9,\n         \"name\":\"krzesla\",\n         \"objects\":[\n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":34,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":544,\n                 \"y\":480\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":37,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420.5,\n                 \"y\":523.5\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":39,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":391,\n                 \"y\":485.5\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":40,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":435.5,\n                 \"y\":484.5\n                }, \n                {\n                 \"gid\":113,\n                 \"height\":42,\n                 \"id\":42,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":526.5,\n                 \"y\":524.5\n                }, \n                {\n                 \"gid\":113,\n                 \"height\":42,\n                 \"id\":43,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":513.5,\n                 \"y\":502.5\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":10,\n         \"name\":\"Scena\",\n         \"objects\":[\n                {\n                 \"gid\":138,\n                 \"height\":42,\n                 \"id\":299,\n                 \"name\":\"Scena4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":137,\n                 \"height\":42,\n                 \"id\":298,\n                 \"name\":\"Scena3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":137,\n                 \"height\":42,\n                 \"id\":297,\n                 \"name\":\"Scena2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":136,\n                 \"height\":42,\n                 \"id\":300,\n                 \"name\":\"Scena1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420,\n                 \"y\":420\n                }, \n                {\n                 \"height\":36,\n                 \"id\":302,\n                 \"name\":\"Scena_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":165,\n                 \"x\":421,\n                 \"y\":384\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":11,\n         \"name\":\"Lawki\",\n         \"objects\":[\n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":303,\n                 \"name\":\"Lawka\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420,\n                 \"y\":504\n                }, \n                {\n                 \"height\":14,\n                 \"id\":305,\n                 \"name\":\"Lawka_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":423,\n                 \"y\":479\n                }, \n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":304,\n                 \"name\":\"Lawka_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":504\n                }, \n                {\n                 \"height\":14,\n                 \"id\":307,\n                 \"name\":\"Lawka_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":549,\n                 \"y\":479\n                }, \n                {\n                 \"height\":14,\n                 \"id\":324,\n                 \"name\":\"Lawka_collider_wall_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":801,\n                 \"y\":227\n                }, \n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":325,\n                 \"name\":\"Lawka_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":252\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":12,\n         \"name\":\"Kamienie\",\n         \"objects\":[\n                {\n                 \"gid\":101,\n                 \"height\":42,\n                 \"id\":310,\n                 \"name\":\"Kamien\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":336\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":25,\n                 \"id\":312,\n                 \"name\":\"Kamien_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":25,\n                 \"x\":344,\n                 \"y\":300\n                }, \n                {\n                 \"gid\":125,\n                 \"height\":42,\n                 \"id\":311,\n                 \"name\":\"Kamien_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":378\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":23,\n                 \"id\":314,\n                 \"name\":\"Kamien_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":23,\n                 \"x\":681,\n                 \"y\":356\n                }, \n                {\n                 \"gid\":125,\n                 \"height\":42,\n                 \"id\":326,\n                 \"name\":\"Kamien_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":630\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":23,\n                 \"id\":327,\n                 \"name\":\"Kamien_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":23,\n                 \"x\":471,\n                 \"y\":608\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":13,\n         \"name\":\"beczki\",\n         \"objects\":[\n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":44,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":735,\n                 \"y\":265\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":45,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":740.333,\n                 \"y\":249.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":46,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":647,\n                 \"y\":248.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":47,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":568,\n                 \"y\":311.5\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":48,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":477,\n                 \"y\":302\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":49,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":468.5,\n                 \"y\":285\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":50,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":752.083,\n                 \"y\":500.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":51,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":717,\n                 \"y\":460.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":53,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":726,\n                 \"y\":444.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":54,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":361.333,\n                 \"y\":263.833\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":55,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":262,\n                 \"y\":245.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":56,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":266.167,\n                 \"y\":265.5\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":57,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":135.833,\n                 \"y\":355\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":58,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":153.5,\n                 \"y\":359.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":59,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":137.167,\n                 \"y\":339.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":60,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":189.333,\n                 \"y\":517.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":61,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":202.333,\n                 \"y\":524.333\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":15,\n         \"name\":\"ThorPU\",\n         \"objects\":[\n                {\n                 \"gid\":100,\n                 \"height\":42,\n                 \"id\":211,\n                 \"name\":\"Thor_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":672\n                }, \n                {\n                 \"gid\":180,\n                 \"height\":42,\n                 \"id\":212,\n                 \"name\":\"Thor_light\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":672\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":213,\n                 \"name\":\"Thor_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":640\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":19,\n                 \"id\":214,\n                 \"name\":\"Thor_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":19,\n                 \"x\":515,\n                 \"y\":651\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":16,\n         \"name\":\"MeatPU\",\n         \"objects\":[\n                {\n                 \"gid\":156,\n                 \"height\":42,\n                 \"id\":215,\n                 \"name\":\"Meat_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":588\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":216,\n                 \"name\":\"Meat_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":550\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":25,\n                 \"id\":217,\n                 \"name\":\"Meat_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":25,\n                 \"x\":261,\n                 \"y\":558\n                }, \n                {\n                 \"gid\":168,\n                 \"height\":42,\n                 \"id\":218,\n                 \"name\":\"Meat_eat\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":588\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":17,\n         \"name\":\"BeesPU\",\n         \"objects\":[\n                {\n                 \"gid\":155,\n                 \"height\":42,\n                 \"id\":219,\n                 \"name\":\"Bees_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":168\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":21,\n                 \"id\":220,\n                 \"name\":\"Bees_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":21,\n                 \"x\":474.5,\n                 \"y\":145.5\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":221,\n                 \"name\":\"Bees_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":464,\n                 \"y\":135\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":18,\n         \"name\":\"Spawny\",\n         \"objects\":[\n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":315,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":315,\n                 \"y\":264\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":316,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":187,\n                 \"y\":348\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":317,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":524,\n                 \"y\":307\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":318,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":692,\n                 \"y\":264\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":319,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":777,\n                 \"y\":473\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":320,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":232,\n                 \"y\":516\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":14,\n         \"name\":\"krzaki\",\n         \"objects\":[\n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":64,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":815,\n                 \"y\":345.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":65,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":827.333,\n                 \"y\":364.167\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":67,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":130.833,\n                 \"y\":456.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":68,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":135.833,\n                 \"y\":473.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":69,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":159.333,\n                 \"y\":457.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":70,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":150.833,\n                 \"y\":435.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":72,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":129.333,\n                 \"y\":432.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":75,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":589.333,\n                 \"y\":152.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":76,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":574.333,\n                 \"y\":132.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":77,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":547.333,\n                 \"y\":130.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":78,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":561.583,\n                 \"y\":150.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":79,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":561.333,\n                 \"y\":171.583\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":80,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":220.333,\n                 \"y\":642.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":81,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":213.833,\n                 \"y\":618.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":82,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":440.833,\n                 \"y\":671.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":83,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":279.833,\n                 \"y\":620.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":84,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":254.333,\n                 \"y\":646.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":85,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":138.667,\n                 \"y\":396.667\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":87,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":821,\n                 \"y\":215\n                }, \n                {\n                 \"height\":0,\n                 \"id\":100,\n                 \"name\":\"collide2\",\n                 \"polygon\":[\n                        {\n                         \"x\":0,\n                         \"y\":0\n                        }, \n                        {\n                         \"x\":22.5,\n                         \"y\":-1\n                        }, \n                        {\n                         \"x\":30.5,\n                         \"y\":13\n                        }, \n                        {\n                         \"x\":26.75,\n                         \"y\":23.75\n                        }, \n                        {\n                         \"x\":-0.5,\n                         \"y\":25\n                        }, \n                        {\n                         \"x\":-5.75,\n                         \"y\":13.75\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":0,\n                 \"x\":146.583,\n                 \"y\":367.833\n                }, \n                {\n                 \"height\":0,\n                 \"id\":104,\n                 \"name\":\"collider1\",\n                 \"polygon\":[\n                        {\n                         \"x\":0,\n                         \"y\":0\n                        }, \n                        {\n                         \"x\":27.75,\n                         \"y\":1.75\n                        }, \n                        {\n                         \"x\":35.75,\n                         \"y\":-14\n                        }, \n                        {\n                         \"x\":54.75,\n                         \"y\":-16.5\n                        }, \n                        {\n                         \"x\":40.75,\n                         \"y\":-61.75\n                        }, \n                        {\n                         \"x\":-7.5,\n                         \"y\":-63.75\n                        }, \n                        {\n                         \"x\":-7.25,\n                         \"y\":-22.75\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":0,\n                 \"x\":142.583,\n                 \"y\":466.583\n                }, \n                {\n                 \"height\":0,\n                 \"id\":107,\n                 \"name\":\"collider4\",\n                 \"polygon\":[\n                        {\n                         \"x\":-49,\n                         \"y\":15.75\n                        }, \n                        {\n                         \"x\":-46.75,\n                         \"y\":-12.75\n                        }, \n                        {\n                         \"x\":55.5,\n                         \"y\":-14.75\n                        }, \n                        {\n                         \"x\":79,\n                         \"y\":19.75\n                        }, \n                        {\n                         \"x\":73,\n                         \"y\":44\n                        }, \n                        {\n                         \"x\":26.5,\n                         \"y\":47.75\n                        }, \n                        {\n                         \"x\":3.5,\n                         \"y\":35.5\n                        }, \n                        {\n                         \"x\":-20.75,\n                         \"y\":15.5\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n             ","Extensions/README.md":"# Extensions for GDevelop\n\nThese are the \"official\" extensions directly bundled with GDevelop.\n\n## Writing your extensions or contributing to an existing one 😎\n\nMost extensions can be written in JavaScript.\n\n**[Read this README](https://github.com/4ian/GDevelop/blob/master/newIDE/README-extensions.md)** to learn everything about writing extensions for GDevelop.\n\n## License\n\n- Extensions are provided under the MIT License: see [LICENSE.md](LICENSE.md) file.\n- External libraries can be used by extensions (Box2D, Dlib or SPARK for example). See their licenses in their directories.\n","Extensions/Effects/pixi-filters/README.md":"## Update filters libraries\n\n- Clone [Pixi Filters](https://github.com/pixijs/filters) repository `git@github.com:pixijs/filters.git`\n- Checkout a release tag.\n- Apply the following patch to build `life` libraries.\n\n```Diff\ndiff --git a/rollup.config.js b/rollup.config.js\nindex 39a001c..86bb3a9 100644\n--- a/rollup.config.js\n+++ b/rollup.config.js\n@@ -44,15 +44,33 @@\n         const freeze = false;\n         const builds = [];\n \n+        const name = '__filters';\n+        const footer = `Object.assign(PIXI.filters, ${name});`;\n+        globals = Object.assign({\n+            '@pixi/core': 'PIXI',\n+            '@pixi/filter-alpha': 'PIXI.filters',\n+            '@pixi/filter-blur': 'PIXI.filters'\n+        }, globals);\n+\n         builds.push({\n             input,\n             output: [\n+                // {\n+                //     file: path.join(basePath, main),\n+                //     format: 'cjs',\n+                //     freeze,\n+                //     sourcemap,\n+                //     banner,\n+                // },\n                 {\n+                    name,\n+                    banner,\n+                    globals,\n                     file: path.join(basePath, main),\n-                    format: 'cjs',\n+                    format: 'iife',\n+                    footer,\n                     freeze,\n                     sourcemap,\n-                    banner,\n                 },\n                 {\n                     file: path.join(basePath, module),\n@@ -74,13 +92,6 @@\n         // we'll use this to generate the bundle file\n         // this will package all dependencies\n         if (bundle) {\n-            const name = '__filters';\n-            const footer = `Object.assign(PIXI.filters, ${name});`;\n-            globals = Object.assign({\n-                '@pixi/core': 'PIXI',\n-                '@pixi/filter-alpha': 'PIXI.filters',\n-                '@pixi/filter-blur': 'PIXI.filters'\n-            }, globals);\n             builds.push({\n                 input,\n                 external: Object.keys(globals),\n```\n- Copy all the library files into a folder.\n\n```\nmkdir dist\nfind filters/ -type f -name 'filter-*.js' -exec cp '{}' dist/ ';'\n```\n\n- Move them to `Extensions/Effects/pixi-filters`.\n- Remove `//# sourceMappingURL=filter-.*.js.map` with a search and replace.","Extensions/Physics3DBehavior/README.md":"## Physics 3D Behaviors for GDevelop\n\nThis is the 3D physics engine for GDevelop, based on [Jolt Physics](https://github.com/jrouwe/JoltPhysics.js/) (WebAssembly, version 0.30.0).","Extensions/Firebase/A_firebasejs/LICENSE.md":"\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n","Extensions/TileMap/example/island.json":"# Example Skill\n\nPath: `Extensions/TileMap/example/island.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/example/island.json)","Extensions/TileMap/helper/README.md":"# helper Documentation\n\nPath: `Extensions/TileMap/helper/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/helper/README.md)","GDevelop.js/__tests__/extensions/EBAsyncAction.json":"# Extensions Skill\n\nPath: `GDevelop.js/__tests__/extensions/EBAsyncAction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/GDevelop.js/__tests__/extensions/EBAsyncAction.json)","GDevelop.js/__tests__/extensions/EBObject.json":"# Extensions Skill\n\nPath: `GDevelop.js/__tests__/extensions/EBObject.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/GDevelop.js/__tests__/extensions/EBObject.json)","Extensions/DialogueTree/bondage.js/tests/assignment.json":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/assignment.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/assignment.json)","Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json)","Extensions/DialogueTree/bondage.js/tests/conditions.json":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/conditions.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/conditions.json)","Extensions/DialogueTree/bondage.js/tests/links.json":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/links.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/links.json)","Extensions/DialogueTree/bondage.js/tests/shortcuts.json":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/shortcuts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/shortcuts.json)","Extensions/TileMap/tests/flipped and animated tiles/example.json":"# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/example.json)","Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json":"# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json)","Extensions/TileMap/tests/flipped and animated tiles/tileset.json":"# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/tileset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/tileset.json)"},"files":{"Extensions/NavMeshPathfinding/README.md":"# NavMesh pathfinding extension\n\nTo update the library:\n- Clone this fork https://github.com/D8H/recast-navigation-js\n- Check out `main`\n- Get the wasm build with npm\n- Copy the wasm build into `recast-navigation-js/packages/recast-navigation-wasm/build`\n- Run `yarn build`\n- Check out `umd-build`\n- Run `yarn build`\n- Copy `recast-navigation-js/packages/recast-navigation/recast-navigation-generators.js` into this folder as `A_recast-navigation-generators.js` (include files are loaded sorted by name: it must be loaded before the behaviors), and the wasm build\n","Extensions/Firebase/README.md":"# Firebase Extension\n\nThis is the wrapper for the Firebase SDK for GDevelop.\nThe files are prefixed with A_, B_, C_ and D_ to classify their import priority (where A has the highest and D the lowest).\n\nfirebasejs contains the Web SDK.\nfirebasetools contains wrappers for GDevelop.\n","Extensions/PlatformBehavior/README.md":"# Platformer Extension technical documentation\n\n## Floor following\n\n### Horizontal search\n\nWhen the character walks on a platform, he must follow its slope.\nThe `slopeMaxAngle` property is used to calculate how much the character can move vertically to follow it.\nIf the platform is too high, the platform is considered to be an obstacle and the character will stop before it.\n\nWhen there is no obstacle detected by the horizontal search, the movement is done in 1 step and the vertical search is done at the new `x` position.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingRequestedDeltaX.png)](./diagrams/SlopeFollowingRequestedDeltaX.svgz)\n\nOtherwise, when there is a junction, 2 vertical searches are done:\n\n- one before a potential obstacle (in pink)\n- one at the end of the movement\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingClimbFactor.png)](./diagrams/SlopeFollowingClimbFactor.svgz)\n\nThis allows to calculate the right slope angle. Indeed, in one step, the angle could appear lower (the dotted line).\nWhich means that the character could climb it during 1 frame and then stop.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingClimbFactorMean.png)](./diagrams/SlopeFollowingClimbFactorMean.svgz)\n\nFor further details on the implementation, please take a look at the comments in:\n\n- the function `gdjs.PlatformerObjectRuntimeBehavior._moveX`\n- the function `gdjs.PlatformerObjectRuntimeBehavior.OnFloor.beforeMovingY`\n\n### Vertical search\n\nThe aim of the vertical search is to find the highest platform where the character can land.\nThere are 2 constraints:\n\n- `allowedMinDeltaY` how much the character can go upward\n- `allowedMaxDeltaY` how much the character can go downward\n\nDuring the search, these 2 constraints can tighten around the character.\nIf they become incompatible, it means that the character can't go through the hole,\nit will go back to its original position and lose its speed.\n\nThere are also more obvious obstacles that cover the character in the middle and end the search directly.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingResult.png)](./diagrams/SlopeFollowingResult.svgz)\n\nObstacles can eventually encompass the character. So, platforms edges don't have any collision with character.\nTo detect such cases, 2 flags are used:\n\n- `foundOverHead` when an edge is over `headMaxY`\n- `foundUnderHead` when an edge is under `floorMinY`\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingContext.png)](./diagrams/SlopeFollowingContext.svgz)\n\nFor further details on the implementation, please take a look at the comments in:\n\n- the function `gdjs.PlatformerObjectRuntimeBehavior._findHighestFloorAndMoveOnTop`\n- the class `gdjs.PlatformerObjectRuntimeBehavior.FollowConstraintContext`\n\n## Jump trajectory\n\n### Sequential calculus of the engine\n\nThe engine uses the previous speeds and positions to evaluate the new ones (with Verlet integrations). This is fast for sequential access and it's a good fit for what the engine does.\n\nThe model doesn't follow the laws of physics and this is fine because more realism doesn't mean more fun. Internally, it uses 2 independent speeds:\n\n- the current jumping speed `currentJumpSpeed`\n- the current falling speed `currentFallSpeed`\n\nNote that in the engine `currentJumpSpeed` is actually an absolute speed but it's easier to visualize as a negative value as it is subtracted to `currentFallSpeed`.\n\nThe jump speed stays at its initial value while the jump is sustained. Then, it decreases (in absolute) according to the gravity until it reaches 0 and stays constant until the end.\nThe falling speed starts at 0 and increase according to the gravity, as soon as the jump start. Until, it reaches the maximum falling speed and stays constant until the end too.\n\n[![Jump speed](./diagrams/JumpSpeed.png)](./diagrams/JumpSpeed.svgz) [![Falling speed](./diagrams/FallingSpeed.png)](./diagrams/FallingSpeed.svgz)\n\n### Requests solving and random access\n\n#### Why a continuous model?\n\nA function allows to get a position for any given time without calculating every previous positions.\n\n#### Polynomial piece-wise function\n\nThe character trajectory during a jump looks like a quadratic function, but it's actually a piece-wise function.\n\nOn this first trajectory example, the curve almost follows the quadratic function in white, but it actually follows the grey ones at the start and the end of the jump. There is also an affine part at the end of the jump. It's not shown on this plot because it happens later on.\n\n![Trajectory with default settings](./diagrams/DefaultSettings.png)\n\nThis example of trajectory shows the 4 functions. It has an affine part in the middle instead of a quadratic one like in the previous example. In practice, this jump trajectory will seem off, but a tiny affine part can happen in some configurations.\n\n![Trajectory with an affine part](./diagrams/WithAffine.png)\n\nThe piece-wise function has 3 borders:\n\n- at the end of the jump sustaining (jumpSustainTime)\n- when the maximum falling speed is reached (maxFallingTime)\n- when the jump speed reach 0 (jumpEndTime)\n\nDepending on the when the maximum falling speed is reached, there can be 3 piece-wise functions:\n\n- after the jump end\n  - sustain case\n  - common case\n  - free fall case\n  - gliding case\n- before the jump end and after the sustaining\n  - sustain case\n  - common case\n  - max falling case\n  - gliding case\n- during the sustaining\n  - sustain case\n  - affine case\n  - max falling case\n  - gliding case\n\n[![Jump cases](./diagrams/JumpCases.png)](./diagrams/JumpCases.svgz)\n\n#### SageMath model\n\nThe following model is written for [SageMath](https://www.sagemath.org/), an open-source mathematics software system.\n\n```Python\n# First define the jump and falling functions #\n\ncurrentFallingSpeed(t, gravity) = gravity * t\nfallingX(t, gravity) = integral(currentFallingSpeed(t, gravity), t)\nmaxFallingTime(gravity, maxFallingSpeed) = solve([currentFallingSpeed(t, gravity)==maxFallingSpeed],t)[0].rhs()\nfallEndedX(t, gravity) = fallingX(maxFallingTime(gravity, maxFallingSpeed), gravity) + maxFallingSpeed * (t - maxFallingTime(gravity, maxFallingSpeed))\n\ncurrentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) = -jumpSpeed + gravity * (t - jumpSustainTime)\nsustainedX(t, jumpSpeed) = -jumpSpeed * t\njumpingX(t, gravity, jumpSpeed, jumpSustainTime) = sustainedX(jumpSustainTime, jumpSpeed) + integral(currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime), t, jumpSustainTime, t)\njumpEndTime(gravity, jumpSpeed, jumpSustainTime) = jumpSustainTime + jumpSpeed / gravity\njumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) = jumpingX(jumpEndTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# t < jumpSustainTime && t < maxFallingTime #\n\nsustainCaseSpeed(t, gravity, jumpSpeed) = -jumpSpeed + currentFallingSpeed(t, gravity)\nsustainCaseHeight(t, gravity, jumpSpeed) = sustainedX(t, jumpSpeed) + fallingX(t, gravity)\nsustainCasePeakTime(gravity, jumpSpeed, jumpSustainTime) = solve([sustainCaseSpeed(t, gravity, jumpSpeed)==0], t)[0].rhs()\nsustainCasePeakHeight(gravity, jumpSpeed, jumpSustainTime) = sustainCaseHeight(sustainCasePeakTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# jumpSustainTime < t && t < maxFallingTime && t < jumpEndTime #\n\ncommonCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime) = currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) + currentFallingSpeed(t, gravity)\ncommonCaseHeight(t, gravity, jumpSpeed, jumpSustainTime) = jumpingX(t, gravity, jumpSpeed, jumpSustainTime) + fallingX(t, gravity)\ncommonCasePeakTime(gravity, jumpSpeed, jumpSustainTime) = solve([commonCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime)==0], t)[0].rhs()\ncommonCasePeakHeight(gravity, jumpSpeed, jumpSustainTime) = commonCaseHeight(commonCasePeakTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# jumpSustainTime < t && maxFallingTime < t && t < jumpEndTime #\n\nmaxFallingCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) + maxFallingSpeed\nmaxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpingX(t, gravity, jumpSpeed, jumpSustainTime) + fallEndedX(t, gravity)\nmaxFallingCasePeakTime(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==0], t)[0].rhs()\nmaxFallingCasePeakHeight(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = maxFallingCaseHeight(maxFallingCasePeakTime(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed), gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)\n\n# maxFallingTime < t && t < jumpSustainTime #\n# in this case the speed is constant (-jumpSpeed + maxFallingSpeed) there is no strict maximum. #\n\naffineCaseSpeed(t, jumpSpeed, maxFallingSpeed) = -jumpSpeed + maxFallingSpeed\naffineCaseHeight(t, gravity, jumpSpeed, maxFallingSpeed) = sustainedX(t, jumpSpeed) + fallEndedX(t, gravity)\n\n\n# jumpEndTime < t && maxFallingTime < t #\n# This is a strictly descending phase, the peak can't happen here #\n\nglidingCaseSpeed(t, maxFallingSpeed) = maxFallingSpeed\nglidingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) + fallEndedX(t, gravity)\n\n\n# jumpEndTime < t && t < maxFallingTime #\n# This is a strictly descending phase, the peak can't happen here #\n\nfreeFallCaseSpeed(t, gravity) = currentFallingSpeed(t, gravity)\nfreeFallCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) + fallingX(t, gravity)\n```\n\n#### Find the initial jump speed for a given jump height\n\nThe great thing about quadratic functions is that it's easy to find solutions to a constraint. For instance, to find which initial jump speed to choose to jump a given height, the formula can be extracted like this:\n\n```Python\nvar('givenHeight')\nsolve([sustainCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\nsolve([commonCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\nsolve([maxFallingCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\n```\n\nThe program will have to determine which formula to use. As the initial jump speed is unknown, it's not possible to know where the peak will happen, but jump speed solutions of each formula can be used to check if the peak actually happens during the right interval of time.\n\n```JavaScript\nif (maxFallingSpeedReachedTime > jumpSustainTime) {\n    // common case\n    jumpSpeed = commonCaseJumpSpeed(jumpHeight);\n    peakTime = commonCasePeakTime(jumpSpeed);\n\n    if (peakTime < jumpSustainTime) {\n        // sustain case\n        jumpSpeed = sustainCaseJumpSpeed(jumpHeight);\n    }\n    else if (peakTime > maxFallingSpeedReachedTime) {\n        // max falling case\n        jumpSpeed = maxFallingCaseJumpSpeed(jumpHeight);\n    }\n}\nelse {\n    // affine case can't have a maximum\n\n    // sustain case\n    jumpSpeed = sustainCaseJumpSpeed(jumpHeight);\n    peakTime = jumpSpeed / gravity;\n\n    if (peakTime > maxFallingSpeedReachedTime) {\n        // max falling case\n        jumpSpeed = maxFallingCaseJumpSpeed(jumpHeight);\n    }\n}\n```\n\n#### Find the time for a given Y displacement\n\nThe same kind of logic from the previous section can be used to evaluate at which time a character will be at a given ordinate when going up or going down.\n\n```Python\nsustainCaseUpTime(y, gravity, jumpSpeed) = solve([sustainCaseHeight(t, gravity, jumpSpeed)==y], t)[0].rhs()\ncommonCaseUpTime(y, gravity, jumpSpeed, jumpSustainTime) = solve([height(t, gravity, jumpSpeed, jumpSustainTime)==y], t)[0].rhs()\nmaxFallingCaseCaseUpTime(y, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[0].rhs()\n\nsustainCaseDownTime(y, gravity, jumpSpeed) = solve([sustainCaseHeight(t, gravity, jumpSpeed)==y], t)[1].rhs()\ncommonCaseDownTime(y, gravity, jumpSpeed, jumpSustainTime) = solve([height(t, gravity, jumpSpeed, jumpSustainTime)==y], t)[1].rhs()\nmaxFallingCaseCaseDownTime(y, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[1].rhs()\nglidingCaseDownTime(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([glidingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[0].rhs() # only one solution (it's affine) #\nfreeFallCaseDownTime(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([freeFallCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[1].rhs()\n\naffineCaseTime(y, jumpSpeed, maxFallingSpeed) = solve([affineCaseHeight(t, jumpSpeed, maxFallingSpeed)==y], t)[0].rhs()\n```\n\nThe root conditions are the 3 piece-wise functions described at the end of the [Polynomial piece-wise function](#polynomial-piece-wise-function) section.\nNote that quadratic functions have a maximum or a minimum value which means there won't always be a solution. That's why there are \"not a number\" checks.\n\n```JavaScript\nif (maxFallingSpeedReachedTime > jumpEndTime) {\n    time = sustainCase(y);\n    if (time > jumpSustainTime || Number.isNaN(time)) {\n        time = commonCase(y);\n        if (time > jumpEndTime || Number.isNaN(time)) {\n            time = freeFallCase(y);\n            if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\nelse if (maxFallingSpeedReachedTime > jumpSustainTime) {\n    time = sustainCase(y);\n    if (time > jumpSustainTime || Number.isNaN(time)) {\n        time = commonCase(y);\n        if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n            time = maxFallingCase(y);\n            if (time > jumpEndTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\nelse {\n    time = sustainCase(y);\n    if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n        time = maxFallingSpeed >= jumpSpeed ? affineCase(y) : time = Number.MAX_VALUE;\n        if (time > jumpSustainTime || Number.isNaN(time)) {\n            time = maxFallingCase(y);\n            if (time > jumpEndTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\n```\n\n#### Plotting trajectories\n\nThis is the code used to plot the first graphic of the [Polynomial piece-wise function](#polynomial-piece-wise-function) section.\n\n```Python\n# The trajectory of the default jump settings\n#\n# gravity: 1000\n# maxFallingSpeed: 700\n# jumpSustainTime: 0.2\n# jumpSpeed: 600\n#\n# n(maxFallingTime(1000, 700))\n# 0.7\n\n(\n  plot(-sustainCaseHeight(t, 1000, 600), 0, 0.8, ymin=0, color='grey')\n+ plot(-commonCaseHeight(t, 1000, 600, 0.2), 0, 0.8, ymin=0, color='black')\n+ plot(-maxFallingCaseHeight(t, 1000, 600, 0.2, 700), 0, 0.8, ymin=0, color='grey')\n+ plot(-piecewise([\n    ((0, 0.2), sustainCaseHeight(t, 1000, 600)),\n    ((0.2, maxFallingTime(1000, 700)), commonCaseHeight(t, 1000, 600, 0.2)),\n    ((maxFallingTime(1000, 700), 2), maxFallingCaseHeight(t, 1000, 600, 0.2, 700))\n  ]), 0, 0.8, ymin=0, color='cyan')\n)\n```\n","Extensions/LICENSE.md":"GDevelop extensions\n-------------------\n\nThe MIT License (MIT)\n\nCopyright (c) 2008-2016 Florian Rival\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nExternal libraries used by extensions\n-------------------------------------\n\nFor external libraries, refer to the readme or license file included in their\ndirectories\n","Extensions/DialogueTree/bondage.js/LICENSE.md":"The MIT License (MIT)\n\nCopyright (c) 2017 j hayley\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","Extensions/BBText/pixi-multistyle-text/README.md":"# pixi-multistyle-text\n\n[![NPM](https://nodei.co/npm/pixi-multistyle-text.png)](https://nodei.co/npm/pixi-multistyle-text/)\n\nAdd a `MultiStyleText` object inside [pixi.js](https://github.com/GoodBoyDigital/pixi.js) to easily create text using different styles.\n\n## Example\n\nIn the example below, we are defining 4 text styles.\n`default` is the default style for the text, and the others matches the tags inside the text.\n\n```js\nlet text = new MultiStyleText(\"Let's make some <ml>multiline</ml>\\nand <ms>multistyle</ms> text for\\n<pixi>Pixi.js!</pixi>\",\n{\n    \"default\": {\n        fontFamily: \"Arial\",\n        fontSize: \"24px\",\n        fill: \"#cccccc\",\n        align: \"center\"\n    },\n    \"ml\": {\n        fontStyle: \"italic\",\n        fill: \"#ff8888\"\n    },\n    \"ms\": {\n        fontStyle: \"italic\",\n        fill: \"#4488ff\"\n    },\n    \"pixi\": {\n        fontSize: \"64px\",\n        fill: \"#efefef\"\n    }\n});\n```\n\n## Build instructions\n\nThe library is no longer maintain and need this fix to work with Pixi 7: \n- [Fix empty color attribute errors with Pixi 7](https://github.com/D8H/pixi-multistyle-text/pull/1)\n\n```bash\nyarn install\nyarn build\n```\n\n## Usage\n\n### `text = new MultiStyleText(text, textStyles)`\n\nCreates a new `MultiStyleText` with the given text and styles.\n\n#### `textStyles`\n\nType: `{ [key: string]: ExtendedTextStyle }`\n\nEach key of this dictionary should match with a tag in the text. Use the key `default` for the default style.\n\nEach `ExtendedTextStyle` object can have [any of the properties of a standard PIXI text style](http://pixijs.download/release/docs/PIXI.TextStyle.html), in addition to a `valign` property that allows you to specify where text is rendered relative to larger text on the same line (`\"top\"`, `\"middle\"`, or `\"bottom\"`).\n\nThe `align`, `wordWrap`, `wordWrapWidth`, and `breakWord` properties are ignored on all styles _except for the `default` style_, which controls those properties for the entire text object.\n\nIf text is rendered without any value assigned to a given parameter, Pixi's defaults are used.\n\n## Demo\n\n```bash\nyarn demo\n```\n\n## License\n\nMIT, see [LICENSE.md](http://github.com/tleunen/pixi-multistyle-text/blob/master/LICENSE.md) for details.\n","Extensions/DialogueTree/bondage.js/README.md":"# bondage.js [![Build Status](https://travis-ci.org/jhayley/bondage.js.svg?branch=master)](https://travis-ci.org/jhayley/bondage.js)\n\n[Yarn](https://github.com/InfiniteAmmoInc/Yarn) parser for Javascript, in the same vein as [YarnSpinner](https://github.com/thesecretlab/YarnSpinner).\n\n# Usage\n\n#### As a Web Tool\n\nTo run through your yarn files in your browser, go to <http://hayley.zone/bondage.js>, paste your yarn data in the field, then hit \"compile\".\n\n#### As a Command Line Tool\nInstallation: `npm install -g bondage`\n\nNow you can use the `bondage` command to run through Yarn files from the command line. You can load one or multiple files at a time. If you load multiple files and a two nodes are encountered with the same name, the node will be overwritten.\n\n**Examples**\n\n* Running a single file from the default start node (named \"Start\"): `bondage run yarnfile.json`\n* Running a single file from the specified node name: `bondage run -s StartNode yarnfile.json`\n* Running multiple files from the specified node name: `bondage run -s StartNode yarnfile1.json yarnfile2.json ...`\n* See the compiled ast: `bondage compile --ast yarnfile.json`\n* See the tokenized input: `bondage compile --tokens yarnfile.json`\n\n#### As a Library\n\n**Web**\n\nInclude [dist/bondage.min.js](https://github.com/jhayley/bondage.js/blob/master/dist/bondage.min.js) somewhere in your html, and the `bondage` variable will be added to the global scope. You can then access everything in the example below (such as `bondage.Runner`) through that variable.\n\n**Node**\n\nInstallation: `npm install bondage`\n\n```javascript\nconst fs = require('fs');\nconst bondage = require('bondage');\n\nconst runner = new bondage.Runner();\nconst yarnData = JSON.parse(fs.readFileSync('yarnFile.json'));\n\nrunner.load(yarnData);\n\n// Loop over the dialogue from the node titled 'Start'\nfor (const result of runner.run('Start')) {\n  // Do something else with the result\n  if (result instanceof bondage.TextResult) {\n    console.log(result.text);\n  } else if (result instanceof bondage.OptionsResult) {\n    // This works for both links between nodes and shortcut options\n    console.log(result.options);\n\n    // Select based on the option's index in the array (if you don't select an option, the dialog will continue past them)\n    result.select(1);\n  } else if (result instanceof bondage.CommandResult) {\n     // If the text was inside <<here>>, it will get returned as a CommandResult string, which you can use in any way you want\n    console.log(result.text);\n  }\n}\n\n// Advance the dialogue manually from the node titled 'Start'\nconst d = runner.run('Start')\nlet result = d.next().value;\nlet nextResult = d.next().value;\n// And so on\n```\n\nFor usage of the yarn format itself, please see the [YarnSpinner Documentation](https://github.com/thesecretlab/YarnSpinner/tree/master/Documentation), everything there should carry here too (if something does not match up, please open an issue).\n","Extensions/TileMap/example/anotherIsland.json":"{ \"compressionlevel\":0,\n \"height\":20,\n \"infinite\":false,\n \"layers\":[\n        {\n         \"data\":[70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 94, 95, 95, 95, 95, 96, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 94, 95, 95, 95, 84, 188, 190, 176, 133, 83, 95, 95, 95, 95, 96, 70, 70, 70, 70, 70, 70, 70, 70, 94, 84, 164, 133, 133, 188, 178, 202, 133, 164, 133, 85, 87, 87, 133, 83, 96, 70, 70, 70, 70, 70, 70, 94, 84, 176, 85, 86, 87, 200, 165, 214, 133, 133, 176, 97, 74, 86, 87, 133, 108, 70, 70, 70, 70, 70, 70, 106, 133, 214, 97, 122, 99, 212, 214, 85, 86, 87, 164, 109, 63, 122, 99, 71, 120, 70, 70, 70, 70, 70, 70, 106, 97, 74, 75, 62, 111, 164, 133, 97, 122, 74, 86, 86, 75, 62, 111, 108, 70, 70, 70, 70, 70, 70, 70, 106, 109, 63, 98, 74, 87, 133, 176, 97, 62, 110, 110, 110, 110, 111, 133, 108, 70, 70, 70, 70, 70, 70, 70, 106, 164, 109, 110, 63, 74, 86, 86, 75, 74, 86, 86, 73, 73, 73, 97, 108, 70, 70, 70, 70, 70, 70, 70, 106, 164, 97, 85, 75, 62, 63, 98, 98, 122, 98, 122, 74, 73, 73, 109, 108, 70, 70, 70, 70, 70, 70, 70, 106, 133, 97, 75, 62, 111, 109, 110, 63, 62, 63, 98, 71, 119, 119, 119, 120, 70, 70, 70, 70, 70, 70, 70, 118, 119, 72, 110, 111, 164, 133, 133, 97, 99, 109, 110, 108, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 120, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70],\n         \"height\":20,\n         \"id\":1,\n         \"name\":\"teren\",\n         \"opacity\":1,\n         \"type\":\"tilelayer\",\n         \"visible\":true,\n         \"width\":24,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"data\":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 152, 152, 152, 152, 152, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 256, 256, 0, 229, 152, 152, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n         \"height\":20,\n         \"id\":2,\n         \"name\":\"obiekty\",\n         \"opacity\":1,\n         \"type\":\"tilelayer\",\n         \"visible\":true,\n         \"width\":24,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":3,\n         \"name\":\"Domek1\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":230,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":336\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":233,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":336\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":234,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":235,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":236,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":237,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":252\n                }, \n                {\n                 \"height\":75,\n                 \"id\":239,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":176,\n                 \"y\":252\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":4,\n         \"name\":\"Domek2\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":254,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":504\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":255,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":504\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":256,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":257,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":258,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":259,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":420\n                }, \n                {\n                 \"height\":75,\n                 \"id\":260,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":219,\n                 \"y\":420\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":5,\n         \"name\":\"Domek3\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":261,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":262,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":263,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":264,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":265,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":168\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":266,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":168\n                }, \n                {\n                 \"height\":75,\n                 \"id\":267,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":302,\n                 \"y\":168\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":6,\n         \"name\":\"Domek4\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":268,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":269,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":270,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":271,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":272,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":273,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":210\n                }, \n                {\n                 \"height\":75,\n                 \"id\":274,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":512,\n                 \"y\":210\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":7,\n         \"name\":\"Domek5\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":282,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":283,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":284,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":285,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":286,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":378\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":287,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":378\n                }, \n                {\n                 \"height\":75,\n                 \"id\":288,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":764,\n                 \"y\":378\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":8,\n         \"name\":\"Domek6\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":289,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":290,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":291,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":292,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":293,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":168\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":294,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":168\n                }, \n                {\n                 \"height\":75,\n                 \"id\":295,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":680,\n                 \"y\":168\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":9,\n         \"name\":\"krzesla\",\n         \"objects\":[\n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":34,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":544,\n                 \"y\":480\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":37,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420.5,\n                 \"y\":523.5\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":39,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":391,\n                 \"y\":485.5\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":40,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":435.5,\n                 \"y\":484.5\n                }, \n                {\n                 \"gid\":113,\n                 \"height\":42,\n                 \"id\":42,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":526.5,\n                 \"y\":524.5\n                }, \n                {\n                 \"gid\":113,\n                 \"height\":42,\n                 \"id\":43,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":513.5,\n                 \"y\":502.5\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":10,\n         \"name\":\"Scena\",\n         \"objects\":[\n                {\n                 \"gid\":138,\n                 \"height\":42,\n                 \"id\":299,\n                 \"name\":\"Scena4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":137,\n                 \"height\":42,\n                 \"id\":298,\n                 \"name\":\"Scena3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":137,\n                 \"height\":42,\n                 \"id\":297,\n                 \"name\":\"Scena2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":136,\n                 \"height\":42,\n                 \"id\":300,\n                 \"name\":\"Scena1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420,\n                 \"y\":420\n                }, \n                {\n                 \"height\":36,\n                 \"id\":302,\n                 \"name\":\"Scena_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":165,\n                 \"x\":421,\n                 \"y\":384\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":11,\n         \"name\":\"Lawki\",\n         \"objects\":[\n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":303,\n                 \"name\":\"Lawka\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420,\n                 \"y\":504\n                }, \n                {\n                 \"height\":14,\n                 \"id\":305,\n                 \"name\":\"Lawka_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":423,\n                 \"y\":479\n                }, \n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":304,\n                 \"name\":\"Lawka_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":504\n                }, \n                {\n                 \"height\":14,\n                 \"id\":307,\n                 \"name\":\"Lawka_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":549,\n                 \"y\":479\n                }, \n                {\n                 \"height\":14,\n                 \"id\":324,\n                 \"name\":\"Lawka_collider_wall_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":801,\n                 \"y\":227\n                }, \n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":325,\n                 \"name\":\"Lawka_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":252\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":12,\n         \"name\":\"Kamienie\",\n         \"objects\":[\n                {\n                 \"gid\":101,\n                 \"height\":42,\n                 \"id\":310,\n                 \"name\":\"Kamien\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":336\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":25,\n                 \"id\":312,\n                 \"name\":\"Kamien_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":25,\n                 \"x\":344,\n                 \"y\":300\n                }, \n                {\n                 \"gid\":125,\n                 \"height\":42,\n                 \"id\":311,\n                 \"name\":\"Kamien_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":378\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":23,\n                 \"id\":314,\n                 \"name\":\"Kamien_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":23,\n                 \"x\":681,\n                 \"y\":356\n                }, \n                {\n                 \"gid\":125,\n                 \"height\":42,\n                 \"id\":326,\n                 \"name\":\"Kamien_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":630\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":23,\n                 \"id\":327,\n                 \"name\":\"Kamien_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":23,\n                 \"x\":471,\n                 \"y\":608\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":13,\n         \"name\":\"beczki\",\n         \"objects\":[\n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":44,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":735,\n                 \"y\":265\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":45,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":740.333,\n                 \"y\":249.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":46,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":647,\n                 \"y\":248.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":47,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":568,\n                 \"y\":311.5\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":48,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":477,\n                 \"y\":302\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":49,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":468.5,\n                 \"y\":285\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":50,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":752.083,\n                 \"y\":500.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":51,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":717,\n                 \"y\":460.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":53,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":726,\n                 \"y\":444.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":54,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":361.333,\n                 \"y\":263.833\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":55,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":262,\n                 \"y\":245.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":56,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":266.167,\n                 \"y\":265.5\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":57,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":135.833,\n                 \"y\":355\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":58,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":153.5,\n                 \"y\":359.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":59,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":137.167,\n                 \"y\":339.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":60,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":189.333,\n                 \"y\":517.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":61,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":202.333,\n                 \"y\":524.333\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":15,\n         \"name\":\"ThorPU\",\n         \"objects\":[\n                {\n                 \"gid\":100,\n                 \"height\":42,\n                 \"id\":211,\n                 \"name\":\"Thor_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":672\n                }, \n                {\n                 \"gid\":180,\n                 \"height\":42,\n                 \"id\":212,\n                 \"name\":\"Thor_light\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":672\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":213,\n                 \"name\":\"Thor_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":640\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":19,\n                 \"id\":214,\n                 \"name\":\"Thor_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":19,\n                 \"x\":515,\n                 \"y\":651\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":16,\n         \"name\":\"MeatPU\",\n         \"objects\":[\n                {\n                 \"gid\":156,\n                 \"height\":42,\n                 \"id\":215,\n                 \"name\":\"Meat_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":588\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":216,\n                 \"name\":\"Meat_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":550\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":25,\n                 \"id\":217,\n                 \"name\":\"Meat_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":25,\n                 \"x\":261,\n                 \"y\":558\n                }, \n                {\n                 \"gid\":168,\n                 \"height\":42,\n                 \"id\":218,\n                 \"name\":\"Meat_eat\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":588\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":17,\n         \"name\":\"BeesPU\",\n         \"objects\":[\n                {\n                 \"gid\":155,\n                 \"height\":42,\n                 \"id\":219,\n                 \"name\":\"Bees_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":168\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":21,\n                 \"id\":220,\n                 \"name\":\"Bees_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":21,\n                 \"x\":474.5,\n                 \"y\":145.5\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":221,\n                 \"name\":\"Bees_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":464,\n                 \"y\":135\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":18,\n         \"name\":\"Spawny\",\n         \"objects\":[\n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":315,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":315,\n                 \"y\":264\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":316,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":187,\n                 \"y\":348\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":317,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":524,\n                 \"y\":307\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":318,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":692,\n                 \"y\":264\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":319,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":777,\n                 \"y\":473\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":320,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":232,\n                 \"y\":516\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":14,\n         \"name\":\"krzaki\",\n         \"objects\":[\n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":64,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":815,\n                 \"y\":345.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":65,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":827.333,\n                 \"y\":364.167\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":67,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":130.833,\n                 \"y\":456.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":68,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":135.833,\n                 \"y\":473.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":69,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":159.333,\n                 \"y\":457.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":70,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":150.833,\n                 \"y\":435.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":72,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":129.333,\n                 \"y\":432.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":75,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":589.333,\n                 \"y\":152.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":76,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":574.333,\n                 \"y\":132.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":77,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":547.333,\n                 \"y\":130.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":78,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":561.583,\n                 \"y\":150.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":79,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":561.333,\n                 \"y\":171.583\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":80,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":220.333,\n                 \"y\":642.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":81,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":213.833,\n                 \"y\":618.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":82,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":440.833,\n                 \"y\":671.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":83,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":279.833,\n                 \"y\":620.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":84,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":254.333,\n                 \"y\":646.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":85,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":138.667,\n                 \"y\":396.667\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":87,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":821,\n                 \"y\":215\n                }, \n                {\n                 \"height\":0,\n                 \"id\":100,\n                 \"name\":\"collide2\",\n                 \"polygon\":[\n                        {\n                         \"x\":0,\n                         \"y\":0\n                        }, \n                        {\n                         \"x\":22.5,\n                         \"y\":-1\n                        }, \n                        {\n                         \"x\":30.5,\n                         \"y\":13\n                        }, \n                        {\n                         \"x\":26.75,\n                         \"y\":23.75\n                        }, \n                        {\n                         \"x\":-0.5,\n                         \"y\":25\n                        }, \n                        {\n                         \"x\":-5.75,\n                         \"y\":13.75\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":0,\n                 \"x\":146.583,\n                 \"y\":367.833\n                }, \n                {\n                 \"height\":0,\n                 \"id\":104,\n                 \"name\":\"collider1\",\n                 \"polygon\":[\n                        {\n                         \"x\":0,\n                         \"y\":0\n                        }, \n                        {\n                         \"x\":27.75,\n                         \"y\":1.75\n                        }, \n                        {\n                         \"x\":35.75,\n                         \"y\":-14\n                        }, \n                        {\n                         \"x\":54.75,\n                         \"y\":-16.5\n                        }, \n                        {\n                         \"x\":40.75,\n                         \"y\":-61.75\n                        }, \n                        {\n                         \"x\":-7.5,\n                         \"y\":-63.75\n                        }, \n                        {\n                         \"x\":-7.25,\n                         \"y\":-22.75\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":0,\n                 \"x\":142.583,\n                 \"y\":466.583\n                }, \n                {\n                 \"height\":0,\n                 \"id\":107,\n                 \"name\":\"collider4\",\n                 \"polygon\":[\n                        {\n                         \"x\":-49,\n                         \"y\":15.75\n                        }, \n                        {\n                         \"x\":-46.75,\n                         \"y\":-12.75\n                        }, \n                        {\n                         \"x\":55.5,\n                         \"y\":-14.75\n                        }, \n                        {\n                         \"x\":79,\n                         \"y\":19.75\n                        }, \n                        {\n                         \"x\":73,\n                         \"y\":44\n                        }, \n                        {\n                         \"x\":26.5,\n                         \"y\":47.75\n                        }, \n                        {\n                         \"x\":3.5,\n                         \"y\":35.5\n                        }, \n                        {\n                         \"x\":-20.75,\n                         \"y\":15.5\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n             ","Extensions/README.md":"# Extensions for GDevelop\n\nThese are the \"official\" extensions directly bundled with GDevelop.\n\n## Writing your extensions or contributing to an existing one 😎\n\nMost extensions can be written in JavaScript.\n\n**[Read this README](https://github.com/4ian/GDevelop/blob/master/newIDE/README-extensions.md)** to learn everything about writing extensions for GDevelop.\n\n## License\n\n- Extensions are provided under the MIT License: see [LICENSE.md](LICENSE.md) file.\n- External libraries can be used by extensions (Box2D, Dlib or SPARK for example). See their licenses in their directories.\n","Extensions/Effects/pixi-filters/README.md":"## Update filters libraries\n\n- Clone [Pixi Filters](https://github.com/pixijs/filters) repository `git@github.com:pixijs/filters.git`\n- Checkout a release tag.\n- Apply the following patch to build `life` libraries.\n\n```Diff\ndiff --git a/rollup.config.js b/rollup.config.js\nindex 39a001c..86bb3a9 100644\n--- a/rollup.config.js\n+++ b/rollup.config.js\n@@ -44,15 +44,33 @@\n         const freeze = false;\n         const builds = [];\n \n+        const name = '__filters';\n+        const footer = `Object.assign(PIXI.filters, ${name});`;\n+        globals = Object.assign({\n+            '@pixi/core': 'PIXI',\n+            '@pixi/filter-alpha': 'PIXI.filters',\n+            '@pixi/filter-blur': 'PIXI.filters'\n+        }, globals);\n+\n         builds.push({\n             input,\n             output: [\n+                // {\n+                //     file: path.join(basePath, main),\n+                //     format: 'cjs',\n+                //     freeze,\n+                //     sourcemap,\n+                //     banner,\n+                // },\n                 {\n+                    name,\n+                    banner,\n+                    globals,\n                     file: path.join(basePath, main),\n-                    format: 'cjs',\n+                    format: 'iife',\n+                    footer,\n                     freeze,\n                     sourcemap,\n-                    banner,\n                 },\n                 {\n                     file: path.join(basePath, module),\n@@ -74,13 +92,6 @@\n         // we'll use this to generate the bundle file\n         // this will package all dependencies\n         if (bundle) {\n-            const name = '__filters';\n-            const footer = `Object.assign(PIXI.filters, ${name});`;\n-            globals = Object.assign({\n-                '@pixi/core': 'PIXI',\n-                '@pixi/filter-alpha': 'PIXI.filters',\n-                '@pixi/filter-blur': 'PIXI.filters'\n-            }, globals);\n             builds.push({\n                 input,\n                 external: Object.keys(globals),\n```\n- Copy all the library files into a folder.\n\n```\nmkdir dist\nfind filters/ -type f -name 'filter-*.js' -exec cp '{}' dist/ ';'\n```\n\n- Move them to `Extensions/Effects/pixi-filters`.\n- Remove `//# sourceMappingURL=filter-.*.js.map` with a search and replace.","Extensions/Physics3DBehavior/README.md":"## Physics 3D Behaviors for GDevelop\n\nThis is the 3D physics engine for GDevelop, based on [Jolt Physics](https://github.com/jrouwe/JoltPhysics.js/) (WebAssembly, version 0.30.0).","Extensions/Firebase/A_firebasejs/LICENSE.md":"\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n","Extensions/TileMap/example/island.json":"# Example Skill\n\nPath: `Extensions/TileMap/example/island.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/example/island.json)","Extensions/TileMap/helper/README.md":"# helper Documentation\n\nPath: `Extensions/TileMap/helper/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/helper/README.md)","GDevelop.js/__tests__/extensions/EBAsyncAction.json":"# Extensions Skill\n\nPath: `GDevelop.js/__tests__/extensions/EBAsyncAction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/GDevelop.js/__tests__/extensions/EBAsyncAction.json)","GDevelop.js/__tests__/extensions/EBObject.json":"# Extensions Skill\n\nPath: `GDevelop.js/__tests__/extensions/EBObject.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/GDevelop.js/__tests__/extensions/EBObject.json)","Extensions/DialogueTree/bondage.js/tests/assignment.json":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/assignment.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/assignment.json)","Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json)","Extensions/DialogueTree/bondage.js/tests/conditions.json":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/conditions.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/conditions.json)","Extensions/DialogueTree/bondage.js/tests/links.json":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/links.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/links.json)","Extensions/DialogueTree/bondage.js/tests/shortcuts.json":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/shortcuts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/shortcuts.json)","Extensions/TileMap/tests/flipped and animated tiles/example.json":"# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/example.json)","Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json":"# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json)","Extensions/TileMap/tests/flipped and animated tiles/tileset.json":"# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/tileset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/tileset.json)"},"items":[{"name":"LICENSE.md","path":"Extensions/DialogueTree/bondage.js/LICENSE.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/LICENSE.md","title":"Bondage.js Skill","category":"anthropic-skill","format":"markdown","content":"The MIT License (MIT)\n\nCopyright (c) 2017 j hayley\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","isInternal":false,"tokens":223,"sizeBytes":1075},{"name":"assignment.json","path":"Extensions/DialogueTree/bondage.js/tests/assignment.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/assignment.json","title":"Tests Skill","category":"anthropic-skill","format":"json","content":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/assignment.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/assignment.json)","tokens":300,"sizeBytes":220},{"name":"commandsandfunctions.json","path":"Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json","title":"Tests Skill","category":"anthropic-skill","format":"json","content":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json)","tokens":300,"sizeBytes":240},{"name":"conditions.json","path":"Extensions/DialogueTree/bondage.js/tests/conditions.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/conditions.json","title":"Tests Skill","category":"anthropic-skill","format":"json","content":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/conditions.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/conditions.json)","tokens":300,"sizeBytes":220},{"name":"links.json","path":"Extensions/DialogueTree/bondage.js/tests/links.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/links.json","title":"Tests Skill","category":"anthropic-skill","format":"json","content":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/links.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/links.json)","tokens":300,"sizeBytes":210},{"name":"shortcuts.json","path":"Extensions/DialogueTree/bondage.js/tests/shortcuts.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/shortcuts.json","title":"Tests Skill","category":"anthropic-skill","format":"json","content":"# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/shortcuts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/shortcuts.json)","tokens":300,"sizeBytes":218},{"name":"LICENSE.md","path":"Extensions/Firebase/A_firebasejs/LICENSE.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/Firebase/A_firebasejs/LICENSE.md","title":"A_firebasejs Skill","category":"anthropic-skill","format":"markdown","content":"\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n","isInternal":false,"tokens":2270,"sizeBytes":11358},{"name":"LICENSE.md","path":"Extensions/LICENSE.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/LICENSE.md","title":"Extensions Skill","category":"anthropic-skill","format":"markdown","content":"GDevelop extensions\n-------------------\n\nThe MIT License (MIT)\n\nCopyright (c) 2008-2016 Florian Rival\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nExternal libraries used by extensions\n-------------------------------------\n\nFor external libraries, refer to the readme or license file included in their\ndirectories\n","isInternal":false,"tokens":257,"sizeBytes":1295},{"name":"anotherIsland.json","path":"Extensions/TileMap/example/anotherIsland.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/example/anotherIsland.json","title":"Example Skill","category":"anthropic-skill","format":"json","content":"{ \"compressionlevel\":0,\n \"height\":20,\n \"infinite\":false,\n \"layers\":[\n        {\n         \"data\":[70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 94, 95, 95, 95, 95, 96, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 94, 95, 95, 95, 84, 188, 190, 176, 133, 83, 95, 95, 95, 95, 96, 70, 70, 70, 70, 70, 70, 70, 70, 94, 84, 164, 133, 133, 188, 178, 202, 133, 164, 133, 85, 87, 87, 133, 83, 96, 70, 70, 70, 70, 70, 70, 94, 84, 176, 85, 86, 87, 200, 165, 214, 133, 133, 176, 97, 74, 86, 87, 133, 108, 70, 70, 70, 70, 70, 70, 106, 133, 214, 97, 122, 99, 212, 214, 85, 86, 87, 164, 109, 63, 122, 99, 71, 120, 70, 70, 70, 70, 70, 70, 106, 97, 74, 75, 62, 111, 164, 133, 97, 122, 74, 86, 86, 75, 62, 111, 108, 70, 70, 70, 70, 70, 70, 70, 106, 109, 63, 98, 74, 87, 133, 176, 97, 62, 110, 110, 110, 110, 111, 133, 108, 70, 70, 70, 70, 70, 70, 70, 106, 164, 109, 110, 63, 74, 86, 86, 75, 74, 86, 86, 73, 73, 73, 97, 108, 70, 70, 70, 70, 70, 70, 70, 106, 164, 97, 85, 75, 62, 63, 98, 98, 122, 98, 122, 74, 73, 73, 109, 108, 70, 70, 70, 70, 70, 70, 70, 106, 133, 97, 75, 62, 111, 109, 110, 63, 62, 63, 98, 71, 119, 119, 119, 120, 70, 70, 70, 70, 70, 70, 70, 118, 119, 72, 110, 111, 164, 133, 133, 97, 99, 109, 110, 108, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 120, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70],\n         \"height\":20,\n         \"id\":1,\n         \"name\":\"teren\",\n         \"opacity\":1,\n         \"type\":\"tilelayer\",\n         \"visible\":true,\n         \"width\":24,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"data\":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 152, 152, 152, 152, 152, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 256, 256, 0, 229, 152, 152, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n         \"height\":20,\n         \"id\":2,\n         \"name\":\"obiekty\",\n         \"opacity\":1,\n         \"type\":\"tilelayer\",\n         \"visible\":true,\n         \"width\":24,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":3,\n         \"name\":\"Domek1\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":230,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":336\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":233,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":336\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":234,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":235,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":236,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":237,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":252\n                }, \n                {\n                 \"height\":75,\n                 \"id\":239,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":176,\n                 \"y\":252\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":4,\n         \"name\":\"Domek2\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":254,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":504\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":255,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":504\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":256,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":257,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":258,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":259,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":420\n                }, \n                {\n                 \"height\":75,\n                 \"id\":260,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":219,\n                 \"y\":420\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":5,\n         \"name\":\"Domek3\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":261,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":262,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":263,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":264,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":265,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":168\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":266,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":168\n                }, \n                {\n                 \"height\":75,\n                 \"id\":267,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":302,\n                 \"y\":168\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":6,\n         \"name\":\"Domek4\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":268,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":269,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":270,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":271,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":272,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":273,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":210\n                }, \n                {\n                 \"height\":75,\n                 \"id\":274,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":512,\n                 \"y\":210\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":7,\n         \"name\":\"Domek5\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":282,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":283,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":284,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":285,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":286,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":378\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":287,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":378\n                }, \n                {\n                 \"height\":75,\n                 \"id\":288,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":764,\n                 \"y\":378\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":8,\n         \"name\":\"Domek6\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":289,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":290,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":291,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":292,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":293,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":168\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":294,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":168\n                }, \n                {\n                 \"height\":75,\n                 \"id\":295,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":680,\n                 \"y\":168\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":9,\n         \"name\":\"krzesla\",\n         \"objects\":[\n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":34,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":544,\n                 \"y\":480\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":37,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420.5,\n                 \"y\":523.5\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":39,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":391,\n                 \"y\":485.5\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":40,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":435.5,\n                 \"y\":484.5\n                }, \n                {\n                 \"gid\":113,\n                 \"height\":42,\n                 \"id\":42,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":526.5,\n                 \"y\":524.5\n                }, \n                {\n                 \"gid\":113,\n                 \"height\":42,\n                 \"id\":43,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":513.5,\n                 \"y\":502.5\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":10,\n         \"name\":\"Scena\",\n         \"objects\":[\n                {\n                 \"gid\":138,\n                 \"height\":42,\n                 \"id\":299,\n                 \"name\":\"Scena4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":137,\n                 \"height\":42,\n                 \"id\":298,\n                 \"name\":\"Scena3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":137,\n                 \"height\":42,\n                 \"id\":297,\n                 \"name\":\"Scena2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":136,\n                 \"height\":42,\n                 \"id\":300,\n                 \"name\":\"Scena1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420,\n                 \"y\":420\n                }, \n                {\n                 \"height\":36,\n                 \"id\":302,\n                 \"name\":\"Scena_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":165,\n                 \"x\":421,\n                 \"y\":384\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":11,\n         \"name\":\"Lawki\",\n         \"objects\":[\n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":303,\n                 \"name\":\"Lawka\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420,\n                 \"y\":504\n                }, \n                {\n                 \"height\":14,\n                 \"id\":305,\n                 \"name\":\"Lawka_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":423,\n                 \"y\":479\n                }, \n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":304,\n                 \"name\":\"Lawka_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":504\n                }, \n                {\n                 \"height\":14,\n                 \"id\":307,\n                 \"name\":\"Lawka_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":549,\n                 \"y\":479\n                }, \n                {\n                 \"height\":14,\n                 \"id\":324,\n                 \"name\":\"Lawka_collider_wall_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":801,\n                 \"y\":227\n                }, \n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":325,\n                 \"name\":\"Lawka_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":252\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":12,\n         \"name\":\"Kamienie\",\n         \"objects\":[\n                {\n                 \"gid\":101,\n                 \"height\":42,\n                 \"id\":310,\n                 \"name\":\"Kamien\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":336\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":25,\n                 \"id\":312,\n                 \"name\":\"Kamien_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":25,\n                 \"x\":344,\n                 \"y\":300\n                }, \n                {\n                 \"gid\":125,\n                 \"height\":42,\n                 \"id\":311,\n                 \"name\":\"Kamien_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":378\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":23,\n                 \"id\":314,\n                 \"name\":\"Kamien_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":23,\n                 \"x\":681,\n                 \"y\":356\n                }, \n                {\n                 \"gid\":125,\n                 \"height\":42,\n                 \"id\":326,\n                 \"name\":\"Kamien_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":630\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":23,\n                 \"id\":327,\n                 \"name\":\"Kamien_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":23,\n                 \"x\":471,\n                 \"y\":608\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":13,\n         \"name\":\"beczki\",\n         \"objects\":[\n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":44,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":735,\n                 \"y\":265\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":45,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":740.333,\n                 \"y\":249.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":46,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":647,\n                 \"y\":248.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":47,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":568,\n                 \"y\":311.5\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":48,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":477,\n                 \"y\":302\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":49,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":468.5,\n                 \"y\":285\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":50,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":752.083,\n                 \"y\":500.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":51,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":717,\n                 \"y\":460.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":53,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":726,\n                 \"y\":444.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":54,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":361.333,\n                 \"y\":263.833\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":55,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":262,\n                 \"y\":245.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":56,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":266.167,\n                 \"y\":265.5\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":57,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":135.833,\n                 \"y\":355\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":58,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":153.5,\n                 \"y\":359.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":59,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":137.167,\n                 \"y\":339.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":60,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":189.333,\n                 \"y\":517.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":61,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":202.333,\n                 \"y\":524.333\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":15,\n         \"name\":\"ThorPU\",\n         \"objects\":[\n                {\n                 \"gid\":100,\n                 \"height\":42,\n                 \"id\":211,\n                 \"name\":\"Thor_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":672\n                }, \n                {\n                 \"gid\":180,\n                 \"height\":42,\n                 \"id\":212,\n                 \"name\":\"Thor_light\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":672\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":213,\n                 \"name\":\"Thor_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":640\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":19,\n                 \"id\":214,\n                 \"name\":\"Thor_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":19,\n                 \"x\":515,\n                 \"y\":651\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":16,\n         \"name\":\"MeatPU\",\n         \"objects\":[\n                {\n                 \"gid\":156,\n                 \"height\":42,\n                 \"id\":215,\n                 \"name\":\"Meat_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":588\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":216,\n                 \"name\":\"Meat_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":550\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":25,\n                 \"id\":217,\n                 \"name\":\"Meat_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":25,\n                 \"x\":261,\n                 \"y\":558\n                }, \n                {\n                 \"gid\":168,\n                 \"height\":42,\n                 \"id\":218,\n                 \"name\":\"Meat_eat\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":588\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":17,\n         \"name\":\"BeesPU\",\n         \"objects\":[\n                {\n                 \"gid\":155,\n                 \"height\":42,\n                 \"id\":219,\n                 \"name\":\"Bees_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":168\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":21,\n                 \"id\":220,\n                 \"name\":\"Bees_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":21,\n                 \"x\":474.5,\n                 \"y\":145.5\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":221,\n                 \"name\":\"Bees_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":464,\n                 \"y\":135\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":18,\n         \"name\":\"Spawny\",\n         \"objects\":[\n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":315,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":315,\n                 \"y\":264\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":316,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":187,\n                 \"y\":348\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":317,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":524,\n                 \"y\":307\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":318,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":692,\n                 \"y\":264\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":319,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":777,\n                 \"y\":473\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":320,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":232,\n                 \"y\":516\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":14,\n         \"name\":\"krzaki\",\n         \"objects\":[\n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":64,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":815,\n                 \"y\":345.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":65,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":827.333,\n                 \"y\":364.167\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":67,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":130.833,\n                 \"y\":456.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":68,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":135.833,\n                 \"y\":473.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":69,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":159.333,\n                 \"y\":457.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":70,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":150.833,\n                 \"y\":435.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":72,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":129.333,\n                 \"y\":432.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":75,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":589.333,\n                 \"y\":152.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":76,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":574.333,\n                 \"y\":132.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":77,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":547.333,\n                 \"y\":130.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":78,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":561.583,\n                 \"y\":150.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":79,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":561.333,\n                 \"y\":171.583\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":80,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":220.333,\n                 \"y\":642.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":81,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":213.833,\n                 \"y\":618.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":82,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":440.833,\n                 \"y\":671.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":83,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":279.833,\n                 \"y\":620.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":84,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":254.333,\n                 \"y\":646.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":85,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":138.667,\n                 \"y\":396.667\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":87,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":821,\n                 \"y\":215\n                }, \n                {\n                 \"height\":0,\n                 \"id\":100,\n                 \"name\":\"collide2\",\n                 \"polygon\":[\n                        {\n                         \"x\":0,\n                         \"y\":0\n                        }, \n                        {\n                         \"x\":22.5,\n                         \"y\":-1\n                        }, \n                        {\n                         \"x\":30.5,\n                         \"y\":13\n                        }, \n                        {\n                         \"x\":26.75,\n                         \"y\":23.75\n                        }, \n                        {\n                         \"x\":-0.5,\n                         \"y\":25\n                        }, \n                        {\n                         \"x\":-5.75,\n                         \"y\":13.75\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":0,\n                 \"x\":146.583,\n                 \"y\":367.833\n                }, \n                {\n                 \"height\":0,\n                 \"id\":104,\n                 \"name\":\"collider1\",\n                 \"polygon\":[\n                        {\n                         \"x\":0,\n                         \"y\":0\n                        }, \n                        {\n                         \"x\":27.75,\n                         \"y\":1.75\n                        }, \n                        {\n                         \"x\":35.75,\n                         \"y\":-14\n                        }, \n                        {\n                         \"x\":54.75,\n                         \"y\":-16.5\n                        }, \n                        {\n                         \"x\":40.75,\n                         \"y\":-61.75\n                        }, \n                        {\n                         \"x\":-7.5,\n                         \"y\":-63.75\n                        }, \n                        {\n                         \"x\":-7.25,\n                         \"y\":-22.75\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":0,\n                 \"x\":142.583,\n                 \"y\":466.583\n                }, \n                {\n                 \"height\":0,\n                 \"id\":107,\n                 \"name\":\"collider4\",\n                 \"polygon\":[\n                        {\n                         \"x\":-49,\n                         \"y\":15.75\n                        }, \n                        {\n                         \"x\":-46.75,\n                         \"y\":-12.75\n                        }, \n                        {\n                         \"x\":55.5,\n                         \"y\":-14.75\n                        }, \n                        {\n                         \"x\":79,\n                         \"y\":19.75\n                        }, \n                        {\n                         \"x\":73,\n                         \"y\":44\n                        }, \n                        {\n                         \"x\":26.5,\n                         \"y\":47.75\n                        }, \n                        {\n                         \"x\":3.5,\n                         \"y\":35.5\n                        }, \n                        {\n                         \"x\":-20.75,\n                         \"y\":15.5\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n             ","isInternal":false,"tokens":12347,"sizeBytes":50000},{"name":"island.json","path":"Extensions/TileMap/example/island.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/example/island.json","title":"Example Skill","category":"anthropic-skill","format":"json","content":"# Example Skill\n\nPath: `Extensions/TileMap/example/island.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/example/island.json)","tokens":300,"sizeBytes":186},{"name":"example.json","path":"Extensions/TileMap/tests/flipped and animated tiles/example.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/example.json","title":"Flipped and animated tiles Skill","category":"anthropic-skill","format":"json","content":"# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/example.json)","tokens":300,"sizeBytes":257},{"name":"flipped and animated tiles.json","path":"Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json","title":"Flipped and animated tiles Skill","category":"anthropic-skill","format":"json","content":"# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json)","tokens":300,"sizeBytes":295},{"name":"tileset.json","path":"Extensions/TileMap/tests/flipped and animated tiles/tileset.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/tileset.json","title":"Flipped and animated tiles Skill","category":"anthropic-skill","format":"json","content":"# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/tileset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/tileset.json)","tokens":300,"sizeBytes":257},{"name":"EBAsyncAction.json","path":"GDevelop.js/__tests__/extensions/EBAsyncAction.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/GDevelop.js/__tests__/extensions/EBAsyncAction.json","title":"Extensions Skill","category":"anthropic-skill","format":"json","content":"# Extensions Skill\n\nPath: `GDevelop.js/__tests__/extensions/EBAsyncAction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/GDevelop.js/__tests__/extensions/EBAsyncAction.json)","tokens":300,"sizeBytes":215},{"name":"EBObject.json","path":"GDevelop.js/__tests__/extensions/EBObject.json","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/GDevelop.js/__tests__/extensions/EBObject.json","title":"Extensions Skill","category":"anthropic-skill","format":"json","content":"# Extensions Skill\n\nPath: `GDevelop.js/__tests__/extensions/EBObject.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/GDevelop.js/__tests__/extensions/EBObject.json)","tokens":300,"sizeBytes":205},{"name":"README.md","path":"Extensions/BBText/pixi-multistyle-text/README.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/BBText/pixi-multistyle-text/README.md","title":"pixi-multistyle-text Documentation","category":"plugin-manifest","format":"markdown","content":"# pixi-multistyle-text\n\n[![NPM](https://nodei.co/npm/pixi-multistyle-text.png)](https://nodei.co/npm/pixi-multistyle-text/)\n\nAdd a `MultiStyleText` object inside [pixi.js](https://github.com/GoodBoyDigital/pixi.js) to easily create text using different styles.\n\n## Example\n\nIn the example below, we are defining 4 text styles.\n`default` is the default style for the text, and the others matches the tags inside the text.\n\n```js\nlet text = new MultiStyleText(\"Let's make some <ml>multiline</ml>\\nand <ms>multistyle</ms> text for\\n<pixi>Pixi.js!</pixi>\",\n{\n    \"default\": {\n        fontFamily: \"Arial\",\n        fontSize: \"24px\",\n        fill: \"#cccccc\",\n        align: \"center\"\n    },\n    \"ml\": {\n        fontStyle: \"italic\",\n        fill: \"#ff8888\"\n    },\n    \"ms\": {\n        fontStyle: \"italic\",\n        fill: \"#4488ff\"\n    },\n    \"pixi\": {\n        fontSize: \"64px\",\n        fill: \"#efefef\"\n    }\n});\n```\n\n## Build instructions\n\nThe library is no longer maintain and need this fix to work with Pixi 7: \n- [Fix empty color attribute errors with Pixi 7](https://github.com/D8H/pixi-multistyle-text/pull/1)\n\n```bash\nyarn install\nyarn build\n```\n\n## Usage\n\n### `text = new MultiStyleText(text, textStyles)`\n\nCreates a new `MultiStyleText` with the given text and styles.\n\n#### `textStyles`\n\nType: `{ [key: string]: ExtendedTextStyle }`\n\nEach key of this dictionary should match with a tag in the text. Use the key `default` for the default style.\n\nEach `ExtendedTextStyle` object can have [any of the properties of a standard PIXI text style](http://pixijs.download/release/docs/PIXI.TextStyle.html), in addition to a `valign` property that allows you to specify where text is rendered relative to larger text on the same line (`\"top\"`, `\"middle\"`, or `\"bottom\"`).\n\nThe `align`, `wordWrap`, `wordWrapWidth`, and `breakWord` properties are ignored on all styles _except for the `default` style_, which controls those properties for the entire text object.\n\nIf text is rendered without any value assigned to a given parameter, Pixi's defaults are used.\n\n## Demo\n\n```bash\nyarn demo\n```\n\n## License\n\nMIT, see [LICENSE.md](http://github.com/tleunen/pixi-multistyle-text/blob/master/LICENSE.md) for details.\n","isInternal":false,"tokens":590,"sizeBytes":2197},{"name":"README.md","path":"Extensions/DialogueTree/bondage.js/README.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/README.md","title":"bondage.js Documentation","category":"plugin-manifest","format":"markdown","content":"# bondage.js [![Build Status](https://travis-ci.org/jhayley/bondage.js.svg?branch=master)](https://travis-ci.org/jhayley/bondage.js)\n\n[Yarn](https://github.com/InfiniteAmmoInc/Yarn) parser for Javascript, in the same vein as [YarnSpinner](https://github.com/thesecretlab/YarnSpinner).\n\n# Usage\n\n#### As a Web Tool\n\nTo run through your yarn files in your browser, go to <http://hayley.zone/bondage.js>, paste your yarn data in the field, then hit \"compile\".\n\n#### As a Command Line Tool\nInstallation: `npm install -g bondage`\n\nNow you can use the `bondage` command to run through Yarn files from the command line. You can load one or multiple files at a time. If you load multiple files and a two nodes are encountered with the same name, the node will be overwritten.\n\n**Examples**\n\n* Running a single file from the default start node (named \"Start\"): `bondage run yarnfile.json`\n* Running a single file from the specified node name: `bondage run -s StartNode yarnfile.json`\n* Running multiple files from the specified node name: `bondage run -s StartNode yarnfile1.json yarnfile2.json ...`\n* See the compiled ast: `bondage compile --ast yarnfile.json`\n* See the tokenized input: `bondage compile --tokens yarnfile.json`\n\n#### As a Library\n\n**Web**\n\nInclude [dist/bondage.min.js](https://github.com/jhayley/bondage.js/blob/master/dist/bondage.min.js) somewhere in your html, and the `bondage` variable will be added to the global scope. You can then access everything in the example below (such as `bondage.Runner`) through that variable.\n\n**Node**\n\nInstallation: `npm install bondage`\n\n```javascript\nconst fs = require('fs');\nconst bondage = require('bondage');\n\nconst runner = new bondage.Runner();\nconst yarnData = JSON.parse(fs.readFileSync('yarnFile.json'));\n\nrunner.load(yarnData);\n\n// Loop over the dialogue from the node titled 'Start'\nfor (const result of runner.run('Start')) {\n  // Do something else with the result\n  if (result instanceof bondage.TextResult) {\n    console.log(result.text);\n  } else if (result instanceof bondage.OptionsResult) {\n    // This works for both links between nodes and shortcut options\n    console.log(result.options);\n\n    // Select based on the option's index in the array (if you don't select an option, the dialog will continue past them)\n    result.select(1);\n  } else if (result instanceof bondage.CommandResult) {\n     // If the text was inside <<here>>, it will get returned as a CommandResult string, which you can use in any way you want\n    console.log(result.text);\n  }\n}\n\n// Advance the dialogue manually from the node titled 'Start'\nconst d = runner.run('Start')\nlet result = d.next().value;\nlet nextResult = d.next().value;\n// And so on\n```\n\nFor usage of the yarn format itself, please see the [YarnSpinner Documentation](https://github.com/thesecretlab/YarnSpinner/tree/master/Documentation), everything there should carry here too (if something does not match up, please open an issue).\n","isInternal":false,"tokens":704,"sizeBytes":2945},{"name":"README.md","path":"Extensions/Effects/pixi-filters/README.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/Effects/pixi-filters/README.md","title":"pixi-filters Documentation","category":"plugin-manifest","format":"markdown","content":"## Update filters libraries\n\n- Clone [Pixi Filters](https://github.com/pixijs/filters) repository `git@github.com:pixijs/filters.git`\n- Checkout a release tag.\n- Apply the following patch to build `life` libraries.\n\n```Diff\ndiff --git a/rollup.config.js b/rollup.config.js\nindex 39a001c..86bb3a9 100644\n--- a/rollup.config.js\n+++ b/rollup.config.js\n@@ -44,15 +44,33 @@\n         const freeze = false;\n         const builds = [];\n \n+        const name = '__filters';\n+        const footer = `Object.assign(PIXI.filters, ${name});`;\n+        globals = Object.assign({\n+            '@pixi/core': 'PIXI',\n+            '@pixi/filter-alpha': 'PIXI.filters',\n+            '@pixi/filter-blur': 'PIXI.filters'\n+        }, globals);\n+\n         builds.push({\n             input,\n             output: [\n+                // {\n+                //     file: path.join(basePath, main),\n+                //     format: 'cjs',\n+                //     freeze,\n+                //     sourcemap,\n+                //     banner,\n+                // },\n                 {\n+                    name,\n+                    banner,\n+                    globals,\n                     file: path.join(basePath, main),\n-                    format: 'cjs',\n+                    format: 'iife',\n+                    footer,\n                     freeze,\n                     sourcemap,\n-                    banner,\n                 },\n                 {\n                     file: path.join(basePath, module),\n@@ -74,13 +92,6 @@\n         // we'll use this to generate the bundle file\n         // this will package all dependencies\n         if (bundle) {\n-            const name = '__filters';\n-            const footer = `Object.assign(PIXI.filters, ${name});`;\n-            globals = Object.assign({\n-                '@pixi/core': 'PIXI',\n-                '@pixi/filter-alpha': 'PIXI.filters',\n-                '@pixi/filter-blur': 'PIXI.filters'\n-            }, globals);\n             builds.push({\n                 input,\n                 external: Object.keys(globals),\n```\n- Copy all the library files into a folder.\n\n```\nmkdir dist\nfind filters/ -type f -name 'filter-*.js' -exec cp '{}' dist/ ';'\n```\n\n- Move them to `Extensions/Effects/pixi-filters`.\n- Remove `//# sourceMappingURL=filter-.*.js.map` with a search and replace.","isInternal":false,"tokens":536,"sizeBytes":2300},{"name":"README.md","path":"Extensions/Firebase/README.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/Firebase/README.md","title":"Firebase Documentation","category":"plugin-manifest","format":"markdown","content":"# Firebase Extension\n\nThis is the wrapper for the Firebase SDK for GDevelop.\nThe files are prefixed with A_, B_, C_ and D_ to classify their import priority (where A has the highest and D the lowest).\n\nfirebasejs contains the Web SDK.\nfirebasetools contains wrappers for GDevelop.\n","isInternal":false,"tokens":63,"sizeBytes":281},{"name":"README.md","path":"Extensions/NavMeshPathfinding/README.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/NavMeshPathfinding/README.md","title":"NavMeshPathfinding Documentation","category":"plugin-manifest","format":"markdown","content":"# NavMesh pathfinding extension\n\nTo update the library:\n- Clone this fork https://github.com/D8H/recast-navigation-js\n- Check out `main`\n- Get the wasm build with npm\n- Copy the wasm build into `recast-navigation-js/packages/recast-navigation-wasm/build`\n- Run `yarn build`\n- Check out `umd-build`\n- Run `yarn build`\n- Copy `recast-navigation-js/packages/recast-navigation/recast-navigation-generators.js` into this folder as `A_recast-navigation-generators.js` (include files are loaded sorted by name: it must be loaded before the behaviors), and the wasm build\n","isInternal":false,"tokens":137,"sizeBytes":564},{"name":"README.md","path":"Extensions/Physics3DBehavior/README.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/Physics3DBehavior/README.md","title":"Physics3DBehavior Documentation","category":"plugin-manifest","format":"markdown","content":"## Physics 3D Behaviors for GDevelop\n\nThis is the 3D physics engine for GDevelop, based on [Jolt Physics](https://github.com/jrouwe/JoltPhysics.js/) (WebAssembly, version 0.30.0).","isInternal":false,"tokens":54,"sizeBytes":179},{"name":"README.md","path":"Extensions/PlatformBehavior/README.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/PlatformBehavior/README.md","title":"PlatformBehavior Documentation","category":"plugin-manifest","format":"markdown","content":"# Platformer Extension technical documentation\n\n## Floor following\n\n### Horizontal search\n\nWhen the character walks on a platform, he must follow its slope.\nThe `slopeMaxAngle` property is used to calculate how much the character can move vertically to follow it.\nIf the platform is too high, the platform is considered to be an obstacle and the character will stop before it.\n\nWhen there is no obstacle detected by the horizontal search, the movement is done in 1 step and the vertical search is done at the new `x` position.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingRequestedDeltaX.png)](./diagrams/SlopeFollowingRequestedDeltaX.svgz)\n\nOtherwise, when there is a junction, 2 vertical searches are done:\n\n- one before a potential obstacle (in pink)\n- one at the end of the movement\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingClimbFactor.png)](./diagrams/SlopeFollowingClimbFactor.svgz)\n\nThis allows to calculate the right slope angle. Indeed, in one step, the angle could appear lower (the dotted line).\nWhich means that the character could climb it during 1 frame and then stop.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingClimbFactorMean.png)](./diagrams/SlopeFollowingClimbFactorMean.svgz)\n\nFor further details on the implementation, please take a look at the comments in:\n\n- the function `gdjs.PlatformerObjectRuntimeBehavior._moveX`\n- the function `gdjs.PlatformerObjectRuntimeBehavior.OnFloor.beforeMovingY`\n\n### Vertical search\n\nThe aim of the vertical search is to find the highest platform where the character can land.\nThere are 2 constraints:\n\n- `allowedMinDeltaY` how much the character can go upward\n- `allowedMaxDeltaY` how much the character can go downward\n\nDuring the search, these 2 constraints can tighten around the character.\nIf they become incompatible, it means that the character can't go through the hole,\nit will go back to its original position and lose its speed.\n\nThere are also more obvious obstacles that cover the character in the middle and end the search directly.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingResult.png)](./diagrams/SlopeFollowingResult.svgz)\n\nObstacles can eventually encompass the character. So, platforms edges don't have any collision with character.\nTo detect such cases, 2 flags are used:\n\n- `foundOverHead` when an edge is over `headMaxY`\n- `foundUnderHead` when an edge is under `floorMinY`\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingContext.png)](./diagrams/SlopeFollowingContext.svgz)\n\nFor further details on the implementation, please take a look at the comments in:\n\n- the function `gdjs.PlatformerObjectRuntimeBehavior._findHighestFloorAndMoveOnTop`\n- the class `gdjs.PlatformerObjectRuntimeBehavior.FollowConstraintContext`\n\n## Jump trajectory\n\n### Sequential calculus of the engine\n\nThe engine uses the previous speeds and positions to evaluate the new ones (with Verlet integrations). This is fast for sequential access and it's a good fit for what the engine does.\n\nThe model doesn't follow the laws of physics and this is fine because more realism doesn't mean more fun. Internally, it uses 2 independent speeds:\n\n- the current jumping speed `currentJumpSpeed`\n- the current falling speed `currentFallSpeed`\n\nNote that in the engine `currentJumpSpeed` is actually an absolute speed but it's easier to visualize as a negative value as it is subtracted to `currentFallSpeed`.\n\nThe jump speed stays at its initial value while the jump is sustained. Then, it decreases (in absolute) according to the gravity until it reaches 0 and stays constant until the end.\nThe falling speed starts at 0 and increase according to the gravity, as soon as the jump start. Until, it reaches the maximum falling speed and stays constant until the end too.\n\n[![Jump speed](./diagrams/JumpSpeed.png)](./diagrams/JumpSpeed.svgz) [![Falling speed](./diagrams/FallingSpeed.png)](./diagrams/FallingSpeed.svgz)\n\n### Requests solving and random access\n\n#### Why a continuous model?\n\nA function allows to get a position for any given time without calculating every previous positions.\n\n#### Polynomial piece-wise function\n\nThe character trajectory during a jump looks like a quadratic function, but it's actually a piece-wise function.\n\nOn this first trajectory example, the curve almost follows the quadratic function in white, but it actually follows the grey ones at the start and the end of the jump. There is also an affine part at the end of the jump. It's not shown on this plot because it happens later on.\n\n![Trajectory with default settings](./diagrams/DefaultSettings.png)\n\nThis example of trajectory shows the 4 functions. It has an affine part in the middle instead of a quadratic one like in the previous example. In practice, this jump trajectory will seem off, but a tiny affine part can happen in some configurations.\n\n![Trajectory with an affine part](./diagrams/WithAffine.png)\n\nThe piece-wise function has 3 borders:\n\n- at the end of the jump sustaining (jumpSustainTime)\n- when the maximum falling speed is reached (maxFallingTime)\n- when the jump speed reach 0 (jumpEndTime)\n\nDepending on the when the maximum falling speed is reached, there can be 3 piece-wise functions:\n\n- after the jump end\n  - sustain case\n  - common case\n  - free fall case\n  - gliding case\n- before the jump end and after the sustaining\n  - sustain case\n  - common case\n  - max falling case\n  - gliding case\n- during the sustaining\n  - sustain case\n  - affine case\n  - max falling case\n  - gliding case\n\n[![Jump cases](./diagrams/JumpCases.png)](./diagrams/JumpCases.svgz)\n\n#### SageMath model\n\nThe following model is written for [SageMath](https://www.sagemath.org/), an open-source mathematics software system.\n\n```Python\n# First define the jump and falling functions #\n\ncurrentFallingSpeed(t, gravity) = gravity * t\nfallingX(t, gravity) = integral(currentFallingSpeed(t, gravity), t)\nmaxFallingTime(gravity, maxFallingSpeed) = solve([currentFallingSpeed(t, gravity)==maxFallingSpeed],t)[0].rhs()\nfallEndedX(t, gravity) = fallingX(maxFallingTime(gravity, maxFallingSpeed), gravity) + maxFallingSpeed * (t - maxFallingTime(gravity, maxFallingSpeed))\n\ncurrentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) = -jumpSpeed + gravity * (t - jumpSustainTime)\nsustainedX(t, jumpSpeed) = -jumpSpeed * t\njumpingX(t, gravity, jumpSpeed, jumpSustainTime) = sustainedX(jumpSustainTime, jumpSpeed) + integral(currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime), t, jumpSustainTime, t)\njumpEndTime(gravity, jumpSpeed, jumpSustainTime) = jumpSustainTime + jumpSpeed / gravity\njumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) = jumpingX(jumpEndTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# t < jumpSustainTime && t < maxFallingTime #\n\nsustainCaseSpeed(t, gravity, jumpSpeed) = -jumpSpeed + currentFallingSpeed(t, gravity)\nsustainCaseHeight(t, gravity, jumpSpeed) = sustainedX(t, jumpSpeed) + fallingX(t, gravity)\nsustainCasePeakTime(gravity, jumpSpeed, jumpSustainTime) = solve([sustainCaseSpeed(t, gravity, jumpSpeed)==0], t)[0].rhs()\nsustainCasePeakHeight(gravity, jumpSpeed, jumpSustainTime) = sustainCaseHeight(sustainCasePeakTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# jumpSustainTime < t && t < maxFallingTime && t < jumpEndTime #\n\ncommonCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime) = currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) + currentFallingSpeed(t, gravity)\ncommonCaseHeight(t, gravity, jumpSpeed, jumpSustainTime) = jumpingX(t, gravity, jumpSpeed, jumpSustainTime) + fallingX(t, gravity)\ncommonCasePeakTime(gravity, jumpSpeed, jumpSustainTime) = solve([commonCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime)==0], t)[0].rhs()\ncommonCasePeakHeight(gravity, jumpSpeed, jumpSustainTime) = commonCaseHeight(commonCasePeakTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# jumpSustainTime < t && maxFallingTime < t && t < jumpEndTime #\n\nmaxFallingCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) + maxFallingSpeed\nmaxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpingX(t, gravity, jumpSpeed, jumpSustainTime) + fallEndedX(t, gravity)\nmaxFallingCasePeakTime(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==0], t)[0].rhs()\nmaxFallingCasePeakHeight(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = maxFallingCaseHeight(maxFallingCasePeakTime(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed), gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)\n\n# maxFallingTime < t && t < jumpSustainTime #\n# in this case the speed is constant (-jumpSpeed + maxFallingSpeed) there is no strict maximum. #\n\naffineCaseSpeed(t, jumpSpeed, maxFallingSpeed) = -jumpSpeed + maxFallingSpeed\naffineCaseHeight(t, gravity, jumpSpeed, maxFallingSpeed) = sustainedX(t, jumpSpeed) + fallEndedX(t, gravity)\n\n\n# jumpEndTime < t && maxFallingTime < t #\n# This is a strictly descending phase, the peak can't happen here #\n\nglidingCaseSpeed(t, maxFallingSpeed) = maxFallingSpeed\nglidingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) + fallEndedX(t, gravity)\n\n\n# jumpEndTime < t && t < maxFallingTime #\n# This is a strictly descending phase, the peak can't happen here #\n\nfreeFallCaseSpeed(t, gravity) = currentFallingSpeed(t, gravity)\nfreeFallCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) + fallingX(t, gravity)\n```\n\n#### Find the initial jump speed for a given jump height\n\nThe great thing about quadratic functions is that it's easy to find solutions to a constraint. For instance, to find which initial jump speed to choose to jump a given height, the formula can be extracted like this:\n\n```Python\nvar('givenHeight')\nsolve([sustainCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\nsolve([commonCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\nsolve([maxFallingCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\n```\n\nThe program will have to determine which formula to use. As the initial jump speed is unknown, it's not possible to know where the peak will happen, but jump speed solutions of each formula can be used to check if the peak actually happens during the right interval of time.\n\n```JavaScript\nif (maxFallingSpeedReachedTime > jumpSustainTime) {\n    // common case\n    jumpSpeed = commonCaseJumpSpeed(jumpHeight);\n    peakTime = commonCasePeakTime(jumpSpeed);\n\n    if (peakTime < jumpSustainTime) {\n        // sustain case\n        jumpSpeed = sustainCaseJumpSpeed(jumpHeight);\n    }\n    else if (peakTime > maxFallingSpeedReachedTime) {\n        // max falling case\n        jumpSpeed = maxFallingCaseJumpSpeed(jumpHeight);\n    }\n}\nelse {\n    // affine case can't have a maximum\n\n    // sustain case\n    jumpSpeed = sustainCaseJumpSpeed(jumpHeight);\n    peakTime = jumpSpeed / gravity;\n\n    if (peakTime > maxFallingSpeedReachedTime) {\n        // max falling case\n        jumpSpeed = maxFallingCaseJumpSpeed(jumpHeight);\n    }\n}\n```\n\n#### Find the time for a given Y displacement\n\nThe same kind of logic from the previous section can be used to evaluate at which time a character will be at a given ordinate when going up or going down.\n\n```Python\nsustainCaseUpTime(y, gravity, jumpSpeed) = solve([sustainCaseHeight(t, gravity, jumpSpeed)==y], t)[0].rhs()\ncommonCaseUpTime(y, gravity, jumpSpeed, jumpSustainTime) = solve([height(t, gravity, jumpSpeed, jumpSustainTime)==y], t)[0].rhs()\nmaxFallingCaseCaseUpTime(y, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[0].rhs()\n\nsustainCaseDownTime(y, gravity, jumpSpeed) = solve([sustainCaseHeight(t, gravity, jumpSpeed)==y], t)[1].rhs()\ncommonCaseDownTime(y, gravity, jumpSpeed, jumpSustainTime) = solve([height(t, gravity, jumpSpeed, jumpSustainTime)==y], t)[1].rhs()\nmaxFallingCaseCaseDownTime(y, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[1].rhs()\nglidingCaseDownTime(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([glidingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[0].rhs() # only one solution (it's affine) #\nfreeFallCaseDownTime(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([freeFallCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[1].rhs()\n\naffineCaseTime(y, jumpSpeed, maxFallingSpeed) = solve([affineCaseHeight(t, jumpSpeed, maxFallingSpeed)==y], t)[0].rhs()\n```\n\nThe root conditions are the 3 piece-wise functions described at the end of the [Polynomial piece-wise function](#polynomial-piece-wise-function) section.\nNote that quadratic functions have a maximum or a minimum value which means there won't always be a solution. That's why there are \"not a number\" checks.\n\n```JavaScript\nif (maxFallingSpeedReachedTime > jumpEndTime) {\n    time = sustainCase(y);\n    if (time > jumpSustainTime || Number.isNaN(time)) {\n        time = commonCase(y);\n        if (time > jumpEndTime || Number.isNaN(time)) {\n            time = freeFallCase(y);\n            if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\nelse if (maxFallingSpeedReachedTime > jumpSustainTime) {\n    time = sustainCase(y);\n    if (time > jumpSustainTime || Number.isNaN(time)) {\n        time = commonCase(y);\n        if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n            time = maxFallingCase(y);\n            if (time > jumpEndTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\nelse {\n    time = sustainCase(y);\n    if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n        time = maxFallingSpeed >= jumpSpeed ? affineCase(y) : time = Number.MAX_VALUE;\n        if (time > jumpSustainTime || Number.isNaN(time)) {\n            time = maxFallingCase(y);\n            if (time > jumpEndTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\n```\n\n#### Plotting trajectories\n\nThis is the code used to plot the first graphic of the [Polynomial piece-wise function](#polynomial-piece-wise-function) section.\n\n```Python\n# The trajectory of the default jump settings\n#\n# gravity: 1000\n# maxFallingSpeed: 700\n# jumpSustainTime: 0.2\n# jumpSpeed: 600\n#\n# n(maxFallingTime(1000, 700))\n# 0.7\n\n(\n  plot(-sustainCaseHeight(t, 1000, 600), 0, 0.8, ymin=0, color='grey')\n+ plot(-commonCaseHeight(t, 1000, 600, 0.2), 0, 0.8, ymin=0, color='black')\n+ plot(-maxFallingCaseHeight(t, 1000, 600, 0.2, 700), 0, 0.8, ymin=0, color='grey')\n+ plot(-piecewise([\n    ((0, 0.2), sustainCaseHeight(t, 1000, 600)),\n    ((0.2, maxFallingTime(1000, 700)), commonCaseHeight(t, 1000, 600, 0.2)),\n    ((maxFallingTime(1000, 700), 2), maxFallingCaseHeight(t, 1000, 600, 0.2, 700))\n  ]), 0, 0.8, ymin=0, color='cyan')\n)\n```\n","isInternal":false,"tokens":3973,"sizeBytes":15253},{"name":"README.md","path":"Extensions/README.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/README.md","title":"Extensions Documentation","category":"plugin-manifest","format":"markdown","content":"# Extensions for GDevelop\n\nThese are the \"official\" extensions directly bundled with GDevelop.\n\n## Writing your extensions or contributing to an existing one 😎\n\nMost extensions can be written in JavaScript.\n\n**[Read this README](https://github.com/4ian/GDevelop/blob/master/newIDE/README-extensions.md)** to learn everything about writing extensions for GDevelop.\n\n## License\n\n- Extensions are provided under the MIT License: see [LICENSE.md](LICENSE.md) file.\n- External libraries can be used by extensions (Box2D, Dlib or SPARK for example). See their licenses in their directories.\n","isInternal":false,"tokens":125,"sizeBytes":588},{"name":"README.md","path":"Extensions/TileMap/helper/README.md","rawUrl":"https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/helper/README.md","title":"helper Documentation","category":"plugin-manifest","format":"markdown","content":"# helper Documentation\n\nPath: `Extensions/TileMap/helper/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/helper/README.md)","tokens":300,"sizeBytes":187}],"systemPromptSnippet":"<yakaai_skills repo=\"4ian/GDevelop\">\n<!-- File: Extensions/DialogueTree/bondage.js/LICENSE.md (Tokens: ~223 | Category: anthropic-skill) -->\nThe MIT License (MIT)\n\nCopyright (c) 2017 j hayley\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n<!-- File: Extensions/DialogueTree/bondage.js/tests/assignment.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/assignment.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/assignment.json)\n\n<!-- File: Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/commandsandfunctions.json)\n\n<!-- File: Extensions/DialogueTree/bondage.js/tests/conditions.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/conditions.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/conditions.json)\n\n<!-- File: Extensions/DialogueTree/bondage.js/tests/links.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/links.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/links.json)\n\n<!-- File: Extensions/DialogueTree/bondage.js/tests/shortcuts.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Tests Skill\n\nPath: `Extensions/DialogueTree/bondage.js/tests/shortcuts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/DialogueTree/bondage.js/tests/shortcuts.json)\n\n<!-- File: Extensions/Firebase/A_firebasejs/LICENSE.md (Tokens: ~2270 | Category: anthropic-skill) -->\nApache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n<!-- File: Extensions/LICENSE.md (Tokens: ~257 | Category: anthropic-skill) -->\nGDevelop extensions\n-------------------\n\nThe MIT License (MIT)\n\nCopyright (c) 2008-2016 Florian Rival\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nExternal libraries used by extensions\n-------------------------------------\n\nFor external libraries, refer to the readme or license file included in their\ndirectories\n\n<!-- File: Extensions/TileMap/example/anotherIsland.json (Tokens: ~12347 | Category: anthropic-skill) -->\n{ \"compressionlevel\":0,\n \"height\":20,\n \"infinite\":false,\n \"layers\":[\n        {\n         \"data\":[70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 94, 95, 95, 95, 95, 96, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 94, 95, 95, 95, 84, 188, 190, 176, 133, 83, 95, 95, 95, 95, 96, 70, 70, 70, 70, 70, 70, 70, 70, 94, 84, 164, 133, 133, 188, 178, 202, 133, 164, 133, 85, 87, 87, 133, 83, 96, 70, 70, 70, 70, 70, 70, 94, 84, 176, 85, 86, 87, 200, 165, 214, 133, 133, 176, 97, 74, 86, 87, 133, 108, 70, 70, 70, 70, 70, 70, 106, 133, 214, 97, 122, 99, 212, 214, 85, 86, 87, 164, 109, 63, 122, 99, 71, 120, 70, 70, 70, 70, 70, 70, 106, 97, 74, 75, 62, 111, 164, 133, 97, 122, 74, 86, 86, 75, 62, 111, 108, 70, 70, 70, 70, 70, 70, 70, 106, 109, 63, 98, 74, 87, 133, 176, 97, 62, 110, 110, 110, 110, 111, 133, 108, 70, 70, 70, 70, 70, 70, 70, 106, 164, 109, 110, 63, 74, 86, 86, 75, 74, 86, 86, 73, 73, 73, 97, 108, 70, 70, 70, 70, 70, 70, 70, 106, 164, 97, 85, 75, 62, 63, 98, 98, 122, 98, 122, 74, 73, 73, 109, 108, 70, 70, 70, 70, 70, 70, 70, 106, 133, 97, 75, 62, 111, 109, 110, 63, 62, 63, 98, 71, 119, 119, 119, 120, 70, 70, 70, 70, 70, 70, 70, 118, 119, 72, 110, 111, 164, 133, 133, 97, 99, 109, 110, 108, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 120, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70],\n         \"height\":20,\n         \"id\":1,\n         \"name\":\"teren\",\n         \"opacity\":1,\n         \"type\":\"tilelayer\",\n         \"visible\":true,\n         \"width\":24,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"data\":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 152, 152, 152, 152, 152, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 256, 256, 0, 229, 152, 152, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n         \"height\":20,\n         \"id\":2,\n         \"name\":\"obiekty\",\n         \"opacity\":1,\n         \"type\":\"tilelayer\",\n         \"visible\":true,\n         \"width\":24,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":3,\n         \"name\":\"Domek1\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":230,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":336\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":233,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":336\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":234,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":235,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":236,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":210,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":237,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":168,\n                 \"y\":252\n                }, \n                {\n                 \"height\":75,\n                 \"id\":239,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":176,\n                 \"y\":252\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":4,\n         \"name\":\"Domek2\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":254,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":504\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":255,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":504\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":256,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":257,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":258,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":253,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":259,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":211,\n                 \"y\":420\n                }, \n                {\n                 \"height\":75,\n                 \"id\":260,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":219,\n                 \"y\":420\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":5,\n         \"name\":\"Domek3\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":261,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":262,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":263,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":264,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":265,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":168\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":266,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":294,\n                 \"y\":168\n                }, \n                {\n                 \"height\":75,\n                 \"id\":267,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":302,\n                 \"y\":168\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":6,\n         \"name\":\"Domek4\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":268,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":269,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":294\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":270,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":271,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":272,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":273,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":210\n                }, \n                {\n                 \"height\":75,\n                 \"id\":274,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":512,\n                 \"y\":210\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":7,\n         \"name\":\"Domek5\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":282,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":283,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":462\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":284,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":285,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":286,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":378\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":287,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":756,\n                 \"y\":378\n                }, \n                {\n                 \"height\":75,\n                 \"id\":288,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":764,\n                 \"y\":378\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":8,\n         \"name\":\"Domek6\",\n         \"objects\":[\n                {\n                 \"gid\":89,\n                 \"height\":42,\n                 \"id\":289,\n                 \"name\":\"Domek_graf_6\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":88,\n                 \"height\":42,\n                 \"id\":290,\n                 \"name\":\"Domek_graf_5\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":252\n                }, \n                {\n                 \"gid\":77,\n                 \"height\":42,\n                 \"id\":291,\n                 \"name\":\"Domek_graf_4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":76,\n                 \"height\":42,\n                 \"id\":292,\n                 \"name\":\"Domek_graf_3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":210\n                }, \n                {\n                 \"gid\":65,\n                 \"height\":42,\n                 \"id\":293,\n                 \"name\":\"Domek_graf_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":714,\n                 \"y\":168\n                }, \n                {\n                 \"gid\":64,\n                 \"height\":42,\n                 \"id\":294,\n                 \"name\":\"Domek_graf_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":168\n                }, \n                {\n                 \"height\":75,\n                 \"id\":295,\n                 \"name\":\"Domek_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":68,\n                 \"x\":680,\n                 \"y\":168\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":9,\n         \"name\":\"krzesla\",\n         \"objects\":[\n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":34,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":544,\n                 \"y\":480\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":37,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420.5,\n                 \"y\":523.5\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":39,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":391,\n                 \"y\":485.5\n                }, \n                {\n                 \"gid\":112,\n                 \"height\":42,\n                 \"id\":40,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":435.5,\n                 \"y\":484.5\n                }, \n                {\n                 \"gid\":113,\n                 \"height\":42,\n                 \"id\":42,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":526.5,\n                 \"y\":524.5\n                }, \n                {\n                 \"gid\":113,\n                 \"height\":42,\n                 \"id\":43,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":513.5,\n                 \"y\":502.5\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":10,\n         \"name\":\"Scena\",\n         \"objects\":[\n                {\n                 \"gid\":138,\n                 \"height\":42,\n                 \"id\":299,\n                 \"name\":\"Scena4\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":137,\n                 \"height\":42,\n                 \"id\":298,\n                 \"name\":\"Scena3\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":137,\n                 \"height\":42,\n                 \"id\":297,\n                 \"name\":\"Scena2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":420\n                }, \n                {\n                 \"gid\":136,\n                 \"height\":42,\n                 \"id\":300,\n                 \"name\":\"Scena1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420,\n                 \"y\":420\n                }, \n                {\n                 \"height\":36,\n                 \"id\":302,\n                 \"name\":\"Scena_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":165,\n                 \"x\":421,\n                 \"y\":384\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":11,\n         \"name\":\"Lawki\",\n         \"objects\":[\n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":303,\n                 \"name\":\"Lawka\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":420,\n                 \"y\":504\n                }, \n                {\n                 \"height\":14,\n                 \"id\":305,\n                 \"name\":\"Lawka_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":423,\n                 \"y\":479\n                }, \n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":304,\n                 \"name\":\"Lawka_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":546,\n                 \"y\":504\n                }, \n                {\n                 \"height\":14,\n                 \"id\":307,\n                 \"name\":\"Lawka_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":549,\n                 \"y\":479\n                }, \n                {\n                 \"height\":14,\n                 \"id\":324,\n                 \"name\":\"Lawka_collider_wall_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":34,\n                 \"x\":801,\n                 \"y\":227\n                }, \n                {\n                 \"gid\":124,\n                 \"height\":42,\n                 \"id\":325,\n                 \"name\":\"Lawka_2\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":798,\n                 \"y\":252\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":12,\n         \"name\":\"Kamienie\",\n         \"objects\":[\n                {\n                 \"gid\":101,\n                 \"height\":42,\n                 \"id\":310,\n                 \"name\":\"Kamien\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":336,\n                 \"y\":336\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":25,\n                 \"id\":312,\n                 \"name\":\"Kamien_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":25,\n                 \"x\":344,\n                 \"y\":300\n                }, \n                {\n                 \"gid\":125,\n                 \"height\":42,\n                 \"id\":311,\n                 \"name\":\"Kamien_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":672,\n                 \"y\":378\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":23,\n                 \"id\":314,\n                 \"name\":\"Kamien_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":23,\n                 \"x\":681,\n                 \"y\":356\n                }, \n                {\n                 \"gid\":125,\n                 \"height\":42,\n                 \"id\":326,\n                 \"name\":\"Kamien_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":630\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":23,\n                 \"id\":327,\n                 \"name\":\"Kamien_collider_wall_1\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":23,\n                 \"x\":471,\n                 \"y\":608\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":13,\n         \"name\":\"beczki\",\n         \"objects\":[\n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":44,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":735,\n                 \"y\":265\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":45,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":740.333,\n                 \"y\":249.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":46,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":647,\n                 \"y\":248.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":47,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":568,\n                 \"y\":311.5\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":48,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":477,\n                 \"y\":302\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":49,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":468.5,\n                 \"y\":285\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":50,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":752.083,\n                 \"y\":500.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":51,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":717,\n                 \"y\":460.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":53,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":726,\n                 \"y\":444.333\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":54,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":361.333,\n                 \"y\":263.833\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":55,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":262,\n                 \"y\":245.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":56,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":266.167,\n                 \"y\":265.5\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":57,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":135.833,\n                 \"y\":355\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":58,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":153.5,\n                 \"y\":359.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":59,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":137.167,\n                 \"y\":339.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":60,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":189.333,\n                 \"y\":517.667\n                }, \n                {\n                 \"gid\":102,\n                 \"height\":42,\n                 \"id\":61,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":202.333,\n                 \"y\":524.333\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":true,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":15,\n         \"name\":\"ThorPU\",\n         \"objects\":[\n                {\n                 \"gid\":100,\n                 \"height\":42,\n                 \"id\":211,\n                 \"name\":\"Thor_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":672\n                }, \n                {\n                 \"gid\":180,\n                 \"height\":42,\n                 \"id\":212,\n                 \"name\":\"Thor_light\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":672\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":213,\n                 \"name\":\"Thor_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":504,\n                 \"y\":640\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":19,\n                 \"id\":214,\n                 \"name\":\"Thor_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":19,\n                 \"x\":515,\n                 \"y\":651\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":16,\n         \"name\":\"MeatPU\",\n         \"objects\":[\n                {\n                 \"gid\":156,\n                 \"height\":42,\n                 \"id\":215,\n                 \"name\":\"Meat_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":588\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":216,\n                 \"name\":\"Meat_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":550\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":25,\n                 \"id\":217,\n                 \"name\":\"Meat_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":25,\n                 \"x\":261,\n                 \"y\":558\n                }, \n                {\n                 \"gid\":168,\n                 \"height\":42,\n                 \"id\":218,\n                 \"name\":\"Meat_eat\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":252,\n                 \"y\":588\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":17,\n         \"name\":\"BeesPU\",\n         \"objects\":[\n                {\n                 \"gid\":155,\n                 \"height\":42,\n                 \"id\":219,\n                 \"name\":\"Bees_graph\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":462,\n                 \"y\":168\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":21,\n                 \"id\":220,\n                 \"name\":\"Bees_collider_wall\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":21,\n                 \"x\":474.5,\n                 \"y\":145.5\n                }, \n                {\n                 \"ellipse\":true,\n                 \"height\":42,\n                 \"id\":221,\n                 \"name\":\"Bees_collider_punch\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":464,\n                 \"y\":135\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":18,\n         \"name\":\"Spawny\",\n         \"objects\":[\n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":315,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":315,\n                 \"y\":264\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":316,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":187,\n                 \"y\":348\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":317,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":524,\n                 \"y\":307\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":318,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":692,\n                 \"y\":264\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":319,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":777,\n                 \"y\":473\n                }, \n                {\n                 \"gid\":2,\n                 \"height\":42,\n                 \"id\":320,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":232,\n                 \"y\":516\n                }],\n         \"opacity\":1,\n         \"type\":\"objectgroup\",\n         \"visible\":false,\n         \"x\":0,\n         \"y\":0\n        }, \n        {\n         \"draworder\":\"topdown\",\n         \"id\":14,\n         \"name\":\"krzaki\",\n         \"objects\":[\n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":64,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":815,\n                 \"y\":345.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":65,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":827.333,\n                 \"y\":364.167\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":67,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":130.833,\n                 \"y\":456.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":68,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":135.833,\n                 \"y\":473.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":69,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":159.333,\n                 \"y\":457.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":70,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":150.833,\n                 \"y\":435.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":72,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":129.333,\n                 \"y\":432.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":75,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":589.333,\n                 \"y\":152.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":76,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":574.333,\n                 \"y\":132.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":77,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":547.333,\n                 \"y\":130.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":78,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":561.583,\n                 \"y\":150.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":79,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":561.333,\n                 \"y\":171.583\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":80,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":220.333,\n                 \"y\":642.833\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":81,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":213.833,\n                 \"y\":618.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":82,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":440.833,\n                 \"y\":671.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":83,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":279.833,\n                 \"y\":620.083\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":84,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":254.333,\n                 \"y\":646.333\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":85,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":138.667,\n                 \"y\":396.667\n                }, \n                {\n                 \"gid\":179,\n                 \"height\":42,\n                 \"id\":87,\n                 \"name\":\"\",\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":42,\n                 \"x\":821,\n                 \"y\":215\n                }, \n                {\n                 \"height\":0,\n                 \"id\":100,\n                 \"name\":\"collide2\",\n                 \"polygon\":[\n                        {\n                         \"x\":0,\n                         \"y\":0\n                        }, \n                        {\n                         \"x\":22.5,\n                         \"y\":-1\n                        }, \n                        {\n                         \"x\":30.5,\n                         \"y\":13\n                        }, \n                        {\n                         \"x\":26.75,\n                         \"y\":23.75\n                        }, \n                        {\n                         \"x\":-0.5,\n                         \"y\":25\n                        }, \n                        {\n                         \"x\":-5.75,\n                         \"y\":13.75\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":0,\n                 \"x\":146.583,\n                 \"y\":367.833\n                }, \n                {\n                 \"height\":0,\n                 \"id\":104,\n                 \"name\":\"collider1\",\n                 \"polygon\":[\n                        {\n                         \"x\":0,\n                         \"y\":0\n                        }, \n                        {\n                         \"x\":27.75,\n                         \"y\":1.75\n                        }, \n                        {\n                         \"x\":35.75,\n                         \"y\":-14\n                        }, \n                        {\n                         \"x\":54.75,\n                         \"y\":-16.5\n                        }, \n                        {\n                         \"x\":40.75,\n                         \"y\":-61.75\n                        }, \n                        {\n                         \"x\":-7.5,\n                         \"y\":-63.75\n                        }, \n                        {\n                         \"x\":-7.25,\n                         \"y\":-22.75\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n                 \"width\":0,\n                 \"x\":142.583,\n                 \"y\":466.583\n                }, \n                {\n                 \"height\":0,\n                 \"id\":107,\n                 \"name\":\"collider4\",\n                 \"polygon\":[\n                        {\n                         \"x\":-49,\n                         \"y\":15.75\n                        }, \n                        {\n                         \"x\":-46.75,\n                         \"y\":-12.75\n                        }, \n                        {\n                         \"x\":55.5,\n                         \"y\":-14.75\n                        }, \n                        {\n                         \"x\":79,\n                         \"y\":19.75\n                        }, \n                        {\n                         \"x\":73,\n                         \"y\":44\n                        }, \n                        {\n                         \"x\":26.5,\n                         \"y\":47.75\n                        }, \n                        {\n                         \"x\":3.5,\n                         \"y\":35.5\n                        }, \n                        {\n                         \"x\":-20.75,\n                         \"y\":15.5\n                        }],\n                 \"rotation\":0,\n                 \"type\":\"\",\n                 \"visible\":true,\n\n<!-- File: Extensions/TileMap/example/island.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Example Skill\n\nPath: `Extensions/TileMap/example/island.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/example/island.json)\n\n<!-- File: Extensions/TileMap/tests/flipped and animated tiles/example.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/example.json)\n\n<!-- File: Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/flipped and animated tiles.json)\n\n<!-- File: Extensions/TileMap/tests/flipped and animated tiles/tileset.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Flipped and animated tiles Skill\n\nPath: `Extensions/TileMap/tests/flipped and animated tiles/tileset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/tests/flipped and animated tiles/tileset.json)\n\n<!-- File: GDevelop.js/__tests__/extensions/EBAsyncAction.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Extensions Skill\n\nPath: `GDevelop.js/__tests__/extensions/EBAsyncAction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/GDevelop.js/__tests__/extensions/EBAsyncAction.json)\n\n<!-- File: GDevelop.js/__tests__/extensions/EBObject.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Extensions Skill\n\nPath: `GDevelop.js/__tests__/extensions/EBObject.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/GDevelop.js/__tests__/extensions/EBObject.json)\n\n<!-- File: Extensions/BBText/pixi-multistyle-text/README.md (Tokens: ~590 | Category: plugin-manifest) -->\n# pixi-multistyle-text\n\n[![NPM](https://nodei.co/npm/pixi-multistyle-text.png)](https://nodei.co/npm/pixi-multistyle-text/)\n\nAdd a `MultiStyleText` object inside [pixi.js](https://github.com/GoodBoyDigital/pixi.js) to easily create text using different styles.\n\n## Example\n\nIn the example below, we are defining 4 text styles.\n`default` is the default style for the text, and the others matches the tags inside the text.\n\n```js\nlet text = new MultiStyleText(\"Let's make some <ml>multiline</ml>\\nand <ms>multistyle</ms> text for\\n<pixi>Pixi.js!</pixi>\",\n{\n    \"default\": {\n        fontFamily: \"Arial\",\n        fontSize: \"24px\",\n        fill: \"#cccccc\",\n        align: \"center\"\n    },\n    \"ml\": {\n        fontStyle: \"italic\",\n        fill: \"#ff8888\"\n    },\n    \"ms\": {\n        fontStyle: \"italic\",\n        fill: \"#4488ff\"\n    },\n    \"pixi\": {\n        fontSize: \"64px\",\n        fill: \"#efefef\"\n    }\n});\n```\n\n## Build instructions\n\nThe library is no longer maintain and need this fix to work with Pixi 7: \n- [Fix empty color attribute errors with Pixi 7](https://github.com/D8H/pixi-multistyle-text/pull/1)\n\n```bash\nyarn install\nyarn build\n```\n\n## Usage\n\n### `text = new MultiStyleText(text, textStyles)`\n\nCreates a new `MultiStyleText` with the given text and styles.\n\n#### `textStyles`\n\nType: `{ [key: string]: ExtendedTextStyle }`\n\nEach key of this dictionary should match with a tag in the text. Use the key `default` for the default style.\n\nEach `ExtendedTextStyle` object can have [any of the properties of a standard PIXI text style](http://pixijs.download/release/docs/PIXI.TextStyle.html), in addition to a `valign` property that allows you to specify where text is rendered relative to larger text on the same line (`\"top\"`, `\"middle\"`, or `\"bottom\"`).\n\nThe `align`, `wordWrap`, `wordWrapWidth`, and `breakWord` properties are ignored on all styles _except for the `default` style_, which controls those properties for the entire text object.\n\nIf text is rendered without any value assigned to a given parameter, Pixi's defaults are used.\n\n## Demo\n\n```bash\nyarn demo\n```\n\n## License\n\nMIT, see [LICENSE.md](http://github.com/tleunen/pixi-multistyle-text/blob/master/LICENSE.md) for details.\n\n<!-- File: Extensions/DialogueTree/bondage.js/README.md (Tokens: ~704 | Category: plugin-manifest) -->\n# bondage.js [![Build Status](https://travis-ci.org/jhayley/bondage.js.svg?branch=master)](https://travis-ci.org/jhayley/bondage.js)\n\n[Yarn](https://github.com/InfiniteAmmoInc/Yarn) parser for Javascript, in the same vein as [YarnSpinner](https://github.com/thesecretlab/YarnSpinner).\n\n# Usage\n\n#### As a Web Tool\n\nTo run through your yarn files in your browser, go to <http://hayley.zone/bondage.js>, paste your yarn data in the field, then hit \"compile\".\n\n#### As a Command Line Tool\nInstallation: `npm install -g bondage`\n\nNow you can use the `bondage` command to run through Yarn files from the command line. You can load one or multiple files at a time. If you load multiple files and a two nodes are encountered with the same name, the node will be overwritten.\n\n**Examples**\n\n* Running a single file from the default start node (named \"Start\"): `bondage run yarnfile.json`\n* Running a single file from the specified node name: `bondage run -s StartNode yarnfile.json`\n* Running multiple files from the specified node name: `bondage run -s StartNode yarnfile1.json yarnfile2.json ...`\n* See the compiled ast: `bondage compile --ast yarnfile.json`\n* See the tokenized input: `bondage compile --tokens yarnfile.json`\n\n#### As a Library\n\n**Web**\n\nInclude [dist/bondage.min.js](https://github.com/jhayley/bondage.js/blob/master/dist/bondage.min.js) somewhere in your html, and the `bondage` variable will be added to the global scope. You can then access everything in the example below (such as `bondage.Runner`) through that variable.\n\n**Node**\n\nInstallation: `npm install bondage`\n\n```javascript\nconst fs = require('fs');\nconst bondage = require('bondage');\n\nconst runner = new bondage.Runner();\nconst yarnData = JSON.parse(fs.readFileSync('yarnFile.json'));\n\nrunner.load(yarnData);\n\n// Loop over the dialogue from the node titled 'Start'\nfor (const result of runner.run('Start')) {\n  // Do something else with the result\n  if (result instanceof bondage.TextResult) {\n    console.log(result.text);\n  } else if (result instanceof bondage.OptionsResult) {\n    // This works for both links between nodes and shortcut options\n    console.log(result.options);\n\n    // Select based on the option's index in the array (if you don't select an option, the dialog will continue past them)\n    result.select(1);\n  } else if (result instanceof bondage.CommandResult) {\n     // If the text was inside <<here>>, it will get returned as a CommandResult string, which you can use in any way you want\n    console.log(result.text);\n  }\n}\n\n// Advance the dialogue manually from the node titled 'Start'\nconst d = runner.run('Start')\nlet result = d.next().value;\nlet nextResult = d.next().value;\n// And so on\n```\n\nFor usage of the yarn format itself, please see the [YarnSpinner Documentation](https://github.com/thesecretlab/YarnSpinner/tree/master/Documentation), everything there should carry here too (if something does not match up, please open an issue).\n\n<!-- File: Extensions/Effects/pixi-filters/README.md (Tokens: ~536 | Category: plugin-manifest) -->\n## Update filters libraries\n\n- Clone [Pixi Filters](https://github.com/pixijs/filters) repository `git@github.com:pixijs/filters.git`\n- Checkout a release tag.\n- Apply the following patch to build `life` libraries.\n\n```Diff\ndiff --git a/rollup.config.js b/rollup.config.js\nindex 39a001c..86bb3a9 100644\n--- a/rollup.config.js\n+++ b/rollup.config.js\n@@ -44,15 +44,33 @@\n         const freeze = false;\n         const builds = [];\n \n+        const name = '__filters';\n+        const footer = `Object.assign(PIXI.filters, ${name});`;\n+        globals = Object.assign({\n+            '@pixi/core': 'PIXI',\n+            '@pixi/filter-alpha': 'PIXI.filters',\n+            '@pixi/filter-blur': 'PIXI.filters'\n+        }, globals);\n+\n         builds.push({\n             input,\n             output: [\n+                // {\n+                //     file: path.join(basePath, main),\n+                //     format: 'cjs',\n+                //     freeze,\n+                //     sourcemap,\n+                //     banner,\n+                // },\n                 {\n+                    name,\n+                    banner,\n+                    globals,\n                     file: path.join(basePath, main),\n-                    format: 'cjs',\n+                    format: 'iife',\n+                    footer,\n                     freeze,\n                     sourcemap,\n-                    banner,\n                 },\n                 {\n                     file: path.join(basePath, module),\n@@ -74,13 +92,6 @@\n         // we'll use this to generate the bundle file\n         // this will package all dependencies\n         if (bundle) {\n-            const name = '__filters';\n-            const footer = `Object.assign(PIXI.filters, ${name});`;\n-            globals = Object.assign({\n-                '@pixi/core': 'PIXI',\n-                '@pixi/filter-alpha': 'PIXI.filters',\n-                '@pixi/filter-blur': 'PIXI.filters'\n-            }, globals);\n             builds.push({\n                 input,\n                 external: Object.keys(globals),\n```\n- Copy all the library files into a folder.\n\n```\nmkdir dist\nfind filters/ -type f -name 'filter-*.js' -exec cp '{}' dist/ ';'\n```\n\n- Move them to `Extensions/Effects/pixi-filters`.\n- Remove `//# sourceMappingURL=filter-.*.js.map` with a search and replace.\n\n<!-- File: Extensions/Firebase/README.md (Tokens: ~63 | Category: plugin-manifest) -->\n# Firebase Extension\n\nThis is the wrapper for the Firebase SDK for GDevelop.\nThe files are prefixed with A_, B_, C_ and D_ to classify their import priority (where A has the highest and D the lowest).\n\nfirebasejs contains the Web SDK.\nfirebasetools contains wrappers for GDevelop.\n\n<!-- File: Extensions/NavMeshPathfinding/README.md (Tokens: ~137 | Category: plugin-manifest) -->\n# NavMesh pathfinding extension\n\nTo update the library:\n- Clone this fork https://github.com/D8H/recast-navigation-js\n- Check out `main`\n- Get the wasm build with npm\n- Copy the wasm build into `recast-navigation-js/packages/recast-navigation-wasm/build`\n- Run `yarn build`\n- Check out `umd-build`\n- Run `yarn build`\n- Copy `recast-navigation-js/packages/recast-navigation/recast-navigation-generators.js` into this folder as `A_recast-navigation-generators.js` (include files are loaded sorted by name: it must be loaded before the behaviors), and the wasm build\n\n<!-- File: Extensions/Physics3DBehavior/README.md (Tokens: ~54 | Category: plugin-manifest) -->\n## Physics 3D Behaviors for GDevelop\n\nThis is the 3D physics engine for GDevelop, based on [Jolt Physics](https://github.com/jrouwe/JoltPhysics.js/) (WebAssembly, version 0.30.0).\n\n<!-- File: Extensions/PlatformBehavior/README.md (Tokens: ~3973 | Category: plugin-manifest) -->\n# Platformer Extension technical documentation\n\n## Floor following\n\n### Horizontal search\n\nWhen the character walks on a platform, he must follow its slope.\nThe `slopeMaxAngle` property is used to calculate how much the character can move vertically to follow it.\nIf the platform is too high, the platform is considered to be an obstacle and the character will stop before it.\n\nWhen there is no obstacle detected by the horizontal search, the movement is done in 1 step and the vertical search is done at the new `x` position.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingRequestedDeltaX.png)](./diagrams/SlopeFollowingRequestedDeltaX.svgz)\n\nOtherwise, when there is a junction, 2 vertical searches are done:\n\n- one before a potential obstacle (in pink)\n- one at the end of the movement\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingClimbFactor.png)](./diagrams/SlopeFollowingClimbFactor.svgz)\n\nThis allows to calculate the right slope angle. Indeed, in one step, the angle could appear lower (the dotted line).\nWhich means that the character could climb it during 1 frame and then stop.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingClimbFactorMean.png)](./diagrams/SlopeFollowingClimbFactorMean.svgz)\n\nFor further details on the implementation, please take a look at the comments in:\n\n- the function `gdjs.PlatformerObjectRuntimeBehavior._moveX`\n- the function `gdjs.PlatformerObjectRuntimeBehavior.OnFloor.beforeMovingY`\n\n### Vertical search\n\nThe aim of the vertical search is to find the highest platform where the character can land.\nThere are 2 constraints:\n\n- `allowedMinDeltaY` how much the character can go upward\n- `allowedMaxDeltaY` how much the character can go downward\n\nDuring the search, these 2 constraints can tighten around the character.\nIf they become incompatible, it means that the character can't go through the hole,\nit will go back to its original position and lose its speed.\n\nThere are also more obvious obstacles that cover the character in the middle and end the search directly.\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingResult.png)](./diagrams/SlopeFollowingResult.svgz)\n\nObstacles can eventually encompass the character. So, platforms edges don't have any collision with character.\nTo detect such cases, 2 flags are used:\n\n- `foundOverHead` when an edge is over `headMaxY`\n- `foundUnderHead` when an edge is under `floorMinY`\n\n[![RequestedDeltaX](./diagrams/SlopeFollowingContext.png)](./diagrams/SlopeFollowingContext.svgz)\n\nFor further details on the implementation, please take a look at the comments in:\n\n- the function `gdjs.PlatformerObjectRuntimeBehavior._findHighestFloorAndMoveOnTop`\n- the class `gdjs.PlatformerObjectRuntimeBehavior.FollowConstraintContext`\n\n## Jump trajectory\n\n### Sequential calculus of the engine\n\nThe engine uses the previous speeds and positions to evaluate the new ones (with Verlet integrations). This is fast for sequential access and it's a good fit for what the engine does.\n\nThe model doesn't follow the laws of physics and this is fine because more realism doesn't mean more fun. Internally, it uses 2 independent speeds:\n\n- the current jumping speed `currentJumpSpeed`\n- the current falling speed `currentFallSpeed`\n\nNote that in the engine `currentJumpSpeed` is actually an absolute speed but it's easier to visualize as a negative value as it is subtracted to `currentFallSpeed`.\n\nThe jump speed stays at its initial value while the jump is sustained. Then, it decreases (in absolute) according to the gravity until it reaches 0 and stays constant until the end.\nThe falling speed starts at 0 and increase according to the gravity, as soon as the jump start. Until, it reaches the maximum falling speed and stays constant until the end too.\n\n[![Jump speed](./diagrams/JumpSpeed.png)](./diagrams/JumpSpeed.svgz) [![Falling speed](./diagrams/FallingSpeed.png)](./diagrams/FallingSpeed.svgz)\n\n### Requests solving and random access\n\n#### Why a continuous model?\n\nA function allows to get a position for any given time without calculating every previous positions.\n\n#### Polynomial piece-wise function\n\nThe character trajectory during a jump looks like a quadratic function, but it's actually a piece-wise function.\n\nOn this first trajectory example, the curve almost follows the quadratic function in white, but it actually follows the grey ones at the start and the end of the jump. There is also an affine part at the end of the jump. It's not shown on this plot because it happens later on.\n\n![Trajectory with default settings](./diagrams/DefaultSettings.png)\n\nThis example of trajectory shows the 4 functions. It has an affine part in the middle instead of a quadratic one like in the previous example. In practice, this jump trajectory will seem off, but a tiny affine part can happen in some configurations.\n\n![Trajectory with an affine part](./diagrams/WithAffine.png)\n\nThe piece-wise function has 3 borders:\n\n- at the end of the jump sustaining (jumpSustainTime)\n- when the maximum falling speed is reached (maxFallingTime)\n- when the jump speed reach 0 (jumpEndTime)\n\nDepending on the when the maximum falling speed is reached, there can be 3 piece-wise functions:\n\n- after the jump end\n  - sustain case\n  - common case\n  - free fall case\n  - gliding case\n- before the jump end and after the sustaining\n  - sustain case\n  - common case\n  - max falling case\n  - gliding case\n- during the sustaining\n  - sustain case\n  - affine case\n  - max falling case\n  - gliding case\n\n[![Jump cases](./diagrams/JumpCases.png)](./diagrams/JumpCases.svgz)\n\n#### SageMath model\n\nThe following model is written for [SageMath](https://www.sagemath.org/), an open-source mathematics software system.\n\n```Python\n# First define the jump and falling functions #\n\ncurrentFallingSpeed(t, gravity) = gravity * t\nfallingX(t, gravity) = integral(currentFallingSpeed(t, gravity), t)\nmaxFallingTime(gravity, maxFallingSpeed) = solve([currentFallingSpeed(t, gravity)==maxFallingSpeed],t)[0].rhs()\nfallEndedX(t, gravity) = fallingX(maxFallingTime(gravity, maxFallingSpeed), gravity) + maxFallingSpeed * (t - maxFallingTime(gravity, maxFallingSpeed))\n\ncurrentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) = -jumpSpeed + gravity * (t - jumpSustainTime)\nsustainedX(t, jumpSpeed) = -jumpSpeed * t\njumpingX(t, gravity, jumpSpeed, jumpSustainTime) = sustainedX(jumpSustainTime, jumpSpeed) + integral(currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime), t, jumpSustainTime, t)\njumpEndTime(gravity, jumpSpeed, jumpSustainTime) = jumpSustainTime + jumpSpeed / gravity\njumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) = jumpingX(jumpEndTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# t < jumpSustainTime && t < maxFallingTime #\n\nsustainCaseSpeed(t, gravity, jumpSpeed) = -jumpSpeed + currentFallingSpeed(t, gravity)\nsustainCaseHeight(t, gravity, jumpSpeed) = sustainedX(t, jumpSpeed) + fallingX(t, gravity)\nsustainCasePeakTime(gravity, jumpSpeed, jumpSustainTime) = solve([sustainCaseSpeed(t, gravity, jumpSpeed)==0], t)[0].rhs()\nsustainCasePeakHeight(gravity, jumpSpeed, jumpSustainTime) = sustainCaseHeight(sustainCasePeakTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# jumpSustainTime < t && t < maxFallingTime && t < jumpEndTime #\n\ncommonCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime) = currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) + currentFallingSpeed(t, gravity)\ncommonCaseHeight(t, gravity, jumpSpeed, jumpSustainTime) = jumpingX(t, gravity, jumpSpeed, jumpSustainTime) + fallingX(t, gravity)\ncommonCasePeakTime(gravity, jumpSpeed, jumpSustainTime) = solve([commonCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime)==0], t)[0].rhs()\ncommonCasePeakHeight(gravity, jumpSpeed, jumpSustainTime) = commonCaseHeight(commonCasePeakTime(gravity, jumpSpeed, jumpSustainTime), gravity, jumpSpeed, jumpSustainTime)\n\n\n# jumpSustainTime < t && maxFallingTime < t && t < jumpEndTime #\n\nmaxFallingCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = currentJumpSpeed(t, gravity, jumpSpeed, jumpSustainTime) + maxFallingSpeed\nmaxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpingX(t, gravity, jumpSpeed, jumpSustainTime) + fallEndedX(t, gravity)\nmaxFallingCasePeakTime(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseSpeed(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==0], t)[0].rhs()\nmaxFallingCasePeakHeight(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = maxFallingCaseHeight(maxFallingCasePeakTime(gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed), gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)\n\n# maxFallingTime < t && t < jumpSustainTime #\n# in this case the speed is constant (-jumpSpeed + maxFallingSpeed) there is no strict maximum. #\n\naffineCaseSpeed(t, jumpSpeed, maxFallingSpeed) = -jumpSpeed + maxFallingSpeed\naffineCaseHeight(t, gravity, jumpSpeed, maxFallingSpeed) = sustainedX(t, jumpSpeed) + fallEndedX(t, gravity)\n\n\n# jumpEndTime < t && maxFallingTime < t #\n# This is a strictly descending phase, the peak can't happen here #\n\nglidingCaseSpeed(t, maxFallingSpeed) = maxFallingSpeed\nglidingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) + fallEndedX(t, gravity)\n\n\n# jumpEndTime < t && t < maxFallingTime #\n# This is a strictly descending phase, the peak can't happen here #\n\nfreeFallCaseSpeed(t, gravity) = currentFallingSpeed(t, gravity)\nfreeFallCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = jumpEndedX(t, gravity, jumpSpeed, jumpSustainTime) + fallingX(t, gravity)\n```\n\n#### Find the initial jump speed for a given jump height\n\nThe great thing about quadratic functions is that it's easy to find solutions to a constraint. For instance, to find which initial jump speed to choose to jump a given height, the formula can be extracted like this:\n\n```Python\nvar('givenHeight')\nsolve([sustainCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\nsolve([commonCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\nsolve([maxFallingCasePeakHeight(gravity, jumpSpeed, jumpSustainTime)==givenHeight], jumpSpeed)[1].rhs()\n```\n\nThe program will have to determine which formula to use. As the initial jump speed is unknown, it's not possible to know where the peak will happen, but jump speed solutions of each formula can be used to check if the peak actually happens during the right interval of time.\n\n```JavaScript\nif (maxFallingSpeedReachedTime > jumpSustainTime) {\n    // common case\n    jumpSpeed = commonCaseJumpSpeed(jumpHeight);\n    peakTime = commonCasePeakTime(jumpSpeed);\n\n    if (peakTime < jumpSustainTime) {\n        // sustain case\n        jumpSpeed = sustainCaseJumpSpeed(jumpHeight);\n    }\n    else if (peakTime > maxFallingSpeedReachedTime) {\n        // max falling case\n        jumpSpeed = maxFallingCaseJumpSpeed(jumpHeight);\n    }\n}\nelse {\n    // affine case can't have a maximum\n\n    // sustain case\n    jumpSpeed = sustainCaseJumpSpeed(jumpHeight);\n    peakTime = jumpSpeed / gravity;\n\n    if (peakTime > maxFallingSpeedReachedTime) {\n        // max falling case\n        jumpSpeed = maxFallingCaseJumpSpeed(jumpHeight);\n    }\n}\n```\n\n#### Find the time for a given Y displacement\n\nThe same kind of logic from the previous section can be used to evaluate at which time a character will be at a given ordinate when going up or going down.\n\n```Python\nsustainCaseUpTime(y, gravity, jumpSpeed) = solve([sustainCaseHeight(t, gravity, jumpSpeed)==y], t)[0].rhs()\ncommonCaseUpTime(y, gravity, jumpSpeed, jumpSustainTime) = solve([height(t, gravity, jumpSpeed, jumpSustainTime)==y], t)[0].rhs()\nmaxFallingCaseCaseUpTime(y, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[0].rhs()\n\nsustainCaseDownTime(y, gravity, jumpSpeed) = solve([sustainCaseHeight(t, gravity, jumpSpeed)==y], t)[1].rhs()\ncommonCaseDownTime(y, gravity, jumpSpeed, jumpSustainTime) = solve([height(t, gravity, jumpSpeed, jumpSustainTime)==y], t)[1].rhs()\nmaxFallingCaseCaseDownTime(y, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([maxFallingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[1].rhs()\nglidingCaseDownTime(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([glidingCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[0].rhs() # only one solution (it's affine) #\nfreeFallCaseDownTime(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed) = solve([freeFallCaseHeight(t, gravity, jumpSpeed, jumpSustainTime, maxFallingSpeed)==y], t)[1].rhs()\n\naffineCaseTime(y, jumpSpeed, maxFallingSpeed) = solve([affineCaseHeight(t, jumpSpeed, maxFallingSpeed)==y], t)[0].rhs()\n```\n\nThe root conditions are the 3 piece-wise functions described at the end of the [Polynomial piece-wise function](#polynomial-piece-wise-function) section.\nNote that quadratic functions have a maximum or a minimum value which means there won't always be a solution. That's why there are \"not a number\" checks.\n\n```JavaScript\nif (maxFallingSpeedReachedTime > jumpEndTime) {\n    time = sustainCase(y);\n    if (time > jumpSustainTime || Number.isNaN(time)) {\n        time = commonCase(y);\n        if (time > jumpEndTime || Number.isNaN(time)) {\n            time = freeFallCase(y);\n            if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\nelse if (maxFallingSpeedReachedTime > jumpSustainTime) {\n    time = sustainCase(y);\n    if (time > jumpSustainTime || Number.isNaN(time)) {\n        time = commonCase(y);\n        if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n            time = maxFallingCase(y);\n            if (time > jumpEndTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\nelse {\n    time = sustainCase(y);\n    if (time > maxFallingSpeedReachedTime || Number.isNaN(time)) {\n        time = maxFallingSpeed >= jumpSpeed ? affineCase(y) : time = Number.MAX_VALUE;\n        if (time > jumpSustainTime || Number.isNaN(time)) {\n            time = maxFallingCase(y);\n            if (time > jumpEndTime || Number.isNaN(time)) {\n                time = glidingCase(y);\n            }\n        }\n    }\n}\n```\n\n#### Plotting trajectories\n\nThis is the code used to plot the first graphic of the [Polynomial piece-wise function](#polynomial-piece-wise-function) section.\n\n```Python\n# The trajectory of the default jump settings\n#\n# gravity: 1000\n# maxFallingSpeed: 700\n# jumpSustainTime: 0.2\n# jumpSpeed: 600\n#\n# n(maxFallingTime(1000, 700))\n# 0.7\n\n(\n  plot(-sustainCaseHeight(t, 1000, 600), 0, 0.8, ymin=0, color='grey')\n+ plot(-commonCaseHeight(t, 1000, 600, 0.2), 0, 0.8, ymin=0, color='black')\n+ plot(-maxFallingCaseHeight(t, 1000, 600, 0.2, 700), 0, 0.8, ymin=0, color='grey')\n+ plot(-piecewise([\n    ((0, 0.2), sustainCaseHeight(t, 1000, 600)),\n    ((0.2, maxFallingTime(1000, 700)), commonCaseHeight(t, 1000, 600, 0.2)),\n    ((maxFallingTime(1000, 700), 2), maxFallingCaseHeight(t, 1000, 600, 0.2, 700))\n  ]), 0, 0.8, ymin=0, color='cyan')\n)\n```\n\n<!-- File: Extensions/README.md (Tokens: ~125 | Category: plugin-manifest) -->\n# Extensions for GDevelop\n\nThese are the \"official\" extensions directly bundled with GDevelop.\n\n## Writing your extensions or contributing to an existing one 😎\n\nMost extensions can be written in JavaScript.\n\n**[Read this README](https://github.com/4ian/GDevelop/blob/master/newIDE/README-extensions.md)** to learn everything about writing extensions for GDevelop.\n\n## License\n\n- Extensions are provided under the MIT License: see [LICENSE.md](LICENSE.md) file.\n- External libraries can be used by extensions (Box2D, Dlib or SPARK for example). See their licenses in their directories.\n\n<!-- File: Extensions/TileMap/helper/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# helper Documentation\n\nPath: `Extensions/TileMap/helper/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/4ian/GDevelop/HEAD/Extensions/TileMap/helper/README.md)\n</yakaai_skills>"}