diff --git a/README.md b/README.md new file mode 100644 index 0000000..4657d72 --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +# Noxious game server + +This is the server for the Noxious game. + +## Installation + +1. Clone the repository +2. Install dependencies with `npm install` +3. Copy the `.env.example` file to `.env` and fill in the required variables +4. Run the server with `npm run dev` + +## Commands + +### `npm run dev` + +Starts the server in development mode. + +### `npm run build` + +Builds the server for production. + +### `npm run format` + +Formats the code using Prettier. + +## MikroORM + +MikroORM is used as the ORM for the server. + +### Create init. migrations + +Run `npx mikro-orm migration:create --initial` to create a new initial migration. + +### Create migrations + +Run `npx mikro-orm migration:create` to create a new migration. + +### Apply migrations + +Run `npx mikro-orm migration:up` to apply all pending migrations. \ No newline at end of file diff --git a/migrations/Migration20241225124810.ts b/migrations/Migration20241225180201.ts similarity index 99% rename from migrations/Migration20241225124810.ts rename to migrations/Migration20241225180201.ts index 0dc7132..875aac3 100644 --- a/migrations/Migration20241225124810.ts +++ b/migrations/Migration20241225180201.ts @@ -1,6 +1,6 @@ import { Migration } from '@mikro-orm/migrations'; -export class Migration20241225124810 extends Migration { +export class Migration20241225180201 extends Migration { override async up(): Promise { this.addSql(`create table \`map_object\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`tags\` json null, \`origin_x\` int not null default 0, \`origin_y\` int not null default 0, \`is_animated\` tinyint(1) not null default false, \`frame_rate\` int not null default 0, \`frame_width\` int not null default 0, \`frame_height\` int not null default 0, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); diff --git a/src/commands/init.ts b/src/commands/init.ts index 85b0e20..6b4ac9c 100644 --- a/src/commands/init.ts +++ b/src/commands/init.ts @@ -1,14 +1,20 @@ import { Server } from 'socket.io' -import prisma from '#application/prisma' import fs from 'fs' -import { getPublicPath, getRootPath } from '#application/storage' +import { getPublicPath } from '#application/storage' import sharp from 'sharp' -import { CharacterEquipmentSlotType, CharacterGender, CharacterRace } from '@prisma/client' import bcrypt from 'bcryptjs' +import { Tile } from '#entities/tile' +import { MapObject } from '#entities/mapObject' +import { SpriteAction } from '#entities/spriteAction' +import { Sprite } from '#entities/sprite' +import { Zone } from '#entities/zone' +import { ZoneEffect } from '#entities/zoneEffect' +import { User } from '#entities/user' +import { Character } from '#entities/character' +import CharacterTypeRepository from '#repositories/characterTypeRepository' +import CharacterHairRepository from '#repositories/characterHairRepository' +import ZoneRepository from '#repositories/zoneRepository' -/** - * This script adds demo data to the database - */ export default class InitCommand { constructor(private readonly io: Server) {} @@ -18,7 +24,7 @@ export default class InitCommand { await this.importObjects() await this.createCharacterSprite() await this.createCharacterHair() - await this.createCharacterEquipment() + // await this.createCharacterEquipment() // Zone await this.createZone() @@ -30,296 +36,193 @@ export default class InitCommand { process.exit(0) } - // Read tiles from getPublicPath('tiles') and create them in the database private async importTiles(): Promise { for (const tile of fs.readdirSync(getPublicPath('tiles'))) { - await prisma.tile.create({ - data: { - id: tile.split('.')[0], - name: 'New tile' - } - }) + const newTile = new Tile() + newTile.id = tile.split('.')[0] as any + newTile.name = 'New tile' + await newTile.save() } } - // Read objects from getPublicPath('objects') and create them in the database private async importObjects(): Promise { for (const object of fs.readdirSync(getPublicPath('objects'))) { - await prisma.object.create({ - data: { - id: object.split('.')[0], - name: 'New object', - // Use sharp to get the dimensions of the image - frameHeight: await sharp(getPublicPath('objects', object)) - .metadata() - .then((metadata) => metadata.height), - frameWidth: await sharp(getPublicPath('objects', object)) - .metadata() - .then((metadata) => metadata.width) - } - }) + const newMapObject = new MapObject() + newMapObject.id = object.split('.')[0] as any + newMapObject.name = 'New object' + + newMapObject.frameWidth = await sharp(getPublicPath('objects', object)) + .metadata() + .then((metadata) => metadata.height) ?? 0 + + newMapObject.frameHeight = await sharp(getPublicPath('objects', object)) + .metadata() + .then((metadata) => metadata.width) ?? 0 + + await newMapObject.save() } } private async createCharacterSprite(): Promise { - await prisma.sprite.create({ - data: { - id: '023d1e9d-f57f-4faa-8412-86c07107cf85', - name: 'Character', - spriteActions: { - create: [ - { - action: 'idle_right_down', - sprites: [ - 'data:image/png;base64,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' - ], - originX: 0, - originY: 0, - isAnimated: false, - isLooping: false, - frameWidth: 64, - frameHeight: 94, - frameRate: 0 - }, - { - action: 'idle_left_up', - sprites: [ - 'data:image/png;base64,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' - ], - originX: 0, - originY: 0, - isAnimated: false, - isLooping: false, - frameWidth: 64, - frameHeight: 94, - frameRate: 0 - }, - { - action: 'walk_right_down', - sprites: [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAABWCAYAAAA+Eu3nAAAGmElEQVR4nLVaTWgbRxh92gjF2BYG25VsalhDvOyhEji9hPSQiyv3UnxI2kOpU3xKTBowsSHQQ00w9NCDDIWWNjeT+pLSk482vvgSfGkcZChCKWghkFo4IkK1kA2Re9h8o5nZmdldNX0g8M7OzJtv5vuddWLmm4cwYXhr7VzVXp9bTRgHKpAMI1mYnsTlmWuB90tF/30cUiXZ8Nba+cL0JIYzWdh5F31ODv2jA0Kfh7/k0K4cYqm4dh6V0NIRXZ65JhBdGHGEX//oAPqcHH5Y+Uq71aFkADCcyQIA+pycdmAvhAIZSWXn3SgLZTAtSkumQ+v4BG9eVYx9okin1UYVYT8qgbY4iEzWy+QyAtt4dfEOvFIZANBpNCNPtFR8FJ+sXTmEe/0Gnu7u4azmCe9uL97H7cX7gUluL97HXm4qPhlJdXXxDp7u7gUmfPysGiB8/KwaSqQkq9eO0K4cAvDtjbaSJhz/8uPIkxvJ6nOriY2DKpPOzrs4q3noNJp4/eQ31o//m56ffvJRKJlSG0k6r1RmhCnY+PPuLaEf7y/bZjMEoNpGTrp67Yi1k7L0jw6wHyGqSSg9SH1uNbG+vQ8AgpJ0Gk20jk8Cv06jiaXio9BwY3RXGwdVgZDOT/7JJqKD0YMsTE8yQoI6kIZLFUpGhEBXSpkciB6tQ8lIkssz15jSUASPKpGRjE8LeNh5Fza6sW559grWt6LnIgKZLsmh1KB1fMK8S5+Tg+vksAzfLjcikCYoleNzj1TGZh14TeNtj6SmqE7vNg6qWsKkimjw0hiTgg/5rpNjkpF3ofc2AJQAoKoTrGtntNLBS2O4MOKwrQKAtDvNfu99Oo9UxhbyFGoH/CPQpQcWn+T0OTlGFBXktihHkZWKB1OQVMYOJKKdRhPWUNqY7FBuEsU/WrQaayjNpJIn5/3gP3/9rSQkmNJAS9WBHyz7QcDXUIp57cohOo0mUxwTkgCEXJ6kIgerMgNS8/puNwRtHFTx6+8/of5k30ymkqqyu80CJ0FlZwBYm38MIWT+FuRYEtppNAMrB3z/6GRmhbazmhfoZyTzSmW4inydHC7ga6s1lAYA5roAIAU7MM5IRtK0ACEYykRUOgFAesQ/31ZkKk2k9kplFrd4iWSDl5/Dig+m+jThWc0TEh2CbPCq9jDDtmj1uslUePOqwqSIU2zEqmKIiBEcHwAgM6iGGnakYhCIJgF5FSMZnRcN2DioskSnF1IjGRDULB7kE3lt022Zqb6OvI0ywrZMhSQgVpgqtac+vAG712+w9lhkhDD1D5u4XjsyzmEB0ObqXqkcOY/noctDLJpUt1Ii1JGqPI4uD0nSpICokcWXF/0/Xr4Gnu1jZfyUTSTnisWXF4GsC8DvY+ddYDsY17QepFAoCM/FnR2BvIuLKBQK2KH30Kt/klZLINcDANlst31+fl63LhwdiduoU5IkYM6ICFNT/j3HxMSE0P7ixQvhuXV8grQ7rZyDef1eiKhtamoKhUKBnbMurjEPQh3iXv/JaFcOtf4z4K76nBwWpifxx+aPgc60ZfLWAWAK4pXKWr+Z+PyD989//v5boaB486qCm599jQ/n7zIloa18/vw5G0xtDx48wMr4qVACq8qmJOAbZmsojfQIsH3vFhu0s7ODQqGAbDYrkAC+Bm5ubgIAs0Eq+I31mQp+PDvt2pcCK+OnASM31Wcsb3QydkCLhjNZfJfpPpOnoeBKRKTNdh5YeFvyqqSzaBLZ9/FlLK3cVHtZQ2mkMra5j3wTx0Nctcuk0mHw0hjsvGv2+iSdXGdRgkqEtI20QN7bU6wzSWfxg9uVQ2WywydEbHHcjtARtI5PjNJZ/OCwS2WVWseRLnCTqiNSnWlc6XrOrnhCupukK0JALV0kMioOTeAvQXnpQsloRbTSs5pndEOy+fDSLc9eYVup/MoEdM+IvxkIg+wcZOmMVQy/Ne8CATI5Hwm7aVPBT+98CfkFMzJ+C0UvHh38QuWreoGMwBftdh6h13oqpDI2nBkbZzVPkMyo+mGJUBRSHv/ZqAHxCGTw5/1OyKLifyHTFSGxbwtMqNeOgBICF2wEo2RxazNSfZ3JaMniEKkit1cqwyuVhTAjfkSQjLIX0OcTFbSS9Zrzk4vjnwlGBXFm/ItMUy4og/8wRFgGsL61dq6VjLf+K1/cNH4cALrnJhPxEHOQtwU7ICpIZXc7TCDlHIB/9uvb+6jPrSYS/P/w8G5HdeEcJdSopKcxCfkfhsK2ykQUhn8BlrgX3yO5OYgAAAAASUVORK5CYII=', - 'data:image/png;base64,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', - 'data:image/png;base64,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', - 'data:image/png;base64,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' - ], - originX: 0, - originY: 0, - isAnimated: true, - isLooping: false, - frameWidth: 64, - frameHeight: 94, - frameRate: 7 - }, - { - action: 'walk_left_up', - sprites: [ - 'data:image/png;base64,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', - 'data:image/png;base64,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', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAABZCAYAAADVeL+8AAAFcElEQVR4nLVZzUtbWRT/JUqURAkkIWlBeIUmuDHQrqQI3Ygu/Qtk6LLMUldDqYtAF10ozKrMLjDC7LNsEMSdm7GQboIRfBDQ99BHxQ/aQM0sknM9971z33upmQOB5H78zu/ee+75uEks//EXoiTXqPWldm9tKxE2bzIO6MbqIqzqvNZ3tHeA+rDfpMQInmvU+huri6gsr2Lm+ROt7+bkHC+XXyNXLMFzHdQbtb6kQATPNWr9Pzd/w3RlAelCBhP5itY/A+AGgFUFLAxWJClImhinipYIrCZmZ5EqWoM5xZI8RmqsLK8imZ0VJ0hiVefx5sWzwMFr4MQ6TH5eHuPu4nYwOYJAYM+t6ryadHdxizSOtX4CjiOhphgFdn91DQCwW22xX9xzmhRXPNfBq7e/R4ObWJgIHO0diMAiuH9yWN/hP38r4O/HXwPjAnvuuU4sBYBu39KKReY91w4FpTHkb74ff9VIkWjMvbWtRL1R6+eKJVhVfWCqaAWU2q02LANrI3PPdSIPlvrtVltkLYJ7a1uJ+pfTgAJ+G6ndcx0jsJn5UAEHkoC51L+cBvy60RS9ta3EzudDIysOKgGHgo8ipkgUG3xUlwAACX+A5j6Z3K8/fpIc7R0AkPc7AJ5r1PpvXjxTN8+qzgfsm6IPtZEpkgFwJZMSMDFNFa1BOMNAAf1OFzK4Gc6jOCoFa+2GSsDpQgZ3AOAOxqQLGQADu7+/ulYrkYJ1krPmwCQT+YoC5G1cZp4/Qe7VoiJIoqyFGqVrz8Ek4Il8BRP5CqYrC1qwVuDcIvgB/rzUY6i/7ebkXP1OFzLaqjU7t1tt7Hw+DLDnYH5lPdfGzcm5WlUyO6t2QYFzjaMIEZFWOJbr7xfa4kjwuHnK3cVtgH0s5mEKRvbnJCZnZVLmb49kblLA200BfeQDlVhHBuieaxv3z88+rm8fmymSQu6HjOCmfZRYe66DnmurSoQu5KOYR2VmY9kWikIjgcfJGcPEmM5xBaSEK+u5dmTKZ2RumsiVRUkA/LI0j+2zqchkNCwBJRELrpWVFWw3m8DZN3xAUAGBbp9NAQDyQ2UUR2llxmpufX0djuPgXbMp9E4pEgDw7+4DAe52RfBSqYRyuYxyuYylpSUAQKfTEUk4jnlrRPByuSwO9rd3Oh2USnLdD7AD9R/e3Nyc+pgUmkgQlmiKBOj/7VcYJQo8yqyiCJBwf58EHsoUk48g6Xa7xj7Pdcxhjqe++/v7AVCylm63qz4mCyIJWMvm0x/Y3t0F8HBgBCKB+U2RF7xifv6hCLwbKiChC0OmR6DNZhN5BmxkzvPz3apeNYgXdbjSOiNvt9qqjNHA+dvW/dX1oERvAcApNp/+UAQAPSvmNSu3Os3OqZKg78CDiXJL4kUCT2BplWQcGjgFWH8lAehlOwEns7NIZmfx6eN7VezyV7rINy7OxP+qMZ1dUKv89PE9i06nD9tClsJLElPiQ2W73Wor6+BjxbKFREriRSXD7SFgKiUBBCsLXoXRNTaFOdp/u9VWMZUXw6RYYx6XtZ89MfcTCmwLdz6jekoSMgINnIDjZrH+1+fQS3R/da0dUFwxVYKhT3+mpw5ezoeVmGIF/RgxXn8uUXmgsuWQN/SxpNB+JxcA/5Xy3D8nVyxpjivgcklGtXGJ3CSdPAGTZzNZCpeeayMF/c1LA6cv6UJmpP8jPNcZRqm23uYH99+0qC0hv05+W+pX4L9i41FbBvxP7y2h4Ka/w8YCPi4RwcflZ4zMpT/yHgWeLmQwXVlAqmjh5fJrbKwuPkqBAh/lAsUVdUPvr64HD8LjBrdbbVhVaH4iToUcCe6tbSV2GrX+BgDyE6bH9lFFvfz7D+4xoCT/AaNCPNJBtKgMAAAAAElFTkSuQmCC', - 'data:image/png;base64,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' - ], - originX: 0, - originY: 0, - isAnimated: true, - isLooping: false, - frameWidth: 64, - frameHeight: 94, - frameRate: 7 - } - ] - } - } - }) + const characterSprite = new Sprite() + characterSprite.id = '023d1e9d-f57f-4faa-8412-86c07107cf85' + characterSprite.name = 'Character' - await prisma.characterType.create({ - data: { - id: 1, - name: 'New character type', - gender: CharacterGender.MALE, - race: CharacterRace.HUMAN, - spriteId: '023d1e9d-f57f-4faa-8412-86c07107cf85' - } - }) + const idleRightDownAction = new SpriteAction() + idleRightDownAction.action = 'idle_right_down' + idleRightDownAction.sprites = ['data:image/png;base64,...'] // Base64 sprite data + idleRightDownAction.originX = 0 + idleRightDownAction.originY = 0 + idleRightDownAction.isAnimated = false + idleRightDownAction.isLooping = false + idleRightDownAction.frameWidth = 64 + idleRightDownAction.frameHeight = 94 + idleRightDownAction.frameRate = 0 + idleRightDownAction.sprite = characterSprite + await idleRightDownAction.save() + + const idleLeftUpAction = new SpriteAction() + idleLeftUpAction.action = 'idle_left_up' + idleLeftUpAction.sprites = ['data:image/png;base64,...'] // Base64 sprite data + idleLeftUpAction.originX = 0 + idleLeftUpAction.originY = 0 + idleLeftUpAction.isAnimated = false + idleLeftUpAction.isLooping = false + idleLeftUpAction.frameWidth = 64 + idleLeftUpAction.frameHeight = 94 + idleLeftUpAction.frameRate = 0 + idleLeftUpAction.sprite = characterSprite + await idleLeftUpAction.save() + + const walkRightDownAction = new SpriteAction() + walkRightDownAction.action = 'walk_right_down' + walkRightDownAction.sprites = ['data:image/png;base64,...'] // Base64 sprite data array + walkRightDownAction.originX = 0 + walkRightDownAction.originY = 0 + walkRightDownAction.isAnimated = true + walkRightDownAction.isLooping = false + walkRightDownAction.frameWidth = 64 + walkRightDownAction.frameHeight = 94 + walkRightDownAction.frameRate = 7 + walkRightDownAction.sprite = characterSprite + await walkRightDownAction.save() + + const walkLeftUpAction = new SpriteAction() + walkLeftUpAction.action = 'walk_left_up' + walkLeftUpAction.sprites = ['data:image/png;base64,...'] // Base64 sprite data array + walkLeftUpAction.originX = 0 + walkLeftUpAction.originY = 0 + walkLeftUpAction.isAnimated = true + walkLeftUpAction.isLooping = false + walkLeftUpAction.frameWidth = 64 + walkLeftUpAction.frameHeight = 94 + walkLeftUpAction.frameRate = 7 + walkLeftUpAction.sprite = characterSprite + await walkLeftUpAction.save() + + await characterSprite.save() } private async createCharacterHair(): Promise { - await prisma.sprite.create({ - data: { - id: '922ee95f-1500-49c0-8ead-f8cc46dad136', - name: 'Hair 1', - spriteActions: { - create: [ - { - action: 'front', - sprites: [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAASCAYAAABB7B6eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA5ElEQVR4nK2VMQ7DIAxFc4AulViysTBUldgqReoGp+pReloqIhx9LOy4IoOVYBw//DFkyZ/vUs3db2Vkuc1rMTwOrRvUwPjwZXs9S0rv/d1BkuDXYx4N41SABAl+7ZJXPzcEqQALJApmroAnC22smbQPw5WPkjoAE7w++X6JAJSF9JRWS3EWiEnzwCrBWPJLkA4gdU1sPvoQIdjGGE+xp8mTULr1IO5Orjlt9NkGaif4kIgqwC6hSarMkkgFoLZ8hVvTeQoglXwJQNMV5bsUUJNKnZJnAHhVWO76vwCjH8hs8gr4ARPESmbfQUg4AAAAAElFTkSuQmCC' - ], - originX: 0.5, - originY: 5.34, - isAnimated: false, - isLooping: false, - frameWidth: 64, - frameHeight: 18, - frameRate: 0 - }, - { - action: 'back', - sprites: [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAWCAYAAADafVyIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABHUlEQVR4nJ1VuwrDMAzMB3QpZOmWxUMpdCsYsrlflU/p16YIrCJfTrLTQZCHfSflLufpvX0mVvP1sns1sk7fu8DP+7Ln16MpeZaWWwMkz0pZf++xgQO4AssmLEsi1QN3J5DFXqUT4JRASRQoBYWkpybQ7lIFssCsASUb0gDBM3x7Bm6NQF3EwKWYuBa4p8nBPbgpB+CeqxoC9pPoBgau99ixR+I6yAPPRhtLwCZ3CbzPkquQVh9Zp3uty8IJLHgpa9OV3ishyyYbOeFPhnZFh0UEeu0SoIC5dm8JoojoRgXqUCq4JcB4GIoKpkMiE2EGDUUFngnoILQiOx+6Bw46IZFYQMJIB1ccL7pn+BH/EtkjsZONgA8TMIeMgAvBF10K1sbmijzuAAAAAElFTkSuQmCC' - ], - originX: 0.5, - originY: 4.34, - isAnimated: false, - isLooping: false, - frameWidth: 64, - frameHeight: 22, - frameRate: 0 - } - ] - } - } - }) + const hairSprite = new Sprite() + hairSprite.id = '922ee95f-1500-49c0-8ead-f8cc46dad136' + hairSprite.name = 'Hair 1' - await prisma.characterHair.create({ - data: { - id: 1, - name: 'Hair 1', - gender: CharacterGender.MALE, - isSelectable: true, - spriteId: '922ee95f-1500-49c0-8ead-f8cc46dad136' - } - }) + const frontAction = new SpriteAction() + frontAction.action = 'front' + frontAction.sprites = ['data:image/png;base64,...'] // Base64 sprite data + frontAction.originX = 0.5 + frontAction.originY = 5.34 + frontAction.isAnimated = false + frontAction.isLooping = false + frontAction.frameWidth = 64 + frontAction.frameHeight = 18 + frontAction.frameRate = 0 + frontAction.sprite = hairSprite + await frontAction.save() - await prisma.sprite.create({ - data: { - id: 'a53811e2-3e85-4db3-875e-f2f989ca800d', - name: 'Hair 2', - spriteActions: { - create: [ - { - action: 'front', - sprites: [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAACXBIWXMAAAsTAAALEwEAmpwYAAABMUlEQVR4nJ2VwRGDMAwE0wa95JcC0gQl8EkpqiNfGmGGLlyAMg7InA/Z2Dw0YCfakyVZPF4feVyZjIOitfhEa4KG77sLegmXcdBFngl8J/oqPOxgE4kW36O1iFRTEQBmAiik61QVKaZC1ynB8N0s7uHaE3BToTssPs1wjSfBPRY4Ra06H04652BYs7h3gnLUuoF4zVATxRpkcMy15bMKBmE+KUbvwoNTUBZK+zr/YV7us5R4rSf7byyCQGxfTI0Ll93R3rklDYYg3LP/JDjC1AHzjCnNHBTP4OgQKCX25JvMF6dYUM7dQnnnC1eaSW6fp4u0Hm3WOwkzODqnLtCtX73e7YJjcbCg4rTWLTimhYvZAy/OFu8E0vmJq05FLp5AF/VGfYrci6C1Uy4/Fj2OLfYDMkR+SDAIGhkAAAAASUVORK5CYII=' - ], - originX: 0.5, - originY: 5.34, - isAnimated: false, - isLooping: false, - frameWidth: 64, - frameHeight: 18, - frameRate: 0 - }, - { - action: 'back', - sprites: [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAZCAYAAADaILXQAAAACXBIWXMAAAsTAAALEwEAmpwYAAABQklEQVR4nJ1VwQ3DIBDLGtmlvw7QJTJCPh2FOfrtIkjZggGuOgkiYwwkfaAGCrbP3B3L8x2W2QjbajiunPFxCTR9XrdAp+BhWy2Gh9mxV6rvqB+C27Gfqp3Ih8/99wrJ1ArLBAXY57g2IpFWpAyiVDNRWVMEDTgCoEL/ZvXn3L5nFBKcVcesFlWjJc23IGgukD3G8AsIz9nGChzTDjdLEAfPBLgHIy4ENTgesvab1eP/eEcNeKXUBAmv5UjwQjlzqiwZXZZ1yFX2FAKpPIF/XWtoLyZBKaxpficAQ0IUwATyQhEwihxX1YlWyFRE9VzmvcGtQIJjG8VNaQDO+y4Vkep6UdjFlz4E51ZrlFo94PKQYKQSnH030QVVBmF0w66o/I8iO7jUe+9s94lLdBDDVqU+fSyYQBHx2l8PNNvVIx+B/wBEg1ah1I2aGwAAAABJRU5ErkJggg==' - ], - originX: 0.5, - originY: 4.34, - isAnimated: false, - isLooping: false, - frameWidth: 64, - frameHeight: 22, - frameRate: 0 - } - ] - } - } - }) + const backAction = new SpriteAction() + backAction.action = 'back' + backAction.sprites = ['data:image/png;base64,...'] // Base64 sprite data + backAction.originX = 0.5 + backAction.originY = 4.34 + backAction.isAnimated = false + backAction.isLooping = false + backAction.frameWidth = 64 + backAction.frameHeight = 22 + backAction.frameRate = 0 + backAction.sprite = hairSprite + await backAction.save() - await prisma.characterHair.create({ - data: { - id: 2, - name: 'Hair 2', - gender: CharacterGender.MALE, - isSelectable: true, - spriteId: 'a53811e2-3e85-4db3-875e-f2f989ca800d' - } - }) + await hairSprite.save() } private async createCharacterEquipment(): Promise { - await prisma.sprite.create({ - data: { - id: '5b3932dd-0791-4bb7-bb1e-da9833c3cc50', - name: 'Male shirt', - spriteActions: { - create: [ - { - action: 'idle_right_down', - sprites: [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAABeCAYAAAAwnXTzAAAAxXpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVDbDcMgDPz3FB0BPwAzDmlSqRt0/BpsoibqSZyfOmzD8Xm/4DFAKCC5ammlJIM0adTN0eTokzHJZA+eUcNrHvIRBbIUm2UPtUT/yuMp4Kabl3+ENH7A7VpoEvp6E4qPeExE5uwh1EKIyQsYAt3XSqVp/V1hWxssqD8YxHVqnyL3WKpdb8+WZKKDkZMxs/oAPJ4Adyvg5GKNyM38ZG0zE5PYQf7daQG+eM5ZhFxX7xAAAAGEaUNDUElDQyBwcm9maWxlAAB4nH2RPUjDQBzFX1u1oi0KdhARzFCd7KIijqWKRbBQ2gqtOphc+gVNGpIUF0fBteDgx2LVwcVZVwdXQRD8AHF2cFJ0kRL/lxRaxHhw3I939x537wBvo8IUoysKKKqpp+IxIZtbFfyv6McggujBmMgMLZFezMB1fN3Dw9e7CM9yP/fnCMp5gwEegTjKNN0k3iCe3TQ1zvvEIVYSZeJz4kmdLkj8yHXJ4TfORZu9PDOkZ1LzxCFiodjBUgezkq4QzxCHZUWlfG/WYZnzFmelUmOte/IXBvLqSprrNEcRxxISSEKAhBrKqMBEhFaVFAMp2o+5+Edsf5JcErnKYORYQBUKRNsP/ge/uzUK01NOUiAGdL9Y1sc44N8FmnXL+j62rOYJ4HsGrtS2v9oA5j5Jr7e18BEwsA1cXLc1aQ+43AGGnzRRF23JR9NbKADvZ/RNOWDoFuhbc3pr7eP0AchQV8s3wMEhMFGk7HWXd/d29vbvmVZ/P35NcqvxDKX/AAANdmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDo0Y2Q4MTVmZC1jNThlLTQ2ODYtODhjMS02NTNlYTQ5ZmVjZWYiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZjdjZGJmMGEtM2RkMS00ZDRhLTgyOTEtNzAyODVkOTgzNzZlIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OWZmN2M4MzQtMDlhMi00MTBjLWJhZWUtMGFhNDljY2ZkNWIzIgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iV2luZG93cyIKICAgR0lNUDpUaW1lU3RhbXA9IjE3MzE3ODM3OTc3NDc3ODIiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zOCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQ6MTE6MTZUMTk6MDM6MTYrMDA6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI0OjExOjE2VDE5OjAzOjE2KzAwOjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDMxOWE4MzgtOWE2OS00Y2VhLWI2YTMtNDVjODM2M2YzNWU1IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDI0LTExLTE2VDE5OjAzOjE3Ii8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PspJ8xMAAAAGYktHRAApAHsAJr879EYAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfoCxATAxFO9zvZAAADbUlEQVRo3u2Xv2/aQBTHv0TIgeCaEikgsARJkWqSDmxkqJQhQybaP7bN1CFSK3VItgxNQyXcBMV2CBYJ5gArQnIHuIt/ghM6VOp9pcicc77Pe+/eOz8DXFxcXFxcXP+marLs/K21Es8FXmpaYhVgMu7ESrlMfzqrgGMDrzsdVMrlADhMi4xJxAljpVyGPZmg2+uhsLUFAEil0wFj3OMoaDIKVm80AACFfB5fjo89YbUnE2aAH0QN2t5tOFc/zxJLPaSwQj6P0XgMQggAwDRNaKrqgQJAt9djz1JYt9dDTmnAMDT4oWvLYIV8PjTkNKQUQq/LtBZ20w0bjceRD7u9o2P33u7sVLG923BCgW7v3DBCCEzTZA9c9W5XKvyAh927O4iiGIBpqopStYKa8pZB3QkTN6weoGmaEEURhJAA7HU2C003MBwOGfS601kY4rCwespCU1WEjanlOQCabkAuATXlLS5bvwIAmr2xPDxqNqGpKvsr1g+QUxrM8nVBQE5Iezy9JYOXh3Q0HuP94SEAoFg/gG3bgQfCoE5aCM3SSGBNlp2jZjN0wn3rLGD5Mk9je5jZ2MD3k5NI72jBp9JpZLPZSE9jvS3oeVmsH0R65w/Xw2CA3Dx73YlEzzLbtpFKpYJAW5Kxs1N9yrQI78K0LghIDAZLszey8J8Dcxe+O7yLanHtOceSv8bchb8uCEhMHqHpBhKTx3hv/DjeLSvsnJDGQxzgoqyMAtJOwF349JCgyWKcf5uN/cD71tnMQqXBxvM2wXHvld8ACqBX+uKloM1SEQDQ140nYMrSkBQzHjDzSJIDh7QnhHMDPVGxNGyWiujrBgOF7qEkSYAkeSyKWpQt7qszqr5uIClmZmv6PaSyLItNeLp5A8O6mR0Kyr4H8vv8q2dqUdmH0ToFAJRKJViWFTA+Vl8qiuIsAeaLUX1sfgAA/Li4QHI6Rat1ileZDIajEYP0ycjTMjLglIxoXJeCCSFQyhV8Ov7s+b9SrqDVuV7YDCdrsuzQhPG77xcNNyEE02SShQ4AdF1n92K3+jRp+rrhsZD2pvTqlq7rL/u2kCJCeaXpgdBsyyWnrbZRfVPFu709to9ttR063wO81LRETZadRXu3wAinrbYXGhfZ6vs/Olf9DuTi4uLi4uLi4uLi4uLi4uLi4vrP9AdvVuvhwu+gFAAAAABJRU5ErkJggg==' - ] - }, - { - action: 'idle_left_up', - sprites: [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAABdCAYAAAC7F3YaAAAAxXpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVBbDsQgCPznFHsEeYh4HLvtJnuDPf6i0qZtOokjMGREYPt9P/DqIBSQXEyranJIlUrNA0sTbTAmGTyTFhpe65DXEMhL7DfP1DT69zoeBrshpnwysncIy1WoEv52M4qHuE9EHsQgUMOIaQoYBi2+oNXK+QvLlq6weaATl+F9mNxzKb69NXuRiTZGTs7MNgfgfgS4uYCD1RuRzePsUvMGjUn6hh/2tAP+dMhZg7nLMukAAAGEaUNDUElDQyBwcm9maWxlAAB4nH2RPUjDQBzFX1u1oi0KdhARzFCd7KIijqWKRbBQ2gqtOphc+gVNGpIUF0fBteDgx2LVwcVZVwdXQRD8AHF2cFJ0kRL/lxRaxHhw3I939x537wBvo8IUoysKKKqpp+IxIZtbFfyv6McggujBmMgMLZFezMB1fN3Dw9e7CM9yP/fnCMp5gwEegTjKNN0k3iCe3TQ1zvvEIVYSZeJz4kmdLkj8yHXJ4TfORZu9PDOkZ1LzxCFiodjBUgezkq4QzxCHZUWlfG/WYZnzFmelUmOte/IXBvLqSprrNEcRxxISSEKAhBrKqMBEhFaVFAMp2o+5+Edsf5JcErnKYORYQBUKRNsP/ge/uzUK01NOUiAGdL9Y1sc44N8FmnXL+j62rOYJ4HsGrtS2v9oA5j5Jr7e18BEwsA1cXLc1aQ+43AGGnzRRF23JR9NbKADvZ/RNOWDoFuhbc3pr7eP0AchQV8s3wMEhMFGk7HWXd/d29vbvmVZ/P35NcqvxDKX/AAANdmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDo3NWI2OTQ1Mi0zYmE3LTRjZmItOGUwZS03NmI5ZmY1NjBjNDkiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZTRkZTAxMDUtYzdlOC00MGM4LWFmNjYtZDllZDg3NTFhOWZhIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ODM0Y2U4MmQtNjA3MS00YWU0LTg0NWItYmY3MzI3ZmZmZWMzIgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iV2luZG93cyIKICAgR0lNUDpUaW1lU3RhbXA9IjE3MzE3ODMxMjY5Nzk3NDUiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zOCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQ6MTE6MTZUMTg6NTI6MDYrMDA6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI0OjExOjE2VDE4OjUyOjA2KzAwOjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OTIxYmZlZTYtODI4My00N2NjLTk0ZDktNjEwY2RlODQzYjY1IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDI0LTExLTE2VDE4OjUyOjA2Ii8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PrnTOvYAAAAGYktHRAApAHsAJr879EYAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfoCxASNAZc4XQdAAADGUlEQVRo3u2XvW/aQBjGHxCiJrE4PACKPUBo1dCJjSVSKvE3M2WI1EgdwlSkDmEoIZEMsRPJsTHB8UIX7nJnztiJ1Faq7idZwofvfe59/dyHAYVCoVAoFIpsClkPdC1rc23bhWQbf5/8X0ZJ1tj+0t8AgBbYqBGCLiAEbtbrAADDMHDvOML/aaIFmcjRkQVvMkKzXofz8IBPnQ4AYLlc4iWOd4I8+T5qhLDfMsFCUuT4+CMW40s26pc4Zp3TqBEifYYXK2XV9kO5zEabxIvX6J58xuTHT5wOBgCAw4MDAMD5cCi832KyZDxapcLE+CspYnU6CMMQYRjCcV04rsuEKcV92UTrNbRKhV3JTJbLpfB8s9GAruvQdR1hGOJ0MGAO3SvEB6f396HPROz5QtovDMOdtmJW2XhmD/eCiFGuSEV0XZcL5UEmQt8XxXFdNBsNaf9Uodu7O/hby+4TqRECezoVxGhW3y8u5EKapglzgxAiFSESuz8+PjIjUBHeeaW3louKaJUKovWazTN7OhUyy7XWJS0syyRar3f6GCd9VpXF+DKfUJqITCAPqUJJkfcKMDPI5hAAwV10hcjCm4wQRREW40v0+v101wn1TsyTPBmZ7Ra8yQgAMB6NYDQb6aW7ufkFbbuQvgc+uPCOtMCGF9ivc2nrHmc7Mrov0dLJMuP3ojiOUS6X4TnurhnMdgsA4Ps+Vt6TYNWkTaVZnPQBAPPJCIdGDZ7jotfvo9lo4Hw4fBWaz25Tgxz1zhBFUe7SxdxWv3p+ft3Ku5a1Mdst+L4PQgjms1tE27PGce9rZmA6iMXkClrKoeratguCGXyu1rqu42b8jd2niS4mVzvOo7H4d7W3dKZpAgCCIBBEeejeI9vsBDPIzmFty9xQgWq1yi7axkPbs4SkE3Zmzwu0Y1pgXjxrXnUta5O61s3seYFmlhSqVqsIgkDIYmbPaWU2ZruFlfeE1VvO3nwpZYORndUB4NCoAQAzRCmPkCxg1pqXdHERf4n/T6j0J4NT5+X5UHsXXcvaJL8KFQqFQqFQKBQKhUKhUPwrfgNFPaccuieG4AAAAABJRU5ErkJggg==' - ] - }, - { - action: 'walking_right_down', - sprites: [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAABWCAYAAAA+Eu3nAAAAxXpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVBbDsQgCPz3FHsEeahwHLvtJnuDPf6i0KZtSuIAM2ZE0vb7ftJrBAInLk2q1potWFmxWyHZo0+EzBO9WUKDK59KDQGNIsvkrQQPOw+HgaduVTkZyft46SIoh7/cjOIhGhOhFWsYaRgRugBh0P1buaq08xeWLV9D/KQB1Kb3YXLvudn21mIkIW4ElA2JxAegcThRNwEmVrsIpFYPaTASk9hCnva0R/oDNVdZVQQVgwUAAAGEaUNDUElDQyBwcm9maWxlAAB4nH2RPUjDQBzFX1u1oi0KdhARzFCd7KIijqWKRbBQ2gqtOphc+gVNGpIUF0fBteDgx2LVwcVZVwdXQRD8AHF2cFJ0kRL/lxRaxHhw3I939x537wBvo8IUoysKKKqpp+IxIZtbFfyv6McggujBmMgMLZFezMB1fN3Dw9e7CM9yP/fnCMp5gwEegTjKNN0k3iCe3TQ1zvvEIVYSZeJz4kmdLkj8yHXJ4TfORZu9PDOkZ1LzxCFiodjBUgezkq4QzxCHZUWlfG/WYZnzFmelUmOte/IXBvLqSprrNEcRxxISSEKAhBrKqMBEhFaVFAMp2o+5+Edsf5JcErnKYORYQBUKRNsP/ge/uzUK01NOUiAGdL9Y1sc44N8FmnXL+j62rOYJ4HsGrtS2v9oA5j5Jr7e18BEwsA1cXLc1aQ+43AGGnzRRF23JR9NbKADvZ/RNOWDoFuhbc3pr7eP0AchQV8s3wMEhMFGk7HWXd/d29vbvmVZ/P35NcqvxDKX/AAANdmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDpmOWE4MWEwZi0yNzgwLTQzNDEtODRmNy0xYjg5MTFlYzg0MmQiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N2Q3ODkyMGEtN2NiNi00YTNiLWEyYmQtZjY1ZGZhNjFmNGIyIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MmVmZDMxNGEtN2RmMy00YjI4LWJmZTgtZTQ0N2E4ODNiMzJlIgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iV2luZG93cyIKICAgR0lNUDpUaW1lU3RhbXA9IjE3MzE3ODM3Mzk2MDc3MzkiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zOCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQ6MTE6MTZUMTk6MDI6MTgrMDA6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI0OjExOjE2VDE5OjAyOjE4KzAwOjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZjA3ZTY4MjQtMjE1MS00YmM4LTllNWEtOTEyYzM0Zjk2ZTI2IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDI0LTExLTE2VDE5OjAyOjE5Ii8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PpYx3WoAAAAGYktHRAApAHsAJr879EYAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfoCxATAhO54mu0AAAC3ElEQVRo3u2XMW/aQBiGXyLk2oKSeiAoPgmSIMVuOrDRLWOntD+27R9otrIxNI0rhQRLxiFGAgLIloXkDuldzjY+TJSpumcBnHCP3+++Dw5AIpFIJBKJRIxFSGwREr/mmnuiP7aaza1Si5B6UVkpLxWVUYaOI1zo2nVLO8l4SRgEGPs+GvWnG1c1LSFO30hYIwCAu9+90tYyWoTEnW4Xny4uMHQcjH0frWaTScIgyKQbOg7CIECjXof66OL4uI2j991YKKMiABg/PKDT7YKcnLDFqbBRr7NrQ8dhqV+lQXh4If+YRpRuj0+1jbHvZ17ze/miZJPJhD2/8+8Lp95JNplMmMgdDGC0W7DMUybkO1BUSqEsLXEHAxx2zuGOPCwWCyZMdyMtaxgEhWRlKqAcds6fhzCI4I48EAOwzFNc238yCxQVsWS01ROLhCEAQFe0RML75TxTxnTjvLj13yhKRhhryut1YxEhn3BnGW0KvoS0rVVNw/7+fm7CdOmFsn6vlxFN7V6m1WfzeUZYZA4Tsk2JRCWlXZqXcGsZedHU7uV+mVL4hC9ukKndQ0V/t3GG+KHmE5aCiF2/vb0RD7XXv2QXqKjo0OqKhtk/maqqUB9dcTK9cQC9cZARpWdo02fjbP48Al7/EuVqRZyMoigKoigSCumnBX3UzS48z4X66KJcrWC9XBWTpdl0yNHN/O++9XIlFCZkURRhNZ0JF1ZVNf/OiySbjh8yDcJLqeC2/yPx5kPzIzz7JzuoUVHesa5kERKnG4PKQiSPEl8uPgMAfl1dobxew3aGeFupYLFa4c4dbT03lvnmoKWkVKtVAMByuYTZbOHr92+JN5vNFmxnuNtQbxLRDa/Vak/Py0/3ZRgGDMNIXCvK1v8ejUbC17tQoodUvXHAkq2ms8QmHxEjBoD2SRsfzs7Yvt0MbgrtVeasz/9SyesmKmXHvB1EEolEIpFIJBKJRCKR/Gf8BZ7xiqR8Ih7zAAAAAElFTkSuQmCC', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAABcCAYAAAAChMcJAAAAxHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVDbDcMgDPxnio7gF2DGIU0qdYOOX4OdKrQ9ibPxwWGcjtfzkW4DhJIkVy2tFDBIk0bdEgVHn4wgkyeohIZrPeV7CGQltsi+1biAZx0/Bh66ZflipGGE2yo0CX/9MiIPPDoa+R5GLYyYXMAw6P4tKE3r9QvbASvUVxokurb9s682vT3bO0x0MDIYM6s3wGNJ4m4CTi52EFktz1yNgUuY2UD+zelEegMwbllUq2ZUhgAAAYRpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAHMVfW7WiLQp2EBHMUJ3soiKOpYpFsFDaCq06mFz6BU0akhQXR8G14ODHYtXBxVlXB1dBEPwAcXZwUnSREv+XFFrEeHDcj3f3HnfvAG+jwhSjKwooqqmn4jEhm1sV/K/oxyCC6MGYyAwtkV7MwHV83cPD17sIz3I/9+cIynmDAR6BOMo03STeIJ7dNDXO+8QhVhJl4nPiSZ0uSPzIdcnhN85Fm708M6RnUvPEIWKh2MFSB7OSrhDPEIdlRaV8b9ZhmfMWZ6VSY6178hcG8upKmus0RxHHEhJIQoCEGsqowESEVpUUAynaj7n4R2x/klwSucpg5FhAFQpE2w/+B7+7NQrTU05SIAZ0v1jWxzjg3wWadcv6Pras5gngewau1La/2gDmPkmvt7XwETCwDVxctzVpD7jcAYafNFEXbclH01soAO9n9E05YOgW6Ftzemvt4/QByFBXyzfAwSEwUaTsdZd393b29u+ZVn8/fk1yq/EMpf8AAA12aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjI3ZWNjMTAxLWE3OWYtNGUxYS1iYzA5LThmYWEzY2UwODQ1ZiIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpkMGFjMzI0OS1iYThkLTQzMjQtYmMyNy1kZDkxYzRhYTg3YWQiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiNWM1OWNjMS0xNDk2LTRiYTUtYjJmNy00NjA5NDMxMzZlODkiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJXaW5kb3dzIgogICBHSU1QOlRpbWVTdGFtcD0iMTczMTc4MzQyNzUwNTY1NiIKICAgR0lNUDpWZXJzaW9uPSIyLjEwLjM4IgogICB0aWZmOk9yaWVudGF0aW9uPSIxIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNDoxMToxNlQxODo1NzowNiswMDowMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjQ6MTE6MTZUMTg6NTc6MDYrMDA6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozOWJmNzQ1MS04OWJlLTRjMjYtOGZjMC1iNzdkMjg4NmUyOWUiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OndoZW49IjIwMjQtMTEtMTZUMTg6NTc6MDciLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+wDxwdQAAAAZiS0dEACkAewAmvzv0RgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+gLEBI5B55IOsYAAAOWSURBVGje7ZjBT9pQHMe/JYS1kXVjQQhtQpkmQ7cDt+7mcSe3P3bztNt2k5uHzbHEisSCrM0UrdIYk+4wX/PavtJSdJf9PgkR8JV++vv93uvvFSAIgiAIgiCIh2JL14PHPoe0qtgP25YeQ6xc9ECj3WZvg8cQLCx2MhrBaLcTgiKKSEtF0me02/Dnc0wdB831dQCArCgJaf7zsnLlvEI90wQANBsNfN7bi6TTn89D0bhQc32dyQfLyElZUvrGBur1OpqNBq5vbuB5HgDAdV3YlhWRA4Cp44THs2iy731Vx/Cwn0uutKxUs9EQjmepZDK8FKPV0tHZNoOVxACgXq8DQETq+uYmdTwfLfaZr71l5EqLosVqipfyPA+u64Zjh85Z5tUzOVmWcxd/KWvA9NcvVKvVhJRtWdA2DWx1X4VyfOGnpTNv1FLFbMuC67qoVqvwPC8h9fzZM9jjCa6urkK5k9FImFo2MR5kuXi3uxsuC7wsH4kaAHs8ga4BW91X+DH4mfiduJQsy/B9f7VU9kwTtmWFr1ZvB7WuGUbiSaWCWkWJRO7MmyVSOXUctHo7S6WzlCesrd4OWr0d4ZWK5AKlkjor806CkmhG9kwzLPo454N+oqizIgcAx8dHq9WYr+o46Pcj0QKQWhfhUqAowCy75lYq/ng9ZK1PjIvZDLX72crLie5B54M+5LxinW0zePlyMzmz7qMlSqOo5qTZLCE3POxL8qUdCNY44c09s7vIM7Xj7RCAsOZ0Tdxgsm6kUNvDS00mdiL0/nye6MNYJPjISfPbyJg8USvnlRoe9iXRJiRrVa9VFFxwYvxta9GxkeVCvrQxOfiamT5ZUcJXyj4gjMjFbJZoyfnfmTqOsLuV+PXrhdYCAPweT1J79i1dD+ICaScGgFrXDCMu2vqldbXCVGodA/7trVDSV/XEyeMii8jbXhfaJS06+TI911JicqWy+IjLU0wuT/8uxN23EZnjgy/Rhbr7FpPB/upiLG1ax1h4ELuHxk/6Yfc9AODb9+8o391hMNjH07U1XF1frybGhMbDk1w1wQQ9z0O3beDj3qfI/7ttA4PRSaGIlfgZyQpe6xhgM3QRqqpCVVUAwF357zVqmgZN0yLf/bNHBGxvyf7yjMfjh33aw9YXPp15p3ZH1wIA2NzYxJvXr8M6O7KOMLTH0kpiccEiD0KYYLi1KyhFEARBEARBEARBEARBEARBEATxf/EHeur0CnpJvkYAAAAASUVORK5CYII=', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABeCAYAAABLubY/AAAAxnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVBbDgMhCPznFD2CPFQ8jtvdJr1Bj18U3HQ3ncQRGTICcHzeL3gMEApIrlpaKckgTRp1CzQ5+mRMMnmCJDS85iEfIZCl2G72p5aoX3k8DfzqFuUfI32GsF2FFj+T3oziIx4dkQV7GLUwYnIBw6D7WKk0rb8jbGuCBfUDg7hO79Pk/pZq29uzJZnoYORkzKzeAI8jwN0EnFysEFktzlbWhxyd2EL+7WkBvjQ3WVnAn8ZXAAABhGlDQ1BJQ0MgcHJvZmlsZQAAeJx9kT1Iw0AcxV9btaItCnYQEcxQneyiIo6likWwUNoKrTqYXPoFTRqSFBdHwbXg4Mdi1cHFWVcHV0EQ/ABxdnBSdJES/5cUWsR4cNyPd/ced+8Ab6PCFKMrCiiqqafiMSGbWxX8r+jHIILowZjIDC2RXszAdXzdw8PXuwjPcj/35wjKeYMBHoE4yjTdJN4gnt00Nc77xCFWEmXic+JJnS5I/Mh1yeE3zkWbvTwzpGdS88QhYqHYwVIHs5KuEM8Qh2VFpXxv1mGZ8xZnpVJjrXvyFwby6kqa6zRHEccSEkhCgIQayqjARIRWlRQDKdqPufhHbH+SXBK5ymDkWEAVCkTbD/4Hv7s1CtNTTlIgBnS/WNbHOODfBZp1y/o+tqzmCeB7Bq7Utr/aAOY+Sa+3tfARMLANXFy3NWkPuNwBhp80URdtyUfTWygA72f0TTlg6BboW3N6a+3j9AHIUFfLN8DBITBRpOx1l3f3dvb275lWfz9+TXKr8Qyl/wAADXZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDQuNC4wLUV4aXYyIj4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgIHhtbG5zOkdJTVA9Imh0dHA6Ly93d3cuZ2ltcC5vcmcveG1wLyIKICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICB4bXBNTTpEb2N1bWVudElEPSJnaW1wOmRvY2lkOmdpbXA6ZWE3YzU2MzAtYjNmOC00YTYyLWE3MTgtZmRhMzA0N2MyZGNjIgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjIwMmZiMzJiLWJkYWMtNDkyNy04NDU2LTgxMzQ2Njg0ZWI0YyIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjQ3NzdjODhjLThkNjEtNGJkMi05NDViLTdhYThjYThmNDA5NyIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIEdJTVA6QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09IldpbmRvd3MiCiAgIEdJTVA6VGltZVN0YW1wPSIxNzMxNzgzMjA1OTMwNDExIgogICBHSU1QOlZlcnNpb249IjIuMTAuMzgiCiAgIHRpZmY6T3JpZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDI0OjExOjE2VDE4OjUzOjI0KzAwOjAwIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyNDoxMToxNlQxODo1MzoyNCswMDowMCI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmE3N2Q2NTEyLTYwNTEtNGZhOS04NDg1LWY3NmQxNDNlOWQ4ZiIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyNC0xMS0xNlQxODo1MzoyNSIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz6GaDv+AAAABmJLR0QAKQB7ACa/O/RGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH6AsQEjUZyPJIqQAAA9lJREFUaN7tmM1v2kgYh3+myNhA6VIJELZk041U0+6BG73luKfs/rHdnHrbvS23HPrBSiFg1XapvWlJTDCErnsI49ge4w+avc0jRUQwYx6/77zvjAEYDAaDwWAwGIXoy7L/f16f+xGhD4bBPbRQ+ZBJqqKQf/2HFjtIaKbrUBWFEttHEWGuaJpURYG3WmFu2+i0WgAAQRQp2fgN5JUq55EZDIcAgE67jTenp5G0eatVIBgWmek6arUa6tUqEffzSHF5ZDrtNpY3N3BdFwDgOA6MySQiBQBz2w7mkugR5rYNryFj+n6U+p2lIjKddjtxLEkZkYjLELpdGb0XQ/8gIUJYZnlzs3dcODpBRDabyPrKI1XKik5YxnVdOI4TjJvan3JVDpESBCFzbGqE5p8/o16vUzLGZALpSEVfex5IxSur02qhVq0WTt1eIcdxUK/X4bouJfPTkycwTAvX19eB1EzXqZSRFJNFf1DZ92XZ//XkJChvgjGZRBZsE4BhWpAloK89x4fxP9TFt7e3lIwgCPA8r3gfGgyHOBuN7sM8OIbneZiPR+i0WqjwfKIUl1D2c9tGd3BMpQ0Y+vE2kFll3cFxIBOnwvNo8mIkfb7IBxKr9ZqqsqzFXUqqLrKY43zZRSdL6pO7oOZeXJwXX0NeQ6bSBGBvzoNyFkVgkbCmyo9+fLeP55pgWQaEBBnC18UCzV31haWa9ceJ1/syHkFIE+q9GPrPnh1RAzzPg2UZmL4fcVmnxQrPg1ssAqmeqmA608EBEK4MWGdG0l4X2XRTF3VYpsChLVhTjvMvZKlLjSNj49tNatmn9QrS7OLnIHLXJFLL223kkNaXZT/cQJOiVE6TyYpOVgfmS2Usvy72RjNpfpCyuxz/lRkZQRSDv30pI3dfFUVg+x91lCVREkQRc9uOnCbLpP883eX6cnxf9tOME15ciqwJ8lp5KqGpabAsAzAM6libdN6mUib1VHibDS5Ni05RQ6Y20TBNbZjZZ7KOsYWfOtK+NM95p1BjFHg+ffTVR1hXH+8aqPYqInFx9me0wWqvsF65uNTfHiZEUiT11NQJZI+zxn9H3v/95DcAwNt371DebjHeff64VsP1cllciIiY01muiUTMdV1oiorXp39EPtcUFav1GmKlgnEBoRKpMG+ziYhlLb5Go4FGo3F3ECvf3ZckSZAkKXjv26MH2FyzIM9m5DWMaZrUe2N9Vuj6XPhROZy2vI++PVnyAeDo5yP88vJlsI7OJ+e7XmZyhYXiz/CH/JpBxO6bqvngP9UwGAwGg8FgMBgMBoPBYDAYDAaDwWAwCvIdcFwOnTsykyYAAAAASUVORK5CYII=', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAABbCAYAAACGeS4EAAAAxXpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVBRDsMgCP33FDuC+FDhOHbtkt1gxx8W2rTLXuITeOQppO3zfqXHRCFOXLs0bS0bWFnLsECyY+xMmXf2REOjez3VJYRiJdgNT6VF/1Gn08CvYVG9GMkzhOUuKIe//BjFQ5g/KhasYaRhhOIChcHwsXJT6dcRli3fIX7SJPTd+zT5zbnb9tZqRZSygZCNAfEPYB5OGCbQzs0aCWJxhRoDx6i2kH97OpC+N2hZYjA7jzgAAAGEaUNDUElDQyBwcm9maWxlAAB4nH2RPUjDQBzFX1u1oi0KdhARzFCd7KIijqWKRbBQ2gqtOphc+gVNGpIUF0fBteDgx2LVwcVZVwdXQRD8AHF2cFJ0kRL/lxRaxHhw3I939x537wBvo8IUoysKKKqpp+IxIZtbFfyv6McggujBmMgMLZFezMB1fN3Dw9e7CM9yP/fnCMp5gwEegTjKNN0k3iCe3TQ1zvvEIVYSZeJz4kmdLkj8yHXJ4TfORZu9PDOkZ1LzxCFiodjBUgezkq4QzxCHZUWlfG/WYZnzFmelUmOte/IXBvLqSprrNEcRxxISSEKAhBrKqMBEhFaVFAMp2o+5+Edsf5JcErnKYORYQBUKRNsP/ge/uzUK01NOUiAGdL9Y1sc44N8FmnXL+j62rOYJ4HsGrtS2v9oA5j5Jr7e18BEwsA1cXLc1aQ+43AGGnzRRF23JR9NbKADvZ/RNOWDoFuhbc3pr7eP0AchQV8s3wMEhMFGk7HWXd/d29vbvmVZ/P35NcqvxDKX/AAANdmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDpmMjc5MDQzMy1kMTE3LTRkOTMtOGMwMS03MzRjNWVjMzJlZTEiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEzN2UyMzQtZmEwNi00YmE5LWJkYjQtYjA0ODkzNzllZmNiIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OTA4NGZhMjAtZTQ2NC00NjRhLWFkNDctOGYyZDQ5YzZjZWZhIgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iV2luZG93cyIKICAgR0lNUDpUaW1lU3RhbXA9IjE3MzE3ODM1NzY3MTc4MDEiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zOCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQ6MTE6MTZUMTg6NTk6MzUrMDA6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI0OjExOjE2VDE4OjU5OjM1KzAwOjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjRmMTVmMmMtNTgyMi00ODJmLThlMmEtNTdhMzcwYTA0MTI4IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDI0LTExLTE2VDE4OjU5OjM2Ii8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PpEyIrEAAAAGYktHRAApAHsAJr879EYAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfoCxASOyQOGSk2AAAC80lEQVRo3u2XT2/aQBDFnxFybUFJfDAotgRJkAJND9zoLcee0n7Ytl+gvZVbDk2hEg5YWggYySZg2UJI9JB6s/6LSSpVlfZdgDXMb9/sjD0AXFxcXFxc/7Paur77m/GEfZA+IcJLIcW0C416PXi7y4K1dV3tE2I92wkDwtg0M3eb5VhIC+57HmaWhZqqAgAkWQ4BoxvwKzoAYPSzF4MVWECn28X762uMTRMzy0KjXqfBfc+LuRmbJnzPQ01VIT0QnJ01cfqmu0uEBAAAmM3n6HS70M/PadAAVFNVujY2Tepynwp5K4QFsa9RJbkpsC72aWZZsc/sWR3kZLFY0Pcj6z63y1yQxWJBAcQwoDUbaLcuKIitqKyUJUKiwYlh4KRzBTKZYrVaUVC0uoL0+Z63v+OJYdCFk87VUxN5G5DJFLoGtFsX6A9+xQLsA1AnQcmGfuz7AABFlEOO7tfLWLqiBXFwCb8SxRhoJ4svr648INZRbkhw2GyqgvKUZBlHR0epjqIpToTc9HoxgD3oxUrWWS5joDx9VGArKm0n0dQFVZfmKDVdLMAe9PY9yEKODj54e9BDSTlO7AG2GVlHgreh63d3w9gzpQgA05tvdCEA5G02RZTh/IFIkgTpgcSdBI9NpVaFUqtm3viS7l3O8qmU2c3mGiTSQEF3B69Kq4vplCQ6yAVJGh6UVvqzp1guYbt2syGbzWNuXdtJDShJ0svnLtd2UFKOKYgNfHfzNfTdk9Y7TAff6eCT5IKOROzEGFSXazvwER48Pl5/AAD8uL1FcbvFwBzjdamEletiRCbCXidKrUrTFahcLgMA1us1WvUGPn35HLreqjcwMMf5mrFPiGDP5hBFMdQv27WLSqUCANgWH/ejaRo0TQutHXwmoiiGHE0mk9D16OdnD9wsaEQmwqmu7YbGEM3zJt5eXtJzGRrDzLPIhETPhgm0GxrDpPXn/XVwbSc2qecNmgmxZ/NcfwW4uLi4uLi4uLi4uLi4uLj+iX4DvY+drSwfrZcAAAAASUVORK5CYII=' - ] - }, - { - action: 'walking_left_up', - sprites: [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAABZCAYAAADVeL+8AAAAw3pUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVBbDsQgCPz3FHsEeahwHLvtJnuDPf6i0KZtOokjMGRE0vb7ftJrAIETlyZVa80GVlbsFkh29MmQebInLTS41lPRENBKZDd5KjX69zocBn51i8rJSN4hLFdBOfzlZhQP0ZgILVjDSMOI0AUIg+7fylWlnb+wbPkK8ZMGUZveh8k952bbW4sVCXEjoGxMJD4AjcOJugkwuVojEFtMO8cktpCnPe1If/hxWStV3/nGAAABhGlDQ1BJQ0MgcHJvZmlsZQAAeJx9kT1Iw0AcxV9btaItCnYQEcxQneyiIo6likWwUNoKrTqYXPoFTRqSFBdHwbXg4Mdi1cHFWVcHV0EQ/ABxdnBSdJES/5cUWsR4cNyPd/ced+8Ab6PCFKMrCiiqqafiMSGbWxX8r+jHIILowZjIDC2RXszAdXzdw8PXuwjPcj/35wjKeYMBHoE4yjTdJN4gnt00Nc77xCFWEmXic+JJnS5I/Mh1yeE3zkWbvTwzpGdS88QhYqHYwVIHs5KuEM8Qh2VFpXxv1mGZ8xZnpVJjrXvyFwby6kqa6zRHEccSEkhCgIQayqjARIRWlRQDKdqPufhHbH+SXBK5ymDkWEAVCkTbD/4Hv7s1CtNTTlIgBnS/WNbHOODfBZp1y/o+tqzmCeB7Bq7Utr/aAOY+Sa+3tfARMLANXFy3NWkPuNwBhp80URdtyUfTWygA72f0TTlg6BboW3N6a+3j9AHIUFfLN8DBITBRpOx1l3f3dvb275lWfz9+TXKr8Qyl/wAADXZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDQuNC4wLUV4aXYyIj4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgIHhtbG5zOkdJTVA9Imh0dHA6Ly93d3cuZ2ltcC5vcmcveG1wLyIKICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICB4bXBNTTpEb2N1bWVudElEPSJnaW1wOmRvY2lkOmdpbXA6NTY4NWVlNWYtNzNkYi00NTc4LWE4M2EtYmFmZjk4MDk2NDRkIgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjEwZjhkYWFkLWQzZDItNDg3MC1hM2I1LWFmNjU2YjRlOTAwZCIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjVmNTM2Yzk2LWMyZTUtNGQzZC04NjdjLTJhMmM4NTViMzQ2YSIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIEdJTVA6QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09IldpbmRvd3MiCiAgIEdJTVA6VGltZVN0YW1wPSIxNzMxNzY3Njc0OTQxMTYxIgogICBHSU1QOlZlcnNpb249IjIuMTAuMzgiCiAgIHRpZmY6T3JpZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDI0OjExOjE2VDE0OjM0OjM0KzAwOjAwIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyNDoxMToxNlQxNDozNDozNCswMDowMCI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmQ0YzY1NmU1LTRhZDYtNGUyOS05YWJjLTZjOTZiODcyZTllZiIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyNC0xMS0xNlQxNDozNDozNCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5qQY65AAAABmJLR0QAKQB7ACa/O/RGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH6AsQDiIiaUZ/DwAAAvhJREFUaN7tl01r20AQhl+Z4spEaCVIbCwV4rildk+5+RJowT/c0EIO1amGQutLokCk1HaoLHkdK6LgHuJdrz7tBgql7AMCa716ZzQ7M7sCJBKJRCL5b1GKBjvvBhs18gAA3z1Pea74i6woALTbNoLIg0EI+sBmn0iZA4oo3G7bAIBg4qB1coLpfI433S4AYLlc4jFJcgKLMCw1oDDhs7PXiOOYCwPAY5Lwh8swCEnNEY3wsGSFAeBlvQ6DkELRIFmj33uLyZevuBgOd3+MRhtmoMa8zqI2GtyAeGWF7W4XlFJ+XQyH6Nv2JregIvF6zQ2we1F4uVym5reaTaweHkAp5WO1MnFRmN3/oCEX9vy70nVg3teK4p0VBgB3/iMlbNbzcyil0DSNe1/b53GZMIs/YzqbodVslhcRAIRhiEUYwiAEhJBKYYMQeFdXAIDj42NMZzMAgKZpT+LuN0cBBhtVyOsqYUIIX1yR+/t7/nvsOOkiYr2E5bWYFaJwNnuKCu1iOMTlaLSLefv8fa5A9gmLmL1BSiO3oGZvUCkcr9eFwgd1RcYhMT6EXCoq6ySVFdlKLSOYOLvUdd3yCs3m8SGeW51T3I0/AQBPz6ewRLe4Ht8C+iuo22b1HI5MA3XW3KazneeWZfFFnc7nmM7nqaotC01Vvy9cULM3gKqq/DWrMHsDAIA/cXBkGhXi0S2w3epY7sdxfHBYkiTBKlhktjnb2miaBl3X4fs+AODs/MNeMWY4mDgwW00E0xnflS5Ho53nlFLous4bz/X4IxcpM3Q3+fy0JlDQaDQQFG7QW89ZH2ZvAQBRFKV2FxHW/X7RFY+3GJZUzC3L4mGJogi6rvOLjYmw8Z90lcr3MAyxChbFRcQ8LRMTDTJIwSmhMOau5ysd28qdtJhoNlQqFPjuTS40qVMSE3Q9X8mO5bY+YU7ftjdW5xS+e8MrdRUs0jEXH6gaqyp/QgjCbdXW/uYRWoof/mXxp7CD5yEfBBKJRCKRSCQSiUTyD/EbC0auy992VgUAAAAASUVORK5CYII=', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAABcCAYAAAALb2dzAAAAx3pUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabZBhDsMgCIX/e4odQXioeBy7dslusOMPlTZt09f4RDBfkbD9vp/w6mKSIKlorjlHk1Sp3CzQONWGU5ThQ8xeo2s+pLcX2FKwHfOo2e/veToAc2sWpRNIHUTLtVDF+XoD+Y/QO+rdrQ6qDgLPAjmgzWfFXLWcn7Bs8SqdK3RDGewDcj9LsemtyZJg3kCI5oDOBtCXBDQr0PBsFwlqsdjXkFC9ExvI05x2hT8vqVldvT/3fAAAAYRpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAHMVfW7WiLQp2EBHMUJ3soiKOpYpFsFDaCq06mFz6BU0akhQXR8G14ODHYtXBxVlXB1dBEPwAcXZwUnSREv+XFFrEeHDcj3f3HnfvAG+jwhSjKwooqqmn4jEhm1sV/K/oxyCC6MGYyAwtkV7MwHV83cPD17sIz3I/9+cIynmDAR6BOMo03STeIJ7dNDXO+8QhVhJl4nPiSZ0uSPzIdcnhN85Fm708M6RnUvPEIWKh2MFSB7OSrhDPEIdlRaV8b9ZhmfMWZ6VSY6178hcG8upKmus0RxHHEhJIQoCEGsqowESEVpUUAynaj7n4R2x/klwSucpg5FhAFQpE2w/+B7+7NQrTU05SIAZ0v1jWxzjg3wWadcv6Pras5gngewau1La/2gDmPkmvt7XwETCwDVxctzVpD7jcAYafNFEXbclH01soAO9n9E05YOgW6Ftzemvt4/QByFBXyzfAwSEwUaTsdZd393b29u+ZVn8/fk1yq/EMpf8AAA12aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjc1OWU2MmUxLTRhYzAtNDI5My04YjMxLTczYjkwOTZiNGZkZSIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiNWY4OTRhYy1hNzc3LTRlZWUtYmFkNi1iMWYwNmM4OTcwZDUiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1NDBjZTZiYy0wY2JjLTQ5NjgtODUwNS1iMmMzZjgwOGQxMWIiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJXaW5kb3dzIgogICBHSU1QOlRpbWVTdGFtcD0iMTczMTc4MjcwMTI3MzgxMCIKICAgR0lNUDpWZXJzaW9uPSIyLjEwLjM4IgogICB0aWZmOk9yaWVudGF0aW9uPSIxIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNDoxMToxNlQxODo0NDo1OSswMDowMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjQ6MTE6MTZUMTg6NDQ6NTkrMDA6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplOGY2ZDAxMy0wMzgxLTQ5ZGYtODY5My1hOTc1NGJhYTBlNGEiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OndoZW49IjIwMjQtMTEtMTZUMTg6NDU6MDEiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+gUSBfQAAAAZiS0dEACkAewAmvzv0RgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+gLEBItAVmFSKYAAANeSURBVGje7Zi9b9pAGMYfR1EKiWXjKICIO1BUBTqxsURKJYZO+XMzdUBqpQxlaJupYQjQqA6YRDU2Tux4oUO4i89fmChDh/cnebB95h4/78edAQiCIAiCIAgiEWnTB1q6vgSAS8OQkq4zovfXsZ1nUP1D53kSx0BJVdEChImr5TIAQNM0TE1TuJ9H1HYeAbWaDgCwBn1Uy2WYt7d432gAABaLBR6DAI9BAACYmiZ/Xl+NwUpUliApSwQTEBYBAI9BgLltZ76h3migXq/Ddd0nxyoVfD47SxUjbSqCwRyIYgUeJC+A3mjg4OAAsixjb3cX5myWKWZrXewKhYJ4XiwCAN7s7AgHE9FqHgnjXdeFOZtBlmWYs1nqPFtZbkRFAIDveSgUi/wIO9FqHmGxWAjjq5UKZFmG67qoVipodzqxCsvlSMyh0OTsfOraXIRxM0l99v7hIb8jaSFJEgEA49upIELbiY9xXZe7kktINElfIoLlC4MlKUOW5cQGuLXOjdHoCgBg2zZ+X1/DXpVtloiSqsIYDnF3d8fFMFfOez18Oj3drKGNRlcY/+pLLV1fzm0bJVWFqqqJIlRVhe95wvPGcCicX/T76zsrC0tSbrC3THNCXd0rFIvwPY87s+oXPARaswNr0E9M2o2qJlyiURGstKOw5lVrn3Ax570ejrtdIU+4IwXHgOUYYq6wCbDMFJEkIC33fN/nYlIdOe52saeV+BElKSfyiLg0DGly8VW4pjU78RxhFkVVhtcEyQuE6mAdNq8bYVeiooTQHHe7+Pnj+3MXtOaxwdE+sakIJoC5HZ4jMVljIpS3fKF7KcxdrVpBSdvnglg0uCPhsCQt01qzA3PQF3ZjrNtu6kxqH8m7v9SandQYx1ZpRQcM43X3rFFq7RP4vp+dD5NkEZY5g4XZC4U4fzBx/gAA3rU/pq7O3I0MkawoSto+5tZfno+5HWGr5ujiC7/GRMXcGHxL/Z3xeIySth9bh3LlRl0/XDIhiqI8meQ4qfsLtvcYGzdS2ndRtIRzOTI2biQmxnEcKIrCDyZKqHZFydwE7WklwZVLw5ByhyZJTHji6LUs7q057q252Lk3rZi6frgM50xWuJJC82rfvlFBSc7RXwoEQRAEQRAEQRAEQRAEQRAE8f/xD1Od1ypeHb4SAAAAAElFTkSuQmCC', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAABdCAYAAABZy21jAAAAxHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVBbDgMhCPznFD2CPFQ8jtvdJr1Bj18U3Ow2ncQRGDIicHzeL3gMEApIrlpaKckgTRp1CzQ5+mRMMtmTPTS81yEvgazEdrOnWqJ/1fE08KtblC9G+gxhuwtNwl9/jOIhHhORBTEItDBicgHDoPu3Umlar1/YjnSH+oFBXKf3afKbS7Xt7dmKTHQwcjJmVh+AxxHgbgJOLtaIrBbL5MxrElvIvz0twBd6sVmOeTiF4wAAAYRpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAHMVfW7WiLQp2EBHMUJ3soiKOpYpFsFDaCq06mFz6BU0akhQXR8G14ODHYtXBxVlXB1dBEPwAcXZwUnSREv+XFFrEeHDcj3f3HnfvAG+jwhSjKwooqqmn4jEhm1sV/K/oxyCC6MGYyAwtkV7MwHV83cPD17sIz3I/9+cIynmDAR6BOMo03STeIJ7dNDXO+8QhVhJl4nPiSZ0uSPzIdcnhN85Fm708M6RnUvPEIWKh2MFSB7OSrhDPEIdlRaV8b9ZhmfMWZ6VSY6178hcG8upKmus0RxHHEhJIQoCEGsqowESEVpUUAynaj7n4R2x/klwSucpg5FhAFQpE2w/+B7+7NQrTU05SIAZ0v1jWxzjg3wWadcv6Pras5gngewau1La/2gDmPkmvt7XwETCwDVxctzVpD7jcAYafNFEXbclH01soAO9n9E05YOgW6Ftzemvt4/QByFBXyzfAwSEwUaTsdZd393b29u+ZVn8/fk1yq/EMpf8AAA12aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjY5NmJjMWJjLWVkYTktNDZjOC1hZjk3LTFmZDk5M2ZiM2U0OCIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxZmE2MWM0Ni0yZDZhLTQ4ZDAtOWE5Ny0xN2I5NzlkN2VjNzkiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMjEwNzY1Mi00Mzc0LTRjZWEtODFlMi02ODg0ZmNhYWJmNjMiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJXaW5kb3dzIgogICBHSU1QOlRpbWVTdGFtcD0iMTczMTc4MjkzNTkzODU3NyIKICAgR0lNUDpWZXJzaW9uPSIyLjEwLjM4IgogICB0aWZmOk9yaWVudGF0aW9uPSIxIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNDoxMToxNlQxODo0ODo1NCswMDowMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjQ6MTE6MTZUMTg6NDg6NTQrMDA6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphYzI3YmVhOS1jZmVhLTQxZGItYjA3ZS1lYzZiYmNiOTBlMzgiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OndoZW49IjIwMjQtMTEtMTZUMTg6NDg6NTUiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+yoqn3QAAAAZiS0dEACkAewAmvzv0RgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+gLEBIwN2lTsSMAAANdSURBVGje7ZfPb+JGGECfESWmQRhLIRH4sDSqCnvixiVSVuIPR2qlPTSnRuqBXLastAMxiQS2ITbeAz1sxjs2Nj+k3W0P8yQU4rH95pv5vpkBNBqNRqPRaDRZjGNu6jnOFmAshJF3/ZVoLET1mPeVixo6bwdfX+gLGpZFD1QJV80mALZt8+i6pmzPdu6gVMpaLQeAxcMdV80m7tMTv15fAxAEAZs4ZhPHADy6LgDbaoVe9zdQOpfXASMrlDJVCLCJY5aeV9h7KXz4629uhsPk+vvRaEdcOLyqEOCsUqFhWfn3xmEidK6vWa1WSdvNcAij0VYVl4+ZeLNaJQpDziqV1PVNHCfCIAhSbVeXl6xfXlIdkJSKhlYlCkPMajX5ZCMMggAxnRV2+mY4TGV66dhIs/8/rryU0K7sVstqtaJWq+1EWzpVCDB5ejwodOdzri4vT6vTU4RnlQqbOKZhWYgPHwC4uLjAnc8BqNVqh6WmaQLgeR5Lz6NhWViWVSiUqCX1/PycfL+/uzs+0kNCy7KIwjD1jN0dIB7udhLp/WiUntOizJV1WSRUp0CN2O4OsLsDWv3b3AwuFQ1tUVmoQllOh5hMJsdlb8R2rzAKw1zhIjO0J2evXNz3zWHREgrQ6t/S6t8i7v9IS9X5zA6tEcapLJUr0z7xWAij5zjbducNU0UmSwmgbPqChS92y+Z1A8qWxTGRSs7tBhXl2YU7/zq8eY1R3cH0xc4i/y0oA6wXS9Y5jXZ3gPs6P3KbkyVySsS5UjXShTtnLITRqX+pKbs7wDRNZplkyM34ugNCyE17+9P5z8RxzOf1y2nZK2n1b4miaO89s1k6N5rNJtPJx+QkIVelYqn/iZn/CYBf+u9yszsV5YEOqQvEzpyqxwq5O/xz/3vygOzATpQPf+5c8zyPdudNat0FKB86LgK02+0vwft+qgMqeZu1WjoyuL3DOxFTo+O0t7VaDd/3qdfryUd2QKVerxdKVeHBk8NETA35ojyJ/Cu/7xOe2w3O7QY9x9kezF4Zcfa6lPm+XxjherFMhCeXzERMDQBVropke95cWpaFlzmkl09ZSYpefgyqvMR/wA+VrhdLxkIYP0w6nXxMFh7je4rUnxLHLEIajUaj0Wg0Go1Go9FoNJr/Lf8CE2Pak5IUl70AAAAASUVORK5CYII=', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAABZCAYAAABfVyb9AAAAxXpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVBRDsMgCP3nFDsCCCoex65dshvs+EPBpW32EhB45AnA8Xm/4DGQSEBy1dJKQYM0aalboOjo0xPK9BMpKMsvdcgNVwch28ueaon+VaefgD/donwS0mcQ25VoEvp6E4qPeEw0xttDqIUQJycoBLqvhaVpPa+wHXiFusFwXH31JXLPpdr19mxFTulgYjTPrD4ADxPgbgRNX6yRWCxmo7pZiUnsIP/utABf7zZZJJO8XNkAAAGEaUNDUElDQyBwcm9maWxlAAB4nH2RPUjDQBzFX1u1oi0KdhARzFCd7KIijqWKRbBQ2gqtOphc+gVNGpIUF0fBteDgx2LVwcVZVwdXQRD8AHF2cFJ0kRL/lxRaxHhw3I939x537wBvo8IUoysKKKqpp+IxIZtbFfyv6McggujBmMgMLZFezMB1fN3Dw9e7CM9yP/fnCMp5gwEegTjKNN0k3iCe3TQ1zvvEIVYSZeJz4kmdLkj8yHXJ4TfORZu9PDOkZ1LzxCFiodjBUgezkq4QzxCHZUWlfG/WYZnzFmelUmOte/IXBvLqSprrNEcRxxISSEKAhBrKqMBEhFaVFAMp2o+5+Edsf5JcErnKYORYQBUKRNsP/ge/uzUK01NOUiAGdL9Y1sc44N8FmnXL+j62rOYJ4HsGrtS2v9oA5j5Jr7e18BEwsA1cXLc1aQ+43AGGnzRRF23JR9NbKADvZ/RNOWDoFuhbc3pr7eP0AchQV8s3wMEhMFGk7HWXd/d29vbvmVZ/P35NcqvxDKX/AAANdmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDo1MjBiOTYwOC04OWIyLTQ1MmYtOTk2My1lNWI2Njg1N2ZjNTYiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZTkxY2FmOGMtM2U2MC00MzY5LTkyYzktMzY5YmYxZGVhNjZjIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZjM4MWUzYWUtN2NhZC00OTgxLWFiZDUtN2UxMzFhZmY0MTc2IgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iV2luZG93cyIKICAgR0lNUDpUaW1lU3RhbXA9IjE3MzE3Njc1NDc2NjgyMTYiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zOCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQ6MTE6MTZUMTQ6MzI6MjYrMDA6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI0OjExOjE2VDE0OjMyOjI2KzAwOjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZWI5N2NjOWEtY2I1MS00OGM1LTgwNzktYTEwMzU2NGNhZGM4IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDI0LTExLTE2VDE0OjMyOjI3Ii8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pj5102MAAAAGYktHRAApAHsAJr879EYAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfoCxAOIBsEdZWFAAADMklEQVRo3u2YS2/TQBRGj1GaOq1VJ0ihykNgKkQfCLWriBUskGDDn4YVZEVXEFTRgJo0jislTpxH3YVZwFh28CtpKhbMkaLIHiff53vv3BkbJBKJRCKRSCT/GCXtAuOw4amjDgBfO53Q9Qe1mhc8XhzPQi5JGKBSqTEYdSjqOgcQEtwtlwEolUr0TJMD8LxCHoDW2bmysgHjsOFVKjUABq0mu+UypmXxZG8PgPF4zLXrcu26APRM0//t29dvMPt9+GM2zUguaVCIAxR1nbPv3xPvpra3x2Q6BeDk+Yk47SWZyMXdfVAcYDOfp6jr0UbdGcrMDZ3TNC1oJNbEvSx5UgsF30TwI8QP9p/+9Zvtra3bFWGQ+WzmmxDHQfHxeIwoPsFkOsVxHDRNS4zCUhEIHvcc2xfvdC/9FLTbbTRN88XTIpFLK75FcYC21QuJl/IFBoFxIe44Do7jrJ6CrOKb+TyKbXNxeeFfd3V1hWEYy9dA+0tTER3Otm2Gtk1R19F1PVZccP/h76l38fPz7Tvhteumiuu67hekHzVVBaBeqYcisvQ0FOJxYdf/jEWlSVCv1KlX6okRiDQw36mFmkyceHBKRvHs6Ci1DmIjUNpvJIrPZ7NY8erTF6HwL70cG4cNb/PGypRzgWlZIfOqqtL99tHvD3FLdWwRRlW76Iixd248wrZtBq1m6O6S9gmRBjZvLMbjXORUS8q5H4HdB7iui+u63Eymq9WAaK9B8TRmGcxlMtA6O1euN8qU9huYlhXKr1ooxE69gdlnMhiuZ0u2WFCXpx9S/+zNu3eY/T6nzSbbpeL6lmOAyvFL5vN54u5J7IbWFoHL1icAHh+/CrXZLIhUpO2UEweNWtUTy6pAmPnLbCBF26WiPwPSDGRKQbVaBWA0GnF++j566Ubx+8Bai1AI7+zs+B9xzg+j56XO96X7AEC701VE+IOCgG9EfC/2gayGUiPQ7nQVo1b1Fs+LaIxGI5zJBDVQTpPBkI3trUwmlnqWizIiTAafE9dehEGhxGJdoQjv8Y/J3cWfZm1Cd2JgMhgu9Z5grSnotn+s9JJCIpFIJBKJRCKRSCQSiUTyf/ML2ADQZZXCzA0AAAAASUVORK5CYII=' - ] - } - ] - } - } - }) + const equipmentSprite = new Sprite() + equipmentSprite.id = '5b3932dd-0791-4bb7-bb1e-da9833c3cc50' + equipmentSprite.name = 'Male shirt' + + // Create actions similar to createCharacterSprite() + // with appropriate sprite data and parameters + const actions = [ + { + action: 'idle_right_down', + sprites: ['data:image/png;base64,...'], + originX: 0, + originY: 0, + isAnimated: false, + isLooping: false, + frameWidth: 64, + frameHeight: 94, + frameRate: 0 + }, + // Add other actions... + ] + + for (const actionData of actions) { + const action = new SpriteAction() + Object.assign(action, actionData) + action.sprite = equipmentSprite + await action.save() + } + + await equipmentSprite.save() } private async createZone(): Promise { - const zone = await prisma.zone.create({ - data: { - name: 'New zone', - width: 100, - height: 100, - tiles: Array.from({ length: 100 }, () => Array.from({ length: 100 }, () => 'a2fd8d6f-5042-437a-9c1e-c66b91ecc35b')), - zoneEffects: { - create: [ - { - effect: 'light', - strength: 100 - } - ] - } - } - }) + const zone = new Zone() + zone.name = 'New zone' + zone.width = 100 + zone.height = 100 + zone.tiles = Array.from({ length: 100 }, () => + Array.from({ length: 100 }, () => 'a2fd8d6f-5042-437a-9c1e-c66b91ecc35b') + ) + await zone.save() + + const effect = new ZoneEffect() + effect.effect = 'light' + effect.strength = 100 + effect.zone = zone + await effect.save() } private async createUser(): Promise { - await prisma.user.create({ - data: { - id: 1, - username: 'root', - email: 'local@host', - password: await bcrypt.hash('password', 10), - online: false - } - }) + const user = new User() + user.id = 1 + user.username = 'root' + user.email = 'local@host' + user.password = await bcrypt.hash('password', 10) + user.online = false + await user.save() - await prisma.character.create({ - data: { - id: 1, - userId: 1, - name: 'root', - role: 'gm', - characterTypeId: 1, - characterHairId: 1 - } - }) + const character = new Character() + character.id = 1 + character.user = user + character.name = 'root' + character.role = 'gm' + character.zone = await ZoneRepository.getFirst() ?? undefined + character.characterType = await CharacterTypeRepository.getFirst() ?? undefined + character.characterHair = await CharacterHairRepository.getFirst() ?? undefined + await character.save() } -} +} \ No newline at end of file diff --git a/src/entities/zoneEffect.ts b/src/entities/zoneEffect.ts index b9e4f27..d34e810 100644 --- a/src/entities/zoneEffect.ts +++ b/src/entities/zoneEffect.ts @@ -1,3 +1,4 @@ +import { randomUUID } from 'node:crypto' import { Entity, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core' import { BaseEntity } from '#application/bases/baseEntity' import { Zone } from './zone' @@ -5,7 +6,7 @@ import { Zone } from './zone' @Entity() export class ZoneEffect extends BaseEntity { @PrimaryKey() - id!: string + id = randomUUID() @ManyToOne(() => Zone) zone!: Zone diff --git a/src/repositories/characterHairRepository.ts b/src/repositories/characterHairRepository.ts index 130363a..9f422bc 100644 --- a/src/repositories/characterHairRepository.ts +++ b/src/repositories/characterHairRepository.ts @@ -3,6 +3,16 @@ import { BaseRepository } from '#application/bases/baseRepository' import { CharacterHair } from '#entities/characterHair' class CharacterHairRepository extends BaseRepository { + async getFirst() { + try { + const repository = this.em.getRepository(CharacterHair) + return await repository.findOne({ id: { $exists: true } }) + } catch (error: any) { + appLogger.error(`Failed to get first character hair: ${error instanceof Error ? error.message : String(error)}`) + return null + } + } + async getAll() { try { const repository = this.em.getRepository(CharacterHair) diff --git a/src/repositories/characterTypeRepository.ts b/src/repositories/characterTypeRepository.ts index b51e5fa..fe0cd28 100644 --- a/src/repositories/characterTypeRepository.ts +++ b/src/repositories/characterTypeRepository.ts @@ -3,6 +3,16 @@ import { BaseRepository } from '#application/bases/baseRepository' import { CharacterType } from '#entities/characterType' class CharacterTypeRepository extends BaseRepository { + async getFirst() { + try { + const repository = this.em.getRepository(CharacterType) + return await repository.findOne({ id: { $exists: true } }) + } catch (error: any) { + appLogger.error(`Failed to get first character type: ${error instanceof Error ? error.message : String(error)}`) + return null + } + } + async getAll() { try { const repository = this.em.getRepository(CharacterType) diff --git a/src/repositories/zoneRepository.ts b/src/repositories/zoneRepository.ts index 1fc7a4f..575278b 100644 --- a/src/repositories/zoneRepository.ts +++ b/src/repositories/zoneRepository.ts @@ -5,6 +5,16 @@ import { ZoneObject } from '#entities/zoneObject' import { Zone } from '#entities/zone' class ZoneRepository extends BaseRepository { + async getFirst(): Promise { + try { + const repository = this.em.getRepository(Zone) + return await repository.findOne({ id: { $exists: true } }) + } catch (error: any) { + appLogger.error(`Failed to get first zone: ${error instanceof Error ? error.message : String(error)}`) + return null + } + } + async getAll(): Promise { try { const repository = this.em.getRepository(Zone) diff --git a/src/socketEvents/character/create.ts b/src/socketEvents/character/create.ts index c4b20f7..2f7799b 100644 --- a/src/socketEvents/character/create.ts +++ b/src/socketEvents/character/create.ts @@ -38,7 +38,9 @@ export default class CharacterCreateEvent { } const characterService = new CharacterService() - const character: Character = await characterService.create(data.name, user_id) + const character = await characterService.create(data.name, user_id) + + if (!character) return this.socket.emit('notification', { message: 'Failed to create character. Please try again (later).' }) characters = [...characters, character]