commit 702d8049f0d28319f92aa0fe87797ffe37b316fc Author: DramaticShape Date: Sun Jul 26 16:43:53 2026 -0400 initial commit diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f91f08d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,545 @@ +# Changelog + +## Unreleased + +Real shadows. The sun moves to the southeast and drops to 45 degrees, so +shadows fall northwest -- up and to the left on screen -- and run about as +long as the thing throwing them is tall. + +### Added + +- `lib/ShadowMap.lua`: the scene rendered once from the sun into an + orthographic depth map, which the main pass then samples per fragment. + What the sun cannot see is in shadow, whatever surface it is, so a + shadow climbs a wall, drapes over a roof and slides across a passing + NPC with no case in the code -- and every caster is simply whatever the + pass draws. The terrain mesh goes in, which means buildings, trees, + ledges, signs and every prop cast, where before only characters did. +- Depth is packed into two 8-bit channels of an ordinary color canvas + (~16 bits over a ~700px frustum, a hundredth of a world pixel). + Readable depth textures are the least portable corner of the graphics + API, and the mod's contract is that an unsupported driver falls back + rather than errors: `available()` reports, and VoxelScene keeps the old + flat decals when it says no. +- The map resolution is picked per frame from a 1024/1536/2048 ladder + against a 0.45 world-pixels-per-texel target, because the light frustum + is fitted to the world view and that swings 3x between the closest zoom + and a maximised window at the widest. The frustum is snapped to whole + texels, without which every shadow edge in the world crawls as you walk. +- Ambient occlusion, the genuine article: each vertex counts the + neighbours crowding it and steps down once per neighbour, on top faces + (four corners, three neighbours each) and now on upright faces too -- + the crease a wall rises out of, and the inside corners where flanking + columns box it in. It is the complement of the shadow pass rather than + a duplicate: the map draws the long directional shadow, this draws the + dark seam in every corner the sky cannot see into, at scales finer than + a shadow map texel. +- Plus a ground-contact term for the prebuilt prop quads -- per-pixel + plants, signs and lone trees, and the round-tree stamps. Those arrive + from Structures already finished, so the neighbour counting has no + columns to count; what it can still say is that the floor blocks half + the sky, so a voxel's first 6px of rise ramps back to full light. It is + what stops a prop reading as pasted over the ground rather than + standing on it, and outdoors it is most of what AO does at all, since + trees and posts are nearly all prop geometry. +- One knob for the lot: `AO_STRENGTH` in `ChunkMesher` scales every term + (they are written as darkening amounts, not multipliers), against a + floor that keeps a crank from punching holes of pure black. +- The **V-CURVE** row in OPTIONS: the curved world, the Animal Crossing + horizon. Every vertex is pushed down by the square of its horizontal + distance from the camera's focus, and that is the whole effect -- a + quadratic is nearly zero near its vertex, so the ground being played on + stays flat, and the falloff accelerates, so the far edge rolls away over + a near horizon and the town reads as sitting on a small sphere. +- It is deliberately NOT a fisheye. A fisheye is a LENS -- a screen-space + warp -- which bends straight lines everywhere including right in front of + the player, resamples every pixel to do it, and would leave this mode's + art blurred and crawling. Bending the WORLD is one line in the vertex + shader: lines near the camera stay straight and not a pixel is resampled. +- Displacing along Y only is what keeps it readable rather than + nauseating: the drop depends on where a column stands, not how tall it + is, so the world tips away and the buildings on it stay upright. +- Shadows and the wireframe ride along for free. Both are already worked + out before the bend -- the shadow map in flat world space, the grid in + model space -- so the bend carries them exactly as if they had been + painted on, and neither the light frustum nor the grid needs to know the + curve exists. `Voxel3D.project` applies the same drop on the CPU, which + is what keeps the overworld's 2D field FX on their ground points. +- The strength scales with the view height, so a rung reads the same at + every zoom, and the ladder is calibrated against the far edge of the + visible ground rather than against nothing. +- `lib/ModSetting.lua`: the ladder/store/rows a setting of this mod's own + needs, now that there are two of them. V-GRID's copy of it moved here. +- A **75 degree** rung on the VOXEL ladder, below the 15/35/50 it shared + with the engine's TILT: low enough to read as a diorama shot from table + height. Tilt could not have it -- its flat plane degenerates into a + horizon line down there -- but geometry only gets more of itself to show. +- The **V-GRID** row in OPTIONS: a one-display-pixel wireframe along every + voxel edge, 3D Dot Game Heroes style. Every mesh here is built one unit + per voxel in its OWN model space, so the seams are that space's integer + planes, and reading them in model space rather than world space is what + keeps them glued to a thing however it is posed -- a character's slab + leans back by the camera's pitch and its seams lean with it. +- The seams fade out where a voxel shrinks under about 3 display pixels. + Survey zoom draws a world pixel at roughly a display pixel, and a wall + seen nearly edge-on squashes one to nothing at any zoom; drawn anyway, + the lines land closer together than they are wide and the wireframe + stops being a wireframe and becomes a flat 45% dimming of the scene. +- `lib/VoxelGrid.lua` owns the toggle. It is NOT a pipeline: it owns no + pass of the frame, it parameterises the voxel one, so it has nothing to + put in `drawWorld` or `present` and the registry rightly rejects it. A + plain mod setting instead -- `options:define` for the store and the mod + manager's page, `ui.options.rows` for the row in OPTIONS next to VOXEL + and T-SHIFT. Both rows read and write the one stored value. +- The wireframe is a SECOND COMPILATION of the scene shader rather than a + branch inside it, because it needs shader derivatives (`fwidth`) -- the + one part of the mode a driver can refuse. A refusal costs the grid and + nothing else. +- `tests/drivers/voxel_shadow_probe.lua`: reports the fitted frustum and + the resolution rung, dumps the map itself, and shoots a stand point at + every pitch. `SHADOW_SUN="kx,kz"` retunes the bearing for one run, + `SHADOW_GRID=1` forces the wireframe on, and `SHADOW_ZOOM` pins the + zoom, without which two runs are not comparable -- a driver inherits + whatever the player left in `options.lua`, and the world view size (which + the light frustum is fitted to) swings 3x across that range. + +### Fixed + +- VOID FILL did nothing in voxel mode, in two separate ways. + + **BLACK crashed the build.** The mode is not a block at all -- + `TileRenderer.borderBlockFor` answers `false` for it -- and `Structures` + added 1 to that `false`. The arithmetic threw, which failed the mesh + build for every map in the neighbourhood, which left the mode with no + terrain and dropped it to the flat 2D path entirely. It now builds no + ring: `tileLookup` answers nil past the body and those keys are never + written, which the rest of the file already copes with -- every + neighbour query in it reaches one step outside the analysed range and + reads nil for its trouble, so an absent cell is the shape "nothing" has + always had here. + + **WATER changed nothing on screen.** The ring is BAKED INTO THE MESH in + this mode rather than drawn each frame, and nothing dropped the cache + when the option moved, so the old ring simply stayed until the meshes + were invalidated for some other reason. The pipeline's update hook now + polls `TileRenderer.voidFill` and invalidates on a change -- polled + rather than hooked because the engine changes it from three places (the + options row, `applyOptions` on load, `setVoidFill`) and none of them + announces it, and checked ahead of the active() gate so switching it + while voxel mode is off still drops what is cached. + + `tests/drivers/voxel_void_probe.lua` walks the three modes and reports + the border block, whether the mesh built and whether the scene took the + 3D path. It deliberately does NOT invalidate the cache itself, since + doing so would hide the second half of this. + +- Water and flowers did not animate. The 2D path animates them by + OVERDRAWING the animated cells on top of the static tile layer each + frame, which a single static mesh has no equivalent of -- the geometry + samples one texture and that is that. So `TerrainAtlas` animates the + texture instead: a private copy of the atlas whose animated tile slots + are rewritten when the step advances, which moves every instance of that + tile across the whole mesh at once. Which is what the Game Boy does in + the first place (`home/vcopy.asm` rewrites the tile's VRAM bytes); the + overdraw is the port's workaround for a tile layer, not the original. + ~130 pixels of work three times a second, on the same + `TileRenderer.animFrame` clock the 2D path uses, so the two can never + disagree about which frame they are on. +- The frame files (`flower1..3.png`) are raw grayscale and have to land on + the colours of the tile they replace, but the two recolour paths do not + share a rule -- SGB bakes one world palette over everything, RED++ picks + a palette group per tile graphic. So the shade mapping is LEARNED from + the atlas: read the static tile's slot in the raw art and in the finished + atlas side by side and ask what each shade became. Right under both + without this file knowing which one ran. +- Terrain art was off the pixel grid by up to half a pixel, with one art + pixel per tile sampled twice and another never at all. A tile is 8 + texels across 8 world pixels -- one texel per pixel exactly -- and + `ChunkMesher`'s uv inset squeezed that art into a 7-texel sample range + while the quad still covered 8 world pixels, so it advanced 7/8 of a + texel per pixel and drifted. The inset exists to stop the rasteriser + reaching a neighbouring tile along a shared edge, but half a texel was + fifty times more than that needs: 0.02 is as safe (interpolation error + is nowhere near it) and drifts 0.25% of a pixel across a whole tile. + Nothing showed the fault until the voxel wireframe drew the grid those + pixels were supposed to be sitting on. + +### Changed + +- `Voxel3D.SHADOW_KX/KZ` are -0.85 / -0.55, from +0.30 / +0.45: the sun + crosses to the southeast and drops from 62 degrees to 45. The bearing + leans WEST of northwest on purpose -- a character is drawn as a slab + leaning away from the camera, which covers the ground due north of its + feet, so a shadow thrown straight up-screen lands entirely underneath + the figure casting it and is never seen. +- `Voxel3D.SHADOW_ALPHA` 0.32 -> 0.40, a quarter darker. +- `FACE_SHADE` east 0.78 -> 0.84 and west 0.78 -> 0.72. The two were equal + because the old sun sat due northwest and they were symmetric about it; + under a southeastern sun east is a lit flank and west a shaded one. +- A character's shadow lookup runs off the UPRIGHT card the sun saw, not + the leaning slab the camera sees (`Voxel3D.draw`'s `sunModel`). Casting + the leaning slab instead would shrink every shadow to nothing as the + camera flattened toward top-down; looking up with the leaned position + put each sprite's own card across its front. +- The contact-shadow term in `ChunkMesher` was a one-directional stripe + keyed to a northwestern sun -- two neighbours, one corner, top faces + only. It is now the ambient occlusion above. +- The light frustum is fitted to the ground the CAMERA CAN SEE rather than + to a view-sized box around the focus, and both of its margins are now + asymmetric -- for opposite reasons. The camera sits south of its focus + and looks north, so the ground it sees runs far north and barely south; + the sun sits southeast, so the casters for that ground stand south and + east of it. Paying for a view-sized box plus caster margin on all four + sides covered about a third of what was on screen at 75 degrees, and + overpaid at 15. +- Shadows ease off at the frustum's rim instead of ending on it. Past the + low rungs the horizon is further out than any box worth paying for, and + a covered region that simply stops draws a hard line across the middle + distance where every shadow ends at once. + +The Pokemon Center interiors. One `POKECENTER` group in +`data/voxel_heights.lua` plus one new class, and because +VIRIDIAN_POKECENTER places every tile the tileset's other maps use, the +one pin set covers all eleven Centers and the Celadon Hotel. + +### Added + +- A `counter` class (8px, upright): half-cell furniture. One 8px band, + so exactly the drawing's bottom row stands up as the front and every + row above it rides the top face in drawn order. `table`'s 12px could + not be retuned for it; the houses share that class. + +- `tilesets.POKECENTER` in `data/voxel_heights.lua`. Before it, the + detector merged the wall-touching counters and healing machines into + the wall band and towered them 3-6 blocks, flattened the machines' + near-black screens to void, read the pillar bases, plant pots and + machine bodies as ponds (the $14/$32/$48 stale-cache water fallback), + boxed each plant pair into one hedge cube, and extruded the lounge + seat -- a PERSON is drawn into its tile art -- into a monolith wearing + his face. +- The pins, by shape: the wall band, windows, poster, pillars and the + 16px machine bodies are `wall`; the counters (with the nurse's tray) + are `counter` and the PC's desk is `table`; the machine screens and + the PC are `billboard`, standing on the pinned boxes below them; the + potted plants are `prop` standees like every other interior plant. +- The lounge couch with the man sitting on it is a `counter` box: its + bottom row stands up as the couch's front and the cushion and the man + ride the top face, each drawn exactly once. + He cannot be stood upright, and the reason is structural rather than a + tuning question. His skin pixels span two tile rows and stop dead at + the row 9/10 seam; folding two rows upright requires both to share a + class, which makes the box two tiles deep, and a fully folded box + repeats its north row across its whole top face. So every upright + arrangement puts his head on screen two or three times -- as a 16px + seat-back, on the front and twice more on the top; as a 32px bookcase, + a cabinet taller than the room's own walls. Dropping the seat in front + of him to floor level only changes which copy you see. Nor can he be a + standee: the drawing has no floor margin, so all three non-black + shades touch the cluster rim and the mask drains 307 of its 420 + interior pixels -- 46% of him even segmented alone, because his skin + is the same light shade as the couch behind him. +- Survey evidence: full before/after passes of VIRIDIAN_POKECENTER at + 15/35/50 degrees, plus spot-checks of CELADON_POKECENTER and + CELADON_HOTEL (shared tileset, both inherit correctly) and of + REDS_HOUSE_1F, OAKS_LAB and VIRIDIAN_CITY (unchanged -- the new class + is additive and no other tileset lists it). + +## 1.3.0 + +Terrain meshing goes asynchronous, instanced and bounded. The first voxel +frame used to build every neighbourhood map synchronously (a ~2.4s +freeze), retain every map's analysis forever (gigabytes over a +cross-region trek), and string stray pixels along map seams. + +### Changed + +- Mesh builds stream in the background. `ChunkMesher` queues per-map + build jobs and `pump()` -- driven from the pipeline's update -- runs + them inside a few-millisecond frame budget (`lib/BuildBudget.lua` + suspends the build coroutine mid-loop when the slice is spent). The + camera tween holds at flat until the current map's terrain exists, so + toggling voxel mode shows a handful of flat frames instead of a frozen + one; neighbours pop in as they finish. Warp fades prefetch the + destination (the pipeline update ticks while the Transition covers the + screen, with a wider pump slice), so a door exit lands on terrain that + is already built. +- Vertex packing goes through FFI into one native buffer + (`Mesh:setVertices(ByteData)`) instead of a Lua table per vertex -- + the headless table path remains for the pure `geometry()` API and its + suite. +- Round-tree hulls are carved once per (tileset, art, ground set) and + kept as stamps -- template plus cell offset, expanded during vertex + packing -- instead of materialized per-cell quad tables. A route's + border forest was ~500 quads x hundreds of cells of retained heap. +- Mesh and analysis caches evict down to the live neighbourhood (current + map + rendered neighbours, plus one set of history so a house + round-trip keeps the town warm). Evicted meshes are released + explicitly. Memory over Pallet -> Mt Moon: was ~2.9GB and monotonic, + now oscillates between ~90 and 200MB. + +### Fixed + +- Stray pixels along map seams: ring props (border-tree hulls) whose + quad CENTER sat exactly on a neighbour body's edge line escaped the + strict point-in-rect mask and survived as fragments of otherwise + dropped trees. Object quads now keep/drop by their full extent, + boundary inclusive; props straddling the body edge also stay whole + instead of shedding their outer half. +- The one-step "ledge hop" when crossing a connection into a tree-ringed + map: the seam step stands the player one cell off the new map, where + `Map:cellTile` border-extends into the borderBlock -- a raised tile on + maps ringed with trees. Off-map ground now reads as height 0 (the + departed neighbour's flat walkway, which is what is actually rendered + there). + +## 1.2.0 + +Buildings stop being boxes wearing their own elevation. A profiled +building is voxelized from its own sprite, band by band -- the pipeline +written up in `assets/docs/buidling_to_voxel/`. + +### Added + +- `lib/Buildings.lua`: a building archetype. Where the volume path folds a + whole drawing upright (roof, facade and sloped ends alike) into one box, + this classifies each BAND of the drawing by the 3D surface it depicts and + applies the matching operation: top-facing rows lay flat over the + footprint, the facade extrudes straight back, an awning band juts past + the walls, and the drawn taper at the ends becomes a stepped slope in + elevation. Every visible voxel carries a real texel of the drawing, so + the model recolours with the atlas. +- A `buildings` section in `data/voxel_heights.lua`. A building is matched + by its exact tile grid (the drawings are catalogued in `assets/docs/buildings/`), + so one entry covers every map that places the same art -- Red's house, + Blue's house, Bill's, the Copycat's and the two Fuchsia houses are one + seven-placement entry, and Oak's lab is a second. Only the band table is + authored; the silhouette, the taper rate, the eave height and every + window and doorway are measured off the pixels. +- The flat-roofed civic block and its sixteen relatives -- every Pokemon + Center and every Poke Mart, Fuchsia Gym, the museum, the Game Corner, + Celadon Mansion and its department store, the Power Plant, the Route 5 + and Route 22 gates, Silph Co and five anonymous scenery blocks. They are + one architecture drawn at eleven different footprints, from 4x4 cells up + to Silph Co's 8x12, and they share one band table: their lattice is drawn + from straight above, so the measured taper comes out flat and the whole + band is depth under one level roof. No new roof mode was needed -- the + drawn profile was always the shape, and a drawing with no taper simply + yields a level one. +- Pewter's museum hall (`assets/docs/buildings/B24`). It is the one + sloped-roof building in this pass, and the only one so far whose roof + texture is not a plain repeat: the drawing states its own period by + repeating the whole lattice-and-course motif, rows 8..31 again at 32..55, + so the cycle is 24 rows and the roof carries its drawn courses across the + depth instead of a bare lattice. The band below them is the roof's + fascia, wider than the wall it covers, so it belongs to the roof and + lands on the south rim. Note the museum is TWO drawings: this hall and + the east entrance beside it, which is B18 and shares its drawing with the + Route 2 gate. +- The rest of the 2:1 sloped-roof buildings: both gym drawings (the + standard one at Cinnabar, Pewter, Vermilion and Viridian plus the + Fighting Dojo, and the wider Celadon / Cerulean / Saffron one), the 4x2 + cottage that houses Mr Fuji, the Cubone house, Bill's grandpa, the Name + Rater and the Viridian school, Cerulean's three wide houses, the day + care, and three scenery blocks -- among them B01, which at 19 placements + is the commonest drawing in the game. Each one's roof band is pixel for + pixel one of the three already authored, so they take that sibling's band + table unchanged: 16 rows for Red's house's, 32 for Oak's lab's, 64 for + the museum's. +- The Safari Zone rest houses and the Victory Road entrance, the first + buildings outside the `OVERWORLD` tileset -- `buildings` is keyed by + tileset and until now only had the one section. The rest house's + corrugated roof repeats every 5 rows rather than the overworld lattice's + 8, which is the point of `roofCycle` being authored per building. +- Route 10's scenery block, via a new `seal` field. Its drawing has no + black base course -- it ends on a row of light brick -- so the silhouette + flood climbed in from the south border through the mortar and hollowed + the wall out, leaving 72% of the sprite in 65 pieces. `seal` names the + sides a drawing runs off rather than closing, and the flood does not seed + there: sealed, it is 95% in one piece, and the model is its twin the + museum's. No other building sets it, and none changes by a voxel. +- Together these take the mod to 31 of the catalogue's 34 drawings and 144 + of its 147 placements. The last three, and why each resists, are written + up in `assets/docs/buildings/REMAINING.md`. +- A roof no longer runs past the drawing's own silhouette. These sprites + are inset from their boxes, and the columns outside the inset carry no + roof: they now get none, and the fascia belongs to the outermost columns + the drawing actually paints. Before, they raised a four-voxel slab of + black kerb the full depth of the building, flanking its walls at ground + level. Nothing shipped hit this -- Red's house and Oak's lab are drawn + edge to edge -- so no existing model changes by a single voxel. +- Windows and doorways sink a voxel behind their frames, found rather than + listed: a pane is a non-black region the drawing seals off behind its own + black outline. A nested frame (the door's own little window) layers for + free. +- `tools/building_voxels.py`: the reference implementation of the same + algorithm, with the geometric asserts and isometric previews Stage 5 of + the methodology calls for. It and the runtime agree exactly on voxel and + shell counts for all 19 templates -- 96,617 / 12,866 for Red's house up + to 3,715,963 / 146,762 for Silph Co, which ship as 3,410 and 13,994 + quads. Its slope asserts read the drawn columns only and stand down for a + roof with no taper, where the check is that the roof is level instead; + its previews fit the projection to the model rather than to a fixed + camera, so a building taller or deeper than the first two still lands on + the canvas. + +### Changed + +- A voxelized building is as tall as its facade plus its roof slab rather + than as tall as its drawing: the roof rows are DEPTH now, not height, so + Red's house is 36px over a 4x3-cell plot instead of a 48px cube. +- Round trees (the `cylinder` pin: lone canopies and the border tree + wall) stop being lathes -- the sprite wrapped around a 12-segment + column read as exactly that, art smeared on a barrel. Each cell is now + a real voxel hull: the canopy is segmented out of its cell as the + darkest-pixel outline plus everything it encloses (which also drops + the background grass that used to inflate every row to full width, and + the cast shadow under the ball), and each mask row runs its own span's + circular chord in depth -- the front view is the sprite pixel for + pixel, the plan view is the sprite's width profile turned in depth. + Dithered art with no closed outline (the tree wall) falls back to + light-shades-only flooding, per the methodology doc's boundary rule. + Sides de-outline like building extrusions so flanks read as canopy + rather than solid black, and dome caps keep their outline on the rim + while the interior samples the canopy a couple of rows deeper. +- A `post` standee pool, pinned for the overworld's vertical fence-post + cell (tiles 14/85 -- across every map the pair appears only as this + cell). The detector already turns HORIZONTAL fence runs (tile 57) into + per-post standees, but a vertical run of repeated cells trips its + scenery-repetition guard and fell to the volume path as a + fence-textured tower (Viridian's west line, Route 25). + `post` extracts every CELL as its own cluster -- pooled clustering + would stand the whole line up as one drawing-tall slab at one depth -- + and classifies pixels the way the detector does (non-white is body) + rather than by the pinned-prop outline rule, which would strip the + posts to black skeletons; at the detector's own 6px depth, pinned and + detected fences look alike. +- Town signs move from the `billboard` pool to a new `signpost` pool: the + same per-pixel standing slab, but 2 voxels thin instead of 10. A sign + is a plate on a stick, and the standee body that keeps a TV from + vanishing at shallow angles read as a solid block of furniture here. +- The ground under a round tree matches the tree's own drawn background + instead of the map's commonest ground tile. The hull's segmentation + already knows which pixels are NOT the tree; those pixels are scored + against every flat ground tile the map places and the closest art + wins, per template -- so border trees drawn over checker grass stand + on checker grass even on a map that is mostly pale path (the old + fallback painted path under every mid-forest tree, which has no flat + neighbour to vote with). The drawn cast shadow stays out of the score: + no ground tile carries a shadow, and its darks would drag every match. + +### Fixed + +- The generic town-house tileset (`HOUSE` -- Blue's house, Daisy at her + table, and eighteen more homes, the schoolhouse and the trashed house + among them) is now pinned in `data/voxel_heights.lua` the way Red's + rooms already were: the dining table stops towering as a wall-height + volume and sits at table height with its front folded upright, stools + become seat-high boxes that characters sit on, the corner potted + plants become per-pixel standees instead of texture-smeared box + stacks, the bookcases get clean capped tops, and the wall band (with + its window, picture and the schoolhouse blackboard) stays one 16px + face. The schoolhouse's open book stands on the pinned tabletop as a + cutout, and the trashed house's ransacked table corner keeps table + height. +- Interior door mats lie flat again in Red's and the generic houses. + Their collision tile is $14, which the engine's stale-cache fallback + counts as water in every tileset, so the rug recessed into a pond lip; + a `ground` pin now overrides the water read. + +## 1.1.0 + +Interior furniture gets the shapes it depicts (docs/voxel-survey.md is the +procedure that found and verified these). + +### Added + +- Furniture shape classes in the profile: `bed` (a low slab wearing its + top-down art), `table` and `desk` (boxes at their drawn height whose + faces fold the artwork up), `relief` (a prop drawn from above -- a + game console -- lying flat and extruding a few voxels inside its + outline), the standee pools `billboard` (10px) / `prop` (5px) / + `stool` (5px, and characters standing on its walkable cell sit at + seat height) / `cutout` (one voxel: pure profile, for the vase on the + table), and the stair archetypes `stair_e`/`stair_w` (a rising flight + of real steps) and `stair_down_e`/`stair_down_w` (a sunken stairwell + descending below the floor -- stairs that lead down). Separate pools + cluster separately, so touching drawings never merge into one cutout. +- Standee clusters split into per-pixel connected components, each + standing on its own feet in the depth band of the row it is drawn in: + two stools stacked in adjacent cells become two stools, and no + fragment of a drawing ever floats at its bounding-box height. A + `cutout` keeps only its largest component -- a cast shadow's drawn + edge is background, not a floating scrap. +- `bookcase` class: free-standing shelf drawings collapse in ranks onto + one-cell-deep boxes at their full drawn height, back rows becoming + hidden floor; the trim row above a rank -- undetected structure or a + row pinned `table`, since the same trim tiles cap other furniture -- + is adopted as its cap. Pinned for Oak's Lab (`DOJO`). +- Oak's Lab tables pinned `table`: the starter-ball display and the + north tables stand at real table height, the display frame's black + corner brackets no longer auto-extract into standing prisms, and the + Poke Ball / Pokedex sprites ride the authored height onto the + tabletops. +- Pinned props drawn directly above a pinned box stand ON it: the PC + monitor on its desk, the flower pot on the dining table. +- Profile pins for `REDS_HOUSE_1` / `REDS_HOUSE_2` (Red's house and the + Copycat's, both floors): bed, stools, tables, PC desk with its + standing monitor, bookcases, TV standing on the floor behind the game + console's relief, potted plant, flower pot, both staircases, and the + wall/window band. +- `tests/drivers/voxel_survey.lua`: screenshot-survey driver behind the + repeatable inspection procedure (SURVEY_MAP / SURVEY_SPOTS / + SURVEY_LEVELS / SHOT_DIR), documented in docs/voxel-survey.md. + +### Changed + +- Pinned props are segmented the way the art is authored: objects wear a + black outline, so background is the shades touching the cluster's edge + (white floor around a TV, grey tabletop around a vase) flooded in from + the aprons; the outline, its interior, paint whites and anything they + enclose survive -- pixel-perfect cutouts on any surface. +- Indoor structure analysis floods background from all four aprons and + accepts ground contact on any side (outdoors keeps the south-only rule + that protects roofs), so face-on furniture drawings voxelize per pixel + instead of rising as wall-height volumes. +- Profile-pinned standees are 10px deep (detected props stay 6px), so a + deliberate object like a TV keeps a body at shallow camera angles. +- Authored upright boxes fold their artwork up every face (flanks and + back wear the front stack darkened) and top faces keep the drawn + tabletop: face-on rows wear the row above the fold instead of + repeating their front art lying flat, and a run that folded entirely + tops with the furniture row drawn above it (a bookcase's shelf trim). +- Characters no longer ride a pinned stair tile's class height: stairs + are walked through at floor level, fixing the step-up onto thin air in + front of stairwells. + +## 1.0.0 + +First release, ported from the engine-internal voxel branch onto the +`render_pipelines` mod API. + +### Added + +- `voxel` render pipeline: 3D diorama overworld with extruded terrain, + depth-buffered occlusion, leaning sprite billboards, drop shadows and + contact AO. VOXEL options row and hotkey `6` (OFF / 15 / 35 / 50). +- `tiltshift` render pipeline: a `worldPresent` post-process giving the + miniature-photo look. T-SHIFT options row and hotkey `9` (OFF / 1 / 2 / 3). +- Carved voxel models for 67 overworld sprites, plus the + `tools/build_voxels.py` that produced them. +- `data/voxel_heights.lua`, the hand-authored tile shape profile. + +### Changed from the pre-mod version + +- The level is no longer the mod's to keep. The engine owns the ladder, the + options rows, the hotkeys, persistence and the TILT exclusion; the mod + keeps only the camera-angle tween. +- Persistence moved from `save.options.voxel` / `save.options.tiltshift` to + `save.options.pipelines.voxel` / `.tiltshift`. +- Hotkeys moved from `4`/`9` to `6`/`9`: the fork already uses `4` for + survey zoom. +- The tilt-shift pass is a declared `worldPresent` stage rather than a call + spliced into the world draw, so it composes with any world pipeline + instead of only this one. +- The cut-tree animation now draws in voxel mode; the pre-mod version + omitted it from the 3D field-effect list. diff --git a/README.md b/README.md new file mode 100644 index 0000000..fad3d8f --- /dev/null +++ b/README.md @@ -0,0 +1,120 @@ +# Dramatic Shape Voxel Mod + +The overworld as a 3D diorama. Terrain is extruded into real geometry, +occlusion comes from a depth buffer rather than a y-sort, characters stand +as leaning sprite slabs, a shadow map throws real cast shadows across +whatever they land on, and an optional tilt-shift pass sells the +miniature-model look. + +Purely presentational. Nothing here reaches collision, movement, triggers +or scripts — it changes what the world *looks* like and nothing about what +it *is*. Battles, menus and cutscenes are untouched; only the free-roam +overworld draws differently. + +## Using it + +| control | does | +| --- | --- | +| `6`, or the **VOXEL** options row | OFF → 15 → 35 → 50 → 75 → OFF (camera pitch) | +| `9`, or the **T-SHIFT** options row | OFF → 1 → 2 → 3 → OFF (miniature blur) | +| the **V-GRID** options row | OFF / ON — a one-pixel wireframe on every voxel | +| the **V-CURVE** options row | OFF → 1 → 2 → 3 — bend the world over the horizon | + +75 degrees is a rung the engine's flat **TILT** could not have: it projects +the world canvas as one rigid plane, which degenerates into a horizon line +down there, where real geometry only gets more of itself to show. + +V-CURVE is the *curved world* — every vertex pushed down by the square of +its horizontal distance from the camera's focus, so the ground under you +stays flat and the map bends away over a near horizon. It is not a fisheye: +a fisheye is a lens, a screen-space warp that bends straight lines +everywhere and resamples every pixel to do it. This bends the geometry, so +lines near the camera stay straight and the art stays crisp. + +Both pipeline levels persist in `save.options.pipelines`, and V-GRID and +V-CURVE in `save.options.modOptions.DRAMATIC_SHAPE` — the same place the mod +manager's own settings page for this mod reads, so each row is one setting +in two places. VOXEL and the engine's **TILT** are two answers to the same +question, so switching one on switches the other off. + +Without shader or depth-canvas support the rows still cycle but the world +stays 2D — the mode reports itself unavailable and the engine keeps the +vanilla path. + +## How it is built + +This is a *rendering pipeline* mod (see `docs/modding.md`). `main.lua` +registers two records in the engine's `render_pipelines` registry and +writes almost nothing else — the ladder, the options rows, the hotkeys, +persistence and the free-roam gate are all engine plumbing driven from +those records: + +- **`voxel`** — a `drawWorld` pipeline. Replaces the world pass with a + rendered 3D scene and returns it as one window-resolution canvas. +- **`tiltshift`** — a `worldPresent` pipeline. Post-processes the finished + world *before* the UI composites, so the diorama blurs and the text boxes + in front of it stay crisp. + +Everything else lives in `lib/`, loaded through the mod's own namespace +(`V.require`) rather than `package.path`, which a mod directory is not on: + +| module | role | +| --- | --- | +| `Voxel3D` | the 3D pass: shader, depth buffer, camera, projection | +| `ShadowMap` | the sun's own pass: what it cannot see is in shadow | +| `WorldCurve` | the curved world: the Animal Crossing horizon | +| `VoxelGrid` | the wireframe toggle | +| `ModSetting` | a setting of this mod's own: ladder, store, options row | +| `Mat4` | the 4x4 matrix math the camera and model transforms need | +| `VoxelState` | the camera angle and its ease; the engine owns the level | +| `VoxelScene` | assembles one frame: shadows, terrain, characters, grass | +| `ChunkMesher` | a map's block layer → a terrain mesh, cached per map | +| `Structures` | flood-fills drawn things and decides how tall each is | +| `Buildings` | a profiled building sprite → a voxel model, band by band | +| `TileShape` | resolves every tile to an extrusion class and art mode | +| `TerrainAtlas` | the texture geometry samples: SGB palette bakes, and the animated water/flower tiles | +| `SpriteBillboards` | a sprite frame → a leaning slab with side relief | +| `VoxelModels` | the carved character models in `assets/voxels/` | +| `TiltShift` | the two-pass separable blur and saturation lift | + +`data/voxel_heights.lua` is the hand-authored shape profile: listing a tile +there pins its height and art mode over the automatic detector, and its +`buildings` section names whole building sprites to voxelize band by band +(`assets/docs/buidling_to_voxel/` is the pipeline; `assets/docs/buildings/` catalogues the +drawings). Another mod can pin its own tiles by shipping the same file, and +can replace a character's model with `overrides/voxels/.lua` — models +resolve through the engine's asset search path before falling back to ours. + +`tools/build_voxels.py` is what carved `assets/voxels/` out of the +overworld sprite sheets. `tools/building_voxels.py` is the reference +implementation of the building voxelizer — it builds the same models +offline, asserts their geometry and renders isometric previews, and its +voxel and shell counts are what `lib/Buildings.lua` is checked against. + +## Engine seams it relies on + +The mod reads a few engine internals (hence `"permissions": +["engine_internals"]`), all of them deliberate read-only seams: + +- `Player:pose()` / `NPC:pose()` — the sheet, position, facing and step + phase a frame renders to, so 2D and 3D can never disagree about a pose. +- `SpriteRenderer:resolveImage()` and `SpriteRenderer.STAND/WALK` — the + live sprite image and frame tables, so palette modes and sprite-replacing + mods apply to the geometry with no second copy of the logic. +- `TileRenderer.recolorSample` — the exact shade cutoffs the 2D palette + shader uses, so baked terrain lands on the same colours as flat tiles. +- `TileRenderer.animFrame()` / `.atlasImageData()` / `.defaultAnimatedTiles()` + — the tile-animation clock, the pixels behind the atlas texture, and the + vanilla water/flower spec. A static mesh cannot overdraw animated cells + the way the tile layer does, so it animates the texture instead; all + three are needed to do that on the engine's own clock and colours. + +## Tests + +```sh +luajit mods/DRAMATIC_SHAPE/tests/dramatic_shape_test.lua +``` + +Runs headless: the mod loads, both pipelines land in the registry with the +shape the engine dispatches on, the ladders and persistence round-trip, and +the whole thing stays inert on a machine with no 3D support. diff --git a/assets/docs/buidling_to_voxel/sprite_extract.py b/assets/docs/buidling_to_voxel/sprite_extract.py new file mode 100644 index 0000000..97b6a83 --- /dev/null +++ b/assets/docs/buidling_to_voxel/sprite_extract.py @@ -0,0 +1,62 @@ +"""Stage 1: sample a GB sprite to native resolution, extract palette + +silhouette (light-only flood fill), write sprite_data.json. +Usage: python3 sprite_extract.py """ +import json +from collections import deque, Counter +from PIL import Image + +import sys +SRC = sys.argv[1] if len(sys.argv) > 1 else 'sprite.png' +img = Image.open(SRC).convert('RGB') +W, H = img.size +sx, sy = W // 64, H // 48 # 8x8 blocks +assert sx * 64 == W and sy * 48 == H, (W, H) + +# sample block centers -> 64x48 +px = img.load() +grid = [[px[x * sx + sx // 2, y * sy + sy // 2] for x in range(64)] for y in range(48)] + +# palette +counts = Counter(c for row in grid for c in row) +pal = sorted(counts, key=lambda c: -counts[c]) +print('palette:', [(('#%02x%02x%02x' % c), counts[c]) for c in pal]) +idx = {c: i for i, c in enumerate(pal)} + +lum = lambda c: 0.299 * c[0] + 0.587 * c[1] + 0.114 * c[2] + +# flood fill "outside" from border pixels, blocked by the dark outline +outside = [[False] * 64 for _ in range(48)] +q = deque() +for x in range(64): + for y in (0, 47): + if lum(grid[y][x]) > 60 and not outside[y][x]: + outside[y][x] = True; q.append((x, y)) +for y in range(48): + for x in (0, 63): + if lum(grid[y][x]) > 60 and not outside[y][x]: + outside[y][x] = True; q.append((x, y)) +while q: + x, y = q.popleft() + for nx, ny in ((x+1,y),(x-1,y),(x,y+1),(x,y-1)): + if 0 <= nx < 64 and 0 <= ny < 48 and not outside[ny][nx] and lum(grid[ny][nx]) > 60: + outside[ny][nx] = True; q.append((nx, ny)) + +n_out = sum(r.count(True) for r in outside) +print('outside pixels:', n_out, '(doc says 218)') + +# per-band outside count for sanity vs the doc's silhouette table +for r in range(6): + band = sum(outside[y][x] for y in range(r*8, r*8+8) for x in range(64)) + print(f' r{r+1}: {band}') + +# ascii mask (o = outside) +for y in range(48): + print(''.join('o' if outside[y][x] else '.' for x in range(64))) + +rows = [] +for y in range(48): + rows.append(''.join('.' if outside[y][x] else '%x' % idx[grid[y][x]] for x in range(64))) + +json.dump({'pal': ['#%02x%02x%02x' % c for c in pal], 'rows': rows}, + open('sprite_data.json', 'w')) +print('wrote sprite_data.json') diff --git a/assets/docs/buidling_to_voxel/sprite_to_voxel_methodology.md b/assets/docs/buidling_to_voxel/sprite_to_voxel_methodology.md new file mode 100644 index 0000000..40bea60 --- /dev/null +++ b/assets/docs/buidling_to_voxel/sprite_to_voxel_methodology.md @@ -0,0 +1,216 @@ +# Sprite → Voxel Methodology +## Translating Game Boy ¾-view overworld sprites into 3D voxel models + +Worked example: Red's house exterior — `PALLET_TOWN` blocks 56/57/60/61, 64×48 px +(`reds_house_voxel.html`). The same pipeline applies to any GB building sprite. + +--- + +## Core principle + +A Game Boy overworld sprite is a fake-3D projection: it packs several different +3D facings into one flat image. Roof tops are drawn as if seen from above, +walls as if seen from the front, and sloped surfaces as diagonal silhouettes. +Voxelization is therefore **not** one operation — it is (1) classifying each +region of the sprite by which 3D surface it depicts, then (2) applying the +matching geometric operation per region. + +Two invariants govern everything: + +1. **Every visible voxel color comes from a sprite pixel** wherever the lookup + lands inside the silhouette. Synthesis is allowed only for geometry the + sprite implies but never paints (undersides, depth extensions, interiors), + and synthesized cells must continue the sprite's own periodic patterns and + 4-shade palette. +2. **The sprite is ground truth, not the tile documentation.** The tile-grid + doc described 1px ground flanks; the actual sprite has 5px insets on the + ground floor and a 3-level wedding-cake silhouette. Always extract from the + real pixels and verify any doc claims against the extracted mask. + +--- + +## Stage 1 — Extraction + +Sample the sprite down to its native resolution (uploads are usually integer +upscales; sample the center of each scale×scale block, never bilinear). +Quantize to the palette — for GB art expect exactly `#ffffff / #aaaaaa / +#555555 / #000000`. Anything else in the histogram means the sampling grid is +misaligned. + +Compute the silhouette with a flood fill from the image border that spreads +**only through light pixels (luminance > 130)**. This threshold is load-bearing: +the black outline (#000) and the dark shading (#555) together form the +boundary. A naive "not black" threshold lets the fill eat the #555 shaded +flanks and corrupts the silhouette — that bug produced a 398-vs-148 pixel +discrepancy on the first pass here. + +Output: a JSON of the palette plus one string per row (`.` = outside the +outline, digit = palette index). Dump the mask as ASCII and read it — this is +where the building's real structure becomes visible, and it is the input to +Stage 2. Tooling: `sprite_extract.py`. + +## Stage 2 — Band classification + +Segment the sprite rows into horizontal bands and assign each a facing. The +cues generalize: + +| Cue in the mask / pixels | Reads as | 3D treatment | +| --- | --- | --- | +| Top band, plain fill with full-width course lines | Roof top seen from above | Lay horizontal (flat) | +| Silhouette tapering at a constant rate (here 2 px per row) with slat/stripe texture | Sloped roof surface; the taper rate **is** the slope | Stepped diagonal surface, 1 down per (taper rate) out | +| Band containing window/door frames | Vertical facade | Straight extrusion | +| Full-width band with a black underline sitting above an inset band | Ledge / awning overhang | Extrusion + protrusion | +| Dark `#555` runs beside a facade under a taper | Shadow on the wall beneath an eave | Leave as wall — the geometry above produces the shadow's meaning | + +The band table for Red's house, which Blue's house shares verbatim: + +| Sprite rows | Content | Treatment | +| --- | --- | --- | +| 0–15, x16–47 | Coursed grey panel, black rims, highlight course | Flat horizontal top | +| 0–15, flanks | White/dark slats, 2 px-per-row taper | Sloped ends, 2:1 | +| 16–23 | Gable wall, 3 windows, slat flank pixels | Extrude; roof solid overwrites the corners | +| 24–31 | Awning slab, double black underline | Extrude + 2-voxel ledge front/back | +| 32–47 | Ground floor siding, door (own inner pane), 2 windows | Extrude; recess panes | + +**Interpretation rules settled during this build — do not relearn them:** +a top-facing band must end up level everywhere (no synthesized skirts rising +through it); a tapering silhouette on a top band means *sloped surfaces in +elevation*, not chamfered corners in plan; and the slope's eave tips should +land where the sprite's taper pixels stop (here: just above the awning band). + +## Stage 3 — Geometry construction + +**Vertical bands** extrude straight back to depth `D` (26 here). Front and +back layers take the sprite pixel; interior layers take a **de-outlined** +color — if the pixel is black, walk inward up to 3 px for the first non-black +color. Without this, the side faces of the model are solid outline-black +slabs. With it, sides read as material with black front/back corner edges, +which is the correct GB-cartoon look. The back face becomes a mirror of the +front for free; that is sprite-pure and acceptable. + +**Ledges** replicate the band's front pixels ±2 voxels in z past the walls. +The sprite's own black-underline rows become the visible dark underside. + +**Recesses** delete the front voxel of every *non-black* pixel inside a +window/door rect. Frames stay proud; the identically-colored voxel behind +becomes the pane, one voxel deep. Rects with nested frames (the door's inner +window) produce layered relief automatically. + +**The flat top** lays the top-facing rows horizontal. The band is shallower +than the house (16 rows vs 34+ of depth), so extend it by **cycling a mid-row +band whose period matches the course rhythm** (rows 5–8 here, period 4) — +this continues both course lines and slat columns seamlessly. Map the +outermost sprite rows to the front/back rims so the black-line/fascia trim +survives. + +**Sloped ends** are driven by an elevation profile `T(x)`: flat at `YTOP` +over the plateau, dropping 1 voxel per (taper rate = 2) columns outward to +the eave tips. Build a solid of constant vertical thickness (4) following +`T(x)`, spanning the full roof depth including overhangs. Build order +matters: walls first, then the roof solid **overwrites** wall voxels it +intersects, then **trim** any wall voxel above `T(x)` so nothing pokes +through the surface. The wall strip left exposed beneath the slope shows the +sprite's own #555 shadow pixels — the sprite encodes this geometry. + +**Outline pass**: cells on the roof's outer boundary get black (top layer), +grey (second layer), black (below) — reproducing the sprite's +black-grey-black fascia — and all interior undersides are dark. + +Parameters used here, to tune per building: depth `D=26`; roof overhang 4 in +x and z beyond the walls; slab thickness 4; `YTOP=35`, derived so the eave +tips (after the 10-step drop) land one voxel above the awning band, matching +where the sprite's taper ends. + +## Stage 4 — Color sourcing off the sprite + +For any roof cell, map z to a sprite row (`roofSy`), then look up `(x, row)`. +If that lands inside the silhouette, use the pixel. If it lands outside +(overhang extensions), continue the sprite's periodic texture: the slat +rhythm is period 3 with a per-side phase (left flank white at `x % 3 == 1`, +right at `x % 3 == 2` — derive the phases from the actual pixels, and mind +negative-modulo semantics in JS). Plain top areas fall back to the mid grey. +Ground plane and path are presentation-only and the single place non-palette +colors are permitted. + +## Stage 5 — Verification (non-negotiable) + +Every bug in this build was caught by one of these, none by eyeballing alone: + +1. **Dual implementation parity.** Build the identical algorithm in a + reference implementation (Python) and in the shipping runtime (JS in the + HTML). Diff total voxel count and post-cull shell count — they must match + exactly (final build: 58,356 / 14,169). +2. **Numeric asserts on intent.** Flatness: the set of y-layers above the + walls must be exactly the slab layers. Slope: the top-surface profile at + mid-depth must read tips → 1-per-2 steps → flat plateau, mirrored. Zero + wall voxels with `y > T(x)`. Full wall coverage by the roof footprint. +3. **Isometric preview.** A ~60-line painter's-algorithm render (sort by + `(x+z, y)`, draw top/left/right faces of shell voxels) catches texture and + layering mistakes cheaply before touching the runtime. +4. **Hidden-face culling.** Drop voxels whose 6 neighbors all exist before + instancing; render the shell as one InstancedMesh. + +Tooling: `voxel_build_verify.py` (builds, asserts, renders previews). + +## Repeat checklist + +1. Obtain the sprite; sample to native resolution via block centers. +2. Extract palette + silhouette (light-only flood fill, threshold 130); + review the ASCII mask. +3. Segment rows into bands using the Stage-2 cues; write the band table + before writing any geometry code. +4. Measure taper rates from the mask; derive `T(x)`, `YTOP`, overhangs, `D`. +5. Build: extrude verticals (de-outlined interiors) → ledges → recesses → + flat top (mid-row cycling) → sloped solids (overwrite, then trim) → + outline pass → ground presentation. +6. Verify: parity counts, profile/flatness/poke asserts, iso preview. +7. Ship: embed palette + row strings in the HTML; the builder runs + client-side and doubles as the reference implementation of the algorithm. + +## Applying this in the mod + +Because tilesets are shared, the band table can be keyed by tile id rather +than by sprite: each id gets a treatment record (extrude / lay-flat / slope, +plus ledge, recess, warp flags) in the spirit of +`mods/DRAMATIC_SHAPE/data/voxel_heights.lua`. Pinning blocks 56/57/60/61 with +the profile above voxelizes Blue's house identically for free and propagates +to the Fuchsia City, Route 25, and Saffron City instances of the same art. +The door's lower-left tile (27) is the warp/walkable tile — keep its recessed +front face aligned with the collision cell so the 3D doorway matches +`REDS_HOUSE_1F`'s warp. + +### What shipping it settled + +The mod implements this as `mods/DRAMATIC_SHAPE/lib/Buildings.lua`, driven by +a `buildings` list in the profile. Three things changed from the sketch +above, each for a reason worth keeping: + +**Key the band table by the building's tile GRID, not by tile id.** A tile +id is not a band: tile 23 is the house's awning course *and* the top of its +roof *and* the eave course that ends Oak's lab's much taller roof. Matching +the exact grid (`../buildings/` catalogues one per building, with every +map that places it) is unambiguous, still shares one entry across all seven +placements of Red's house, and cost nothing to verify — a scan of all 222 +maps returns exactly the catalogued placements. + +**Measure everything measurable.** Only the band table needs a human to read +the drawing. The silhouette, the taper rate, the eave height and every +window and doorway come off the pixels: a pane is a non-black region the +drawing seals behind its own black frame, and `T(x) = YTOP - topRow(x)` +falls straight out of the mask — which is also what makes `YTOP` stop being +hand-tuned. The eave tips landing one voxel above the awning, tuned by hand +here, then happens by itself. + +**Depth is the plot, and the drawn row → depth mapping has a direction.** +In a diorama `D` is free; on a map it is the building's footprint (48px for +Red's house, 64 for the lab), which is why the roof band has to be cycled so +far. And the drawing looks at the roof from the north: its top rows are the +FAR edge and its bottom rows the eave over the facade. Getting that backwards +is invisible in the counts and in a symmetric preview — it shows up in game +as a fascia along the wrong rim. + +One colour note: the outline pass's grey fascia band (`GREY` at `t-1`) is +right for the raw GB palette but comes out white once the atlas is +recoloured, turning every sloped end into a black-and-white zip. The +drawing's own eave is black / `#555` / black, and using that reads correctly +under every palette. diff --git a/assets/docs/buidling_to_voxel/voxel_build_verify.py b/assets/docs/buidling_to_voxel/voxel_build_verify.py new file mode 100644 index 0000000..c970d74 --- /dev/null +++ b/assets/docs/buidling_to_voxel/voxel_build_verify.py @@ -0,0 +1,162 @@ +"""Stages 3+5: reference voxel builder (mirrors the JS in the HTML), +hidden-face culling, and isometric painter previews for verification. +Run after sprite_extract.py in the same directory.""" +import json +from PIL import Image, ImageDraw + +data = json.load(open('sprite_data.json')) +rows = data['rows'] +WHITE, GREY, DARK, BLACK = 0, 1, 2, 3 +PAL = [(0xff, 0xff, 0xff), (0xaa, 0xaa, 0xaa), (0x55, 0x55, 0x55), (0x00, 0x00, 0x00), + (0xb7, 0xc7, 0x8d), (0xb1, 0xc1, 0x87), (0xd9, 0xd3, 0xc2)] +GROUND1, GROUND2, PATH = 4, 5, 6 + +inside = lambda x, y: 0 <= x < 64 and 0 <= y < 48 and rows[y][x] != '.' +col = lambda x, y: int(rows[y][x]) + +D = 26 # wall depth in voxels +vox = {} + +def interior_color(sx, sy): + """side faces shouldn't be solid outline-black: sample inward past the outline""" + c = col(sx, sy) + if c != BLACK: + return c + step = 1 if sx < 32 else -1 + for d in range(1, 4): + nx = sx + step * d + if inside(nx, sy) and col(nx, sy) != BLACK: + return col(nx, sy) + return c + +# ---- walls: sprite rows 16..47 extruded straight back -------------------- +for sy in range(16, 48): + y = 47 - sy + for sx in range(64): + if not inside(sx, sy): + continue + front, mid = col(sx, sy), interior_color(sx, sy) + for z in range(D): + vox[(sx, y, z)] = front if (z == 0 or z == D - 1) else mid + +# ---- awning ledge: rows 24..31 protrude 2 front and back ----------------- +for sy in range(24, 32): + y = 47 - sy + for sx in range(64): + if inside(sx, sy): + c = col(sx, sy) + for z in (-2, -1, D, D + 1): + vox[(sx, y, z)] = c + +# ---- recess panes: delete the front voxel of every non-black pixel ------- +RECESS = [(16, 23, 17, 23), (32, 39, 17, 23), (40, 47, 17, 23), # gable windows + (32, 39, 33, 39), (40, 47, 33, 39), # ground windows + (19, 28, 34, 45)] # door interior +for x0, x1, y0, y1 in RECESS: + for sy in range(y0, y1 + 1): + for sx in range(x0, x1 + 1): + if inside(sx, sy) and col(sx, sy) != BLACK: + vox.pop((sx, 47 - sy, 0), None) + +# ---- roof: flat top over x16..47, DIAGONAL sloped ends (1 down per 2 out) +ROOF_Z0, ROOF_Z1 = -4, 29 +ROOF_X0, ROOF_X1 = -4, 67 +YTOP = 35 + +def T(x): # elevation profile = the sprite's / \ taper + if x < 16: return YTOP - ((16 - x + 1) // 2) + if x > 47: return YTOP - ((x - 47 + 1) // 2) + return YTOP # [2,1]/[3,1]: horizontal, flat + +def roof_sy(z): + df, db = z - ROOF_Z0, ROOF_Z1 - z + if db <= 6: return db # back rows 0..6 (rim + courses) + if df <= 8: return 15 - df # front rows 15..7 (fascia + rim) + return 5 + ((df - 9) % 4) # middle: cycle rows 5..8 (course rhythm) + +def roof_col(x, z): + sy = roof_sy(z) + if 0 <= x < 64 and inside(x, sy): + return col(x, sy) # real sprite pixels: slats on ends, courses on top + if x < 16: return WHITE if x % 3 == 1 else DARK + if x > 47: return WHITE if x % 3 == 2 else DARK + return GREY + +for x in range(ROOF_X0, ROOF_X1 + 1): + t = T(x) + for z in range(ROOF_Z0, ROOF_Z1 + 1): + outer = x in (ROOF_X0, ROOF_X1) or z in (ROOF_Z0, ROOF_Z1) + for y in range(t - 3, t + 1): + if y == t: + c = BLACK if outer else roof_col(x, z) + elif outer: + c = GREY if y == t - 1 else BLACK + else: + c = DARK + vox[(x, y, z)] = c + +# trim wall corners that would poke above the sloped ends +for x in range(0, 64): + t = T(x) + if t < 31: + for y in range(t + 1, 32): + for z in range(0, D): + vox.pop((x, y, z), None) + +# ---- ground plate + path ------------------------------------------------- +for x in range(-10, 75): + for z in range(-12, 39): + vox[(x, -1, z)] = GROUND1 if (x + z) & 1 else GROUND2 +for x in range(17, 31): + for z in range(-12, 0): + vox[(x, -1, z)] = PATH + +# ---- cull to shell ------------------------------------------------------- +shell = [] +for (x, y, z), c in vox.items(): + if all((x + dx, y + dy, z + dz) in vox for dx, dy, dz in + ((1, 0, 0), (-1, 0, 0), (0, 1, 0), (0, -1, 0), (0, 0, 1), (0, 0, -1))): + continue + shell.append((x, y, z, c)) +print('voxels:', len(vox), 'shell:', len(shell)) + +# ---- isometric preview (front = -z, so mirror z for the render) ---------- +S = 4 +ZM = 40 +pts = [] +for x, y, z, c in shell: + pts.append((x, y, ZM - z, c)) +pts.sort(key=lambda p: (p[0] + p[2], p[1])) + +def P(x, y, z): + return (2 * (x - z) * S + 1250, ((x + z) - 2 * y) * S + 300) + +img = Image.new('RGB', (1800, 900), (0xca, 0xdc, 0x9f)) +dr = ImageDraw.Draw(img) +has = {(x, y, z) for x, y, z, c in pts} +def shade(c, f): + r, g, b = PAL[c] + return (int(r * f), int(g * f), int(b * f)) +for x, y, z, c in pts: + if (x, y + 1, z) not in has: # top + dr.polygon([P(x, y + 1, z), P(x + 1, y + 1, z), P(x + 1, y + 1, z + 1), P(x, y + 1, z + 1)], fill=shade(c, 1.0)) + if (x + 1, y, z) not in has: # right (+x) + dr.polygon([P(x + 1, y, z), P(x + 1, y + 1, z), P(x + 1, y + 1, z + 1), P(x + 1, y, z + 1)], fill=shade(c, 0.62)) + if (x, y, z + 1) not in has: # toward viewer (original -z front) + dr.polygon([P(x, y, z + 1), P(x + 1, y, z + 1), P(x + 1, y + 1, z + 1), P(x, y + 1, z + 1)], fill=shade(c, 0.82)) +img.save('preview_front.png') + +# second angle: from the back-right, no mirror +pts2 = sorted(((x, y, z, c) for x, y, z, c in shell), key=lambda p: (p[0] + p[2], p[1])) +img2 = Image.new('RGB', (1800, 900), (0xca, 0xdc, 0x9f)) +dr2 = ImageDraw.Draw(img2) +has2 = {(x, y, z) for x, y, z, c in pts2} +for x, y, z, c in pts2: + if (x, y + 1, z) not in has2: + dr2.polygon([P(x, y + 1, z), P(x + 1, y + 1, z), P(x + 1, y + 1, z + 1), P(x, y + 1, z + 1)], fill=shade(c, 1.0)) + if (x + 1, y, z) not in has2: + dr2.polygon([P(x + 1, y, z), P(x + 1, y + 1, z), P(x + 1, y + 1, z + 1), P(x + 1, y, z + 1)], fill=shade(c, 0.62)) + if (x, y, z + 1) not in has2: + dr2.polygon([P(x, y, z + 1), P(x + 1, y, z + 1), P(x + 1, y + 1, z + 1), P(x, y + 1, z + 1)], fill=shade(c, 0.82)) +img2.save('preview_back.png') +print('previews written') diff --git a/assets/docs/buildings/B01-unnamed-building.md b/assets/docs/buildings/B01-unnamed-building.md new file mode 100644 index 0000000..fe92a26 --- /dev/null +++ b/assets/docs/buildings/B01-unnamed-building.md @@ -0,0 +1,129 @@ +# B01 - Unnamed building + +![Unnamed building](img/B01_x10.png) + +`OVERWORLD` tileset, **4 x 3 cells** (8 x 6 tiles of 8px, 64 x 48 px). Appears **19 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..3; tile column c=1..8, tile row r=1..6. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | C C | C C | D E | + | F G | H H | H H | I J | + +-----+-----+-----+-----+ + y2 | K L | M M | M M | N O | + | P Q | Q Q | R R | R S | + +-----+-----+-----+-----+ + y3 | P M | M M | M M | M S | + | T U | U U | U U | U V | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 5 6 | 7 7 | 7 7 | 8 9 | + | 21 22 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+ + y2 | 37 38 | 10 10 | 10 10 | 40 41 | + | 15 34 | 34 34 | 75 75 | 75 31 | + +---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 31 | + | 78 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 7, 7, 7, 7, 8, 9 }, -- r1 + { 21, 22, 23, 23, 23, 23, 24, 25 }, -- r2 + { 37, 38, 10, 10, 10, 10, 40, 41 }, -- r3 + { 15, 34, 34, 34, 75, 75, 75, 31 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 78, 26, 26, 26, 26, 26, 26, 79 }, -- r6 +} +``` + +## Legend + +_Legend pending._ + +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 7, used 4x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 1x +- `G` = tile 22, used 1x +- `H` = tile 23, used 4x +- `I` = tile 24, used 1x +- `J` = tile 25, used 1x +- `K` = tile 37, used 1x +- `L` = tile 38, used 1x +- `M` = tile 10, used 10x +- `N` = tile 40, used 1x +- `O` = tile 41, used 1x +- `P` = tile 15, used 2x +- `Q` = tile 34, used 3x +- `R` = tile 75, used 3x +- `S` = tile 31, used 2x +- `T` = tile 78, used 1x +- `U` = tile 26, used 6x +- `V` = tile 79, used 1x + +![distinct tiles](img/B01_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +186 of the 3072 px inside the box are ground outside the black outline, so the 64x48 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c7:16px, c8:48px + r3 c1:5px, c8:5px + r4 c1:8px, c8:8px + r5 c1:8px, c8:8px + r6 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| SAFFRON_CITY | (36,1) | - | scenery, no entrance | +| SAFFRON_CITY | (2,3) | - | scenery, no entrance | +| SAFFRON_CITY | (10,3) | - | scenery, no entrance | +| SAFFRON_CITY | (4,9) | - | scenery, no entrance | +| SAFFRON_CITY | (8,9) | - | scenery, no entrance | +| SAFFRON_CITY | (28,9) | - | scenery, no entrance | +| SAFFRON_CITY | (32,9) | - | scenery, no entrance | +| SAFFRON_CITY | (4,27) | - | scenery, no entrance | +| SAFFRON_CITY | (12,27) | - | scenery, no entrance | +| SAFFRON_CITY | (16,27) | - | scenery, no entrance | +| SAFFRON_CITY | (20,27) | - | scenery, no entrance | +| SAFFRON_CITY | (32,27) | - | scenery, no entrance | +| SAFFRON_CITY | (4,33) | - | scenery, no entrance | +| SAFFRON_CITY | (8,33) | - | scenery, no entrance | +| SAFFRON_CITY | (12,33) | - | scenery, no entrance | +| SAFFRON_CITY | (16,33) | - | scenery, no entrance | +| SAFFRON_CITY | (24,33) | - | scenery, no entrance | +| SAFFRON_CITY | (28,33) | - | scenery, no entrance | +| SAFFRON_CITY | (32,33) | - | scenery, no entrance | diff --git a/assets/docs/buildings/B02-unnamed-building.md b/assets/docs/buildings/B02-unnamed-building.md new file mode 100644 index 0000000..bd721b2 --- /dev/null +++ b/assets/docs/buildings/B02-unnamed-building.md @@ -0,0 +1,130 @@ +# B02 - Unnamed building + +![Unnamed building](img/B02_x10.png) + +`OVERWORLD` tileset, **4 x 4 cells** (8 x 8 tiles of 8px, 64 x 64 px). Appears **15 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..4; tile column c=1..8, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | B B | B B | B C | + | D E | E E | E E | E D | + +-----+-----+-----+-----+ + y2 | D E | E E | E E | E D | + | F G | G G | G G | G H | + +-----+-----+-----+-----+ + y3 | I J | J J | J J | J K | + | I L | L L | L L | L K | + +-----+-----+-----+-----+ + y4 | I L | L L | L L | L K | + | M N | N N | N N | N O | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+ + y4 | 15 75 | 75 75 | 75 75 | 75 31 | + | 78 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 75, 75, 75, 75, 75, 75, 31 }, -- r7 + { 78, 26, 26, 26, 26, 26, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `A` = tile 76, used 1x +- `B` = tile 83, used 6x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 12x +- `F` = tile 92, used 1x +- `G` = tile 23, used 6x +- `H` = tile 93, used 1x +- `I` = tile 15, used 3x +- `J` = tile 10, used 6x +- `K` = tile 31, used 3x +- `L` = tile 75, used 12x +- `M` = tile 78, used 1x +- `N` = tile 26, used 6x +- `O` = tile 79, used 1x + +![distinct tiles](img/B02_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +258 of the 4096 px inside the box are ground outside the black outline, so the 64x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c8:25px + r2 c1:24px, c8:24px + r3 c1:24px, c8:24px + r4 c1:24px, c8:24px + r5 c1:8px, c8:8px + r6 c1:8px, c8:8px + r7 c1:8px, c8:8px + r8 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CELADON_CITY | (28,6) | - | scenery, no entrance | +| CELADON_CITY | (32,6) | - | scenery, no entrance | +| CELADON_CITY | (36,6) | - | scenery, no entrance | +| CELADON_CITY | (38,16) | (39,19) | `CELADON_MART_5F` | +| CELADON_CITY | (42,16) | - | scenery, no entrance | +| CELADON_CITY | (2,24) | - | scenery, no entrance | +| CELADON_CITY | (14,24) | - | scenery, no entrance | +| CELADON_CITY | (18,24) | - | scenery, no entrance | +| CELADON_CITY | (26,24) | - | scenery, no entrance | +| CELADON_CITY | (38,24) | - | scenery, no entrance | +| CELADON_CITY | (18,28) | - | scenery, no entrance | +| SAFFRON_CITY | (0,32) | - | scenery, no entrance | +| SAFFRON_CITY | (36,32) | - | scenery, no entrance | +| VERMILION_CITY | (14,0) | - | scenery, no entrance | +| VERMILION_CITY | (20,0) | - | scenery, no entrance | diff --git a/assets/docs/buildings/B03-unnamed-building.md b/assets/docs/buildings/B03-unnamed-building.md new file mode 100644 index 0000000..0a26fda --- /dev/null +++ b/assets/docs/buildings/B03-unnamed-building.md @@ -0,0 +1,134 @@ +# B03 - Unnamed building + +![Unnamed building](img/B03_x10.png) + +`OVERWORLD` tileset, **4 x 4 cells** (8 x 8 tiles of 8px, 64 x 64 px). Appears **15 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..4; tile column c=1..8, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | B B | B B | B C | + | D E | E E | E E | E D | + +-----+-----+-----+-----+ + y2 | D E | E E | E E | E D | + | F G | G G | G G | G H | + +-----+-----+-----+-----+ + y3 | I J | J J | J J | J K | + | I L | L L | L L | L K | + +-----+-----+-----+-----+ + y4 | I L | M N | L L | L K | + | O P | * Q | P P | P R | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+ + y4 | 15 75 | 11 12 | 75 75 | 75 31 | + | 78 26 | 27 28 | 26 26 | 26 79 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 75, 11, 12, 75, 75, 75, 31 }, -- r7 + { 78, 26, 27, 28, 26, 26, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 6x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 12x +- `F` = tile 92, used 1x +- `G` = tile 23, used 6x +- `H` = tile 93, used 1x +- `I` = tile 15, used 3x +- `J` = tile 10, used 6x +- `K` = tile 31, used 3x +- `L` = tile 75, used 10x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 78, used 1x +- `P` = tile 26, used 4x +- `Q` = tile 28, used 1x +- `R` = tile 79, used 1x + +![distinct tiles](img/B03_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID + y4 SOLID DOOR SOLID SOLID +``` + +Enterable cell: (2,4). + +## Silhouette + +258 of the 4096 px inside the box are ground outside the black outline, so the 64x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c8:25px + r2 c1:24px, c8:24px + r3 c1:24px, c8:24px + r4 c1:24px, c8:24px + r5 c1:8px, c8:8px + r6 c1:8px, c8:8px + r7 c1:8px, c8:8px + r8 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CELADON_CITY | (32,16) | (33,19) | `GAME_CORNER_PRIZE_ROOM` | +| CELADON_CITY | (30,24) | (31,27) | `CELADON_DINER` | +| CELADON_CITY | (34,24) | (35,27) | `CELADON_CHIEF_HOUSE` | +| CELADON_CITY | (42,24) | (43,27) | `CELADON_HOTEL` | +| CERULEAN_CITY | (12,22) | (13,25) | `BIKE_SHOP` | +| ROUTE_2 | (2,12) | - | scenery, no entrance | +| ROUTE_2 | (2,40) | (3,43) | `VIRIDIAN_FOREST_SOUTH_GATE` | +| ROUTE_5 | (16,24) | (17,27) | `UNDERGROUND_PATH_ROUTE_5` | +| ROUTE_6 | (16,10) | (17,13) | `UNDERGROUND_PATH_ROUTE_6` | +| ROUTE_7 | (4,10) | (5,13) | `UNDERGROUND_PATH_ROUTE_7` | +| SAFFRON_CITY | (28,26) | (29,29) | `MR_PSYCHICS_HOUSE` | +| VERMILION_CITY | (6,0) | (7,3) | `VERMILION_OLD_ROD_HOUSE` | +| VERMILION_CITY | (8,10) | (9,13) | `POKEMON_FAN_CLUB` | +| VERMILION_CITY | (14,10) | (15,13) | `VERMILION_TRADE_HOUSE` | +| VERMILION_CITY | (22,16) | (23,19) | `VERMILION_PIDGEY_HOUSE` | diff --git a/assets/docs/buildings/B04-unnamed-building.md b/assets/docs/buildings/B04-unnamed-building.md new file mode 100644 index 0000000..07f631f --- /dev/null +++ b/assets/docs/buildings/B04-unnamed-building.md @@ -0,0 +1,111 @@ +# B04 - Unnamed building + +![Unnamed building](img/B04_x10.png) + +`OVERWORLD` tileset, **4 x 2 cells** (8 x 4 tiles of 8px, 64 x 32 px). Appears **12 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..2; tile column c=1..8, tile row r=1..4. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | C C | C C | D E | + | F G | H H | H H | I J | + +-----+-----+-----+-----+ + y2 | K L | M N | O O | P Q | + | R S | * T | S S | S U | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 5 6 | 7 7 | 7 7 | 8 9 | + | 21 22 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+ + y2 | 37 38 | 11 12 | 10 10 | 40 41 | + | 78 26 | 27 28 | 26 26 | 26 79 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 7, 7, 7, 7, 8, 9 }, -- r1 + { 21, 22, 23, 23, 23, 23, 24, 25 }, -- r2 + { 37, 38, 11, 12, 10, 10, 40, 41 }, -- r3 + { 78, 26, 27, 28, 26, 26, 26, 79 }, -- r4 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 7, used 4x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 1x +- `G` = tile 22, used 1x +- `H` = tile 23, used 4x +- `I` = tile 24, used 1x +- `J` = tile 25, used 1x +- `K` = tile 37, used 1x +- `L` = tile 38, used 1x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 10, used 2x +- `P` = tile 40, used 1x +- `Q` = tile 41, used 1x +- `R` = tile 78, used 1x +- `S` = tile 26, used 4x +- `T` = tile 28, used 1x +- `U` = tile 79, used 1x + +![distinct tiles](img/B04_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID DOOR SOLID SOLID +``` + +Enterable cell: (2,2). + +## Silhouette + +154 of the 2048 px inside the box are ground outside the black outline, so the 64x32 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c7:16px, c8:48px + r3 c1:5px, c8:5px + r4 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| FUCHSIA_CITY | (10,26) | (11,27) | `FUCHSIA_BILLS_GRANDPAS_HOUSE` | +| LAVENDER_TOWN | (6,8) | (7,9) | `MR_FUJIS_HOUSE` | +| LAVENDER_TOWN | (2,12) | (3,13) | `LAVENDER_CUBONE_HOUSE` | +| LAVENDER_TOWN | (6,12) | (7,13) | `NAME_RATERS_HOUSE` | +| PEWTER_CITY | (28,12) | (29,13) | `PEWTER_NIDORAN_HOUSE` | +| PEWTER_CITY | (6,28) | (7,29) | `PEWTER_SPEECH_HOUSE` | +| ROUTE_12 | (10,76) | (11,77) | `ROUTE_12_SUPER_ROD_HOUSE` | +| ROUTE_16 | (6,4) | (7,5) | `ROUTE_16_FLY_HOUSE` | +| ROUTE_2 | (14,18) | (15,19) | `ROUTE_2_TRADE_HOUSE` | +| ROUTE_8 | (12,2) | (13,3) | `UNDERGROUND_PATH_ROUTE_8` | +| VIRIDIAN_CITY | (20,8) | (21,9) | `VIRIDIAN_NICKNAME_HOUSE` | +| VIRIDIAN_CITY | (20,14) | (21,15) | `VIRIDIAN_SCHOOL_HOUSE` | diff --git a/assets/docs/buildings/B05-unnamed-building.md b/assets/docs/buildings/B05-unnamed-building.md new file mode 100644 index 0000000..cf9898e --- /dev/null +++ b/assets/docs/buildings/B05-unnamed-building.md @@ -0,0 +1,133 @@ +# B05 - Unnamed building + +![Unnamed building](img/B05_x10.png) + +`OVERWORLD` tileset, **4 x 4 cells** (8 x 8 tiles of 8px, 64 x 64 px). Appears **11 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..4; tile column c=1..8, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | B B | B B | B C | + | D E | E E | E E | E D | + +-----+-----+-----+-----+ + y2 | D E | E E | E E | E D | + | F G | G G | G G | G H | + +-----+-----+-----+-----+ + y3 | I J | J J | J J | J K | + | I L | L L | L L | L K | + +-----+-----+-----+-----+ + y4 | I L | M N | O P | L K | + | Q R | * S | T T | R U | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+ + y4 | 15 75 | 11 12 | 66 67 | 75 31 | + | 78 26 | 27 28 | 74 74 | 26 79 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 75, 11, 12, 66, 67, 75, 31 }, -- r7 + { 78, 26, 27, 28, 74, 74, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 6x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 12x +- `F` = tile 92, used 1x +- `G` = tile 23, used 6x +- `H` = tile 93, used 1x +- `I` = tile 15, used 3x +- `J` = tile 10, used 6x +- `K` = tile 31, used 3x +- `L` = tile 75, used 8x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 66, used 1x +- `P` = tile 67, used 1x +- `Q` = tile 78, used 1x +- `R` = tile 26, used 2x +- `S` = tile 28, used 1x +- `T` = tile 74, used 2x +- `U` = tile 79, used 1x + +![distinct tiles](img/B05_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID + y4 SOLID DOOR SOLID SOLID +``` + +Enterable cell: (2,4). + +## Silhouette + +258 of the 4096 px inside the box are ground outside the black outline, so the 64x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c8:25px + r2 c1:24px, c8:24px + r3 c1:24px, c8:24px + r4 c1:24px, c8:24px + r5 c1:8px, c8:8px + r6 c1:8px, c8:8px + r7 c1:8px, c8:8px + r8 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CELADON_CITY | (40,6) | (41,9) | `CELADON_POKECENTER` | +| CERULEAN_CITY | (18,14) | (19,17) | `CERULEAN_POKECENTER` | +| CINNABAR_ISLAND | (10,8) | (11,11) | `CINNABAR_POKECENTER` | +| FUCHSIA_CITY | (18,24) | (19,27) | `FUCHSIA_POKECENTER` | +| LAVENDER_TOWN | (2,2) | (3,5) | `LAVENDER_POKECENTER` | +| PEWTER_CITY | (12,22) | (13,25) | `PEWTER_POKECENTER` | +| ROUTE_10 | (10,16) | (11,19) | `ROCK_TUNNEL_POKECENTER` | +| ROUTE_4 | (10,2) | (11,5) | `MT_MOON_POKECENTER` | +| SAFFRON_CITY | (8,26) | (9,29) | `SAFFRON_POKECENTER` | +| VERMILION_CITY | (10,0) | (11,3) | `VERMILION_POKECENTER` | +| VIRIDIAN_CITY | (22,22) | (23,25) | `VIRIDIAN_POKECENTER` | diff --git a/assets/docs/buildings/B06-unnamed-building.md b/assets/docs/buildings/B06-unnamed-building.md new file mode 100644 index 0000000..c2fba44 --- /dev/null +++ b/assets/docs/buildings/B06-unnamed-building.md @@ -0,0 +1,130 @@ +# B06 - Unnamed building + +![Unnamed building](img/B06_x10.png) + +`OVERWORLD` tileset, **4 x 4 cells** (8 x 8 tiles of 8px, 64 x 64 px). Appears **8 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..4; tile column c=1..8, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | B B | B B | B C | + | D E | E E | E E | E D | + +-----+-----+-----+-----+ + y2 | D E | E E | E E | E D | + | F G | G G | G G | G H | + +-----+-----+-----+-----+ + y3 | I J | J J | J J | J K | + | I L | L L | L L | L K | + +-----+-----+-----+-----+ + y4 | I L | M N | O P | L K | + | Q R | * S | T T | R U | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+ + y4 | 15 75 | 11 12 | 68 69 | 75 31 | + | 78 26 | 27 28 | 74 74 | 26 79 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 75, 11, 12, 68, 69, 75, 31 }, -- r7 + { 78, 26, 27, 28, 74, 74, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 6x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 12x +- `F` = tile 92, used 1x +- `G` = tile 23, used 6x +- `H` = tile 93, used 1x +- `I` = tile 15, used 3x +- `J` = tile 10, used 6x +- `K` = tile 31, used 3x +- `L` = tile 75, used 8x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 68, used 1x +- `P` = tile 69, used 1x +- `Q` = tile 78, used 1x +- `R` = tile 26, used 2x +- `S` = tile 28, used 1x +- `T` = tile 74, used 2x +- `U` = tile 79, used 1x + +![distinct tiles](img/B06_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID + y4 SOLID DOOR SOLID SOLID +``` + +Enterable cell: (2,4). + +## Silhouette + +258 of the 4096 px inside the box are ground outside the black outline, so the 64x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c8:25px + r2 c1:24px, c8:24px + r3 c1:24px, c8:24px + r4 c1:24px, c8:24px + r5 c1:8px, c8:8px + r6 c1:8px, c8:8px + r7 c1:8px, c8:8px + r8 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CERULEAN_CITY | (24,22) | (25,25) | `CERULEAN_MART` | +| CINNABAR_ISLAND | (14,8) | (15,11) | `CINNABAR_MART` | +| FUCHSIA_CITY | (4,10) | (5,13) | `FUCHSIA_MART` | +| LAVENDER_TOWN | (14,10) | (15,13) | `LAVENDER_MART` | +| PEWTER_CITY | (22,14) | (23,17) | `PEWTER_MART` | +| SAFFRON_CITY | (24,8) | (25,11) | `SAFFRON_MART` | +| VERMILION_CITY | (22,10) | (23,13) | `VERMILION_MART` | +| VIRIDIAN_CITY | (28,16) | (29,19) | `VIRIDIAN_MART` | diff --git a/assets/docs/buildings/B07-unnamed-building.md b/assets/docs/buildings/B07-unnamed-building.md new file mode 100644 index 0000000..746537b --- /dev/null +++ b/assets/docs/buildings/B07-unnamed-building.md @@ -0,0 +1,122 @@ +# B07 - Unnamed building + +![Unnamed building](img/B07_x10.png) + +`OVERWORLD` tileset, **4 x 3 cells** (8 x 6 tiles of 8px, 64 x 48 px). Appears **7 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..3; tile column c=1..8, tile row r=1..6. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | C C | C C | D E | + | F G | H H | H H | I J | + +-----+-----+-----+-----+ + y2 | K L | M N | M M | O P | + | Q H | H H | H H | H R | + +-----+-----+-----+-----+ + y3 | S N | T U | M M | N V | + | W X | * Y | X X | X Z | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 5 6 | 7 7 | 7 7 | 8 9 | + | 21 22 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+ + y2 | 37 38 | 10 34 | 10 10 | 40 41 | + | 92 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+ + y3 | 15 34 | 11 12 | 10 10 | 34 31 | + | 78 26 | 27 28 | 26 26 | 26 79 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 7, 7, 7, 7, 8, 9 }, -- r1 + { 21, 22, 23, 23, 23, 23, 24, 25 }, -- r2 + { 37, 38, 10, 34, 10, 10, 40, 41 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 34, 11, 12, 10, 10, 34, 31 }, -- r5 + { 78, 26, 27, 28, 26, 26, 26, 79 }, -- r6 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 7, used 4x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 1x +- `G` = tile 22, used 1x +- `H` = tile 23, used 10x +- `I` = tile 24, used 1x +- `J` = tile 25, used 1x +- `K` = tile 37, used 1x +- `L` = tile 38, used 1x +- `M` = tile 10, used 5x +- `N` = tile 34, used 3x +- `O` = tile 40, used 1x +- `P` = tile 41, used 1x +- `Q` = tile 92, used 1x +- `R` = tile 93, used 1x +- `S` = tile 15, used 1x +- `T` = tile 11, used 1x +- `U` = tile 12, used 1x +- `V` = tile 31, used 1x +- `W` = tile 78, used 1x +- `X` = tile 26, used 4x +- `Y` = tile 28, used 1x +- `Z` = tile 79, used 1x + +![distinct tiles](img/B07_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID + y3 SOLID DOOR SOLID SOLID +``` + +Enterable cell: (2,3). + +## Silhouette + +218 of the 3072 px inside the box are ground outside the black outline, so the 64x48 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c7:16px, c8:48px + r3 c1:5px, c8:5px + r4 c1:24px, c8:24px + r5 c1:8px, c8:8px + r6 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| FUCHSIA_CITY | (26,25) | (27,27) | `WARDENS_HOUSE` | +| FUCHSIA_CITY | (30,25) | (31,27) | `FUCHSIA_GOOD_ROD_HOUSE` | +| PALLET_TOWN | (4,3) | (5,5) | `REDS_HOUSE_1F` | +| PALLET_TOWN | (12,3) | (13,5) | `BLUES_HOUSE` | +| ROUTE_25 | (44,1) | (45,3) | `BILLS_HOUSE` | +| SAFFRON_CITY | (6,3) | (7,5) | `COPYCATS_HOUSE_1F` | +| SAFFRON_CITY | (12,9) | (13,11) | `SAFFRON_PIDGEY_HOUSE` | diff --git a/assets/docs/buildings/B08-unnamed-building.md b/assets/docs/buildings/B08-unnamed-building.md new file mode 100644 index 0000000..1f553e4 --- /dev/null +++ b/assets/docs/buildings/B08-unnamed-building.md @@ -0,0 +1,143 @@ +# B08 - Unnamed building + +![Unnamed building](img/B08_x10.png) + +`OVERWORLD` tileset, **4 x 6 cells** (8 x 12 tiles of 8px, 64 x 96 px). Appears **6 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..6; tile column c=1..8, tile row r=1..12. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | B B | B B | B C | + | D E | E E | E E | E D | + +-----+-----+-----+-----+ + y2 | D E | E E | E E | E D | + | F G | G G | G G | G H | + +-----+-----+-----+-----+ + y3 | I J | J J | J J | J K | + | I L | L L | L L | L K | + +-----+-----+-----+-----+ + y4 | I J | J J | J J | J K | + | I L | L L | L L | L K | + +-----+-----+-----+-----+ + y5 | I J | J J | J J | J K | + | I L | L L | L L | L K | + +-----+-----+-----+-----+ + y6 | I L | L L | L L | L K | + | M N | N N | N N | N O | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+ + y5 | 15 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+ + y6 | 15 75 | 75 75 | 75 75 | 75 31 | + | 78 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 10, 10, 10, 10, 10, 10, 31 }, -- r7 + { 15, 75, 75, 75, 75, 75, 75, 31 }, -- r8 + { 15, 10, 10, 10, 10, 10, 10, 31 }, -- r9 + { 15, 75, 75, 75, 75, 75, 75, 31 }, -- r10 + { 15, 75, 75, 75, 75, 75, 75, 31 }, -- r11 + { 78, 26, 26, 26, 26, 26, 26, 79 }, -- r12 +} +``` + +## Legend + +_Legend pending._ + +- `A` = tile 76, used 1x +- `B` = tile 83, used 6x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 12x +- `F` = tile 92, used 1x +- `G` = tile 23, used 6x +- `H` = tile 93, used 1x +- `I` = tile 15, used 7x +- `J` = tile 10, used 18x +- `K` = tile 31, used 7x +- `L` = tile 75, used 24x +- `M` = tile 78, used 1x +- `N` = tile 26, used 6x +- `O` = tile 79, used 1x + +![distinct tiles](img/B08_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID + y5 SOLID SOLID SOLID SOLID + y6 SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +322 of the 6144 px inside the box are ground outside the black outline, so the 64x96 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c8:25px + r2 c1:24px, c8:24px + r3 c1:24px, c8:24px + r4 c1:24px, c8:24px + r5 c1:8px, c8:8px + r6 c1:8px, c8:8px + r7 c1:8px, c8:8px + r8 c1:8px, c8:8px + r9 c1:8px, c8:8px + r10 c1:8px, c8:8px + r11 c1:8px, c8:8px + r12 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CELADON_CITY | (2,4) | - | scenery, no entrance | +| SAFFRON_CITY | (6,16) | - | scenery, no entrance | +| SAFFRON_CITY | (10,16) | - | scenery, no entrance | +| SAFFRON_CITY | (24,16) | - | scenery, no entrance | +| SAFFRON_CITY | (28,16) | - | scenery, no entrance | +| SAFFRON_CITY | (32,16) | - | scenery, no entrance | diff --git a/assets/docs/buildings/B09-unnamed-building.md b/assets/docs/buildings/B09-unnamed-building.md new file mode 100644 index 0000000..efc9c64 --- /dev/null +++ b/assets/docs/buildings/B09-unnamed-building.md @@ -0,0 +1,124 @@ +# B09 - Unnamed building + +![Unnamed building](img/B09_x6.png) + +`OVERWORLD` tileset, **6 x 4 cells** (12 x 8 tiles of 8px, 96 x 64 px). Appears **5 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..4; tile column c=1..12, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J K | K J | J J | J L | + | I K | K K | K K | K K | K K | K L | + +-----+-----+-----+-----+-----+-----+ + y4 | I K | K K | M N | J J | K K | K L | + | O P | P P | * Q | P P | P P | P R | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 75 | 75 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y4 | 15 75 | 75 75 | 11 12 | 10 10 | 75 75 | 75 31 | + | 78 26 | 26 26 | 27 28 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 }, -- r7 + { 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 10x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 20x +- `F` = tile 92, used 1x +- `G` = tile 23, used 10x +- `H` = tile 93, used 1x +- `I` = tile 15, used 3x +- `J` = tile 10, used 10x +- `K` = tile 75, used 18x +- `L` = tile 31, used 3x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 78, used 1x +- `P` = tile 26, used 8x +- `Q` = tile 28, used 1x +- `R` = tile 79, used 1x + +![distinct tiles](img/B09_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID DOOR SOLID SOLID SOLID +``` + +Enterable cell: (3,4). + +## Silhouette + +258 of the 6144 px inside the box are ground outside the black outline, so the 96x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c12:25px + r2 c1:24px, c12:24px + r3 c1:24px, c12:24px + r4 c1:24px, c12:24px + r5 c1:8px, c12:8px + r6 c1:8px, c12:8px + r7 c1:8px, c12:8px + r8 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CELADON_CITY | (26,16) | (28,19) | `GAME_CORNER` | +| CINNABAR_ISLAND | (4,0) | (6,3) | `POKEMON_MANSION_1F` | +| CINNABAR_ISLAND | (4,6) | (6,9) | `CINNABAR_LAB` | +| FUCHSIA_CITY | (16,0) | (18,3) | `SAFARI_ZONE_GATE` | +| FUCHSIA_CITY | (20,10) | (22,13) | `FUCHSIA_MEETING_ROOM` | diff --git a/assets/docs/buildings/B10-unnamed-building.md b/assets/docs/buildings/B10-unnamed-building.md new file mode 100644 index 0000000..e06b9a7 --- /dev/null +++ b/assets/docs/buildings/B10-unnamed-building.md @@ -0,0 +1,131 @@ +# B10 - Unnamed building + +![Unnamed building](img/B10_x6.png) + +`OVERWORLD` tileset, **6 x 4 cells** (12 x 8 tiles of 8px, 96 x 64 px). Appears **5 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..4; tile column c=1..12, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | C C | C C | C C | C C | D E | + | F G | H H | H H | H H | H H | G I | + +-----+-----+-----+-----+-----+-----+ + y2 | F G | H H | H H | H H | H H | G I | + | F J | K K | K K | K K | K K | L I | + +-----+-----+-----+-----+-----+-----+ + y3 | M N | O O | P Q | R P | O O | S T | + | U P | P P | P P | P P | P P | P V | + +-----+-----+-----+-----+-----+-----+ + y4 | U O | O O | O O | O O | W X | O V | + | Y Z | Z Z | Z Z | Z Z | * a | Z b | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 5 6 | 83 83 | 83 83 | 83 83 | 83 83 | 8 9 | + | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + +---------+---------+---------+---------+---------+---------+ + y2 | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + | 21 22 | 23 23 | 23 23 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+---------+---------+ + y3 | 37 38 | 10 10 | 34 47 | 63 34 | 10 10 | 40 41 | + | 15 34 | 34 34 | 34 34 | 34 34 | 34 34 | 34 31 | + +---------+---------+---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 10 10 | 10 10 | 11 12 | 10 31 | + | 78 26 | 26 26 | 26 26 | 26 26 | 27 28 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 }, -- r1 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r2 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r3 + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, -- r4 + { 37, 38, 10, 10, 34, 47, 63, 34, 10, 10, 40, 41 }, -- r5 + { 15, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 31 }, -- r6 + { 15, 10, 10, 10, 10, 10, 10, 10, 11, 12, 10, 31 }, -- r7 + { 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 83, used 8x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 3x +- `G` = tile 56, used 4x +- `H` = tile 18, used 16x +- `I` = tile 25, used 3x +- `J` = tile 22, used 1x +- `K` = tile 23, used 8x +- `L` = tile 24, used 1x +- `M` = tile 37, used 1x +- `N` = tile 38, used 1x +- `O` = tile 10, used 12x +- `P` = tile 34, used 12x +- `Q` = tile 47, used 1x +- `R` = tile 63, used 1x +- `S` = tile 40, used 1x +- `T` = tile 41, used 1x +- `U` = tile 15, used 2x +- `V` = tile 31, used 2x +- `W` = tile 11, used 1x +- `X` = tile 12, used 1x +- `Y` = tile 78, used 1x +- `Z` = tile 26, used 8x +- `a` = tile 28, used 1x +- `b` = tile 79, used 1x + +![distinct tiles](img/B10_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID DOOR SOLID +``` + +Enterable cell: (5,4). + +## Silhouette + +186 of the 6144 px inside the box are ground outside the black outline, so the 96x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c11:16px, c12:48px + r5 c1:5px, c12:5px + r6 c1:8px, c12:8px + r7 c1:8px, c12:8px + r8 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CINNABAR_ISLAND | (14,0) | (18,3) | `CINNABAR_GYM` | +| PEWTER_CITY | (12,14) | (16,17) | `PEWTER_GYM` | +| SAFFRON_CITY | (22,0) | (26,3) | `FIGHTING_DOJO` | +| VERMILION_CITY | (8,16) | (12,19) | `VERMILION_GYM` | +| VIRIDIAN_CITY | (28,4) | (32,7) | `VIRIDIAN_GYM` | diff --git a/assets/docs/buildings/B11-unnamed-building.md b/assets/docs/buildings/B11-unnamed-building.md new file mode 100644 index 0000000..752b3d9 --- /dev/null +++ b/assets/docs/buildings/B11-unnamed-building.md @@ -0,0 +1,102 @@ +# B11 - Unnamed building + +![Unnamed building](img/B11_x6.png) + +`OVERWORLD` tileset, **6 x 2 cells** (12 x 4 tiles of 8px, 96 x 32 px). Appears **5 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..2; tile column c=1..12, tile row r=1..4. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | C C | C C | C C | C C | D E | + | F G | H H | H H | H H | H H | I J | + +-----+-----+-----+-----+-----+-----+ + y2 | K L | M N | O M | M O | M M | P Q | + | R S | S S | S S | S S | S S | S T | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 5 6 | 7 7 | 7 7 | 7 7 | 7 7 | 8 9 | + | 21 22 | 23 23 | 23 23 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+---------+---------+ + y2 | 37 38 | 10 34 | 35 10 | 10 35 | 10 10 | 40 41 | + | 78 26 | 26 26 | 26 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9 }, -- r1 + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, -- r2 + { 37, 38, 10, 34, 35, 10, 10, 35, 10, 10, 40, 41 }, -- r3 + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, -- r4 +} +``` + +## Legend + +_Legend pending._ + +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 7, used 8x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 1x +- `G` = tile 22, used 1x +- `H` = tile 23, used 8x +- `I` = tile 24, used 1x +- `J` = tile 25, used 1x +- `K` = tile 37, used 1x +- `L` = tile 38, used 1x +- `M` = tile 10, used 5x +- `N` = tile 34, used 1x +- `O` = tile 35, used 2x +- `P` = tile 40, used 1x +- `Q` = tile 41, used 1x +- `R` = tile 78, used 1x +- `S` = tile 26, used 10x +- `T` = tile 79, used 1x + +![distinct tiles](img/B11_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +154 of the 3072 px inside the box are ground outside the black outline, so the 96x32 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c11:16px, c12:48px + r3 c1:5px, c12:5px + r4 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CELADON_CITY | (20,14) | - | scenery, no entrance | +| CERULEAN_CITY | (14,10) | - | scenery, no entrance | +| CERULEAN_CITY | (34,10) | - | scenery, no entrance | +| CERULEAN_CITY | (18,24) | - | scenery, no entrance | +| CERULEAN_CITY | (28,24) | - | scenery, no entrance | diff --git a/assets/docs/buildings/B12-unnamed-building.md b/assets/docs/buildings/B12-unnamed-building.md new file mode 100644 index 0000000..87ec66f --- /dev/null +++ b/assets/docs/buildings/B12-unnamed-building.md @@ -0,0 +1,99 @@ +# B12 - Unnamed building + +![Unnamed building](img/B12_x10.png) + +`FOREST` tileset, **4 x 2 cells** (8 x 4 tiles of 8px, 64 x 32 px). Appears **5 times** in the game. Tile ids index `assets/generated/tilesets/forest.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..2; tile column c=1..8, tile row r=1..4. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | B B | B B | B C | + | D E | E E | E E | E F | + +-----+-----+-----+-----+ + y2 | G H | I J | K K | H L | + | M H | * N | H H | H O | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 8 9 | 9 9 | 9 9 | 9 12 | + | 24 25 | 25 25 | 25 25 | 25 28 | + +---------+---------+---------+---------+ + y2 | 40 41 | 42 43 | 1 1 | 41 44 | + | 56 41 | 58 59 | 41 41 | 41 60 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 8, 9, 9, 9, 9, 9, 9, 12 }, -- r1 + { 24, 25, 25, 25, 25, 25, 25, 28 }, -- r2 + { 40, 41, 42, 43, 1, 1, 41, 44 }, -- r3 + { 56, 41, 58, 59, 41, 41, 41, 60 }, -- r4 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 58, used 1x +- `A` = tile 8, used 1x +- `B` = tile 9, used 6x +- `C` = tile 12, used 1x +- `D` = tile 24, used 1x +- `E` = tile 25, used 6x +- `F` = tile 28, used 1x +- `G` = tile 40, used 1x +- `H` = tile 41, used 6x +- `I` = tile 42, used 1x +- `J` = tile 43, used 1x +- `K` = tile 1, used 2x +- `L` = tile 44, used 1x +- `M` = tile 56, used 1x +- `N` = tile 59, used 1x +- `O` = tile 60, used 1x + +![distinct tiles](img/B12_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID DOOR SOLID SOLID +``` + +Enterable cell: (2,2). + +## Silhouette + +101 of the 2048 px inside the box are ground outside the black outline, so the 64x32 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:17px, c8:17px + r2 c1:16px, c8:17px + r3 c1:10px, c8:8px + r4 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| SAFARI_ZONE_CENTER | (16,18) | (17,19) | `SAFARI_ZONE_CENTER_REST_HOUSE` | +| SAFARI_ZONE_EAST | (24,8) | (25,9) | `SAFARI_ZONE_EAST_REST_HOUSE` | +| SAFARI_ZONE_NORTH | (34,2) | (35,3) | `SAFARI_ZONE_NORTH_REST_HOUSE` | +| SAFARI_ZONE_WEST | (2,2) | (3,3) | `SAFARI_ZONE_SECRET_HOUSE` | +| SAFARI_ZONE_WEST | (10,10) | (11,11) | `SAFARI_ZONE_WEST_REST_HOUSE` | diff --git a/assets/docs/buildings/B13-unnamed-building.md b/assets/docs/buildings/B13-unnamed-building.md new file mode 100644 index 0000000..3172b70 --- /dev/null +++ b/assets/docs/buildings/B13-unnamed-building.md @@ -0,0 +1,119 @@ +# B13 - Unnamed building + +![Unnamed building](img/B13_x6.png) + +`OVERWORLD` tileset, **6 x 4 cells** (12 x 8 tiles of 8px, 96 x 64 px). Appears **4 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..4; tile column c=1..12, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+ + y4 | I L | L L | L L | L L | L L | L K | + | M N | N N | N N | N N | N N | N O | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y4 | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + | 78 26 | 26 26 | 26 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r7 + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `A` = tile 76, used 1x +- `B` = tile 83, used 10x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 20x +- `F` = tile 92, used 1x +- `G` = tile 23, used 10x +- `H` = tile 93, used 1x +- `I` = tile 15, used 3x +- `J` = tile 10, used 10x +- `K` = tile 31, used 3x +- `L` = tile 75, used 20x +- `M` = tile 78, used 1x +- `N` = tile 26, used 10x +- `O` = tile 79, used 1x + +![distinct tiles](img/B13_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +258 of the 6144 px inside the box are ground outside the black outline, so the 96x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c12:25px + r2 c1:24px, c12:24px + r3 c1:24px, c12:24px + r4 c1:24px, c12:24px + r5 c1:8px, c12:8px + r6 c1:8px, c12:8px + r7 c1:8px, c12:8px + r8 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| ROUTE_15 | (8,6) | - | scenery, no entrance | +| ROUTE_16 | (18,2) | - | scenery, no entrance | +| ROUTE_7 | (12,8) | - | scenery, no entrance | +| ROUTE_8 | (2,8) | - | scenery, no entrance | diff --git a/assets/docs/buildings/B14-unnamed-building.md b/assets/docs/buildings/B14-unnamed-building.md new file mode 100644 index 0000000..8abc1c1 --- /dev/null +++ b/assets/docs/buildings/B14-unnamed-building.md @@ -0,0 +1,140 @@ +# B14 - Unnamed building + +![Unnamed building](img/B14_x6.png) + +`OVERWORLD` tileset, **6 x 6 cells** (12 x 12 tiles of 8px, 96 x 96 px). Appears **3 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..6; tile column c=1..12, tile row r=1..12. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+ + y4 | I J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+ + y5 | I J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+ + y6 | I L | L L | L L | L L | L L | L K | + | M N | N N | N N | N N | N N | N O | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y5 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y6 | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + | 78 26 | 26 26 | 26 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r7 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r8 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r9 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r10 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r11 + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, -- r12 +} +``` + +## Legend + +_Legend pending._ + +- `A` = tile 76, used 1x +- `B` = tile 83, used 10x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 20x +- `F` = tile 92, used 1x +- `G` = tile 23, used 10x +- `H` = tile 93, used 1x +- `I` = tile 15, used 7x +- `J` = tile 10, used 30x +- `K` = tile 31, used 7x +- `L` = tile 75, used 40x +- `M` = tile 78, used 1x +- `N` = tile 26, used 10x +- `O` = tile 79, used 1x + +![distinct tiles](img/B14_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID + y5 SOLID SOLID SOLID SOLID SOLID SOLID + y6 SOLID SOLID SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +322 of the 9216 px inside the box are ground outside the black outline, so the 96x96 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c12:25px + r2 c1:24px, c12:24px + r3 c1:24px, c12:24px + r4 c1:24px, c12:24px + r5 c1:8px, c12:8px + r6 c1:8px, c12:8px + r7 c1:8px, c12:8px + r8 c1:8px, c12:8px + r9 c1:8px, c12:8px + r10 c1:8px, c12:8px + r11 c1:8px, c12:8px + r12 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CELADON_CITY | (14,4) | - | scenery, no entrance | +| ROUTE_16 | (18,6) | - | scenery, no entrance | +| ROUTE_18 | (34,4) | - | scenery, no entrance | diff --git a/assets/docs/buildings/B15-unnamed-building.md b/assets/docs/buildings/B15-unnamed-building.md new file mode 100644 index 0000000..4a78d79 --- /dev/null +++ b/assets/docs/buildings/B15-unnamed-building.md @@ -0,0 +1,144 @@ +# B15 - Unnamed building + +![Unnamed building](img/B15_x6.png) + +`OVERWORLD` tileset, **6 x 6 cells** (12 x 12 tiles of 8px, 96 x 96 px). Appears **3 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..6; tile column c=1..12, tile row r=1..12. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+ + y4 | I J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+ + y5 | I J | J J | J L | L J | J J | J K | + | I L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+ + y6 | I L | L L | M N | J J | L L | L K | + | O P | P P | * Q | P P | P P | P R | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y5 | 15 10 | 10 10 | 10 75 | 75 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y6 | 15 75 | 75 75 | 11 12 | 10 10 | 75 75 | 75 31 | + | 78 26 | 26 26 | 27 28 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r7 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r8 + { 15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, -- r9 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r10 + { 15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 }, -- r11 + { 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, -- r12 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 10x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 20x +- `F` = tile 92, used 1x +- `G` = tile 23, used 10x +- `H` = tile 93, used 1x +- `I` = tile 15, used 7x +- `J` = tile 10, used 30x +- `K` = tile 31, used 7x +- `L` = tile 75, used 38x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 78, used 1x +- `P` = tile 26, used 8x +- `Q` = tile 28, used 1x +- `R` = tile 79, used 1x + +![distinct tiles](img/B15_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID + y5 SOLID SOLID SOLID SOLID SOLID SOLID + y6 SOLID SOLID DOOR SOLID SOLID SOLID +``` + +Enterable cell: (3,6). + +## Silhouette + +322 of the 9216 px inside the box are ground outside the black outline, so the 96x96 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c12:25px + r2 c1:24px, c12:24px + r3 c1:24px, c12:24px + r4 c1:24px, c12:24px + r5 c1:8px, c12:8px + r6 c1:8px, c12:8px + r7 c1:8px, c12:8px + r8 c1:8px, c12:8px + r9 c1:8px, c12:8px + r10 c1:8px, c12:8px + r11 c1:8px, c12:8px + r12 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CELADON_CITY | (22,4) | (24,9) | `CELADON_MANSION_1F` | +| ROUTE_12 | (8,16) | (10,21) | `ROUTE_12_GATE_1F` | +| ROUTE_6 | (8,2) | (10,7) | `ROUTE_6_GATE` | diff --git a/assets/docs/buildings/B16-unnamed-building.md b/assets/docs/buildings/B16-unnamed-building.md new file mode 100644 index 0000000..f0d0598 --- /dev/null +++ b/assets/docs/buildings/B16-unnamed-building.md @@ -0,0 +1,129 @@ +# B16 - Unnamed building + +![Unnamed building](img/B16_x5.png) + +`OVERWORLD` tileset, **8 x 4 cells** (16 x 8 tiles of 8px, 128 x 64 px). Appears **3 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..8, y=1..4; tile column c=1..16, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A B | C C | C C | C C | C C | C C | C C | D E | + | F G | H H | H H | H H | H H | H H | H H | G I | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | F G | H H | H H | H H | H H | H H | H H | G I | + | F J | K K | K K | K K | K K | K K | K K | L I | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | M N | O O | P Q | R P | P Q | R P | O O | S T | + | U P | P P | P P | P P | P P | P P | P P | P V | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y4 | U O | O O | O O | O O | O O | O O | W X | O V | + | Y Z | Z Z | Z Z | Z Z | Z Z | Z Z | * a | Z b | + +-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 5 6 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 8 9 | + | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + | 21 22 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 37 38 | 10 10 | 34 47 | 63 34 | 34 47 | 63 34 | 10 10 | 40 41 | + | 15 34 | 34 34 | 34 34 | 34 34 | 34 34 | 34 34 | 34 34 | 34 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 11 12 | 10 31 | + | 78 26 | 26 26 | 26 26 | 26 26 | 26 26 | 26 26 | 27 28 | 26 79 | + +---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 }, -- r1 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r2 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r3 + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, -- r4 + { 37, 38, 10, 10, 34, 47, 63, 34, 34, 47, 63, 34, 10, 10, 40, 41 }, -- r5 + { 15, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 31 }, -- r6 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 10, 31 }, -- r7 + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 83, used 12x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 3x +- `G` = tile 56, used 4x +- `H` = tile 18, used 24x +- `I` = tile 25, used 3x +- `J` = tile 22, used 1x +- `K` = tile 23, used 12x +- `L` = tile 24, used 1x +- `M` = tile 37, used 1x +- `N` = tile 38, used 1x +- `O` = tile 10, used 16x +- `P` = tile 34, used 18x +- `Q` = tile 47, used 2x +- `R` = tile 63, used 2x +- `S` = tile 40, used 1x +- `T` = tile 41, used 1x +- `U` = tile 15, used 2x +- `V` = tile 31, used 2x +- `W` = tile 11, used 1x +- `X` = tile 12, used 1x +- `Y` = tile 78, used 1x +- `Z` = tile 26, used 12x +- `a` = tile 28, used 1x +- `b` = tile 79, used 1x + +![distinct tiles](img/B16_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID DOOR SOLID +``` + +Enterable cell: (7,4). + +## Silhouette + +186 of the 8192 px inside the box are ground outside the black outline, so the 128x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c15:16px, c16:48px + r5 c1:5px, c16:5px + r6 c1:8px, c16:8px + r7 c1:8px, c16:8px + r8 c1:8px, c16:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CELADON_CITY | (6,24) | (12,27) | `CELADON_GYM` | +| CERULEAN_CITY | (24,16) | (30,19) | `CERULEAN_GYM` | +| SAFFRON_CITY | (28,0) | (34,3) | `SAFFRON_GYM` | diff --git a/assets/docs/buildings/B17-unnamed-building.md b/assets/docs/buildings/B17-unnamed-building.md new file mode 100644 index 0000000..e0e664f --- /dev/null +++ b/assets/docs/buildings/B17-unnamed-building.md @@ -0,0 +1,103 @@ +# B17 - Unnamed building + +![Unnamed building](img/B17_x6.png) + +`OVERWORLD` tileset, **6 x 2 cells** (12 x 4 tiles of 8px, 96 x 32 px). Appears **3 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..2; tile column c=1..12, tile row r=1..4. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | C C | C C | C C | C C | D E | + | F G | H H | H H | H H | H H | I J | + +-----+-----+-----+-----+-----+-----+ + y2 | K L | M N | O P | P O | P P | Q R | + | S T | * U | T T | T T | T T | T V | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 5 6 | 7 7 | 7 7 | 7 7 | 7 7 | 8 9 | + | 21 22 | 23 23 | 23 23 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+---------+---------+ + y2 | 37 38 | 11 12 | 35 10 | 10 35 | 10 10 | 40 41 | + | 78 26 | 27 28 | 26 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9 }, -- r1 + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, -- r2 + { 37, 38, 11, 12, 35, 10, 10, 35, 10, 10, 40, 41 }, -- r3 + { 78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79 }, -- r4 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 7, used 8x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 1x +- `G` = tile 22, used 1x +- `H` = tile 23, used 8x +- `I` = tile 24, used 1x +- `J` = tile 25, used 1x +- `K` = tile 37, used 1x +- `L` = tile 38, used 1x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 35, used 2x +- `P` = tile 10, used 4x +- `Q` = tile 40, used 1x +- `R` = tile 41, used 1x +- `S` = tile 78, used 1x +- `T` = tile 26, used 8x +- `U` = tile 28, used 1x +- `V` = tile 79, used 1x + +![distinct tiles](img/B17_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID DOOR SOLID SOLID SOLID SOLID +``` + +Enterable cell: (2,2). + +## Silhouette + +154 of the 3072 px inside the box are ground outside the black outline, so the 96x32 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c11:16px, c12:48px + r3 c1:5px, c12:5px + r4 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CERULEAN_CITY | (8,10) | (9,11) | `CERULEAN_BADGE_HOUSE` | +| CERULEAN_CITY | (26,10) | (27,11) | `CERULEAN_TRASHED_HOUSE` | +| CERULEAN_CITY | (12,14) | (13,15) | `CERULEAN_TRADE_HOUSE` | diff --git a/assets/docs/buildings/B18-unnamed-building.md b/assets/docs/buildings/B18-unnamed-building.md new file mode 100644 index 0000000..f9789b5 --- /dev/null +++ b/assets/docs/buildings/B18-unnamed-building.md @@ -0,0 +1,121 @@ +# B18 - Unnamed building + +![Unnamed building](img/B18_x6.png) + +`OVERWORLD` tileset, **6 x 4 cells** (12 x 8 tiles of 8px, 96 x 64 px). Appears **2 times** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..4; tile column c=1..12, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+ + y4 | I L | M N | L L | L L | L L | L K | + | O P | * Q | P P | P P | P P | P R | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y4 | 15 75 | 11 12 | 75 75 | 75 75 | 75 75 | 75 31 | + | 78 26 | 27 28 | 26 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 75, 11, 12, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r7 + { 78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 10x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 20x +- `F` = tile 92, used 1x +- `G` = tile 23, used 10x +- `H` = tile 93, used 1x +- `I` = tile 15, used 3x +- `J` = tile 10, used 10x +- `K` = tile 31, used 3x +- `L` = tile 75, used 18x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 78, used 1x +- `P` = tile 26, used 8x +- `Q` = tile 28, used 1x +- `R` = tile 79, used 1x + +![distinct tiles](img/B18_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID DOOR SOLID SOLID SOLID SOLID +``` + +Enterable cell: (2,4). + +## Silhouette + +258 of the 6144 px inside the box are ground outside the black outline, so the 96x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c12:25px + r2 c1:24px, c12:24px + r3 c1:24px, c12:24px + r4 c1:24px, c12:24px + r5 c1:8px, c12:8px + r6 c1:8px, c12:8px + r7 c1:8px, c12:8px + r8 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| PEWTER_CITY | (18,2) | (19,5) | `MUSEUM_1F` | +| ROUTE_2 | (14,36) | (15,39) | `ROUTE_2_GATE` | diff --git a/assets/docs/buildings/B19-unnamed-building.md b/assets/docs/buildings/B19-unnamed-building.md new file mode 100644 index 0000000..18c98ac --- /dev/null +++ b/assets/docs/buildings/B19-unnamed-building.md @@ -0,0 +1,135 @@ +# B19 - Unnamed building + +![Unnamed building](img/B19_x4.png) + +`PLATEAU` tileset, **20 x 5 cells** (40 x 10 tiles of 8px, 320 x 80 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/plateau.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..20, y=1..5; tile column c=1..40, tile row r=1..10. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A B | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | A B | + | D E | F F | F F | F F | F F | F F | G H | C C | C C | C C | C C | C C | C C | G H | F F | F F | F F | F F | F F | D E | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | I J | K K | K K | K K | I J | K K | L M | C C | C C | C C | C C | C C | C C | L M | K K | I J | K K | K K | K K | I J | + | N O | K K | K K | K K | N O | K K | L M | C C | C C | C C | C C | C C | C C | L M | K K | N O | K K | K K | K K | N O | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | N O | K K | K K | K K | N O | K K | A B | C C | C C | C C | C C | C C | C C | A B | K K | N O | K K | K K | K K | N O | + | I J | P P | P P | P P | I J | P P | D E | F F | F F | F F | F F | F F | F F | D E | P P | I J | P P | P P | P P | I J | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y4 | Q Q | Q Q | Q Q | Q Q | Q Q | Q Q | I J | K K | K K | K K | K K | K K | K K | I J | Q Q | Q Q | Q Q | Q Q | Q Q | Q Q | + | R Q | Q Q | R Q | Q Q | R Q | Q Q | N O | K K | K K | K K | K K | K K | K K | N O | R Q | Q Q | R Q | Q Q | R Q | Q Q | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y5 | Q Q | Q Q | Q Q | Q Q | Q Q | Q Q | N O | K K | K K | S T | S T | K K | K K | N O | Q Q | Q Q | Q Q | Q Q | Q Q | Q Q | + | Q Q | R Q | Q Q | R Q | Q Q | R Q | I J | P P | P P | * U | * U | P P | P P | I J | Q Q | R Q | Q Q | R Q | Q Q | R Q | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 37 38 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 37 38 | + | 40 41 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 32 33 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 32 33 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 40 41 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 21 22 | 15 15 | 15 15 | 15 15 | 21 22 | 15 15 | 46 47 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 46 47 | 15 15 | 21 22 | 15 15 | 15 15 | 15 15 | 21 22 | + | 5 6 | 15 15 | 15 15 | 15 15 | 5 6 | 15 15 | 46 47 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 46 47 | 15 15 | 5 6 | 15 15 | 15 15 | 15 15 | 5 6 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 5 6 | 15 15 | 15 15 | 15 15 | 5 6 | 15 15 | 37 38 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 37 38 | 15 15 | 5 6 | 15 15 | 15 15 | 15 15 | 5 6 | + | 21 22 | 14 14 | 14 14 | 14 14 | 21 22 | 14 14 | 40 41 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 40 41 | 14 14 | 21 22 | 14 14 | 14 14 | 14 14 | 21 22 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y4 | 35 35 | 35 35 | 35 35 | 35 35 | 35 35 | 35 35 | 21 22 | 15 15 | 15 15 | 15 15 | 15 15 | 15 15 | 15 15 | 21 22 | 35 35 | 35 35 | 35 35 | 35 35 | 35 35 | 35 35 | + | 45 35 | 35 35 | 45 35 | 35 35 | 45 35 | 35 35 | 5 6 | 15 15 | 15 15 | 15 15 | 15 15 | 15 15 | 15 15 | 5 6 | 45 35 | 35 35 | 45 35 | 35 35 | 45 35 | 35 35 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y5 | 35 35 | 35 35 | 35 35 | 35 35 | 35 35 | 35 35 | 5 6 | 15 15 | 15 15 | 11 12 | 11 12 | 15 15 | 15 15 | 5 6 | 35 35 | 35 35 | 35 35 | 35 35 | 35 35 | 35 35 | + | 35 35 | 45 35 | 35 35 | 45 35 | 35 35 | 45 35 | 21 22 | 14 14 | 14 14 | 27 28 | 27 28 | 14 14 | 14 14 | 21 22 | 35 35 | 45 35 | 35 35 | 45 35 | 35 35 | 45 35 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 37, 38, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 37, 38 }, -- r1 + { 40, 41, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 32, 33, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 32, 33, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 40, 41 }, -- r2 + { 21, 22, 15, 15, 15, 15, 15, 15, 21, 22, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 15, 15, 21, 22, 15, 15, 15, 15, 15, 15, 21, 22 }, -- r3 + { 5, 6, 15, 15, 15, 15, 15, 15, 5, 6, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 15, 15, 5, 6, 15, 15, 15, 15, 15, 15, 5, 6 }, -- r4 + { 5, 6, 15, 15, 15, 15, 15, 15, 5, 6, 15, 15, 37, 38, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 37, 38, 15, 15, 5, 6, 15, 15, 15, 15, 15, 15, 5, 6 }, -- r5 + { 21, 22, 14, 14, 14, 14, 14, 14, 21, 22, 14, 14, 40, 41, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 40, 41, 14, 14, 21, 22, 14, 14, 14, 14, 14, 14, 21, 22 }, -- r6 + { 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 21, 22, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 21, 22, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35 }, -- r7 + { 45, 35, 35, 35, 45, 35, 35, 35, 45, 35, 35, 35, 5, 6, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 5, 6, 45, 35, 35, 35, 45, 35, 35, 35, 45, 35, 35, 35 }, -- r8 + { 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 5, 6, 15, 15, 15, 15, 11, 12, 11, 12, 15, 15, 15, 15, 5, 6, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35 }, -- r9 + { 35, 35, 45, 35, 35, 35, 45, 35, 35, 35, 45, 35, 21, 22, 14, 14, 14, 14, 27, 28, 27, 28, 14, 14, 14, 14, 21, 22, 35, 35, 45, 35, 35, 35, 45, 35, 35, 35, 45, 35 }, -- r10 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 2x +- `A` = tile 37, used 4x +- `B` = tile 38, used 4x +- `C` = tile 3, used 84x +- `D` = tile 40, used 4x +- `E` = tile 41, used 4x +- `F` = tile 13, used 32x +- `G` = tile 32, used 2x +- `H` = tile 33, used 2x +- `I` = tile 21, used 12x +- `J` = tile 22, used 12x +- `K` = tile 15, used 80x +- `L` = tile 46, used 4x +- `M` = tile 47, used 4x +- `N` = tile 5, used 12x +- `O` = tile 6, used 12x +- `P` = tile 14, used 24x +- `Q` = tile 35, used 84x +- `R` = tile 45, used 12x +- `S` = tile 11, used 2x +- `T` = tile 12, used 2x +- `U` = tile 28, used 2x + +![distinct tiles](img/B19_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y4 DOOR DOOR DOOR DOOR DOOR DOOR SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID DOOR DOOR DOOR DOOR DOOR DOOR + y5 DOOR DOOR DOOR DOOR DOOR DOOR SOLID SOLID SOLID DOOR DOOR SOLID SOLID SOLID DOOR DOOR DOOR DOOR DOOR DOOR +``` + +Enterable cells: (1,4), (2,4), (3,4), (4,4), (5,4), (6,4), (15,4), (16,4), (17,4), (18,4), (19,4), (20,4), (1,5), (2,5), (3,5), (4,5), (5,5), (6,5), (10,5), (11,5), (15,5), (16,5), (17,5), (18,5), (19,5), (20,5). + +## Silhouette + +1621 of the 25600 px inside the box are ground outside the black outline, so the 320x80 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:14px, c2:14px, c3:4px, c4:4px, c5:4px, c6:4px, c7:4px, c8:4px, c9:4px, c10:4px, c11:4px, c12:4px, c13:4px, c14:4px, c15:4px, c16:4px, c17:4px, c18:4px, c19:4px, c20:4px, c21:4px, c22:4px, c23:4px, c24:4px, c25:4px, c26:4px, c27:4px, c28:4px, c29:4px, c30:4px, c31:4px, c32:4px, c33:4px, c34:4px, c35:4px, c36:4px, c37:4px, c38:4px, c39:14px, c40:14px + r2 c1:10px, c2:10px, c3:16px, c4:16px, c5:16px, c6:16px, c7:16px, c8:16px, c9:16px, c10:16px, c11:16px, c12:16px, c13:15px, c14:15px, c15:1px, c27:15px, c28:15px, c29:16px, c30:16px, c31:16px, c32:16px, c33:16px, c34:16px, c35:16px, c36:16px, c37:16px, c38:16px, c39:10px, c40:10px + r3 c1:10px, c2:10px, c9:10px, c10:10px, c13:8px, c14:8px, c15:1px, c27:8px, c28:8px, c31:10px, c32:10px, c39:10px, c40:10px + r4 c1:8px, c2:8px, c9:8px, c10:8px, c13:8px, c14:8px, c15:1px, c27:8px, c28:8px, c31:8px, c32:8px, c39:8px, c40:8px + r5 c1:8px, c2:8px, c9:8px, c10:8px, c13:13px, c14:13px, c15:1px, c27:13px, c28:13px, c31:8px, c32:8px, c39:8px, c40:8px + r6 c1:10px, c2:10px, c3:9px, c4:8px, c5:8px, c6:8px, c7:8px, c8:8px, c9:10px, c10:10px, c11:9px, c12:8px, c13:10px, c14:10px, c15:16px, c16:16px, c17:16px, c18:16px, c19:16px, c20:16px, c21:16px, c22:16px, c23:16px, c24:16px, c25:16px, c26:16px, c27:10px, c28:10px, c29:9px, c30:8px, c31:10px, c32:10px, c33:9px, c34:8px, c35:8px, c36:8px, c37:8px, c38:8px, c39:10px, c40:10px + r7 c13:10px, c14:10px, c27:10px, c28:10px + r8 c13:8px, c14:8px, c27:8px, c28:8px + r9 c13:8px, c14:8px, c27:8px, c28:8px + r10 c13:15px, c14:15px, c15:9px, c16:8px, c17:8px, c18:8px, c23:8px, c24:8px, c25:8px, c26:8px, c27:15px, c28:15px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| INDIGO_PLATEAU | (0,1) | (9,5) | `INDIGO_PLATEAU_LOBBY` | +| INDIGO_PLATEAU | (0,1) | (10,5) | `INDIGO_PLATEAU_LOBBY` | diff --git a/assets/docs/buildings/B20-unnamed-building.md b/assets/docs/buildings/B20-unnamed-building.md new file mode 100644 index 0000000..203e74e --- /dev/null +++ b/assets/docs/buildings/B20-unnamed-building.md @@ -0,0 +1,208 @@ +# B20 - Unnamed building + +![Unnamed building](img/B20_x5.png) + +`OVERWORLD` tileset, **8 x 12 cells** (16 x 24 tiles of 8px, 128 x 192 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..8, y=1..12; tile column c=1..16, tile row r=1..24. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y4 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y5 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y6 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y7 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y8 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y9 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y10 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y11 | I J | J J | J L | L J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y12 | I L | L L | M N | J J | L L | L L | L L | L K | + | O P | P P | * Q | P P | P P | P P | P P | P R | + +-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y5 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y6 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y7 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y8 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y9 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y10 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y11 | 15 10 | 10 10 | 10 75 | 75 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y12 | 15 75 | 75 75 | 11 12 | 10 10 | 75 75 | 75 75 | 75 75 | 75 31 | + | 78 26 | 26 26 | 27 28 | 26 26 | 26 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r7 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r8 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r9 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r10 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r11 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r12 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r13 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r14 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r15 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r16 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r17 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r18 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r19 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r20 + { 15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r21 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r22 + { 15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r23 + { 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, -- r24 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 14x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 28x +- `F` = tile 92, used 1x +- `G` = tile 23, used 14x +- `H` = tile 93, used 1x +- `I` = tile 15, used 19x +- `J` = tile 10, used 126x +- `K` = tile 31, used 19x +- `L` = tile 75, used 138x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 78, used 1x +- `P` = tile 26, used 12x +- `Q` = tile 28, used 1x +- `R` = tile 79, used 1x + +![distinct tiles](img/B20_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y5 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y6 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y7 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y8 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y9 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y10 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y11 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y12 SOLID SOLID DOOR SOLID SOLID SOLID SOLID SOLID +``` + +Enterable cell: (3,12). + +## Silhouette + +514 of the 24576 px inside the box are ground outside the black outline, so the 128x192 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c16:25px + r2 c1:24px, c16:24px + r3 c1:24px, c16:24px + r4 c1:24px, c16:24px + r5 c1:8px, c16:8px + r6 c1:8px, c16:8px + r7 c1:8px, c16:8px + r8 c1:8px, c16:8px + r9 c1:8px, c16:8px + r10 c1:8px, c16:8px + r11 c1:8px, c16:8px + r12 c1:8px, c16:8px + r13 c1:8px, c16:8px + r14 c1:8px, c16:8px + r15 c1:8px, c16:8px + r16 c1:8px, c16:8px + r17 c1:8px, c16:8px + r18 c1:8px, c16:8px + r19 c1:8px, c16:8px + r20 c1:8px, c16:8px + r21 c1:8px, c16:8px + r22 c1:8px, c16:8px + r23 c1:8px, c16:8px + r24 c1:8px, c16:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| SAFFRON_CITY | (16,10) | (18,21) | `SILPH_CO_1F` | diff --git a/assets/docs/buildings/B21-unnamed-building.md b/assets/docs/buildings/B21-unnamed-building.md new file mode 100644 index 0000000..eb04ebb --- /dev/null +++ b/assets/docs/buildings/B21-unnamed-building.md @@ -0,0 +1,142 @@ +# B21 - Unnamed building + +![Unnamed building](img/B21_x4.png) + +`OVERWORLD` tileset, **12 x 6 cells** (24 x 12 tiles of 8px, 192 x 96 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..12, y=1..6; tile column c=1..24, tile row r=1..12. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B B | B B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E E | E E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E E | E E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G G | G G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J J | J J | J J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y4 | I J | J J | J J | J J | J J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y5 | I J | J J | J J | J J | J J | J J | J L | L J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y6 | I L | L L | L L | L L | L L | L L | M N | J J | L L | L L | L L | L K | + | O P | P P | P P | P P | P P | P P | * Q | P P | P P | P P | P P | P R | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y5 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 75 | 75 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y6 | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 11 12 | 10 10 | 75 75 | 75 75 | 75 75 | 75 31 | + | 78 26 | 26 26 | 26 26 | 26 26 | 26 26 | 26 26 | 27 28 | 26 26 | 26 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r7 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r8 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r9 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r10 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r11 + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, -- r12 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 22x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 44x +- `F` = tile 92, used 1x +- `G` = tile 23, used 22x +- `H` = tile 93, used 1x +- `I` = tile 15, used 7x +- `J` = tile 10, used 66x +- `K` = tile 31, used 7x +- `L` = tile 75, used 86x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 78, used 1x +- `P` = tile 26, used 20x +- `Q` = tile 28, used 1x +- `R` = tile 79, used 1x + +![distinct tiles](img/B21_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y5 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y6 SOLID SOLID SOLID SOLID SOLID SOLID DOOR SOLID SOLID SOLID SOLID SOLID +``` + +Enterable cell: (7,6). + +## Silhouette + +322 of the 18432 px inside the box are ground outside the black outline, so the 192x96 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c24:25px + r2 c1:24px, c24:24px + r3 c1:24px, c24:24px + r4 c1:24px, c24:24px + r5 c1:8px, c24:8px + r6 c1:8px, c24:8px + r7 c1:8px, c24:8px + r8 c1:8px, c24:8px + r9 c1:8px, c24:8px + r10 c1:8px, c24:8px + r11 c1:8px, c24:8px + r12 c1:8px, c24:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| ROUTE_22 | (2,0) | (8,5) | `ROUTE_22_GATE` | diff --git a/assets/docs/buildings/B22-unnamed-building.md b/assets/docs/buildings/B22-unnamed-building.md new file mode 100644 index 0000000..4374c5e --- /dev/null +++ b/assets/docs/buildings/B22-unnamed-building.md @@ -0,0 +1,168 @@ +# B22 - Unnamed building + +![Unnamed building](img/B22_x5.png) + +`OVERWORLD` tileset, **8 x 8 cells** (16 x 16 tiles of 8px, 128 x 128 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..8, y=1..8; tile column c=1..16, tile row r=1..16. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y4 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y5 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y6 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y7 | I J | J J | J L | L J | J L | L J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y8 | I L | L L | M N | J J | M N | J J | O P | L K | + | Q R | R R | * S | R R | * S | R R | T T | R U | + +-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y5 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y6 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y7 | 15 10 | 10 10 | 10 75 | 75 10 | 10 75 | 75 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y8 | 15 75 | 75 75 | 11 12 | 10 10 | 11 12 | 10 10 | 68 69 | 75 31 | + | 78 26 | 26 26 | 27 28 | 26 26 | 27 28 | 26 26 | 74 74 | 26 79 | + +---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r7 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r8 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r9 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r10 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r11 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r12 + { 15, 10, 10, 10, 10, 75, 75, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, -- r13 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r14 + { 15, 75, 75, 75, 11, 12, 10, 10, 11, 12, 10, 10, 68, 69, 75, 31 }, -- r15 + { 78, 26, 26, 26, 27, 28, 26, 26, 27, 28, 26, 26, 74, 74, 26, 79 }, -- r16 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 2x +- `A` = tile 76, used 1x +- `B` = tile 83, used 14x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 28x +- `F` = tile 92, used 1x +- `G` = tile 23, used 14x +- `H` = tile 93, used 1x +- `I` = tile 15, used 11x +- `J` = tile 10, used 70x +- `K` = tile 31, used 11x +- `L` = tile 75, used 78x +- `M` = tile 11, used 2x +- `N` = tile 12, used 2x +- `O` = tile 68, used 1x +- `P` = tile 69, used 1x +- `Q` = tile 78, used 1x +- `R` = tile 26, used 8x +- `S` = tile 28, used 2x +- `T` = tile 74, used 2x +- `U` = tile 79, used 1x + +![distinct tiles](img/B22_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y5 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y6 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y7 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y8 SOLID SOLID DOOR SOLID DOOR SOLID SOLID SOLID +``` + +Enterable cells: (3,8), (5,8). + +## Silhouette + +386 of the 16384 px inside the box are ground outside the black outline, so the 128x128 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c16:25px + r2 c1:24px, c16:24px + r3 c1:24px, c16:24px + r4 c1:24px, c16:24px + r5 c1:8px, c16:8px + r6 c1:8px, c16:8px + r7 c1:8px, c16:8px + r8 c1:8px, c16:8px + r9 c1:8px, c16:8px + r10 c1:8px, c16:8px + r11 c1:8px, c16:8px + r12 c1:8px, c16:8px + r13 c1:8px, c16:8px + r14 c1:8px, c16:8px + r15 c1:8px, c16:8px + r16 c1:8px, c16:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| CELADON_CITY | (6,6) | (8,13) | `CELADON_MART_1F` | +| CELADON_CITY | (6,6) | (10,13) | `CELADON_MART_1F` | diff --git a/assets/docs/buildings/B23-unnamed-building.md b/assets/docs/buildings/B23-unnamed-building.md new file mode 100644 index 0000000..dd1a5a2 --- /dev/null +++ b/assets/docs/buildings/B23-unnamed-building.md @@ -0,0 +1,109 @@ +# B23 - Unnamed building + +![Unnamed building](img/B23_x4.png) + +`PLATEAU` tileset, **18 x 3 cells** (36 x 6 tiles of 8px, 288 x 48 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/plateau.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..18, y=1..3; tile column c=1..36, tile row r=1..6. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A B | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | C C | A B | + | D E | F F | F F | F F | F F | F F | F F | F F | F F | F F | F F | F F | F F | F F | F F | F F | F F | D E | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | G H | I I | I I | I I | I I | I I | I I | I I | J K | C C | C C | C C | C C | J K | I I | I I | I I | G H | + | L M | I I | I I | I I | I I | I I | I I | I I | J K | C C | C C | C C | C C | J K | I I | I I | I I | L M | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | L M | I I | I I | I I | N O | I I | I I | I I | J K | C C | C C | C C | C C | J K | N O | I I | I I | L M | + | G H | P P | P P | P P | * Q | P P | P P | P P | J K | C C | C C | C C | C C | J K | * Q | P P | P P | G H | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 37 38 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 3 3 | 37 38 | + | 40 41 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 13 13 | 40 41 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 21 22 | 15 15 | 15 15 | 15 15 | 15 15 | 15 15 | 15 15 | 15 15 | 46 47 | 3 3 | 3 3 | 3 3 | 3 3 | 46 47 | 15 15 | 15 15 | 15 15 | 21 22 | + | 5 6 | 15 15 | 15 15 | 15 15 | 15 15 | 15 15 | 15 15 | 15 15 | 46 47 | 3 3 | 3 3 | 3 3 | 3 3 | 46 47 | 15 15 | 15 15 | 15 15 | 5 6 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 5 6 | 15 15 | 15 15 | 15 15 | 11 12 | 15 15 | 15 15 | 15 15 | 46 47 | 3 3 | 3 3 | 3 3 | 3 3 | 46 47 | 11 12 | 15 15 | 15 15 | 5 6 | + | 21 22 | 14 14 | 14 14 | 14 14 | 27 28 | 14 14 | 14 14 | 14 14 | 46 47 | 3 3 | 3 3 | 3 3 | 3 3 | 46 47 | 27 28 | 14 14 | 14 14 | 21 22 | + +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 37, 38, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 37, 38 }, -- r1 + { 40, 41, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 40, 41 }, -- r2 + { 21, 22, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 15, 15, 15, 15, 15, 15, 21, 22 }, -- r3 + { 5, 6, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 15, 15, 15, 15, 15, 15, 5, 6 }, -- r4 + { 5, 6, 15, 15, 15, 15, 15, 15, 11, 12, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 11, 12, 15, 15, 15, 15, 5, 6 }, -- r5 + { 21, 22, 14, 14, 14, 14, 14, 14, 27, 28, 14, 14, 14, 14, 14, 14, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 27, 28, 14, 14, 14, 14, 21, 22 }, -- r6 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 2x +- `A` = tile 37, used 2x +- `B` = tile 38, used 2x +- `C` = tile 3, used 64x +- `D` = tile 40, used 2x +- `E` = tile 41, used 2x +- `F` = tile 13, used 32x +- `G` = tile 21, used 4x +- `H` = tile 22, used 4x +- `I` = tile 15, used 56x +- `J` = tile 46, used 8x +- `K` = tile 47, used 8x +- `L` = tile 5, used 4x +- `M` = tile 6, used 4x +- `N` = tile 11, used 2x +- `O` = tile 12, used 2x +- `P` = tile 14, used 16x +- `Q` = tile 28, used 2x + +![distinct tiles](img/B23_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID DOOR SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID DOOR SOLID SOLID SOLID +``` + +Enterable cells: (5,3), (15,3). + +## Silhouette + +1297 of the 13824 px inside the box are ground outside the black outline, so the 288x48 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:14px, c2:14px, c3:4px, c4:4px, c5:4px, c6:4px, c7:4px, c8:4px, c9:4px, c10:4px, c11:4px, c12:4px, c13:4px, c14:4px, c15:4px, c16:4px, c17:4px, c18:4px, c19:4px, c20:4px, c21:4px, c22:4px, c23:4px, c24:4px, c25:4px, c26:4px, c27:4px, c28:4px, c29:4px, c30:4px, c31:4px, c32:4px, c33:4px, c34:4px, c35:14px, c36:14px + r2 c1:10px, c2:10px, c3:16px, c4:16px, c5:16px, c6:16px, c7:16px, c8:16px, c9:16px, c10:16px, c11:16px, c12:16px, c13:16px, c14:16px, c15:16px, c16:16px, c17:16px, c18:16px, c19:16px, c20:16px, c21:16px, c22:16px, c23:16px, c24:16px, c25:16px, c26:16px, c27:16px, c28:16px, c29:16px, c30:16px, c31:16px, c32:16px, c33:16px, c34:16px, c35:10px, c36:10px + r3 c1:10px, c2:10px, c17:8px, c18:8px, c19:4px, c20:4px, c21:4px, c22:4px, c23:4px, c24:4px, c25:4px, c26:4px, c27:8px, c28:8px, c35:10px, c36:10px + r4 c1:8px, c2:8px, c17:8px, c18:8px, c19:1px, c27:8px, c28:8px, c35:8px, c36:8px + r5 c1:8px, c2:8px, c17:8px, c18:8px, c19:1px, c27:8px, c28:8px, c29:34px, c30:34px, c35:8px, c36:8px + r6 c1:15px, c2:15px, c3:9px, c4:8px, c5:8px, c6:8px, c7:8px, c8:8px, c11:8px, c12:8px, c13:8px, c14:8px, c15:8px, c16:8px, c17:8px, c18:8px, c19:1px, c27:8px, c28:8px, c29:18px, c30:18px, c31:9px, c32:8px, c33:8px, c34:8px, c35:15px, c36:15px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| ROUTE_23 | (0,29) | (4,31) | `VICTORY_ROAD_1F` | +| ROUTE_23 | (0,29) | (14,31) | `VICTORY_ROAD_2F` | diff --git a/assets/docs/buildings/B24-unnamed-building.md b/assets/docs/buildings/B24-unnamed-building.md new file mode 100644 index 0000000..5108ee6 --- /dev/null +++ b/assets/docs/buildings/B24-unnamed-building.md @@ -0,0 +1,145 @@ +# B24 - Unnamed building + +![Unnamed building](img/B24_x5.png) + +`OVERWORLD` tileset, **8 x 6 cells** (16 x 12 tiles of 8px, 128 x 96 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..8, y=1..6; tile column c=1..16, tile row r=1..12. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A B | C C | C C | C C | C C | C C | C C | D E | + | F G | H H | H H | H H | H H | H H | H H | G I | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | F G | H H | H H | H H | H H | H H | H H | G I | + | F J | K K | K K | K K | K K | K K | K K | L I | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | F G | H H | H H | H H | H H | H H | H H | G I | + | F G | H H | H H | H H | H H | H H | H H | G I | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y4 | F J | K K | K K | K K | K K | K K | K K | L I | + | M N | O O | O O | O O | O O | O O | O O | P Q | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y5 | R S | S S | S S | S S | S T | T S | S S | S U | + | R T | T T | T T | T T | T T | T T | T T | T U | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y6 | R T | T T | T T | T T | V W | S S | T T | T U | + | X Y | Y Y | Y Y | Y Y | * Z | Y Y | Y Y | Y a | + +-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 5 6 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 8 9 | + | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + | 21 22 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y4 | 21 22 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 24 25 | + | 37 38 | 34 34 | 34 34 | 34 34 | 34 34 | 34 34 | 34 34 | 40 41 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y5 | 15 10 | 10 10 | 10 10 | 10 10 | 10 75 | 75 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y6 | 15 75 | 75 75 | 75 75 | 75 75 | 11 12 | 10 10 | 75 75 | 75 31 | + | 78 26 | 26 26 | 26 26 | 26 26 | 27 28 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 }, -- r1 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r2 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r3 + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, -- r4 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r5 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r6 + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, -- r7 + { 37, 38, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 41 }, -- r8 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, -- r9 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r10 + { 15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 }, -- r11 + { 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, -- r12 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 83, used 12x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 6x +- `G` = tile 56, used 8x +- `H` = tile 18, used 48x +- `I` = tile 25, used 6x +- `J` = tile 22, used 2x +- `K` = tile 23, used 24x +- `L` = tile 24, used 2x +- `M` = tile 37, used 1x +- `N` = tile 38, used 1x +- `O` = tile 34, used 12x +- `P` = tile 40, used 1x +- `Q` = tile 41, used 1x +- `R` = tile 15, used 3x +- `S` = tile 10, used 14x +- `T` = tile 75, used 26x +- `U` = tile 31, used 3x +- `V` = tile 11, used 1x +- `W` = tile 12, used 1x +- `X` = tile 78, used 1x +- `Y` = tile 26, used 12x +- `Z` = tile 28, used 1x +- `a` = tile 79, used 1x + +![distinct tiles](img/B24_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y5 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y6 SOLID SOLID SOLID SOLID DOOR SOLID SOLID SOLID +``` + +Enterable cell: (5,6). + +## Silhouette + +202 of the 12288 px inside the box are ground outside the black outline, so the 128x96 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c15:16px, c16:48px + r8 c1:5px, c16:5px + r9 c1:8px, c16:8px + r10 c1:8px, c16:8px + r11 c1:8px, c16:8px + r12 c1:8px, c16:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| PEWTER_CITY | (10,2) | (14,7) | `MUSEUM_1F` | diff --git a/assets/docs/buildings/B25-unnamed-building.md b/assets/docs/buildings/B25-unnamed-building.md new file mode 100644 index 0000000..b194fe3 --- /dev/null +++ b/assets/docs/buildings/B25-unnamed-building.md @@ -0,0 +1,142 @@ +# B25 - Unnamed building + +![Unnamed building](img/B25_x5.png) + +`OVERWORLD` tileset, **8 x 6 cells** (16 x 12 tiles of 8px, 128 x 96 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..8, y=1..6; tile column c=1..16, tile row r=1..12. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y4 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y5 | I J | J J | J J | J J | J L | L J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y6 | I L | L L | L L | L L | M N | J J | L L | L K | + | O P | P P | P P | P P | * Q | P P | P P | P R | + +-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y5 | 15 10 | 10 10 | 10 10 | 10 10 | 10 75 | 75 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y6 | 15 75 | 75 75 | 75 75 | 75 75 | 11 12 | 10 10 | 75 75 | 75 31 | + | 78 26 | 26 26 | 26 26 | 26 26 | 27 28 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r7 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r8 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, -- r9 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r10 + { 15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 }, -- r11 + { 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, -- r12 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 14x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 28x +- `F` = tile 92, used 1x +- `G` = tile 23, used 14x +- `H` = tile 93, used 1x +- `I` = tile 15, used 7x +- `J` = tile 10, used 42x +- `K` = tile 31, used 7x +- `L` = tile 75, used 54x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 78, used 1x +- `P` = tile 26, used 12x +- `Q` = tile 28, used 1x +- `R` = tile 79, used 1x + +![distinct tiles](img/B25_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y5 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y6 SOLID SOLID SOLID SOLID DOOR SOLID SOLID SOLID +``` + +Enterable cell: (5,6). + +## Silhouette + +322 of the 12288 px inside the box are ground outside the black outline, so the 128x96 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c16:25px + r2 c1:24px, c16:24px + r3 c1:24px, c16:24px + r4 c1:24px, c16:24px + r5 c1:8px, c16:8px + r6 c1:8px, c16:8px + r7 c1:8px, c16:8px + r8 c1:8px, c16:8px + r9 c1:8px, c16:8px + r10 c1:8px, c16:8px + r11 c1:8px, c16:8px + r12 c1:8px, c16:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| ROUTE_10 | (2,34) | (6,39) | `POWER_PLANT` | diff --git a/assets/docs/buildings/B26-unnamed-building.md b/assets/docs/buildings/B26-unnamed-building.md new file mode 100644 index 0000000..43a86f0 --- /dev/null +++ b/assets/docs/buildings/B26-unnamed-building.md @@ -0,0 +1,138 @@ +# B26 - Unnamed building + +![Unnamed building](img/B26_x6.png) + +`OVERWORLD` tileset, **6 x 6 cells** (12 x 12 tiles of 8px, 96 x 96 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..6; tile column c=1..12, tile row r=1..12. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | C C | C C | C C | C C | D E | + | F G | H H | H H | H H | H H | G I | + +-----+-----+-----+-----+-----+-----+ + y2 | F G | H H | H H | H H | H H | G I | + | F J | K K | K K | K K | K K | L I | + +-----+-----+-----+-----+-----+-----+ + y3 | F G | H H | H H | H H | H H | G I | + | F G | H H | H H | H H | H H | G I | + +-----+-----+-----+-----+-----+-----+ + y4 | F J | K K | K K | K K | K K | L I | + | M N | O O | O O | O O | O O | P Q | + +-----+-----+-----+-----+-----+-----+ + y5 | R S | S S | S S | S S | S S | S T | + | R U | U U | U U | U U | U U | U T | + +-----+-----+-----+-----+-----+-----+ + y6 | R S | S S | S S | S S | S S | S T | + | R U | U U | U U | U U | U U | U T | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 5 6 | 83 83 | 83 83 | 83 83 | 83 83 | 8 9 | + | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + +---------+---------+---------+---------+---------+---------+ + y2 | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + | 21 22 | 23 23 | 23 23 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+---------+---------+ + y3 | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + +---------+---------+---------+---------+---------+---------+ + y4 | 21 22 | 23 23 | 23 23 | 23 23 | 23 23 | 24 25 | + | 37 38 | 34 34 | 34 34 | 34 34 | 34 34 | 40 41 | + +---------+---------+---------+---------+---------+---------+ + y5 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y6 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 }, -- r1 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r2 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r3 + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, -- r4 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r5 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r6 + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, -- r7 + { 37, 38, 34, 34, 34, 34, 34, 34, 34, 34, 40, 41 }, -- r8 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r9 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r10 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r11 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r12 +} +``` + +## Legend + +_Legend pending._ + +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 83, used 8x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 6x +- `G` = tile 56, used 8x +- `H` = tile 18, used 32x +- `I` = tile 25, used 6x +- `J` = tile 22, used 2x +- `K` = tile 23, used 16x +- `L` = tile 24, used 2x +- `M` = tile 37, used 1x +- `N` = tile 38, used 1x +- `O` = tile 34, used 8x +- `P` = tile 40, used 1x +- `Q` = tile 41, used 1x +- `R` = tile 15, used 4x +- `S` = tile 10, used 20x +- `T` = tile 31, used 4x +- `U` = tile 75, used 20x + +![distinct tiles](img/B26_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID + y5 SOLID SOLID SOLID SOLID SOLID SOLID + y6 SOLID SOLID SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +1170 of the 9216 px inside the box are ground outside the black outline, so the 96x96 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c11:16px, c12:48px + r8 c1:6px, c2:23px, c3:24px, c4:24px, c5:24px, c6:24px, c7:24px, c8:24px, c9:24px, c10:24px, c11:23px, c12:6px + r9 c1:24px, c12:24px + r10 c1:24px, c2:30px, c3:30px, c4:30px, c5:30px, c6:30px, c7:30px, c8:30px, c9:30px, c10:30px, c11:30px, c12:24px + r11 c1:24px, c12:24px + r12 c1:24px, c2:30px, c3:30px, c4:30px, c5:30px, c6:30px, c7:30px, c8:30px, c9:30px, c10:30px, c11:30px, c12:24px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| ROUTE_10 | (12,66) | - | scenery, no entrance | diff --git a/assets/docs/buildings/B27-unnamed-building.md b/assets/docs/buildings/B27-unnamed-building.md new file mode 100644 index 0000000..b6803a8 --- /dev/null +++ b/assets/docs/buildings/B27-unnamed-building.md @@ -0,0 +1,116 @@ +# B27 - Unnamed building + +![Unnamed building](img/B27_x5.png) + +`OVERWORLD` tileset, **8 x 4 cells** (16 x 8 tiles of 8px, 128 x 64 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..8, y=1..4; tile column c=1..16, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J J | J J | J J | J J | J J | J K | + | I L | L L | L L | L L | L L | L L | L L | L K | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y4 | I L | L L | L L | L L | L L | L L | L L | L K | + | M N | N N | N N | N N | N N | N N | N N | N O | + +-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y4 | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + | 78 26 | 26 26 | 26 26 | 26 26 | 26 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r7 + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `A` = tile 76, used 1x +- `B` = tile 83, used 14x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 28x +- `F` = tile 92, used 1x +- `G` = tile 23, used 14x +- `H` = tile 93, used 1x +- `I` = tile 15, used 3x +- `J` = tile 10, used 14x +- `K` = tile 31, used 3x +- `L` = tile 75, used 28x +- `M` = tile 78, used 1x +- `N` = tile 26, used 14x +- `O` = tile 79, used 1x + +![distinct tiles](img/B27_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +258 of the 8192 px inside the box are ground outside the black outline, so the 128x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c16:25px + r2 c1:24px, c16:24px + r3 c1:24px, c16:24px + r4 c1:24px, c16:24px + r5 c1:8px, c16:8px + r6 c1:8px, c16:8px + r7 c1:8px, c16:8px + r8 c1:8px, c16:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| ROUTE_11 | (50,6) | - | scenery, no entrance | diff --git a/assets/docs/buildings/B28-unnamed-building.md b/assets/docs/buildings/B28-unnamed-building.md new file mode 100644 index 0000000..ca6a8d1 --- /dev/null +++ b/assets/docs/buildings/B28-unnamed-building.md @@ -0,0 +1,120 @@ +# B28 - Unnamed building + +![Unnamed building](img/B28_x5.png) + +`OVERWORLD` tileset, **8 x 4 cells** (16 x 8 tiles of 8px, 128 x 64 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..8, y=1..4; tile column c=1..16, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | J J | J J | J K | K J | J J | J L | + | I K | K K | K K | K K | K K | K K | K K | K L | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y4 | I K | K K | K K | K K | M N | J J | K K | K L | + | O P | P P | P P | P P | * Q | P P | P P | P R | + +-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 75 | 75 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y4 | 15 75 | 75 75 | 75 75 | 75 75 | 11 12 | 10 10 | 75 75 | 75 31 | + | 78 26 | 26 26 | 26 26 | 26 26 | 27 28 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 }, -- r7 + { 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 14x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 28x +- `F` = tile 92, used 1x +- `G` = tile 23, used 14x +- `H` = tile 93, used 1x +- `I` = tile 15, used 3x +- `J` = tile 10, used 14x +- `K` = tile 75, used 26x +- `L` = tile 31, used 3x +- `M` = tile 11, used 1x +- `N` = tile 12, used 1x +- `O` = tile 78, used 1x +- `P` = tile 26, used 12x +- `Q` = tile 28, used 1x +- `R` = tile 79, used 1x + +![distinct tiles](img/B28_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID DOOR SOLID SOLID SOLID +``` + +Enterable cell: (5,4). + +## Silhouette + +258 of the 8192 px inside the box are ground outside the black outline, so the 128x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c16:25px + r2 c1:24px, c16:24px + r3 c1:24px, c16:24px + r4 c1:24px, c16:24px + r5 c1:8px, c16:8px + r6 c1:8px, c16:8px + r7 c1:8px, c16:8px + r8 c1:8px, c16:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| ROUTE_5 | (6,30) | (10,33) | `ROUTE_5_GATE` | diff --git a/assets/docs/buildings/B29-unnamed-building.md b/assets/docs/buildings/B29-unnamed-building.md new file mode 100644 index 0000000..7ccaca2 --- /dev/null +++ b/assets/docs/buildings/B29-unnamed-building.md @@ -0,0 +1,123 @@ +# B29 - Unnamed building + +![Unnamed building](img/B29_x6.png) + +`OVERWORLD` tileset, **6 x 4 cells** (12 x 8 tiles of 8px, 96 x 64 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..4; tile column c=1..12, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B C | + | D E | E E | E E | E E | E E | E D | + +-----+-----+-----+-----+-----+-----+ + y2 | D E | E E | E E | E E | E E | E D | + | F G | G G | G G | G G | G G | G H | + +-----+-----+-----+-----+-----+-----+ + y3 | I J | J J | K L | M K | J J | J N | + | I O | O O | K K | K K | O O | O N | + +-----+-----+-----+-----+-----+-----+ + y4 | I O | P Q | J J | J J | O O | O N | + | R S | * T | S S | S S | S S | S U | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 76 83 | 83 83 | 83 83 | 83 83 | 83 83 | 83 77 | + | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + +---------+---------+---------+---------+---------+---------+ + y2 | 90 18 | 18 18 | 18 18 | 18 18 | 18 18 | 18 90 | + | 92 23 | 23 23 | 23 23 | 23 23 | 23 23 | 23 93 | + +---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 34 47 | 63 34 | 10 10 | 10 31 | + | 15 75 | 75 75 | 34 34 | 34 34 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y4 | 15 75 | 11 12 | 10 10 | 10 10 | 75 75 | 75 31 | + | 78 26 | 27 28 | 26 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, -- r1 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r2 + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, -- r3 + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, -- r4 + { 15, 10, 10, 10, 34, 47, 63, 34, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 34, 34, 34, 34, 75, 75, 75, 31 }, -- r6 + { 15, 75, 11, 12, 10, 10, 10, 10, 75, 75, 75, 31 }, -- r7 + { 78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 76, used 1x +- `B` = tile 83, used 10x +- `C` = tile 77, used 1x +- `D` = tile 90, used 4x +- `E` = tile 18, used 20x +- `F` = tile 92, used 1x +- `G` = tile 23, used 10x +- `H` = tile 93, used 1x +- `I` = tile 15, used 3x +- `J` = tile 10, used 10x +- `K` = tile 34, used 6x +- `L` = tile 47, used 1x +- `M` = tile 63, used 1x +- `N` = tile 31, used 3x +- `O` = tile 75, used 10x +- `P` = tile 11, used 1x +- `Q` = tile 12, used 1x +- `R` = tile 78, used 1x +- `S` = tile 26, used 8x +- `T` = tile 28, used 1x +- `U` = tile 79, used 1x + +![distinct tiles](img/B29_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID DOOR SOLID SOLID SOLID SOLID +``` + +Enterable cell: (2,4). + +## Silhouette + +258 of the 6144 px inside the box are ground outside the black outline, so the 96x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:25px, c12:25px + r2 c1:24px, c12:24px + r3 c1:24px, c12:24px + r4 c1:24px, c12:24px + r5 c1:8px, c12:8px + r6 c1:8px, c12:8px + r7 c1:8px, c12:8px + r8 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| FUCHSIA_CITY | (4,24) | (5,27) | `FUCHSIA_GYM` | diff --git a/assets/docs/buildings/B30-unnamed-building.md b/assets/docs/buildings/B30-unnamed-building.md new file mode 100644 index 0000000..22cf1e8 --- /dev/null +++ b/assets/docs/buildings/B30-unnamed-building.md @@ -0,0 +1,108 @@ +# B30 - Unnamed building + +![Unnamed building](img/B30_x6.png) + +`OVERWORLD` tileset, **6 x 4 cells** (12 x 8 tiles of 8px, 96 x 64 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..4; tile column c=1..12, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | B B | B B | B B | B B | B C | + | A D | D D | D D | D D | D D | D C | + +-----+-----+-----+-----+-----+-----+ + y2 | A B | B B | B B | B B | B B | B C | + | A D | D D | D D | D D | D D | D C | + +-----+-----+-----+-----+-----+-----+ + y3 | A B | B B | B B | B B | B B | B C | + | A D | D D | D D | D D | D D | D C | + +-----+-----+-----+-----+-----+-----+ + y4 | A D | D D | D D | D D | D D | D C | + | E F | F F | F F | F F | F F | F G | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y2 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y3 | 15 10 | 10 10 | 10 10 | 10 10 | 10 10 | 10 31 | + | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y4 | 15 75 | 75 75 | 75 75 | 75 75 | 75 75 | 75 31 | + | 78 26 | 26 26 | 26 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r1 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r2 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r3 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r4 + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, -- r5 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r7 + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `A` = tile 15, used 7x +- `B` = tile 10, used 30x +- `C` = tile 31, used 7x +- `D` = tile 75, used 40x +- `E` = tile 78, used 1x +- `F` = tile 26, used 10x +- `G` = tile 79, used 1x + +![distinct tiles](img/B30_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +1552 of the 6144 px inside the box are ground outside the black outline, so the 96x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:24px, c12:24px + r2 c1:24px, c2:30px, c3:30px, c4:30px, c5:30px, c6:30px, c7:30px, c8:30px, c9:30px, c10:30px, c11:30px, c12:24px + r3 c1:24px, c12:24px + r4 c1:24px, c2:30px, c3:30px, c4:30px, c5:30px, c6:30px, c7:30px, c8:30px, c9:30px, c10:30px, c11:30px, c12:24px + r5 c1:24px, c12:24px + r6 c1:24px, c2:30px, c3:30px, c4:30px, c5:30px, c6:30px, c7:30px, c8:30px, c9:30px, c10:30px, c11:30px, c12:24px + r7 c1:24px, c2:30px, c3:30px, c4:30px, c5:30px, c6:30px, c7:30px, c8:30px, c9:30px, c10:30px, c11:30px, c12:24px + r8 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| LAVENDER_TOWN | (12,0) | - | scenery, no entrance | diff --git a/assets/docs/buildings/B31-unnamed-building.md b/assets/docs/buildings/B31-unnamed-building.md new file mode 100644 index 0000000..217fde0 --- /dev/null +++ b/assets/docs/buildings/B31-unnamed-building.md @@ -0,0 +1,126 @@ +# B31 - Unnamed building + +![Unnamed building](img/B31_x6.png) + +`OVERWORLD` tileset, **6 x 4 cells** (12 x 8 tiles of 8px, 96 x 64 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..6, y=1..4; tile column c=1..12, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 + +-----+-----+-----+-----+-----+-----+ + y1 | A B | C C | C C | C C | C C | D E | + | F G | H H | H H | H H | H H | G I | + +-----+-----+-----+-----+-----+-----+ + y2 | F G | H H | H H | H H | H H | G I | + | F J | K K | K K | K K | K K | L I | + +-----+-----+-----+-----+-----+-----+ + y3 | M N | O O | O P | P O | O O | Q R | + | S T | T T | P P | P P | P P | P U | + +-----+-----+-----+-----+-----+-----+ + y4 | S O | O O | V W | O O | O O | O U | + | X Y | Y Y | * Z | Y Y | Y Y | Y a | + +-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 + +---------+---------+---------+---------+---------+---------+ + y1 | 5 6 | 83 83 | 83 83 | 83 83 | 83 83 | 8 9 | + | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + +---------+---------+---------+---------+---------+---------+ + y2 | 21 56 | 18 18 | 18 18 | 18 18 | 18 18 | 56 25 | + | 21 22 | 23 23 | 23 23 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+---------+---------+ + y3 | 37 38 | 10 10 | 10 75 | 75 10 | 10 10 | 40 41 | + | 15 34 | 34 34 | 75 75 | 75 75 | 75 75 | 75 31 | + +---------+---------+---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 11 12 | 10 10 | 10 10 | 10 31 | + | 78 26 | 26 26 | 27 28 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 }, -- r1 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r2 + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, -- r3 + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, -- r4 + { 37, 38, 10, 10, 10, 75, 75, 10, 10, 10, 40, 41 }, -- r5 + { 15, 34, 34, 34, 75, 75, 75, 75, 75, 75, 75, 31 }, -- r6 + { 15, 10, 10, 10, 11, 12, 10, 10, 10, 10, 10, 31 }, -- r7 + { 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 83, used 8x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 3x +- `G` = tile 56, used 4x +- `H` = tile 18, used 16x +- `I` = tile 25, used 3x +- `J` = tile 22, used 1x +- `K` = tile 23, used 8x +- `L` = tile 24, used 1x +- `M` = tile 37, used 1x +- `N` = tile 38, used 1x +- `O` = tile 10, used 14x +- `P` = tile 75, used 9x +- `Q` = tile 40, used 1x +- `R` = tile 41, used 1x +- `S` = tile 15, used 2x +- `T` = tile 34, used 3x +- `U` = tile 31, used 2x +- `V` = tile 11, used 1x +- `W` = tile 12, used 1x +- `X` = tile 78, used 1x +- `Y` = tile 26, used 8x +- `Z` = tile 28, used 1x +- `a` = tile 79, used 1x + +![distinct tiles](img/B31_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID + y4 SOLID SOLID DOOR SOLID SOLID SOLID +``` + +Enterable cell: (3,4). + +## Silhouette + +186 of the 6144 px inside the box are ground outside the black outline, so the 96x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c11:16px, c12:48px + r5 c1:5px, c12:5px + r6 c1:8px, c12:8px + r7 c1:8px, c12:8px + r8 c1:8px, c12:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| PALLET_TOWN | (10,8) | (12,11) | `OAKS_LAB` | diff --git a/assets/docs/buildings/B32-unnamed-building.md b/assets/docs/buildings/B32-unnamed-building.md new file mode 100644 index 0000000..7cb0a9c --- /dev/null +++ b/assets/docs/buildings/B32-unnamed-building.md @@ -0,0 +1,156 @@ +# B32 - Unnamed building + +![Unnamed building](img/B32_x5.png) + +`SHIP_PORT` tileset, **8 x 3 cells** (16 x 6 tiles of 8px, 128 x 48 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/ship_port.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..8, y=1..3; tile column c=1..16, tile row r=1..6. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +-----+-----+-----+-----+-----+-----+-----+-----+ + y1 | A A | B C | D E | F G | H H | I I | J K | L M | + | N O | P Q | R S | T U | V W | V W | X Y | Z a | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y2 | b c | d e | f g | h i | j k | j k | l m | n o | + | p c | d q | r s | t u | v w | v w | x y | x o | + +-----+-----+-----+-----+-----+-----+-----+-----+ + y3 | z 0 | 1 2 | 3 4 | 4 4 | 4 4 | 4 4 | 4 5 | 6 7 | + | A 8 | 9 ! | # # | # # | # # | # # | # $ | % & | + +-----+-----+-----+-----+-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 x5 x6 x7 x8 + +---------+---------+---------+---------+---------+---------+---------+---------+ + y1 | 20 20 | 2 3 | 4 5 | 6 7 | 9 9 | 11 11 | 12 13 | 14 15 | + | 16 17 | 18 19 | 0 21 | 22 23 | 24 25 | 24 25 | 28 29 | 30 31 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y2 | 32 33 | 34 35 | 36 37 | 38 39 | 40 41 | 40 41 | 44 45 | 46 47 | + | 48 33 | 34 51 | 52 53 | 54 55 | 56 57 | 56 57 | 62 61 | 62 47 | + +---------+---------+---------+---------+---------+---------+---------+---------+ + y3 | 64 65 | 66 67 | 68 69 | 69 69 | 69 69 | 69 69 | 69 77 | 78 79 | + | 20 81 | 82 83 | 85 85 | 85 85 | 85 85 | 85 85 | 85 93 | 90 91 | + +---------+---------+---------+---------+---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 20, 20, 2, 3, 4, 5, 6, 7, 9, 9, 11, 11, 12, 13, 14, 15 }, -- r1 + { 16, 17, 18, 19, 0, 21, 22, 23, 24, 25, 24, 25, 28, 29, 30, 31 }, -- r2 + { 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 40, 41, 44, 45, 46, 47 }, -- r3 + { 48, 33, 34, 51, 52, 53, 54, 55, 56, 57, 56, 57, 62, 61, 62, 47 }, -- r4 + { 64, 65, 66, 67, 68, 69, 69, 69, 69, 69, 69, 69, 69, 77, 78, 79 }, -- r5 + { 20, 81, 82, 83, 85, 85, 85, 85, 85, 85, 85, 85, 85, 93, 90, 91 }, -- r6 +} +``` + +## Legend + +_Legend pending._ + +- `!` = tile 83, used 1x +- `#` = tile 85, used 9x +- `$` = tile 93, used 1x +- `%` = tile 90, used 1x +- `&` = tile 91, used 1x +- `0` = tile 65, used 1x +- `1` = tile 66, used 1x +- `2` = tile 67, used 1x +- `3` = tile 68, used 1x +- `4` = tile 69, used 8x +- `5` = tile 77, used 1x +- `6` = tile 78, used 1x +- `7` = tile 79, used 1x +- `8` = tile 81, used 1x +- `9` = tile 82, used 1x +- `A` = tile 20, used 3x +- `B` = tile 2, used 1x +- `C` = tile 3, used 1x +- `D` = tile 4, used 1x +- `E` = tile 5, used 1x +- `F` = tile 6, used 1x +- `G` = tile 7, used 1x +- `H` = tile 9, used 2x +- `I` = tile 11, used 2x +- `J` = tile 12, used 1x +- `K` = tile 13, used 1x +- `L` = tile 14, used 1x +- `M` = tile 15, used 1x +- `N` = tile 16, used 1x +- `O` = tile 17, used 1x +- `P` = tile 18, used 1x +- `Q` = tile 19, used 1x +- `R` = tile 0, used 1x +- `S` = tile 21, used 1x +- `T` = tile 22, used 1x +- `U` = tile 23, used 1x +- `V` = tile 24, used 2x +- `W` = tile 25, used 2x +- `X` = tile 28, used 1x +- `Y` = tile 29, used 1x +- `Z` = tile 30, used 1x +- `a` = tile 31, used 1x +- `b` = tile 32, used 1x +- `c` = tile 33, used 2x +- `d` = tile 34, used 2x +- `e` = tile 35, used 1x +- `f` = tile 36, used 1x +- `g` = tile 37, used 1x +- `h` = tile 38, used 1x +- `i` = tile 39, used 1x +- `j` = tile 40, used 2x +- `k` = tile 41, used 2x +- `l` = tile 44, used 1x +- `m` = tile 45, used 1x +- `n` = tile 46, used 1x +- `o` = tile 47, used 2x +- `p` = tile 48, used 1x +- `q` = tile 51, used 1x +- `r` = tile 52, used 1x +- `s` = tile 53, used 1x +- `t` = tile 54, used 1x +- `u` = tile 55, used 1x +- `v` = tile 56, used 2x +- `w` = tile 57, used 2x +- `x` = tile 62, used 2x +- `y` = tile 61, used 1x +- `z` = tile 64, used 1x + +![distinct tiles](img/B32_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +315 of the 6144 px inside the box are ground outside the black outline, so the 128x48 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:22px, c2:20px, c3:20px, c4:19px, c5:13px, c6:3px, c8:4px, c11:9px, c12:9px, c13:11px, c14:18px, c15:18px, c16:22px + r2 c1:20px, c2:8px, c16:4px + r3 c1:5px + r5 c1:16px, c16:2px + r6 c1:25px, c2:23px, c3:6px, c4:1px, c16:17px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| VERMILION_DOCK | (10,3) | - | scenery, no entrance | diff --git a/assets/docs/buildings/B33-unnamed-building.md b/assets/docs/buildings/B33-unnamed-building.md new file mode 100644 index 0000000..6382c62 --- /dev/null +++ b/assets/docs/buildings/B33-unnamed-building.md @@ -0,0 +1,125 @@ +# B33 - Unnamed building + +![Unnamed building](img/B33_x10.png) + +`OVERWORLD` tileset, **4 x 4 cells** (8 x 8 tiles of 8px, 64 x 64 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..4; tile column c=1..8, tile row r=1..8. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | C C | C C | D E | + | F G | H H | H H | G I | + +-----+-----+-----+-----+ + y2 | F G | H H | H H | G I | + | F J | K K | K K | L I | + +-----+-----+-----+-----+ + y3 | M N | O O | O O | P Q | + | R S | S S | S S | S T | + +-----+-----+-----+-----+ + y4 | R O | O O | U V | O T | + | W X | X X | * Y | X Z | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 5 6 | 83 83 | 83 83 | 8 9 | + | 21 56 | 18 18 | 18 18 | 56 25 | + +---------+---------+---------+---------+ + y2 | 21 56 | 18 18 | 18 18 | 56 25 | + | 21 22 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+ + y3 | 37 38 | 10 10 | 10 10 | 40 41 | + | 15 34 | 34 34 | 34 34 | 34 31 | + +---------+---------+---------+---------+ + y4 | 15 10 | 10 10 | 11 12 | 10 31 | + | 78 26 | 26 26 | 27 28 | 26 79 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 83, 83, 83, 83, 8, 9 }, -- r1 + { 21, 56, 18, 18, 18, 18, 56, 25 }, -- r2 + { 21, 56, 18, 18, 18, 18, 56, 25 }, -- r3 + { 21, 22, 23, 23, 23, 23, 24, 25 }, -- r4 + { 37, 38, 10, 10, 10, 10, 40, 41 }, -- r5 + { 15, 34, 34, 34, 34, 34, 34, 31 }, -- r6 + { 15, 10, 10, 10, 11, 12, 10, 31 }, -- r7 + { 78, 26, 26, 26, 27, 28, 26, 79 }, -- r8 +} +``` + +## Legend + +_Legend pending._ + +- `*` = tile 27, used 1x +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 83, used 4x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 3x +- `G` = tile 56, used 4x +- `H` = tile 18, used 8x +- `I` = tile 25, used 3x +- `J` = tile 22, used 1x +- `K` = tile 23, used 4x +- `L` = tile 24, used 1x +- `M` = tile 37, used 1x +- `N` = tile 38, used 1x +- `O` = tile 10, used 8x +- `P` = tile 40, used 1x +- `Q` = tile 41, used 1x +- `R` = tile 15, used 2x +- `S` = tile 34, used 6x +- `T` = tile 31, used 2x +- `U` = tile 11, used 1x +- `V` = tile 12, used 1x +- `W` = tile 78, used 1x +- `X` = tile 26, used 4x +- `Y` = tile 28, used 1x +- `Z` = tile 79, used 1x + +![distinct tiles](img/B33_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID + y3 SOLID SOLID SOLID SOLID + y4 SOLID SOLID DOOR SOLID +``` + +Enterable cell: (3,4). + +## Silhouette + +186 of the 4096 px inside the box are ground outside the black outline, so the 64x64 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c7:16px, c8:48px + r5 c1:5px, c8:5px + r6 c1:8px, c8:8px + r7 c1:8px, c8:8px + r8 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| ROUTE_5 | (8,18) | (10,21) | `DAYCARE` | diff --git a/assets/docs/buildings/B34-unnamed-building.md b/assets/docs/buildings/B34-unnamed-building.md new file mode 100644 index 0000000..b9d7176 --- /dev/null +++ b/assets/docs/buildings/B34-unnamed-building.md @@ -0,0 +1,97 @@ +# B34 - Unnamed building + +![Unnamed building](img/B34_x10.png) + +`OVERWORLD` tileset, **4 x 2 cells** (8 x 4 tiles of 8px, 64 x 32 px). Appears **1 time** in the game. Tile ids index `assets/generated/tilesets/overworld.png`, 16 per row. + +Coordinates are 1-based and local to the building: cell x=1..4, y=1..2; tile column c=1..8, tile row r=1..4. No terrain padding is included - edge rows and columns that were pure ground have been trimmed. + +## Symbol grid + +``` + x1 x2 x3 x4 + +-----+-----+-----+-----+ + y1 | A B | C C | C C | D E | + | F G | H H | H H | I J | + +-----+-----+-----+-----+ + y2 | K L | M N | M M | O P | + | Q R | R R | R R | R S | + +-----+-----+-----+-----+ +``` + +## Same grid, raw tile ids + +``` + x1 x2 x3 x4 + +---------+---------+---------+---------+ + y1 | 5 6 | 7 7 | 7 7 | 8 9 | + | 21 22 | 23 23 | 23 23 | 24 25 | + +---------+---------+---------+---------+ + y2 | 37 38 | 10 34 | 10 10 | 40 41 | + | 78 26 | 26 26 | 26 26 | 26 79 | + +---------+---------+---------+---------+ +``` + +As a 1-based Lua array, `rows[r][c]`: + +```lua +local rows = { + { 5, 6, 7, 7, 7, 7, 8, 9 }, -- r1 + { 21, 22, 23, 23, 23, 23, 24, 25 }, -- r2 + { 37, 38, 10, 34, 10, 10, 40, 41 }, -- r3 + { 78, 26, 26, 26, 26, 26, 26, 79 }, -- r4 +} +``` + +## Legend + +_Legend pending._ + +- `A` = tile 5, used 1x +- `B` = tile 6, used 1x +- `C` = tile 7, used 4x +- `D` = tile 8, used 1x +- `E` = tile 9, used 1x +- `F` = tile 21, used 1x +- `G` = tile 22, used 1x +- `H` = tile 23, used 4x +- `I` = tile 24, used 1x +- `J` = tile 25, used 1x +- `K` = tile 37, used 1x +- `L` = tile 38, used 1x +- `M` = tile 10, used 3x +- `N` = tile 34, used 1x +- `O` = tile 40, used 1x +- `P` = tile 41, used 1x +- `Q` = tile 78, used 1x +- `R` = tile 26, used 6x +- `S` = tile 79, used 1x + +![distinct tiles](img/B34_atlas.png) + +## Collision + +Cell walkability reads the **bottom-left 8px tile** of each cell (`src/world/Map.lua:6`): + +``` + y1 SOLID SOLID SOLID SOLID + y2 SOLID SOLID SOLID SOLID +``` + +Every cell is solid - this building has no door of its own. + +## Silhouette + +154 of the 2048 px inside the box are ground outside the black outline, so the 64x32 box is **not** a solid rectangle - a pixel-perfect cutout has to follow the outline. Terrain pixels by tile row: + +``` + r1 c1:48px, c2:16px, c7:16px, c8:48px + r3 c1:5px, c8:5px + r4 c1:8px, c8:8px +``` + +## Where it stands + +| map | cell (x,y) | door | leads to | +| --- | --- | --- | --- | +| FUCHSIA_CITY | (14,26) | - | scenery, no entrance | diff --git a/assets/docs/buildings/README.md b/assets/docs/buildings/README.md new file mode 100644 index 0000000..0bf9015 --- /dev/null +++ b/assets/docs/buildings/README.md @@ -0,0 +1,288 @@ +# Gen 1 building tile docs + +Every distinct building sprite in the game, extracted from the map block data, deduplicated, and trimmed to the building itself - no grass padding. 34 distinct buildings across 147 placements. + +Each doc carries the tile grid twice (as symbols and as raw tile ids), a legend describing what every tile draws, the per-cell collision, the silhouette's terrain pixels, and every map the building appears on. + +31 of the 34 are voxelized (see the `buildings` list in `data/voxel_heights.lua`); [REMAINING.md](REMAINING.md) inventories the 3 that are not and what defeats each. + +Generated by the scripts described in [HOW-THIS-WAS-BUILT.md](HOW-THIS-WAS-BUILT.md). + +| | id | building | size (cells) | tileset | used | first placement | +| --- | --- | --- | --- | --- | --- | --- | +| ![](img/B01.png) | [B01](B01-unnamed-building.md) | Unnamed building | 4 x 3 | `OVERWORLD` | 19x | SAFFRON_CITY (36,1) | +| ![](img/B02.png) | [B02](B02-unnamed-building.md) | Unnamed building | 4 x 4 | `OVERWORLD` | 15x | CELADON_CITY (28,6) | +| ![](img/B03.png) | [B03](B03-unnamed-building.md) | Unnamed building | 4 x 4 | `OVERWORLD` | 15x | CELADON_CITY (32,16) | +| ![](img/B04.png) | [B04](B04-unnamed-building.md) | Unnamed building | 4 x 2 | `OVERWORLD` | 12x | FUCHSIA_CITY (10,26) | +| ![](img/B05.png) | [B05](B05-unnamed-building.md) | Unnamed building | 4 x 4 | `OVERWORLD` | 11x | CELADON_CITY (40,6) | +| ![](img/B06.png) | [B06](B06-unnamed-building.md) | Unnamed building | 4 x 4 | `OVERWORLD` | 8x | CERULEAN_CITY (24,22) | +| ![](img/B07.png) | [B07](B07-unnamed-building.md) | Unnamed building | 4 x 3 | `OVERWORLD` | 7x | FUCHSIA_CITY (26,25) | +| ![](img/B08.png) | [B08](B08-unnamed-building.md) | Unnamed building | 4 x 6 | `OVERWORLD` | 6x | CELADON_CITY (2,4) | +| ![](img/B09.png) | [B09](B09-unnamed-building.md) | Unnamed building | 6 x 4 | `OVERWORLD` | 5x | CELADON_CITY (26,16) | +| ![](img/B10.png) | [B10](B10-unnamed-building.md) | Unnamed building | 6 x 4 | `OVERWORLD` | 5x | CINNABAR_ISLAND (14,0) | +| ![](img/B11.png) | [B11](B11-unnamed-building.md) | Unnamed building | 6 x 2 | `OVERWORLD` | 5x | CELADON_CITY (20,14) | +| ![](img/B12.png) | [B12](B12-unnamed-building.md) | Unnamed building | 4 x 2 | `FOREST` | 5x | SAFARI_ZONE_CENTER (16,18) | +| ![](img/B13.png) | [B13](B13-unnamed-building.md) | Unnamed building | 6 x 4 | `OVERWORLD` | 4x | ROUTE_15 (8,6) | +| ![](img/B14.png) | [B14](B14-unnamed-building.md) | Unnamed building | 6 x 6 | `OVERWORLD` | 3x | CELADON_CITY (14,4) | +| ![](img/B15.png) | [B15](B15-unnamed-building.md) | Unnamed building | 6 x 6 | `OVERWORLD` | 3x | CELADON_CITY (22,4) | +| ![](img/B16.png) | [B16](B16-unnamed-building.md) | Unnamed building | 8 x 4 | `OVERWORLD` | 3x | CELADON_CITY (6,24) | +| ![](img/B17.png) | [B17](B17-unnamed-building.md) | Unnamed building | 6 x 2 | `OVERWORLD` | 3x | CERULEAN_CITY (8,10) | +| ![](img/B18.png) | [B18](B18-unnamed-building.md) | Unnamed building | 6 x 4 | `OVERWORLD` | 2x | PEWTER_CITY (18,2) | +| ![](img/B19.png) | [B19](B19-unnamed-building.md) | Unnamed building | 20 x 5 | `PLATEAU` | 1x | INDIGO_PLATEAU (0,1) | +| ![](img/B20.png) | [B20](B20-unnamed-building.md) | Unnamed building | 8 x 12 | `OVERWORLD` | 1x | SAFFRON_CITY (16,10) | +| ![](img/B21.png) | [B21](B21-unnamed-building.md) | Unnamed building | 12 x 6 | `OVERWORLD` | 1x | ROUTE_22 (2,0) | +| ![](img/B22.png) | [B22](B22-unnamed-building.md) | Unnamed building | 8 x 8 | `OVERWORLD` | 1x | CELADON_CITY (6,6) | +| ![](img/B23.png) | [B23](B23-unnamed-building.md) | Unnamed building | 18 x 3 | `PLATEAU` | 1x | ROUTE_23 (0,29) | +| ![](img/B24.png) | [B24](B24-unnamed-building.md) | Unnamed building | 8 x 6 | `OVERWORLD` | 1x | PEWTER_CITY (10,2) | +| ![](img/B25.png) | [B25](B25-unnamed-building.md) | Unnamed building | 8 x 6 | `OVERWORLD` | 1x | ROUTE_10 (2,34) | +| ![](img/B26.png) | [B26](B26-unnamed-building.md) | Unnamed building | 6 x 6 | `OVERWORLD` | 1x | ROUTE_10 (12,66) | +| ![](img/B27.png) | [B27](B27-unnamed-building.md) | Unnamed building | 8 x 4 | `OVERWORLD` | 1x | ROUTE_11 (50,6) | +| ![](img/B28.png) | [B28](B28-unnamed-building.md) | Unnamed building | 8 x 4 | `OVERWORLD` | 1x | ROUTE_5 (6,30) | +| ![](img/B29.png) | [B29](B29-unnamed-building.md) | Unnamed building | 6 x 4 | `OVERWORLD` | 1x | FUCHSIA_CITY (4,24) | +| ![](img/B30.png) | [B30](B30-unnamed-building.md) | Unnamed building | 6 x 4 | `OVERWORLD` | 1x | LAVENDER_TOWN (12,0) | +| ![](img/B31.png) | [B31](B31-unnamed-building.md) | Unnamed building | 6 x 4 | `OVERWORLD` | 1x | PALLET_TOWN (10,8) | +| ![](img/B32.png) | [B32](B32-unnamed-building.md) | Unnamed building | 8 x 3 | `SHIP_PORT` | 1x | VERMILION_DOCK (10,3) | +| ![](img/B33.png) | [B33](B33-unnamed-building.md) | Unnamed building | 4 x 4 | `OVERWORLD` | 1x | ROUTE_5 (8,18) | +| ![](img/B34.png) | [B34](B34-unnamed-building.md) | Unnamed building | 4 x 2 | `OVERWORLD` | 1x | FUCHSIA_CITY (14,26) | + +## Every placement, by map + +**CELADON_CITY** + +- (2,4) [B08](B08-unnamed-building.md) Unnamed building - no entrance +- (14,4) [B14](B14-unnamed-building.md) Unnamed building - no entrance +- (22,4) [B15](B15-unnamed-building.md) Unnamed building - CELADON_MANSION_1F +- (6,6) [B22](B22-unnamed-building.md) Unnamed building - CELADON_MART_1F, CELADON_MART_1F +- (28,6) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (32,6) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (36,6) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (40,6) [B05](B05-unnamed-building.md) Unnamed building - CELADON_POKECENTER +- (20,14) [B11](B11-unnamed-building.md) Unnamed building - no entrance +- (26,16) [B09](B09-unnamed-building.md) Unnamed building - GAME_CORNER +- (32,16) [B03](B03-unnamed-building.md) Unnamed building - GAME_CORNER_PRIZE_ROOM +- (38,16) [B02](B02-unnamed-building.md) Unnamed building - CELADON_MART_5F +- (42,16) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (2,24) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (6,24) [B16](B16-unnamed-building.md) Unnamed building - CELADON_GYM +- (14,24) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (18,24) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (26,24) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (30,24) [B03](B03-unnamed-building.md) Unnamed building - CELADON_DINER +- (34,24) [B03](B03-unnamed-building.md) Unnamed building - CELADON_CHIEF_HOUSE +- (38,24) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (42,24) [B03](B03-unnamed-building.md) Unnamed building - CELADON_HOTEL +- (18,28) [B02](B02-unnamed-building.md) Unnamed building - no entrance + +**CERULEAN_CITY** + +- (8,10) [B17](B17-unnamed-building.md) Unnamed building - CERULEAN_BADGE_HOUSE +- (14,10) [B11](B11-unnamed-building.md) Unnamed building - no entrance +- (26,10) [B17](B17-unnamed-building.md) Unnamed building - CERULEAN_TRASHED_HOUSE +- (34,10) [B11](B11-unnamed-building.md) Unnamed building - no entrance +- (12,14) [B17](B17-unnamed-building.md) Unnamed building - CERULEAN_TRADE_HOUSE +- (18,14) [B05](B05-unnamed-building.md) Unnamed building - CERULEAN_POKECENTER +- (24,16) [B16](B16-unnamed-building.md) Unnamed building - CERULEAN_GYM +- (12,22) [B03](B03-unnamed-building.md) Unnamed building - BIKE_SHOP +- (24,22) [B06](B06-unnamed-building.md) Unnamed building - CERULEAN_MART +- (18,24) [B11](B11-unnamed-building.md) Unnamed building - no entrance +- (28,24) [B11](B11-unnamed-building.md) Unnamed building - no entrance + +**CINNABAR_ISLAND** + +- (4,0) [B09](B09-unnamed-building.md) Unnamed building - POKEMON_MANSION_1F +- (14,0) [B10](B10-unnamed-building.md) Unnamed building - CINNABAR_GYM +- (4,6) [B09](B09-unnamed-building.md) Unnamed building - CINNABAR_LAB +- (10,8) [B05](B05-unnamed-building.md) Unnamed building - CINNABAR_POKECENTER +- (14,8) [B06](B06-unnamed-building.md) Unnamed building - CINNABAR_MART + +**FUCHSIA_CITY** + +- (16,0) [B09](B09-unnamed-building.md) Unnamed building - SAFARI_ZONE_GATE +- (4,10) [B06](B06-unnamed-building.md) Unnamed building - FUCHSIA_MART +- (20,10) [B09](B09-unnamed-building.md) Unnamed building - FUCHSIA_MEETING_ROOM +- (4,24) [B29](B29-unnamed-building.md) Unnamed building - FUCHSIA_GYM +- (18,24) [B05](B05-unnamed-building.md) Unnamed building - FUCHSIA_POKECENTER +- (26,25) [B07](B07-unnamed-building.md) Unnamed building - WARDENS_HOUSE +- (30,25) [B07](B07-unnamed-building.md) Unnamed building - FUCHSIA_GOOD_ROD_HOUSE +- (10,26) [B04](B04-unnamed-building.md) Unnamed building - FUCHSIA_BILLS_GRANDPAS_HOUSE +- (14,26) [B34](B34-unnamed-building.md) Unnamed building - no entrance + +**INDIGO_PLATEAU** + +- (0,1) [B19](B19-unnamed-building.md) Unnamed building - INDIGO_PLATEAU_LOBBY, INDIGO_PLATEAU_LOBBY + +**LAVENDER_TOWN** + +- (12,0) [B30](B30-unnamed-building.md) Unnamed building - no entrance +- (2,2) [B05](B05-unnamed-building.md) Unnamed building - LAVENDER_POKECENTER +- (6,8) [B04](B04-unnamed-building.md) Unnamed building - MR_FUJIS_HOUSE +- (14,10) [B06](B06-unnamed-building.md) Unnamed building - LAVENDER_MART +- (2,12) [B04](B04-unnamed-building.md) Unnamed building - LAVENDER_CUBONE_HOUSE +- (6,12) [B04](B04-unnamed-building.md) Unnamed building - NAME_RATERS_HOUSE + +**PALLET_TOWN** + +- (4,3) [B07](B07-unnamed-building.md) Unnamed building - REDS_HOUSE_1F +- (12,3) [B07](B07-unnamed-building.md) Unnamed building - BLUES_HOUSE +- (10,8) [B31](B31-unnamed-building.md) Unnamed building - OAKS_LAB + +**PEWTER_CITY** + +- (10,2) [B24](B24-unnamed-building.md) Unnamed building - MUSEUM_1F +- (18,2) [B18](B18-unnamed-building.md) Unnamed building - MUSEUM_1F +- (28,12) [B04](B04-unnamed-building.md) Unnamed building - PEWTER_NIDORAN_HOUSE +- (12,14) [B10](B10-unnamed-building.md) Unnamed building - PEWTER_GYM +- (22,14) [B06](B06-unnamed-building.md) Unnamed building - PEWTER_MART +- (12,22) [B05](B05-unnamed-building.md) Unnamed building - PEWTER_POKECENTER +- (6,28) [B04](B04-unnamed-building.md) Unnamed building - PEWTER_SPEECH_HOUSE + +**ROUTE_10** + +- (10,16) [B05](B05-unnamed-building.md) Unnamed building - ROCK_TUNNEL_POKECENTER +- (2,34) [B25](B25-unnamed-building.md) Unnamed building - POWER_PLANT +- (12,66) [B26](B26-unnamed-building.md) Unnamed building - no entrance + +**ROUTE_11** + +- (50,6) [B27](B27-unnamed-building.md) Unnamed building - no entrance + +**ROUTE_12** + +- (8,16) [B15](B15-unnamed-building.md) Unnamed building - ROUTE_12_GATE_1F +- (10,76) [B04](B04-unnamed-building.md) Unnamed building - ROUTE_12_SUPER_ROD_HOUSE + +**ROUTE_15** + +- (8,6) [B13](B13-unnamed-building.md) Unnamed building - no entrance + +**ROUTE_16** + +- (18,2) [B13](B13-unnamed-building.md) Unnamed building - no entrance +- (6,4) [B04](B04-unnamed-building.md) Unnamed building - ROUTE_16_FLY_HOUSE +- (18,6) [B14](B14-unnamed-building.md) Unnamed building - no entrance + +**ROUTE_18** + +- (34,4) [B14](B14-unnamed-building.md) Unnamed building - no entrance + +**ROUTE_2** + +- (2,12) [B03](B03-unnamed-building.md) Unnamed building - no entrance +- (14,18) [B04](B04-unnamed-building.md) Unnamed building - ROUTE_2_TRADE_HOUSE +- (14,36) [B18](B18-unnamed-building.md) Unnamed building - ROUTE_2_GATE +- (2,40) [B03](B03-unnamed-building.md) Unnamed building - VIRIDIAN_FOREST_SOUTH_GATE + +**ROUTE_22** + +- (2,0) [B21](B21-unnamed-building.md) Unnamed building - ROUTE_22_GATE + +**ROUTE_23** + +- (0,29) [B23](B23-unnamed-building.md) Unnamed building - VICTORY_ROAD_1F, VICTORY_ROAD_2F + +**ROUTE_25** + +- (44,1) [B07](B07-unnamed-building.md) Unnamed building - BILLS_HOUSE + +**ROUTE_4** + +- (10,2) [B05](B05-unnamed-building.md) Unnamed building - MT_MOON_POKECENTER + +**ROUTE_5** + +- (8,18) [B33](B33-unnamed-building.md) Unnamed building - DAYCARE +- (16,24) [B03](B03-unnamed-building.md) Unnamed building - UNDERGROUND_PATH_ROUTE_5 +- (6,30) [B28](B28-unnamed-building.md) Unnamed building - ROUTE_5_GATE + +**ROUTE_6** + +- (8,2) [B15](B15-unnamed-building.md) Unnamed building - ROUTE_6_GATE +- (16,10) [B03](B03-unnamed-building.md) Unnamed building - UNDERGROUND_PATH_ROUTE_6 + +**ROUTE_7** + +- (12,8) [B13](B13-unnamed-building.md) Unnamed building - no entrance +- (4,10) [B03](B03-unnamed-building.md) Unnamed building - UNDERGROUND_PATH_ROUTE_7 + +**ROUTE_8** + +- (12,2) [B04](B04-unnamed-building.md) Unnamed building - UNDERGROUND_PATH_ROUTE_8 +- (2,8) [B13](B13-unnamed-building.md) Unnamed building - no entrance + +**SAFARI_ZONE_CENTER** + +- (16,18) [B12](B12-unnamed-building.md) Unnamed building - SAFARI_ZONE_CENTER_REST_HOUSE + +**SAFARI_ZONE_EAST** + +- (24,8) [B12](B12-unnamed-building.md) Unnamed building - SAFARI_ZONE_EAST_REST_HOUSE + +**SAFARI_ZONE_NORTH** + +- (34,2) [B12](B12-unnamed-building.md) Unnamed building - SAFARI_ZONE_NORTH_REST_HOUSE + +**SAFARI_ZONE_WEST** + +- (2,2) [B12](B12-unnamed-building.md) Unnamed building - SAFARI_ZONE_SECRET_HOUSE +- (10,10) [B12](B12-unnamed-building.md) Unnamed building - SAFARI_ZONE_WEST_REST_HOUSE + +**SAFFRON_CITY** + +- (22,0) [B10](B10-unnamed-building.md) Unnamed building - FIGHTING_DOJO +- (28,0) [B16](B16-unnamed-building.md) Unnamed building - SAFFRON_GYM +- (36,1) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (2,3) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (6,3) [B07](B07-unnamed-building.md) Unnamed building - COPYCATS_HOUSE_1F +- (10,3) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (24,8) [B06](B06-unnamed-building.md) Unnamed building - SAFFRON_MART +- (4,9) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (8,9) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (12,9) [B07](B07-unnamed-building.md) Unnamed building - SAFFRON_PIDGEY_HOUSE +- (28,9) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (32,9) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (16,10) [B20](B20-unnamed-building.md) Unnamed building - SILPH_CO_1F +- (6,16) [B08](B08-unnamed-building.md) Unnamed building - no entrance +- (10,16) [B08](B08-unnamed-building.md) Unnamed building - no entrance +- (24,16) [B08](B08-unnamed-building.md) Unnamed building - no entrance +- (28,16) [B08](B08-unnamed-building.md) Unnamed building - no entrance +- (32,16) [B08](B08-unnamed-building.md) Unnamed building - no entrance +- (8,26) [B05](B05-unnamed-building.md) Unnamed building - SAFFRON_POKECENTER +- (28,26) [B03](B03-unnamed-building.md) Unnamed building - MR_PSYCHICS_HOUSE +- (4,27) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (12,27) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (16,27) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (20,27) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (32,27) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (0,32) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (36,32) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (4,33) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (8,33) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (12,33) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (16,33) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (24,33) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (28,33) [B01](B01-unnamed-building.md) Unnamed building - no entrance +- (32,33) [B01](B01-unnamed-building.md) Unnamed building - no entrance + +**VERMILION_CITY** + +- (6,0) [B03](B03-unnamed-building.md) Unnamed building - VERMILION_OLD_ROD_HOUSE +- (10,0) [B05](B05-unnamed-building.md) Unnamed building - VERMILION_POKECENTER +- (14,0) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (20,0) [B02](B02-unnamed-building.md) Unnamed building - no entrance +- (8,10) [B03](B03-unnamed-building.md) Unnamed building - POKEMON_FAN_CLUB +- (14,10) [B03](B03-unnamed-building.md) Unnamed building - VERMILION_TRADE_HOUSE +- (22,10) [B06](B06-unnamed-building.md) Unnamed building - VERMILION_MART +- (8,16) [B10](B10-unnamed-building.md) Unnamed building - VERMILION_GYM +- (22,16) [B03](B03-unnamed-building.md) Unnamed building - VERMILION_PIDGEY_HOUSE + +**VERMILION_DOCK** + +- (10,3) [B32](B32-unnamed-building.md) Unnamed building - no entrance + +**VIRIDIAN_CITY** + +- (28,4) [B10](B10-unnamed-building.md) Unnamed building - VIRIDIAN_GYM +- (20,8) [B04](B04-unnamed-building.md) Unnamed building - VIRIDIAN_NICKNAME_HOUSE +- (20,14) [B04](B04-unnamed-building.md) Unnamed building - VIRIDIAN_SCHOOL_HOUSE +- (28,16) [B06](B06-unnamed-building.md) Unnamed building - VIRIDIAN_MART +- (22,22) [B05](B05-unnamed-building.md) Unnamed building - VIRIDIAN_POKECENTER diff --git a/assets/docs/buildings/REMAINING.md b/assets/docs/buildings/REMAINING.md new file mode 100644 index 0000000..7505858 --- /dev/null +++ b/assets/docs/buildings/REMAINING.md @@ -0,0 +1,88 @@ +# Buildings not yet voxelized + +Status of the 34 catalogued drawings against the `buildings` list in +`data/voxel_heights.lua`. Coverage is **31 of 34 drawings, 144 of 147 +placements**. Three are left, one placement each, and none of them is a +matter of sitting down and reading the drawing - each defeats a different +assumption the band-table pipeline is built on. + +(Counting note: the catalogue's per-building tables list one row per DOOR, +so B19, B22 and B23 each appear twice for a single placement. 150 rows, +147 placements. This page counts placements.) + +| id | tileset | cells | px | used | what defeats it | +| --- | --- | --- | --- | --- | --- | +| [B19](B19-unnamed-building.md) | `PLATEAU` | 20 x 5 | 320x80 | 1x | two structures in one drawing | +| [B30](B30-unnamed-building.md) | `OVERWORLD` | 6 x 4 | 96x64 | 1x | truncated by the map edge; no roof drawn | +| [B32](B32-unnamed-building.md) | `SHIP_PORT` | 8 x 3 | 128x48 | 1x | not a building | + +## The silhouette test + +A drawing the pipeline can read floods to **one connected piece**. That is +the most useful single number here, more than fill percentage: a drawing +can be 95% filled and still be shredded. + +| id | fill | pieces | largest piece | note | +| --- | --- | --- | --- | --- | +| shipped, for reference | 82-95% | **1** | 100% | | +| B19 | 76% | **1** | 100% | silhouette is fine; the problem is elsewhere | +| B32 | 95% | 29 | 98% | mostly intact, fragments are the ship's fittings | +| B30 | 37% | 126 | 25% | unbounded - see below | + +## B19 - Indigo Plateau + +`INDIGO_PLATEAU` (0,1), doors at (9,5) and (10,5) into +`INDIGO_PLATEAU_LOBBY`. + +Its silhouette is clean, and B23 - the Victory Road entrance, the same +tileset and the same kind of rock face - was voxelized without trouble. The +difference is that **B19 is two structures in one drawing**. Rows 0..47 +span the full 320px: that is the plateau wall. Rows 48..79 span only +x=96..223: that is the lobby building standing in front of it, 8 cells +wide. + +The band table describes one roof over one facade. Give B19 a single +`roofRows` and the roof slab covers all 320 columns while walls exist only +under the middle 128, so the two ends come out as a slab floating over +nothing. Nothing in the band table can say "and the wall stops here". + +It needs either a way to express two stacked footprints in one template, or +splitting into two drawings - which means changing the extraction, not the +profile. + +## B30 - the Pokemon Tower + +`LAVENDER_TOWN` (12,0). A tall face of windows over brick. + +Two problems, and the second is the one that stops it. + +**Its silhouette is unbounded.** The drawing has no black outline anywhere +on its boundary: row 0, row H-1 and both side columns are entirely light, +so the flood enters at 318 separate border seeds and eats everything up to +the window frames - 126 fragments, largest 25%. `seal` does not rescue it +the way it did Route 10's block: sealing the south side alone changes +nothing (37% either way), and sealing all four asserts the whole box is +building. + +**It cannot be sealed, because the box is not all building.** The +catalogue's own silhouette record says 1552 of the 6144 px are ground - +a quarter of the box - including interior tile columns. Seal all four sides +and that quarter becomes wall. + +**And it has no roof.** The tower sits at `y=0`, the top row of the map, so +the drawing is cut off by the map boundary: rows 0..59 are windows and +brick all the way up, with no roof band. A band table with a small +`roofRows` caps it with its own top rows, which renders plausibly, but the +cap is a reading the drawing does not support. + +## B32 - the S.S. Anne + +`VERMILION_DOCK` (10,3). A ship in three-quarter perspective, with a hull, +deck, funnels and gangway. + +It is the **only asymmetric drawing in the catalogue** (`top[x]` does not +mirror), which by itself fails the reference tool's symmetry assert. Its +silhouette is largely fine, but the band table does not describe it at any +setting: there is no roof-from-above band, no face-on facade, and no taper +that means elevation. Voxelizing the S.S. Anne means a different archetype, +not a band table. diff --git a/assets/voxels/agatha.lua b/assets/voxels/agatha.lua new file mode 100644 index 0000000..4611b90 --- /dev/null +++ b/assets/voxels/agatha.lua @@ -0,0 +1,322 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "agatha" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "agatha", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1864, + count = 1200, + faces = { + 0,7,13,2,3,40, 0,7,13,3,3,40, 0,7,13,4,0,8, 0,7,13,5,0,8, 0,7,12,2,4,40, 0,7,12,3,4,40, 0,7,12,4,0,8, 0,7,11,2,5,40, + 0,7,11,3,5,40, 0,7,11,4,0,8, 0,7,10,2,6,40, 0,7,10,3,6,40, 0,7,10,4,0,8, 0,7,9,2,7,40, 0,7,9,3,7,40, 0,7,9,4,0,8, + 0,7,8,2,8,40, 0,7,8,3,8,40, 0,7,8,4,0,8, 0,7,7,2,9,40, 0,7,7,3,9,40, 0,7,7,4,0,8, 0,7,6,2,10,40, 0,7,6,3,10,40, + 0,7,6,4,0,8, 0,7,5,2,11,40, 0,7,5,3,11,40, 0,7,5,4,0,8, 0,7,4,2,12,40, 0,7,4,3,12,40, 0,7,4,4,0,8, 0,7,3,2,13,40, + 0,7,3,3,13,40, 0,7,3,4,0,8, 0,7,2,2,14,40, 0,7,2,3,14,40, 0,7,2,4,0,8, 0,7,1,2,15,40, 0,7,1,3,15,40, 0,7,1,4,0,8, + 0,7,1,6,15,24, 0,5,11,2,5,42, 0,5,11,3,5,42, 0,5,11,4,0,10, 0,5,11,5,0,10, 0,5,10,2,6,42, 0,5,10,3,6,42, 0,5,10,4,0,10, + 0,5,9,2,7,42, 0,5,9,3,7,42, 0,5,9,4,0,10, 0,5,8,2,8,42, 0,5,8,3,8,42, 0,5,8,4,0,10, 0,5,7,2,9,42, 0,5,7,3,9,42, + 0,5,7,4,0,10, 0,5,6,2,10,42, 0,5,6,3,10,42, 0,5,6,4,0,10, 0,5,5,2,11,42, 0,5,5,3,11,42, 0,5,5,4,0,10, 0,5,4,2,12,42, + 0,5,4,3,12,42, 0,5,4,4,0,10, 0,5,4,6,0,10, 1,8,13,2,3,39, 1,8,13,3,3,39, 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,12,3,4,39, + 1,8,11,2,5,39, 1,8,11,3,5,39, 1,8,10,2,6,39, 1,8,10,3,6,39, 1,8,9,2,7,39, 1,8,9,3,7,39, 1,8,8,2,8,39, 1,8,8,3,8,39, + 1,8,7,2,9,39, 1,8,7,3,9,39, 1,8,6,2,10,39, 1,8,6,3,10,39, 1,8,5,2,11,39, 1,8,5,3,11,39, 1,8,4,2,12,39, 1,8,4,3,12,39, + 1,8,3,2,13,39, 1,8,3,3,13,39, 1,8,2,2,14,39, 1,8,2,3,14,39, 1,8,1,2,15,39, 1,8,1,3,15,39, 1,8,1,6,14,23, 1,7,13,4,1,8, + 1,7,13,5,1,8, 1,7,1,4,1,8, 1,7,1,6,14,24, 1,6,12,2,4,41, 1,6,12,4,1,9, 1,6,12,5,1,9, 1,6,11,2,5,41, 1,6,10,2,6,41, + 1,6,9,2,7,41, 1,6,8,2,8,41, 1,6,7,2,9,41, 1,6,6,2,10,41, 1,6,5,2,11,41, 1,6,4,2,12,41, 1,6,3,2,13,41, 1,6,3,4,1,9, + 1,6,2,2,14,41, 1,6,2,4,1,9, 1,6,2,6,14,25, 1,5,11,4,1,10, 1,5,11,5,1,10, 1,5,4,4,1,10, 1,5,4,6,14,26, 1,4,10,2,6,43, + 1,4,10,4,1,11, 1,4,10,5,1,11, 1,4,9,2,7,43, 1,4,9,4,1,11, 1,4,8,2,8,43, 1,4,8,4,1,11, 1,4,7,2,9,43, 1,4,7,4,1,11, + 1,4,6,2,10,43, 1,4,6,4,1,11, 1,4,5,2,11,43, 1,4,5,4,1,11, 1,4,5,6,14,27, 2,12,14,2,2,35, 2,12,14,3,2,35, 2,12,14,5,2,3, + 2,12,13,2,3,35, 2,12,13,3,3,35, 2,12,12,2,4,35, 2,12,12,3,4,35, 2,12,11,2,5,35, 2,12,11,3,5,35, 2,12,10,2,6,35, 2,12,10,3,6,35, + 2,12,9,2,7,35, 2,12,9,3,7,35, 2,12,8,2,8,35, 2,12,8,3,8,35, 2,12,7,2,9,35, 2,12,7,3,9,35, 2,12,6,2,10,35, 2,12,6,3,10,35, + 2,12,5,2,11,35, 2,12,5,3,11,35, 2,12,4,2,12,35, 2,12,4,3,12,35, 2,12,3,2,13,35, 2,12,3,3,13,35, 2,12,3,6,13,19, 2,11,14,2,2,36, + 2,11,14,4,2,4, 2,11,14,5,2,4, 2,11,13,2,3,36, 2,11,12,2,4,36, 2,11,11,2,5,36, 2,11,10,2,6,36, 2,11,9,2,7,36, 2,11,8,2,8,36, + 2,11,7,2,9,36, 2,11,6,2,10,36, 2,11,5,2,11,36, 2,11,4,2,12,36, 2,11,3,2,13,36, 2,11,3,6,13,20, 2,10,13,2,3,37, 2,10,13,5,2,5, + 2,10,12,2,4,37, 2,10,11,2,5,37, 2,10,10,2,6,37, 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, 2,10,6,2,10,37, 2,10,5,2,11,37, + 2,10,4,2,12,37, 2,10,3,2,13,37, 2,10,3,6,13,21, 2,9,13,2,3,38, 2,9,13,5,2,6, 2,9,12,2,4,38, 2,9,11,2,5,38, 2,9,10,2,6,38, + 2,9,9,2,7,38, 2,9,8,2,8,38, 2,9,7,2,9,38, 2,9,6,2,10,38, 2,9,5,2,11,38, 2,9,4,2,12,38, 2,9,3,2,13,38, 2,9,2,2,14,38, + 2,9,2,3,14,38, 2,9,2,6,13,22, 2,8,13,5,2,7, 2,8,1,3,15,39, 2,8,1,6,13,23, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,1,4,2,8, + 2,7,1,6,13,24, 2,6,12,4,2,9, 2,6,12,5,2,9, 2,6,3,4,2,9, 2,6,2,4,2,9, 2,6,2,6,13,25, 2,5,11,4,2,10, 2,5,11,5,2,10, + 2,5,4,4,2,10, 2,5,4,6,13,26, 2,4,10,5,2,11, 2,4,5,6,13,27, 2,3,11,2,5,44, 2,3,11,3,5,44, 2,3,11,5,2,12, 2,3,10,2,6,44, + 2,3,9,2,7,44, 2,3,8,2,8,44, 2,3,7,2,9,44, 2,3,6,2,10,44, 2,3,5,2,11,44, 2,3,4,2,12,44, 2,3,4,3,12,44, 2,3,4,6,13,28, + 2,2,12,2,4,45, 2,2,12,3,4,45, 2,2,12,4,2,13, 2,2,12,5,2,13, 2,2,11,2,5,45, 2,2,11,4,2,13, 2,2,10,2,6,45, 2,2,10,4,2,13, + 2,2,9,2,7,45, 2,2,9,4,2,13, 2,2,8,2,8,45, 2,2,8,4,2,13, 2,2,7,2,9,45, 2,2,7,4,2,13, 2,2,6,2,10,45, 2,2,6,4,2,13, + 2,2,5,2,11,45, 2,2,5,4,2,13, 2,2,4,2,12,45, 2,2,4,4,2,13, 2,2,3,2,13,45, 2,2,3,3,13,45, 2,2,3,4,2,13, 2,2,3,6,13,29, + 3,13,13,2,3,34, 3,13,13,3,3,34, 3,13,13,5,3,2, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, + 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, + 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,4,6,12,18, 3,12,14,3,2,35, 3,12,14,5,3,3, + 3,12,3,3,13,35, 3,12,3,6,12,19, 3,11,14,4,3,4, 3,11,14,5,3,4, 3,11,3,6,12,20, 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, + 3,9,2,3,14,38, 3,9,2,6,12,22, 3,8,13,5,3,7, 3,8,1,3,15,39, 3,8,1,6,12,23, 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,1,4,3,8, + 3,7,1,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,3,4,3,9, 3,6,2,4,3,9, 3,6,2,6,12,25, 3,5,11,4,3,10, 3,5,11,5,3,10, + 3,5,4,4,3,10, 3,5,4,6,12,26, 3,4,10,5,3,11, 3,4,5,6,12,27, 3,3,11,3,5,44, 3,3,11,5,3,12, 3,3,4,3,12,44, 3,3,4,6,12,28, + 3,2,12,3,4,45, 3,2,12,5,3,13, 3,2,3,3,13,45, 3,2,3,6,12,29, 3,1,12,2,4,46, 3,1,12,4,3,14, 3,1,12,5,3,14, 3,1,11,2,5,46, + 3,1,11,4,3,14, 3,1,10,2,6,46, 3,1,10,4,3,14, 3,1,9,2,7,46, 3,1,9,4,3,14, 3,1,8,2,8,46, 3,1,8,4,3,14, 3,1,7,2,9,46, + 3,1,7,4,3,14, 3,1,6,2,10,46, 3,1,6,4,3,14, 3,1,5,2,11,46, 3,1,5,4,3,14, 3,1,4,2,12,46, 3,1,4,4,3,14, 3,1,3,2,13,46, + 3,1,3,4,3,14, 3,1,3,6,12,30, 4,14,12,2,4,33, 4,14,12,3,4,33, 4,14,12,5,4,1, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,10,2,6,33, + 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, + 4,14,6,3,10,33, 4,14,5,2,11,33, 4,14,5,3,11,33, 4,14,5,6,11,17, 4,13,13,3,3,34, 4,13,13,5,4,2, 4,13,4,3,12,34, 4,13,4,6,11,18, + 4,12,14,3,2,35, 4,12,14,5,4,3, 4,12,3,3,13,35, 4,12,3,6,11,19, 4,11,14,4,4,4, 4,11,14,5,4,4, 4,11,3,6,11,20, 4,10,13,5,4,5, + 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,2,3,14,38, 4,9,2,6,11,22, 4,8,13,5,4,7, 4,8,1,3,15,39, 4,8,1,6,11,23, 4,7,13,4,4,8, + 4,7,13,5,4,8, 4,7,1,4,4,8, 4,7,1,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,3,4,4,9, 4,6,2,4,4,9, 4,6,2,6,11,25, + 4,5,11,4,4,10, 4,5,11,5,4,10, 4,5,4,4,4,10, 4,5,4,6,11,26, 4,4,10,5,4,11, 4,4,5,6,11,27, 4,3,11,3,5,44, 4,3,11,5,4,12, + 4,3,4,3,12,44, 4,3,4,6,11,28, 4,2,12,3,4,45, 4,2,12,5,4,13, 4,2,3,3,13,45, 4,2,3,6,11,29, 4,1,12,4,4,14, 4,1,12,5,4,14, + 4,1,11,4,4,14, 4,1,10,4,4,14, 4,1,9,4,4,14, 4,1,8,4,4,14, 4,1,7,4,4,14, 4,1,6,4,4,14, 4,1,5,4,4,14, 4,1,4,4,4,14, + 4,1,3,4,4,14, 4,1,3,6,11,30, 5,14,12,3,4,33, 5,14,12,5,5,1, 5,14,11,3,5,33, 5,14,10,3,6,33, 5,14,9,3,7,33, 5,14,8,3,8,33, + 5,14,7,3,9,33, 5,14,6,3,10,33, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,13,3,3,34, 5,13,13,5,5,2, 5,13,4,3,12,34, 5,13,4,6,10,18, + 5,12,14,3,2,35, 5,12,14,5,5,3, 5,12,3,3,13,35, 5,12,3,6,10,19, 5,11,14,4,5,4, 5,11,14,5,5,4, 5,11,3,6,10,20, 5,10,13,5,5,5, + 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,2,3,14,38, 5,9,2,6,10,22, 5,8,13,5,5,7, 5,8,1,3,15,39, 5,8,1,6,10,23, 5,7,13,4,5,8, + 5,7,13,5,5,8, 5,7,1,4,5,8, 5,7,1,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,3,4,5,9, 5,6,2,4,5,9, 5,6,2,6,10,25, + 5,5,11,4,5,10, 5,5,11,5,5,10, 5,5,4,4,5,10, 5,5,4,6,10,26, 5,4,10,5,5,11, 5,4,5,6,10,27, 5,3,11,3,5,44, 5,3,11,5,5,12, + 5,3,4,3,12,44, 5,3,4,6,10,28, 5,2,12,3,4,45, 5,2,12,5,5,13, 5,2,3,3,13,45, 5,2,3,6,10,29, 5,1,12,4,5,14, 5,1,12,5,5,14, + 5,1,3,4,5,14, 5,1,3,6,10,30, 5,0,11,2,5,47, 5,0,11,5,5,15, 5,0,10,2,6,47, 5,0,9,2,7,47, 5,0,8,2,8,47, 5,0,7,2,9,47, + 5,0,6,2,10,47, 5,0,5,2,11,47, 5,0,4,2,12,47, 5,0,4,6,10,31, 6,15,10,2,6,32, 6,15,10,3,6,32, 6,15,10,5,6,0, 6,15,9,2,7,32, + 6,15,9,3,7,32, 6,15,8,2,8,32, 6,15,8,3,8,32, 6,15,7,2,9,32, 6,15,7,3,9,32, 6,15,7,6,9,16, 6,14,12,3,4,33, 6,14,12,5,6,1, + 6,14,11,3,5,33, 6,14,6,3,10,33, 6,14,5,3,11,33, 6,14,5,6,9,17, 6,13,13,3,3,34, 6,13,13,5,6,2, 6,13,4,3,12,34, 6,13,4,6,9,18, + 6,12,14,3,2,35, 6,12,14,5,6,3, 6,12,3,3,13,35, 6,12,3,6,9,19, 6,11,14,4,6,4, 6,11,14,5,6,4, 6,11,3,6,9,20, 6,10,13,5,6,5, + 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,2,3,14,38, 6,9,2,6,9,22, 6,8,13,5,6,7, 6,8,1,3,15,39, 6,8,1,6,9,23, 6,7,13,4,6,8, + 6,7,13,5,6,8, 6,7,1,4,6,8, 6,7,1,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,3,4,6,9, 6,6,2,4,6,9, 6,6,2,6,9,25, + 6,5,11,4,6,10, 6,5,11,5,6,10, 6,5,4,4,6,10, 6,5,4,6,9,26, 6,4,10,5,6,11, 6,4,5,6,9,27, 6,3,11,3,5,44, 6,3,11,5,6,12, + 6,3,4,3,12,44, 6,3,4,6,9,28, 6,2,12,3,4,45, 6,2,12,5,6,13, 6,2,3,3,13,45, 6,2,3,6,9,29, 6,1,12,4,6,14, 6,1,12,5,6,14, + 6,1,3,4,6,14, 6,1,3,6,9,30, 6,0,11,5,6,15, 6,0,4,6,9,31, 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, + 7,15,7,3,9,32, 7,15,7,6,8,16, 7,14,12,3,4,33, 7,14,12,5,7,1, 7,14,11,3,5,33, 7,14,6,3,10,33, 7,14,5,3,11,33, 7,14,5,6,8,17, + 7,13,13,3,3,34, 7,13,13,5,7,2, 7,13,4,3,12,34, 7,13,4,6,8,18, 7,12,14,3,2,35, 7,12,14,5,7,3, 7,12,3,3,13,35, 7,12,3,6,8,19, + 7,11,14,4,7,4, 7,11,14,5,7,4, 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,2,3,14,38, 7,9,2,6,8,22, + 7,8,13,5,7,7, 7,8,1,3,15,39, 7,8,1,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,1,4,7,8, 7,7,1,6,8,24, 7,6,12,4,7,9, + 7,6,12,5,7,9, 7,6,3,4,7,9, 7,6,2,4,7,9, 7,6,2,6,8,25, 7,5,11,4,7,10, 7,5,11,5,7,10, 7,5,4,4,7,10, 7,5,4,6,8,26, + 7,4,10,5,7,11, 7,4,5,6,8,27, 7,3,11,3,5,44, 7,3,11,5,7,12, 7,3,4,3,12,44, 7,3,4,6,8,28, 7,2,12,3,4,45, 7,2,12,5,7,13, + 7,2,3,3,13,45, 7,2,3,6,8,29, 7,1,12,4,7,14, 7,1,12,5,7,14, 7,1,3,4,7,14, 7,1,3,6,8,30, 7,0,11,5,7,15, 7,0,4,6,8,31, + 8,15,10,3,6,32, 8,15,10,5,8,0, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,7,6,7,16, 8,14,12,3,4,33, 8,14,12,5,8,1, + 8,14,11,3,5,33, 8,14,6,3,10,33, 8,14,5,3,11,33, 8,14,5,6,7,17, 8,13,13,3,3,34, 8,13,13,5,8,2, 8,13,4,3,12,34, 8,13,4,6,7,18, + 8,12,14,3,2,35, 8,12,14,5,8,3, 8,12,3,3,13,35, 8,12,3,6,7,19, 8,11,14,4,8,4, 8,11,14,5,8,4, 8,11,3,6,7,20, 8,10,13,5,8,5, + 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,2,3,14,38, 8,9,2,6,7,22, 8,8,13,5,8,7, 8,8,1,3,15,39, 8,8,1,6,7,23, 8,7,13,4,8,8, + 8,7,13,5,8,8, 8,7,1,4,8,8, 8,7,1,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,3,4,8,9, 8,6,2,4,8,9, 8,6,2,6,7,25, + 8,5,11,4,8,10, 8,5,11,5,8,10, 8,5,4,4,8,10, 8,5,4,6,7,26, 8,4,10,5,8,11, 8,4,5,6,7,27, 8,3,11,3,5,44, 8,3,11,5,8,12, + 8,3,4,3,12,44, 8,3,4,6,7,28, 8,2,12,3,4,45, 8,2,12,5,8,13, 8,2,3,3,13,45, 8,2,3,6,7,29, 8,1,12,4,8,14, 8,1,12,5,8,14, + 8,1,3,4,8,14, 8,1,3,6,7,30, 8,0,11,5,8,15, 8,0,4,6,7,31, 9,15,10,1,6,32, 9,15,10,3,6,32, 9,15,10,5,9,0, 9,15,9,1,7,32, + 9,15,9,3,7,32, 9,15,8,1,8,32, 9,15,8,3,8,32, 9,15,7,1,9,32, 9,15,7,3,9,32, 9,15,7,6,6,16, 9,14,12,3,4,33, 9,14,12,5,9,1, + 9,14,11,3,5,33, 9,14,6,3,10,33, 9,14,5,3,11,33, 9,14,5,6,6,17, 9,13,13,3,3,34, 9,13,13,5,9,2, 9,13,4,3,12,34, 9,13,4,6,6,18, + 9,12,14,3,2,35, 9,12,14,5,9,3, 9,12,3,3,13,35, 9,12,3,6,6,19, 9,11,14,4,9,4, 9,11,14,5,9,4, 9,11,3,6,6,20, 9,10,13,5,9,5, + 9,10,3,6,6,21, 9,9,13,5,9,6, 9,9,2,3,14,38, 9,9,2,6,6,22, 9,8,13,5,9,7, 9,8,1,3,15,39, 9,8,1,6,6,23, 9,7,13,4,9,8, + 9,7,13,5,9,8, 9,7,1,4,9,8, 9,7,1,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,3,4,9,9, 9,6,2,4,9,9, 9,6,2,6,6,25, + 9,5,11,4,9,10, 9,5,11,5,9,10, 9,5,4,4,9,10, 9,5,4,6,6,26, 9,4,10,5,9,11, 9,4,5,6,6,27, 9,3,11,3,5,44, 9,3,11,5,9,12, + 9,3,4,3,12,44, 9,3,4,6,6,28, 9,2,12,3,4,45, 9,2,12,5,9,13, 9,2,3,3,13,45, 9,2,3,6,6,29, 9,1,12,4,9,14, 9,1,12,5,9,14, + 9,1,3,4,9,14, 9,1,3,6,6,30, 9,0,11,5,9,15, 9,0,4,6,6,31, 10,14,12,3,4,33, 10,14,12,5,10,1, 10,14,11,3,5,33, 10,14,10,3,6,33, + 10,14,9,3,7,33, 10,14,8,3,8,33, 10,14,7,3,9,33, 10,14,6,3,10,33, 10,14,5,3,11,33, 10,14,5,6,5,17, 10,13,13,3,3,34, 10,13,13,5,10,2, + 10,13,4,3,12,34, 10,13,4,6,5,18, 10,12,14,3,2,35, 10,12,14,5,10,3, 10,12,3,3,13,35, 10,12,3,6,5,19, 10,11,14,4,10,4, 10,11,14,5,10,4, + 10,11,3,6,5,20, 10,10,13,5,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,2,3,14,38, 10,9,2,6,5,22, 10,8,13,5,10,7, 10,8,1,3,15,39, + 10,8,1,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,1,4,10,8, 10,7,1,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,3,4,10,9, + 10,6,2,4,10,9, 10,6,2,6,5,25, 10,5,11,4,10,10, 10,5,11,5,10,10, 10,5,4,4,10,10, 10,5,4,6,5,26, 10,4,10,5,10,11, 10,4,5,6,5,27, + 10,3,11,3,5,44, 10,3,11,5,10,12, 10,3,4,3,12,44, 10,3,4,6,5,28, 10,2,12,3,4,45, 10,2,12,5,10,13, 10,2,3,3,13,45, 10,2,3,6,5,29, + 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,3,4,10,14, 10,1,3,6,5,30, 10,0,11,1,5,47, 10,0,11,5,10,15, 10,0,10,1,6,47, 10,0,9,1,7,47, + 10,0,8,1,8,47, 10,0,7,1,9,47, 10,0,6,1,10,47, 10,0,5,1,11,47, 10,0,4,1,12,47, 10,0,4,6,5,31, 11,14,12,1,4,33, 11,14,12,3,4,33, + 11,14,12,5,11,1, 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, + 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,5,6,4,17, + 11,13,13,3,3,34, 11,13,13,5,11,2, 11,13,4,3,12,34, 11,13,4,6,4,18, 11,12,14,3,2,35, 11,12,14,5,11,3, 11,12,3,3,13,35, 11,12,3,6,4,19, + 11,11,14,4,11,4, 11,11,14,5,11,4, 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,2,3,14,38, 11,9,2,6,4,22, + 11,8,13,5,11,7, 11,8,1,3,15,39, 11,8,1,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,1,4,11,8, 11,7,1,6,4,24, 11,6,12,4,11,9, + 11,6,12,5,11,9, 11,6,3,4,11,9, 11,6,2,4,11,9, 11,6,2,6,4,25, 11,5,11,4,11,10, 11,5,11,5,11,10, 11,5,4,4,11,10, 11,5,4,6,4,26, + 11,4,10,5,11,11, 11,4,5,6,4,27, 11,3,11,3,5,44, 11,3,11,5,11,12, 11,3,4,3,12,44, 11,3,4,6,4,28, 11,2,12,3,4,45, 11,2,12,5,11,13, + 11,2,3,3,13,45, 11,2,3,6,4,29, 11,1,12,4,11,14, 11,1,12,5,11,14, 11,1,11,4,11,14, 11,1,10,4,11,14, 11,1,9,4,11,14, 11,1,8,4,11,14, + 11,1,7,4,11,14, 11,1,6,4,11,14, 11,1,5,4,11,14, 11,1,4,4,11,14, 11,1,3,4,11,14, 11,1,3,6,4,30, 12,13,13,1,3,34, 12,13,13,3,3,34, + 12,13,13,5,12,2, 12,13,12,1,4,34, 12,13,12,3,4,34, 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, + 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, + 12,13,5,3,11,34, 12,13,4,1,12,34, 12,13,4,3,12,34, 12,13,4,6,3,18, 12,12,14,3,2,35, 12,12,14,5,12,3, 12,12,3,3,13,35, 12,12,3,6,3,19, + 12,11,14,4,12,4, 12,11,14,5,12,4, 12,11,3,6,3,20, 12,10,13,5,12,5, 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,2,3,14,38, 12,9,2,6,3,22, + 12,8,13,5,12,7, 12,8,1,3,15,39, 12,8,1,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,1,4,12,8, 12,7,1,6,3,24, 12,6,12,4,12,9, + 12,6,12,5,12,9, 12,6,3,4,12,9, 12,6,2,4,12,9, 12,6,2,6,3,25, 12,5,11,4,12,10, 12,5,11,5,12,10, 12,5,4,4,12,10, 12,5,4,6,3,26, + 12,4,10,5,12,11, 12,4,5,6,3,27, 12,3,11,3,5,44, 12,3,11,5,12,12, 12,3,4,3,12,44, 12,3,4,6,3,28, 12,2,12,3,4,45, 12,2,12,5,12,13, + 12,2,3,3,13,45, 12,2,3,6,3,29, 12,1,12,1,4,46, 12,1,12,4,12,14, 12,1,12,5,12,14, 12,1,11,1,5,46, 12,1,11,4,12,14, 12,1,10,1,6,46, + 12,1,10,4,12,14, 12,1,9,1,7,46, 12,1,9,4,12,14, 12,1,8,1,8,46, 12,1,8,4,12,14, 12,1,7,1,9,46, 12,1,7,4,12,14, 12,1,6,1,10,46, + 12,1,6,4,12,14, 12,1,5,1,11,46, 12,1,5,4,12,14, 12,1,4,1,12,46, 12,1,4,4,12,14, 12,1,3,1,13,46, 12,1,3,4,12,14, 12,1,3,6,3,30, + 13,12,14,1,2,35, 13,12,14,3,2,35, 13,12,14,5,13,3, 13,12,13,1,3,35, 13,12,13,3,3,35, 13,12,12,1,4,35, 13,12,12,3,4,35, 13,12,11,1,5,35, + 13,12,11,3,5,35, 13,12,10,1,6,35, 13,12,10,3,6,35, 13,12,9,1,7,35, 13,12,9,3,7,35, 13,12,8,1,8,35, 13,12,8,3,8,35, 13,12,7,1,9,35, + 13,12,7,3,9,35, 13,12,6,1,10,35, 13,12,6,3,10,35, 13,12,5,1,11,35, 13,12,5,3,11,35, 13,12,4,1,12,35, 13,12,4,3,12,35, 13,12,3,1,13,35, + 13,12,3,3,13,35, 13,12,3,6,2,19, 13,11,14,1,2,36, 13,11,14,4,13,4, 13,11,14,5,13,4, 13,11,13,1,3,36, 13,11,12,1,4,36, 13,11,11,1,5,36, + 13,11,10,1,6,36, 13,11,9,1,7,36, 13,11,8,1,8,36, 13,11,7,1,9,36, 13,11,6,1,10,36, 13,11,5,1,11,36, 13,11,4,1,12,36, 13,11,3,1,13,36, + 13,11,3,6,2,20, 13,10,13,1,3,37, 13,10,13,5,13,5, 13,10,12,1,4,37, 13,10,11,1,5,37, 13,10,10,1,6,37, 13,10,9,1,7,37, 13,10,8,1,8,37, + 13,10,7,1,9,37, 13,10,6,1,10,37, 13,10,5,1,11,37, 13,10,4,1,12,37, 13,10,3,1,13,37, 13,10,3,6,2,21, 13,9,13,1,3,38, 13,9,13,5,13,6, + 13,9,12,1,4,38, 13,9,11,1,5,38, 13,9,10,1,6,38, 13,9,9,1,7,38, 13,9,8,1,8,38, 13,9,7,1,9,38, 13,9,6,1,10,38, 13,9,5,1,11,38, + 13,9,4,1,12,38, 13,9,3,1,13,38, 13,9,2,1,14,38, 13,9,2,3,14,38, 13,9,2,6,2,22, 13,8,13,5,13,7, 13,8,1,3,15,39, 13,8,1,6,2,23, + 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,1,4,13,8, 13,7,1,6,2,24, 13,6,12,4,13,9, 13,6,12,5,13,9, 13,6,3,4,13,9, 13,6,2,4,13,9, + 13,6,2,6,2,25, 13,5,11,4,13,10, 13,5,11,5,13,10, 13,5,4,4,13,10, 13,5,4,6,2,26, 13,4,10,5,13,11, 13,4,5,6,2,27, 13,3,11,1,5,44, + 13,3,11,3,5,44, 13,3,11,5,13,12, 13,3,10,1,6,44, 13,3,9,1,7,44, 13,3,8,1,8,44, 13,3,7,1,9,44, 13,3,6,1,10,44, 13,3,5,1,11,44, + 13,3,4,1,12,44, 13,3,4,3,12,44, 13,3,4,6,2,28, 13,2,12,1,4,45, 13,2,12,3,4,45, 13,2,12,4,13,13, 13,2,12,5,13,13, 13,2,11,1,5,45, + 13,2,11,4,13,13, 13,2,10,1,6,45, 13,2,10,4,13,13, 13,2,9,1,7,45, 13,2,9,4,13,13, 13,2,8,1,8,45, 13,2,8,4,13,13, 13,2,7,1,9,45, + 13,2,7,4,13,13, 13,2,6,1,10,45, 13,2,6,4,13,13, 13,2,5,1,11,45, 13,2,5,4,13,13, 13,2,4,1,12,45, 13,2,4,4,13,13, 13,2,3,1,13,45, + 13,2,3,3,13,45, 13,2,3,4,13,13, 13,2,3,6,2,29, 14,8,13,1,3,39, 14,8,13,3,3,39, 14,8,13,5,14,7, 14,8,12,1,4,39, 14,8,12,3,4,39, + 14,8,11,1,5,39, 14,8,11,3,5,39, 14,8,10,1,6,39, 14,8,10,3,6,39, 14,8,9,1,7,39, 14,8,9,3,7,39, 14,8,8,1,8,39, 14,8,8,3,8,39, + 14,8,7,1,9,39, 14,8,7,3,9,39, 14,8,6,1,10,39, 14,8,6,3,10,39, 14,8,5,1,11,39, 14,8,5,3,11,39, 14,8,4,1,12,39, 14,8,4,3,12,39, + 14,8,3,1,13,39, 14,8,3,3,13,39, 14,8,2,1,14,39, 14,8,2,3,14,39, 14,8,1,1,15,39, 14,8,1,3,15,39, 14,8,1,6,1,23, 14,7,13,4,14,8, + 14,7,13,5,14,8, 14,7,1,4,14,8, 14,7,1,6,1,24, 14,6,12,1,4,41, 14,6,12,4,14,9, 14,6,12,5,14,9, 14,6,11,1,5,41, 14,6,10,1,6,41, + 14,6,9,1,7,41, 14,6,8,1,8,41, 14,6,7,1,9,41, 14,6,6,1,10,41, 14,6,5,1,11,41, 14,6,4,1,12,41, 14,6,3,1,13,41, 14,6,3,4,14,9, + 14,6,2,1,14,41, 14,6,2,4,14,9, 14,6,2,6,1,25, 14,5,11,4,14,10, 14,5,11,5,14,10, 14,5,4,4,14,10, 14,5,4,6,1,26, 14,4,10,1,6,43, + 14,4,10,4,14,11, 14,4,10,5,14,11, 14,4,9,1,7,43, 14,4,9,4,14,11, 14,4,8,1,8,43, 14,4,8,4,14,11, 14,4,7,1,9,43, 14,4,7,4,14,11, + 14,4,6,1,10,43, 14,4,6,4,14,11, 14,4,5,1,11,43, 14,4,5,4,14,11, 14,4,5,6,1,27, 15,7,13,1,3,40, 15,7,13,3,3,40, 15,7,13,4,15,8, + 15,7,13,5,15,8, 15,7,12,1,4,40, 15,7,12,3,4,40, 15,7,12,4,15,8, 15,7,11,1,5,40, 15,7,11,3,5,40, 15,7,11,4,15,8, 15,7,10,1,6,40, + 15,7,10,3,6,40, 15,7,10,4,15,8, 15,7,9,1,7,40, 15,7,9,3,7,40, 15,7,9,4,15,8, 15,7,8,1,8,40, 15,7,8,3,8,40, 15,7,8,4,15,8, + 15,7,7,1,9,40, 15,7,7,3,9,40, 15,7,7,4,15,8, 15,7,6,1,10,40, 15,7,6,3,10,40, 15,7,6,4,15,8, 15,7,5,1,11,40, 15,7,5,3,11,40, + 15,7,5,4,15,8, 15,7,4,1,12,40, 15,7,4,3,12,40, 15,7,4,4,15,8, 15,7,3,1,13,40, 15,7,3,3,13,40, 15,7,3,4,15,8, 15,7,2,1,14,40, + 15,7,2,3,14,40, 15,7,2,4,15,8, 15,7,1,1,15,40, 15,7,1,3,15,40, 15,7,1,4,15,8, 15,7,1,6,0,24, 15,5,11,1,5,42, 15,5,11,3,5,42, + 15,5,11,4,15,10, 15,5,11,5,15,10, 15,5,10,1,6,42, 15,5,10,3,6,42, 15,5,10,4,15,10, 15,5,9,1,7,42, 15,5,9,3,7,42, 15,5,9,4,15,10, + 15,5,8,1,8,42, 15,5,8,3,8,42, 15,5,8,4,15,10, 15,5,7,1,9,42, 15,5,7,3,9,42, 15,5,7,4,15,10, 15,5,6,1,10,42, 15,5,6,3,10,42, + 15,5,6,4,15,10, 15,5,5,1,11,42, 15,5,5,3,11,42, 15,5,5,4,15,10, 15,5,4,1,12,42, 15,5,4,3,12,42, 15,5,4,4,15,10, 15,5,4,6,15,10, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1850, + count = 1120, + faces = { + 0,6,13,2,3,89, 0,6,13,3,3,89, 0,6,13,4,0,57, 0,6,13,5,0,57, 0,6,12,2,4,89, 0,6,12,3,4,89, 0,6,12,4,0,57, 0,6,11,2,5,89, + 0,6,11,3,5,89, 0,6,11,4,0,57, 0,6,10,2,6,89, 0,6,10,3,6,89, 0,6,10,4,0,57, 0,6,9,2,7,89, 0,6,9,3,7,89, 0,6,9,4,0,57, + 0,6,8,2,8,89, 0,6,8,3,8,89, 0,6,8,4,0,57, 0,6,7,2,9,89, 0,6,7,3,9,89, 0,6,7,4,0,57, 0,6,6,2,10,89, 0,6,6,3,10,89, + 0,6,6,4,0,57, 0,6,5,2,11,89, 0,6,5,3,11,89, 0,6,5,4,0,57, 0,6,4,2,12,89, 0,6,4,3,12,89, 0,6,4,4,0,57, 0,6,3,2,13,89, + 0,6,3,3,13,89, 0,6,3,4,0,57, 0,6,2,2,14,89, 0,6,2,3,14,89, 0,6,2,4,0,57, 0,6,1,2,15,89, 0,6,1,3,15,89, 0,6,1,4,0,57, + 0,6,1,6,15,73, 0,4,11,2,5,91, 0,4,11,3,5,91, 0,4,11,4,0,59, 0,4,11,5,0,59, 0,4,10,2,6,91, 0,4,10,3,6,91, 0,4,10,4,0,59, + 0,4,9,2,7,91, 0,4,9,3,7,91, 0,4,9,4,0,59, 0,4,8,2,8,91, 0,4,8,3,8,91, 0,4,8,4,0,59, 0,4,7,2,9,91, 0,4,7,3,9,91, + 0,4,7,4,0,59, 0,4,6,2,10,91, 0,4,6,3,10,91, 0,4,6,4,0,59, 0,4,5,2,11,91, 0,4,5,3,11,91, 0,4,5,4,0,59, 0,4,4,2,12,91, + 0,4,4,3,12,91, 0,4,4,4,0,59, 0,4,4,6,0,59, 1,7,13,2,3,88, 1,7,13,3,3,88, 1,7,13,5,1,56, 1,7,12,2,4,88, 1,7,12,3,4,88, + 1,7,11,2,5,88, 1,7,11,3,5,88, 1,7,10,2,6,88, 1,7,10,3,6,88, 1,7,9,2,7,88, 1,7,9,3,7,88, 1,7,8,2,8,88, 1,7,8,3,8,88, + 1,7,7,2,9,88, 1,7,7,3,9,88, 1,7,6,2,10,88, 1,7,6,3,10,88, 1,7,5,2,11,88, 1,7,5,3,11,88, 1,7,4,2,12,88, 1,7,4,3,12,88, + 1,7,3,2,13,88, 1,7,3,3,13,88, 1,7,2,2,14,88, 1,7,2,3,14,88, 1,7,1,2,15,88, 1,7,1,3,15,88, 1,7,1,6,14,72, 1,6,13,4,1,57, + 1,6,13,5,1,57, 1,6,1,4,1,57, 1,6,1,6,14,73, 1,5,12,2,4,90, 1,5,12,4,1,58, 1,5,12,5,1,58, 1,5,11,2,5,90, 1,5,10,2,6,90, + 1,5,9,2,7,90, 1,5,8,2,8,90, 1,5,7,2,9,90, 1,5,6,2,10,90, 1,5,5,2,11,90, 1,5,4,2,12,90, 1,5,3,2,13,90, 1,5,3,4,1,58, + 1,5,2,2,14,90, 1,5,2,4,1,58, 1,5,2,6,14,74, 1,4,11,4,1,59, 1,4,11,5,1,59, 1,4,4,6,1,59, 1,3,10,2,6,92, 1,3,10,5,1,60, + 1,3,9,2,7,92, 1,3,8,2,8,92, 1,3,7,2,9,92, 1,3,6,2,10,92, 1,3,5,2,11,92, 1,3,4,2,12,92, 1,3,4,6,14,76, 1,2,12,2,4,93, + 1,2,12,3,4,93, 1,2,12,4,14,77, 1,2,12,5,14,77, 1,2,11,2,5,93, 1,2,11,3,5,93, 1,2,11,4,14,77, 1,2,10,2,6,93, 1,2,10,4,14,77, + 1,2,9,2,7,93, 1,2,9,4,14,77, 1,2,8,2,8,93, 1,2,8,4,14,77, 1,2,7,2,9,93, 1,2,7,4,14,77, 1,2,6,2,10,93, 1,2,6,4,14,77, + 1,2,5,2,11,93, 1,2,5,4,14,77, 1,2,4,2,12,93, 1,2,4,4,14,77, 1,2,4,6,14,77, 2,11,14,2,2,84, 2,11,14,3,2,84, 2,11,14,5,2,52, + 2,11,13,2,3,84, 2,11,13,3,3,84, 2,11,12,2,4,84, 2,11,12,3,4,84, 2,11,11,2,5,84, 2,11,11,3,5,84, 2,11,10,2,6,84, 2,11,10,3,6,84, + 2,11,9,2,7,84, 2,11,9,3,7,84, 2,11,8,2,8,84, 2,11,8,3,8,84, 2,11,7,2,9,84, 2,11,7,3,9,84, 2,11,6,2,10,84, 2,11,6,3,10,84, + 2,11,5,2,11,84, 2,11,5,3,11,84, 2,11,4,2,12,84, 2,11,4,3,12,84, 2,11,3,2,13,84, 2,11,3,3,13,84, 2,11,3,6,13,68, 2,10,14,2,2,85, + 2,10,14,4,2,53, 2,10,14,5,2,53, 2,10,13,2,3,85, 2,10,12,2,4,85, 2,10,11,2,5,85, 2,10,10,2,6,85, 2,10,9,2,7,85, 2,10,8,2,8,85, + 2,10,7,2,9,85, 2,10,6,2,10,85, 2,10,5,2,11,85, 2,10,4,2,12,85, 2,10,3,2,13,85, 2,10,3,6,13,69, 2,9,13,2,3,86, 2,9,13,5,2,54, + 2,9,12,2,4,86, 2,9,11,2,5,86, 2,9,10,2,6,86, 2,9,9,2,7,86, 2,9,8,2,8,86, 2,9,7,2,9,86, 2,9,6,2,10,86, 2,9,5,2,11,86, + 2,9,4,2,12,86, 2,9,3,2,13,86, 2,9,3,6,13,70, 2,8,13,2,3,87, 2,8,13,5,2,55, 2,8,12,2,4,87, 2,8,11,2,5,87, 2,8,10,2,6,87, + 2,8,9,2,7,87, 2,8,8,2,8,87, 2,8,7,2,9,87, 2,8,6,2,10,87, 2,8,5,2,11,87, 2,8,4,2,12,87, 2,8,3,2,13,87, 2,8,2,2,14,87, + 2,8,2,3,14,87, 2,8,2,6,13,71, 2,7,13,5,2,56, 2,7,1,3,15,88, 2,7,1,6,13,72, 2,6,13,4,2,57, 2,6,13,5,2,57, 2,6,1,4,2,57, + 2,6,1,6,13,73, 2,5,12,4,2,58, 2,5,12,5,2,58, 2,5,3,4,2,58, 2,5,2,4,2,58, 2,5,2,6,13,74, 2,4,11,4,2,59, 2,4,11,5,2,59, + 2,4,4,6,13,75, 2,3,10,5,2,60, 2,3,4,6,13,76, 2,2,12,3,4,93, 2,2,12,5,2,61, 2,2,11,3,5,93, 2,2,4,6,13,77, 2,1,12,2,4,94, + 2,1,12,4,13,78, 2,1,12,5,13,78, 2,1,11,2,5,94, 2,1,11,4,13,78, 2,1,10,2,6,94, 2,1,10,4,13,78, 2,1,9,2,7,94, 2,1,9,4,13,78, + 2,1,8,2,8,94, 2,1,8,4,13,78, 2,1,7,2,9,94, 2,1,7,4,13,78, 2,1,6,2,10,94, 2,1,6,4,13,78, 2,1,5,2,11,94, 2,1,5,4,13,78, + 2,1,4,2,12,94, 2,1,4,4,13,78, 2,1,3,2,13,94, 2,1,3,3,13,94, 2,1,3,4,13,78, 2,1,3,6,13,78, 3,12,13,2,3,83, 3,12,13,3,3,83, + 3,12,13,5,3,51, 3,12,12,2,4,83, 3,12,12,3,4,83, 3,12,11,2,5,83, 3,12,11,3,5,83, 3,12,10,2,6,83, 3,12,10,3,6,83, 3,12,9,2,7,83, + 3,12,9,3,7,83, 3,12,8,2,8,83, 3,12,8,3,8,83, 3,12,7,2,9,83, 3,12,7,3,9,83, 3,12,6,2,10,83, 3,12,6,3,10,83, 3,12,5,2,11,83, + 3,12,5,3,11,83, 3,12,4,2,12,83, 3,12,4,3,12,83, 3,12,4,6,12,67, 3,11,14,3,2,84, 3,11,14,5,3,52, 3,11,3,3,13,84, 3,11,3,6,12,68, + 3,10,14,4,3,53, 3,10,14,5,3,53, 3,10,3,6,12,69, 3,9,13,5,3,54, 3,9,3,6,12,70, 3,8,13,5,3,55, 3,8,2,3,14,87, 3,8,2,6,12,71, + 3,7,13,5,3,56, 3,7,1,3,15,88, 3,7,1,6,12,72, 3,6,13,4,3,57, 3,6,13,5,3,57, 3,6,1,4,3,57, 3,6,1,6,12,73, 3,5,12,4,3,58, + 3,5,12,5,3,58, 3,5,3,4,3,58, 3,5,2,4,3,58, 3,5,2,6,12,74, 3,4,11,4,3,59, 3,4,11,5,3,59, 3,4,4,6,12,75, 3,3,10,5,3,60, + 3,3,4,6,12,76, 3,2,12,3,4,93, 3,2,12,5,3,61, 3,2,11,3,5,93, 3,2,4,6,12,77, 3,1,12,4,3,62, 3,1,12,5,3,62, 3,1,3,3,13,94, + 3,1,3,6,12,78, 3,0,11,2,5,95, 3,0,11,5,12,79, 3,0,10,2,6,95, 3,0,9,2,7,95, 3,0,8,2,8,95, 3,0,7,2,9,95, 3,0,6,2,10,95, + 3,0,5,2,11,95, 3,0,4,2,12,95, 3,0,3,2,13,95, 3,0,3,6,12,79, 4,13,12,2,4,82, 4,13,12,3,4,82, 4,13,12,5,4,50, 4,13,11,2,5,82, + 4,13,11,3,5,82, 4,13,10,2,6,82, 4,13,10,3,6,82, 4,13,9,2,7,82, 4,13,9,3,7,82, 4,13,8,2,8,82, 4,13,8,3,8,82, 4,13,7,2,9,82, + 4,13,7,3,9,82, 4,13,6,2,10,82, 4,13,6,3,10,82, 4,13,5,2,11,82, 4,13,5,3,11,82, 4,13,5,6,11,66, 4,12,13,3,3,83, 4,12,13,5,4,51, + 4,12,4,3,12,83, 4,12,4,6,11,67, 4,11,14,3,2,84, 4,11,14,5,4,52, 4,11,3,3,13,84, 4,11,3,6,11,68, 4,10,14,4,4,53, 4,10,14,5,4,53, + 4,10,3,6,11,69, 4,9,13,5,4,54, 4,9,3,6,11,70, 4,8,13,5,4,55, 4,8,2,3,14,87, 4,8,2,6,11,71, 4,7,13,5,4,56, 4,7,1,3,15,88, + 4,7,1,6,11,72, 4,6,13,4,4,57, 4,6,13,5,4,57, 4,6,1,4,4,57, 4,6,1,6,11,73, 4,5,12,4,4,58, 4,5,12,5,4,58, 4,5,3,4,4,58, + 4,5,2,4,4,58, 4,5,2,6,11,74, 4,4,11,4,4,59, 4,4,11,5,4,59, 4,4,4,6,11,75, 4,3,10,5,4,60, 4,3,4,6,11,76, 4,2,12,3,4,93, + 4,2,12,5,4,61, 4,2,11,3,5,93, 4,2,4,6,11,77, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,3,3,13,94, 4,1,3,6,11,78, 4,0,11,5,4,63, + 4,0,3,6,11,79, 5,13,12,3,4,82, 5,13,12,5,5,50, 5,13,11,3,5,82, 5,13,10,3,6,82, 5,13,9,3,7,82, 5,13,8,3,8,82, 5,13,7,3,9,82, + 5,13,6,3,10,82, 5,13,5,3,11,82, 5,13,5,6,10,66, 5,12,13,3,3,83, 5,12,13,5,5,51, 5,12,4,3,12,83, 5,12,4,6,10,67, 5,11,14,3,2,84, + 5,11,14,5,5,52, 5,11,3,3,13,84, 5,11,3,6,10,68, 5,10,14,4,5,53, 5,10,14,5,5,53, 5,10,3,6,10,69, 5,9,13,5,5,54, 5,9,3,6,10,70, + 5,8,13,5,5,55, 5,8,2,3,14,87, 5,8,2,6,10,71, 5,7,13,5,5,56, 5,7,1,3,15,88, 5,7,1,6,10,72, 5,6,13,4,5,57, 5,6,13,5,5,57, + 5,6,1,4,5,57, 5,6,1,6,10,73, 5,5,12,4,5,58, 5,5,12,5,5,58, 5,5,3,4,5,58, 5,5,2,4,5,58, 5,5,2,6,10,74, 5,4,11,4,5,59, + 5,4,11,5,5,59, 5,4,4,6,10,75, 5,3,10,5,5,60, 5,3,4,6,10,76, 5,2,12,3,4,93, 5,2,12,5,5,61, 5,2,11,3,5,93, 5,2,4,6,10,77, + 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,3,3,13,94, 5,1,3,6,10,78, 5,0,11,5,5,63, 5,0,3,6,10,79, 6,14,10,2,6,81, 6,14,10,3,6,81, + 6,14,10,5,6,49, 6,14,9,2,7,81, 6,14,9,3,7,81, 6,14,8,2,8,81, 6,14,8,3,8,81, 6,14,7,2,9,81, 6,14,7,3,9,81, 6,14,7,6,9,65, + 6,13,12,3,4,82, 6,13,12,5,6,50, 6,13,11,3,5,82, 6,13,6,3,10,82, 6,13,5,3,11,82, 6,13,5,6,9,66, 6,12,13,3,3,83, 6,12,13,5,6,51, + 6,12,4,3,12,83, 6,12,4,6,9,67, 6,11,14,3,2,84, 6,11,14,5,6,52, 6,11,3,3,13,84, 6,11,3,6,9,68, 6,10,14,4,6,53, 6,10,14,5,6,53, + 6,10,3,6,9,69, 6,9,13,5,6,54, 6,9,3,6,9,70, 6,8,13,5,6,55, 6,8,2,3,14,87, 6,8,2,6,9,71, 6,7,13,5,6,56, 6,7,1,3,15,88, + 6,7,1,6,9,72, 6,6,13,4,6,57, 6,6,13,5,6,57, 6,6,1,4,6,57, 6,6,1,6,9,73, 6,5,12,4,6,58, 6,5,12,5,6,58, 6,5,3,4,6,58, + 6,5,2,4,6,58, 6,5,2,6,9,74, 6,4,11,4,6,59, 6,4,11,5,6,59, 6,4,4,6,9,75, 6,3,10,5,6,60, 6,3,4,6,9,76, 6,2,12,3,4,93, + 6,2,12,5,6,61, 6,2,11,3,5,93, 6,2,4,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,3,3,13,94, 6,1,3,6,9,78, 6,0,11,5,6,63, + 6,0,3,6,9,79, 7,14,10,3,6,81, 7,14,10,5,7,49, 7,14,9,3,7,81, 7,14,8,3,8,81, 7,14,7,3,9,81, 7,14,7,6,8,65, 7,13,12,3,4,82, + 7,13,12,5,7,50, 7,13,11,3,5,82, 7,13,6,3,10,82, 7,13,5,3,11,82, 7,13,5,6,8,66, 7,12,13,3,3,83, 7,12,13,5,7,51, 7,12,4,3,12,83, + 7,12,4,6,8,67, 7,11,14,3,2,84, 7,11,14,5,7,52, 7,11,3,3,13,84, 7,11,3,6,8,68, 7,10,14,4,7,53, 7,10,14,5,7,53, 7,10,3,6,8,69, + 7,9,13,5,7,54, 7,9,3,6,8,70, 7,8,13,5,7,55, 7,8,2,3,14,87, 7,8,2,6,8,71, 7,7,13,5,7,56, 7,7,1,3,15,88, 7,7,1,6,8,72, + 7,6,13,4,7,57, 7,6,13,5,7,57, 7,6,1,4,7,57, 7,6,1,6,8,73, 7,5,12,4,7,58, 7,5,12,5,7,58, 7,5,3,4,7,58, 7,5,2,4,7,58, + 7,5,2,6,8,74, 7,4,11,4,7,59, 7,4,11,5,7,59, 7,4,4,6,8,75, 7,3,10,5,7,60, 7,3,4,6,8,76, 7,2,12,3,4,93, 7,2,12,5,7,61, + 7,2,11,3,5,93, 7,2,4,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,3,3,13,94, 7,1,3,6,8,78, 7,0,11,5,7,63, 7,0,3,6,8,79, + 8,14,10,3,6,81, 8,14,10,5,8,49, 8,14,9,3,7,81, 8,14,8,3,8,81, 8,14,7,3,9,81, 8,14,7,6,7,65, 8,13,12,3,4,82, 8,13,12,5,8,50, + 8,13,11,3,5,82, 8,13,6,3,10,82, 8,13,5,3,11,82, 8,13,5,6,7,66, 8,12,13,3,3,83, 8,12,13,5,8,51, 8,12,4,3,12,83, 8,12,4,6,7,67, + 8,11,14,3,2,84, 8,11,14,5,8,52, 8,11,3,3,13,84, 8,11,3,6,7,68, 8,10,14,4,8,53, 8,10,14,5,8,53, 8,10,3,6,7,69, 8,9,13,5,8,54, + 8,9,3,6,7,70, 8,8,13,5,8,55, 8,8,2,3,14,87, 8,8,2,6,7,71, 8,7,13,5,8,56, 8,7,1,3,15,88, 8,7,1,6,7,72, 8,6,13,4,8,57, + 8,6,13,5,8,57, 8,6,1,4,8,57, 8,6,1,6,7,73, 8,5,12,4,8,58, 8,5,12,5,8,58, 8,5,3,4,8,58, 8,5,2,4,8,58, 8,5,2,6,7,74, + 8,4,11,4,8,59, 8,4,11,5,8,59, 8,4,4,6,7,75, 8,3,10,5,8,60, 8,3,4,6,7,76, 8,2,12,3,4,93, 8,2,12,5,8,61, 8,2,11,3,5,93, + 8,2,4,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,3,3,13,94, 8,1,3,6,7,78, 8,0,11,5,8,63, 8,0,3,6,7,79, 9,14,10,1,6,81, + 9,14,10,3,6,81, 9,14,10,5,9,49, 9,14,9,1,7,81, 9,14,9,3,7,81, 9,14,8,1,8,81, 9,14,8,3,8,81, 9,14,7,1,9,81, 9,14,7,3,9,81, + 9,14,7,6,6,65, 9,13,12,3,4,82, 9,13,12,5,9,50, 9,13,11,3,5,82, 9,13,6,3,10,82, 9,13,5,3,11,82, 9,13,5,6,6,66, 9,12,13,3,3,83, + 9,12,13,5,9,51, 9,12,4,3,12,83, 9,12,4,6,6,67, 9,11,14,3,2,84, 9,11,14,5,9,52, 9,11,3,3,13,84, 9,11,3,6,6,68, 9,10,14,4,9,53, + 9,10,14,5,9,53, 9,10,3,6,6,69, 9,9,13,5,9,54, 9,9,3,6,6,70, 9,8,13,5,9,55, 9,8,2,3,14,87, 9,8,2,6,6,71, 9,7,13,5,9,56, + 9,7,1,3,15,88, 9,7,1,6,6,72, 9,6,13,4,9,57, 9,6,13,5,9,57, 9,6,1,4,9,57, 9,6,1,6,6,73, 9,5,12,4,9,58, 9,5,12,5,9,58, + 9,5,3,4,9,58, 9,5,2,4,9,58, 9,5,2,6,6,74, 9,4,11,4,9,59, 9,4,11,5,9,59, 9,4,4,6,6,75, 9,3,10,5,9,60, 9,3,4,6,6,76, + 9,2,12,3,4,93, 9,2,12,5,9,61, 9,2,11,3,5,93, 9,2,4,6,6,77, 9,1,12,4,9,62, 9,1,12,5,9,62, 9,1,3,3,13,94, 9,1,3,6,6,78, + 9,0,11,5,9,63, 9,0,3,6,6,79, 10,13,12,3,4,82, 10,13,12,5,10,50, 10,13,11,3,5,82, 10,13,10,3,6,82, 10,13,9,3,7,82, 10,13,8,3,8,82, + 10,13,7,3,9,82, 10,13,6,3,10,82, 10,13,5,3,11,82, 10,13,5,6,5,66, 10,12,13,3,3,83, 10,12,13,5,10,51, 10,12,4,3,12,83, 10,12,4,6,5,67, + 10,11,14,3,2,84, 10,11,14,5,10,52, 10,11,3,3,13,84, 10,11,3,6,5,68, 10,10,14,4,10,53, 10,10,14,5,10,53, 10,10,3,6,5,69, 10,9,13,5,10,54, + 10,9,3,6,5,70, 10,8,13,5,10,55, 10,8,2,3,14,87, 10,8,2,6,5,71, 10,7,13,5,10,56, 10,7,1,3,15,88, 10,7,1,6,5,72, 10,6,13,4,10,57, + 10,6,13,5,10,57, 10,6,1,4,10,57, 10,6,1,6,5,73, 10,5,12,4,10,58, 10,5,12,5,10,58, 10,5,3,4,10,58, 10,5,2,4,10,58, 10,5,2,6,5,74, + 10,4,11,4,10,59, 10,4,11,5,10,59, 10,4,4,6,5,75, 10,3,10,5,10,60, 10,3,4,6,5,76, 10,2,12,3,4,93, 10,2,12,5,10,61, 10,2,11,3,5,93, + 10,2,4,6,5,77, 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,3,3,13,94, 10,1,3,6,5,78, 10,0,11,5,10,63, 10,0,3,6,5,79, 11,13,12,1,4,82, + 11,13,12,3,4,82, 11,13,12,5,11,50, 11,13,11,1,5,82, 11,13,11,3,5,82, 11,13,10,1,6,82, 11,13,10,3,6,82, 11,13,9,1,7,82, 11,13,9,3,7,82, + 11,13,8,1,8,82, 11,13,8,3,8,82, 11,13,7,1,9,82, 11,13,7,3,9,82, 11,13,6,1,10,82, 11,13,6,3,10,82, 11,13,5,1,11,82, 11,13,5,3,11,82, + 11,13,5,6,4,66, 11,12,13,3,3,83, 11,12,13,5,11,51, 11,12,4,3,12,83, 11,12,4,6,4,67, 11,11,14,3,2,84, 11,11,14,5,11,52, 11,11,3,3,13,84, + 11,11,3,6,4,68, 11,10,14,4,11,53, 11,10,14,5,11,53, 11,10,3,6,4,69, 11,9,13,5,11,54, 11,9,3,6,4,70, 11,8,13,5,11,55, 11,8,2,3,14,87, + 11,8,2,6,4,71, 11,7,13,5,11,56, 11,7,1,3,15,88, 11,7,1,6,4,72, 11,6,13,4,11,57, 11,6,13,5,11,57, 11,6,1,4,11,57, 11,6,1,6,4,73, + 11,5,12,4,11,58, 11,5,12,5,11,58, 11,5,3,4,11,58, 11,5,2,4,11,58, 11,5,2,6,4,74, 11,4,11,4,11,59, 11,4,11,5,11,59, 11,4,4,6,4,75, + 11,3,10,5,11,60, 11,3,4,6,4,76, 11,2,12,3,4,93, 11,2,12,5,11,61, 11,2,11,3,5,93, 11,2,4,6,4,77, 11,1,12,4,11,62, 11,1,12,5,11,62, + 11,1,3,3,13,94, 11,1,3,6,4,78, 11,0,11,5,11,63, 11,0,3,6,4,79, 12,12,13,1,3,83, 12,12,13,3,3,83, 12,12,13,5,12,51, 12,12,12,1,4,83, + 12,12,12,3,4,83, 12,12,11,1,5,83, 12,12,11,3,5,83, 12,12,10,1,6,83, 12,12,10,3,6,83, 12,12,9,1,7,83, 12,12,9,3,7,83, 12,12,8,1,8,83, + 12,12,8,3,8,83, 12,12,7,1,9,83, 12,12,7,3,9,83, 12,12,6,1,10,83, 12,12,6,3,10,83, 12,12,5,1,11,83, 12,12,5,3,11,83, 12,12,4,1,12,83, + 12,12,4,3,12,83, 12,12,4,6,3,67, 12,11,14,3,2,84, 12,11,14,5,12,52, 12,11,3,3,13,84, 12,11,3,6,3,68, 12,10,14,4,12,53, 12,10,14,5,12,53, + 12,10,3,6,3,69, 12,9,13,5,12,54, 12,9,3,6,3,70, 12,8,13,5,12,55, 12,8,2,3,14,87, 12,8,2,6,3,71, 12,7,13,5,12,56, 12,7,1,3,15,88, + 12,7,1,6,3,72, 12,6,13,4,12,57, 12,6,13,5,12,57, 12,6,1,4,12,57, 12,6,1,6,3,73, 12,5,12,4,12,58, 12,5,12,5,12,58, 12,5,3,4,12,58, + 12,5,2,4,12,58, 12,5,2,6,3,74, 12,4,11,4,12,59, 12,4,11,5,12,59, 12,4,4,6,3,75, 12,3,10,5,12,60, 12,3,4,6,3,76, 12,2,12,3,4,93, + 12,2,12,5,12,61, 12,2,11,3,5,93, 12,2,4,6,3,77, 12,1,12,4,12,62, 12,1,12,5,12,62, 12,1,3,3,13,94, 12,1,3,6,3,78, 12,0,11,1,5,95, + 12,0,11,5,12,63, 12,0,10,1,6,95, 12,0,9,1,7,95, 12,0,8,1,8,95, 12,0,7,1,9,95, 12,0,6,1,10,95, 12,0,5,1,11,95, 12,0,4,1,12,95, + 12,0,3,1,13,95, 12,0,3,6,3,79, 13,11,14,1,2,84, 13,11,14,3,2,84, 13,11,14,5,13,52, 13,11,13,1,3,84, 13,11,13,3,3,84, 13,11,12,1,4,84, + 13,11,12,3,4,84, 13,11,11,1,5,84, 13,11,11,3,5,84, 13,11,10,1,6,84, 13,11,10,3,6,84, 13,11,9,1,7,84, 13,11,9,3,7,84, 13,11,8,1,8,84, + 13,11,8,3,8,84, 13,11,7,1,9,84, 13,11,7,3,9,84, 13,11,6,1,10,84, 13,11,6,3,10,84, 13,11,5,1,11,84, 13,11,5,3,11,84, 13,11,4,1,12,84, + 13,11,4,3,12,84, 13,11,3,1,13,84, 13,11,3,3,13,84, 13,11,3,6,2,68, 13,10,14,1,2,85, 13,10,14,4,13,53, 13,10,14,5,13,53, 13,10,13,1,3,85, + 13,10,12,1,4,85, 13,10,11,1,5,85, 13,10,10,1,6,85, 13,10,9,1,7,85, 13,10,8,1,8,85, 13,10,7,1,9,85, 13,10,6,1,10,85, 13,10,5,1,11,85, + 13,10,4,1,12,85, 13,10,3,1,13,85, 13,10,3,6,2,69, 13,9,13,1,3,86, 13,9,13,5,13,54, 13,9,12,1,4,86, 13,9,11,1,5,86, 13,9,10,1,6,86, + 13,9,9,1,7,86, 13,9,8,1,8,86, 13,9,7,1,9,86, 13,9,6,1,10,86, 13,9,5,1,11,86, 13,9,4,1,12,86, 13,9,3,1,13,86, 13,9,3,6,2,70, + 13,8,13,1,3,87, 13,8,13,5,13,55, 13,8,12,1,4,87, 13,8,11,1,5,87, 13,8,10,1,6,87, 13,8,9,1,7,87, 13,8,8,1,8,87, 13,8,7,1,9,87, + 13,8,6,1,10,87, 13,8,5,1,11,87, 13,8,4,1,12,87, 13,8,3,1,13,87, 13,8,2,1,14,87, 13,8,2,3,14,87, 13,8,2,6,2,71, 13,7,13,5,13,56, + 13,7,1,3,15,88, 13,7,1,6,2,72, 13,6,13,4,13,57, 13,6,13,5,13,57, 13,6,1,4,13,57, 13,6,1,6,2,73, 13,5,12,4,13,58, 13,5,12,5,13,58, + 13,5,3,4,13,58, 13,5,2,4,13,58, 13,5,2,6,2,74, 13,4,11,4,13,59, 13,4,11,5,13,59, 13,4,4,6,2,75, 13,3,10,5,13,60, 13,3,4,6,2,76, + 13,2,12,3,4,93, 13,2,12,5,13,61, 13,2,11,3,5,93, 13,2,4,6,2,77, 13,1,12,1,4,94, 13,1,12,4,13,62, 13,1,12,5,13,62, 13,1,11,1,5,94, + 13,1,11,4,13,62, 13,1,10,1,6,94, 13,1,10,4,13,62, 13,1,9,1,7,94, 13,1,9,4,13,62, 13,1,8,1,8,94, 13,1,8,4,13,62, 13,1,7,1,9,94, + 13,1,7,4,13,62, 13,1,6,1,10,94, 13,1,6,4,13,62, 13,1,5,1,11,94, 13,1,5,4,13,62, 13,1,4,1,12,94, 13,1,4,4,13,62, 13,1,3,1,13,94, + 13,1,3,3,13,94, 13,1,3,4,13,62, 13,1,3,6,2,78, 14,7,13,1,3,88, 14,7,13,3,3,88, 14,7,13,5,14,56, 14,7,12,1,4,88, 14,7,12,3,4,88, + 14,7,11,1,5,88, 14,7,11,3,5,88, 14,7,10,1,6,88, 14,7,10,3,6,88, 14,7,9,1,7,88, 14,7,9,3,7,88, 14,7,8,1,8,88, 14,7,8,3,8,88, + 14,7,7,1,9,88, 14,7,7,3,9,88, 14,7,6,1,10,88, 14,7,6,3,10,88, 14,7,5,1,11,88, 14,7,5,3,11,88, 14,7,4,1,12,88, 14,7,4,3,12,88, + 14,7,3,1,13,88, 14,7,3,3,13,88, 14,7,2,1,14,88, 14,7,2,3,14,88, 14,7,1,1,15,88, 14,7,1,3,15,88, 14,7,1,6,1,72, 14,6,13,4,14,57, + 14,6,13,5,14,57, 14,6,1,4,14,57, 14,6,1,6,1,73, 14,5,12,1,4,90, 14,5,12,4,14,58, 14,5,12,5,14,58, 14,5,11,1,5,90, 14,5,10,1,6,90, + 14,5,9,1,7,90, 14,5,8,1,8,90, 14,5,7,1,9,90, 14,5,6,1,10,90, 14,5,5,1,11,90, 14,5,4,1,12,90, 14,5,3,1,13,90, 14,5,3,4,14,58, + 14,5,2,1,14,90, 14,5,2,4,14,58, 14,5,2,6,1,74, 14,4,11,4,14,59, 14,4,11,5,14,59, 14,4,4,6,14,59, 14,3,10,1,6,92, 14,3,10,5,14,60, + 14,3,9,1,7,92, 14,3,8,1,8,92, 14,3,7,1,9,92, 14,3,6,1,10,92, 14,3,5,1,11,92, 14,3,4,1,12,92, 14,3,4,6,1,76, 14,2,12,1,4,93, + 14,2,12,3,4,93, 14,2,12,4,1,77, 14,2,12,5,1,77, 14,2,11,1,5,93, 14,2,11,3,5,93, 14,2,11,4,1,77, 14,2,10,1,6,93, 14,2,10,4,1,77, + 14,2,9,1,7,93, 14,2,9,4,1,77, 14,2,8,1,8,93, 14,2,8,4,1,77, 14,2,7,1,9,93, 14,2,7,4,1,77, 14,2,6,1,10,93, 14,2,6,4,1,77, + 14,2,5,1,11,93, 14,2,5,4,1,77, 14,2,4,1,12,93, 14,2,4,4,1,77, 14,2,4,6,1,77, 15,6,13,1,3,89, 15,6,13,3,3,89, 15,6,13,4,15,57, + 15,6,13,5,15,57, 15,6,12,1,4,89, 15,6,12,3,4,89, 15,6,12,4,15,57, 15,6,11,1,5,89, 15,6,11,3,5,89, 15,6,11,4,15,57, 15,6,10,1,6,89, + 15,6,10,3,6,89, 15,6,10,4,15,57, 15,6,9,1,7,89, 15,6,9,3,7,89, 15,6,9,4,15,57, 15,6,8,1,8,89, 15,6,8,3,8,89, 15,6,8,4,15,57, + 15,6,7,1,9,89, 15,6,7,3,9,89, 15,6,7,4,15,57, 15,6,6,1,10,89, 15,6,6,3,10,89, 15,6,6,4,15,57, 15,6,5,1,11,89, 15,6,5,3,11,89, + 15,6,5,4,15,57, 15,6,4,1,12,89, 15,6,4,3,12,89, 15,6,4,4,15,57, 15,6,3,1,13,89, 15,6,3,3,13,89, 15,6,3,4,15,57, 15,6,2,1,14,89, + 15,6,2,3,14,89, 15,6,2,4,15,57, 15,6,1,1,15,89, 15,6,1,3,15,89, 15,6,1,4,15,57, 15,6,1,6,0,73, 15,4,11,1,5,91, 15,4,11,3,5,91, + 15,4,11,4,15,59, 15,4,11,5,15,59, 15,4,10,1,6,91, 15,4,10,3,6,91, 15,4,10,4,15,59, 15,4,9,1,7,91, 15,4,9,3,7,91, 15,4,9,4,15,59, + 15,4,8,1,8,91, 15,4,8,3,8,91, 15,4,8,4,15,59, 15,4,7,1,9,91, 15,4,7,3,9,91, 15,4,7,4,15,59, 15,4,6,1,10,91, 15,4,6,3,10,91, + 15,4,6,4,15,59, 15,4,5,1,11,91, 15,4,5,3,11,91, 15,4,5,4,15,59, 15,4,4,1,12,91, 15,4,4,3,12,91, 15,4,4,4,15,59, 15,4,4,6,15,59, + }, + }, + }, +} diff --git a/assets/voxels/balding_guy.lua b/assets/voxels/balding_guy.lua new file mode 100644 index 0000000..3321cea --- /dev/null +++ b/assets/voxels/balding_guy.lua @@ -0,0 +1,148 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "balding_guy" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "balding_guy", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1491, + count = 978, + faces = { + 1,10,13,2,3,37, 1,10,13,3,3,37, 1,10,13,5,1,5, 1,10,12,2,4,37, 1,10,12,3,4,37, 1,10,11,2,5,37, 1,10,11,3,5,37, 1,10,10,2,6,37, + 1,10,10,3,6,37, 1,10,9,2,7,37, 1,10,9,3,7,37, 1,10,8,2,8,37, 1,10,8,3,8,37, 1,10,7,2,9,37, 1,10,7,3,9,37, 1,10,6,2,10,37, + 1,10,6,3,10,37, 1,10,5,2,11,37, 1,10,5,3,11,37, 1,10,4,2,12,37, 1,10,4,3,12,37, 1,10,3,2,13,37, 1,10,3,3,13,37, 1,10,3,6,14,21, + 1,9,13,2,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,11,2,5,38, 1,9,10,2,6,38, 1,9,9,2,7,38, 1,9,8,2,8,38, 1,9,7,2,9,38, + 1,9,6,2,10,38, 1,9,5,2,11,38, 1,9,4,2,12,38, 1,9,3,2,13,38, 1,9,3,4,1,6, 1,9,3,6,14,22, 1,8,13,2,3,39, 1,8,13,4,1,7, + 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,12,4,1,7, 1,8,11,2,5,39, 1,8,11,4,1,7, 1,8,10,2,6,39, 1,8,10,4,1,7, 1,8,9,2,7,39, + 1,8,9,4,1,7, 1,8,8,2,8,39, 1,8,8,4,1,7, 1,8,7,2,9,39, 1,8,7,4,1,7, 1,8,6,2,10,39, 1,8,6,4,1,7, 1,8,5,2,11,39, + 1,8,5,4,1,7, 1,8,4,2,12,39, 1,8,4,4,1,7, 1,8,4,6,14,23, 1,5,11,2,5,42, 1,5,11,3,5,42, 1,5,11,4,1,10, 1,5,11,5,1,10, + 1,5,10,2,6,42, 1,5,10,3,6,42, 1,5,9,2,7,42, 1,5,9,3,7,42, 1,5,8,2,8,42, 1,5,8,3,8,42, 1,5,7,2,9,42, 1,5,7,3,9,42, + 1,5,6,2,10,42, 1,5,6,3,10,42, 1,5,5,2,11,42, 1,5,5,3,11,42, 1,5,5,6,14,26, 1,4,10,2,6,43, 1,4,10,4,1,11, 1,4,10,5,1,11, + 1,4,9,2,7,43, 1,4,9,4,1,11, 1,4,8,2,8,43, 1,4,8,4,1,11, 1,4,7,2,9,43, 1,4,7,4,1,11, 1,4,6,2,10,43, 1,4,6,4,1,11, + 1,4,5,2,11,43, 1,4,5,4,1,11, 1,4,5,6,14,27, 2,12,13,2,3,35, 2,12,13,3,3,35, 2,12,13,5,13,19, 2,12,12,2,4,35, 2,12,12,3,4,35, + 2,12,11,2,5,35, 2,12,11,3,5,35, 2,12,10,2,6,35, 2,12,10,3,6,35, 2,12,9,2,7,35, 2,12,9,3,7,35, 2,12,8,2,8,35, 2,12,8,3,8,35, + 2,12,7,2,9,35, 2,12,7,3,9,35, 2,12,6,2,10,35, 2,12,6,3,10,35, 2,12,5,2,11,35, 2,12,5,3,11,35, 2,12,4,2,12,35, 2,12,4,3,12,35, + 2,12,3,2,13,35, 2,12,3,3,13,35, 2,12,3,6,13,19, 2,11,13,2,3,36, 2,11,13,5,2,4, 2,11,12,2,4,36, 2,11,11,2,5,36, 2,11,10,2,6,36, + 2,11,9,2,7,36, 2,11,8,2,8,36, 2,11,7,2,9,36, 2,11,6,2,10,36, 2,11,5,2,11,36, 2,11,4,2,12,36, 2,11,3,2,13,36, 2,11,3,6,13,20, + 2,10,13,5,2,5, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,3,4,2,6, 2,9,3,6,13,22, 2,8,13,5,2,7, 2,8,4,4,2,7, 2,8,4,6,13,23, + 2,7,13,2,3,40, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,12,2,4,40, 2,7,11,2,5,40, 2,7,10,2,6,40, 2,7,9,2,7,40, 2,7,8,2,8,40, + 2,7,7,2,9,40, 2,7,6,2,10,40, 2,7,5,2,11,40, 2,7,5,4,2,8, 2,7,5,6,13,24, 2,6,12,2,4,41, 2,6,12,4,2,9, 2,6,12,5,2,9, + 2,6,11,2,5,41, 2,6,10,2,6,41, 2,6,9,2,7,41, 2,6,8,2,8,41, 2,6,7,2,9,41, 2,6,6,2,10,41, 2,6,6,6,13,25, 2,5,11,4,2,10, + 2,5,11,5,2,10, 2,5,5,3,11,42, 2,5,5,6,13,26, 2,4,10,5,2,11, 2,4,5,6,13,27, 2,3,10,2,6,44, 2,3,10,4,2,12, 2,3,10,5,2,12, + 2,3,9,2,7,44, 2,3,9,4,2,12, 2,3,8,2,8,44, 2,3,8,4,2,12, 2,3,7,2,9,44, 2,3,7,4,2,12, 2,3,6,2,10,44, 2,3,6,4,2,12, + 2,3,5,2,11,44, 2,3,5,4,2,12, 2,3,5,6,13,28, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,12,5,3,2, 3,13,11,2,5,34, 3,13,11,3,5,34, + 3,13,10,2,6,34, 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, + 3,13,6,2,10,34, 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,4,6,12,18, 3,12,13,3,3,35, + 3,12,13,5,3,3, 3,12,3,3,13,35, 3,12,3,6,12,19, 3,11,13,5,3,4, 3,11,3,6,12,20, 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, + 3,9,3,4,3,6, 3,9,3,6,12,22, 3,8,13,5,3,7, 3,8,4,4,3,7, 3,8,4,6,12,23, 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,5,4,3,8, + 3,7,5,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,6,6,12,25, 3,5,11,4,3,10, 3,5,11,5,3,10, 3,5,5,3,11,42, 3,5,5,6,12,26, + 3,4,10,5,3,11, 3,4,5,6,12,27, 3,3,10,5,3,12, 3,3,5,6,12,28, 3,2,11,2,5,45, 3,2,11,3,5,45, 3,2,11,5,3,13, 3,2,10,2,6,45, + 3,2,9,2,7,45, 3,2,8,2,8,45, 3,2,7,2,9,45, 3,2,6,2,10,45, 3,2,5,2,11,45, 3,2,5,4,3,13, 3,2,5,6,12,29, 3,1,11,2,5,46, + 3,1,11,4,3,14, 3,1,11,5,3,14, 3,1,10,2,6,46, 3,1,10,4,3,14, 3,1,9,2,7,46, 3,1,9,4,3,14, 3,1,8,2,8,46, 3,1,8,4,3,14, + 3,1,7,2,9,46, 3,1,7,4,3,14, 3,1,6,2,10,46, 3,1,6,4,3,14, 3,1,6,6,12,30, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,11,5,4,1, + 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, + 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,5,2,11,33, 4,14,5,3,11,33, 4,14,5,6,11,17, 4,13,12,3,4,34, 4,13,12,5,4,2, 4,13,4,3,12,34, + 4,13,4,6,11,18, 4,12,13,3,3,35, 4,12,13,5,4,3, 4,12,3,3,13,35, 4,12,3,6,11,19, 4,11,13,5,4,4, 4,11,3,6,11,20, 4,10,13,5,4,5, + 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,4,4,6, 4,9,3,6,11,22, 4,8,13,5,4,7, 4,8,4,4,4,7, 4,8,4,6,11,23, 4,7,13,4,4,8, + 4,7,13,5,4,8, 4,7,5,4,4,8, 4,7,5,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,6,6,11,25, 4,5,11,4,4,10, 4,5,11,5,4,10, + 4,5,5,3,11,42, 4,5,5,6,11,26, 4,4,10,5,4,11, 4,4,5,6,11,27, 4,3,10,5,4,12, 4,3,5,6,11,28, 4,2,11,3,5,45, 4,2,11,5,4,13, + 4,2,5,4,4,13, 4,2,5,6,11,29, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,6,4,4,14, 4,1,6,6,11,30, 4,0,10,2,6,47, 4,0,10,5,4,15, + 4,0,9,2,7,47, 4,0,8,2,8,47, 4,0,7,2,9,47, 4,0,7,6,11,31, 5,15,10,2,6,32, 5,15,10,3,6,32, 5,15,10,5,5,0, 5,15,9,2,7,32, + 5,15,9,3,7,32, 5,15,8,2,8,32, 5,15,8,3,8,32, 5,15,7,2,9,32, 5,15,7,3,9,32, 5,15,7,6,5,0, 5,14,11,3,5,33, 5,14,11,5,5,1, + 5,14,6,3,10,33, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,12,3,4,34, 5,13,12,5,5,2, 5,13,4,3,12,34, 5,13,4,6,10,18, 5,12,13,3,3,35, + 5,12,13,5,5,3, 5,12,3,3,13,35, 5,12,3,6,10,19, 5,11,13,5,5,4, 5,11,3,6,10,20, 5,10,13,5,5,5, 5,10,3,6,10,21, 5,9,13,5,5,6, + 5,9,3,4,5,6, 5,9,3,6,10,22, 5,8,13,5,5,7, 5,8,4,4,5,7, 5,8,4,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,5,4,5,8, + 5,7,5,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,6,6,10,25, 5,5,11,4,5,10, 5,5,11,5,5,10, 5,5,5,3,11,42, 5,5,5,6,10,26, + 5,4,10,5,5,11, 5,4,5,6,10,27, 5,3,10,5,5,12, 5,3,5,6,10,28, 5,2,11,3,5,45, 5,2,11,5,5,13, 5,2,5,4,5,13, 5,2,5,6,10,29, + 5,1,11,4,5,14, 5,1,11,5,5,14, 5,1,6,4,5,14, 5,1,6,6,10,30, 5,0,10,5,5,15, 5,0,7,6,10,31, 6,15,10,3,6,32, 6,15,10,5,6,0, + 6,15,9,3,7,32, 6,15,8,3,8,32, 6,15,7,3,9,32, 6,15,7,6,9,16, 6,14,11,3,5,33, 6,14,11,5,6,1, 6,14,6,3,10,33, 6,14,5,3,11,33, + 6,14,5,6,9,17, 6,13,12,3,4,34, 6,13,12,5,6,2, 6,13,4,3,12,34, 6,13,4,6,9,18, 6,12,13,3,3,35, 6,12,13,5,6,3, 6,12,3,3,13,35, + 6,12,3,6,9,19, 6,11,13,5,6,4, 6,11,3,6,9,20, 6,10,13,5,6,5, 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,3,4,6,6, 6,9,3,6,9,22, + 6,8,13,5,6,7, 6,8,4,4,6,7, 6,8,4,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,5,4,6,8, 6,7,5,6,9,24, 6,6,12,4,6,9, + 6,6,12,5,6,9, 6,6,6,6,9,25, 6,5,11,4,6,10, 6,5,11,5,6,10, 6,5,5,3,11,42, 6,5,5,6,9,26, 6,4,10,5,6,11, 6,4,5,6,9,27, + 6,3,10,5,6,12, 6,3,5,6,9,28, 6,2,11,3,5,45, 6,2,11,5,6,13, 6,2,5,4,6,13, 6,2,5,6,9,29, 6,1,11,4,6,14, 6,1,11,5,6,14, + 6,1,6,4,6,14, 6,1,6,6,9,30, 6,0,10,1,6,47, 6,0,10,5,6,15, 6,0,9,1,7,47, 6,0,8,1,8,47, 6,0,7,1,9,47, 6,0,7,6,9,31, + 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, 7,15,7,6,8,16, 7,14,11,3,5,33, 7,14,11,5,7,1, + 7,14,6,3,10,33, 7,14,5,3,11,33, 7,14,5,6,8,17, 7,13,12,3,4,34, 7,13,12,5,7,2, 7,13,4,3,12,34, 7,13,4,6,8,18, 7,12,13,3,3,35, + 7,12,13,5,7,3, 7,12,3,3,13,35, 7,12,3,6,8,19, 7,11,13,5,7,4, 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, + 7,9,3,4,7,6, 7,9,3,6,8,22, 7,8,13,5,7,7, 7,8,4,4,7,7, 7,8,4,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,5,4,7,8, + 7,7,5,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,6,6,8,25, 7,5,11,4,7,10, 7,5,11,5,7,10, 7,5,5,3,11,42, 7,5,5,6,8,26, + 7,4,10,5,7,11, 7,4,5,6,8,27, 7,3,10,5,7,12, 7,3,5,6,8,28, 7,2,11,3,5,45, 7,2,11,5,7,13, 7,2,5,4,7,13, 7,2,5,6,8,29, + 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,6,6,8,30, + 8,15,10,3,6,32, 8,15,10,5,8,0, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,7,6,7,16, 8,14,11,3,5,33, 8,14,11,5,8,1, + 8,14,6,3,10,33, 8,14,5,3,11,33, 8,14,5,6,7,17, 8,13,12,3,4,34, 8,13,12,5,8,2, 8,13,4,3,12,34, 8,13,4,6,7,18, 8,12,13,3,3,35, + 8,12,13,5,8,3, 8,12,3,3,13,35, 8,12,3,6,7,19, 8,11,13,5,8,4, 8,11,3,6,7,20, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, + 8,9,3,4,8,6, 8,9,3,6,7,22, 8,8,13,5,8,7, 8,8,4,4,8,7, 8,8,4,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,5,4,8,8, + 8,7,5,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,6,6,7,25, 8,5,11,4,8,10, 8,5,11,5,8,10, 8,5,5,3,11,42, 8,5,5,6,7,26, + 8,4,10,5,8,11, 8,4,5,6,7,27, 8,3,10,5,8,12, 8,3,5,6,7,28, 8,2,11,3,5,45, 8,2,11,5,8,13, 8,2,5,4,8,13, 8,2,5,6,7,29, + 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,6,6,7,30, + 9,15,10,3,6,32, 9,15,10,5,9,0, 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, 9,15,7,6,6,16, 9,14,11,3,5,33, 9,14,11,5,9,1, + 9,14,6,3,10,33, 9,14,5,3,11,33, 9,14,5,6,6,17, 9,13,12,3,4,34, 9,13,12,5,9,2, 9,13,4,3,12,34, 9,13,4,6,6,18, 9,12,13,3,3,35, + 9,12,13,5,9,3, 9,12,3,3,13,35, 9,12,3,6,6,19, 9,11,13,5,9,4, 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, + 9,9,3,4,9,6, 9,9,3,6,6,22, 9,8,13,5,9,7, 9,8,4,4,9,7, 9,8,4,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,5,4,9,8, + 9,7,5,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,6,6,6,25, 9,5,11,4,9,10, 9,5,11,5,9,10, 9,5,5,3,11,42, 9,5,5,6,6,26, + 9,4,10,5,9,11, 9,4,5,6,6,27, 9,3,10,5,9,12, 9,3,5,6,6,28, 9,2,11,3,5,45, 9,2,11,5,9,13, 9,2,5,4,9,13, 9,2,5,6,6,29, + 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,6,4,9,14, 9,1,6,6,6,30, 9,0,10,2,6,47, 9,0,10,5,9,15, 9,0,9,2,7,47, 9,0,8,2,8,47, + 9,0,7,2,9,47, 9,0,7,6,6,31, 10,15,10,1,6,32, 10,15,10,3,6,32, 10,15,10,5,10,0, 10,15,9,1,7,32, 10,15,9,3,7,32, 10,15,8,1,8,32, + 10,15,8,3,8,32, 10,15,7,1,9,32, 10,15,7,3,9,32, 10,15,7,6,10,0, 10,14,11,3,5,33, 10,14,11,5,10,1, 10,14,6,3,10,33, 10,14,5,3,11,33, + 10,14,5,6,5,17, 10,13,12,3,4,34, 10,13,12,5,10,2, 10,13,4,3,12,34, 10,13,4,6,5,18, 10,12,13,3,3,35, 10,12,13,5,10,3, 10,12,3,3,13,35, + 10,12,3,6,5,19, 10,11,13,5,10,4, 10,11,3,6,5,20, 10,10,13,5,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,3,4,10,6, 10,9,3,6,5,22, + 10,8,13,5,10,7, 10,8,4,4,10,7, 10,8,4,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,5,4,10,8, 10,7,5,6,5,24, 10,6,12,4,10,9, + 10,6,12,5,10,9, 10,6,6,6,5,25, 10,5,11,4,10,10, 10,5,11,5,10,10, 10,5,5,3,11,42, 10,5,5,6,5,26, 10,4,10,5,10,11, 10,4,5,6,5,27, + 10,3,10,5,10,12, 10,3,5,6,5,28, 10,2,11,3,5,45, 10,2,11,5,10,13, 10,2,5,4,10,13, 10,2,5,6,5,29, 10,1,11,4,10,14, 10,1,11,5,10,14, + 10,1,6,4,10,14, 10,1,6,6,5,30, 10,0,10,5,10,15, 10,0,7,6,5,31, 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,11,5,11,1, 11,14,10,1,6,33, + 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, + 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,5,6,4,17, 11,13,12,3,4,34, 11,13,12,5,11,2, 11,13,4,3,12,34, 11,13,4,6,4,18, + 11,12,13,3,3,35, 11,12,13,5,11,3, 11,12,3,3,13,35, 11,12,3,6,4,19, 11,11,13,5,11,4, 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, + 11,9,13,5,11,6, 11,9,3,4,11,6, 11,9,3,6,4,22, 11,8,13,5,11,7, 11,8,4,4,11,7, 11,8,4,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, + 11,7,5,4,11,8, 11,7,5,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,6,6,4,25, 11,5,11,4,11,10, 11,5,11,5,11,10, 11,5,5,3,11,42, + 11,5,5,6,4,26, 11,4,10,5,11,11, 11,4,5,6,4,27, 11,3,10,5,11,12, 11,3,5,6,4,28, 11,2,11,3,5,45, 11,2,11,5,11,13, 11,2,5,4,11,13, + 11,2,5,6,4,29, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,6,4,11,14, 11,1,6,6,4,30, 11,0,10,1,6,47, 11,0,10,5,11,15, 11,0,9,1,7,47, + 11,0,8,1,8,47, 11,0,7,1,9,47, 11,0,7,6,4,31, 12,13,12,1,4,34, 12,13,12,3,4,34, 12,13,12,5,12,2, 12,13,11,1,5,34, 12,13,11,3,5,34, + 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, 12,13,7,1,9,34, 12,13,7,3,9,34, + 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,4,1,12,34, 12,13,4,3,12,34, 12,13,4,6,3,18, 12,12,13,3,3,35, + 12,12,13,5,12,3, 12,12,3,3,13,35, 12,12,3,6,3,19, 12,11,13,5,12,4, 12,11,3,6,3,20, 12,10,13,5,12,5, 12,10,3,6,3,21, 12,9,13,5,12,6, + 12,9,3,4,12,6, 12,9,3,6,3,22, 12,8,13,5,12,7, 12,8,4,4,12,7, 12,8,4,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,5,4,12,8, + 12,7,5,6,3,24, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,6,6,3,25, 12,5,11,4,12,10, 12,5,11,5,12,10, 12,5,5,3,11,42, 12,5,5,6,3,26, + 12,4,10,5,12,11, 12,4,5,6,3,27, 12,3,10,5,12,12, 12,3,5,6,3,28, 12,2,11,1,5,45, 12,2,11,3,5,45, 12,2,11,5,12,13, 12,2,10,1,6,45, + 12,2,9,1,7,45, 12,2,8,1,8,45, 12,2,7,1,9,45, 12,2,6,1,10,45, 12,2,5,1,11,45, 12,2,5,4,12,13, 12,2,5,6,3,29, 12,1,11,1,5,46, + 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,6,46, 12,1,10,4,12,14, 12,1,9,1,7,46, 12,1,9,4,12,14, 12,1,8,1,8,46, 12,1,8,4,12,14, + 12,1,7,1,9,46, 12,1,7,4,12,14, 12,1,6,1,10,46, 12,1,6,4,12,14, 12,1,6,6,3,30, 13,12,13,1,3,35, 13,12,13,3,3,35, 13,12,13,5,2,19, + 13,12,12,1,4,35, 13,12,12,3,4,35, 13,12,11,1,5,35, 13,12,11,3,5,35, 13,12,10,1,6,35, 13,12,10,3,6,35, 13,12,9,1,7,35, 13,12,9,3,7,35, + 13,12,8,1,8,35, 13,12,8,3,8,35, 13,12,7,1,9,35, 13,12,7,3,9,35, 13,12,6,1,10,35, 13,12,6,3,10,35, 13,12,5,1,11,35, 13,12,5,3,11,35, + 13,12,4,1,12,35, 13,12,4,3,12,35, 13,12,3,1,13,35, 13,12,3,3,13,35, 13,12,3,6,2,19, 13,11,13,1,3,36, 13,11,13,5,13,4, 13,11,12,1,4,36, + 13,11,11,1,5,36, 13,11,10,1,6,36, 13,11,9,1,7,36, 13,11,8,1,8,36, 13,11,7,1,9,36, 13,11,6,1,10,36, 13,11,5,1,11,36, 13,11,4,1,12,36, + 13,11,3,1,13,36, 13,11,3,6,2,20, 13,10,13,5,13,5, 13,10,3,6,2,21, 13,9,13,5,13,6, 13,9,3,4,13,6, 13,9,3,6,2,22, 13,8,13,5,13,7, + 13,8,4,4,13,7, 13,8,4,6,2,23, 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,5,4,13,8, 13,7,5,6,2,24, 13,6,12,1,4,41, 13,6,12,4,13,9, + 13,6,12,5,13,9, 13,6,11,1,5,41, 13,6,10,1,6,41, 13,6,9,1,7,41, 13,6,8,1,8,41, 13,6,7,1,9,41, 13,6,6,1,10,41, 13,6,6,6,2,25, + 13,5,11,4,13,10, 13,5,11,5,13,10, 13,5,5,3,11,42, 13,5,5,6,2,26, 13,4,10,5,13,11, 13,4,5,6,2,27, 13,3,10,1,6,44, 13,3,10,4,13,12, + 13,3,10,5,13,12, 13,3,9,1,7,44, 13,3,9,4,13,12, 13,3,8,1,8,44, 13,3,8,4,13,12, 13,3,7,1,9,44, 13,3,7,4,13,12, 13,3,6,1,10,44, + 13,3,6,4,13,12, 13,3,5,1,11,44, 13,3,5,4,13,12, 13,3,5,6,2,28, 14,10,13,1,3,37, 14,10,13,3,3,37, 14,10,13,5,14,5, 14,10,12,1,4,37, + 14,10,12,3,4,37, 14,10,11,1,5,37, 14,10,11,3,5,37, 14,10,10,1,6,37, 14,10,10,3,6,37, 14,10,9,1,7,37, 14,10,9,3,7,37, 14,10,8,1,8,37, + 14,10,8,3,8,37, 14,10,7,1,9,37, 14,10,7,3,9,37, 14,10,6,1,10,37, 14,10,6,3,10,37, 14,10,5,1,11,37, 14,10,5,3,11,37, 14,10,4,1,12,37, + 14,10,4,3,12,37, 14,10,3,1,13,37, 14,10,3,3,13,37, 14,10,3,6,1,21, 14,9,13,1,3,38, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,11,1,5,38, + 14,9,10,1,6,38, 14,9,9,1,7,38, 14,9,8,1,8,38, 14,9,7,1,9,38, 14,9,6,1,10,38, 14,9,5,1,11,38, 14,9,4,1,12,38, 14,9,3,1,13,38, + 14,9,3,4,14,6, 14,9,3,6,1,22, 14,8,13,1,3,39, 14,8,13,5,14,7, 14,8,12,1,4,39, 14,8,11,1,5,39, 14,8,10,1,6,39, 14,8,9,1,7,39, + 14,8,8,1,8,39, 14,8,7,1,9,39, 14,8,6,1,10,39, 14,8,5,1,11,39, 14,8,4,1,12,39, 14,8,4,4,14,7, 14,8,4,6,1,23, 14,7,13,1,3,40, + 14,7,13,4,1,24, 14,7,13,5,1,24, 14,7,12,1,4,40, 14,7,12,4,1,24, 14,7,11,1,5,40, 14,7,11,4,1,24, 14,7,10,1,6,40, 14,7,10,4,1,24, + 14,7,9,1,7,40, 14,7,9,4,1,24, 14,7,8,1,8,40, 14,7,8,4,1,24, 14,7,7,1,9,40, 14,7,7,4,1,24, 14,7,6,1,10,40, 14,7,6,4,1,24, + 14,7,5,1,11,40, 14,7,5,4,1,24, 14,7,5,6,1,24, 14,5,11,1,5,42, 14,5,11,3,5,42, 14,5,11,4,14,10, 14,5,11,5,14,10, 14,5,10,1,6,42, + 14,5,10,3,6,42, 14,5,9,1,7,42, 14,5,9,3,7,42, 14,5,8,1,8,42, 14,5,8,3,8,42, 14,5,7,1,9,42, 14,5,7,3,9,42, 14,5,6,1,10,42, + 14,5,6,3,10,42, 14,5,5,1,11,42, 14,5,5,3,11,42, 14,5,5,6,1,26, 14,4,10,1,6,43, 14,4,10,4,14,11, 14,4,10,5,14,11, 14,4,9,1,7,43, + 14,4,9,4,14,11, 14,4,8,1,8,43, 14,4,8,4,14,11, 14,4,7,1,9,43, 14,4,7,4,14,11, 14,4,6,1,10,43, 14,4,6,4,14,11, 14,4,5,1,11,43, + 14,4,5,4,14,11, 14,4,5,6,1,27, + }, + }, + }, +} diff --git a/assets/voxels/beauty.lua b/assets/voxels/beauty.lua new file mode 100644 index 0000000..5784ff0 --- /dev/null +++ b/assets/voxels/beauty.lua @@ -0,0 +1,299 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "beauty" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "beauty", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1738, + count = 1044, + faces = { + 0,8,13,2,3,39, 0,8,13,3,3,39, 0,8,13,5,0,7, 0,8,12,2,4,39, 0,8,12,3,4,39, 0,8,11,2,5,39, 0,8,11,3,5,39, 0,8,10,2,6,39, + 0,8,10,3,6,39, 0,8,9,2,7,39, 0,8,9,3,7,39, 0,8,8,2,8,39, 0,8,8,3,8,39, 0,8,7,2,9,39, 0,8,7,3,9,39, 0,8,6,2,10,39, + 0,8,6,3,10,39, 0,8,5,2,11,39, 0,8,5,3,11,39, 0,8,4,2,12,39, 0,8,4,3,12,39, 0,8,3,2,13,39, 0,8,3,3,13,39, 0,8,2,2,14,39, + 0,8,2,3,14,39, 0,8,1,2,15,39, 0,8,1,3,15,39, 0,8,1,6,15,23, 0,7,13,2,3,40, 0,7,13,4,0,8, 0,7,13,5,0,8, 0,7,12,2,4,40, + 0,7,12,4,0,8, 0,7,11,2,5,40, 0,7,11,4,0,8, 0,7,10,2,6,40, 0,7,10,4,0,8, 0,7,9,2,7,40, 0,7,9,4,0,8, 0,7,8,2,8,40, + 0,7,8,4,0,8, 0,7,7,2,9,40, 0,7,7,4,0,8, 0,7,6,2,10,40, 0,7,6,4,0,8, 0,7,5,2,11,40, 0,7,5,4,0,8, 0,7,4,2,12,40, + 0,7,4,4,0,8, 0,7,3,2,13,40, 0,7,3,4,0,8, 0,7,2,2,14,40, 0,7,2,4,0,8, 0,7,1,2,15,40, 0,7,1,4,0,8, 0,7,1,6,15,24, + 1,9,13,2,3,38, 1,9,13,3,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,12,3,4,38, 1,9,11,2,5,38, 1,9,11,3,5,38, 1,9,10,2,6,38, + 1,9,10,3,6,38, 1,9,9,2,7,38, 1,9,9,3,7,38, 1,9,8,2,8,38, 1,9,8,3,8,38, 1,9,7,2,9,38, 1,9,7,3,9,38, 1,9,6,2,10,38, + 1,9,6,3,10,38, 1,9,5,2,11,38, 1,9,5,3,11,38, 1,9,4,2,12,38, 1,9,4,3,12,38, 1,9,3,2,13,38, 1,9,3,3,13,38, 1,9,2,2,14,38, + 1,9,2,3,14,38, 1,9,2,6,14,22, 1,8,13,5,1,7, 1,8,1,3,15,39, 1,8,1,6,14,23, 1,7,13,4,1,8, 1,7,13,5,1,8, 1,7,1,4,1,8, + 1,7,1,6,14,24, 1,6,12,2,4,41, 1,6,12,4,1,9, 1,6,12,5,1,9, 1,6,11,2,5,41, 1,6,11,4,1,9, 1,6,10,2,6,41, 1,6,10,4,1,9, + 1,6,9,2,7,41, 1,6,9,4,1,9, 1,6,8,2,8,41, 1,6,8,4,1,9, 1,6,7,2,9,41, 1,6,7,4,1,9, 1,6,6,2,10,41, 1,6,6,4,1,9, + 1,6,5,2,11,41, 1,6,5,4,1,9, 1,6,4,2,12,41, 1,6,4,4,1,9, 1,6,3,2,13,41, 1,6,3,4,1,9, 1,6,2,2,14,41, 1,6,2,4,1,9, + 1,6,2,6,14,25, 2,11,14,2,2,36, 2,11,14,3,2,36, 2,11,14,5,2,4, 2,11,13,2,3,36, 2,11,13,3,3,36, 2,11,12,2,4,36, 2,11,12,3,4,36, + 2,11,11,2,5,36, 2,11,11,3,5,36, 2,11,10,2,6,36, 2,11,10,3,6,36, 2,11,9,2,7,36, 2,11,9,3,7,36, 2,11,8,2,8,36, 2,11,8,3,8,36, + 2,11,7,2,9,36, 2,11,7,3,9,36, 2,11,6,2,10,36, 2,11,6,3,10,36, 2,11,5,2,11,36, 2,11,5,3,11,36, 2,11,4,2,12,36, 2,11,4,3,12,36, + 2,11,3,2,13,36, 2,11,3,3,13,36, 2,11,3,6,13,20, 2,10,14,2,2,37, 2,10,14,4,2,5, 2,10,14,5,2,5, 2,10,13,2,3,37, 2,10,12,2,4,37, + 2,10,11,2,5,37, 2,10,10,2,6,37, 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, 2,10,6,2,10,37, 2,10,5,2,11,37, 2,10,4,2,12,37, + 2,10,3,2,13,37, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,2,3,14,38, 2,9,2,6,13,22, 2,8,13,5,2,7, 2,8,1,3,15,39, 2,8,1,6,13,23, + 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,1,4,2,8, 2,7,1,6,13,24, 2,6,12,4,2,9, 2,6,12,5,2,9, 2,6,2,4,2,9, 2,6,2,6,13,25, + 2,5,11,2,5,42, 2,5,11,5,2,10, 2,5,10,2,6,42, 2,5,9,2,7,42, 2,5,8,2,8,42, 2,5,7,2,9,42, 2,5,6,2,10,42, 2,5,5,2,11,42, + 2,5,4,2,12,42, 2,5,3,2,13,42, 2,5,3,4,2,10, 2,5,3,6,13,26, 2,4,11,2,5,43, 2,4,11,4,2,11, 2,4,11,5,2,11, 2,4,10,2,6,43, + 2,4,10,4,2,11, 2,4,9,2,7,43, 2,4,9,4,2,11, 2,4,8,2,8,43, 2,4,8,4,2,11, 2,4,7,2,9,43, 2,4,7,4,2,11, 2,4,6,2,10,43, + 2,4,6,4,2,11, 2,4,5,2,11,43, 2,4,5,4,2,11, 2,4,4,2,12,43, 2,4,4,4,2,11, 2,4,4,6,13,27, 3,12,13,2,3,35, 3,12,13,3,3,35, + 3,12,13,5,3,3, 3,12,12,2,4,35, 3,12,12,3,4,35, 3,12,11,2,5,35, 3,12,11,3,5,35, 3,12,10,2,6,35, 3,12,10,3,6,35, 3,12,9,2,7,35, + 3,12,9,3,7,35, 3,12,8,2,8,35, 3,12,8,3,8,35, 3,12,7,2,9,35, 3,12,7,3,9,35, 3,12,6,2,10,35, 3,12,6,3,10,35, 3,12,5,2,11,35, + 3,12,5,3,11,35, 3,12,4,2,12,35, 3,12,4,3,12,35, 3,12,4,6,12,19, 3,11,14,3,2,36, 3,11,14,5,3,4, 3,11,3,3,13,36, 3,11,3,6,12,20, + 3,10,14,4,3,5, 3,10,14,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,2,3,14,38, 3,9,2,6,12,22, 3,8,13,5,3,7, 3,8,1,3,15,39, + 3,8,1,6,12,23, 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,1,4,3,8, 3,7,1,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,2,4,3,9, + 3,6,2,6,12,25, 3,5,11,5,3,10, 3,5,3,4,3,10, 3,5,3,6,12,26, 3,4,11,5,3,11, 3,4,4,6,12,27, 3,3,11,2,5,44, 3,3,11,5,3,12, + 3,3,10,2,6,44, 3,3,9,2,7,44, 3,3,8,2,8,44, 3,3,7,2,9,44, 3,3,6,2,10,44, 3,3,5,2,11,44, 3,3,4,2,12,44, 3,3,3,2,13,44, + 3,3,3,3,13,44, 3,3,3,6,12,28, 3,2,11,2,5,45, 3,2,11,5,3,13, 3,2,10,2,6,45, 3,2,9,2,7,45, 3,2,8,2,8,45, 3,2,7,2,9,45, + 3,2,6,2,10,45, 3,2,5,2,11,45, 3,2,4,2,12,45, 3,2,3,2,13,45, 3,2,3,4,3,13, 3,2,3,6,12,29, 3,1,11,2,5,46, 3,1,11,4,3,14, + 3,1,11,5,3,14, 3,1,10,2,6,46, 3,1,10,4,3,14, 3,1,9,2,7,46, 3,1,9,4,3,14, 3,1,8,2,8,46, 3,1,8,4,3,14, 3,1,7,2,9,46, + 3,1,7,4,3,14, 3,1,6,2,10,46, 3,1,6,4,3,14, 3,1,5,2,11,46, 3,1,5,4,3,14, 3,1,4,2,12,46, 3,1,4,4,3,14, 3,1,4,6,12,30, + 4,13,12,2,4,34, 4,13,12,3,4,34, 4,13,12,5,4,2, 4,13,11,2,5,34, 4,13,11,3,5,34, 4,13,10,2,6,34, 4,13,10,3,6,34, 4,13,9,2,7,34, + 4,13,9,3,7,34, 4,13,8,2,8,34, 4,13,8,3,8,34, 4,13,7,2,9,34, 4,13,7,3,9,34, 4,13,6,2,10,34, 4,13,6,3,10,34, 4,13,5,2,11,34, + 4,13,5,3,11,34, 4,13,5,6,11,18, 4,12,13,3,3,35, 4,12,13,5,4,3, 4,12,4,3,12,35, 4,12,4,6,11,19, 4,11,14,3,2,36, 4,11,14,5,4,4, + 4,11,3,3,13,36, 4,11,3,6,11,20, 4,10,14,4,4,5, 4,10,14,5,4,5, 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,2,3,14,38, 4,9,2,6,11,22, + 4,8,13,5,4,7, 4,8,1,3,15,39, 4,8,1,6,11,23, 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,1,4,4,8, 4,7,1,6,11,24, 4,6,12,4,4,9, + 4,6,12,5,4,9, 4,6,2,4,4,9, 4,6,2,6,11,25, 4,5,11,5,4,10, 4,5,3,4,4,10, 4,5,3,6,11,26, 4,4,11,5,4,11, 4,4,4,6,11,27, + 4,3,11,5,4,12, 4,3,3,3,13,44, 4,3,3,6,11,28, 4,2,11,5,4,13, 4,2,3,4,4,13, 4,2,3,6,11,29, 4,1,11,4,4,14, 4,1,11,5,4,14, + 4,1,4,4,4,14, 4,1,4,6,11,30, 4,0,10,2,6,47, 4,0,10,5,4,15, 4,0,9,2,7,47, 4,0,8,2,8,47, 4,0,7,2,9,47, 4,0,6,2,10,47, + 4,0,5,2,11,47, 4,0,5,6,11,31, 5,14,11,2,5,33, 5,14,11,3,5,33, 5,14,11,5,5,1, 5,14,10,2,6,33, 5,14,10,3,6,33, 5,14,9,2,7,33, + 5,14,9,3,7,33, 5,14,8,2,8,33, 5,14,8,3,8,33, 5,14,7,2,9,33, 5,14,7,3,9,33, 5,14,6,2,10,33, 5,14,6,3,10,33, 5,14,6,6,10,17, + 5,13,12,3,4,34, 5,13,12,5,5,2, 5,13,5,3,11,34, 5,13,5,6,10,18, 5,12,13,3,3,35, 5,12,13,5,5,3, 5,12,4,3,12,35, 5,12,4,6,10,19, + 5,11,14,3,2,36, 5,11,14,5,5,4, 5,11,3,3,13,36, 5,11,3,6,10,20, 5,10,14,4,5,5, 5,10,14,5,5,5, 5,10,3,6,10,21, 5,9,13,5,5,6, + 5,9,2,3,14,38, 5,9,2,6,10,22, 5,8,13,5,5,7, 5,8,1,3,15,39, 5,8,1,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,1,4,5,8, + 5,7,1,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,2,4,5,9, 5,6,2,6,10,25, 5,5,11,5,5,10, 5,5,3,4,5,10, 5,5,3,6,10,26, + 5,4,11,5,5,11, 5,4,4,6,10,27, 5,3,11,5,5,12, 5,3,3,3,13,44, 5,3,3,6,10,28, 5,2,11,5,5,13, 5,2,3,4,5,13, 5,2,3,6,10,29, + 5,1,11,4,5,14, 5,1,11,5,5,14, 5,1,4,4,5,14, 5,1,4,6,10,30, 5,0,10,5,5,15, 5,0,5,6,10,31, 6,14,11,3,5,33, 6,14,11,5,6,1, + 6,14,10,3,6,33, 6,14,9,3,7,33, 6,14,8,3,8,33, 6,14,7,3,9,33, 6,14,6,3,10,33, 6,14,6,6,9,17, 6,13,12,3,4,34, 6,13,12,5,6,2, + 6,13,5,3,11,34, 6,13,5,6,9,18, 6,12,13,3,3,35, 6,12,13,5,6,3, 6,12,4,3,12,35, 6,12,4,6,9,19, 6,11,14,3,2,36, 6,11,14,5,6,4, + 6,11,3,3,13,36, 6,11,3,6,9,20, 6,10,14,4,6,5, 6,10,14,5,6,5, 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,2,3,14,38, 6,9,2,6,9,22, + 6,8,13,5,6,7, 6,8,1,3,15,39, 6,8,1,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,1,4,6,8, 6,7,1,6,9,24, 6,6,12,4,6,9, + 6,6,12,5,6,9, 6,6,2,4,6,9, 6,6,2,6,9,25, 6,5,11,5,6,10, 6,5,3,4,6,10, 6,5,3,6,9,26, 6,4,11,5,6,11, 6,4,4,6,9,27, + 6,3,11,5,6,12, 6,3,3,3,13,44, 6,3,3,6,9,28, 6,2,11,5,6,13, 6,2,3,4,6,13, 6,2,3,6,9,29, 6,1,11,4,6,14, 6,1,11,5,6,14, + 6,1,4,4,6,14, 6,1,4,6,9,30, 6,0,10,5,6,15, 6,0,5,6,9,31, 7,14,11,3,5,33, 7,14,11,5,7,1, 7,14,10,3,6,33, 7,14,9,3,7,33, + 7,14,8,3,8,33, 7,14,7,3,9,33, 7,14,6,3,10,33, 7,14,6,6,8,17, 7,13,12,3,4,34, 7,13,12,5,7,2, 7,13,5,3,11,34, 7,13,5,6,8,18, + 7,12,13,3,3,35, 7,12,13,5,7,3, 7,12,4,3,12,35, 7,12,4,6,8,19, 7,11,14,3,2,36, 7,11,14,5,7,4, 7,11,3,3,13,36, 7,11,3,6,8,20, + 7,10,14,4,7,5, 7,10,14,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,2,3,14,38, 7,9,2,6,8,22, 7,8,13,5,7,7, 7,8,1,3,15,39, + 7,8,1,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,1,4,7,8, 7,7,1,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,2,4,7,9, + 7,6,2,6,8,25, 7,5,11,5,7,10, 7,5,3,4,7,10, 7,5,3,6,8,26, 7,4,11,5,7,11, 7,4,4,6,8,27, 7,3,11,5,7,12, 7,3,3,3,13,44, + 7,3,3,6,8,28, 7,2,11,5,7,13, 7,2,3,4,7,13, 7,2,3,6,8,29, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,4,4,7,14, 7,1,4,6,8,30, + 7,0,10,5,7,15, 7,0,5,6,8,31, 8,14,11,3,5,33, 8,14,11,5,8,1, 8,14,10,3,6,33, 8,14,9,3,7,33, 8,14,8,3,8,33, 8,14,7,3,9,33, + 8,14,6,3,10,33, 8,14,6,6,7,17, 8,13,12,3,4,34, 8,13,12,5,8,2, 8,13,5,3,11,34, 8,13,5,6,7,18, 8,12,13,3,3,35, 8,12,13,5,8,3, + 8,12,4,3,12,35, 8,12,4,6,7,19, 8,11,14,3,2,36, 8,11,14,5,8,4, 8,11,3,3,13,36, 8,11,3,6,7,20, 8,10,14,4,8,5, 8,10,14,5,8,5, + 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,2,3,14,38, 8,9,2,6,7,22, 8,8,13,5,8,7, 8,8,1,3,15,39, 8,8,1,6,7,23, 8,7,13,4,8,8, + 8,7,13,5,8,8, 8,7,1,4,8,8, 8,7,1,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,2,4,8,9, 8,6,2,6,7,25, 8,5,11,5,8,10, + 8,5,3,4,8,10, 8,5,3,6,7,26, 8,4,11,5,8,11, 8,4,4,6,7,27, 8,3,11,5,8,12, 8,3,3,3,13,44, 8,3,3,6,7,28, 8,2,11,5,8,13, + 8,2,3,4,8,13, 8,2,3,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,4,4,8,14, 8,1,4,6,7,30, 8,0,10,5,8,15, 8,0,5,6,7,31, + 9,14,11,3,5,33, 9,14,11,5,9,1, 9,14,10,3,6,33, 9,14,9,3,7,33, 9,14,8,3,8,33, 9,14,7,3,9,33, 9,14,6,3,10,33, 9,14,6,6,6,17, + 9,13,12,3,4,34, 9,13,12,5,9,2, 9,13,5,3,11,34, 9,13,5,6,6,18, 9,12,13,3,3,35, 9,12,13,5,9,3, 9,12,4,3,12,35, 9,12,4,6,6,19, + 9,11,14,3,2,36, 9,11,14,5,9,4, 9,11,3,3,13,36, 9,11,3,6,6,20, 9,10,14,4,9,5, 9,10,14,5,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, + 9,9,2,3,14,38, 9,9,2,6,6,22, 9,8,13,5,9,7, 9,8,1,3,15,39, 9,8,1,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,1,4,9,8, + 9,7,1,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,2,4,9,9, 9,6,2,6,6,25, 9,5,11,5,9,10, 9,5,3,4,9,10, 9,5,3,6,6,26, + 9,4,11,5,9,11, 9,4,4,6,6,27, 9,3,11,5,9,12, 9,3,3,3,13,44, 9,3,3,6,6,28, 9,2,11,5,9,13, 9,2,3,4,9,13, 9,2,3,6,6,29, + 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,4,4,9,14, 9,1,4,6,6,30, 9,0,10,5,9,15, 9,0,5,6,6,31, 10,14,11,1,5,33, 10,14,11,3,5,33, + 10,14,11,5,10,1, 10,14,10,1,6,33, 10,14,10,3,6,33, 10,14,9,1,7,33, 10,14,9,3,7,33, 10,14,8,1,8,33, 10,14,8,3,8,33, 10,14,7,1,9,33, + 10,14,7,3,9,33, 10,14,6,1,10,33, 10,14,6,3,10,33, 10,14,6,6,5,17, 10,13,12,3,4,34, 10,13,12,5,10,2, 10,13,5,3,11,34, 10,13,5,6,5,18, + 10,12,13,3,3,35, 10,12,13,5,10,3, 10,12,4,3,12,35, 10,12,4,6,5,19, 10,11,14,3,2,36, 10,11,14,5,10,4, 10,11,3,3,13,36, 10,11,3,6,5,20, + 10,10,14,4,10,5, 10,10,14,5,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,2,3,14,38, 10,9,2,6,5,22, 10,8,13,5,10,7, 10,8,1,3,15,39, + 10,8,1,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,1,4,10,8, 10,7,1,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,2,4,10,9, + 10,6,2,6,5,25, 10,5,11,5,10,10, 10,5,3,4,10,10, 10,5,3,6,5,26, 10,4,11,5,10,11, 10,4,4,6,5,27, 10,3,11,5,10,12, 10,3,3,3,13,44, + 10,3,3,6,5,28, 10,2,11,5,10,13, 10,2,3,4,10,13, 10,2,3,6,5,29, 10,1,11,4,10,14, 10,1,11,5,10,14, 10,1,4,4,10,14, 10,1,4,6,5,30, + 10,0,10,5,10,15, 10,0,5,6,5,31, 11,13,12,1,4,34, 11,13,12,3,4,34, 11,13,12,5,11,2, 11,13,11,1,5,34, 11,13,11,3,5,34, 11,13,10,1,6,34, + 11,13,10,3,6,34, 11,13,9,1,7,34, 11,13,9,3,7,34, 11,13,8,1,8,34, 11,13,8,3,8,34, 11,13,7,1,9,34, 11,13,7,3,9,34, 11,13,6,1,10,34, + 11,13,6,3,10,34, 11,13,5,1,11,34, 11,13,5,3,11,34, 11,13,5,6,4,18, 11,12,13,3,3,35, 11,12,13,5,11,3, 11,12,4,3,12,35, 11,12,4,6,4,19, + 11,11,14,3,2,36, 11,11,14,5,11,4, 11,11,3,3,13,36, 11,11,3,6,4,20, 11,10,14,4,11,5, 11,10,14,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, + 11,9,2,3,14,38, 11,9,2,6,4,22, 11,8,13,5,11,7, 11,8,1,3,15,39, 11,8,1,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,1,4,11,8, + 11,7,1,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,2,4,11,9, 11,6,2,6,4,25, 11,5,11,5,11,10, 11,5,3,4,11,10, 11,5,3,6,4,26, + 11,4,11,5,11,11, 11,4,4,6,4,27, 11,3,11,5,11,12, 11,3,3,3,13,44, 11,3,3,6,4,28, 11,2,11,5,11,13, 11,2,3,4,11,13, 11,2,3,6,4,29, + 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,4,4,11,14, 11,1,4,6,4,30, 11,0,10,1,6,47, 11,0,10,5,11,15, 11,0,9,1,7,47, 11,0,8,1,8,47, + 11,0,7,1,9,47, 11,0,6,1,10,47, 11,0,5,1,11,47, 11,0,5,6,4,31, 12,12,13,1,3,35, 12,12,13,3,3,35, 12,12,13,5,12,3, 12,12,12,1,4,35, + 12,12,12,3,4,35, 12,12,11,1,5,35, 12,12,11,3,5,35, 12,12,10,1,6,35, 12,12,10,3,6,35, 12,12,9,1,7,35, 12,12,9,3,7,35, 12,12,8,1,8,35, + 12,12,8,3,8,35, 12,12,7,1,9,35, 12,12,7,3,9,35, 12,12,6,1,10,35, 12,12,6,3,10,35, 12,12,5,1,11,35, 12,12,5,3,11,35, 12,12,4,1,12,35, + 12,12,4,3,12,35, 12,12,4,6,3,19, 12,11,14,3,2,36, 12,11,14,5,12,4, 12,11,3,3,13,36, 12,11,3,6,3,20, 12,10,14,4,12,5, 12,10,14,5,12,5, + 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,2,3,14,38, 12,9,2,6,3,22, 12,8,13,5,12,7, 12,8,1,3,15,39, 12,8,1,6,3,23, 12,7,13,4,12,8, + 12,7,13,5,12,8, 12,7,1,4,12,8, 12,7,1,6,3,24, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,2,4,12,9, 12,6,2,6,3,25, 12,5,11,5,12,10, + 12,5,3,4,12,10, 12,5,3,6,3,26, 12,4,11,5,12,11, 12,4,4,6,3,27, 12,3,11,1,5,44, 12,3,11,5,12,12, 12,3,10,1,6,44, 12,3,9,1,7,44, + 12,3,8,1,8,44, 12,3,7,1,9,44, 12,3,6,1,10,44, 12,3,5,1,11,44, 12,3,4,1,12,44, 12,3,3,1,13,44, 12,3,3,3,13,44, 12,3,3,6,3,28, + 12,2,11,1,5,45, 12,2,11,5,12,13, 12,2,10,1,6,45, 12,2,9,1,7,45, 12,2,8,1,8,45, 12,2,7,1,9,45, 12,2,6,1,10,45, 12,2,5,1,11,45, + 12,2,4,1,12,45, 12,2,3,1,13,45, 12,2,3,4,12,13, 12,2,3,6,3,29, 12,1,11,1,5,46, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,6,46, + 12,1,10,4,12,14, 12,1,9,1,7,46, 12,1,9,4,12,14, 12,1,8,1,8,46, 12,1,8,4,12,14, 12,1,7,1,9,46, 12,1,7,4,12,14, 12,1,6,1,10,46, + 12,1,6,4,12,14, 12,1,5,1,11,46, 12,1,5,4,12,14, 12,1,4,1,12,46, 12,1,4,4,12,14, 12,1,4,6,3,30, 13,11,14,1,2,36, 13,11,14,3,2,36, + 13,11,14,5,13,4, 13,11,13,1,3,36, 13,11,13,3,3,36, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, 13,11,11,3,5,36, 13,11,10,1,6,36, + 13,11,10,3,6,36, 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, 13,11,7,3,9,36, 13,11,6,1,10,36, + 13,11,6,3,10,36, 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, 13,11,3,3,13,36, 13,11,3,6,2,20, + 13,10,14,1,2,37, 13,10,14,4,13,5, 13,10,14,5,13,5, 13,10,13,1,3,37, 13,10,12,1,4,37, 13,10,11,1,5,37, 13,10,10,1,6,37, 13,10,9,1,7,37, + 13,10,8,1,8,37, 13,10,7,1,9,37, 13,10,6,1,10,37, 13,10,5,1,11,37, 13,10,4,1,12,37, 13,10,3,1,13,37, 13,10,3,6,2,21, 13,9,13,5,13,6, + 13,9,2,3,14,38, 13,9,2,6,2,22, 13,8,13,5,13,7, 13,8,1,3,15,39, 13,8,1,6,2,23, 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,1,4,13,8, + 13,7,1,6,2,24, 13,6,12,4,13,9, 13,6,12,5,13,9, 13,6,2,4,13,9, 13,6,2,6,2,25, 13,5,11,1,5,42, 13,5,11,5,13,10, 13,5,10,1,6,42, + 13,5,9,1,7,42, 13,5,8,1,8,42, 13,5,7,1,9,42, 13,5,6,1,10,42, 13,5,5,1,11,42, 13,5,4,1,12,42, 13,5,3,1,13,42, 13,5,3,4,13,10, + 13,5,3,6,2,26, 13,4,11,1,5,43, 13,4,11,4,13,11, 13,4,11,5,13,11, 13,4,10,1,6,43, 13,4,10,4,13,11, 13,4,9,1,7,43, 13,4,9,4,13,11, + 13,4,8,1,8,43, 13,4,8,4,13,11, 13,4,7,1,9,43, 13,4,7,4,13,11, 13,4,6,1,10,43, 13,4,6,4,13,11, 13,4,5,1,11,43, 13,4,5,4,13,11, + 13,4,4,1,12,43, 13,4,4,4,13,11, 13,4,4,6,2,27, 14,9,13,1,3,38, 14,9,13,3,3,38, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,12,3,4,38, + 14,9,11,1,5,38, 14,9,11,3,5,38, 14,9,10,1,6,38, 14,9,10,3,6,38, 14,9,9,1,7,38, 14,9,9,3,7,38, 14,9,8,1,8,38, 14,9,8,3,8,38, + 14,9,7,1,9,38, 14,9,7,3,9,38, 14,9,6,1,10,38, 14,9,6,3,10,38, 14,9,5,1,11,38, 14,9,5,3,11,38, 14,9,4,1,12,38, 14,9,4,3,12,38, + 14,9,3,1,13,38, 14,9,3,3,13,38, 14,9,2,1,14,38, 14,9,2,3,14,38, 14,9,2,6,1,22, 14,8,13,5,14,7, 14,8,1,3,15,39, 14,8,1,6,1,23, + 14,7,13,4,14,8, 14,7,13,5,14,8, 14,7,1,4,14,8, 14,7,1,6,1,24, 14,6,12,1,4,41, 14,6,12,4,14,9, 14,6,12,5,14,9, 14,6,11,1,5,41, + 14,6,11,4,14,9, 14,6,10,1,6,41, 14,6,10,4,14,9, 14,6,9,1,7,41, 14,6,9,4,14,9, 14,6,8,1,8,41, 14,6,8,4,14,9, 14,6,7,1,9,41, + 14,6,7,4,14,9, 14,6,6,1,10,41, 14,6,6,4,14,9, 14,6,5,1,11,41, 14,6,5,4,14,9, 14,6,4,1,12,41, 14,6,4,4,14,9, 14,6,3,1,13,41, + 14,6,3,4,14,9, 14,6,2,1,14,41, 14,6,2,4,14,9, 14,6,2,6,1,25, 15,8,13,1,3,39, 15,8,13,3,3,39, 15,8,13,5,15,7, 15,8,12,1,4,39, + 15,8,12,3,4,39, 15,8,11,1,5,39, 15,8,11,3,5,39, 15,8,10,1,6,39, 15,8,10,3,6,39, 15,8,9,1,7,39, 15,8,9,3,7,39, 15,8,8,1,8,39, + 15,8,8,3,8,39, 15,8,7,1,9,39, 15,8,7,3,9,39, 15,8,6,1,10,39, 15,8,6,3,10,39, 15,8,5,1,11,39, 15,8,5,3,11,39, 15,8,4,1,12,39, + 15,8,4,3,12,39, 15,8,3,1,13,39, 15,8,3,3,13,39, 15,8,2,1,14,39, 15,8,2,3,14,39, 15,8,1,1,15,39, 15,8,1,3,15,39, 15,8,1,6,0,23, + 15,7,13,1,3,40, 15,7,13,4,15,8, 15,7,13,5,15,8, 15,7,12,1,4,40, 15,7,12,4,15,8, 15,7,11,1,5,40, 15,7,11,4,15,8, 15,7,10,1,6,40, + 15,7,10,4,15,8, 15,7,9,1,7,40, 15,7,9,4,15,8, 15,7,8,1,8,40, 15,7,8,4,15,8, 15,7,7,1,9,40, 15,7,7,4,15,8, 15,7,6,1,10,40, + 15,7,6,4,15,8, 15,7,5,1,11,40, 15,7,5,4,15,8, 15,7,4,1,12,40, 15,7,4,4,15,8, 15,7,3,1,13,40, 15,7,3,4,15,8, 15,7,2,1,14,40, + 15,7,2,4,15,8, 15,7,1,1,15,40, 15,7,1,4,15,8, 15,7,1,6,0,24, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1842, + count = 1084, + faces = { + 0,8,13,2,3,87, 0,8,13,3,3,87, 0,8,13,5,0,55, 0,8,12,2,4,87, 0,8,12,3,4,87, 0,8,11,2,5,87, 0,8,11,3,5,87, 0,8,10,2,6,87, + 0,8,10,3,6,87, 0,8,9,2,7,87, 0,8,9,3,7,87, 0,8,8,2,8,87, 0,8,8,3,8,87, 0,8,7,2,9,87, 0,8,7,3,9,87, 0,8,6,2,10,87, + 0,8,6,3,10,87, 0,8,5,2,11,87, 0,8,5,3,11,87, 0,8,4,2,12,87, 0,8,4,3,12,87, 0,8,3,2,13,87, 0,8,3,3,13,87, 0,8,2,2,14,87, + 0,8,2,3,14,87, 0,8,1,2,15,87, 0,8,1,3,15,87, 0,8,1,6,15,71, 0,7,13,2,3,88, 0,7,13,4,0,56, 0,7,13,5,0,56, 0,7,12,2,4,88, + 0,7,12,4,0,56, 0,7,11,2,5,88, 0,7,11,4,0,56, 0,7,10,2,6,88, 0,7,10,4,0,56, 0,7,9,2,7,88, 0,7,9,4,0,56, 0,7,8,2,8,88, + 0,7,8,4,0,56, 0,7,7,2,9,88, 0,7,7,4,0,56, 0,7,6,2,10,88, 0,7,6,4,0,56, 0,7,5,2,11,88, 0,7,5,4,0,56, 0,7,4,2,12,88, + 0,7,4,4,0,56, 0,7,3,2,13,88, 0,7,3,4,0,56, 0,7,2,2,14,88, 0,7,2,4,0,56, 0,7,1,2,15,88, 0,7,1,4,0,56, 0,7,1,6,15,72, + 1,9,13,2,3,86, 1,9,13,3,3,86, 1,9,13,5,1,54, 1,9,12,2,4,86, 1,9,12,3,4,86, 1,9,11,2,5,86, 1,9,11,3,5,86, 1,9,10,2,6,86, + 1,9,10,3,6,86, 1,9,9,2,7,86, 1,9,9,3,7,86, 1,9,8,2,8,86, 1,9,8,3,8,86, 1,9,7,2,9,86, 1,9,7,3,9,86, 1,9,6,2,10,86, + 1,9,6,3,10,86, 1,9,5,2,11,86, 1,9,5,3,11,86, 1,9,4,2,12,86, 1,9,4,3,12,86, 1,9,3,2,13,86, 1,9,3,3,13,86, 1,9,2,2,14,86, + 1,9,2,3,14,86, 1,9,2,6,14,70, 1,8,13,5,1,55, 1,8,1,3,15,87, 1,8,1,6,14,71, 1,7,13,4,1,56, 1,7,13,5,1,56, 1,7,1,4,1,56, + 1,7,1,6,14,72, 1,6,12,2,4,89, 1,6,12,4,1,57, 1,6,12,5,1,57, 1,6,11,2,5,89, 1,6,11,4,1,57, 1,6,10,2,6,89, 1,6,10,4,1,57, + 1,6,9,2,7,89, 1,6,9,4,1,57, 1,6,8,2,8,89, 1,6,8,4,1,57, 1,6,7,2,9,89, 1,6,7,4,1,57, 1,6,6,2,10,89, 1,6,6,4,1,57, + 1,6,5,2,11,89, 1,6,5,4,1,57, 1,6,4,2,12,89, 1,6,4,4,1,57, 1,6,3,2,13,89, 1,6,3,4,1,57, 1,6,2,2,14,89, 1,6,2,4,1,57, + 1,6,2,6,14,73, 2,11,14,2,2,84, 2,11,14,3,2,84, 2,11,14,5,2,52, 2,11,13,2,3,84, 2,11,13,3,3,84, 2,11,12,2,4,84, 2,11,12,3,4,84, + 2,11,11,2,5,84, 2,11,11,3,5,84, 2,11,10,2,6,84, 2,11,10,3,6,84, 2,11,9,2,7,84, 2,11,9,3,7,84, 2,11,8,2,8,84, 2,11,8,3,8,84, + 2,11,7,2,9,84, 2,11,7,3,9,84, 2,11,6,2,10,84, 2,11,6,3,10,84, 2,11,5,2,11,84, 2,11,5,3,11,84, 2,11,4,2,12,84, 2,11,4,3,12,84, + 2,11,3,2,13,84, 2,11,3,3,13,84, 2,11,3,6,13,68, 2,10,14,2,2,85, 2,10,14,4,2,53, 2,10,14,5,2,53, 2,10,13,2,3,85, 2,10,12,2,4,85, + 2,10,11,2,5,85, 2,10,10,2,6,85, 2,10,9,2,7,85, 2,10,8,2,8,85, 2,10,7,2,9,85, 2,10,6,2,10,85, 2,10,5,2,11,85, 2,10,4,2,12,85, + 2,10,3,2,13,85, 2,10,3,6,13,69, 2,9,13,5,2,54, 2,9,2,3,14,86, 2,9,2,6,13,70, 2,8,13,5,2,55, 2,8,1,3,15,87, 2,8,1,6,13,71, + 2,7,13,4,2,56, 2,7,13,5,2,56, 2,7,1,4,2,56, 2,7,1,6,13,72, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,2,4,2,57, 2,6,2,6,13,73, + 2,5,11,2,5,90, 2,5,11,5,2,58, 2,5,10,2,6,90, 2,5,9,2,7,90, 2,5,8,2,8,90, 2,5,7,2,9,90, 2,5,6,2,10,90, 2,5,5,2,11,90, + 2,5,4,2,12,90, 2,5,3,2,13,90, 2,5,3,6,13,74, 2,4,11,2,5,91, 2,4,11,5,2,59, 2,4,10,2,6,91, 2,4,9,2,7,91, 2,4,8,2,8,91, + 2,4,7,2,9,91, 2,4,6,2,10,91, 2,4,5,2,11,91, 2,4,4,2,12,91, 2,4,3,2,13,91, 2,4,2,2,14,91, 2,4,2,3,14,91, 2,4,2,6,13,75, + 2,3,12,2,4,92, 2,3,12,3,4,92, 2,3,12,4,13,76, 2,3,12,5,13,76, 2,3,11,2,5,92, 2,3,11,4,13,76, 2,3,10,2,6,92, 2,3,10,4,13,76, + 2,3,9,2,7,92, 2,3,9,4,13,76, 2,3,8,2,8,92, 2,3,8,4,13,76, 2,3,7,2,9,92, 2,3,7,4,13,76, 2,3,6,2,10,92, 2,3,6,4,13,76, + 2,3,5,2,11,92, 2,3,5,4,13,76, 2,3,4,2,12,92, 2,3,4,4,13,76, 2,3,3,2,13,92, 2,3,3,4,13,76, 2,3,2,2,14,92, 2,3,2,4,13,76, + 2,3,2,6,13,76, 3,12,13,2,3,83, 3,12,13,3,3,83, 3,12,13,5,3,51, 3,12,12,2,4,83, 3,12,12,3,4,83, 3,12,11,2,5,83, 3,12,11,3,5,83, + 3,12,10,2,6,83, 3,12,10,3,6,83, 3,12,9,2,7,83, 3,12,9,3,7,83, 3,12,8,2,8,83, 3,12,8,3,8,83, 3,12,7,2,9,83, 3,12,7,3,9,83, + 3,12,6,2,10,83, 3,12,6,3,10,83, 3,12,5,2,11,83, 3,12,5,3,11,83, 3,12,4,2,12,83, 3,12,4,3,12,83, 3,12,4,6,12,67, 3,11,14,3,2,84, + 3,11,14,5,3,52, 3,11,3,3,13,84, 3,11,3,6,12,68, 3,10,14,4,3,53, 3,10,14,5,3,53, 3,10,3,6,12,69, 3,9,13,5,3,54, 3,9,2,3,14,86, + 3,9,2,6,12,70, 3,8,13,5,3,55, 3,8,1,3,15,87, 3,8,1,6,12,71, 3,7,13,4,3,56, 3,7,13,5,3,56, 3,7,1,4,3,56, 3,7,1,6,12,72, + 3,6,12,4,3,57, 3,6,12,5,3,57, 3,6,2,4,3,57, 3,6,2,6,12,73, 3,5,11,5,3,58, 3,5,3,6,12,74, 3,4,11,5,3,59, 3,4,2,3,14,91, + 3,4,2,6,12,75, 3,3,12,3,4,92, 3,3,12,5,3,60, 3,3,2,6,12,76, 3,2,12,2,4,93, 3,2,12,4,3,61, 3,2,12,5,3,61, 3,2,11,2,5,93, + 3,2,10,2,6,93, 3,2,9,2,7,93, 3,2,8,2,8,93, 3,2,7,2,9,93, 3,2,6,2,10,93, 3,2,5,2,11,93, 3,2,4,2,12,93, 3,2,3,2,13,93, + 3,2,2,2,14,93, 3,2,2,4,3,61, 3,2,2,6,12,77, 3,1,11,2,5,94, 3,1,11,4,3,62, 3,1,11,5,3,62, 3,1,10,2,6,94, 3,1,10,4,3,62, + 3,1,9,2,7,94, 3,1,9,4,3,62, 3,1,8,2,8,94, 3,1,8,4,3,62, 3,1,7,2,9,94, 3,1,7,4,3,62, 3,1,6,2,10,94, 3,1,6,4,3,62, + 3,1,5,2,11,94, 3,1,5,4,3,62, 3,1,4,2,12,94, 3,1,4,4,3,62, 3,1,3,2,13,94, 3,1,3,4,3,62, 3,1,3,6,3,62, 4,13,12,2,4,82, + 4,13,12,3,4,82, 4,13,12,5,4,50, 4,13,11,2,5,82, 4,13,11,3,5,82, 4,13,10,2,6,82, 4,13,10,3,6,82, 4,13,9,2,7,82, 4,13,9,3,7,82, + 4,13,8,2,8,82, 4,13,8,3,8,82, 4,13,7,2,9,82, 4,13,7,3,9,82, 4,13,6,2,10,82, 4,13,6,3,10,82, 4,13,5,2,11,82, 4,13,5,3,11,82, + 4,13,5,6,11,66, 4,12,13,3,3,83, 4,12,13,5,4,51, 4,12,4,3,12,83, 4,12,4,6,11,67, 4,11,14,3,2,84, 4,11,14,5,4,52, 4,11,3,3,13,84, + 4,11,3,6,11,68, 4,10,14,4,4,53, 4,10,14,5,4,53, 4,10,3,6,11,69, 4,9,13,5,4,54, 4,9,2,3,14,86, 4,9,2,6,11,70, 4,8,13,5,4,55, + 4,8,1,3,15,87, 4,8,1,6,11,71, 4,7,13,4,4,56, 4,7,13,5,4,56, 4,7,1,4,4,56, 4,7,1,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, + 4,6,2,4,4,57, 4,6,2,6,11,73, 4,5,11,5,4,58, 4,5,3,6,11,74, 4,4,11,5,4,59, 4,4,2,3,14,91, 4,4,2,6,11,75, 4,3,12,3,4,92, + 4,3,12,5,4,60, 4,3,2,6,11,76, 4,2,12,4,4,61, 4,2,12,5,4,61, 4,2,2,4,4,61, 4,2,2,6,11,77, 4,1,11,4,4,62, 4,1,11,5,4,62, + 4,1,3,4,4,62, 4,1,3,6,11,78, 4,0,10,2,6,95, 4,0,10,5,4,63, 4,0,9,2,7,95, 4,0,8,2,8,95, 4,0,7,2,9,95, 4,0,6,2,10,95, + 4,0,5,2,11,95, 4,0,4,2,12,95, 4,0,4,6,4,63, 5,14,11,2,5,81, 5,14,11,3,5,81, 5,14,11,5,5,49, 5,14,10,2,6,81, 5,14,10,3,6,81, + 5,14,9,2,7,81, 5,14,9,3,7,81, 5,14,8,2,8,81, 5,14,8,3,8,81, 5,14,7,2,9,81, 5,14,7,3,9,81, 5,14,6,2,10,81, 5,14,6,3,10,81, + 5,14,6,6,10,65, 5,13,12,3,4,82, 5,13,12,5,5,50, 5,13,5,3,11,82, 5,13,5,6,10,66, 5,12,13,3,3,83, 5,12,13,5,5,51, 5,12,4,3,12,83, + 5,12,4,6,10,67, 5,11,14,3,2,84, 5,11,14,5,5,52, 5,11,3,3,13,84, 5,11,3,6,10,68, 5,10,14,4,5,53, 5,10,14,5,5,53, 5,10,3,6,10,69, + 5,9,13,5,5,54, 5,9,2,3,14,86, 5,9,2,6,10,70, 5,8,13,5,5,55, 5,8,1,3,15,87, 5,8,1,6,10,71, 5,7,13,4,5,56, 5,7,13,5,5,56, + 5,7,1,4,5,56, 5,7,1,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,2,4,5,57, 5,6,2,6,10,73, 5,5,11,5,5,58, 5,5,3,6,10,74, + 5,4,11,5,5,59, 5,4,2,3,14,91, 5,4,2,6,10,75, 5,3,12,3,4,92, 5,3,12,5,5,60, 5,3,2,6,10,76, 5,2,12,4,5,61, 5,2,12,5,5,61, + 5,2,2,4,5,61, 5,2,2,6,10,77, 5,1,11,4,5,62, 5,1,11,5,5,62, 5,1,3,4,5,62, 5,1,3,6,10,78, 5,0,10,5,5,63, 5,0,4,6,5,63, + 6,14,11,3,5,81, 6,14,11,5,6,49, 6,14,10,3,6,81, 6,14,9,3,7,81, 6,14,8,3,8,81, 6,14,7,3,9,81, 6,14,6,3,10,81, 6,14,6,6,9,65, + 6,13,12,3,4,82, 6,13,12,5,6,50, 6,13,5,3,11,82, 6,13,5,6,9,66, 6,12,13,3,3,83, 6,12,13,5,6,51, 6,12,4,3,12,83, 6,12,4,6,9,67, + 6,11,14,3,2,84, 6,11,14,5,6,52, 6,11,3,3,13,84, 6,11,3,6,9,68, 6,10,14,4,6,53, 6,10,14,5,6,53, 6,10,3,6,9,69, 6,9,13,5,6,54, + 6,9,2,3,14,86, 6,9,2,6,9,70, 6,8,13,5,6,55, 6,8,1,3,15,87, 6,8,1,6,9,71, 6,7,13,4,6,56, 6,7,13,5,6,56, 6,7,1,4,6,56, + 6,7,1,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,2,4,6,57, 6,6,2,6,9,73, 6,5,11,5,6,58, 6,5,3,6,9,74, 6,4,11,5,6,59, + 6,4,2,3,14,91, 6,4,2,6,9,75, 6,3,12,3,4,92, 6,3,12,5,6,60, 6,3,2,6,9,76, 6,2,12,4,6,61, 6,2,12,5,6,61, 6,2,2,4,6,61, + 6,2,2,6,9,77, 6,1,11,4,6,62, 6,1,11,5,6,62, 6,1,3,4,6,62, 6,1,3,6,9,78, 6,0,10,5,6,63, 6,0,4,6,9,79, 7,14,11,3,5,81, + 7,14,11,5,7,49, 7,14,10,3,6,81, 7,14,9,3,7,81, 7,14,8,3,8,81, 7,14,7,3,9,81, 7,14,6,3,10,81, 7,14,6,6,8,65, 7,13,12,3,4,82, + 7,13,12,5,7,50, 7,13,5,3,11,82, 7,13,5,6,8,66, 7,12,13,3,3,83, 7,12,13,5,7,51, 7,12,4,3,12,83, 7,12,4,6,8,67, 7,11,14,3,2,84, + 7,11,14,5,7,52, 7,11,3,3,13,84, 7,11,3,6,8,68, 7,10,14,4,7,53, 7,10,14,5,7,53, 7,10,3,6,8,69, 7,9,13,5,7,54, 7,9,2,3,14,86, + 7,9,2,6,8,70, 7,8,13,5,7,55, 7,8,1,3,15,87, 7,8,1,6,8,71, 7,7,13,4,7,56, 7,7,13,5,7,56, 7,7,1,4,7,56, 7,7,1,6,8,72, + 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,2,4,7,57, 7,6,2,6,8,73, 7,5,11,5,7,58, 7,5,3,6,8,74, 7,4,11,5,7,59, 7,4,2,3,14,91, + 7,4,2,6,8,75, 7,3,12,3,4,92, 7,3,12,5,7,60, 7,3,2,6,8,76, 7,2,12,4,7,61, 7,2,12,5,7,61, 7,2,2,4,7,61, 7,2,2,6,8,77, + 7,1,11,4,7,62, 7,1,11,5,7,62, 7,1,3,4,7,62, 7,1,3,6,8,78, 7,0,10,5,7,63, 7,0,4,6,8,79, 8,14,11,3,5,81, 8,14,11,5,8,49, + 8,14,10,3,6,81, 8,14,9,3,7,81, 8,14,8,3,8,81, 8,14,7,3,9,81, 8,14,6,3,10,81, 8,14,6,6,7,65, 8,13,12,3,4,82, 8,13,12,5,8,50, + 8,13,5,3,11,82, 8,13,5,6,7,66, 8,12,13,3,3,83, 8,12,13,5,8,51, 8,12,4,3,12,83, 8,12,4,6,7,67, 8,11,14,3,2,84, 8,11,14,5,8,52, + 8,11,3,3,13,84, 8,11,3,6,7,68, 8,10,14,4,8,53, 8,10,14,5,8,53, 8,10,3,6,7,69, 8,9,13,5,8,54, 8,9,2,3,14,86, 8,9,2,6,7,70, + 8,8,13,5,8,55, 8,8,1,3,15,87, 8,8,1,6,7,71, 8,7,13,4,8,56, 8,7,13,5,8,56, 8,7,1,4,8,56, 8,7,1,6,7,72, 8,6,12,4,8,57, + 8,6,12,5,8,57, 8,6,2,4,8,57, 8,6,2,6,7,73, 8,5,11,5,8,58, 8,5,3,6,7,74, 8,4,11,5,8,59, 8,4,2,3,14,91, 8,4,2,6,7,75, + 8,3,12,3,4,92, 8,3,12,5,8,60, 8,3,2,6,7,76, 8,2,12,4,8,61, 8,2,12,5,8,61, 8,2,2,4,8,61, 8,2,2,6,7,77, 8,1,11,4,8,62, + 8,1,11,5,8,62, 8,1,3,4,8,62, 8,1,3,6,7,78, 8,0,10,5,8,63, 8,0,4,6,7,79, 9,14,11,3,5,81, 9,14,11,5,9,49, 9,14,10,3,6,81, + 9,14,9,3,7,81, 9,14,8,3,8,81, 9,14,7,3,9,81, 9,14,6,3,10,81, 9,14,6,6,6,65, 9,13,12,3,4,82, 9,13,12,5,9,50, 9,13,5,3,11,82, + 9,13,5,6,6,66, 9,12,13,3,3,83, 9,12,13,5,9,51, 9,12,4,3,12,83, 9,12,4,6,6,67, 9,11,14,3,2,84, 9,11,14,5,9,52, 9,11,3,3,13,84, + 9,11,3,6,6,68, 9,10,14,4,9,53, 9,10,14,5,9,53, 9,10,3,6,6,69, 9,9,13,5,9,54, 9,9,2,3,14,86, 9,9,2,6,6,70, 9,8,13,5,9,55, + 9,8,1,3,15,87, 9,8,1,6,6,71, 9,7,13,4,9,56, 9,7,13,5,9,56, 9,7,1,4,9,56, 9,7,1,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, + 9,6,2,4,9,57, 9,6,2,6,6,73, 9,5,11,5,9,58, 9,5,3,6,6,74, 9,4,11,5,9,59, 9,4,2,3,14,91, 9,4,2,6,6,75, 9,3,12,3,4,92, + 9,3,12,5,9,60, 9,3,2,6,6,76, 9,2,12,4,9,61, 9,2,12,5,9,61, 9,2,2,4,9,61, 9,2,2,6,6,77, 9,1,11,4,9,62, 9,1,11,5,9,62, + 9,1,3,4,9,62, 9,1,3,6,6,78, 9,0,10,5,9,63, 9,0,4,6,6,79, 10,14,11,1,5,81, 10,14,11,3,5,81, 10,14,11,5,10,49, 10,14,10,1,6,81, + 10,14,10,3,6,81, 10,14,9,1,7,81, 10,14,9,3,7,81, 10,14,8,1,8,81, 10,14,8,3,8,81, 10,14,7,1,9,81, 10,14,7,3,9,81, 10,14,6,1,10,81, + 10,14,6,3,10,81, 10,14,6,6,5,65, 10,13,12,3,4,82, 10,13,12,5,10,50, 10,13,5,3,11,82, 10,13,5,6,5,66, 10,12,13,3,3,83, 10,12,13,5,10,51, + 10,12,4,3,12,83, 10,12,4,6,5,67, 10,11,14,3,2,84, 10,11,14,5,10,52, 10,11,3,3,13,84, 10,11,3,6,5,68, 10,10,14,4,10,53, 10,10,14,5,10,53, + 10,10,3,6,5,69, 10,9,13,5,10,54, 10,9,2,3,14,86, 10,9,2,6,5,70, 10,8,13,5,10,55, 10,8,1,3,15,87, 10,8,1,6,5,71, 10,7,13,4,10,56, + 10,7,13,5,10,56, 10,7,1,4,10,56, 10,7,1,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,2,4,10,57, 10,6,2,6,5,73, 10,5,11,5,10,58, + 10,5,3,6,5,74, 10,4,11,5,10,59, 10,4,2,3,14,91, 10,4,2,6,5,75, 10,3,12,3,4,92, 10,3,12,5,10,60, 10,3,2,6,5,76, 10,2,12,4,10,61, + 10,2,12,5,10,61, 10,2,2,4,10,61, 10,2,2,6,5,77, 10,1,11,4,10,62, 10,1,11,5,10,62, 10,1,3,4,10,62, 10,1,3,6,5,78, 10,0,10,5,5,79, + 10,0,4,6,5,79, 11,13,12,1,4,82, 11,13,12,3,4,82, 11,13,12,5,11,50, 11,13,11,1,5,82, 11,13,11,3,5,82, 11,13,10,1,6,82, 11,13,10,3,6,82, + 11,13,9,1,7,82, 11,13,9,3,7,82, 11,13,8,1,8,82, 11,13,8,3,8,82, 11,13,7,1,9,82, 11,13,7,3,9,82, 11,13,6,1,10,82, 11,13,6,3,10,82, + 11,13,5,1,11,82, 11,13,5,3,11,82, 11,13,5,6,4,66, 11,12,13,3,3,83, 11,12,13,5,11,51, 11,12,4,3,12,83, 11,12,4,6,4,67, 11,11,14,3,2,84, + 11,11,14,5,11,52, 11,11,3,3,13,84, 11,11,3,6,4,68, 11,10,14,4,11,53, 11,10,14,5,11,53, 11,10,3,6,4,69, 11,9,13,5,11,54, 11,9,2,3,14,86, + 11,9,2,6,4,70, 11,8,13,5,11,55, 11,8,1,3,15,87, 11,8,1,6,4,71, 11,7,13,4,11,56, 11,7,13,5,11,56, 11,7,1,4,11,56, 11,7,1,6,4,72, + 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,2,4,11,57, 11,6,2,6,4,73, 11,5,11,5,11,58, 11,5,3,6,4,74, 11,4,11,5,11,59, 11,4,2,3,14,91, + 11,4,2,6,4,75, 11,3,12,3,4,92, 11,3,12,5,11,60, 11,3,2,6,4,76, 11,2,12,4,11,61, 11,2,12,5,11,61, 11,2,2,4,11,61, 11,2,2,6,4,77, + 11,1,11,4,11,62, 11,1,11,5,11,62, 11,1,3,4,11,62, 11,1,3,6,4,78, 11,0,10,1,6,95, 11,0,10,5,4,79, 11,0,9,1,7,95, 11,0,8,1,8,95, + 11,0,7,1,9,95, 11,0,6,1,10,95, 11,0,5,1,11,95, 11,0,4,1,12,95, 11,0,4,6,4,79, 12,12,13,1,3,83, 12,12,13,3,3,83, 12,12,13,5,12,51, + 12,12,12,1,4,83, 12,12,12,3,4,83, 12,12,11,1,5,83, 12,12,11,3,5,83, 12,12,10,1,6,83, 12,12,10,3,6,83, 12,12,9,1,7,83, 12,12,9,3,7,83, + 12,12,8,1,8,83, 12,12,8,3,8,83, 12,12,7,1,9,83, 12,12,7,3,9,83, 12,12,6,1,10,83, 12,12,6,3,10,83, 12,12,5,1,11,83, 12,12,5,3,11,83, + 12,12,4,1,12,83, 12,12,4,3,12,83, 12,12,4,6,3,67, 12,11,14,3,2,84, 12,11,14,5,12,52, 12,11,3,3,13,84, 12,11,3,6,3,68, 12,10,14,4,12,53, + 12,10,14,5,12,53, 12,10,3,6,3,69, 12,9,13,5,12,54, 12,9,2,3,14,86, 12,9,2,6,3,70, 12,8,13,5,12,55, 12,8,1,3,15,87, 12,8,1,6,3,71, + 12,7,13,4,12,56, 12,7,13,5,12,56, 12,7,1,4,12,56, 12,7,1,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,2,4,12,57, 12,6,2,6,3,73, + 12,5,11,5,12,58, 12,5,3,6,3,74, 12,4,11,5,12,59, 12,4,2,3,14,91, 12,4,2,6,3,75, 12,3,12,3,4,92, 12,3,12,5,12,60, 12,3,2,6,3,76, + 12,2,12,1,4,93, 12,2,12,4,12,61, 12,2,12,5,12,61, 12,2,11,1,5,93, 12,2,10,1,6,93, 12,2,9,1,7,93, 12,2,8,1,8,93, 12,2,7,1,9,93, + 12,2,6,1,10,93, 12,2,5,1,11,93, 12,2,4,1,12,93, 12,2,3,1,13,93, 12,2,2,1,14,93, 12,2,2,4,12,61, 12,2,2,6,3,77, 12,1,11,1,5,94, + 12,1,11,4,3,78, 12,1,11,5,3,78, 12,1,10,1,6,94, 12,1,10,4,3,78, 12,1,9,1,7,94, 12,1,9,4,3,78, 12,1,8,1,8,94, 12,1,8,4,3,78, + 12,1,7,1,9,94, 12,1,7,4,3,78, 12,1,6,1,10,94, 12,1,6,4,3,78, 12,1,5,1,11,94, 12,1,5,4,3,78, 12,1,4,1,12,94, 12,1,4,4,3,78, + 12,1,3,1,13,94, 12,1,3,4,3,78, 12,1,3,6,3,78, 13,11,14,1,2,84, 13,11,14,3,2,84, 13,11,14,5,13,52, 13,11,13,1,3,84, 13,11,13,3,3,84, + 13,11,12,1,4,84, 13,11,12,3,4,84, 13,11,11,1,5,84, 13,11,11,3,5,84, 13,11,10,1,6,84, 13,11,10,3,6,84, 13,11,9,1,7,84, 13,11,9,3,7,84, + 13,11,8,1,8,84, 13,11,8,3,8,84, 13,11,7,1,9,84, 13,11,7,3,9,84, 13,11,6,1,10,84, 13,11,6,3,10,84, 13,11,5,1,11,84, 13,11,5,3,11,84, + 13,11,4,1,12,84, 13,11,4,3,12,84, 13,11,3,1,13,84, 13,11,3,3,13,84, 13,11,3,6,2,68, 13,10,14,1,2,85, 13,10,14,4,13,53, 13,10,14,5,13,53, + 13,10,13,1,3,85, 13,10,12,1,4,85, 13,10,11,1,5,85, 13,10,10,1,6,85, 13,10,9,1,7,85, 13,10,8,1,8,85, 13,10,7,1,9,85, 13,10,6,1,10,85, + 13,10,5,1,11,85, 13,10,4,1,12,85, 13,10,3,1,13,85, 13,10,3,6,2,69, 13,9,13,5,13,54, 13,9,2,3,14,86, 13,9,2,6,2,70, 13,8,13,5,13,55, + 13,8,1,3,15,87, 13,8,1,6,2,71, 13,7,13,4,13,56, 13,7,13,5,13,56, 13,7,1,4,13,56, 13,7,1,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, + 13,6,2,4,13,57, 13,6,2,6,2,73, 13,5,11,1,5,90, 13,5,11,5,13,58, 13,5,10,1,6,90, 13,5,9,1,7,90, 13,5,8,1,8,90, 13,5,7,1,9,90, + 13,5,6,1,10,90, 13,5,5,1,11,90, 13,5,4,1,12,90, 13,5,3,1,13,90, 13,5,3,6,2,74, 13,4,11,1,5,91, 13,4,11,5,13,59, 13,4,10,1,6,91, + 13,4,9,1,7,91, 13,4,8,1,8,91, 13,4,7,1,9,91, 13,4,6,1,10,91, 13,4,5,1,11,91, 13,4,4,1,12,91, 13,4,3,1,13,91, 13,4,2,1,14,91, + 13,4,2,3,14,91, 13,4,2,6,2,75, 13,3,12,1,4,92, 13,3,12,3,4,92, 13,3,12,4,13,60, 13,3,12,5,13,60, 13,3,11,1,5,92, 13,3,11,4,13,60, + 13,3,10,1,6,92, 13,3,10,4,13,60, 13,3,9,1,7,92, 13,3,9,4,13,60, 13,3,8,1,8,92, 13,3,8,4,13,60, 13,3,7,1,9,92, 13,3,7,4,13,60, + 13,3,6,1,10,92, 13,3,6,4,13,60, 13,3,5,1,11,92, 13,3,5,4,13,60, 13,3,4,1,12,92, 13,3,4,4,13,60, 13,3,3,1,13,92, 13,3,3,4,13,60, + 13,3,2,1,14,92, 13,3,2,4,13,60, 13,3,2,6,13,60, 14,9,13,1,3,86, 14,9,13,3,3,86, 14,9,13,5,14,54, 14,9,12,1,4,86, 14,9,12,3,4,86, + 14,9,11,1,5,86, 14,9,11,3,5,86, 14,9,10,1,6,86, 14,9,10,3,6,86, 14,9,9,1,7,86, 14,9,9,3,7,86, 14,9,8,1,8,86, 14,9,8,3,8,86, + 14,9,7,1,9,86, 14,9,7,3,9,86, 14,9,6,1,10,86, 14,9,6,3,10,86, 14,9,5,1,11,86, 14,9,5,3,11,86, 14,9,4,1,12,86, 14,9,4,3,12,86, + 14,9,3,1,13,86, 14,9,3,3,13,86, 14,9,2,1,14,86, 14,9,2,3,14,86, 14,9,2,6,1,70, 14,8,13,5,14,55, 14,8,1,3,15,87, 14,8,1,6,1,71, + 14,7,13,4,14,56, 14,7,13,5,14,56, 14,7,1,4,14,56, 14,7,1,6,1,72, 14,6,12,1,4,89, 14,6,12,4,14,57, 14,6,12,5,14,57, 14,6,11,1,5,89, + 14,6,11,4,14,57, 14,6,10,1,6,89, 14,6,10,4,14,57, 14,6,9,1,7,89, 14,6,9,4,14,57, 14,6,8,1,8,89, 14,6,8,4,14,57, 14,6,7,1,9,89, + 14,6,7,4,14,57, 14,6,6,1,10,89, 14,6,6,4,14,57, 14,6,5,1,11,89, 14,6,5,4,14,57, 14,6,4,1,12,89, 14,6,4,4,14,57, 14,6,3,1,13,89, + 14,6,3,4,14,57, 14,6,2,1,14,89, 14,6,2,4,14,57, 14,6,2,6,1,73, 15,8,13,1,3,87, 15,8,13,3,3,87, 15,8,13,5,15,55, 15,8,12,1,4,87, + 15,8,12,3,4,87, 15,8,11,1,5,87, 15,8,11,3,5,87, 15,8,10,1,6,87, 15,8,10,3,6,87, 15,8,9,1,7,87, 15,8,9,3,7,87, 15,8,8,1,8,87, + 15,8,8,3,8,87, 15,8,7,1,9,87, 15,8,7,3,9,87, 15,8,6,1,10,87, 15,8,6,3,10,87, 15,8,5,1,11,87, 15,8,5,3,11,87, 15,8,4,1,12,87, + 15,8,4,3,12,87, 15,8,3,1,13,87, 15,8,3,3,13,87, 15,8,2,1,14,87, 15,8,2,3,14,87, 15,8,1,1,15,87, 15,8,1,3,15,87, 15,8,1,6,0,71, + 15,7,13,1,3,88, 15,7,13,4,15,56, 15,7,13,5,15,56, 15,7,12,1,4,88, 15,7,12,4,15,56, 15,7,11,1,5,88, 15,7,11,4,15,56, 15,7,10,1,6,88, + 15,7,10,4,15,56, 15,7,9,1,7,88, 15,7,9,4,15,56, 15,7,8,1,8,88, 15,7,8,4,15,56, 15,7,7,1,9,88, 15,7,7,4,15,56, 15,7,6,1,10,88, + 15,7,6,4,15,56, 15,7,5,1,11,88, 15,7,5,4,15,56, 15,7,4,1,12,88, 15,7,4,4,15,56, 15,7,3,1,13,88, 15,7,3,4,15,56, 15,7,2,1,14,88, + 15,7,2,4,15,56, 15,7,1,1,15,88, 15,7,1,4,15,56, 15,7,1,6,0,72, + }, + }, + }, +} diff --git a/assets/voxels/bike_shop_clerk.lua b/assets/voxels/bike_shop_clerk.lua new file mode 100644 index 0000000..72ab8e8 --- /dev/null +++ b/assets/voxels/bike_shop_clerk.lua @@ -0,0 +1,155 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "bike_shop_clerk" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "bike_shop_clerk", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1662, + count = 1038, + faces = { + 1,11,13,2,3,36, 1,11,13,3,3,36, 1,11,13,5,1,4, 1,11,12,2,4,36, 1,11,12,3,4,36, 1,11,11,2,5,36, 1,11,11,3,5,36, 1,11,10,2,6,36, + 1,11,10,3,6,36, 1,11,9,2,7,36, 1,11,9,3,7,36, 1,11,8,2,8,36, 1,11,8,3,8,36, 1,11,7,2,9,36, 1,11,7,3,9,36, 1,11,6,2,10,36, + 1,11,6,3,10,36, 1,11,5,2,11,36, 1,11,5,3,11,36, 1,11,4,2,12,36, 1,11,4,3,12,36, 1,11,3,2,13,36, 1,11,3,3,13,36, 1,11,3,6,14,20, + 1,10,13,2,3,37, 1,10,13,5,1,5, 1,10,12,2,4,37, 1,10,11,2,5,37, 1,10,10,2,6,37, 1,10,9,2,7,37, 1,10,8,2,8,37, 1,10,7,2,9,37, + 1,10,6,2,10,37, 1,10,5,2,11,37, 1,10,4,2,12,37, 1,10,3,2,13,37, 1,10,3,6,14,21, 1,9,13,2,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, + 1,9,11,2,5,38, 1,9,10,2,6,38, 1,9,9,2,7,38, 1,9,8,2,8,38, 1,9,7,2,9,38, 1,9,6,2,10,38, 1,9,5,2,11,38, 1,9,4,2,12,38, + 1,9,3,2,13,38, 1,9,3,6,14,22, 1,8,13,2,3,39, 1,8,13,4,1,7, 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,12,4,1,7, 1,8,11,2,5,39, + 1,8,11,4,1,7, 1,8,10,2,6,39, 1,8,10,4,1,7, 1,8,9,2,7,39, 1,8,9,4,1,7, 1,8,8,2,8,39, 1,8,8,4,1,7, 1,8,7,2,9,39, + 1,8,7,4,1,7, 1,8,6,2,10,39, 1,8,6,4,1,7, 1,8,5,2,11,39, 1,8,5,4,1,7, 1,8,4,2,12,39, 1,8,4,4,1,7, 1,8,3,2,13,39, + 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,11,2,5,42, 1,5,11,3,5,42, 1,5,11,5,1,10, 1,5,10,2,6,42, 1,5,10,3,6,42, 1,5,9,2,7,42, + 1,5,9,3,7,42, 1,5,8,2,8,42, 1,5,8,3,8,42, 1,5,7,2,9,42, 1,5,7,3,9,42, 1,5,6,2,10,42, 1,5,6,3,10,42, 1,5,5,2,11,42, + 1,5,5,3,11,42, 1,5,5,6,14,26, 1,4,12,2,4,43, 1,4,12,3,4,43, 1,4,12,4,1,11, 1,4,12,5,1,11, 1,4,11,2,5,43, 1,4,11,4,1,11, + 1,4,10,2,6,43, 1,4,10,4,1,11, 1,4,9,2,7,43, 1,4,9,4,1,11, 1,4,8,2,8,43, 1,4,8,4,1,11, 1,4,7,2,9,43, 1,4,7,4,1,11, + 1,4,6,2,10,43, 1,4,6,4,1,11, 1,4,5,2,11,43, 1,4,5,4,1,11, 1,4,4,2,12,43, 1,4,4,3,12,43, 1,4,4,4,1,11, 1,4,4,6,14,27, + 2,13,12,2,4,34, 2,13,12,3,4,34, 2,13,12,5,2,2, 2,13,11,2,5,34, 2,13,11,3,5,34, 2,13,10,2,6,34, 2,13,10,3,6,34, 2,13,9,2,7,34, + 2,13,9,3,7,34, 2,13,8,2,8,34, 2,13,8,3,8,34, 2,13,7,2,9,34, 2,13,7,3,9,34, 2,13,6,2,10,34, 2,13,6,3,10,34, 2,13,5,2,11,34, + 2,13,5,3,11,34, 2,13,4,2,12,34, 2,13,4,3,12,34, 2,13,4,6,13,18, 2,12,13,2,3,35, 2,12,13,3,3,35, 2,12,13,5,2,3, 2,12,12,2,4,35, + 2,12,11,2,5,35, 2,12,10,2,6,35, 2,12,9,2,7,35, 2,12,8,2,8,35, 2,12,7,2,9,35, 2,12,6,2,10,35, 2,12,5,2,11,35, 2,12,4,2,12,35, + 2,12,3,2,13,35, 2,12,3,3,13,35, 2,12,3,6,13,19, 2,11,13,5,2,4, 2,11,3,6,13,20, 2,10,13,5,2,5, 2,10,3,6,13,21, 2,9,13,5,2,6, + 2,9,3,6,13,22, 2,8,13,5,2,7, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,13,2,3,40, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,12,2,4,40, + 2,7,11,2,5,40, 2,7,10,2,6,40, 2,7,9,2,7,40, 2,7,8,2,8,40, 2,7,7,2,9,40, 2,7,6,2,10,40, 2,7,5,2,11,40, 2,7,4,2,12,40, + 2,7,4,4,2,8, 2,7,4,6,13,24, 2,6,12,2,4,41, 2,6,12,4,2,9, 2,6,12,5,2,9, 2,6,11,2,5,41, 2,6,10,2,6,41, 2,6,9,2,7,41, + 2,6,8,2,8,41, 2,6,7,2,9,41, 2,6,6,2,10,41, 2,6,5,2,11,41, 2,6,5,6,13,25, 2,5,11,5,2,10, 2,5,5,6,13,26, 2,4,12,3,4,43, + 2,4,12,5,2,11, 2,4,4,3,12,43, 2,4,4,4,2,11, 2,4,4,6,13,27, 2,3,12,2,4,44, 2,3,12,4,2,12, 2,3,12,5,2,12, 2,3,11,2,5,44, + 2,3,11,4,2,12, 2,3,10,2,6,44, 2,3,10,4,2,12, 2,3,9,2,7,44, 2,3,9,4,2,12, 2,3,8,2,8,44, 2,3,8,4,2,12, 2,3,7,2,9,44, + 2,3,7,4,2,12, 2,3,6,2,10,44, 2,3,6,4,2,12, 2,3,5,2,11,44, 2,3,5,4,2,12, 2,3,5,6,13,28, 3,14,11,2,5,33, 3,14,11,3,5,33, + 3,14,11,5,3,1, 3,14,10,2,6,33, 3,14,10,3,6,33, 3,14,9,2,7,33, 3,14,9,3,7,33, 3,14,8,2,8,33, 3,14,8,3,8,33, 3,14,7,2,9,33, + 3,14,7,3,9,33, 3,14,6,2,10,33, 3,14,6,3,10,33, 3,14,5,2,11,33, 3,14,5,3,11,33, 3,14,5,6,12,17, 3,13,12,3,4,34, 3,13,12,5,3,2, + 3,13,4,3,12,34, 3,13,4,6,12,18, 3,12,13,3,3,35, 3,12,13,5,3,3, 3,12,3,3,13,35, 3,12,3,6,12,19, 3,11,13,5,3,4, 3,11,3,6,12,20, + 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,3,6,12,22, 3,8,13,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,13,4,3,8, + 3,7,13,5,3,8, 3,7,4,4,3,8, 3,7,4,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,5,6,12,25, 3,5,11,5,3,10, 3,5,5,6,12,26, + 3,4,12,3,4,43, 3,4,12,5,3,11, 3,4,4,3,12,43, 3,4,4,4,3,11, 3,4,4,6,12,27, 3,3,12,4,3,12, 3,3,12,5,3,12, 3,3,5,6,12,28, + 3,2,11,2,5,45, 3,2,11,5,3,13, 3,2,10,2,6,45, 3,2,9,2,7,45, 3,2,8,2,8,45, 3,2,7,2,9,45, 3,2,6,2,10,45, 3,2,5,2,11,45, + 3,2,5,4,3,13, 3,2,5,6,12,29, 3,1,12,2,4,46, 3,1,12,3,4,46, 3,1,12,4,3,14, 3,1,12,5,3,14, 3,1,11,2,5,46, 3,1,11,4,3,14, + 3,1,10,2,6,46, 3,1,10,4,3,14, 3,1,9,2,7,46, 3,1,9,4,3,14, 3,1,8,2,8,46, 3,1,8,4,3,14, 3,1,7,2,9,46, 3,1,7,4,3,14, + 3,1,6,2,10,46, 3,1,6,4,3,14, 3,1,6,6,12,30, 4,14,11,3,5,33, 4,14,11,5,4,1, 4,14,10,3,6,33, 4,14,9,3,7,33, 4,14,8,3,8,33, + 4,14,7,3,9,33, 4,14,6,3,10,33, 4,14,5,3,11,33, 4,14,5,6,11,17, 4,13,12,3,4,34, 4,13,12,5,4,2, 4,13,4,3,12,34, 4,13,4,6,11,18, + 4,12,13,3,3,35, 4,12,13,5,4,3, 4,12,3,3,13,35, 4,12,3,6,11,19, 4,11,13,5,4,4, 4,11,3,6,11,20, 4,10,13,5,4,5, 4,10,3,6,11,21, + 4,9,13,5,4,6, 4,9,3,6,11,22, 4,8,13,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,4,4,4,8, + 4,7,4,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,5,6,11,25, 4,5,11,5,4,10, 4,5,5,6,11,26, 4,4,12,3,4,43, 4,4,12,5,4,11, + 4,4,4,3,12,43, 4,4,4,4,4,11, 4,4,4,6,11,27, 4,3,12,4,4,12, 4,3,12,5,4,12, 4,3,5,6,11,28, 4,2,11,5,4,13, 4,2,5,4,4,13, + 4,2,5,6,11,29, 4,1,12,3,4,46, 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,6,4,4,14, 4,1,6,6,11,30, 4,0,11,2,5,47, 4,0,11,5,4,15, + 4,0,10,2,6,47, 4,0,9,2,7,47, 4,0,8,2,8,47, 4,0,7,2,9,47, 4,0,7,6,11,31, 5,15,10,2,6,32, 5,15,10,3,6,32, 5,15,10,5,5,0, + 5,15,9,2,7,32, 5,15,9,3,7,32, 5,15,8,2,8,32, 5,15,8,3,8,32, 5,15,7,2,9,32, 5,15,7,3,9,32, 5,15,6,2,10,32, 5,15,6,3,10,32, + 5,15,6,6,10,16, 5,14,11,3,5,33, 5,14,11,5,5,1, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,12,3,4,34, 5,13,12,5,5,2, 5,13,4,3,12,34, + 5,13,4,6,10,18, 5,12,13,3,3,35, 5,12,13,5,5,3, 5,12,3,3,13,35, 5,12,3,6,10,19, 5,11,13,5,5,4, 5,11,3,6,10,20, 5,10,13,5,5,5, + 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,3,6,10,22, 5,8,13,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, + 5,7,4,4,5,8, 5,7,4,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,5,6,10,25, 5,5,11,5,5,10, 5,5,5,6,10,26, 5,4,12,3,4,43, + 5,4,12,5,5,11, 5,4,4,3,12,43, 5,4,4,4,5,11, 5,4,4,6,10,27, 5,3,12,4,5,12, 5,3,12,5,5,12, 5,3,5,6,10,28, 5,2,11,5,5,13, + 5,2,5,4,5,13, 5,2,5,6,10,29, 5,1,12,3,4,46, 5,1,12,4,5,14, 5,1,12,5,5,14, 5,1,6,4,5,14, 5,1,6,6,10,30, 5,0,11,5,5,15, + 5,0,7,6,10,31, 6,15,10,3,6,32, 6,15,10,5,6,0, 6,15,9,3,7,32, 6,15,8,3,8,32, 6,15,7,3,9,32, 6,15,6,3,10,32, 6,15,6,6,9,16, + 6,14,11,3,5,33, 6,14,11,5,6,1, 6,14,5,3,11,33, 6,14,5,6,9,17, 6,13,12,3,4,34, 6,13,12,5,6,2, 6,13,4,3,12,34, 6,13,4,6,9,18, + 6,12,13,3,3,35, 6,12,13,5,6,3, 6,12,3,3,13,35, 6,12,3,6,9,19, 6,11,13,5,6,4, 6,11,3,6,9,20, 6,10,13,5,6,5, 6,10,3,6,9,21, + 6,9,13,5,6,6, 6,9,3,6,9,22, 6,8,13,5,6,7, 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,4,4,6,8, + 6,7,4,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,5,6,9,25, 6,5,11,5,6,10, 6,5,5,6,9,26, 6,4,12,3,4,43, 6,4,12,5,6,11, + 6,4,4,3,12,43, 6,4,4,4,6,11, 6,4,4,6,9,27, 6,3,12,4,6,12, 6,3,12,5,6,12, 6,3,5,6,9,28, 6,2,11,5,6,13, 6,2,5,4,6,13, + 6,2,5,6,9,29, 6,1,12,3,4,46, 6,1,12,4,6,14, 6,1,12,5,6,14, 6,1,6,4,6,14, 6,1,6,6,9,30, 6,0,11,1,5,47, 6,0,11,5,6,15, + 6,0,10,1,6,47, 6,0,9,1,7,47, 6,0,8,1,8,47, 6,0,7,1,9,47, 6,0,7,6,9,31, 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, + 7,15,8,3,8,32, 7,15,7,3,9,32, 7,15,6,3,10,32, 7,15,6,6,8,16, 7,14,11,3,5,33, 7,14,11,5,7,1, 7,14,5,3,11,33, 7,14,5,6,8,17, + 7,13,12,3,4,34, 7,13,12,5,7,2, 7,13,4,3,12,34, 7,13,4,6,8,18, 7,12,13,3,3,35, 7,12,13,5,7,3, 7,12,3,3,13,35, 7,12,3,6,8,19, + 7,11,13,5,7,4, 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,3,6,8,22, 7,8,13,5,7,7, 7,8,3,4,7,7, + 7,8,3,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,4,4,7,8, 7,7,4,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,5,6,8,25, + 7,5,11,5,7,10, 7,5,5,6,8,26, 7,4,12,3,4,43, 7,4,12,5,7,11, 7,4,4,3,12,43, 7,4,4,4,7,11, 7,4,4,6,8,27, 7,3,12,4,7,12, + 7,3,12,5,7,12, 7,3,5,6,8,28, 7,2,11,5,7,13, 7,2,5,4,7,13, 7,2,5,6,8,29, 7,1,12,3,4,46, 7,1,12,4,7,14, 7,1,12,5,7,14, + 7,1,11,4,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,6,6,8,30, 8,15,10,3,6,32, + 8,15,10,5,8,0, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,6,6,7,16, 8,14,11,3,5,33, 8,14,11,5,8,1, + 8,14,5,3,11,33, 8,14,5,6,7,17, 8,13,12,3,4,34, 8,13,12,5,8,2, 8,13,4,3,12,34, 8,13,4,6,7,18, 8,12,13,3,3,35, 8,12,13,5,8,3, + 8,12,3,3,13,35, 8,12,3,6,7,19, 8,11,13,5,8,4, 8,11,3,6,7,20, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,6,7,22, + 8,8,13,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,4,4,8,8, 8,7,4,6,7,24, 8,6,12,4,8,9, + 8,6,12,5,8,9, 8,6,5,6,7,25, 8,5,11,5,8,10, 8,5,5,6,7,26, 8,4,12,3,4,43, 8,4,12,5,8,11, 8,4,4,3,12,43, 8,4,4,4,8,11, + 8,4,4,6,7,27, 8,3,12,4,8,12, 8,3,12,5,8,12, 8,3,5,6,7,28, 8,2,11,5,8,13, 8,2,5,4,8,13, 8,2,5,6,7,29, 8,1,12,3,4,46, + 8,1,12,4,8,14, 8,1,12,5,8,14, 8,1,11,4,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, + 8,1,6,6,7,30, 9,15,10,3,6,32, 9,15,10,5,9,0, 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, 9,15,6,3,10,32, 9,15,6,6,6,16, + 9,14,11,3,5,33, 9,14,11,5,9,1, 9,14,5,3,11,33, 9,14,5,6,6,17, 9,13,12,3,4,34, 9,13,12,5,9,2, 9,13,4,3,12,34, 9,13,4,6,6,18, + 9,12,13,3,3,35, 9,12,13,5,9,3, 9,12,3,3,13,35, 9,12,3,6,6,19, 9,11,13,5,9,4, 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,6,6,21, + 9,9,13,5,9,6, 9,9,3,6,6,22, 9,8,13,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,4,4,9,8, + 9,7,4,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,5,6,6,25, 9,5,11,5,9,10, 9,5,5,6,6,26, 9,4,12,3,4,43, 9,4,12,5,9,11, + 9,4,4,3,12,43, 9,4,4,4,9,11, 9,4,4,6,6,27, 9,3,12,4,9,12, 9,3,12,5,9,12, 9,3,5,6,6,28, 9,2,11,5,9,13, 9,2,5,4,9,13, + 9,2,5,6,6,29, 9,1,12,3,4,46, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,6,4,9,14, 9,1,6,6,6,30, 9,0,11,2,5,47, 9,0,11,5,9,15, + 9,0,10,2,6,47, 9,0,9,2,7,47, 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,7,6,6,31, 10,15,10,1,6,32, 10,15,10,3,6,32, 10,15,10,5,10,0, + 10,15,9,1,7,32, 10,15,9,3,7,32, 10,15,8,1,8,32, 10,15,8,3,8,32, 10,15,7,1,9,32, 10,15,7,3,9,32, 10,15,6,1,10,32, 10,15,6,3,10,32, + 10,15,6,6,5,16, 10,14,11,3,5,33, 10,14,11,5,10,1, 10,14,5,3,11,33, 10,14,5,6,5,17, 10,13,12,3,4,34, 10,13,12,5,10,2, 10,13,4,3,12,34, + 10,13,4,6,5,18, 10,12,13,3,3,35, 10,12,13,5,10,3, 10,12,3,3,13,35, 10,12,3,6,5,19, 10,11,13,5,10,4, 10,11,3,6,5,20, 10,10,13,5,10,5, + 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,3,6,5,22, 10,8,13,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, + 10,7,4,4,10,8, 10,7,4,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,5,6,5,25, 10,5,11,5,10,10, 10,5,5,6,5,26, 10,4,12,3,4,43, + 10,4,12,5,10,11, 10,4,4,3,12,43, 10,4,4,4,10,11, 10,4,4,6,5,27, 10,3,12,4,10,12, 10,3,12,5,10,12, 10,3,5,6,5,28, 10,2,11,5,10,13, + 10,2,5,4,10,13, 10,2,5,6,5,29, 10,1,12,3,4,46, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,6,4,10,14, 10,1,6,6,5,30, 10,0,11,5,10,15, + 10,0,7,6,5,31, 11,14,11,3,5,33, 11,14,11,5,11,1, 11,14,10,3,6,33, 11,14,9,3,7,33, 11,14,8,3,8,33, 11,14,7,3,9,33, 11,14,6,3,10,33, + 11,14,5,3,11,33, 11,14,5,6,4,17, 11,13,12,3,4,34, 11,13,12,5,11,2, 11,13,4,3,12,34, 11,13,4,6,4,18, 11,12,13,3,3,35, 11,12,13,5,11,3, + 11,12,3,3,13,35, 11,12,3,6,4,19, 11,11,13,5,11,4, 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,6,4,22, + 11,8,13,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,4,4,11,8, 11,7,4,6,4,24, 11,6,12,4,11,9, + 11,6,12,5,11,9, 11,6,5,6,4,25, 11,5,11,5,11,10, 11,5,5,6,4,26, 11,4,12,3,4,43, 11,4,12,5,11,11, 11,4,4,3,12,43, 11,4,4,4,11,11, + 11,4,4,6,4,27, 11,3,12,4,11,12, 11,3,12,5,11,12, 11,3,5,6,4,28, 11,2,11,5,11,13, 11,2,5,4,11,13, 11,2,5,6,4,29, 11,1,12,3,4,46, + 11,1,12,4,11,14, 11,1,12,5,11,14, 11,1,6,4,11,14, 11,1,6,6,4,30, 11,0,11,1,5,47, 11,0,11,5,11,15, 11,0,10,1,6,47, 11,0,9,1,7,47, + 11,0,8,1,8,47, 11,0,7,1,9,47, 11,0,7,6,4,31, 12,14,11,1,5,33, 12,14,11,3,5,33, 12,14,11,5,12,1, 12,14,10,1,6,33, 12,14,10,3,6,33, + 12,14,9,1,7,33, 12,14,9,3,7,33, 12,14,8,1,8,33, 12,14,8,3,8,33, 12,14,7,1,9,33, 12,14,7,3,9,33, 12,14,6,1,10,33, 12,14,6,3,10,33, + 12,14,5,1,11,33, 12,14,5,3,11,33, 12,14,5,6,3,17, 12,13,12,3,4,34, 12,13,12,5,12,2, 12,13,4,3,12,34, 12,13,4,6,3,18, 12,12,13,3,3,35, + 12,12,13,5,12,3, 12,12,3,3,13,35, 12,12,3,6,3,19, 12,11,13,5,12,4, 12,11,3,6,3,20, 12,10,13,5,12,5, 12,10,3,6,3,21, 12,9,13,5,12,6, + 12,9,3,6,3,22, 12,8,13,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,4,4,12,8, 12,7,4,6,3,24, + 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,5,6,3,25, 12,5,11,5,12,10, 12,5,5,6,3,26, 12,4,12,3,4,43, 12,4,12,5,12,11, 12,4,4,3,12,43, + 12,4,4,4,12,11, 12,4,4,6,3,27, 12,3,12,4,12,12, 12,3,12,5,12,12, 12,3,5,6,3,28, 12,2,11,1,5,45, 12,2,11,5,12,13, 12,2,10,1,6,45, + 12,2,9,1,7,45, 12,2,8,1,8,45, 12,2,7,1,9,45, 12,2,6,1,10,45, 12,2,5,1,11,45, 12,2,5,4,12,13, 12,2,5,6,3,29, 12,1,12,1,4,46, + 12,1,12,3,4,46, 12,1,12,4,12,14, 12,1,12,5,12,14, 12,1,11,1,5,46, 12,1,11,4,12,14, 12,1,10,1,6,46, 12,1,10,4,12,14, 12,1,9,1,7,46, + 12,1,9,4,12,14, 12,1,8,1,8,46, 12,1,8,4,12,14, 12,1,7,1,9,46, 12,1,7,4,12,14, 12,1,6,1,10,46, 12,1,6,4,12,14, 12,1,6,6,3,30, + 13,13,12,1,4,34, 13,13,12,3,4,34, 13,13,12,5,13,2, 13,13,11,1,5,34, 13,13,11,3,5,34, 13,13,10,1,6,34, 13,13,10,3,6,34, 13,13,9,1,7,34, + 13,13,9,3,7,34, 13,13,8,1,8,34, 13,13,8,3,8,34, 13,13,7,1,9,34, 13,13,7,3,9,34, 13,13,6,1,10,34, 13,13,6,3,10,34, 13,13,5,1,11,34, + 13,13,5,3,11,34, 13,13,4,1,12,34, 13,13,4,3,12,34, 13,13,4,6,2,18, 13,12,13,1,3,35, 13,12,13,3,3,35, 13,12,13,5,13,3, 13,12,12,1,4,35, + 13,12,11,1,5,35, 13,12,10,1,6,35, 13,12,9,1,7,35, 13,12,8,1,8,35, 13,12,7,1,9,35, 13,12,6,1,10,35, 13,12,5,1,11,35, 13,12,4,1,12,35, + 13,12,3,1,13,35, 13,12,3,3,13,35, 13,12,3,6,2,19, 13,11,13,5,13,4, 13,11,3,6,2,20, 13,10,13,5,13,5, 13,10,3,6,2,21, 13,9,13,5,13,6, + 13,9,3,6,2,22, 13,8,13,5,13,7, 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,13,1,3,40, 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,12,1,4,40, + 13,7,11,1,5,40, 13,7,10,1,6,40, 13,7,9,1,7,40, 13,7,8,1,8,40, 13,7,7,1,9,40, 13,7,6,1,10,40, 13,7,5,1,11,40, 13,7,4,1,12,40, + 13,7,4,4,13,8, 13,7,4,6,2,24, 13,6,12,1,4,41, 13,6,12,4,13,9, 13,6,12,5,13,9, 13,6,11,1,5,41, 13,6,10,1,6,41, 13,6,9,1,7,41, + 13,6,8,1,8,41, 13,6,7,1,9,41, 13,6,6,1,10,41, 13,6,5,1,11,41, 13,6,5,6,2,25, 13,5,11,5,13,10, 13,5,5,6,2,26, 13,4,12,3,4,43, + 13,4,12,5,13,11, 13,4,4,3,12,43, 13,4,4,4,13,11, 13,4,4,6,2,27, 13,3,12,1,4,44, 13,3,12,4,13,12, 13,3,12,5,13,12, 13,3,11,1,5,44, + 13,3,11,4,13,12, 13,3,10,1,6,44, 13,3,10,4,13,12, 13,3,9,1,7,44, 13,3,9,4,13,12, 13,3,8,1,8,44, 13,3,8,4,13,12, 13,3,7,1,9,44, + 13,3,7,4,13,12, 13,3,6,1,10,44, 13,3,6,4,13,12, 13,3,5,1,11,44, 13,3,5,4,13,12, 13,3,5,6,2,28, 14,11,13,1,3,36, 14,11,13,3,3,36, + 14,11,13,5,14,4, 14,11,12,1,4,36, 14,11,12,3,4,36, 14,11,11,1,5,36, 14,11,11,3,5,36, 14,11,10,1,6,36, 14,11,10,3,6,36, 14,11,9,1,7,36, + 14,11,9,3,7,36, 14,11,8,1,8,36, 14,11,8,3,8,36, 14,11,7,1,9,36, 14,11,7,3,9,36, 14,11,6,1,10,36, 14,11,6,3,10,36, 14,11,5,1,11,36, + 14,11,5,3,11,36, 14,11,4,1,12,36, 14,11,4,3,12,36, 14,11,3,1,13,36, 14,11,3,3,13,36, 14,11,3,6,1,20, 14,10,13,1,3,37, 14,10,13,5,14,5, + 14,10,12,1,4,37, 14,10,11,1,5,37, 14,10,10,1,6,37, 14,10,9,1,7,37, 14,10,8,1,8,37, 14,10,7,1,9,37, 14,10,6,1,10,37, 14,10,5,1,11,37, + 14,10,4,1,12,37, 14,10,3,1,13,37, 14,10,3,6,1,21, 14,9,13,1,3,38, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,11,1,5,38, 14,9,10,1,6,38, + 14,9,9,1,7,38, 14,9,8,1,8,38, 14,9,7,1,9,38, 14,9,6,1,10,38, 14,9,5,1,11,38, 14,9,4,1,12,38, 14,9,3,1,13,38, 14,9,3,6,1,22, + 14,8,13,1,3,39, 14,8,13,4,14,7, 14,8,13,5,14,7, 14,8,12,1,4,39, 14,8,12,4,14,7, 14,8,11,1,5,39, 14,8,11,4,14,7, 14,8,10,1,6,39, + 14,8,10,4,14,7, 14,8,9,1,7,39, 14,8,9,4,14,7, 14,8,8,1,8,39, 14,8,8,4,14,7, 14,8,7,1,9,39, 14,8,7,4,14,7, 14,8,6,1,10,39, + 14,8,6,4,14,7, 14,8,5,1,11,39, 14,8,5,4,14,7, 14,8,4,1,12,39, 14,8,4,4,14,7, 14,8,3,1,13,39, 14,8,3,4,14,7, 14,8,3,6,1,23, + 14,5,11,1,5,42, 14,5,11,3,5,42, 14,5,11,5,14,10, 14,5,10,1,6,42, 14,5,10,3,6,42, 14,5,9,1,7,42, 14,5,9,3,7,42, 14,5,8,1,8,42, + 14,5,8,3,8,42, 14,5,7,1,9,42, 14,5,7,3,9,42, 14,5,6,1,10,42, 14,5,6,3,10,42, 14,5,5,1,11,42, 14,5,5,3,11,42, 14,5,5,6,1,26, + 14,4,12,1,4,43, 14,4,12,3,4,43, 14,4,12,4,14,11, 14,4,12,5,14,11, 14,4,11,1,5,43, 14,4,11,4,14,11, 14,4,10,1,6,43, 14,4,10,4,14,11, + 14,4,9,1,7,43, 14,4,9,4,14,11, 14,4,8,1,8,43, 14,4,8,4,14,11, 14,4,7,1,9,43, 14,4,7,4,14,11, 14,4,6,1,10,43, 14,4,6,4,14,11, + 14,4,5,1,11,43, 14,4,5,4,14,11, 14,4,4,1,12,43, 14,4,4,3,12,43, 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + }, +} diff --git a/assets/voxels/biker.lua b/assets/voxels/biker.lua new file mode 100644 index 0000000..3b1a38e --- /dev/null +++ b/assets/voxels/biker.lua @@ -0,0 +1,330 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "biker" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "biker", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1790, + count = 1176, + faces = { + 1,9,12,2,4,38, 1,9,12,3,4,38, 1,9,12,5,1,6, 1,9,11,2,5,38, 1,9,11,3,5,38, 1,9,10,2,6,38, 1,9,10,3,6,38, 1,9,9,2,7,38, + 1,9,9,3,7,38, 1,9,8,2,8,38, 1,9,8,3,8,38, 1,9,7,2,9,38, 1,9,7,3,9,38, 1,9,6,2,10,38, 1,9,6,3,10,38, 1,9,5,2,11,38, + 1,9,5,3,11,38, 1,9,4,2,12,38, 1,9,4,3,12,38, 1,9,3,2,13,38, 1,9,3,3,13,38, 1,9,3,6,14,22, 1,8,12,2,4,39, 1,8,12,4,1,7, + 1,8,12,5,1,7, 1,8,11,2,5,39, 1,8,11,4,1,7, 1,8,10,2,6,39, 1,8,10,4,1,7, 1,8,9,2,7,39, 1,8,9,4,1,7, 1,8,8,2,8,39, + 1,8,8,4,1,7, 1,8,7,2,9,39, 1,8,7,4,1,7, 1,8,6,2,10,39, 1,8,6,4,1,7, 1,8,5,2,11,39, 1,8,5,4,1,7, 1,8,4,2,12,39, + 1,8,4,4,1,7, 1,8,3,2,13,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 2,12,13,2,3,35, 2,12,13,3,3,35, 2,12,13,5,2,3, 2,12,12,2,4,35, + 2,12,12,3,4,35, 2,12,11,2,5,35, 2,12,11,3,5,35, 2,12,10,2,6,35, 2,12,10,3,6,35, 2,12,9,2,7,35, 2,12,9,3,7,35, 2,12,8,2,8,35, + 2,12,8,3,8,35, 2,12,7,2,9,35, 2,12,7,3,9,35, 2,12,6,2,10,35, 2,12,6,3,10,35, 2,12,5,2,11,35, 2,12,5,3,11,35, 2,12,4,2,12,35, + 2,12,4,3,12,35, 2,12,3,2,13,35, 2,12,3,3,13,35, 2,12,3,6,13,19, 2,11,13,2,3,36, 2,11,13,5,2,4, 2,11,12,2,4,36, 2,11,11,2,5,36, + 2,11,10,2,6,36, 2,11,9,2,7,36, 2,11,8,2,8,36, 2,11,7,2,9,36, 2,11,6,2,10,36, 2,11,5,2,11,36, 2,11,4,2,12,36, 2,11,3,2,13,36, + 2,11,2,2,14,36, 2,11,2,3,14,36, 2,11,2,6,13,20, 2,10,13,2,3,37, 2,10,13,4,2,5, 2,10,13,5,2,5, 2,10,12,2,4,37, 2,10,11,2,5,37, + 2,10,10,2,6,37, 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, 2,10,6,2,10,37, 2,10,5,2,11,37, 2,10,4,2,12,37, 2,10,3,2,13,37, + 2,10,2,2,14,37, 2,10,2,4,2,5, 2,10,2,6,13,21, 2,9,12,5,2,6, 2,9,3,6,13,22, 2,8,12,5,2,7, 2,8,3,4,2,7, 2,8,3,6,13,23, + 2,7,12,2,4,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,5,40, 2,7,11,4,2,8, 2,7,10,2,6,40, 2,7,10,4,2,8, 2,7,9,2,7,40, + 2,7,9,4,2,8, 2,7,8,2,8,40, 2,7,8,4,2,8, 2,7,7,2,9,40, 2,7,7,4,2,8, 2,7,6,2,10,40, 2,7,6,4,2,8, 2,7,5,2,11,40, + 2,7,5,4,2,8, 2,7,4,2,12,40, 2,7,4,4,2,8, 2,7,4,6,13,24, 2,5,13,2,3,42, 2,5,13,3,3,42, 2,5,13,5,2,10, 2,5,12,2,4,42, + 2,5,12,3,4,42, 2,5,11,2,5,42, 2,5,11,3,5,42, 2,5,10,2,6,42, 2,5,10,3,6,42, 2,5,9,2,7,42, 2,5,9,3,7,42, 2,5,8,2,8,42, + 2,5,8,3,8,42, 2,5,7,2,9,42, 2,5,7,3,9,42, 2,5,6,2,10,42, 2,5,6,3,10,42, 2,5,5,2,11,42, 2,5,5,3,11,42, 2,5,4,2,12,42, + 2,5,4,3,12,42, 2,5,3,2,13,42, 2,5,3,3,13,42, 2,5,3,6,13,26, 2,4,14,2,2,43, 2,4,14,3,2,43, 2,4,14,4,2,11, 2,4,14,5,2,11, + 2,4,13,2,3,43, 2,4,13,4,2,11, 2,4,12,2,4,43, 2,4,12,4,2,11, 2,4,11,2,5,43, 2,4,11,4,2,11, 2,4,10,2,6,43, 2,4,10,4,2,11, + 2,4,9,2,7,43, 2,4,9,4,2,11, 2,4,8,2,8,43, 2,4,8,4,2,11, 2,4,7,2,9,43, 2,4,7,4,2,11, 2,4,6,2,10,43, 2,4,6,4,2,11, + 2,4,5,2,11,43, 2,4,5,4,2,11, 2,4,4,2,12,43, 2,4,4,4,2,11, 2,4,3,2,13,43, 2,4,3,4,2,11, 2,4,2,2,14,43, 2,4,2,3,14,43, + 2,4,2,4,2,11, 2,4,2,6,13,27, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,12,5,3,2, 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, + 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, + 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,3,2,13,34, 3,13,3,3,13,34, 3,13,3,6,12,18, + 3,12,13,3,3,35, 3,12,13,5,3,3, 3,12,3,6,12,19, 3,11,13,5,3,4, 3,11,2,3,14,36, 3,11,2,6,12,20, 3,10,13,4,3,5, 3,10,13,5,3,5, + 3,10,2,4,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,3,6,12,22, 3,8,12,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,12,5,3,8, + 3,7,4,4,3,8, 3,7,4,6,12,24, 3,6,13,2,3,41, 3,6,13,3,3,41, 3,6,13,5,3,9, 3,6,12,2,4,41, 3,6,11,2,5,41, 3,6,10,2,6,41, + 3,6,9,2,7,41, 3,6,8,2,8,41, 3,6,7,2,9,41, 3,6,6,2,10,41, 3,6,5,2,11,41, 3,6,5,6,12,25, 3,5,13,5,3,10, 3,5,4,3,12,42, + 3,5,3,3,13,42, 3,5,3,6,12,26, 3,4,14,3,2,43, 3,4,14,5,3,11, 3,4,2,3,14,43, 3,4,2,6,12,27, 3,3,15,2,1,44, 3,3,15,3,1,44, + 3,3,15,5,3,12, 3,3,14,2,2,44, 3,3,13,2,3,44, 3,3,12,2,4,44, 3,3,11,2,5,44, 3,3,10,2,6,44, 3,3,9,2,7,44, 3,3,8,2,8,44, + 3,3,7,2,9,44, 3,3,6,2,10,44, 3,3,5,2,11,44, 3,3,4,2,12,44, 3,3,3,2,13,44, 3,3,2,2,14,44, 3,3,1,2,15,44, 3,3,1,3,15,44, + 3,3,1,6,12,28, 3,2,15,2,1,45, 3,2,15,4,3,13, 3,2,15,5,3,13, 3,2,14,2,2,45, 3,2,14,4,3,13, 3,2,13,2,3,45, 3,2,13,4,3,13, + 3,2,12,2,4,45, 3,2,12,4,3,13, 3,2,11,2,5,45, 3,2,11,4,3,13, 3,2,10,2,6,45, 3,2,10,4,3,13, 3,2,9,2,7,45, 3,2,9,4,3,13, + 3,2,8,2,8,45, 3,2,8,4,3,13, 3,2,7,2,9,45, 3,2,7,4,3,13, 3,2,6,2,10,45, 3,2,6,4,3,13, 3,2,5,2,11,45, 3,2,5,4,3,13, + 3,2,4,2,12,45, 3,2,4,4,3,13, 3,2,3,2,13,45, 3,2,3,4,3,13, 3,2,2,2,14,45, 3,2,2,4,3,13, 3,2,1,2,15,45, 3,2,1,4,3,13, + 3,2,1,6,12,29, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,11,5,4,1, 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, + 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,5,2,11,33, 4,14,5,3,11,33, + 4,14,4,2,12,33, 4,14,4,3,12,33, 4,14,4,6,11,17, 4,13,12,3,4,34, 4,13,12,5,4,2, 4,13,3,3,13,34, 4,13,3,6,11,18, 4,12,13,3,3,35, + 4,12,13,5,4,3, 4,12,3,6,11,19, 4,11,13,5,4,4, 4,11,2,3,14,36, 4,11,2,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,2,4,4,5, + 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,3,6,11,22, 4,8,12,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,5,4,8, 4,7,4,4,4,8, + 4,7,4,6,11,24, 4,6,13,3,3,41, 4,6,13,5,4,9, 4,6,5,6,11,25, 4,5,13,5,4,10, 4,5,4,3,12,42, 4,5,3,3,13,42, 4,5,3,6,11,26, + 4,4,14,3,2,43, 4,4,14,5,4,11, 4,4,2,3,14,43, 4,4,2,6,11,27, 4,3,15,3,1,44, 4,3,15,5,4,12, 4,3,1,3,15,44, 4,3,1,6,11,28, + 4,2,15,4,4,13, 4,2,15,5,4,13, 4,2,1,4,4,13, 4,2,1,6,11,29, 4,1,14,2,2,46, 4,1,14,4,4,14, 4,1,14,5,4,14, 4,1,13,2,3,46, + 4,1,13,4,4,14, 4,1,12,2,4,46, 4,1,12,4,4,14, 4,1,11,2,5,46, 4,1,11,4,4,14, 4,1,10,2,6,46, 4,1,10,4,4,14, 4,1,9,2,7,46, + 4,1,9,4,4,14, 4,1,8,2,8,46, 4,1,8,4,4,14, 4,1,7,2,9,46, 4,1,7,4,4,14, 4,1,6,2,10,46, 4,1,6,4,4,14, 4,1,5,2,11,46, + 4,1,5,4,4,14, 4,1,4,2,12,46, 4,1,4,4,4,14, 4,1,3,2,13,46, 4,1,3,4,4,14, 4,1,2,2,14,46, 4,1,2,4,4,14, 4,1,2,6,11,30, + 5,14,11,3,5,33, 5,14,11,5,5,1, 5,14,10,3,6,33, 5,14,9,3,7,33, 5,14,8,3,8,33, 5,14,7,3,9,33, 5,14,6,3,10,33, 5,14,5,3,11,33, + 5,14,4,3,12,33, 5,14,4,6,10,17, 5,13,12,3,4,34, 5,13,12,5,5,2, 5,13,3,3,13,34, 5,13,3,6,10,18, 5,12,13,3,3,35, 5,12,13,5,5,3, + 5,12,3,6,10,19, 5,11,13,5,5,4, 5,11,2,3,14,36, 5,11,2,6,10,20, 5,10,13,4,5,5, 5,10,13,5,5,5, 5,10,2,4,5,5, 5,10,2,6,10,21, + 5,9,12,5,5,6, 5,9,3,6,10,22, 5,8,12,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,12,5,5,8, 5,7,4,4,5,8, 5,7,4,6,10,24, + 5,6,13,3,3,41, 5,6,13,5,5,9, 5,6,5,6,10,25, 5,5,13,5,5,10, 5,5,4,3,12,42, 5,5,3,3,13,42, 5,5,3,6,10,26, 5,4,14,3,2,43, + 5,4,14,5,5,11, 5,4,2,3,14,43, 5,4,2,6,10,27, 5,3,15,3,1,44, 5,3,15,5,5,12, 5,3,1,3,15,44, 5,3,1,6,10,28, 5,2,15,4,5,13, + 5,2,15,5,5,13, 5,2,1,4,5,13, 5,2,1,6,10,29, 5,1,14,4,5,14, 5,1,14,5,5,14, 5,1,13,4,5,14, 5,1,12,4,5,14, 5,1,11,4,5,14, + 5,1,10,4,5,14, 5,1,9,4,5,14, 5,1,8,4,5,14, 5,1,7,4,5,14, 5,1,6,4,5,14, 5,1,5,4,5,14, 5,1,4,4,5,14, 5,1,3,4,5,14, + 5,1,2,4,5,14, 5,1,2,6,10,30, 6,15,10,2,6,32, 6,15,10,3,6,32, 6,15,10,5,6,0, 6,15,9,2,7,32, 6,15,9,3,7,32, 6,15,8,2,8,32, + 6,15,8,3,8,32, 6,15,7,2,9,32, 6,15,7,3,9,32, 6,15,6,2,10,32, 6,15,6,3,10,32, 6,15,5,2,11,32, 6,15,5,3,11,32, 6,15,5,6,9,16, + 6,14,11,3,5,33, 6,14,11,5,6,1, 6,14,4,3,12,33, 6,14,4,6,9,17, 6,13,12,3,4,34, 6,13,12,5,6,2, 6,13,3,3,13,34, 6,13,3,6,9,18, + 6,12,13,3,3,35, 6,12,13,5,6,3, 6,12,3,6,9,19, 6,11,13,5,6,4, 6,11,2,3,14,36, 6,11,2,6,9,20, 6,10,13,4,6,5, 6,10,13,5,6,5, + 6,10,2,4,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,3,6,9,22, 6,8,12,5,6,7, 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,5,6,8, + 6,7,4,4,6,8, 6,7,4,6,9,24, 6,6,13,3,3,41, 6,6,13,5,6,9, 6,6,5,6,9,25, 6,5,13,5,6,10, 6,5,4,3,12,42, 6,5,3,3,13,42, + 6,5,3,6,9,26, 6,4,14,3,2,43, 6,4,14,5,6,11, 6,4,2,3,14,43, 6,4,2,6,9,27, 6,3,15,3,1,44, 6,3,15,5,6,12, 6,3,1,3,15,44, + 6,3,1,6,9,28, 6,2,15,4,6,13, 6,2,15,5,6,13, 6,2,1,4,6,13, 6,2,1,6,9,29, 6,1,14,4,6,14, 6,1,14,5,6,14, 6,1,13,4,6,14, + 6,1,12,4,6,14, 6,1,11,4,6,14, 6,1,10,4,6,14, 6,1,9,4,6,14, 6,1,8,4,6,14, 6,1,7,4,6,14, 6,1,6,4,6,14, 6,1,5,4,6,14, + 6,1,4,4,6,14, 6,1,3,4,6,14, 6,1,2,4,6,14, 6,1,2,6,9,30, 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, + 7,15,7,3,9,32, 7,15,6,3,10,32, 7,15,5,3,11,32, 7,15,5,6,8,16, 7,14,11,3,5,33, 7,14,11,5,7,1, 7,14,4,3,12,33, 7,14,4,6,8,17, + 7,13,12,3,4,34, 7,13,12,5,7,2, 7,13,3,3,13,34, 7,13,3,6,8,18, 7,12,13,3,3,35, 7,12,13,5,7,3, 7,12,3,6,8,19, 7,11,13,5,7,4, + 7,11,2,3,14,36, 7,11,2,6,8,20, 7,10,13,4,7,5, 7,10,13,5,7,5, 7,10,2,4,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,3,6,8,22, + 7,8,12,5,7,7, 7,8,3,4,7,7, 7,8,3,6,8,23, 7,7,12,5,7,8, 7,7,4,4,7,8, 7,7,4,6,8,24, 7,6,13,3,3,41, 7,6,13,5,7,9, + 7,6,5,6,8,25, 7,5,13,5,7,10, 7,5,4,3,12,42, 7,5,3,3,13,42, 7,5,3,6,8,26, 7,4,14,3,2,43, 7,4,14,5,7,11, 7,4,2,3,14,43, + 7,4,2,6,8,27, 7,3,15,3,1,44, 7,3,15,5,7,12, 7,3,1,3,15,44, 7,3,1,6,8,28, 7,2,15,4,7,13, 7,2,15,5,7,13, 7,2,1,4,7,13, + 7,2,1,6,8,29, 7,1,14,4,7,14, 7,1,14,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, + 7,1,2,4,7,14, 7,1,2,6,8,30, 7,0,13,2,3,47, 7,0,13,5,7,15, 7,0,12,2,4,47, 7,0,11,2,5,47, 7,0,11,6,8,31, 7,0,5,2,11,47, + 7,0,5,5,7,15, 7,0,4,2,12,47, 7,0,3,2,13,47, 7,0,3,6,8,31, 8,15,10,3,6,32, 8,15,10,5,8,0, 8,15,9,3,7,32, 8,15,8,3,8,32, + 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,5,3,11,32, 8,15,5,6,7,16, 8,14,11,3,5,33, 8,14,11,5,8,1, 8,14,4,3,12,33, 8,14,4,6,7,17, + 8,13,12,3,4,34, 8,13,12,5,8,2, 8,13,3,3,13,34, 8,13,3,6,7,18, 8,12,13,3,3,35, 8,12,13,5,8,3, 8,12,3,6,7,19, 8,11,13,5,8,4, + 8,11,2,3,14,36, 8,11,2,6,7,20, 8,10,13,4,8,5, 8,10,13,5,8,5, 8,10,2,4,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,3,6,7,22, + 8,8,12,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, 8,7,12,5,8,8, 8,7,4,4,8,8, 8,7,4,6,7,24, 8,6,13,3,3,41, 8,6,13,5,8,9, + 8,6,5,6,7,25, 8,5,13,5,8,10, 8,5,4,3,12,42, 8,5,3,3,13,42, 8,5,3,6,7,26, 8,4,14,3,2,43, 8,4,14,5,8,11, 8,4,2,3,14,43, + 8,4,2,6,7,27, 8,3,15,3,1,44, 8,3,15,5,8,12, 8,3,1,3,15,44, 8,3,1,6,7,28, 8,2,15,4,8,13, 8,2,15,5,8,13, 8,2,1,4,8,13, + 8,2,1,6,7,29, 8,1,14,4,8,14, 8,1,14,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, + 8,1,2,4,8,14, 8,1,2,6,7,30, 8,0,13,1,3,47, 8,0,13,5,8,15, 8,0,12,1,4,47, 8,0,11,1,5,47, 8,0,11,6,7,31, 8,0,5,1,11,47, + 8,0,5,5,8,15, 8,0,4,1,12,47, 8,0,3,1,13,47, 8,0,3,6,7,31, 9,15,10,1,6,32, 9,15,10,3,6,32, 9,15,10,5,9,0, 9,15,9,1,7,32, + 9,15,9,3,7,32, 9,15,8,1,8,32, 9,15,8,3,8,32, 9,15,7,1,9,32, 9,15,7,3,9,32, 9,15,6,1,10,32, 9,15,6,3,10,32, 9,15,5,1,11,32, + 9,15,5,3,11,32, 9,15,5,6,6,16, 9,14,11,3,5,33, 9,14,11,5,9,1, 9,14,4,3,12,33, 9,14,4,6,6,17, 9,13,12,3,4,34, 9,13,12,5,9,2, + 9,13,3,3,13,34, 9,13,3,6,6,18, 9,12,13,3,3,35, 9,12,13,5,9,3, 9,12,3,6,6,19, 9,11,13,5,9,4, 9,11,2,3,14,36, 9,11,2,6,6,20, + 9,10,13,4,9,5, 9,10,13,5,9,5, 9,10,2,4,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,3,6,6,22, 9,8,12,5,9,7, 9,8,3,4,9,7, + 9,8,3,6,6,23, 9,7,12,5,9,8, 9,7,4,4,9,8, 9,7,4,6,6,24, 9,6,13,3,3,41, 9,6,13,5,9,9, 9,6,5,6,6,25, 9,5,13,5,9,10, + 9,5,4,3,12,42, 9,5,3,3,13,42, 9,5,3,6,6,26, 9,4,14,3,2,43, 9,4,14,5,9,11, 9,4,2,3,14,43, 9,4,2,6,6,27, 9,3,15,3,1,44, + 9,3,15,5,9,12, 9,3,1,3,15,44, 9,3,1,6,6,28, 9,2,15,4,9,13, 9,2,15,5,9,13, 9,2,1,4,9,13, 9,2,1,6,6,29, 9,1,14,4,9,14, + 9,1,14,5,9,14, 9,1,13,4,9,14, 9,1,12,4,9,14, 9,1,11,4,9,14, 9,1,10,4,9,14, 9,1,9,4,9,14, 9,1,8,4,9,14, 9,1,7,4,9,14, + 9,1,6,4,9,14, 9,1,5,4,9,14, 9,1,4,4,9,14, 9,1,3,4,9,14, 9,1,2,4,9,14, 9,1,2,6,6,30, 10,14,11,3,5,33, 10,14,11,5,10,1, + 10,14,10,3,6,33, 10,14,9,3,7,33, 10,14,8,3,8,33, 10,14,7,3,9,33, 10,14,6,3,10,33, 10,14,5,3,11,33, 10,14,4,3,12,33, 10,14,4,6,5,17, + 10,13,12,3,4,34, 10,13,12,5,10,2, 10,13,3,3,13,34, 10,13,3,6,5,18, 10,12,13,3,3,35, 10,12,13,5,10,3, 10,12,3,6,5,19, 10,11,13,5,10,4, + 10,11,2,3,14,36, 10,11,2,6,5,20, 10,10,13,4,10,5, 10,10,13,5,10,5, 10,10,2,4,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,3,6,5,22, + 10,8,12,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,12,5,10,8, 10,7,4,4,10,8, 10,7,4,6,5,24, 10,6,13,3,3,41, 10,6,13,5,10,9, + 10,6,5,6,5,25, 10,5,13,5,10,10, 10,5,4,3,12,42, 10,5,3,3,13,42, 10,5,3,6,5,26, 10,4,14,3,2,43, 10,4,14,5,10,11, 10,4,2,3,14,43, + 10,4,2,6,5,27, 10,3,15,3,1,44, 10,3,15,5,10,12, 10,3,1,3,15,44, 10,3,1,6,5,28, 10,2,15,4,10,13, 10,2,15,5,10,13, 10,2,1,4,10,13, + 10,2,1,6,5,29, 10,1,14,4,10,14, 10,1,14,5,10,14, 10,1,13,4,10,14, 10,1,12,4,10,14, 10,1,11,4,10,14, 10,1,10,4,10,14, 10,1,9,4,10,14, + 10,1,8,4,10,14, 10,1,7,4,10,14, 10,1,6,4,10,14, 10,1,5,4,10,14, 10,1,4,4,10,14, 10,1,3,4,10,14, 10,1,2,4,10,14, 10,1,2,6,5,30, + 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,11,5,11,1, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, + 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,4,1,12,33, + 11,14,4,3,12,33, 11,14,4,6,4,17, 11,13,12,3,4,34, 11,13,12,5,11,2, 11,13,3,3,13,34, 11,13,3,6,4,18, 11,12,13,3,3,35, 11,12,13,5,11,3, + 11,12,3,6,4,19, 11,11,13,5,11,4, 11,11,2,3,14,36, 11,11,2,6,4,20, 11,10,13,4,11,5, 11,10,13,5,11,5, 11,10,2,4,11,5, 11,10,2,6,4,21, + 11,9,12,5,11,6, 11,9,3,6,4,22, 11,8,12,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,12,5,11,8, 11,7,4,4,11,8, 11,7,4,6,4,24, + 11,6,13,3,3,41, 11,6,13,5,11,9, 11,6,5,6,4,25, 11,5,13,5,11,10, 11,5,4,3,12,42, 11,5,3,3,13,42, 11,5,3,6,4,26, 11,4,14,3,2,43, + 11,4,14,5,11,11, 11,4,2,3,14,43, 11,4,2,6,4,27, 11,3,15,3,1,44, 11,3,15,5,11,12, 11,3,1,3,15,44, 11,3,1,6,4,28, 11,2,15,4,11,13, + 11,2,15,5,11,13, 11,2,1,4,11,13, 11,2,1,6,4,29, 11,1,14,1,2,46, 11,1,14,4,11,14, 11,1,14,5,11,14, 11,1,13,1,3,46, 11,1,13,4,11,14, + 11,1,12,1,4,46, 11,1,12,4,11,14, 11,1,11,1,5,46, 11,1,11,4,11,14, 11,1,10,1,6,46, 11,1,10,4,11,14, 11,1,9,1,7,46, 11,1,9,4,11,14, + 11,1,8,1,8,46, 11,1,8,4,11,14, 11,1,7,1,9,46, 11,1,7,4,11,14, 11,1,6,1,10,46, 11,1,6,4,11,14, 11,1,5,1,11,46, 11,1,5,4,11,14, + 11,1,4,1,12,46, 11,1,4,4,11,14, 11,1,3,1,13,46, 11,1,3,4,11,14, 11,1,2,1,14,46, 11,1,2,4,11,14, 11,1,2,6,4,30, 12,13,12,1,4,34, + 12,13,12,3,4,34, 12,13,12,5,12,2, 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, + 12,13,8,1,8,34, 12,13,8,3,8,34, 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, + 12,13,4,1,12,34, 12,13,4,3,12,34, 12,13,3,1,13,34, 12,13,3,3,13,34, 12,13,3,6,3,18, 12,12,13,3,3,35, 12,12,13,5,12,3, 12,12,3,6,3,19, + 12,11,13,5,12,4, 12,11,2,3,14,36, 12,11,2,6,3,20, 12,10,13,4,12,5, 12,10,13,5,12,5, 12,10,2,4,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, + 12,9,3,6,3,22, 12,8,12,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,12,5,12,8, 12,7,4,4,12,8, 12,7,4,6,3,24, 12,6,13,1,3,41, + 12,6,13,3,3,41, 12,6,13,5,12,9, 12,6,12,1,4,41, 12,6,11,1,5,41, 12,6,10,1,6,41, 12,6,9,1,7,41, 12,6,8,1,8,41, 12,6,7,1,9,41, + 12,6,6,1,10,41, 12,6,5,1,11,41, 12,6,5,6,3,25, 12,5,13,5,12,10, 12,5,4,3,12,42, 12,5,3,3,13,42, 12,5,3,6,3,26, 12,4,14,3,2,43, + 12,4,14,5,12,11, 12,4,2,3,14,43, 12,4,2,6,3,27, 12,3,15,1,1,44, 12,3,15,3,1,44, 12,3,15,5,12,12, 12,3,14,1,2,44, 12,3,13,1,3,44, + 12,3,12,1,4,44, 12,3,11,1,5,44, 12,3,10,1,6,44, 12,3,9,1,7,44, 12,3,8,1,8,44, 12,3,7,1,9,44, 12,3,6,1,10,44, 12,3,5,1,11,44, + 12,3,4,1,12,44, 12,3,3,1,13,44, 12,3,2,1,14,44, 12,3,1,1,15,44, 12,3,1,3,15,44, 12,3,1,6,3,28, 12,2,15,1,1,45, 12,2,15,4,12,13, + 12,2,15,5,12,13, 12,2,14,1,2,45, 12,2,14,4,12,13, 12,2,13,1,3,45, 12,2,13,4,12,13, 12,2,12,1,4,45, 12,2,12,4,12,13, 12,2,11,1,5,45, + 12,2,11,4,12,13, 12,2,10,1,6,45, 12,2,10,4,12,13, 12,2,9,1,7,45, 12,2,9,4,12,13, 12,2,8,1,8,45, 12,2,8,4,12,13, 12,2,7,1,9,45, + 12,2,7,4,12,13, 12,2,6,1,10,45, 12,2,6,4,12,13, 12,2,5,1,11,45, 12,2,5,4,12,13, 12,2,4,1,12,45, 12,2,4,4,12,13, 12,2,3,1,13,45, + 12,2,3,4,12,13, 12,2,2,1,14,45, 12,2,2,4,12,13, 12,2,1,1,15,45, 12,2,1,4,12,13, 12,2,1,6,3,29, 13,12,13,1,3,35, 13,12,13,3,3,35, + 13,12,13,5,13,3, 13,12,12,1,4,35, 13,12,12,3,4,35, 13,12,11,1,5,35, 13,12,11,3,5,35, 13,12,10,1,6,35, 13,12,10,3,6,35, 13,12,9,1,7,35, + 13,12,9,3,7,35, 13,12,8,1,8,35, 13,12,8,3,8,35, 13,12,7,1,9,35, 13,12,7,3,9,35, 13,12,6,1,10,35, 13,12,6,3,10,35, 13,12,5,1,11,35, + 13,12,5,3,11,35, 13,12,4,1,12,35, 13,12,4,3,12,35, 13,12,3,1,13,35, 13,12,3,3,13,35, 13,12,3,6,2,19, 13,11,13,1,3,36, 13,11,13,5,13,4, + 13,11,12,1,4,36, 13,11,11,1,5,36, 13,11,10,1,6,36, 13,11,9,1,7,36, 13,11,8,1,8,36, 13,11,7,1,9,36, 13,11,6,1,10,36, 13,11,5,1,11,36, + 13,11,4,1,12,36, 13,11,3,1,13,36, 13,11,2,1,14,36, 13,11,2,3,14,36, 13,11,2,6,2,20, 13,10,13,1,3,37, 13,10,13,4,13,5, 13,10,13,5,13,5, + 13,10,12,1,4,37, 13,10,11,1,5,37, 13,10,10,1,6,37, 13,10,9,1,7,37, 13,10,8,1,8,37, 13,10,7,1,9,37, 13,10,6,1,10,37, 13,10,5,1,11,37, + 13,10,4,1,12,37, 13,10,3,1,13,37, 13,10,2,1,14,37, 13,10,2,4,13,5, 13,10,2,6,2,21, 13,9,12,5,13,6, 13,9,3,6,2,22, 13,8,12,5,13,7, + 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,1,4,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,5,40, 13,7,11,4,13,8, 13,7,10,1,6,40, + 13,7,10,4,13,8, 13,7,9,1,7,40, 13,7,9,4,13,8, 13,7,8,1,8,40, 13,7,8,4,13,8, 13,7,7,1,9,40, 13,7,7,4,13,8, 13,7,6,1,10,40, + 13,7,6,4,13,8, 13,7,5,1,11,40, 13,7,5,4,13,8, 13,7,4,1,12,40, 13,7,4,4,13,8, 13,7,4,6,2,24, 13,5,13,1,3,42, 13,5,13,3,3,42, + 13,5,13,5,13,10, 13,5,12,1,4,42, 13,5,12,3,4,42, 13,5,11,1,5,42, 13,5,11,3,5,42, 13,5,10,1,6,42, 13,5,10,3,6,42, 13,5,9,1,7,42, + 13,5,9,3,7,42, 13,5,8,1,8,42, 13,5,8,3,8,42, 13,5,7,1,9,42, 13,5,7,3,9,42, 13,5,6,1,10,42, 13,5,6,3,10,42, 13,5,5,1,11,42, + 13,5,5,3,11,42, 13,5,4,1,12,42, 13,5,4,3,12,42, 13,5,3,1,13,42, 13,5,3,3,13,42, 13,5,3,6,2,26, 13,4,14,1,2,43, 13,4,14,3,2,43, + 13,4,14,4,13,11, 13,4,14,5,13,11, 13,4,13,1,3,43, 13,4,13,4,13,11, 13,4,12,1,4,43, 13,4,12,4,13,11, 13,4,11,1,5,43, 13,4,11,4,13,11, + 13,4,10,1,6,43, 13,4,10,4,13,11, 13,4,9,1,7,43, 13,4,9,4,13,11, 13,4,8,1,8,43, 13,4,8,4,13,11, 13,4,7,1,9,43, 13,4,7,4,13,11, + 13,4,6,1,10,43, 13,4,6,4,13,11, 13,4,5,1,11,43, 13,4,5,4,13,11, 13,4,4,1,12,43, 13,4,4,4,13,11, 13,4,3,1,13,43, 13,4,3,4,13,11, + 13,4,2,1,14,43, 13,4,2,3,14,43, 13,4,2,4,13,11, 13,4,2,6,2,27, 14,9,12,1,4,38, 14,9,12,3,4,38, 14,9,12,5,14,6, 14,9,11,1,5,38, + 14,9,11,3,5,38, 14,9,10,1,6,38, 14,9,10,3,6,38, 14,9,9,1,7,38, 14,9,9,3,7,38, 14,9,8,1,8,38, 14,9,8,3,8,38, 14,9,7,1,9,38, + 14,9,7,3,9,38, 14,9,6,1,10,38, 14,9,6,3,10,38, 14,9,5,1,11,38, 14,9,5,3,11,38, 14,9,4,1,12,38, 14,9,4,3,12,38, 14,9,3,1,13,38, + 14,9,3,3,13,38, 14,9,3,6,1,22, 14,8,12,1,4,39, 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,5,39, 14,8,11,4,14,7, 14,8,10,1,6,39, + 14,8,10,4,14,7, 14,8,9,1,7,39, 14,8,9,4,14,7, 14,8,8,1,8,39, 14,8,8,4,14,7, 14,8,7,1,9,39, 14,8,7,4,14,7, 14,8,6,1,10,39, + 14,8,6,4,14,7, 14,8,5,1,11,39, 14,8,5,4,14,7, 14,8,4,1,12,39, 14,8,4,4,14,7, 14,8,3,1,13,39, 14,8,3,4,14,7, 14,8,3,6,1,23, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1852, + count = 1208, + faces = { + 1,9,12,2,3,86, 1,9,12,3,3,86, 1,9,12,5,0,54, 1,9,11,2,4,86, 1,9,11,3,4,86, 1,9,10,2,5,86, 1,9,10,3,5,86, 1,9,9,2,6,86, + 1,9,9,3,6,86, 1,9,8,2,7,86, 1,9,8,3,7,86, 1,9,7,2,8,86, 1,9,7,3,8,86, 1,9,6,2,9,86, 1,9,6,3,9,86, 1,9,5,2,10,86, + 1,9,5,3,10,86, 1,9,4,2,11,86, 1,9,4,3,11,86, 1,9,3,2,12,86, 1,9,3,3,12,86, 1,9,3,6,13,70, 1,8,12,2,3,87, 1,8,12,4,0,55, + 1,8,12,5,0,55, 1,8,11,2,4,87, 1,8,11,4,0,55, 1,8,10,2,5,87, 1,8,10,4,0,55, 1,8,9,2,6,87, 1,8,9,4,0,55, 1,8,8,2,7,87, + 1,8,8,4,0,55, 1,8,7,2,8,87, 1,8,7,4,0,55, 1,8,6,2,9,87, 1,8,6,4,0,55, 1,8,5,2,10,87, 1,8,5,4,0,55, 1,8,4,2,11,87, + 1,8,4,4,0,55, 1,8,3,2,12,87, 1,8,3,4,0,55, 1,8,3,6,13,71, 2,12,13,2,2,83, 2,12,13,3,2,83, 2,12,13,5,1,51, 2,12,12,2,3,83, + 2,12,12,3,3,83, 2,12,11,2,4,83, 2,12,11,3,4,83, 2,12,10,2,5,83, 2,12,10,3,5,83, 2,12,9,2,6,83, 2,12,9,3,6,83, 2,12,8,2,7,83, + 2,12,8,3,7,83, 2,12,7,2,8,83, 2,12,7,3,8,83, 2,12,6,2,9,83, 2,12,6,3,9,83, 2,12,5,2,10,83, 2,12,5,3,10,83, 2,12,4,2,11,83, + 2,12,4,3,11,83, 2,12,3,2,12,83, 2,12,3,3,12,83, 2,12,3,6,12,67, 2,11,13,2,2,84, 2,11,13,5,1,52, 2,11,12,2,3,84, 2,11,11,2,4,84, + 2,11,10,2,5,84, 2,11,9,2,6,84, 2,11,8,2,7,84, 2,11,7,2,8,84, 2,11,6,2,9,84, 2,11,5,2,10,84, 2,11,4,2,11,84, 2,11,3,2,12,84, + 2,11,2,2,13,84, 2,11,2,3,13,84, 2,11,2,6,12,68, 2,10,13,2,2,85, 2,10,13,4,1,53, 2,10,13,5,1,53, 2,10,12,2,3,85, 2,10,11,2,4,85, + 2,10,10,2,5,85, 2,10,9,2,6,85, 2,10,8,2,7,85, 2,10,7,2,8,85, 2,10,6,2,9,85, 2,10,5,2,10,85, 2,10,4,2,11,85, 2,10,3,2,12,85, + 2,10,2,2,13,85, 2,10,2,4,1,53, 2,10,2,6,12,69, 2,9,12,5,1,54, 2,9,3,6,12,70, 2,8,12,5,1,55, 2,8,3,4,1,55, 2,8,3,6,12,71, + 2,7,12,2,3,88, 2,7,12,4,1,56, 2,7,12,5,1,56, 2,7,11,2,4,88, 2,7,11,4,1,56, 2,7,10,2,5,88, 2,7,10,4,1,56, 2,7,9,2,6,88, + 2,7,9,4,1,56, 2,7,8,2,7,88, 2,7,8,4,1,56, 2,7,7,2,8,88, 2,7,7,4,1,56, 2,7,6,2,9,88, 2,7,6,4,1,56, 2,7,5,2,10,88, + 2,7,5,4,1,56, 2,7,4,2,11,88, 2,7,4,4,1,56, 2,7,4,6,12,72, 2,5,13,2,2,90, 2,5,13,3,2,90, 2,5,13,5,1,58, 2,5,12,2,3,90, + 2,5,12,3,3,90, 2,5,11,2,4,90, 2,5,11,3,4,90, 2,5,10,2,5,90, 2,5,10,3,5,90, 2,5,9,2,6,90, 2,5,9,3,6,90, 2,5,8,2,7,90, + 2,5,8,3,7,90, 2,5,7,2,8,90, 2,5,7,3,8,90, 2,5,6,2,9,90, 2,5,6,3,9,90, 2,5,5,2,10,90, 2,5,5,3,10,90, 2,5,4,2,11,90, + 2,5,4,3,11,90, 2,5,3,2,12,90, 2,5,3,3,12,90, 2,5,3,6,12,74, 2,4,14,2,1,91, 2,4,14,3,1,91, 2,4,14,4,1,59, 2,4,14,5,1,59, + 2,4,13,2,2,91, 2,4,13,4,1,59, 2,4,12,2,3,91, 2,4,12,4,1,59, 2,4,11,2,4,91, 2,4,11,4,1,59, 2,4,10,2,5,91, 2,4,10,4,1,59, + 2,4,9,2,6,91, 2,4,9,4,1,59, 2,4,8,2,7,91, 2,4,8,4,1,59, 2,4,7,2,8,91, 2,4,7,4,1,59, 2,4,6,2,9,91, 2,4,6,4,1,59, + 2,4,5,2,10,91, 2,4,5,4,1,59, 2,4,4,2,11,91, 2,4,4,4,1,59, 2,4,3,2,12,91, 2,4,3,4,1,59, 2,4,2,2,13,91, 2,4,2,3,13,91, + 2,4,2,4,1,59, 2,4,2,6,12,75, 3,13,12,2,3,82, 3,13,12,3,3,82, 3,13,12,5,2,50, 3,13,11,2,4,82, 3,13,11,3,4,82, 3,13,10,2,5,82, + 3,13,10,3,5,82, 3,13,9,2,6,82, 3,13,9,3,6,82, 3,13,8,2,7,82, 3,13,8,3,7,82, 3,13,7,2,8,82, 3,13,7,3,8,82, 3,13,6,2,9,82, + 3,13,6,3,9,82, 3,13,5,2,10,82, 3,13,5,3,10,82, 3,13,4,2,11,82, 3,13,4,3,11,82, 3,13,3,2,12,82, 3,13,3,3,12,82, 3,13,3,6,11,66, + 3,12,13,3,2,83, 3,12,13,5,2,51, 3,12,3,6,11,67, 3,11,13,5,2,52, 3,11,2,3,13,84, 3,11,2,6,11,68, 3,10,13,4,2,53, 3,10,13,5,2,53, + 3,10,2,4,2,53, 3,10,2,6,11,69, 3,9,12,5,2,54, 3,9,3,6,11,70, 3,8,12,5,2,55, 3,8,3,4,2,55, 3,8,3,6,11,71, 3,7,12,5,2,56, + 3,7,4,4,2,56, 3,7,4,6,11,72, 3,6,13,2,2,89, 3,6,13,3,2,89, 3,6,13,5,2,57, 3,6,12,2,3,89, 3,6,11,2,4,89, 3,6,10,2,5,89, + 3,6,9,2,6,89, 3,6,8,2,7,89, 3,6,7,2,8,89, 3,6,6,2,9,89, 3,6,5,2,10,89, 3,6,5,6,11,73, 3,5,13,5,2,58, 3,5,4,3,11,90, + 3,5,3,3,12,90, 3,5,3,6,11,74, 3,4,14,3,1,91, 3,4,14,5,2,59, 3,4,2,3,13,91, 3,4,2,6,11,75, 3,3,15,2,0,92, 3,3,15,3,0,92, + 3,3,15,5,2,60, 3,3,14,2,1,92, 3,3,13,2,2,92, 3,3,12,2,3,92, 3,3,11,2,4,92, 3,3,10,2,5,92, 3,3,9,2,6,92, 3,3,8,2,7,92, + 3,3,7,2,8,92, 3,3,6,2,9,92, 3,3,5,2,10,92, 3,3,4,2,11,92, 3,3,3,2,12,92, 3,3,2,2,13,92, 3,3,1,2,14,92, 3,3,1,3,14,92, + 3,3,1,6,11,76, 3,2,15,2,0,93, 3,2,15,4,11,77, 3,2,15,5,11,77, 3,2,14,2,1,93, 3,2,13,2,2,93, 3,2,12,2,3,93, 3,2,11,2,4,93, + 3,2,10,2,5,93, 3,2,9,2,6,93, 3,2,8,2,7,93, 3,2,7,2,8,93, 3,2,6,2,9,93, 3,2,5,2,10,93, 3,2,4,2,11,93, 3,2,3,2,12,93, + 3,2,2,2,13,93, 3,2,1,2,14,93, 3,2,1,4,11,77, 3,2,1,6,11,77, 3,1,14,2,1,94, 3,1,14,4,11,78, 3,1,14,5,11,78, 3,1,13,2,2,94, + 3,1,13,4,11,78, 3,1,12,2,3,94, 3,1,12,4,11,78, 3,1,11,2,4,94, 3,1,11,4,11,78, 3,1,10,2,5,94, 3,1,10,4,11,78, 3,1,9,2,6,94, + 3,1,9,4,11,78, 3,1,8,2,7,94, 3,1,8,4,11,78, 3,1,7,2,8,94, 3,1,7,4,11,78, 3,1,6,2,9,94, 3,1,6,4,11,78, 3,1,5,2,10,94, + 3,1,5,4,11,78, 3,1,4,2,11,94, 3,1,4,4,11,78, 3,1,3,2,12,94, 3,1,3,4,11,78, 3,1,2,2,13,94, 3,1,2,4,11,78, 3,1,2,6,11,78, + 4,14,11,2,4,81, 4,14,11,3,4,81, 4,14,11,5,3,49, 4,14,10,2,5,81, 4,14,10,3,5,81, 4,14,9,2,6,81, 4,14,9,3,6,81, 4,14,8,2,7,81, + 4,14,8,3,7,81, 4,14,7,2,8,81, 4,14,7,3,8,81, 4,14,6,2,9,81, 4,14,6,3,9,81, 4,14,5,2,10,81, 4,14,5,3,10,81, 4,14,4,2,11,81, + 4,14,4,3,11,81, 4,14,4,6,10,65, 4,13,12,3,3,82, 4,13,12,5,3,50, 4,13,3,3,12,82, 4,13,3,6,10,66, 4,12,13,3,2,83, 4,12,13,5,3,51, + 4,12,3,6,10,67, 4,11,13,5,3,52, 4,11,2,3,13,84, 4,11,2,6,10,68, 4,10,13,4,3,53, 4,10,13,5,3,53, 4,10,2,4,3,53, 4,10,2,6,10,69, + 4,9,12,5,3,54, 4,9,3,6,10,70, 4,8,12,5,3,55, 4,8,3,4,3,55, 4,8,3,6,10,71, 4,7,12,5,3,56, 4,7,4,4,3,56, 4,7,4,6,10,72, + 4,6,13,3,2,89, 4,6,13,5,3,57, 4,6,5,6,10,73, 4,5,13,5,3,58, 4,5,4,3,11,90, 4,5,3,3,12,90, 4,5,3,6,10,74, 4,4,14,3,1,91, + 4,4,14,5,3,59, 4,4,2,3,13,91, 4,4,2,6,10,75, 4,3,15,3,0,92, 4,3,15,5,3,60, 4,3,1,3,14,92, 4,3,1,6,10,76, 4,2,15,4,3,61, + 4,2,15,5,3,61, 4,2,1,4,3,61, 4,2,1,6,10,77, 4,1,14,4,10,78, 4,1,14,5,10,78, 4,1,10,4,10,78, 4,1,9,4,10,78, 4,1,6,4,10,78, + 4,1,2,4,10,78, 4,1,2,6,10,78, 4,0,13,2,2,95, 4,0,13,5,10,79, 4,0,12,2,3,95, 4,0,11,2,4,95, 4,0,11,6,10,79, 4,0,8,2,7,95, + 4,0,8,5,10,79, 4,0,7,2,8,95, 4,0,7,6,10,79, 4,0,5,2,10,95, 4,0,5,5,10,79, 4,0,4,2,11,95, 4,0,3,2,12,95, 4,0,3,6,10,79, + 5,14,11,3,4,81, 5,14,11,5,4,49, 5,14,10,3,5,81, 5,14,9,3,6,81, 5,14,8,3,7,81, 5,14,7,3,8,81, 5,14,6,3,9,81, 5,14,5,3,10,81, + 5,14,4,3,11,81, 5,14,4,6,9,65, 5,13,12,3,3,82, 5,13,12,5,4,50, 5,13,3,3,12,82, 5,13,3,6,9,66, 5,12,13,3,2,83, 5,12,13,5,4,51, + 5,12,3,6,9,67, 5,11,13,5,4,52, 5,11,2,3,13,84, 5,11,2,6,9,68, 5,10,13,4,4,53, 5,10,13,5,4,53, 5,10,2,4,4,53, 5,10,2,6,9,69, + 5,9,12,5,4,54, 5,9,3,6,9,70, 5,8,12,5,4,55, 5,8,3,4,4,55, 5,8,3,6,9,71, 5,7,12,5,4,56, 5,7,4,4,4,56, 5,7,4,6,9,72, + 5,6,13,3,2,89, 5,6,13,5,4,57, 5,6,5,6,9,73, 5,5,13,5,4,58, 5,5,4,3,11,90, 5,5,3,3,12,90, 5,5,3,6,9,74, 5,4,14,3,1,91, + 5,4,14,5,4,59, 5,4,2,3,13,91, 5,4,2,6,9,75, 5,3,15,3,0,92, 5,3,15,5,4,60, 5,3,1,3,14,92, 5,3,1,6,9,76, 5,2,15,4,4,61, + 5,2,15,5,4,61, 5,2,1,4,4,61, 5,2,1,6,9,77, 5,1,14,4,9,78, 5,1,14,5,9,78, 5,1,10,4,9,78, 5,1,9,4,9,78, 5,1,6,4,9,78, + 5,1,2,4,9,78, 5,1,2,6,9,78, 5,0,13,1,2,95, 5,0,13,5,9,79, 5,0,12,1,3,95, 5,0,11,1,4,95, 5,0,11,6,9,79, 5,0,8,1,7,95, + 5,0,8,5,9,79, 5,0,7,1,8,95, 5,0,7,6,9,79, 5,0,5,1,10,95, 5,0,5,5,9,79, 5,0,4,1,11,95, 5,0,3,1,12,95, 5,0,3,6,9,79, + 6,15,10,2,5,80, 6,15,10,3,5,80, 6,15,10,5,5,48, 6,15,9,2,6,80, 6,15,9,3,6,80, 6,15,8,2,7,80, 6,15,8,3,7,80, 6,15,7,2,8,80, + 6,15,7,3,8,80, 6,15,6,2,9,80, 6,15,6,3,9,80, 6,15,5,2,10,80, 6,15,5,3,10,80, 6,15,5,6,8,64, 6,14,11,3,4,81, 6,14,11,5,5,49, + 6,14,4,3,11,81, 6,14,4,6,8,65, 6,13,12,3,3,82, 6,13,12,5,5,50, 6,13,3,3,12,82, 6,13,3,6,8,66, 6,12,13,3,2,83, 6,12,13,5,5,51, + 6,12,3,6,8,67, 6,11,13,5,5,52, 6,11,2,3,13,84, 6,11,2,6,8,68, 6,10,13,4,5,53, 6,10,13,5,5,53, 6,10,2,4,5,53, 6,10,2,6,8,69, + 6,9,12,5,5,54, 6,9,3,6,8,70, 6,8,12,5,5,55, 6,8,3,4,5,55, 6,8,3,6,8,71, 6,7,12,5,5,56, 6,7,4,4,5,56, 6,7,4,6,8,72, + 6,6,13,3,2,89, 6,6,13,5,5,57, 6,6,5,6,8,73, 6,5,13,5,5,58, 6,5,4,3,11,90, 6,5,3,3,12,90, 6,5,3,6,8,74, 6,4,14,3,1,91, + 6,4,14,5,5,59, 6,4,2,3,13,91, 6,4,2,6,8,75, 6,3,15,3,0,92, 6,3,15,5,5,60, 6,3,1,3,14,92, 6,3,1,6,8,76, 6,2,15,4,5,61, + 6,2,15,5,5,61, 6,2,1,4,5,61, 6,2,1,6,8,77, 6,1,14,4,5,62, 6,1,14,5,5,62, 6,1,13,4,5,62, 6,1,12,4,5,62, 6,1,11,4,5,62, + 6,1,10,4,5,62, 6,1,9,4,5,62, 6,1,8,4,5,62, 6,1,7,4,5,62, 6,1,6,4,5,62, 6,1,5,4,5,62, 6,1,4,4,5,62, 6,1,3,4,5,62, + 6,1,2,4,5,62, 6,1,2,6,8,78, 7,15,10,3,5,80, 7,15,10,5,6,48, 7,15,9,3,6,80, 7,15,8,3,7,80, 7,15,7,3,8,80, 7,15,6,3,9,80, + 7,15,5,3,10,80, 7,15,5,6,7,64, 7,14,11,3,4,81, 7,14,11,5,6,49, 7,14,4,3,11,81, 7,14,4,6,7,65, 7,13,12,3,3,82, 7,13,12,5,6,50, + 7,13,3,3,12,82, 7,13,3,6,7,66, 7,12,13,3,2,83, 7,12,13,5,6,51, 7,12,3,6,7,67, 7,11,13,5,6,52, 7,11,2,3,13,84, 7,11,2,6,7,68, + 7,10,13,4,6,53, 7,10,13,5,6,53, 7,10,2,4,6,53, 7,10,2,6,7,69, 7,9,12,5,6,54, 7,9,3,6,7,70, 7,8,12,5,6,55, 7,8,3,4,6,55, + 7,8,3,6,7,71, 7,7,12,5,6,56, 7,7,4,4,6,56, 7,7,4,6,7,72, 7,6,13,3,2,89, 7,6,13,5,6,57, 7,6,5,6,7,73, 7,5,13,5,6,58, + 7,5,4,3,11,90, 7,5,3,3,12,90, 7,5,3,6,7,74, 7,4,14,3,1,91, 7,4,14,5,6,59, 7,4,2,3,13,91, 7,4,2,6,7,75, 7,3,15,3,0,92, + 7,3,15,5,6,60, 7,3,1,3,14,92, 7,3,1,6,7,76, 7,2,15,4,6,61, 7,2,15,5,6,61, 7,2,1,4,6,61, 7,2,1,6,7,77, 7,1,14,4,6,62, + 7,1,14,5,6,62, 7,1,10,4,6,62, 7,1,9,4,6,62, 7,1,6,4,6,62, 7,1,2,4,6,62, 7,1,2,6,7,78, 7,0,13,2,2,95, 7,0,13,5,6,63, + 7,0,12,2,3,95, 7,0,11,2,4,95, 7,0,11,6,7,79, 7,0,8,2,7,95, 7,0,8,5,6,63, 7,0,7,2,8,95, 7,0,7,6,7,79, 7,0,5,2,10,95, + 7,0,5,5,6,63, 7,0,4,2,11,95, 7,0,3,2,12,95, 7,0,3,6,7,79, 8,15,10,3,5,80, 8,15,10,5,7,48, 8,15,9,3,6,80, 8,15,8,3,7,80, + 8,15,7,3,8,80, 8,15,6,3,9,80, 8,15,5,3,10,80, 8,15,5,6,6,64, 8,14,11,3,4,81, 8,14,11,5,7,49, 8,14,4,3,11,81, 8,14,4,6,6,65, + 8,13,12,3,3,82, 8,13,12,5,7,50, 8,13,3,3,12,82, 8,13,3,6,6,66, 8,12,13,3,2,83, 8,12,13,5,7,51, 8,12,3,6,6,67, 8,11,13,5,7,52, + 8,11,2,3,13,84, 8,11,2,6,6,68, 8,10,13,4,7,53, 8,10,13,5,7,53, 8,10,2,4,7,53, 8,10,2,6,6,69, 8,9,12,5,7,54, 8,9,3,6,6,70, + 8,8,12,5,7,55, 8,8,3,4,7,55, 8,8,3,6,6,71, 8,7,12,5,7,56, 8,7,4,4,7,56, 8,7,4,6,6,72, 8,6,13,3,2,89, 8,6,13,5,7,57, + 8,6,5,6,6,73, 8,5,13,5,7,58, 8,5,4,3,11,90, 8,5,3,3,12,90, 8,5,3,6,6,74, 8,4,14,3,1,91, 8,4,14,5,7,59, 8,4,2,3,13,91, + 8,4,2,6,6,75, 8,3,15,3,0,92, 8,3,15,5,7,60, 8,3,1,3,14,92, 8,3,1,6,6,76, 8,2,15,4,7,61, 8,2,15,5,7,61, 8,2,1,4,7,61, + 8,2,1,6,6,77, 8,1,14,4,7,62, 8,1,14,5,7,62, 8,1,10,4,7,62, 8,1,9,4,7,62, 8,1,6,4,7,62, 8,1,2,4,7,62, 8,1,2,6,6,78, + 8,0,13,1,2,95, 8,0,13,5,7,63, 8,0,12,1,3,95, 8,0,11,1,4,95, 8,0,11,6,6,79, 8,0,8,1,7,95, 8,0,8,5,7,63, 8,0,7,1,8,95, + 8,0,7,6,6,79, 8,0,5,1,10,95, 8,0,5,5,7,63, 8,0,4,1,11,95, 8,0,3,1,12,95, 8,0,3,6,6,79, 9,15,10,1,5,80, 9,15,10,3,5,80, + 9,15,10,5,8,48, 9,15,9,1,6,80, 9,15,9,3,6,80, 9,15,8,1,7,80, 9,15,8,3,7,80, 9,15,7,1,8,80, 9,15,7,3,8,80, 9,15,6,1,9,80, + 9,15,6,3,9,80, 9,15,5,1,10,80, 9,15,5,3,10,80, 9,15,5,6,5,64, 9,14,11,3,4,81, 9,14,11,5,8,49, 9,14,4,3,11,81, 9,14,4,6,5,65, + 9,13,12,3,3,82, 9,13,12,5,8,50, 9,13,3,3,12,82, 9,13,3,6,5,66, 9,12,13,3,2,83, 9,12,13,5,8,51, 9,12,3,6,5,67, 9,11,13,5,8,52, + 9,11,2,3,13,84, 9,11,2,6,5,68, 9,10,13,4,8,53, 9,10,13,5,8,53, 9,10,2,4,8,53, 9,10,2,6,5,69, 9,9,12,5,8,54, 9,9,3,6,5,70, + 9,8,12,5,8,55, 9,8,3,4,8,55, 9,8,3,6,5,71, 9,7,12,5,8,56, 9,7,4,4,8,56, 9,7,4,6,5,72, 9,6,13,3,2,89, 9,6,13,5,8,57, + 9,6,5,6,5,73, 9,5,13,5,8,58, 9,5,4,3,11,90, 9,5,3,3,12,90, 9,5,3,6,5,74, 9,4,14,3,1,91, 9,4,14,5,8,59, 9,4,2,3,13,91, + 9,4,2,6,5,75, 9,3,15,3,0,92, 9,3,15,5,8,60, 9,3,1,3,14,92, 9,3,1,6,5,76, 9,2,15,4,8,61, 9,2,15,5,8,61, 9,2,1,4,8,61, + 9,2,1,6,5,77, 9,1,14,4,8,62, 9,1,14,5,8,62, 9,1,13,4,8,62, 9,1,12,4,8,62, 9,1,11,4,8,62, 9,1,10,4,8,62, 9,1,9,4,8,62, + 9,1,8,4,8,62, 9,1,7,4,8,62, 9,1,6,4,8,62, 9,1,5,4,8,62, 9,1,4,4,8,62, 9,1,3,4,8,62, 9,1,2,4,8,62, 9,1,2,6,5,78, + 10,14,11,3,4,81, 10,14,11,5,9,49, 10,14,10,3,5,81, 10,14,9,3,6,81, 10,14,8,3,7,81, 10,14,7,3,8,81, 10,14,6,3,9,81, 10,14,5,3,10,81, + 10,14,4,3,11,81, 10,14,4,6,4,65, 10,13,12,3,3,82, 10,13,12,5,9,50, 10,13,3,3,12,82, 10,13,3,6,4,66, 10,12,13,3,2,83, 10,12,13,5,9,51, + 10,12,3,6,4,67, 10,11,13,5,9,52, 10,11,2,3,13,84, 10,11,2,6,4,68, 10,10,13,4,9,53, 10,10,13,5,9,53, 10,10,2,4,9,53, 10,10,2,6,4,69, + 10,9,12,5,9,54, 10,9,3,6,4,70, 10,8,12,5,9,55, 10,8,3,4,9,55, 10,8,3,6,4,71, 10,7,12,5,9,56, 10,7,4,4,9,56, 10,7,4,6,4,72, + 10,6,13,3,2,89, 10,6,13,5,9,57, 10,6,5,6,4,73, 10,5,13,5,9,58, 10,5,4,3,11,90, 10,5,3,3,12,90, 10,5,3,6,4,74, 10,4,14,3,1,91, + 10,4,14,5,9,59, 10,4,2,3,13,91, 10,4,2,6,4,75, 10,3,15,3,0,92, 10,3,15,5,9,60, 10,3,1,3,14,92, 10,3,1,6,4,76, 10,2,15,4,9,61, + 10,2,15,5,9,61, 10,2,1,4,9,61, 10,2,1,6,4,77, 10,1,14,4,9,62, 10,1,14,5,9,62, 10,1,10,4,9,62, 10,1,9,4,9,62, 10,1,6,4,9,62, + 10,1,2,4,9,62, 10,1,2,6,4,78, 10,0,13,2,2,95, 10,0,13,5,9,63, 10,0,12,2,3,95, 10,0,11,2,4,95, 10,0,11,6,9,63, 10,0,8,2,7,95, + 10,0,8,5,9,63, 10,0,7,2,8,95, 10,0,7,6,9,63, 10,0,5,2,10,95, 10,0,5,5,9,63, 10,0,4,2,11,95, 10,0,3,2,12,95, 10,0,3,6,9,63, + 11,14,11,1,4,81, 11,14,11,3,4,81, 11,14,11,5,10,49, 11,14,10,1,5,81, 11,14,10,3,5,81, 11,14,9,1,6,81, 11,14,9,3,6,81, 11,14,8,1,7,81, + 11,14,8,3,7,81, 11,14,7,1,8,81, 11,14,7,3,8,81, 11,14,6,1,9,81, 11,14,6,3,9,81, 11,14,5,1,10,81, 11,14,5,3,10,81, 11,14,4,1,11,81, + 11,14,4,3,11,81, 11,14,4,6,3,65, 11,13,12,3,3,82, 11,13,12,5,10,50, 11,13,3,3,12,82, 11,13,3,6,3,66, 11,12,13,3,2,83, 11,12,13,5,10,51, + 11,12,3,6,3,67, 11,11,13,5,10,52, 11,11,2,3,13,84, 11,11,2,6,3,68, 11,10,13,4,10,53, 11,10,13,5,10,53, 11,10,2,4,10,53, 11,10,2,6,3,69, + 11,9,12,5,10,54, 11,9,3,6,3,70, 11,8,12,5,10,55, 11,8,3,4,10,55, 11,8,3,6,3,71, 11,7,12,5,10,56, 11,7,4,4,10,56, 11,7,4,6,3,72, + 11,6,13,3,2,89, 11,6,13,5,10,57, 11,6,5,6,3,73, 11,5,13,5,10,58, 11,5,4,3,11,90, 11,5,3,3,12,90, 11,5,3,6,3,74, 11,4,14,3,1,91, + 11,4,14,5,10,59, 11,4,2,3,13,91, 11,4,2,6,3,75, 11,3,15,3,0,92, 11,3,15,5,10,60, 11,3,1,3,14,92, 11,3,1,6,3,76, 11,2,15,4,10,61, + 11,2,15,5,10,61, 11,2,1,4,10,61, 11,2,1,6,3,77, 11,1,14,4,10,62, 11,1,14,5,10,62, 11,1,10,4,10,62, 11,1,9,4,10,62, 11,1,6,4,10,62, + 11,1,2,4,10,62, 11,1,2,6,3,78, 11,0,13,1,2,95, 11,0,13,5,10,63, 11,0,12,1,3,95, 11,0,11,1,4,95, 11,0,11,6,10,63, 11,0,8,1,7,95, + 11,0,8,5,10,63, 11,0,7,1,8,95, 11,0,7,6,10,63, 11,0,5,1,10,95, 11,0,5,5,10,63, 11,0,4,1,11,95, 11,0,3,1,12,95, 11,0,3,6,10,63, + 12,13,12,1,3,82, 12,13,12,3,3,82, 12,13,12,5,11,50, 12,13,11,1,4,82, 12,13,11,3,4,82, 12,13,10,1,5,82, 12,13,10,3,5,82, 12,13,9,1,6,82, + 12,13,9,3,6,82, 12,13,8,1,7,82, 12,13,8,3,7,82, 12,13,7,1,8,82, 12,13,7,3,8,82, 12,13,6,1,9,82, 12,13,6,3,9,82, 12,13,5,1,10,82, + 12,13,5,3,10,82, 12,13,4,1,11,82, 12,13,4,3,11,82, 12,13,3,1,12,82, 12,13,3,3,12,82, 12,13,3,6,2,66, 12,12,13,3,2,83, 12,12,13,5,11,51, + 12,12,3,6,2,67, 12,11,13,5,11,52, 12,11,2,3,13,84, 12,11,2,6,2,68, 12,10,13,4,11,53, 12,10,13,5,11,53, 12,10,2,4,11,53, 12,10,2,6,2,69, + 12,9,12,5,11,54, 12,9,3,6,2,70, 12,8,12,5,11,55, 12,8,3,4,11,55, 12,8,3,6,2,71, 12,7,12,5,11,56, 12,7,4,4,11,56, 12,7,4,6,2,72, + 12,6,13,1,2,89, 12,6,13,3,2,89, 12,6,13,5,11,57, 12,6,12,1,3,89, 12,6,11,1,4,89, 12,6,10,1,5,89, 12,6,9,1,6,89, 12,6,8,1,7,89, + 12,6,7,1,8,89, 12,6,6,1,9,89, 12,6,5,1,10,89, 12,6,5,6,2,73, 12,5,13,5,11,58, 12,5,4,3,11,90, 12,5,3,3,12,90, 12,5,3,6,2,74, + 12,4,14,3,1,91, 12,4,14,5,11,59, 12,4,2,3,13,91, 12,4,2,6,2,75, 12,3,15,1,0,92, 12,3,15,3,0,92, 12,3,15,5,11,60, 12,3,14,1,1,92, + 12,3,13,1,2,92, 12,3,12,1,3,92, 12,3,11,1,4,92, 12,3,10,1,5,92, 12,3,9,1,6,92, 12,3,8,1,7,92, 12,3,7,1,8,92, 12,3,6,1,9,92, + 12,3,5,1,10,92, 12,3,4,1,11,92, 12,3,3,1,12,92, 12,3,2,1,13,92, 12,3,1,1,14,92, 12,3,1,3,14,92, 12,3,1,6,2,76, 12,2,15,1,0,93, + 12,2,15,4,11,61, 12,2,15,5,11,61, 12,2,14,1,1,93, 12,2,13,1,2,93, 12,2,12,1,3,93, 12,2,11,1,4,93, 12,2,10,1,5,93, 12,2,9,1,6,93, + 12,2,8,1,7,93, 12,2,7,1,8,93, 12,2,6,1,9,93, 12,2,5,1,10,93, 12,2,4,1,11,93, 12,2,3,1,12,93, 12,2,2,1,13,93, 12,2,1,1,14,93, + 12,2,1,4,11,61, 12,2,1,6,2,77, 12,1,14,1,1,94, 12,1,14,4,11,62, 12,1,14,5,11,62, 12,1,13,1,2,94, 12,1,13,4,11,62, 12,1,12,1,3,94, + 12,1,12,4,11,62, 12,1,11,1,4,94, 12,1,11,4,11,62, 12,1,10,1,5,94, 12,1,10,4,11,62, 12,1,9,1,6,94, 12,1,9,4,11,62, 12,1,8,1,7,94, + 12,1,8,4,11,62, 12,1,7,1,8,94, 12,1,7,4,11,62, 12,1,6,1,9,94, 12,1,6,4,11,62, 12,1,5,1,10,94, 12,1,5,4,11,62, 12,1,4,1,11,94, + 12,1,4,4,11,62, 12,1,3,1,12,94, 12,1,3,4,11,62, 12,1,2,1,13,94, 12,1,2,4,11,62, 12,1,2,6,11,62, 13,12,13,1,2,83, 13,12,13,3,2,83, + 13,12,13,5,12,51, 13,12,12,1,3,83, 13,12,12,3,3,83, 13,12,11,1,4,83, 13,12,11,3,4,83, 13,12,10,1,5,83, 13,12,10,3,5,83, 13,12,9,1,6,83, + 13,12,9,3,6,83, 13,12,8,1,7,83, 13,12,8,3,7,83, 13,12,7,1,8,83, 13,12,7,3,8,83, 13,12,6,1,9,83, 13,12,6,3,9,83, 13,12,5,1,10,83, + 13,12,5,3,10,83, 13,12,4,1,11,83, 13,12,4,3,11,83, 13,12,3,1,12,83, 13,12,3,3,12,83, 13,12,3,6,1,67, 13,11,13,1,2,84, 13,11,13,5,12,52, + 13,11,12,1,3,84, 13,11,11,1,4,84, 13,11,10,1,5,84, 13,11,9,1,6,84, 13,11,8,1,7,84, 13,11,7,1,8,84, 13,11,6,1,9,84, 13,11,5,1,10,84, + 13,11,4,1,11,84, 13,11,3,1,12,84, 13,11,2,1,13,84, 13,11,2,3,13,84, 13,11,2,6,1,68, 13,10,13,1,2,85, 13,10,13,4,12,53, 13,10,13,5,12,53, + 13,10,12,1,3,85, 13,10,11,1,4,85, 13,10,10,1,5,85, 13,10,9,1,6,85, 13,10,8,1,7,85, 13,10,7,1,8,85, 13,10,6,1,9,85, 13,10,5,1,10,85, + 13,10,4,1,11,85, 13,10,3,1,12,85, 13,10,2,1,13,85, 13,10,2,4,12,53, 13,10,2,6,1,69, 13,9,12,5,12,54, 13,9,3,6,1,70, 13,8,12,5,12,55, + 13,8,3,4,12,55, 13,8,3,6,1,71, 13,7,12,1,3,88, 13,7,12,4,12,56, 13,7,12,5,12,56, 13,7,11,1,4,88, 13,7,11,4,12,56, 13,7,10,1,5,88, + 13,7,10,4,12,56, 13,7,9,1,6,88, 13,7,9,4,12,56, 13,7,8,1,7,88, 13,7,8,4,12,56, 13,7,7,1,8,88, 13,7,7,4,12,56, 13,7,6,1,9,88, + 13,7,6,4,12,56, 13,7,5,1,10,88, 13,7,5,4,12,56, 13,7,4,1,11,88, 13,7,4,4,12,56, 13,7,4,6,1,72, 13,5,13,1,2,90, 13,5,13,3,2,90, + 13,5,13,5,12,58, 13,5,12,1,3,90, 13,5,12,3,3,90, 13,5,11,1,4,90, 13,5,11,3,4,90, 13,5,10,1,5,90, 13,5,10,3,5,90, 13,5,9,1,6,90, + 13,5,9,3,6,90, 13,5,8,1,7,90, 13,5,8,3,7,90, 13,5,7,1,8,90, 13,5,7,3,8,90, 13,5,6,1,9,90, 13,5,6,3,9,90, 13,5,5,1,10,90, + 13,5,5,3,10,90, 13,5,4,1,11,90, 13,5,4,3,11,90, 13,5,3,1,12,90, 13,5,3,3,12,90, 13,5,3,6,1,74, 13,4,14,1,1,91, 13,4,14,3,1,91, + 13,4,14,4,12,59, 13,4,14,5,12,59, 13,4,13,1,2,91, 13,4,13,4,12,59, 13,4,12,1,3,91, 13,4,12,4,12,59, 13,4,11,1,4,91, 13,4,11,4,12,59, + 13,4,10,1,5,91, 13,4,10,4,12,59, 13,4,9,1,6,91, 13,4,9,4,12,59, 13,4,8,1,7,91, 13,4,8,4,12,59, 13,4,7,1,8,91, 13,4,7,4,12,59, + 13,4,6,1,9,91, 13,4,6,4,12,59, 13,4,5,1,10,91, 13,4,5,4,12,59, 13,4,4,1,11,91, 13,4,4,4,12,59, 13,4,3,1,12,91, 13,4,3,4,12,59, + 13,4,2,1,13,91, 13,4,2,3,13,91, 13,4,2,4,12,59, 13,4,2,6,1,75, 14,9,12,1,3,86, 14,9,12,3,3,86, 14,9,12,5,13,54, 14,9,11,1,4,86, + 14,9,11,3,4,86, 14,9,10,1,5,86, 14,9,10,3,5,86, 14,9,9,1,6,86, 14,9,9,3,6,86, 14,9,8,1,7,86, 14,9,8,3,7,86, 14,9,7,1,8,86, + 14,9,7,3,8,86, 14,9,6,1,9,86, 14,9,6,3,9,86, 14,9,5,1,10,86, 14,9,5,3,10,86, 14,9,4,1,11,86, 14,9,4,3,11,86, 14,9,3,1,12,86, + 14,9,3,3,12,86, 14,9,3,6,0,70, 14,8,12,1,3,87, 14,8,12,4,13,55, 14,8,12,5,13,55, 14,8,11,1,4,87, 14,8,11,4,13,55, 14,8,10,1,5,87, + 14,8,10,4,13,55, 14,8,9,1,6,87, 14,8,9,4,13,55, 14,8,8,1,7,87, 14,8,8,4,13,55, 14,8,7,1,8,87, 14,8,7,4,13,55, 14,8,6,1,9,87, + 14,8,6,4,13,55, 14,8,5,1,10,87, 14,8,5,4,13,55, 14,8,4,1,11,87, 14,8,4,4,13,55, 14,8,3,1,12,87, 14,8,3,4,13,55, 14,8,3,6,0,71, + }, + }, + }, +} diff --git a/assets/voxels/bird.lua b/assets/voxels/bird.lua new file mode 100644 index 0000000..916caa0 --- /dev/null +++ b/assets/voxels/bird.lua @@ -0,0 +1,292 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "bird" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "bird", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1128, + count = 932, + faces = { + 2,6,13,2,2,41, 2,6,13,3,2,41, 2,6,13,5,13,25, 2,6,12,2,3,41, 2,6,12,3,3,41, 2,6,11,2,4,41, 2,6,11,3,4,41, 2,6,10,2,5,41, + 2,6,10,3,5,41, 2,6,9,2,6,41, 2,6,9,3,6,41, 2,6,8,2,7,41, 2,6,8,3,7,41, 2,6,7,2,8,41, 2,6,7,3,8,41, 2,6,6,2,9,41, + 2,6,6,3,9,41, 2,6,5,2,10,41, 2,6,5,3,10,41, 2,6,4,2,11,41, 2,6,4,3,11,41, 2,6,3,2,12,41, 2,6,3,3,12,41, 2,6,2,2,13,41, + 2,6,2,3,13,41, 2,6,1,2,14,41, 2,6,1,3,14,41, 2,6,1,4,13,25, 2,6,1,6,13,25, 2,5,13,2,2,42, 2,5,13,4,2,10, 2,5,13,5,2,10, + 2,5,12,2,3,42, 2,5,11,2,4,42, 2,5,10,2,5,42, 2,5,9,2,6,42, 2,5,8,2,7,42, 2,5,7,2,8,42, 2,5,6,2,9,42, 2,5,5,2,10,42, + 2,5,4,2,11,42, 2,5,3,2,12,42, 2,5,2,2,13,42, 2,5,2,4,2,10, 2,5,2,6,13,26, 2,4,12,2,3,43, 2,4,12,4,2,11, 2,4,12,5,2,11, + 2,4,11,2,4,43, 2,4,11,4,2,11, 2,4,10,2,5,43, 2,4,10,4,2,11, 2,4,9,2,6,43, 2,4,9,4,2,11, 2,4,8,2,7,43, 2,4,8,4,2,11, + 2,4,7,2,8,43, 2,4,7,4,2,11, 2,4,6,2,9,43, 2,4,6,4,2,11, 2,4,5,2,10,43, 2,4,5,4,2,11, 2,4,4,2,11,43, 2,4,4,4,2,11, + 2,4,3,2,12,43, 2,4,3,4,2,11, 2,4,3,6,13,27, 3,7,13,2,2,40, 3,7,13,3,2,40, 3,7,13,5,3,8, 3,7,12,2,3,40, 3,7,12,3,3,40, + 3,7,11,2,4,40, 3,7,11,3,4,40, 3,7,10,2,5,40, 3,7,10,3,5,40, 3,7,9,2,6,40, 3,7,9,3,6,40, 3,7,8,2,7,40, 3,7,8,3,7,40, + 3,7,7,2,8,40, 3,7,7,3,8,40, 3,7,6,2,9,40, 3,7,6,3,9,40, 3,7,5,2,10,40, 3,7,5,3,10,40, 3,7,4,2,11,40, 3,7,4,3,11,40, + 3,7,3,2,12,40, 3,7,3,3,12,40, 3,7,2,2,13,40, 3,7,2,3,13,40, 3,7,1,2,14,40, 3,7,1,3,14,40, 3,7,0,2,15,40, 3,7,0,3,15,40, + 3,7,0,4,3,8, 3,7,0,6,12,24, 3,6,13,5,3,9, 3,6,1,4,3,9, 3,6,1,6,12,25, 3,5,13,4,3,10, 3,5,13,5,3,10, 3,5,2,4,3,10, + 3,5,2,6,12,26, 3,4,12,4,3,11, 3,4,12,5,3,11, 3,4,3,4,3,11, 3,4,3,6,12,27, 3,3,11,2,4,44, 3,3,11,4,3,12, 3,3,11,5,3,12, + 3,3,10,2,5,44, 3,3,10,4,3,12, 3,3,9,2,6,44, 3,3,9,4,3,12, 3,3,8,2,7,44, 3,3,8,4,3,12, 3,3,7,2,8,44, 3,3,7,4,3,12, + 3,3,6,2,9,44, 3,3,6,4,3,12, 3,3,5,2,10,44, 3,3,5,4,3,12, 3,3,4,2,11,44, 3,3,4,4,3,12, 3,3,4,6,12,28, 4,11,13,2,2,36, + 4,11,13,3,2,36, 4,11,13,5,4,4, 4,11,12,2,3,36, 4,11,12,3,3,36, 4,11,11,2,4,36, 4,11,11,3,4,36, 4,11,10,2,5,36, 4,11,10,3,5,36, + 4,11,9,2,6,36, 4,11,9,3,6,36, 4,11,8,2,7,36, 4,11,8,3,7,36, 4,11,7,2,8,36, 4,11,7,3,8,36, 4,11,6,2,9,36, 4,11,6,3,9,36, + 4,11,6,6,11,20, 4,10,14,2,1,37, 4,10,14,3,1,37, 4,10,14,5,4,5, 4,10,13,2,2,37, 4,10,12,2,3,37, 4,10,11,2,4,37, 4,10,10,2,5,37, + 4,10,9,2,6,37, 4,10,8,2,7,37, 4,10,7,2,8,37, 4,10,6,2,9,37, 4,10,6,6,11,21, 4,9,15,2,0,38, 4,9,15,3,0,38, 4,9,15,4,4,6, + 4,9,15,5,4,6, 4,9,14,2,1,38, 4,9,13,2,2,38, 4,9,12,2,3,38, 4,9,11,2,4,38, 4,9,10,2,5,38, 4,9,9,2,6,38, 4,9,8,2,7,38, + 4,9,7,2,8,38, 4,9,6,2,9,38, 4,9,6,6,11,22, 4,9,2,2,13,38, 4,9,2,3,13,38, 4,9,2,5,4,6, 4,9,2,6,11,22, 4,8,14,2,1,39, + 4,8,14,4,4,7, 4,8,14,5,4,7, 4,8,13,2,2,39, 4,8,12,2,3,39, 4,8,11,2,4,39, 4,8,10,2,5,39, 4,8,9,2,6,39, 4,8,8,2,7,39, + 4,8,7,2,8,39, 4,8,6,2,9,39, 4,8,5,2,10,39, 4,8,5,3,10,39, 4,8,4,2,11,39, 4,8,4,3,11,39, 4,8,3,2,12,39, 4,8,3,3,12,39, + 4,8,2,2,13,39, 4,8,1,2,14,39, 4,8,1,3,14,39, 4,8,1,6,11,23, 4,7,13,5,4,8, 4,7,0,3,15,40, 4,7,0,4,4,8, 4,7,0,6,11,24, + 4,6,13,5,4,9, 4,6,1,4,4,9, 4,6,1,6,11,25, 4,5,13,4,4,10, 4,5,13,5,4,10, 4,5,2,4,4,10, 4,5,2,6,11,26, 4,4,12,4,4,11, + 4,4,12,5,4,11, 4,4,3,4,4,11, 4,4,3,6,11,27, 4,3,11,4,4,12, 4,3,11,5,4,12, 4,3,10,4,4,12, 4,3,6,4,4,12, 4,3,5,4,4,12, + 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,9,2,6,45, 4,2,9,4,11,29, 4,2,9,5,11,29, 4,2,8,2,7,45, 4,2,8,4,11,29, 4,2,7,2,8,45, + 4,2,7,4,11,29, 4,2,7,6,11,29, 5,15,7,2,8,32, 5,15,7,3,8,32, 5,15,7,4,10,16, 5,15,7,5,10,16, 5,15,6,2,9,32, 5,15,6,3,9,32, + 5,15,6,4,10,16, 5,15,5,2,10,32, 5,15,5,3,10,32, 5,15,5,4,10,16, 5,15,4,2,11,32, 5,15,4,3,11,32, 5,15,4,4,10,16, 5,15,4,6,10,16, + 5,12,13,2,2,35, 5,12,13,3,2,35, 5,12,13,5,5,3, 5,12,12,2,3,35, 5,12,12,3,3,35, 5,12,11,2,4,35, 5,12,11,3,4,35, 5,12,10,2,5,35, + 5,12,10,3,5,35, 5,12,9,2,6,35, 5,12,9,3,6,35, 5,12,8,2,7,35, 5,12,8,3,7,35, 5,12,7,2,8,35, 5,12,7,3,8,35, 5,12,6,2,9,35, + 5,12,6,3,9,35, 5,12,6,6,10,19, 5,11,13,5,5,4, 5,11,6,6,10,20, 5,10,14,3,1,37, 5,10,14,5,5,5, 5,10,6,6,10,21, 5,9,15,3,0,38, + 5,9,15,4,5,6, 5,9,15,5,5,6, 5,9,6,6,10,22, 5,9,2,3,13,38, 5,9,2,5,5,6, 5,9,2,6,10,22, 5,8,14,4,5,7, 5,8,14,5,5,7, + 5,8,5,3,10,39, 5,8,4,3,11,39, 5,8,3,3,12,39, 5,8,1,3,14,39, 5,8,1,6,10,23, 5,7,13,5,5,8, 5,7,0,3,15,40, 5,7,0,4,5,8, + 5,7,0,6,10,24, 5,6,13,5,5,9, 5,6,1,4,5,9, 5,6,1,6,10,25, 5,5,13,4,5,10, 5,5,13,5,5,10, 5,5,2,4,5,10, 5,5,2,6,10,26, + 5,4,12,4,5,11, 5,4,12,5,5,11, 5,4,3,4,5,11, 5,4,3,6,10,27, 5,3,11,4,5,12, 5,3,11,5,5,12, 5,3,10,4,5,12, 5,3,6,4,5,12, + 5,3,5,4,5,12, 5,3,4,4,5,12, 5,3,4,6,10,28, 5,2,9,4,5,13, 5,2,9,5,5,13, 5,2,8,4,5,13, 5,2,7,4,5,13, 5,2,7,6,10,29, + 5,0,10,2,5,47, 5,0,10,3,5,47, 5,0,10,5,5,15, 5,0,9,2,6,47, 5,0,9,3,6,47, 5,0,9,6,10,31, 6,15,7,1,8,32, 6,15,7,3,8,32, + 6,15,7,5,9,16, 6,15,6,1,9,32, 6,15,6,3,9,32, 6,15,5,1,10,32, 6,15,5,3,10,32, 6,15,5,4,9,16, 6,15,4,1,11,32, 6,15,4,3,11,32, + 6,15,4,4,9,16, 6,15,4,6,9,16, 6,14,11,2,4,33, 6,14,11,3,4,33, 6,14,11,5,9,17, 6,14,10,2,5,33, 6,14,10,3,5,33, 6,14,9,2,6,33, + 6,14,9,3,6,33, 6,14,8,2,7,33, 6,14,8,3,7,33, 6,14,7,2,8,33, 6,14,6,2,9,33, 6,14,6,4,9,17, 6,14,6,6,9,17, 6,13,12,2,3,34, + 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,11,2,4,34, 6,13,10,2,5,34, 6,13,9,2,6,34, 6,13,8,2,7,34, 6,13,7,2,8,34, 6,13,7,6,9,18, + 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,6,3,9,35, 6,12,6,6,9,19, 6,11,13,5,6,4, 6,11,6,6,9,20, 6,10,14,3,1,37, 6,10,14,5,6,5, + 6,10,6,6,9,21, 6,9,15,3,0,38, 6,9,15,4,6,6, 6,9,15,5,6,6, 6,9,6,6,9,22, 6,9,2,3,13,38, 6,9,2,5,6,6, 6,9,2,6,9,22, + 6,8,14,4,6,7, 6,8,14,5,6,7, 6,8,5,3,10,39, 6,8,4,3,11,39, 6,8,3,3,12,39, 6,8,1,3,14,39, 6,8,1,6,9,23, 6,7,13,5,6,8, + 6,7,0,3,15,40, 6,7,0,4,6,8, 6,7,0,6,9,24, 6,6,13,5,6,9, 6,6,1,4,6,9, 6,6,1,6,9,25, 6,5,13,4,6,10, 6,5,13,5,6,10, + 6,5,2,4,6,10, 6,5,2,6,9,26, 6,4,12,4,6,11, 6,4,12,5,6,11, 6,4,3,4,6,11, 6,4,3,6,9,27, 6,3,11,4,6,12, 6,3,11,5,6,12, + 6,3,10,4,6,12, 6,3,6,4,6,12, 6,3,5,4,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,9,5,6,13, 6,2,7,4,6,13, 6,2,7,6,9,29, + 6,1,9,2,6,46, 6,1,9,5,6,14, 6,1,8,2,7,46, 6,1,8,4,6,14, 6,1,8,6,9,30, 6,0,10,1,5,47, 6,0,10,3,5,47, 6,0,10,5,6,15, + 6,0,9,1,6,47, 6,0,9,6,9,31, 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,10,3,5,33, 7,14,9,3,6,33, 7,14,8,3,7,33, 7,14,7,3,8,33, + 7,14,6,3,9,33, 7,14,6,4,7,1, 7,14,6,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,7,6,8,18, 7,12,13,3,2,35, 7,12,13,5,7,3, + 7,12,6,3,9,35, 7,12,6,6,8,19, 7,11,13,5,7,4, 7,11,6,6,8,20, 7,10,14,3,1,37, 7,10,14,5,7,5, 7,10,6,6,8,21, 7,9,15,3,0,38, + 7,9,15,4,7,6, 7,9,15,5,7,6, 7,9,6,6,8,22, 7,9,2,3,13,38, 7,9,2,5,7,6, 7,9,2,6,8,22, 7,8,14,4,7,7, 7,8,14,5,7,7, + 7,8,5,3,10,39, 7,8,4,3,11,39, 7,8,3,3,12,39, 7,8,1,3,14,39, 7,8,1,6,8,23, 7,7,13,5,7,8, 7,7,0,3,15,40, 7,7,0,4,7,8, + 7,7,0,6,8,24, 7,6,13,5,7,9, 7,6,1,4,7,9, 7,6,1,6,8,25, 7,5,13,4,7,10, 7,5,13,5,7,10, 7,5,2,4,7,10, 7,5,2,6,8,26, + 7,4,12,4,7,11, 7,4,12,5,7,11, 7,4,3,4,7,11, 7,4,3,6,8,27, 7,3,11,4,7,12, 7,3,11,5,7,12, 7,3,10,4,7,12, 7,3,6,4,7,12, + 7,3,5,4,7,12, 7,3,4,4,7,12, 7,3,4,6,8,28, 7,2,9,5,7,13, 7,2,7,4,7,13, 7,2,7,6,8,29, 7,1,9,4,7,14, 7,1,9,5,7,14, + 7,1,8,4,7,14, 7,1,8,6,8,30, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,10,3,5,33, 8,14,9,3,6,33, 8,14,8,3,7,33, 8,14,7,3,8,33, + 8,14,6,3,9,33, 8,14,6,4,8,1, 8,14,6,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,7,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, + 8,12,6,3,9,35, 8,12,6,6,7,19, 8,11,13,5,8,4, 8,11,6,6,7,20, 8,10,14,3,1,37, 8,10,14,5,8,5, 8,10,6,6,7,21, 8,9,15,3,0,38, + 8,9,15,4,8,6, 8,9,15,5,8,6, 8,9,6,6,7,22, 8,9,2,3,13,38, 8,9,2,5,8,6, 8,9,2,6,7,22, 8,8,14,4,8,7, 8,8,14,5,8,7, + 8,8,5,3,10,39, 8,8,4,3,11,39, 8,8,3,3,12,39, 8,8,1,3,14,39, 8,8,1,6,7,23, 8,7,13,5,8,8, 8,7,0,3,15,40, 8,7,0,4,8,8, + 8,7,0,6,7,24, 8,6,13,5,8,9, 8,6,1,4,8,9, 8,6,1,6,7,25, 8,5,13,4,8,10, 8,5,13,5,8,10, 8,5,2,4,8,10, 8,5,2,6,7,26, + 8,4,12,4,8,11, 8,4,12,5,8,11, 8,4,3,4,8,11, 8,4,3,6,7,27, 8,3,11,4,8,12, 8,3,11,5,8,12, 8,3,10,4,8,12, 8,3,6,4,8,12, + 8,3,5,4,8,12, 8,3,4,4,8,12, 8,3,4,6,7,28, 8,2,9,5,8,13, 8,2,7,4,8,13, 8,2,7,6,7,29, 8,1,9,4,8,14, 8,1,9,5,8,14, + 8,1,8,4,8,14, 8,1,8,6,7,30, 9,15,7,2,8,32, 9,15,7,3,8,32, 9,15,7,5,9,0, 9,15,6,2,9,32, 9,15,6,3,9,32, 9,15,5,2,10,32, + 9,15,5,3,10,32, 9,15,5,4,9,0, 9,15,4,2,11,32, 9,15,4,3,11,32, 9,15,4,4,9,0, 9,15,4,6,9,0, 9,14,11,1,4,33, 9,14,11,3,4,33, + 9,14,11,5,9,1, 9,14,10,1,5,33, 9,14,10,3,5,33, 9,14,9,1,6,33, 9,14,9,3,6,33, 9,14,8,1,7,33, 9,14,8,3,7,33, 9,14,7,1,8,33, + 9,14,6,1,9,33, 9,14,6,4,9,1, 9,14,6,6,9,1, 9,13,12,1,3,34, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,11,1,4,34, 9,13,10,1,5,34, + 9,13,9,1,6,34, 9,13,8,1,7,34, 9,13,7,1,8,34, 9,13,7,6,6,18, 9,12,13,3,2,35, 9,12,13,5,9,3, 9,12,6,3,9,35, 9,12,6,6,6,19, + 9,11,13,5,9,4, 9,11,6,6,6,20, 9,10,14,3,1,37, 9,10,14,5,9,5, 9,10,6,6,6,21, 9,9,15,3,0,38, 9,9,15,4,9,6, 9,9,15,5,9,6, + 9,9,6,6,6,22, 9,9,2,3,13,38, 9,9,2,5,9,6, 9,9,2,6,6,22, 9,8,14,4,9,7, 9,8,14,5,9,7, 9,8,5,3,10,39, 9,8,4,3,11,39, + 9,8,3,3,12,39, 9,8,1,3,14,39, 9,8,1,6,6,23, 9,7,13,5,9,8, 9,7,0,3,15,40, 9,7,0,4,9,8, 9,7,0,6,6,24, 9,6,13,5,9,9, + 9,6,1,4,9,9, 9,6,1,6,6,25, 9,5,13,4,9,10, 9,5,13,5,9,10, 9,5,2,4,9,10, 9,5,2,6,6,26, 9,4,12,4,9,11, 9,4,12,5,9,11, + 9,4,3,4,9,11, 9,4,3,6,6,27, 9,3,11,4,9,12, 9,3,11,5,9,12, 9,3,10,4,9,12, 9,3,6,4,9,12, 9,3,5,4,9,12, 9,3,4,4,9,12, + 9,3,4,6,6,28, 9,2,9,5,9,13, 9,2,7,4,9,13, 9,2,7,6,6,29, 9,1,9,1,6,46, 9,1,9,5,9,14, 9,1,8,1,7,46, 9,1,8,4,9,14, + 9,1,8,6,6,30, 9,0,10,2,5,47, 9,0,10,3,5,47, 9,0,10,5,9,15, 9,0,9,2,6,47, 9,0,9,6,6,31, 10,15,7,1,8,32, 10,15,7,3,8,32, + 10,15,7,4,10,0, 10,15,7,5,10,0, 10,15,6,1,9,32, 10,15,6,3,9,32, 10,15,6,4,10,0, 10,15,5,1,10,32, 10,15,5,3,10,32, 10,15,5,4,10,0, + 10,15,4,1,11,32, 10,15,4,3,11,32, 10,15,4,4,10,0, 10,15,4,6,10,0, 10,12,13,1,2,35, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,12,1,3,35, + 10,12,12,3,3,35, 10,12,11,1,4,35, 10,12,11,3,4,35, 10,12,10,1,5,35, 10,12,10,3,5,35, 10,12,9,1,6,35, 10,12,9,3,6,35, 10,12,8,1,7,35, + 10,12,8,3,7,35, 10,12,7,1,8,35, 10,12,7,3,8,35, 10,12,6,1,9,35, 10,12,6,3,9,35, 10,12,6,6,5,19, 10,11,13,5,10,4, 10,11,6,6,5,20, + 10,10,14,3,1,37, 10,10,14,5,10,5, 10,10,6,6,5,21, 10,9,15,3,0,38, 10,9,15,4,10,6, 10,9,15,5,10,6, 10,9,6,6,5,22, 10,9,2,3,13,38, + 10,9,2,5,10,6, 10,9,2,6,5,22, 10,8,14,4,10,7, 10,8,14,5,10,7, 10,8,5,3,10,39, 10,8,4,3,11,39, 10,8,3,3,12,39, 10,8,1,3,14,39, + 10,8,1,6,5,23, 10,7,13,5,10,8, 10,7,0,3,15,40, 10,7,0,4,10,8, 10,7,0,6,5,24, 10,6,13,5,10,9, 10,6,1,4,10,9, 10,6,1,6,5,25, + 10,5,13,4,10,10, 10,5,13,5,10,10, 10,5,2,4,10,10, 10,5,2,6,5,26, 10,4,12,4,10,11, 10,4,12,5,10,11, 10,4,3,4,10,11, 10,4,3,6,5,27, + 10,3,11,4,10,12, 10,3,11,5,10,12, 10,3,10,4,10,12, 10,3,6,4,10,12, 10,3,5,4,10,12, 10,3,4,4,10,12, 10,3,4,6,5,28, 10,2,9,4,10,13, + 10,2,9,5,10,13, 10,2,8,4,10,13, 10,2,7,4,10,13, 10,2,7,6,5,29, 10,0,10,1,5,47, 10,0,10,3,5,47, 10,0,10,5,10,15, 10,0,9,1,6,47, + 10,0,9,3,6,47, 10,0,9,6,5,31, 11,11,13,1,2,36, 11,11,13,3,2,36, 11,11,13,5,11,4, 11,11,12,1,3,36, 11,11,12,3,3,36, 11,11,11,1,4,36, + 11,11,11,3,4,36, 11,11,10,1,5,36, 11,11,10,3,5,36, 11,11,9,1,6,36, 11,11,9,3,6,36, 11,11,8,1,7,36, 11,11,8,3,7,36, 11,11,7,1,8,36, + 11,11,7,3,8,36, 11,11,6,1,9,36, 11,11,6,3,9,36, 11,11,6,6,4,20, 11,10,14,1,1,37, 11,10,14,3,1,37, 11,10,14,5,11,5, 11,10,13,1,2,37, + 11,10,12,1,3,37, 11,10,11,1,4,37, 11,10,10,1,5,37, 11,10,9,1,6,37, 11,10,8,1,7,37, 11,10,7,1,8,37, 11,10,6,1,9,37, 11,10,6,6,4,21, + 11,9,15,1,0,38, 11,9,15,3,0,38, 11,9,15,4,11,6, 11,9,15,5,11,6, 11,9,14,1,1,38, 11,9,13,1,2,38, 11,9,12,1,3,38, 11,9,11,1,4,38, + 11,9,10,1,5,38, 11,9,9,1,6,38, 11,9,8,1,7,38, 11,9,7,1,8,38, 11,9,6,1,9,38, 11,9,6,6,4,22, 11,9,2,1,13,38, 11,9,2,3,13,38, + 11,9,2,5,11,6, 11,9,2,6,4,22, 11,8,14,1,1,39, 11,8,14,4,11,7, 11,8,14,5,11,7, 11,8,13,1,2,39, 11,8,12,1,3,39, 11,8,11,1,4,39, + 11,8,10,1,5,39, 11,8,9,1,6,39, 11,8,8,1,7,39, 11,8,7,1,8,39, 11,8,6,1,9,39, 11,8,5,1,10,39, 11,8,5,3,10,39, 11,8,4,1,11,39, + 11,8,4,3,11,39, 11,8,3,1,12,39, 11,8,3,3,12,39, 11,8,2,1,13,39, 11,8,1,1,14,39, 11,8,1,3,14,39, 11,8,1,6,4,23, 11,7,13,5,11,8, + 11,7,0,3,15,40, 11,7,0,4,11,8, 11,7,0,6,4,24, 11,6,13,5,11,9, 11,6,1,4,11,9, 11,6,1,6,4,25, 11,5,13,4,11,10, 11,5,13,5,11,10, + 11,5,2,4,11,10, 11,5,2,6,4,26, 11,4,12,4,11,11, 11,4,12,5,11,11, 11,4,3,4,11,11, 11,4,3,6,4,27, 11,3,11,4,11,12, 11,3,11,5,11,12, + 11,3,10,4,11,12, 11,3,6,4,11,12, 11,3,5,4,11,12, 11,3,4,4,11,12, 11,3,4,6,4,28, 11,2,9,1,6,45, 11,2,9,4,4,29, 11,2,9,5,4,29, + 11,2,8,1,7,45, 11,2,8,4,4,29, 11,2,7,1,8,45, 11,2,7,4,4,29, 11,2,7,6,4,29, 12,7,13,1,2,40, 12,7,13,3,2,40, 12,7,13,5,12,8, + 12,7,12,1,3,40, 12,7,12,3,3,40, 12,7,11,1,4,40, 12,7,11,3,4,40, 12,7,10,1,5,40, 12,7,10,3,5,40, 12,7,9,1,6,40, 12,7,9,3,6,40, + 12,7,8,1,7,40, 12,7,8,3,7,40, 12,7,7,1,8,40, 12,7,7,3,8,40, 12,7,6,1,9,40, 12,7,6,3,9,40, 12,7,5,1,10,40, 12,7,5,3,10,40, + 12,7,4,1,11,40, 12,7,4,3,11,40, 12,7,3,1,12,40, 12,7,3,3,12,40, 12,7,2,1,13,40, 12,7,2,3,13,40, 12,7,1,1,14,40, 12,7,1,3,14,40, + 12,7,0,1,15,40, 12,7,0,3,15,40, 12,7,0,4,12,8, 12,7,0,6,3,24, 12,6,13,5,12,9, 12,6,1,4,12,9, 12,6,1,6,3,25, 12,5,13,4,12,10, + 12,5,13,5,12,10, 12,5,2,4,12,10, 12,5,2,6,3,26, 12,4,12,4,12,11, 12,4,12,5,12,11, 12,4,3,4,12,11, 12,4,3,6,3,27, 12,3,11,1,4,44, + 12,3,11,4,12,12, 12,3,11,5,12,12, 12,3,10,1,5,44, 12,3,10,4,12,12, 12,3,9,1,6,44, 12,3,9,4,12,12, 12,3,8,1,7,44, 12,3,8,4,12,12, + 12,3,7,1,8,44, 12,3,7,4,12,12, 12,3,6,1,9,44, 12,3,6,4,12,12, 12,3,5,1,10,44, 12,3,5,4,12,12, 12,3,4,1,11,44, 12,3,4,4,12,12, + 12,3,4,6,3,28, 13,6,13,1,2,41, 13,6,13,3,2,41, 13,6,13,5,2,25, 13,6,12,1,3,41, 13,6,12,3,3,41, 13,6,11,1,4,41, 13,6,11,3,4,41, + 13,6,10,1,5,41, 13,6,10,3,5,41, 13,6,9,1,6,41, 13,6,9,3,6,41, 13,6,8,1,7,41, 13,6,8,3,7,41, 13,6,7,1,8,41, 13,6,7,3,8,41, + 13,6,6,1,9,41, 13,6,6,3,9,41, 13,6,5,1,10,41, 13,6,5,3,10,41, 13,6,4,1,11,41, 13,6,4,3,11,41, 13,6,3,1,12,41, 13,6,3,3,12,41, + 13,6,2,1,13,41, 13,6,2,3,13,41, 13,6,1,1,14,41, 13,6,1,3,14,41, 13,6,1,4,2,25, 13,6,1,6,2,25, 13,5,13,1,2,42, 13,5,13,4,13,10, + 13,5,13,5,13,10, 13,5,12,1,3,42, 13,5,11,1,4,42, 13,5,10,1,5,42, 13,5,9,1,6,42, 13,5,8,1,7,42, 13,5,7,1,8,42, 13,5,6,1,9,42, + 13,5,5,1,10,42, 13,5,4,1,11,42, 13,5,3,1,12,42, 13,5,2,1,13,42, 13,5,2,4,13,10, 13,5,2,6,2,26, 13,4,12,1,3,43, 13,4,12,4,13,11, + 13,4,12,5,13,11, 13,4,11,1,4,43, 13,4,11,4,13,11, 13,4,10,1,5,43, 13,4,10,4,13,11, 13,4,9,1,6,43, 13,4,9,4,13,11, 13,4,8,1,7,43, + 13,4,8,4,13,11, 13,4,7,1,8,43, 13,4,7,4,13,11, 13,4,6,1,9,43, 13,4,6,4,13,11, 13,4,5,1,10,43, 13,4,5,4,13,11, 13,4,4,1,11,43, + 13,4,4,4,13,11, 13,4,3,1,12,43, 13,4,3,4,13,11, 13,4,3,6,2,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1654, + count = 1138, + faces = { + 0,10,13,2,2,83, 0,10,13,3,2,83, 0,10,13,5,0,53, 0,10,12,2,3,83, 0,10,12,3,3,83, 0,10,11,2,4,83, 0,10,11,3,4,83, 0,10,10,2,5,83, + 0,10,10,3,5,83, 0,10,9,2,6,83, 0,10,9,3,6,83, 0,10,8,2,7,83, 0,10,8,3,7,83, 0,10,7,2,8,83, 0,10,7,3,8,83, 0,10,6,2,9,83, + 0,10,6,3,9,83, 0,10,5,2,10,83, 0,10,5,3,10,83, 0,10,4,2,11,83, 0,10,4,3,11,83, 0,10,3,2,12,83, 0,10,3,3,12,83, 0,10,2,2,13,83, + 0,10,2,3,13,83, 0,10,1,2,14,83, 0,10,1,3,14,83, 0,10,1,6,0,53, 0,9,14,2,1,84, 0,9,14,3,1,84, 0,9,14,5,0,54, 0,9,13,2,2,84, + 0,9,12,2,3,84, 0,9,11,2,4,84, 0,9,10,2,5,84, 0,9,9,2,6,84, 0,9,8,2,7,84, 0,9,7,2,8,84, 0,9,6,2,9,84, 0,9,5,2,10,84, + 0,9,4,2,11,84, 0,9,3,2,12,84, 0,9,2,2,13,84, 0,9,1,2,14,84, 0,9,1,6,15,69, 0,8,15,2,0,85, 0,8,15,3,0,85, 0,8,15,4,0,55, + 0,8,15,5,0,55, 0,8,14,2,1,85, 0,8,13,2,2,85, 0,8,12,2,3,85, 0,8,11,2,4,85, 0,8,10,2,5,85, 0,8,9,2,6,85, 0,8,8,2,7,85, + 0,8,7,2,8,85, 0,8,6,2,9,85, 0,8,5,2,10,85, 0,8,4,2,11,85, 0,8,3,2,12,85, 0,8,2,2,13,85, 0,8,1,2,14,85, 0,8,1,4,0,55, + 0,8,1,6,15,70, 0,7,14,2,1,86, 0,7,14,4,0,56, 0,7,14,5,0,56, 0,7,13,2,2,86, 0,7,12,2,3,86, 0,7,11,2,4,86, 0,7,10,2,5,86, + 0,7,9,2,6,86, 0,7,8,2,7,86, 0,7,7,2,8,86, 0,7,6,2,9,86, 0,7,5,2,10,86, 0,7,4,2,11,86, 0,7,3,2,12,86, 0,7,2,2,13,86, + 0,7,2,6,15,71, 0,6,13,2,2,87, 0,6,13,4,15,72, 0,6,13,5,15,72, 0,6,12,2,3,87, 0,6,12,4,15,72, 0,6,11,2,4,87, 0,6,11,4,15,72, + 0,6,10,2,5,87, 0,6,10,4,15,72, 0,6,9,2,6,87, 0,6,9,4,15,72, 0,6,8,2,7,87, 0,6,8,4,15,72, 0,6,7,2,8,87, 0,6,7,4,15,72, + 0,6,6,2,9,87, 0,6,6,4,15,72, 0,6,5,2,10,87, 0,6,5,4,15,72, 0,6,4,2,11,87, 0,6,4,4,15,72, 0,6,3,2,12,87, 0,6,3,4,15,72, + 0,6,2,2,13,87, 0,6,2,4,15,72, 0,6,2,6,15,72, 1,11,13,1,2,82, 1,11,13,2,2,82, 1,11,13,3,2,82, 1,11,13,5,1,52, 1,11,12,1,3,82, + 1,11,12,2,3,82, 1,11,12,3,3,82, 1,11,11,1,4,82, 1,11,11,2,4,82, 1,11,11,3,4,82, 1,11,10,1,5,82, 1,11,10,2,5,82, 1,11,10,3,5,82, + 1,11,9,1,6,82, 1,11,9,2,6,82, 1,11,9,3,6,82, 1,11,8,1,7,82, 1,11,8,2,7,82, 1,11,8,3,7,82, 1,11,7,1,8,82, 1,11,7,2,8,82, + 1,11,7,3,8,82, 1,11,6,1,9,82, 1,11,6,2,9,82, 1,11,6,3,9,82, 1,11,5,1,10,82, 1,11,5,2,10,82, 1,11,5,3,10,82, 1,11,4,1,11,82, + 1,11,4,2,11,82, 1,11,4,3,11,82, 1,11,3,1,12,82, 1,11,3,2,12,82, 1,11,3,3,12,82, 1,11,2,1,13,82, 1,11,2,2,13,82, 1,11,2,3,13,82, + 1,11,2,6,1,52, 1,10,13,5,1,53, 1,10,1,3,14,83, 1,10,1,6,14,68, 1,9,14,3,1,84, 1,9,14,5,1,54, 1,9,1,6,14,69, 1,8,15,3,0,85, + 1,8,15,4,1,55, 1,8,15,5,1,55, 1,8,1,4,1,55, 1,8,1,6,14,70, 1,7,14,4,1,56, 1,7,14,5,1,56, 1,7,2,6,14,71, 1,6,13,5,1,57, + 1,6,2,6,14,72, 1,5,13,2,2,88, 1,5,13,4,14,73, 1,5,13,5,14,73, 1,5,12,2,3,88, 1,5,12,4,14,73, 1,5,11,2,4,88, 1,5,11,4,14,73, + 1,5,10,2,5,88, 1,5,10,4,14,73, 1,5,9,2,6,88, 1,5,9,4,14,73, 1,5,8,2,7,88, 1,5,8,4,14,73, 1,5,7,2,8,88, 1,5,7,4,14,73, + 1,5,6,2,9,88, 1,5,6,4,14,73, 1,5,5,2,10,88, 1,5,5,4,14,73, 1,5,4,2,11,88, 1,5,4,4,14,73, 1,5,3,2,12,88, 1,5,3,4,14,73, + 1,5,2,2,13,88, 1,5,2,4,14,73, 1,5,2,6,14,73, 2,10,13,1,2,83, 2,10,13,3,2,83, 2,10,13,5,2,53, 2,10,12,1,3,83, 2,10,12,3,3,83, + 2,10,11,1,4,83, 2,10,11,3,4,83, 2,10,10,1,5,83, 2,10,10,3,5,83, 2,10,9,1,6,83, 2,10,9,3,6,83, 2,10,8,1,7,83, 2,10,8,3,7,83, + 2,10,7,1,8,83, 2,10,7,3,8,83, 2,10,6,1,9,83, 2,10,6,3,9,83, 2,10,5,1,10,83, 2,10,5,3,10,83, 2,10,4,1,11,83, 2,10,4,3,11,83, + 2,10,3,1,12,83, 2,10,3,3,12,83, 2,10,2,1,13,83, 2,10,2,3,13,83, 2,10,1,1,14,83, 2,10,1,3,14,83, 2,10,1,6,2,53, 2,9,14,3,1,84, + 2,9,14,5,2,54, 2,9,1,6,13,69, 2,8,15,3,0,85, 2,8,15,4,2,55, 2,8,15,5,2,55, 2,8,1,4,2,55, 2,8,1,6,13,70, 2,7,14,4,2,56, + 2,7,14,5,2,56, 2,7,2,6,13,71, 2,6,13,5,2,57, 2,6,2,6,13,72, 2,5,13,4,2,58, 2,5,13,5,2,58, 2,5,3,4,2,58, 2,5,2,4,2,58, + 2,5,2,6,13,73, 2,4,12,2,3,89, 2,4,12,4,13,74, 2,4,12,5,13,74, 2,4,11,2,4,89, 2,4,11,4,13,74, 2,4,10,2,5,89, 2,4,10,4,13,74, + 2,4,9,2,6,89, 2,4,9,4,13,74, 2,4,8,2,7,89, 2,4,8,4,13,74, 2,4,7,2,8,89, 2,4,7,4,13,74, 2,4,6,2,9,89, 2,4,6,4,13,74, + 2,4,5,2,10,89, 2,4,5,4,13,74, 2,4,4,2,11,89, 2,4,4,4,13,74, 2,4,4,6,13,74, 3,9,14,3,1,84, 3,9,14,5,3,54, 3,9,13,3,2,84, + 3,9,12,3,3,84, 3,9,11,3,4,84, 3,9,10,3,5,84, 3,9,9,3,6,84, 3,9,8,3,7,84, 3,9,7,3,8,84, 3,9,6,3,9,84, 3,9,5,3,10,84, + 3,9,4,3,11,84, 3,9,3,3,12,84, 3,9,2,3,13,84, 3,9,1,3,14,84, 3,9,1,6,3,54, 3,8,15,3,0,85, 3,8,15,4,3,55, 3,8,15,5,3,55, + 3,8,1,4,3,55, 3,8,1,6,12,70, 3,7,14,4,3,56, 3,7,14,5,3,56, 3,7,2,6,12,71, 3,6,13,5,3,57, 3,6,2,6,12,72, 3,5,13,4,3,58, + 3,5,13,5,3,58, 3,5,3,4,3,58, 3,5,2,4,3,58, 3,5,2,6,12,73, 3,4,12,4,12,74, 3,4,12,5,12,74, 3,4,11,4,12,74, 3,4,10,4,12,74, + 3,4,9,4,12,74, 3,4,8,4,12,74, 3,4,7,4,12,74, 3,4,6,4,12,74, 3,4,5,4,12,74, 3,4,4,4,12,74, 3,4,4,6,12,74, 4,12,12,2,3,81, + 4,12,12,3,3,81, 4,12,12,5,4,51, 4,12,11,2,4,81, 4,12,11,3,4,81, 4,12,10,2,5,81, 4,12,10,3,5,81, 4,12,9,2,6,81, 4,12,9,3,6,81, + 4,12,8,2,7,81, 4,12,8,3,7,81, 4,12,7,2,8,81, 4,12,7,3,8,81, 4,12,6,2,9,81, 4,12,6,3,9,81, 4,12,5,2,10,81, 4,12,5,3,10,81, + 4,12,4,2,11,81, 4,12,4,3,11,81, 4,12,3,2,12,81, 4,12,3,3,12,81, 4,12,3,6,4,51, 4,11,13,2,2,82, 4,11,13,3,2,82, 4,11,13,5,4,52, + 4,11,12,2,3,82, 4,11,11,2,4,82, 4,11,10,2,5,82, 4,11,9,2,6,82, 4,11,8,2,7,82, 4,11,7,2,8,82, 4,11,6,2,9,82, 4,11,5,2,10,82, + 4,11,4,2,11,82, 4,11,3,2,12,82, 4,11,2,2,13,82, 4,11,2,3,13,82, 4,11,2,6,11,67, 4,10,13,2,2,83, 4,10,13,5,4,53, 4,10,12,2,3,83, + 4,10,11,2,4,83, 4,10,10,2,5,83, 4,10,9,2,6,83, 4,10,8,2,7,83, 4,10,7,2,8,83, 4,10,6,2,9,83, 4,10,5,2,10,83, 4,10,4,2,11,83, + 4,10,3,2,12,83, 4,10,2,2,13,83, 4,10,1,2,14,83, 4,10,1,3,14,83, 4,10,1,6,11,68, 4,9,14,3,1,84, 4,9,14,5,4,54, 4,9,1,6,11,69, + 4,8,15,3,0,85, 4,8,15,4,4,55, 4,8,15,5,4,55, 4,8,1,4,4,55, 4,8,1,6,11,70, 4,7,14,4,4,56, 4,7,14,5,4,56, 4,7,2,6,11,71, + 4,6,13,5,4,57, 4,6,2,6,11,72, 4,5,13,4,4,58, 4,5,13,5,4,58, 4,5,3,4,4,58, 4,5,2,4,4,58, 4,5,2,6,11,73, 4,4,12,4,4,59, + 4,4,12,5,4,59, 4,4,4,4,4,59, 4,4,4,6,11,74, 4,3,11,2,4,90, 4,3,11,4,11,75, 4,3,11,5,11,75, 4,3,10,2,5,90, 4,3,10,4,11,75, + 4,3,9,2,6,90, 4,3,9,4,11,75, 4,3,8,2,7,90, 4,3,8,4,11,75, 4,3,7,2,8,90, 4,3,7,4,11,75, 4,3,6,2,9,90, 4,3,6,4,11,75, + 4,3,5,2,10,90, 4,3,5,4,11,75, 4,3,5,6,11,75, 5,13,11,2,4,80, 5,13,11,3,4,80, 5,13,11,5,5,50, 5,13,10,2,5,80, 5,13,10,3,5,80, + 5,13,9,2,6,80, 5,13,9,3,6,80, 5,13,8,2,7,80, 5,13,8,3,7,80, 5,13,7,2,8,80, 5,13,7,3,8,80, 5,13,6,2,9,80, 5,13,6,3,9,80, + 5,13,5,2,10,80, 5,13,5,3,10,80, 5,13,4,2,11,80, 5,13,4,3,11,80, 5,13,4,6,5,50, 5,12,12,3,3,81, 5,12,12,5,5,51, 5,12,3,3,12,81, + 5,12,3,6,10,66, 5,11,13,3,2,82, 5,11,13,5,5,52, 5,11,2,3,13,82, 5,11,2,6,10,67, 5,10,13,5,5,53, 5,10,1,3,14,83, 5,10,1,6,10,68, + 5,9,14,3,1,84, 5,9,14,5,5,54, 5,9,1,6,10,69, 5,8,15,3,0,85, 5,8,15,4,5,55, 5,8,15,5,5,55, 5,8,1,4,5,55, 5,8,1,6,10,70, + 5,7,14,4,5,56, 5,7,14,5,5,56, 5,7,2,6,10,71, 5,6,13,5,5,57, 5,6,2,6,10,72, 5,5,13,4,5,58, 5,5,13,5,5,58, 5,5,3,4,5,58, + 5,5,2,4,5,58, 5,5,2,6,10,73, 5,4,12,4,5,59, 5,4,12,5,5,59, 5,4,4,4,5,59, 5,4,4,6,10,74, 5,3,11,4,5,60, 5,3,11,5,5,60, + 5,3,10,4,5,60, 5,3,6,4,5,60, 5,3,5,4,5,60, 5,3,5,6,10,75, 5,2,9,2,6,91, 5,2,9,4,10,76, 5,2,9,5,10,76, 5,2,8,2,7,91, + 5,2,8,4,10,76, 5,2,7,2,8,91, 5,2,7,4,10,76, 5,2,7,6,10,76, 6,13,11,3,4,80, 6,13,11,5,6,50, 6,13,10,3,5,80, 6,13,9,3,6,80, + 6,13,8,3,7,80, 6,13,7,3,8,80, 6,13,6,3,9,80, 6,13,5,3,10,80, 6,13,4,3,11,80, 6,13,4,6,9,65, 6,12,12,3,3,81, 6,12,12,5,6,51, + 6,12,3,3,12,81, 6,12,3,6,9,66, 6,11,13,3,2,82, 6,11,13,5,6,52, 6,11,2,3,13,82, 6,11,2,6,9,67, 6,10,13,5,6,53, 6,10,1,3,14,83, + 6,10,1,6,9,68, 6,9,14,3,1,84, 6,9,14,5,6,54, 6,9,1,6,9,69, 6,8,15,3,0,85, 6,8,15,4,6,55, 6,8,15,5,6,55, 6,8,1,4,6,55, + 6,8,1,6,9,70, 6,7,14,4,6,56, 6,7,14,5,6,56, 6,7,2,6,9,71, 6,6,13,5,6,57, 6,6,2,6,9,72, 6,5,13,4,6,58, 6,5,13,5,6,58, + 6,5,3,4,6,58, 6,5,2,4,6,58, 6,5,2,6,9,73, 6,4,12,4,6,59, 6,4,12,5,6,59, 6,4,4,4,6,59, 6,4,4,6,9,74, 6,3,11,4,6,60, + 6,3,11,5,6,60, 6,3,10,4,6,60, 6,3,6,4,6,60, 6,3,5,4,6,60, 6,3,5,6,9,75, 6,2,9,4,6,61, 6,2,9,5,6,61, 6,2,7,6,9,76, + 6,1,8,2,7,92, 6,1,8,4,6,62, 6,1,8,5,6,62, 6,1,7,2,8,92, 6,1,7,6,9,77, 6,0,7,1,8,93, 6,0,7,2,8,93, 6,0,7,5,6,63, + 6,0,7,6,9,78, 7,13,11,3,4,80, 7,13,11,5,7,50, 7,13,10,3,5,80, 7,13,9,3,6,80, 7,13,8,3,7,80, 7,13,7,3,8,80, 7,13,6,3,9,80, + 7,13,5,3,10,80, 7,13,4,3,11,80, 7,13,4,6,8,65, 7,12,12,3,3,81, 7,12,12,5,7,51, 7,12,3,3,12,81, 7,12,3,6,8,66, 7,11,13,3,2,82, + 7,11,13,5,7,52, 7,11,2,3,13,82, 7,11,2,6,8,67, 7,10,13,5,7,53, 7,10,1,3,14,83, 7,10,1,6,8,68, 7,9,14,3,1,84, 7,9,14,5,7,54, + 7,9,1,6,8,69, 7,8,15,3,0,85, 7,8,15,4,7,55, 7,8,15,5,7,55, 7,8,1,4,7,55, 7,8,1,6,8,70, 7,7,14,4,7,56, 7,7,14,5,7,56, + 7,7,2,6,8,71, 7,6,13,5,7,57, 7,6,2,6,8,72, 7,5,13,4,7,58, 7,5,13,5,7,58, 7,5,3,4,7,58, 7,5,2,4,7,58, 7,5,2,6,8,73, + 7,4,12,4,7,59, 7,4,12,5,7,59, 7,4,4,4,7,59, 7,4,4,6,8,74, 7,3,11,4,7,60, 7,3,11,5,7,60, 7,3,10,4,7,60, 7,3,6,4,7,60, + 7,3,5,4,7,60, 7,3,5,6,8,75, 7,2,9,4,7,61, 7,2,9,5,7,61, 7,2,7,6,8,76, 7,1,8,4,8,77, 7,1,8,5,8,77, 7,1,7,4,8,77, + 7,1,7,6,8,77, 8,13,11,3,4,80, 8,13,11,5,8,50, 8,13,10,3,5,80, 8,13,9,3,6,80, 8,13,8,3,7,80, 8,13,7,3,8,80, 8,13,6,3,9,80, + 8,13,5,3,10,80, 8,13,4,3,11,80, 8,13,4,6,7,65, 8,12,12,3,3,81, 8,12,12,5,8,51, 8,12,3,3,12,81, 8,12,3,6,7,66, 8,11,13,3,2,82, + 8,11,13,5,8,52, 8,11,2,3,13,82, 8,11,2,6,7,67, 8,10,13,5,8,53, 8,10,1,3,14,83, 8,10,1,6,7,68, 8,9,14,3,1,84, 8,9,14,5,8,54, + 8,9,1,6,7,69, 8,8,15,3,0,85, 8,8,15,4,8,55, 8,8,15,5,8,55, 8,8,1,4,8,55, 8,8,1,6,7,70, 8,7,14,4,8,56, 8,7,14,5,8,56, + 8,7,2,6,7,71, 8,6,13,5,8,57, 8,6,2,6,7,72, 8,5,13,4,8,58, 8,5,13,5,8,58, 8,5,3,4,8,58, 8,5,2,4,8,58, 8,5,2,6,7,73, + 8,4,12,4,8,59, 8,4,12,5,8,59, 8,4,4,4,8,59, 8,4,4,6,7,74, 8,3,11,4,8,60, 8,3,11,5,8,60, 8,3,10,4,8,60, 8,3,6,4,8,60, + 8,3,5,4,8,60, 8,3,5,6,7,75, 8,2,9,4,8,61, 8,2,9,5,8,61, 8,2,7,6,7,76, 8,1,8,4,7,77, 8,1,8,5,7,77, 8,1,7,4,7,77, + 8,1,7,6,7,77, 9,13,11,3,4,80, 9,13,11,5,9,50, 9,13,10,3,5,80, 9,13,9,3,6,80, 9,13,8,3,7,80, 9,13,7,3,8,80, 9,13,6,3,9,80, + 9,13,5,3,10,80, 9,13,4,3,11,80, 9,13,4,6,6,65, 9,12,12,3,3,81, 9,12,12,5,9,51, 9,12,3,3,12,81, 9,12,3,6,6,66, 9,11,13,3,2,82, + 9,11,13,5,9,52, 9,11,2,3,13,82, 9,11,2,6,6,67, 9,10,13,5,9,53, 9,10,1,3,14,83, 9,10,1,6,6,68, 9,9,14,3,1,84, 9,9,14,5,9,54, + 9,9,1,6,6,69, 9,8,15,3,0,85, 9,8,15,4,9,55, 9,8,15,5,9,55, 9,8,1,4,9,55, 9,8,1,6,6,70, 9,7,14,4,9,56, 9,7,14,5,9,56, + 9,7,2,6,6,71, 9,6,13,5,9,57, 9,6,2,6,6,72, 9,5,13,4,9,58, 9,5,13,5,9,58, 9,5,3,4,9,58, 9,5,2,4,9,58, 9,5,2,6,6,73, + 9,4,12,4,9,59, 9,4,12,5,9,59, 9,4,4,4,9,59, 9,4,4,6,6,74, 9,3,11,4,9,60, 9,3,11,5,9,60, 9,3,10,4,9,60, 9,3,6,4,9,60, + 9,3,5,4,9,60, 9,3,5,6,6,75, 9,2,9,4,9,61, 9,2,9,5,9,61, 9,2,7,6,6,76, 9,1,8,1,7,92, 9,1,8,4,9,62, 9,1,8,5,9,62, + 9,1,7,1,8,92, 9,1,7,6,6,77, 9,0,7,1,8,93, 9,0,7,2,8,93, 9,0,7,5,9,63, 9,0,7,6,6,78, 10,13,11,1,4,80, 10,13,11,3,4,80, + 10,13,11,5,10,50, 10,13,10,1,5,80, 10,13,10,3,5,80, 10,13,9,1,6,80, 10,13,9,3,6,80, 10,13,8,1,7,80, 10,13,8,3,7,80, 10,13,7,1,8,80, + 10,13,7,3,8,80, 10,13,6,1,9,80, 10,13,6,3,9,80, 10,13,5,1,10,80, 10,13,5,3,10,80, 10,13,4,1,11,80, 10,13,4,3,11,80, 10,13,4,6,10,50, + 10,12,12,3,3,81, 10,12,12,5,10,51, 10,12,3,3,12,81, 10,12,3,6,5,66, 10,11,13,3,2,82, 10,11,13,5,10,52, 10,11,2,3,13,82, 10,11,2,6,5,67, + 10,10,13,5,10,53, 10,10,1,3,14,83, 10,10,1,6,5,68, 10,9,14,3,1,84, 10,9,14,5,10,54, 10,9,1,6,5,69, 10,8,15,3,0,85, 10,8,15,4,10,55, + 10,8,15,5,10,55, 10,8,1,4,10,55, 10,8,1,6,5,70, 10,7,14,4,10,56, 10,7,14,5,10,56, 10,7,2,6,5,71, 10,6,13,5,10,57, 10,6,2,6,5,72, + 10,5,13,4,10,58, 10,5,13,5,10,58, 10,5,3,4,10,58, 10,5,2,4,10,58, 10,5,2,6,5,73, 10,4,12,4,10,59, 10,4,12,5,10,59, 10,4,4,4,10,59, + 10,4,4,6,5,74, 10,3,11,4,10,60, 10,3,11,5,10,60, 10,3,10,4,10,60, 10,3,6,4,10,60, 10,3,5,4,10,60, 10,3,5,6,5,75, 10,2,9,1,6,91, + 10,2,9,4,5,76, 10,2,9,5,5,76, 10,2,8,1,7,91, 10,2,8,4,5,76, 10,2,7,1,8,91, 10,2,7,4,5,76, 10,2,7,6,5,76, 11,12,12,1,3,81, + 11,12,12,3,3,81, 11,12,12,5,11,51, 11,12,11,1,4,81, 11,12,11,3,4,81, 11,12,10,1,5,81, 11,12,10,3,5,81, 11,12,9,1,6,81, 11,12,9,3,6,81, + 11,12,8,1,7,81, 11,12,8,3,7,81, 11,12,7,1,8,81, 11,12,7,3,8,81, 11,12,6,1,9,81, 11,12,6,3,9,81, 11,12,5,1,10,81, 11,12,5,3,10,81, + 11,12,4,1,11,81, 11,12,4,3,11,81, 11,12,3,1,12,81, 11,12,3,3,12,81, 11,12,3,6,11,51, 11,11,13,1,2,82, 11,11,13,3,2,82, 11,11,13,5,11,52, + 11,11,12,1,3,82, 11,11,11,1,4,82, 11,11,10,1,5,82, 11,11,9,1,6,82, 11,11,8,1,7,82, 11,11,7,1,8,82, 11,11,6,1,9,82, 11,11,5,1,10,82, + 11,11,4,1,11,82, 11,11,3,1,12,82, 11,11,2,1,13,82, 11,11,2,3,13,82, 11,11,2,6,4,67, 11,10,13,1,2,83, 11,10,13,5,11,53, 11,10,12,1,3,83, + 11,10,11,1,4,83, 11,10,10,1,5,83, 11,10,9,1,6,83, 11,10,8,1,7,83, 11,10,7,1,8,83, 11,10,6,1,9,83, 11,10,5,1,10,83, 11,10,4,1,11,83, + 11,10,3,1,12,83, 11,10,2,1,13,83, 11,10,1,1,14,83, 11,10,1,3,14,83, 11,10,1,6,4,68, 11,9,14,3,1,84, 11,9,14,5,11,54, 11,9,1,6,4,69, + 11,8,15,3,0,85, 11,8,15,4,11,55, 11,8,15,5,11,55, 11,8,1,4,11,55, 11,8,1,6,4,70, 11,7,14,4,11,56, 11,7,14,5,11,56, 11,7,2,6,4,71, + 11,6,13,5,11,57, 11,6,2,6,4,72, 11,5,13,4,11,58, 11,5,13,5,11,58, 11,5,3,4,11,58, 11,5,2,4,11,58, 11,5,2,6,4,73, 11,4,12,4,11,59, + 11,4,12,5,11,59, 11,4,4,4,11,59, 11,4,4,6,4,74, 11,3,11,1,4,90, 11,3,11,4,4,75, 11,3,11,5,4,75, 11,3,10,1,5,90, 11,3,10,4,4,75, + 11,3,9,1,6,90, 11,3,9,4,4,75, 11,3,8,1,7,90, 11,3,8,4,4,75, 11,3,7,1,8,90, 11,3,7,4,4,75, 11,3,6,1,9,90, 11,3,6,4,4,75, + 11,3,5,1,10,90, 11,3,5,4,4,75, 11,3,5,6,4,75, 12,9,14,3,1,84, 12,9,14,5,12,54, 12,9,13,3,2,84, 12,9,12,3,3,84, 12,9,11,3,4,84, + 12,9,10,3,5,84, 12,9,9,3,6,84, 12,9,8,3,7,84, 12,9,7,3,8,84, 12,9,6,3,9,84, 12,9,5,3,10,84, 12,9,4,3,11,84, 12,9,3,3,12,84, + 12,9,2,3,13,84, 12,9,1,3,14,84, 12,9,1,6,12,54, 12,8,15,3,0,85, 12,8,15,4,12,55, 12,8,15,5,12,55, 12,8,1,4,12,55, 12,8,1,6,3,70, + 12,7,14,4,12,56, 12,7,14,5,12,56, 12,7,2,6,3,71, 12,6,13,5,12,57, 12,6,2,6,3,72, 12,5,13,4,12,58, 12,5,13,5,12,58, 12,5,3,4,12,58, + 12,5,2,4,12,58, 12,5,2,6,3,73, 12,4,12,4,3,74, 12,4,12,5,3,74, 12,4,11,4,3,74, 12,4,10,4,3,74, 12,4,9,4,3,74, 12,4,8,4,3,74, + 12,4,7,4,3,74, 12,4,6,4,3,74, 12,4,5,4,3,74, 12,4,4,4,3,74, 12,4,4,6,3,74, 13,10,13,2,2,83, 13,10,13,3,2,83, 13,10,13,5,13,53, + 13,10,12,2,3,83, 13,10,12,3,3,83, 13,10,11,2,4,83, 13,10,11,3,4,83, 13,10,10,2,5,83, 13,10,10,3,5,83, 13,10,9,2,6,83, 13,10,9,3,6,83, + 13,10,8,2,7,83, 13,10,8,3,7,83, 13,10,7,2,8,83, 13,10,7,3,8,83, 13,10,6,2,9,83, 13,10,6,3,9,83, 13,10,5,2,10,83, 13,10,5,3,10,83, + 13,10,4,2,11,83, 13,10,4,3,11,83, 13,10,3,2,12,83, 13,10,3,3,12,83, 13,10,2,2,13,83, 13,10,2,3,13,83, 13,10,1,2,14,83, 13,10,1,3,14,83, + 13,10,1,6,13,53, 13,9,14,3,1,84, 13,9,14,5,13,54, 13,9,1,6,2,69, 13,8,15,3,0,85, 13,8,15,4,13,55, 13,8,15,5,13,55, 13,8,1,4,13,55, + 13,8,1,6,2,70, 13,7,14,4,13,56, 13,7,14,5,13,56, 13,7,2,6,2,71, 13,6,13,5,13,57, 13,6,2,6,2,72, 13,5,13,4,13,58, 13,5,13,5,13,58, + 13,5,3,4,13,58, 13,5,2,4,13,58, 13,5,2,6,2,73, 13,4,12,1,3,89, 13,4,12,4,2,74, 13,4,12,5,2,74, 13,4,11,1,4,89, 13,4,11,4,2,74, + 13,4,10,1,5,89, 13,4,10,4,2,74, 13,4,9,1,6,89, 13,4,9,4,2,74, 13,4,8,1,7,89, 13,4,8,4,2,74, 13,4,7,1,8,89, 13,4,7,4,2,74, + 13,4,6,1,9,89, 13,4,6,4,2,74, 13,4,5,1,10,89, 13,4,5,4,2,74, 13,4,4,1,11,89, 13,4,4,4,2,74, 13,4,4,6,2,74, 14,11,13,1,2,82, + 14,11,13,2,2,82, 14,11,13,3,2,82, 14,11,13,5,14,52, 14,11,12,1,3,82, 14,11,12,2,3,82, 14,11,12,3,3,82, 14,11,11,1,4,82, 14,11,11,2,4,82, + 14,11,11,3,4,82, 14,11,10,1,5,82, 14,11,10,2,5,82, 14,11,10,3,5,82, 14,11,9,1,6,82, 14,11,9,2,6,82, 14,11,9,3,6,82, 14,11,8,1,7,82, + 14,11,8,2,7,82, 14,11,8,3,7,82, 14,11,7,1,8,82, 14,11,7,2,8,82, 14,11,7,3,8,82, 14,11,6,1,9,82, 14,11,6,2,9,82, 14,11,6,3,9,82, + 14,11,5,1,10,82, 14,11,5,2,10,82, 14,11,5,3,10,82, 14,11,4,1,11,82, 14,11,4,2,11,82, 14,11,4,3,11,82, 14,11,3,1,12,82, 14,11,3,2,12,82, + 14,11,3,3,12,82, 14,11,2,1,13,82, 14,11,2,2,13,82, 14,11,2,3,13,82, 14,11,2,6,14,52, 14,10,13,5,14,53, 14,10,1,3,14,83, 14,10,1,6,1,68, + 14,9,14,3,1,84, 14,9,14,5,14,54, 14,9,1,6,1,69, 14,8,15,3,0,85, 14,8,15,4,14,55, 14,8,15,5,14,55, 14,8,1,4,14,55, 14,8,1,6,1,70, + 14,7,14,4,14,56, 14,7,14,5,14,56, 14,7,2,6,1,71, 14,6,13,5,14,57, 14,6,2,6,1,72, 14,5,13,1,2,88, 14,5,13,4,1,73, 14,5,13,5,1,73, + 14,5,12,1,3,88, 14,5,12,4,1,73, 14,5,11,1,4,88, 14,5,11,4,1,73, 14,5,10,1,5,88, 14,5,10,4,1,73, 14,5,9,1,6,88, 14,5,9,4,1,73, + 14,5,8,1,7,88, 14,5,8,4,1,73, 14,5,7,1,8,88, 14,5,7,4,1,73, 14,5,6,1,9,88, 14,5,6,4,1,73, 14,5,5,1,10,88, 14,5,5,4,1,73, + 14,5,4,1,11,88, 14,5,4,4,1,73, 14,5,3,1,12,88, 14,5,3,4,1,73, 14,5,2,1,13,88, 14,5,2,4,1,73, 14,5,2,6,1,73, 15,10,13,1,2,83, + 15,10,13,3,2,83, 15,10,13,5,15,53, 15,10,12,1,3,83, 15,10,12,3,3,83, 15,10,11,1,4,83, 15,10,11,3,4,83, 15,10,10,1,5,83, 15,10,10,3,5,83, + 15,10,9,1,6,83, 15,10,9,3,6,83, 15,10,8,1,7,83, 15,10,8,3,7,83, 15,10,7,1,8,83, 15,10,7,3,8,83, 15,10,6,1,9,83, 15,10,6,3,9,83, + 15,10,5,1,10,83, 15,10,5,3,10,83, 15,10,4,1,11,83, 15,10,4,3,11,83, 15,10,3,1,12,83, 15,10,3,3,12,83, 15,10,2,1,13,83, 15,10,2,3,13,83, + 15,10,1,1,14,83, 15,10,1,3,14,83, 15,10,1,6,15,53, 15,9,14,1,1,84, 15,9,14,3,1,84, 15,9,14,5,15,54, 15,9,13,1,2,84, 15,9,12,1,3,84, + 15,9,11,1,4,84, 15,9,10,1,5,84, 15,9,9,1,6,84, 15,9,8,1,7,84, 15,9,7,1,8,84, 15,9,6,1,9,84, 15,9,5,1,10,84, 15,9,4,1,11,84, + 15,9,3,1,12,84, 15,9,2,1,13,84, 15,9,1,1,14,84, 15,9,1,6,0,69, 15,8,15,1,0,85, 15,8,15,3,0,85, 15,8,15,4,15,55, 15,8,15,5,15,55, + 15,8,14,1,1,85, 15,8,13,1,2,85, 15,8,12,1,3,85, 15,8,11,1,4,85, 15,8,10,1,5,85, 15,8,9,1,6,85, 15,8,8,1,7,85, 15,8,7,1,8,85, + 15,8,6,1,9,85, 15,8,5,1,10,85, 15,8,4,1,11,85, 15,8,3,1,12,85, 15,8,2,1,13,85, 15,8,1,1,14,85, 15,8,1,4,15,55, 15,8,1,6,0,70, + 15,7,14,1,1,86, 15,7,14,4,15,56, 15,7,14,5,15,56, 15,7,13,1,2,86, 15,7,12,1,3,86, 15,7,11,1,4,86, 15,7,10,1,5,86, 15,7,9,1,6,86, + 15,7,8,1,7,86, 15,7,7,1,8,86, 15,7,6,1,9,86, 15,7,5,1,10,86, 15,7,4,1,11,86, 15,7,3,1,12,86, 15,7,2,1,13,86, 15,7,2,6,0,71, + 15,6,13,1,2,87, 15,6,13,4,0,72, 15,6,13,5,0,72, 15,6,12,1,3,87, 15,6,12,4,0,72, 15,6,11,1,4,87, 15,6,11,4,0,72, 15,6,10,1,5,87, + 15,6,10,4,0,72, 15,6,9,1,6,87, 15,6,9,4,0,72, 15,6,8,1,7,87, 15,6,8,4,0,72, 15,6,7,1,8,87, 15,6,7,4,0,72, 15,6,6,1,9,87, + 15,6,6,4,0,72, 15,6,5,1,10,87, 15,6,5,4,0,72, 15,6,4,1,11,87, 15,6,4,4,0,72, 15,6,3,1,12,87, 15,6,3,4,0,72, 15,6,2,1,13,87, + 15,6,2,4,0,72, 15,6,2,6,0,72, + }, + }, + }, +} diff --git a/assets/voxels/blue.lua b/assets/voxels/blue.lua new file mode 100644 index 0000000..a97339e --- /dev/null +++ b/assets/voxels/blue.lua @@ -0,0 +1,308 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "blue" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "blue", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1676, + count = 1084, + faces = { + 1,14,14,2,1,33, 1,14,14,3,1,33, 1,14,14,5,1,1, 1,14,13,2,2,33, 1,14,13,3,2,33, 1,14,12,2,3,33, 1,14,12,3,3,33, 1,14,11,2,4,33, + 1,14,11,3,4,33, 1,14,10,2,5,33, 1,14,10,3,5,33, 1,14,9,2,6,33, 1,14,9,3,6,33, 1,14,8,2,7,33, 1,14,8,3,7,33, 1,14,7,2,8,33, + 1,14,7,3,8,33, 1,14,6,2,9,33, 1,14,6,3,9,33, 1,14,5,2,10,33, 1,14,5,3,10,33, 1,14,4,2,11,33, 1,14,4,3,11,33, 1,14,4,6,14,17, + 1,13,14,2,1,34, 1,13,14,4,1,2, 1,13,14,5,1,2, 1,13,13,2,2,34, 1,13,13,4,1,2, 1,13,12,2,3,34, 1,13,12,4,1,2, 1,13,11,2,4,34, + 1,13,11,4,1,2, 1,13,10,2,5,34, 1,13,10,4,1,2, 1,13,9,2,6,34, 1,13,9,4,1,2, 1,13,8,2,7,34, 1,13,8,4,1,2, 1,13,7,2,8,34, + 1,13,7,4,1,2, 1,13,6,2,9,34, 1,13,6,4,1,2, 1,13,5,2,10,34, 1,13,5,4,1,2, 1,13,4,2,11,34, 1,13,4,4,1,2, 1,13,3,2,12,34, + 1,13,3,3,12,34, 1,13,3,4,1,2, 1,13,3,6,14,18, 1,10,12,2,3,37, 1,10,12,3,3,37, 1,10,12,5,1,5, 1,10,11,2,4,37, 1,10,11,3,4,37, + 1,10,10,2,5,37, 1,10,10,3,5,37, 1,10,9,2,6,37, 1,10,9,3,6,37, 1,10,8,2,7,37, 1,10,8,3,7,37, 1,10,7,2,8,37, 1,10,7,3,8,37, + 1,10,6,2,9,37, 1,10,6,3,9,37, 1,10,5,2,10,37, 1,10,5,3,10,37, 1,10,4,2,11,37, 1,10,4,3,11,37, 1,10,3,2,12,37, 1,10,3,3,12,37, + 1,10,2,2,13,37, 1,10,2,3,13,37, 1,10,2,4,1,5, 1,10,2,6,14,21, 1,9,12,2,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,10,2,5,38, + 1,9,9,2,6,38, 1,9,8,2,7,38, 1,9,7,2,8,38, 1,9,6,2,9,38, 1,9,5,2,10,38, 1,9,4,2,11,38, 1,9,3,2,12,38, 1,9,3,6,14,22, + 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, + 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, + 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,10,2,5,42, 1,5,10,3,5,42, + 1,5,10,4,1,10, 1,5,10,5,1,10, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, 1,5,7,3,8,42, + 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,3,2,12,42, 1,5,3,3,12,42, + 1,5,3,6,14,26, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,9,5,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, + 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,3,2,12,43, 1,4,3,4,1,11, + 1,4,3,6,14,27, 2,14,14,3,1,33, 2,14,14,5,2,1, 2,14,13,3,2,33, 2,14,12,3,3,33, 2,14,11,3,4,33, 2,14,10,3,5,33, 2,14,9,3,6,33, + 2,14,8,3,7,33, 2,14,7,3,8,33, 2,14,6,3,9,33, 2,14,5,3,10,33, 2,14,4,3,11,33, 2,14,4,6,13,17, 2,13,14,4,2,2, 2,13,14,5,2,2, + 2,13,3,3,12,34, 2,13,3,6,13,18, 2,12,13,2,2,35, 2,12,13,5,2,3, 2,12,12,2,3,35, 2,12,11,2,4,35, 2,12,10,2,5,35, 2,12,9,2,6,35, + 2,12,8,2,7,35, 2,12,7,2,8,35, 2,12,6,2,9,35, 2,12,5,2,10,35, 2,12,4,2,11,35, 2,12,3,2,12,35, 2,12,2,2,13,35, 2,12,2,3,13,35, + 2,12,2,6,13,19, 2,11,13,2,2,36, 2,11,13,4,2,4, 2,11,13,5,2,4, 2,11,12,2,3,36, 2,11,11,2,4,36, 2,11,10,2,5,36, 2,11,9,2,6,36, + 2,11,8,2,7,36, 2,11,7,2,8,36, 2,11,6,2,9,36, 2,11,5,2,10,36, 2,11,4,2,11,36, 2,11,3,2,12,36, 2,11,2,2,13,36, 2,11,2,6,13,20, + 2,10,12,5,2,5, 2,10,2,4,2,5, 2,10,2,6,13,21, 2,9,12,5,2,6, 2,9,3,6,13,22, 2,8,12,5,2,7, 2,8,3,4,2,7, 2,8,3,6,13,23, + 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, + 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,4,6,13,24, 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, + 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,3,2,12,41, 2,6,3,3,12,41, + 2,6,3,6,13,25, 2,5,10,4,2,10, 2,5,10,5,2,10, 2,5,3,6,13,26, 2,4,9,5,2,11, 2,4,3,6,13,27, 2,3,9,2,6,44, 2,3,9,4,2,12, + 2,3,9,5,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, + 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, 2,3,3,2,12,44, 2,3,3,4,2,12, 2,3,3,6,13,28, 3,14,14,3,1,33, 3,14,14,5,3,1, + 3,14,13,3,2,33, 3,14,12,3,3,33, 3,14,11,3,4,33, 3,14,10,3,5,33, 3,14,9,3,6,33, 3,14,8,3,7,33, 3,14,7,3,8,33, 3,14,6,3,9,33, + 3,14,5,3,10,33, 3,14,4,3,11,33, 3,14,4,6,12,17, 3,13,14,4,3,2, 3,13,14,5,3,2, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,13,5,3,3, + 3,12,2,3,13,35, 3,12,2,6,12,19, 3,11,13,4,3,4, 3,11,13,5,3,4, 3,11,2,6,12,20, 3,10,12,5,3,5, 3,10,2,4,3,5, 3,10,2,6,12,21, + 3,9,12,5,3,6, 3,9,3,6,12,22, 3,8,12,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,4,6,12,24, + 3,6,11,4,3,9, 3,6,11,5,3,9, 3,6,3,3,12,41, 3,6,3,6,12,25, 3,5,10,4,3,10, 3,5,10,5,3,10, 3,5,3,6,12,26, 3,4,9,5,3,11, + 3,4,3,6,12,27, 3,3,9,5,3,12, 3,3,3,4,3,12, 3,3,3,6,12,28, 3,2,10,2,5,45, 3,2,10,3,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, + 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,4,2,11,45, 3,2,4,4,3,13, 3,2,4,6,12,29, 3,1,10,2,5,46, + 3,1,10,4,3,14, 3,1,10,5,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, + 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,5,6,12,30, 4,14,14,3,1,33, 4,14,14,5,4,1, 4,14,13,3,2,33, + 4,14,12,3,3,33, 4,14,11,3,4,33, 4,14,10,3,5,33, 4,14,9,3,6,33, 4,14,8,3,7,33, 4,14,7,3,8,33, 4,14,6,3,9,33, 4,14,5,3,10,33, + 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,14,4,4,2, 4,13,14,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,5,4,3, 4,12,2,3,13,35, + 4,12,2,6,11,19, 4,11,13,4,4,4, 4,11,13,5,4,4, 4,11,2,6,11,20, 4,10,12,5,4,5, 4,10,2,4,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, + 4,9,3,6,11,22, 4,8,12,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,6,11,24, 4,6,11,4,4,9, + 4,6,11,5,4,9, 4,6,3,3,12,41, 4,6,3,6,11,25, 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,3,6,11,26, 4,4,9,5,4,11, 4,4,3,6,11,27, + 4,3,9,5,4,12, 4,3,3,4,4,12, 4,3,3,6,11,28, 4,2,10,3,5,45, 4,2,10,5,4,13, 4,2,4,4,4,13, 4,2,4,6,11,29, 4,1,10,4,4,14, + 4,1,10,5,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, 4,0,9,2,6,47, 4,0,9,5,4,15, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, + 4,0,6,6,11,31, 5,14,14,3,1,33, 5,14,14,5,5,1, 5,14,13,3,2,33, 5,14,12,3,3,33, 5,14,11,3,4,33, 5,14,10,3,5,33, 5,14,9,3,6,33, + 5,14,8,3,7,33, 5,14,7,3,8,33, 5,14,6,3,9,33, 5,14,5,3,10,33, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,14,4,5,2, 5,13,14,5,5,2, + 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,5,5,3, 5,12,2,3,13,35, 5,12,2,6,10,19, 5,11,13,4,5,4, 5,11,13,5,5,4, 5,11,2,6,10,20, + 5,10,12,5,5,5, 5,10,2,4,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,3,6,10,22, 5,8,12,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, + 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,4,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,3,3,12,41, 5,6,3,6,10,25, 5,5,10,4,5,10, + 5,5,10,5,5,10, 5,5,3,6,10,26, 5,4,9,5,5,11, 5,4,3,6,10,27, 5,3,9,5,5,12, 5,3,3,4,5,12, 5,3,3,6,10,28, 5,2,10,3,5,45, + 5,2,10,5,5,13, 5,2,4,4,5,13, 5,2,4,6,10,29, 5,1,10,4,5,14, 5,1,10,5,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,9,5,5,15, + 5,0,6,6,10,31, 6,15,9,2,6,32, 6,15,9,3,6,32, 6,15,9,5,6,0, 6,15,8,2,7,32, 6,15,8,3,7,32, 6,15,7,2,8,32, 6,15,7,3,8,32, + 6,15,6,2,9,32, 6,15,6,3,9,32, 6,15,6,6,9,16, 6,14,14,3,1,33, 6,14,14,5,6,1, 6,14,13,3,2,33, 6,14,12,3,3,33, 6,14,11,3,4,33, + 6,14,10,3,5,33, 6,14,5,3,10,33, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,14,4,6,2, 6,13,14,5,6,2, 6,13,3,3,12,34, 6,13,3,6,9,18, + 6,12,13,5,6,3, 6,12,2,3,13,35, 6,12,2,6,9,19, 6,11,13,4,6,4, 6,11,13,5,6,4, 6,11,2,6,9,20, 6,10,12,5,6,5, 6,10,2,4,6,5, + 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,3,6,9,22, 6,8,12,5,6,7, 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, + 6,7,4,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, 6,6,3,3,12,41, 6,6,3,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, 6,5,3,6,9,26, + 6,4,9,5,6,11, 6,4,3,6,9,27, 6,3,9,5,6,12, 6,3,3,4,6,12, 6,3,3,6,9,28, 6,2,10,3,5,45, 6,2,10,5,6,13, 6,2,4,4,6,13, + 6,2,4,6,9,29, 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,9,1,6,47, 6,0,9,5,6,15, 6,0,8,1,7,47, + 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,15,9,3,6,32, 7,15,9,5,7,0, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, + 7,15,6,6,8,16, 7,14,14,3,1,33, 7,14,14,5,7,1, 7,14,13,3,2,33, 7,14,12,3,3,33, 7,14,11,3,4,33, 7,14,10,3,5,33, 7,14,5,3,10,33, + 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,14,4,7,2, 7,13,14,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,5,7,3, 7,12,2,3,13,35, + 7,12,2,6,8,19, 7,11,13,4,7,4, 7,11,13,5,7,4, 7,11,2,6,8,20, 7,10,12,5,7,5, 7,10,2,4,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, + 7,9,3,6,8,22, 7,8,12,5,7,7, 7,8,3,4,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,4,6,8,24, 7,6,11,4,7,9, + 7,6,11,5,7,9, 7,6,3,3,12,41, 7,6,3,6,8,25, 7,5,10,4,7,10, 7,5,10,5,7,10, 7,5,3,6,8,26, 7,4,9,5,7,11, 7,4,3,6,8,27, + 7,3,9,5,7,12, 7,3,3,4,7,12, 7,3,3,6,8,28, 7,2,10,3,5,45, 7,2,10,5,7,13, 7,2,4,4,7,13, 7,2,4,6,8,29, 7,1,10,4,7,14, + 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, 8,15,9,3,6,32, + 8,15,9,5,8,0, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,14,3,1,33, 8,14,14,5,8,1, 8,14,13,3,2,33, + 8,14,12,3,3,33, 8,14,11,3,4,33, 8,14,10,3,5,33, 8,14,5,3,10,33, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,14,4,8,2, 8,13,14,5,8,2, + 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,13,5,8,3, 8,12,2,3,13,35, 8,12,2,6,7,19, 8,11,13,4,8,4, 8,11,13,5,8,4, 8,11,2,6,7,20, + 8,10,12,5,8,5, 8,10,2,4,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,3,6,7,22, 8,8,12,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, + 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,3,3,12,41, 8,6,3,6,7,25, 8,5,10,4,8,10, + 8,5,10,5,8,10, 8,5,3,6,7,26, 8,4,9,5,8,11, 8,4,3,6,7,27, 8,3,9,5,8,12, 8,3,3,4,8,12, 8,3,3,6,7,28, 8,2,10,3,5,45, + 8,2,10,5,8,13, 8,2,4,4,8,13, 8,2,4,6,7,29, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, + 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,9,1,6,32, 9,15,9,3,6,32, 9,15,9,5,9,0, 9,15,8,1,7,32, 9,15,8,3,7,32, + 9,15,7,1,8,32, 9,15,7,3,8,32, 9,15,6,1,9,32, 9,15,6,3,9,32, 9,15,6,6,6,16, 9,14,14,3,1,33, 9,14,14,5,9,1, 9,14,13,3,2,33, + 9,14,12,3,3,33, 9,14,11,3,4,33, 9,14,10,3,5,33, 9,14,5,3,10,33, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,14,4,9,2, 9,13,14,5,9,2, + 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,5,9,3, 9,12,2,3,13,35, 9,12,2,6,6,19, 9,11,13,4,9,4, 9,11,13,5,9,4, 9,11,2,6,6,20, + 9,10,12,5,9,5, 9,10,2,4,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,3,6,6,22, 9,8,12,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, + 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,4,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, 9,6,3,3,12,41, 9,6,3,6,6,25, 9,5,10,4,9,10, + 9,5,10,5,9,10, 9,5,3,6,6,26, 9,4,9,5,9,11, 9,4,3,6,6,27, 9,3,9,5,9,12, 9,3,3,4,9,12, 9,3,3,6,6,28, 9,2,10,3,5,45, + 9,2,10,5,9,13, 9,2,4,4,9,13, 9,2,4,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,9,2,6,47, + 9,0,9,5,9,15, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, 10,14,14,3,1,33, 10,14,14,5,10,1, 10,14,13,3,2,33, + 10,14,12,3,3,33, 10,14,11,3,4,33, 10,14,10,3,5,33, 10,14,9,3,6,33, 10,14,8,3,7,33, 10,14,7,3,8,33, 10,14,6,3,9,33, 10,14,5,3,10,33, + 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,14,4,10,2, 10,13,14,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,5,10,3, 10,12,2,3,13,35, + 10,12,2,6,5,19, 10,11,13,4,10,4, 10,11,13,5,10,4, 10,11,2,6,5,20, 10,10,12,5,10,5, 10,10,2,4,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, + 10,9,3,6,5,22, 10,8,12,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,4,6,5,24, 10,6,11,4,10,9, + 10,6,11,5,10,9, 10,6,3,3,12,41, 10,6,3,6,5,25, 10,5,10,4,10,10, 10,5,10,5,10,10, 10,5,3,6,5,26, 10,4,9,5,10,11, 10,4,3,6,5,27, + 10,3,9,5,10,12, 10,3,3,4,10,12, 10,3,3,6,5,28, 10,2,10,3,5,45, 10,2,10,5,10,13, 10,2,4,4,10,13, 10,2,4,6,5,29, 10,1,10,4,10,14, + 10,1,10,5,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,9,5,10,15, 10,0,6,6,5,31, 11,14,14,1,1,33, 11,14,14,3,1,33, 11,14,14,5,11,1, + 11,14,13,1,2,33, 11,14,13,3,2,33, 11,14,12,1,3,33, 11,14,12,3,3,33, 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,10,1,5,33, 11,14,10,3,5,33, + 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, + 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,14,4,11,2, 11,13,14,5,11,2, 11,13,3,3,12,34, + 11,13,3,6,4,18, 11,12,13,5,11,3, 11,12,2,3,13,35, 11,12,2,6,4,19, 11,11,13,4,11,4, 11,11,13,5,11,4, 11,11,2,6,4,20, 11,10,12,5,11,5, + 11,10,2,4,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,3,6,4,22, 11,8,12,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, + 11,7,12,5,11,8, 11,7,4,6,4,24, 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,3,3,12,41, 11,6,3,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, + 11,5,3,6,4,26, 11,4,9,5,11,11, 11,4,3,6,4,27, 11,3,9,5,11,12, 11,3,3,4,11,12, 11,3,3,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, + 11,2,4,4,11,13, 11,2,4,6,4,29, 11,1,10,4,11,14, 11,1,10,5,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,9,1,6,47, 11,0,9,5,11,15, + 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,6,6,4,31, 12,13,14,1,1,34, 12,13,14,3,1,34, 12,13,14,4,12,2, 12,13,14,5,12,2, + 12,13,13,1,2,34, 12,13,13,3,2,34, 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, + 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, + 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,5,12,3, + 12,12,2,3,13,35, 12,12,2,6,3,19, 12,11,13,4,12,4, 12,11,13,5,12,4, 12,11,2,6,3,20, 12,10,12,5,12,5, 12,10,2,4,12,5, 12,10,2,6,3,21, + 12,9,12,5,12,6, 12,9,3,6,3,22, 12,8,12,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,6,3,24, + 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,3,3,12,41, 12,6,3,6,3,25, 12,5,10,4,12,10, 12,5,10,5,12,10, 12,5,3,6,3,26, 12,4,9,5,12,11, + 12,4,3,6,3,27, 12,3,9,5,12,12, 12,3,3,4,12,12, 12,3,3,6,3,28, 12,2,10,1,5,45, 12,2,10,3,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, + 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,4,1,11,45, 12,2,4,4,12,13, 12,2,4,6,3,29, 12,1,10,1,5,46, + 12,1,10,4,12,14, 12,1,10,5,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, + 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,5,6,3,30, 13,12,13,1,2,35, 13,12,13,3,2,35, 13,12,13,5,13,3, + 13,12,12,1,3,35, 13,12,12,3,3,35, 13,12,11,1,4,35, 13,12,11,3,4,35, 13,12,10,1,5,35, 13,12,10,3,5,35, 13,12,9,1,6,35, 13,12,9,3,6,35, + 13,12,8,1,7,35, 13,12,8,3,7,35, 13,12,7,1,8,35, 13,12,7,3,8,35, 13,12,6,1,9,35, 13,12,6,3,9,35, 13,12,5,1,10,35, 13,12,5,3,10,35, + 13,12,4,1,11,35, 13,12,4,3,11,35, 13,12,3,1,12,35, 13,12,3,3,12,35, 13,12,2,1,13,35, 13,12,2,3,13,35, 13,12,2,6,2,19, 13,11,13,1,2,36, + 13,11,13,4,13,4, 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,11,1,4,36, 13,11,10,1,5,36, 13,11,9,1,6,36, 13,11,8,1,7,36, 13,11,7,1,8,36, + 13,11,6,1,9,36, 13,11,5,1,10,36, 13,11,4,1,11,36, 13,11,3,1,12,36, 13,11,2,1,13,36, 13,11,2,6,2,20, 13,10,12,5,13,5, 13,10,2,4,13,5, + 13,10,2,6,2,21, 13,9,12,5,13,6, 13,9,3,6,2,22, 13,8,12,5,13,7, 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,4,13,8, 13,7,12,5,13,8, + 13,7,4,6,2,24, 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, + 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,3,1,12,41, 13,6,3,3,12,41, 13,6,3,6,2,25, 13,5,10,4,13,10, 13,5,10,5,13,10, + 13,5,3,6,2,26, 13,4,9,5,13,11, 13,4,3,6,2,27, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, + 13,3,7,1,8,44, 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, + 13,3,3,1,12,44, 13,3,3,4,13,12, 13,3,3,6,2,28, 14,10,12,1,3,37, 14,10,12,3,3,37, 14,10,12,5,14,5, 14,10,11,1,4,37, 14,10,11,3,4,37, + 14,10,10,1,5,37, 14,10,10,3,5,37, 14,10,9,1,6,37, 14,10,9,3,6,37, 14,10,8,1,7,37, 14,10,8,3,7,37, 14,10,7,1,8,37, 14,10,7,3,8,37, + 14,10,6,1,9,37, 14,10,6,3,9,37, 14,10,5,1,10,37, 14,10,5,3,10,37, 14,10,4,1,11,37, 14,10,4,3,11,37, 14,10,3,1,12,37, 14,10,3,3,12,37, + 14,10,2,1,13,37, 14,10,2,3,13,37, 14,10,2,4,14,5, 14,10,2,6,1,21, 14,9,12,1,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,10,1,5,38, + 14,9,9,1,6,38, 14,9,8,1,7,38, 14,9,7,1,8,38, 14,9,6,1,9,38, 14,9,5,1,10,38, 14,9,4,1,11,38, 14,9,3,1,12,38, 14,9,3,6,1,22, + 14,8,12,1,3,39, 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,10,1,5,39, 14,8,9,1,6,39, 14,8,8,1,7,39, 14,8,7,1,8,39, 14,8,6,1,9,39, + 14,8,5,1,10,39, 14,8,4,1,11,39, 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,3,6,1,23, 14,7,12,1,3,40, 14,7,12,4,1,24, 14,7,12,5,1,24, + 14,7,11,1,4,40, 14,7,11,4,1,24, 14,7,10,1,5,40, 14,7,10,4,1,24, 14,7,9,1,6,40, 14,7,9,4,1,24, 14,7,8,1,7,40, 14,7,8,4,1,24, + 14,7,7,1,8,40, 14,7,7,4,1,24, 14,7,6,1,9,40, 14,7,6,4,1,24, 14,7,5,1,10,40, 14,7,5,4,1,24, 14,7,4,1,11,40, 14,7,4,4,1,24, + 14,7,4,6,1,24, 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,4,14,10, 14,5,10,5,14,10, 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, + 14,5,8,3,7,42, 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,4,1,11,42, + 14,5,4,3,11,42, 14,5,3,1,12,42, 14,5,3,3,12,42, 14,5,3,6,1,26, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,9,5,14,11, 14,4,8,1,7,43, + 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, + 14,4,4,4,14,11, 14,4,3,1,12,43, 14,4,3,4,14,11, 14,4,3,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1729, + count = 1114, + faces = { + 1,13,14,2,1,82, 1,13,14,3,1,82, 1,13,14,5,1,50, 1,13,13,2,2,82, 1,13,13,3,2,82, 1,13,12,2,3,82, 1,13,12,3,3,82, 1,13,11,2,4,82, + 1,13,11,3,4,82, 1,13,10,2,5,82, 1,13,10,3,5,82, 1,13,9,2,6,82, 1,13,9,3,6,82, 1,13,8,2,7,82, 1,13,8,3,7,82, 1,13,7,2,8,82, + 1,13,7,3,8,82, 1,13,6,2,9,82, 1,13,6,3,9,82, 1,13,5,2,10,82, 1,13,5,3,10,82, 1,13,4,2,11,82, 1,13,4,3,11,82, 1,13,4,6,14,66, + 1,12,14,2,1,83, 1,12,14,4,1,51, 1,12,14,5,1,51, 1,12,13,2,2,83, 1,12,13,4,1,51, 1,12,12,2,3,83, 1,12,12,4,1,51, 1,12,11,2,4,83, + 1,12,11,4,1,51, 1,12,10,2,5,83, 1,12,10,4,1,51, 1,12,9,2,6,83, 1,12,9,4,1,51, 1,12,8,2,7,83, 1,12,8,4,1,51, 1,12,7,2,8,83, + 1,12,7,4,1,51, 1,12,6,2,9,83, 1,12,6,4,1,51, 1,12,5,2,10,83, 1,12,5,4,1,51, 1,12,4,2,11,83, 1,12,4,4,1,51, 1,12,3,2,12,83, + 1,12,3,3,12,83, 1,12,3,4,1,51, 1,12,3,6,14,67, 1,9,12,2,3,86, 1,9,12,3,3,86, 1,9,12,5,1,54, 1,9,11,2,4,86, 1,9,11,3,4,86, + 1,9,10,2,5,86, 1,9,10,3,5,86, 1,9,9,2,6,86, 1,9,9,3,6,86, 1,9,8,2,7,86, 1,9,8,3,7,86, 1,9,7,2,8,86, 1,9,7,3,8,86, + 1,9,6,2,9,86, 1,9,6,3,9,86, 1,9,5,2,10,86, 1,9,5,3,10,86, 1,9,4,2,11,86, 1,9,4,3,11,86, 1,9,3,2,12,86, 1,9,3,3,12,86, + 1,9,2,2,13,86, 1,9,2,3,13,86, 1,9,2,4,1,54, 1,9,2,6,14,70, 1,8,12,2,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,10,2,5,87, + 1,8,9,2,6,87, 1,8,8,2,7,87, 1,8,7,2,8,87, 1,8,6,2,9,87, 1,8,5,2,10,87, 1,8,4,2,11,87, 1,8,3,2,12,87, 1,8,3,6,14,71, + 1,7,12,2,3,88, 1,7,12,5,1,56, 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, 1,7,6,2,9,88, + 1,7,5,2,10,88, 1,7,4,2,11,88, 1,7,3,2,12,88, 1,7,3,4,1,56, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, 1,6,12,5,1,57, + 1,6,11,2,4,89, 1,6,10,2,5,89, 1,6,9,2,6,89, 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, 1,6,4,2,11,89, + 1,6,4,6,1,57, 1,5,11,2,4,90, 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, 1,5,8,2,7,90, 1,5,7,2,8,90, + 1,5,6,2,9,90, 1,5,5,2,10,90, 1,5,4,2,11,90, 1,5,3,2,12,90, 1,5,3,3,12,90, 1,5,3,6,1,58, 1,4,10,2,5,91, 1,4,10,5,14,75, + 1,4,9,2,6,91, 1,4,8,2,7,91, 1,4,7,2,8,91, 1,4,6,2,9,91, 1,4,5,2,10,91, 1,4,4,2,11,91, 1,4,3,2,12,91, 1,4,3,6,14,75, + 1,3,12,2,3,92, 1,3,12,3,3,92, 1,3,12,4,14,76, 1,3,12,5,14,76, 1,3,11,2,4,92, 1,3,11,3,4,92, 1,3,11,4,14,76, 1,3,10,2,5,92, + 1,3,10,4,14,76, 1,3,9,2,6,92, 1,3,9,4,14,76, 1,3,8,2,7,92, 1,3,8,4,14,76, 1,3,7,2,8,92, 1,3,7,4,14,76, 1,3,6,2,9,92, + 1,3,6,4,14,76, 1,3,5,2,10,92, 1,3,5,4,14,76, 1,3,4,2,11,92, 1,3,4,4,14,76, 1,3,3,2,12,92, 1,3,3,4,14,76, 1,3,3,6,14,76, + 2,13,14,3,1,82, 2,13,14,5,2,50, 2,13,13,3,2,82, 2,13,12,3,3,82, 2,13,11,3,4,82, 2,13,10,3,5,82, 2,13,9,3,6,82, 2,13,8,3,7,82, + 2,13,7,3,8,82, 2,13,6,3,9,82, 2,13,5,3,10,82, 2,13,4,3,11,82, 2,13,4,6,13,66, 2,12,14,4,2,51, 2,12,14,5,2,51, 2,12,3,3,12,83, + 2,12,3,6,13,67, 2,11,13,2,2,84, 2,11,13,5,2,52, 2,11,12,2,3,84, 2,11,11,2,4,84, 2,11,10,2,5,84, 2,11,9,2,6,84, 2,11,8,2,7,84, + 2,11,7,2,8,84, 2,11,6,2,9,84, 2,11,5,2,10,84, 2,11,4,2,11,84, 2,11,3,2,12,84, 2,11,2,2,13,84, 2,11,2,3,13,84, 2,11,2,6,13,68, + 2,10,13,2,2,85, 2,10,13,4,2,53, 2,10,13,5,2,53, 2,10,12,2,3,85, 2,10,11,2,4,85, 2,10,10,2,5,85, 2,10,9,2,6,85, 2,10,8,2,7,85, + 2,10,7,2,8,85, 2,10,6,2,9,85, 2,10,5,2,10,85, 2,10,4,2,11,85, 2,10,3,2,12,85, 2,10,2,2,13,85, 2,10,2,6,13,69, 2,9,12,5,2,54, + 2,9,2,4,2,54, 2,9,2,6,13,70, 2,8,12,5,2,55, 2,8,3,6,13,71, 2,7,12,5,2,56, 2,7,3,4,2,56, 2,7,3,6,13,72, 2,6,12,4,2,57, + 2,6,12,5,2,57, 2,6,4,6,13,73, 2,5,11,4,2,58, 2,5,11,5,2,58, 2,5,3,3,12,90, 2,5,3,6,13,74, 2,4,10,5,2,59, 2,4,3,6,13,75, + 2,3,12,3,3,92, 2,3,12,5,13,76, 2,3,11,3,4,92, 2,3,3,6,13,76, 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, 2,2,13,5,13,77, + 2,2,12,2,3,93, 2,2,12,4,13,77, 2,2,11,2,4,93, 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,4,13,77, + 2,2,8,2,7,93, 2,2,8,4,13,77, 2,2,7,2,8,93, 2,2,7,4,13,77, 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,4,13,77, + 2,2,4,2,11,93, 2,2,4,4,13,77, 2,2,3,2,12,93, 2,2,3,4,13,77, 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, 2,2,2,6,13,77, + 3,13,14,3,1,82, 3,13,14,5,3,50, 3,13,13,3,2,82, 3,13,12,3,3,82, 3,13,11,3,4,82, 3,13,10,3,5,82, 3,13,9,3,6,82, 3,13,8,3,7,82, + 3,13,7,3,8,82, 3,13,6,3,9,82, 3,13,5,3,10,82, 3,13,4,3,11,82, 3,13,4,6,12,66, 3,12,14,4,3,51, 3,12,14,5,3,51, 3,12,3,3,12,83, + 3,12,3,6,12,67, 3,11,13,5,3,52, 3,11,2,3,13,84, 3,11,2,6,12,68, 3,10,13,4,3,53, 3,10,13,5,3,53, 3,10,2,6,12,69, 3,9,12,5,3,54, + 3,9,2,4,3,54, 3,9,2,6,12,70, 3,8,12,5,3,55, 3,8,3,6,12,71, 3,7,12,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, + 3,6,12,5,3,57, 3,6,4,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,3,3,12,90, 3,5,3,6,12,74, 3,4,10,5,3,59, 3,4,3,6,12,75, + 3,3,12,3,3,92, 3,3,12,5,12,76, 3,3,11,3,4,92, 3,3,3,6,12,76, 3,2,13,3,2,93, 3,2,13,4,12,77, 3,2,13,5,12,77, 3,2,12,4,12,77, + 3,2,11,4,12,77, 3,2,10,4,12,77, 3,2,9,4,12,77, 3,2,8,4,12,77, 3,2,7,4,12,77, 3,2,6,4,12,77, 3,2,5,4,12,77, 3,2,4,4,12,77, + 3,2,3,4,12,77, 3,2,2,3,13,93, 3,2,2,4,12,77, 3,2,2,6,12,77, 4,13,14,3,1,82, 4,13,14,5,4,50, 4,13,13,3,2,82, 4,13,12,3,3,82, + 4,13,11,3,4,82, 4,13,10,3,5,82, 4,13,9,3,6,82, 4,13,8,3,7,82, 4,13,7,3,8,82, 4,13,6,3,9,82, 4,13,5,3,10,82, 4,13,4,3,11,82, + 4,13,4,6,11,66, 4,12,14,4,4,51, 4,12,14,5,4,51, 4,12,3,3,12,83, 4,12,3,6,11,67, 4,11,13,5,4,52, 4,11,2,3,13,84, 4,11,2,6,11,68, + 4,10,13,4,4,53, 4,10,13,5,4,53, 4,10,2,6,11,69, 4,9,12,5,4,54, 4,9,2,4,4,54, 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,3,6,11,71, + 4,7,12,5,4,56, 4,7,3,4,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,6,11,73, 4,5,11,4,4,58, 4,5,11,5,4,58, + 4,5,3,3,12,90, 4,5,3,6,11,74, 4,4,10,5,4,59, 4,4,3,6,11,75, 4,3,12,3,3,92, 4,3,12,5,4,60, 4,3,11,3,4,92, 4,3,3,6,11,76, + 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,2,3,13,93, 4,2,2,6,11,77, 4,1,12,2,3,94, 4,1,12,4,4,62, 4,1,12,5,4,62, + 4,1,11,2,4,94, 4,1,11,4,4,62, 4,1,10,2,5,94, 4,1,10,4,4,62, 4,1,9,2,6,94, 4,1,9,4,4,62, 4,1,8,2,7,94, 4,1,8,4,4,62, + 4,1,7,2,8,94, 4,1,7,4,4,62, 4,1,6,2,9,94, 4,1,6,4,4,62, 4,1,5,2,10,94, 4,1,5,4,4,62, 4,1,4,2,11,94, 4,1,4,4,4,62, + 4,1,3,2,12,94, 4,1,3,4,4,62, 4,1,2,2,13,94, 4,1,2,4,4,62, 4,1,2,6,4,62, 5,13,14,3,1,82, 5,13,14,5,5,50, 5,13,13,3,2,82, + 5,13,12,3,3,82, 5,13,11,3,4,82, 5,13,10,3,5,82, 5,13,9,3,6,82, 5,13,8,3,7,82, 5,13,7,3,8,82, 5,13,6,3,9,82, 5,13,5,3,10,82, + 5,13,4,3,11,82, 5,13,4,6,10,66, 5,12,14,4,5,51, 5,12,14,5,5,51, 5,12,3,3,12,83, 5,12,3,6,10,67, 5,11,13,5,5,52, 5,11,2,3,13,84, + 5,11,2,6,10,68, 5,10,13,4,5,53, 5,10,13,5,5,53, 5,10,2,6,10,69, 5,9,12,5,5,54, 5,9,2,4,5,54, 5,9,2,6,10,70, 5,8,12,5,5,55, + 5,8,3,6,10,71, 5,7,12,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,4,6,10,73, 5,5,11,4,5,58, + 5,5,11,5,5,58, 5,5,3,3,12,90, 5,5,3,6,10,74, 5,4,10,5,5,59, 5,4,3,6,10,75, 5,3,12,3,3,92, 5,3,12,5,5,60, 5,3,11,3,4,92, + 5,3,3,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,3,13,93, 5,2,2,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, + 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,2,6,5,62, 5,0,11,2,4,95, 5,0,11,5,5,63, + 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,4,2,11,95, 5,0,4,5,5,63, 5,0,3,2,12,95, 5,0,3,6,5,63, 6,14,9,2,6,81, + 6,14,9,3,6,81, 6,14,9,5,6,49, 6,14,8,2,7,81, 6,14,8,3,7,81, 6,14,7,2,8,81, 6,14,7,3,8,81, 6,14,6,2,9,81, 6,14,6,3,9,81, + 6,14,6,6,9,65, 6,13,14,3,1,82, 6,13,14,5,6,50, 6,13,13,3,2,82, 6,13,12,3,3,82, 6,13,11,3,4,82, 6,13,10,3,5,82, 6,13,5,3,10,82, + 6,13,4,3,11,82, 6,13,4,6,9,66, 6,12,14,4,6,51, 6,12,14,5,6,51, 6,12,3,3,12,83, 6,12,3,6,9,67, 6,11,13,5,6,52, 6,11,2,3,13,84, + 6,11,2,6,9,68, 6,10,13,4,6,53, 6,10,13,5,6,53, 6,10,2,6,9,69, 6,9,12,5,6,54, 6,9,2,4,6,54, 6,9,2,6,9,70, 6,8,12,5,6,55, + 6,8,3,6,9,71, 6,7,12,5,6,56, 6,7,3,4,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,4,6,9,73, 6,5,11,4,6,58, + 6,5,11,5,6,58, 6,5,3,3,12,90, 6,5,3,6,9,74, 6,4,10,5,6,59, 6,4,3,6,9,75, 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,11,3,4,92, + 6,3,3,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, + 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, 6,1,2,6,9,78, 6,0,11,5,6,63, 6,0,9,6,6,63, + 6,0,4,5,6,63, 6,0,3,6,6,63, 7,14,9,3,6,81, 7,14,9,5,7,49, 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,6,6,8,65, + 7,13,14,3,1,82, 7,13,14,5,7,50, 7,13,13,3,2,82, 7,13,12,3,3,82, 7,13,11,3,4,82, 7,13,10,3,5,82, 7,13,5,3,10,82, 7,13,4,3,11,82, + 7,13,4,6,8,66, 7,12,14,4,7,51, 7,12,14,5,7,51, 7,12,3,3,12,83, 7,12,3,6,8,67, 7,11,13,5,7,52, 7,11,2,3,13,84, 7,11,2,6,8,68, + 7,10,13,4,7,53, 7,10,13,5,7,53, 7,10,2,6,8,69, 7,9,12,5,7,54, 7,9,2,4,7,54, 7,9,2,6,8,70, 7,8,12,5,7,55, 7,8,3,6,8,71, + 7,7,12,5,7,56, 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, + 7,5,3,3,12,90, 7,5,3,6,8,74, 7,4,10,5,7,59, 7,4,3,6,8,75, 7,3,12,3,3,92, 7,3,12,5,7,60, 7,3,11,3,4,92, 7,3,3,6,8,76, + 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, 7,2,2,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, + 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,2,4,7,62, 7,1,2,6,8,78, 7,0,11,5,7,63, 7,0,9,6,7,63, 7,0,4,5,7,63, + 7,0,3,6,7,63, 8,14,9,3,6,81, 8,14,9,5,8,49, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,6,6,7,65, 8,13,14,3,1,82, + 8,13,14,5,8,50, 8,13,13,3,2,82, 8,13,12,3,3,82, 8,13,11,3,4,82, 8,13,10,3,5,82, 8,13,5,3,10,82, 8,13,4,3,11,82, 8,13,4,6,7,66, + 8,12,14,4,8,51, 8,12,14,5,8,51, 8,12,3,3,12,83, 8,12,3,6,7,67, 8,11,13,5,8,52, 8,11,2,3,13,84, 8,11,2,6,7,68, 8,10,13,4,8,53, + 8,10,13,5,8,53, 8,10,2,6,7,69, 8,9,12,5,8,54, 8,9,2,4,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, 8,8,3,6,7,71, 8,7,12,5,8,56, + 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,6,7,73, 8,5,11,4,8,58, 8,5,11,5,8,58, 8,5,3,3,12,90, + 8,5,3,6,7,74, 8,4,10,5,8,59, 8,4,3,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, 8,3,11,3,4,92, 8,3,3,6,7,76, 8,2,13,3,2,93, + 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, + 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, 8,0,11,5,7,79, 8,0,9,6,7,79, 8,0,4,5,7,79, 8,0,3,6,7,79, + 9,14,9,1,6,81, 9,14,9,3,6,81, 9,14,9,5,9,49, 9,14,8,1,7,81, 9,14,8,3,7,81, 9,14,7,1,8,81, 9,14,7,3,8,81, 9,14,6,1,9,81, + 9,14,6,3,9,81, 9,14,6,6,6,65, 9,13,14,3,1,82, 9,13,14,5,9,50, 9,13,13,3,2,82, 9,13,12,3,3,82, 9,13,11,3,4,82, 9,13,10,3,5,82, + 9,13,5,3,10,82, 9,13,4,3,11,82, 9,13,4,6,6,66, 9,12,14,4,9,51, 9,12,14,5,9,51, 9,12,3,3,12,83, 9,12,3,6,6,67, 9,11,13,5,9,52, + 9,11,2,3,13,84, 9,11,2,6,6,68, 9,10,13,4,9,53, 9,10,13,5,9,53, 9,10,2,6,6,69, 9,9,12,5,9,54, 9,9,2,4,9,54, 9,9,2,6,6,70, + 9,8,12,5,9,55, 9,8,3,6,6,71, 9,7,12,5,9,56, 9,7,3,4,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,4,6,6,73, + 9,5,11,4,9,58, 9,5,11,5,9,58, 9,5,3,3,12,90, 9,5,3,6,6,74, 9,4,10,5,9,59, 9,4,3,6,6,75, 9,3,12,3,3,92, 9,3,12,5,9,60, + 9,3,11,3,4,92, 9,3,3,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,2,3,13,93, 9,2,2,6,6,77, 9,1,12,4,6,78, + 9,1,12,5,6,78, 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,5,4,6,78, 9,1,2,4,6,78, 9,1,2,6,6,78, 9,0,11,5,6,79, + 9,0,9,6,6,79, 9,0,4,5,6,79, 9,0,3,6,6,79, 10,13,14,3,1,82, 10,13,14,5,10,50, 10,13,13,3,2,82, 10,13,12,3,3,82, 10,13,11,3,4,82, + 10,13,10,3,5,82, 10,13,9,3,6,82, 10,13,8,3,7,82, 10,13,7,3,8,82, 10,13,6,3,9,82, 10,13,5,3,10,82, 10,13,4,3,11,82, 10,13,4,6,5,66, + 10,12,14,4,10,51, 10,12,14,5,10,51, 10,12,3,3,12,83, 10,12,3,6,5,67, 10,11,13,5,10,52, 10,11,2,3,13,84, 10,11,2,6,5,68, 10,10,13,4,10,53, + 10,10,13,5,10,53, 10,10,2,6,5,69, 10,9,12,5,10,54, 10,9,2,4,10,54, 10,9,2,6,5,70, 10,8,12,5,10,55, 10,8,3,6,5,71, 10,7,12,5,10,56, + 10,7,3,4,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,4,6,5,73, 10,5,11,4,10,58, 10,5,11,5,10,58, 10,5,3,3,12,90, + 10,5,3,6,5,74, 10,4,10,5,10,59, 10,4,3,6,5,75, 10,3,12,3,3,92, 10,3,12,5,10,60, 10,3,11,3,4,92, 10,3,3,6,5,76, 10,2,13,3,2,93, + 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,3,13,93, 10,2,2,6,5,77, 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, + 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,2,4,10,62, 10,1,2,6,5,78, 10,0,11,1,4,95, 10,0,11,5,5,79, 10,0,10,1,5,95, 10,0,9,1,6,95, + 10,0,9,6,5,79, 10,0,4,1,11,95, 10,0,4,5,5,79, 10,0,3,1,12,95, 10,0,3,6,5,79, 11,13,14,1,1,82, 11,13,14,3,1,82, 11,13,14,5,11,50, + 11,13,13,1,2,82, 11,13,13,3,2,82, 11,13,12,1,3,82, 11,13,12,3,3,82, 11,13,11,1,4,82, 11,13,11,3,4,82, 11,13,10,1,5,82, 11,13,10,3,5,82, + 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, 11,13,7,1,8,82, 11,13,7,3,8,82, 11,13,6,1,9,82, 11,13,6,3,9,82, + 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,4,1,11,82, 11,13,4,3,11,82, 11,13,4,6,4,66, 11,12,14,4,11,51, 11,12,14,5,11,51, 11,12,3,3,12,83, + 11,12,3,6,4,67, 11,11,13,5,11,52, 11,11,2,3,13,84, 11,11,2,6,4,68, 11,10,13,4,11,53, 11,10,13,5,11,53, 11,10,2,6,4,69, 11,9,12,5,11,54, + 11,9,2,4,11,54, 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,3,6,4,71, 11,7,12,5,11,56, 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, + 11,6,12,5,11,57, 11,6,4,6,4,73, 11,5,11,4,11,58, 11,5,11,5,11,58, 11,5,3,3,12,90, 11,5,3,6,4,74, 11,4,10,5,11,59, 11,4,3,6,4,75, + 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,11,3,4,92, 11,3,3,6,4,76, 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,3,13,93, + 11,2,2,6,4,77, 11,1,12,1,3,94, 11,1,12,4,11,62, 11,1,12,5,11,62, 11,1,11,1,4,94, 11,1,11,4,11,62, 11,1,10,1,5,94, 11,1,10,4,11,62, + 11,1,9,1,6,94, 11,1,9,4,11,62, 11,1,8,1,7,94, 11,1,8,4,11,62, 11,1,7,1,8,94, 11,1,7,4,11,62, 11,1,6,1,9,94, 11,1,6,4,11,62, + 11,1,5,1,10,94, 11,1,5,4,11,62, 11,1,4,1,11,94, 11,1,4,4,11,62, 11,1,3,1,12,94, 11,1,3,4,11,62, 11,1,2,1,13,94, 11,1,2,4,11,62, + 11,1,2,6,4,78, 12,12,14,1,1,83, 12,12,14,3,1,83, 12,12,14,4,12,51, 12,12,14,5,12,51, 12,12,13,1,2,83, 12,12,13,3,2,83, 12,12,12,1,3,83, + 12,12,12,3,3,83, 12,12,11,1,4,83, 12,12,11,3,4,83, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, 12,12,8,1,7,83, + 12,12,8,3,7,83, 12,12,7,1,8,83, 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, 12,12,4,1,11,83, + 12,12,4,3,11,83, 12,12,3,1,12,83, 12,12,3,3,12,83, 12,12,3,6,3,67, 12,11,13,5,12,52, 12,11,2,3,13,84, 12,11,2,6,3,68, 12,10,13,4,12,53, + 12,10,13,5,12,53, 12,10,2,6,3,69, 12,9,12,5,12,54, 12,9,2,4,12,54, 12,9,2,6,3,70, 12,8,12,5,12,55, 12,8,3,6,3,71, 12,7,12,5,12,56, + 12,7,3,4,12,56, 12,7,3,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,4,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, 12,5,3,3,12,90, + 12,5,3,6,3,74, 12,4,10,5,12,59, 12,4,3,6,3,75, 12,3,12,1,3,92, 12,3,12,3,3,92, 12,3,12,5,12,60, 12,3,11,1,4,92, 12,3,11,3,4,92, + 12,3,10,1,5,92, 12,3,9,1,6,92, 12,3,8,1,7,92, 12,3,7,1,8,92, 12,3,6,1,9,92, 12,3,5,1,10,92, 12,3,4,1,11,92, 12,3,3,1,12,92, + 12,3,3,6,3,76, 12,2,13,1,2,93, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,1,3,93, 12,2,12,4,12,61, 12,2,11,1,4,93, + 12,2,11,4,12,61, 12,2,10,1,5,93, 12,2,10,4,12,61, 12,2,9,1,6,93, 12,2,9,4,12,61, 12,2,8,1,7,93, 12,2,8,4,12,61, 12,2,7,1,8,93, + 12,2,7,4,12,61, 12,2,6,1,9,93, 12,2,6,4,12,61, 12,2,5,1,10,93, 12,2,5,4,12,61, 12,2,4,1,11,93, 12,2,4,4,12,61, 12,2,3,1,12,93, + 12,2,3,4,12,61, 12,2,2,1,13,93, 12,2,2,3,13,93, 12,2,2,4,12,61, 12,2,2,6,12,61, 13,11,13,1,2,84, 13,11,13,3,2,84, 13,11,13,5,13,52, + 13,11,12,1,3,84, 13,11,12,3,3,84, 13,11,11,1,4,84, 13,11,11,3,4,84, 13,11,10,1,5,84, 13,11,10,3,5,84, 13,11,9,1,6,84, 13,11,9,3,6,84, + 13,11,8,1,7,84, 13,11,8,3,7,84, 13,11,7,1,8,84, 13,11,7,3,8,84, 13,11,6,1,9,84, 13,11,6,3,9,84, 13,11,5,1,10,84, 13,11,5,3,10,84, + 13,11,4,1,11,84, 13,11,4,3,11,84, 13,11,3,1,12,84, 13,11,3,3,12,84, 13,11,2,1,13,84, 13,11,2,3,13,84, 13,11,2,6,2,68, 13,10,13,1,2,85, + 13,10,13,4,13,53, 13,10,13,5,13,53, 13,10,12,1,3,85, 13,10,11,1,4,85, 13,10,10,1,5,85, 13,10,9,1,6,85, 13,10,8,1,7,85, 13,10,7,1,8,85, + 13,10,6,1,9,85, 13,10,5,1,10,85, 13,10,4,1,11,85, 13,10,3,1,12,85, 13,10,2,1,13,85, 13,10,2,6,2,69, 13,9,12,5,13,54, 13,9,2,4,13,54, + 13,9,2,6,2,70, 13,8,12,5,13,55, 13,8,3,6,2,71, 13,7,12,5,13,56, 13,7,3,4,13,56, 13,7,3,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, + 13,6,4,6,2,73, 13,5,11,4,13,58, 13,5,11,5,13,58, 13,5,3,3,12,90, 13,5,3,6,2,74, 13,4,10,1,5,91, 13,4,10,4,13,59, 13,4,10,5,13,59, + 13,4,9,1,6,91, 13,4,9,4,13,59, 13,4,8,1,7,91, 13,4,8,4,13,59, 13,4,7,1,8,91, 13,4,7,4,13,59, 13,4,6,1,9,91, 13,4,6,4,13,59, + 13,4,5,1,10,91, 13,4,5,4,13,59, 13,4,4,1,11,91, 13,4,4,4,13,59, 13,4,3,1,12,91, 13,4,3,4,13,59, 13,4,3,6,2,75, 14,9,12,1,3,86, + 14,9,12,3,3,86, 14,9,12,5,14,54, 14,9,11,1,4,86, 14,9,11,3,4,86, 14,9,10,1,5,86, 14,9,10,3,5,86, 14,9,9,1,6,86, 14,9,9,3,6,86, + 14,9,8,1,7,86, 14,9,8,3,7,86, 14,9,7,1,8,86, 14,9,7,3,8,86, 14,9,6,1,9,86, 14,9,6,3,9,86, 14,9,5,1,10,86, 14,9,5,3,10,86, + 14,9,4,1,11,86, 14,9,4,3,11,86, 14,9,3,1,12,86, 14,9,3,3,12,86, 14,9,2,1,13,86, 14,9,2,3,13,86, 14,9,2,4,14,54, 14,9,2,6,1,70, + 14,8,12,1,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,10,1,5,87, 14,8,9,1,6,87, 14,8,8,1,7,87, 14,8,7,1,8,87, 14,8,6,1,9,87, + 14,8,5,1,10,87, 14,8,4,1,11,87, 14,8,3,1,12,87, 14,8,3,6,1,71, 14,7,12,1,3,88, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, + 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, 14,7,6,1,9,88, 14,7,5,1,10,88, 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,3,4,14,56, + 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, 14,6,12,5,1,73, 14,6,11,1,4,89, 14,6,10,1,5,89, 14,6,9,1,6,89, 14,6,8,1,7,89, + 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, 14,6,4,1,11,89, 14,6,4,6,1,73, 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, + 14,5,10,1,5,90, 14,5,10,4,1,74, 14,5,9,1,6,90, 14,5,9,4,1,74, 14,5,8,1,7,90, 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, + 14,5,6,1,9,90, 14,5,6,4,1,74, 14,5,5,1,10,90, 14,5,5,4,1,74, 14,5,4,1,11,90, 14,5,4,4,1,74, 14,5,3,1,12,90, 14,5,3,3,12,90, + 14,5,3,4,1,74, 14,5,3,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/boulder.lua b/assets/voxels/boulder.lua new file mode 100644 index 0000000..652b71f --- /dev/null +++ b/assets/voxels/boulder.lua @@ -0,0 +1,189 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "boulder" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "boulder", + sheetW = 16, + sheetH = 16, + size = 16, + poses = { + stand = { + frames = { 0 }, + voxels = 2880, + count = 1308, + faces = { + 0,10,15,2,15,5, 0,10,15,3,15,5, 0,10,15,5,0,5, 0,10,14,2,14,5, 0,10,14,3,14,5, 0,10,13,2,13,5, 0,10,13,3,13,5, 0,10,12,2,12,5, + 0,10,12,3,12,5, 0,10,11,2,11,5, 0,10,11,3,11,5, 0,10,10,2,10,5, 0,10,10,3,10,5, 0,10,9,2,9,5, 0,10,9,3,9,5, 0,10,8,2,8,5, + 0,10,8,3,8,5, 0,10,7,2,7,5, 0,10,7,3,7,5, 0,10,6,2,6,5, 0,10,6,3,6,5, 0,10,5,2,5,5, 0,10,5,3,5,5, 0,10,4,2,4,5, + 0,10,4,3,4,5, 0,10,3,2,3,5, 0,10,3,3,3,5, 0,10,2,2,2,5, 0,10,2,3,2,5, 0,10,1,2,1,5, 0,10,1,3,1,5, 0,10,0,2,0,5, + 0,10,0,3,0,5, 0,10,0,6,15,5, 0,9,15,2,15,6, 0,9,15,5,0,6, 0,9,14,2,14,6, 0,9,13,2,13,6, 0,9,12,2,12,6, 0,9,11,2,11,6, + 0,9,10,2,10,6, 0,9,9,2,9,6, 0,9,8,2,8,6, 0,9,7,2,7,6, 0,9,6,2,6,6, 0,9,5,2,5,6, 0,9,4,2,4,6, 0,9,3,2,3,6, + 0,9,2,2,2,6, 0,9,1,2,1,6, 0,9,0,2,0,6, 0,9,0,6,15,6, 0,8,15,2,15,7, 0,8,15,5,0,7, 0,8,14,2,14,7, 0,8,13,2,13,7, + 0,8,12,2,12,7, 0,8,11,2,11,7, 0,8,10,2,10,7, 0,8,9,2,9,7, 0,8,8,2,8,7, 0,8,7,2,7,7, 0,8,6,2,6,7, 0,8,5,2,5,7, + 0,8,4,2,4,7, 0,8,3,2,3,7, 0,8,2,2,2,7, 0,8,1,2,1,7, 0,8,0,2,0,7, 0,8,0,6,15,7, 0,7,15,2,15,8, 0,7,15,5,0,8, + 0,7,14,2,14,8, 0,7,13,2,13,8, 0,7,12,2,12,8, 0,7,11,2,11,8, 0,7,10,2,10,8, 0,7,9,2,9,8, 0,7,8,2,8,8, 0,7,7,2,7,8, + 0,7,6,2,6,8, 0,7,5,2,5,8, 0,7,4,2,4,8, 0,7,3,2,3,8, 0,7,2,2,2,8, 0,7,1,2,1,8, 0,7,0,2,0,8, 0,7,0,6,15,8, + 0,6,15,2,15,9, 0,6,15,5,0,9, 0,6,14,2,14,9, 0,6,13,2,13,9, 0,6,12,2,12,9, 0,6,11,2,11,9, 0,6,10,2,10,9, 0,6,9,2,9,9, + 0,6,8,2,8,9, 0,6,7,2,7,9, 0,6,6,2,6,9, 0,6,5,2,5,9, 0,6,4,2,4,9, 0,6,3,2,3,9, 0,6,2,2,2,9, 0,6,1,2,1,9, + 0,6,0,2,0,9, 0,6,0,6,15,9, 0,5,15,2,15,10, 0,5,15,4,0,10, 0,5,15,5,0,10, 0,5,14,2,14,10, 0,5,14,4,0,10, 0,5,13,2,13,10, + 0,5,13,4,0,10, 0,5,12,2,12,10, 0,5,12,4,0,10, 0,5,11,2,11,10, 0,5,11,4,0,10, 0,5,10,2,10,10, 0,5,10,4,0,10, 0,5,9,2,9,10, + 0,5,9,4,0,10, 0,5,8,2,8,10, 0,5,8,4,0,10, 0,5,7,2,7,10, 0,5,7,4,0,10, 0,5,6,2,6,10, 0,5,6,4,0,10, 0,5,5,2,5,10, + 0,5,5,4,0,10, 0,5,4,2,4,10, 0,5,4,4,0,10, 0,5,3,2,3,10, 0,5,3,4,0,10, 0,5,2,2,2,10, 0,5,2,4,0,10, 0,5,1,2,1,10, + 0,5,1,4,0,10, 0,5,0,2,0,10, 0,5,0,4,0,10, 0,5,0,6,15,10, 1,12,14,2,14,3, 1,12,14,3,14,3, 1,12,14,5,1,3, 1,12,13,2,13,3, + 1,12,13,3,13,3, 1,12,12,2,12,3, 1,12,12,3,12,3, 1,12,11,2,11,3, 1,12,11,3,11,3, 1,12,10,2,10,3, 1,12,10,3,10,3, 1,12,9,2,9,3, + 1,12,9,3,9,3, 1,12,8,2,8,3, 1,12,8,3,8,3, 1,12,7,2,7,3, 1,12,7,3,7,3, 1,12,6,2,6,3, 1,12,6,3,6,3, 1,12,5,2,5,3, + 1,12,5,3,5,3, 1,12,4,2,4,3, 1,12,4,3,4,3, 1,12,3,2,3,3, 1,12,3,3,3,3, 1,12,2,2,2,3, 1,12,2,3,2,3, 1,12,1,2,1,3, + 1,12,1,3,1,3, 1,12,1,6,14,3, 1,11,14,2,14,4, 1,11,14,5,1,4, 1,11,13,2,13,4, 1,11,12,2,12,4, 1,11,11,2,11,4, 1,11,10,2,10,4, + 1,11,9,2,9,4, 1,11,8,2,8,4, 1,11,7,2,7,4, 1,11,6,2,6,4, 1,11,5,2,5,4, 1,11,4,2,4,4, 1,11,3,2,3,4, 1,11,2,2,2,4, + 1,11,1,2,1,4, 1,11,1,6,14,4, 1,10,15,3,15,5, 1,10,15,5,1,5, 1,10,0,3,0,5, 1,10,0,6,14,5, 1,9,15,5,1,6, 1,9,0,6,14,6, + 1,8,15,5,1,7, 1,8,0,6,14,7, 1,7,15,5,1,8, 1,7,0,6,14,8, 1,6,15,5,1,9, 1,6,0,6,14,9, 1,5,15,4,1,10, 1,5,15,5,1,10, + 1,5,0,4,1,10, 1,5,0,6,14,10, 1,4,14,2,14,11, 1,4,14,5,1,11, 1,4,13,2,13,11, 1,4,12,2,12,11, 1,4,11,2,11,11, 1,4,10,2,10,11, + 1,4,9,2,9,11, 1,4,8,2,8,11, 1,4,7,2,7,11, 1,4,6,2,6,11, 1,4,5,2,5,11, 1,4,4,2,4,11, 1,4,3,2,3,11, 1,4,2,2,2,11, + 1,4,1,2,1,11, 1,4,1,6,14,11, 1,3,14,2,14,12, 1,3,14,4,1,12, 1,3,14,5,1,12, 1,3,13,2,13,12, 1,3,13,4,1,12, 1,3,12,2,12,12, + 1,3,12,4,1,12, 1,3,11,2,11,12, 1,3,11,4,1,12, 1,3,10,2,10,12, 1,3,10,4,1,12, 1,3,9,2,9,12, 1,3,9,4,1,12, 1,3,8,2,8,12, + 1,3,8,4,1,12, 1,3,7,2,7,12, 1,3,7,4,1,12, 1,3,6,2,6,12, 1,3,6,4,1,12, 1,3,5,2,5,12, 1,3,5,4,1,12, 1,3,4,2,4,12, + 1,3,4,4,1,12, 1,3,3,2,3,12, 1,3,3,4,1,12, 1,3,2,2,2,12, 1,3,2,4,1,12, 1,3,1,2,1,12, 1,3,1,4,1,12, 1,3,1,6,14,12, + 2,13,13,2,13,2, 2,13,13,3,13,2, 2,13,13,5,2,2, 2,13,12,2,12,2, 2,13,12,3,12,2, 2,13,11,2,11,2, 2,13,11,3,11,2, 2,13,10,2,10,2, + 2,13,10,3,10,2, 2,13,9,2,9,2, 2,13,9,3,9,2, 2,13,8,2,8,2, 2,13,8,3,8,2, 2,13,7,2,7,2, 2,13,7,3,7,2, 2,13,6,2,6,2, + 2,13,6,3,6,2, 2,13,5,2,5,2, 2,13,5,3,5,2, 2,13,4,2,4,2, 2,13,4,3,4,2, 2,13,3,2,3,2, 2,13,3,3,3,2, 2,13,2,2,2,2, + 2,13,2,3,2,2, 2,13,2,6,13,2, 2,12,14,3,14,3, 2,12,14,5,2,3, 2,12,1,3,1,3, 2,12,1,6,13,3, 2,11,14,5,2,4, 2,11,1,6,13,4, + 2,10,15,3,15,5, 2,10,15,5,2,5, 2,10,0,3,0,5, 2,10,0,6,13,5, 2,9,15,5,2,6, 2,9,0,6,13,6, 2,8,15,5,2,7, 2,8,0,6,13,7, + 2,7,15,5,2,8, 2,7,0,6,13,8, 2,6,15,5,2,9, 2,6,0,6,13,9, 2,5,15,4,2,10, 2,5,15,5,2,10, 2,5,0,4,2,10, 2,5,0,6,13,10, + 2,4,14,5,2,11, 2,4,1,6,13,11, 2,3,14,4,2,12, 2,3,14,5,2,12, 2,3,1,4,2,12, 2,3,1,6,13,12, 2,2,13,2,13,13, 2,2,13,4,2,13, + 2,2,13,5,2,13, 2,2,12,2,12,13, 2,2,12,4,2,13, 2,2,11,2,11,13, 2,2,11,4,2,13, 2,2,10,2,10,13, 2,2,10,4,2,13, 2,2,9,2,9,13, + 2,2,9,4,2,13, 2,2,8,2,8,13, 2,2,8,4,2,13, 2,2,7,2,7,13, 2,2,7,4,2,13, 2,2,6,2,6,13, 2,2,6,4,2,13, 2,2,5,2,5,13, + 2,2,5,4,2,13, 2,2,4,2,4,13, 2,2,4,4,2,13, 2,2,3,2,3,13, 2,2,3,4,2,13, 2,2,2,2,2,13, 2,2,2,4,2,13, 2,2,2,6,13,13, + 3,14,12,2,12,1, 3,14,12,3,12,1, 3,14,12,5,3,1, 3,14,11,2,11,1, 3,14,11,3,11,1, 3,14,10,2,10,1, 3,14,10,3,10,1, 3,14,9,2,9,1, + 3,14,9,3,9,1, 3,14,8,2,8,1, 3,14,8,3,8,1, 3,14,7,2,7,1, 3,14,7,3,7,1, 3,14,6,2,6,1, 3,14,6,3,6,1, 3,14,5,2,5,1, + 3,14,5,3,5,1, 3,14,4,2,4,1, 3,14,4,3,4,1, 3,14,3,2,3,1, 3,14,3,3,3,1, 3,14,3,6,12,1, 3,13,13,3,13,2, 3,13,13,5,3,2, + 3,13,2,3,2,2, 3,13,2,6,12,2, 3,12,14,3,14,3, 3,12,14,5,3,3, 3,12,1,3,1,3, 3,12,1,6,12,3, 3,11,14,5,3,4, 3,11,1,6,12,4, + 3,10,15,3,15,5, 3,10,15,5,3,5, 3,10,0,3,0,5, 3,10,0,6,12,5, 3,9,15,5,3,6, 3,9,0,6,12,6, 3,8,15,5,3,7, 3,8,0,6,12,7, + 3,7,15,5,3,8, 3,7,0,6,12,8, 3,6,15,5,3,9, 3,6,0,6,12,9, 3,5,15,4,3,10, 3,5,15,5,3,10, 3,5,0,4,3,10, 3,5,0,6,12,10, + 3,4,14,5,3,11, 3,4,1,6,12,11, 3,3,14,4,3,12, 3,3,14,5,3,12, 3,3,1,4,3,12, 3,3,1,6,12,12, 3,2,13,4,3,13, 3,2,13,5,3,13, + 3,2,2,4,3,13, 3,2,2,6,12,13, 3,1,12,2,12,14, 3,1,12,4,3,14, 3,1,12,5,3,14, 3,1,11,2,11,14, 3,1,11,4,3,14, 3,1,10,2,10,14, + 3,1,10,4,3,14, 3,1,9,2,9,14, 3,1,9,4,3,14, 3,1,8,2,8,14, 3,1,8,4,3,14, 3,1,7,2,7,14, 3,1,7,4,3,14, 3,1,6,2,6,14, + 3,1,6,4,3,14, 3,1,5,2,5,14, 3,1,5,4,3,14, 3,1,4,2,4,14, 3,1,4,4,3,14, 3,1,3,2,3,14, 3,1,3,4,3,14, 3,1,3,6,12,14, + 4,14,12,3,12,1, 4,14,12,5,4,1, 4,14,11,3,11,1, 4,14,10,3,10,1, 4,14,9,3,9,1, 4,14,8,3,8,1, 4,14,7,3,7,1, 4,14,6,3,6,1, + 4,14,5,3,5,1, 4,14,4,3,4,1, 4,14,3,3,3,1, 4,14,3,6,11,1, 4,13,13,3,13,2, 4,13,13,5,4,2, 4,13,2,3,2,2, 4,13,2,6,11,2, + 4,12,14,3,14,3, 4,12,14,5,4,3, 4,12,1,3,1,3, 4,12,1,6,11,3, 4,11,14,5,4,4, 4,11,1,6,11,4, 4,10,15,3,15,5, 4,10,15,5,4,5, + 4,10,0,3,0,5, 4,10,0,6,11,5, 4,9,15,5,4,6, 4,9,0,6,11,6, 4,8,15,5,4,7, 4,8,0,6,11,7, 4,7,15,5,4,8, 4,7,0,6,11,8, + 4,6,15,5,4,9, 4,6,0,6,11,9, 4,5,15,4,4,10, 4,5,15,5,4,10, 4,5,0,4,4,10, 4,5,0,6,11,10, 4,4,14,5,4,11, 4,4,1,6,11,11, + 4,3,14,4,4,12, 4,3,14,5,4,12, 4,3,1,4,4,12, 4,3,1,6,11,12, 4,2,13,4,4,13, 4,2,13,5,4,13, 4,2,2,4,4,13, 4,2,2,6,11,13, + 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,11,4,4,14, 4,1,10,4,4,14, 4,1,9,4,4,14, 4,1,8,4,4,14, 4,1,7,4,4,14, 4,1,6,4,4,14, + 4,1,5,4,4,14, 4,1,4,4,4,14, 4,1,3,4,4,14, 4,1,3,6,11,14, 5,15,10,2,10,0, 5,15,10,3,10,0, 5,15,10,5,5,0, 5,15,9,2,9,0, + 5,15,9,3,9,0, 5,15,8,2,8,0, 5,15,8,3,8,0, 5,15,7,2,7,0, 5,15,7,3,7,0, 5,15,6,2,6,0, 5,15,6,3,6,0, 5,15,5,2,5,0, + 5,15,5,3,5,0, 5,15,5,6,10,0, 5,14,12,3,12,1, 5,14,12,5,5,1, 5,14,11,3,11,1, 5,14,4,3,4,1, 5,14,3,3,3,1, 5,14,3,6,10,1, + 5,13,13,3,13,2, 5,13,13,5,5,2, 5,13,2,3,2,2, 5,13,2,6,10,2, 5,12,14,3,14,3, 5,12,14,5,5,3, 5,12,1,3,1,3, 5,12,1,6,10,3, + 5,11,14,5,5,4, 5,11,1,6,10,4, 5,10,15,3,15,5, 5,10,15,5,5,5, 5,10,0,3,0,5, 5,10,0,6,10,5, 5,9,15,5,5,6, 5,9,0,6,10,6, + 5,8,15,5,5,7, 5,8,0,6,10,7, 5,7,15,5,5,8, 5,7,0,6,10,8, 5,6,15,5,5,9, 5,6,0,6,10,9, 5,5,15,4,5,10, 5,5,15,5,5,10, + 5,5,0,4,5,10, 5,5,0,6,10,10, 5,4,14,5,5,11, 5,4,1,6,10,11, 5,3,14,4,5,12, 5,3,14,5,5,12, 5,3,1,4,5,12, 5,3,1,6,10,12, + 5,2,13,4,5,13, 5,2,13,5,5,13, 5,2,2,4,5,13, 5,2,2,6,10,13, 5,1,12,4,5,14, 5,1,12,5,5,14, 5,1,11,4,5,14, 5,1,4,4,5,14, + 5,1,3,4,5,14, 5,1,3,6,10,14, 5,0,10,2,10,15, 5,0,10,5,5,15, 5,0,9,2,9,15, 5,0,8,2,8,15, 5,0,7,2,7,15, 5,0,6,2,6,15, + 5,0,5,2,5,15, 5,0,5,6,10,15, 6,15,10,3,10,0, 6,15,10,5,6,0, 6,15,9,3,9,0, 6,15,8,3,8,0, 6,15,7,3,7,0, 6,15,6,3,6,0, + 6,15,5,3,5,0, 6,15,5,6,9,0, 6,14,12,3,12,1, 6,14,12,5,6,1, 6,14,11,3,11,1, 6,14,4,3,4,1, 6,14,3,3,3,1, 6,14,3,6,9,1, + 6,13,13,3,13,2, 6,13,13,5,6,2, 6,13,2,3,2,2, 6,13,2,6,9,2, 6,12,14,3,14,3, 6,12,14,5,6,3, 6,12,1,3,1,3, 6,12,1,6,9,3, + 6,11,14,5,6,4, 6,11,1,6,9,4, 6,10,15,3,15,5, 6,10,15,5,6,5, 6,10,0,3,0,5, 6,10,0,6,9,5, 6,9,15,5,6,6, 6,9,0,6,9,6, + 6,8,15,5,6,7, 6,8,0,6,9,7, 6,7,15,5,6,8, 6,7,0,6,9,8, 6,6,15,5,6,9, 6,6,0,6,9,9, 6,5,15,4,6,10, 6,5,15,5,6,10, + 6,5,0,4,6,10, 6,5,0,6,9,10, 6,4,14,5,6,11, 6,4,1,6,9,11, 6,3,14,4,6,12, 6,3,14,5,6,12, 6,3,1,4,6,12, 6,3,1,6,9,12, + 6,2,13,4,6,13, 6,2,13,5,6,13, 6,2,2,4,6,13, 6,2,2,6,9,13, 6,1,12,4,6,14, 6,1,12,5,6,14, 6,1,11,4,6,14, 6,1,4,4,6,14, + 6,1,3,4,6,14, 6,1,3,6,9,14, 6,0,10,5,6,15, 6,0,5,6,9,15, 7,15,10,3,10,0, 7,15,10,5,7,0, 7,15,9,3,9,0, 7,15,8,3,8,0, + 7,15,7,3,7,0, 7,15,6,3,6,0, 7,15,5,3,5,0, 7,15,5,6,8,0, 7,14,12,3,12,1, 7,14,12,5,7,1, 7,14,11,3,11,1, 7,14,4,3,4,1, + 7,14,3,3,3,1, 7,14,3,6,8,1, 7,13,13,3,13,2, 7,13,13,5,7,2, 7,13,2,3,2,2, 7,13,2,6,8,2, 7,12,14,3,14,3, 7,12,14,5,7,3, + 7,12,1,3,1,3, 7,12,1,6,8,3, 7,11,14,5,7,4, 7,11,1,6,8,4, 7,10,15,3,15,5, 7,10,15,5,7,5, 7,10,0,3,0,5, 7,10,0,6,8,5, + 7,9,15,5,7,6, 7,9,0,6,8,6, 7,8,15,5,7,7, 7,8,0,6,8,7, 7,7,15,5,7,8, 7,7,0,6,8,8, 7,6,15,5,7,9, 7,6,0,6,8,9, + 7,5,15,4,7,10, 7,5,15,5,7,10, 7,5,0,4,7,10, 7,5,0,6,8,10, 7,4,14,5,7,11, 7,4,1,6,8,11, 7,3,14,4,7,12, 7,3,14,5,7,12, + 7,3,1,4,7,12, 7,3,1,6,8,12, 7,2,13,4,7,13, 7,2,13,5,7,13, 7,2,2,4,7,13, 7,2,2,6,8,13, 7,1,12,4,7,14, 7,1,12,5,7,14, + 7,1,11,4,7,14, 7,1,4,4,7,14, 7,1,3,4,7,14, 7,1,3,6,8,14, 7,0,10,5,7,15, 7,0,5,6,8,15, 8,15,10,3,10,0, 8,15,10,5,8,0, + 8,15,9,3,9,0, 8,15,8,3,8,0, 8,15,7,3,7,0, 8,15,6,3,6,0, 8,15,5,3,5,0, 8,15,5,6,7,0, 8,14,12,3,12,1, 8,14,12,5,8,1, + 8,14,11,3,11,1, 8,14,4,3,4,1, 8,14,3,3,3,1, 8,14,3,6,7,1, 8,13,13,3,13,2, 8,13,13,5,8,2, 8,13,2,3,2,2, 8,13,2,6,7,2, + 8,12,14,3,14,3, 8,12,14,5,8,3, 8,12,1,3,1,3, 8,12,1,6,7,3, 8,11,14,5,8,4, 8,11,1,6,7,4, 8,10,15,3,15,5, 8,10,15,5,8,5, + 8,10,0,3,0,5, 8,10,0,6,7,5, 8,9,15,5,8,6, 8,9,0,6,7,6, 8,8,15,5,8,7, 8,8,0,6,7,7, 8,7,15,5,8,8, 8,7,0,6,7,8, + 8,6,15,5,8,9, 8,6,0,6,7,9, 8,5,15,4,8,10, 8,5,15,5,8,10, 8,5,0,4,8,10, 8,5,0,6,7,10, 8,4,14,5,8,11, 8,4,1,6,7,11, + 8,3,14,4,8,12, 8,3,14,5,8,12, 8,3,1,4,8,12, 8,3,1,6,7,12, 8,2,13,4,8,13, 8,2,13,5,8,13, 8,2,2,4,8,13, 8,2,2,6,7,13, + 8,1,12,4,8,14, 8,1,12,5,8,14, 8,1,11,4,8,14, 8,1,4,4,8,14, 8,1,3,4,8,14, 8,1,3,6,7,14, 8,0,10,5,8,15, 8,0,5,6,7,15, + 9,15,10,3,10,0, 9,15,10,5,9,0, 9,15,9,3,9,0, 9,15,8,3,8,0, 9,15,7,3,7,0, 9,15,6,3,6,0, 9,15,5,3,5,0, 9,15,5,6,6,0, + 9,14,12,3,12,1, 9,14,12,5,9,1, 9,14,11,3,11,1, 9,14,4,3,4,1, 9,14,3,3,3,1, 9,14,3,6,6,1, 9,13,13,3,13,2, 9,13,13,5,9,2, + 9,13,2,3,2,2, 9,13,2,6,6,2, 9,12,14,3,14,3, 9,12,14,5,9,3, 9,12,1,3,1,3, 9,12,1,6,6,3, 9,11,14,5,9,4, 9,11,1,6,6,4, + 9,10,15,3,15,5, 9,10,15,5,9,5, 9,10,0,3,0,5, 9,10,0,6,6,5, 9,9,15,5,9,6, 9,9,0,6,6,6, 9,8,15,5,9,7, 9,8,0,6,6,7, + 9,7,15,5,9,8, 9,7,0,6,6,8, 9,6,15,5,9,9, 9,6,0,6,6,9, 9,5,15,4,9,10, 9,5,15,5,9,10, 9,5,0,4,9,10, 9,5,0,6,6,10, + 9,4,14,5,9,11, 9,4,1,6,6,11, 9,3,14,4,9,12, 9,3,14,5,9,12, 9,3,1,4,9,12, 9,3,1,6,6,12, 9,2,13,4,9,13, 9,2,13,5,9,13, + 9,2,2,4,9,13, 9,2,2,6,6,13, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,11,4,9,14, 9,1,4,4,9,14, 9,1,3,4,9,14, 9,1,3,6,6,14, + 9,0,10,5,9,15, 9,0,5,6,6,15, 10,15,10,1,10,0, 10,15,10,3,10,0, 10,15,10,5,10,0, 10,15,9,1,9,0, 10,15,9,3,9,0, 10,15,8,1,8,0, + 10,15,8,3,8,0, 10,15,7,1,7,0, 10,15,7,3,7,0, 10,15,6,1,6,0, 10,15,6,3,6,0, 10,15,5,1,5,0, 10,15,5,3,5,0, 10,15,5,6,5,0, + 10,14,12,3,12,1, 10,14,12,5,10,1, 10,14,11,3,11,1, 10,14,4,3,4,1, 10,14,3,3,3,1, 10,14,3,6,5,1, 10,13,13,3,13,2, 10,13,13,5,10,2, + 10,13,2,3,2,2, 10,13,2,6,5,2, 10,12,14,3,14,3, 10,12,14,5,10,3, 10,12,1,3,1,3, 10,12,1,6,5,3, 10,11,14,5,10,4, 10,11,1,6,5,4, + 10,10,15,3,15,5, 10,10,15,5,10,5, 10,10,0,3,0,5, 10,10,0,6,5,5, 10,9,15,5,10,6, 10,9,0,6,5,6, 10,8,15,5,10,7, 10,8,0,6,5,7, + 10,7,15,5,10,8, 10,7,0,6,5,8, 10,6,15,5,10,9, 10,6,0,6,5,9, 10,5,15,4,10,10, 10,5,15,5,10,10, 10,5,0,4,10,10, 10,5,0,6,5,10, + 10,4,14,5,10,11, 10,4,1,6,5,11, 10,3,14,4,10,12, 10,3,14,5,10,12, 10,3,1,4,10,12, 10,3,1,6,5,12, 10,2,13,4,10,13, 10,2,13,5,10,13, + 10,2,2,4,10,13, 10,2,2,6,5,13, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,11,4,10,14, 10,1,4,4,10,14, 10,1,3,4,10,14, 10,1,3,6,5,14, + 10,0,10,1,10,15, 10,0,10,5,10,15, 10,0,9,1,9,15, 10,0,8,1,8,15, 10,0,7,1,7,15, 10,0,6,1,6,15, 10,0,5,1,5,15, 10,0,5,6,5,15, + 11,14,12,3,12,1, 11,14,12,5,11,1, 11,14,11,3,11,1, 11,14,10,3,10,1, 11,14,9,3,9,1, 11,14,8,3,8,1, 11,14,7,3,7,1, 11,14,6,3,6,1, + 11,14,5,3,5,1, 11,14,4,3,4,1, 11,14,3,3,3,1, 11,14,3,6,4,1, 11,13,13,3,13,2, 11,13,13,5,11,2, 11,13,2,3,2,2, 11,13,2,6,4,2, + 11,12,14,3,14,3, 11,12,14,5,11,3, 11,12,1,3,1,3, 11,12,1,6,4,3, 11,11,14,5,11,4, 11,11,1,6,4,4, 11,10,15,3,15,5, 11,10,15,5,11,5, + 11,10,0,3,0,5, 11,10,0,6,4,5, 11,9,15,5,11,6, 11,9,0,6,4,6, 11,8,15,5,11,7, 11,8,0,6,4,7, 11,7,15,5,11,8, 11,7,0,6,4,8, + 11,6,15,5,11,9, 11,6,0,6,4,9, 11,5,15,4,11,10, 11,5,15,5,11,10, 11,5,0,4,11,10, 11,5,0,6,4,10, 11,4,14,5,11,11, 11,4,1,6,4,11, + 11,3,14,4,11,12, 11,3,14,5,11,12, 11,3,1,4,11,12, 11,3,1,6,4,12, 11,2,13,4,11,13, 11,2,13,5,11,13, 11,2,2,4,11,13, 11,2,2,6,4,13, + 11,1,12,4,11,14, 11,1,12,5,11,14, 11,1,11,4,11,14, 11,1,10,4,11,14, 11,1,9,4,11,14, 11,1,8,4,11,14, 11,1,7,4,11,14, 11,1,6,4,11,14, + 11,1,5,4,11,14, 11,1,4,4,11,14, 11,1,3,4,11,14, 11,1,3,6,4,14, 12,14,12,1,12,1, 12,14,12,3,12,1, 12,14,12,5,12,1, 12,14,11,1,11,1, + 12,14,11,3,11,1, 12,14,10,1,10,1, 12,14,10,3,10,1, 12,14,9,1,9,1, 12,14,9,3,9,1, 12,14,8,1,8,1, 12,14,8,3,8,1, 12,14,7,1,7,1, + 12,14,7,3,7,1, 12,14,6,1,6,1, 12,14,6,3,6,1, 12,14,5,1,5,1, 12,14,5,3,5,1, 12,14,4,1,4,1, 12,14,4,3,4,1, 12,14,3,1,3,1, + 12,14,3,3,3,1, 12,14,3,6,3,1, 12,13,13,3,13,2, 12,13,13,5,12,2, 12,13,2,3,2,2, 12,13,2,6,3,2, 12,12,14,3,14,3, 12,12,14,5,12,3, + 12,12,1,3,1,3, 12,12,1,6,3,3, 12,11,14,5,12,4, 12,11,1,6,3,4, 12,10,15,3,15,5, 12,10,15,5,12,5, 12,10,0,3,0,5, 12,10,0,6,3,5, + 12,9,15,5,12,6, 12,9,0,6,3,6, 12,8,15,5,12,7, 12,8,0,6,3,7, 12,7,15,5,12,8, 12,7,0,6,3,8, 12,6,15,5,12,9, 12,6,0,6,3,9, + 12,5,15,4,12,10, 12,5,15,5,12,10, 12,5,0,4,12,10, 12,5,0,6,3,10, 12,4,14,5,12,11, 12,4,1,6,3,11, 12,3,14,4,12,12, 12,3,14,5,12,12, + 12,3,1,4,12,12, 12,3,1,6,3,12, 12,2,13,4,12,13, 12,2,13,5,12,13, 12,2,2,4,12,13, 12,2,2,6,3,13, 12,1,12,1,12,14, 12,1,12,4,12,14, + 12,1,12,5,12,14, 12,1,11,1,11,14, 12,1,11,4,12,14, 12,1,10,1,10,14, 12,1,10,4,12,14, 12,1,9,1,9,14, 12,1,9,4,12,14, 12,1,8,1,8,14, + 12,1,8,4,12,14, 12,1,7,1,7,14, 12,1,7,4,12,14, 12,1,6,1,6,14, 12,1,6,4,12,14, 12,1,5,1,5,14, 12,1,5,4,12,14, 12,1,4,1,4,14, + 12,1,4,4,12,14, 12,1,3,1,3,14, 12,1,3,4,12,14, 12,1,3,6,3,14, 13,13,13,1,13,2, 13,13,13,3,13,2, 13,13,13,5,13,2, 13,13,12,1,12,2, + 13,13,12,3,12,2, 13,13,11,1,11,2, 13,13,11,3,11,2, 13,13,10,1,10,2, 13,13,10,3,10,2, 13,13,9,1,9,2, 13,13,9,3,9,2, 13,13,8,1,8,2, + 13,13,8,3,8,2, 13,13,7,1,7,2, 13,13,7,3,7,2, 13,13,6,1,6,2, 13,13,6,3,6,2, 13,13,5,1,5,2, 13,13,5,3,5,2, 13,13,4,1,4,2, + 13,13,4,3,4,2, 13,13,3,1,3,2, 13,13,3,3,3,2, 13,13,2,1,2,2, 13,13,2,3,2,2, 13,13,2,6,2,2, 13,12,14,3,14,3, 13,12,14,5,13,3, + 13,12,1,3,1,3, 13,12,1,6,2,3, 13,11,14,5,13,4, 13,11,1,6,2,4, 13,10,15,3,15,5, 13,10,15,5,13,5, 13,10,0,3,0,5, 13,10,0,6,2,5, + 13,9,15,5,13,6, 13,9,0,6,2,6, 13,8,15,5,13,7, 13,8,0,6,2,7, 13,7,15,5,13,8, 13,7,0,6,2,8, 13,6,15,5,13,9, 13,6,0,6,2,9, + 13,5,15,4,13,10, 13,5,15,5,13,10, 13,5,0,4,13,10, 13,5,0,6,2,10, 13,4,14,5,13,11, 13,4,1,6,2,11, 13,3,14,4,13,12, 13,3,14,5,13,12, + 13,3,1,4,13,12, 13,3,1,6,2,12, 13,2,13,1,13,13, 13,2,13,4,13,13, 13,2,13,5,13,13, 13,2,12,1,12,13, 13,2,12,4,13,13, 13,2,11,1,11,13, + 13,2,11,4,13,13, 13,2,10,1,10,13, 13,2,10,4,13,13, 13,2,9,1,9,13, 13,2,9,4,13,13, 13,2,8,1,8,13, 13,2,8,4,13,13, 13,2,7,1,7,13, + 13,2,7,4,13,13, 13,2,6,1,6,13, 13,2,6,4,13,13, 13,2,5,1,5,13, 13,2,5,4,13,13, 13,2,4,1,4,13, 13,2,4,4,13,13, 13,2,3,1,3,13, + 13,2,3,4,13,13, 13,2,2,1,2,13, 13,2,2,4,13,13, 13,2,2,6,2,13, 14,12,14,1,14,3, 14,12,14,3,14,3, 14,12,14,5,14,3, 14,12,13,1,13,3, + 14,12,13,3,13,3, 14,12,12,1,12,3, 14,12,12,3,12,3, 14,12,11,1,11,3, 14,12,11,3,11,3, 14,12,10,1,10,3, 14,12,10,3,10,3, 14,12,9,1,9,3, + 14,12,9,3,9,3, 14,12,8,1,8,3, 14,12,8,3,8,3, 14,12,7,1,7,3, 14,12,7,3,7,3, 14,12,6,1,6,3, 14,12,6,3,6,3, 14,12,5,1,5,3, + 14,12,5,3,5,3, 14,12,4,1,4,3, 14,12,4,3,4,3, 14,12,3,1,3,3, 14,12,3,3,3,3, 14,12,2,1,2,3, 14,12,2,3,2,3, 14,12,1,1,1,3, + 14,12,1,3,1,3, 14,12,1,6,1,3, 14,11,14,1,14,4, 14,11,14,5,14,4, 14,11,13,1,13,4, 14,11,12,1,12,4, 14,11,11,1,11,4, 14,11,10,1,10,4, + 14,11,9,1,9,4, 14,11,8,1,8,4, 14,11,7,1,7,4, 14,11,6,1,6,4, 14,11,5,1,5,4, 14,11,4,1,4,4, 14,11,3,1,3,4, 14,11,2,1,2,4, + 14,11,1,1,1,4, 14,11,1,6,1,4, 14,10,15,3,15,5, 14,10,15,5,14,5, 14,10,0,3,0,5, 14,10,0,6,1,5, 14,9,15,5,14,6, 14,9,0,6,1,6, + 14,8,15,5,14,7, 14,8,0,6,1,7, 14,7,15,5,14,8, 14,7,0,6,1,8, 14,6,15,5,14,9, 14,6,0,6,1,9, 14,5,15,4,14,10, 14,5,15,5,14,10, + 14,5,0,4,14,10, 14,5,0,6,1,10, 14,4,14,1,14,11, 14,4,14,5,14,11, 14,4,13,1,13,11, 14,4,12,1,12,11, 14,4,11,1,11,11, 14,4,10,1,10,11, + 14,4,9,1,9,11, 14,4,8,1,8,11, 14,4,7,1,7,11, 14,4,6,1,6,11, 14,4,5,1,5,11, 14,4,4,1,4,11, 14,4,3,1,3,11, 14,4,2,1,2,11, + 14,4,1,1,1,11, 14,4,1,6,1,11, 14,3,14,1,14,12, 14,3,14,4,14,12, 14,3,14,5,14,12, 14,3,13,1,13,12, 14,3,13,4,14,12, 14,3,12,1,12,12, + 14,3,12,4,14,12, 14,3,11,1,11,12, 14,3,11,4,14,12, 14,3,10,1,10,12, 14,3,10,4,14,12, 14,3,9,1,9,12, 14,3,9,4,14,12, 14,3,8,1,8,12, + 14,3,8,4,14,12, 14,3,7,1,7,12, 14,3,7,4,14,12, 14,3,6,1,6,12, 14,3,6,4,14,12, 14,3,5,1,5,12, 14,3,5,4,14,12, 14,3,4,1,4,12, + 14,3,4,4,14,12, 14,3,3,1,3,12, 14,3,3,4,14,12, 14,3,2,1,2,12, 14,3,2,4,14,12, 14,3,1,1,1,12, 14,3,1,4,14,12, 14,3,1,6,1,12, + 15,10,15,1,15,5, 15,10,15,3,15,5, 15,10,15,5,15,5, 15,10,14,1,14,5, 15,10,14,3,14,5, 15,10,13,1,13,5, 15,10,13,3,13,5, 15,10,12,1,12,5, + 15,10,12,3,12,5, 15,10,11,1,11,5, 15,10,11,3,11,5, 15,10,10,1,10,5, 15,10,10,3,10,5, 15,10,9,1,9,5, 15,10,9,3,9,5, 15,10,8,1,8,5, + 15,10,8,3,8,5, 15,10,7,1,7,5, 15,10,7,3,7,5, 15,10,6,1,6,5, 15,10,6,3,6,5, 15,10,5,1,5,5, 15,10,5,3,5,5, 15,10,4,1,4,5, + 15,10,4,3,4,5, 15,10,3,1,3,5, 15,10,3,3,3,5, 15,10,2,1,2,5, 15,10,2,3,2,5, 15,10,1,1,1,5, 15,10,1,3,1,5, 15,10,0,1,0,5, + 15,10,0,3,0,5, 15,10,0,6,0,5, 15,9,15,1,15,6, 15,9,15,5,15,6, 15,9,14,1,14,6, 15,9,13,1,13,6, 15,9,12,1,12,6, 15,9,11,1,11,6, + 15,9,10,1,10,6, 15,9,9,1,9,6, 15,9,8,1,8,6, 15,9,7,1,7,6, 15,9,6,1,6,6, 15,9,5,1,5,6, 15,9,4,1,4,6, 15,9,3,1,3,6, + 15,9,2,1,2,6, 15,9,1,1,1,6, 15,9,0,1,0,6, 15,9,0,6,0,6, 15,8,15,1,15,7, 15,8,15,5,15,7, 15,8,14,1,14,7, 15,8,13,1,13,7, + 15,8,12,1,12,7, 15,8,11,1,11,7, 15,8,10,1,10,7, 15,8,9,1,9,7, 15,8,8,1,8,7, 15,8,7,1,7,7, 15,8,6,1,6,7, 15,8,5,1,5,7, + 15,8,4,1,4,7, 15,8,3,1,3,7, 15,8,2,1,2,7, 15,8,1,1,1,7, 15,8,0,1,0,7, 15,8,0,6,0,7, 15,7,15,1,15,8, 15,7,15,5,15,8, + 15,7,14,1,14,8, 15,7,13,1,13,8, 15,7,12,1,12,8, 15,7,11,1,11,8, 15,7,10,1,10,8, 15,7,9,1,9,8, 15,7,8,1,8,8, 15,7,7,1,7,8, + 15,7,6,1,6,8, 15,7,5,1,5,8, 15,7,4,1,4,8, 15,7,3,1,3,8, 15,7,2,1,2,8, 15,7,1,1,1,8, 15,7,0,1,0,8, 15,7,0,6,0,8, + 15,6,15,1,15,9, 15,6,15,5,15,9, 15,6,14,1,14,9, 15,6,13,1,13,9, 15,6,12,1,12,9, 15,6,11,1,11,9, 15,6,10,1,10,9, 15,6,9,1,9,9, + 15,6,8,1,8,9, 15,6,7,1,7,9, 15,6,6,1,6,9, 15,6,5,1,5,9, 15,6,4,1,4,9, 15,6,3,1,3,9, 15,6,2,1,2,9, 15,6,1,1,1,9, + 15,6,0,1,0,9, 15,6,0,6,0,9, 15,5,15,1,15,10, 15,5,15,4,15,10, 15,5,15,5,15,10, 15,5,14,1,14,10, 15,5,14,4,15,10, 15,5,13,1,13,10, + 15,5,13,4,15,10, 15,5,12,1,12,10, 15,5,12,4,15,10, 15,5,11,1,11,10, 15,5,11,4,15,10, 15,5,10,1,10,10, 15,5,10,4,15,10, 15,5,9,1,9,10, + 15,5,9,4,15,10, 15,5,8,1,8,10, 15,5,8,4,15,10, 15,5,7,1,7,10, 15,5,7,4,15,10, 15,5,6,1,6,10, 15,5,6,4,15,10, 15,5,5,1,5,10, + 15,5,5,4,15,10, 15,5,4,1,4,10, 15,5,4,4,15,10, 15,5,3,1,3,10, 15,5,3,4,15,10, 15,5,2,1,2,10, 15,5,2,4,15,10, 15,5,1,1,1,10, + 15,5,1,4,15,10, 15,5,0,1,0,10, 15,5,0,4,15,10, 15,5,0,6,0,10, + }, + }, + }, +} diff --git a/assets/voxels/brunette_girl.lua b/assets/voxels/brunette_girl.lua new file mode 100644 index 0000000..fa5b918 --- /dev/null +++ b/assets/voxels/brunette_girl.lua @@ -0,0 +1,299 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "brunette_girl" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "brunette_girl", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1552, + count = 1026, + faces = { + 2,11,14,2,2,36, 2,11,14,3,2,36, 2,11,14,5,2,4, 2,11,13,2,3,36, 2,11,13,3,3,36, 2,11,12,2,4,36, 2,11,12,3,4,36, 2,11,11,2,5,36, + 2,11,11,3,5,36, 2,11,10,2,6,36, 2,11,10,3,6,36, 2,11,9,2,7,36, 2,11,9,3,7,36, 2,11,8,2,8,36, 2,11,8,3,8,36, 2,11,7,2,9,36, + 2,11,7,3,9,36, 2,11,6,2,10,36, 2,11,6,3,10,36, 2,11,5,2,11,36, 2,11,5,3,11,36, 2,11,4,2,12,36, 2,11,4,3,12,36, 2,11,3,2,13,36, + 2,11,3,3,13,36, 2,11,2,2,14,36, 2,11,2,3,14,36, 2,11,1,2,15,36, 2,11,1,3,15,36, 2,11,1,6,13,20, 2,10,14,2,2,37, 2,10,14,5,2,5, + 2,10,13,2,3,37, 2,10,12,2,4,37, 2,10,11,2,5,37, 2,10,10,2,6,37, 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, 2,10,6,2,10,37, + 2,10,5,2,11,37, 2,10,4,2,12,37, 2,10,3,2,13,37, 2,10,2,2,14,37, 2,10,1,2,15,37, 2,10,1,6,13,21, 2,9,14,2,2,38, 2,9,14,4,2,6, + 2,9,14,5,2,6, 2,9,13,2,3,38, 2,9,12,2,4,38, 2,9,11,2,5,38, 2,9,10,2,6,38, 2,9,9,2,7,38, 2,9,8,2,8,38, 2,9,7,2,9,38, + 2,9,6,2,10,38, 2,9,5,2,11,38, 2,9,4,2,12,38, 2,9,3,2,13,38, 2,9,2,2,14,38, 2,9,1,2,15,38, 2,9,1,6,13,22, 2,8,13,2,3,39, + 2,8,13,4,2,7, 2,8,13,5,2,7, 2,8,12,2,4,39, 2,8,12,4,2,7, 2,8,11,2,5,39, 2,8,11,4,2,7, 2,8,10,2,6,39, 2,8,10,4,2,7, + 2,8,9,2,7,39, 2,8,9,4,2,7, 2,8,8,2,8,39, 2,8,8,4,2,7, 2,8,7,2,9,39, 2,8,7,4,2,7, 2,8,6,2,10,39, 2,8,6,4,2,7, + 2,8,5,2,11,39, 2,8,5,4,2,7, 2,8,4,2,12,39, 2,8,4,4,2,7, 2,8,3,2,13,39, 2,8,3,4,2,7, 2,8,2,2,14,39, 2,8,2,4,2,7, + 2,8,1,2,15,39, 2,8,1,4,2,7, 2,8,1,6,13,23, 2,5,11,2,5,42, 2,5,11,3,5,42, 2,5,11,5,13,26, 2,5,10,2,6,42, 2,5,10,3,6,42, + 2,5,9,2,7,42, 2,5,9,3,7,42, 2,5,8,2,8,42, 2,5,8,3,8,42, 2,5,7,2,9,42, 2,5,7,3,9,42, 2,5,6,2,10,42, 2,5,6,3,10,42, + 2,5,6,6,13,26, 2,4,11,2,5,43, 2,4,11,4,2,11, 2,4,11,5,2,11, 2,4,10,2,6,43, 2,4,10,4,2,11, 2,4,9,2,7,43, 2,4,9,4,2,11, + 2,4,8,2,8,43, 2,4,8,4,2,11, 2,4,7,2,9,43, 2,4,7,4,2,11, 2,4,6,2,10,43, 2,4,6,4,2,11, 2,4,6,6,13,27, 3,13,13,2,3,34, + 3,13,13,3,3,34, 3,13,13,5,3,2, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, 3,13,10,3,6,34, + 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, 3,13,6,3,10,34, + 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,3,2,13,34, 3,13,3,3,13,34, 3,13,2,2,14,34, 3,13,2,3,14,34, + 3,13,1,2,15,34, 3,13,1,3,15,34, 3,13,1,6,12,18, 3,12,13,2,3,35, 3,12,13,5,3,3, 3,12,12,2,4,35, 3,12,11,2,5,35, 3,12,10,2,6,35, + 3,12,9,2,7,35, 3,12,8,2,8,35, 3,12,7,2,9,35, 3,12,6,2,10,35, 3,12,5,2,11,35, 3,12,4,2,12,35, 3,12,3,2,13,35, 3,12,2,2,14,35, + 3,12,1,2,15,35, 3,12,1,6,12,19, 3,11,14,3,2,36, 3,11,14,5,3,4, 3,11,1,6,12,20, 3,10,14,5,3,5, 3,10,1,6,12,21, 3,9,14,4,3,6, + 3,9,14,5,3,6, 3,9,1,6,12,22, 3,8,13,5,3,7, 3,8,1,4,3,7, 3,8,1,6,12,23, 3,7,13,2,3,40, 3,7,13,4,3,8, 3,7,13,5,3,8, + 3,7,12,2,4,40, 3,7,12,4,3,8, 3,7,11,2,5,40, 3,7,11,4,3,8, 3,7,10,2,6,40, 3,7,10,4,3,8, 3,7,9,2,7,40, 3,7,9,4,3,8, + 3,7,8,2,8,40, 3,7,8,4,3,8, 3,7,7,2,9,40, 3,7,7,4,3,8, 3,7,6,2,10,40, 3,7,6,4,3,8, 3,7,5,2,11,40, 3,7,5,4,3,8, + 3,7,4,2,12,40, 3,7,4,4,3,8, 3,7,3,2,13,40, 3,7,3,4,3,8, 3,7,2,2,14,40, 3,7,2,4,3,8, 3,7,2,6,12,24, 3,5,11,3,5,42, + 3,5,11,5,3,10, 3,5,10,3,6,42, 3,5,9,3,7,42, 3,5,8,3,8,42, 3,5,7,3,9,42, 3,5,6,3,10,42, 3,5,6,6,12,26, 3,4,11,4,3,11, + 3,4,11,5,3,11, 3,4,6,6,12,27, 3,3,10,2,6,44, 3,3,10,4,3,12, 3,3,10,5,3,12, 3,3,9,2,7,44, 3,3,9,4,3,12, 3,3,8,2,8,44, + 3,3,8,4,3,12, 3,3,7,2,9,44, 3,3,7,4,3,12, 3,3,6,2,10,44, 3,3,6,4,3,12, 3,3,5,2,11,44, 3,3,5,3,11,44, 3,3,5,4,3,12, + 3,3,5,6,12,28, 4,14,12,2,4,33, 4,14,12,3,4,33, 4,14,12,5,4,1, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,10,2,6,33, 4,14,10,3,6,33, + 4,14,9,2,7,33, 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, 4,14,6,3,10,33, + 4,14,5,2,11,33, 4,14,5,3,11,33, 4,14,4,2,12,33, 4,14,4,3,12,33, 4,14,3,2,13,33, 4,14,3,3,13,33, 4,14,2,2,14,33, 4,14,2,3,14,33, + 4,14,2,6,11,17, 4,13,13,3,3,34, 4,13,13,5,4,2, 4,13,1,3,15,34, 4,13,1,6,11,18, 4,12,13,5,4,3, 4,12,1,6,11,19, 4,11,14,3,2,36, + 4,11,14,5,4,4, 4,11,1,6,11,20, 4,10,14,5,4,5, 4,10,1,6,11,21, 4,9,14,4,4,6, 4,9,14,5,4,6, 4,9,1,6,11,22, 4,8,13,5,4,7, + 4,8,1,4,4,7, 4,8,1,6,11,23, 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,4,4,4,8, 4,7,3,4,4,8, 4,7,2,4,4,8, 4,7,2,6,11,24, + 4,6,12,2,4,41, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,11,2,5,41, 4,6,10,2,6,41, 4,6,9,2,7,41, 4,6,8,2,8,41, 4,6,7,2,9,41, + 4,6,6,2,10,41, 4,6,5,2,11,41, 4,6,5,4,4,9, 4,6,5,6,11,25, 4,5,11,5,4,10, 4,5,6,6,11,26, 4,4,11,4,4,11, 4,4,11,5,4,11, + 4,4,6,6,11,27, 4,3,10,5,4,12, 4,3,5,3,11,44, 4,3,5,6,11,28, 4,2,11,2,5,45, 4,2,11,3,5,45, 4,2,11,5,4,13, 4,2,10,2,6,45, + 4,2,9,2,7,45, 4,2,8,2,8,45, 4,2,7,2,9,45, 4,2,6,2,10,45, 4,2,5,2,11,45, 4,2,5,4,4,13, 4,2,5,6,11,29, 4,1,11,2,5,46, + 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,10,2,6,46, 4,1,10,4,4,14, 4,1,9,2,7,46, 4,1,9,4,4,14, 4,1,8,2,8,46, 4,1,8,4,4,14, + 4,1,7,2,9,46, 4,1,7,4,4,14, 4,1,6,2,10,46, 4,1,6,4,4,14, 4,1,6,6,11,30, 5,14,12,3,4,33, 5,14,12,5,5,1, 5,14,11,3,5,33, + 5,14,10,3,6,33, 5,14,9,3,7,33, 5,14,8,3,8,33, 5,14,7,3,9,33, 5,14,6,3,10,33, 5,14,5,3,11,33, 5,14,4,3,12,33, 5,14,3,3,13,33, + 5,14,2,3,14,33, 5,14,2,6,10,17, 5,13,13,3,3,34, 5,13,13,5,5,2, 5,13,1,3,15,34, 5,13,1,6,10,18, 5,12,13,5,5,3, 5,12,1,6,10,19, + 5,11,14,3,2,36, 5,11,14,5,5,4, 5,11,1,6,10,20, 5,10,14,5,5,5, 5,10,1,6,10,21, 5,9,14,4,5,6, 5,9,14,5,5,6, 5,9,1,6,10,22, + 5,8,13,5,5,7, 5,8,1,4,5,7, 5,8,1,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,4,4,5,8, 5,7,3,4,5,8, 5,7,2,4,5,8, + 5,7,2,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,5,4,5,9, 5,6,5,6,10,25, 5,5,11,5,5,10, 5,5,6,6,10,26, 5,4,11,4,5,11, + 5,4,11,5,5,11, 5,4,6,6,10,27, 5,3,10,5,5,12, 5,3,5,3,11,44, 5,3,5,6,10,28, 5,2,11,3,5,45, 5,2,11,5,5,13, 5,2,5,4,5,13, + 5,2,5,6,10,29, 5,1,11,4,5,14, 5,1,11,5,5,14, 5,1,6,6,10,30, 5,0,10,2,6,47, 5,0,10,5,5,15, 5,0,9,2,7,47, 5,0,8,2,8,47, + 5,0,7,2,9,47, 5,0,6,2,10,47, 5,0,6,6,10,31, 6,15,10,2,6,32, 6,15,10,3,6,32, 6,15,10,5,6,0, 6,15,9,2,7,32, 6,15,9,3,7,32, + 6,15,8,2,8,32, 6,15,8,3,8,32, 6,15,7,2,9,32, 6,15,7,3,9,32, 6,15,6,2,10,32, 6,15,6,3,10,32, 6,15,5,2,11,32, 6,15,5,3,11,32, + 6,15,4,2,12,32, 6,15,4,3,12,32, 6,15,3,2,13,32, 6,15,3,3,13,32, 6,15,3,6,9,16, 6,14,12,3,4,33, 6,14,12,5,6,1, 6,14,11,3,5,33, + 6,14,2,3,14,33, 6,14,2,6,9,17, 6,13,13,3,3,34, 6,13,13,5,6,2, 6,13,1,3,15,34, 6,13,1,6,9,18, 6,12,13,5,6,3, 6,12,1,6,9,19, + 6,11,14,3,2,36, 6,11,14,5,6,4, 6,11,1,6,9,20, 6,10,14,5,6,5, 6,10,1,6,9,21, 6,9,14,4,6,6, 6,9,14,5,6,6, 6,9,1,6,9,22, + 6,8,13,5,6,7, 6,8,1,4,6,7, 6,8,1,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,4,4,6,8, 6,7,3,4,6,8, 6,7,2,4,6,8, + 6,7,2,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,5,4,6,9, 6,6,5,6,9,25, 6,5,11,5,6,10, 6,5,6,6,9,26, 6,4,11,4,6,11, + 6,4,11,5,6,11, 6,4,6,6,9,27, 6,3,10,5,6,12, 6,3,5,3,11,44, 6,3,5,6,9,28, 6,2,11,3,5,45, 6,2,11,5,6,13, 6,2,5,4,6,13, + 6,2,5,6,9,29, 6,1,11,4,6,14, 6,1,11,5,6,14, 6,1,6,6,9,30, 6,0,10,1,6,47, 6,0,10,5,6,15, 6,0,9,1,7,47, 6,0,8,1,8,47, + 6,0,7,1,9,47, 6,0,6,1,10,47, 6,0,6,6,9,31, 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, + 7,15,6,3,10,32, 7,15,5,3,11,32, 7,15,4,3,12,32, 7,15,3,3,13,32, 7,15,3,6,8,16, 7,14,12,3,4,33, 7,14,12,5,7,1, 7,14,11,3,5,33, + 7,14,2,3,14,33, 7,14,2,6,8,17, 7,13,13,3,3,34, 7,13,13,5,7,2, 7,13,1,3,15,34, 7,13,1,6,8,18, 7,12,13,5,7,3, 7,12,1,6,8,19, + 7,11,14,3,2,36, 7,11,14,5,7,4, 7,11,1,6,8,20, 7,10,14,5,7,5, 7,10,1,6,8,21, 7,9,14,4,7,6, 7,9,14,5,7,6, 7,9,1,6,8,22, + 7,8,13,5,7,7, 7,8,1,4,7,7, 7,8,1,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,4,4,7,8, 7,7,3,4,7,8, 7,7,2,4,7,8, + 7,7,2,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,5,4,7,9, 7,6,5,6,8,25, 7,5,11,5,7,10, 7,5,6,6,8,26, 7,4,11,4,7,11, + 7,4,11,5,7,11, 7,4,6,6,8,27, 7,3,10,5,7,12, 7,3,5,3,11,44, 7,3,5,6,8,28, 7,2,11,3,5,45, 7,2,11,5,7,13, 7,2,5,4,7,13, + 7,2,5,6,8,29, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, + 7,1,6,6,8,30, 8,15,10,3,6,32, 8,15,10,5,8,0, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,5,3,11,32, + 8,15,4,3,12,32, 8,15,3,3,13,32, 8,15,3,6,7,16, 8,14,12,3,4,33, 8,14,12,5,8,1, 8,14,11,3,5,33, 8,14,2,3,14,33, 8,14,2,6,7,17, + 8,13,13,3,3,34, 8,13,13,5,8,2, 8,13,1,3,15,34, 8,13,1,6,7,18, 8,12,13,5,8,3, 8,12,1,6,7,19, 8,11,14,3,2,36, 8,11,14,5,8,4, + 8,11,1,6,7,20, 8,10,14,5,8,5, 8,10,1,6,7,21, 8,9,14,4,8,6, 8,9,14,5,8,6, 8,9,1,6,7,22, 8,8,13,5,8,7, 8,8,1,4,8,7, + 8,8,1,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,4,4,8,8, 8,7,3,4,8,8, 8,7,2,4,8,8, 8,7,2,6,7,24, 8,6,12,4,8,9, + 8,6,12,5,8,9, 8,6,5,4,8,9, 8,6,5,6,7,25, 8,5,11,5,8,10, 8,5,6,6,7,26, 8,4,11,4,8,11, 8,4,11,5,8,11, 8,4,6,6,7,27, + 8,3,10,5,8,12, 8,3,5,3,11,44, 8,3,5,6,7,28, 8,2,11,3,5,45, 8,2,11,5,8,13, 8,2,5,4,8,13, 8,2,5,6,7,29, 8,1,11,4,8,14, + 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,6,6,7,30, 9,15,10,1,6,32, + 9,15,10,3,6,32, 9,15,10,5,9,0, 9,15,9,1,7,32, 9,15,9,3,7,32, 9,15,8,1,8,32, 9,15,8,3,8,32, 9,15,7,1,9,32, 9,15,7,3,9,32, + 9,15,6,1,10,32, 9,15,6,3,10,32, 9,15,5,1,11,32, 9,15,5,3,11,32, 9,15,4,1,12,32, 9,15,4,3,12,32, 9,15,3,1,13,32, 9,15,3,3,13,32, + 9,15,3,6,6,16, 9,14,12,3,4,33, 9,14,12,5,9,1, 9,14,11,3,5,33, 9,14,2,3,14,33, 9,14,2,6,6,17, 9,13,13,3,3,34, 9,13,13,5,9,2, + 9,13,1,3,15,34, 9,13,1,6,6,18, 9,12,13,5,9,3, 9,12,1,6,6,19, 9,11,14,3,2,36, 9,11,14,5,9,4, 9,11,1,6,6,20, 9,10,14,5,9,5, + 9,10,1,6,6,21, 9,9,14,4,9,6, 9,9,14,5,9,6, 9,9,1,6,6,22, 9,8,13,5,9,7, 9,8,1,4,9,7, 9,8,1,6,6,23, 9,7,13,4,9,8, + 9,7,13,5,9,8, 9,7,4,4,9,8, 9,7,3,4,9,8, 9,7,2,4,9,8, 9,7,2,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,5,4,9,9, + 9,6,5,6,6,25, 9,5,11,5,9,10, 9,5,6,6,6,26, 9,4,11,4,9,11, 9,4,11,5,9,11, 9,4,6,6,6,27, 9,3,10,5,9,12, 9,3,5,3,11,44, + 9,3,5,6,6,28, 9,2,11,3,5,45, 9,2,11,5,9,13, 9,2,5,4,9,13, 9,2,5,6,6,29, 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,6,6,6,30, + 9,0,10,2,6,47, 9,0,10,5,9,15, 9,0,9,2,7,47, 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,6,2,10,47, 9,0,6,6,6,31, 10,14,12,3,4,33, + 10,14,12,5,10,1, 10,14,11,3,5,33, 10,14,10,3,6,33, 10,14,9,3,7,33, 10,14,8,3,8,33, 10,14,7,3,9,33, 10,14,6,3,10,33, 10,14,5,3,11,33, + 10,14,4,3,12,33, 10,14,3,3,13,33, 10,14,2,3,14,33, 10,14,2,6,5,17, 10,13,13,3,3,34, 10,13,13,5,10,2, 10,13,1,3,15,34, 10,13,1,6,5,18, + 10,12,13,5,10,3, 10,12,1,6,5,19, 10,11,14,3,2,36, 10,11,14,5,10,4, 10,11,1,6,5,20, 10,10,14,5,10,5, 10,10,1,6,5,21, 10,9,14,4,10,6, + 10,9,14,5,10,6, 10,9,1,6,5,22, 10,8,13,5,10,7, 10,8,1,4,10,7, 10,8,1,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,4,4,10,8, + 10,7,3,4,10,8, 10,7,2,4,10,8, 10,7,2,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,5,4,10,9, 10,6,5,6,5,25, 10,5,11,5,10,10, + 10,5,6,6,5,26, 10,4,11,4,10,11, 10,4,11,5,10,11, 10,4,6,6,5,27, 10,3,10,5,10,12, 10,3,5,3,11,44, 10,3,5,6,5,28, 10,2,11,3,5,45, + 10,2,11,5,10,13, 10,2,5,4,10,13, 10,2,5,6,5,29, 10,1,11,4,10,14, 10,1,11,5,10,14, 10,1,6,6,5,30, 10,0,10,1,6,47, 10,0,10,5,10,15, + 10,0,9,1,7,47, 10,0,8,1,8,47, 10,0,7,1,9,47, 10,0,6,1,10,47, 10,0,6,6,5,31, 11,14,12,1,4,33, 11,14,12,3,4,33, 11,14,12,5,11,1, + 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, 11,14,8,3,8,33, + 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,4,1,12,33, 11,14,4,3,12,33, + 11,14,3,1,13,33, 11,14,3,3,13,33, 11,14,2,1,14,33, 11,14,2,3,14,33, 11,14,2,6,4,17, 11,13,13,3,3,34, 11,13,13,5,11,2, 11,13,1,3,15,34, + 11,13,1,6,4,18, 11,12,13,5,11,3, 11,12,1,6,4,19, 11,11,14,3,2,36, 11,11,14,5,11,4, 11,11,1,6,4,20, 11,10,14,5,11,5, 11,10,1,6,4,21, + 11,9,14,4,11,6, 11,9,14,5,11,6, 11,9,1,6,4,22, 11,8,13,5,11,7, 11,8,1,4,11,7, 11,8,1,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, + 11,7,4,4,11,8, 11,7,3,4,11,8, 11,7,2,4,11,8, 11,7,2,6,4,24, 11,6,12,1,4,41, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,11,1,5,41, + 11,6,10,1,6,41, 11,6,9,1,7,41, 11,6,8,1,8,41, 11,6,7,1,9,41, 11,6,6,1,10,41, 11,6,5,1,11,41, 11,6,5,4,11,9, 11,6,5,6,4,25, + 11,5,11,5,11,10, 11,5,6,6,4,26, 11,4,11,4,11,11, 11,4,11,5,11,11, 11,4,6,6,4,27, 11,3,10,5,11,12, 11,3,5,3,11,44, 11,3,5,6,4,28, + 11,2,11,1,5,45, 11,2,11,3,5,45, 11,2,11,5,11,13, 11,2,10,1,6,45, 11,2,9,1,7,45, 11,2,8,1,8,45, 11,2,7,1,9,45, 11,2,6,1,10,45, + 11,2,5,1,11,45, 11,2,5,4,11,13, 11,2,5,6,4,29, 11,1,11,1,5,46, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,10,1,6,46, 11,1,10,4,11,14, + 11,1,9,1,7,46, 11,1,9,4,11,14, 11,1,8,1,8,46, 11,1,8,4,11,14, 11,1,7,1,9,46, 11,1,7,4,11,14, 11,1,6,1,10,46, 11,1,6,4,11,14, + 11,1,6,6,4,30, 12,13,13,1,3,34, 12,13,13,3,3,34, 12,13,13,5,12,2, 12,13,12,1,4,34, 12,13,12,3,4,34, 12,13,11,1,5,34, 12,13,11,3,5,34, + 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, 12,13,7,1,9,34, 12,13,7,3,9,34, + 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,4,1,12,34, 12,13,4,3,12,34, 12,13,3,1,13,34, 12,13,3,3,13,34, + 12,13,2,1,14,34, 12,13,2,3,14,34, 12,13,1,1,15,34, 12,13,1,3,15,34, 12,13,1,6,3,18, 12,12,13,1,3,35, 12,12,13,5,12,3, 12,12,12,1,4,35, + 12,12,11,1,5,35, 12,12,10,1,6,35, 12,12,9,1,7,35, 12,12,8,1,8,35, 12,12,7,1,9,35, 12,12,6,1,10,35, 12,12,5,1,11,35, 12,12,4,1,12,35, + 12,12,3,1,13,35, 12,12,2,1,14,35, 12,12,1,1,15,35, 12,12,1,6,3,19, 12,11,14,3,2,36, 12,11,14,5,12,4, 12,11,1,6,3,20, 12,10,14,5,12,5, + 12,10,1,6,3,21, 12,9,14,4,12,6, 12,9,14,5,12,6, 12,9,1,6,3,22, 12,8,13,5,12,7, 12,8,1,4,12,7, 12,8,1,6,3,23, 12,7,13,1,3,40, + 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,12,1,4,40, 12,7,12,4,12,8, 12,7,11,1,5,40, 12,7,11,4,12,8, 12,7,10,1,6,40, 12,7,10,4,12,8, + 12,7,9,1,7,40, 12,7,9,4,12,8, 12,7,8,1,8,40, 12,7,8,4,12,8, 12,7,7,1,9,40, 12,7,7,4,12,8, 12,7,6,1,10,40, 12,7,6,4,12,8, + 12,7,5,1,11,40, 12,7,5,4,12,8, 12,7,4,1,12,40, 12,7,4,4,12,8, 12,7,3,1,13,40, 12,7,3,4,12,8, 12,7,2,1,14,40, 12,7,2,4,12,8, + 12,7,2,6,3,24, 12,5,11,3,5,42, 12,5,11,5,12,10, 12,5,10,3,6,42, 12,5,9,3,7,42, 12,5,8,3,8,42, 12,5,7,3,9,42, 12,5,6,3,10,42, + 12,5,6,6,3,26, 12,4,11,4,12,11, 12,4,11,5,12,11, 12,4,6,6,3,27, 12,3,10,1,6,44, 12,3,10,4,12,12, 12,3,10,5,12,12, 12,3,9,1,7,44, + 12,3,9,4,12,12, 12,3,8,1,8,44, 12,3,8,4,12,12, 12,3,7,1,9,44, 12,3,7,4,12,12, 12,3,6,1,10,44, 12,3,6,4,12,12, 12,3,5,1,11,44, + 12,3,5,3,11,44, 12,3,5,4,12,12, 12,3,5,6,3,28, 13,11,14,1,2,36, 13,11,14,3,2,36, 13,11,14,5,13,4, 13,11,13,1,3,36, 13,11,13,3,3,36, + 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, 13,11,11,3,5,36, 13,11,10,1,6,36, 13,11,10,3,6,36, 13,11,9,1,7,36, 13,11,9,3,7,36, + 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, 13,11,7,3,9,36, 13,11,6,1,10,36, 13,11,6,3,10,36, 13,11,5,1,11,36, 13,11,5,3,11,36, + 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, 13,11,3,3,13,36, 13,11,2,1,14,36, 13,11,2,3,14,36, 13,11,1,1,15,36, 13,11,1,3,15,36, + 13,11,1,6,2,20, 13,10,14,1,2,37, 13,10,14,5,13,5, 13,10,13,1,3,37, 13,10,12,1,4,37, 13,10,11,1,5,37, 13,10,10,1,6,37, 13,10,9,1,7,37, + 13,10,8,1,8,37, 13,10,7,1,9,37, 13,10,6,1,10,37, 13,10,5,1,11,37, 13,10,4,1,12,37, 13,10,3,1,13,37, 13,10,2,1,14,37, 13,10,1,1,15,37, + 13,10,1,6,2,21, 13,9,14,1,2,38, 13,9,14,4,13,6, 13,9,14,5,13,6, 13,9,13,1,3,38, 13,9,12,1,4,38, 13,9,11,1,5,38, 13,9,10,1,6,38, + 13,9,9,1,7,38, 13,9,8,1,8,38, 13,9,7,1,9,38, 13,9,6,1,10,38, 13,9,5,1,11,38, 13,9,4,1,12,38, 13,9,3,1,13,38, 13,9,2,1,14,38, + 13,9,1,1,15,38, 13,9,1,6,2,22, 13,8,13,1,3,39, 13,8,13,4,13,7, 13,8,13,5,13,7, 13,8,12,1,4,39, 13,8,12,4,13,7, 13,8,11,1,5,39, + 13,8,11,4,13,7, 13,8,10,1,6,39, 13,8,10,4,13,7, 13,8,9,1,7,39, 13,8,9,4,13,7, 13,8,8,1,8,39, 13,8,8,4,13,7, 13,8,7,1,9,39, + 13,8,7,4,13,7, 13,8,6,1,10,39, 13,8,6,4,13,7, 13,8,5,1,11,39, 13,8,5,4,13,7, 13,8,4,1,12,39, 13,8,4,4,13,7, 13,8,3,1,13,39, + 13,8,3,4,13,7, 13,8,2,1,14,39, 13,8,2,4,13,7, 13,8,1,1,15,39, 13,8,1,4,13,7, 13,8,1,6,2,23, 13,5,11,1,5,42, 13,5,11,3,5,42, + 13,5,11,5,2,26, 13,5,10,1,6,42, 13,5,10,3,6,42, 13,5,9,1,7,42, 13,5,9,3,7,42, 13,5,8,1,8,42, 13,5,8,3,8,42, 13,5,7,1,9,42, + 13,5,7,3,9,42, 13,5,6,1,10,42, 13,5,6,3,10,42, 13,5,6,6,2,26, 13,4,11,1,5,43, 13,4,11,4,13,11, 13,4,11,5,13,11, 13,4,10,1,6,43, + 13,4,10,4,13,11, 13,4,9,1,7,43, 13,4,9,4,13,11, 13,4,8,1,8,43, 13,4,8,4,13,11, 13,4,7,1,9,43, 13,4,7,4,13,11, 13,4,6,1,10,43, + 13,4,6,4,13,11, 13,4,6,6,2,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1651, + count = 1102, + faces = { + 2,10,15,2,1,85, 2,10,15,3,1,85, 2,10,15,5,2,53, 2,10,14,2,2,85, 2,10,14,3,2,85, 2,10,13,2,3,85, 2,10,13,3,3,85, 2,10,12,2,4,85, + 2,10,12,3,4,85, 2,10,11,2,5,85, 2,10,11,3,5,85, 2,10,10,2,6,85, 2,10,10,3,6,85, 2,10,9,2,7,85, 2,10,9,3,7,85, 2,10,8,2,8,85, + 2,10,8,3,8,85, 2,10,7,2,9,85, 2,10,7,3,9,85, 2,10,6,2,10,85, 2,10,6,3,10,85, 2,10,5,2,11,85, 2,10,5,3,11,85, 2,10,4,2,12,85, + 2,10,4,3,12,85, 2,10,3,2,13,85, 2,10,3,3,13,85, 2,10,2,2,14,85, 2,10,2,3,14,85, 2,10,2,6,13,69, 2,9,15,2,1,86, 2,9,15,5,2,54, + 2,9,14,2,2,86, 2,9,13,2,3,86, 2,9,12,2,4,86, 2,9,11,2,5,86, 2,9,10,2,6,86, 2,9,9,2,7,86, 2,9,8,2,8,86, 2,9,7,2,9,86, + 2,9,6,2,10,86, 2,9,5,2,11,86, 2,9,4,2,12,86, 2,9,3,2,13,86, 2,9,2,2,14,86, 2,9,1,2,15,86, 2,9,1,3,15,86, 2,9,1,6,13,70, + 2,8,15,2,1,87, 2,8,15,4,2,55, 2,8,15,5,2,55, 2,8,14,2,2,87, 2,8,13,2,3,87, 2,8,12,2,4,87, 2,8,11,2,5,87, 2,8,10,2,6,87, + 2,8,9,2,7,87, 2,8,8,2,8,87, 2,8,7,2,9,87, 2,8,6,2,10,87, 2,8,5,2,11,87, 2,8,4,2,12,87, 2,8,3,2,13,87, 2,8,2,2,14,87, + 2,8,1,2,15,87, 2,8,1,6,13,71, 2,7,14,2,2,88, 2,7,14,4,2,56, 2,7,14,5,2,56, 2,7,13,2,3,88, 2,7,13,4,2,56, 2,7,12,2,4,88, + 2,7,12,4,2,56, 2,7,11,2,5,88, 2,7,11,4,2,56, 2,7,10,2,6,88, 2,7,10,4,2,56, 2,7,9,2,7,88, 2,7,9,4,2,56, 2,7,8,2,8,88, + 2,7,8,4,2,56, 2,7,7,2,9,88, 2,7,7,4,2,56, 2,7,6,2,10,88, 2,7,6,4,2,56, 2,7,5,2,11,88, 2,7,5,4,2,56, 2,7,4,2,12,88, + 2,7,4,4,2,56, 2,7,3,2,13,88, 2,7,3,4,2,56, 2,7,2,2,14,88, 2,7,2,4,2,56, 2,7,1,2,15,88, 2,7,1,4,2,56, 2,7,1,6,13,72, + 2,5,13,2,3,90, 2,5,13,3,3,90, 2,5,13,4,2,58, 2,5,13,5,2,58, 2,5,12,2,4,90, 2,5,12,3,4,90, 2,5,11,2,5,90, 2,5,11,3,5,90, + 2,5,10,2,6,90, 2,5,10,3,6,90, 2,5,9,2,7,90, 2,5,9,3,7,90, 2,5,8,2,8,90, 2,5,8,3,8,90, 2,5,7,2,9,90, 2,5,7,3,9,90, + 2,5,6,2,10,90, 2,5,6,3,10,90, 2,5,6,4,2,58, 2,5,6,6,2,58, 2,4,12,2,4,91, 2,4,12,4,2,59, 2,4,12,5,2,59, 2,4,11,2,5,91, + 2,4,11,4,2,59, 2,4,10,2,6,91, 2,4,10,4,2,59, 2,4,9,2,7,91, 2,4,9,4,2,59, 2,4,8,2,8,91, 2,4,8,4,2,59, 2,4,7,2,9,91, + 2,4,7,4,2,59, 2,4,7,6,2,59, 3,12,14,2,2,83, 3,12,14,3,2,83, 3,12,14,5,3,51, 3,12,13,2,3,83, 3,12,13,3,3,83, 3,12,12,2,4,83, + 3,12,12,3,4,83, 3,12,11,2,5,83, 3,12,11,3,5,83, 3,12,10,2,6,83, 3,12,10,3,6,83, 3,12,9,2,7,83, 3,12,9,3,7,83, 3,12,8,2,8,83, + 3,12,8,3,8,83, 3,12,7,2,9,83, 3,12,7,3,9,83, 3,12,6,2,10,83, 3,12,6,3,10,83, 3,12,5,2,11,83, 3,12,5,3,11,83, 3,12,4,2,12,83, + 3,12,4,3,12,83, 3,12,3,2,13,83, 3,12,3,3,13,83, 3,12,2,2,14,83, 3,12,2,3,14,83, 3,12,2,6,12,67, 3,11,15,2,1,84, 3,11,15,3,1,84, + 3,11,15,5,3,52, 3,11,14,2,2,84, 3,11,13,2,3,84, 3,11,12,2,4,84, 3,11,11,2,5,84, 3,11,10,2,6,84, 3,11,9,2,7,84, 3,11,8,2,8,84, + 3,11,7,2,9,84, 3,11,6,2,10,84, 3,11,5,2,11,84, 3,11,4,2,12,84, 3,11,3,2,13,84, 3,11,2,2,14,84, 3,11,2,6,12,68, 3,10,15,5,3,53, + 3,10,2,6,12,69, 3,9,15,5,3,54, 3,9,1,3,15,86, 3,9,1,6,12,70, 3,8,15,4,3,55, 3,8,15,5,3,55, 3,8,1,6,12,71, 3,7,14,5,3,56, + 3,7,1,6,12,72, 3,6,14,2,2,89, 3,6,14,4,3,57, 3,6,14,5,3,57, 3,6,13,2,3,89, 3,6,12,2,4,89, 3,6,11,2,5,89, 3,6,10,2,6,89, + 3,6,9,2,7,89, 3,6,8,2,8,89, 3,6,7,2,9,89, 3,6,6,2,10,89, 3,6,5,2,11,89, 3,6,5,4,3,57, 3,6,4,2,12,89, 3,6,4,4,3,57, + 3,6,3,2,13,89, 3,6,3,4,3,57, 3,6,2,2,14,89, 3,6,2,4,3,57, 3,6,1,2,15,89, 3,6,1,4,3,57, 3,6,1,6,12,73, 3,5,13,4,3,58, + 3,5,13,5,3,58, 3,5,6,4,3,58, 3,5,6,6,3,58, 3,4,12,5,3,59, 3,4,7,6,12,75, 3,3,12,2,4,92, 3,3,12,5,3,60, 3,3,11,2,5,92, + 3,3,10,2,6,92, 3,3,9,2,7,92, 3,3,8,2,8,92, 3,3,7,2,9,92, 3,3,6,2,10,92, 3,3,6,3,10,92, 3,3,6,6,12,76, 3,2,13,2,3,93, + 3,2,13,3,3,93, 3,2,13,4,3,61, 3,2,13,5,3,61, 3,2,12,2,4,93, 3,2,12,4,3,61, 3,2,11,2,5,93, 3,2,11,4,3,61, 3,2,10,2,6,93, + 3,2,10,4,3,61, 3,2,9,2,7,93, 3,2,9,4,3,61, 3,2,8,2,8,93, 3,2,8,4,3,61, 3,2,7,2,9,93, 3,2,7,4,3,61, 3,2,6,2,10,93, + 3,2,6,4,3,61, 3,2,5,2,11,93, 3,2,5,3,11,93, 3,2,5,4,3,61, 3,2,4,2,12,93, 3,2,4,3,12,93, 3,2,4,4,3,61, 3,2,4,6,12,77, + 4,13,13,2,3,82, 4,13,13,3,3,82, 4,13,13,5,4,50, 4,13,12,2,4,82, 4,13,12,3,4,82, 4,13,11,2,5,82, 4,13,11,3,5,82, 4,13,10,2,6,82, + 4,13,10,3,6,82, 4,13,9,2,7,82, 4,13,9,3,7,82, 4,13,8,2,8,82, 4,13,8,3,8,82, 4,13,7,2,9,82, 4,13,7,3,9,82, 4,13,6,2,10,82, + 4,13,6,3,10,82, 4,13,5,2,11,82, 4,13,5,3,11,82, 4,13,4,2,12,82, 4,13,4,3,12,82, 4,13,3,2,13,82, 4,13,3,3,13,82, 4,13,3,6,11,66, + 4,12,14,3,2,83, 4,12,14,5,4,51, 4,12,2,3,14,83, 4,12,2,6,11,67, 4,11,15,3,1,84, 4,11,15,5,4,52, 4,11,2,6,11,68, 4,10,15,5,4,53, + 4,10,2,6,11,69, 4,9,15,5,4,54, 4,9,1,3,15,86, 4,9,1,6,11,70, 4,8,15,4,4,55, 4,8,15,5,4,55, 4,8,1,6,11,71, 4,7,14,5,4,56, + 4,7,1,6,11,72, 4,6,14,4,4,57, 4,6,14,5,4,57, 4,6,5,4,4,57, 4,6,4,4,4,57, 4,6,3,4,4,57, 4,6,2,4,4,57, 4,6,1,4,4,57, + 4,6,1,6,11,73, 4,5,13,4,4,58, 4,5,13,5,4,58, 4,5,6,4,4,58, 4,5,6,6,11,74, 4,4,12,5,4,59, 4,4,7,6,11,75, 4,3,12,5,4,60, + 4,3,6,3,10,92, 4,3,6,6,11,76, 4,2,13,3,3,93, 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,5,3,11,93, 4,2,4,3,12,93, 4,2,4,6,11,77, + 4,1,12,2,4,94, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,2,5,94, 4,1,11,4,4,62, 4,1,10,2,6,94, 4,1,10,4,4,62, 4,1,9,2,7,94, + 4,1,9,4,4,62, 4,1,8,2,8,94, 4,1,8,4,4,62, 4,1,7,2,9,94, 4,1,7,4,4,62, 4,1,6,2,10,94, 4,1,6,4,4,62, 4,1,5,2,11,94, + 4,1,5,4,4,62, 4,1,4,2,12,94, 4,1,4,4,4,62, 4,1,4,6,11,78, 5,13,13,3,3,82, 5,13,13,5,5,50, 5,13,12,3,4,82, 5,13,11,3,5,82, + 5,13,10,3,6,82, 5,13,9,3,7,82, 5,13,8,3,8,82, 5,13,7,3,9,82, 5,13,6,3,10,82, 5,13,5,3,11,82, 5,13,4,3,12,82, 5,13,3,3,13,82, + 5,13,3,6,10,66, 5,12,14,3,2,83, 5,12,14,5,5,51, 5,12,2,3,14,83, 5,12,2,6,10,67, 5,11,15,3,1,84, 5,11,15,5,5,52, 5,11,2,6,10,68, + 5,10,15,5,5,53, 5,10,2,6,10,69, 5,9,15,5,5,54, 5,9,1,3,15,86, 5,9,1,6,10,70, 5,8,15,4,5,55, 5,8,15,5,5,55, 5,8,1,6,10,71, + 5,7,14,5,5,56, 5,7,1,6,10,72, 5,6,14,4,5,57, 5,6,14,5,5,57, 5,6,5,4,5,57, 5,6,4,4,5,57, 5,6,3,4,5,57, 5,6,2,4,5,57, + 5,6,1,4,5,57, 5,6,1,6,10,73, 5,5,13,4,5,58, 5,5,13,5,5,58, 5,5,6,4,5,58, 5,5,6,6,10,74, 5,4,12,5,5,59, 5,4,7,6,10,75, + 5,3,12,5,5,60, 5,3,6,3,10,92, 5,3,6,6,10,76, 5,2,13,3,3,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,5,3,11,93, 5,2,4,3,12,93, + 5,2,4,6,10,77, 5,1,12,5,5,62, 5,1,9,4,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,4,4,5,62, 5,1,4,6,10,78, 5,0,13,2,3,95, + 5,0,13,3,3,95, 5,0,13,5,5,63, 5,0,12,2,4,95, 5,0,11,2,5,95, 5,0,10,2,6,95, 5,0,10,6,5,63, 5,0,6,2,10,95, 5,0,6,5,5,63, + 5,0,5,2,11,95, 5,0,5,6,5,63, 6,14,11,2,5,81, 6,14,11,3,5,81, 6,14,11,5,6,49, 6,14,10,2,6,81, 6,14,10,3,6,81, 6,14,9,2,7,81, + 6,14,9,3,7,81, 6,14,8,2,8,81, 6,14,8,3,8,81, 6,14,7,2,9,81, 6,14,7,3,9,81, 6,14,6,2,10,81, 6,14,6,3,10,81, 6,14,5,2,11,81, + 6,14,5,3,11,81, 6,14,4,2,12,81, 6,14,4,3,12,81, 6,14,4,6,9,65, 6,13,13,3,3,82, 6,13,13,5,6,50, 6,13,12,3,4,82, 6,13,3,3,13,82, + 6,13,3,6,9,66, 6,12,14,3,2,83, 6,12,14,5,6,51, 6,12,2,3,14,83, 6,12,2,6,9,67, 6,11,15,3,1,84, 6,11,15,5,6,52, 6,11,2,6,9,68, + 6,10,15,5,6,53, 6,10,2,6,9,69, 6,9,15,5,6,54, 6,9,1,3,15,86, 6,9,1,6,9,70, 6,8,15,4,6,55, 6,8,15,5,6,55, 6,8,1,6,9,71, + 6,7,14,5,6,56, 6,7,1,6,9,72, 6,6,14,4,6,57, 6,6,14,5,6,57, 6,6,5,4,6,57, 6,6,4,4,6,57, 6,6,3,4,6,57, 6,6,2,4,6,57, + 6,6,1,4,6,57, 6,6,1,6,9,73, 6,5,13,4,6,58, 6,5,13,5,6,58, 6,5,6,4,6,58, 6,5,6,6,9,74, 6,4,12,5,6,59, 6,4,7,6,9,75, + 6,3,12,5,6,60, 6,3,6,3,10,92, 6,3,6,6,9,76, 6,2,13,3,3,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,5,3,11,93, 6,2,4,3,12,93, + 6,2,4,6,9,77, 6,1,12,5,6,62, 6,1,9,4,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,4,4,6,62, 6,1,4,6,9,78, 6,0,13,3,3,95, + 6,0,13,5,6,63, 6,0,10,6,6,63, 6,0,6,5,6,63, 6,0,5,6,6,63, 7,14,11,3,5,81, 7,14,11,5,7,49, 7,14,10,3,6,81, 7,14,9,3,7,81, + 7,14,8,3,8,81, 7,14,7,3,9,81, 7,14,6,3,10,81, 7,14,5,3,11,81, 7,14,4,3,12,81, 7,14,4,6,8,65, 7,13,13,3,3,82, 7,13,13,5,7,50, + 7,13,12,3,4,82, 7,13,3,3,13,82, 7,13,3,6,8,66, 7,12,14,3,2,83, 7,12,14,5,7,51, 7,12,2,3,14,83, 7,12,2,6,8,67, 7,11,15,3,1,84, + 7,11,15,5,7,52, 7,11,2,6,8,68, 7,10,15,5,7,53, 7,10,2,6,8,69, 7,9,15,5,7,54, 7,9,1,3,15,86, 7,9,1,6,8,70, 7,8,15,4,7,55, + 7,8,15,5,7,55, 7,8,1,6,8,71, 7,7,14,5,7,56, 7,7,1,6,8,72, 7,6,14,4,7,57, 7,6,14,5,7,57, 7,6,5,4,7,57, 7,6,4,4,7,57, + 7,6,3,4,7,57, 7,6,2,4,7,57, 7,6,1,4,7,57, 7,6,1,6,8,73, 7,5,13,4,7,58, 7,5,13,5,7,58, 7,5,6,4,7,58, 7,5,6,6,8,74, + 7,4,12,5,7,59, 7,4,7,6,8,75, 7,3,12,5,7,60, 7,3,6,3,10,92, 7,3,6,6,8,76, 7,2,13,3,3,93, 7,2,13,4,7,61, 7,2,13,5,7,61, + 7,2,5,3,11,93, 7,2,4,3,12,93, 7,2,4,6,8,77, 7,1,12,5,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,4,4,7,62, + 7,1,4,6,8,78, 7,0,13,1,3,95, 7,0,13,3,3,95, 7,0,13,5,7,63, 7,0,12,1,4,95, 7,0,11,1,5,95, 7,0,10,1,6,95, 7,0,10,6,7,63, + 7,0,6,1,10,95, 7,0,6,5,7,63, 7,0,5,1,11,95, 7,0,5,6,7,63, 8,14,11,3,5,81, 8,14,11,5,8,49, 8,14,10,3,6,81, 8,14,9,3,7,81, + 8,14,8,3,8,81, 8,14,7,3,9,81, 8,14,6,3,10,81, 8,14,5,3,11,81, 8,14,4,3,12,81, 8,14,4,6,7,65, 8,13,13,3,3,82, 8,13,13,5,8,50, + 8,13,12,3,4,82, 8,13,3,3,13,82, 8,13,3,6,7,66, 8,12,14,3,2,83, 8,12,14,5,8,51, 8,12,2,3,14,83, 8,12,2,6,7,67, 8,11,15,3,1,84, + 8,11,15,5,8,52, 8,11,2,6,7,68, 8,10,15,5,8,53, 8,10,2,6,7,69, 8,9,15,5,8,54, 8,9,1,3,15,86, 8,9,1,6,7,70, 8,8,15,4,8,55, + 8,8,15,5,8,55, 8,8,1,6,7,71, 8,7,14,5,8,56, 8,7,1,6,7,72, 8,6,14,4,8,57, 8,6,14,5,8,57, 8,6,5,4,8,57, 8,6,4,4,8,57, + 8,6,3,4,8,57, 8,6,2,4,8,57, 8,6,1,4,8,57, 8,6,1,6,7,73, 8,5,13,4,8,58, 8,5,13,5,8,58, 8,5,6,4,8,58, 8,5,6,6,7,74, + 8,4,12,5,8,59, 8,4,7,6,7,75, 8,3,12,5,8,60, 8,3,6,3,10,92, 8,3,6,6,7,76, 8,2,13,3,3,93, 8,2,13,4,8,61, 8,2,13,5,8,61, + 8,2,5,3,11,93, 8,2,4,3,12,93, 8,2,4,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,11,4,8,62, 8,1,10,4,8,62, 8,1,9,4,8,62, + 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,4,4,8,62, 8,1,4,6,7,78, 9,14,11,1,5,81, 9,14,11,3,5,81, + 9,14,11,5,9,49, 9,14,10,1,6,81, 9,14,10,3,6,81, 9,14,9,1,7,81, 9,14,9,3,7,81, 9,14,8,1,8,81, 9,14,8,3,8,81, 9,14,7,1,9,81, + 9,14,7,3,9,81, 9,14,6,1,10,81, 9,14,6,3,10,81, 9,14,5,1,11,81, 9,14,5,3,11,81, 9,14,4,1,12,81, 9,14,4,3,12,81, 9,14,4,6,6,65, + 9,13,13,3,3,82, 9,13,13,5,9,50, 9,13,12,3,4,82, 9,13,3,3,13,82, 9,13,3,6,6,66, 9,12,14,3,2,83, 9,12,14,5,9,51, 9,12,2,3,14,83, + 9,12,2,6,6,67, 9,11,15,3,1,84, 9,11,15,5,9,52, 9,11,2,6,6,68, 9,10,15,5,9,53, 9,10,2,6,6,69, 9,9,15,5,9,54, 9,9,1,3,15,86, + 9,9,1,6,6,70, 9,8,15,4,9,55, 9,8,15,5,9,55, 9,8,1,6,6,71, 9,7,14,5,9,56, 9,7,1,6,6,72, 9,6,14,4,9,57, 9,6,14,5,9,57, + 9,6,5,4,9,57, 9,6,4,4,9,57, 9,6,3,4,9,57, 9,6,2,4,9,57, 9,6,1,4,9,57, 9,6,1,6,6,73, 9,5,13,4,9,58, 9,5,13,5,9,58, + 9,5,6,4,9,58, 9,5,6,6,6,74, 9,4,12,5,9,59, 9,4,7,6,6,75, 9,3,12,5,9,60, 9,3,6,3,10,92, 9,3,6,6,6,76, 9,2,13,3,3,93, + 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,5,3,11,93, 9,2,4,3,12,93, 9,2,4,6,6,77, 9,1,12,5,9,62, 9,1,9,4,9,62, 9,1,8,4,9,62, + 9,1,7,4,9,62, 9,1,4,4,9,62, 9,1,4,6,6,78, 9,0,13,2,3,95, 9,0,13,3,3,95, 9,0,13,5,6,79, 9,0,12,2,4,95, 9,0,11,2,5,95, + 9,0,10,2,6,95, 9,0,10,6,6,79, 9,0,6,2,10,95, 9,0,6,5,6,79, 9,0,5,2,11,95, 9,0,5,6,6,79, 10,13,13,3,3,82, 10,13,13,5,10,50, + 10,13,12,3,4,82, 10,13,11,3,5,82, 10,13,10,3,6,82, 10,13,9,3,7,82, 10,13,8,3,8,82, 10,13,7,3,9,82, 10,13,6,3,10,82, 10,13,5,3,11,82, + 10,13,4,3,12,82, 10,13,3,3,13,82, 10,13,3,6,5,66, 10,12,14,3,2,83, 10,12,14,5,10,51, 10,12,2,3,14,83, 10,12,2,6,5,67, 10,11,15,3,1,84, + 10,11,15,5,10,52, 10,11,2,6,5,68, 10,10,15,5,10,53, 10,10,2,6,5,69, 10,9,15,5,10,54, 10,9,1,3,15,86, 10,9,1,6,5,70, 10,8,15,4,10,55, + 10,8,15,5,10,55, 10,8,1,6,5,71, 10,7,14,5,10,56, 10,7,1,6,5,72, 10,6,14,4,10,57, 10,6,14,5,10,57, 10,6,5,4,10,57, 10,6,4,4,10,57, + 10,6,3,4,10,57, 10,6,2,4,10,57, 10,6,1,4,10,57, 10,6,1,6,5,73, 10,5,13,4,10,58, 10,5,13,5,10,58, 10,5,6,4,10,58, 10,5,6,6,5,74, + 10,4,12,5,10,59, 10,4,7,6,5,75, 10,3,12,5,10,60, 10,3,6,3,10,92, 10,3,6,6,5,76, 10,2,13,3,3,93, 10,2,13,4,10,61, 10,2,13,5,10,61, + 10,2,5,3,11,93, 10,2,4,3,12,93, 10,2,4,6,5,77, 10,1,12,5,10,62, 10,1,9,4,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,4,4,10,62, + 10,1,4,6,5,78, 10,0,13,1,3,95, 10,0,13,3,3,95, 10,0,13,5,5,79, 10,0,12,1,4,95, 10,0,11,1,5,95, 10,0,10,1,6,95, 10,0,10,6,5,79, + 10,0,6,1,10,95, 10,0,6,5,5,79, 10,0,5,1,11,95, 10,0,5,6,5,79, 11,13,13,1,3,82, 11,13,13,3,3,82, 11,13,13,5,11,50, 11,13,12,1,4,82, + 11,13,12,3,4,82, 11,13,11,1,5,82, 11,13,11,3,5,82, 11,13,10,1,6,82, 11,13,10,3,6,82, 11,13,9,1,7,82, 11,13,9,3,7,82, 11,13,8,1,8,82, + 11,13,8,3,8,82, 11,13,7,1,9,82, 11,13,7,3,9,82, 11,13,6,1,10,82, 11,13,6,3,10,82, 11,13,5,1,11,82, 11,13,5,3,11,82, 11,13,4,1,12,82, + 11,13,4,3,12,82, 11,13,3,1,13,82, 11,13,3,3,13,82, 11,13,3,6,4,66, 11,12,14,3,2,83, 11,12,14,5,11,51, 11,12,2,3,14,83, 11,12,2,6,4,67, + 11,11,15,3,1,84, 11,11,15,5,11,52, 11,11,2,6,4,68, 11,10,15,5,11,53, 11,10,2,6,4,69, 11,9,15,5,11,54, 11,9,1,3,15,86, 11,9,1,6,4,70, + 11,8,15,4,11,55, 11,8,15,5,11,55, 11,8,1,6,4,71, 11,7,14,5,11,56, 11,7,1,6,4,72, 11,6,14,4,11,57, 11,6,14,5,11,57, 11,6,5,4,11,57, + 11,6,4,4,11,57, 11,6,3,4,11,57, 11,6,2,4,11,57, 11,6,1,4,11,57, 11,6,1,6,4,73, 11,5,13,1,3,90, 11,5,13,4,11,58, 11,5,13,5,11,58, + 11,5,12,1,4,90, 11,5,11,1,5,90, 11,5,10,1,6,90, 11,5,9,1,7,90, 11,5,8,1,8,90, 11,5,7,1,9,90, 11,5,6,1,10,90, 11,5,6,4,11,58, + 11,5,6,6,4,74, 11,4,12,5,11,59, 11,4,7,6,4,75, 11,3,12,5,11,60, 11,3,6,3,10,92, 11,3,6,6,4,76, 11,2,13,3,3,93, 11,2,13,4,11,61, + 11,2,13,5,11,61, 11,2,5,3,11,93, 11,2,4,3,12,93, 11,2,4,6,4,77, 11,1,12,1,4,94, 11,1,12,4,11,62, 11,1,12,5,11,62, 11,1,11,1,5,94, + 11,1,11,4,11,62, 11,1,10,1,6,94, 11,1,10,4,11,62, 11,1,9,1,7,94, 11,1,9,4,11,62, 11,1,8,1,8,94, 11,1,8,4,11,62, 11,1,7,1,9,94, + 11,1,7,4,11,62, 11,1,6,1,10,94, 11,1,6,4,11,62, 11,1,5,1,11,94, 11,1,5,4,11,62, 11,1,4,1,12,94, 11,1,4,4,11,62, 11,1,4,6,4,78, + 12,12,14,1,2,83, 12,12,14,3,2,83, 12,12,14,5,12,51, 12,12,13,1,3,83, 12,12,13,3,3,83, 12,12,12,1,4,83, 12,12,12,3,4,83, 12,12,11,1,5,83, + 12,12,11,3,5,83, 12,12,10,1,6,83, 12,12,10,3,6,83, 12,12,9,1,7,83, 12,12,9,3,7,83, 12,12,8,1,8,83, 12,12,8,3,8,83, 12,12,7,1,9,83, + 12,12,7,3,9,83, 12,12,6,1,10,83, 12,12,6,3,10,83, 12,12,5,1,11,83, 12,12,5,3,11,83, 12,12,4,1,12,83, 12,12,4,3,12,83, 12,12,3,1,13,83, + 12,12,3,3,13,83, 12,12,2,1,14,83, 12,12,2,3,14,83, 12,12,2,6,3,67, 12,11,15,1,1,84, 12,11,15,3,1,84, 12,11,15,5,12,52, 12,11,14,1,2,84, + 12,11,13,1,3,84, 12,11,12,1,4,84, 12,11,11,1,5,84, 12,11,10,1,6,84, 12,11,9,1,7,84, 12,11,8,1,8,84, 12,11,7,1,9,84, 12,11,6,1,10,84, + 12,11,5,1,11,84, 12,11,4,1,12,84, 12,11,3,1,13,84, 12,11,2,1,14,84, 12,11,2,6,3,68, 12,10,15,5,12,53, 12,10,2,6,3,69, 12,9,15,5,12,54, + 12,9,1,3,15,86, 12,9,1,6,3,70, 12,8,15,4,12,55, 12,8,15,5,12,55, 12,8,1,6,3,71, 12,7,14,5,12,56, 12,7,1,6,3,72, 12,6,14,1,2,89, + 12,6,14,4,12,57, 12,6,14,5,12,57, 12,6,13,1,3,89, 12,6,13,4,12,57, 12,6,12,1,4,89, 12,6,12,4,12,57, 12,6,11,1,5,89, 12,6,11,4,12,57, + 12,6,10,1,6,89, 12,6,10,4,12,57, 12,6,9,1,7,89, 12,6,9,4,12,57, 12,6,8,1,8,89, 12,6,8,4,12,57, 12,6,7,1,9,89, 12,6,7,4,12,57, + 12,6,6,1,10,89, 12,6,6,4,12,57, 12,6,5,1,11,89, 12,6,5,4,12,57, 12,6,4,1,12,89, 12,6,4,4,12,57, 12,6,3,1,13,89, 12,6,3,4,12,57, + 12,6,2,1,14,89, 12,6,2,4,12,57, 12,6,1,1,15,89, 12,6,1,4,12,57, 12,6,1,6,3,73, 12,4,12,1,4,91, 12,4,12,3,4,91, 12,4,12,5,12,59, + 12,4,11,1,5,91, 12,4,11,3,5,91, 12,4,10,1,6,91, 12,4,10,3,6,91, 12,4,9,1,7,91, 12,4,9,3,7,91, 12,4,8,1,8,91, 12,4,8,3,8,91, + 12,4,7,1,9,91, 12,4,7,3,9,91, 12,4,7,6,3,75, 12,3,12,5,12,60, 12,3,6,3,10,92, 12,3,6,6,3,76, 12,2,13,1,3,93, 12,2,13,3,3,93, + 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,1,4,93, 12,2,12,4,12,61, 12,2,11,1,5,93, 12,2,11,4,12,61, 12,2,10,1,6,93, 12,2,10,4,12,61, + 12,2,9,1,7,93, 12,2,9,4,12,61, 12,2,8,1,8,93, 12,2,8,4,12,61, 12,2,7,1,9,93, 12,2,7,4,12,61, 12,2,6,1,10,93, 12,2,6,4,12,61, + 12,2,5,1,11,93, 12,2,5,3,11,93, 12,2,5,4,12,61, 12,2,4,1,12,93, 12,2,4,3,12,93, 12,2,4,4,12,61, 12,2,4,6,3,77, 13,10,15,1,1,85, + 13,10,15,3,1,85, 13,10,15,5,13,53, 13,10,14,1,2,85, 13,10,14,3,2,85, 13,10,13,1,3,85, 13,10,13,3,3,85, 13,10,12,1,4,85, 13,10,12,3,4,85, + 13,10,11,1,5,85, 13,10,11,3,5,85, 13,10,10,1,6,85, 13,10,10,3,6,85, 13,10,9,1,7,85, 13,10,9,3,7,85, 13,10,8,1,8,85, 13,10,8,3,8,85, + 13,10,7,1,9,85, 13,10,7,3,9,85, 13,10,6,1,10,85, 13,10,6,3,10,85, 13,10,5,1,11,85, 13,10,5,3,11,85, 13,10,4,1,12,85, 13,10,4,3,12,85, + 13,10,3,1,13,85, 13,10,3,3,13,85, 13,10,2,1,14,85, 13,10,2,3,14,85, 13,10,2,6,2,69, 13,9,15,1,1,86, 13,9,15,5,13,54, 13,9,14,1,2,86, + 13,9,13,1,3,86, 13,9,12,1,4,86, 13,9,11,1,5,86, 13,9,10,1,6,86, 13,9,9,1,7,86, 13,9,8,1,8,86, 13,9,7,1,9,86, 13,9,6,1,10,86, + 13,9,5,1,11,86, 13,9,4,1,12,86, 13,9,3,1,13,86, 13,9,2,1,14,86, 13,9,1,1,15,86, 13,9,1,3,15,86, 13,9,1,6,2,70, 13,8,15,1,1,87, + 13,8,15,4,13,55, 13,8,15,5,13,55, 13,8,14,1,2,87, 13,8,13,1,3,87, 13,8,12,1,4,87, 13,8,11,1,5,87, 13,8,10,1,6,87, 13,8,9,1,7,87, + 13,8,8,1,8,87, 13,8,7,1,9,87, 13,8,6,1,10,87, 13,8,5,1,11,87, 13,8,4,1,12,87, 13,8,3,1,13,87, 13,8,2,1,14,87, 13,8,1,1,15,87, + 13,8,1,6,2,71, 13,7,14,1,2,88, 13,7,14,4,13,56, 13,7,14,5,13,56, 13,7,13,1,3,88, 13,7,13,4,13,56, 13,7,12,1,4,88, 13,7,12,4,13,56, + 13,7,11,1,5,88, 13,7,11,4,13,56, 13,7,10,1,6,88, 13,7,10,4,13,56, 13,7,9,1,7,88, 13,7,9,4,13,56, 13,7,8,1,8,88, 13,7,8,4,13,56, + 13,7,7,1,9,88, 13,7,7,4,13,56, 13,7,6,1,10,88, 13,7,6,4,13,56, 13,7,5,1,11,88, 13,7,5,4,13,56, 13,7,4,1,12,88, 13,7,4,4,13,56, + 13,7,3,1,13,88, 13,7,3,4,13,56, 13,7,2,1,14,88, 13,7,2,4,13,56, 13,7,1,1,15,88, 13,7,1,4,13,56, 13,7,1,6,2,72, 13,3,12,1,4,92, + 13,3,12,3,4,92, 13,3,12,4,13,60, 13,3,12,5,13,60, 13,3,11,1,5,92, 13,3,11,3,5,92, 13,3,11,4,13,60, 13,3,10,1,6,92, 13,3,10,3,6,92, + 13,3,10,4,13,60, 13,3,9,1,7,92, 13,3,9,3,7,92, 13,3,9,4,13,60, 13,3,8,1,8,92, 13,3,8,3,8,92, 13,3,8,4,13,60, 13,3,7,1,9,92, + 13,3,7,3,9,92, 13,3,7,4,13,60, 13,3,6,1,10,92, 13,3,6,3,10,92, 13,3,6,4,13,60, 13,3,6,6,2,76, + }, + }, + }, +} diff --git a/assets/voxels/bruno.lua b/assets/voxels/bruno.lua new file mode 100644 index 0000000..8ad5ac8 --- /dev/null +++ b/assets/voxels/bruno.lua @@ -0,0 +1,336 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "bruno" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "bruno", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1877, + count = 1212, + faces = { + 0,4,12,2,3,43, 0,4,12,3,3,43, 0,4,12,4,0,11, 0,4,12,5,0,11, 0,4,11,2,4,43, 0,4,11,3,4,43, 0,4,10,2,5,43, 0,4,10,3,5,43, + 0,4,9,2,6,43, 0,4,9,3,6,43, 0,4,8,2,7,43, 0,4,8,3,7,43, 0,4,7,2,8,43, 0,4,7,3,8,43, 0,4,6,2,9,43, 0,4,6,3,9,43, + 0,4,5,2,10,43, 0,4,5,3,10,43, 0,4,4,2,11,43, 0,4,4,3,11,43, 0,4,4,6,15,27, 0,3,11,2,4,44, 0,3,11,4,0,12, 0,3,11,5,0,12, + 0,3,10,2,5,44, 0,3,10,4,0,12, 0,3,9,2,6,44, 0,3,9,4,0,12, 0,3,8,2,7,44, 0,3,8,4,0,12, 0,3,7,2,8,44, 0,3,7,4,0,12, + 0,3,6,2,9,44, 0,3,6,4,0,12, 0,3,5,2,10,44, 0,3,5,4,0,12, 0,3,4,2,11,44, 0,3,4,4,0,12, 0,3,4,6,15,28, 1,11,14,2,1,36, + 1,11,14,3,1,36, 1,11,14,4,1,4, 1,11,14,5,1,4, 1,11,13,2,2,36, 1,11,13,3,2,36, 1,11,13,4,1,4, 1,11,12,2,3,36, 1,11,12,3,3,36, + 1,11,12,4,1,4, 1,11,11,2,4,36, 1,11,11,3,4,36, 1,11,11,4,1,4, 1,11,10,2,5,36, 1,11,10,3,5,36, 1,11,10,4,1,4, 1,11,9,2,6,36, + 1,11,9,3,6,36, 1,11,9,4,1,4, 1,11,8,2,7,36, 1,11,8,3,7,36, 1,11,8,4,1,4, 1,11,7,2,8,36, 1,11,7,3,8,36, 1,11,7,4,1,4, + 1,11,6,2,9,36, 1,11,6,3,9,36, 1,11,6,4,1,4, 1,11,5,2,10,36, 1,11,5,3,10,36, 1,11,5,4,1,4, 1,11,4,2,11,36, 1,11,4,3,11,36, + 1,11,4,4,1,4, 1,11,3,2,12,36, 1,11,3,3,12,36, 1,11,3,4,1,4, 1,11,2,2,13,36, 1,11,2,3,13,36, 1,11,2,4,1,4, 1,11,2,6,1,4, + 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, + 1,9,9,3,6,38, 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, + 1,9,5,3,10,38, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, 1,9,3,3,12,38, 1,9,2,2,13,38, 1,9,2,3,13,38, 1,9,2,4,1,6, + 1,9,2,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, + 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, + 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,6,11,2,4,41, + 1,6,11,3,4,41, 1,6,11,5,1,9, 1,6,10,2,5,41, 1,6,10,3,5,41, 1,6,9,2,6,41, 1,6,9,3,6,41, 1,6,8,2,7,41, 1,6,8,3,7,41, + 1,6,7,2,8,41, 1,6,7,3,8,41, 1,6,6,2,9,41, 1,6,6,3,9,41, 1,6,5,2,10,41, 1,6,5,3,10,41, 1,6,4,2,11,41, 1,6,4,3,11,41, + 1,6,4,6,14,25, 1,5,12,2,3,42, 1,5,12,3,3,42, 1,5,12,5,1,10, 1,5,11,2,4,42, 1,5,10,2,5,42, 1,5,9,2,6,42, 1,5,8,2,7,42, + 1,5,7,2,8,42, 1,5,6,2,9,42, 1,5,5,2,10,42, 1,5,4,2,11,42, 1,5,4,6,14,26, 1,4,12,4,1,11, 1,4,12,5,1,11, 1,4,4,6,14,27, + 1,3,11,4,1,12, 1,3,11,5,1,12, 1,3,4,4,1,12, 1,3,4,6,14,28, 1,2,10,2,5,45, 1,2,10,4,1,13, 1,2,10,5,1,13, 1,2,9,2,6,45, + 1,2,9,4,1,13, 1,2,8,2,7,45, 1,2,8,4,1,13, 1,2,7,2,8,45, 1,2,7,4,1,13, 1,2,6,2,9,45, 1,2,6,4,1,13, 1,2,5,2,10,45, + 1,2,5,4,1,13, 1,2,5,6,14,29, 2,14,13,2,2,33, 2,14,13,3,2,33, 2,14,13,5,2,1, 2,14,12,2,3,33, 2,14,12,3,3,33, 2,14,11,2,4,33, + 2,14,11,3,4,33, 2,14,10,2,5,33, 2,14,10,3,5,33, 2,14,9,2,6,33, 2,14,9,3,6,33, 2,14,8,2,7,33, 2,14,8,3,7,33, 2,14,7,2,8,33, + 2,14,7,3,8,33, 2,14,6,2,9,33, 2,14,6,3,9,33, 2,14,5,2,10,33, 2,14,5,3,10,33, 2,14,4,2,11,33, 2,14,4,3,11,33, 2,14,4,6,2,1, + 2,13,13,2,2,34, 2,13,13,5,2,2, 2,13,12,2,3,34, 2,13,11,2,4,34, 2,13,10,2,5,34, 2,13,9,2,6,34, 2,13,8,2,7,34, 2,13,7,2,8,34, + 2,13,6,2,9,34, 2,13,5,2,10,34, 2,13,4,2,11,34, 2,13,3,2,12,34, 2,13,3,3,12,34, 2,13,3,6,2,2, 2,12,13,2,2,35, 2,12,13,5,2,3, + 2,12,12,2,3,35, 2,12,11,2,4,35, 2,12,10,2,5,35, 2,12,9,2,6,35, 2,12,8,2,7,35, 2,12,7,2,8,35, 2,12,6,2,9,35, 2,12,5,2,10,35, + 2,12,4,2,11,35, 2,12,3,2,12,35, 2,12,2,2,13,35, 2,12,2,3,13,35, 2,12,2,6,13,19, 2,11,14,3,1,36, 2,11,14,4,2,4, 2,11,14,5,2,4, + 2,11,2,6,13,20, 2,10,13,2,2,37, 2,10,13,4,2,5, 2,10,13,5,2,5, 2,10,12,2,3,37, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, + 2,10,8,2,7,37, 2,10,7,2,8,37, 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,6,13,21, + 2,9,12,5,2,6, 2,9,2,4,2,6, 2,9,2,6,13,22, 2,8,12,5,2,7, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, + 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, + 2,7,4,2,11,40, 2,7,4,6,13,24, 2,6,11,5,2,9, 2,6,4,6,13,25, 2,5,12,3,3,42, 2,5,12,5,2,10, 2,5,4,6,13,26, 2,4,12,4,2,11, + 2,4,12,5,2,11, 2,4,4,6,13,27, 2,3,11,4,2,12, 2,3,11,5,2,12, 2,3,4,4,2,12, 2,3,4,6,13,28, 2,2,10,4,2,13, 2,2,10,5,2,13, + 2,2,9,4,2,13, 2,2,8,4,2,13, 2,2,7,4,2,13, 2,2,6,4,2,13, 2,2,5,4,2,13, 2,2,5,6,13,29, 2,0,11,2,4,47, 2,0,11,3,4,47, + 2,0,11,5,2,15, 2,0,10,2,5,47, 2,0,10,3,5,47, 2,0,9,2,6,47, 2,0,9,3,6,47, 2,0,8,2,7,47, 2,0,8,3,7,47, 2,0,7,2,8,47, + 2,0,7,3,8,47, 2,0,6,2,9,47, 2,0,6,3,9,47, 2,0,6,6,13,31, 3,15,12,1,3,32, 3,15,12,2,3,32, 3,15,12,3,3,32, 3,15,12,5,3,0, + 3,15,12,6,3,0, 3,15,9,1,6,32, 3,15,9,2,6,32, 3,15,9,3,6,32, 3,15,9,5,3,0, 3,15,8,1,7,32, 3,15,8,2,7,32, 3,15,8,3,7,32, + 3,15,7,1,8,32, 3,15,7,2,8,32, 3,15,7,3,8,32, 3,15,6,1,9,32, 3,15,6,2,9,32, 3,15,6,3,9,32, 3,15,6,6,3,0, 3,14,13,3,2,33, + 3,14,13,5,3,1, 3,14,11,3,4,33, 3,14,10,3,5,33, 3,14,5,3,10,33, 3,14,4,3,11,33, 3,14,4,6,3,1, 3,13,13,5,3,2, 3,13,3,3,12,34, + 3,13,3,6,12,18, 3,12,13,5,3,3, 3,12,2,3,13,35, 3,12,2,6,12,19, 3,11,14,3,1,36, 3,11,14,4,3,4, 3,11,14,5,3,4, 3,11,2,6,12,20, + 3,10,13,4,3,5, 3,10,13,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,2,4,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,3,4,3,7, + 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,4,6,12,24, 3,6,11,5,3,9, 3,6,4,6,12,25, 3,5,12,3,3,42, 3,5,12,5,3,10, + 3,5,4,6,12,26, 3,4,12,4,3,11, 3,4,12,5,3,11, 3,4,4,6,12,27, 3,3,11,4,3,12, 3,3,11,5,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, + 3,2,10,5,3,13, 3,2,5,4,3,13, 3,2,5,6,12,29, 3,1,11,2,4,46, 3,1,11,3,4,46, 3,1,11,5,3,14, 3,1,10,2,5,46, 3,1,9,2,6,46, + 3,1,8,2,7,46, 3,1,7,2,8,46, 3,1,6,2,9,46, 3,1,6,6,12,30, 3,0,11,5,3,15, 3,0,6,6,12,31, 4,14,13,3,2,33, 4,14,13,5,4,1, + 4,14,12,3,3,33, 4,14,11,3,4,33, 4,14,10,3,5,33, 4,14,9,3,6,33, 4,14,8,3,7,33, 4,14,7,3,8,33, 4,14,6,3,9,33, 4,14,5,3,10,33, + 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,13,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,5,4,3, 4,12,2,3,13,35, 4,12,2,6,11,19, + 4,11,14,3,1,36, 4,11,14,4,4,4, 4,11,14,5,4,4, 4,11,2,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, + 4,9,2,4,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,6,11,24, + 4,6,11,5,4,9, 4,6,4,6,11,25, 4,5,12,3,3,42, 4,5,12,5,4,10, 4,5,4,6,11,26, 4,4,12,4,4,11, 4,4,12,5,4,11, 4,4,4,6,11,27, + 4,3,11,4,4,12, 4,3,11,5,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,10,5,4,13, 4,2,5,4,4,13, 4,2,5,6,11,29, 4,1,11,3,4,46, + 4,1,11,5,4,14, 4,1,6,6,11,30, 4,0,11,5,4,15, 4,0,6,6,11,31, 5,14,13,3,2,33, 5,14,13,5,5,1, 5,14,12,3,3,33, 5,14,11,3,4,33, + 5,14,10,3,5,33, 5,14,9,3,6,33, 5,14,8,3,7,33, 5,14,7,3,8,33, 5,14,6,3,9,33, 5,14,5,3,10,33, 5,14,4,3,11,33, 5,14,4,6,10,17, + 5,13,13,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,5,5,3, 5,12,2,3,13,35, 5,12,2,6,10,19, 5,11,14,3,1,36, 5,11,14,4,5,4, + 5,11,14,5,5,4, 5,11,2,6,10,20, 5,10,13,4,5,5, 5,10,13,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,4,5,6, 5,9,2,6,10,22, + 5,8,12,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,4,6,10,24, 5,6,11,5,5,9, 5,6,4,6,10,25, + 5,5,12,3,3,42, 5,5,12,5,5,10, 5,5,4,6,10,26, 5,4,12,4,5,11, 5,4,12,5,5,11, 5,4,4,6,10,27, 5,3,11,4,5,12, 5,3,11,5,5,12, + 5,3,4,4,5,12, 5,3,4,6,10,28, 5,2,10,5,5,13, 5,2,5,4,5,13, 5,2,5,6,10,29, 5,1,11,3,4,46, 5,1,11,5,5,14, 5,1,6,6,10,30, + 5,0,11,5,5,15, 5,0,6,6,10,31, 6,15,12,2,3,32, 6,15,12,3,3,32, 6,15,12,5,6,0, 6,15,12,6,9,16, 6,15,9,2,6,32, 6,15,9,3,6,32, + 6,15,9,5,6,0, 6,15,8,2,7,32, 6,15,8,3,7,32, 6,15,7,2,8,32, 6,15,7,3,8,32, 6,15,6,2,9,32, 6,15,6,3,9,32, 6,15,6,6,9,16, + 6,14,13,3,2,33, 6,14,13,5,6,1, 6,14,11,3,4,33, 6,14,10,3,5,33, 6,14,5,3,10,33, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,13,5,6,2, + 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,13,5,6,3, 6,12,2,3,13,35, 6,12,2,6,9,19, 6,11,14,3,1,36, 6,11,14,4,6,4, 6,11,14,5,6,4, + 6,11,2,6,9,20, 6,10,13,4,6,5, 6,10,13,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,4,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, + 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,4,6,9,24, 6,6,11,5,6,9, 6,6,4,6,9,25, 6,5,12,3,3,42, + 6,5,12,5,6,10, 6,5,4,6,9,26, 6,4,12,4,6,11, 6,4,12,5,6,11, 6,4,4,6,9,27, 6,3,11,4,6,12, 6,3,11,5,6,12, 6,3,4,4,6,12, + 6,3,4,6,9,28, 6,2,10,5,6,13, 6,2,5,4,6,13, 6,2,5,6,9,29, 6,1,11,3,4,46, 6,1,11,5,6,14, 6,1,6,6,9,30, 6,0,11,1,4,47, + 6,0,11,5,6,15, 6,0,10,1,5,47, 6,0,9,1,6,47, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,15,12,3,3,32, + 7,15,12,5,7,0, 7,15,12,6,8,16, 7,15,9,3,6,32, 7,15,9,5,7,0, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,6,6,8,16, + 7,14,13,3,2,33, 7,14,13,5,7,1, 7,14,11,3,4,33, 7,14,10,3,5,33, 7,14,5,3,10,33, 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,13,5,7,2, + 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,5,7,3, 7,12,2,3,13,35, 7,12,2,6,8,19, 7,11,14,3,1,36, 7,11,14,4,7,4, 7,11,14,5,7,4, + 7,11,2,6,8,20, 7,10,13,4,7,5, 7,10,13,5,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,2,4,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, + 7,8,3,4,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,4,6,8,24, 7,6,11,5,7,9, 7,6,4,6,8,25, 7,5,12,3,3,42, + 7,5,12,5,7,10, 7,5,4,6,8,26, 7,4,12,4,7,11, 7,4,12,5,7,11, 7,4,4,6,8,27, 7,3,11,4,7,12, 7,3,11,5,7,12, 7,3,4,4,7,12, + 7,3,4,6,8,28, 7,2,10,5,7,13, 7,2,5,4,7,13, 7,2,5,6,8,29, 7,1,11,3,4,46, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, + 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,6,6,8,30, 8,15,12,3,3,32, 8,15,12,5,8,0, 8,15,12,6,7,16, + 8,15,9,3,6,32, 8,15,9,5,8,0, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,13,3,2,33, 8,14,13,5,8,1, + 8,14,11,3,4,33, 8,14,10,3,5,33, 8,14,5,3,10,33, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,13,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, + 8,12,13,5,8,3, 8,12,2,3,13,35, 8,12,2,6,7,19, 8,11,14,3,1,36, 8,11,14,4,8,4, 8,11,14,5,8,4, 8,11,2,6,7,20, 8,10,13,4,8,5, + 8,10,13,5,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,4,8,6, 8,9,2,6,7,22, 8,8,12,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, + 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,6,7,24, 8,6,11,5,8,9, 8,6,4,6,7,25, 8,5,12,3,3,42, 8,5,12,5,8,10, 8,5,4,6,7,26, + 8,4,12,4,8,11, 8,4,12,5,8,11, 8,4,4,6,7,27, 8,3,11,4,8,12, 8,3,11,5,8,12, 8,3,4,4,8,12, 8,3,4,6,7,28, 8,2,10,5,8,13, + 8,2,5,4,8,13, 8,2,5,6,7,29, 8,1,11,3,4,46, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, + 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,6,6,7,30, 9,15,12,1,3,32, 9,15,12,3,3,32, 9,15,12,5,9,0, 9,15,12,6,6,16, 9,15,9,1,6,32, + 9,15,9,3,6,32, 9,15,9,5,9,0, 9,15,8,1,7,32, 9,15,8,3,7,32, 9,15,7,1,8,32, 9,15,7,3,8,32, 9,15,6,1,9,32, 9,15,6,3,9,32, + 9,15,6,6,6,16, 9,14,13,3,2,33, 9,14,13,5,9,1, 9,14,11,3,4,33, 9,14,10,3,5,33, 9,14,5,3,10,33, 9,14,4,3,11,33, 9,14,4,6,6,17, + 9,13,13,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,5,9,3, 9,12,2,3,13,35, 9,12,2,6,6,19, 9,11,14,3,1,36, 9,11,14,4,9,4, + 9,11,14,5,9,4, 9,11,2,6,6,20, 9,10,13,4,9,5, 9,10,13,5,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,2,4,9,6, 9,9,2,6,6,22, + 9,8,12,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,4,6,6,24, 9,6,11,5,9,9, 9,6,4,6,6,25, + 9,5,12,3,3,42, 9,5,12,5,9,10, 9,5,4,6,6,26, 9,4,12,4,9,11, 9,4,12,5,9,11, 9,4,4,6,6,27, 9,3,11,4,9,12, 9,3,11,5,9,12, + 9,3,4,4,9,12, 9,3,4,6,6,28, 9,2,10,5,9,13, 9,2,5,4,9,13, 9,2,5,6,6,29, 9,1,11,3,4,46, 9,1,11,5,9,14, 9,1,6,6,6,30, + 9,0,11,2,4,47, 9,0,11,5,9,15, 9,0,10,2,5,47, 9,0,9,2,6,47, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, + 10,14,13,3,2,33, 10,14,13,5,10,1, 10,14,12,3,3,33, 10,14,11,3,4,33, 10,14,10,3,5,33, 10,14,9,3,6,33, 10,14,8,3,7,33, 10,14,7,3,8,33, + 10,14,6,3,9,33, 10,14,5,3,10,33, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,13,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,5,10,3, + 10,12,2,3,13,35, 10,12,2,6,5,19, 10,11,14,3,1,36, 10,11,14,4,10,4, 10,11,14,5,10,4, 10,11,2,6,5,20, 10,10,13,4,10,5, 10,10,13,5,10,5, + 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,4,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, + 10,7,12,5,10,8, 10,7,4,6,5,24, 10,6,11,5,10,9, 10,6,4,6,5,25, 10,5,12,3,3,42, 10,5,12,5,10,10, 10,5,4,6,5,26, 10,4,12,4,10,11, + 10,4,12,5,10,11, 10,4,4,6,5,27, 10,3,11,4,10,12, 10,3,11,5,10,12, 10,3,4,4,10,12, 10,3,4,6,5,28, 10,2,10,5,10,13, 10,2,5,4,10,13, + 10,2,5,6,5,29, 10,1,11,3,4,46, 10,1,11,5,10,14, 10,1,6,6,5,30, 10,0,11,5,10,15, 10,0,6,6,5,31, 11,14,13,3,2,33, 11,14,13,5,11,1, + 11,14,12,3,3,33, 11,14,11,3,4,33, 11,14,10,3,5,33, 11,14,9,3,6,33, 11,14,8,3,7,33, 11,14,7,3,8,33, 11,14,6,3,9,33, 11,14,5,3,10,33, + 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,13,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,5,11,3, 11,12,2,3,13,35, 11,12,2,6,4,19, + 11,11,14,3,1,36, 11,11,14,4,11,4, 11,11,14,5,11,4, 11,11,2,6,4,20, 11,10,13,4,11,5, 11,10,13,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, + 11,9,2,4,11,6, 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,4,6,4,24, + 11,6,11,5,11,9, 11,6,4,6,4,25, 11,5,12,3,3,42, 11,5,12,5,11,10, 11,5,4,6,4,26, 11,4,12,4,11,11, 11,4,12,5,11,11, 11,4,4,6,4,27, + 11,3,11,4,11,12, 11,3,11,5,11,12, 11,3,4,4,11,12, 11,3,4,6,4,28, 11,2,10,5,11,13, 11,2,5,4,11,13, 11,2,5,6,4,29, 11,1,11,3,4,46, + 11,1,11,5,11,14, 11,1,6,6,4,30, 11,0,11,5,11,15, 11,0,6,6,4,31, 12,15,12,1,3,32, 12,15,12,2,3,32, 12,15,12,3,3,32, 12,15,12,5,3,16, + 12,15,12,6,3,16, 12,15,9,1,6,32, 12,15,9,2,6,32, 12,15,9,3,6,32, 12,15,9,5,3,16, 12,15,8,1,7,32, 12,15,8,2,7,32, 12,15,8,3,7,32, + 12,15,7,1,8,32, 12,15,7,2,8,32, 12,15,7,3,8,32, 12,15,6,1,9,32, 12,15,6,2,9,32, 12,15,6,3,9,32, 12,15,6,6,3,16, 12,14,13,3,2,33, + 12,14,13,5,3,17, 12,14,11,3,4,33, 12,14,10,3,5,33, 12,14,5,3,10,33, 12,14,4,3,11,33, 12,14,4,6,3,17, 12,13,13,5,12,2, 12,13,3,3,12,34, + 12,13,3,6,3,18, 12,12,13,5,12,3, 12,12,2,3,13,35, 12,12,2,6,3,19, 12,11,14,3,1,36, 12,11,14,4,12,4, 12,11,14,5,12,4, 12,11,2,6,3,20, + 12,10,13,4,12,5, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,2,4,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,3,4,12,7, + 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,6,3,24, 12,6,11,5,12,9, 12,6,4,6,3,25, 12,5,12,3,3,42, 12,5,12,5,12,10, + 12,5,4,6,3,26, 12,4,12,4,12,11, 12,4,12,5,12,11, 12,4,4,6,3,27, 12,3,11,4,12,12, 12,3,11,5,12,12, 12,3,4,4,12,12, 12,3,4,6,3,28, + 12,2,10,5,12,13, 12,2,5,4,12,13, 12,2,5,6,3,29, 12,1,11,1,4,46, 12,1,11,3,4,46, 12,1,11,5,12,14, 12,1,10,1,5,46, 12,1,9,1,6,46, + 12,1,8,1,7,46, 12,1,7,1,8,46, 12,1,6,1,9,46, 12,1,6,6,3,30, 12,0,11,5,12,15, 12,0,6,6,3,31, 13,14,13,1,2,33, 13,14,13,3,2,33, + 13,14,13,5,2,17, 13,14,12,1,3,33, 13,14,12,3,3,33, 13,14,11,1,4,33, 13,14,11,3,4,33, 13,14,10,1,5,33, 13,14,10,3,5,33, 13,14,9,1,6,33, + 13,14,9,3,6,33, 13,14,8,1,7,33, 13,14,8,3,7,33, 13,14,7,1,8,33, 13,14,7,3,8,33, 13,14,6,1,9,33, 13,14,6,3,9,33, 13,14,5,1,10,33, + 13,14,5,3,10,33, 13,14,4,1,11,33, 13,14,4,3,11,33, 13,14,4,6,2,17, 13,13,13,1,2,34, 13,13,13,5,2,18, 13,13,12,1,3,34, 13,13,11,1,4,34, + 13,13,10,1,5,34, 13,13,9,1,6,34, 13,13,8,1,7,34, 13,13,7,1,8,34, 13,13,6,1,9,34, 13,13,5,1,10,34, 13,13,4,1,11,34, 13,13,3,1,12,34, + 13,13,3,3,12,34, 13,13,3,6,2,18, 13,12,13,1,2,35, 13,12,13,5,13,3, 13,12,12,1,3,35, 13,12,11,1,4,35, 13,12,10,1,5,35, 13,12,9,1,6,35, + 13,12,8,1,7,35, 13,12,7,1,8,35, 13,12,6,1,9,35, 13,12,5,1,10,35, 13,12,4,1,11,35, 13,12,3,1,12,35, 13,12,2,1,13,35, 13,12,2,3,13,35, + 13,12,2,6,2,19, 13,11,14,3,1,36, 13,11,14,4,13,4, 13,11,14,5,13,4, 13,11,2,6,2,20, 13,10,13,1,2,37, 13,10,13,4,13,5, 13,10,13,5,13,5, + 13,10,12,1,3,37, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, 13,10,6,1,9,37, 13,10,5,1,10,37, + 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,6,2,21, 13,9,12,5,13,6, 13,9,2,4,13,6, 13,9,2,6,2,22, 13,8,12,5,13,7, + 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,4,6,2,24, 13,6,11,5,13,9, 13,6,4,6,2,25, 13,5,12,3,3,42, + 13,5,12,5,13,10, 13,5,4,6,2,26, 13,4,12,4,13,11, 13,4,12,5,13,11, 13,4,4,6,2,27, 13,3,11,4,13,12, 13,3,11,5,13,12, 13,3,4,4,13,12, + 13,3,4,6,2,28, 13,2,10,4,13,13, 13,2,10,5,13,13, 13,2,9,4,13,13, 13,2,8,4,13,13, 13,2,7,4,13,13, 13,2,6,4,13,13, 13,2,5,4,13,13, + 13,2,5,6,2,29, 13,0,11,1,4,47, 13,0,11,3,4,47, 13,0,11,5,13,15, 13,0,10,1,5,47, 13,0,10,3,5,47, 13,0,9,1,6,47, 13,0,9,3,6,47, + 13,0,8,1,7,47, 13,0,8,3,7,47, 13,0,7,1,8,47, 13,0,7,3,8,47, 13,0,6,1,9,47, 13,0,6,3,9,47, 13,0,6,6,2,31, 14,11,14,1,1,36, + 14,11,14,3,1,36, 14,11,14,4,1,20, 14,11,14,5,1,20, 14,11,13,1,2,36, 14,11,13,3,2,36, 14,11,13,4,1,20, 14,11,12,1,3,36, 14,11,12,3,3,36, + 14,11,12,4,1,20, 14,11,11,1,4,36, 14,11,11,3,4,36, 14,11,11,4,1,20, 14,11,10,1,5,36, 14,11,10,3,5,36, 14,11,10,4,1,20, 14,11,9,1,6,36, + 14,11,9,3,6,36, 14,11,9,4,1,20, 14,11,8,1,7,36, 14,11,8,3,7,36, 14,11,8,4,1,20, 14,11,7,1,8,36, 14,11,7,3,8,36, 14,11,7,4,1,20, + 14,11,6,1,9,36, 14,11,6,3,9,36, 14,11,6,4,1,20, 14,11,5,1,10,36, 14,11,5,3,10,36, 14,11,5,4,1,20, 14,11,4,1,11,36, 14,11,4,3,11,36, + 14,11,4,4,1,20, 14,11,3,1,12,36, 14,11,3,3,12,36, 14,11,3,4,1,20, 14,11,2,1,13,36, 14,11,2,3,13,36, 14,11,2,4,1,20, 14,11,2,6,1,20, + 14,9,12,1,3,38, 14,9,12,3,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,11,3,4,38, 14,9,10,1,5,38, 14,9,10,3,5,38, 14,9,9,1,6,38, + 14,9,9,3,6,38, 14,9,8,1,7,38, 14,9,8,3,7,38, 14,9,7,1,8,38, 14,9,7,3,8,38, 14,9,6,1,9,38, 14,9,6,3,9,38, 14,9,5,1,10,38, + 14,9,5,3,10,38, 14,9,4,1,11,38, 14,9,4,3,11,38, 14,9,3,1,12,38, 14,9,3,3,12,38, 14,9,2,1,13,38, 14,9,2,3,13,38, 14,9,2,4,14,6, + 14,9,2,6,1,22, 14,8,12,1,3,39, 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,10,1,5,39, 14,8,9,1,6,39, 14,8,8,1,7,39, 14,8,7,1,8,39, + 14,8,6,1,9,39, 14,8,5,1,10,39, 14,8,4,1,11,39, 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,3,6,1,23, 14,7,12,1,3,40, 14,7,12,4,14,8, + 14,7,12,5,14,8, 14,7,11,1,4,40, 14,7,10,1,5,40, 14,7,9,1,6,40, 14,7,8,1,7,40, 14,7,7,1,8,40, 14,7,6,1,9,40, 14,7,5,1,10,40, + 14,7,4,1,11,40, 14,7,4,6,14,8, 14,6,11,1,4,41, 14,6,11,5,14,9, 14,6,10,1,5,41, 14,6,9,1,6,41, 14,6,8,1,7,41, 14,6,7,1,8,41, + 14,6,6,1,9,41, 14,6,5,1,10,41, 14,6,4,1,11,41, 14,6,4,6,1,25, 14,5,12,1,3,42, 14,5,12,3,3,42, 14,5,12,5,14,10, 14,5,11,1,4,42, + 14,5,10,1,5,42, 14,5,9,1,6,42, 14,5,8,1,7,42, 14,5,7,1,8,42, 14,5,6,1,9,42, 14,5,5,1,10,42, 14,5,4,1,11,42, 14,5,4,6,1,26, + 14,4,12,4,14,11, 14,4,12,5,14,11, 14,4,4,6,1,27, 14,3,11,4,14,12, 14,3,11,5,14,12, 14,3,4,4,14,12, 14,3,4,6,1,28, 14,2,10,1,5,45, + 14,2,10,4,14,13, 14,2,10,5,14,13, 14,2,9,1,6,45, 14,2,9,4,14,13, 14,2,8,1,7,45, 14,2,8,4,14,13, 14,2,7,1,8,45, 14,2,7,4,14,13, + 14,2,6,1,9,45, 14,2,6,4,14,13, 14,2,5,1,10,45, 14,2,5,4,14,13, 14,2,5,6,1,29, 15,4,12,1,3,43, 15,4,12,3,3,43, 15,4,12,4,15,11, + 15,4,12,5,15,11, 15,4,11,1,4,43, 15,4,11,3,4,43, 15,4,10,1,5,43, 15,4,10,3,5,43, 15,4,9,1,6,43, 15,4,9,3,6,43, 15,4,8,1,7,43, + 15,4,8,3,7,43, 15,4,7,1,8,43, 15,4,7,3,8,43, 15,4,6,1,9,43, 15,4,6,3,9,43, 15,4,5,1,10,43, 15,4,5,3,10,43, 15,4,4,1,11,43, + 15,4,4,3,11,43, 15,4,4,6,0,27, 15,3,11,1,4,44, 15,3,11,4,15,12, 15,3,11,5,15,12, 15,3,10,1,5,44, 15,3,10,4,15,12, 15,3,9,1,6,44, + 15,3,9,4,15,12, 15,3,8,1,7,44, 15,3,8,4,15,12, 15,3,7,1,8,44, 15,3,7,4,15,12, 15,3,6,1,9,44, 15,3,6,4,15,12, 15,3,5,1,10,44, + 15,3,5,4,15,12, 15,3,4,1,11,44, 15,3,4,4,15,12, 15,3,4,6,0,28, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1849, + count = 1210, + faces = { + 1,10,14,2,1,85, 1,10,14,3,1,85, 1,10,14,4,1,53, 1,10,14,5,1,53, 1,10,13,2,2,85, 1,10,13,3,2,85, 1,10,13,4,1,53, 1,10,12,2,3,85, + 1,10,12,3,3,85, 1,10,12,4,1,53, 1,10,11,2,4,85, 1,10,11,3,4,85, 1,10,11,4,1,53, 1,10,10,2,5,85, 1,10,10,3,5,85, 1,10,10,4,1,53, + 1,10,9,2,6,85, 1,10,9,3,6,85, 1,10,9,4,1,53, 1,10,8,2,7,85, 1,10,8,3,7,85, 1,10,8,4,1,53, 1,10,7,2,8,85, 1,10,7,3,8,85, + 1,10,7,4,1,53, 1,10,6,2,9,85, 1,10,6,3,9,85, 1,10,6,4,1,53, 1,10,5,2,10,85, 1,10,5,3,10,85, 1,10,5,4,1,53, 1,10,4,2,11,85, + 1,10,4,3,11,85, 1,10,4,4,1,53, 1,10,3,2,12,85, 1,10,3,3,12,85, 1,10,3,4,1,53, 1,10,2,2,13,85, 1,10,2,3,13,85, 1,10,2,4,1,53, + 1,10,2,6,1,53, 1,8,12,2,3,87, 1,8,12,3,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,11,3,4,87, 1,8,10,2,5,87, 1,8,10,3,5,87, + 1,8,9,2,6,87, 1,8,9,3,6,87, 1,8,8,2,7,87, 1,8,8,3,7,87, 1,8,7,2,8,87, 1,8,7,3,8,87, 1,8,6,2,9,87, 1,8,6,3,9,87, + 1,8,5,2,10,87, 1,8,5,3,10,87, 1,8,4,2,11,87, 1,8,4,3,11,87, 1,8,3,2,12,87, 1,8,3,3,12,87, 1,8,2,2,13,87, 1,8,2,3,13,87, + 1,8,2,4,1,55, 1,8,2,6,14,71, 1,7,12,2,3,88, 1,7,12,4,1,56, 1,7,12,5,1,56, 1,7,11,2,4,88, 1,7,11,4,1,56, 1,7,10,2,5,88, + 1,7,10,4,1,56, 1,7,9,2,6,88, 1,7,9,4,1,56, 1,7,8,2,7,88, 1,7,8,4,1,56, 1,7,7,2,8,88, 1,7,7,4,1,56, 1,7,6,2,9,88, + 1,7,6,4,1,56, 1,7,5,2,10,88, 1,7,5,4,1,56, 1,7,4,2,11,88, 1,7,4,4,1,56, 1,7,3,2,12,88, 1,7,3,4,1,56, 1,7,3,6,14,72, + 1,5,11,2,4,90, 1,5,11,3,4,90, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,10,3,5,90, 1,5,9,2,6,90, 1,5,9,3,6,90, 1,5,8,2,7,90, + 1,5,8,3,7,90, 1,5,7,2,8,90, 1,5,7,3,8,90, 1,5,6,2,9,90, 1,5,6,3,9,90, 1,5,5,2,10,90, 1,5,5,3,10,90, 1,5,4,2,11,90, + 1,5,4,3,11,90, 1,5,3,2,12,90, 1,5,3,3,12,90, 1,5,3,6,1,58, 1,4,12,2,3,91, 1,4,12,3,3,91, 1,4,12,4,1,59, 1,4,12,5,1,59, + 1,4,11,2,4,91, 1,4,11,4,1,59, 1,4,10,2,5,91, 1,4,10,4,1,59, 1,4,9,2,6,91, 1,4,9,4,1,59, 1,4,8,2,7,91, 1,4,8,4,1,59, + 1,4,7,2,8,91, 1,4,7,4,1,59, 1,4,6,2,9,91, 1,4,6,4,1,59, 1,4,5,2,10,91, 1,4,5,4,1,59, 1,4,4,2,11,91, 1,4,4,4,1,59, + 1,4,3,2,12,91, 1,4,3,4,1,59, 1,4,3,6,1,59, 2,13,13,2,2,82, 2,13,13,3,2,82, 2,13,13,5,2,50, 2,13,12,2,3,82, 2,13,12,3,3,82, + 2,13,11,2,4,82, 2,13,11,3,4,82, 2,13,10,2,5,82, 2,13,10,3,5,82, 2,13,9,2,6,82, 2,13,9,3,6,82, 2,13,8,2,7,82, 2,13,8,3,7,82, + 2,13,7,2,8,82, 2,13,7,3,8,82, 2,13,6,2,9,82, 2,13,6,3,9,82, 2,13,5,2,10,82, 2,13,5,3,10,82, 2,13,4,2,11,82, 2,13,4,3,11,82, + 2,13,4,6,2,50, 2,12,13,2,2,83, 2,12,13,5,2,51, 2,12,12,2,3,83, 2,12,11,2,4,83, 2,12,10,2,5,83, 2,12,9,2,6,83, 2,12,8,2,7,83, + 2,12,7,2,8,83, 2,12,6,2,9,83, 2,12,5,2,10,83, 2,12,4,2,11,83, 2,12,3,2,12,83, 2,12,3,3,12,83, 2,12,3,6,2,51, 2,11,13,2,2,84, + 2,11,13,5,2,52, 2,11,12,2,3,84, 2,11,11,2,4,84, 2,11,10,2,5,84, 2,11,9,2,6,84, 2,11,8,2,7,84, 2,11,7,2,8,84, 2,11,6,2,9,84, + 2,11,5,2,10,84, 2,11,4,2,11,84, 2,11,3,2,12,84, 2,11,2,2,13,84, 2,11,2,3,13,84, 2,11,2,6,13,68, 2,10,14,3,1,85, 2,10,14,4,2,53, + 2,10,14,5,2,53, 2,10,2,6,13,69, 2,9,13,2,2,86, 2,9,13,4,2,54, 2,9,13,5,2,54, 2,9,12,2,3,86, 2,9,11,2,4,86, 2,9,10,2,5,86, + 2,9,9,2,6,86, 2,9,8,2,7,86, 2,9,7,2,8,86, 2,9,6,2,9,86, 2,9,5,2,10,86, 2,9,4,2,11,86, 2,9,3,2,12,86, 2,9,2,2,13,86, + 2,9,2,6,13,70, 2,8,12,5,2,55, 2,8,2,4,2,55, 2,8,2,6,13,71, 2,7,12,5,2,56, 2,7,3,4,2,56, 2,7,3,6,13,72, 2,6,12,2,3,89, + 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,11,2,4,89, 2,6,10,2,5,89, 2,6,9,2,6,89, 2,6,8,2,7,89, 2,6,7,2,8,89, 2,6,6,2,9,89, + 2,6,5,2,10,89, 2,6,4,2,11,89, 2,6,4,6,13,73, 2,5,11,5,2,58, 2,5,3,3,12,90, 2,5,3,6,2,58, 2,4,12,3,3,91, 2,4,12,5,2,59, + 2,4,3,6,13,75, 2,3,13,2,2,92, 2,3,13,3,2,92, 2,3,13,5,2,60, 2,3,12,2,3,92, 2,3,11,2,4,92, 2,3,10,2,5,92, 2,3,9,2,6,92, + 2,3,8,2,7,92, 2,3,7,2,8,92, 2,3,6,2,9,92, 2,3,5,2,10,92, 2,3,4,2,11,92, 2,3,3,2,12,92, 2,3,2,2,13,92, 2,3,2,3,13,92, + 2,3,2,6,13,76, 2,2,13,2,2,93, 2,2,13,4,13,77, 2,2,13,5,13,77, 2,2,12,2,3,93, 2,2,12,4,13,77, 2,2,11,2,4,93, 2,2,11,4,13,77, + 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,4,13,77, 2,2,8,2,7,93, 2,2,8,4,13,77, 2,2,7,2,8,93, 2,2,7,4,13,77, + 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,4,13,77, 2,2,4,2,11,93, 2,2,4,4,13,77, 2,2,3,2,12,93, 2,2,3,4,13,77, + 2,2,2,2,13,93, 2,2,2,4,13,77, 2,2,2,6,13,77, 3,14,12,1,3,81, 3,14,12,2,3,81, 3,14,12,3,3,81, 3,14,12,5,3,49, 3,14,12,6,3,49, + 3,14,9,1,6,81, 3,14,9,2,6,81, 3,14,9,3,6,81, 3,14,9,5,3,49, 3,14,8,1,7,81, 3,14,8,2,7,81, 3,14,8,3,7,81, 3,14,7,1,8,81, + 3,14,7,2,8,81, 3,14,7,3,8,81, 3,14,6,1,9,81, 3,14,6,2,9,81, 3,14,6,3,9,81, 3,14,6,6,3,49, 3,13,13,3,2,82, 3,13,13,5,3,50, + 3,13,11,3,4,82, 3,13,10,3,5,82, 3,13,5,3,10,82, 3,13,4,3,11,82, 3,13,4,6,3,50, 3,12,13,5,3,51, 3,12,3,3,12,83, 3,12,3,6,12,67, + 3,11,13,5,3,52, 3,11,2,3,13,84, 3,11,2,6,12,68, 3,10,14,3,1,85, 3,10,14,4,3,53, 3,10,14,5,3,53, 3,10,2,6,12,69, 3,9,13,4,3,54, + 3,9,13,5,3,54, 3,9,2,6,12,70, 3,8,12,5,3,55, 3,8,2,4,3,55, 3,8,2,6,12,71, 3,7,12,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, + 3,6,12,4,3,57, 3,6,12,5,3,57, 3,6,4,6,12,73, 3,5,11,5,3,58, 3,5,3,3,12,90, 3,5,3,6,12,74, 3,4,12,3,3,91, 3,4,12,5,3,59, + 3,4,3,6,12,75, 3,3,13,3,2,92, 3,3,13,5,3,60, 3,3,2,3,13,92, 3,3,2,6,12,76, 3,2,13,4,3,61, 3,2,13,5,3,61, 3,2,2,6,12,77, + 3,1,12,2,3,94, 3,1,12,4,3,62, 3,1,12,5,3,62, 3,1,11,2,4,94, 3,1,11,4,3,62, 3,1,10,2,5,94, 3,1,10,4,3,62, 3,1,9,2,6,94, + 3,1,9,4,3,62, 3,1,8,2,7,94, 3,1,8,4,3,62, 3,1,7,2,8,94, 3,1,7,4,3,62, 3,1,6,2,9,94, 3,1,6,4,3,62, 3,1,5,2,10,94, + 3,1,5,4,3,62, 3,1,4,2,11,94, 3,1,4,4,3,62, 3,1,3,2,12,94, 3,1,3,4,3,62, 3,1,2,2,13,94, 3,1,2,4,3,62, 3,1,2,6,12,78, + 4,13,13,3,2,82, 4,13,13,5,4,50, 4,13,12,3,3,82, 4,13,11,3,4,82, 4,13,10,3,5,82, 4,13,9,3,6,82, 4,13,8,3,7,82, 4,13,7,3,8,82, + 4,13,6,3,9,82, 4,13,5,3,10,82, 4,13,4,3,11,82, 4,13,4,6,11,66, 4,12,13,5,4,51, 4,12,3,3,12,83, 4,12,3,6,11,67, 4,11,13,5,4,52, + 4,11,2,3,13,84, 4,11,2,6,11,68, 4,10,14,3,1,85, 4,10,14,4,4,53, 4,10,14,5,4,53, 4,10,2,6,11,69, 4,9,13,4,4,54, 4,9,13,5,4,54, + 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,2,4,4,55, 4,8,2,6,11,71, 4,7,12,5,4,56, 4,7,3,4,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, + 4,6,12,5,4,57, 4,6,4,6,11,73, 4,5,11,5,4,58, 4,5,3,3,12,90, 4,5,3,6,11,74, 4,4,12,3,3,91, 4,4,12,5,4,59, 4,4,3,6,11,75, + 4,3,13,3,2,92, 4,3,13,5,4,60, 4,3,2,3,13,92, 4,3,2,6,11,76, 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,2,6,11,77, 4,1,12,4,4,62, + 4,1,12,5,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, 4,1,6,4,4,62, 4,1,5,4,4,62, 4,1,2,4,4,62, 4,1,2,6,11,78, 4,0,11,2,4,95, + 4,0,11,5,4,63, 4,0,10,2,5,95, 4,0,9,2,6,95, 4,0,9,6,4,63, 4,0,4,2,11,95, 4,0,4,5,4,63, 4,0,3,2,12,95, 4,0,3,6,4,63, + 5,13,13,3,2,82, 5,13,13,5,5,50, 5,13,12,3,3,82, 5,13,11,3,4,82, 5,13,10,3,5,82, 5,13,9,3,6,82, 5,13,8,3,7,82, 5,13,7,3,8,82, + 5,13,6,3,9,82, 5,13,5,3,10,82, 5,13,4,3,11,82, 5,13,4,6,10,66, 5,12,13,5,5,51, 5,12,3,3,12,83, 5,12,3,6,10,67, 5,11,13,5,5,52, + 5,11,2,3,13,84, 5,11,2,6,10,68, 5,10,14,3,1,85, 5,10,14,4,5,53, 5,10,14,5,5,53, 5,10,2,6,10,69, 5,9,13,4,5,54, 5,9,13,5,5,54, + 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,2,4,5,55, 5,8,2,6,10,71, 5,7,12,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, + 5,6,12,5,5,57, 5,6,4,6,10,73, 5,5,11,5,5,58, 5,5,3,3,12,90, 5,5,3,6,10,74, 5,4,12,3,3,91, 5,4,12,5,5,59, 5,4,3,6,10,75, + 5,3,13,3,2,92, 5,3,13,5,5,60, 5,3,2,3,13,92, 5,3,2,6,10,76, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,6,10,77, 5,1,12,4,5,62, + 5,1,12,5,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,2,6,10,78, 5,0,11,5,5,63, + 5,0,9,6,5,63, 5,0,4,5,5,63, 5,0,3,6,5,63, 6,14,12,2,3,81, 6,14,12,3,3,81, 6,14,12,5,6,49, 6,14,12,6,9,65, 6,14,9,2,6,81, + 6,14,9,3,6,81, 6,14,9,5,6,49, 6,14,8,2,7,81, 6,14,8,3,7,81, 6,14,7,2,8,81, 6,14,7,3,8,81, 6,14,6,2,9,81, 6,14,6,3,9,81, + 6,14,6,6,9,65, 6,13,13,3,2,82, 6,13,13,5,6,50, 6,13,11,3,4,82, 6,13,10,3,5,82, 6,13,5,3,10,82, 6,13,4,3,11,82, 6,13,4,6,9,66, + 6,12,13,5,6,51, 6,12,3,3,12,83, 6,12,3,6,9,67, 6,11,13,5,6,52, 6,11,2,3,13,84, 6,11,2,6,9,68, 6,10,14,3,1,85, 6,10,14,4,6,53, + 6,10,14,5,6,53, 6,10,2,6,9,69, 6,9,13,4,6,54, 6,9,13,5,6,54, 6,9,2,6,9,70, 6,8,12,5,6,55, 6,8,2,4,6,55, 6,8,2,6,9,71, + 6,7,12,5,6,56, 6,7,3,4,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,4,6,9,73, 6,5,11,5,6,58, 6,5,3,3,12,90, + 6,5,3,6,9,74, 6,4,12,3,3,91, 6,4,12,5,6,59, 6,4,3,6,9,75, 6,3,13,3,2,92, 6,3,13,5,6,60, 6,3,2,3,13,92, 6,3,2,6,9,76, + 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, + 6,1,5,4,6,62, 6,1,2,4,6,62, 6,1,2,6,9,78, 6,0,11,5,6,63, 6,0,9,6,6,63, 6,0,4,5,6,63, 6,0,3,6,6,63, 7,14,12,3,3,81, + 7,14,12,5,7,49, 7,14,12,6,8,65, 7,14,9,3,6,81, 7,14,9,5,7,49, 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,6,6,8,65, + 7,13,13,3,2,82, 7,13,13,5,7,50, 7,13,11,3,4,82, 7,13,10,3,5,82, 7,13,5,3,10,82, 7,13,4,3,11,82, 7,13,4,6,8,66, 7,12,13,5,7,51, + 7,12,3,3,12,83, 7,12,3,6,8,67, 7,11,13,5,7,52, 7,11,2,3,13,84, 7,11,2,6,8,68, 7,10,14,3,1,85, 7,10,14,4,7,53, 7,10,14,5,7,53, + 7,10,2,6,8,69, 7,9,13,4,7,54, 7,9,13,5,7,54, 7,9,2,6,8,70, 7,8,12,5,7,55, 7,8,2,4,7,55, 7,8,2,6,8,71, 7,7,12,5,7,56, + 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,6,8,73, 7,5,11,5,7,58, 7,5,3,3,12,90, 7,5,3,6,8,74, + 7,4,12,3,3,91, 7,4,12,5,7,59, 7,4,3,6,8,75, 7,3,13,3,2,92, 7,3,13,5,7,60, 7,3,2,3,13,92, 7,3,2,6,8,76, 7,2,13,4,7,61, + 7,2,13,5,7,61, 7,2,2,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, + 7,1,2,4,7,62, 7,1,2,6,8,78, 7,0,11,5,7,63, 7,0,9,6,7,63, 7,0,4,5,7,63, 7,0,3,6,7,63, 8,14,12,3,3,81, 8,14,12,5,8,49, + 8,14,12,6,7,65, 8,14,9,3,6,81, 8,14,9,5,8,49, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,6,6,7,65, 8,13,13,3,2,82, + 8,13,13,5,8,50, 8,13,11,3,4,82, 8,13,10,3,5,82, 8,13,5,3,10,82, 8,13,4,3,11,82, 8,13,4,6,7,66, 8,12,13,5,8,51, 8,12,3,3,12,83, + 8,12,3,6,7,67, 8,11,13,5,8,52, 8,11,2,3,13,84, 8,11,2,6,7,68, 8,10,14,3,1,85, 8,10,14,4,8,53, 8,10,14,5,8,53, 8,10,2,6,7,69, + 8,9,13,4,8,54, 8,9,13,5,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, 8,8,2,4,8,55, 8,8,2,6,7,71, 8,7,12,5,8,56, 8,7,3,4,8,56, + 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,6,7,73, 8,5,11,5,8,58, 8,5,3,3,12,90, 8,5,3,6,7,74, 8,4,12,3,3,91, + 8,4,12,5,8,59, 8,4,3,6,7,75, 8,3,13,3,2,92, 8,3,13,5,8,60, 8,3,2,3,13,92, 8,3,2,6,7,76, 8,2,13,4,8,61, 8,2,13,5,8,61, + 8,2,2,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, + 8,1,2,6,7,78, 8,0,11,5,7,79, 8,0,9,6,7,79, 8,0,4,5,7,79, 8,0,3,6,7,79, 9,14,12,1,3,81, 9,14,12,3,3,81, 9,14,12,5,9,49, + 9,14,12,6,6,65, 9,14,9,1,6,81, 9,14,9,3,6,81, 9,14,9,5,9,49, 9,14,8,1,7,81, 9,14,8,3,7,81, 9,14,7,1,8,81, 9,14,7,3,8,81, + 9,14,6,1,9,81, 9,14,6,3,9,81, 9,14,6,6,6,65, 9,13,13,3,2,82, 9,13,13,5,9,50, 9,13,11,3,4,82, 9,13,10,3,5,82, 9,13,5,3,10,82, + 9,13,4,3,11,82, 9,13,4,6,6,66, 9,12,13,5,9,51, 9,12,3,3,12,83, 9,12,3,6,6,67, 9,11,13,5,9,52, 9,11,2,3,13,84, 9,11,2,6,6,68, + 9,10,14,3,1,85, 9,10,14,4,9,53, 9,10,14,5,9,53, 9,10,2,6,6,69, 9,9,13,4,9,54, 9,9,13,5,9,54, 9,9,2,6,6,70, 9,8,12,5,9,55, + 9,8,2,4,9,55, 9,8,2,6,6,71, 9,7,12,5,9,56, 9,7,3,4,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,4,6,6,73, + 9,5,11,5,9,58, 9,5,3,3,12,90, 9,5,3,6,6,74, 9,4,12,3,3,91, 9,4,12,5,9,59, 9,4,3,6,6,75, 9,3,13,3,2,92, 9,3,13,5,9,60, + 9,3,2,3,13,92, 9,3,2,6,6,76, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,2,6,6,77, 9,1,12,4,9,62, 9,1,12,5,9,62, 9,1,8,4,9,62, + 9,1,7,4,9,62, 9,1,6,4,9,62, 9,1,5,4,9,62, 9,1,2,4,9,62, 9,1,2,6,6,78, 9,0,11,5,6,79, 9,0,9,6,6,79, 9,0,4,5,6,79, + 9,0,3,6,6,79, 10,13,13,3,2,82, 10,13,13,5,10,50, 10,13,12,3,3,82, 10,13,11,3,4,82, 10,13,10,3,5,82, 10,13,9,3,6,82, 10,13,8,3,7,82, + 10,13,7,3,8,82, 10,13,6,3,9,82, 10,13,5,3,10,82, 10,13,4,3,11,82, 10,13,4,6,5,66, 10,12,13,5,10,51, 10,12,3,3,12,83, 10,12,3,6,5,67, + 10,11,13,5,10,52, 10,11,2,3,13,84, 10,11,2,6,5,68, 10,10,14,3,1,85, 10,10,14,4,10,53, 10,10,14,5,10,53, 10,10,2,6,5,69, 10,9,13,4,10,54, + 10,9,13,5,10,54, 10,9,2,6,5,70, 10,8,12,5,10,55, 10,8,2,4,10,55, 10,8,2,6,5,71, 10,7,12,5,10,56, 10,7,3,4,10,56, 10,7,3,6,5,72, + 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,4,6,5,73, 10,5,11,5,10,58, 10,5,3,3,12,90, 10,5,3,6,5,74, 10,4,12,3,3,91, 10,4,12,5,10,59, + 10,4,3,6,5,75, 10,3,13,3,2,92, 10,3,13,5,10,60, 10,3,2,3,13,92, 10,3,2,6,5,76, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,6,5,77, + 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,2,4,10,62, 10,1,2,6,5,78, + 10,0,11,5,5,79, 10,0,9,6,5,79, 10,0,4,5,5,79, 10,0,3,6,5,79, 11,13,13,3,2,82, 11,13,13,5,11,50, 11,13,12,3,3,82, 11,13,11,3,4,82, + 11,13,10,3,5,82, 11,13,9,3,6,82, 11,13,8,3,7,82, 11,13,7,3,8,82, 11,13,6,3,9,82, 11,13,5,3,10,82, 11,13,4,3,11,82, 11,13,4,6,4,66, + 11,12,13,5,11,51, 11,12,3,3,12,83, 11,12,3,6,4,67, 11,11,13,5,11,52, 11,11,2,3,13,84, 11,11,2,6,4,68, 11,10,14,3,1,85, 11,10,14,4,11,53, + 11,10,14,5,11,53, 11,10,2,6,4,69, 11,9,13,4,11,54, 11,9,13,5,11,54, 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,2,4,11,55, 11,8,2,6,4,71, + 11,7,12,5,11,56, 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,6,4,73, 11,5,11,5,11,58, 11,5,3,3,12,90, + 11,5,3,6,4,74, 11,4,12,3,3,91, 11,4,12,5,11,59, 11,4,3,6,4,75, 11,3,13,3,2,92, 11,3,13,5,11,60, 11,3,2,3,13,92, 11,3,2,6,4,76, + 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,6,4,77, 11,1,12,4,11,62, 11,1,12,5,11,62, 11,1,8,4,11,62, 11,1,7,4,11,62, 11,1,6,4,11,62, + 11,1,5,4,11,62, 11,1,2,4,11,62, 11,1,2,6,4,78, 11,0,11,1,4,95, 11,0,11,5,4,79, 11,0,10,1,5,95, 11,0,9,1,6,95, 11,0,9,6,4,79, + 11,0,4,1,11,95, 11,0,4,5,4,79, 11,0,3,1,12,95, 11,0,3,6,4,79, 12,14,12,1,3,81, 12,14,12,2,3,81, 12,14,12,3,3,81, 12,14,12,5,3,65, + 12,14,12,6,3,65, 12,14,9,1,6,81, 12,14,9,2,6,81, 12,14,9,3,6,81, 12,14,9,5,3,65, 12,14,8,1,7,81, 12,14,8,2,7,81, 12,14,8,3,7,81, + 12,14,7,1,8,81, 12,14,7,2,8,81, 12,14,7,3,8,81, 12,14,6,1,9,81, 12,14,6,2,9,81, 12,14,6,3,9,81, 12,14,6,6,3,65, 12,13,13,3,2,82, + 12,13,13,5,3,66, 12,13,11,3,4,82, 12,13,10,3,5,82, 12,13,5,3,10,82, 12,13,4,3,11,82, 12,13,4,6,3,66, 12,12,13,5,12,51, 12,12,3,3,12,83, + 12,12,3,6,3,67, 12,11,13,5,12,52, 12,11,2,3,13,84, 12,11,2,6,3,68, 12,10,14,3,1,85, 12,10,14,4,12,53, 12,10,14,5,12,53, 12,10,2,6,3,69, + 12,9,13,4,12,54, 12,9,13,5,12,54, 12,9,2,6,3,70, 12,8,12,5,12,55, 12,8,2,4,12,55, 12,8,2,6,3,71, 12,7,12,5,12,56, 12,7,3,4,12,56, + 12,7,3,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,4,6,3,73, 12,5,11,5,12,58, 12,5,3,3,12,90, 12,5,3,6,3,74, 12,4,12,3,3,91, + 12,4,12,5,12,59, 12,4,3,6,3,75, 12,3,13,3,2,92, 12,3,13,5,12,60, 12,3,2,3,13,92, 12,3,2,6,3,76, 12,2,13,4,12,61, 12,2,13,5,12,61, + 12,2,2,6,3,77, 12,1,12,1,3,94, 12,1,12,4,12,62, 12,1,12,5,12,62, 12,1,11,1,4,94, 12,1,11,4,12,62, 12,1,10,1,5,94, 12,1,10,4,12,62, + 12,1,9,1,6,94, 12,1,9,4,12,62, 12,1,8,1,7,94, 12,1,8,4,12,62, 12,1,7,1,8,94, 12,1,7,4,12,62, 12,1,6,1,9,94, 12,1,6,4,12,62, + 12,1,5,1,10,94, 12,1,5,4,12,62, 12,1,4,1,11,94, 12,1,4,4,12,62, 12,1,3,1,12,94, 12,1,3,4,12,62, 12,1,2,1,13,94, 12,1,2,4,12,62, + 12,1,2,6,3,78, 13,13,13,1,2,82, 13,13,13,3,2,82, 13,13,13,5,2,66, 13,13,12,1,3,82, 13,13,12,3,3,82, 13,13,11,1,4,82, 13,13,11,3,4,82, + 13,13,10,1,5,82, 13,13,10,3,5,82, 13,13,9,1,6,82, 13,13,9,3,6,82, 13,13,8,1,7,82, 13,13,8,3,7,82, 13,13,7,1,8,82, 13,13,7,3,8,82, + 13,13,6,1,9,82, 13,13,6,3,9,82, 13,13,5,1,10,82, 13,13,5,3,10,82, 13,13,4,1,11,82, 13,13,4,3,11,82, 13,13,4,6,2,66, 13,12,13,1,2,83, + 13,12,13,5,2,67, 13,12,12,1,3,83, 13,12,11,1,4,83, 13,12,10,1,5,83, 13,12,9,1,6,83, 13,12,8,1,7,83, 13,12,7,1,8,83, 13,12,6,1,9,83, + 13,12,5,1,10,83, 13,12,4,1,11,83, 13,12,3,1,12,83, 13,12,3,3,12,83, 13,12,3,6,2,67, 13,11,13,1,2,84, 13,11,13,5,13,52, 13,11,12,1,3,84, + 13,11,11,1,4,84, 13,11,10,1,5,84, 13,11,9,1,6,84, 13,11,8,1,7,84, 13,11,7,1,8,84, 13,11,6,1,9,84, 13,11,5,1,10,84, 13,11,4,1,11,84, + 13,11,3,1,12,84, 13,11,2,1,13,84, 13,11,2,3,13,84, 13,11,2,6,2,68, 13,10,14,3,1,85, 13,10,14,4,13,53, 13,10,14,5,13,53, 13,10,2,6,2,69, + 13,9,13,1,2,86, 13,9,13,4,13,54, 13,9,13,5,13,54, 13,9,12,1,3,86, 13,9,11,1,4,86, 13,9,10,1,5,86, 13,9,9,1,6,86, 13,9,8,1,7,86, + 13,9,7,1,8,86, 13,9,6,1,9,86, 13,9,5,1,10,86, 13,9,4,1,11,86, 13,9,3,1,12,86, 13,9,2,1,13,86, 13,9,2,6,2,70, 13,8,12,5,13,55, + 13,8,2,4,13,55, 13,8,2,6,2,71, 13,7,12,5,13,56, 13,7,3,4,13,56, 13,7,3,6,2,72, 13,6,12,1,3,89, 13,6,12,4,13,57, 13,6,12,5,13,57, + 13,6,11,1,4,89, 13,6,10,1,5,89, 13,6,9,1,6,89, 13,6,8,1,7,89, 13,6,7,1,8,89, 13,6,6,1,9,89, 13,6,5,1,10,89, 13,6,4,1,11,89, + 13,6,4,6,2,73, 13,5,11,1,4,90, 13,5,11,5,2,74, 13,5,10,1,5,90, 13,5,9,1,6,90, 13,5,8,1,7,90, 13,5,7,1,8,90, 13,5,6,1,9,90, + 13,5,5,1,10,90, 13,5,4,1,11,90, 13,5,3,1,12,90, 13,5,3,3,12,90, 13,5,3,6,2,74, 13,4,12,3,3,91, 13,4,12,5,13,59, 13,4,3,6,2,75, + 13,3,13,1,2,92, 13,3,13,3,2,92, 13,3,13,5,13,60, 13,3,12,1,3,92, 13,3,11,1,4,92, 13,3,10,1,5,92, 13,3,9,1,6,92, 13,3,8,1,7,92, + 13,3,7,1,8,92, 13,3,6,1,9,92, 13,3,5,1,10,92, 13,3,4,1,11,92, 13,3,3,1,12,92, 13,3,2,1,13,92, 13,3,2,3,13,92, 13,3,2,6,2,76, + 13,2,13,1,2,93, 13,2,13,4,13,61, 13,2,13,5,13,61, 13,2,12,1,3,93, 13,2,12,4,13,61, 13,2,11,1,4,93, 13,2,11,4,13,61, 13,2,10,1,5,93, + 13,2,10,4,13,61, 13,2,9,1,6,93, 13,2,9,4,13,61, 13,2,8,1,7,93, 13,2,8,4,13,61, 13,2,7,1,8,93, 13,2,7,4,13,61, 13,2,6,1,9,93, + 13,2,6,4,13,61, 13,2,5,1,10,93, 13,2,5,4,13,61, 13,2,4,1,11,93, 13,2,4,4,13,61, 13,2,3,1,12,93, 13,2,3,4,13,61, 13,2,2,1,13,93, + 13,2,2,4,13,61, 13,2,2,6,13,61, 14,10,14,1,1,85, 14,10,14,3,1,85, 14,10,14,4,1,69, 14,10,14,5,1,69, 14,10,13,1,2,85, 14,10,13,3,2,85, + 14,10,13,4,1,69, 14,10,12,1,3,85, 14,10,12,3,3,85, 14,10,12,4,1,69, 14,10,11,1,4,85, 14,10,11,3,4,85, 14,10,11,4,1,69, 14,10,10,1,5,85, + 14,10,10,3,5,85, 14,10,10,4,1,69, 14,10,9,1,6,85, 14,10,9,3,6,85, 14,10,9,4,1,69, 14,10,8,1,7,85, 14,10,8,3,7,85, 14,10,8,4,1,69, + 14,10,7,1,8,85, 14,10,7,3,8,85, 14,10,7,4,1,69, 14,10,6,1,9,85, 14,10,6,3,9,85, 14,10,6,4,1,69, 14,10,5,1,10,85, 14,10,5,3,10,85, + 14,10,5,4,1,69, 14,10,4,1,11,85, 14,10,4,3,11,85, 14,10,4,4,1,69, 14,10,3,1,12,85, 14,10,3,3,12,85, 14,10,3,4,1,69, 14,10,2,1,13,85, + 14,10,2,3,13,85, 14,10,2,4,1,69, 14,10,2,6,1,69, 14,8,12,1,3,87, 14,8,12,3,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,11,3,4,87, + 14,8,10,1,5,87, 14,8,10,3,5,87, 14,8,9,1,6,87, 14,8,9,3,6,87, 14,8,8,1,7,87, 14,8,8,3,7,87, 14,8,7,1,8,87, 14,8,7,3,8,87, + 14,8,6,1,9,87, 14,8,6,3,9,87, 14,8,5,1,10,87, 14,8,5,3,10,87, 14,8,4,1,11,87, 14,8,4,3,11,87, 14,8,3,1,12,87, 14,8,3,3,12,87, + 14,8,2,1,13,87, 14,8,2,3,13,87, 14,8,2,4,14,55, 14,8,2,6,1,71, 14,7,12,1,3,88, 14,7,12,4,14,56, 14,7,12,5,14,56, 14,7,11,1,4,88, + 14,7,11,4,14,56, 14,7,10,1,5,88, 14,7,10,4,14,56, 14,7,9,1,6,88, 14,7,9,4,14,56, 14,7,8,1,7,88, 14,7,8,4,14,56, 14,7,7,1,8,88, + 14,7,7,4,14,56, 14,7,6,1,9,88, 14,7,6,4,14,56, 14,7,5,1,10,88, 14,7,5,4,14,56, 14,7,4,1,11,88, 14,7,4,4,14,56, 14,7,3,1,12,88, + 14,7,3,4,14,56, 14,7,3,6,1,72, 14,4,12,1,3,91, 14,4,12,3,3,91, 14,4,12,4,1,75, 14,4,12,5,1,75, 14,4,11,1,4,91, 14,4,11,3,4,91, + 14,4,11,4,1,75, 14,4,10,1,5,91, 14,4,10,3,5,91, 14,4,10,4,1,75, 14,4,9,1,6,91, 14,4,9,3,6,91, 14,4,9,4,1,75, 14,4,8,1,7,91, + 14,4,8,3,7,91, 14,4,8,4,1,75, 14,4,7,1,8,91, 14,4,7,3,8,91, 14,4,7,4,1,75, 14,4,6,1,9,91, 14,4,6,3,9,91, 14,4,6,4,1,75, + 14,4,5,1,10,91, 14,4,5,3,10,91, 14,4,5,4,1,75, 14,4,4,1,11,91, 14,4,4,3,11,91, 14,4,4,4,1,75, 14,4,3,1,12,91, 14,4,3,3,12,91, + 14,4,3,4,1,75, 14,4,3,6,1,75, + }, + }, + }, +} diff --git a/assets/voxels/captain.lua b/assets/voxels/captain.lua new file mode 100644 index 0000000..42a27ad --- /dev/null +++ b/assets/voxels/captain.lua @@ -0,0 +1,149 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "captain" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "captain", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1582, + count = 990, + faces = { + 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, + 1,9,9,3,6,38, 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, + 1,9,5,3,10,38, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, 1,9,3,3,12,38, 1,9,3,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, + 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, + 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, + 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,11,2,4,42, 1,5,11,3,4,42, 1,5,11,5,1,10, 1,5,10,2,5,42, + 1,5,10,3,5,42, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, 1,5,7,3,8,42, 1,5,6,2,9,42, + 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,5,6,14,26, 1,4,11,2,4,43, 1,4,11,4,1,11, 1,4,11,5,1,11, 1,4,10,2,5,43, + 1,4,10,4,1,11, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, + 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,3,11,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,11,13,2,2,36, + 2,11,13,3,2,36, 2,11,13,5,2,4, 2,11,12,2,3,36, 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, 2,11,10,2,5,36, 2,11,10,3,5,36, + 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, 2,11,6,2,9,36, 2,11,6,3,9,36, + 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, 2,11,3,6,13,20, 2,10,13,2,2,37, + 2,10,13,4,2,5, 2,10,13,5,2,5, 2,10,12,2,3,37, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, 2,10,8,2,7,37, 2,10,7,2,8,37, + 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,3,6,13,21, 2,9,12,5,2,6, 2,9,3,6,13,22, 2,8,12,5,2,7, + 2,8,3,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, + 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, 2,7,3,4,2,8, 2,7,3,6,13,24, 2,6,11,2,4,41, + 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,4,2,11,41, + 2,6,4,4,2,9, 2,6,4,6,13,25, 2,5,11,5,2,10, 2,5,5,6,13,26, 2,4,11,4,2,11, 2,4,11,5,2,11, 2,4,4,3,11,43, 2,4,4,6,13,27, + 2,3,10,2,5,44, 2,3,10,4,2,12, 2,3,10,5,2,12, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, + 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, 2,3,4,6,13,28, + 3,14,11,2,4,33, 3,14,11,3,4,33, 3,14,11,5,3,1, 3,14,10,2,5,33, 3,14,10,3,5,33, 3,14,9,2,6,33, 3,14,9,3,6,33, 3,14,8,2,7,33, + 3,14,8,3,7,33, 3,14,7,2,8,33, 3,14,7,3,8,33, 3,14,6,2,9,33, 3,14,6,3,9,33, 3,14,5,2,10,33, 3,14,5,3,10,33, 3,14,4,2,11,33, + 3,14,4,3,11,33, 3,14,3,2,12,33, 3,14,3,3,12,33, 3,14,3,6,12,17, 3,13,11,2,4,34, 3,13,11,5,3,2, 3,13,10,2,5,34, 3,13,9,2,6,34, + 3,13,8,2,7,34, 3,13,7,2,8,34, 3,13,6,2,9,34, 3,13,5,2,10,34, 3,13,4,2,11,34, 3,13,3,2,12,34, 3,13,3,6,12,18, 3,12,12,2,3,35, + 3,12,12,3,3,35, 3,12,12,5,3,3, 3,12,11,2,4,35, 3,12,10,2,5,35, 3,12,9,2,6,35, 3,12,8,2,7,35, 3,12,7,2,8,35, 3,12,6,2,9,35, + 3,12,5,2,10,35, 3,12,4,2,11,35, 3,12,3,2,12,35, 3,12,3,6,12,19, 3,11,13,3,2,36, 3,11,13,5,3,4, 3,11,3,6,12,20, 3,10,13,4,3,5, + 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,12,5,3,6, 3,9,3,6,12,22, 3,8,12,5,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, + 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,11,5,3,9, 3,6,4,4,3,9, 3,6,4,6,12,25, 3,5,11,5,3,10, 3,5,5,6,12,26, 3,4,11,4,3,11, + 3,4,11,5,3,11, 3,4,4,3,11,43, 3,4,4,6,12,27, 3,3,10,5,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, + 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,4,2,11,45, 3,2,4,6,12,29, 3,1,11,2,4,46, 3,1,11,3,4,46, + 3,1,11,4,3,14, 3,1,11,5,3,14, 3,1,10,2,5,46, 3,1,10,4,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, + 3,1,7,2,8,46, 3,1,7,4,3,14, 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,4,2,11,46, 3,1,4,4,3,14, + 3,1,4,6,12,30, 4,15,10,2,5,32, 4,15,10,3,5,32, 4,15,10,5,4,0, 4,15,9,2,6,32, 4,15,9,3,6,32, 4,15,8,2,7,32, 4,15,8,3,7,32, + 4,15,7,2,8,32, 4,15,7,3,8,32, 4,15,6,2,9,32, 4,15,6,3,9,32, 4,15,5,2,10,32, 4,15,5,3,10,32, 4,15,4,2,11,32, 4,15,4,3,11,32, + 4,15,4,6,11,16, 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,3,3,12,33, 4,14,3,6,11,17, 4,13,11,5,4,2, 4,13,3,6,11,18, 4,12,12,3,3,35, + 4,12,12,5,4,3, 4,12,3,6,11,19, 4,11,13,3,2,36, 4,11,13,5,4,4, 4,11,3,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,3,6,11,21, + 4,9,12,5,4,6, 4,9,3,6,11,22, 4,8,12,5,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, + 4,6,11,5,4,9, 4,6,4,4,4,9, 4,6,4,6,11,25, 4,5,11,5,4,10, 4,5,5,6,11,26, 4,4,11,4,4,11, 4,4,11,5,4,11, 4,4,4,3,11,43, + 4,4,4,6,11,27, 4,3,10,5,4,12, 4,3,4,6,11,28, 4,2,10,5,4,13, 4,2,4,6,11,29, 4,1,11,3,4,46, 4,1,11,5,4,14, 4,1,4,4,4,14, + 4,1,4,6,11,30, 4,0,11,2,4,47, 4,0,11,5,4,15, 4,0,10,2,5,47, 4,0,9,2,6,47, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, + 4,0,5,2,10,47, 4,0,5,6,11,31, 5,15,10,3,5,32, 5,15,10,5,5,0, 5,15,9,3,6,32, 5,15,8,3,7,32, 5,15,7,3,8,32, 5,15,6,3,9,32, + 5,15,5,3,10,32, 5,15,4,3,11,32, 5,15,4,6,10,16, 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,3,3,12,33, 5,14,3,6,10,17, 5,13,11,5,5,2, + 5,13,3,6,10,18, 5,12,12,3,3,35, 5,12,12,5,5,3, 5,12,3,6,10,19, 5,11,13,3,2,36, 5,11,13,5,5,4, 5,11,3,6,10,20, 5,10,13,4,5,5, + 5,10,13,5,5,5, 5,10,3,6,10,21, 5,9,12,5,5,6, 5,9,3,6,10,22, 5,8,12,5,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, + 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,11,5,5,9, 5,6,4,4,5,9, 5,6,4,6,10,25, 5,5,11,5,5,10, 5,5,5,6,10,26, 5,4,11,4,5,11, + 5,4,11,5,5,11, 5,4,4,3,11,43, 5,4,4,6,10,27, 5,3,10,5,5,12, 5,3,4,6,10,28, 5,2,10,5,5,13, 5,2,4,6,10,29, 5,1,11,3,4,46, + 5,1,11,5,5,14, 5,1,4,4,5,14, 5,1,4,6,10,30, 5,0,11,5,5,15, 5,0,5,6,10,31, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,3,6,32, + 6,15,8,3,7,32, 6,15,7,3,8,32, 6,15,6,3,9,32, 6,15,5,3,10,32, 6,15,4,3,11,32, 6,15,4,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, + 6,14,3,3,12,33, 6,14,3,6,9,17, 6,13,11,5,6,2, 6,13,3,6,9,18, 6,12,12,3,3,35, 6,12,12,5,6,3, 6,12,3,6,9,19, 6,11,13,3,2,36, + 6,11,13,5,6,4, 6,11,3,6,9,20, 6,10,13,4,6,5, 6,10,13,5,6,5, 6,10,3,6,9,21, 6,9,12,5,6,6, 6,9,3,6,9,22, 6,8,12,5,6,7, + 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,11,5,6,9, 6,6,4,4,6,9, 6,6,4,6,9,25, + 6,5,11,5,6,10, 6,5,5,6,9,26, 6,4,11,4,6,11, 6,4,11,5,6,11, 6,4,4,3,11,43, 6,4,4,6,9,27, 6,3,10,5,6,12, 6,3,4,6,9,28, + 6,2,10,5,6,13, 6,2,4,6,9,29, 6,1,11,3,4,46, 6,1,11,5,6,14, 6,1,4,4,6,14, 6,1,4,6,9,30, 6,0,11,1,4,47, 6,0,11,5,6,15, + 6,0,10,1,5,47, 6,0,9,1,6,47, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,5,1,10,47, 6,0,5,6,9,31, 7,15,10,3,5,32, + 7,15,10,5,7,0, 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,5,3,10,32, 7,15,4,3,11,32, 7,15,4,6,8,16, + 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,3,3,12,33, 7,14,3,6,8,17, 7,13,11,5,7,2, 7,13,3,6,8,18, 7,12,12,3,3,35, 7,12,12,5,7,3, + 7,12,3,6,8,19, 7,11,13,3,2,36, 7,11,13,5,7,4, 7,11,3,6,8,20, 7,10,13,4,7,5, 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,12,5,7,6, + 7,9,3,6,8,22, 7,8,12,5,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,3,4,7,8, 7,7,3,6,8,24, 7,6,11,5,7,9, + 7,6,4,4,7,9, 7,6,4,6,8,25, 7,5,11,5,7,10, 7,5,5,6,8,26, 7,4,11,4,7,11, 7,4,11,5,7,11, 7,4,4,3,11,43, 7,4,4,6,8,27, + 7,3,10,5,7,12, 7,3,4,6,8,28, 7,2,10,5,7,13, 7,2,4,6,8,29, 7,1,11,3,4,46, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, + 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,4,4,7,14, 7,1,4,6,8,30, 8,15,10,3,5,32, + 8,15,10,5,8,0, 8,15,9,3,6,32, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,5,3,10,32, 8,15,4,3,11,32, 8,15,4,6,7,16, + 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,3,3,12,33, 8,14,3,6,7,17, 8,13,11,5,8,2, 8,13,3,6,7,18, 8,12,12,3,3,35, 8,12,12,5,8,3, + 8,12,3,6,7,19, 8,11,13,3,2,36, 8,11,13,5,8,4, 8,11,3,6,7,20, 8,10,13,4,8,5, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,12,5,8,6, + 8,9,3,6,7,22, 8,8,12,5,8,7, 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,11,5,8,9, + 8,6,4,4,8,9, 8,6,4,6,7,25, 8,5,11,5,8,10, 8,5,5,6,7,26, 8,4,11,4,8,11, 8,4,11,5,8,11, 8,4,4,3,11,43, 8,4,4,6,7,27, + 8,3,10,5,8,12, 8,3,4,6,7,28, 8,2,10,5,8,13, 8,2,4,6,7,29, 8,1,11,3,4,46, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, + 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,4,4,8,14, 8,1,4,6,7,30, 9,15,10,3,5,32, + 9,15,10,5,9,0, 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, 9,15,6,3,9,32, 9,15,5,3,10,32, 9,15,4,3,11,32, 9,15,4,6,6,16, + 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,3,3,12,33, 9,14,3,6,6,17, 9,13,11,5,9,2, 9,13,3,6,6,18, 9,12,12,3,3,35, 9,12,12,5,9,3, + 9,12,3,6,6,19, 9,11,13,3,2,36, 9,11,13,5,9,4, 9,11,3,6,6,20, 9,10,13,4,9,5, 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,12,5,9,6, + 9,9,3,6,6,22, 9,8,12,5,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,3,4,9,8, 9,7,3,6,6,24, 9,6,11,5,9,9, + 9,6,4,4,9,9, 9,6,4,6,6,25, 9,5,11,5,9,10, 9,5,5,6,6,26, 9,4,11,4,9,11, 9,4,11,5,9,11, 9,4,4,3,11,43, 9,4,4,6,6,27, + 9,3,10,5,9,12, 9,3,4,6,6,28, 9,2,10,5,9,13, 9,2,4,6,6,29, 9,1,11,3,4,46, 9,1,11,5,9,14, 9,1,4,4,9,14, 9,1,4,6,6,30, + 9,0,11,2,4,47, 9,0,11,5,9,15, 9,0,10,2,5,47, 9,0,9,2,6,47, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,5,2,10,47, + 9,0,5,6,6,31, 10,15,10,3,5,32, 10,15,10,5,10,0, 10,15,9,3,6,32, 10,15,8,3,7,32, 10,15,7,3,8,32, 10,15,6,3,9,32, 10,15,5,3,10,32, + 10,15,4,3,11,32, 10,15,4,6,5,16, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,3,3,12,33, 10,14,3,6,5,17, 10,13,11,5,10,2, 10,13,3,6,5,18, + 10,12,12,3,3,35, 10,12,12,5,10,3, 10,12,3,6,5,19, 10,11,13,3,2,36, 10,11,13,5,10,4, 10,11,3,6,5,20, 10,10,13,4,10,5, 10,10,13,5,10,5, + 10,10,3,6,5,21, 10,9,12,5,10,6, 10,9,3,6,5,22, 10,8,12,5,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,3,4,10,8, + 10,7,3,6,5,24, 10,6,11,5,10,9, 10,6,4,4,10,9, 10,6,4,6,5,25, 10,5,11,5,10,10, 10,5,5,6,5,26, 10,4,11,4,10,11, 10,4,11,5,10,11, + 10,4,4,3,11,43, 10,4,4,6,5,27, 10,3,10,5,10,12, 10,3,4,6,5,28, 10,2,10,5,10,13, 10,2,4,6,5,29, 10,1,11,3,4,46, 10,1,11,5,10,14, + 10,1,4,4,10,14, 10,1,4,6,5,30, 10,0,11,5,10,15, 10,0,5,6,5,31, 11,15,10,1,5,32, 11,15,10,3,5,32, 11,15,10,5,11,0, 11,15,9,1,6,32, + 11,15,9,3,6,32, 11,15,8,1,7,32, 11,15,8,3,7,32, 11,15,7,1,8,32, 11,15,7,3,8,32, 11,15,6,1,9,32, 11,15,6,3,9,32, 11,15,5,1,10,32, + 11,15,5,3,10,32, 11,15,4,1,11,32, 11,15,4,3,11,32, 11,15,4,6,4,16, 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,3,3,12,33, 11,14,3,6,4,17, + 11,13,11,5,11,2, 11,13,3,6,4,18, 11,12,12,3,3,35, 11,12,12,5,11,3, 11,12,3,6,4,19, 11,11,13,3,2,36, 11,11,13,5,11,4, 11,11,3,6,4,20, + 11,10,13,4,11,5, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,12,5,11,6, 11,9,3,6,4,22, 11,8,12,5,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, + 11,7,12,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,11,5,11,9, 11,6,4,4,11,9, 11,6,4,6,4,25, 11,5,11,5,11,10, 11,5,5,6,4,26, + 11,4,11,4,11,11, 11,4,11,5,11,11, 11,4,4,3,11,43, 11,4,4,6,4,27, 11,3,10,5,11,12, 11,3,4,6,4,28, 11,2,10,5,11,13, 11,2,4,6,4,29, + 11,1,11,3,4,46, 11,1,11,5,11,14, 11,1,4,4,11,14, 11,1,4,6,4,30, 11,0,11,1,4,47, 11,0,11,5,11,15, 11,0,10,1,5,47, 11,0,9,1,6,47, + 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,5,1,10,47, 11,0,5,6,4,31, 12,14,11,1,4,33, 12,14,11,3,4,33, 12,14,11,5,12,1, + 12,14,10,1,5,33, 12,14,10,3,5,33, 12,14,9,1,6,33, 12,14,9,3,6,33, 12,14,8,1,7,33, 12,14,8,3,7,33, 12,14,7,1,8,33, 12,14,7,3,8,33, + 12,14,6,1,9,33, 12,14,6,3,9,33, 12,14,5,1,10,33, 12,14,5,3,10,33, 12,14,4,1,11,33, 12,14,4,3,11,33, 12,14,3,1,12,33, 12,14,3,3,12,33, + 12,14,3,6,3,17, 12,13,11,1,4,34, 12,13,11,5,12,2, 12,13,10,1,5,34, 12,13,9,1,6,34, 12,13,8,1,7,34, 12,13,7,1,8,34, 12,13,6,1,9,34, + 12,13,5,1,10,34, 12,13,4,1,11,34, 12,13,3,1,12,34, 12,13,3,6,3,18, 12,12,12,1,3,35, 12,12,12,3,3,35, 12,12,12,5,12,3, 12,12,11,1,4,35, + 12,12,10,1,5,35, 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, 12,12,6,1,9,35, 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, + 12,12,3,6,3,19, 12,11,13,3,2,36, 12,11,13,5,12,4, 12,11,3,6,3,20, 12,10,13,4,12,5, 12,10,13,5,12,5, 12,10,3,6,3,21, 12,9,12,5,12,6, + 12,9,3,6,3,22, 12,8,12,5,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,6,11,5,12,9, + 12,6,4,4,12,9, 12,6,4,6,3,25, 12,5,11,5,12,10, 12,5,5,6,3,26, 12,4,11,4,12,11, 12,4,11,5,12,11, 12,4,4,3,11,43, 12,4,4,6,3,27, + 12,3,10,5,12,12, 12,3,4,6,3,28, 12,2,10,1,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, + 12,2,5,1,10,45, 12,2,4,1,11,45, 12,2,4,6,3,29, 12,1,11,1,4,46, 12,1,11,3,4,46, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,5,46, + 12,1,10,4,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, + 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,4,1,11,46, 12,1,4,4,12,14, 12,1,4,6,3,30, 13,11,13,1,2,36, 13,11,13,3,2,36, + 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, + 13,11,9,3,6,36, 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, + 13,11,5,3,10,36, 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, 13,11,3,3,12,36, 13,11,3,6,2,20, 13,10,13,1,2,37, 13,10,13,4,13,5, + 13,10,13,5,13,5, 13,10,12,1,3,37, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, 13,10,6,1,9,37, + 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,3,6,2,21, 13,9,12,5,13,6, 13,9,3,6,2,22, 13,8,12,5,13,7, 13,8,3,6,2,23, + 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, + 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, 13,7,3,4,13,8, 13,7,3,6,2,24, 13,6,11,1,4,41, 13,6,11,5,13,9, + 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,4,4,13,9, + 13,6,4,6,2,25, 13,5,11,5,13,10, 13,5,5,6,2,26, 13,4,11,4,13,11, 13,4,11,5,13,11, 13,4,4,3,11,43, 13,4,4,6,2,27, 13,3,10,1,5,44, + 13,3,10,4,13,12, 13,3,10,5,13,12, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, 13,3,7,4,13,12, + 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, 14,9,12,1,3,38, + 14,9,12,3,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,11,3,4,38, 14,9,10,1,5,38, 14,9,10,3,5,38, 14,9,9,1,6,38, 14,9,9,3,6,38, + 14,9,8,1,7,38, 14,9,8,3,7,38, 14,9,7,1,8,38, 14,9,7,3,8,38, 14,9,6,1,9,38, 14,9,6,3,9,38, 14,9,5,1,10,38, 14,9,5,3,10,38, + 14,9,4,1,11,38, 14,9,4,3,11,38, 14,9,3,1,12,38, 14,9,3,3,12,38, 14,9,3,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, + 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, + 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, + 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,3,6,1,23, 14,5,11,1,4,42, 14,5,11,3,4,42, 14,5,11,5,14,10, 14,5,10,1,5,42, 14,5,10,3,5,42, + 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, + 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,5,6,1,26, 14,4,11,1,4,43, 14,4,11,4,14,11, 14,4,11,5,14,11, 14,4,10,1,5,43, 14,4,10,4,14,11, + 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, + 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,3,11,43, 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + }, +} diff --git a/assets/voxels/channeler.lua b/assets/voxels/channeler.lua new file mode 100644 index 0000000..6f111ff --- /dev/null +++ b/assets/voxels/channeler.lua @@ -0,0 +1,267 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "channeler" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "channeler", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1776, + count = 982, + faces = { + 1,9,13,2,3,38, 1,9,13,3,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,12,3,4,38, 1,9,11,2,5,38, 1,9,11,3,5,38, 1,9,10,2,6,38, + 1,9,10,3,6,38, 1,9,9,2,7,38, 1,9,9,3,7,38, 1,9,8,2,8,38, 1,9,8,3,8,38, 1,9,7,2,9,38, 1,9,7,3,9,38, 1,9,6,2,10,38, + 1,9,6,3,10,38, 1,9,5,2,11,38, 1,9,5,3,11,38, 1,9,4,2,12,38, 1,9,4,3,12,38, 1,9,3,2,13,38, 1,9,3,3,13,38, 1,9,3,6,14,22, + 1,8,13,2,3,39, 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,11,2,5,39, 1,8,10,2,6,39, 1,8,9,2,7,39, 1,8,8,2,8,39, 1,8,7,2,9,39, + 1,8,6,2,10,39, 1,8,5,2,11,39, 1,8,4,2,12,39, 1,8,3,2,13,39, 1,8,3,6,14,23, 1,7,13,2,3,40, 1,7,13,4,1,8, 1,7,13,5,1,8, + 1,7,12,2,4,40, 1,7,11,2,5,40, 1,7,10,2,6,40, 1,7,9,2,7,40, 1,7,8,2,8,40, 1,7,7,2,9,40, 1,7,6,2,10,40, 1,7,5,2,11,40, + 1,7,4,2,12,40, 1,7,3,2,13,40, 1,7,3,6,14,24, 1,6,12,2,4,41, 1,6,12,5,1,9, 1,6,11,2,5,41, 1,6,10,2,6,41, 1,6,9,2,7,41, + 1,6,8,2,8,41, 1,6,7,2,9,41, 1,6,6,2,10,41, 1,6,5,2,11,41, 1,6,4,2,12,41, 1,6,3,2,13,41, 1,6,3,6,14,25, 1,5,12,2,4,42, + 1,5,12,5,1,10, 1,5,11,2,5,42, 1,5,10,2,6,42, 1,5,9,2,7,42, 1,5,8,2,8,42, 1,5,7,2,9,42, 1,5,6,2,10,42, 1,5,5,2,11,42, + 1,5,4,2,12,42, 1,5,3,2,13,42, 1,5,3,6,14,26, 1,4,13,2,3,43, 1,4,13,3,3,43, 1,4,13,5,1,11, 1,4,12,2,4,43, 1,4,11,2,5,43, + 1,4,10,2,6,43, 1,4,9,2,7,43, 1,4,8,2,8,43, 1,4,7,2,9,43, 1,4,6,2,10,43, 1,4,5,2,11,43, 1,4,4,2,12,43, 1,4,3,2,13,43, + 1,4,3,6,14,27, 1,3,13,2,3,44, 1,3,13,4,1,12, 1,3,13,5,1,12, 1,3,12,2,4,44, 1,3,12,4,1,12, 1,3,11,2,5,44, 1,3,11,4,1,12, + 1,3,10,2,6,44, 1,3,10,4,1,12, 1,3,9,2,7,44, 1,3,9,4,1,12, 1,3,8,2,8,44, 1,3,8,4,1,12, 1,3,7,2,9,44, 1,3,7,4,1,12, + 1,3,6,2,10,44, 1,3,6,4,1,12, 1,3,5,2,11,44, 1,3,5,4,1,12, 1,3,4,2,12,44, 1,3,4,4,1,12, 1,3,3,2,13,44, 1,3,3,4,1,12, + 1,3,3,6,14,28, 2,11,13,2,3,36, 2,11,13,3,3,36, 2,11,13,5,2,4, 2,11,12,2,4,36, 2,11,12,3,4,36, 2,11,11,2,5,36, 2,11,11,3,5,36, + 2,11,10,2,6,36, 2,11,10,3,6,36, 2,11,9,2,7,36, 2,11,9,3,7,36, 2,11,8,2,8,36, 2,11,8,3,8,36, 2,11,7,2,9,36, 2,11,7,3,9,36, + 2,11,6,2,10,36, 2,11,6,3,10,36, 2,11,5,2,11,36, 2,11,5,3,11,36, 2,11,4,2,12,36, 2,11,4,3,12,36, 2,11,4,6,13,20, 2,10,13,2,3,37, + 2,10,13,5,2,5, 2,10,12,2,4,37, 2,10,11,2,5,37, 2,10,10,2,6,37, 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, 2,10,6,2,10,37, + 2,10,5,2,11,37, 2,10,4,2,12,37, 2,10,3,2,13,37, 2,10,3,3,13,37, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,3,6,13,22, 2,8,13,5,2,7, + 2,8,3,6,13,23, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,3,6,13,24, 2,6,12,5,2,9, 2,6,3,6,13,25, 2,5,12,5,2,10, 2,5,3,6,13,26, + 2,4,13,3,3,43, 2,4,13,5,2,11, 2,4,3,6,13,27, 2,3,13,4,2,12, 2,3,13,5,2,12, 2,3,12,4,2,12, 2,3,11,4,2,12, 2,3,10,4,2,12, + 2,3,9,4,2,12, 2,3,8,4,2,12, 2,3,7,4,2,12, 2,3,6,4,2,12, 2,3,5,4,2,12, 2,3,4,4,2,12, 2,3,3,4,2,12, 2,3,3,6,13,28, + 2,1,12,2,4,46, 2,1,12,3,4,46, 2,1,12,4,2,14, 2,1,12,5,2,14, 2,1,11,2,5,46, 2,1,11,3,5,46, 2,1,11,4,2,14, 2,1,10,2,6,46, + 2,1,10,3,6,46, 2,1,10,4,2,14, 2,1,9,2,7,46, 2,1,9,3,7,46, 2,1,9,4,2,14, 2,1,8,2,8,46, 2,1,8,3,8,46, 2,1,8,4,2,14, + 2,1,7,2,9,46, 2,1,7,3,9,46, 2,1,7,4,2,14, 2,1,6,2,10,46, 2,1,6,3,10,46, 2,1,6,4,2,14, 2,1,5,2,11,46, 2,1,5,3,11,46, + 2,1,5,4,2,14, 2,1,4,2,12,46, 2,1,4,3,12,46, 2,1,4,4,2,14, 2,1,4,6,13,30, 3,12,13,2,3,35, 3,12,13,3,3,35, 3,12,13,5,3,3, + 3,12,12,2,4,35, 3,12,12,3,4,35, 3,12,11,2,5,35, 3,12,11,3,5,35, 3,12,10,2,6,35, 3,12,10,3,6,35, 3,12,9,2,7,35, 3,12,9,3,7,35, + 3,12,8,2,8,35, 3,12,8,3,8,35, 3,12,7,2,9,35, 3,12,7,3,9,35, 3,12,6,2,10,35, 3,12,6,3,10,35, 3,12,5,2,11,35, 3,12,5,3,11,35, + 3,12,4,2,12,35, 3,12,4,3,12,35, 3,12,4,6,12,19, 3,11,13,5,3,4, 3,11,4,6,12,20, 3,10,13,5,3,5, 3,10,3,3,13,37, 3,10,3,6,12,21, + 3,9,13,5,3,6, 3,9,3,6,12,22, 3,8,13,5,3,7, 3,8,3,6,12,23, 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,3,6,12,24, 3,6,12,5,3,9, + 3,6,3,6,12,25, 3,5,12,5,3,10, 3,5,3,6,12,26, 3,4,13,3,3,43, 3,4,13,5,3,11, 3,4,3,6,12,27, 3,3,13,4,3,12, 3,3,13,5,3,12, + 3,3,4,4,3,12, 3,3,3,4,3,12, 3,3,3,6,12,28, 3,2,12,2,4,45, 3,2,12,5,3,13, 3,2,11,2,5,45, 3,2,10,2,6,45, 3,2,9,2,7,45, + 3,2,8,2,8,45, 3,2,7,2,9,45, 3,2,6,2,10,45, 3,2,5,2,11,45, 3,2,5,6,12,29, 3,1,12,4,3,14, 3,1,12,5,3,14, 3,1,4,3,12,46, + 3,1,4,4,3,14, 3,1,4,6,12,30, 3,0,11,2,5,47, 3,0,11,5,3,15, 3,0,10,2,6,47, 3,0,9,2,7,47, 3,0,8,2,8,47, 3,0,7,2,9,47, + 3,0,6,2,10,47, 3,0,5,2,11,47, 3,0,5,6,12,31, 4,13,12,2,4,34, 4,13,12,3,4,34, 4,13,12,5,4,2, 4,13,11,2,5,34, 4,13,11,3,5,34, + 4,13,10,2,6,34, 4,13,10,3,6,34, 4,13,9,2,7,34, 4,13,9,3,7,34, 4,13,8,2,8,34, 4,13,8,3,8,34, 4,13,7,2,9,34, 4,13,7,3,9,34, + 4,13,6,2,10,34, 4,13,6,3,10,34, 4,13,5,2,11,34, 4,13,5,3,11,34, 4,13,5,6,11,18, 4,12,13,3,3,35, 4,12,13,5,4,3, 4,12,4,3,12,35, + 4,12,4,6,11,19, 4,11,13,5,4,4, 4,11,4,6,11,20, 4,10,13,5,4,5, 4,10,3,3,13,37, 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,6,11,22, + 4,8,13,5,4,7, 4,8,3,6,11,23, 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,3,6,11,24, 4,6,12,5,4,9, 4,6,3,6,11,25, 4,5,12,5,4,10, + 4,5,3,6,11,26, 4,4,13,3,3,43, 4,4,13,5,4,11, 4,4,3,6,11,27, 4,3,13,4,4,12, 4,3,13,5,4,12, 4,3,4,4,4,12, 4,3,3,4,4,12, + 4,3,3,6,11,28, 4,2,12,5,4,13, 4,2,5,6,11,29, 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,4,3,12,46, 4,1,4,4,4,14, 4,1,4,6,11,30, + 4,0,11,5,4,15, 4,0,5,6,11,31, 5,14,11,2,5,33, 5,14,11,3,5,33, 5,14,11,5,5,1, 5,14,10,2,6,33, 5,14,10,3,6,33, 5,14,9,2,7,33, + 5,14,9,3,7,33, 5,14,8,2,8,33, 5,14,8,3,8,33, 5,14,7,2,9,33, 5,14,7,3,9,33, 5,14,6,2,10,33, 5,14,6,3,10,33, 5,14,6,6,10,17, + 5,13,12,3,4,34, 5,13,12,5,5,2, 5,13,5,3,11,34, 5,13,5,6,10,18, 5,12,13,3,3,35, 5,12,13,5,5,3, 5,12,4,3,12,35, 5,12,4,6,10,19, + 5,11,13,5,5,4, 5,11,4,6,10,20, 5,10,13,5,5,5, 5,10,3,3,13,37, 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,3,6,10,22, 5,8,13,5,5,7, + 5,8,3,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,3,6,10,24, 5,6,12,5,5,9, 5,6,3,6,10,25, 5,5,12,5,5,10, 5,5,3,6,10,26, + 5,4,13,3,3,43, 5,4,13,5,5,11, 5,4,3,6,10,27, 5,3,13,4,5,12, 5,3,13,5,5,12, 5,3,4,4,5,12, 5,3,3,4,5,12, 5,3,3,6,10,28, + 5,2,12,5,5,13, 5,2,5,6,10,29, 5,1,12,4,5,14, 5,1,12,5,5,14, 5,1,4,3,12,46, 5,1,4,4,5,14, 5,1,4,6,10,30, 5,0,11,5,5,15, + 5,0,5,6,10,31, 6,15,10,2,6,32, 6,15,10,3,6,32, 6,15,10,5,6,0, 6,15,9,2,7,32, 6,15,9,3,7,32, 6,15,8,2,8,32, 6,15,8,3,8,32, + 6,15,7,2,9,32, 6,15,7,3,9,32, 6,15,7,6,9,16, 6,14,11,3,5,33, 6,14,11,5,6,1, 6,14,6,3,10,33, 6,14,6,6,9,17, 6,13,12,3,4,34, + 6,13,12,5,6,2, 6,13,5,3,11,34, 6,13,5,6,9,18, 6,12,13,3,3,35, 6,12,13,5,6,3, 6,12,4,3,12,35, 6,12,4,6,9,19, 6,11,13,5,6,4, + 6,11,4,6,9,20, 6,10,13,5,6,5, 6,10,3,3,13,37, 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,3,6,9,22, 6,8,13,5,6,7, 6,8,3,6,9,23, + 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,3,6,9,24, 6,6,12,5,6,9, 6,6,3,6,9,25, 6,5,12,5,6,10, 6,5,3,6,9,26, 6,4,13,3,3,43, + 6,4,13,5,6,11, 6,4,3,6,9,27, 6,3,13,4,6,12, 6,3,13,5,6,12, 6,3,4,4,6,12, 6,3,3,4,6,12, 6,3,3,6,9,28, 6,2,12,5,6,13, + 6,2,5,6,9,29, 6,1,12,4,6,14, 6,1,12,5,6,14, 6,1,4,3,12,46, 6,1,4,4,6,14, 6,1,4,6,9,30, 6,0,11,5,6,15, 6,0,5,6,9,31, + 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, 7,15,7,6,8,16, 7,14,11,3,5,33, 7,14,11,5,7,1, + 7,14,6,3,10,33, 7,14,6,6,8,17, 7,13,12,3,4,34, 7,13,12,5,7,2, 7,13,5,3,11,34, 7,13,5,6,8,18, 7,12,13,3,3,35, 7,12,13,5,7,3, + 7,12,4,3,12,35, 7,12,4,6,8,19, 7,11,13,5,7,4, 7,11,4,6,8,20, 7,10,13,5,7,5, 7,10,3,3,13,37, 7,10,3,6,8,21, 7,9,13,5,7,6, + 7,9,3,6,8,22, 7,8,13,5,7,7, 7,8,3,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,3,6,8,24, 7,6,12,5,7,9, 7,6,3,6,8,25, + 7,5,12,5,7,10, 7,5,3,6,8,26, 7,4,13,3,3,43, 7,4,13,5,7,11, 7,4,3,6,8,27, 7,3,13,4,7,12, 7,3,13,5,7,12, 7,3,4,4,7,12, + 7,3,3,4,7,12, 7,3,3,6,8,28, 7,2,12,5,7,13, 7,2,5,6,8,29, 7,1,12,4,7,14, 7,1,12,5,7,14, 7,1,4,3,12,46, 7,1,4,4,7,14, + 7,1,4,6,8,30, 7,0,11,5,7,15, 7,0,5,6,8,31, 8,15,10,3,6,32, 8,15,10,5,8,0, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, + 8,15,7,6,7,16, 8,14,11,3,5,33, 8,14,11,5,8,1, 8,14,6,3,10,33, 8,14,6,6,7,17, 8,13,12,3,4,34, 8,13,12,5,8,2, 8,13,5,3,11,34, + 8,13,5,6,7,18, 8,12,13,3,3,35, 8,12,13,5,8,3, 8,12,4,3,12,35, 8,12,4,6,7,19, 8,11,13,5,8,4, 8,11,4,6,7,20, 8,10,13,5,8,5, + 8,10,3,3,13,37, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,6,7,22, 8,8,13,5,8,7, 8,8,3,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, + 8,7,3,6,7,24, 8,6,12,5,8,9, 8,6,3,6,7,25, 8,5,12,5,8,10, 8,5,3,6,7,26, 8,4,13,3,3,43, 8,4,13,5,8,11, 8,4,3,6,7,27, + 8,3,13,4,8,12, 8,3,13,5,8,12, 8,3,4,4,8,12, 8,3,3,4,8,12, 8,3,3,6,7,28, 8,2,12,5,8,13, 8,2,5,6,7,29, 8,1,12,4,8,14, + 8,1,12,5,8,14, 8,1,4,3,12,46, 8,1,4,4,8,14, 8,1,4,6,7,30, 8,0,11,5,8,15, 8,0,5,6,7,31, 9,15,10,1,6,32, 9,15,10,3,6,32, + 9,15,10,5,9,0, 9,15,9,1,7,32, 9,15,9,3,7,32, 9,15,8,1,8,32, 9,15,8,3,8,32, 9,15,7,1,9,32, 9,15,7,3,9,32, 9,15,7,6,6,16, + 9,14,11,3,5,33, 9,14,11,5,9,1, 9,14,6,3,10,33, 9,14,6,6,6,17, 9,13,12,3,4,34, 9,13,12,5,9,2, 9,13,5,3,11,34, 9,13,5,6,6,18, + 9,12,13,3,3,35, 9,12,13,5,9,3, 9,12,4,3,12,35, 9,12,4,6,6,19, 9,11,13,5,9,4, 9,11,4,6,6,20, 9,10,13,5,9,5, 9,10,3,3,13,37, + 9,10,3,6,6,21, 9,9,13,5,9,6, 9,9,3,6,6,22, 9,8,13,5,9,7, 9,8,3,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,3,6,6,24, + 9,6,12,5,9,9, 9,6,3,6,6,25, 9,5,12,5,9,10, 9,5,3,6,6,26, 9,4,13,3,3,43, 9,4,13,5,9,11, 9,4,3,6,6,27, 9,3,13,4,9,12, + 9,3,13,5,9,12, 9,3,4,4,9,12, 9,3,3,4,9,12, 9,3,3,6,6,28, 9,2,12,5,9,13, 9,2,5,6,6,29, 9,1,12,4,9,14, 9,1,12,5,9,14, + 9,1,4,3,12,46, 9,1,4,4,9,14, 9,1,4,6,6,30, 9,0,11,5,9,15, 9,0,5,6,6,31, 10,14,11,1,5,33, 10,14,11,3,5,33, 10,14,11,5,10,1, + 10,14,10,1,6,33, 10,14,10,3,6,33, 10,14,9,1,7,33, 10,14,9,3,7,33, 10,14,8,1,8,33, 10,14,8,3,8,33, 10,14,7,1,9,33, 10,14,7,3,9,33, + 10,14,6,1,10,33, 10,14,6,3,10,33, 10,14,6,6,5,17, 10,13,12,3,4,34, 10,13,12,5,10,2, 10,13,5,3,11,34, 10,13,5,6,5,18, 10,12,13,3,3,35, + 10,12,13,5,10,3, 10,12,4,3,12,35, 10,12,4,6,5,19, 10,11,13,5,10,4, 10,11,4,6,5,20, 10,10,13,5,10,5, 10,10,3,3,13,37, 10,10,3,6,5,21, + 10,9,13,5,10,6, 10,9,3,6,5,22, 10,8,13,5,10,7, 10,8,3,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,3,6,5,24, 10,6,12,5,10,9, + 10,6,3,6,5,25, 10,5,12,5,10,10, 10,5,3,6,5,26, 10,4,13,3,3,43, 10,4,13,5,10,11, 10,4,3,6,5,27, 10,3,13,4,10,12, 10,3,13,5,10,12, + 10,3,4,4,10,12, 10,3,3,4,10,12, 10,3,3,6,5,28, 10,2,12,5,10,13, 10,2,5,6,5,29, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,4,3,12,46, + 10,1,4,4,10,14, 10,1,4,6,5,30, 10,0,11,5,10,15, 10,0,5,6,5,31, 11,13,12,1,4,34, 11,13,12,3,4,34, 11,13,12,5,11,2, 11,13,11,1,5,34, + 11,13,11,3,5,34, 11,13,10,1,6,34, 11,13,10,3,6,34, 11,13,9,1,7,34, 11,13,9,3,7,34, 11,13,8,1,8,34, 11,13,8,3,8,34, 11,13,7,1,9,34, + 11,13,7,3,9,34, 11,13,6,1,10,34, 11,13,6,3,10,34, 11,13,5,1,11,34, 11,13,5,3,11,34, 11,13,5,6,4,18, 11,12,13,3,3,35, 11,12,13,5,11,3, + 11,12,4,3,12,35, 11,12,4,6,4,19, 11,11,13,5,11,4, 11,11,4,6,4,20, 11,10,13,5,11,5, 11,10,3,3,13,37, 11,10,3,6,4,21, 11,9,13,5,11,6, + 11,9,3,6,4,22, 11,8,13,5,11,7, 11,8,3,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,3,6,4,24, 11,6,12,5,11,9, 11,6,3,6,4,25, + 11,5,12,5,11,10, 11,5,3,6,4,26, 11,4,13,3,3,43, 11,4,13,5,11,11, 11,4,3,6,4,27, 11,3,13,4,11,12, 11,3,13,5,11,12, 11,3,4,4,11,12, + 11,3,3,4,11,12, 11,3,3,6,4,28, 11,2,12,5,11,13, 11,2,5,6,4,29, 11,1,12,4,11,14, 11,1,12,5,11,14, 11,1,4,3,12,46, 11,1,4,4,11,14, + 11,1,4,6,4,30, 11,0,11,5,11,15, 11,0,5,6,4,31, 12,12,13,1,3,35, 12,12,13,3,3,35, 12,12,13,5,12,3, 12,12,12,1,4,35, 12,12,12,3,4,35, + 12,12,11,1,5,35, 12,12,11,3,5,35, 12,12,10,1,6,35, 12,12,10,3,6,35, 12,12,9,1,7,35, 12,12,9,3,7,35, 12,12,8,1,8,35, 12,12,8,3,8,35, + 12,12,7,1,9,35, 12,12,7,3,9,35, 12,12,6,1,10,35, 12,12,6,3,10,35, 12,12,5,1,11,35, 12,12,5,3,11,35, 12,12,4,1,12,35, 12,12,4,3,12,35, + 12,12,4,6,3,19, 12,11,13,5,12,4, 12,11,4,6,3,20, 12,10,13,5,12,5, 12,10,3,3,13,37, 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,3,6,3,22, + 12,8,13,5,12,7, 12,8,3,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,3,6,3,24, 12,6,12,5,12,9, 12,6,3,6,3,25, 12,5,12,5,12,10, + 12,5,3,6,3,26, 12,4,13,3,3,43, 12,4,13,5,12,11, 12,4,3,6,3,27, 12,3,13,4,12,12, 12,3,13,5,12,12, 12,3,4,4,12,12, 12,3,3,4,12,12, + 12,3,3,6,3,28, 12,2,12,1,4,45, 12,2,12,5,12,13, 12,2,11,1,5,45, 12,2,10,1,6,45, 12,2,9,1,7,45, 12,2,8,1,8,45, 12,2,7,1,9,45, + 12,2,6,1,10,45, 12,2,5,1,11,45, 12,2,5,6,3,29, 12,1,12,4,12,14, 12,1,12,5,12,14, 12,1,4,3,12,46, 12,1,4,4,12,14, 12,1,4,6,3,30, + 12,0,11,1,5,47, 12,0,11,5,12,15, 12,0,10,1,6,47, 12,0,9,1,7,47, 12,0,8,1,8,47, 12,0,7,1,9,47, 12,0,6,1,10,47, 12,0,5,1,11,47, + 12,0,5,6,3,31, 13,11,13,1,3,36, 13,11,13,3,3,36, 13,11,13,5,13,4, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, 13,11,11,3,5,36, + 13,11,10,1,6,36, 13,11,10,3,6,36, 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, 13,11,7,3,9,36, + 13,11,6,1,10,36, 13,11,6,3,10,36, 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,4,6,2,20, 13,10,13,1,3,37, + 13,10,13,5,13,5, 13,10,12,1,4,37, 13,10,11,1,5,37, 13,10,10,1,6,37, 13,10,9,1,7,37, 13,10,8,1,8,37, 13,10,7,1,9,37, 13,10,6,1,10,37, + 13,10,5,1,11,37, 13,10,4,1,12,37, 13,10,3,1,13,37, 13,10,3,3,13,37, 13,10,3,6,2,21, 13,9,13,5,13,6, 13,9,3,6,2,22, 13,8,13,5,13,7, + 13,8,3,6,2,23, 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,3,6,2,24, 13,6,12,5,13,9, 13,6,3,6,2,25, 13,5,12,5,13,10, 13,5,3,6,2,26, + 13,4,13,3,3,43, 13,4,13,5,13,11, 13,4,3,6,2,27, 13,3,13,4,13,12, 13,3,13,5,13,12, 13,3,12,4,13,12, 13,3,11,4,13,12, 13,3,10,4,13,12, + 13,3,9,4,13,12, 13,3,8,4,13,12, 13,3,7,4,13,12, 13,3,6,4,13,12, 13,3,5,4,13,12, 13,3,4,4,13,12, 13,3,3,4,13,12, 13,3,3,6,2,28, + 13,1,12,1,4,46, 13,1,12,3,4,46, 13,1,12,4,13,14, 13,1,12,5,13,14, 13,1,11,1,5,46, 13,1,11,3,5,46, 13,1,11,4,13,14, 13,1,10,1,6,46, + 13,1,10,3,6,46, 13,1,10,4,13,14, 13,1,9,1,7,46, 13,1,9,3,7,46, 13,1,9,4,13,14, 13,1,8,1,8,46, 13,1,8,3,8,46, 13,1,8,4,13,14, + 13,1,7,1,9,46, 13,1,7,3,9,46, 13,1,7,4,13,14, 13,1,6,1,10,46, 13,1,6,3,10,46, 13,1,6,4,13,14, 13,1,5,1,11,46, 13,1,5,3,11,46, + 13,1,5,4,13,14, 13,1,4,1,12,46, 13,1,4,3,12,46, 13,1,4,4,13,14, 13,1,4,6,2,30, 14,9,13,1,3,38, 14,9,13,3,3,38, 14,9,13,5,14,6, + 14,9,12,1,4,38, 14,9,12,3,4,38, 14,9,11,1,5,38, 14,9,11,3,5,38, 14,9,10,1,6,38, 14,9,10,3,6,38, 14,9,9,1,7,38, 14,9,9,3,7,38, + 14,9,8,1,8,38, 14,9,8,3,8,38, 14,9,7,1,9,38, 14,9,7,3,9,38, 14,9,6,1,10,38, 14,9,6,3,10,38, 14,9,5,1,11,38, 14,9,5,3,11,38, + 14,9,4,1,12,38, 14,9,4,3,12,38, 14,9,3,1,13,38, 14,9,3,3,13,38, 14,9,3,6,1,22, 14,8,13,1,3,39, 14,8,13,5,14,7, 14,8,12,1,4,39, + 14,8,11,1,5,39, 14,8,10,1,6,39, 14,8,9,1,7,39, 14,8,8,1,8,39, 14,8,7,1,9,39, 14,8,6,1,10,39, 14,8,5,1,11,39, 14,8,4,1,12,39, + 14,8,3,1,13,39, 14,8,3,6,1,23, 14,7,13,1,3,40, 14,7,13,4,14,8, 14,7,13,5,14,8, 14,7,12,1,4,40, 14,7,11,1,5,40, 14,7,10,1,6,40, + 14,7,9,1,7,40, 14,7,8,1,8,40, 14,7,7,1,9,40, 14,7,6,1,10,40, 14,7,5,1,11,40, 14,7,4,1,12,40, 14,7,3,1,13,40, 14,7,3,6,1,24, + 14,6,12,1,4,41, 14,6,12,5,14,9, 14,6,11,1,5,41, 14,6,10,1,6,41, 14,6,9,1,7,41, 14,6,8,1,8,41, 14,6,7,1,9,41, 14,6,6,1,10,41, + 14,6,5,1,11,41, 14,6,4,1,12,41, 14,6,3,1,13,41, 14,6,3,6,1,25, 14,5,12,1,4,42, 14,5,12,5,14,10, 14,5,11,1,5,42, 14,5,10,1,6,42, + 14,5,9,1,7,42, 14,5,8,1,8,42, 14,5,7,1,9,42, 14,5,6,1,10,42, 14,5,5,1,11,42, 14,5,4,1,12,42, 14,5,3,1,13,42, 14,5,3,6,1,26, + 14,4,13,1,3,43, 14,4,13,3,3,43, 14,4,13,5,14,11, 14,4,12,1,4,43, 14,4,11,1,5,43, 14,4,10,1,6,43, 14,4,9,1,7,43, 14,4,8,1,8,43, + 14,4,7,1,9,43, 14,4,6,1,10,43, 14,4,5,1,11,43, 14,4,4,1,12,43, 14,4,3,1,13,43, 14,4,3,6,1,27, 14,3,13,1,3,44, 14,3,13,4,14,12, + 14,3,13,5,14,12, 14,3,12,1,4,44, 14,3,12,4,14,12, 14,3,11,1,5,44, 14,3,11,4,14,12, 14,3,10,1,6,44, 14,3,10,4,14,12, 14,3,9,1,7,44, + 14,3,9,4,14,12, 14,3,8,1,8,44, 14,3,8,4,14,12, 14,3,7,1,9,44, 14,3,7,4,14,12, 14,3,6,1,10,44, 14,3,6,4,14,12, 14,3,5,1,11,44, + 14,3,5,4,14,12, 14,3,4,1,12,44, 14,3,4,4,14,12, 14,3,3,1,13,44, 14,3,3,4,14,12, 14,3,3,6,1,28, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1696, + count = 890, + faces = { + 1,8,13,2,3,87, 1,8,13,3,3,87, 1,8,13,5,1,55, 1,8,12,2,4,87, 1,8,12,3,4,87, 1,8,11,2,5,87, 1,8,11,3,5,87, 1,8,10,2,6,87, + 1,8,10,3,6,87, 1,8,9,2,7,87, 1,8,9,3,7,87, 1,8,8,2,8,87, 1,8,8,3,8,87, 1,8,7,2,9,87, 1,8,7,3,9,87, 1,8,6,2,10,87, + 1,8,6,3,10,87, 1,8,5,2,11,87, 1,8,5,3,11,87, 1,8,4,2,12,87, 1,8,4,3,12,87, 1,8,3,2,13,87, 1,8,3,3,13,87, 1,8,3,6,14,71, + 1,7,13,2,3,88, 1,7,13,5,1,56, 1,7,12,2,4,88, 1,7,11,2,5,88, 1,7,10,2,6,88, 1,7,9,2,7,88, 1,7,8,2,8,88, 1,7,7,2,9,88, + 1,7,6,2,10,88, 1,7,5,2,11,88, 1,7,4,2,12,88, 1,7,3,2,13,88, 1,7,3,6,14,72, 1,6,13,2,3,89, 1,6,13,4,1,57, 1,6,13,5,1,57, + 1,6,12,2,4,89, 1,6,11,2,5,89, 1,6,10,2,6,89, 1,6,9,2,7,89, 1,6,8,2,8,89, 1,6,7,2,9,89, 1,6,6,2,10,89, 1,6,5,2,11,89, + 1,6,4,2,12,89, 1,6,3,2,13,89, 1,6,3,6,14,73, 1,5,12,2,4,90, 1,5,12,5,1,58, 1,5,11,2,5,90, 1,5,10,2,6,90, 1,5,9,2,7,90, + 1,5,8,2,8,90, 1,5,7,2,9,90, 1,5,6,2,10,90, 1,5,5,2,11,90, 1,5,4,2,12,90, 1,5,3,2,13,90, 1,5,3,6,14,74, 1,4,12,2,4,91, + 1,4,12,5,1,59, 1,4,11,2,5,91, 1,4,10,2,6,91, 1,4,9,2,7,91, 1,4,8,2,8,91, 1,4,7,2,9,91, 1,4,6,2,10,91, 1,4,5,2,11,91, + 1,4,4,2,12,91, 1,4,3,2,13,91, 1,4,3,6,14,75, 1,3,13,2,3,92, 1,3,13,3,3,92, 1,3,13,5,1,60, 1,3,12,2,4,92, 1,3,11,2,5,92, + 1,3,10,2,6,92, 1,3,9,2,7,92, 1,3,8,2,8,92, 1,3,7,2,9,92, 1,3,6,2,10,92, 1,3,5,2,11,92, 1,3,4,2,12,92, 1,3,3,2,13,92, + 1,3,3,6,14,76, 1,2,13,2,3,93, 1,2,13,4,1,61, 1,2,13,5,1,61, 1,2,12,2,4,93, 1,2,12,4,1,61, 1,2,11,2,5,93, 1,2,11,4,1,61, + 1,2,10,2,6,93, 1,2,10,4,1,61, 1,2,9,2,7,93, 1,2,9,4,1,61, 1,2,8,2,8,93, 1,2,8,4,1,61, 1,2,7,2,9,93, 1,2,7,4,1,61, + 1,2,6,2,10,93, 1,2,6,4,1,61, 1,2,5,2,11,93, 1,2,5,4,1,61, 1,2,4,2,12,93, 1,2,4,4,1,61, 1,2,3,2,13,93, 1,2,3,4,1,61, + 1,2,3,6,14,77, 2,10,13,2,3,85, 2,10,13,3,3,85, 2,10,13,5,2,53, 2,10,12,2,4,85, 2,10,12,3,4,85, 2,10,11,2,5,85, 2,10,11,3,5,85, + 2,10,10,2,6,85, 2,10,10,3,6,85, 2,10,9,2,7,85, 2,10,9,3,7,85, 2,10,8,2,8,85, 2,10,8,3,8,85, 2,10,7,2,9,85, 2,10,7,3,9,85, + 2,10,6,2,10,85, 2,10,6,3,10,85, 2,10,5,2,11,85, 2,10,5,3,11,85, 2,10,4,2,12,85, 2,10,4,3,12,85, 2,10,4,6,13,69, 2,9,13,2,3,86, + 2,9,13,5,2,54, 2,9,12,2,4,86, 2,9,11,2,5,86, 2,9,10,2,6,86, 2,9,9,2,7,86, 2,9,8,2,8,86, 2,9,7,2,9,86, 2,9,6,2,10,86, + 2,9,5,2,11,86, 2,9,4,2,12,86, 2,9,3,2,13,86, 2,9,3,3,13,86, 2,9,3,6,13,70, 2,8,13,5,2,55, 2,8,3,6,13,71, 2,7,13,5,2,56, + 2,7,3,6,13,72, 2,6,13,4,2,57, 2,6,13,5,2,57, 2,6,3,6,13,73, 2,5,12,5,2,58, 2,5,3,6,13,74, 2,4,12,5,2,59, 2,4,3,6,13,75, + 2,3,13,3,3,92, 2,3,13,5,2,60, 2,3,3,6,13,76, 2,2,13,4,2,61, 2,2,13,5,2,61, 2,2,3,4,2,61, 2,2,3,6,13,77, 2,1,12,2,4,94, + 2,1,12,4,2,62, 2,1,12,5,2,62, 2,1,11,2,5,94, 2,1,11,4,2,62, 2,1,10,2,6,94, 2,1,10,4,2,62, 2,1,9,2,7,94, 2,1,9,4,2,62, + 2,1,8,2,8,94, 2,1,8,4,2,62, 2,1,7,2,9,94, 2,1,7,4,2,62, 2,1,6,2,10,94, 2,1,6,4,2,62, 2,1,5,2,11,94, 2,1,5,4,2,62, + 2,1,4,2,12,94, 2,1,4,4,2,62, 2,1,4,6,13,78, 3,11,13,2,3,84, 3,11,13,3,3,84, 3,11,13,5,3,52, 3,11,12,2,4,84, 3,11,12,3,4,84, + 3,11,11,2,5,84, 3,11,11,3,5,84, 3,11,10,2,6,84, 3,11,10,3,6,84, 3,11,9,2,7,84, 3,11,9,3,7,84, 3,11,8,2,8,84, 3,11,8,3,8,84, + 3,11,7,2,9,84, 3,11,7,3,9,84, 3,11,6,2,10,84, 3,11,6,3,10,84, 3,11,5,2,11,84, 3,11,5,3,11,84, 3,11,4,2,12,84, 3,11,4,3,12,84, + 3,11,4,6,12,68, 3,10,13,5,3,53, 3,10,4,6,12,69, 3,9,13,5,3,54, 3,9,3,3,13,86, 3,9,3,6,12,70, 3,8,13,5,3,55, 3,8,3,6,12,71, + 3,7,13,5,3,56, 3,7,3,6,12,72, 3,6,13,4,3,57, 3,6,13,5,3,57, 3,6,3,6,12,73, 3,5,12,5,3,58, 3,5,3,6,12,74, 3,4,12,5,3,59, + 3,4,3,6,12,75, 3,3,13,3,3,92, 3,3,13,5,3,60, 3,3,3,6,12,76, 3,2,13,4,3,61, 3,2,13,5,3,61, 3,2,3,4,3,61, 3,2,3,6,12,77, + 3,1,12,4,3,62, 3,1,12,5,3,62, 3,1,4,4,3,62, 3,1,4,6,12,78, 3,0,11,2,5,95, 3,0,11,5,3,63, 3,0,10,2,6,95, 3,0,9,2,7,95, + 3,0,8,2,8,95, 3,0,7,2,9,95, 3,0,6,2,10,95, 3,0,5,2,11,95, 3,0,5,6,12,79, 4,12,12,2,4,83, 4,12,12,3,4,83, 4,12,12,5,4,51, + 4,12,11,2,5,83, 4,12,11,3,5,83, 4,12,10,2,6,83, 4,12,10,3,6,83, 4,12,9,2,7,83, 4,12,9,3,7,83, 4,12,8,2,8,83, 4,12,8,3,8,83, + 4,12,7,2,9,83, 4,12,7,3,9,83, 4,12,6,2,10,83, 4,12,6,3,10,83, 4,12,5,2,11,83, 4,12,5,3,11,83, 4,12,5,6,11,67, 4,11,13,3,3,84, + 4,11,13,5,4,52, 4,11,4,3,12,84, 4,11,4,6,11,68, 4,10,13,5,4,53, 4,10,4,6,11,69, 4,9,13,5,4,54, 4,9,3,3,13,86, 4,9,3,6,11,70, + 4,8,13,5,4,55, 4,8,3,6,11,71, 4,7,13,5,4,56, 4,7,3,6,11,72, 4,6,13,4,4,57, 4,6,13,5,4,57, 4,6,3,6,11,73, 4,5,12,5,4,58, + 4,5,3,6,11,74, 4,4,12,5,4,59, 4,4,3,6,11,75, 4,3,13,3,3,92, 4,3,13,5,4,60, 4,3,3,6,11,76, 4,2,13,4,4,61, 4,2,13,5,4,61, + 4,2,3,4,4,61, 4,2,3,6,11,77, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,4,4,4,62, 4,1,4,6,11,78, 4,0,11,5,4,63, 4,0,5,6,11,79, + 5,13,11,2,5,82, 5,13,11,3,5,82, 5,13,11,5,5,50, 5,13,10,2,6,82, 5,13,10,3,6,82, 5,13,9,2,7,82, 5,13,9,3,7,82, 5,13,8,2,8,82, + 5,13,8,3,8,82, 5,13,7,2,9,82, 5,13,7,3,9,82, 5,13,6,2,10,82, 5,13,6,3,10,82, 5,13,6,6,10,66, 5,12,12,3,4,83, 5,12,12,5,5,51, + 5,12,5,3,11,83, 5,12,5,6,10,67, 5,11,13,3,3,84, 5,11,13,5,5,52, 5,11,4,3,12,84, 5,11,4,6,10,68, 5,10,13,5,5,53, 5,10,4,6,10,69, + 5,9,13,5,5,54, 5,9,3,3,13,86, 5,9,3,6,10,70, 5,8,13,5,5,55, 5,8,3,6,10,71, 5,7,13,5,5,56, 5,7,3,6,10,72, 5,6,13,4,5,57, + 5,6,13,5,5,57, 5,6,3,6,10,73, 5,5,12,5,5,58, 5,5,3,6,10,74, 5,4,12,5,5,59, 5,4,3,6,10,75, 5,3,13,3,3,92, 5,3,13,5,5,60, + 5,3,3,6,10,76, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,3,4,5,61, 5,2,3,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,4,4,5,62, + 5,1,4,6,10,78, 5,0,11,5,5,63, 5,0,5,6,10,79, 6,14,10,2,6,81, 6,14,10,3,6,81, 6,14,10,5,6,49, 6,14,9,2,7,81, 6,14,9,3,7,81, + 6,14,8,2,8,81, 6,14,8,3,8,81, 6,14,7,2,9,81, 6,14,7,3,9,81, 6,14,7,6,9,65, 6,13,11,3,5,82, 6,13,11,5,6,50, 6,13,6,3,10,82, + 6,13,6,6,9,66, 6,12,12,3,4,83, 6,12,12,5,6,51, 6,12,5,3,11,83, 6,12,5,6,9,67, 6,11,13,3,3,84, 6,11,13,5,6,52, 6,11,4,3,12,84, + 6,11,4,6,9,68, 6,10,13,5,6,53, 6,10,4,6,9,69, 6,9,13,5,6,54, 6,9,3,3,13,86, 6,9,3,6,9,70, 6,8,13,5,6,55, 6,8,3,6,9,71, + 6,7,13,5,6,56, 6,7,3,6,9,72, 6,6,13,4,6,57, 6,6,13,5,6,57, 6,6,3,6,9,73, 6,5,12,5,6,58, 6,5,3,6,9,74, 6,4,12,5,6,59, + 6,4,3,6,9,75, 6,3,13,3,3,92, 6,3,13,5,6,60, 6,3,3,6,9,76, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,3,4,6,61, 6,2,3,6,9,77, + 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,4,4,6,62, 6,1,4,6,9,78, 6,0,11,5,6,63, 6,0,5,6,9,79, 7,14,10,3,6,81, 7,14,10,5,7,49, + 7,14,9,3,7,81, 7,14,8,3,8,81, 7,14,7,3,9,81, 7,14,7,6,8,65, 7,13,11,3,5,82, 7,13,11,5,7,50, 7,13,6,3,10,82, 7,13,6,6,8,66, + 7,12,12,3,4,83, 7,12,12,5,7,51, 7,12,5,3,11,83, 7,12,5,6,8,67, 7,11,13,3,3,84, 7,11,13,5,7,52, 7,11,4,3,12,84, 7,11,4,6,8,68, + 7,10,13,5,7,53, 7,10,4,6,8,69, 7,9,13,5,7,54, 7,9,3,3,13,86, 7,9,3,6,8,70, 7,8,13,5,7,55, 7,8,3,6,8,71, 7,7,13,5,7,56, + 7,7,3,6,8,72, 7,6,13,4,7,57, 7,6,13,5,7,57, 7,6,3,6,8,73, 7,5,12,5,7,58, 7,5,3,6,8,74, 7,4,12,5,7,59, 7,4,3,6,8,75, + 7,3,13,3,3,92, 7,3,13,5,7,60, 7,3,3,6,8,76, 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,3,4,7,61, 7,2,3,6,8,77, 7,1,12,4,7,62, + 7,1,12,5,7,62, 7,1,4,4,7,62, 7,1,4,6,8,78, 7,0,11,5,7,63, 7,0,5,6,8,79, 8,14,10,3,6,81, 8,14,10,5,8,49, 8,14,9,3,7,81, + 8,14,8,3,8,81, 8,14,7,3,9,81, 8,14,7,6,7,65, 8,13,11,3,5,82, 8,13,11,5,8,50, 8,13,6,3,10,82, 8,13,6,6,7,66, 8,12,12,3,4,83, + 8,12,12,5,8,51, 8,12,5,3,11,83, 8,12,5,6,7,67, 8,11,13,3,3,84, 8,11,13,5,8,52, 8,11,4,3,12,84, 8,11,4,6,7,68, 8,10,13,5,8,53, + 8,10,4,6,7,69, 8,9,13,5,8,54, 8,9,3,3,13,86, 8,9,3,6,7,70, 8,8,13,5,8,55, 8,8,3,6,7,71, 8,7,13,5,8,56, 8,7,3,6,7,72, + 8,6,13,4,8,57, 8,6,13,5,8,57, 8,6,3,6,7,73, 8,5,12,5,8,58, 8,5,3,6,7,74, 8,4,12,5,8,59, 8,4,3,6,7,75, 8,3,13,3,3,92, + 8,3,13,5,8,60, 8,3,3,6,7,76, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,3,4,8,61, 8,2,3,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, + 8,1,4,4,8,62, 8,1,4,6,7,78, 8,0,11,5,8,63, 8,0,5,6,7,79, 9,14,10,1,6,81, 9,14,10,3,6,81, 9,14,10,5,9,49, 9,14,9,1,7,81, + 9,14,9,3,7,81, 9,14,8,1,8,81, 9,14,8,3,8,81, 9,14,7,1,9,81, 9,14,7,3,9,81, 9,14,7,6,6,65, 9,13,11,3,5,82, 9,13,11,5,9,50, + 9,13,6,3,10,82, 9,13,6,6,6,66, 9,12,12,3,4,83, 9,12,12,5,9,51, 9,12,5,3,11,83, 9,12,5,6,6,67, 9,11,13,3,3,84, 9,11,13,5,9,52, + 9,11,4,3,12,84, 9,11,4,6,6,68, 9,10,13,5,9,53, 9,10,4,6,6,69, 9,9,13,5,9,54, 9,9,3,3,13,86, 9,9,3,6,6,70, 9,8,13,5,9,55, + 9,8,3,6,6,71, 9,7,13,5,9,56, 9,7,3,6,6,72, 9,6,13,4,9,57, 9,6,13,5,9,57, 9,6,3,6,6,73, 9,5,12,5,9,58, 9,5,3,6,6,74, + 9,4,12,5,9,59, 9,4,3,6,6,75, 9,3,13,3,3,92, 9,3,13,5,9,60, 9,3,3,6,6,76, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,3,4,9,61, + 9,2,3,6,6,77, 9,1,12,4,9,62, 9,1,12,5,9,62, 9,1,4,4,9,62, 9,1,4,6,6,78, 9,0,11,5,9,63, 9,0,5,6,6,79, 10,13,11,1,5,82, + 10,13,11,3,5,82, 10,13,11,5,10,50, 10,13,10,1,6,82, 10,13,10,3,6,82, 10,13,9,1,7,82, 10,13,9,3,7,82, 10,13,8,1,8,82, 10,13,8,3,8,82, + 10,13,7,1,9,82, 10,13,7,3,9,82, 10,13,6,1,10,82, 10,13,6,3,10,82, 10,13,6,6,5,66, 10,12,12,3,4,83, 10,12,12,5,10,51, 10,12,5,3,11,83, + 10,12,5,6,5,67, 10,11,13,3,3,84, 10,11,13,5,10,52, 10,11,4,3,12,84, 10,11,4,6,5,68, 10,10,13,5,10,53, 10,10,4,6,5,69, 10,9,13,5,10,54, + 10,9,3,3,13,86, 10,9,3,6,5,70, 10,8,13,5,10,55, 10,8,3,6,5,71, 10,7,13,5,10,56, 10,7,3,6,5,72, 10,6,13,4,10,57, 10,6,13,5,10,57, + 10,6,3,6,5,73, 10,5,12,5,10,58, 10,5,3,6,5,74, 10,4,12,5,10,59, 10,4,3,6,5,75, 10,3,13,3,3,92, 10,3,13,5,10,60, 10,3,3,6,5,76, + 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,3,4,10,61, 10,2,3,6,5,77, 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,4,4,10,62, 10,1,4,6,5,78, + 10,0,11,5,10,63, 10,0,5,6,5,79, 11,12,12,1,4,83, 11,12,12,3,4,83, 11,12,12,5,11,51, 11,12,11,1,5,83, 11,12,11,3,5,83, 11,12,10,1,6,83, + 11,12,10,3,6,83, 11,12,9,1,7,83, 11,12,9,3,7,83, 11,12,8,1,8,83, 11,12,8,3,8,83, 11,12,7,1,9,83, 11,12,7,3,9,83, 11,12,6,1,10,83, + 11,12,6,3,10,83, 11,12,5,1,11,83, 11,12,5,3,11,83, 11,12,5,6,4,67, 11,11,13,3,3,84, 11,11,13,5,11,52, 11,11,4,3,12,84, 11,11,4,6,4,68, + 11,10,13,5,11,53, 11,10,4,6,4,69, 11,9,13,5,11,54, 11,9,3,3,13,86, 11,9,3,6,4,70, 11,8,13,5,11,55, 11,8,3,6,4,71, 11,7,13,5,11,56, + 11,7,3,6,4,72, 11,6,13,4,11,57, 11,6,13,5,11,57, 11,6,3,6,4,73, 11,5,12,5,11,58, 11,5,3,6,4,74, 11,4,12,5,11,59, 11,4,3,6,4,75, + 11,3,13,3,3,92, 11,3,13,5,11,60, 11,3,3,6,4,76, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,3,4,11,61, 11,2,3,6,4,77, 11,1,12,4,11,62, + 11,1,12,5,11,62, 11,1,4,4,11,62, 11,1,4,6,4,78, 11,0,11,5,11,63, 11,0,5,6,4,79, 12,11,13,1,3,84, 12,11,13,3,3,84, 12,11,13,5,12,52, + 12,11,12,1,4,84, 12,11,12,3,4,84, 12,11,11,1,5,84, 12,11,11,3,5,84, 12,11,10,1,6,84, 12,11,10,3,6,84, 12,11,9,1,7,84, 12,11,9,3,7,84, + 12,11,8,1,8,84, 12,11,8,3,8,84, 12,11,7,1,9,84, 12,11,7,3,9,84, 12,11,6,1,10,84, 12,11,6,3,10,84, 12,11,5,1,11,84, 12,11,5,3,11,84, + 12,11,4,1,12,84, 12,11,4,3,12,84, 12,11,4,6,3,68, 12,10,13,5,12,53, 12,10,4,6,3,69, 12,9,13,5,12,54, 12,9,3,3,13,86, 12,9,3,6,3,70, + 12,8,13,5,12,55, 12,8,3,6,3,71, 12,7,13,5,12,56, 12,7,3,6,3,72, 12,6,13,4,12,57, 12,6,13,5,12,57, 12,6,3,6,3,73, 12,5,12,5,12,58, + 12,5,3,6,3,74, 12,4,12,5,12,59, 12,4,3,6,3,75, 12,3,13,3,3,92, 12,3,13,5,12,60, 12,3,3,6,3,76, 12,2,13,4,12,61, 12,2,13,5,12,61, + 12,2,3,4,12,61, 12,2,3,6,3,77, 12,1,12,4,12,62, 12,1,12,5,12,62, 12,1,4,4,12,62, 12,1,4,6,3,78, 12,0,11,1,5,95, 12,0,11,5,12,63, + 12,0,10,1,6,95, 12,0,9,1,7,95, 12,0,8,1,8,95, 12,0,7,1,9,95, 12,0,6,1,10,95, 12,0,5,1,11,95, 12,0,5,6,3,79, 13,10,13,1,3,85, + 13,10,13,3,3,85, 13,10,13,5,13,53, 13,10,12,1,4,85, 13,10,12,3,4,85, 13,10,11,1,5,85, 13,10,11,3,5,85, 13,10,10,1,6,85, 13,10,10,3,6,85, + 13,10,9,1,7,85, 13,10,9,3,7,85, 13,10,8,1,8,85, 13,10,8,3,8,85, 13,10,7,1,9,85, 13,10,7,3,9,85, 13,10,6,1,10,85, 13,10,6,3,10,85, + 13,10,5,1,11,85, 13,10,5,3,11,85, 13,10,4,1,12,85, 13,10,4,3,12,85, 13,10,4,6,2,69, 13,9,13,1,3,86, 13,9,13,5,13,54, 13,9,12,1,4,86, + 13,9,11,1,5,86, 13,9,10,1,6,86, 13,9,9,1,7,86, 13,9,8,1,8,86, 13,9,7,1,9,86, 13,9,6,1,10,86, 13,9,5,1,11,86, 13,9,4,1,12,86, + 13,9,3,1,13,86, 13,9,3,3,13,86, 13,9,3,6,2,70, 13,8,13,5,13,55, 13,8,3,6,2,71, 13,7,13,5,13,56, 13,7,3,6,2,72, 13,6,13,4,13,57, + 13,6,13,5,13,57, 13,6,3,6,2,73, 13,5,12,5,13,58, 13,5,3,6,2,74, 13,4,12,5,13,59, 13,4,3,6,2,75, 13,3,13,3,3,92, 13,3,13,5,13,60, + 13,3,3,6,2,76, 13,2,13,4,13,61, 13,2,13,5,13,61, 13,2,3,4,13,61, 13,2,3,6,2,77, 13,1,12,1,4,94, 13,1,12,4,13,62, 13,1,12,5,13,62, + 13,1,11,1,5,94, 13,1,11,4,13,62, 13,1,10,1,6,94, 13,1,10,4,13,62, 13,1,9,1,7,94, 13,1,9,4,13,62, 13,1,8,1,8,94, 13,1,8,4,13,62, + 13,1,7,1,9,94, 13,1,7,4,13,62, 13,1,6,1,10,94, 13,1,6,4,13,62, 13,1,5,1,11,94, 13,1,5,4,13,62, 13,1,4,1,12,94, 13,1,4,4,13,62, + 13,1,4,6,2,78, 14,8,13,1,3,87, 14,8,13,3,3,87, 14,8,13,5,14,55, 14,8,12,1,4,87, 14,8,12,3,4,87, 14,8,11,1,5,87, 14,8,11,3,5,87, + 14,8,10,1,6,87, 14,8,10,3,6,87, 14,8,9,1,7,87, 14,8,9,3,7,87, 14,8,8,1,8,87, 14,8,8,3,8,87, 14,8,7,1,9,87, 14,8,7,3,9,87, + 14,8,6,1,10,87, 14,8,6,3,10,87, 14,8,5,1,11,87, 14,8,5,3,11,87, 14,8,4,1,12,87, 14,8,4,3,12,87, 14,8,3,1,13,87, 14,8,3,3,13,87, + 14,8,3,6,1,71, 14,7,13,1,3,88, 14,7,13,5,14,56, 14,7,12,1,4,88, 14,7,11,1,5,88, 14,7,10,1,6,88, 14,7,9,1,7,88, 14,7,8,1,8,88, + 14,7,7,1,9,88, 14,7,6,1,10,88, 14,7,5,1,11,88, 14,7,4,1,12,88, 14,7,3,1,13,88, 14,7,3,6,1,72, 14,6,13,1,3,89, 14,6,13,4,14,57, + 14,6,13,5,14,57, 14,6,12,1,4,89, 14,6,11,1,5,89, 14,6,10,1,6,89, 14,6,9,1,7,89, 14,6,8,1,8,89, 14,6,7,1,9,89, 14,6,6,1,10,89, + 14,6,5,1,11,89, 14,6,4,1,12,89, 14,6,3,1,13,89, 14,6,3,6,1,73, 14,5,12,1,4,90, 14,5,12,5,14,58, 14,5,11,1,5,90, 14,5,10,1,6,90, + 14,5,9,1,7,90, 14,5,8,1,8,90, 14,5,7,1,9,90, 14,5,6,1,10,90, 14,5,5,1,11,90, 14,5,4,1,12,90, 14,5,3,1,13,90, 14,5,3,6,1,74, + 14,4,12,1,4,91, 14,4,12,5,14,59, 14,4,11,1,5,91, 14,4,10,1,6,91, 14,4,9,1,7,91, 14,4,8,1,8,91, 14,4,7,1,9,91, 14,4,6,1,10,91, + 14,4,5,1,11,91, 14,4,4,1,12,91, 14,4,3,1,13,91, 14,4,3,6,1,75, 14,3,13,1,3,92, 14,3,13,3,3,92, 14,3,13,5,14,60, 14,3,12,1,4,92, + 14,3,11,1,5,92, 14,3,10,1,6,92, 14,3,9,1,7,92, 14,3,8,1,8,92, 14,3,7,1,9,92, 14,3,6,1,10,92, 14,3,5,1,11,92, 14,3,4,1,12,92, + 14,3,3,1,13,92, 14,3,3,6,1,76, 14,2,13,1,3,93, 14,2,13,4,14,61, 14,2,13,5,14,61, 14,2,12,1,4,93, 14,2,12,4,14,61, 14,2,11,1,5,93, + 14,2,11,4,14,61, 14,2,10,1,6,93, 14,2,10,4,14,61, 14,2,9,1,7,93, 14,2,9,4,14,61, 14,2,8,1,8,93, 14,2,8,4,14,61, 14,2,7,1,9,93, + 14,2,7,4,14,61, 14,2,6,1,10,93, 14,2,6,4,14,61, 14,2,5,1,11,93, 14,2,5,4,14,61, 14,2,4,1,12,93, 14,2,4,4,14,61, 14,2,3,1,13,93, + 14,2,3,4,14,61, 14,2,3,6,1,77, + }, + }, + }, +} diff --git a/assets/voxels/clerk.lua b/assets/voxels/clerk.lua new file mode 100644 index 0000000..30f41e2 --- /dev/null +++ b/assets/voxels/clerk.lua @@ -0,0 +1,151 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "clerk" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "clerk", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1552, + count = 1008, + faces = { + 1,10,13,2,2,37, 1,10,13,3,2,37, 1,10,13,4,1,5, 1,10,13,5,1,5, 1,10,12,2,3,37, 1,10,12,3,3,37, 1,10,11,2,4,37, 1,10,11,3,4,37, + 1,10,10,2,5,37, 1,10,10,3,5,37, 1,10,9,2,6,37, 1,10,9,3,6,37, 1,10,8,2,7,37, 1,10,8,3,7,37, 1,10,7,2,8,37, 1,10,7,3,8,37, + 1,10,6,2,9,37, 1,10,6,3,9,37, 1,10,5,2,10,37, 1,10,5,3,10,37, 1,10,4,2,11,37, 1,10,4,3,11,37, 1,10,3,2,12,37, 1,10,3,3,12,37, + 1,10,2,2,13,37, 1,10,2,3,13,37, 1,10,2,6,14,21, 1,9,12,2,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,10,2,5,38, 1,9,9,2,6,38, + 1,9,8,2,7,38, 1,9,7,2,8,38, 1,9,6,2,9,38, 1,9,5,2,10,38, 1,9,4,2,11,38, 1,9,3,2,12,38, 1,9,2,2,13,38, 1,9,2,6,14,22, + 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, + 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, + 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,2,2,13,39, 1,8,2,4,1,7, 1,8,2,6,14,23, + 1,5,10,2,5,42, 1,5,10,3,5,42, 1,5,10,5,1,10, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, + 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,4,6,14,26, + 1,4,10,2,5,43, 1,4,10,4,1,11, 1,4,10,5,1,11, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, + 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,4,6,14,27, + 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,13,5,2,4, 2,11,12,2,3,36, 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, 2,11,10,2,5,36, + 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, 2,11,6,2,9,36, + 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, 2,11,2,2,13,36, + 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,13,4,2,5, 2,10,13,5,2,5, 2,10,2,6,13,21, 2,9,12,5,2,6, 2,9,2,6,13,22, 2,8,12,5,2,7, + 2,8,2,4,2,7, 2,8,2,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, + 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, 2,7,3,4,2,8, 2,7,3,6,13,24, + 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, 2,6,6,2,9,41, + 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,4,6,13,25, 2,5,10,5,2,10, 2,5,4,6,13,26, 2,4,10,4,2,11, 2,4,10,5,2,11, 2,4,4,6,13,27, + 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,9,5,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, + 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, 2,3,4,6,13,28, 3,13,12,2,3,34, 3,13,12,3,3,34, + 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, + 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, + 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,12,2,3,35, 3,12,12,5,3,3, 3,12,11,2,4,35, 3,12,10,2,5,35, + 3,12,9,2,6,35, 3,12,8,2,7,35, 3,12,7,2,8,35, 3,12,6,2,9,35, 3,12,5,2,10,35, 3,12,4,2,11,35, 3,12,3,2,12,35, 3,12,3,6,12,19, + 3,11,13,3,2,36, 3,11,13,5,3,4, 3,11,2,3,13,36, 3,11,2,6,12,20, 3,10,13,4,3,5, 3,10,13,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, + 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,2,4,3,7, 3,8,2,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,3,4,3,8, 3,7,3,6,12,24, + 3,6,11,4,3,9, 3,6,11,5,3,9, 3,6,4,6,12,25, 3,5,10,5,3,10, 3,5,4,6,12,26, 3,4,10,4,3,11, 3,4,10,5,3,11, 3,4,4,6,12,27, + 3,3,9,5,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, 3,2,10,3,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, 3,2,8,2,7,45, + 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,5,6,12,29, 3,1,11,2,4,46, 3,1,11,3,4,46, 3,1,11,4,3,14, 3,1,11,5,3,14, + 3,1,10,2,5,46, 3,1,10,4,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, + 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,5,6,12,30, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, + 4,14,10,2,5,33, 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, + 4,14,6,2,9,33, 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, + 4,13,12,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,12,5,4,3, 4,12,3,6,11,19, 4,11,13,3,2,36, 4,11,13,5,4,4, 4,11,2,3,13,36, + 4,11,2,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,2,4,4,7, + 4,8,2,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,11,4,4,9, 4,6,11,5,4,9, 4,6,4,6,11,25, + 4,5,10,5,4,10, 4,5,4,6,11,26, 4,4,10,4,4,11, 4,4,10,5,4,11, 4,4,4,6,11,27, 4,3,9,5,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, + 4,2,10,3,5,45, 4,2,10,5,4,13, 4,2,5,6,11,29, 4,1,11,3,4,46, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, + 4,0,10,2,5,47, 4,0,10,5,4,15, 4,0,9,2,6,47, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, 4,0,6,6,11,31, 5,14,11,3,4,33, + 5,14,11,5,5,1, 5,14,10,3,5,33, 5,14,9,3,6,33, 5,14,8,3,7,33, 5,14,7,3,8,33, 5,14,6,3,9,33, 5,14,5,3,10,33, 5,14,4,3,11,33, + 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,12,5,5,3, 5,12,3,6,10,19, 5,11,13,3,2,36, + 5,11,13,5,5,4, 5,11,2,3,13,36, 5,11,2,6,10,20, 5,10,13,4,5,5, 5,10,13,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,6,10,22, + 5,8,12,5,5,7, 5,8,2,4,5,7, 5,8,2,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,11,4,5,9, + 5,6,11,5,5,9, 5,6,4,6,10,25, 5,5,10,5,5,10, 5,5,4,6,10,26, 5,4,10,4,5,11, 5,4,10,5,5,11, 5,4,4,6,10,27, 5,3,9,5,5,12, + 5,3,4,4,5,12, 5,3,4,6,10,28, 5,2,10,3,5,45, 5,2,10,5,5,13, 5,2,5,6,10,29, 5,1,11,3,4,46, 5,1,11,4,5,14, 5,1,11,5,5,14, + 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,10,5,5,15, 5,0,6,6,10,31, 6,15,10,2,5,32, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,2,6,32, + 6,15,9,3,6,32, 6,15,8,2,7,32, 6,15,8,3,7,32, 6,15,7,2,8,32, 6,15,7,3,8,32, 6,15,6,2,9,32, 6,15,6,3,9,32, 6,15,5,2,10,32, + 6,15,5,3,10,32, 6,15,5,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, + 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,12,5,6,3, 6,12,3,6,9,19, 6,11,13,3,2,36, 6,11,13,5,6,4, 6,11,2,3,13,36, 6,11,2,6,9,20, + 6,10,13,4,6,5, 6,10,13,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,2,4,6,7, 6,8,2,6,9,23, + 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, 6,6,4,6,9,25, 6,5,10,5,6,10, + 6,5,4,6,9,26, 6,4,10,4,6,11, 6,4,10,5,6,11, 6,4,4,6,9,27, 6,3,9,5,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,10,3,5,45, + 6,2,10,5,6,13, 6,2,5,6,9,29, 6,1,11,3,4,46, 6,1,11,4,6,14, 6,1,11,5,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,10,1,5,47, + 6,0,10,5,6,15, 6,0,9,1,6,47, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,15,10,3,5,32, 7,15,10,5,7,0, + 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,5,3,10,32, 7,15,5,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, + 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,12,5,7,3, 7,12,3,6,8,19, + 7,11,13,3,2,36, 7,11,13,5,7,4, 7,11,2,3,13,36, 7,11,2,6,8,20, 7,10,13,4,7,5, 7,10,13,5,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, + 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,2,4,7,7, 7,8,2,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,3,4,7,8, 7,7,3,6,8,24, + 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,4,6,8,25, 7,5,10,5,7,10, 7,5,4,6,8,26, 7,4,10,4,7,11, 7,4,10,5,7,11, 7,4,4,6,8,27, + 7,3,9,5,7,12, 7,3,4,4,7,12, 7,3,4,6,8,28, 7,2,10,3,5,45, 7,2,10,5,7,13, 7,2,5,6,8,29, 7,1,11,3,4,46, 7,1,11,4,7,14, + 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, + 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,3,6,32, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,5,3,10,32, 8,15,5,6,7,16, + 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, + 8,12,12,5,8,3, 8,12,3,6,7,19, 8,11,13,3,2,36, 8,11,13,5,8,4, 8,11,2,3,13,36, 8,11,2,6,7,20, 8,10,13,4,8,5, 8,10,13,5,8,5, + 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,6,7,22, 8,8,12,5,8,7, 8,8,2,4,8,7, 8,8,2,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, + 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,4,6,7,25, 8,5,10,5,8,10, 8,5,4,6,7,26, 8,4,10,4,8,11, + 8,4,10,5,8,11, 8,4,4,6,7,27, 8,3,9,5,8,12, 8,3,4,4,8,12, 8,3,4,6,7,28, 8,2,10,3,5,45, 8,2,10,5,8,13, 8,2,5,6,7,29, + 8,1,11,3,4,46, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, + 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,10,1,5,32, 9,15,10,3,5,32, 9,15,10,5,9,0, 9,15,9,1,6,32, 9,15,9,3,6,32, 9,15,8,1,7,32, + 9,15,8,3,7,32, 9,15,7,1,8,32, 9,15,7,3,8,32, 9,15,6,1,9,32, 9,15,6,3,9,32, 9,15,5,1,10,32, 9,15,5,3,10,32, 9,15,5,6,6,16, + 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, + 9,12,12,5,9,3, 9,12,3,6,6,19, 9,11,13,3,2,36, 9,11,13,5,9,4, 9,11,2,3,13,36, 9,11,2,6,6,20, 9,10,13,4,9,5, 9,10,13,5,9,5, + 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,2,4,9,7, 9,8,2,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, + 9,7,3,4,9,8, 9,7,3,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, 9,6,4,6,6,25, 9,5,10,5,9,10, 9,5,4,6,6,26, 9,4,10,4,9,11, + 9,4,10,5,9,11, 9,4,4,6,6,27, 9,3,9,5,9,12, 9,3,4,4,9,12, 9,3,4,6,6,28, 9,2,10,3,5,45, 9,2,10,5,9,13, 9,2,5,6,6,29, + 9,1,11,3,4,46, 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,10,2,5,47, 9,0,10,5,9,15, 9,0,9,2,6,47, + 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,10,3,5,33, 10,14,9,3,6,33, + 10,14,8,3,7,33, 10,14,7,3,8,33, 10,14,6,3,9,33, 10,14,5,3,10,33, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, 10,13,12,5,10,2, + 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,12,5,10,3, 10,12,3,6,5,19, 10,11,13,3,2,36, 10,11,13,5,10,4, 10,11,2,3,13,36, 10,11,2,6,5,20, + 10,10,13,4,10,5, 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, 10,8,2,4,10,7, 10,8,2,6,5,23, + 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,4,6,5,25, 10,5,10,5,10,10, + 10,5,4,6,5,26, 10,4,10,4,10,11, 10,4,10,5,10,11, 10,4,4,6,5,27, 10,3,9,5,10,12, 10,3,4,4,10,12, 10,3,4,6,5,28, 10,2,10,3,5,45, + 10,2,10,5,10,13, 10,2,5,6,5,29, 10,1,11,3,4,46, 10,1,11,4,10,14, 10,1,11,5,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,10,5,10,15, + 10,0,6,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, + 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, + 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,12,5,11,3, + 11,12,3,6,4,19, 11,11,13,3,2,36, 11,11,13,5,11,4, 11,11,2,3,13,36, 11,11,2,6,4,20, 11,10,13,4,11,5, 11,10,13,5,11,5, 11,10,2,6,4,21, + 11,9,12,5,11,6, 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,2,4,11,7, 11,8,2,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,3,4,11,8, + 11,7,3,6,4,24, 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,4,6,4,25, 11,5,10,5,11,10, 11,5,4,6,4,26, 11,4,10,4,11,11, 11,4,10,5,11,11, + 11,4,4,6,4,27, 11,3,9,5,11,12, 11,3,4,4,11,12, 11,3,4,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, 11,2,5,6,4,29, 11,1,11,3,4,46, + 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,10,1,5,47, 11,0,10,5,11,15, 11,0,9,1,6,47, 11,0,8,1,7,47, + 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,6,6,4,31, 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, + 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, + 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, + 12,13,3,6,3,18, 12,12,12,1,3,35, 12,12,12,5,12,3, 12,12,11,1,4,35, 12,12,10,1,5,35, 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, + 12,12,6,1,9,35, 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, 12,12,3,6,3,19, 12,11,13,3,2,36, 12,11,13,5,12,4, 12,11,2,3,13,36, + 12,11,2,6,3,20, 12,10,13,4,12,5, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,2,4,12,7, + 12,8,2,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,4,6,3,25, + 12,5,10,5,12,10, 12,5,4,6,3,26, 12,4,10,4,12,11, 12,4,10,5,12,11, 12,4,4,6,3,27, 12,3,9,5,12,12, 12,3,4,4,12,12, 12,3,4,6,3,28, + 12,2,10,1,5,45, 12,2,10,3,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, + 12,2,5,6,3,29, 12,1,11,1,4,46, 12,1,11,3,4,46, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,9,1,6,46, + 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, + 12,1,5,4,12,14, 12,1,5,6,3,30, 13,11,13,1,2,36, 13,11,13,3,2,36, 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, + 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, 13,11,9,3,6,36, 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, + 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, 13,11,5,3,10,36, 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, + 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, 13,10,13,4,13,5, 13,10,13,5,13,5, 13,10,2,6,2,21, 13,9,12,5,13,6, + 13,9,2,6,2,22, 13,8,12,5,13,7, 13,8,2,4,13,7, 13,8,2,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, + 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, + 13,7,3,4,13,8, 13,7,3,6,2,24, 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, + 13,6,7,1,8,41, 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,4,6,2,25, 13,5,10,5,13,10, 13,5,4,6,2,26, 13,4,10,4,13,11, + 13,4,10,5,13,11, 13,4,4,6,2,27, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, + 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, + 14,10,13,1,2,37, 14,10,13,3,2,37, 14,10,13,4,14,5, 14,10,13,5,14,5, 14,10,12,1,3,37, 14,10,12,3,3,37, 14,10,11,1,4,37, 14,10,11,3,4,37, + 14,10,10,1,5,37, 14,10,10,3,5,37, 14,10,9,1,6,37, 14,10,9,3,6,37, 14,10,8,1,7,37, 14,10,8,3,7,37, 14,10,7,1,8,37, 14,10,7,3,8,37, + 14,10,6,1,9,37, 14,10,6,3,9,37, 14,10,5,1,10,37, 14,10,5,3,10,37, 14,10,4,1,11,37, 14,10,4,3,11,37, 14,10,3,1,12,37, 14,10,3,3,12,37, + 14,10,2,1,13,37, 14,10,2,3,13,37, 14,10,2,6,1,21, 14,9,12,1,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,10,1,5,38, 14,9,9,1,6,38, + 14,9,8,1,7,38, 14,9,7,1,8,38, 14,9,6,1,9,38, 14,9,5,1,10,38, 14,9,4,1,11,38, 14,9,3,1,12,38, 14,9,2,1,13,38, 14,9,2,6,1,22, + 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, + 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, + 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,2,1,13,39, 14,8,2,4,14,7, 14,8,2,6,1,23, + 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,5,14,10, 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, + 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,4,1,11,42, 14,5,4,3,11,42, 14,5,4,6,1,26, + 14,4,10,1,5,43, 14,4,10,4,14,11, 14,4,10,5,14,11, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, 14,4,7,1,8,43, + 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + }, +} diff --git a/assets/voxels/clipboard.lua b/assets/voxels/clipboard.lua new file mode 100644 index 0000000..5b2144c --- /dev/null +++ b/assets/voxels/clipboard.lua @@ -0,0 +1,127 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "clipboard" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "clipboard", + sheetW = 16, + sheetH = 16, + size = 16, + poses = { + stand = { + frames = { 0 }, + voxels = 2016, + count = 816, + faces = { + 2,13,13,2,12,1, 2,13,13,3,12,1, 2,13,13,5,1,1, 2,13,12,2,11,1, 2,13,12,3,11,1, 2,13,11,2,10,1, 2,13,11,3,10,1, 2,13,10,2,9,1, + 2,13,10,3,9,1, 2,13,9,2,8,1, 2,13,9,3,8,1, 2,13,8,2,7,1, 2,13,8,3,7,1, 2,13,7,2,6,1, 2,13,7,3,6,1, 2,13,6,2,5,1, + 2,13,6,3,5,1, 2,13,5,2,4,1, 2,13,5,3,4,1, 2,13,4,2,3,1, 2,13,4,3,3,1, 2,13,3,2,2,1, 2,13,3,3,2,1, 2,13,2,2,1,1, + 2,13,2,3,1,1, 2,13,2,6,12,1, 2,12,13,2,12,2, 2,12,13,5,1,2, 2,12,12,2,11,2, 2,12,11,2,10,2, 2,12,10,2,9,2, 2,12,9,2,8,2, + 2,12,8,2,7,2, 2,12,7,2,6,2, 2,12,6,2,5,2, 2,12,5,2,4,2, 2,12,4,2,3,2, 2,12,3,2,2,2, 2,12,2,2,1,2, 2,12,2,6,12,2, + 2,11,13,2,12,3, 2,11,13,5,1,3, 2,11,12,2,11,3, 2,11,11,2,10,3, 2,11,10,2,9,3, 2,11,9,2,8,3, 2,11,8,2,7,3, 2,11,7,2,6,3, + 2,11,6,2,5,3, 2,11,5,2,4,3, 2,11,4,2,3,3, 2,11,3,2,2,3, 2,11,2,2,1,3, 2,11,2,6,12,3, 2,10,13,2,12,4, 2,10,13,5,1,4, + 2,10,12,2,11,4, 2,10,11,2,10,4, 2,10,10,2,9,4, 2,10,9,2,8,4, 2,10,8,2,7,4, 2,10,7,2,6,4, 2,10,6,2,5,4, 2,10,5,2,4,4, + 2,10,4,2,3,4, 2,10,3,2,2,4, 2,10,2,2,1,4, 2,10,2,6,12,4, 2,9,13,2,12,5, 2,9,13,5,1,5, 2,9,12,2,11,5, 2,9,11,2,10,5, + 2,9,10,2,9,5, 2,9,9,2,8,5, 2,9,8,2,7,5, 2,9,7,2,6,5, 2,9,6,2,5,5, 2,9,5,2,4,5, 2,9,4,2,3,5, 2,9,3,2,2,5, + 2,9,2,2,1,5, 2,9,2,6,12,5, 2,8,13,2,12,6, 2,8,13,5,1,6, 2,8,12,2,11,6, 2,8,11,2,10,6, 2,8,10,2,9,6, 2,8,9,2,8,6, + 2,8,8,2,7,6, 2,8,7,2,6,6, 2,8,6,2,5,6, 2,8,5,2,4,6, 2,8,4,2,3,6, 2,8,3,2,2,6, 2,8,2,2,1,6, 2,8,2,6,12,6, + 2,7,13,2,12,7, 2,7,13,5,1,7, 2,7,12,2,11,7, 2,7,11,2,10,7, 2,7,10,2,9,7, 2,7,9,2,8,7, 2,7,8,2,7,7, 2,7,7,2,6,7, + 2,7,6,2,5,7, 2,7,5,2,4,7, 2,7,4,2,3,7, 2,7,3,2,2,7, 2,7,2,2,1,7, 2,7,2,6,12,7, 2,6,13,2,12,8, 2,6,13,5,1,8, + 2,6,12,2,11,8, 2,6,11,2,10,8, 2,6,10,2,9,8, 2,6,9,2,8,8, 2,6,8,2,7,8, 2,6,7,2,6,8, 2,6,6,2,5,8, 2,6,5,2,4,8, + 2,6,4,2,3,8, 2,6,3,2,2,8, 2,6,2,2,1,8, 2,6,2,6,12,8, 2,5,13,2,12,9, 2,5,13,5,1,9, 2,5,12,2,11,9, 2,5,11,2,10,9, + 2,5,10,2,9,9, 2,5,9,2,8,9, 2,5,8,2,7,9, 2,5,7,2,6,9, 2,5,6,2,5,9, 2,5,5,2,4,9, 2,5,4,2,3,9, 2,5,3,2,2,9, + 2,5,2,2,1,9, 2,5,2,6,12,9, 2,4,13,2,12,10, 2,4,13,5,1,10, 2,4,12,2,11,10, 2,4,11,2,10,10, 2,4,10,2,9,10, 2,4,9,2,8,10, + 2,4,8,2,7,10, 2,4,7,2,6,10, 2,4,6,2,5,10, 2,4,5,2,4,10, 2,4,4,2,3,10, 2,4,3,2,2,10, 2,4,2,2,1,10, 2,4,2,6,12,10, + 2,3,13,2,12,11, 2,3,13,5,1,11, 2,3,12,2,11,11, 2,3,11,2,10,11, 2,3,10,2,9,11, 2,3,9,2,8,11, 2,3,8,2,7,11, 2,3,7,2,6,11, + 2,3,6,2,5,11, 2,3,5,2,4,11, 2,3,4,2,3,11, 2,3,3,2,2,11, 2,3,2,2,1,11, 2,3,2,6,12,11, 2,2,13,2,12,12, 2,2,13,5,1,12, + 2,2,12,2,11,12, 2,2,11,2,10,12, 2,2,10,2,9,12, 2,2,9,2,8,12, 2,2,8,2,7,12, 2,2,7,2,6,12, 2,2,6,2,5,12, 2,2,5,2,4,12, + 2,2,4,2,3,12, 2,2,3,2,2,12, 2,2,2,2,1,12, 2,2,2,6,12,12, 2,1,13,2,12,13, 2,1,13,5,1,13, 2,1,12,2,11,13, 2,1,11,2,10,13, + 2,1,10,2,9,13, 2,1,9,2,8,13, 2,1,8,2,7,13, 2,1,7,2,6,13, 2,1,6,2,5,13, 2,1,5,2,4,13, 2,1,4,2,3,13, 2,1,3,2,2,13, + 2,1,2,2,1,13, 2,1,2,6,12,13, 2,0,13,2,12,14, 2,0,13,5,1,14, 2,0,12,2,11,14, 2,0,11,2,10,14, 2,0,10,2,9,14, 2,0,9,2,8,14, + 2,0,8,2,7,14, 2,0,7,2,6,14, 2,0,6,2,5,14, 2,0,5,2,4,14, 2,0,4,2,3,14, 2,0,3,2,2,14, 2,0,2,2,1,14, 2,0,2,6,12,14, + 3,13,13,3,12,1, 3,13,13,5,2,1, 3,13,12,3,11,1, 3,13,11,3,10,1, 3,13,10,3,9,1, 3,13,9,3,8,1, 3,13,8,3,7,1, 3,13,7,3,6,1, + 3,13,6,3,5,1, 3,13,5,3,4,1, 3,13,4,3,3,1, 3,13,3,3,2,1, 3,13,2,3,1,1, 3,13,2,6,11,1, 3,12,13,5,2,2, 3,12,2,6,11,2, + 3,11,13,5,2,3, 3,11,2,6,11,3, 3,10,13,5,2,4, 3,10,2,6,11,4, 3,9,13,5,2,5, 3,9,2,6,11,5, 3,8,13,5,2,6, 3,8,2,6,11,6, + 3,7,13,5,2,7, 3,7,2,6,11,7, 3,6,13,5,2,8, 3,6,2,6,11,8, 3,5,13,5,2,9, 3,5,2,6,11,9, 3,4,13,5,2,10, 3,4,2,6,11,10, + 3,3,13,5,2,11, 3,3,2,6,11,11, 3,2,13,5,2,12, 3,2,2,6,11,12, 3,1,13,5,2,13, 3,1,2,6,11,13, 3,0,13,5,2,14, 3,0,2,6,11,14, + 4,13,13,3,12,1, 4,13,13,5,3,1, 4,13,12,3,11,1, 4,13,11,3,10,1, 4,13,10,3,9,1, 4,13,9,3,8,1, 4,13,8,3,7,1, 4,13,7,3,6,1, + 4,13,6,3,5,1, 4,13,5,3,4,1, 4,13,4,3,3,1, 4,13,3,3,2,1, 4,13,2,3,1,1, 4,13,2,6,10,1, 4,12,13,5,3,2, 4,12,2,6,10,2, + 4,11,13,5,3,3, 4,11,2,6,10,3, 4,10,13,5,3,4, 4,10,2,6,10,4, 4,9,13,5,3,5, 4,9,2,6,10,5, 4,8,13,5,3,6, 4,8,2,6,10,6, + 4,7,13,5,3,7, 4,7,2,6,10,7, 4,6,13,5,3,8, 4,6,2,6,10,8, 4,5,13,5,3,9, 4,5,2,6,10,9, 4,4,13,5,3,10, 4,4,2,6,10,10, + 4,3,13,5,3,11, 4,3,2,6,10,11, 4,2,13,5,3,12, 4,2,2,6,10,12, 4,1,13,5,3,13, 4,1,2,6,10,13, 4,0,13,5,3,14, 4,0,2,6,10,14, + 5,13,13,3,12,1, 5,13,13,5,4,1, 5,13,12,3,11,1, 5,13,11,3,10,1, 5,13,10,3,9,1, 5,13,9,3,8,1, 5,13,8,3,7,1, 5,13,7,3,6,1, + 5,13,6,3,5,1, 5,13,5,3,4,1, 5,13,4,3,3,1, 5,13,3,3,2,1, 5,13,2,3,1,1, 5,13,2,6,9,1, 5,12,13,5,4,2, 5,12,2,6,9,2, + 5,11,13,5,4,3, 5,11,2,6,9,3, 5,10,13,5,4,4, 5,10,2,6,9,4, 5,9,13,5,4,5, 5,9,2,6,9,5, 5,8,13,5,4,6, 5,8,2,6,9,6, + 5,7,13,5,4,7, 5,7,2,6,9,7, 5,6,13,5,4,8, 5,6,2,6,9,8, 5,5,13,5,4,9, 5,5,2,6,9,9, 5,4,13,5,4,10, 5,4,2,6,9,10, + 5,3,13,5,4,11, 5,3,2,6,9,11, 5,2,13,5,4,12, 5,2,2,6,9,12, 5,1,13,5,4,13, 5,1,2,6,9,13, 5,0,13,5,4,14, 5,0,2,6,9,14, + 6,13,13,3,12,1, 6,13,13,5,5,1, 6,13,12,3,11,1, 6,13,11,3,10,1, 6,13,10,3,9,1, 6,13,9,3,8,1, 6,13,8,3,7,1, 6,13,7,3,6,1, + 6,13,6,3,5,1, 6,13,5,3,4,1, 6,13,4,3,3,1, 6,13,3,3,2,1, 6,13,2,3,1,1, 6,13,2,6,8,1, 6,12,13,5,5,2, 6,12,2,6,8,2, + 6,11,13,5,5,3, 6,11,2,6,8,3, 6,10,13,5,5,4, 6,10,2,6,8,4, 6,9,13,5,5,5, 6,9,2,6,8,5, 6,8,13,5,5,6, 6,8,2,6,8,6, + 6,7,13,5,5,7, 6,7,2,6,8,7, 6,6,13,5,5,8, 6,6,2,6,8,8, 6,5,13,5,5,9, 6,5,2,6,8,9, 6,4,13,5,5,10, 6,4,2,6,8,10, + 6,3,13,5,5,11, 6,3,2,6,8,11, 6,2,13,5,5,12, 6,2,2,6,8,12, 6,1,13,5,5,13, 6,1,2,6,8,13, 6,0,13,5,5,14, 6,0,2,6,8,14, + 7,13,13,3,12,1, 7,13,13,5,6,1, 7,13,12,3,11,1, 7,13,11,3,10,1, 7,13,10,3,9,1, 7,13,9,3,8,1, 7,13,8,3,7,1, 7,13,7,3,6,1, + 7,13,6,3,5,1, 7,13,5,3,4,1, 7,13,4,3,3,1, 7,13,3,3,2,1, 7,13,2,3,1,1, 7,13,2,6,7,1, 7,12,13,5,6,2, 7,12,2,6,7,2, + 7,11,13,5,6,3, 7,11,2,6,7,3, 7,10,13,5,6,4, 7,10,2,6,7,4, 7,9,13,5,6,5, 7,9,2,6,7,5, 7,8,13,5,6,6, 7,8,2,6,7,6, + 7,7,13,5,6,7, 7,7,2,6,7,7, 7,6,13,5,6,8, 7,6,2,6,7,8, 7,5,13,5,6,9, 7,5,2,6,7,9, 7,4,13,5,6,10, 7,4,2,6,7,10, + 7,3,13,5,6,11, 7,3,2,6,7,11, 7,2,13,5,6,12, 7,2,2,6,7,12, 7,1,13,5,6,13, 7,1,2,6,7,13, 7,0,13,5,6,14, 7,0,2,6,7,14, + 8,13,13,3,12,1, 8,13,13,5,7,1, 8,13,12,3,11,1, 8,13,11,3,10,1, 8,13,10,3,9,1, 8,13,9,3,8,1, 8,13,8,3,7,1, 8,13,7,3,6,1, + 8,13,6,3,5,1, 8,13,5,3,4,1, 8,13,4,3,3,1, 8,13,3,3,2,1, 8,13,2,3,1,1, 8,13,2,6,6,1, 8,12,13,5,7,2, 8,12,2,6,6,2, + 8,11,13,5,7,3, 8,11,2,6,6,3, 8,10,13,5,7,4, 8,10,2,6,6,4, 8,9,13,5,7,5, 8,9,2,6,6,5, 8,8,13,5,7,6, 8,8,2,6,6,6, + 8,7,13,5,7,7, 8,7,2,6,6,7, 8,6,13,5,7,8, 8,6,2,6,6,8, 8,5,13,5,7,9, 8,5,2,6,6,9, 8,4,13,5,7,10, 8,4,2,6,6,10, + 8,3,13,5,7,11, 8,3,2,6,6,11, 8,2,13,5,7,12, 8,2,2,6,6,12, 8,1,13,5,7,13, 8,1,2,6,6,13, 8,0,13,5,7,14, 8,0,2,6,6,14, + 9,13,13,3,12,1, 9,13,13,5,8,1, 9,13,12,3,11,1, 9,13,11,3,10,1, 9,13,10,3,9,1, 9,13,9,3,8,1, 9,13,8,3,7,1, 9,13,7,3,6,1, + 9,13,6,3,5,1, 9,13,5,3,4,1, 9,13,4,3,3,1, 9,13,3,3,2,1, 9,13,2,3,1,1, 9,13,2,6,5,1, 9,12,13,5,8,2, 9,12,2,6,5,2, + 9,11,13,5,8,3, 9,11,2,6,5,3, 9,10,13,5,8,4, 9,10,2,6,5,4, 9,9,13,5,8,5, 9,9,2,6,5,5, 9,8,13,5,8,6, 9,8,2,6,5,6, + 9,7,13,5,8,7, 9,7,2,6,5,7, 9,6,13,5,8,8, 9,6,2,6,5,8, 9,5,13,5,8,9, 9,5,2,6,5,9, 9,4,13,5,8,10, 9,4,2,6,5,10, + 9,3,13,5,8,11, 9,3,2,6,5,11, 9,2,13,5,8,12, 9,2,2,6,5,12, 9,1,13,5,8,13, 9,1,2,6,5,13, 9,0,13,5,8,14, 9,0,2,6,5,14, + 10,13,13,3,12,1, 10,13,13,5,9,1, 10,13,12,3,11,1, 10,13,11,3,10,1, 10,13,10,3,9,1, 10,13,9,3,8,1, 10,13,8,3,7,1, 10,13,7,3,6,1, + 10,13,6,3,5,1, 10,13,5,3,4,1, 10,13,4,3,3,1, 10,13,3,3,2,1, 10,13,2,3,1,1, 10,13,2,6,4,1, 10,12,13,5,9,2, 10,12,2,6,4,2, + 10,11,13,5,9,3, 10,11,2,6,4,3, 10,10,13,5,9,4, 10,10,2,6,4,4, 10,9,13,5,9,5, 10,9,2,6,4,5, 10,8,13,5,9,6, 10,8,2,6,4,6, + 10,7,13,5,9,7, 10,7,2,6,4,7, 10,6,13,5,9,8, 10,6,2,6,4,8, 10,5,13,5,9,9, 10,5,2,6,4,9, 10,4,13,5,9,10, 10,4,2,6,4,10, + 10,3,13,5,9,11, 10,3,2,6,4,11, 10,2,13,5,9,12, 10,2,2,6,4,12, 10,1,13,5,9,13, 10,1,2,6,4,13, 10,0,13,5,9,14, 10,0,2,6,4,14, + 11,13,13,3,12,1, 11,13,13,5,10,1, 11,13,12,3,11,1, 11,13,11,3,10,1, 11,13,10,3,9,1, 11,13,9,3,8,1, 11,13,8,3,7,1, 11,13,7,3,6,1, + 11,13,6,3,5,1, 11,13,5,3,4,1, 11,13,4,3,3,1, 11,13,3,3,2,1, 11,13,2,3,1,1, 11,13,2,6,3,1, 11,12,13,5,10,2, 11,12,2,6,3,2, + 11,11,13,5,10,3, 11,11,2,6,3,3, 11,10,13,5,10,4, 11,10,2,6,3,4, 11,9,13,5,10,5, 11,9,2,6,3,5, 11,8,13,5,10,6, 11,8,2,6,3,6, + 11,7,13,5,10,7, 11,7,2,6,3,7, 11,6,13,5,10,8, 11,6,2,6,3,8, 11,5,13,5,10,9, 11,5,2,6,3,9, 11,4,13,5,10,10, 11,4,2,6,3,10, + 11,3,13,5,10,11, 11,3,2,6,3,11, 11,2,13,5,10,12, 11,2,2,6,3,12, 11,1,13,5,10,13, 11,1,2,6,3,13, 11,0,13,5,10,14, 11,0,2,6,3,14, + 12,13,13,3,12,1, 12,13,13,5,11,1, 12,13,12,3,11,1, 12,13,11,3,10,1, 12,13,10,3,9,1, 12,13,9,3,8,1, 12,13,8,3,7,1, 12,13,7,3,6,1, + 12,13,6,3,5,1, 12,13,5,3,4,1, 12,13,4,3,3,1, 12,13,3,3,2,1, 12,13,2,3,1,1, 12,13,2,6,2,1, 12,12,13,5,11,2, 12,12,2,6,2,2, + 12,11,13,5,11,3, 12,11,2,6,2,3, 12,10,13,5,11,4, 12,10,2,6,2,4, 12,9,13,5,11,5, 12,9,2,6,2,5, 12,8,13,5,11,6, 12,8,2,6,2,6, + 12,7,13,5,11,7, 12,7,2,6,2,7, 12,6,13,5,11,8, 12,6,2,6,2,8, 12,5,13,5,11,9, 12,5,2,6,2,9, 12,4,13,5,11,10, 12,4,2,6,2,10, + 12,3,13,5,11,11, 12,3,2,6,2,11, 12,2,13,5,11,12, 12,2,2,6,2,12, 12,1,13,5,11,13, 12,1,2,6,2,13, 12,0,13,5,11,14, 12,0,2,6,2,14, + 13,13,13,1,12,1, 13,13,13,3,12,1, 13,13,13,5,12,1, 13,13,12,1,11,1, 13,13,12,3,11,1, 13,13,11,1,10,1, 13,13,11,3,10,1, 13,13,10,1,9,1, + 13,13,10,3,9,1, 13,13,9,1,8,1, 13,13,9,3,8,1, 13,13,8,1,7,1, 13,13,8,3,7,1, 13,13,7,1,6,1, 13,13,7,3,6,1, 13,13,6,1,5,1, + 13,13,6,3,5,1, 13,13,5,1,4,1, 13,13,5,3,4,1, 13,13,4,1,3,1, 13,13,4,3,3,1, 13,13,3,1,2,1, 13,13,3,3,2,1, 13,13,2,1,1,1, + 13,13,2,3,1,1, 13,13,2,6,1,1, 13,12,13,1,12,2, 13,12,13,5,12,2, 13,12,12,1,11,2, 13,12,11,1,10,2, 13,12,10,1,9,2, 13,12,9,1,8,2, + 13,12,8,1,7,2, 13,12,7,1,6,2, 13,12,6,1,5,2, 13,12,5,1,4,2, 13,12,4,1,3,2, 13,12,3,1,2,2, 13,12,2,1,1,2, 13,12,2,6,1,2, + 13,11,13,1,12,3, 13,11,13,5,12,3, 13,11,12,1,11,3, 13,11,11,1,10,3, 13,11,10,1,9,3, 13,11,9,1,8,3, 13,11,8,1,7,3, 13,11,7,1,6,3, + 13,11,6,1,5,3, 13,11,5,1,4,3, 13,11,4,1,3,3, 13,11,3,1,2,3, 13,11,2,1,1,3, 13,11,2,6,1,3, 13,10,13,1,12,4, 13,10,13,5,12,4, + 13,10,12,1,11,4, 13,10,11,1,10,4, 13,10,10,1,9,4, 13,10,9,1,8,4, 13,10,8,1,7,4, 13,10,7,1,6,4, 13,10,6,1,5,4, 13,10,5,1,4,4, + 13,10,4,1,3,4, 13,10,3,1,2,4, 13,10,2,1,1,4, 13,10,2,6,1,4, 13,9,13,1,12,5, 13,9,13,5,12,5, 13,9,12,1,11,5, 13,9,11,1,10,5, + 13,9,10,1,9,5, 13,9,9,1,8,5, 13,9,8,1,7,5, 13,9,7,1,6,5, 13,9,6,1,5,5, 13,9,5,1,4,5, 13,9,4,1,3,5, 13,9,3,1,2,5, + 13,9,2,1,1,5, 13,9,2,6,1,5, 13,8,13,1,12,6, 13,8,13,5,12,6, 13,8,12,1,11,6, 13,8,11,1,10,6, 13,8,10,1,9,6, 13,8,9,1,8,6, + 13,8,8,1,7,6, 13,8,7,1,6,6, 13,8,6,1,5,6, 13,8,5,1,4,6, 13,8,4,1,3,6, 13,8,3,1,2,6, 13,8,2,1,1,6, 13,8,2,6,1,6, + 13,7,13,1,12,7, 13,7,13,5,12,7, 13,7,12,1,11,7, 13,7,11,1,10,7, 13,7,10,1,9,7, 13,7,9,1,8,7, 13,7,8,1,7,7, 13,7,7,1,6,7, + 13,7,6,1,5,7, 13,7,5,1,4,7, 13,7,4,1,3,7, 13,7,3,1,2,7, 13,7,2,1,1,7, 13,7,2,6,1,7, 13,6,13,1,12,8, 13,6,13,5,12,8, + 13,6,12,1,11,8, 13,6,11,1,10,8, 13,6,10,1,9,8, 13,6,9,1,8,8, 13,6,8,1,7,8, 13,6,7,1,6,8, 13,6,6,1,5,8, 13,6,5,1,4,8, + 13,6,4,1,3,8, 13,6,3,1,2,8, 13,6,2,1,1,8, 13,6,2,6,1,8, 13,5,13,1,12,9, 13,5,13,5,12,9, 13,5,12,1,11,9, 13,5,11,1,10,9, + 13,5,10,1,9,9, 13,5,9,1,8,9, 13,5,8,1,7,9, 13,5,7,1,6,9, 13,5,6,1,5,9, 13,5,5,1,4,9, 13,5,4,1,3,9, 13,5,3,1,2,9, + 13,5,2,1,1,9, 13,5,2,6,1,9, 13,4,13,1,12,10, 13,4,13,5,12,10, 13,4,12,1,11,10, 13,4,11,1,10,10, 13,4,10,1,9,10, 13,4,9,1,8,10, + 13,4,8,1,7,10, 13,4,7,1,6,10, 13,4,6,1,5,10, 13,4,5,1,4,10, 13,4,4,1,3,10, 13,4,3,1,2,10, 13,4,2,1,1,10, 13,4,2,6,1,10, + 13,3,13,1,12,11, 13,3,13,5,12,11, 13,3,12,1,11,11, 13,3,11,1,10,11, 13,3,10,1,9,11, 13,3,9,1,8,11, 13,3,8,1,7,11, 13,3,7,1,6,11, + 13,3,6,1,5,11, 13,3,5,1,4,11, 13,3,4,1,3,11, 13,3,3,1,2,11, 13,3,2,1,1,11, 13,3,2,6,1,11, 13,2,13,1,12,12, 13,2,13,5,12,12, + 13,2,12,1,11,12, 13,2,11,1,10,12, 13,2,10,1,9,12, 13,2,9,1,8,12, 13,2,8,1,7,12, 13,2,7,1,6,12, 13,2,6,1,5,12, 13,2,5,1,4,12, + 13,2,4,1,3,12, 13,2,3,1,2,12, 13,2,2,1,1,12, 13,2,2,6,1,12, 13,1,13,1,12,13, 13,1,13,5,12,13, 13,1,12,1,11,13, 13,1,11,1,10,13, + 13,1,10,1,9,13, 13,1,9,1,8,13, 13,1,8,1,7,13, 13,1,7,1,6,13, 13,1,6,1,5,13, 13,1,5,1,4,13, 13,1,4,1,3,13, 13,1,3,1,2,13, + 13,1,2,1,1,13, 13,1,2,6,1,13, 13,0,13,1,12,14, 13,0,13,5,12,14, 13,0,12,1,11,14, 13,0,11,1,10,14, 13,0,10,1,9,14, 13,0,9,1,8,14, + 13,0,8,1,7,14, 13,0,7,1,6,14, 13,0,6,1,5,14, 13,0,5,1,4,14, 13,0,4,1,3,14, 13,0,3,1,2,14, 13,0,2,1,1,14, 13,0,2,6,1,14, + }, + }, + }, +} diff --git a/assets/voxels/cook.lua b/assets/voxels/cook.lua new file mode 100644 index 0000000..517603b --- /dev/null +++ b/assets/voxels/cook.lua @@ -0,0 +1,330 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "cook" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "cook", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1606, + count = 1166, + faces = { + 1,9,13,2,3,38, 1,9,13,3,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,12,3,4,38, 1,9,11,2,5,38, 1,9,11,3,5,38, 1,9,10,2,6,38, + 1,9,10,3,6,38, 1,9,9,2,7,38, 1,9,9,3,7,38, 1,9,8,2,8,38, 1,9,8,3,8,38, 1,9,7,2,9,38, 1,9,7,3,9,38, 1,9,6,2,10,38, + 1,9,6,3,10,38, 1,9,5,2,11,38, 1,9,5,3,11,38, 1,9,4,2,12,38, 1,9,4,3,12,38, 1,9,3,2,13,38, 1,9,3,3,13,38, 1,9,3,4,1,6, + 1,9,3,6,14,22, 1,8,13,2,3,39, 1,8,13,4,1,7, 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,12,4,1,7, 1,8,11,2,5,39, 1,8,11,4,1,7, + 1,8,10,2,6,39, 1,8,10,4,1,7, 1,8,9,2,7,39, 1,8,9,4,1,7, 1,8,8,2,8,39, 1,8,8,4,1,7, 1,8,7,2,9,39, 1,8,7,4,1,7, + 1,8,6,2,10,39, 1,8,6,4,1,7, 1,8,5,2,11,39, 1,8,5,4,1,7, 1,8,4,2,12,39, 1,8,4,4,1,7, 1,8,4,6,14,23, 1,5,11,2,5,42, + 1,5,11,3,5,42, 1,5,11,4,1,10, 1,5,11,5,1,10, 1,5,10,2,6,42, 1,5,10,3,6,42, 1,5,9,2,7,42, 1,5,9,3,7,42, 1,5,8,2,8,42, + 1,5,8,3,8,42, 1,5,7,2,9,42, 1,5,7,3,9,42, 1,5,6,2,10,42, 1,5,6,3,10,42, 1,5,5,2,11,42, 1,5,5,3,11,42, 1,5,5,6,14,26, + 1,4,10,2,6,43, 1,4,10,4,1,11, 1,4,10,5,1,11, 1,4,9,2,7,43, 1,4,9,4,1,11, 1,4,8,2,8,43, 1,4,8,4,1,11, 1,4,7,2,9,43, + 1,4,7,4,1,11, 1,4,6,2,10,43, 1,4,6,4,1,11, 1,4,5,2,11,43, 1,4,5,4,1,11, 1,4,5,6,14,27, 2,14,14,2,2,33, 2,14,14,3,2,33, + 2,14,14,4,2,1, 2,14,14,5,2,1, 2,14,13,2,3,33, 2,14,13,3,3,33, 2,14,13,4,2,1, 2,14,12,2,4,33, 2,14,12,3,4,33, 2,14,12,4,2,1, + 2,14,11,2,5,33, 2,14,11,3,5,33, 2,14,11,4,2,1, 2,14,10,2,6,33, 2,14,10,3,6,33, 2,14,10,4,2,1, 2,14,9,2,7,33, 2,14,9,3,7,33, + 2,14,9,4,2,1, 2,14,8,2,8,33, 2,14,8,3,8,33, 2,14,8,4,2,1, 2,14,7,2,9,33, 2,14,7,3,9,33, 2,14,7,4,2,1, 2,14,6,2,10,33, + 2,14,6,3,10,33, 2,14,6,4,2,1, 2,14,5,2,11,33, 2,14,5,3,11,33, 2,14,5,4,2,1, 2,14,4,2,12,33, 2,14,4,3,12,33, 2,14,4,4,2,1, + 2,14,3,2,13,33, 2,14,3,3,13,33, 2,14,3,4,2,1, 2,14,2,2,14,33, 2,14,2,3,14,33, 2,14,2,4,2,1, 2,14,2,6,13,17, 2,11,13,2,3,36, + 2,11,13,3,3,36, 2,11,13,5,2,4, 2,11,12,2,4,36, 2,11,12,3,4,36, 2,11,11,2,5,36, 2,11,11,3,5,36, 2,11,10,2,6,36, 2,11,10,3,6,36, + 2,11,9,2,7,36, 2,11,9,3,7,36, 2,11,8,2,8,36, 2,11,8,3,8,36, 2,11,7,2,9,36, 2,11,7,3,9,36, 2,11,6,2,10,36, 2,11,6,3,10,36, + 2,11,5,2,11,36, 2,11,5,3,11,36, 2,11,4,2,12,36, 2,11,4,3,12,36, 2,11,3,2,13,36, 2,11,3,3,13,36, 2,11,3,6,13,20, 2,10,13,2,3,37, + 2,10,13,5,2,5, 2,10,12,2,4,37, 2,10,11,2,5,37, 2,10,10,2,6,37, 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, 2,10,6,2,10,37, + 2,10,5,2,11,37, 2,10,4,2,12,37, 2,10,3,2,13,37, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,3,4,2,6, 2,9,3,6,13,22, 2,8,13,5,2,7, + 2,8,4,4,2,7, 2,8,4,6,13,23, 2,7,13,2,3,40, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,12,2,4,40, 2,7,11,2,5,40, 2,7,10,2,6,40, + 2,7,9,2,7,40, 2,7,8,2,8,40, 2,7,7,2,9,40, 2,7,6,2,10,40, 2,7,5,2,11,40, 2,7,5,4,2,8, 2,7,5,6,13,24, 2,6,12,2,4,41, + 2,6,12,4,2,9, 2,6,12,5,2,9, 2,6,11,2,5,41, 2,6,10,2,6,41, 2,6,9,2,7,41, 2,6,8,2,8,41, 2,6,7,2,9,41, 2,6,6,2,10,41, + 2,6,6,6,13,25, 2,5,11,4,2,10, 2,5,11,5,2,10, 2,5,5,3,11,42, 2,5,5,6,13,26, 2,4,10,5,2,11, 2,4,5,6,13,27, 2,3,10,2,6,44, + 2,3,10,4,2,12, 2,3,10,5,2,12, 2,3,9,2,7,44, 2,3,9,4,2,12, 2,3,8,2,8,44, 2,3,8,4,2,12, 2,3,7,2,9,44, 2,3,7,4,2,12, + 2,3,6,2,10,44, 2,3,6,4,2,12, 2,3,5,2,11,44, 2,3,5,4,2,12, 2,3,5,6,13,28, 3,15,13,2,3,32, 3,15,13,3,3,32, 3,15,13,5,3,0, + 3,15,12,2,4,32, 3,15,12,3,4,32, 3,15,12,6,12,16, 3,15,10,2,6,32, 3,15,10,3,6,32, 3,15,10,5,3,0, 3,15,9,2,7,32, 3,15,9,3,7,32, + 3,15,8,2,8,32, 3,15,8,3,8,32, 3,15,7,2,9,32, 3,15,7,3,9,32, 3,15,6,2,10,32, 3,15,6,3,10,32, 3,15,6,6,12,16, 3,15,4,2,12,32, + 3,15,4,3,12,32, 3,15,4,5,3,0, 3,15,3,2,13,32, 3,15,3,3,13,32, 3,15,3,6,12,16, 3,14,14,3,2,33, 3,14,14,4,3,1, 3,14,14,5,3,1, + 3,14,11,3,5,33, 3,14,5,3,11,33, 3,14,2,3,14,33, 3,14,2,4,3,1, 3,14,2,6,12,17, 3,13,13,2,3,34, 3,13,13,5,3,2, 3,13,12,2,4,34, + 3,13,11,2,5,34, 3,13,10,2,6,34, 3,13,9,2,7,34, 3,13,8,2,8,34, 3,13,7,2,9,34, 3,13,6,2,10,34, 3,13,5,2,11,34, 3,13,4,2,12,34, + 3,13,3,2,13,34, 3,13,3,6,12,18, 3,12,13,2,3,35, 3,12,13,5,3,3, 3,12,12,2,4,35, 3,12,11,2,5,35, 3,12,10,2,6,35, 3,12,9,2,7,35, + 3,12,8,2,8,35, 3,12,7,2,9,35, 3,12,6,2,10,35, 3,12,5,2,11,35, 3,12,4,2,12,35, 3,12,3,2,13,35, 3,12,3,6,12,19, 3,11,13,5,3,4, + 3,11,3,6,12,20, 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,3,4,3,6, 3,9,3,6,12,22, 3,8,13,5,3,7, 3,8,4,4,3,7, + 3,8,4,6,12,23, 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,5,4,3,8, 3,7,5,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,6,6,12,25, + 3,5,11,4,3,10, 3,5,11,5,3,10, 3,5,5,3,11,42, 3,5,5,6,12,26, 3,4,10,5,3,11, 3,4,5,6,12,27, 3,3,10,5,3,12, 3,3,5,6,12,28, + 3,2,11,2,5,45, 3,2,11,3,5,45, 3,2,11,5,3,13, 3,2,10,2,6,45, 3,2,9,2,7,45, 3,2,8,2,8,45, 3,2,7,2,9,45, 3,2,6,2,10,45, + 3,2,5,2,11,45, 3,2,5,4,3,13, 3,2,5,6,12,29, 3,1,11,2,5,46, 3,1,11,4,3,14, 3,1,11,5,3,14, 3,1,10,2,6,46, 3,1,10,4,3,14, + 3,1,9,2,7,46, 3,1,9,4,3,14, 3,1,8,2,8,46, 3,1,8,4,3,14, 3,1,7,2,9,46, 3,1,7,4,3,14, 3,1,6,2,10,46, 3,1,6,4,3,14, + 3,1,6,6,12,30, 4,15,13,1,3,32, 4,15,13,3,3,32, 4,15,13,5,4,0, 4,15,12,1,4,32, 4,15,12,3,4,32, 4,15,12,6,11,16, 4,15,10,1,6,32, + 4,15,10,3,6,32, 4,15,10,5,4,0, 4,15,9,1,7,32, 4,15,9,3,7,32, 4,15,8,1,8,32, 4,15,8,3,8,32, 4,15,7,1,9,32, 4,15,7,3,9,32, + 4,15,6,1,10,32, 4,15,6,3,10,32, 4,15,6,6,11,16, 4,15,4,1,12,32, 4,15,4,3,12,32, 4,15,4,5,4,0, 4,15,3,1,13,32, 4,15,3,3,13,32, + 4,15,3,6,11,16, 4,14,14,3,2,33, 4,14,14,4,4,1, 4,14,14,5,4,1, 4,14,11,3,5,33, 4,14,5,3,11,33, 4,14,2,3,14,33, 4,14,2,4,4,1, + 4,14,2,6,11,17, 4,13,13,5,4,2, 4,13,3,6,11,18, 4,12,13,5,4,3, 4,12,3,6,11,19, 4,11,13,5,4,4, 4,11,3,6,11,20, 4,10,13,5,4,5, + 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,4,4,6, 4,9,3,6,11,22, 4,8,13,5,4,7, 4,8,4,4,4,7, 4,8,4,6,11,23, 4,7,13,4,4,8, + 4,7,13,5,4,8, 4,7,5,4,4,8, 4,7,5,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,6,6,11,25, 4,5,11,4,4,10, 4,5,11,5,4,10, + 4,5,5,3,11,42, 4,5,5,6,11,26, 4,4,10,5,4,11, 4,4,5,6,11,27, 4,3,10,5,4,12, 4,3,5,6,11,28, 4,2,11,3,5,45, 4,2,11,5,4,13, + 4,2,5,4,4,13, 4,2,5,6,11,29, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,6,4,4,14, 4,1,6,6,11,30, 4,0,10,2,6,47, 4,0,10,5,4,15, + 4,0,9,2,7,47, 4,0,8,2,8,47, 4,0,7,2,9,47, 4,0,7,6,11,31, 5,14,14,3,2,33, 5,14,14,4,5,1, 5,14,14,5,5,1, 5,14,13,3,3,33, + 5,14,12,3,4,33, 5,14,11,3,5,33, 5,14,10,3,6,33, 5,14,9,3,7,33, 5,14,8,3,8,33, 5,14,7,3,9,33, 5,14,6,3,10,33, 5,14,5,3,11,33, + 5,14,4,3,12,33, 5,14,3,3,13,33, 5,14,2,3,14,33, 5,14,2,4,5,1, 5,14,2,6,10,17, 5,13,13,5,5,2, 5,13,3,6,10,18, 5,12,13,5,5,3, + 5,12,3,6,10,19, 5,11,13,5,5,4, 5,11,3,6,10,20, 5,10,13,5,5,5, 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,3,4,5,6, 5,9,3,6,10,22, + 5,8,13,5,5,7, 5,8,4,4,5,7, 5,8,4,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,5,4,5,8, 5,7,5,6,10,24, 5,6,12,4,5,9, + 5,6,12,5,5,9, 5,6,6,6,10,25, 5,5,11,4,5,10, 5,5,11,5,5,10, 5,5,5,3,11,42, 5,5,5,6,10,26, 5,4,10,5,5,11, 5,4,5,6,10,27, + 5,3,10,5,5,12, 5,3,5,6,10,28, 5,2,11,3,5,45, 5,2,11,5,5,13, 5,2,5,4,5,13, 5,2,5,6,10,29, 5,1,11,4,5,14, 5,1,11,5,5,14, + 5,1,6,4,5,14, 5,1,6,6,10,30, 5,0,10,5,5,15, 5,0,7,6,10,31, 6,15,13,2,3,32, 6,15,13,3,3,32, 6,15,13,5,6,0, 6,15,12,2,4,32, + 6,15,12,3,4,32, 6,15,12,6,9,16, 6,15,10,2,6,32, 6,15,10,3,6,32, 6,15,10,5,6,0, 6,15,9,2,7,32, 6,15,9,3,7,32, 6,15,8,2,8,32, + 6,15,8,3,8,32, 6,15,7,2,9,32, 6,15,7,3,9,32, 6,15,6,2,10,32, 6,15,6,3,10,32, 6,15,6,6,9,16, 6,15,4,2,12,32, 6,15,4,3,12,32, + 6,15,4,5,6,0, 6,15,3,2,13,32, 6,15,3,3,13,32, 6,15,3,6,9,16, 6,14,14,3,2,33, 6,14,14,4,6,1, 6,14,14,5,6,1, 6,14,11,3,5,33, + 6,14,5,3,11,33, 6,14,2,3,14,33, 6,14,2,4,6,1, 6,14,2,6,9,17, 6,13,13,5,6,2, 6,13,3,6,9,18, 6,12,13,5,6,3, 6,12,3,6,9,19, + 6,11,13,5,6,4, 6,11,3,6,9,20, 6,10,13,5,6,5, 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,3,4,6,6, 6,9,3,6,9,22, 6,8,13,5,6,7, + 6,8,4,4,6,7, 6,8,4,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,5,4,6,8, 6,7,5,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, + 6,6,6,6,9,25, 6,5,11,4,6,10, 6,5,11,5,6,10, 6,5,5,3,11,42, 6,5,5,6,9,26, 6,4,10,5,6,11, 6,4,5,6,9,27, 6,3,10,5,6,12, + 6,3,5,6,9,28, 6,2,11,3,5,45, 6,2,11,5,6,13, 6,2,5,4,6,13, 6,2,5,6,9,29, 6,1,11,4,6,14, 6,1,11,5,6,14, 6,1,6,4,6,14, + 6,1,6,6,9,30, 6,0,10,1,6,47, 6,0,10,5,6,15, 6,0,9,1,7,47, 6,0,8,1,8,47, 6,0,7,1,9,47, 6,0,7,6,9,31, 7,15,13,3,3,32, + 7,15,13,5,7,0, 7,15,12,3,4,32, 7,15,12,6,8,16, 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, + 7,15,6,3,10,32, 7,15,6,6,8,16, 7,15,4,3,12,32, 7,15,4,5,7,0, 7,15,3,3,13,32, 7,15,3,6,8,16, 7,14,14,3,2,33, 7,14,14,4,7,1, + 7,14,14,5,7,1, 7,14,11,3,5,33, 7,14,5,3,11,33, 7,14,2,3,14,33, 7,14,2,4,7,1, 7,14,2,6,8,17, 7,13,13,5,7,2, 7,13,3,6,8,18, + 7,12,13,5,7,3, 7,12,3,6,8,19, 7,11,13,5,7,4, 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,3,4,7,6, + 7,9,3,6,8,22, 7,8,13,5,7,7, 7,8,4,4,7,7, 7,8,4,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,5,4,7,8, 7,7,5,6,8,24, + 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,6,6,8,25, 7,5,11,4,7,10, 7,5,11,5,7,10, 7,5,5,3,11,42, 7,5,5,6,8,26, 7,4,10,5,7,11, + 7,4,5,6,8,27, 7,3,10,5,7,12, 7,3,5,6,8,28, 7,2,11,3,5,45, 7,2,11,5,7,13, 7,2,5,4,7,13, 7,2,5,6,8,29, 7,1,11,4,7,14, + 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,6,6,8,30, 8,15,13,3,3,32, + 8,15,13,5,8,0, 8,15,12,3,4,32, 8,15,12,6,7,16, 8,15,10,3,6,32, 8,15,10,5,8,0, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, + 8,15,6,3,10,32, 8,15,6,6,7,16, 8,15,4,3,12,32, 8,15,4,5,8,0, 8,15,3,3,13,32, 8,15,3,6,7,16, 8,14,14,3,2,33, 8,14,14,4,8,1, + 8,14,14,5,8,1, 8,14,11,3,5,33, 8,14,5,3,11,33, 8,14,2,3,14,33, 8,14,2,4,8,1, 8,14,2,6,7,17, 8,13,13,5,8,2, 8,13,3,6,7,18, + 8,12,13,5,8,3, 8,12,3,6,7,19, 8,11,13,5,8,4, 8,11,3,6,7,20, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,4,8,6, + 8,9,3,6,7,22, 8,8,13,5,8,7, 8,8,4,4,8,7, 8,8,4,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,5,4,8,8, 8,7,5,6,7,24, + 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,6,6,7,25, 8,5,11,4,8,10, 8,5,11,5,8,10, 8,5,5,3,11,42, 8,5,5,6,7,26, 8,4,10,5,8,11, + 8,4,5,6,7,27, 8,3,10,5,8,12, 8,3,5,6,7,28, 8,2,11,3,5,45, 8,2,11,5,8,13, 8,2,5,4,8,13, 8,2,5,6,7,29, 8,1,11,4,8,14, + 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,6,6,7,30, 9,15,13,1,3,32, + 9,15,13,3,3,32, 9,15,13,5,9,0, 9,15,12,1,4,32, 9,15,12,3,4,32, 9,15,12,6,6,16, 9,15,10,1,6,32, 9,15,10,3,6,32, 9,15,10,5,9,0, + 9,15,9,1,7,32, 9,15,9,3,7,32, 9,15,8,1,8,32, 9,15,8,3,8,32, 9,15,7,1,9,32, 9,15,7,3,9,32, 9,15,6,1,10,32, 9,15,6,3,10,32, + 9,15,6,6,6,16, 9,15,4,1,12,32, 9,15,4,3,12,32, 9,15,4,5,9,0, 9,15,3,1,13,32, 9,15,3,3,13,32, 9,15,3,6,6,16, 9,14,14,3,2,33, + 9,14,14,4,9,1, 9,14,14,5,9,1, 9,14,11,3,5,33, 9,14,5,3,11,33, 9,14,2,3,14,33, 9,14,2,4,9,1, 9,14,2,6,6,17, 9,13,13,5,9,2, + 9,13,3,6,6,18, 9,12,13,5,9,3, 9,12,3,6,6,19, 9,11,13,5,9,4, 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, + 9,9,3,4,9,6, 9,9,3,6,6,22, 9,8,13,5,9,7, 9,8,4,4,9,7, 9,8,4,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,5,4,9,8, + 9,7,5,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,6,6,6,25, 9,5,11,4,9,10, 9,5,11,5,9,10, 9,5,5,3,11,42, 9,5,5,6,6,26, + 9,4,10,5,9,11, 9,4,5,6,6,27, 9,3,10,5,9,12, 9,3,5,6,6,28, 9,2,11,3,5,45, 9,2,11,5,9,13, 9,2,5,4,9,13, 9,2,5,6,6,29, + 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,6,4,9,14, 9,1,6,6,6,30, 9,0,10,2,6,47, 9,0,10,5,9,15, 9,0,9,2,7,47, 9,0,8,2,8,47, + 9,0,7,2,9,47, 9,0,7,6,6,31, 10,14,14,3,2,33, 10,14,14,4,10,1, 10,14,14,5,10,1, 10,14,13,3,3,33, 10,14,12,3,4,33, 10,14,11,3,5,33, + 10,14,10,3,6,33, 10,14,9,3,7,33, 10,14,8,3,8,33, 10,14,7,3,9,33, 10,14,6,3,10,33, 10,14,5,3,11,33, 10,14,4,3,12,33, 10,14,3,3,13,33, + 10,14,2,3,14,33, 10,14,2,4,10,1, 10,14,2,6,5,17, 10,13,13,5,10,2, 10,13,3,6,5,18, 10,12,13,5,10,3, 10,12,3,6,5,19, 10,11,13,5,10,4, + 10,11,3,6,5,20, 10,10,13,5,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,3,4,10,6, 10,9,3,6,5,22, 10,8,13,5,10,7, 10,8,4,4,10,7, + 10,8,4,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,5,4,10,8, 10,7,5,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,6,6,5,25, + 10,5,11,4,10,10, 10,5,11,5,10,10, 10,5,5,3,11,42, 10,5,5,6,5,26, 10,4,10,5,10,11, 10,4,5,6,5,27, 10,3,10,5,10,12, 10,3,5,6,5,28, + 10,2,11,3,5,45, 10,2,11,5,10,13, 10,2,5,4,10,13, 10,2,5,6,5,29, 10,1,11,4,10,14, 10,1,11,5,10,14, 10,1,6,4,10,14, 10,1,6,6,5,30, + 10,0,10,5,10,15, 10,0,7,6,5,31, 11,15,13,2,3,32, 11,15,13,3,3,32, 11,15,13,5,11,0, 11,15,12,2,4,32, 11,15,12,3,4,32, 11,15,12,6,4,16, + 11,15,10,2,6,32, 11,15,10,3,6,32, 11,15,10,5,11,0, 11,15,9,2,7,32, 11,15,9,3,7,32, 11,15,8,2,8,32, 11,15,8,3,8,32, 11,15,7,2,9,32, + 11,15,7,3,9,32, 11,15,6,2,10,32, 11,15,6,3,10,32, 11,15,6,6,4,16, 11,15,4,2,12,32, 11,15,4,3,12,32, 11,15,4,5,11,0, 11,15,3,2,13,32, + 11,15,3,3,13,32, 11,15,3,6,4,16, 11,14,14,3,2,33, 11,14,14,4,11,1, 11,14,14,5,11,1, 11,14,11,3,5,33, 11,14,5,3,11,33, 11,14,2,3,14,33, + 11,14,2,4,11,1, 11,14,2,6,4,17, 11,13,13,5,11,2, 11,13,3,6,4,18, 11,12,13,5,11,3, 11,12,3,6,4,19, 11,11,13,5,11,4, 11,11,3,6,4,20, + 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,4,11,6, 11,9,3,6,4,22, 11,8,13,5,11,7, 11,8,4,4,11,7, 11,8,4,6,4,23, + 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,5,4,11,8, 11,7,5,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,6,6,4,25, 11,5,11,4,11,10, + 11,5,11,5,11,10, 11,5,5,3,11,42, 11,5,5,6,4,26, 11,4,10,5,11,11, 11,4,5,6,4,27, 11,3,10,5,11,12, 11,3,5,6,4,28, 11,2,11,3,5,45, + 11,2,11,5,11,13, 11,2,5,4,11,13, 11,2,5,6,4,29, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,6,4,11,14, 11,1,6,6,4,30, 11,0,10,1,6,47, + 11,0,10,5,11,15, 11,0,9,1,7,47, 11,0,8,1,8,47, 11,0,7,1,9,47, 11,0,7,6,4,31, 12,15,13,1,3,32, 12,15,13,3,3,32, 12,15,13,5,12,0, + 12,15,12,1,4,32, 12,15,12,3,4,32, 12,15,12,6,3,16, 12,15,10,1,6,32, 12,15,10,3,6,32, 12,15,10,5,12,0, 12,15,9,1,7,32, 12,15,9,3,7,32, + 12,15,8,1,8,32, 12,15,8,3,8,32, 12,15,7,1,9,32, 12,15,7,3,9,32, 12,15,6,1,10,32, 12,15,6,3,10,32, 12,15,6,6,3,16, 12,15,4,1,12,32, + 12,15,4,3,12,32, 12,15,4,5,12,0, 12,15,3,1,13,32, 12,15,3,3,13,32, 12,15,3,6,3,16, 12,14,14,3,2,33, 12,14,14,4,12,1, 12,14,14,5,12,1, + 12,14,11,3,5,33, 12,14,5,3,11,33, 12,14,2,3,14,33, 12,14,2,4,12,1, 12,14,2,6,3,17, 12,13,13,1,3,34, 12,13,13,5,12,2, 12,13,12,1,4,34, + 12,13,11,1,5,34, 12,13,10,1,6,34, 12,13,9,1,7,34, 12,13,8,1,8,34, 12,13,7,1,9,34, 12,13,6,1,10,34, 12,13,5,1,11,34, 12,13,4,1,12,34, + 12,13,3,1,13,34, 12,13,3,6,3,18, 12,12,13,1,3,35, 12,12,13,5,12,3, 12,12,12,1,4,35, 12,12,11,1,5,35, 12,12,10,1,6,35, 12,12,9,1,7,35, + 12,12,8,1,8,35, 12,12,7,1,9,35, 12,12,6,1,10,35, 12,12,5,1,11,35, 12,12,4,1,12,35, 12,12,3,1,13,35, 12,12,3,6,3,19, 12,11,13,5,12,4, + 12,11,3,6,3,20, 12,10,13,5,12,5, 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,3,4,12,6, 12,9,3,6,3,22, 12,8,13,5,12,7, 12,8,4,4,12,7, + 12,8,4,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,5,4,12,8, 12,7,5,6,3,24, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,6,6,3,25, + 12,5,11,4,12,10, 12,5,11,5,12,10, 12,5,5,3,11,42, 12,5,5,6,3,26, 12,4,10,5,12,11, 12,4,5,6,3,27, 12,3,10,5,12,12, 12,3,5,6,3,28, + 12,2,11,1,5,45, 12,2,11,3,5,45, 12,2,11,5,12,13, 12,2,10,1,6,45, 12,2,9,1,7,45, 12,2,8,1,8,45, 12,2,7,1,9,45, 12,2,6,1,10,45, + 12,2,5,1,11,45, 12,2,5,4,12,13, 12,2,5,6,3,29, 12,1,11,1,5,46, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,6,46, 12,1,10,4,12,14, + 12,1,9,1,7,46, 12,1,9,4,12,14, 12,1,8,1,8,46, 12,1,8,4,12,14, 12,1,7,1,9,46, 12,1,7,4,12,14, 12,1,6,1,10,46, 12,1,6,4,12,14, + 12,1,6,6,3,30, 13,14,14,1,2,33, 13,14,14,3,2,33, 13,14,14,4,13,1, 13,14,14,5,13,1, 13,14,13,1,3,33, 13,14,13,3,3,33, 13,14,13,4,13,1, + 13,14,12,1,4,33, 13,14,12,3,4,33, 13,14,12,4,13,1, 13,14,11,1,5,33, 13,14,11,3,5,33, 13,14,11,4,13,1, 13,14,10,1,6,33, 13,14,10,3,6,33, + 13,14,10,4,13,1, 13,14,9,1,7,33, 13,14,9,3,7,33, 13,14,9,4,13,1, 13,14,8,1,8,33, 13,14,8,3,8,33, 13,14,8,4,13,1, 13,14,7,1,9,33, + 13,14,7,3,9,33, 13,14,7,4,13,1, 13,14,6,1,10,33, 13,14,6,3,10,33, 13,14,6,4,13,1, 13,14,5,1,11,33, 13,14,5,3,11,33, 13,14,5,4,13,1, + 13,14,4,1,12,33, 13,14,4,3,12,33, 13,14,4,4,13,1, 13,14,3,1,13,33, 13,14,3,3,13,33, 13,14,3,4,13,1, 13,14,2,1,14,33, 13,14,2,3,14,33, + 13,14,2,4,13,1, 13,14,2,6,2,17, 13,11,13,1,3,36, 13,11,13,3,3,36, 13,11,13,5,13,4, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, + 13,11,11,3,5,36, 13,11,10,1,6,36, 13,11,10,3,6,36, 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, + 13,11,7,3,9,36, 13,11,6,1,10,36, 13,11,6,3,10,36, 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, + 13,11,3,3,13,36, 13,11,3,6,2,20, 13,10,13,1,3,37, 13,10,13,5,13,5, 13,10,12,1,4,37, 13,10,11,1,5,37, 13,10,10,1,6,37, 13,10,9,1,7,37, + 13,10,8,1,8,37, 13,10,7,1,9,37, 13,10,6,1,10,37, 13,10,5,1,11,37, 13,10,4,1,12,37, 13,10,3,1,13,37, 13,10,3,6,2,21, 13,9,13,5,13,6, + 13,9,3,4,13,6, 13,9,3,6,2,22, 13,8,13,5,13,7, 13,8,4,4,13,7, 13,8,4,6,2,23, 13,7,13,1,3,40, 13,7,13,4,13,8, 13,7,13,5,13,8, + 13,7,12,1,4,40, 13,7,11,1,5,40, 13,7,10,1,6,40, 13,7,9,1,7,40, 13,7,8,1,8,40, 13,7,7,1,9,40, 13,7,6,1,10,40, 13,7,5,1,11,40, + 13,7,5,4,13,8, 13,7,5,6,2,24, 13,6,12,1,4,41, 13,6,12,4,13,9, 13,6,12,5,13,9, 13,6,11,1,5,41, 13,6,10,1,6,41, 13,6,9,1,7,41, + 13,6,8,1,8,41, 13,6,7,1,9,41, 13,6,6,1,10,41, 13,6,6,6,2,25, 13,5,11,4,13,10, 13,5,11,5,13,10, 13,5,5,3,11,42, 13,5,5,6,2,26, + 13,4,10,5,13,11, 13,4,5,6,2,27, 13,3,10,1,6,44, 13,3,10,4,13,12, 13,3,10,5,13,12, 13,3,9,1,7,44, 13,3,9,4,13,12, 13,3,8,1,8,44, + 13,3,8,4,13,12, 13,3,7,1,9,44, 13,3,7,4,13,12, 13,3,6,1,10,44, 13,3,6,4,13,12, 13,3,5,1,11,44, 13,3,5,4,13,12, 13,3,5,6,2,28, + 14,9,13,1,3,38, 14,9,13,3,3,38, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,12,3,4,38, 14,9,11,1,5,38, 14,9,11,3,5,38, 14,9,10,1,6,38, + 14,9,10,3,6,38, 14,9,9,1,7,38, 14,9,9,3,7,38, 14,9,8,1,8,38, 14,9,8,3,8,38, 14,9,7,1,9,38, 14,9,7,3,9,38, 14,9,6,1,10,38, + 14,9,6,3,10,38, 14,9,5,1,11,38, 14,9,5,3,11,38, 14,9,4,1,12,38, 14,9,4,3,12,38, 14,9,3,1,13,38, 14,9,3,3,13,38, 14,9,3,4,14,6, + 14,9,3,6,1,22, 14,8,13,1,3,39, 14,8,13,4,14,7, 14,8,13,5,14,7, 14,8,12,1,4,39, 14,8,12,4,14,7, 14,8,11,1,5,39, 14,8,11,4,14,7, + 14,8,10,1,6,39, 14,8,10,4,14,7, 14,8,9,1,7,39, 14,8,9,4,14,7, 14,8,8,1,8,39, 14,8,8,4,14,7, 14,8,7,1,9,39, 14,8,7,4,14,7, + 14,8,6,1,10,39, 14,8,6,4,14,7, 14,8,5,1,11,39, 14,8,5,4,14,7, 14,8,4,1,12,39, 14,8,4,4,14,7, 14,8,4,6,1,23, 14,5,11,1,5,42, + 14,5,11,3,5,42, 14,5,11,4,14,10, 14,5,11,5,14,10, 14,5,10,1,6,42, 14,5,10,3,6,42, 14,5,9,1,7,42, 14,5,9,3,7,42, 14,5,8,1,8,42, + 14,5,8,3,8,42, 14,5,7,1,9,42, 14,5,7,3,9,42, 14,5,6,1,10,42, 14,5,6,3,10,42, 14,5,5,1,11,42, 14,5,5,3,11,42, 14,5,5,6,1,26, + 14,4,10,1,6,43, 14,4,10,4,14,11, 14,4,10,5,14,11, 14,4,9,1,7,43, 14,4,9,4,14,11, 14,4,8,1,8,43, 14,4,8,4,14,11, 14,4,7,1,9,43, + 14,4,7,4,14,11, 14,4,6,1,10,43, 14,4,6,4,14,11, 14,4,5,1,11,43, 14,4,5,4,14,11, 14,4,5,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1715, + count = 1212, + faces = { + 1,8,13,2,3,87, 1,8,13,3,3,87, 1,8,13,5,1,55, 1,8,12,2,4,87, 1,8,12,3,4,87, 1,8,11,2,5,87, 1,8,11,3,5,87, 1,8,10,2,6,87, + 1,8,10,3,6,87, 1,8,9,2,7,87, 1,8,9,3,7,87, 1,8,8,2,8,87, 1,8,8,3,8,87, 1,8,7,2,9,87, 1,8,7,3,9,87, 1,8,6,2,10,87, + 1,8,6,3,10,87, 1,8,5,2,11,87, 1,8,5,3,11,87, 1,8,4,2,12,87, 1,8,4,3,12,87, 1,8,3,2,13,87, 1,8,3,3,13,87, 1,8,3,4,1,55, + 1,8,3,6,14,71, 1,7,13,2,3,88, 1,7,13,5,1,56, 1,7,12,2,4,88, 1,7,11,2,5,88, 1,7,10,2,6,88, 1,7,9,2,7,88, 1,7,8,2,8,88, + 1,7,7,2,9,88, 1,7,6,2,10,88, 1,7,5,2,11,88, 1,7,4,2,12,88, 1,7,4,4,1,56, 1,7,4,6,14,72, 1,6,13,2,3,89, 1,6,13,4,1,57, + 1,6,13,5,1,57, 1,6,12,2,4,89, 1,6,11,2,5,89, 1,6,10,2,6,89, 1,6,9,2,7,89, 1,6,8,2,8,89, 1,6,7,2,9,89, 1,6,6,2,10,89, + 1,6,5,2,11,89, 1,6,5,6,1,57, 1,5,12,2,4,90, 1,5,12,4,1,58, 1,5,12,5,1,58, 1,5,11,2,5,90, 1,5,10,2,6,90, 1,5,9,2,7,90, + 1,5,8,2,8,90, 1,5,7,2,9,90, 1,5,6,2,10,90, 1,5,5,2,11,90, 1,5,5,6,1,58, 1,4,11,2,5,91, 1,4,11,5,14,75, 1,4,10,2,6,91, + 1,4,9,2,7,91, 1,4,8,2,8,91, 1,4,7,2,9,91, 1,4,6,2,10,91, 1,4,5,2,11,91, 1,4,5,6,14,75, 1,3,13,2,3,92, 1,3,13,3,3,92, + 1,3,13,4,14,76, 1,3,13,5,14,76, 1,3,12,2,4,92, 1,3,12,3,4,92, 1,3,12,4,14,76, 1,3,11,2,5,92, 1,3,11,4,14,76, 1,3,10,2,6,92, + 1,3,10,4,14,76, 1,3,9,2,7,92, 1,3,9,4,14,76, 1,3,8,2,8,92, 1,3,8,4,14,76, 1,3,7,2,9,92, 1,3,7,4,14,76, 1,3,6,2,10,92, + 1,3,6,4,14,76, 1,3,5,2,11,92, 1,3,5,4,14,76, 1,3,4,2,12,92, 1,3,4,3,12,92, 1,3,4,4,14,76, 1,3,4,6,14,76, 2,13,14,2,2,82, + 2,13,14,3,2,82, 2,13,14,4,2,50, 2,13,14,5,2,50, 2,13,13,2,3,82, 2,13,13,3,3,82, 2,13,13,4,2,50, 2,13,12,2,4,82, 2,13,12,3,4,82, + 2,13,12,4,2,50, 2,13,11,2,5,82, 2,13,11,3,5,82, 2,13,11,4,2,50, 2,13,10,2,6,82, 2,13,10,3,6,82, 2,13,10,4,2,50, 2,13,9,2,7,82, + 2,13,9,3,7,82, 2,13,9,4,2,50, 2,13,8,2,8,82, 2,13,8,3,8,82, 2,13,8,4,2,50, 2,13,7,2,9,82, 2,13,7,3,9,82, 2,13,7,4,2,50, + 2,13,6,2,10,82, 2,13,6,3,10,82, 2,13,6,4,2,50, 2,13,5,2,11,82, 2,13,5,3,11,82, 2,13,5,4,2,50, 2,13,4,2,12,82, 2,13,4,3,12,82, + 2,13,4,4,2,50, 2,13,3,2,13,82, 2,13,3,3,13,82, 2,13,3,4,2,50, 2,13,2,2,14,82, 2,13,2,3,14,82, 2,13,2,4,2,50, 2,13,2,6,13,66, + 2,10,13,2,3,85, 2,10,13,3,3,85, 2,10,13,5,2,53, 2,10,12,2,4,85, 2,10,12,3,4,85, 2,10,11,2,5,85, 2,10,11,3,5,85, 2,10,10,2,6,85, + 2,10,10,3,6,85, 2,10,9,2,7,85, 2,10,9,3,7,85, 2,10,8,2,8,85, 2,10,8,3,8,85, 2,10,7,2,9,85, 2,10,7,3,9,85, 2,10,6,2,10,85, + 2,10,6,3,10,85, 2,10,5,2,11,85, 2,10,5,3,11,85, 2,10,4,2,12,85, 2,10,4,3,12,85, 2,10,3,2,13,85, 2,10,3,3,13,85, 2,10,3,6,13,69, + 2,9,13,2,3,86, 2,9,13,5,2,54, 2,9,12,2,4,86, 2,9,11,2,5,86, 2,9,10,2,6,86, 2,9,9,2,7,86, 2,9,8,2,8,86, 2,9,7,2,9,86, + 2,9,6,2,10,86, 2,9,5,2,11,86, 2,9,4,2,12,86, 2,9,3,2,13,86, 2,9,3,6,13,70, 2,8,13,5,2,55, 2,8,3,4,2,55, 2,8,3,6,13,71, + 2,7,13,5,2,56, 2,7,4,4,2,56, 2,7,4,6,13,72, 2,6,13,4,2,57, 2,6,13,5,2,57, 2,6,5,6,13,73, 2,5,12,4,2,58, 2,5,12,5,2,58, + 2,5,5,6,13,74, 2,4,11,5,2,59, 2,4,5,6,13,75, 2,3,13,3,3,92, 2,3,13,5,13,76, 2,3,12,3,4,92, 2,3,4,3,12,92, 2,3,4,6,13,76, + 2,2,14,2,2,93, 2,2,14,3,2,93, 2,2,14,4,13,77, 2,2,14,5,13,77, 2,2,13,2,3,93, 2,2,13,4,13,77, 2,2,12,2,4,93, 2,2,12,4,13,77, + 2,2,11,2,5,93, 2,2,11,4,13,77, 2,2,10,2,6,93, 2,2,10,4,13,77, 2,2,9,2,7,93, 2,2,9,4,13,77, 2,2,8,2,8,93, 2,2,8,4,13,77, + 2,2,7,2,9,93, 2,2,7,4,13,77, 2,2,6,2,10,93, 2,2,6,4,13,77, 2,2,5,2,11,93, 2,2,5,4,13,77, 2,2,4,2,12,93, 2,2,4,4,13,77, + 2,2,3,2,13,93, 2,2,3,3,13,93, 2,2,3,4,13,77, 2,2,3,6,13,77, 3,14,13,2,3,81, 3,14,13,3,3,81, 3,14,13,5,3,49, 3,14,12,2,4,81, + 3,14,12,3,4,81, 3,14,12,6,12,65, 3,14,10,2,6,81, 3,14,10,3,6,81, 3,14,10,5,3,49, 3,14,9,2,7,81, 3,14,9,3,7,81, 3,14,8,2,8,81, + 3,14,8,3,8,81, 3,14,7,2,9,81, 3,14,7,3,9,81, 3,14,6,2,10,81, 3,14,6,3,10,81, 3,14,6,6,12,65, 3,14,4,2,12,81, 3,14,4,3,12,81, + 3,14,4,5,3,49, 3,14,3,2,13,81, 3,14,3,3,13,81, 3,14,3,6,12,65, 3,13,14,3,2,82, 3,13,14,4,3,50, 3,13,14,5,3,50, 3,13,11,3,5,82, + 3,13,5,3,11,82, 3,13,2,3,14,82, 3,13,2,4,3,50, 3,13,2,6,12,66, 3,12,13,2,3,83, 3,12,13,5,3,51, 3,12,12,2,4,83, 3,12,11,2,5,83, + 3,12,10,2,6,83, 3,12,9,2,7,83, 3,12,8,2,8,83, 3,12,7,2,9,83, 3,12,6,2,10,83, 3,12,5,2,11,83, 3,12,4,2,12,83, 3,12,3,2,13,83, + 3,12,3,6,12,67, 3,11,13,2,3,84, 3,11,13,5,3,52, 3,11,12,2,4,84, 3,11,11,2,5,84, 3,11,10,2,6,84, 3,11,9,2,7,84, 3,11,8,2,8,84, + 3,11,7,2,9,84, 3,11,6,2,10,84, 3,11,5,2,11,84, 3,11,4,2,12,84, 3,11,3,2,13,84, 3,11,3,6,12,68, 3,10,13,5,3,53, 3,10,3,6,12,69, + 3,9,13,5,3,54, 3,9,3,6,12,70, 3,8,13,5,3,55, 3,8,3,4,3,55, 3,8,3,6,12,71, 3,7,13,5,3,56, 3,7,4,4,3,56, 3,7,4,6,12,72, + 3,6,13,4,3,57, 3,6,13,5,3,57, 3,6,5,6,12,73, 3,5,12,4,3,58, 3,5,12,5,3,58, 3,5,5,6,12,74, 3,4,11,5,3,59, 3,4,5,6,12,75, + 3,3,13,3,3,92, 3,3,13,5,3,60, 3,3,12,3,4,92, 3,3,4,3,12,92, 3,3,4,6,12,76, 3,2,14,3,2,93, 3,2,14,4,12,77, 3,2,14,5,12,77, + 3,2,13,4,12,77, 3,2,12,4,12,77, 3,2,11,4,12,77, 3,2,10,4,12,77, 3,2,9,4,12,77, 3,2,8,4,12,77, 3,2,7,4,12,77, 3,2,6,4,12,77, + 3,2,5,4,12,77, 3,2,4,4,12,77, 3,2,3,3,13,93, 3,2,3,4,12,77, 3,2,3,6,12,77, 4,14,13,1,3,81, 4,14,13,3,3,81, 4,14,13,5,4,49, + 4,14,12,1,4,81, 4,14,12,3,4,81, 4,14,12,6,11,65, 4,14,10,1,6,81, 4,14,10,3,6,81, 4,14,10,5,4,49, 4,14,9,1,7,81, 4,14,9,3,7,81, + 4,14,8,1,8,81, 4,14,8,3,8,81, 4,14,7,1,9,81, 4,14,7,3,9,81, 4,14,6,1,10,81, 4,14,6,3,10,81, 4,14,6,6,11,65, 4,14,4,1,12,81, + 4,14,4,3,12,81, 4,14,4,5,4,49, 4,14,3,1,13,81, 4,14,3,3,13,81, 4,14,3,6,11,65, 4,13,14,3,2,82, 4,13,14,4,4,50, 4,13,14,5,4,50, + 4,13,11,3,5,82, 4,13,5,3,11,82, 4,13,2,3,14,82, 4,13,2,4,4,50, 4,13,2,6,11,66, 4,12,13,5,4,51, 4,12,3,6,11,67, 4,11,13,5,4,52, + 4,11,3,6,11,68, 4,10,13,5,4,53, 4,10,3,6,11,69, 4,9,13,5,4,54, 4,9,3,6,11,70, 4,8,13,5,4,55, 4,8,3,4,4,55, 4,8,3,6,11,71, + 4,7,13,5,4,56, 4,7,4,4,4,56, 4,7,4,6,11,72, 4,6,13,4,4,57, 4,6,13,5,4,57, 4,6,5,6,11,73, 4,5,12,4,4,58, 4,5,12,5,4,58, + 4,5,5,6,11,74, 4,4,11,5,4,59, 4,4,5,6,11,75, 4,3,13,3,3,92, 4,3,13,5,4,60, 4,3,12,3,4,92, 4,3,4,3,12,92, 4,3,4,6,11,76, + 4,2,14,3,2,93, 4,2,14,4,4,61, 4,2,14,5,4,61, 4,2,3,3,13,93, 4,2,3,6,11,77, 4,1,13,2,3,94, 4,1,13,4,4,62, 4,1,13,5,4,62, + 4,1,12,2,4,94, 4,1,12,4,4,62, 4,1,11,2,5,94, 4,1,11,4,4,62, 4,1,10,2,6,94, 4,1,10,4,4,62, 4,1,9,2,7,94, 4,1,9,4,4,62, + 4,1,8,2,8,94, 4,1,8,4,4,62, 4,1,7,2,9,94, 4,1,7,4,4,62, 4,1,6,2,10,94, 4,1,6,4,4,62, 4,1,5,2,11,94, 4,1,5,4,4,62, + 4,1,4,2,12,94, 4,1,4,4,4,62, 4,1,3,2,13,94, 4,1,3,4,4,62, 4,1,3,6,4,62, 5,13,14,3,2,82, 5,13,14,4,5,50, 5,13,14,5,5,50, + 5,13,13,3,3,82, 5,13,12,3,4,82, 5,13,11,3,5,82, 5,13,10,3,6,82, 5,13,9,3,7,82, 5,13,8,3,8,82, 5,13,7,3,9,82, 5,13,6,3,10,82, + 5,13,5,3,11,82, 5,13,4,3,12,82, 5,13,3,3,13,82, 5,13,2,3,14,82, 5,13,2,4,5,50, 5,13,2,6,10,66, 5,12,13,5,5,51, 5,12,3,6,10,67, + 5,11,13,5,5,52, 5,11,3,6,10,68, 5,10,13,5,5,53, 5,10,3,6,10,69, 5,9,13,5,5,54, 5,9,3,6,10,70, 5,8,13,5,5,55, 5,8,3,4,5,55, + 5,8,3,6,10,71, 5,7,13,5,5,56, 5,7,4,4,5,56, 5,7,4,6,10,72, 5,6,13,4,5,57, 5,6,13,5,5,57, 5,6,5,6,10,73, 5,5,12,4,5,58, + 5,5,12,5,5,58, 5,5,5,6,10,74, 5,4,11,5,5,59, 5,4,5,6,10,75, 5,3,13,3,3,92, 5,3,13,5,5,60, 5,3,12,3,4,92, 5,3,4,3,12,92, + 5,3,4,6,10,76, 5,2,14,3,2,93, 5,2,14,4,5,61, 5,2,14,5,5,61, 5,2,3,3,13,93, 5,2,3,6,10,77, 5,1,13,4,5,62, 5,1,13,5,5,62, + 5,1,9,4,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,3,4,5,62, 5,1,3,6,5,62, 5,0,12,2,4,95, 5,0,12,5,5,63, + 5,0,11,2,5,95, 5,0,10,2,6,95, 5,0,10,6,5,63, 5,0,5,2,11,95, 5,0,5,5,5,63, 5,0,4,2,12,95, 5,0,4,6,5,63, 6,14,13,2,3,81, + 6,14,13,3,3,81, 6,14,13,5,6,49, 6,14,12,2,4,81, 6,14,12,3,4,81, 6,14,12,6,9,65, 6,14,10,2,6,81, 6,14,10,3,6,81, 6,14,10,5,6,49, + 6,14,9,2,7,81, 6,14,9,3,7,81, 6,14,8,2,8,81, 6,14,8,3,8,81, 6,14,7,2,9,81, 6,14,7,3,9,81, 6,14,6,2,10,81, 6,14,6,3,10,81, + 6,14,6,6,9,65, 6,14,4,2,12,81, 6,14,4,3,12,81, 6,14,4,5,6,49, 6,14,3,2,13,81, 6,14,3,3,13,81, 6,14,3,6,9,65, 6,13,14,3,2,82, + 6,13,14,4,6,50, 6,13,14,5,6,50, 6,13,11,3,5,82, 6,13,5,3,11,82, 6,13,2,3,14,82, 6,13,2,4,6,50, 6,13,2,6,9,66, 6,12,13,5,6,51, + 6,12,3,6,9,67, 6,11,13,5,6,52, 6,11,3,6,9,68, 6,10,13,5,6,53, 6,10,3,6,9,69, 6,9,13,5,6,54, 6,9,3,6,9,70, 6,8,13,5,6,55, + 6,8,3,4,6,55, 6,8,3,6,9,71, 6,7,13,5,6,56, 6,7,4,4,6,56, 6,7,4,6,9,72, 6,6,13,4,6,57, 6,6,13,5,6,57, 6,6,5,6,9,73, + 6,5,12,4,6,58, 6,5,12,5,6,58, 6,5,5,6,9,74, 6,4,11,5,6,59, 6,4,5,6,9,75, 6,3,13,3,3,92, 6,3,13,5,6,60, 6,3,12,3,4,92, + 6,3,4,3,12,92, 6,3,4,6,9,76, 6,2,14,3,2,93, 6,2,14,4,6,61, 6,2,14,5,6,61, 6,2,3,3,13,93, 6,2,3,6,9,77, 6,1,13,4,6,62, + 6,1,13,5,6,62, 6,1,9,4,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,3,4,6,62, 6,1,3,6,9,78, 6,0,12,5,6,63, + 6,0,10,6,6,63, 6,0,5,5,6,63, 6,0,4,6,6,63, 7,14,13,3,3,81, 7,14,13,5,7,49, 7,14,12,3,4,81, 7,14,12,6,8,65, 7,14,10,3,6,81, + 7,14,10,5,7,49, 7,14,9,3,7,81, 7,14,8,3,8,81, 7,14,7,3,9,81, 7,14,6,3,10,81, 7,14,6,6,8,65, 7,14,4,3,12,81, 7,14,4,5,7,49, + 7,14,3,3,13,81, 7,14,3,6,8,65, 7,13,14,3,2,82, 7,13,14,4,7,50, 7,13,14,5,7,50, 7,13,11,3,5,82, 7,13,5,3,11,82, 7,13,2,3,14,82, + 7,13,2,4,7,50, 7,13,2,6,8,66, 7,12,13,5,7,51, 7,12,3,6,8,67, 7,11,13,5,7,52, 7,11,3,6,8,68, 7,10,13,5,7,53, 7,10,3,6,8,69, + 7,9,13,5,7,54, 7,9,3,6,8,70, 7,8,13,5,7,55, 7,8,3,4,7,55, 7,8,3,6,8,71, 7,7,13,5,7,56, 7,7,4,4,7,56, 7,7,4,6,8,72, + 7,6,13,4,7,57, 7,6,13,5,7,57, 7,6,5,6,8,73, 7,5,12,4,7,58, 7,5,12,5,7,58, 7,5,5,6,8,74, 7,4,11,5,7,59, 7,4,5,6,8,75, + 7,3,13,3,3,92, 7,3,13,5,7,60, 7,3,12,3,4,92, 7,3,4,3,12,92, 7,3,4,6,8,76, 7,2,14,3,2,93, 7,2,14,4,7,61, 7,2,14,5,7,61, + 7,2,3,3,13,93, 7,2,3,6,8,77, 7,1,13,4,7,62, 7,1,13,5,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, + 7,1,3,4,7,62, 7,1,3,6,8,78, 7,0,12,5,7,63, 7,0,10,6,7,63, 7,0,5,5,7,63, 7,0,4,6,7,63, 8,14,13,3,3,81, 8,14,13,5,8,49, + 8,14,12,3,4,81, 8,14,12,6,7,65, 8,14,10,3,6,81, 8,14,10,5,8,49, 8,14,9,3,7,81, 8,14,8,3,8,81, 8,14,7,3,9,81, 8,14,6,3,10,81, + 8,14,6,6,7,65, 8,14,4,3,12,81, 8,14,4,5,8,49, 8,14,3,3,13,81, 8,14,3,6,7,65, 8,13,14,3,2,82, 8,13,14,4,8,50, 8,13,14,5,8,50, + 8,13,11,3,5,82, 8,13,5,3,11,82, 8,13,2,3,14,82, 8,13,2,4,8,50, 8,13,2,6,7,66, 8,12,13,5,8,51, 8,12,3,6,7,67, 8,11,13,5,8,52, + 8,11,3,6,7,68, 8,10,13,5,8,53, 8,10,3,6,7,69, 8,9,13,5,8,54, 8,9,3,6,7,70, 8,8,13,5,8,55, 8,8,3,4,8,55, 8,8,3,6,7,71, + 8,7,13,5,8,56, 8,7,4,4,8,56, 8,7,4,6,7,72, 8,6,13,4,8,57, 8,6,13,5,8,57, 8,6,5,6,7,73, 8,5,12,4,8,58, 8,5,12,5,8,58, + 8,5,5,6,7,74, 8,4,11,5,8,59, 8,4,5,6,7,75, 8,3,13,3,3,92, 8,3,13,5,8,60, 8,3,12,3,4,92, 8,3,4,3,12,92, 8,3,4,6,7,76, + 8,2,14,3,2,93, 8,2,14,4,8,61, 8,2,14,5,8,61, 8,2,3,3,13,93, 8,2,3,6,7,77, 8,1,13,4,8,62, 8,1,13,5,8,62, 8,1,9,4,8,62, + 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,3,4,8,62, 8,1,3,6,7,78, 8,0,12,5,7,79, 8,0,10,6,7,79, 8,0,5,5,7,79, + 8,0,4,6,7,79, 9,14,13,1,3,81, 9,14,13,3,3,81, 9,14,13,5,9,49, 9,14,12,1,4,81, 9,14,12,3,4,81, 9,14,12,6,6,65, 9,14,10,1,6,81, + 9,14,10,3,6,81, 9,14,10,5,9,49, 9,14,9,1,7,81, 9,14,9,3,7,81, 9,14,8,1,8,81, 9,14,8,3,8,81, 9,14,7,1,9,81, 9,14,7,3,9,81, + 9,14,6,1,10,81, 9,14,6,3,10,81, 9,14,6,6,6,65, 9,14,4,1,12,81, 9,14,4,3,12,81, 9,14,4,5,9,49, 9,14,3,1,13,81, 9,14,3,3,13,81, + 9,14,3,6,6,65, 9,13,14,3,2,82, 9,13,14,4,9,50, 9,13,14,5,9,50, 9,13,11,3,5,82, 9,13,5,3,11,82, 9,13,2,3,14,82, 9,13,2,4,9,50, + 9,13,2,6,6,66, 9,12,13,5,9,51, 9,12,3,6,6,67, 9,11,13,5,9,52, 9,11,3,6,6,68, 9,10,13,5,9,53, 9,10,3,6,6,69, 9,9,13,5,9,54, + 9,9,3,6,6,70, 9,8,13,5,9,55, 9,8,3,4,9,55, 9,8,3,6,6,71, 9,7,13,5,9,56, 9,7,4,4,9,56, 9,7,4,6,6,72, 9,6,13,4,9,57, + 9,6,13,5,9,57, 9,6,5,6,6,73, 9,5,12,4,9,58, 9,5,12,5,9,58, 9,5,5,6,6,74, 9,4,11,5,9,59, 9,4,5,6,6,75, 9,3,13,3,3,92, + 9,3,13,5,9,60, 9,3,12,3,4,92, 9,3,4,3,12,92, 9,3,4,6,6,76, 9,2,14,3,2,93, 9,2,14,4,9,61, 9,2,14,5,9,61, 9,2,3,3,13,93, + 9,2,3,6,6,77, 9,1,13,4,6,78, 9,1,13,5,6,78, 9,1,9,4,6,78, 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,3,4,6,78, + 9,1,3,6,6,78, 9,0,12,5,6,79, 9,0,10,6,6,79, 9,0,5,5,6,79, 9,0,4,6,6,79, 10,13,14,3,2,82, 10,13,14,4,10,50, 10,13,14,5,10,50, + 10,13,13,3,3,82, 10,13,12,3,4,82, 10,13,11,3,5,82, 10,13,10,3,6,82, 10,13,9,3,7,82, 10,13,8,3,8,82, 10,13,7,3,9,82, 10,13,6,3,10,82, + 10,13,5,3,11,82, 10,13,4,3,12,82, 10,13,3,3,13,82, 10,13,2,3,14,82, 10,13,2,4,10,50, 10,13,2,6,5,66, 10,12,13,5,10,51, 10,12,3,6,5,67, + 10,11,13,5,10,52, 10,11,3,6,5,68, 10,10,13,5,10,53, 10,10,3,6,5,69, 10,9,13,5,10,54, 10,9,3,6,5,70, 10,8,13,5,10,55, 10,8,3,4,10,55, + 10,8,3,6,5,71, 10,7,13,5,10,56, 10,7,4,4,10,56, 10,7,4,6,5,72, 10,6,13,4,10,57, 10,6,13,5,10,57, 10,6,5,6,5,73, 10,5,12,4,10,58, + 10,5,12,5,10,58, 10,5,5,6,5,74, 10,4,11,5,10,59, 10,4,5,6,5,75, 10,3,13,3,3,92, 10,3,13,5,10,60, 10,3,12,3,4,92, 10,3,4,3,12,92, + 10,3,4,6,5,76, 10,2,14,3,2,93, 10,2,14,4,10,61, 10,2,14,5,10,61, 10,2,3,3,13,93, 10,2,3,6,5,77, 10,1,13,4,10,62, 10,1,13,5,10,62, + 10,1,9,4,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,3,4,10,62, 10,1,3,6,5,78, 10,0,12,1,4,95, 10,0,12,5,5,79, + 10,0,11,1,5,95, 10,0,10,1,6,95, 10,0,10,6,5,79, 10,0,5,1,11,95, 10,0,5,5,5,79, 10,0,4,1,12,95, 10,0,4,6,5,79, 11,14,13,2,3,81, + 11,14,13,3,3,81, 11,14,13,5,11,49, 11,14,12,2,4,81, 11,14,12,3,4,81, 11,14,12,6,4,65, 11,14,10,2,6,81, 11,14,10,3,6,81, 11,14,10,5,11,49, + 11,14,9,2,7,81, 11,14,9,3,7,81, 11,14,8,2,8,81, 11,14,8,3,8,81, 11,14,7,2,9,81, 11,14,7,3,9,81, 11,14,6,2,10,81, 11,14,6,3,10,81, + 11,14,6,6,4,65, 11,14,4,2,12,81, 11,14,4,3,12,81, 11,14,4,5,11,49, 11,14,3,2,13,81, 11,14,3,3,13,81, 11,14,3,6,4,65, 11,13,14,3,2,82, + 11,13,14,4,11,50, 11,13,14,5,11,50, 11,13,11,3,5,82, 11,13,5,3,11,82, 11,13,2,3,14,82, 11,13,2,4,11,50, 11,13,2,6,4,66, 11,12,13,5,11,51, + 11,12,3,6,4,67, 11,11,13,5,11,52, 11,11,3,6,4,68, 11,10,13,5,11,53, 11,10,3,6,4,69, 11,9,13,5,11,54, 11,9,3,6,4,70, 11,8,13,5,11,55, + 11,8,3,4,11,55, 11,8,3,6,4,71, 11,7,13,5,11,56, 11,7,4,4,11,56, 11,7,4,6,4,72, 11,6,13,4,11,57, 11,6,13,5,11,57, 11,6,5,6,4,73, + 11,5,12,4,11,58, 11,5,12,5,11,58, 11,5,5,6,4,74, 11,4,11,5,11,59, 11,4,5,6,4,75, 11,3,13,3,3,92, 11,3,13,5,11,60, 11,3,12,3,4,92, + 11,3,4,3,12,92, 11,3,4,6,4,76, 11,2,14,3,2,93, 11,2,14,4,11,61, 11,2,14,5,11,61, 11,2,3,3,13,93, 11,2,3,6,4,77, 11,1,13,1,3,94, + 11,1,13,4,11,62, 11,1,13,5,11,62, 11,1,12,1,4,94, 11,1,12,4,11,62, 11,1,11,1,5,94, 11,1,11,4,11,62, 11,1,10,1,6,94, 11,1,10,4,11,62, + 11,1,9,1,7,94, 11,1,9,4,11,62, 11,1,8,1,8,94, 11,1,8,4,11,62, 11,1,7,1,9,94, 11,1,7,4,11,62, 11,1,6,1,10,94, 11,1,6,4,11,62, + 11,1,5,1,11,94, 11,1,5,4,11,62, 11,1,4,1,12,94, 11,1,4,4,11,62, 11,1,3,1,13,94, 11,1,3,4,11,62, 11,1,3,6,4,78, 12,14,13,1,3,81, + 12,14,13,3,3,81, 12,14,13,5,12,49, 12,14,12,1,4,81, 12,14,12,3,4,81, 12,14,12,6,3,65, 12,14,10,1,6,81, 12,14,10,3,6,81, 12,14,10,5,12,49, + 12,14,9,1,7,81, 12,14,9,3,7,81, 12,14,8,1,8,81, 12,14,8,3,8,81, 12,14,7,1,9,81, 12,14,7,3,9,81, 12,14,6,1,10,81, 12,14,6,3,10,81, + 12,14,6,6,3,65, 12,14,4,1,12,81, 12,14,4,3,12,81, 12,14,4,5,12,49, 12,14,3,1,13,81, 12,14,3,3,13,81, 12,14,3,6,3,65, 12,13,14,3,2,82, + 12,13,14,4,12,50, 12,13,14,5,12,50, 12,13,11,3,5,82, 12,13,5,3,11,82, 12,13,2,3,14,82, 12,13,2,4,12,50, 12,13,2,6,3,66, 12,12,13,1,3,83, + 12,12,13,5,12,51, 12,12,12,1,4,83, 12,12,11,1,5,83, 12,12,10,1,6,83, 12,12,9,1,7,83, 12,12,8,1,8,83, 12,12,7,1,9,83, 12,12,6,1,10,83, + 12,12,5,1,11,83, 12,12,4,1,12,83, 12,12,3,1,13,83, 12,12,3,6,3,67, 12,11,13,1,3,84, 12,11,13,5,12,52, 12,11,12,1,4,84, 12,11,11,1,5,84, + 12,11,10,1,6,84, 12,11,9,1,7,84, 12,11,8,1,8,84, 12,11,7,1,9,84, 12,11,6,1,10,84, 12,11,5,1,11,84, 12,11,4,1,12,84, 12,11,3,1,13,84, + 12,11,3,6,3,68, 12,10,13,5,12,53, 12,10,3,6,3,69, 12,9,13,5,12,54, 12,9,3,6,3,70, 12,8,13,5,12,55, 12,8,3,4,12,55, 12,8,3,6,3,71, + 12,7,13,5,12,56, 12,7,4,4,12,56, 12,7,4,6,3,72, 12,6,13,4,12,57, 12,6,13,5,12,57, 12,6,5,6,3,73, 12,5,12,4,12,58, 12,5,12,5,12,58, + 12,5,5,6,3,74, 12,4,11,5,12,59, 12,4,5,6,3,75, 12,3,13,3,3,92, 12,3,13,5,12,60, 12,3,12,3,4,92, 12,3,4,3,12,92, 12,3,4,6,3,76, + 12,2,14,1,2,93, 12,2,14,3,2,93, 12,2,14,4,12,61, 12,2,14,5,12,61, 12,2,13,1,3,93, 12,2,13,4,12,61, 12,2,12,1,4,93, 12,2,12,4,12,61, + 12,2,11,1,5,93, 12,2,11,4,12,61, 12,2,10,1,6,93, 12,2,10,4,12,61, 12,2,9,1,7,93, 12,2,9,4,12,61, 12,2,8,1,8,93, 12,2,8,4,12,61, + 12,2,7,1,9,93, 12,2,7,4,12,61, 12,2,6,1,10,93, 12,2,6,4,12,61, 12,2,5,1,11,93, 12,2,5,4,12,61, 12,2,4,1,12,93, 12,2,4,4,12,61, + 12,2,3,1,13,93, 12,2,3,3,13,93, 12,2,3,4,12,61, 12,2,3,6,12,61, 13,13,14,1,2,82, 13,13,14,3,2,82, 13,13,14,4,13,50, 13,13,14,5,13,50, + 13,13,13,1,3,82, 13,13,13,3,3,82, 13,13,13,4,13,50, 13,13,12,1,4,82, 13,13,12,3,4,82, 13,13,12,4,13,50, 13,13,11,1,5,82, 13,13,11,3,5,82, + 13,13,11,4,13,50, 13,13,10,1,6,82, 13,13,10,3,6,82, 13,13,10,4,13,50, 13,13,9,1,7,82, 13,13,9,3,7,82, 13,13,9,4,13,50, 13,13,8,1,8,82, + 13,13,8,3,8,82, 13,13,8,4,13,50, 13,13,7,1,9,82, 13,13,7,3,9,82, 13,13,7,4,13,50, 13,13,6,1,10,82, 13,13,6,3,10,82, 13,13,6,4,13,50, + 13,13,5,1,11,82, 13,13,5,3,11,82, 13,13,5,4,13,50, 13,13,4,1,12,82, 13,13,4,3,12,82, 13,13,4,4,13,50, 13,13,3,1,13,82, 13,13,3,3,13,82, + 13,13,3,4,13,50, 13,13,2,1,14,82, 13,13,2,3,14,82, 13,13,2,4,13,50, 13,13,2,6,2,66, 13,10,13,1,3,85, 13,10,13,3,3,85, 13,10,13,5,13,53, + 13,10,12,1,4,85, 13,10,12,3,4,85, 13,10,11,1,5,85, 13,10,11,3,5,85, 13,10,10,1,6,85, 13,10,10,3,6,85, 13,10,9,1,7,85, 13,10,9,3,7,85, + 13,10,8,1,8,85, 13,10,8,3,8,85, 13,10,7,1,9,85, 13,10,7,3,9,85, 13,10,6,1,10,85, 13,10,6,3,10,85, 13,10,5,1,11,85, 13,10,5,3,11,85, + 13,10,4,1,12,85, 13,10,4,3,12,85, 13,10,3,1,13,85, 13,10,3,3,13,85, 13,10,3,6,2,69, 13,9,13,1,3,86, 13,9,13,5,13,54, 13,9,12,1,4,86, + 13,9,11,1,5,86, 13,9,10,1,6,86, 13,9,9,1,7,86, 13,9,8,1,8,86, 13,9,7,1,9,86, 13,9,6,1,10,86, 13,9,5,1,11,86, 13,9,4,1,12,86, + 13,9,3,1,13,86, 13,9,3,6,2,70, 13,8,13,5,13,55, 13,8,3,4,13,55, 13,8,3,6,2,71, 13,7,13,5,13,56, 13,7,4,4,13,56, 13,7,4,6,2,72, + 13,6,13,4,13,57, 13,6,13,5,13,57, 13,6,5,6,2,73, 13,5,12,4,13,58, 13,5,12,5,13,58, 13,5,5,6,2,74, 13,4,11,1,5,91, 13,4,11,5,13,59, + 13,4,10,1,6,91, 13,4,9,1,7,91, 13,4,8,1,8,91, 13,4,7,1,9,91, 13,4,6,1,10,91, 13,4,5,1,11,91, 13,4,5,6,2,75, 13,3,13,1,3,92, + 13,3,13,3,3,92, 13,3,13,4,13,60, 13,3,13,5,13,60, 13,3,12,1,4,92, 13,3,12,3,4,92, 13,3,12,4,13,60, 13,3,11,1,5,92, 13,3,11,4,13,60, + 13,3,10,1,6,92, 13,3,10,4,13,60, 13,3,9,1,7,92, 13,3,9,4,13,60, 13,3,8,1,8,92, 13,3,8,4,13,60, 13,3,7,1,9,92, 13,3,7,4,13,60, + 13,3,6,1,10,92, 13,3,6,4,13,60, 13,3,5,1,11,92, 13,3,5,4,13,60, 13,3,4,1,12,92, 13,3,4,3,12,92, 13,3,4,4,13,60, 13,3,4,6,13,60, + 14,8,13,1,3,87, 14,8,13,3,3,87, 14,8,13,5,14,55, 14,8,12,1,4,87, 14,8,12,3,4,87, 14,8,11,1,5,87, 14,8,11,3,5,87, 14,8,10,1,6,87, + 14,8,10,3,6,87, 14,8,9,1,7,87, 14,8,9,3,7,87, 14,8,8,1,8,87, 14,8,8,3,8,87, 14,8,7,1,9,87, 14,8,7,3,9,87, 14,8,6,1,10,87, + 14,8,6,3,10,87, 14,8,5,1,11,87, 14,8,5,3,11,87, 14,8,4,1,12,87, 14,8,4,3,12,87, 14,8,3,1,13,87, 14,8,3,3,13,87, 14,8,3,4,14,55, + 14,8,3,6,1,71, 14,7,13,1,3,88, 14,7,13,5,14,56, 14,7,12,1,4,88, 14,7,11,1,5,88, 14,7,10,1,6,88, 14,7,9,1,7,88, 14,7,8,1,8,88, + 14,7,7,1,9,88, 14,7,6,1,10,88, 14,7,5,1,11,88, 14,7,4,1,12,88, 14,7,4,4,14,56, 14,7,4,6,1,72, 14,6,13,1,3,89, 14,6,13,4,1,73, + 14,6,13,5,1,73, 14,6,12,1,4,89, 14,6,11,1,5,89, 14,6,10,1,6,89, 14,6,9,1,7,89, 14,6,8,1,8,89, 14,6,7,1,9,89, 14,6,6,1,10,89, + 14,6,5,1,11,89, 14,6,5,6,1,73, 14,5,12,1,4,90, 14,5,12,4,1,74, 14,5,12,5,1,74, 14,5,11,1,5,90, 14,5,11,4,1,74, 14,5,10,1,6,90, + 14,5,10,4,1,74, 14,5,9,1,7,90, 14,5,9,4,1,74, 14,5,8,1,8,90, 14,5,8,4,1,74, 14,5,7,1,9,90, 14,5,7,4,1,74, 14,5,6,1,10,90, + 14,5,6,4,1,74, 14,5,5,1,11,90, 14,5,5,4,1,74, 14,5,5,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/cooltrainer_f.lua b/assets/voxels/cooltrainer_f.lua new file mode 100644 index 0000000..5121219 --- /dev/null +++ b/assets/voxels/cooltrainer_f.lua @@ -0,0 +1,302 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "cooltrainer_f" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "cooltrainer_f", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1444, + count = 974, + faces = { + 2,11,14,2,1,36, 2,11,14,3,1,36, 2,11,14,4,2,4, 2,11,14,5,2,4, 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,12,2,3,36, 2,11,12,3,3,36, + 2,11,11,2,4,36, 2,11,11,3,4,36, 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, 2,11,8,3,7,36, + 2,11,7,2,8,36, 2,11,7,3,8,36, 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, 2,11,4,3,11,36, + 2,11,3,2,12,36, 2,11,3,3,12,36, 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,13,2,2,37, 2,10,13,5,2,5, 2,10,12,2,3,37, + 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, 2,10,8,2,7,37, 2,10,7,2,8,37, 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, + 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,6,13,21, 2,9,13,2,2,38, 2,9,13,5,2,6, 2,9,12,2,3,38, 2,9,11,2,4,38, 2,9,10,2,5,38, + 2,9,9,2,6,38, 2,9,8,2,7,38, 2,9,7,2,8,38, 2,9,6,2,9,38, 2,9,5,2,10,38, 2,9,4,2,11,38, 2,9,3,2,12,38, 2,9,2,2,13,38, + 2,9,2,6,13,22, 2,8,13,2,2,39, 2,8,13,4,13,23, 2,8,13,5,13,23, 2,8,12,2,3,39, 2,8,12,4,13,23, 2,8,11,2,4,39, 2,8,11,4,13,23, + 2,8,10,2,5,39, 2,8,10,4,13,23, 2,8,9,2,6,39, 2,8,9,4,13,23, 2,8,8,2,7,39, 2,8,8,4,13,23, 2,8,7,2,8,39, 2,8,7,4,13,23, + 2,8,6,2,9,39, 2,8,6,4,13,23, 2,8,5,2,10,39, 2,8,5,4,13,23, 2,8,4,2,11,39, 2,8,4,4,13,23, 2,8,3,2,12,39, 2,8,3,4,13,23, + 2,8,2,2,13,39, 2,8,2,4,13,23, 2,8,2,6,13,23, 2,5,11,2,4,42, 2,5,11,3,4,42, 2,5,11,5,2,10, 2,5,10,2,5,42, 2,5,10,3,5,42, + 2,5,9,2,6,42, 2,5,9,3,6,42, 2,5,8,2,7,42, 2,5,8,3,7,42, 2,5,7,2,8,42, 2,5,7,3,8,42, 2,5,6,2,9,42, 2,5,6,3,9,42, + 2,5,6,6,13,26, 2,4,11,2,4,43, 2,4,11,4,2,11, 2,4,11,5,2,11, 2,4,10,2,5,43, 2,4,10,4,2,11, 2,4,9,2,6,43, 2,4,9,4,2,11, + 2,4,8,2,7,43, 2,4,8,4,2,11, 2,4,7,2,8,43, 2,4,7,4,2,11, 2,4,6,2,9,43, 2,4,6,4,2,11, 2,4,6,6,13,27, 3,12,14,2,1,35, + 3,12,14,3,1,35, 3,12,14,5,3,3, 3,12,13,2,2,35, 3,12,13,3,2,35, 3,12,12,2,3,35, 3,12,12,3,3,35, 3,12,11,2,4,35, 3,12,11,3,4,35, + 3,12,10,2,5,35, 3,12,10,3,5,35, 3,12,9,2,6,35, 3,12,9,3,6,35, 3,12,8,2,7,35, 3,12,8,3,7,35, 3,12,7,2,8,35, 3,12,7,3,8,35, + 3,12,6,2,9,35, 3,12,6,3,9,35, 3,12,5,2,10,35, 3,12,5,3,10,35, 3,12,4,2,11,35, 3,12,4,3,11,35, 3,12,3,2,12,35, 3,12,3,3,12,35, + 3,12,2,2,13,35, 3,12,2,3,13,35, 3,12,2,6,12,19, 3,11,14,4,3,4, 3,11,14,5,3,4, 3,11,2,6,12,20, 3,10,13,5,3,5, 3,10,2,6,12,21, + 3,9,13,5,3,6, 3,9,2,6,12,22, 3,8,13,5,3,7, 3,8,2,6,12,23, 3,7,13,2,2,40, 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,12,2,3,40, + 3,7,11,2,4,40, 3,7,10,2,5,40, 3,7,9,2,6,40, 3,7,8,2,7,40, 3,7,7,2,8,40, 3,7,6,2,9,40, 3,7,5,2,10,40, 3,7,4,2,11,40, + 3,7,4,4,3,8, 3,7,3,2,12,40, 3,7,2,2,13,40, 3,7,2,4,3,8, 3,7,2,6,12,24, 3,6,12,2,3,41, 3,6,12,4,3,9, 3,6,12,5,3,9, + 3,6,11,2,4,41, 3,6,10,2,5,41, 3,6,9,2,6,41, 3,6,8,2,7,41, 3,6,7,2,8,41, 3,6,6,2,9,41, 3,6,5,2,10,41, 3,6,5,4,3,9, + 3,6,5,6,12,25, 3,6,3,2,12,41, 3,6,3,4,3,9, 3,6,3,5,3,9, 3,6,3,6,12,25, 3,5,11,5,3,10, 3,5,6,6,12,26, 3,4,11,5,3,11, + 3,4,6,6,12,27, 3,3,11,2,4,44, 3,3,11,4,3,12, 3,3,11,5,3,12, 3,3,10,2,5,44, 3,3,10,4,3,12, 3,3,9,2,6,44, 3,3,9,4,3,12, + 3,3,8,2,7,44, 3,3,8,4,3,12, 3,3,7,2,8,44, 3,3,7,4,3,12, 3,3,6,2,9,44, 3,3,6,4,3,12, 3,3,5,2,10,44, 3,3,5,3,10,44, + 3,3,5,4,3,12, 3,3,5,6,12,28, 4,13,13,2,2,34, 4,13,13,3,2,34, 4,13,13,5,4,2, 4,13,12,2,3,34, 4,13,12,3,3,34, 4,13,11,2,4,34, + 4,13,11,3,4,34, 4,13,10,2,5,34, 4,13,10,3,5,34, 4,13,9,2,6,34, 4,13,9,3,6,34, 4,13,8,2,7,34, 4,13,8,3,7,34, 4,13,7,2,8,34, + 4,13,7,3,8,34, 4,13,6,2,9,34, 4,13,6,3,9,34, 4,13,5,2,10,34, 4,13,5,3,10,34, 4,13,4,2,11,34, 4,13,4,3,11,34, 4,13,3,2,12,34, + 4,13,3,3,12,34, 4,13,2,2,13,34, 4,13,2,3,13,34, 4,13,2,6,11,18, 4,12,14,3,1,35, 4,12,14,5,4,3, 4,12,2,6,11,19, 4,11,14,4,4,4, + 4,11,14,5,4,4, 4,11,2,6,11,20, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,13,5,4,6, 4,9,2,6,11,22, 4,8,13,5,4,7, 4,8,2,6,11,23, + 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,4,4,4,8, 4,7,2,4,4,8, 4,7,2,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,5,4,4,9, + 4,6,5,6,11,25, 4,6,3,4,4,9, 4,6,3,5,4,9, 4,6,3,6,11,25, 4,5,11,5,4,10, 4,5,6,6,11,26, 4,4,11,5,4,11, 4,4,6,6,11,27, + 4,3,11,5,4,12, 4,3,5,3,10,44, 4,3,5,6,11,28, 4,2,11,2,4,45, 4,2,11,5,4,13, 4,2,10,2,5,45, 4,2,9,2,6,45, 4,2,8,2,7,45, + 4,2,7,2,8,45, 4,2,6,2,9,45, 4,2,5,2,10,45, 4,2,5,4,4,13, 4,2,5,6,11,29, 4,1,11,2,4,46, 4,1,11,4,4,14, 4,1,11,5,4,14, + 4,1,10,2,5,46, 4,1,10,4,4,14, 4,1,9,2,6,46, 4,1,9,4,4,14, 4,1,8,2,7,46, 4,1,8,4,4,14, 4,1,7,2,8,46, 4,1,7,4,4,14, + 4,1,6,2,9,46, 4,1,6,4,4,14, 4,1,6,6,11,30, 5,14,12,2,3,33, 5,14,12,3,3,33, 5,14,12,5,5,1, 5,14,11,2,4,33, 5,14,11,3,4,33, + 5,14,10,2,5,33, 5,14,10,3,5,33, 5,14,9,2,6,33, 5,14,9,3,6,33, 5,14,8,2,7,33, 5,14,8,3,7,33, 5,14,7,2,8,33, 5,14,7,3,8,33, + 5,14,6,2,9,33, 5,14,6,3,9,33, 5,14,5,2,10,33, 5,14,5,3,10,33, 5,14,4,2,11,33, 5,14,4,3,11,33, 5,14,3,2,12,33, 5,14,3,3,12,33, + 5,14,3,6,10,17, 5,13,13,3,2,34, 5,13,13,5,5,2, 5,13,2,3,13,34, 5,13,2,6,10,18, 5,12,14,3,1,35, 5,12,14,5,5,3, 5,12,2,6,10,19, + 5,11,14,4,5,4, 5,11,14,5,5,4, 5,11,2,6,10,20, 5,10,13,5,5,5, 5,10,2,6,10,21, 5,9,13,5,5,6, 5,9,2,6,10,22, 5,8,13,5,5,7, + 5,8,2,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,4,4,5,8, 5,7,2,4,5,8, 5,7,2,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, + 5,6,5,4,5,9, 5,6,5,6,10,25, 5,6,3,4,5,9, 5,6,3,5,5,9, 5,6,3,6,10,25, 5,5,11,5,5,10, 5,5,6,6,10,26, 5,4,11,5,5,11, + 5,4,6,6,10,27, 5,3,11,5,5,12, 5,3,5,3,10,44, 5,3,5,6,10,28, 5,2,11,5,5,13, 5,2,5,4,5,13, 5,2,5,6,10,29, 5,1,11,5,5,14, + 5,1,6,4,5,14, 5,1,6,6,10,30, 5,0,12,2,3,47, 5,0,12,3,3,47, 5,0,12,5,5,15, 5,0,11,2,4,47, 5,0,10,2,5,47, 5,0,9,2,6,47, + 5,0,8,2,7,47, 5,0,7,2,8,47, 5,0,7,6,10,31, 6,15,10,2,5,32, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,2,6,32, 6,15,9,3,6,32, + 6,15,8,2,7,32, 6,15,8,3,7,32, 6,15,7,2,8,32, 6,15,7,3,8,32, 6,15,7,6,6,0, 6,15,5,2,10,32, 6,15,5,3,10,32, 6,15,5,5,6,0, + 6,15,4,2,11,32, 6,15,4,3,11,32, 6,15,4,6,6,0, 6,14,12,3,3,33, 6,14,12,5,6,1, 6,14,11,3,4,33, 6,14,6,3,9,33, 6,14,3,3,12,33, + 6,14,3,6,9,17, 6,13,13,3,2,34, 6,13,13,5,6,2, 6,13,2,3,13,34, 6,13,2,6,9,18, 6,12,14,3,1,35, 6,12,14,5,6,3, 6,12,2,6,9,19, + 6,11,14,4,6,4, 6,11,14,5,6,4, 6,11,2,6,9,20, 6,10,13,5,6,5, 6,10,2,6,9,21, 6,9,13,5,6,6, 6,9,2,6,9,22, 6,8,13,5,6,7, + 6,8,2,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,4,4,6,8, 6,7,2,4,6,8, 6,7,2,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, + 6,6,5,4,6,9, 6,6,5,6,9,25, 6,6,3,4,6,9, 6,6,3,5,6,9, 6,6,3,6,9,25, 6,5,11,5,6,10, 6,5,6,6,9,26, 6,4,11,5,6,11, + 6,4,6,6,9,27, 6,3,11,5,6,12, 6,3,5,3,10,44, 6,3,5,6,9,28, 6,2,11,5,6,13, 6,2,5,4,6,13, 6,2,5,6,9,29, 6,1,11,5,6,14, + 6,1,6,4,6,14, 6,1,6,6,9,30, 6,0,12,1,3,47, 6,0,12,3,3,47, 6,0,12,5,6,15, 6,0,11,1,4,47, 6,0,10,1,5,47, 6,0,9,1,6,47, + 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,7,6,9,31, 7,15,10,3,5,32, 7,15,10,5,7,0, 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, + 7,15,7,6,8,16, 7,15,5,3,10,32, 7,15,5,5,7,0, 7,15,4,3,11,32, 7,15,4,6,8,16, 7,14,12,3,3,33, 7,14,12,5,7,1, 7,14,11,3,4,33, + 7,14,6,3,9,33, 7,14,3,3,12,33, 7,14,3,6,8,17, 7,13,13,3,2,34, 7,13,13,5,7,2, 7,13,2,3,13,34, 7,13,2,6,8,18, 7,12,14,3,1,35, + 7,12,14,5,7,3, 7,12,2,6,8,19, 7,11,14,4,7,4, 7,11,14,5,7,4, 7,11,2,6,8,20, 7,10,13,5,7,5, 7,10,2,6,8,21, 7,9,13,5,7,6, + 7,9,2,6,8,22, 7,8,13,5,7,7, 7,8,2,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,4,4,7,8, 7,7,2,4,7,8, 7,7,2,6,8,24, + 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,5,4,7,9, 7,6,5,6,8,25, 7,6,3,4,7,9, 7,6,3,5,7,9, 7,6,3,6,8,25, 7,5,11,5,7,10, + 7,5,6,6,8,26, 7,4,11,5,7,11, 7,4,6,6,8,27, 7,3,11,5,7,12, 7,3,5,3,10,44, 7,3,5,6,8,28, 7,2,11,5,7,13, 7,2,5,4,7,13, + 7,2,5,6,8,29, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, + 7,1,6,6,8,30, 8,15,10,1,5,32, 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,1,6,32, 8,15,9,3,6,32, 8,15,8,1,7,32, 8,15,8,3,7,32, + 8,15,7,1,8,32, 8,15,7,3,8,32, 8,15,7,6,7,16, 8,15,5,1,10,32, 8,15,5,3,10,32, 8,15,5,5,8,0, 8,15,4,1,11,32, 8,15,4,3,11,32, + 8,15,4,6,7,16, 8,14,12,3,3,33, 8,14,12,5,8,1, 8,14,11,3,4,33, 8,14,6,3,9,33, 8,14,3,3,12,33, 8,14,3,6,7,17, 8,13,13,3,2,34, + 8,13,13,5,8,2, 8,13,2,3,13,34, 8,13,2,6,7,18, 8,12,14,3,1,35, 8,12,14,5,8,3, 8,12,2,6,7,19, 8,11,14,4,8,4, 8,11,14,5,8,4, + 8,11,2,6,7,20, 8,10,13,5,8,5, 8,10,2,6,7,21, 8,9,13,5,8,6, 8,9,2,6,7,22, 8,8,13,5,8,7, 8,8,2,6,7,23, 8,7,13,4,8,8, + 8,7,13,5,8,8, 8,7,4,4,8,8, 8,7,2,4,8,8, 8,7,2,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,5,4,8,9, 8,6,5,6,7,25, + 8,6,3,4,8,9, 8,6,3,5,8,9, 8,6,3,6,7,25, 8,5,11,5,8,10, 8,5,6,6,7,26, 8,4,11,5,8,11, 8,4,6,6,7,27, 8,3,11,5,8,12, + 8,3,5,3,10,44, 8,3,5,6,7,28, 8,2,11,5,8,13, 8,2,5,4,8,13, 8,2,5,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, + 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,6,6,7,30, 9,14,12,3,3,33, 9,14,12,5,9,1, 9,14,11,3,4,33, + 9,14,10,3,5,33, 9,14,9,3,6,33, 9,14,8,3,7,33, 9,14,7,3,8,33, 9,14,6,3,9,33, 9,14,5,3,10,33, 9,14,4,3,11,33, 9,14,3,3,12,33, + 9,14,3,6,6,17, 9,13,13,3,2,34, 9,13,13,5,9,2, 9,13,2,3,13,34, 9,13,2,6,6,18, 9,12,14,3,1,35, 9,12,14,5,9,3, 9,12,2,6,6,19, + 9,11,14,4,9,4, 9,11,14,5,9,4, 9,11,2,6,6,20, 9,10,13,5,9,5, 9,10,2,6,6,21, 9,9,13,5,9,6, 9,9,2,6,6,22, 9,8,13,5,9,7, + 9,8,2,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,4,4,9,8, 9,7,2,4,9,8, 9,7,2,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, + 9,6,5,4,9,9, 9,6,5,6,6,25, 9,6,3,4,9,9, 9,6,3,5,9,9, 9,6,3,6,6,25, 9,5,11,5,9,10, 9,5,6,6,6,26, 9,4,11,5,9,11, + 9,4,6,6,6,27, 9,3,11,5,9,12, 9,3,5,3,10,44, 9,3,5,6,6,28, 9,2,11,5,9,13, 9,2,5,4,9,13, 9,2,5,6,6,29, 9,1,11,5,9,14, + 9,1,6,4,9,14, 9,1,6,6,6,30, 9,0,12,2,3,47, 9,0,12,3,3,47, 9,0,12,5,9,15, 9,0,11,2,4,47, 9,0,10,2,5,47, 9,0,9,2,6,47, + 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,7,6,6,31, 10,14,12,1,3,33, 10,14,12,3,3,33, 10,14,12,5,10,1, 10,14,11,1,4,33, 10,14,11,3,4,33, + 10,14,10,1,5,33, 10,14,10,3,5,33, 10,14,9,1,6,33, 10,14,9,3,6,33, 10,14,8,1,7,33, 10,14,8,3,7,33, 10,14,7,1,8,33, 10,14,7,3,8,33, + 10,14,6,1,9,33, 10,14,6,3,9,33, 10,14,5,1,10,33, 10,14,5,3,10,33, 10,14,4,1,11,33, 10,14,4,3,11,33, 10,14,3,1,12,33, 10,14,3,3,12,33, + 10,14,3,6,5,17, 10,13,13,3,2,34, 10,13,13,5,10,2, 10,13,2,3,13,34, 10,13,2,6,5,18, 10,12,14,3,1,35, 10,12,14,5,10,3, 10,12,2,6,5,19, + 10,11,14,4,10,4, 10,11,14,5,10,4, 10,11,2,6,5,20, 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,13,5,10,6, 10,9,2,6,5,22, 10,8,13,5,10,7, + 10,8,2,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,4,4,10,8, 10,7,2,4,10,8, 10,7,2,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, + 10,6,5,4,10,9, 10,6,5,6,5,25, 10,6,3,4,10,9, 10,6,3,5,10,9, 10,6,3,6,5,25, 10,5,11,5,10,10, 10,5,6,6,5,26, 10,4,11,5,10,11, + 10,4,6,6,5,27, 10,3,11,5,10,12, 10,3,5,3,10,44, 10,3,5,6,5,28, 10,2,11,5,10,13, 10,2,5,4,10,13, 10,2,5,6,5,29, 10,1,11,5,10,14, + 10,1,6,4,10,14, 10,1,6,6,5,30, 10,0,12,1,3,47, 10,0,12,3,3,47, 10,0,12,5,10,15, 10,0,11,1,4,47, 10,0,10,1,5,47, 10,0,9,1,6,47, + 10,0,8,1,7,47, 10,0,7,1,8,47, 10,0,7,6,5,31, 11,13,13,1,2,34, 11,13,13,3,2,34, 11,13,13,5,11,2, 11,13,12,1,3,34, 11,13,12,3,3,34, + 11,13,11,1,4,34, 11,13,11,3,4,34, 11,13,10,1,5,34, 11,13,10,3,5,34, 11,13,9,1,6,34, 11,13,9,3,6,34, 11,13,8,1,7,34, 11,13,8,3,7,34, + 11,13,7,1,8,34, 11,13,7,3,8,34, 11,13,6,1,9,34, 11,13,6,3,9,34, 11,13,5,1,10,34, 11,13,5,3,10,34, 11,13,4,1,11,34, 11,13,4,3,11,34, + 11,13,3,1,12,34, 11,13,3,3,12,34, 11,13,2,1,13,34, 11,13,2,3,13,34, 11,13,2,6,4,18, 11,12,14,3,1,35, 11,12,14,5,11,3, 11,12,2,6,4,19, + 11,11,14,4,11,4, 11,11,14,5,11,4, 11,11,2,6,4,20, 11,10,13,5,11,5, 11,10,2,6,4,21, 11,9,13,5,11,6, 11,9,2,6,4,22, 11,8,13,5,11,7, + 11,8,2,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,4,4,11,8, 11,7,2,4,11,8, 11,7,2,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, + 11,6,5,4,11,9, 11,6,5,6,4,25, 11,6,3,4,11,9, 11,6,3,5,11,9, 11,6,3,6,4,25, 11,5,11,5,11,10, 11,5,6,6,4,26, 11,4,11,5,11,11, + 11,4,6,6,4,27, 11,3,11,5,11,12, 11,3,5,3,10,44, 11,3,5,6,4,28, 11,2,11,1,4,45, 11,2,11,5,11,13, 11,2,10,1,5,45, 11,2,9,1,6,45, + 11,2,8,1,7,45, 11,2,7,1,8,45, 11,2,6,1,9,45, 11,2,5,1,10,45, 11,2,5,4,11,13, 11,2,5,6,4,29, 11,1,11,1,4,46, 11,1,11,4,11,14, + 11,1,11,5,11,14, 11,1,10,1,5,46, 11,1,10,4,11,14, 11,1,9,1,6,46, 11,1,9,4,11,14, 11,1,8,1,7,46, 11,1,8,4,11,14, 11,1,7,1,8,46, + 11,1,7,4,11,14, 11,1,6,1,9,46, 11,1,6,4,11,14, 11,1,6,6,4,30, 12,12,14,1,1,35, 12,12,14,3,1,35, 12,12,14,5,12,3, 12,12,13,1,2,35, + 12,12,13,3,2,35, 12,12,12,1,3,35, 12,12,12,3,3,35, 12,12,11,1,4,35, 12,12,11,3,4,35, 12,12,10,1,5,35, 12,12,10,3,5,35, 12,12,9,1,6,35, + 12,12,9,3,6,35, 12,12,8,1,7,35, 12,12,8,3,7,35, 12,12,7,1,8,35, 12,12,7,3,8,35, 12,12,6,1,9,35, 12,12,6,3,9,35, 12,12,5,1,10,35, + 12,12,5,3,10,35, 12,12,4,1,11,35, 12,12,4,3,11,35, 12,12,3,1,12,35, 12,12,3,3,12,35, 12,12,2,1,13,35, 12,12,2,3,13,35, 12,12,2,6,3,19, + 12,11,14,4,12,4, 12,11,14,5,12,4, 12,11,2,6,3,20, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,13,5,12,6, 12,9,2,6,3,22, 12,8,13,5,12,7, + 12,8,2,6,3,23, 12,7,13,1,2,40, 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,12,1,3,40, 12,7,11,1,4,40, 12,7,10,1,5,40, 12,7,9,1,6,40, + 12,7,8,1,7,40, 12,7,7,1,8,40, 12,7,6,1,9,40, 12,7,5,1,10,40, 12,7,4,1,11,40, 12,7,4,4,12,8, 12,7,3,1,12,40, 12,7,2,1,13,40, + 12,7,2,4,12,8, 12,7,2,6,3,24, 12,6,12,1,3,41, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,11,1,4,41, 12,6,10,1,5,41, 12,6,9,1,6,41, + 12,6,8,1,7,41, 12,6,7,1,8,41, 12,6,6,1,9,41, 12,6,5,1,10,41, 12,6,5,4,12,9, 12,6,5,6,3,25, 12,6,3,1,12,41, 12,6,3,4,12,9, + 12,6,3,5,12,9, 12,6,3,6,3,25, 12,5,11,5,12,10, 12,5,6,6,3,26, 12,4,11,5,12,11, 12,4,6,6,3,27, 12,3,11,1,4,44, 12,3,11,4,12,12, + 12,3,11,5,12,12, 12,3,10,1,5,44, 12,3,10,4,12,12, 12,3,9,1,6,44, 12,3,9,4,12,12, 12,3,8,1,7,44, 12,3,8,4,12,12, 12,3,7,1,8,44, + 12,3,7,4,12,12, 12,3,6,1,9,44, 12,3,6,4,12,12, 12,3,5,1,10,44, 12,3,5,3,10,44, 12,3,5,4,12,12, 12,3,5,6,3,28, 13,11,14,1,1,36, + 13,11,14,3,1,36, 13,11,14,4,13,4, 13,11,14,5,13,4, 13,11,13,1,2,36, 13,11,13,3,2,36, 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, + 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, 13,11,9,3,6,36, 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, + 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, 13,11,5,3,10,36, 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, + 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, 13,10,13,1,2,37, 13,10,13,5,13,5, 13,10,12,1,3,37, 13,10,11,1,4,37, + 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, 13,10,6,1,9,37, 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, + 13,10,2,1,13,37, 13,10,2,6,2,21, 13,9,13,1,2,38, 13,9,13,5,13,6, 13,9,12,1,3,38, 13,9,11,1,4,38, 13,9,10,1,5,38, 13,9,9,1,6,38, + 13,9,8,1,7,38, 13,9,7,1,8,38, 13,9,6,1,9,38, 13,9,5,1,10,38, 13,9,4,1,11,38, 13,9,3,1,12,38, 13,9,2,1,13,38, 13,9,2,6,2,22, + 13,8,13,1,2,39, 13,8,13,4,2,23, 13,8,13,5,2,23, 13,8,12,1,3,39, 13,8,12,4,2,23, 13,8,11,1,4,39, 13,8,11,4,2,23, 13,8,10,1,5,39, + 13,8,10,4,2,23, 13,8,9,1,6,39, 13,8,9,4,2,23, 13,8,8,1,7,39, 13,8,8,4,2,23, 13,8,7,1,8,39, 13,8,7,4,2,23, 13,8,6,1,9,39, + 13,8,6,4,2,23, 13,8,5,1,10,39, 13,8,5,4,2,23, 13,8,4,1,11,39, 13,8,4,4,2,23, 13,8,3,1,12,39, 13,8,3,4,2,23, 13,8,2,1,13,39, + 13,8,2,4,2,23, 13,8,2,6,2,23, 13,5,11,1,4,42, 13,5,11,3,4,42, 13,5,11,5,13,10, 13,5,10,1,5,42, 13,5,10,3,5,42, 13,5,9,1,6,42, + 13,5,9,3,6,42, 13,5,8,1,7,42, 13,5,8,3,7,42, 13,5,7,1,8,42, 13,5,7,3,8,42, 13,5,6,1,9,42, 13,5,6,3,9,42, 13,5,6,6,2,26, + 13,4,11,1,4,43, 13,4,11,4,13,11, 13,4,11,5,13,11, 13,4,10,1,5,43, 13,4,10,4,13,11, 13,4,9,1,6,43, 13,4,9,4,13,11, 13,4,8,1,7,43, + 13,4,8,4,13,11, 13,4,7,1,8,43, 13,4,7,4,13,11, 13,4,6,1,9,43, 13,4,6,4,13,11, 13,4,6,6,2,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1599, + count = 1178, + faces = { + 2,10,15,2,1,85, 2,10,15,3,1,85, 2,10,15,4,2,53, 2,10,15,5,2,53, 2,10,14,2,2,85, 2,10,14,3,2,85, 2,10,13,2,3,85, 2,10,13,3,3,85, + 2,10,12,2,4,85, 2,10,12,3,4,85, 2,10,11,2,5,85, 2,10,11,3,5,85, 2,10,10,2,6,85, 2,10,10,3,6,85, 2,10,9,2,7,85, 2,10,9,3,7,85, + 2,10,8,2,8,85, 2,10,8,3,8,85, 2,10,7,2,9,85, 2,10,7,3,9,85, 2,10,6,2,10,85, 2,10,6,3,10,85, 2,10,5,2,11,85, 2,10,5,3,11,85, + 2,10,4,2,12,85, 2,10,4,3,12,85, 2,10,3,2,13,85, 2,10,3,3,13,85, 2,10,2,2,14,85, 2,10,2,3,14,85, 2,10,1,2,15,85, 2,10,1,3,15,85, + 2,10,1,6,13,69, 2,9,14,2,2,86, 2,9,14,5,2,54, 2,9,13,2,3,86, 2,9,12,2,4,86, 2,9,11,2,5,86, 2,9,10,2,6,86, 2,9,9,2,7,86, + 2,9,8,2,8,86, 2,9,7,2,9,86, 2,9,6,2,10,86, 2,9,5,2,11,86, 2,9,4,2,12,86, 2,9,4,4,2,54, 2,9,3,2,13,86, 2,9,2,2,14,86, + 2,9,1,2,15,86, 2,9,1,6,13,70, 2,8,14,2,2,87, 2,8,14,5,2,55, 2,8,13,2,3,87, 2,8,12,2,4,87, 2,8,11,2,5,87, 2,8,10,2,6,87, + 2,8,9,2,7,87, 2,8,8,2,8,87, 2,8,7,2,9,87, 2,8,6,2,10,87, 2,8,5,2,11,87, 2,8,5,6,13,71, 2,8,3,2,13,87, 2,8,3,5,2,55, + 2,8,2,2,14,87, 2,8,1,2,15,87, 2,8,1,6,13,71, 2,7,14,2,2,88, 2,7,14,4,13,72, 2,7,14,5,13,72, 2,7,13,2,3,88, 2,7,13,4,13,72, + 2,7,12,2,4,88, 2,7,12,4,13,72, 2,7,11,2,5,88, 2,7,11,4,13,72, 2,7,10,2,6,88, 2,7,10,4,13,72, 2,7,9,2,7,88, 2,7,9,4,13,72, + 2,7,8,2,8,88, 2,7,8,4,13,72, 2,7,7,2,9,88, 2,7,7,4,13,72, 2,7,6,2,10,88, 2,7,6,4,13,72, 2,7,5,2,11,88, 2,7,5,4,13,72, + 2,7,5,6,13,72, 2,7,3,2,13,88, 2,7,3,4,13,72, 2,7,3,5,13,72, 2,7,2,2,14,88, 2,7,2,4,13,72, 2,7,1,2,15,88, 2,7,1,4,13,72, + 2,7,1,6,13,72, 2,5,13,2,3,90, 2,5,13,3,3,90, 2,5,13,4,2,58, 2,5,13,5,2,58, 2,5,12,2,4,90, 2,5,12,3,4,90, 2,5,11,2,5,90, + 2,5,11,3,5,90, 2,5,10,2,6,90, 2,5,10,3,6,90, 2,5,9,2,7,90, 2,5,9,3,7,90, 2,5,8,2,8,90, 2,5,8,3,8,90, 2,5,7,2,9,90, + 2,5,7,3,9,90, 2,5,6,2,10,90, 2,5,6,3,10,90, 2,5,6,4,2,58, 2,5,6,6,2,58, 2,5,2,2,14,90, 2,5,2,3,14,90, 2,5,2,4,2,58, + 2,5,2,5,2,58, 2,5,2,6,2,58, 2,4,12,2,4,91, 2,4,12,5,2,59, 2,4,11,2,5,91, 2,4,10,2,6,91, 2,4,9,2,7,91, 2,4,8,2,8,91, + 2,4,7,2,9,91, 2,4,7,6,2,59, 2,3,12,2,4,92, 2,3,12,5,13,76, 2,3,11,2,5,92, 2,3,10,2,6,92, 2,3,9,2,7,92, 2,3,8,2,8,92, + 2,3,7,2,9,92, 2,3,7,6,13,76, 2,2,14,2,2,93, 2,2,14,3,2,93, 2,2,14,4,13,77, 2,2,14,5,13,77, 2,2,13,2,3,93, 2,2,13,3,3,93, + 2,2,13,4,13,77, 2,2,12,2,4,93, 2,2,12,4,13,77, 2,2,11,2,5,93, 2,2,11,4,13,77, 2,2,10,2,6,93, 2,2,10,4,13,77, 2,2,9,2,7,93, + 2,2,9,4,13,77, 2,2,8,2,8,93, 2,2,8,4,13,77, 2,2,7,2,9,93, 2,2,7,4,13,77, 2,2,6,2,10,93, 2,2,6,3,10,93, 2,2,6,4,13,77, + 2,2,5,2,11,93, 2,2,5,3,11,93, 2,2,5,4,13,77, 2,2,5,6,13,77, 3,11,15,2,1,84, 3,11,15,3,1,84, 3,11,15,5,3,52, 3,11,14,2,2,84, + 3,11,14,3,2,84, 3,11,13,2,3,84, 3,11,13,3,3,84, 3,11,12,2,4,84, 3,11,12,3,4,84, 3,11,11,2,5,84, 3,11,11,3,5,84, 3,11,10,2,6,84, + 3,11,10,3,6,84, 3,11,9,2,7,84, 3,11,9,3,7,84, 3,11,8,2,8,84, 3,11,8,3,8,84, 3,11,7,2,9,84, 3,11,7,3,9,84, 3,11,6,2,10,84, + 3,11,6,3,10,84, 3,11,5,2,11,84, 3,11,5,3,11,84, 3,11,4,2,12,84, 3,11,4,3,12,84, 3,11,3,2,13,84, 3,11,3,3,13,84, 3,11,2,2,14,84, + 3,11,2,3,14,84, 3,11,2,6,12,68, 3,10,15,4,3,53, 3,10,15,5,3,53, 3,10,1,3,15,85, 3,10,1,6,12,69, 3,9,14,5,3,54, 3,9,4,4,3,54, + 3,9,1,6,12,70, 3,8,14,5,3,55, 3,8,5,6,12,71, 3,8,3,5,3,55, 3,8,1,6,12,71, 3,7,14,5,3,56, 3,7,5,6,12,72, 3,7,3,5,3,56, + 3,7,1,6,12,72, 3,6,14,2,2,89, 3,6,14,4,3,57, 3,6,14,5,3,57, 3,6,13,2,3,89, 3,6,12,2,4,89, 3,6,11,2,5,89, 3,6,10,2,6,89, + 3,6,9,2,7,89, 3,6,8,2,8,89, 3,6,7,2,9,89, 3,6,6,2,10,89, 3,6,5,2,11,89, 3,6,5,4,3,57, 3,6,5,6,12,73, 3,6,3,2,13,89, + 3,6,3,4,3,57, 3,6,3,5,3,57, 3,6,2,2,14,89, 3,6,1,2,15,89, 3,6,1,4,3,57, 3,6,1,6,12,73, 3,5,13,4,3,58, 3,5,13,5,3,58, + 3,5,6,4,3,58, 3,5,6,6,3,58, 3,5,2,4,3,58, 3,5,2,5,3,58, 3,5,2,6,3,58, 3,4,12,5,3,59, 3,4,7,6,12,75, 3,3,12,5,3,60, + 3,3,7,6,12,76, 3,2,14,3,2,93, 3,2,14,5,12,77, 3,2,13,3,3,93, 3,2,6,3,10,93, 3,2,5,3,11,93, 3,2,5,6,12,77, 3,1,14,2,2,94, + 3,1,14,4,12,78, 3,1,14,5,12,78, 3,1,13,2,3,94, 3,1,13,4,12,78, 3,1,12,2,4,94, 3,1,12,4,12,78, 3,1,11,2,5,94, 3,1,11,4,12,78, + 3,1,10,2,6,94, 3,1,10,4,12,78, 3,1,9,2,7,94, 3,1,9,4,12,78, 3,1,8,2,8,94, 3,1,8,4,12,78, 3,1,7,2,9,94, 3,1,7,4,12,78, + 3,1,6,2,10,94, 3,1,6,4,12,78, 3,1,5,2,11,94, 3,1,5,4,12,78, 3,1,5,6,12,78, 4,12,14,2,2,83, 4,12,14,3,2,83, 4,12,14,5,4,51, + 4,12,13,2,3,83, 4,12,13,3,3,83, 4,12,12,2,4,83, 4,12,12,3,4,83, 4,12,11,2,5,83, 4,12,11,3,5,83, 4,12,10,2,6,83, 4,12,10,3,6,83, + 4,12,9,2,7,83, 4,12,9,3,7,83, 4,12,8,2,8,83, 4,12,8,3,8,83, 4,12,7,2,9,83, 4,12,7,3,9,83, 4,12,6,2,10,83, 4,12,6,3,10,83, + 4,12,5,2,11,83, 4,12,5,3,11,83, 4,12,4,2,12,83, 4,12,4,3,12,83, 4,12,3,2,13,83, 4,12,3,3,13,83, 4,12,2,2,14,83, 4,12,2,3,14,83, + 4,12,2,6,11,67, 4,11,15,3,1,84, 4,11,15,5,4,52, 4,11,2,6,11,68, 4,10,15,4,4,53, 4,10,15,5,4,53, 4,10,1,3,15,85, 4,10,1,6,11,69, + 4,9,14,5,4,54, 4,9,4,4,4,54, 4,9,1,6,11,70, 4,8,14,5,4,55, 4,8,5,6,11,71, 4,8,3,5,4,55, 4,8,1,6,11,71, 4,7,14,5,4,56, + 4,7,5,6,11,72, 4,7,3,5,4,56, 4,7,1,6,11,72, 4,6,14,4,4,57, 4,6,14,5,4,57, 4,6,5,4,4,57, 4,6,5,6,11,73, 4,6,3,4,4,57, + 4,6,3,5,4,57, 4,6,1,4,4,57, 4,6,1,6,11,73, 4,5,13,4,4,58, 4,5,13,5,4,58, 4,5,6,4,4,58, 4,5,6,6,11,74, 4,5,2,4,4,58, + 4,5,2,5,4,58, 4,5,2,6,11,74, 4,4,12,5,4,59, 4,4,7,6,11,75, 4,3,12,5,4,60, 4,3,7,6,11,76, 4,2,14,3,2,93, 4,2,14,5,4,61, + 4,2,13,3,3,93, 4,2,6,3,10,93, 4,2,5,3,11,93, 4,2,5,6,11,77, 4,1,14,4,4,62, 4,1,14,5,4,62, 4,1,13,4,4,62, 4,1,12,4,4,62, + 4,1,11,4,4,62, 4,1,10,4,4,62, 4,1,9,4,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, 4,1,6,4,4,62, 4,1,5,4,4,62, 4,1,5,6,11,78, + 5,13,13,2,3,82, 5,13,13,3,3,82, 5,13,13,5,5,50, 5,13,12,2,4,82, 5,13,12,3,4,82, 5,13,11,2,5,82, 5,13,11,3,5,82, 5,13,10,2,6,82, + 5,13,10,3,6,82, 5,13,9,2,7,82, 5,13,9,3,7,82, 5,13,8,2,8,82, 5,13,8,3,8,82, 5,13,7,2,9,82, 5,13,7,3,9,82, 5,13,6,2,10,82, + 5,13,6,3,10,82, 5,13,5,2,11,82, 5,13,5,3,11,82, 5,13,4,2,12,82, 5,13,4,3,12,82, 5,13,3,2,13,82, 5,13,3,3,13,82, 5,13,3,6,10,66, + 5,12,14,3,2,83, 5,12,14,5,5,51, 5,12,2,3,14,83, 5,12,2,6,10,67, 5,11,15,3,1,84, 5,11,15,5,5,52, 5,11,2,6,10,68, 5,10,15,4,5,53, + 5,10,15,5,5,53, 5,10,1,3,15,85, 5,10,1,6,10,69, 5,9,14,5,5,54, 5,9,4,4,5,54, 5,9,1,6,10,70, 5,8,14,5,5,55, 5,8,5,6,10,71, + 5,8,3,5,5,55, 5,8,1,6,10,71, 5,7,14,5,5,56, 5,7,5,6,10,72, 5,7,3,5,5,56, 5,7,1,6,10,72, 5,6,14,4,5,57, 5,6,14,5,5,57, + 5,6,5,4,5,57, 5,6,5,6,10,73, 5,6,3,4,5,57, 5,6,3,5,5,57, 5,6,1,4,5,57, 5,6,1,6,10,73, 5,5,13,4,5,58, 5,5,13,5,5,58, + 5,5,6,4,5,58, 5,5,6,6,10,74, 5,5,2,4,5,58, 5,5,2,5,5,58, 5,5,2,6,10,74, 5,4,12,5,5,59, 5,4,7,6,10,75, 5,3,12,5,5,60, + 5,3,7,6,10,76, 5,2,14,3,2,93, 5,2,14,5,5,61, 5,2,13,3,3,93, 5,2,6,3,10,93, 5,2,5,3,11,93, 5,2,5,6,10,77, 5,1,14,4,5,62, + 5,1,14,5,5,62, 5,1,5,4,5,62, 5,1,5,6,10,78, 5,0,13,2,3,95, 5,0,13,5,5,63, 5,0,12,2,4,95, 5,0,11,2,5,95, 5,0,10,2,6,95, + 5,0,9,2,7,95, 5,0,8,2,8,95, 5,0,7,2,9,95, 5,0,6,2,10,95, 5,0,6,6,5,63, 6,13,13,3,3,82, 6,13,13,5,6,50, 6,13,12,3,4,82, + 6,13,11,3,5,82, 6,13,10,3,6,82, 6,13,9,3,7,82, 6,13,8,3,8,82, 6,13,7,3,9,82, 6,13,6,3,10,82, 6,13,5,3,11,82, 6,13,4,3,12,82, + 6,13,3,3,13,82, 6,13,3,6,9,66, 6,12,14,3,2,83, 6,12,14,5,6,51, 6,12,2,3,14,83, 6,12,2,6,9,67, 6,11,15,3,1,84, 6,11,15,5,6,52, + 6,11,2,6,9,68, 6,10,15,4,6,53, 6,10,15,5,6,53, 6,10,1,3,15,85, 6,10,1,6,9,69, 6,9,14,5,6,54, 6,9,4,4,6,54, 6,9,1,6,9,70, + 6,8,14,5,6,55, 6,8,5,6,9,71, 6,8,3,5,6,55, 6,8,1,6,9,71, 6,7,14,5,6,56, 6,7,5,6,9,72, 6,7,3,5,6,56, 6,7,1,6,9,72, + 6,6,14,4,6,57, 6,6,14,5,6,57, 6,6,5,4,6,57, 6,6,5,6,9,73, 6,6,3,4,6,57, 6,6,3,5,6,57, 6,6,1,4,6,57, 6,6,1,6,9,73, + 6,5,13,4,6,58, 6,5,13,5,6,58, 6,5,6,4,6,58, 6,5,6,6,9,74, 6,5,2,4,6,58, 6,5,2,5,6,58, 6,5,2,6,9,74, 6,4,12,5,6,59, + 6,4,7,6,9,75, 6,3,12,5,6,60, 6,3,7,6,9,76, 6,2,14,3,2,93, 6,2,14,5,6,61, 6,2,13,3,3,93, 6,2,6,3,10,93, 6,2,5,3,11,93, + 6,2,5,6,9,77, 6,1,14,4,6,62, 6,1,14,5,6,62, 6,1,5,4,6,62, 6,1,5,6,9,78, 6,0,13,1,3,95, 6,0,13,5,6,63, 6,0,12,1,4,95, + 6,0,11,1,5,95, 6,0,10,1,6,95, 6,0,9,1,7,95, 6,0,8,1,8,95, 6,0,7,1,9,95, 6,0,6,1,10,95, 6,0,6,6,6,63, 7,14,11,2,5,81, + 7,14,11,3,5,81, 7,14,11,5,7,49, 7,14,10,2,6,81, 7,14,10,3,6,81, 7,14,9,2,7,81, 7,14,9,3,7,81, 7,14,8,2,8,81, 7,14,8,3,8,81, + 7,14,8,6,8,65, 7,14,6,2,10,81, 7,14,6,3,10,81, 7,14,6,5,7,49, 7,14,5,2,11,81, 7,14,5,3,11,81, 7,14,4,2,12,81, 7,14,4,3,12,81, + 7,14,4,6,8,65, 7,13,13,3,3,82, 7,13,13,5,7,50, 7,13,12,3,4,82, 7,13,7,3,9,82, 7,13,3,3,13,82, 7,13,3,6,8,66, 7,12,14,3,2,83, + 7,12,14,5,7,51, 7,12,2,3,14,83, 7,12,2,6,8,67, 7,11,15,3,1,84, 7,11,15,5,7,52, 7,11,2,6,8,68, 7,10,15,4,7,53, 7,10,15,5,7,53, + 7,10,1,3,15,85, 7,10,1,6,8,69, 7,9,14,5,7,54, 7,9,4,4,7,54, 7,9,1,6,8,70, 7,8,14,5,7,55, 7,8,5,6,8,71, 7,8,3,5,7,55, + 7,8,1,6,8,71, 7,7,14,5,7,56, 7,7,5,6,8,72, 7,7,3,5,7,56, 7,7,1,6,8,72, 7,6,14,4,7,57, 7,6,14,5,7,57, 7,6,5,4,7,57, + 7,6,5,6,8,73, 7,6,3,4,7,57, 7,6,3,5,7,57, 7,6,1,4,7,57, 7,6,1,6,8,73, 7,5,13,4,7,58, 7,5,13,5,7,58, 7,5,6,4,7,58, + 7,5,6,6,8,74, 7,5,2,4,7,58, 7,5,2,5,7,58, 7,5,2,6,8,74, 7,4,12,5,7,59, 7,4,7,6,8,75, 7,3,12,5,7,60, 7,3,7,6,8,76, + 7,2,14,3,2,93, 7,2,14,5,7,61, 7,2,13,3,3,93, 7,2,6,3,10,93, 7,2,5,3,11,93, 7,2,5,6,8,77, 7,1,14,4,7,62, 7,1,14,5,7,62, + 7,1,13,4,7,62, 7,1,12,4,7,62, 7,1,11,4,7,62, 7,1,10,4,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, + 7,1,5,4,7,62, 7,1,5,6,8,78, 8,14,11,3,5,81, 8,14,11,5,8,49, 8,14,10,3,6,81, 8,14,9,3,7,81, 8,14,8,3,8,81, 8,14,8,6,7,65, + 8,14,6,3,10,81, 8,14,6,5,8,49, 8,14,5,3,11,81, 8,14,4,3,12,81, 8,14,4,6,7,65, 8,13,13,3,3,82, 8,13,13,5,8,50, 8,13,12,3,4,82, + 8,13,7,3,9,82, 8,13,3,3,13,82, 8,13,3,6,7,66, 8,12,14,3,2,83, 8,12,14,5,8,51, 8,12,2,3,14,83, 8,12,2,6,7,67, 8,11,15,3,1,84, + 8,11,15,5,8,52, 8,11,2,6,7,68, 8,10,15,4,8,53, 8,10,15,5,8,53, 8,10,1,3,15,85, 8,10,1,6,7,69, 8,9,14,5,8,54, 8,9,4,4,8,54, + 8,9,1,6,7,70, 8,8,14,5,8,55, 8,8,5,6,7,71, 8,8,3,5,8,55, 8,8,1,6,7,71, 8,7,14,5,8,56, 8,7,5,6,7,72, 8,7,3,5,8,56, + 8,7,1,6,7,72, 8,6,14,4,8,57, 8,6,14,5,8,57, 8,6,5,4,8,57, 8,6,5,6,7,73, 8,6,3,4,8,57, 8,6,3,5,8,57, 8,6,1,4,8,57, + 8,6,1,6,7,73, 8,5,13,4,8,58, 8,5,13,5,8,58, 8,5,6,4,8,58, 8,5,6,6,7,74, 8,5,2,4,8,58, 8,5,2,5,8,58, 8,5,2,6,7,74, + 8,4,12,5,8,59, 8,4,7,6,7,75, 8,3,12,5,8,60, 8,3,7,6,7,76, 8,2,14,3,2,93, 8,2,14,5,8,61, 8,2,13,3,3,93, 8,2,6,3,10,93, + 8,2,5,3,11,93, 8,2,5,6,7,77, 8,1,14,4,8,62, 8,1,14,5,8,62, 8,1,13,4,8,62, 8,1,12,4,8,62, 8,1,11,4,8,62, 8,1,10,4,8,62, + 8,1,9,4,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,5,6,7,78, 9,14,11,1,5,81, 9,14,11,3,5,81, + 9,14,11,5,9,49, 9,14,10,1,6,81, 9,14,10,3,6,81, 9,14,9,1,7,81, 9,14,9,3,7,81, 9,14,8,1,8,81, 9,14,8,3,8,81, 9,14,8,6,6,65, + 9,14,6,1,10,81, 9,14,6,3,10,81, 9,14,6,5,9,49, 9,14,5,1,11,81, 9,14,5,3,11,81, 9,14,4,1,12,81, 9,14,4,3,12,81, 9,14,4,6,6,65, + 9,13,13,3,3,82, 9,13,13,5,9,50, 9,13,12,3,4,82, 9,13,7,3,9,82, 9,13,3,3,13,82, 9,13,3,6,6,66, 9,12,14,3,2,83, 9,12,14,5,9,51, + 9,12,2,3,14,83, 9,12,2,6,6,67, 9,11,15,3,1,84, 9,11,15,5,9,52, 9,11,2,6,6,68, 9,10,15,4,9,53, 9,10,15,5,9,53, 9,10,1,3,15,85, + 9,10,1,6,6,69, 9,9,14,5,9,54, 9,9,4,4,9,54, 9,9,1,6,6,70, 9,8,14,5,9,55, 9,8,5,6,6,71, 9,8,3,5,9,55, 9,8,1,6,6,71, + 9,7,14,5,9,56, 9,7,5,6,6,72, 9,7,3,5,9,56, 9,7,1,6,6,72, 9,6,14,4,9,57, 9,6,14,5,9,57, 9,6,5,4,9,57, 9,6,5,6,6,73, + 9,6,3,4,9,57, 9,6,3,5,9,57, 9,6,1,4,9,57, 9,6,1,6,6,73, 9,5,13,4,9,58, 9,5,13,5,9,58, 9,5,6,4,9,58, 9,5,6,6,6,74, + 9,5,2,4,9,58, 9,5,2,5,9,58, 9,5,2,6,6,74, 9,4,12,5,9,59, 9,4,7,6,6,75, 9,3,12,5,9,60, 9,3,7,6,6,76, 9,2,14,3,2,93, + 9,2,14,5,9,61, 9,2,13,3,3,93, 9,2,6,3,10,93, 9,2,5,3,11,93, 9,2,5,6,6,77, 9,1,14,4,9,62, 9,1,14,5,9,62, 9,1,5,4,9,62, + 9,1,5,6,6,78, 9,0,13,2,3,95, 9,0,13,5,6,79, 9,0,12,2,4,95, 9,0,11,2,5,95, 9,0,10,2,6,95, 9,0,9,2,7,95, 9,0,8,2,8,95, + 9,0,7,2,9,95, 9,0,6,2,10,95, 9,0,6,6,6,79, 10,13,13,1,3,82, 10,13,13,3,3,82, 10,13,13,5,10,50, 10,13,12,1,4,82, 10,13,12,3,4,82, + 10,13,11,1,5,82, 10,13,11,3,5,82, 10,13,10,1,6,82, 10,13,10,3,6,82, 10,13,9,1,7,82, 10,13,9,3,7,82, 10,13,8,1,8,82, 10,13,8,3,8,82, + 10,13,7,1,9,82, 10,13,7,3,9,82, 10,13,6,1,10,82, 10,13,6,3,10,82, 10,13,5,1,11,82, 10,13,5,3,11,82, 10,13,4,1,12,82, 10,13,4,3,12,82, + 10,13,3,1,13,82, 10,13,3,3,13,82, 10,13,3,6,5,66, 10,12,14,3,2,83, 10,12,14,5,10,51, 10,12,2,3,14,83, 10,12,2,6,5,67, 10,11,15,3,1,84, + 10,11,15,5,10,52, 10,11,2,6,5,68, 10,10,15,4,10,53, 10,10,15,5,10,53, 10,10,1,3,15,85, 10,10,1,6,5,69, 10,9,14,5,10,54, 10,9,4,4,10,54, + 10,9,1,6,5,70, 10,8,14,5,10,55, 10,8,5,6,5,71, 10,8,3,5,10,55, 10,8,1,6,5,71, 10,7,14,5,10,56, 10,7,5,6,5,72, 10,7,3,5,10,56, + 10,7,1,6,5,72, 10,6,14,4,10,57, 10,6,14,5,10,57, 10,6,5,4,10,57, 10,6,5,6,5,73, 10,6,3,4,10,57, 10,6,3,5,10,57, 10,6,1,4,10,57, + 10,6,1,6,5,73, 10,5,13,4,10,58, 10,5,13,5,10,58, 10,5,6,4,10,58, 10,5,6,6,5,74, 10,5,2,4,10,58, 10,5,2,5,10,58, 10,5,2,6,5,74, + 10,4,12,5,10,59, 10,4,7,6,5,75, 10,3,12,5,10,60, 10,3,7,6,5,76, 10,2,14,3,2,93, 10,2,14,5,10,61, 10,2,13,3,3,93, 10,2,6,3,10,93, + 10,2,5,3,11,93, 10,2,5,6,5,77, 10,1,14,4,10,62, 10,1,14,5,10,62, 10,1,5,4,10,62, 10,1,5,6,5,78, 10,0,13,1,3,95, 10,0,13,5,5,79, + 10,0,12,1,4,95, 10,0,11,1,5,95, 10,0,10,1,6,95, 10,0,9,1,7,95, 10,0,8,1,8,95, 10,0,7,1,9,95, 10,0,6,1,10,95, 10,0,6,6,5,79, + 11,12,14,1,2,83, 11,12,14,3,2,83, 11,12,14,5,11,51, 11,12,13,1,3,83, 11,12,13,3,3,83, 11,12,12,1,4,83, 11,12,12,3,4,83, 11,12,11,1,5,83, + 11,12,11,3,5,83, 11,12,10,1,6,83, 11,12,10,3,6,83, 11,12,9,1,7,83, 11,12,9,3,7,83, 11,12,8,1,8,83, 11,12,8,3,8,83, 11,12,7,1,9,83, + 11,12,7,3,9,83, 11,12,6,1,10,83, 11,12,6,3,10,83, 11,12,5,1,11,83, 11,12,5,3,11,83, 11,12,4,1,12,83, 11,12,4,3,12,83, 11,12,3,1,13,83, + 11,12,3,3,13,83, 11,12,2,1,14,83, 11,12,2,3,14,83, 11,12,2,6,4,67, 11,11,15,3,1,84, 11,11,15,5,11,52, 11,11,2,6,4,68, 11,10,15,4,11,53, + 11,10,15,5,11,53, 11,10,1,3,15,85, 11,10,1,6,4,69, 11,9,14,5,11,54, 11,9,4,4,11,54, 11,9,1,6,4,70, 11,8,14,5,11,55, 11,8,5,6,4,71, + 11,8,3,5,11,55, 11,8,1,6,4,71, 11,7,14,5,11,56, 11,7,5,6,4,72, 11,7,3,5,11,56, 11,7,1,6,4,72, 11,6,14,4,11,57, 11,6,14,5,11,57, + 11,6,5,4,11,57, 11,6,5,6,4,73, 11,6,3,4,11,57, 11,6,3,5,11,57, 11,6,1,4,11,57, 11,6,1,6,4,73, 11,5,13,4,11,58, 11,5,13,5,11,58, + 11,5,6,4,11,58, 11,5,6,6,4,74, 11,5,2,4,11,58, 11,5,2,5,11,58, 11,5,2,6,4,74, 11,4,12,5,11,59, 11,4,7,6,4,75, 11,3,12,5,11,60, + 11,3,7,6,4,76, 11,2,14,3,2,93, 11,2,14,5,11,61, 11,2,13,3,3,93, 11,2,6,3,10,93, 11,2,5,3,11,93, 11,2,5,6,4,77, 11,1,14,1,2,94, + 11,1,14,4,11,62, 11,1,14,5,11,62, 11,1,13,1,3,94, 11,1,13,4,11,62, 11,1,12,1,4,94, 11,1,12,4,11,62, 11,1,11,1,5,94, 11,1,11,4,11,62, + 11,1,10,1,6,94, 11,1,10,4,11,62, 11,1,9,1,7,94, 11,1,9,4,11,62, 11,1,8,1,8,94, 11,1,8,4,11,62, 11,1,7,1,9,94, 11,1,7,4,11,62, + 11,1,6,1,10,94, 11,1,6,4,11,62, 11,1,5,1,11,94, 11,1,5,4,11,62, 11,1,5,6,4,78, 12,11,15,1,1,84, 12,11,15,3,1,84, 12,11,15,5,12,52, + 12,11,14,1,2,84, 12,11,14,3,2,84, 12,11,13,1,3,84, 12,11,13,3,3,84, 12,11,12,1,4,84, 12,11,12,3,4,84, 12,11,11,1,5,84, 12,11,11,3,5,84, + 12,11,10,1,6,84, 12,11,10,3,6,84, 12,11,9,1,7,84, 12,11,9,3,7,84, 12,11,8,1,8,84, 12,11,8,3,8,84, 12,11,7,1,9,84, 12,11,7,3,9,84, + 12,11,6,1,10,84, 12,11,6,3,10,84, 12,11,5,1,11,84, 12,11,5,3,11,84, 12,11,4,1,12,84, 12,11,4,3,12,84, 12,11,3,1,13,84, 12,11,3,3,13,84, + 12,11,2,1,14,84, 12,11,2,3,14,84, 12,11,2,6,3,68, 12,10,15,4,12,53, 12,10,15,5,12,53, 12,10,1,3,15,85, 12,10,1,6,3,69, 12,9,14,5,12,54, + 12,9,4,4,12,54, 12,9,1,6,3,70, 12,8,14,5,12,55, 12,8,5,6,3,71, 12,8,3,5,12,55, 12,8,1,6,3,71, 12,7,14,5,12,56, 12,7,5,6,3,72, + 12,7,3,5,12,56, 12,7,1,6,3,72, 12,6,14,1,2,89, 12,6,14,4,12,57, 12,6,14,5,12,57, 12,6,13,1,3,89, 12,6,12,1,4,89, 12,6,11,1,5,89, + 12,6,10,1,6,89, 12,6,9,1,7,89, 12,6,8,1,8,89, 12,6,7,1,9,89, 12,6,6,1,10,89, 12,6,5,1,11,89, 12,6,5,4,12,57, 12,6,5,6,3,73, + 12,6,3,1,13,89, 12,6,3,4,12,57, 12,6,3,5,12,57, 12,6,2,1,14,89, 12,6,1,1,15,89, 12,6,1,4,12,57, 12,6,1,6,3,73, 12,5,13,4,12,58, + 12,5,13,5,12,58, 12,5,6,4,12,58, 12,5,6,6,3,74, 12,5,2,4,12,58, 12,5,2,5,12,58, 12,5,2,6,3,74, 12,4,12,5,12,59, 12,4,7,6,3,75, + 12,3,12,1,4,92, 12,3,12,5,12,60, 12,3,11,1,5,92, 12,3,10,1,6,92, 12,3,9,1,7,92, 12,3,8,1,8,92, 12,3,7,1,9,92, 12,3,7,6,3,76, + 12,2,14,1,2,93, 12,2,14,3,2,93, 12,2,14,4,12,61, 12,2,14,5,12,61, 12,2,13,1,3,93, 12,2,13,3,3,93, 12,2,13,4,12,61, 12,2,12,1,4,93, + 12,2,12,4,12,61, 12,2,11,1,5,93, 12,2,11,4,12,61, 12,2,10,1,6,93, 12,2,10,4,12,61, 12,2,9,1,7,93, 12,2,9,4,12,61, 12,2,8,1,8,93, + 12,2,8,4,12,61, 12,2,7,1,9,93, 12,2,7,4,12,61, 12,2,6,1,10,93, 12,2,6,3,10,93, 12,2,6,4,12,61, 12,2,5,1,11,93, 12,2,5,3,11,93, + 12,2,5,4,12,61, 12,2,5,6,12,61, 13,10,15,1,1,85, 13,10,15,3,1,85, 13,10,15,4,13,53, 13,10,15,5,13,53, 13,10,14,1,2,85, 13,10,14,3,2,85, + 13,10,13,1,3,85, 13,10,13,3,3,85, 13,10,12,1,4,85, 13,10,12,3,4,85, 13,10,11,1,5,85, 13,10,11,3,5,85, 13,10,10,1,6,85, 13,10,10,3,6,85, + 13,10,9,1,7,85, 13,10,9,3,7,85, 13,10,8,1,8,85, 13,10,8,3,8,85, 13,10,7,1,9,85, 13,10,7,3,9,85, 13,10,6,1,10,85, 13,10,6,3,10,85, + 13,10,5,1,11,85, 13,10,5,3,11,85, 13,10,4,1,12,85, 13,10,4,3,12,85, 13,10,3,1,13,85, 13,10,3,3,13,85, 13,10,2,1,14,85, 13,10,2,3,14,85, + 13,10,1,1,15,85, 13,10,1,3,15,85, 13,10,1,6,2,69, 13,9,14,1,2,86, 13,9,14,5,13,54, 13,9,13,1,3,86, 13,9,12,1,4,86, 13,9,11,1,5,86, + 13,9,10,1,6,86, 13,9,9,1,7,86, 13,9,8,1,8,86, 13,9,7,1,9,86, 13,9,6,1,10,86, 13,9,5,1,11,86, 13,9,4,1,12,86, 13,9,4,4,13,54, + 13,9,3,1,13,86, 13,9,2,1,14,86, 13,9,1,1,15,86, 13,9,1,6,2,70, 13,8,14,1,2,87, 13,8,14,5,13,55, 13,8,13,1,3,87, 13,8,12,1,4,87, + 13,8,11,1,5,87, 13,8,10,1,6,87, 13,8,9,1,7,87, 13,8,8,1,8,87, 13,8,7,1,9,87, 13,8,6,1,10,87, 13,8,5,1,11,87, 13,8,5,6,2,71, + 13,8,3,1,13,87, 13,8,3,5,13,55, 13,8,2,1,14,87, 13,8,1,1,15,87, 13,8,1,6,2,71, 13,7,14,1,2,88, 13,7,14,4,2,72, 13,7,14,5,2,72, + 13,7,13,1,3,88, 13,7,13,4,2,72, 13,7,12,1,4,88, 13,7,12,4,2,72, 13,7,11,1,5,88, 13,7,11,4,2,72, 13,7,10,1,6,88, 13,7,10,4,2,72, + 13,7,9,1,7,88, 13,7,9,4,2,72, 13,7,8,1,8,88, 13,7,8,4,2,72, 13,7,7,1,9,88, 13,7,7,4,2,72, 13,7,6,1,10,88, 13,7,6,4,2,72, + 13,7,5,1,11,88, 13,7,5,4,2,72, 13,7,5,6,2,72, 13,7,3,1,13,88, 13,7,3,4,2,72, 13,7,3,5,2,72, 13,7,2,1,14,88, 13,7,2,4,2,72, + 13,7,1,1,15,88, 13,7,1,4,2,72, 13,7,1,6,2,72, 13,5,13,1,3,90, 13,5,13,3,3,90, 13,5,13,4,2,74, 13,5,13,5,2,74, 13,5,12,1,4,90, + 13,5,12,3,4,90, 13,5,11,1,5,90, 13,5,11,3,5,90, 13,5,10,1,6,90, 13,5,10,3,6,90, 13,5,9,1,7,90, 13,5,9,3,7,90, 13,5,8,1,8,90, + 13,5,8,3,8,90, 13,5,7,1,9,90, 13,5,7,3,9,90, 13,5,6,1,10,90, 13,5,6,3,10,90, 13,5,6,4,2,74, 13,5,6,6,2,74, 13,5,2,1,14,90, + 13,5,2,3,14,90, 13,5,2,4,2,74, 13,5,2,5,2,74, 13,5,2,6,2,74, 13,4,12,1,4,91, 13,4,12,4,2,75, 13,4,12,5,2,75, 13,4,11,1,5,91, + 13,4,11,4,2,75, 13,4,10,1,6,91, 13,4,10,4,2,75, 13,4,9,1,7,91, 13,4,9,4,2,75, 13,4,8,1,8,91, 13,4,8,4,2,75, 13,4,7,1,9,91, + 13,4,7,4,2,75, 13,4,7,6,2,75, + }, + }, + }, +} diff --git a/assets/voxels/cooltrainer_m.lua b/assets/voxels/cooltrainer_m.lua new file mode 100644 index 0000000..b9760c2 --- /dev/null +++ b/assets/voxels/cooltrainer_m.lua @@ -0,0 +1,300 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "cooltrainer_m" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "cooltrainer_m", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1596, + count = 976, + faces = { + 1,10,12,2,3,37, 1,10,12,3,3,37, 1,10,12,5,1,5, 1,10,11,2,4,37, 1,10,11,3,4,37, 1,10,10,2,5,37, 1,10,10,3,5,37, 1,10,9,2,6,37, + 1,10,9,3,6,37, 1,10,8,2,7,37, 1,10,8,3,7,37, 1,10,7,2,8,37, 1,10,7,3,8,37, 1,10,6,2,9,37, 1,10,6,3,9,37, 1,10,5,2,10,37, + 1,10,5,3,10,37, 1,10,4,2,11,37, 1,10,4,3,11,37, 1,10,3,2,12,37, 1,10,3,3,12,37, 1,10,2,2,13,37, 1,10,2,3,13,37, 1,10,2,6,14,21, + 1,9,12,2,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,10,2,5,38, 1,9,9,2,6,38, 1,9,8,2,7,38, 1,9,7,2,8,38, 1,9,6,2,9,38, + 1,9,5,2,10,38, 1,9,4,2,11,38, 1,9,3,2,12,38, 1,9,2,2,13,38, 1,9,2,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, + 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, + 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, + 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,2,2,13,39, 1,8,2,4,1,7, 1,8,2,6,14,23, 1,5,11,2,4,42, 1,5,11,3,4,42, 1,5,11,5,1,10, + 1,5,10,2,5,42, 1,5,10,3,5,42, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, 1,5,7,3,8,42, + 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,4,6,14,26, 1,4,11,2,4,43, + 1,4,11,4,1,11, 1,4,11,5,1,11, 1,4,10,2,5,43, 1,4,10,4,1,11, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, + 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, + 1,4,4,6,14,27, 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,13,4,2,4, 2,11,13,5,2,4, 2,11,12,2,3,36, 2,11,12,3,3,36, 2,11,11,2,4,36, + 2,11,11,3,4,36, 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, 2,11,8,3,7,36, 2,11,7,2,8,36, + 2,11,7,3,8,36, 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, 2,11,4,3,11,36, 2,11,3,2,12,36, + 2,11,3,3,12,36, 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,12,5,2,5, 2,10,2,6,13,21, 2,9,12,5,2,6, 2,9,2,6,13,22, + 2,8,12,5,2,7, 2,8,2,4,2,7, 2,8,2,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, + 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, 2,7,3,4,2,8, + 2,7,3,6,13,24, 2,6,11,2,4,41, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, 2,6,6,2,9,41, + 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,4,6,13,25, 2,5,11,5,2,10, 2,5,4,6,13,26, 2,4,11,5,2,11, 2,4,4,6,13,27, 2,3,11,2,4,44, + 2,3,11,4,2,12, 2,3,11,5,2,12, 2,3,10,2,5,44, 2,3,10,4,2,12, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, + 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, + 2,3,4,6,13,28, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, + 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, + 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,13,2,2,35, + 3,12,13,3,2,35, 3,12,13,5,3,3, 3,12,12,2,3,35, 3,12,11,2,4,35, 3,12,10,2,5,35, 3,12,9,2,6,35, 3,12,8,2,7,35, 3,12,7,2,8,35, + 3,12,6,2,9,35, 3,12,5,2,10,35, 3,12,4,2,11,35, 3,12,3,2,12,35, 3,12,3,6,12,19, 3,11,13,4,3,4, 3,11,13,5,3,4, 3,11,2,3,13,36, + 3,11,2,6,12,20, 3,10,12,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,2,4,3,7, 3,8,2,6,12,23, + 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,11,5,3,9, 3,6,4,6,12,25, 3,5,11,5,3,10, 3,5,4,6,12,26, + 3,4,11,5,3,11, 3,4,4,6,12,27, 3,3,11,4,3,12, 3,3,11,5,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, 3,2,10,5,3,13, + 3,2,9,2,6,45, 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,5,6,12,29, 3,1,10,2,5,46, 3,1,10,4,3,14, + 3,1,10,5,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, 3,1,6,2,9,46, + 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,5,6,12,30, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, + 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, + 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, + 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, 4,12,3,6,11,19, 4,11,13,4,4,4, 4,11,13,5,4,4, 4,11,2,3,13,36, + 4,11,2,6,11,20, 4,10,12,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,2,4,4,7, 4,8,2,6,11,23, + 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,11,5,4,9, 4,6,4,6,11,25, 4,5,11,5,4,10, 4,5,4,6,11,26, + 4,4,11,5,4,11, 4,4,4,6,11,27, 4,3,11,4,4,12, 4,3,11,5,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,10,5,4,13, 4,2,5,6,11,29, + 4,1,10,4,4,14, 4,1,10,5,4,14, 4,1,5,6,11,30, 4,0,9,2,6,47, 4,0,9,5,4,15, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, + 4,0,5,2,10,47, 4,0,5,6,11,31, 5,15,10,2,5,32, 5,15,10,3,5,32, 5,15,10,5,5,0, 5,15,9,2,6,32, 5,15,9,3,6,32, 5,15,8,2,7,32, + 5,15,8,3,7,32, 5,15,7,2,8,32, 5,15,7,3,8,32, 5,15,6,2,9,32, 5,15,6,3,9,32, 5,15,6,6,10,16, 5,14,11,3,4,33, 5,14,11,5,5,1, + 5,14,5,3,10,33, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,3,2,35, + 5,12,13,5,5,3, 5,12,3,6,10,19, 5,11,13,4,5,4, 5,11,13,5,5,4, 5,11,2,3,13,36, 5,11,2,6,10,20, 5,10,12,5,5,5, 5,10,2,6,10,21, + 5,9,12,5,5,6, 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,2,4,5,7, 5,8,2,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,3,4,5,8, + 5,7,3,6,10,24, 5,6,11,5,5,9, 5,6,4,6,10,25, 5,5,11,5,5,10, 5,5,4,6,10,26, 5,4,11,5,5,11, 5,4,4,6,10,27, 5,3,11,4,5,12, + 5,3,11,5,5,12, 5,3,4,4,5,12, 5,3,4,6,10,28, 5,2,10,5,5,13, 5,2,5,6,10,29, 5,1,10,4,5,14, 5,1,10,5,5,14, 5,1,5,6,10,30, + 5,0,9,5,5,15, 5,0,5,6,10,31, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,3,6,32, 6,15,8,3,7,32, 6,15,7,3,8,32, 6,15,6,3,9,32, + 6,15,6,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,5,3,10,33, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, + 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,3,6,9,19, 6,11,13,4,6,4, 6,11,13,5,6,4, 6,11,2,3,13,36, + 6,11,2,6,9,20, 6,10,12,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,2,4,6,7, 6,8,2,6,9,23, + 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,11,5,6,9, 6,6,4,6,9,25, 6,5,11,5,6,10, 6,5,4,6,9,26, + 6,4,11,5,6,11, 6,4,4,6,9,27, 6,3,11,4,6,12, 6,3,11,5,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,10,5,6,13, 6,2,5,6,9,29, + 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,5,6,9,30, 6,0,9,1,6,47, 6,0,9,5,6,15, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, + 6,0,5,1,10,47, 6,0,5,6,9,31, 7,15,10,3,5,32, 7,15,10,5,7,0, 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, + 7,15,6,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,5,3,10,33, 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, + 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, 7,12,13,5,7,3, 7,12,3,6,8,19, 7,11,13,4,7,4, 7,11,13,5,7,4, 7,11,2,3,13,36, + 7,11,2,6,8,20, 7,10,12,5,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,2,4,7,7, 7,8,2,6,8,23, + 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,3,4,7,8, 7,7,3,6,8,24, 7,6,11,5,7,9, 7,6,4,6,8,25, 7,5,11,5,7,10, 7,5,4,6,8,26, + 7,4,11,5,7,11, 7,4,4,6,8,27, 7,3,11,4,7,12, 7,3,11,5,7,12, 7,3,4,4,7,12, 7,3,4,6,8,28, 7,2,10,5,7,13, 7,2,5,6,8,29, + 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, + 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,3,6,32, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,11,3,4,33, + 8,14,11,5,8,1, 8,14,5,3,10,33, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, + 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,3,6,7,19, 8,11,13,4,8,4, 8,11,13,5,8,4, 8,11,2,3,13,36, 8,11,2,6,7,20, 8,10,12,5,8,5, + 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,6,7,22, 8,8,12,5,8,7, 8,8,2,4,8,7, 8,8,2,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, + 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,11,5,8,9, 8,6,4,6,7,25, 8,5,11,5,8,10, 8,5,4,6,7,26, 8,4,11,5,8,11, 8,4,4,6,7,27, + 8,3,11,4,8,12, 8,3,11,5,8,12, 8,3,4,4,8,12, 8,3,4,6,7,28, 8,2,10,5,8,13, 8,2,5,6,7,29, 8,1,10,4,8,14, 8,1,10,5,8,14, + 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,10,3,5,32, 9,15,10,5,9,0, + 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, 9,15,6,3,9,32, 9,15,6,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,5,3,10,33, + 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, 9,12,13,5,9,3, + 9,12,3,6,6,19, 9,11,13,4,9,4, 9,11,13,5,9,4, 9,11,2,3,13,36, 9,11,2,6,6,20, 9,10,12,5,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, + 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,2,4,9,7, 9,8,2,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,3,4,9,8, 9,7,3,6,6,24, + 9,6,11,5,9,9, 9,6,4,6,6,25, 9,5,11,5,9,10, 9,5,4,6,6,26, 9,4,11,5,9,11, 9,4,4,6,6,27, 9,3,11,4,9,12, 9,3,11,5,9,12, + 9,3,4,4,9,12, 9,3,4,6,6,28, 9,2,10,5,9,13, 9,2,5,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,5,6,6,30, 9,0,9,2,6,47, + 9,0,9,5,9,15, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,5,2,10,47, 9,0,5,6,6,31, 10,15,10,1,5,32, 10,15,10,3,5,32, + 10,15,10,5,10,0, 10,15,9,1,6,32, 10,15,9,3,6,32, 10,15,8,1,7,32, 10,15,8,3,7,32, 10,15,7,1,8,32, 10,15,7,3,8,32, 10,15,6,1,9,32, + 10,15,6,3,9,32, 10,15,6,6,5,16, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,5,3,10,33, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, + 10,13,12,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,3,6,5,19, 10,11,13,4,10,4, 10,11,13,5,10,4, + 10,11,2,3,13,36, 10,11,2,6,5,20, 10,10,12,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, 10,8,2,4,10,7, + 10,8,2,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,11,5,10,9, 10,6,4,6,5,25, 10,5,11,5,10,10, + 10,5,4,6,5,26, 10,4,11,5,10,11, 10,4,4,6,5,27, 10,3,11,4,10,12, 10,3,11,5,10,12, 10,3,4,4,10,12, 10,3,4,6,5,28, 10,2,10,5,10,13, + 10,2,5,6,5,29, 10,1,10,4,10,14, 10,1,10,5,10,14, 10,1,5,6,5,30, 10,0,9,5,10,15, 10,0,5,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, + 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, + 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, + 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, 11,12,13,5,11,3, 11,12,3,6,4,19, 11,11,13,4,11,4, + 11,11,13,5,11,4, 11,11,2,3,13,36, 11,11,2,6,4,20, 11,10,12,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,2,6,4,22, 11,8,12,5,11,7, + 11,8,2,4,11,7, 11,8,2,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,11,5,11,9, 11,6,4,6,4,25, + 11,5,11,5,11,10, 11,5,4,6,4,26, 11,4,11,5,11,11, 11,4,4,6,4,27, 11,3,11,4,11,12, 11,3,11,5,11,12, 11,3,4,4,11,12, 11,3,4,6,4,28, + 11,2,10,5,11,13, 11,2,5,6,4,29, 11,1,10,4,11,14, 11,1,10,5,11,14, 11,1,5,6,4,30, 11,0,9,1,6,47, 11,0,9,5,11,15, 11,0,8,1,7,47, + 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,5,1,10,47, 11,0,5,6,4,31, 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, + 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, + 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, + 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,1,2,35, 12,12,13,3,2,35, 12,12,13,5,12,3, 12,12,12,1,3,35, 12,12,11,1,4,35, 12,12,10,1,5,35, + 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, 12,12,6,1,9,35, 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, 12,12,3,6,3,19, + 12,11,13,4,12,4, 12,11,13,5,12,4, 12,11,2,3,13,36, 12,11,2,6,3,20, 12,10,12,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,2,6,3,22, + 12,8,12,5,12,7, 12,8,2,4,12,7, 12,8,2,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,6,11,5,12,9, + 12,6,4,6,3,25, 12,5,11,5,12,10, 12,5,4,6,3,26, 12,4,11,5,12,11, 12,4,4,6,3,27, 12,3,11,4,12,12, 12,3,11,5,12,12, 12,3,4,4,12,12, + 12,3,4,6,3,28, 12,2,10,1,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, + 12,2,5,6,3,29, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,10,5,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, + 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,5,6,3,30, 13,11,13,1,2,36, + 13,11,13,3,2,36, 13,11,13,4,13,4, 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, 13,11,11,3,4,36, 13,11,10,1,5,36, + 13,11,10,3,5,36, 13,11,9,1,6,36, 13,11,9,3,6,36, 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, 13,11,7,3,8,36, 13,11,6,1,9,36, + 13,11,6,3,9,36, 13,11,5,1,10,36, 13,11,5,3,10,36, 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, 13,11,3,3,12,36, 13,11,2,1,13,36, + 13,11,2,3,13,36, 13,11,2,6,2,20, 13,10,12,5,13,5, 13,10,2,6,2,21, 13,9,12,5,13,6, 13,9,2,6,2,22, 13,8,12,5,13,7, 13,8,2,4,13,7, + 13,8,2,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, + 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, 13,7,3,4,13,8, 13,7,3,6,2,24, 13,6,11,1,4,41, + 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,4,1,11,41, + 13,6,4,6,2,25, 13,5,11,5,13,10, 13,5,4,6,2,26, 13,4,11,5,13,11, 13,4,4,6,2,27, 13,3,11,1,4,44, 13,3,11,4,13,12, 13,3,11,5,13,12, + 13,3,10,1,5,44, 13,3,10,4,13,12, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, 13,3,7,4,13,12, + 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, 14,10,12,1,3,37, + 14,10,12,3,3,37, 14,10,12,5,14,5, 14,10,11,1,4,37, 14,10,11,3,4,37, 14,10,10,1,5,37, 14,10,10,3,5,37, 14,10,9,1,6,37, 14,10,9,3,6,37, + 14,10,8,1,7,37, 14,10,8,3,7,37, 14,10,7,1,8,37, 14,10,7,3,8,37, 14,10,6,1,9,37, 14,10,6,3,9,37, 14,10,5,1,10,37, 14,10,5,3,10,37, + 14,10,4,1,11,37, 14,10,4,3,11,37, 14,10,3,1,12,37, 14,10,3,3,12,37, 14,10,2,1,13,37, 14,10,2,3,13,37, 14,10,2,6,1,21, 14,9,12,1,3,38, + 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,10,1,5,38, 14,9,9,1,6,38, 14,9,8,1,7,38, 14,9,7,1,8,38, 14,9,6,1,9,38, 14,9,5,1,10,38, + 14,9,4,1,11,38, 14,9,3,1,12,38, 14,9,2,1,13,38, 14,9,2,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,4,39, + 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, + 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, + 14,8,3,4,14,7, 14,8,2,1,13,39, 14,8,2,4,14,7, 14,8,2,6,1,23, 14,5,11,1,4,42, 14,5,11,3,4,42, 14,5,11,5,14,10, 14,5,10,1,5,42, + 14,5,10,3,5,42, 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, + 14,5,6,3,9,42, 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,4,1,11,42, 14,5,4,3,11,42, 14,5,4,6,1,26, 14,4,11,1,4,43, 14,4,11,4,14,11, + 14,4,11,5,14,11, 14,4,10,1,5,43, 14,4,10,4,14,11, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, 14,4,7,1,8,43, + 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1764, + count = 1166, + faces = { + 0,9,12,2,3,86, 0,9,12,3,3,86, 0,9,12,5,14,70, 0,9,11,2,4,86, 0,9,11,3,4,86, 0,9,10,2,5,86, 0,9,10,3,5,86, 0,9,9,2,6,86, + 0,9,9,3,6,86, 0,9,8,2,7,86, 0,9,8,3,7,86, 0,9,7,2,8,86, 0,9,7,3,8,86, 0,9,6,2,9,86, 0,9,6,3,9,86, 0,9,5,2,10,86, + 0,9,5,3,10,86, 0,9,4,2,11,86, 0,9,4,3,11,86, 0,9,3,2,12,86, 0,9,3,3,12,86, 0,9,2,2,13,86, 0,9,2,3,13,86, 0,9,2,6,14,70, + 0,8,12,2,3,87, 0,8,12,5,14,71, 0,8,11,2,4,87, 0,8,10,2,5,87, 0,8,9,2,6,87, 0,8,8,2,7,87, 0,8,7,2,8,87, 0,8,6,2,9,87, + 0,8,5,2,10,87, 0,8,4,2,11,87, 0,8,3,2,12,87, 0,8,2,2,13,87, 0,8,2,6,14,71, 0,7,12,2,3,88, 0,7,12,5,14,72, 0,7,11,2,4,88, + 0,7,10,2,5,88, 0,7,9,2,6,88, 0,7,8,2,7,88, 0,7,7,2,8,88, 0,7,6,2,9,88, 0,7,5,2,10,88, 0,7,4,2,11,88, 0,7,3,2,12,88, + 0,7,2,2,13,88, 0,7,2,4,14,72, 0,7,2,6,14,72, 0,6,12,2,3,89, 0,6,12,4,0,57, 0,6,12,5,0,57, 0,6,11,2,4,89, 0,6,11,4,0,57, + 0,6,10,2,5,89, 0,6,10,4,0,57, 0,6,9,2,6,89, 0,6,9,4,0,57, 0,6,8,2,7,89, 0,6,8,4,0,57, 0,6,7,2,8,89, 0,6,7,4,0,57, + 0,6,6,2,9,89, 0,6,6,4,0,57, 0,6,5,2,10,89, 0,6,5,4,0,57, 0,6,4,2,11,89, 0,6,4,4,0,57, 0,6,3,2,12,89, 0,6,3,4,0,57, + 0,6,3,6,0,57, 0,4,11,2,4,91, 0,4,11,3,4,91, 0,4,11,5,14,75, 0,4,10,2,5,91, 0,4,10,3,5,91, 0,4,9,2,6,91, 0,4,9,3,6,91, + 0,4,8,2,7,91, 0,4,8,3,7,91, 0,4,7,2,8,91, 0,4,7,3,8,91, 0,4,6,2,9,91, 0,4,6,3,9,91, 0,4,5,2,10,91, 0,4,5,3,10,91, + 0,4,5,6,14,75, 0,3,12,2,3,92, 0,3,12,3,3,92, 0,3,12,4,14,76, 0,3,12,5,14,76, 0,3,11,2,4,92, 0,3,11,4,14,76, 0,3,10,2,5,92, + 0,3,10,4,14,76, 0,3,9,2,6,92, 0,3,9,4,14,76, 0,3,8,2,7,92, 0,3,8,4,14,76, 0,3,7,2,8,92, 0,3,7,4,14,76, 0,3,6,2,9,92, + 0,3,6,4,14,76, 0,3,5,2,10,92, 0,3,5,4,14,76, 0,3,4,2,11,92, 0,3,4,3,11,92, 0,3,4,4,14,76, 0,3,3,2,12,92, 0,3,3,3,12,92, + 0,3,3,4,14,76, 0,3,3,6,14,76, 1,10,13,2,2,85, 1,10,13,3,2,85, 1,10,13,4,13,69, 1,10,13,5,13,69, 1,10,12,2,3,85, 1,10,12,3,3,85, + 1,10,11,2,4,85, 1,10,11,3,4,85, 1,10,10,2,5,85, 1,10,10,3,5,85, 1,10,9,2,6,85, 1,10,9,3,6,85, 1,10,8,2,7,85, 1,10,8,3,7,85, + 1,10,7,2,8,85, 1,10,7,3,8,85, 1,10,6,2,9,85, 1,10,6,3,9,85, 1,10,5,2,10,85, 1,10,5,3,10,85, 1,10,4,2,11,85, 1,10,4,3,11,85, + 1,10,3,2,12,85, 1,10,3,3,12,85, 1,10,2,2,13,85, 1,10,2,3,13,85, 1,10,2,6,13,69, 1,9,12,5,1,54, 1,9,2,6,13,70, 1,8,12,5,1,55, + 1,8,2,6,13,71, 1,7,12,5,1,56, 1,7,2,4,1,56, 1,7,2,6,13,72, 1,6,12,4,1,57, 1,6,12,5,1,57, 1,6,4,4,1,57, 1,6,3,4,1,57, + 1,6,3,6,13,73, 1,5,11,2,4,90, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, 1,5,8,2,7,90, 1,5,7,2,8,90, 1,5,6,2,9,90, + 1,5,5,2,10,90, 1,5,5,6,13,74, 1,4,11,5,13,75, 1,4,5,6,13,75, 1,3,12,3,3,92, 1,3,12,5,13,76, 1,3,4,3,11,92, 1,3,3,3,12,92, + 1,3,3,6,13,76, 1,2,13,2,2,93, 1,2,13,3,2,93, 1,2,13,4,13,77, 1,2,13,5,13,77, 1,2,12,2,3,93, 1,2,12,4,13,77, 1,2,11,2,4,93, + 1,2,11,4,13,77, 1,2,10,2,5,93, 1,2,10,4,13,77, 1,2,9,2,6,93, 1,2,9,4,13,77, 1,2,8,2,7,93, 1,2,8,4,13,77, 1,2,7,2,8,93, + 1,2,7,4,13,77, 1,2,6,2,9,93, 1,2,6,4,13,77, 1,2,5,2,10,93, 1,2,5,4,13,77, 1,2,4,2,11,93, 1,2,4,4,13,77, 1,2,3,2,12,93, + 1,2,3,4,13,77, 1,2,2,2,13,93, 1,2,2,3,13,93, 1,2,2,4,13,77, 1,2,2,6,13,77, 2,12,12,2,3,83, 2,12,12,3,3,83, 2,12,12,5,12,67, + 2,12,11,2,4,83, 2,12,11,3,4,83, 2,12,10,2,5,83, 2,12,10,3,5,83, 2,12,9,2,6,83, 2,12,9,3,6,83, 2,12,8,2,7,83, 2,12,8,3,7,83, + 2,12,7,2,8,83, 2,12,7,3,8,83, 2,12,6,2,9,83, 2,12,6,3,9,83, 2,12,5,2,10,83, 2,12,5,3,10,83, 2,12,4,2,11,83, 2,12,4,3,11,83, + 2,12,3,2,12,83, 2,12,3,3,12,83, 2,12,3,6,12,67, 2,11,13,2,2,84, 2,11,13,3,2,84, 2,11,13,5,12,68, 2,11,12,2,3,84, 2,11,11,2,4,84, + 2,11,10,2,5,84, 2,11,9,2,6,84, 2,11,8,2,7,84, 2,11,7,2,8,84, 2,11,6,2,9,84, 2,11,5,2,10,84, 2,11,4,2,11,84, 2,11,3,2,12,84, + 2,11,3,6,12,68, 2,10,13,4,2,53, 2,10,13,5,2,53, 2,10,2,3,13,85, 2,10,2,6,12,69, 2,9,12,5,2,54, 2,9,2,6,12,70, 2,8,12,5,2,55, + 2,8,2,6,12,71, 2,7,12,5,2,56, 2,7,2,4,2,56, 2,7,2,6,12,72, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,4,4,2,57, 2,6,3,4,2,57, + 2,6,3,6,12,73, 2,5,11,5,2,58, 2,5,5,6,12,74, 2,4,11,5,2,59, 2,4,5,6,12,75, 2,3,12,3,3,92, 2,3,12,5,12,76, 2,3,4,3,11,92, + 2,3,3,3,12,92, 2,3,3,6,12,76, 2,2,13,3,2,93, 2,2,13,4,12,77, 2,2,13,5,12,77, 2,2,12,4,12,77, 2,2,11,4,12,77, 2,2,10,4,12,77, + 2,2,9,4,12,77, 2,2,8,4,12,77, 2,2,7,4,12,77, 2,2,6,4,12,77, 2,2,5,4,12,77, 2,2,4,4,12,77, 2,2,3,4,12,77, 2,2,2,3,13,93, + 2,2,2,4,12,77, 2,2,2,6,12,77, 3,13,11,2,4,82, 3,13,11,3,4,82, 3,13,11,5,11,66, 3,13,10,2,5,82, 3,13,10,3,5,82, 3,13,9,2,6,82, + 3,13,9,3,6,82, 3,13,8,2,7,82, 3,13,8,3,7,82, 3,13,7,2,8,82, 3,13,7,3,8,82, 3,13,6,2,9,82, 3,13,6,3,9,82, 3,13,5,2,10,82, + 3,13,5,3,10,82, 3,13,4,2,11,82, 3,13,4,3,11,82, 3,13,4,6,11,66, 3,12,12,3,3,83, 3,12,12,5,3,51, 3,12,3,3,12,83, 3,12,3,6,11,67, + 3,11,13,3,2,84, 3,11,13,5,3,52, 3,11,3,6,11,68, 3,10,13,4,3,53, 3,10,13,5,3,53, 3,10,2,3,13,85, 3,10,2,6,11,69, 3,9,12,5,3,54, + 3,9,2,6,11,70, 3,8,12,5,3,55, 3,8,2,6,11,71, 3,7,12,5,3,56, 3,7,2,4,3,56, 3,7,2,6,11,72, 3,6,12,4,3,57, 3,6,12,5,3,57, + 3,6,4,4,3,57, 3,6,3,4,3,57, 3,6,3,6,11,73, 3,5,11,5,3,58, 3,5,5,6,11,74, 3,4,11,5,3,59, 3,4,5,6,11,75, 3,3,12,3,3,92, + 3,3,12,5,3,60, 3,3,4,3,11,92, 3,3,3,3,12,92, 3,3,3,6,11,76, 3,2,13,3,2,93, 3,2,13,4,3,61, 3,2,13,5,3,61, 3,2,2,3,13,93, + 3,2,2,6,11,77, 3,1,12,2,3,94, 3,1,12,4,3,62, 3,1,12,5,3,62, 3,1,11,2,4,94, 3,1,11,4,3,62, 3,1,10,2,5,94, 3,1,10,4,3,62, + 3,1,9,2,6,94, 3,1,9,4,3,62, 3,1,8,2,7,94, 3,1,8,4,3,62, 3,1,7,2,8,94, 3,1,7,4,3,62, 3,1,6,2,9,94, 3,1,6,4,3,62, + 3,1,5,2,10,94, 3,1,5,4,3,62, 3,1,4,2,11,94, 3,1,4,4,3,62, 3,1,3,2,12,94, 3,1,3,4,3,62, 3,1,2,2,13,94, 3,1,2,4,3,62, + 3,1,2,6,3,62, 4,14,10,2,5,81, 4,14,10,3,5,81, 4,14,10,5,10,65, 4,14,9,2,6,81, 4,14,9,3,6,81, 4,14,8,2,7,81, 4,14,8,3,7,81, + 4,14,7,2,8,81, 4,14,7,3,8,81, 4,14,6,2,9,81, 4,14,6,3,9,81, 4,14,6,6,10,65, 4,13,11,3,4,82, 4,13,11,5,4,50, 4,13,5,3,10,82, + 4,13,4,3,11,82, 4,13,4,6,10,66, 4,12,12,3,3,83, 4,12,12,5,4,51, 4,12,3,3,12,83, 4,12,3,6,10,67, 4,11,13,3,2,84, 4,11,13,5,4,52, + 4,11,3,6,10,68, 4,10,13,4,4,53, 4,10,13,5,4,53, 4,10,2,3,13,85, 4,10,2,6,10,69, 4,9,12,5,4,54, 4,9,2,6,10,70, 4,8,12,5,4,55, + 4,8,2,6,10,71, 4,7,12,5,4,56, 4,7,2,4,4,56, 4,7,2,6,10,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,4,4,57, 4,6,3,4,4,57, + 4,6,3,6,10,73, 4,5,11,5,4,58, 4,5,5,6,10,74, 4,4,11,5,4,59, 4,4,5,6,10,75, 4,3,12,3,3,92, 4,3,12,5,4,60, 4,3,4,3,11,92, + 4,3,3,3,12,92, 4,3,3,6,10,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,2,3,13,93, 4,2,2,6,10,77, 4,1,12,4,4,62, + 4,1,12,5,4,62, 4,1,9,4,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, 4,1,6,4,4,62, 4,1,5,4,4,62, 4,1,2,4,4,62, 4,1,2,6,4,62, + 4,0,11,2,4,95, 4,0,11,5,4,63, 4,0,10,2,5,95, 4,0,10,6,4,63, 4,0,4,2,11,95, 4,0,4,5,4,63, 4,0,3,2,12,95, 4,0,3,6,4,63, + 5,14,10,3,5,81, 5,14,10,5,5,49, 5,14,9,3,6,81, 5,14,8,3,7,81, 5,14,7,3,8,81, 5,14,6,3,9,81, 5,14,6,6,9,65, 5,13,11,3,4,82, + 5,13,11,5,5,50, 5,13,5,3,10,82, 5,13,4,3,11,82, 5,13,4,6,9,66, 5,12,12,3,3,83, 5,12,12,5,5,51, 5,12,3,3,12,83, 5,12,3,6,9,67, + 5,11,13,3,2,84, 5,11,13,5,5,52, 5,11,3,6,9,68, 5,10,13,4,5,53, 5,10,13,5,5,53, 5,10,2,3,13,85, 5,10,2,6,9,69, 5,9,12,5,5,54, + 5,9,2,6,9,70, 5,8,12,5,5,55, 5,8,2,6,9,71, 5,7,12,5,5,56, 5,7,2,4,5,56, 5,7,2,6,9,72, 5,6,12,4,5,57, 5,6,12,5,5,57, + 5,6,4,4,5,57, 5,6,3,4,5,57, 5,6,3,6,9,73, 5,5,11,5,5,58, 5,5,5,6,9,74, 5,4,11,5,5,59, 5,4,5,6,9,75, 5,3,12,3,3,92, + 5,3,12,5,5,60, 5,3,4,3,11,92, 5,3,3,3,12,92, 5,3,3,6,9,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,3,13,93, + 5,2,2,6,9,77, 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,9,4,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, + 5,1,2,4,5,62, 5,1,2,6,9,78, 5,0,11,5,5,63, 5,0,10,6,5,63, 5,0,4,5,5,63, 5,0,3,6,5,63, 6,14,10,3,5,81, 6,14,10,5,6,49, + 6,14,9,3,6,81, 6,14,8,3,7,81, 6,14,7,3,8,81, 6,14,6,3,9,81, 6,14,6,6,8,65, 6,13,11,3,4,82, 6,13,11,5,6,50, 6,13,5,3,10,82, + 6,13,4,3,11,82, 6,13,4,6,8,66, 6,12,12,3,3,83, 6,12,12,5,6,51, 6,12,3,3,12,83, 6,12,3,6,8,67, 6,11,13,3,2,84, 6,11,13,5,6,52, + 6,11,3,6,8,68, 6,10,13,4,6,53, 6,10,13,5,6,53, 6,10,2,3,13,85, 6,10,2,6,8,69, 6,9,12,5,6,54, 6,9,2,6,8,70, 6,8,12,5,6,55, + 6,8,2,6,8,71, 6,7,12,5,6,56, 6,7,2,4,6,56, 6,7,2,6,8,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,4,4,6,57, 6,6,3,4,6,57, + 6,6,3,6,8,73, 6,5,11,5,6,58, 6,5,5,6,8,74, 6,4,11,5,6,59, 6,4,5,6,8,75, 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,4,3,11,92, + 6,3,3,3,12,92, 6,3,3,6,8,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, 6,2,2,6,8,77, 6,1,12,4,6,62, + 6,1,12,5,6,62, 6,1,9,4,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, 6,1,2,6,8,78, + 6,0,11,1,4,95, 6,0,11,5,6,63, 6,0,10,1,5,95, 6,0,10,6,6,63, 6,0,4,1,11,95, 6,0,4,5,6,63, 6,0,3,1,12,95, 6,0,3,6,6,63, + 7,14,10,3,5,81, 7,14,10,5,7,49, 7,14,9,3,6,81, 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,6,6,7,65, 7,13,11,3,4,82, + 7,13,11,5,7,50, 7,13,5,3,10,82, 7,13,4,3,11,82, 7,13,4,6,7,66, 7,12,12,3,3,83, 7,12,12,5,7,51, 7,12,3,3,12,83, 7,12,3,6,7,67, + 7,11,13,3,2,84, 7,11,13,5,7,52, 7,11,3,6,7,68, 7,10,13,4,7,53, 7,10,13,5,7,53, 7,10,2,3,13,85, 7,10,2,6,7,69, 7,9,12,5,7,54, + 7,9,2,6,7,70, 7,8,12,5,7,55, 7,8,2,6,7,71, 7,7,12,5,7,56, 7,7,2,4,7,56, 7,7,2,6,7,72, 7,6,12,4,7,57, 7,6,12,5,7,57, + 7,6,4,4,7,57, 7,6,3,4,7,57, 7,6,3,6,7,73, 7,5,11,5,7,58, 7,5,5,6,7,74, 7,4,11,5,7,59, 7,4,5,6,7,75, 7,3,12,3,3,92, + 7,3,12,5,7,60, 7,3,4,3,11,92, 7,3,3,3,12,92, 7,3,3,6,7,76, 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, + 7,2,2,6,7,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,11,4,7,62, 7,1,10,4,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, + 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,4,4,7,62, 7,1,3,4,7,62, 7,1,2,4,7,62, 7,1,2,6,7,78, 8,14,10,3,5,81, 8,14,10,5,8,49, + 8,14,9,3,6,81, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,6,6,6,65, 8,13,11,3,4,82, 8,13,11,5,8,50, 8,13,5,3,10,82, + 8,13,4,3,11,82, 8,13,4,6,6,66, 8,12,12,3,3,83, 8,12,12,5,8,51, 8,12,3,3,12,83, 8,12,3,6,6,67, 8,11,13,3,2,84, 8,11,13,5,8,52, + 8,11,3,6,6,68, 8,10,13,4,8,53, 8,10,13,5,8,53, 8,10,2,3,13,85, 8,10,2,6,6,69, 8,9,12,5,8,54, 8,9,2,6,6,70, 8,8,12,5,8,55, + 8,8,2,6,6,71, 8,7,12,5,8,56, 8,7,2,4,8,56, 8,7,2,6,6,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,4,8,57, 8,6,3,4,8,57, + 8,6,3,6,6,73, 8,5,11,5,8,58, 8,5,5,6,6,74, 8,4,11,5,8,59, 8,4,5,6,6,75, 8,3,12,3,3,92, 8,3,12,5,8,60, 8,3,4,3,11,92, + 8,3,3,3,12,92, 8,3,3,6,6,76, 8,2,13,3,2,93, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,6,77, 8,1,12,4,8,62, + 8,1,12,5,8,62, 8,1,9,4,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,6,78, + 8,0,11,2,4,95, 8,0,11,5,6,79, 8,0,10,2,5,95, 8,0,10,6,6,79, 8,0,4,2,11,95, 8,0,4,5,6,79, 8,0,3,2,12,95, 8,0,3,6,6,79, + 9,14,10,3,5,81, 9,14,10,5,9,49, 9,14,9,3,6,81, 9,14,8,3,7,81, 9,14,7,3,8,81, 9,14,6,3,9,81, 9,14,6,6,5,65, 9,13,11,3,4,82, + 9,13,11,5,9,50, 9,13,5,3,10,82, 9,13,4,3,11,82, 9,13,4,6,5,66, 9,12,12,3,3,83, 9,12,12,5,9,51, 9,12,3,3,12,83, 9,12,3,6,5,67, + 9,11,13,3,2,84, 9,11,13,5,9,52, 9,11,3,6,5,68, 9,10,13,4,9,53, 9,10,13,5,9,53, 9,10,2,3,13,85, 9,10,2,6,5,69, 9,9,12,5,9,54, + 9,9,2,6,5,70, 9,8,12,5,9,55, 9,8,2,6,5,71, 9,7,12,5,9,56, 9,7,2,4,9,56, 9,7,2,6,5,72, 9,6,12,4,9,57, 9,6,12,5,9,57, + 9,6,4,4,9,57, 9,6,3,4,9,57, 9,6,3,6,5,73, 9,5,11,5,9,58, 9,5,5,6,5,74, 9,4,11,5,9,59, 9,4,5,6,5,75, 9,3,12,3,3,92, + 9,3,12,5,9,60, 9,3,4,3,11,92, 9,3,3,3,12,92, 9,3,3,6,5,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,2,3,13,93, + 9,2,2,6,5,77, 9,1,12,4,9,62, 9,1,12,5,9,62, 9,1,9,4,9,62, 9,1,8,4,9,62, 9,1,7,4,9,62, 9,1,6,4,9,62, 9,1,5,4,9,62, + 9,1,2,4,9,62, 9,1,2,6,5,78, 9,0,11,5,5,79, 9,0,10,6,5,79, 9,0,4,5,5,79, 9,0,3,6,5,79, 10,14,10,1,5,81, 10,14,10,3,5,81, + 10,14,10,5,10,49, 10,14,9,1,6,81, 10,14,9,3,6,81, 10,14,8,1,7,81, 10,14,8,3,7,81, 10,14,7,1,8,81, 10,14,7,3,8,81, 10,14,6,1,9,81, + 10,14,6,3,9,81, 10,14,6,6,10,49, 10,13,11,3,4,82, 10,13,11,5,10,50, 10,13,5,3,10,82, 10,13,4,3,11,82, 10,13,4,6,4,66, 10,12,12,3,3,83, + 10,12,12,5,10,51, 10,12,3,3,12,83, 10,12,3,6,4,67, 10,11,13,3,2,84, 10,11,13,5,10,52, 10,11,3,6,4,68, 10,10,13,4,10,53, 10,10,13,5,10,53, + 10,10,2,3,13,85, 10,10,2,6,4,69, 10,9,12,5,10,54, 10,9,2,6,4,70, 10,8,12,5,10,55, 10,8,2,6,4,71, 10,7,12,5,10,56, 10,7,2,4,10,56, + 10,7,2,6,4,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,4,4,10,57, 10,6,3,4,10,57, 10,6,3,6,4,73, 10,5,11,5,10,58, 10,5,5,6,4,74, + 10,4,11,5,10,59, 10,4,5,6,4,75, 10,3,12,3,3,92, 10,3,12,5,10,60, 10,3,4,3,11,92, 10,3,3,3,12,92, 10,3,3,6,4,76, 10,2,13,3,2,93, + 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,3,13,93, 10,2,2,6,4,77, 10,1,12,4,4,78, 10,1,12,5,4,78, 10,1,9,4,4,78, 10,1,8,4,4,78, + 10,1,7,4,4,78, 10,1,6,4,4,78, 10,1,5,4,4,78, 10,1,2,4,4,78, 10,1,2,6,4,78, 10,0,11,1,4,95, 10,0,11,5,4,79, 10,0,10,1,5,95, + 10,0,10,6,4,79, 10,0,4,1,11,95, 10,0,4,5,4,79, 10,0,3,1,12,95, 10,0,3,6,4,79, 11,13,11,1,4,82, 11,13,11,3,4,82, 11,13,11,5,11,50, + 11,13,10,1,5,82, 11,13,10,3,5,82, 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, 11,13,7,1,8,82, 11,13,7,3,8,82, + 11,13,6,1,9,82, 11,13,6,3,9,82, 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,4,1,11,82, 11,13,4,3,11,82, 11,13,4,6,11,50, 11,12,12,3,3,83, + 11,12,12,5,11,51, 11,12,3,3,12,83, 11,12,3,6,3,67, 11,11,13,3,2,84, 11,11,13,5,11,52, 11,11,3,6,3,68, 11,10,13,4,11,53, 11,10,13,5,11,53, + 11,10,2,3,13,85, 11,10,2,6,3,69, 11,9,12,5,11,54, 11,9,2,6,3,70, 11,8,12,5,11,55, 11,8,2,6,3,71, 11,7,12,5,11,56, 11,7,2,4,11,56, + 11,7,2,6,3,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,4,11,57, 11,6,3,4,11,57, 11,6,3,6,3,73, 11,5,11,5,11,58, 11,5,5,6,3,74, + 11,4,11,5,11,59, 11,4,5,6,3,75, 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,4,3,11,92, 11,3,3,3,12,92, 11,3,3,6,3,76, 11,2,13,3,2,93, + 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,3,13,93, 11,2,2,6,3,77, 11,1,12,1,3,94, 11,1,12,4,3,78, 11,1,12,5,3,78, 11,1,11,1,4,94, + 11,1,11,4,3,78, 11,1,10,1,5,94, 11,1,10,4,3,78, 11,1,9,1,6,94, 11,1,9,4,3,78, 11,1,8,1,7,94, 11,1,8,4,3,78, 11,1,7,1,8,94, + 11,1,7,4,3,78, 11,1,6,1,9,94, 11,1,6,4,3,78, 11,1,5,1,10,94, 11,1,5,4,3,78, 11,1,4,1,11,94, 11,1,4,4,3,78, 11,1,3,1,12,94, + 11,1,3,4,3,78, 11,1,2,1,13,94, 11,1,2,4,3,78, 11,1,2,6,3,78, 12,12,12,1,3,83, 12,12,12,3,3,83, 12,12,12,5,12,51, 12,12,11,1,4,83, + 12,12,11,3,4,83, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, 12,12,8,1,7,83, 12,12,8,3,7,83, 12,12,7,1,8,83, + 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, 12,12,4,1,11,83, 12,12,4,3,11,83, 12,12,3,1,12,83, + 12,12,3,3,12,83, 12,12,3,6,12,51, 12,11,13,1,2,84, 12,11,13,3,2,84, 12,11,13,5,12,52, 12,11,12,1,3,84, 12,11,11,1,4,84, 12,11,10,1,5,84, + 12,11,9,1,6,84, 12,11,8,1,7,84, 12,11,7,1,8,84, 12,11,6,1,9,84, 12,11,5,1,10,84, 12,11,4,1,11,84, 12,11,3,1,12,84, 12,11,3,6,12,52, + 12,10,13,4,12,53, 12,10,13,5,12,53, 12,10,2,3,13,85, 12,10,2,6,2,69, 12,9,12,5,12,54, 12,9,2,6,2,70, 12,8,12,5,12,55, 12,8,2,6,2,71, + 12,7,12,5,12,56, 12,7,2,4,12,56, 12,7,2,6,2,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,4,4,12,57, 12,6,3,4,12,57, 12,6,3,6,2,73, + 12,5,11,5,12,58, 12,5,5,6,2,74, 12,4,11,5,12,59, 12,4,5,6,2,75, 12,3,12,3,3,92, 12,3,12,5,12,60, 12,3,4,3,11,92, 12,3,3,3,12,92, + 12,3,3,6,12,60, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,4,12,61, 12,2,11,4,12,61, 12,2,10,4,12,61, 12,2,9,4,12,61, + 12,2,8,4,12,61, 12,2,7,4,12,61, 12,2,6,4,12,61, 12,2,5,4,12,61, 12,2,4,4,12,61, 12,2,3,4,12,61, 12,2,2,3,13,93, 12,2,2,4,12,61, + 12,2,2,6,12,61, 13,10,13,1,2,85, 13,10,13,3,2,85, 13,10,13,4,13,53, 13,10,13,5,13,53, 13,10,12,1,3,85, 13,10,12,3,3,85, 13,10,11,1,4,85, + 13,10,11,3,4,85, 13,10,10,1,5,85, 13,10,10,3,5,85, 13,10,9,1,6,85, 13,10,9,3,6,85, 13,10,8,1,7,85, 13,10,8,3,7,85, 13,10,7,1,8,85, + 13,10,7,3,8,85, 13,10,6,1,9,85, 13,10,6,3,9,85, 13,10,5,1,10,85, 13,10,5,3,10,85, 13,10,4,1,11,85, 13,10,4,3,11,85, 13,10,3,1,12,85, + 13,10,3,3,12,85, 13,10,2,1,13,85, 13,10,2,3,13,85, 13,10,2,6,13,53, 13,9,12,5,13,54, 13,9,2,6,1,70, 13,8,12,5,13,55, 13,8,2,6,1,71, + 13,7,12,5,13,56, 13,7,2,4,13,56, 13,7,2,6,1,72, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,4,4,13,57, 13,6,3,4,13,57, 13,6,3,6,1,73, + 13,5,11,1,4,90, 13,5,11,5,13,58, 13,5,10,1,5,90, 13,5,9,1,6,90, 13,5,8,1,7,90, 13,5,7,1,8,90, 13,5,6,1,9,90, 13,5,5,1,10,90, + 13,5,5,6,1,74, 13,4,11,5,13,59, 13,4,5,6,13,59, 13,3,12,3,3,92, 13,3,12,5,13,60, 13,3,4,3,11,92, 13,3,3,3,12,92, 13,3,3,6,13,60, + 13,2,13,1,2,93, 13,2,13,3,2,93, 13,2,13,4,13,61, 13,2,13,5,13,61, 13,2,12,1,3,93, 13,2,12,4,13,61, 13,2,11,1,4,93, 13,2,11,4,13,61, + 13,2,10,1,5,93, 13,2,10,4,13,61, 13,2,9,1,6,93, 13,2,9,4,13,61, 13,2,8,1,7,93, 13,2,8,4,13,61, 13,2,7,1,8,93, 13,2,7,4,13,61, + 13,2,6,1,9,93, 13,2,6,4,13,61, 13,2,5,1,10,93, 13,2,5,4,13,61, 13,2,4,1,11,93, 13,2,4,4,13,61, 13,2,3,1,12,93, 13,2,3,4,13,61, + 13,2,2,1,13,93, 13,2,2,3,13,93, 13,2,2,4,13,61, 13,2,2,6,13,61, 14,9,12,1,3,86, 14,9,12,3,3,86, 14,9,12,5,14,54, 14,9,11,1,4,86, + 14,9,11,3,4,86, 14,9,10,1,5,86, 14,9,10,3,5,86, 14,9,9,1,6,86, 14,9,9,3,6,86, 14,9,8,1,7,86, 14,9,8,3,7,86, 14,9,7,1,8,86, + 14,9,7,3,8,86, 14,9,6,1,9,86, 14,9,6,3,9,86, 14,9,5,1,10,86, 14,9,5,3,10,86, 14,9,4,1,11,86, 14,9,4,3,11,86, 14,9,3,1,12,86, + 14,9,3,3,12,86, 14,9,2,1,13,86, 14,9,2,3,13,86, 14,9,2,6,14,54, 14,8,12,1,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,10,1,5,87, + 14,8,9,1,6,87, 14,8,8,1,7,87, 14,8,7,1,8,87, 14,8,6,1,9,87, 14,8,5,1,10,87, 14,8,4,1,11,87, 14,8,3,1,12,87, 14,8,2,1,13,87, + 14,8,2,6,14,55, 14,7,12,1,3,88, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, + 14,7,6,1,9,88, 14,7,5,1,10,88, 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,2,1,13,88, 14,7,2,4,14,56, 14,7,2,6,14,56, 14,6,12,1,3,89, + 14,6,12,4,0,73, 14,6,12,5,0,73, 14,6,11,1,4,89, 14,6,11,4,0,73, 14,6,10,1,5,89, 14,6,10,4,0,73, 14,6,9,1,6,89, 14,6,9,4,0,73, + 14,6,8,1,7,89, 14,6,8,4,0,73, 14,6,7,1,8,89, 14,6,7,4,0,73, 14,6,6,1,9,89, 14,6,6,4,0,73, 14,6,5,1,10,89, 14,6,5,4,0,73, + 14,6,4,1,11,89, 14,6,4,4,0,73, 14,6,3,1,12,89, 14,6,3,4,0,73, 14,6,3,6,0,73, 14,4,11,1,4,91, 14,4,11,3,4,91, 14,4,11,5,14,59, + 14,4,10,1,5,91, 14,4,10,3,5,91, 14,4,9,1,6,91, 14,4,9,3,6,91, 14,4,8,1,7,91, 14,4,8,3,7,91, 14,4,7,1,8,91, 14,4,7,3,8,91, + 14,4,6,1,9,91, 14,4,6,3,9,91, 14,4,5,1,10,91, 14,4,5,3,10,91, 14,4,5,6,14,59, 14,3,12,1,3,92, 14,3,12,3,3,92, 14,3,12,4,14,60, + 14,3,12,5,14,60, 14,3,11,1,4,92, 14,3,11,4,14,60, 14,3,10,1,5,92, 14,3,10,4,14,60, 14,3,9,1,6,92, 14,3,9,4,14,60, 14,3,8,1,7,92, + 14,3,8,4,14,60, 14,3,7,1,8,92, 14,3,7,4,14,60, 14,3,6,1,9,92, 14,3,6,4,14,60, 14,3,5,1,10,92, 14,3,5,4,14,60, 14,3,4,1,11,92, + 14,3,4,3,11,92, 14,3,4,4,14,60, 14,3,3,1,12,92, 14,3,3,3,12,92, 14,3,3,4,14,60, 14,3,3,6,14,60, + }, + }, + }, +} diff --git a/assets/voxels/daisy.lua b/assets/voxels/daisy.lua new file mode 100644 index 0000000..b278454 --- /dev/null +++ b/assets/voxels/daisy.lua @@ -0,0 +1,270 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "daisy" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "daisy", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1612, + count = 936, + faces = { + 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,13,4,2,4, 2,11,13,5,2,4, 2,11,12,2,3,36, 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, + 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, + 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, + 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,12,2,3,37, 2,10,12,5,2,5, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, + 2,10,8,2,7,37, 2,10,7,2,8,37, 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,6,13,21, + 2,9,12,2,3,38, 2,9,12,5,2,6, 2,9,11,2,4,38, 2,9,10,2,5,38, 2,9,9,2,6,38, 2,9,8,2,7,38, 2,9,7,2,8,38, 2,9,6,2,9,38, + 2,9,5,2,10,38, 2,9,4,2,11,38, 2,9,3,2,12,38, 2,9,2,2,13,38, 2,9,2,6,13,22, 2,8,12,2,3,39, 2,8,12,5,2,7, 2,8,11,2,4,39, + 2,8,10,2,5,39, 2,8,9,2,6,39, 2,8,8,2,7,39, 2,8,7,2,8,39, 2,8,6,2,9,39, 2,8,5,2,10,39, 2,8,4,2,11,39, 2,8,3,2,12,39, + 2,8,2,2,13,39, 2,8,2,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, + 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, 2,7,2,2,13,40, 2,7,2,6,13,24, + 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, 2,6,6,2,9,41, + 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,3,2,12,41, 2,6,2,2,13,41, 2,6,2,6,13,25, 2,5,10,2,5,42, 2,5,10,4,2,10, 2,5,10,5,2,10, + 2,5,9,2,6,42, 2,5,8,2,7,42, 2,5,7,2,8,42, 2,5,6,2,9,42, 2,5,5,2,10,42, 2,5,4,2,11,42, 2,5,3,2,12,42, 2,5,2,2,13,42, + 2,5,2,6,13,26, 2,4,9,2,6,43, 2,4,9,5,2,11, 2,4,8,2,7,43, 2,4,7,2,8,43, 2,4,6,2,9,43, 2,4,5,2,10,43, 2,4,4,2,11,43, + 2,4,3,2,12,43, 2,4,2,2,13,43, 2,4,2,6,13,27, 2,3,10,2,5,44, 2,3,10,3,5,44, 2,3,10,5,2,12, 2,3,9,2,6,44, 2,3,8,2,7,44, + 2,3,7,2,8,44, 2,3,6,2,9,44, 2,3,5,2,10,44, 2,3,4,2,11,44, 2,3,3,2,12,44, 2,3,2,2,13,44, 2,3,2,4,2,12, 2,3,2,6,13,28, + 2,2,11,2,4,45, 2,2,11,3,4,45, 2,2,11,4,2,13, 2,2,11,5,2,13, 2,2,10,2,5,45, 2,2,10,4,2,13, 2,2,9,2,6,45, 2,2,9,4,2,13, + 2,2,8,2,7,45, 2,2,8,4,2,13, 2,2,7,2,8,45, 2,2,7,4,2,13, 2,2,6,2,9,45, 2,2,6,4,2,13, 2,2,5,2,10,45, 2,2,5,4,2,13, + 2,2,4,2,11,45, 2,2,4,4,2,13, 2,2,3,2,12,45, 2,2,3,4,2,13, 2,2,3,6,2,13, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, + 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, + 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, + 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,13,2,2,35, 3,12,13,3,2,35, 3,12,13,5,3,3, 3,12,12,2,3,35, 3,12,11,2,4,35, + 3,12,10,2,5,35, 3,12,9,2,6,35, 3,12,8,2,7,35, 3,12,7,2,8,35, 3,12,6,2,9,35, 3,12,5,2,10,35, 3,12,4,2,11,35, 3,12,3,2,12,35, + 3,12,2,2,13,35, 3,12,2,3,13,35, 3,12,2,6,12,19, 3,11,13,4,3,4, 3,11,13,5,3,4, 3,11,2,6,12,20, 3,10,12,5,3,5, 3,10,2,6,12,21, + 3,9,12,5,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,2,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,2,6,12,24, 3,6,11,4,3,9, + 3,6,11,5,3,9, 3,6,2,6,12,25, 3,5,10,4,3,10, 3,5,10,5,3,10, 3,5,2,6,12,26, 3,4,9,5,3,11, 3,4,2,6,12,27, 3,3,10,3,5,44, + 3,3,10,5,3,12, 3,3,2,4,3,12, 3,3,2,6,12,28, 3,2,11,3,4,45, 3,2,11,4,3,13, 3,2,11,5,3,13, 3,2,3,4,3,13, 3,2,3,6,12,29, + 3,1,10,2,5,46, 3,1,10,4,3,14, 3,1,10,5,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, + 3,1,7,4,3,14, 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,4,2,11,46, 3,1,4,4,3,14, 3,1,4,6,3,14, + 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, + 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, + 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, + 4,12,2,3,13,35, 4,12,2,6,11,19, 4,11,13,4,4,4, 4,11,13,5,4,4, 4,11,2,6,11,20, 4,10,12,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, + 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,2,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,2,6,11,24, 4,6,11,4,4,9, 4,6,11,5,4,9, + 4,6,2,6,11,25, 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,2,6,11,26, 4,4,9,5,4,11, 4,4,2,6,11,27, 4,3,10,3,5,44, 4,3,10,5,4,12, + 4,3,2,4,4,12, 4,3,2,6,11,28, 4,2,11,3,4,45, 4,2,11,4,4,13, 4,2,11,5,4,13, 4,2,3,4,4,13, 4,2,3,6,11,29, 4,1,10,4,4,14, + 4,1,10,5,4,14, 4,1,9,4,4,14, 4,1,8,4,4,14, 4,1,7,4,4,14, 4,1,6,4,4,14, 4,1,5,4,4,14, 4,1,4,4,4,14, 4,1,4,6,11,30, + 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,10,3,5,33, 5,14,9,3,6,33, 5,14,8,3,7,33, 5,14,7,3,8,33, 5,14,6,3,9,33, 5,14,5,3,10,33, + 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,3,2,35, 5,12,13,5,5,3, + 5,12,2,3,13,35, 5,12,2,6,10,19, 5,11,13,4,5,4, 5,11,13,5,5,4, 5,11,2,6,10,20, 5,10,12,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, + 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,2,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,2,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, + 5,6,2,6,10,25, 5,5,10,4,5,10, 5,5,10,5,5,10, 5,5,2,6,10,26, 5,4,9,5,5,11, 5,4,2,6,10,27, 5,3,10,3,5,44, 5,3,10,5,5,12, + 5,3,2,4,5,12, 5,3,2,6,10,28, 5,2,11,3,4,45, 5,2,11,4,5,13, 5,2,11,5,5,13, 5,2,3,4,5,13, 5,2,3,6,10,29, 5,1,10,4,5,14, + 5,1,10,5,5,14, 5,1,4,4,5,14, 5,1,4,6,10,30, 5,0,9,2,6,47, 5,0,9,5,5,15, 5,0,8,2,7,47, 5,0,7,2,8,47, 5,0,6,2,9,47, + 5,0,5,2,10,47, 5,0,5,6,10,31, 6,15,9,2,6,32, 6,15,9,3,6,32, 6,15,9,5,6,0, 6,15,8,2,7,32, 6,15,8,3,7,32, 6,15,7,2,8,32, + 6,15,7,3,8,32, 6,15,6,2,9,32, 6,15,6,3,9,32, 6,15,6,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,10,3,5,33, 6,14,5,3,10,33, + 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,13,3,2,35, 6,12,13,5,6,3, + 6,12,2,3,13,35, 6,12,2,6,9,19, 6,11,13,4,6,4, 6,11,13,5,6,4, 6,11,2,6,9,20, 6,10,12,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, + 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,2,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,2,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, + 6,6,2,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, 6,5,2,6,9,26, 6,4,9,5,6,11, 6,4,2,6,9,27, 6,3,10,3,5,44, 6,3,10,5,6,12, + 6,3,2,4,6,12, 6,3,2,6,9,28, 6,2,11,3,4,45, 6,2,11,4,6,13, 6,2,11,5,6,13, 6,2,3,4,6,13, 6,2,3,6,9,29, 6,1,10,4,6,14, + 6,1,10,5,6,14, 6,1,4,4,6,14, 6,1,4,6,9,30, 6,0,9,5,6,15, 6,0,5,6,9,31, 7,15,9,3,6,32, 7,15,9,5,7,0, 7,15,8,3,7,32, + 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,6,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,10,3,5,33, 7,14,5,3,10,33, 7,14,4,3,11,33, + 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, 7,12,13,5,7,3, 7,12,2,3,13,35, + 7,12,2,6,8,19, 7,11,13,4,7,4, 7,11,13,5,7,4, 7,11,2,6,8,20, 7,10,12,5,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,2,6,8,22, + 7,8,12,5,7,7, 7,8,2,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,2,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,2,6,8,25, + 7,5,10,4,7,10, 7,5,10,5,7,10, 7,5,2,6,8,26, 7,4,9,5,7,11, 7,4,2,6,8,27, 7,3,10,3,5,44, 7,3,10,5,7,12, 7,3,2,4,7,12, + 7,3,2,6,8,28, 7,2,11,3,4,45, 7,2,11,4,7,13, 7,2,11,5,7,13, 7,2,3,4,7,13, 7,2,3,6,8,29, 7,1,10,4,7,14, 7,1,10,5,7,14, + 7,1,4,4,7,14, 7,1,4,6,8,30, 7,0,9,5,7,15, 7,0,5,6,8,31, 8,15,9,3,6,32, 8,15,9,5,8,0, 8,15,8,3,7,32, 8,15,7,3,8,32, + 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,10,3,5,33, 8,14,5,3,10,33, 8,14,4,3,11,33, 8,14,4,6,7,17, + 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,2,3,13,35, 8,12,2,6,7,19, + 8,11,13,4,8,4, 8,11,13,5,8,4, 8,11,2,6,7,20, 8,10,12,5,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,6,7,22, 8,8,12,5,8,7, + 8,8,2,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,2,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,2,6,7,25, 8,5,10,4,8,10, + 8,5,10,5,8,10, 8,5,2,6,7,26, 8,4,9,5,8,11, 8,4,2,6,7,27, 8,3,10,3,5,44, 8,3,10,5,8,12, 8,3,2,4,8,12, 8,3,2,6,7,28, + 8,2,11,3,4,45, 8,2,11,4,8,13, 8,2,11,5,8,13, 8,2,3,4,8,13, 8,2,3,6,7,29, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,4,4,8,14, + 8,1,4,6,7,30, 8,0,9,5,8,15, 8,0,5,6,7,31, 9,15,9,1,6,32, 9,15,9,3,6,32, 9,15,9,5,9,0, 9,15,8,1,7,32, 9,15,8,3,7,32, + 9,15,7,1,8,32, 9,15,7,3,8,32, 9,15,6,1,9,32, 9,15,6,3,9,32, 9,15,6,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,10,3,5,33, + 9,14,5,3,10,33, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, + 9,12,13,5,9,3, 9,12,2,3,13,35, 9,12,2,6,6,19, 9,11,13,4,9,4, 9,11,13,5,9,4, 9,11,2,6,6,20, 9,10,12,5,9,5, 9,10,2,6,6,21, + 9,9,12,5,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,2,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,2,6,6,24, 9,6,11,4,9,9, + 9,6,11,5,9,9, 9,6,2,6,6,25, 9,5,10,4,9,10, 9,5,10,5,9,10, 9,5,2,6,6,26, 9,4,9,5,9,11, 9,4,2,6,6,27, 9,3,10,3,5,44, + 9,3,10,5,9,12, 9,3,2,4,9,12, 9,3,2,6,6,28, 9,2,11,3,4,45, 9,2,11,4,9,13, 9,2,11,5,9,13, 9,2,3,4,9,13, 9,2,3,6,6,29, + 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,4,4,9,14, 9,1,4,6,6,30, 9,0,9,5,9,15, 9,0,5,6,6,31, 10,14,11,3,4,33, 10,14,11,5,10,1, + 10,14,10,3,5,33, 10,14,9,3,6,33, 10,14,8,3,7,33, 10,14,7,3,8,33, 10,14,6,3,9,33, 10,14,5,3,10,33, 10,14,4,3,11,33, 10,14,4,6,5,17, + 10,13,12,3,3,34, 10,13,12,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,2,3,13,35, 10,12,2,6,5,19, + 10,11,13,4,10,4, 10,11,13,5,10,4, 10,11,2,6,5,20, 10,10,12,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, + 10,8,2,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,2,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,2,6,5,25, 10,5,10,4,10,10, + 10,5,10,5,10,10, 10,5,2,6,5,26, 10,4,9,5,10,11, 10,4,2,6,5,27, 10,3,10,3,5,44, 10,3,10,5,10,12, 10,3,2,4,10,12, 10,3,2,6,5,28, + 10,2,11,3,4,45, 10,2,11,4,10,13, 10,2,11,5,10,13, 10,2,3,4,10,13, 10,2,3,6,5,29, 10,1,10,4,10,14, 10,1,10,5,10,14, 10,1,4,4,10,14, + 10,1,4,6,5,30, 10,0,9,1,6,47, 10,0,9,5,10,15, 10,0,8,1,7,47, 10,0,7,1,8,47, 10,0,6,1,9,47, 10,0,5,1,10,47, 10,0,5,6,5,31, + 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, + 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, + 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, 11,12,13,5,11,3, + 11,12,2,3,13,35, 11,12,2,6,4,19, 11,11,13,4,11,4, 11,11,13,5,11,4, 11,11,2,6,4,20, 11,10,12,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, + 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,2,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,2,6,4,24, 11,6,11,4,11,9, 11,6,11,5,11,9, + 11,6,2,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, 11,5,2,6,4,26, 11,4,9,5,11,11, 11,4,2,6,4,27, 11,3,10,3,5,44, 11,3,10,5,11,12, + 11,3,2,4,11,12, 11,3,2,6,4,28, 11,2,11,3,4,45, 11,2,11,4,11,13, 11,2,11,5,11,13, 11,2,3,4,11,13, 11,2,3,6,4,29, 11,1,10,4,11,14, + 11,1,10,5,11,14, 11,1,9,4,11,14, 11,1,8,4,11,14, 11,1,7,4,11,14, 11,1,6,4,11,14, 11,1,5,4,11,14, 11,1,4,4,11,14, 11,1,4,6,4,30, + 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, + 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, + 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,1,2,35, 12,12,13,3,2,35, + 12,12,13,5,12,3, 12,12,12,1,3,35, 12,12,11,1,4,35, 12,12,10,1,5,35, 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, 12,12,6,1,9,35, + 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, 12,12,2,1,13,35, 12,12,2,3,13,35, 12,12,2,6,3,19, 12,11,13,4,12,4, 12,11,13,5,12,4, + 12,11,2,6,3,20, 12,10,12,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,2,6,3,23, 12,7,12,4,12,8, + 12,7,12,5,12,8, 12,7,2,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,2,6,3,25, 12,5,10,4,12,10, 12,5,10,5,12,10, 12,5,2,6,3,26, + 12,4,9,5,12,11, 12,4,2,6,3,27, 12,3,10,3,5,44, 12,3,10,5,12,12, 12,3,2,4,12,12, 12,3,2,6,3,28, 12,2,11,3,4,45, 12,2,11,4,12,13, + 12,2,11,5,12,13, 12,2,3,4,12,13, 12,2,3,6,3,29, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,10,5,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, + 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, + 12,1,4,1,11,46, 12,1,4,4,12,14, 12,1,4,6,12,14, 13,11,13,1,2,36, 13,11,13,3,2,36, 13,11,13,4,13,4, 13,11,13,5,13,4, 13,11,12,1,3,36, + 13,11,12,3,3,36, 13,11,11,1,4,36, 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, 13,11,9,3,6,36, 13,11,8,1,7,36, + 13,11,8,3,7,36, 13,11,7,1,8,36, 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, 13,11,5,3,10,36, 13,11,4,1,11,36, + 13,11,4,3,11,36, 13,11,3,1,12,36, 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, 13,10,12,1,3,37, 13,10,12,5,13,5, + 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, 13,10,6,1,9,37, 13,10,5,1,10,37, 13,10,4,1,11,37, + 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,6,2,21, 13,9,12,1,3,38, 13,9,12,5,13,6, 13,9,11,1,4,38, 13,9,10,1,5,38, 13,9,9,1,6,38, + 13,9,8,1,7,38, 13,9,7,1,8,38, 13,9,6,1,9,38, 13,9,5,1,10,38, 13,9,4,1,11,38, 13,9,3,1,12,38, 13,9,2,1,13,38, 13,9,2,6,2,22, + 13,8,12,1,3,39, 13,8,12,5,13,7, 13,8,11,1,4,39, 13,8,10,1,5,39, 13,8,9,1,6,39, 13,8,8,1,7,39, 13,8,7,1,8,39, 13,8,6,1,9,39, + 13,8,5,1,10,39, 13,8,4,1,11,39, 13,8,3,1,12,39, 13,8,2,1,13,39, 13,8,2,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, + 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, + 13,7,3,1,12,40, 13,7,2,1,13,40, 13,7,2,6,2,24, 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, + 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,3,1,12,41, 13,6,2,1,13,41, 13,6,2,6,2,25, + 13,5,10,1,5,42, 13,5,10,4,13,10, 13,5,10,5,13,10, 13,5,9,1,6,42, 13,5,8,1,7,42, 13,5,7,1,8,42, 13,5,6,1,9,42, 13,5,5,1,10,42, + 13,5,4,1,11,42, 13,5,3,1,12,42, 13,5,2,1,13,42, 13,5,2,6,2,26, 13,4,9,1,6,43, 13,4,9,5,13,11, 13,4,8,1,7,43, 13,4,7,1,8,43, + 13,4,6,1,9,43, 13,4,5,1,10,43, 13,4,4,1,11,43, 13,4,3,1,12,43, 13,4,2,1,13,43, 13,4,2,6,2,27, 13,3,10,1,5,44, 13,3,10,3,5,44, + 13,3,10,5,13,12, 13,3,9,1,6,44, 13,3,8,1,7,44, 13,3,7,1,8,44, 13,3,6,1,9,44, 13,3,5,1,10,44, 13,3,4,1,11,44, 13,3,3,1,12,44, + 13,3,2,1,13,44, 13,3,2,4,13,12, 13,3,2,6,2,28, 13,2,11,1,4,45, 13,2,11,3,4,45, 13,2,11,4,13,13, 13,2,11,5,13,13, 13,2,10,1,5,45, + 13,2,10,4,13,13, 13,2,9,1,6,45, 13,2,9,4,13,13, 13,2,8,1,7,45, 13,2,8,4,13,13, 13,2,7,1,8,45, 13,2,7,4,13,13, 13,2,6,1,9,45, + 13,2,6,4,13,13, 13,2,5,1,10,45, 13,2,5,4,13,13, 13,2,4,1,11,45, 13,2,4,4,13,13, 13,2,3,1,12,45, 13,2,3,4,13,13, 13,2,3,6,13,13, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1752, + count = 967, + faces = { + 1,10,13,2,3,85, 1,10,13,3,3,85, 1,10,13,5,13,69, 1,10,12,2,4,85, 1,10,12,3,4,85, 1,10,11,2,5,85, 1,10,11,3,5,85, 1,10,10,2,6,85, + 1,10,10,3,6,85, 1,10,9,2,7,85, 1,10,9,3,7,85, 1,10,8,2,8,85, 1,10,8,3,8,85, 1,10,7,2,9,85, 1,10,7,3,9,85, 1,10,6,2,10,85, + 1,10,6,3,10,85, 1,10,5,2,11,85, 1,10,5,3,11,85, 1,10,4,2,12,85, 1,10,4,3,12,85, 1,10,3,2,13,85, 1,10,3,3,13,85, 1,10,3,6,13,69, + 1,9,13,2,3,86, 1,9,13,5,13,70, 1,9,12,2,4,86, 1,9,11,2,5,86, 1,9,10,2,6,86, 1,9,9,2,7,86, 1,9,8,2,8,86, 1,9,7,2,9,86, + 1,9,6,2,10,86, 1,9,5,2,11,86, 1,9,4,2,12,86, 1,9,3,2,13,86, 1,9,3,6,13,70, 1,8,13,2,3,87, 1,8,13,5,13,71, 1,8,12,2,4,87, + 1,8,11,2,5,87, 1,8,10,2,6,87, 1,8,9,2,7,87, 1,8,8,2,8,87, 1,8,7,2,9,87, 1,8,6,2,10,87, 1,8,5,2,11,87, 1,8,4,2,12,87, + 1,8,3,2,13,87, 1,8,3,6,13,71, 1,7,13,2,3,88, 1,7,13,5,13,72, 1,7,12,2,4,88, 1,7,11,2,5,88, 1,7,10,2,6,88, 1,7,9,2,7,88, + 1,7,8,2,8,88, 1,7,7,2,9,88, 1,7,6,2,10,88, 1,7,5,2,11,88, 1,7,4,2,12,88, 1,7,3,2,13,88, 1,7,3,6,13,72, 1,6,13,2,3,89, + 1,6,13,4,13,73, 1,6,13,5,13,73, 1,6,12,2,4,89, 1,6,11,2,5,89, 1,6,10,2,6,89, 1,6,9,2,7,89, 1,6,8,2,8,89, 1,6,7,2,9,89, + 1,6,6,2,10,89, 1,6,5,2,11,89, 1,6,4,2,12,89, 1,6,3,2,13,89, 1,6,2,2,14,89, 1,6,2,3,14,89, 1,6,2,6,13,73, 1,5,12,2,4,90, + 1,5,12,4,1,58, 1,5,12,5,1,58, 1,5,11,2,5,90, 1,5,10,2,6,90, 1,5,9,2,7,90, 1,5,8,2,8,90, 1,5,7,2,9,90, 1,5,6,2,10,90, + 1,5,5,2,11,90, 1,5,4,2,12,90, 1,5,3,2,13,90, 1,5,2,2,14,90, 1,5,2,6,1,58, 1,4,11,2,5,91, 1,4,11,4,1,59, 1,4,11,5,1,59, + 1,4,10,2,6,91, 1,4,9,2,7,91, 1,4,8,2,8,91, 1,4,7,2,9,91, 1,4,6,2,10,91, 1,4,5,2,11,91, 1,4,4,2,12,91, 1,4,3,2,13,91, + 1,4,2,2,14,91, 1,4,2,6,1,59, 1,3,10,2,6,92, 1,3,10,4,1,60, 1,3,10,5,1,60, 1,3,9,2,7,92, 1,3,9,4,1,60, 1,3,8,2,8,92, + 1,3,8,4,1,60, 1,3,7,2,9,92, 1,3,7,4,1,60, 1,3,6,2,10,92, 1,3,6,4,1,60, 1,3,5,2,11,92, 1,3,5,4,1,60, 1,3,4,2,12,92, + 1,3,4,4,1,60, 1,3,3,2,13,92, 1,3,3,4,1,60, 1,3,2,2,14,92, 1,3,2,4,1,60, 1,3,2,6,1,60, 2,12,14,2,2,83, 2,12,14,3,2,83, + 2,12,14,5,12,67, 2,12,13,2,3,83, 2,12,13,3,3,83, 2,12,12,2,4,83, 2,12,12,3,4,83, 2,12,11,2,5,83, 2,12,11,3,5,83, 2,12,10,2,6,83, + 2,12,10,3,6,83, 2,12,9,2,7,83, 2,12,9,3,7,83, 2,12,8,2,8,83, 2,12,8,3,8,83, 2,12,7,2,9,83, 2,12,7,3,9,83, 2,12,6,2,10,83, + 2,12,6,3,10,83, 2,12,5,2,11,83, 2,12,5,3,11,83, 2,12,4,2,12,83, 2,12,4,3,12,83, 2,12,3,2,13,83, 2,12,3,3,13,83, 2,12,3,6,12,67, + 2,11,14,2,2,84, 2,11,14,4,12,68, 2,11,14,5,12,68, 2,11,13,2,3,84, 2,11,12,2,4,84, 2,11,11,2,5,84, 2,11,10,2,6,84, 2,11,9,2,7,84, + 2,11,8,2,8,84, 2,11,7,2,9,84, 2,11,6,2,10,84, 2,11,5,2,11,84, 2,11,4,2,12,84, 2,11,3,2,13,84, 2,11,3,6,12,68, 2,10,13,5,2,53, + 2,10,3,6,12,69, 2,9,13,5,2,54, 2,9,3,6,12,70, 2,8,13,5,2,55, 2,8,3,6,12,71, 2,7,13,5,2,56, 2,7,3,6,12,72, 2,6,13,4,2,57, + 2,6,13,5,2,57, 2,6,2,3,14,89, 2,6,2,6,12,73, 2,5,12,4,2,58, 2,5,12,5,2,58, 2,5,2,6,12,74, 2,4,11,4,2,59, 2,4,11,5,2,59, + 2,4,2,6,12,75, 2,3,10,5,2,60, 2,3,2,6,12,76, 2,2,11,2,5,93, 2,2,11,3,5,93, 2,2,11,4,2,61, 2,2,11,5,2,61, 2,2,10,2,6,93, + 2,2,10,4,2,61, 2,2,9,2,7,93, 2,2,9,4,2,61, 2,2,8,2,8,93, 2,2,8,4,2,61, 2,2,7,2,9,93, 2,2,7,4,2,61, 2,2,6,2,10,93, + 2,2,6,4,2,61, 2,2,5,2,11,93, 2,2,5,4,2,61, 2,2,4,2,12,93, 2,2,4,4,2,61, 2,2,3,2,13,93, 2,2,3,4,2,61, 2,2,2,2,14,93, + 2,2,2,4,2,61, 2,2,2,6,2,61, 3,13,13,2,3,82, 3,13,13,3,3,82, 3,13,13,5,11,66, 3,13,12,2,4,82, 3,13,12,3,4,82, 3,13,11,2,5,82, + 3,13,11,3,5,82, 3,13,10,2,6,82, 3,13,10,3,6,82, 3,13,9,2,7,82, 3,13,9,3,7,82, 3,13,8,2,8,82, 3,13,8,3,8,82, 3,13,7,2,9,82, + 3,13,7,3,9,82, 3,13,6,2,10,82, 3,13,6,3,10,82, 3,13,5,2,11,82, 3,13,5,3,11,82, 3,13,4,2,12,82, 3,13,4,3,12,82, 3,13,4,6,11,66, + 3,12,14,3,2,83, 3,12,14,5,3,51, 3,12,3,3,13,83, 3,12,3,6,11,67, 3,11,14,4,3,52, 3,11,14,5,3,52, 3,11,3,6,11,68, 3,10,13,5,3,53, + 3,10,3,6,11,69, 3,9,13,5,3,54, 3,9,3,6,11,70, 3,8,13,5,3,55, 3,8,3,6,11,71, 3,7,13,5,3,56, 3,7,3,6,11,72, 3,6,13,4,3,57, + 3,6,13,5,3,57, 3,6,2,3,14,89, 3,6,2,6,11,73, 3,5,12,4,3,58, 3,5,12,5,3,58, 3,5,2,6,11,74, 3,4,11,4,3,59, 3,4,11,5,3,59, + 3,4,2,6,11,75, 3,3,10,5,3,60, 3,3,2,6,11,76, 3,2,11,3,5,93, 3,2,11,5,3,61, 3,2,2,4,3,61, 3,2,2,6,11,77, 3,1,12,2,4,94, + 3,1,12,3,4,94, 3,1,12,4,3,62, 3,1,12,5,3,62, 3,1,11,2,5,94, 3,1,11,4,3,62, 3,1,10,2,6,94, 3,1,10,4,3,62, 3,1,9,2,7,94, + 3,1,9,4,3,62, 3,1,8,2,8,94, 3,1,8,4,3,62, 3,1,7,2,9,94, 3,1,7,4,3,62, 3,1,6,2,10,94, 3,1,6,4,3,62, 3,1,5,2,11,94, + 3,1,5,4,3,62, 3,1,4,2,12,94, 3,1,4,4,3,62, 3,1,3,2,13,94, 3,1,3,4,3,62, 3,1,3,6,3,62, 4,13,13,3,3,82, 4,13,13,5,4,50, + 4,13,12,3,4,82, 4,13,11,3,5,82, 4,13,10,3,6,82, 4,13,9,3,7,82, 4,13,8,3,8,82, 4,13,7,3,9,82, 4,13,6,3,10,82, 4,13,5,3,11,82, + 4,13,4,3,12,82, 4,13,4,6,10,66, 4,12,14,3,2,83, 4,12,14,5,4,51, 4,12,3,3,13,83, 4,12,3,6,10,67, 4,11,14,4,4,52, 4,11,14,5,4,52, + 4,11,3,6,10,68, 4,10,13,5,4,53, 4,10,3,6,10,69, 4,9,13,5,4,54, 4,9,3,6,10,70, 4,8,13,5,4,55, 4,8,3,6,10,71, 4,7,13,5,4,56, + 4,7,3,6,10,72, 4,6,13,4,4,57, 4,6,13,5,4,57, 4,6,2,3,14,89, 4,6,2,6,10,73, 4,5,12,4,4,58, 4,5,12,5,4,58, 4,5,2,6,10,74, + 4,4,11,4,4,59, 4,4,11,5,4,59, 4,4,2,6,10,75, 4,3,10,5,4,60, 4,3,2,6,10,76, 4,2,11,3,5,93, 4,2,11,5,4,61, 4,2,2,4,4,61, + 4,2,2,6,10,77, 4,1,12,3,4,94, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,4,4,4,62, 4,1,3,4,4,62, 4,1,3,6,10,78, 4,0,11,2,5,95, + 4,0,11,5,4,63, 4,0,10,2,6,95, 4,0,9,2,7,95, 4,0,8,2,8,95, 4,0,7,2,9,95, 4,0,6,2,10,95, 4,0,5,2,11,95, 4,0,5,6,4,63, + 5,14,12,2,4,81, 5,14,12,3,4,81, 5,14,12,5,9,65, 5,14,11,2,5,81, 5,14,11,3,5,81, 5,14,10,2,6,81, 5,14,10,3,6,81, 5,14,9,2,7,81, + 5,14,9,3,7,81, 5,14,8,2,8,81, 5,14,8,3,8,81, 5,14,7,2,9,81, 5,14,7,3,9,81, 5,14,6,2,10,81, 5,14,6,3,10,81, 5,14,5,2,11,81, + 5,14,5,3,11,81, 5,14,5,6,9,65, 5,13,13,3,3,82, 5,13,13,5,5,50, 5,13,4,3,12,82, 5,13,4,6,9,66, 5,12,14,3,2,83, 5,12,14,5,5,51, + 5,12,3,3,13,83, 5,12,3,6,9,67, 5,11,14,4,5,52, 5,11,14,5,5,52, 5,11,3,6,9,68, 5,10,13,5,5,53, 5,10,3,6,9,69, 5,9,13,5,5,54, + 5,9,3,6,9,70, 5,8,13,5,5,55, 5,8,3,6,9,71, 5,7,13,5,5,56, 5,7,3,6,9,72, 5,6,13,4,5,57, 5,6,13,5,5,57, 5,6,2,3,14,89, + 5,6,2,6,9,73, 5,5,12,4,5,58, 5,5,12,5,5,58, 5,5,2,6,9,74, 5,4,11,4,5,59, 5,4,11,5,5,59, 5,4,2,6,9,75, 5,3,10,5,5,60, + 5,3,2,6,9,76, 5,2,11,3,5,93, 5,2,11,5,5,61, 5,2,2,4,5,61, 5,2,2,6,9,77, 5,1,12,3,4,94, 5,1,12,4,5,62, 5,1,12,5,5,62, + 5,1,4,4,5,62, 5,1,3,4,5,62, 5,1,3,6,9,78, 5,0,11,5,5,63, 5,0,5,6,9,79, 6,14,12,3,4,81, 6,14,12,5,6,49, 6,14,11,3,5,81, + 6,14,10,3,6,81, 6,14,9,3,7,81, 6,14,8,3,8,81, 6,14,7,3,9,81, 6,14,6,3,10,81, 6,14,5,3,11,81, 6,14,5,6,8,65, 6,13,13,3,3,82, + 6,13,13,5,6,50, 6,13,4,3,12,82, 6,13,4,6,8,66, 6,12,14,3,2,83, 6,12,14,5,6,51, 6,12,3,3,13,83, 6,12,3,6,8,67, 6,11,14,4,6,52, + 6,11,14,5,6,52, 6,11,3,6,8,68, 6,10,13,5,6,53, 6,10,3,6,8,69, 6,9,13,5,6,54, 6,9,3,6,8,70, 6,8,13,5,6,55, 6,8,3,6,8,71, + 6,7,13,5,6,56, 6,7,3,6,8,72, 6,6,13,4,6,57, 6,6,13,5,6,57, 6,6,2,3,14,89, 6,6,2,6,8,73, 6,5,12,4,6,58, 6,5,12,5,6,58, + 6,5,2,6,8,74, 6,4,11,4,6,59, 6,4,11,5,6,59, 6,4,2,6,8,75, 6,3,10,5,6,60, 6,3,2,6,8,76, 6,2,11,3,5,93, 6,2,11,5,6,61, + 6,2,2,4,6,61, 6,2,2,6,8,77, 6,1,12,3,4,94, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,4,4,6,62, 6,1,3,4,6,62, 6,1,3,6,8,78, + 6,0,11,5,6,63, 6,0,5,6,8,79, 7,14,12,3,4,81, 7,14,12,5,7,49, 7,14,11,3,5,81, 7,14,10,3,6,81, 7,14,9,3,7,81, 7,14,8,3,8,81, + 7,14,7,3,9,81, 7,14,6,3,10,81, 7,14,5,3,11,81, 7,14,5,6,7,65, 7,13,13,3,3,82, 7,13,13,5,7,50, 7,13,4,3,12,82, 7,13,4,6,7,66, + 7,12,14,3,2,83, 7,12,14,5,7,51, 7,12,3,3,13,83, 7,12,3,6,7,67, 7,11,14,4,7,52, 7,11,14,5,7,52, 7,11,3,6,7,68, 7,10,13,5,7,53, + 7,10,3,6,7,69, 7,9,13,5,7,54, 7,9,3,6,7,70, 7,8,13,5,7,55, 7,8,3,6,7,71, 7,7,13,5,7,56, 7,7,3,6,7,72, 7,6,13,4,7,57, + 7,6,13,5,7,57, 7,6,2,3,14,89, 7,6,2,6,7,73, 7,5,12,4,7,58, 7,5,12,5,7,58, 7,5,2,6,7,74, 7,4,11,4,7,59, 7,4,11,5,7,59, + 7,4,2,6,7,75, 7,3,10,5,7,60, 7,3,2,6,7,76, 7,2,11,3,5,93, 7,2,11,5,7,61, 7,2,2,4,7,61, 7,2,2,6,7,77, 7,1,12,3,4,94, + 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,4,4,7,62, 7,1,3,4,7,62, 7,1,3,6,7,78, 7,0,11,5,7,63, 7,0,5,6,7,79, 8,14,12,3,4,81, + 8,14,12,5,8,49, 8,14,11,3,5,81, 8,14,10,3,6,81, 8,14,9,3,7,81, 8,14,8,3,8,81, 8,14,7,3,9,81, 8,14,6,3,10,81, 8,14,5,3,11,81, + 8,14,5,6,6,65, 8,13,13,3,3,82, 8,13,13,5,8,50, 8,13,4,3,12,82, 8,13,4,6,6,66, 8,12,14,3,2,83, 8,12,14,5,8,51, 8,12,3,3,13,83, + 8,12,3,6,6,67, 8,11,14,4,8,52, 8,11,14,5,8,52, 8,11,3,6,6,68, 8,10,13,5,8,53, 8,10,3,6,6,69, 8,9,13,5,8,54, 8,9,3,6,6,70, + 8,8,13,5,8,55, 8,8,3,6,6,71, 8,7,13,5,8,56, 8,7,3,6,6,72, 8,6,13,4,8,57, 8,6,13,5,8,57, 8,6,2,3,14,89, 8,6,2,6,6,73, + 8,5,12,4,8,58, 8,5,12,5,8,58, 8,5,2,6,6,74, 8,4,11,4,8,59, 8,4,11,5,8,59, 8,4,2,6,6,75, 8,3,10,5,8,60, 8,3,2,6,6,76, + 8,2,11,3,5,93, 8,2,11,5,8,61, 8,2,2,4,8,61, 8,2,2,6,6,77, 8,1,12,3,4,94, 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,4,4,8,62, + 8,1,3,4,8,62, 8,1,3,6,6,78, 8,0,11,5,8,63, 8,0,5,6,6,79, 9,14,12,1,4,81, 9,14,12,3,4,81, 9,14,12,5,9,49, 9,14,11,1,5,81, + 9,14,11,3,5,81, 9,14,10,1,6,81, 9,14,10,3,6,81, 9,14,9,1,7,81, 9,14,9,3,7,81, 9,14,8,1,8,81, 9,14,8,3,8,81, 9,14,7,1,9,81, + 9,14,7,3,9,81, 9,14,6,1,10,81, 9,14,6,3,10,81, 9,14,5,1,11,81, 9,14,5,3,11,81, 9,14,5,6,9,49, 9,13,13,3,3,82, 9,13,13,5,9,50, + 9,13,4,3,12,82, 9,13,4,6,5,66, 9,12,14,3,2,83, 9,12,14,5,9,51, 9,12,3,3,13,83, 9,12,3,6,5,67, 9,11,14,4,9,52, 9,11,14,5,9,52, + 9,11,3,6,5,68, 9,10,13,5,9,53, 9,10,3,6,5,69, 9,9,13,5,9,54, 9,9,3,6,5,70, 9,8,13,5,9,55, 9,8,3,6,5,71, 9,7,13,5,9,56, + 9,7,3,6,5,72, 9,6,13,4,9,57, 9,6,13,5,9,57, 9,6,2,3,14,89, 9,6,2,6,5,73, 9,5,12,4,9,58, 9,5,12,5,9,58, 9,5,2,6,5,74, + 9,4,11,4,9,59, 9,4,11,5,9,59, 9,4,2,6,5,75, 9,3,10,5,9,60, 9,3,2,6,5,76, 9,2,11,3,5,93, 9,2,11,5,9,61, 9,2,2,4,9,61, + 9,2,2,6,5,77, 9,1,12,3,4,94, 9,1,12,4,9,62, 9,1,12,5,9,62, 9,1,4,4,9,62, 9,1,3,4,9,62, 9,1,3,6,5,78, 9,0,11,5,9,63, + 9,0,5,6,5,79, 10,13,13,3,3,82, 10,13,13,5,10,50, 10,13,12,3,4,82, 10,13,11,3,5,82, 10,13,10,3,6,82, 10,13,9,3,7,82, 10,13,8,3,8,82, + 10,13,7,3,9,82, 10,13,6,3,10,82, 10,13,5,3,11,82, 10,13,4,3,12,82, 10,13,4,6,4,66, 10,12,14,3,2,83, 10,12,14,5,10,51, 10,12,3,3,13,83, + 10,12,3,6,4,67, 10,11,14,4,10,52, 10,11,14,5,10,52, 10,11,3,6,4,68, 10,10,13,5,10,53, 10,10,3,6,4,69, 10,9,13,5,10,54, 10,9,3,6,4,70, + 10,8,13,5,10,55, 10,8,3,6,4,71, 10,7,13,5,10,56, 10,7,3,6,4,72, 10,6,13,4,10,57, 10,6,13,5,10,57, 10,6,2,3,14,89, 10,6,2,6,4,73, + 10,5,12,4,10,58, 10,5,12,5,10,58, 10,5,2,6,4,74, 10,4,11,4,10,59, 10,4,11,5,10,59, 10,4,2,6,4,75, 10,3,10,5,10,60, 10,3,2,6,4,76, + 10,2,11,3,5,93, 10,2,11,5,10,61, 10,2,2,4,10,61, 10,2,2,6,4,77, 10,1,12,3,4,94, 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,4,4,10,62, + 10,1,3,4,10,62, 10,1,3,6,4,78, 10,0,11,1,5,95, 10,0,11,5,10,63, 10,0,10,1,6,95, 10,0,9,1,7,95, 10,0,8,1,8,95, 10,0,7,1,9,95, + 10,0,6,1,10,95, 10,0,5,1,11,95, 10,0,5,6,4,79, 11,13,13,1,3,82, 11,13,13,3,3,82, 11,13,13,5,11,50, 11,13,12,1,4,82, 11,13,12,3,4,82, + 11,13,11,1,5,82, 11,13,11,3,5,82, 11,13,10,1,6,82, 11,13,10,3,6,82, 11,13,9,1,7,82, 11,13,9,3,7,82, 11,13,8,1,8,82, 11,13,8,3,8,82, + 11,13,7,1,9,82, 11,13,7,3,9,82, 11,13,6,1,10,82, 11,13,6,3,10,82, 11,13,5,1,11,82, 11,13,5,3,11,82, 11,13,4,1,12,82, 11,13,4,3,12,82, + 11,13,4,6,11,50, 11,12,14,3,2,83, 11,12,14,5,11,51, 11,12,3,3,13,83, 11,12,3,6,3,67, 11,11,14,4,11,52, 11,11,14,5,11,52, 11,11,3,6,3,68, + 11,10,13,5,11,53, 11,10,3,6,3,69, 11,9,13,5,11,54, 11,9,3,6,3,70, 11,8,13,5,11,55, 11,8,3,6,3,71, 11,7,13,5,11,56, 11,7,3,6,3,72, + 11,6,13,4,11,57, 11,6,13,5,11,57, 11,6,2,3,14,89, 11,6,2,6,3,73, 11,5,12,4,11,58, 11,5,12,5,11,58, 11,5,2,6,3,74, 11,4,11,4,11,59, + 11,4,11,5,11,59, 11,4,2,6,3,75, 11,3,10,5,11,60, 11,3,2,6,3,76, 11,2,11,3,5,93, 11,2,11,5,11,61, 11,2,2,4,11,61, 11,2,2,6,3,77, + 11,1,12,1,4,94, 11,1,12,3,4,94, 11,1,12,4,11,62, 11,1,12,5,11,62, 11,1,11,1,5,94, 11,1,11,4,11,62, 11,1,10,1,6,94, 11,1,10,4,11,62, + 11,1,9,1,7,94, 11,1,9,4,11,62, 11,1,8,1,8,94, 11,1,8,4,11,62, 11,1,7,1,9,94, 11,1,7,4,11,62, 11,1,6,1,10,94, 11,1,6,4,11,62, + 11,1,5,1,11,94, 11,1,5,4,11,62, 11,1,4,1,12,94, 11,1,4,4,11,62, 11,1,3,1,13,94, 11,1,3,4,11,62, 11,1,3,6,3,78, 12,12,14,1,2,83, + 12,12,14,3,2,83, 12,12,14,5,12,51, 12,12,13,1,3,83, 12,12,13,3,3,83, 12,12,12,1,4,83, 12,12,12,3,4,83, 12,12,11,1,5,83, 12,12,11,3,5,83, + 12,12,10,1,6,83, 12,12,10,3,6,83, 12,12,9,1,7,83, 12,12,9,3,7,83, 12,12,8,1,8,83, 12,12,8,3,8,83, 12,12,7,1,9,83, 12,12,7,3,9,83, + 12,12,6,1,10,83, 12,12,6,3,10,83, 12,12,5,1,11,83, 12,12,5,3,11,83, 12,12,4,1,12,83, 12,12,4,3,12,83, 12,12,3,1,13,83, 12,12,3,3,13,83, + 12,12,3,6,12,51, 12,11,14,1,2,84, 12,11,14,4,12,52, 12,11,14,5,12,52, 12,11,13,1,3,84, 12,11,12,1,4,84, 12,11,11,1,5,84, 12,11,10,1,6,84, + 12,11,9,1,7,84, 12,11,8,1,8,84, 12,11,7,1,9,84, 12,11,6,1,10,84, 12,11,5,1,11,84, 12,11,4,1,12,84, 12,11,3,1,13,84, 12,11,3,6,12,52, + 12,10,13,5,12,53, 12,10,3,6,2,69, 12,9,13,5,12,54, 12,9,3,6,2,70, 12,8,13,5,12,55, 12,8,3,6,2,71, 12,7,13,5,12,56, 12,7,3,6,2,72, + 12,6,13,4,12,57, 12,6,13,5,12,57, 12,6,2,3,14,89, 12,6,2,6,2,73, 12,5,12,4,12,58, 12,5,12,5,12,58, 12,5,2,6,2,74, 12,4,11,4,12,59, + 12,4,11,5,12,59, 12,4,2,6,2,75, 12,3,10,1,6,92, 12,3,10,5,12,60, 12,3,9,1,7,92, 12,3,8,1,8,92, 12,3,7,1,9,92, 12,3,6,1,10,92, + 12,3,5,1,11,92, 12,3,4,1,12,92, 12,3,3,1,13,92, 12,3,2,1,14,92, 12,3,2,6,2,76, 12,2,11,1,5,93, 12,2,11,3,5,93, 12,2,11,4,12,61, + 12,2,11,5,12,61, 12,2,10,1,6,93, 12,2,10,4,12,61, 12,2,9,1,7,93, 12,2,9,4,12,61, 12,2,8,1,8,93, 12,2,8,4,12,61, 12,2,7,1,9,93, + 12,2,7,4,12,61, 12,2,6,1,10,93, 12,2,6,4,12,61, 12,2,5,1,11,93, 12,2,5,4,12,61, 12,2,4,1,12,93, 12,2,4,4,12,61, 12,2,3,1,13,93, + 12,2,3,4,12,61, 12,2,2,1,14,93, 12,2,2,4,12,61, 12,2,2,6,12,61, 13,10,13,1,3,85, 13,10,13,3,3,85, 13,10,13,5,13,53, 13,10,12,1,4,85, + 13,10,12,3,4,85, 13,10,11,1,5,85, 13,10,11,3,5,85, 13,10,10,1,6,85, 13,10,10,3,6,85, 13,10,9,1,7,85, 13,10,9,3,7,85, 13,10,8,1,8,85, + 13,10,8,3,8,85, 13,10,7,1,9,85, 13,10,7,3,9,85, 13,10,6,1,10,85, 13,10,6,3,10,85, 13,10,5,1,11,85, 13,10,5,3,11,85, 13,10,4,1,12,85, + 13,10,4,3,12,85, 13,10,3,1,13,85, 13,10,3,3,13,85, 13,10,3,6,13,53, 13,9,13,1,3,86, 13,9,13,5,13,54, 13,9,12,1,4,86, 13,9,11,1,5,86, + 13,9,10,1,6,86, 13,9,9,1,7,86, 13,9,8,1,8,86, 13,9,7,1,9,86, 13,9,6,1,10,86, 13,9,5,1,11,86, 13,9,4,1,12,86, 13,9,3,1,13,86, + 13,9,3,6,13,54, 13,8,13,1,3,87, 13,8,13,5,13,55, 13,8,12,1,4,87, 13,8,11,1,5,87, 13,8,10,1,6,87, 13,8,9,1,7,87, 13,8,8,1,8,87, + 13,8,7,1,9,87, 13,8,6,1,10,87, 13,8,5,1,11,87, 13,8,4,1,12,87, 13,8,3,1,13,87, 13,8,3,6,13,55, 13,7,13,1,3,88, 13,7,13,5,13,56, + 13,7,12,1,4,88, 13,7,11,1,5,88, 13,7,10,1,6,88, 13,7,9,1,7,88, 13,7,8,1,8,88, 13,7,7,1,9,88, 13,7,6,1,10,88, 13,7,5,1,11,88, + 13,7,4,1,12,88, 13,7,3,1,13,88, 13,7,3,6,13,56, 13,6,13,1,3,89, 13,6,13,4,13,57, 13,6,13,5,13,57, 13,6,12,1,4,89, 13,6,11,1,5,89, + 13,6,10,1,6,89, 13,6,9,1,7,89, 13,6,8,1,8,89, 13,6,7,1,9,89, 13,6,6,1,10,89, 13,6,5,1,11,89, 13,6,4,1,12,89, 13,6,3,1,13,89, + 13,6,2,1,14,89, 13,6,2,3,14,89, 13,6,2,6,13,57, 13,5,12,1,4,90, 13,5,12,4,13,58, 13,5,12,5,13,58, 13,5,11,1,5,90, 13,5,10,1,6,90, + 13,5,9,1,7,90, 13,5,8,1,8,90, 13,5,7,1,9,90, 13,5,6,1,10,90, 13,5,5,1,11,90, 13,5,4,1,12,90, 13,5,3,1,13,90, 13,5,2,1,14,90, + 13,5,2,6,1,74, 13,4,11,1,5,91, 13,4,11,4,13,59, 13,4,11,5,13,59, 13,4,10,1,6,91, 13,4,10,4,13,59, 13,4,9,1,7,91, 13,4,9,4,13,59, + 13,4,8,1,8,91, 13,4,8,4,13,59, 13,4,7,1,9,91, 13,4,7,4,13,59, 13,4,6,1,10,91, 13,4,6,4,13,59, 13,4,5,1,11,91, 13,4,5,4,13,59, + 13,4,4,1,12,91, 13,4,4,4,13,59, 13,4,3,1,13,91, 13,4,3,4,13,59, 13,4,2,1,14,91, 13,4,2,4,13,59, 13,4,2,6,1,75, + }, + }, + }, +} diff --git a/assets/voxels/fairy.lua b/assets/voxels/fairy.lua new file mode 100644 index 0000000..58ff9ae --- /dev/null +++ b/assets/voxels/fairy.lua @@ -0,0 +1,334 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "fairy" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "fairy", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1874, + count = 1212, + faces = { + 0,5,14,2,2,42, 0,5,14,3,2,42, 0,5,14,4,0,10, 0,5,14,5,0,10, 0,5,13,2,3,42, 0,5,13,3,3,42, 0,5,13,4,0,10, 0,5,12,2,4,42, + 0,5,12,3,4,42, 0,5,12,4,0,10, 0,5,11,2,5,42, 0,5,11,3,5,42, 0,5,11,4,0,10, 0,5,10,2,6,42, 0,5,10,3,6,42, 0,5,10,4,0,10, + 0,5,9,2,7,42, 0,5,9,3,7,42, 0,5,9,4,0,10, 0,5,8,2,8,42, 0,5,8,3,8,42, 0,5,8,4,0,10, 0,5,7,2,9,42, 0,5,7,3,9,42, + 0,5,7,4,0,10, 0,5,6,2,10,42, 0,5,6,3,10,42, 0,5,6,4,0,10, 0,5,5,2,11,42, 0,5,5,3,11,42, 0,5,5,4,0,10, 0,5,4,2,12,42, + 0,5,4,3,12,42, 0,5,4,4,0,10, 0,5,3,2,13,42, 0,5,3,3,13,42, 0,5,3,4,0,10, 0,5,2,2,14,42, 0,5,2,3,14,42, 0,5,2,4,0,10, + 0,5,1,2,15,42, 0,5,1,3,15,42, 0,5,1,4,0,10, 0,5,1,6,15,26, 1,12,13,2,3,35, 1,12,13,3,3,35, 1,12,13,5,1,3, 1,12,12,2,4,35, + 1,12,12,3,4,35, 1,12,11,2,5,35, 1,12,11,3,5,35, 1,12,10,2,6,35, 1,12,10,3,6,35, 1,12,9,2,7,35, 1,12,9,3,7,35, 1,12,8,2,8,35, + 1,12,8,3,8,35, 1,12,7,2,9,35, 1,12,7,3,9,35, 1,12,6,2,10,35, 1,12,6,3,10,35, 1,12,5,2,11,35, 1,12,5,3,11,35, 1,12,4,2,12,35, + 1,12,4,3,12,35, 1,12,3,2,13,35, 1,12,3,3,13,35, 1,12,3,6,14,19, 1,11,14,2,2,36, 1,11,14,3,2,36, 1,11,14,4,1,4, 1,11,14,5,1,4, + 1,11,13,2,3,36, 1,11,13,4,1,4, 1,11,12,2,4,36, 1,11,12,4,1,4, 1,11,11,2,5,36, 1,11,11,4,1,4, 1,11,10,2,6,36, 1,11,10,4,1,4, + 1,11,9,2,7,36, 1,11,9,4,1,4, 1,11,8,2,8,36, 1,11,8,4,1,4, 1,11,7,2,9,36, 1,11,7,4,1,4, 1,11,6,2,10,36, 1,11,6,4,1,4, + 1,11,5,2,11,36, 1,11,5,4,1,4, 1,11,4,2,12,36, 1,11,4,4,1,4, 1,11,3,2,13,36, 1,11,3,4,1,4, 1,11,3,6,14,20, 1,6,14,2,2,41, + 1,6,14,3,2,41, 1,6,14,5,1,9, 1,6,13,2,3,41, 1,6,13,3,3,41, 1,6,12,2,4,41, 1,6,12,3,4,41, 1,6,11,2,5,41, 1,6,11,3,5,41, + 1,6,10,2,6,41, 1,6,10,3,6,41, 1,6,9,2,7,41, 1,6,9,3,7,41, 1,6,8,2,8,41, 1,6,8,3,8,41, 1,6,7,2,9,41, 1,6,7,3,9,41, + 1,6,6,2,10,41, 1,6,6,3,10,41, 1,6,5,2,11,41, 1,6,5,3,11,41, 1,6,4,2,12,41, 1,6,4,3,12,41, 1,6,3,2,13,41, 1,6,3,3,13,41, + 1,6,2,2,14,41, 1,6,2,3,14,41, 1,6,1,2,15,41, 1,6,1,3,15,41, 1,6,1,6,14,25, 1,5,14,5,1,10, 1,5,1,6,14,26, 1,4,14,2,2,43, + 1,4,14,4,1,11, 1,4,14,5,1,11, 1,4,13,2,3,43, 1,4,13,4,1,11, 1,4,12,2,4,43, 1,4,12,4,1,11, 1,4,11,2,5,43, 1,4,11,4,1,11, + 1,4,10,2,6,43, 1,4,10,4,1,11, 1,4,9,2,7,43, 1,4,9,4,1,11, 1,4,8,2,8,43, 1,4,8,4,1,11, 1,4,7,2,9,43, 1,4,7,4,1,11, + 1,4,6,2,10,43, 1,4,6,4,1,11, 1,4,5,2,11,43, 1,4,5,4,1,11, 1,4,4,2,12,43, 1,4,4,4,1,11, 1,4,3,2,13,43, 1,4,3,4,1,11, + 1,4,2,2,14,43, 1,4,2,4,1,11, 1,4,1,2,15,43, 1,4,1,4,1,11, 1,4,1,6,14,27, 2,12,13,3,3,35, 2,12,13,5,2,3, 2,12,12,3,4,35, + 2,12,11,3,5,35, 2,12,10,3,6,35, 2,12,9,3,7,35, 2,12,8,3,8,35, 2,12,7,3,9,35, 2,12,6,3,10,35, 2,12,5,3,11,35, 2,12,4,3,12,35, + 2,12,3,3,13,35, 2,12,3,6,13,19, 2,11,14,3,2,36, 2,11,14,5,2,4, 2,11,3,4,2,4, 2,11,3,6,13,20, 2,10,14,2,2,37, 2,10,14,4,2,5, + 2,10,14,5,2,5, 2,10,13,2,3,37, 2,10,13,4,2,5, 2,10,12,2,4,37, 2,10,12,4,2,5, 2,10,11,2,5,37, 2,10,11,4,2,5, 2,10,10,2,6,37, + 2,10,10,4,2,5, 2,10,9,2,7,37, 2,10,9,4,2,5, 2,10,8,2,8,37, 2,10,8,4,2,5, 2,10,7,2,9,37, 2,10,7,4,2,5, 2,10,6,2,10,37, + 2,10,6,4,2,5, 2,10,5,2,11,37, 2,10,5,4,2,5, 2,10,4,2,12,37, 2,10,4,4,2,5, 2,10,4,6,13,21, 2,8,13,2,3,39, 2,8,13,3,3,39, + 2,8,13,5,2,7, 2,8,12,2,4,39, 2,8,12,3,4,39, 2,8,11,2,5,39, 2,8,11,3,5,39, 2,8,10,2,6,39, 2,8,10,3,6,39, 2,8,9,2,7,39, + 2,8,9,3,7,39, 2,8,8,2,8,39, 2,8,8,3,8,39, 2,8,7,2,9,39, 2,8,7,3,9,39, 2,8,6,2,10,39, 2,8,6,3,10,39, 2,8,5,2,11,39, + 2,8,5,3,11,39, 2,8,4,2,12,39, 2,8,4,3,12,39, 2,8,3,2,13,39, 2,8,3,3,13,39, 2,8,3,6,13,23, 2,7,14,2,2,40, 2,7,14,3,2,40, + 2,7,14,5,2,8, 2,7,13,2,3,40, 2,7,12,2,4,40, 2,7,11,2,5,40, 2,7,10,2,6,40, 2,7,9,2,7,40, 2,7,8,2,8,40, 2,7,7,2,9,40, + 2,7,6,2,10,40, 2,7,5,2,11,40, 2,7,4,2,12,40, 2,7,3,2,13,40, 2,7,2,2,14,40, 2,7,2,3,14,40, 2,7,2,6,13,24, 2,6,14,5,2,9, + 2,6,1,3,15,41, 2,6,1,6,13,25, 2,5,14,5,2,10, 2,5,1,6,13,26, 2,4,14,5,2,11, 2,4,1,6,13,27, 2,3,14,2,2,44, 2,3,14,4,2,12, + 2,3,14,5,2,12, 2,3,13,2,3,44, 2,3,13,4,2,12, 2,3,12,2,4,44, 2,3,12,4,2,12, 2,3,11,2,5,44, 2,3,11,4,2,12, 2,3,10,2,6,44, + 2,3,10,4,2,12, 2,3,9,2,7,44, 2,3,9,4,2,12, 2,3,8,2,8,44, 2,3,8,4,2,12, 2,3,7,2,9,44, 2,3,7,4,2,12, 2,3,6,2,10,44, + 2,3,6,4,2,12, 2,3,5,2,11,44, 2,3,5,4,2,12, 2,3,4,2,12,44, 2,3,4,4,2,12, 2,3,3,2,13,44, 2,3,3,4,2,12, 2,3,2,2,14,44, + 2,3,2,4,2,12, 2,3,1,2,15,44, 2,3,1,4,2,12, 2,3,1,6,13,28, 3,12,13,3,3,35, 3,12,13,5,3,3, 3,12,12,3,4,35, 3,12,11,3,5,35, + 3,12,10,3,6,35, 3,12,9,3,7,35, 3,12,8,3,8,35, 3,12,7,3,9,35, 3,12,6,3,10,35, 3,12,5,3,11,35, 3,12,4,3,12,35, 3,12,3,3,13,35, + 3,12,3,6,12,19, 3,11,14,3,2,36, 3,11,14,5,3,4, 3,11,3,4,3,4, 3,11,3,6,12,20, 3,10,14,4,3,5, 3,10,14,5,3,5, 3,10,4,6,12,21, + 3,9,13,2,3,38, 3,9,13,5,3,6, 3,9,12,2,4,38, 3,9,11,2,5,38, 3,9,10,2,6,38, 3,9,9,2,7,38, 3,9,8,2,8,38, 3,9,7,2,9,38, + 3,9,6,2,10,38, 3,9,5,2,11,38, 3,9,4,2,12,38, 3,9,4,6,12,22, 3,8,13,5,3,7, 3,8,3,3,13,39, 3,8,3,6,12,23, 3,7,14,3,2,40, + 3,7,14,5,3,8, 3,7,2,3,14,40, 3,7,2,6,12,24, 3,6,14,5,3,9, 3,6,1,3,15,41, 3,6,1,6,12,25, 3,5,14,5,3,10, 3,5,1,6,12,26, + 3,4,14,5,3,11, 3,4,1,6,12,27, 3,3,14,4,3,12, 3,3,14,5,3,12, 3,3,1,4,3,12, 3,3,1,6,12,28, 3,2,13,2,3,45, 3,2,13,4,3,13, + 3,2,13,5,3,13, 3,2,12,2,4,45, 3,2,12,4,3,13, 3,2,11,2,5,45, 3,2,11,4,3,13, 3,2,10,2,6,45, 3,2,10,4,3,13, 3,2,9,2,7,45, + 3,2,9,4,3,13, 3,2,8,2,8,45, 3,2,8,4,3,13, 3,2,7,2,9,45, 3,2,7,4,3,13, 3,2,6,2,10,45, 3,2,6,4,3,13, 3,2,5,2,11,45, + 3,2,5,4,3,13, 3,2,4,2,12,45, 3,2,4,4,3,13, 3,2,3,2,13,45, 3,2,3,4,3,13, 3,2,2,2,14,45, 3,2,2,4,3,13, 3,2,2,6,12,29, + 4,12,13,3,3,35, 4,12,13,5,4,3, 4,12,12,3,4,35, 4,12,11,3,5,35, 4,12,10,3,6,35, 4,12,9,3,7,35, 4,12,8,3,8,35, 4,12,7,3,9,35, + 4,12,6,3,10,35, 4,12,5,3,11,35, 4,12,4,3,12,35, 4,12,3,3,13,35, 4,12,3,6,11,19, 4,11,14,3,2,36, 4,11,14,5,4,4, 4,11,3,4,4,4, + 4,11,3,6,11,20, 4,10,14,4,4,5, 4,10,14,5,4,5, 4,10,4,6,11,21, 4,9,13,5,4,6, 4,9,4,6,11,22, 4,8,13,5,4,7, 4,8,3,3,13,39, + 4,8,3,6,11,23, 4,7,14,3,2,40, 4,7,14,5,4,8, 4,7,2,3,14,40, 4,7,2,6,11,24, 4,6,14,5,4,9, 4,6,1,3,15,41, 4,6,1,6,11,25, + 4,5,14,5,4,10, 4,5,1,6,11,26, 4,4,14,5,4,11, 4,4,1,6,11,27, 4,3,14,4,4,12, 4,3,14,5,4,12, 4,3,1,4,4,12, 4,3,1,6,11,28, + 4,2,13,4,4,13, 4,2,13,5,4,13, 4,2,2,4,4,13, 4,2,2,6,11,29, 4,1,12,2,4,46, 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,11,2,5,46, + 4,1,11,4,4,14, 4,1,10,2,6,46, 4,1,10,4,4,14, 4,1,9,2,7,46, 4,1,9,4,4,14, 4,1,8,2,8,46, 4,1,8,4,4,14, 4,1,7,2,9,46, + 4,1,7,4,4,14, 4,1,6,2,10,46, 4,1,6,4,4,14, 4,1,5,2,11,46, 4,1,5,4,4,14, 4,1,4,2,12,46, 4,1,4,4,4,14, 4,1,3,2,13,46, + 4,1,3,4,4,14, 4,1,3,6,11,30, 5,12,13,3,3,35, 5,12,13,5,5,3, 5,12,12,3,4,35, 5,12,11,3,5,35, 5,12,10,3,6,35, 5,12,9,3,7,35, + 5,12,8,3,8,35, 5,12,7,3,9,35, 5,12,6,3,10,35, 5,12,5,3,11,35, 5,12,4,3,12,35, 5,12,3,3,13,35, 5,12,3,6,10,19, 5,11,14,3,2,36, + 5,11,14,5,5,4, 5,11,3,4,5,4, 5,11,3,6,10,20, 5,10,14,4,5,5, 5,10,14,5,5,5, 5,10,4,6,10,21, 5,9,13,5,5,6, 5,9,4,6,10,22, + 5,8,13,5,5,7, 5,8,3,3,13,39, 5,8,3,6,10,23, 5,7,14,3,2,40, 5,7,14,5,5,8, 5,7,2,3,14,40, 5,7,2,6,10,24, 5,6,14,5,5,9, + 5,6,1,3,15,41, 5,6,1,6,10,25, 5,5,14,5,5,10, 5,5,1,6,10,26, 5,4,14,5,5,11, 5,4,1,6,10,27, 5,3,14,4,5,12, 5,3,14,5,5,12, + 5,3,1,4,5,12, 5,3,1,6,10,28, 5,2,13,4,5,13, 5,2,13,5,5,13, 5,2,2,4,5,13, 5,2,2,6,10,29, 5,1,12,4,5,14, 5,1,12,5,5,14, + 5,1,11,4,5,14, 5,1,6,4,5,14, 5,1,5,4,5,14, 5,1,4,4,5,14, 5,1,3,4,5,14, 5,1,3,6,10,30, 5,0,10,2,6,47, 5,0,10,5,5,15, + 5,0,9,2,7,47, 5,0,8,2,8,47, 5,0,7,2,9,47, 5,0,7,6,10,31, 6,13,12,2,4,34, 6,13,12,3,4,34, 6,13,12,5,6,2, 6,13,11,2,5,34, + 6,13,11,3,5,34, 6,13,10,2,6,34, 6,13,10,3,6,34, 6,13,10,6,9,18, 6,13,7,2,9,34, 6,13,7,3,9,34, 6,13,7,5,6,2, 6,13,6,2,10,34, + 6,13,6,3,10,34, 6,13,5,2,11,34, 6,13,5,3,11,34, 6,13,4,2,12,34, 6,13,4,3,12,34, 6,13,3,2,13,34, 6,13,3,3,13,34, 6,13,3,6,9,18, + 6,12,13,3,3,35, 6,12,13,5,6,3, 6,12,9,3,7,35, 6,12,8,3,8,35, 6,12,3,6,9,19, 6,11,14,3,2,36, 6,11,14,5,6,4, 6,11,3,4,6,4, + 6,11,3,6,9,20, 6,10,14,4,6,5, 6,10,14,5,6,5, 6,10,4,6,9,21, 6,9,13,5,6,6, 6,9,4,6,9,22, 6,8,13,5,6,7, 6,8,3,3,13,39, + 6,8,3,6,9,23, 6,7,14,3,2,40, 6,7,14,5,6,8, 6,7,2,3,14,40, 6,7,2,6,9,24, 6,6,14,5,6,9, 6,6,1,3,15,41, 6,6,1,6,9,25, + 6,5,14,5,6,10, 6,5,1,6,9,26, 6,4,14,5,6,11, 6,4,1,6,9,27, 6,3,14,4,6,12, 6,3,14,5,6,12, 6,3,1,4,6,12, 6,3,1,6,9,28, + 6,2,13,4,6,13, 6,2,13,5,6,13, 6,2,2,4,6,13, 6,2,2,6,9,29, 6,1,12,4,6,14, 6,1,12,5,6,14, 6,1,11,4,6,14, 6,1,6,4,6,14, + 6,1,5,4,6,14, 6,1,4,4,6,14, 6,1,3,4,6,14, 6,1,3,6,9,30, 6,0,10,1,6,47, 6,0,10,5,6,15, 6,0,9,1,7,47, 6,0,8,1,8,47, + 6,0,7,1,9,47, 6,0,7,6,9,31, 7,13,12,3,4,34, 7,13,12,5,7,2, 7,13,11,3,5,34, 7,13,10,3,6,34, 7,13,10,6,8,18, 7,13,7,3,9,34, + 7,13,7,5,7,2, 7,13,6,3,10,34, 7,13,5,3,11,34, 7,13,4,3,12,34, 7,13,3,3,13,34, 7,13,3,6,8,18, 7,12,13,3,3,35, 7,12,13,5,7,3, + 7,12,9,3,7,35, 7,12,8,3,8,35, 7,12,3,6,8,19, 7,11,14,3,2,36, 7,11,14,5,7,4, 7,11,3,4,7,4, 7,11,3,6,8,20, 7,10,14,4,7,5, + 7,10,14,5,7,5, 7,10,4,6,8,21, 7,9,13,5,7,6, 7,9,4,6,8,22, 7,8,13,5,7,7, 7,8,3,3,13,39, 7,8,3,6,8,23, 7,7,14,3,2,40, + 7,7,14,5,7,8, 7,7,2,3,14,40, 7,7,2,6,8,24, 7,6,14,5,7,9, 7,6,1,3,15,41, 7,6,1,6,8,25, 7,5,14,5,7,10, 7,5,1,6,8,26, + 7,4,14,5,7,11, 7,4,1,6,8,27, 7,3,14,4,7,12, 7,3,14,5,7,12, 7,3,1,4,7,12, 7,3,1,6,8,28, 7,2,13,4,7,13, 7,2,13,5,7,13, + 7,2,2,4,7,13, 7,2,2,6,8,29, 7,1,12,4,7,14, 7,1,12,5,7,14, 7,1,11,4,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, + 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,4,4,7,14, 7,1,3,4,7,14, 7,1,3,6,8,30, 8,13,12,3,4,34, 8,13,12,5,8,2, + 8,13,11,3,5,34, 8,13,10,3,6,34, 8,13,10,6,7,18, 8,13,7,3,9,34, 8,13,7,5,8,2, 8,13,6,3,10,34, 8,13,5,3,11,34, 8,13,4,3,12,34, + 8,13,3,3,13,34, 8,13,3,6,7,18, 8,12,13,3,3,35, 8,12,13,5,8,3, 8,12,9,3,7,35, 8,12,8,3,8,35, 8,12,3,6,7,19, 8,11,14,3,2,36, + 8,11,14,5,8,4, 8,11,3,4,8,4, 8,11,3,6,7,20, 8,10,14,4,8,5, 8,10,14,5,8,5, 8,10,4,6,7,21, 8,9,13,5,8,6, 8,9,4,6,7,22, + 8,8,13,5,8,7, 8,8,3,3,13,39, 8,8,3,6,7,23, 8,7,14,3,2,40, 8,7,14,5,8,8, 8,7,2,3,14,40, 8,7,2,6,7,24, 8,6,14,5,8,9, + 8,6,1,3,15,41, 8,6,1,6,7,25, 8,5,14,5,8,10, 8,5,1,6,7,26, 8,4,14,5,8,11, 8,4,1,6,7,27, 8,3,14,4,8,12, 8,3,14,5,8,12, + 8,3,1,4,8,12, 8,3,1,6,7,28, 8,2,13,4,8,13, 8,2,13,5,8,13, 8,2,2,4,8,13, 8,2,2,6,7,29, 8,1,12,4,8,14, 8,1,12,5,8,14, + 8,1,11,4,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,4,4,8,14, + 8,1,3,4,8,14, 8,1,3,6,7,30, 9,13,12,1,4,34, 9,13,12,3,4,34, 9,13,12,5,9,2, 9,13,11,1,5,34, 9,13,11,3,5,34, 9,13,10,1,6,34, + 9,13,10,3,6,34, 9,13,10,6,6,18, 9,13,7,1,9,34, 9,13,7,3,9,34, 9,13,7,5,9,2, 9,13,6,1,10,34, 9,13,6,3,10,34, 9,13,5,1,11,34, + 9,13,5,3,11,34, 9,13,4,1,12,34, 9,13,4,3,12,34, 9,13,3,1,13,34, 9,13,3,3,13,34, 9,13,3,6,6,18, 9,12,13,3,3,35, 9,12,13,5,9,3, + 9,12,9,3,7,35, 9,12,8,3,8,35, 9,12,3,6,6,19, 9,11,14,3,2,36, 9,11,14,5,9,4, 9,11,3,4,9,4, 9,11,3,6,6,20, 9,10,14,4,9,5, + 9,10,14,5,9,5, 9,10,4,6,6,21, 9,9,13,5,9,6, 9,9,4,6,6,22, 9,8,13,5,9,7, 9,8,3,3,13,39, 9,8,3,6,6,23, 9,7,14,3,2,40, + 9,7,14,5,9,8, 9,7,2,3,14,40, 9,7,2,6,6,24, 9,6,14,5,9,9, 9,6,1,3,15,41, 9,6,1,6,6,25, 9,5,14,5,9,10, 9,5,1,6,6,26, + 9,4,14,5,9,11, 9,4,1,6,6,27, 9,3,14,4,9,12, 9,3,14,5,9,12, 9,3,1,4,9,12, 9,3,1,6,6,28, 9,2,13,4,9,13, 9,2,13,5,9,13, + 9,2,2,4,9,13, 9,2,2,6,6,29, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,11,4,9,14, 9,1,6,4,9,14, 9,1,5,4,9,14, 9,1,4,4,9,14, + 9,1,3,4,9,14, 9,1,3,6,6,30, 9,0,10,2,6,47, 9,0,10,5,9,15, 9,0,9,2,7,47, 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,7,6,6,31, + 10,12,13,3,3,35, 10,12,13,5,10,3, 10,12,12,3,4,35, 10,12,11,3,5,35, 10,12,10,3,6,35, 10,12,9,3,7,35, 10,12,8,3,8,35, 10,12,7,3,9,35, + 10,12,6,3,10,35, 10,12,5,3,11,35, 10,12,4,3,12,35, 10,12,3,3,13,35, 10,12,3,6,5,19, 10,11,14,3,2,36, 10,11,14,5,10,4, 10,11,3,4,10,4, + 10,11,3,6,5,20, 10,10,14,4,10,5, 10,10,14,5,10,5, 10,10,4,6,5,21, 10,9,13,5,10,6, 10,9,4,6,5,22, 10,8,13,5,10,7, 10,8,3,3,13,39, + 10,8,3,6,5,23, 10,7,14,3,2,40, 10,7,14,5,10,8, 10,7,2,3,14,40, 10,7,2,6,5,24, 10,6,14,5,10,9, 10,6,1,3,15,41, 10,6,1,6,5,25, + 10,5,14,5,10,10, 10,5,1,6,5,26, 10,4,14,5,10,11, 10,4,1,6,5,27, 10,3,14,4,10,12, 10,3,14,5,10,12, 10,3,1,4,10,12, 10,3,1,6,5,28, + 10,2,13,4,10,13, 10,2,13,5,10,13, 10,2,2,4,10,13, 10,2,2,6,5,29, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,11,4,10,14, 10,1,6,4,10,14, + 10,1,5,4,10,14, 10,1,4,4,10,14, 10,1,3,4,10,14, 10,1,3,6,5,30, 10,0,10,1,6,47, 10,0,10,5,10,15, 10,0,9,1,7,47, 10,0,8,1,8,47, + 10,0,7,1,9,47, 10,0,7,6,5,31, 11,12,13,3,3,35, 11,12,13,5,11,3, 11,12,12,3,4,35, 11,12,11,3,5,35, 11,12,10,3,6,35, 11,12,9,3,7,35, + 11,12,8,3,8,35, 11,12,7,3,9,35, 11,12,6,3,10,35, 11,12,5,3,11,35, 11,12,4,3,12,35, 11,12,3,3,13,35, 11,12,3,6,4,19, 11,11,14,3,2,36, + 11,11,14,5,11,4, 11,11,3,4,11,4, 11,11,3,6,4,20, 11,10,14,4,11,5, 11,10,14,5,11,5, 11,10,4,6,4,21, 11,9,13,5,11,6, 11,9,4,6,4,22, + 11,8,13,5,11,7, 11,8,3,3,13,39, 11,8,3,6,4,23, 11,7,14,3,2,40, 11,7,14,5,11,8, 11,7,2,3,14,40, 11,7,2,6,4,24, 11,6,14,5,11,9, + 11,6,1,3,15,41, 11,6,1,6,4,25, 11,5,14,5,11,10, 11,5,1,6,4,26, 11,4,14,5,11,11, 11,4,1,6,4,27, 11,3,14,4,11,12, 11,3,14,5,11,12, + 11,3,1,4,11,12, 11,3,1,6,4,28, 11,2,13,4,11,13, 11,2,13,5,11,13, 11,2,2,4,11,13, 11,2,2,6,4,29, 11,1,12,1,4,46, 11,1,12,4,11,14, + 11,1,12,5,11,14, 11,1,11,1,5,46, 11,1,11,4,11,14, 11,1,10,1,6,46, 11,1,10,4,11,14, 11,1,9,1,7,46, 11,1,9,4,11,14, 11,1,8,1,8,46, + 11,1,8,4,11,14, 11,1,7,1,9,46, 11,1,7,4,11,14, 11,1,6,1,10,46, 11,1,6,4,11,14, 11,1,5,1,11,46, 11,1,5,4,11,14, 11,1,4,1,12,46, + 11,1,4,4,11,14, 11,1,3,1,13,46, 11,1,3,4,11,14, 11,1,3,6,4,30, 12,12,13,3,3,35, 12,12,13,5,12,3, 12,12,12,3,4,35, 12,12,11,3,5,35, + 12,12,10,3,6,35, 12,12,9,3,7,35, 12,12,8,3,8,35, 12,12,7,3,9,35, 12,12,6,3,10,35, 12,12,5,3,11,35, 12,12,4,3,12,35, 12,12,3,3,13,35, + 12,12,3,6,3,19, 12,11,14,3,2,36, 12,11,14,5,12,4, 12,11,3,4,12,4, 12,11,3,6,3,20, 12,10,14,4,12,5, 12,10,14,5,12,5, 12,10,4,6,3,21, + 12,9,13,1,3,38, 12,9,13,5,12,6, 12,9,12,1,4,38, 12,9,11,1,5,38, 12,9,10,1,6,38, 12,9,9,1,7,38, 12,9,8,1,8,38, 12,9,7,1,9,38, + 12,9,6,1,10,38, 12,9,5,1,11,38, 12,9,4,1,12,38, 12,9,4,6,3,22, 12,8,13,5,12,7, 12,8,3,3,13,39, 12,8,3,6,3,23, 12,7,14,3,2,40, + 12,7,14,5,12,8, 12,7,2,3,14,40, 12,7,2,6,3,24, 12,6,14,5,12,9, 12,6,1,3,15,41, 12,6,1,6,3,25, 12,5,14,5,12,10, 12,5,1,6,3,26, + 12,4,14,5,12,11, 12,4,1,6,3,27, 12,3,14,4,12,12, 12,3,14,5,12,12, 12,3,1,4,12,12, 12,3,1,6,3,28, 12,2,13,1,3,45, 12,2,13,4,12,13, + 12,2,13,5,12,13, 12,2,12,1,4,45, 12,2,12,4,12,13, 12,2,11,1,5,45, 12,2,11,4,12,13, 12,2,10,1,6,45, 12,2,10,4,12,13, 12,2,9,1,7,45, + 12,2,9,4,12,13, 12,2,8,1,8,45, 12,2,8,4,12,13, 12,2,7,1,9,45, 12,2,7,4,12,13, 12,2,6,1,10,45, 12,2,6,4,12,13, 12,2,5,1,11,45, + 12,2,5,4,12,13, 12,2,4,1,12,45, 12,2,4,4,12,13, 12,2,3,1,13,45, 12,2,3,4,12,13, 12,2,2,1,14,45, 12,2,2,4,12,13, 12,2,2,6,3,29, + 13,12,13,3,3,35, 13,12,13,5,13,3, 13,12,12,3,4,35, 13,12,11,3,5,35, 13,12,10,3,6,35, 13,12,9,3,7,35, 13,12,8,3,8,35, 13,12,7,3,9,35, + 13,12,6,3,10,35, 13,12,5,3,11,35, 13,12,4,3,12,35, 13,12,3,3,13,35, 13,12,3,6,2,19, 13,11,14,3,2,36, 13,11,14,5,13,4, 13,11,3,4,13,4, + 13,11,3,6,2,20, 13,10,14,1,2,37, 13,10,14,4,13,5, 13,10,14,5,13,5, 13,10,13,1,3,37, 13,10,13,4,13,5, 13,10,12,1,4,37, 13,10,12,4,13,5, + 13,10,11,1,5,37, 13,10,11,4,13,5, 13,10,10,1,6,37, 13,10,10,4,13,5, 13,10,9,1,7,37, 13,10,9,4,13,5, 13,10,8,1,8,37, 13,10,8,4,13,5, + 13,10,7,1,9,37, 13,10,7,4,13,5, 13,10,6,1,10,37, 13,10,6,4,13,5, 13,10,5,1,11,37, 13,10,5,4,13,5, 13,10,4,1,12,37, 13,10,4,4,13,5, + 13,10,4,6,2,21, 13,8,13,1,3,39, 13,8,13,3,3,39, 13,8,13,5,13,7, 13,8,12,1,4,39, 13,8,12,3,4,39, 13,8,11,1,5,39, 13,8,11,3,5,39, + 13,8,10,1,6,39, 13,8,10,3,6,39, 13,8,9,1,7,39, 13,8,9,3,7,39, 13,8,8,1,8,39, 13,8,8,3,8,39, 13,8,7,1,9,39, 13,8,7,3,9,39, + 13,8,6,1,10,39, 13,8,6,3,10,39, 13,8,5,1,11,39, 13,8,5,3,11,39, 13,8,4,1,12,39, 13,8,4,3,12,39, 13,8,3,1,13,39, 13,8,3,3,13,39, + 13,8,3,6,2,23, 13,7,14,1,2,40, 13,7,14,3,2,40, 13,7,14,5,13,8, 13,7,13,1,3,40, 13,7,12,1,4,40, 13,7,11,1,5,40, 13,7,10,1,6,40, + 13,7,9,1,7,40, 13,7,8,1,8,40, 13,7,7,1,9,40, 13,7,6,1,10,40, 13,7,5,1,11,40, 13,7,4,1,12,40, 13,7,3,1,13,40, 13,7,2,1,14,40, + 13,7,2,3,14,40, 13,7,2,6,2,24, 13,6,14,5,13,9, 13,6,1,3,15,41, 13,6,1,6,2,25, 13,5,14,5,13,10, 13,5,1,6,2,26, 13,4,14,5,13,11, + 13,4,1,6,2,27, 13,3,14,1,2,44, 13,3,14,4,13,12, 13,3,14,5,13,12, 13,3,13,1,3,44, 13,3,13,4,13,12, 13,3,12,1,4,44, 13,3,12,4,13,12, + 13,3,11,1,5,44, 13,3,11,4,13,12, 13,3,10,1,6,44, 13,3,10,4,13,12, 13,3,9,1,7,44, 13,3,9,4,13,12, 13,3,8,1,8,44, 13,3,8,4,13,12, + 13,3,7,1,9,44, 13,3,7,4,13,12, 13,3,6,1,10,44, 13,3,6,4,13,12, 13,3,5,1,11,44, 13,3,5,4,13,12, 13,3,4,1,12,44, 13,3,4,4,13,12, + 13,3,3,1,13,44, 13,3,3,4,13,12, 13,3,2,1,14,44, 13,3,2,4,13,12, 13,3,1,1,15,44, 13,3,1,4,13,12, 13,3,1,6,2,28, 14,12,13,1,3,35, + 14,12,13,3,3,35, 14,12,13,5,14,3, 14,12,12,1,4,35, 14,12,12,3,4,35, 14,12,11,1,5,35, 14,12,11,3,5,35, 14,12,10,1,6,35, 14,12,10,3,6,35, + 14,12,9,1,7,35, 14,12,9,3,7,35, 14,12,8,1,8,35, 14,12,8,3,8,35, 14,12,7,1,9,35, 14,12,7,3,9,35, 14,12,6,1,10,35, 14,12,6,3,10,35, + 14,12,5,1,11,35, 14,12,5,3,11,35, 14,12,4,1,12,35, 14,12,4,3,12,35, 14,12,3,1,13,35, 14,12,3,3,13,35, 14,12,3,6,1,19, 14,11,14,1,2,36, + 14,11,14,3,2,36, 14,11,14,4,14,4, 14,11,14,5,14,4, 14,11,13,1,3,36, 14,11,13,4,14,4, 14,11,12,1,4,36, 14,11,12,4,14,4, 14,11,11,1,5,36, + 14,11,11,4,14,4, 14,11,10,1,6,36, 14,11,10,4,14,4, 14,11,9,1,7,36, 14,11,9,4,14,4, 14,11,8,1,8,36, 14,11,8,4,14,4, 14,11,7,1,9,36, + 14,11,7,4,14,4, 14,11,6,1,10,36, 14,11,6,4,14,4, 14,11,5,1,11,36, 14,11,5,4,14,4, 14,11,4,1,12,36, 14,11,4,4,14,4, 14,11,3,1,13,36, + 14,11,3,4,14,4, 14,11,3,6,1,20, 14,6,14,1,2,41, 14,6,14,3,2,41, 14,6,14,5,14,9, 14,6,13,1,3,41, 14,6,13,3,3,41, 14,6,12,1,4,41, + 14,6,12,3,4,41, 14,6,11,1,5,41, 14,6,11,3,5,41, 14,6,10,1,6,41, 14,6,10,3,6,41, 14,6,9,1,7,41, 14,6,9,3,7,41, 14,6,8,1,8,41, + 14,6,8,3,8,41, 14,6,7,1,9,41, 14,6,7,3,9,41, 14,6,6,1,10,41, 14,6,6,3,10,41, 14,6,5,1,11,41, 14,6,5,3,11,41, 14,6,4,1,12,41, + 14,6,4,3,12,41, 14,6,3,1,13,41, 14,6,3,3,13,41, 14,6,2,1,14,41, 14,6,2,3,14,41, 14,6,1,1,15,41, 14,6,1,3,15,41, 14,6,1,6,1,25, + 14,5,14,5,14,10, 14,5,1,6,1,26, 14,4,14,1,2,43, 14,4,14,4,14,11, 14,4,14,5,14,11, 14,4,13,1,3,43, 14,4,13,4,14,11, 14,4,12,1,4,43, + 14,4,12,4,14,11, 14,4,11,1,5,43, 14,4,11,4,14,11, 14,4,10,1,6,43, 14,4,10,4,14,11, 14,4,9,1,7,43, 14,4,9,4,14,11, 14,4,8,1,8,43, + 14,4,8,4,14,11, 14,4,7,1,9,43, 14,4,7,4,14,11, 14,4,6,1,10,43, 14,4,6,4,14,11, 14,4,5,1,11,43, 14,4,5,4,14,11, 14,4,4,1,12,43, + 14,4,4,4,14,11, 14,4,3,1,13,43, 14,4,3,4,14,11, 14,4,2,1,14,43, 14,4,2,4,14,11, 14,4,1,1,15,43, 14,4,1,4,14,11, 14,4,1,6,1,27, + 15,5,14,1,2,42, 15,5,14,3,2,42, 15,5,14,4,15,10, 15,5,14,5,15,10, 15,5,13,1,3,42, 15,5,13,3,3,42, 15,5,13,4,15,10, 15,5,12,1,4,42, + 15,5,12,3,4,42, 15,5,12,4,15,10, 15,5,11,1,5,42, 15,5,11,3,5,42, 15,5,11,4,15,10, 15,5,10,1,6,42, 15,5,10,3,6,42, 15,5,10,4,15,10, + 15,5,9,1,7,42, 15,5,9,3,7,42, 15,5,9,4,15,10, 15,5,8,1,8,42, 15,5,8,3,8,42, 15,5,8,4,15,10, 15,5,7,1,9,42, 15,5,7,3,9,42, + 15,5,7,4,15,10, 15,5,6,1,10,42, 15,5,6,3,10,42, 15,5,6,4,15,10, 15,5,5,1,11,42, 15,5,5,3,11,42, 15,5,5,4,15,10, 15,5,4,1,12,42, + 15,5,4,3,12,42, 15,5,4,4,15,10, 15,5,3,1,13,42, 15,5,3,3,13,42, 15,5,3,4,15,10, 15,5,2,1,14,42, 15,5,2,3,14,42, 15,5,2,4,15,10, + 15,5,1,1,15,42, 15,5,1,3,15,42, 15,5,1,4,15,10, 15,5,1,6,0,26, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1880, + count = 1194, + faces = { + 0,6,14,2,2,89, 0,6,14,3,2,89, 0,6,14,4,0,57, 0,6,14,5,0,57, 0,6,13,2,3,89, 0,6,13,3,3,89, 0,6,13,4,0,57, 0,6,12,2,4,89, + 0,6,12,3,4,89, 0,6,12,4,0,57, 0,6,11,2,5,89, 0,6,11,3,5,89, 0,6,11,4,0,57, 0,6,10,2,6,89, 0,6,10,3,6,89, 0,6,10,4,0,57, + 0,6,9,2,7,89, 0,6,9,3,7,89, 0,6,9,4,0,57, 0,6,8,2,8,89, 0,6,8,3,8,89, 0,6,8,4,0,57, 0,6,7,2,9,89, 0,6,7,3,9,89, + 0,6,7,4,0,57, 0,6,6,2,10,89, 0,6,6,3,10,89, 0,6,6,4,0,57, 0,6,5,2,11,89, 0,6,5,3,11,89, 0,6,5,4,0,57, 0,6,4,2,12,89, + 0,6,4,3,12,89, 0,6,4,4,0,57, 0,6,3,2,13,89, 0,6,3,3,13,89, 0,6,3,4,0,57, 0,6,2,2,14,89, 0,6,2,3,14,89, 0,6,2,4,0,57, + 0,6,1,2,15,89, 0,6,1,3,15,89, 0,6,1,4,0,57, 0,6,1,6,15,73, 1,11,13,2,3,84, 1,11,13,3,3,84, 1,11,13,5,1,52, 1,11,12,2,4,84, + 1,11,12,3,4,84, 1,11,11,2,5,84, 1,11,11,3,5,84, 1,11,10,2,6,84, 1,11,10,3,6,84, 1,11,9,2,7,84, 1,11,9,3,7,84, 1,11,8,2,8,84, + 1,11,8,3,8,84, 1,11,7,2,9,84, 1,11,7,3,9,84, 1,11,6,2,10,84, 1,11,6,3,10,84, 1,11,5,2,11,84, 1,11,5,3,11,84, 1,11,4,2,12,84, + 1,11,4,3,12,84, 1,11,3,2,13,84, 1,11,3,3,13,84, 1,11,3,6,14,68, 1,10,14,2,2,85, 1,10,14,3,2,85, 1,10,14,4,1,53, 1,10,14,5,1,53, + 1,10,13,2,3,85, 1,10,13,4,1,53, 1,10,12,2,4,85, 1,10,12,4,1,53, 1,10,11,2,5,85, 1,10,11,4,1,53, 1,10,10,2,6,85, 1,10,10,4,1,53, + 1,10,9,2,7,85, 1,10,9,4,1,53, 1,10,8,2,8,85, 1,10,8,4,1,53, 1,10,7,2,9,85, 1,10,7,4,1,53, 1,10,6,2,10,85, 1,10,6,4,1,53, + 1,10,5,2,11,85, 1,10,5,4,1,53, 1,10,4,2,12,85, 1,10,4,4,1,53, 1,10,3,2,13,85, 1,10,3,4,1,53, 1,10,3,6,14,69, 1,7,13,2,3,88, + 1,7,13,3,3,88, 1,7,13,5,1,56, 1,7,12,2,4,88, 1,7,12,3,4,88, 1,7,11,2,5,88, 1,7,11,3,5,88, 1,7,10,2,6,88, 1,7,10,3,6,88, + 1,7,9,2,7,88, 1,7,9,3,7,88, 1,7,8,2,8,88, 1,7,8,3,8,88, 1,7,7,2,9,88, 1,7,7,3,9,88, 1,7,6,2,10,88, 1,7,6,3,10,88, + 1,7,5,2,11,88, 1,7,5,3,11,88, 1,7,4,2,12,88, 1,7,4,3,12,88, 1,7,3,2,13,88, 1,7,3,3,13,88, 1,7,2,2,14,88, 1,7,2,3,14,88, + 1,7,2,6,14,72, 1,6,14,3,2,89, 1,6,14,5,1,57, 1,6,1,3,15,89, 1,6,1,6,14,73, 1,5,14,2,2,90, 1,5,14,5,1,58, 1,5,13,2,3,90, + 1,5,12,2,4,90, 1,5,11,2,5,90, 1,5,10,2,6,90, 1,5,9,2,7,90, 1,5,8,2,8,90, 1,5,7,2,9,90, 1,5,6,2,10,90, 1,5,5,2,11,90, + 1,5,4,2,12,90, 1,5,3,2,13,90, 1,5,2,2,14,90, 1,5,1,2,15,90, 1,5,1,6,14,74, 1,4,14,2,2,91, 1,4,14,4,1,59, 1,4,14,5,1,59, + 1,4,13,2,3,91, 1,4,13,4,1,59, 1,4,12,2,4,91, 1,4,12,4,1,59, 1,4,11,2,5,91, 1,4,11,4,1,59, 1,4,10,2,6,91, 1,4,10,4,1,59, + 1,4,9,2,7,91, 1,4,9,4,1,59, 1,4,8,2,8,91, 1,4,8,4,1,59, 1,4,7,2,9,91, 1,4,7,4,1,59, 1,4,6,2,10,91, 1,4,6,4,1,59, + 1,4,5,2,11,91, 1,4,5,4,1,59, 1,4,4,2,12,91, 1,4,4,4,1,59, 1,4,3,2,13,91, 1,4,3,4,1,59, 1,4,2,2,14,91, 1,4,2,4,1,59, + 1,4,1,2,15,91, 1,4,1,4,1,59, 1,4,1,6,14,75, 2,11,13,3,3,84, 2,11,13,5,2,52, 2,11,12,3,4,84, 2,11,11,3,5,84, 2,11,10,3,6,84, + 2,11,9,3,7,84, 2,11,8,3,8,84, 2,11,7,3,9,84, 2,11,6,3,10,84, 2,11,5,3,11,84, 2,11,4,3,12,84, 2,11,3,3,13,84, 2,11,3,6,13,68, + 2,10,14,3,2,85, 2,10,14,5,2,53, 2,10,3,4,2,53, 2,10,3,6,13,69, 2,9,14,2,2,86, 2,9,14,4,2,54, 2,9,14,5,2,54, 2,9,13,2,3,86, + 2,9,13,4,2,54, 2,9,12,2,4,86, 2,9,12,4,2,54, 2,9,11,2,5,86, 2,9,11,4,2,54, 2,9,10,2,6,86, 2,9,10,4,2,54, 2,9,9,2,7,86, + 2,9,9,4,2,54, 2,9,8,2,8,86, 2,9,8,4,2,54, 2,9,7,2,9,86, 2,9,7,4,2,54, 2,9,6,2,10,86, 2,9,6,4,2,54, 2,9,5,2,11,86, + 2,9,5,4,2,54, 2,9,4,2,12,86, 2,9,4,4,2,54, 2,9,4,6,13,70, 2,7,13,3,3,88, 2,7,13,5,2,56, 2,7,12,3,4,88, 2,7,11,3,5,88, + 2,7,10,3,6,88, 2,7,9,3,7,88, 2,7,8,3,8,88, 2,7,7,3,9,88, 2,7,6,3,10,88, 2,7,5,3,11,88, 2,7,4,3,12,88, 2,7,3,3,13,88, + 2,7,2,3,14,88, 2,7,2,6,13,72, 2,6,14,3,2,89, 2,6,14,5,2,57, 2,6,1,3,15,89, 2,6,1,6,13,73, 2,5,14,5,2,58, 2,5,1,6,13,74, + 2,4,14,5,2,59, 2,4,1,6,13,75, 2,3,14,2,2,92, 2,3,14,5,2,60, 2,3,13,2,3,92, 2,3,12,2,4,92, 2,3,11,2,5,92, 2,3,10,2,6,92, + 2,3,9,2,7,92, 2,3,8,2,8,92, 2,3,7,2,9,92, 2,3,6,2,10,92, 2,3,5,2,11,92, 2,3,4,2,12,92, 2,3,3,2,13,92, 2,3,2,2,14,92, + 2,3,1,2,15,92, 2,3,1,4,2,60, 2,3,1,6,13,76, 2,2,15,2,1,93, 2,2,15,3,1,93, 2,2,15,4,2,61, 2,2,15,5,2,61, 2,2,14,2,2,93, + 2,2,14,4,2,61, 2,2,13,2,3,93, 2,2,13,4,2,61, 2,2,12,2,4,93, 2,2,12,4,2,61, 2,2,11,2,5,93, 2,2,11,4,2,61, 2,2,10,2,6,93, + 2,2,10,4,2,61, 2,2,9,2,7,93, 2,2,9,4,2,61, 2,2,8,2,8,93, 2,2,8,4,2,61, 2,2,7,2,9,93, 2,2,7,4,2,61, 2,2,6,2,10,93, + 2,2,6,4,2,61, 2,2,5,2,11,93, 2,2,5,4,2,61, 2,2,4,2,12,93, 2,2,4,4,2,61, 2,2,3,2,13,93, 2,2,3,4,2,61, 2,2,2,2,14,93, + 2,2,2,4,2,61, 2,2,2,6,13,77, 3,11,13,3,3,84, 3,11,13,5,3,52, 3,11,12,3,4,84, 3,11,11,3,5,84, 3,11,10,3,6,84, 3,11,9,3,7,84, + 3,11,8,3,8,84, 3,11,7,3,9,84, 3,11,6,3,10,84, 3,11,5,3,11,84, 3,11,4,3,12,84, 3,11,3,3,13,84, 3,11,3,6,12,68, 3,10,14,3,2,85, + 3,10,14,5,3,53, 3,10,3,4,3,53, 3,10,3,6,12,69, 3,9,14,4,3,54, 3,9,14,5,3,54, 3,9,4,6,12,70, 3,8,13,2,3,87, 3,8,13,5,3,55, + 3,8,12,2,4,87, 3,8,11,2,5,87, 3,8,10,2,6,87, 3,8,9,2,7,87, 3,8,8,2,8,87, 3,8,7,2,9,87, 3,8,6,2,10,87, 3,8,5,2,11,87, + 3,8,4,2,12,87, 3,8,4,6,12,71, 3,7,13,5,3,56, 3,7,3,3,13,88, 3,7,2,3,14,88, 3,7,2,6,12,72, 3,6,14,3,2,89, 3,6,14,5,3,57, + 3,6,1,3,15,89, 3,6,1,6,12,73, 3,5,14,5,3,58, 3,5,1,6,12,74, 3,4,14,5,3,59, 3,4,1,6,12,75, 3,3,14,5,3,60, 3,3,1,4,3,60, + 3,3,1,6,12,76, 3,2,15,3,1,93, 3,2,15,4,3,61, 3,2,15,5,3,61, 3,2,2,4,3,61, 3,2,2,6,12,77, 3,1,14,2,2,94, 3,1,14,4,3,62, + 3,1,14,5,3,62, 3,1,13,2,3,94, 3,1,13,4,3,62, 3,1,12,2,4,94, 3,1,12,4,3,62, 3,1,11,2,5,94, 3,1,11,4,3,62, 3,1,10,2,6,94, + 3,1,10,4,3,62, 3,1,9,2,7,94, 3,1,9,4,3,62, 3,1,8,2,8,94, 3,1,8,4,3,62, 3,1,7,2,9,94, 3,1,7,4,3,62, 3,1,6,2,10,94, + 3,1,6,4,3,62, 3,1,5,2,11,94, 3,1,5,4,3,62, 3,1,4,2,12,94, 3,1,4,4,3,62, 3,1,3,2,13,94, 3,1,3,4,3,62, 3,1,3,6,12,78, + 4,11,13,3,3,84, 4,11,13,5,4,52, 4,11,12,3,4,84, 4,11,11,3,5,84, 4,11,10,3,6,84, 4,11,9,3,7,84, 4,11,8,3,8,84, 4,11,7,3,9,84, + 4,11,6,3,10,84, 4,11,5,3,11,84, 4,11,4,3,12,84, 4,11,3,3,13,84, 4,11,3,6,11,68, 4,10,14,3,2,85, 4,10,14,5,4,53, 4,10,3,4,4,53, + 4,10,3,6,11,69, 4,9,14,4,4,54, 4,9,14,5,4,54, 4,9,4,6,11,70, 4,8,13,5,4,55, 4,8,4,6,11,71, 4,7,13,5,4,56, 4,7,3,3,13,88, + 4,7,2,3,14,88, 4,7,2,6,11,72, 4,6,14,3,2,89, 4,6,14,5,4,57, 4,6,1,3,15,89, 4,6,1,6,11,73, 4,5,14,5,4,58, 4,5,1,6,11,74, + 4,4,14,5,4,59, 4,4,1,6,11,75, 4,3,14,5,4,60, 4,3,1,4,4,60, 4,3,1,6,11,76, 4,2,15,3,1,93, 4,2,15,4,4,61, 4,2,15,5,4,61, + 4,2,2,4,4,61, 4,2,2,6,11,77, 4,1,14,4,4,62, 4,1,14,5,4,62, 4,1,4,4,4,62, 4,1,3,4,4,62, 4,1,3,6,11,78, 4,0,13,2,3,95, + 4,0,13,5,4,63, 4,0,12,2,4,95, 4,0,11,2,5,95, 4,0,10,2,6,95, 4,0,9,2,7,95, 4,0,8,2,8,95, 4,0,7,2,9,95, 4,0,6,2,10,95, + 4,0,5,2,11,95, 4,0,5,6,4,63, 5,11,13,3,3,84, 5,11,13,5,5,52, 5,11,12,3,4,84, 5,11,11,3,5,84, 5,11,10,3,6,84, 5,11,9,3,7,84, + 5,11,8,3,8,84, 5,11,7,3,9,84, 5,11,6,3,10,84, 5,11,5,3,11,84, 5,11,4,3,12,84, 5,11,3,3,13,84, 5,11,3,6,10,68, 5,10,14,3,2,85, + 5,10,14,5,5,53, 5,10,3,4,5,53, 5,10,3,6,10,69, 5,9,14,4,5,54, 5,9,14,5,5,54, 5,9,4,6,10,70, 5,8,13,5,5,55, 5,8,4,6,10,71, + 5,7,13,5,5,56, 5,7,3,3,13,88, 5,7,2,3,14,88, 5,7,2,6,10,72, 5,6,14,3,2,89, 5,6,14,5,5,57, 5,6,1,3,15,89, 5,6,1,6,10,73, + 5,5,14,5,5,58, 5,5,1,6,10,74, 5,4,14,5,5,59, 5,4,1,6,10,75, 5,3,14,5,5,60, 5,3,1,4,5,60, 5,3,1,6,10,76, 5,2,15,3,1,93, + 5,2,15,4,5,61, 5,2,15,5,5,61, 5,2,2,4,5,61, 5,2,2,6,10,77, 5,1,14,4,5,62, 5,1,14,5,5,62, 5,1,4,4,5,62, 5,1,3,4,5,62, + 5,1,3,6,10,78, 5,0,13,5,5,63, 5,0,5,6,5,63, 6,12,12,2,4,83, 6,12,12,3,4,83, 6,12,12,5,6,51, 6,12,11,2,5,83, 6,12,11,3,5,83, + 6,12,10,2,6,83, 6,12,10,3,6,83, 6,12,10,6,9,67, 6,12,7,2,9,83, 6,12,7,3,9,83, 6,12,7,5,6,51, 6,12,6,2,10,83, 6,12,6,3,10,83, + 6,12,5,2,11,83, 6,12,5,3,11,83, 6,12,4,2,12,83, 6,12,4,3,12,83, 6,12,3,2,13,83, 6,12,3,3,13,83, 6,12,3,6,9,67, 6,11,13,3,3,84, + 6,11,13,5,6,52, 6,11,9,3,7,84, 6,11,8,3,8,84, 6,11,3,6,9,68, 6,10,14,3,2,85, 6,10,14,5,6,53, 6,10,3,4,6,53, 6,10,3,6,9,69, + 6,9,14,4,6,54, 6,9,14,5,6,54, 6,9,4,6,9,70, 6,8,13,5,6,55, 6,8,4,6,9,71, 6,7,13,5,6,56, 6,7,3,3,13,88, 6,7,2,3,14,88, + 6,7,2,6,9,72, 6,6,14,3,2,89, 6,6,14,5,6,57, 6,6,1,3,15,89, 6,6,1,6,9,73, 6,5,14,5,6,58, 6,5,1,6,9,74, 6,4,14,5,6,59, + 6,4,1,6,9,75, 6,3,14,5,6,60, 6,3,1,4,6,60, 6,3,1,6,9,76, 6,2,15,3,1,93, 6,2,15,4,6,61, 6,2,15,5,6,61, 6,2,2,4,6,61, + 6,2,2,6,9,77, 6,1,14,4,6,62, 6,1,14,5,6,62, 6,1,4,4,6,62, 6,1,3,4,6,62, 6,1,3,6,9,78, 6,0,13,1,3,95, 6,0,13,5,6,63, + 6,0,12,1,4,95, 6,0,11,1,5,95, 6,0,10,1,6,95, 6,0,9,1,7,95, 6,0,8,1,8,95, 6,0,7,1,9,95, 6,0,6,1,10,95, 6,0,5,1,11,95, + 6,0,5,6,6,63, 7,12,12,3,4,83, 7,12,12,5,7,51, 7,12,11,3,5,83, 7,12,10,3,6,83, 7,12,10,6,8,67, 7,12,7,3,9,83, 7,12,7,5,7,51, + 7,12,6,3,10,83, 7,12,5,3,11,83, 7,12,4,3,12,83, 7,12,3,3,13,83, 7,12,3,6,8,67, 7,11,13,3,3,84, 7,11,13,5,7,52, 7,11,9,3,7,84, + 7,11,8,3,8,84, 7,11,3,6,8,68, 7,10,14,3,2,85, 7,10,14,5,7,53, 7,10,3,4,7,53, 7,10,3,6,8,69, 7,9,14,4,7,54, 7,9,14,5,7,54, + 7,9,4,6,8,70, 7,8,13,5,7,55, 7,8,4,6,8,71, 7,7,13,5,7,56, 7,7,3,3,13,88, 7,7,2,3,14,88, 7,7,2,6,8,72, 7,6,14,3,2,89, + 7,6,14,5,7,57, 7,6,1,3,15,89, 7,6,1,6,8,73, 7,5,14,5,7,58, 7,5,1,6,8,74, 7,4,14,5,7,59, 7,4,1,6,8,75, 7,3,14,5,7,60, + 7,3,1,4,7,60, 7,3,1,6,8,76, 7,2,15,3,1,93, 7,2,15,4,7,61, 7,2,15,5,7,61, 7,2,2,4,7,61, 7,2,2,6,8,77, 7,1,14,4,7,62, + 7,1,14,5,7,62, 7,1,13,4,7,62, 7,1,12,4,7,62, 7,1,11,4,7,62, 7,1,10,4,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, + 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,4,4,7,62, 7,1,3,4,7,62, 7,1,3,6,8,78, 8,12,12,3,4,83, 8,12,12,5,8,51, 8,12,11,3,5,83, + 8,12,10,3,6,83, 8,12,10,6,7,67, 8,12,7,3,9,83, 8,12,7,5,8,51, 8,12,6,3,10,83, 8,12,5,3,11,83, 8,12,4,3,12,83, 8,12,3,3,13,83, + 8,12,3,6,7,67, 8,11,13,3,3,84, 8,11,13,5,8,52, 8,11,9,3,7,84, 8,11,8,3,8,84, 8,11,3,6,7,68, 8,10,14,3,2,85, 8,10,14,5,8,53, + 8,10,3,4,8,53, 8,10,3,6,7,69, 8,9,14,4,8,54, 8,9,14,5,8,54, 8,9,4,6,7,70, 8,8,13,5,8,55, 8,8,4,6,7,71, 8,7,13,5,8,56, + 8,7,3,3,13,88, 8,7,2,3,14,88, 8,7,2,6,7,72, 8,6,14,3,2,89, 8,6,14,5,8,57, 8,6,1,3,15,89, 8,6,1,6,7,73, 8,5,14,5,8,58, + 8,5,1,6,7,74, 8,4,14,5,8,59, 8,4,1,6,7,75, 8,3,14,5,8,60, 8,3,1,4,8,60, 8,3,1,6,7,76, 8,2,15,3,1,93, 8,2,15,4,8,61, + 8,2,15,5,8,61, 8,2,2,4,8,61, 8,2,2,6,7,77, 8,1,14,4,8,62, 8,1,14,5,8,62, 8,1,13,4,8,62, 8,1,12,4,8,62, 8,1,11,4,8,62, + 8,1,10,4,8,62, 8,1,9,4,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,4,4,8,62, 8,1,3,4,8,62, + 8,1,3,6,7,78, 9,12,12,1,4,83, 9,12,12,3,4,83, 9,12,12,5,9,51, 9,12,11,1,5,83, 9,12,11,3,5,83, 9,12,10,1,6,83, 9,12,10,3,6,83, + 9,12,10,6,6,67, 9,12,7,1,9,83, 9,12,7,3,9,83, 9,12,7,5,9,51, 9,12,6,1,10,83, 9,12,6,3,10,83, 9,12,5,1,11,83, 9,12,5,3,11,83, + 9,12,4,1,12,83, 9,12,4,3,12,83, 9,12,3,1,13,83, 9,12,3,3,13,83, 9,12,3,6,6,67, 9,11,13,3,3,84, 9,11,13,5,9,52, 9,11,9,3,7,84, + 9,11,8,3,8,84, 9,11,3,6,6,68, 9,10,14,3,2,85, 9,10,14,5,9,53, 9,10,3,4,9,53, 9,10,3,6,6,69, 9,9,14,4,9,54, 9,9,14,5,9,54, + 9,9,4,6,6,70, 9,8,13,5,9,55, 9,8,4,6,6,71, 9,7,13,5,9,56, 9,7,3,3,13,88, 9,7,2,3,14,88, 9,7,2,6,6,72, 9,6,14,3,2,89, + 9,6,14,5,9,57, 9,6,1,3,15,89, 9,6,1,6,6,73, 9,5,14,5,9,58, 9,5,1,6,6,74, 9,4,14,5,9,59, 9,4,1,6,6,75, 9,3,14,5,9,60, + 9,3,1,4,9,60, 9,3,1,6,6,76, 9,2,15,3,1,93, 9,2,15,4,9,61, 9,2,15,5,9,61, 9,2,2,4,9,61, 9,2,2,6,6,77, 9,1,14,4,9,62, + 9,1,14,5,9,62, 9,1,4,4,9,62, 9,1,3,4,9,62, 9,1,3,6,6,78, 9,0,13,2,3,95, 9,0,13,5,6,79, 9,0,12,2,4,95, 9,0,11,2,5,95, + 9,0,10,2,6,95, 9,0,9,2,7,95, 9,0,8,2,8,95, 9,0,7,2,9,95, 9,0,6,2,10,95, 9,0,5,2,11,95, 9,0,5,6,6,79, 10,11,13,3,3,84, + 10,11,13,5,10,52, 10,11,12,3,4,84, 10,11,11,3,5,84, 10,11,10,3,6,84, 10,11,9,3,7,84, 10,11,8,3,8,84, 10,11,7,3,9,84, 10,11,6,3,10,84, + 10,11,5,3,11,84, 10,11,4,3,12,84, 10,11,3,3,13,84, 10,11,3,6,5,68, 10,10,14,3,2,85, 10,10,14,5,10,53, 10,10,3,4,10,53, 10,10,3,6,5,69, + 10,9,14,4,10,54, 10,9,14,5,10,54, 10,9,4,6,5,70, 10,8,13,5,10,55, 10,8,4,6,5,71, 10,7,13,5,10,56, 10,7,3,3,13,88, 10,7,2,3,14,88, + 10,7,2,6,5,72, 10,6,14,3,2,89, 10,6,14,5,10,57, 10,6,1,3,15,89, 10,6,1,6,5,73, 10,5,14,5,10,58, 10,5,1,6,5,74, 10,4,14,5,10,59, + 10,4,1,6,5,75, 10,3,14,5,10,60, 10,3,1,4,10,60, 10,3,1,6,5,76, 10,2,15,3,1,93, 10,2,15,4,10,61, 10,2,15,5,10,61, 10,2,2,4,10,61, + 10,2,2,6,5,77, 10,1,14,4,10,62, 10,1,14,5,10,62, 10,1,4,4,10,62, 10,1,3,4,10,62, 10,1,3,6,5,78, 10,0,13,5,5,79, 10,0,5,6,5,79, + 11,11,13,3,3,84, 11,11,13,5,11,52, 11,11,12,3,4,84, 11,11,11,3,5,84, 11,11,10,3,6,84, 11,11,9,3,7,84, 11,11,8,3,8,84, 11,11,7,3,9,84, + 11,11,6,3,10,84, 11,11,5,3,11,84, 11,11,4,3,12,84, 11,11,3,3,13,84, 11,11,3,6,4,68, 11,10,14,3,2,85, 11,10,14,5,11,53, 11,10,3,4,11,53, + 11,10,3,6,4,69, 11,9,14,4,11,54, 11,9,14,5,11,54, 11,9,4,6,4,70, 11,8,13,5,11,55, 11,8,4,6,4,71, 11,7,13,5,11,56, 11,7,3,3,13,88, + 11,7,2,3,14,88, 11,7,2,6,4,72, 11,6,14,3,2,89, 11,6,14,5,11,57, 11,6,1,3,15,89, 11,6,1,6,4,73, 11,5,14,5,11,58, 11,5,1,6,4,74, + 11,4,14,5,11,59, 11,4,1,6,4,75, 11,3,14,5,11,60, 11,3,1,4,11,60, 11,3,1,6,4,76, 11,2,15,3,1,93, 11,2,15,4,11,61, 11,2,15,5,11,61, + 11,2,2,4,11,61, 11,2,2,6,4,77, 11,1,14,4,11,62, 11,1,14,5,11,62, 11,1,4,4,11,62, 11,1,3,4,11,62, 11,1,3,6,4,78, 11,0,13,1,3,95, + 11,0,13,5,4,79, 11,0,12,1,4,95, 11,0,11,1,5,95, 11,0,10,1,6,95, 11,0,9,1,7,95, 11,0,8,1,8,95, 11,0,7,1,9,95, 11,0,6,1,10,95, + 11,0,5,1,11,95, 11,0,5,6,4,79, 12,11,13,3,3,84, 12,11,13,5,12,52, 12,11,12,3,4,84, 12,11,11,3,5,84, 12,11,10,3,6,84, 12,11,9,3,7,84, + 12,11,8,3,8,84, 12,11,7,3,9,84, 12,11,6,3,10,84, 12,11,5,3,11,84, 12,11,4,3,12,84, 12,11,3,3,13,84, 12,11,3,6,3,68, 12,10,14,3,2,85, + 12,10,14,5,12,53, 12,10,3,4,12,53, 12,10,3,6,3,69, 12,9,14,4,12,54, 12,9,14,5,12,54, 12,9,4,6,3,70, 12,8,13,1,3,87, 12,8,13,5,12,55, + 12,8,12,1,4,87, 12,8,11,1,5,87, 12,8,10,1,6,87, 12,8,9,1,7,87, 12,8,8,1,8,87, 12,8,7,1,9,87, 12,8,6,1,10,87, 12,8,5,1,11,87, + 12,8,4,1,12,87, 12,8,4,6,3,71, 12,7,13,5,12,56, 12,7,3,3,13,88, 12,7,2,3,14,88, 12,7,2,6,3,72, 12,6,14,3,2,89, 12,6,14,5,12,57, + 12,6,1,3,15,89, 12,6,1,6,3,73, 12,5,14,5,12,58, 12,5,1,6,3,74, 12,4,14,5,12,59, 12,4,1,6,3,75, 12,3,14,5,12,60, 12,3,1,4,12,60, + 12,3,1,6,3,76, 12,2,15,3,1,93, 12,2,15,4,12,61, 12,2,15,5,12,61, 12,2,2,4,12,61, 12,2,2,6,3,77, 12,1,14,1,2,94, 12,1,14,4,3,78, + 12,1,14,5,3,78, 12,1,13,1,3,94, 12,1,13,4,3,78, 12,1,12,1,4,94, 12,1,12,4,3,78, 12,1,11,1,5,94, 12,1,11,4,3,78, 12,1,10,1,6,94, + 12,1,10,4,3,78, 12,1,9,1,7,94, 12,1,9,4,3,78, 12,1,8,1,8,94, 12,1,8,4,3,78, 12,1,7,1,9,94, 12,1,7,4,3,78, 12,1,6,1,10,94, + 12,1,6,4,3,78, 12,1,5,1,11,94, 12,1,5,4,3,78, 12,1,4,1,12,94, 12,1,4,4,3,78, 12,1,3,1,13,94, 12,1,3,4,3,78, 12,1,3,6,3,78, + 13,11,13,3,3,84, 13,11,13,5,13,52, 13,11,12,3,4,84, 13,11,11,3,5,84, 13,11,10,3,6,84, 13,11,9,3,7,84, 13,11,8,3,8,84, 13,11,7,3,9,84, + 13,11,6,3,10,84, 13,11,5,3,11,84, 13,11,4,3,12,84, 13,11,3,3,13,84, 13,11,3,6,2,68, 13,10,14,3,2,85, 13,10,14,5,13,53, 13,10,3,4,13,53, + 13,10,3,6,2,69, 13,9,14,1,2,86, 13,9,14,4,13,54, 13,9,14,5,13,54, 13,9,13,1,3,86, 13,9,13,4,13,54, 13,9,12,1,4,86, 13,9,12,4,13,54, + 13,9,11,1,5,86, 13,9,11,4,13,54, 13,9,10,1,6,86, 13,9,10,4,13,54, 13,9,9,1,7,86, 13,9,9,4,13,54, 13,9,8,1,8,86, 13,9,8,4,13,54, + 13,9,7,1,9,86, 13,9,7,4,13,54, 13,9,6,1,10,86, 13,9,6,4,13,54, 13,9,5,1,11,86, 13,9,5,4,13,54, 13,9,4,1,12,86, 13,9,4,4,13,54, + 13,9,4,6,2,70, 13,7,13,3,3,88, 13,7,13,5,13,56, 13,7,12,3,4,88, 13,7,11,3,5,88, 13,7,10,3,6,88, 13,7,9,3,7,88, 13,7,8,3,8,88, + 13,7,7,3,9,88, 13,7,6,3,10,88, 13,7,5,3,11,88, 13,7,4,3,12,88, 13,7,3,3,13,88, 13,7,2,3,14,88, 13,7,2,6,2,72, 13,6,14,3,2,89, + 13,6,14,5,13,57, 13,6,1,3,15,89, 13,6,1,6,2,73, 13,5,14,5,13,58, 13,5,1,6,2,74, 13,4,14,5,13,59, 13,4,1,6,2,75, 13,3,14,1,2,92, + 13,3,14,5,13,60, 13,3,13,1,3,92, 13,3,12,1,4,92, 13,3,11,1,5,92, 13,3,10,1,6,92, 13,3,9,1,7,92, 13,3,8,1,8,92, 13,3,7,1,9,92, + 13,3,6,1,10,92, 13,3,5,1,11,92, 13,3,4,1,12,92, 13,3,3,1,13,92, 13,3,2,1,14,92, 13,3,1,1,15,92, 13,3,1,4,13,60, 13,3,1,6,2,76, + 13,2,15,1,1,93, 13,2,15,3,1,93, 13,2,15,4,2,77, 13,2,15,5,2,77, 13,2,14,1,2,93, 13,2,14,4,2,77, 13,2,13,1,3,93, 13,2,13,4,2,77, + 13,2,12,1,4,93, 13,2,12,4,2,77, 13,2,11,1,5,93, 13,2,11,4,2,77, 13,2,10,1,6,93, 13,2,10,4,2,77, 13,2,9,1,7,93, 13,2,9,4,2,77, + 13,2,8,1,8,93, 13,2,8,4,2,77, 13,2,7,1,9,93, 13,2,7,4,2,77, 13,2,6,1,10,93, 13,2,6,4,2,77, 13,2,5,1,11,93, 13,2,5,4,2,77, + 13,2,4,1,12,93, 13,2,4,4,2,77, 13,2,3,1,13,93, 13,2,3,4,2,77, 13,2,2,1,14,93, 13,2,2,4,2,77, 13,2,2,6,2,77, 14,11,13,1,3,84, + 14,11,13,3,3,84, 14,11,13,5,14,52, 14,11,12,1,4,84, 14,11,12,3,4,84, 14,11,11,1,5,84, 14,11,11,3,5,84, 14,11,10,1,6,84, 14,11,10,3,6,84, + 14,11,9,1,7,84, 14,11,9,3,7,84, 14,11,8,1,8,84, 14,11,8,3,8,84, 14,11,7,1,9,84, 14,11,7,3,9,84, 14,11,6,1,10,84, 14,11,6,3,10,84, + 14,11,5,1,11,84, 14,11,5,3,11,84, 14,11,4,1,12,84, 14,11,4,3,12,84, 14,11,3,1,13,84, 14,11,3,3,13,84, 14,11,3,6,1,68, 14,10,14,1,2,85, + 14,10,14,3,2,85, 14,10,14,4,14,53, 14,10,14,5,14,53, 14,10,13,1,3,85, 14,10,13,4,14,53, 14,10,12,1,4,85, 14,10,12,4,14,53, 14,10,11,1,5,85, + 14,10,11,4,14,53, 14,10,10,1,6,85, 14,10,10,4,14,53, 14,10,9,1,7,85, 14,10,9,4,14,53, 14,10,8,1,8,85, 14,10,8,4,14,53, 14,10,7,1,9,85, + 14,10,7,4,14,53, 14,10,6,1,10,85, 14,10,6,4,14,53, 14,10,5,1,11,85, 14,10,5,4,14,53, 14,10,4,1,12,85, 14,10,4,4,14,53, 14,10,3,1,13,85, + 14,10,3,4,14,53, 14,10,3,6,1,69, 14,7,13,1,3,88, 14,7,13,3,3,88, 14,7,13,5,14,56, 14,7,12,1,4,88, 14,7,12,3,4,88, 14,7,11,1,5,88, + 14,7,11,3,5,88, 14,7,10,1,6,88, 14,7,10,3,6,88, 14,7,9,1,7,88, 14,7,9,3,7,88, 14,7,8,1,8,88, 14,7,8,3,8,88, 14,7,7,1,9,88, + 14,7,7,3,9,88, 14,7,6,1,10,88, 14,7,6,3,10,88, 14,7,5,1,11,88, 14,7,5,3,11,88, 14,7,4,1,12,88, 14,7,4,3,12,88, 14,7,3,1,13,88, + 14,7,3,3,13,88, 14,7,2,1,14,88, 14,7,2,3,14,88, 14,7,2,6,1,72, 14,6,14,3,2,89, 14,6,14,5,14,57, 14,6,1,3,15,89, 14,6,1,6,1,73, + 14,5,14,1,2,90, 14,5,14,5,14,58, 14,5,13,1,3,90, 14,5,12,1,4,90, 14,5,11,1,5,90, 14,5,10,1,6,90, 14,5,9,1,7,90, 14,5,8,1,8,90, + 14,5,7,1,9,90, 14,5,6,1,10,90, 14,5,5,1,11,90, 14,5,4,1,12,90, 14,5,3,1,13,90, 14,5,2,1,14,90, 14,5,1,1,15,90, 14,5,1,6,1,74, + 14,4,14,1,2,91, 14,4,14,4,14,59, 14,4,14,5,14,59, 14,4,13,1,3,91, 14,4,13,4,14,59, 14,4,12,1,4,91, 14,4,12,4,14,59, 14,4,11,1,5,91, + 14,4,11,4,14,59, 14,4,10,1,6,91, 14,4,10,4,14,59, 14,4,9,1,7,91, 14,4,9,4,14,59, 14,4,8,1,8,91, 14,4,8,4,14,59, 14,4,7,1,9,91, + 14,4,7,4,14,59, 14,4,6,1,10,91, 14,4,6,4,14,59, 14,4,5,1,11,91, 14,4,5,4,14,59, 14,4,4,1,12,91, 14,4,4,4,14,59, 14,4,3,1,13,91, + 14,4,3,4,14,59, 14,4,2,1,14,91, 14,4,2,4,14,59, 14,4,1,1,15,91, 14,4,1,4,14,59, 14,4,1,6,1,75, 15,6,14,1,2,89, 15,6,14,3,2,89, + 15,6,14,4,15,57, 15,6,14,5,15,57, 15,6,13,1,3,89, 15,6,13,3,3,89, 15,6,13,4,15,57, 15,6,12,1,4,89, 15,6,12,3,4,89, 15,6,12,4,15,57, + 15,6,11,1,5,89, 15,6,11,3,5,89, 15,6,11,4,15,57, 15,6,10,1,6,89, 15,6,10,3,6,89, 15,6,10,4,15,57, 15,6,9,1,7,89, 15,6,9,3,7,89, + 15,6,9,4,15,57, 15,6,8,1,8,89, 15,6,8,3,8,89, 15,6,8,4,15,57, 15,6,7,1,9,89, 15,6,7,3,9,89, 15,6,7,4,15,57, 15,6,6,1,10,89, + 15,6,6,3,10,89, 15,6,6,4,15,57, 15,6,5,1,11,89, 15,6,5,3,11,89, 15,6,5,4,15,57, 15,6,4,1,12,89, 15,6,4,3,12,89, 15,6,4,4,15,57, + 15,6,3,1,13,89, 15,6,3,3,13,89, 15,6,3,4,15,57, 15,6,2,1,14,89, 15,6,2,3,14,89, 15,6,2,4,15,57, 15,6,1,1,15,89, 15,6,1,3,15,89, + 15,6,1,4,15,57, 15,6,1,6,0,73, + }, + }, + }, +} diff --git a/assets/voxels/fisher.lua b/assets/voxels/fisher.lua new file mode 100644 index 0000000..06a68a1 --- /dev/null +++ b/assets/voxels/fisher.lua @@ -0,0 +1,320 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "fisher" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "fisher", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1894, + count = 1120, + faces = { + 0,5,14,2,2,42, 0,5,14,3,2,42, 0,5,14,5,0,10, 0,5,13,2,3,42, 0,5,13,3,3,42, 0,5,12,2,4,42, 0,5,12,3,4,42, 0,5,11,2,5,42, + 0,5,11,3,5,42, 0,5,10,2,6,42, 0,5,10,3,6,42, 0,5,9,2,7,42, 0,5,9,3,7,42, 0,5,8,2,8,42, 0,5,8,3,8,42, 0,5,7,2,9,42, + 0,5,7,3,9,42, 0,5,6,2,10,42, 0,5,6,3,10,42, 0,5,5,2,11,42, 0,5,5,3,11,42, 0,5,5,6,15,26, 0,4,14,2,2,43, 0,4,14,4,0,11, + 0,4,14,5,0,11, 0,4,13,2,3,43, 0,4,13,4,0,11, 0,4,12,2,4,43, 0,4,12,4,0,11, 0,4,11,2,5,43, 0,4,11,4,0,11, 0,4,10,2,6,43, + 0,4,10,4,0,11, 0,4,9,2,7,43, 0,4,9,4,0,11, 0,4,8,2,8,43, 0,4,8,4,0,11, 0,4,7,2,9,43, 0,4,7,4,0,11, 0,4,6,2,10,43, + 0,4,6,4,0,11, 0,4,5,2,11,43, 0,4,5,4,0,11, 0,4,5,6,15,27, 1,10,13,2,3,37, 1,10,13,3,3,37, 1,10,13,5,1,5, 1,10,12,2,4,37, + 1,10,12,3,4,37, 1,10,11,2,5,37, 1,10,11,3,5,37, 1,10,10,2,6,37, 1,10,10,3,6,37, 1,10,9,2,7,37, 1,10,9,3,7,37, 1,10,8,2,8,37, + 1,10,8,3,8,37, 1,10,7,2,9,37, 1,10,7,3,9,37, 1,10,6,2,10,37, 1,10,6,3,10,37, 1,10,5,2,11,37, 1,10,5,3,11,37, 1,10,4,2,12,37, + 1,10,4,3,12,37, 1,10,3,2,13,37, 1,10,3,3,13,37, 1,10,2,2,14,37, 1,10,2,3,14,37, 1,10,2,6,14,21, 1,9,13,2,3,38, 1,9,13,5,1,6, + 1,9,12,2,4,38, 1,9,11,2,5,38, 1,9,10,2,6,38, 1,9,9,2,7,38, 1,9,8,2,8,38, 1,9,7,2,9,38, 1,9,6,2,10,38, 1,9,5,2,11,38, + 1,9,4,2,12,38, 1,9,3,2,13,38, 1,9,2,2,14,38, 1,9,2,6,14,22, 1,8,13,2,3,39, 1,8,13,4,1,7, 1,8,13,5,1,7, 1,8,12,2,4,39, + 1,8,12,4,1,7, 1,8,11,2,5,39, 1,8,11,4,1,7, 1,8,10,2,6,39, 1,8,10,4,1,7, 1,8,9,2,7,39, 1,8,9,4,1,7, 1,8,8,2,8,39, + 1,8,8,4,1,7, 1,8,7,2,9,39, 1,8,7,4,1,7, 1,8,6,2,10,39, 1,8,6,4,1,7, 1,8,5,2,11,39, 1,8,5,4,1,7, 1,8,4,2,12,39, + 1,8,4,4,1,7, 1,8,3,2,13,39, 1,8,3,4,1,7, 1,8,2,2,14,39, 1,8,2,4,1,7, 1,8,2,6,14,23, 1,6,13,2,3,41, 1,6,13,3,3,41, + 1,6,13,5,1,9, 1,6,12,2,4,41, 1,6,12,3,4,41, 1,6,11,2,5,41, 1,6,11,3,5,41, 1,6,10,2,6,41, 1,6,10,3,6,41, 1,6,9,2,7,41, + 1,6,9,3,7,41, 1,6,8,2,8,41, 1,6,8,3,8,41, 1,6,7,2,9,41, 1,6,7,3,9,41, 1,6,6,2,10,41, 1,6,6,3,10,41, 1,6,5,2,11,41, + 1,6,5,3,11,41, 1,6,4,2,12,41, 1,6,4,3,12,41, 1,6,4,4,1,9, 1,6,4,6,14,25, 1,5,14,3,2,42, 1,5,14,5,1,10, 1,5,5,6,14,26, + 1,4,14,5,1,11, 1,4,5,6,14,27, 1,3,14,2,2,44, 1,3,14,4,1,12, 1,3,14,5,1,12, 1,3,13,2,3,44, 1,3,13,4,1,12, 1,3,12,2,4,44, + 1,3,12,4,1,12, 1,3,11,2,5,44, 1,3,11,4,1,12, 1,3,10,2,6,44, 1,3,10,4,1,12, 1,3,9,2,7,44, 1,3,9,4,1,12, 1,3,8,2,8,44, + 1,3,8,4,1,12, 1,3,7,2,9,44, 1,3,7,4,1,12, 1,3,6,2,10,44, 1,3,6,4,1,12, 1,3,5,2,11,44, 1,3,5,4,1,12, 1,3,5,6,14,28, + 2,11,13,2,3,36, 2,11,13,3,3,36, 2,11,13,5,2,4, 2,11,12,2,4,36, 2,11,12,3,4,36, 2,11,11,2,5,36, 2,11,11,3,5,36, 2,11,10,2,6,36, + 2,11,10,3,6,36, 2,11,9,2,7,36, 2,11,9,3,7,36, 2,11,8,2,8,36, 2,11,8,3,8,36, 2,11,7,2,9,36, 2,11,7,3,9,36, 2,11,6,2,10,36, + 2,11,6,3,10,36, 2,11,5,2,11,36, 2,11,5,3,11,36, 2,11,4,2,12,36, 2,11,4,3,12,36, 2,11,3,2,13,36, 2,11,3,3,13,36, 2,11,2,2,14,36, + 2,11,2,3,14,36, 2,11,2,6,13,20, 2,10,13,5,2,5, 2,10,2,6,13,21, 2,9,13,5,2,6, 2,9,2,6,13,22, 2,8,13,4,2,7, 2,8,13,5,2,7, + 2,8,2,4,2,7, 2,8,2,6,13,23, 2,7,12,2,4,40, 2,7,12,5,2,8, 2,7,11,2,5,40, 2,7,10,2,6,40, 2,7,9,2,7,40, 2,7,8,2,8,40, + 2,7,7,2,9,40, 2,7,6,2,10,40, 2,7,5,2,11,40, 2,7,4,2,12,40, 2,7,3,2,13,40, 2,7,3,4,2,8, 2,7,3,6,13,24, 2,6,13,3,3,41, + 2,6,13,5,2,9, 2,6,4,4,2,9, 2,6,4,6,13,25, 2,5,14,3,2,42, 2,5,14,5,2,10, 2,5,5,6,13,26, 2,4,14,5,2,11, 2,4,5,6,13,27, + 2,3,14,4,2,12, 2,3,14,5,2,12, 2,3,5,4,2,12, 2,3,5,6,13,28, 2,2,13,2,3,45, 2,2,13,5,2,13, 2,2,12,2,4,45, 2,2,11,2,5,45, + 2,2,10,2,6,45, 2,2,9,2,7,45, 2,2,8,2,8,45, 2,2,7,2,9,45, 2,2,6,2,10,45, 2,2,6,4,2,13, 2,2,6,6,13,29, 2,1,13,2,3,46, + 2,1,13,4,2,14, 2,1,13,5,2,14, 2,1,12,2,4,46, 2,1,12,4,2,14, 2,1,11,2,5,46, 2,1,11,4,2,14, 2,1,10,2,6,46, 2,1,10,4,2,14, + 2,1,9,2,7,46, 2,1,9,4,2,14, 2,1,8,2,8,46, 2,1,8,4,2,14, 2,1,7,2,9,46, 2,1,7,4,2,14, 2,1,7,6,13,30, 3,13,12,2,4,34, + 3,13,12,3,4,34, 3,13,12,5,3,2, 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, + 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, + 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,3,2,13,34, 3,13,3,3,13,34, 3,13,3,6,12,18, 3,12,12,2,4,35, 3,12,12,5,3,3, 3,12,11,2,5,35, + 3,12,10,2,6,35, 3,12,9,2,7,35, 3,12,8,2,8,35, 3,12,7,2,9,35, 3,12,6,2,10,35, 3,12,5,2,11,35, 3,12,4,2,12,35, 3,12,3,2,13,35, + 3,12,2,2,14,35, 3,12,2,3,14,35, 3,12,2,6,12,19, 3,11,13,3,3,36, 3,11,13,5,3,4, 3,11,2,6,12,20, 3,10,13,5,3,5, 3,10,2,6,12,21, + 3,9,13,5,3,6, 3,9,2,6,12,22, 3,8,13,4,3,7, 3,8,13,5,3,7, 3,8,2,4,3,7, 3,8,2,6,12,23, 3,7,12,5,3,8, 3,7,3,4,3,8, + 3,7,3,6,12,24, 3,6,13,3,3,41, 3,6,13,5,3,9, 3,6,4,4,3,9, 3,6,4,6,12,25, 3,5,14,3,2,42, 3,5,14,5,3,10, 3,5,5,6,12,26, + 3,4,14,5,3,11, 3,4,5,6,12,27, 3,3,14,4,3,12, 3,3,14,5,3,12, 3,3,5,4,3,12, 3,3,5,6,12,28, 3,2,13,5,3,13, 3,2,6,4,3,13, + 3,2,6,6,12,29, 3,1,13,4,3,14, 3,1,13,5,3,14, 3,1,7,6,12,30, 3,0,12,2,4,47, 3,0,12,5,3,15, 3,0,11,2,5,47, 3,0,10,2,6,47, + 3,0,9,2,7,47, 3,0,8,2,8,47, 3,0,7,2,9,47, 3,0,7,6,12,31, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,11,5,4,1, 4,14,10,2,6,33, + 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, + 4,14,6,3,10,33, 4,14,5,2,11,33, 4,14,5,3,11,33, 4,14,4,2,12,33, 4,14,4,3,12,33, 4,14,4,6,11,17, 4,13,12,3,4,34, 4,13,12,5,4,2, + 4,13,3,3,13,34, 4,13,3,6,11,18, 4,12,12,5,4,3, 4,12,2,3,14,35, 4,12,2,6,11,19, 4,11,13,3,3,36, 4,11,13,5,4,4, 4,11,2,6,11,20, + 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,13,5,4,6, 4,9,2,6,11,22, 4,8,13,4,4,7, 4,8,13,5,4,7, 4,8,2,4,4,7, 4,8,2,6,11,23, + 4,7,12,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,13,3,3,41, 4,6,13,5,4,9, 4,6,4,4,4,9, 4,6,4,6,11,25, 4,5,14,3,2,42, + 4,5,14,5,4,10, 4,5,5,6,11,26, 4,4,14,5,4,11, 4,4,5,6,11,27, 4,3,14,4,4,12, 4,3,14,5,4,12, 4,3,5,4,4,12, 4,3,5,6,11,28, + 4,2,13,5,4,13, 4,2,6,4,4,13, 4,2,6,6,11,29, 4,1,13,4,4,14, 4,1,13,5,4,14, 4,1,7,6,11,30, 4,0,12,5,4,15, 4,0,7,6,11,31, + 5,14,11,3,5,33, 5,14,11,5,5,1, 5,14,10,3,6,33, 5,14,9,3,7,33, 5,14,8,3,8,33, 5,14,7,3,9,33, 5,14,6,3,10,33, 5,14,5,3,11,33, + 5,14,4,3,12,33, 5,14,4,6,10,17, 5,13,12,3,4,34, 5,13,12,5,5,2, 5,13,3,3,13,34, 5,13,3,6,10,18, 5,12,12,5,5,3, 5,12,2,3,14,35, + 5,12,2,6,10,19, 5,11,13,3,3,36, 5,11,13,5,5,4, 5,11,2,6,10,20, 5,10,13,5,5,5, 5,10,2,6,10,21, 5,9,13,5,5,6, 5,9,2,6,10,22, + 5,8,13,4,5,7, 5,8,13,5,5,7, 5,8,2,4,5,7, 5,8,2,6,10,23, 5,7,12,5,5,8, 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,13,3,3,41, + 5,6,13,5,5,9, 5,6,4,4,5,9, 5,6,4,6,10,25, 5,5,14,3,2,42, 5,5,14,5,5,10, 5,5,5,6,10,26, 5,4,14,5,5,11, 5,4,5,6,10,27, + 5,3,14,4,5,12, 5,3,14,5,5,12, 5,3,5,4,5,12, 5,3,5,6,10,28, 5,2,13,5,5,13, 5,2,6,4,5,13, 5,2,6,6,10,29, 5,1,13,4,5,14, + 5,1,13,5,5,14, 5,1,7,6,10,30, 5,0,12,5,5,15, 5,0,7,6,10,31, 6,15,10,2,6,32, 6,15,10,3,6,32, 6,15,10,5,6,0, 6,15,9,2,7,32, + 6,15,9,3,7,32, 6,15,8,2,8,32, 6,15,8,3,8,32, 6,15,7,2,9,32, 6,15,7,3,9,32, 6,15,6,2,10,32, 6,15,6,3,10,32, 6,15,5,2,11,32, + 6,15,5,3,11,32, 6,15,5,6,9,16, 6,14,11,3,5,33, 6,14,11,5,6,1, 6,14,4,3,12,33, 6,14,4,6,9,17, 6,13,12,3,4,34, 6,13,12,5,6,2, + 6,13,3,3,13,34, 6,13,3,6,9,18, 6,12,12,5,6,3, 6,12,2,3,14,35, 6,12,2,6,9,19, 6,11,13,3,3,36, 6,11,13,5,6,4, 6,11,2,6,9,20, + 6,10,13,5,6,5, 6,10,2,6,9,21, 6,9,13,5,6,6, 6,9,2,6,9,22, 6,8,13,4,6,7, 6,8,13,5,6,7, 6,8,2,4,6,7, 6,8,2,6,9,23, + 6,7,12,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,13,3,3,41, 6,6,13,5,6,9, 6,6,4,4,6,9, 6,6,4,6,9,25, 6,5,14,3,2,42, + 6,5,14,5,6,10, 6,5,5,6,9,26, 6,4,14,5,6,11, 6,4,5,6,9,27, 6,3,14,4,6,12, 6,3,14,5,6,12, 6,3,5,4,6,12, 6,3,5,6,9,28, + 6,2,13,5,6,13, 6,2,6,4,6,13, 6,2,6,6,9,29, 6,1,13,4,6,14, 6,1,13,5,6,14, 6,1,7,6,9,30, 6,0,12,1,4,47, 6,0,12,5,6,15, + 6,0,11,1,5,47, 6,0,10,1,6,47, 6,0,9,1,7,47, 6,0,8,1,8,47, 6,0,7,1,9,47, 6,0,7,6,9,31, 7,15,10,3,6,32, 7,15,10,5,7,0, + 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, 7,15,6,3,10,32, 7,15,5,3,11,32, 7,15,5,6,8,16, 7,14,11,3,5,33, 7,14,11,5,7,1, + 7,14,4,3,12,33, 7,14,4,6,8,17, 7,13,12,3,4,34, 7,13,12,5,7,2, 7,13,3,3,13,34, 7,13,3,6,8,18, 7,12,12,5,7,3, 7,12,2,3,14,35, + 7,12,2,6,8,19, 7,11,13,3,3,36, 7,11,13,5,7,4, 7,11,2,6,8,20, 7,10,13,5,7,5, 7,10,2,6,8,21, 7,9,13,5,7,6, 7,9,2,6,8,22, + 7,8,13,4,7,7, 7,8,13,5,7,7, 7,8,2,4,7,7, 7,8,2,6,8,23, 7,7,12,5,7,8, 7,7,3,4,7,8, 7,7,3,6,8,24, 7,6,13,3,3,41, + 7,6,13,5,7,9, 7,6,4,4,7,9, 7,6,4,6,8,25, 7,5,14,3,2,42, 7,5,14,5,7,10, 7,5,5,6,8,26, 7,4,14,5,7,11, 7,4,5,6,8,27, + 7,3,14,4,7,12, 7,3,14,5,7,12, 7,3,5,4,7,12, 7,3,5,6,8,28, 7,2,13,5,7,13, 7,2,6,4,7,13, 7,2,6,6,8,29, 7,1,13,4,7,14, + 7,1,13,5,7,14, 7,1,12,4,7,14, 7,1,11,4,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,7,6,8,30, + 8,15,10,3,6,32, 8,15,10,5,8,0, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,5,3,11,32, 8,15,5,6,7,16, + 8,14,11,3,5,33, 8,14,11,5,8,1, 8,14,4,3,12,33, 8,14,4,6,7,17, 8,13,12,3,4,34, 8,13,12,5,8,2, 8,13,3,3,13,34, 8,13,3,6,7,18, + 8,12,12,5,8,3, 8,12,2,3,14,35, 8,12,2,6,7,19, 8,11,13,3,3,36, 8,11,13,5,8,4, 8,11,2,6,7,20, 8,10,13,5,8,5, 8,10,2,6,7,21, + 8,9,13,5,8,6, 8,9,2,6,7,22, 8,8,13,4,8,7, 8,8,13,5,8,7, 8,8,2,4,8,7, 8,8,2,6,7,23, 8,7,12,5,8,8, 8,7,3,4,8,8, + 8,7,3,6,7,24, 8,6,13,3,3,41, 8,6,13,5,8,9, 8,6,4,4,8,9, 8,6,4,6,7,25, 8,5,14,3,2,42, 8,5,14,5,8,10, 8,5,5,6,7,26, + 8,4,14,5,8,11, 8,4,5,6,7,27, 8,3,14,4,8,12, 8,3,14,5,8,12, 8,3,5,4,8,12, 8,3,5,6,7,28, 8,2,13,5,8,13, 8,2,6,4,8,13, + 8,2,6,6,7,29, 8,1,13,4,8,14, 8,1,13,5,8,14, 8,1,12,4,8,14, 8,1,11,4,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, + 8,1,7,4,8,14, 8,1,7,6,7,30, 9,15,10,1,6,32, 9,15,10,3,6,32, 9,15,10,5,9,0, 9,15,9,1,7,32, 9,15,9,3,7,32, 9,15,8,1,8,32, + 9,15,8,3,8,32, 9,15,7,1,9,32, 9,15,7,3,9,32, 9,15,6,1,10,32, 9,15,6,3,10,32, 9,15,5,1,11,32, 9,15,5,3,11,32, 9,15,5,6,6,16, + 9,14,11,3,5,33, 9,14,11,5,9,1, 9,14,4,3,12,33, 9,14,4,6,6,17, 9,13,12,3,4,34, 9,13,12,5,9,2, 9,13,3,3,13,34, 9,13,3,6,6,18, + 9,12,12,5,9,3, 9,12,2,3,14,35, 9,12,2,6,6,19, 9,11,13,3,3,36, 9,11,13,5,9,4, 9,11,2,6,6,20, 9,10,13,5,9,5, 9,10,2,6,6,21, + 9,9,13,5,9,6, 9,9,2,6,6,22, 9,8,13,4,9,7, 9,8,13,5,9,7, 9,8,2,4,9,7, 9,8,2,6,6,23, 9,7,12,5,9,8, 9,7,3,4,9,8, + 9,7,3,6,6,24, 9,6,13,3,3,41, 9,6,13,5,9,9, 9,6,4,4,9,9, 9,6,4,6,6,25, 9,5,14,3,2,42, 9,5,14,5,9,10, 9,5,5,6,6,26, + 9,4,14,5,9,11, 9,4,5,6,6,27, 9,3,14,4,9,12, 9,3,14,5,9,12, 9,3,5,4,9,12, 9,3,5,6,6,28, 9,2,13,5,9,13, 9,2,6,4,9,13, + 9,2,6,6,6,29, 9,1,13,4,9,14, 9,1,13,5,9,14, 9,1,7,6,6,30, 9,0,12,2,4,47, 9,0,12,5,9,15, 9,0,11,2,5,47, 9,0,10,2,6,47, + 9,0,9,2,7,47, 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,7,6,6,31, 10,14,11,3,5,33, 10,14,11,5,10,1, 10,14,10,3,6,33, 10,14,9,3,7,33, + 10,14,8,3,8,33, 10,14,7,3,9,33, 10,14,6,3,10,33, 10,14,5,3,11,33, 10,14,4,3,12,33, 10,14,4,6,5,17, 10,13,12,3,4,34, 10,13,12,5,10,2, + 10,13,3,3,13,34, 10,13,3,6,5,18, 10,12,12,5,10,3, 10,12,2,3,14,35, 10,12,2,6,5,19, 10,11,13,3,3,36, 10,11,13,5,10,4, 10,11,2,6,5,20, + 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,13,5,10,6, 10,9,2,6,5,22, 10,8,13,4,10,7, 10,8,13,5,10,7, 10,8,2,4,10,7, 10,8,2,6,5,23, + 10,7,12,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,13,3,3,41, 10,6,13,5,10,9, 10,6,4,4,10,9, 10,6,4,6,5,25, 10,5,14,3,2,42, + 10,5,14,5,10,10, 10,5,5,6,5,26, 10,4,14,5,10,11, 10,4,5,6,5,27, 10,3,14,4,10,12, 10,3,14,5,10,12, 10,3,5,4,10,12, 10,3,5,6,5,28, + 10,2,13,5,10,13, 10,2,6,4,10,13, 10,2,6,6,5,29, 10,1,13,4,10,14, 10,1,13,5,10,14, 10,1,7,6,5,30, 10,0,12,5,10,15, 10,0,7,6,5,31, + 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,11,5,11,1, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, + 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,4,1,12,33, + 11,14,4,3,12,33, 11,14,4,6,4,17, 11,13,12,3,4,34, 11,13,12,5,11,2, 11,13,3,3,13,34, 11,13,3,6,4,18, 11,12,12,5,11,3, 11,12,2,3,14,35, + 11,12,2,6,4,19, 11,11,13,3,3,36, 11,11,13,5,11,4, 11,11,2,6,4,20, 11,10,13,5,11,5, 11,10,2,6,4,21, 11,9,13,5,11,6, 11,9,2,6,4,22, + 11,8,13,4,11,7, 11,8,13,5,11,7, 11,8,2,4,11,7, 11,8,2,6,4,23, 11,7,12,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,13,3,3,41, + 11,6,13,5,11,9, 11,6,4,4,11,9, 11,6,4,6,4,25, 11,5,14,3,2,42, 11,5,14,5,11,10, 11,5,5,6,4,26, 11,4,14,5,11,11, 11,4,5,6,4,27, + 11,3,14,4,11,12, 11,3,14,5,11,12, 11,3,5,4,11,12, 11,3,5,6,4,28, 11,2,13,5,11,13, 11,2,6,4,11,13, 11,2,6,6,4,29, 11,1,13,4,11,14, + 11,1,13,5,11,14, 11,1,7,6,4,30, 11,0,12,5,11,15, 11,0,7,6,4,31, 12,13,12,1,4,34, 12,13,12,3,4,34, 12,13,12,5,12,2, 12,13,11,1,5,34, + 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, 12,13,7,1,9,34, + 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,4,1,12,34, 12,13,4,3,12,34, 12,13,3,1,13,34, + 12,13,3,3,13,34, 12,13,3,6,3,18, 12,12,12,1,4,35, 12,12,12,5,12,3, 12,12,11,1,5,35, 12,12,10,1,6,35, 12,12,9,1,7,35, 12,12,8,1,8,35, + 12,12,7,1,9,35, 12,12,6,1,10,35, 12,12,5,1,11,35, 12,12,4,1,12,35, 12,12,3,1,13,35, 12,12,2,1,14,35, 12,12,2,3,14,35, 12,12,2,6,3,19, + 12,11,13,3,3,36, 12,11,13,5,12,4, 12,11,2,6,3,20, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,13,5,12,6, 12,9,2,6,3,22, 12,8,13,4,12,7, + 12,8,13,5,12,7, 12,8,2,4,12,7, 12,8,2,6,3,23, 12,7,12,5,12,8, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,6,13,3,3,41, 12,6,13,5,12,9, + 12,6,4,4,12,9, 12,6,4,6,3,25, 12,5,14,3,2,42, 12,5,14,5,12,10, 12,5,5,6,3,26, 12,4,14,5,12,11, 12,4,5,6,3,27, 12,3,14,4,12,12, + 12,3,14,5,12,12, 12,3,5,4,12,12, 12,3,5,6,3,28, 12,2,13,5,12,13, 12,2,6,4,12,13, 12,2,6,6,3,29, 12,1,13,4,12,14, 12,1,13,5,12,14, + 12,1,7,6,3,30, 12,0,12,1,4,47, 12,0,12,5,12,15, 12,0,11,1,5,47, 12,0,10,1,6,47, 12,0,9,1,7,47, 12,0,8,1,8,47, 12,0,7,1,9,47, + 12,0,7,6,3,31, 13,11,13,1,3,36, 13,11,13,3,3,36, 13,11,13,5,13,4, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, 13,11,11,3,5,36, + 13,11,10,1,6,36, 13,11,10,3,6,36, 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, 13,11,7,3,9,36, + 13,11,6,1,10,36, 13,11,6,3,10,36, 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, 13,11,3,3,13,36, + 13,11,2,1,14,36, 13,11,2,3,14,36, 13,11,2,6,2,20, 13,10,13,5,13,5, 13,10,2,6,2,21, 13,9,13,5,13,6, 13,9,2,6,2,22, 13,8,13,4,13,7, + 13,8,13,5,13,7, 13,8,2,4,13,7, 13,8,2,6,2,23, 13,7,12,1,4,40, 13,7,12,5,13,8, 13,7,11,1,5,40, 13,7,10,1,6,40, 13,7,9,1,7,40, + 13,7,8,1,8,40, 13,7,7,1,9,40, 13,7,6,1,10,40, 13,7,5,1,11,40, 13,7,4,1,12,40, 13,7,3,1,13,40, 13,7,3,4,13,8, 13,7,3,6,2,24, + 13,6,13,3,3,41, 13,6,13,5,13,9, 13,6,4,4,13,9, 13,6,4,6,2,25, 13,5,14,3,2,42, 13,5,14,5,13,10, 13,5,5,6,2,26, 13,4,14,5,13,11, + 13,4,5,6,2,27, 13,3,14,4,13,12, 13,3,14,5,13,12, 13,3,5,4,13,12, 13,3,5,6,2,28, 13,2,13,1,3,45, 13,2,13,5,13,13, 13,2,12,1,4,45, + 13,2,11,1,5,45, 13,2,10,1,6,45, 13,2,9,1,7,45, 13,2,8,1,8,45, 13,2,7,1,9,45, 13,2,6,1,10,45, 13,2,6,4,13,13, 13,2,6,6,2,29, + 13,1,13,1,3,46, 13,1,13,4,13,14, 13,1,13,5,13,14, 13,1,12,1,4,46, 13,1,12,4,13,14, 13,1,11,1,5,46, 13,1,11,4,13,14, 13,1,10,1,6,46, + 13,1,10,4,13,14, 13,1,9,1,7,46, 13,1,9,4,13,14, 13,1,8,1,8,46, 13,1,8,4,13,14, 13,1,7,1,9,46, 13,1,7,4,13,14, 13,1,7,6,2,30, + 14,10,13,1,3,37, 14,10,13,3,3,37, 14,10,13,5,14,5, 14,10,12,1,4,37, 14,10,12,3,4,37, 14,10,11,1,5,37, 14,10,11,3,5,37, 14,10,10,1,6,37, + 14,10,10,3,6,37, 14,10,9,1,7,37, 14,10,9,3,7,37, 14,10,8,1,8,37, 14,10,8,3,8,37, 14,10,7,1,9,37, 14,10,7,3,9,37, 14,10,6,1,10,37, + 14,10,6,3,10,37, 14,10,5,1,11,37, 14,10,5,3,11,37, 14,10,4,1,12,37, 14,10,4,3,12,37, 14,10,3,1,13,37, 14,10,3,3,13,37, 14,10,2,1,14,37, + 14,10,2,3,14,37, 14,10,2,6,1,21, 14,9,13,1,3,38, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,11,1,5,38, 14,9,10,1,6,38, 14,9,9,1,7,38, + 14,9,8,1,8,38, 14,9,7,1,9,38, 14,9,6,1,10,38, 14,9,5,1,11,38, 14,9,4,1,12,38, 14,9,3,1,13,38, 14,9,2,1,14,38, 14,9,2,6,1,22, + 14,8,13,1,3,39, 14,8,13,4,14,7, 14,8,13,5,14,7, 14,8,12,1,4,39, 14,8,12,4,14,7, 14,8,11,1,5,39, 14,8,11,4,14,7, 14,8,10,1,6,39, + 14,8,10,4,14,7, 14,8,9,1,7,39, 14,8,9,4,14,7, 14,8,8,1,8,39, 14,8,8,4,14,7, 14,8,7,1,9,39, 14,8,7,4,14,7, 14,8,6,1,10,39, + 14,8,6,4,14,7, 14,8,5,1,11,39, 14,8,5,4,14,7, 14,8,4,1,12,39, 14,8,4,4,14,7, 14,8,3,1,13,39, 14,8,3,4,14,7, 14,8,2,1,14,39, + 14,8,2,4,14,7, 14,8,2,6,1,23, 14,6,13,1,3,41, 14,6,13,3,3,41, 14,6,13,5,14,9, 14,6,12,1,4,41, 14,6,12,3,4,41, 14,6,11,1,5,41, + 14,6,11,3,5,41, 14,6,10,1,6,41, 14,6,10,3,6,41, 14,6,9,1,7,41, 14,6,9,3,7,41, 14,6,8,1,8,41, 14,6,8,3,8,41, 14,6,7,1,9,41, + 14,6,7,3,9,41, 14,6,6,1,10,41, 14,6,6,3,10,41, 14,6,5,1,11,41, 14,6,5,3,11,41, 14,6,4,1,12,41, 14,6,4,3,12,41, 14,6,4,4,14,9, + 14,6,4,6,1,25, 14,5,14,3,2,42, 14,5,14,5,14,10, 14,5,5,6,1,26, 14,4,14,5,14,11, 14,4,5,6,1,27, 14,3,14,1,2,44, 14,3,14,4,14,12, + 14,3,14,5,14,12, 14,3,13,1,3,44, 14,3,13,4,14,12, 14,3,12,1,4,44, 14,3,12,4,14,12, 14,3,11,1,5,44, 14,3,11,4,14,12, 14,3,10,1,6,44, + 14,3,10,4,14,12, 14,3,9,1,7,44, 14,3,9,4,14,12, 14,3,8,1,8,44, 14,3,8,4,14,12, 14,3,7,1,9,44, 14,3,7,4,14,12, 14,3,6,1,10,44, + 14,3,6,4,14,12, 14,3,5,1,11,44, 14,3,5,4,14,12, 14,3,5,6,1,28, 15,5,14,1,2,42, 15,5,14,3,2,42, 15,5,14,5,15,10, 15,5,13,1,3,42, + 15,5,13,3,3,42, 15,5,12,1,4,42, 15,5,12,3,4,42, 15,5,11,1,5,42, 15,5,11,3,5,42, 15,5,10,1,6,42, 15,5,10,3,6,42, 15,5,9,1,7,42, + 15,5,9,3,7,42, 15,5,8,1,8,42, 15,5,8,3,8,42, 15,5,7,1,9,42, 15,5,7,3,9,42, 15,5,6,1,10,42, 15,5,6,3,10,42, 15,5,5,1,11,42, + 15,5,5,3,11,42, 15,5,5,6,0,26, 15,4,14,1,2,43, 15,4,14,4,15,11, 15,4,14,5,15,11, 15,4,13,1,3,43, 15,4,13,4,15,11, 15,4,12,1,4,43, + 15,4,12,4,15,11, 15,4,11,1,5,43, 15,4,11,4,15,11, 15,4,10,1,6,43, 15,4,10,4,15,11, 15,4,9,1,7,43, 15,4,9,4,15,11, 15,4,8,1,8,43, + 15,4,8,4,15,11, 15,4,7,1,9,43, 15,4,7,4,15,11, 15,4,6,1,10,43, 15,4,6,4,15,11, 15,4,5,1,11,43, 15,4,5,4,15,11, 15,4,5,6,0,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 2046, + count = 1178, + faces = { + 0,5,12,2,3,90, 0,5,12,3,3,90, 0,5,12,5,0,58, 0,5,11,2,4,90, 0,5,11,3,4,90, 0,5,10,2,5,90, 0,5,10,3,5,90, 0,5,9,2,6,90, + 0,5,9,3,6,90, 0,5,8,2,7,90, 0,5,8,3,7,90, 0,5,7,2,8,90, 0,5,7,3,8,90, 0,5,6,2,9,90, 0,5,6,3,9,90, 0,5,5,2,10,90, + 0,5,5,3,10,90, 0,5,4,2,11,90, 0,5,4,3,11,90, 0,5,3,2,12,90, 0,5,3,3,12,90, 0,5,3,6,0,58, 0,4,13,2,2,91, 0,4,13,3,2,91, + 0,4,13,5,0,59, 0,4,12,2,3,91, 0,4,11,2,4,91, 0,4,10,2,5,91, 0,4,9,2,6,91, 0,4,8,2,7,91, 0,4,7,2,8,91, 0,4,6,2,9,91, + 0,4,5,2,10,91, 0,4,4,2,11,91, 0,4,3,2,12,91, 0,4,3,6,15,75, 0,3,15,2,0,92, 0,3,15,3,0,92, 0,3,15,4,0,60, 0,3,15,5,0,60, + 0,3,14,2,1,92, 0,3,14,3,1,92, 0,3,14,4,0,60, 0,3,13,2,2,92, 0,3,13,4,0,60, 0,3,12,2,3,92, 0,3,12,4,0,60, 0,3,11,2,4,92, + 0,3,11,4,0,60, 0,3,10,2,5,92, 0,3,10,4,0,60, 0,3,9,2,6,92, 0,3,9,4,0,60, 0,3,8,2,7,92, 0,3,8,4,0,60, 0,3,7,2,8,92, + 0,3,7,4,0,60, 0,3,6,2,9,92, 0,3,6,4,0,60, 0,3,5,2,10,92, 0,3,5,4,0,60, 0,3,4,2,11,92, 0,3,4,4,0,60, 0,3,3,2,12,92, + 0,3,3,4,0,60, 0,3,2,2,13,92, 0,3,2,3,13,92, 0,3,2,4,0,60, 0,3,2,6,15,76, 1,9,12,2,3,86, 1,9,12,3,3,86, 1,9,12,5,1,54, + 1,9,11,2,4,86, 1,9,11,3,4,86, 1,9,10,2,5,86, 1,9,10,3,5,86, 1,9,9,2,6,86, 1,9,9,3,6,86, 1,9,8,2,7,86, 1,9,8,3,7,86, + 1,9,7,2,8,86, 1,9,7,3,8,86, 1,9,6,2,9,86, 1,9,6,3,9,86, 1,9,5,2,10,86, 1,9,5,3,10,86, 1,9,4,2,11,86, 1,9,4,3,11,86, + 1,9,3,2,12,86, 1,9,3,3,12,86, 1,9,2,2,13,86, 1,9,2,3,13,86, 1,9,1,2,14,86, 1,9,1,3,14,86, 1,9,1,6,14,70, 1,8,12,2,3,87, + 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,10,2,5,87, 1,8,9,2,6,87, 1,8,8,2,7,87, 1,8,7,2,8,87, 1,8,6,2,9,87, 1,8,5,2,10,87, + 1,8,4,2,11,87, 1,8,3,2,12,87, 1,8,2,2,13,87, 1,8,1,2,14,87, 1,8,1,6,14,71, 1,7,12,2,3,88, 1,7,12,4,1,56, 1,7,12,5,1,56, + 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, + 1,7,3,2,12,88, 1,7,2,2,13,88, 1,7,1,2,14,88, 1,7,1,4,1,56, 1,7,1,6,14,72, 1,6,11,2,4,89, 1,6,11,5,1,57, 1,6,10,2,5,89, + 1,6,9,2,6,89, 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, 1,6,4,2,11,89, 1,6,3,2,12,89, 1,6,2,2,13,89, + 1,6,2,4,1,57, 1,6,2,6,1,57, 1,5,12,3,3,90, 1,5,12,5,1,58, 1,5,3,6,14,74, 1,4,13,3,2,91, 1,4,13,5,1,59, 1,4,3,6,14,75, + 1,3,15,3,0,92, 1,3,15,5,1,60, 1,3,14,3,1,92, 1,3,2,3,13,92, 1,3,2,6,14,76, 1,2,15,2,0,93, 1,2,15,4,14,77, 1,2,15,5,14,77, + 1,2,14,2,1,93, 1,2,14,4,14,77, 1,2,13,2,2,93, 1,2,13,4,14,77, 1,2,12,2,3,93, 1,2,12,4,14,77, 1,2,11,2,4,93, 1,2,11,4,14,77, + 1,2,10,2,5,93, 1,2,10,4,14,77, 1,2,9,2,6,93, 1,2,9,4,14,77, 1,2,8,2,7,93, 1,2,8,4,14,77, 1,2,7,2,8,93, 1,2,7,4,14,77, + 1,2,6,2,9,93, 1,2,6,4,14,77, 1,2,5,2,10,93, 1,2,5,4,14,77, 1,2,4,2,11,93, 1,2,4,4,14,77, 1,2,3,2,12,93, 1,2,3,4,14,77, + 1,2,2,2,13,93, 1,2,2,4,14,77, 1,2,2,6,14,77, 2,10,12,2,3,85, 2,10,12,3,3,85, 2,10,12,5,2,53, 2,10,11,2,4,85, 2,10,11,3,4,85, + 2,10,10,2,5,85, 2,10,10,3,5,85, 2,10,9,2,6,85, 2,10,9,3,6,85, 2,10,8,2,7,85, 2,10,8,3,7,85, 2,10,7,2,8,85, 2,10,7,3,8,85, + 2,10,6,2,9,85, 2,10,6,3,9,85, 2,10,5,2,10,85, 2,10,5,3,10,85, 2,10,4,2,11,85, 2,10,4,3,11,85, 2,10,3,2,12,85, 2,10,3,3,12,85, + 2,10,2,2,13,85, 2,10,2,3,13,85, 2,10,1,2,14,85, 2,10,1,3,14,85, 2,10,1,6,13,69, 2,9,12,5,2,54, 2,9,1,6,13,70, 2,8,12,5,2,55, + 2,8,1,6,13,71, 2,7,12,4,2,56, 2,7,12,5,2,56, 2,7,1,4,2,56, 2,7,1,6,13,72, 2,6,11,5,2,57, 2,6,2,4,2,57, 2,6,2,6,13,73, + 2,5,12,3,3,90, 2,5,12,5,2,58, 2,5,3,6,13,74, 2,4,13,3,2,91, 2,4,13,5,2,59, 2,4,3,6,13,75, 2,3,15,3,0,92, 2,3,15,5,2,60, + 2,3,14,3,1,92, 2,3,2,3,13,92, 2,3,2,6,13,76, 2,2,15,4,2,61, 2,2,15,5,2,61, 2,2,2,4,2,61, 2,2,2,6,13,77, 2,1,14,2,1,94, + 2,1,14,4,2,62, 2,1,14,5,2,62, 2,1,13,2,2,94, 2,1,13,4,2,62, 2,1,12,2,3,94, 2,1,12,4,2,62, 2,1,11,2,4,94, 2,1,11,4,2,62, + 2,1,10,2,5,94, 2,1,10,4,2,62, 2,1,9,2,6,94, 2,1,9,4,2,62, 2,1,8,2,7,94, 2,1,8,4,2,62, 2,1,7,2,8,94, 2,1,7,4,2,62, + 2,1,6,2,9,94, 2,1,6,4,2,62, 2,1,5,2,10,94, 2,1,5,4,2,62, 2,1,4,2,11,94, 2,1,4,4,2,62, 2,1,3,2,12,94, 2,1,3,4,2,62, + 2,1,3,6,2,62, 3,12,11,2,4,83, 3,12,11,3,4,83, 3,12,11,5,3,51, 3,12,10,2,5,83, 3,12,10,3,5,83, 3,12,9,2,6,83, 3,12,9,3,6,83, + 3,12,8,2,7,83, 3,12,8,3,7,83, 3,12,7,2,8,83, 3,12,7,3,8,83, 3,12,6,2,9,83, 3,12,6,3,9,83, 3,12,5,2,10,83, 3,12,5,3,10,83, + 3,12,4,2,11,83, 3,12,4,3,11,83, 3,12,3,2,12,83, 3,12,3,3,12,83, 3,12,2,2,13,83, 3,12,2,3,13,83, 3,12,2,6,12,67, 3,11,11,2,4,84, + 3,11,11,5,3,52, 3,11,10,2,5,84, 3,11,9,2,6,84, 3,11,8,2,7,84, 3,11,7,2,8,84, 3,11,6,2,9,84, 3,11,5,2,10,84, 3,11,4,2,11,84, + 3,11,3,2,12,84, 3,11,2,2,13,84, 3,11,1,2,14,84, 3,11,1,3,14,84, 3,11,1,6,12,68, 3,10,12,3,3,85, 3,10,12,5,3,53, 3,10,1,6,12,69, + 3,9,12,5,3,54, 3,9,1,6,12,70, 3,8,12,5,3,55, 3,8,1,6,12,71, 3,7,12,4,3,56, 3,7,12,5,3,56, 3,7,1,4,3,56, 3,7,1,6,12,72, + 3,6,11,5,3,57, 3,6,2,4,3,57, 3,6,2,6,12,73, 3,5,12,3,3,90, 3,5,12,5,3,58, 3,5,3,6,12,74, 3,4,13,3,2,91, 3,4,13,5,3,59, + 3,4,3,6,12,75, 3,3,15,3,0,92, 3,3,15,5,3,60, 3,3,14,3,1,92, 3,3,2,3,13,92, 3,3,2,6,12,76, 3,2,15,4,3,61, 3,2,15,5,3,61, + 3,2,2,4,3,61, 3,2,2,6,12,77, 3,1,14,4,3,62, 3,1,14,5,3,62, 3,1,13,4,3,62, 3,1,8,4,3,62, 3,1,7,4,3,62, 3,1,3,6,12,78, + 3,0,12,2,3,95, 3,0,12,5,3,63, 3,0,11,2,4,95, 3,0,10,2,5,95, 3,0,9,2,6,95, 3,0,9,6,3,63, 3,0,6,2,9,95, 3,0,6,5,3,63, + 3,0,5,2,10,95, 3,0,4,2,11,95, 3,0,3,2,12,95, 3,0,3,6,3,63, 4,13,10,2,5,82, 4,13,10,3,5,82, 4,13,10,5,4,50, 4,13,9,2,6,82, + 4,13,9,3,6,82, 4,13,8,2,7,82, 4,13,8,3,7,82, 4,13,7,2,8,82, 4,13,7,3,8,82, 4,13,6,2,9,82, 4,13,6,3,9,82, 4,13,5,2,10,82, + 4,13,5,3,10,82, 4,13,4,2,11,82, 4,13,4,3,11,82, 4,13,3,2,12,82, 4,13,3,3,12,82, 4,13,3,6,11,66, 4,12,11,3,4,83, 4,12,11,5,4,51, + 4,12,2,3,13,83, 4,12,2,6,11,67, 4,11,11,5,4,52, 4,11,1,3,14,84, 4,11,1,6,11,68, 4,10,12,3,3,85, 4,10,12,5,4,53, 4,10,1,6,11,69, + 4,9,12,5,4,54, 4,9,1,6,11,70, 4,8,12,5,4,55, 4,8,1,6,11,71, 4,7,12,4,4,56, 4,7,12,5,4,56, 4,7,1,4,4,56, 4,7,1,6,11,72, + 4,6,11,5,4,57, 4,6,2,4,4,57, 4,6,2,6,11,73, 4,5,12,3,3,90, 4,5,12,5,4,58, 4,5,3,6,11,74, 4,4,13,3,2,91, 4,4,13,5,4,59, + 4,4,3,6,11,75, 4,3,15,3,0,92, 4,3,15,5,4,60, 4,3,14,3,1,92, 4,3,2,3,13,92, 4,3,2,6,11,76, 4,2,15,4,4,61, 4,2,15,5,4,61, + 4,2,2,4,4,61, 4,2,2,6,11,77, 4,1,14,4,4,62, 4,1,14,5,4,62, 4,1,13,4,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, 4,1,3,6,11,78, + 4,0,12,5,4,63, 4,0,9,6,11,79, 4,0,6,5,4,63, 4,0,3,6,11,79, 5,13,10,3,5,82, 5,13,10,5,5,50, 5,13,9,3,6,82, 5,13,8,3,7,82, + 5,13,7,3,8,82, 5,13,6,3,9,82, 5,13,5,3,10,82, 5,13,4,3,11,82, 5,13,3,3,12,82, 5,13,3,6,10,66, 5,12,11,3,4,83, 5,12,11,5,5,51, + 5,12,2,3,13,83, 5,12,2,6,10,67, 5,11,11,5,5,52, 5,11,1,3,14,84, 5,11,1,6,10,68, 5,10,12,3,3,85, 5,10,12,5,5,53, 5,10,1,6,10,69, + 5,9,12,5,5,54, 5,9,1,6,10,70, 5,8,12,5,5,55, 5,8,1,6,10,71, 5,7,12,4,5,56, 5,7,12,5,5,56, 5,7,1,4,5,56, 5,7,1,6,10,72, + 5,6,11,5,5,57, 5,6,2,4,5,57, 5,6,2,6,10,73, 5,5,12,3,3,90, 5,5,12,5,5,58, 5,5,3,6,10,74, 5,4,13,3,2,91, 5,4,13,5,5,59, + 5,4,3,6,10,75, 5,3,15,3,0,92, 5,3,15,5,5,60, 5,3,14,3,1,92, 5,3,2,3,13,92, 5,3,2,6,10,76, 5,2,15,4,5,61, 5,2,15,5,5,61, + 5,2,2,4,5,61, 5,2,2,6,10,77, 5,1,14,4,5,62, 5,1,14,5,5,62, 5,1,13,4,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,3,6,10,78, + 5,0,12,5,5,63, 5,0,9,6,10,79, 5,0,6,5,5,63, 5,0,3,6,10,79, 6,14,9,2,6,81, 6,14,9,3,6,81, 6,14,9,5,6,49, 6,14,8,2,7,81, + 6,14,8,3,7,81, 6,14,7,2,8,81, 6,14,7,3,8,81, 6,14,6,2,9,81, 6,14,6,3,9,81, 6,14,5,2,10,81, 6,14,5,3,10,81, 6,14,4,2,11,81, + 6,14,4,3,11,81, 6,14,4,6,9,65, 6,13,10,3,5,82, 6,13,10,5,6,50, 6,13,3,3,12,82, 6,13,3,6,9,66, 6,12,11,3,4,83, 6,12,11,5,6,51, + 6,12,2,3,13,83, 6,12,2,6,9,67, 6,11,11,5,6,52, 6,11,1,3,14,84, 6,11,1,6,9,68, 6,10,12,3,3,85, 6,10,12,5,6,53, 6,10,1,6,9,69, + 6,9,12,5,6,54, 6,9,1,6,9,70, 6,8,12,5,6,55, 6,8,1,6,9,71, 6,7,12,4,6,56, 6,7,12,5,6,56, 6,7,1,4,6,56, 6,7,1,6,9,72, + 6,6,11,5,6,57, 6,6,2,4,6,57, 6,6,2,6,9,73, 6,5,12,3,3,90, 6,5,12,5,6,58, 6,5,3,6,9,74, 6,4,13,3,2,91, 6,4,13,5,6,59, + 6,4,3,6,9,75, 6,3,15,3,0,92, 6,3,15,5,6,60, 6,3,14,3,1,92, 6,3,2,3,13,92, 6,3,2,6,9,76, 6,2,15,4,6,61, 6,2,15,5,6,61, + 6,2,2,4,6,61, 6,2,2,6,9,77, 6,1,14,4,6,62, 6,1,14,5,6,62, 6,1,13,4,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,3,6,9,78, + 6,0,12,5,6,63, 6,0,9,6,9,79, 6,0,6,5,6,63, 6,0,3,6,9,79, 7,14,9,3,6,81, 7,14,9,5,7,49, 7,14,8,3,7,81, 7,14,7,3,8,81, + 7,14,6,3,9,81, 7,14,5,3,10,81, 7,14,4,3,11,81, 7,14,4,6,8,65, 7,13,10,3,5,82, 7,13,10,5,7,50, 7,13,3,3,12,82, 7,13,3,6,8,66, + 7,12,11,3,4,83, 7,12,11,5,7,51, 7,12,2,3,13,83, 7,12,2,6,8,67, 7,11,11,5,7,52, 7,11,1,3,14,84, 7,11,1,6,8,68, 7,10,12,3,3,85, + 7,10,12,5,7,53, 7,10,1,6,8,69, 7,9,12,5,7,54, 7,9,1,6,8,70, 7,8,12,5,7,55, 7,8,1,6,8,71, 7,7,12,4,7,56, 7,7,12,5,7,56, + 7,7,1,4,7,56, 7,7,1,6,8,72, 7,6,11,5,7,57, 7,6,2,4,7,57, 7,6,2,6,8,73, 7,5,12,3,3,90, 7,5,12,5,7,58, 7,5,3,6,8,74, + 7,4,13,3,2,91, 7,4,13,5,7,59, 7,4,3,6,8,75, 7,3,15,3,0,92, 7,3,15,5,7,60, 7,3,14,3,1,92, 7,3,2,3,13,92, 7,3,2,6,8,76, + 7,2,15,4,7,61, 7,2,15,5,7,61, 7,2,2,4,7,61, 7,2,2,6,8,77, 7,1,14,4,7,62, 7,1,14,5,7,62, 7,1,13,4,7,62, 7,1,8,4,7,62, + 7,1,7,4,7,62, 7,1,3,6,8,78, 7,0,12,5,8,79, 7,0,9,6,8,79, 7,0,6,5,8,79, 7,0,3,6,8,79, 8,14,9,3,6,81, 8,14,9,5,8,49, + 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, 8,14,4,3,11,81, 8,14,4,6,7,65, 8,13,10,3,5,82, 8,13,10,5,8,50, + 8,13,3,3,12,82, 8,13,3,6,7,66, 8,12,11,3,4,83, 8,12,11,5,8,51, 8,12,2,3,13,83, 8,12,2,6,7,67, 8,11,11,5,8,52, 8,11,1,3,14,84, + 8,11,1,6,7,68, 8,10,12,3,3,85, 8,10,12,5,8,53, 8,10,1,6,7,69, 8,9,12,5,8,54, 8,9,1,6,7,70, 8,8,12,5,8,55, 8,8,1,6,7,71, + 8,7,12,4,8,56, 8,7,12,5,8,56, 8,7,1,4,8,56, 8,7,1,6,7,72, 8,6,11,5,8,57, 8,6,2,4,8,57, 8,6,2,6,7,73, 8,5,12,3,3,90, + 8,5,12,5,8,58, 8,5,3,6,7,74, 8,4,13,3,2,91, 8,4,13,5,8,59, 8,4,3,6,7,75, 8,3,15,3,0,92, 8,3,15,5,8,60, 8,3,14,3,1,92, + 8,3,2,3,13,92, 8,3,2,6,7,76, 8,2,15,4,8,61, 8,2,15,5,8,61, 8,2,2,4,8,61, 8,2,2,6,7,77, 8,1,14,4,8,62, 8,1,14,5,8,62, + 8,1,13,4,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,3,6,7,78, 8,0,12,5,7,79, 8,0,9,6,7,79, 8,0,6,5,7,79, 8,0,3,6,7,79, + 9,14,9,1,6,81, 9,14,9,3,6,81, 9,14,9,5,9,49, 9,14,8,1,7,81, 9,14,8,3,7,81, 9,14,7,1,8,81, 9,14,7,3,8,81, 9,14,6,1,9,81, + 9,14,6,3,9,81, 9,14,5,1,10,81, 9,14,5,3,10,81, 9,14,4,1,11,81, 9,14,4,3,11,81, 9,14,4,6,6,65, 9,13,10,3,5,82, 9,13,10,5,9,50, + 9,13,3,3,12,82, 9,13,3,6,6,66, 9,12,11,3,4,83, 9,12,11,5,9,51, 9,12,2,3,13,83, 9,12,2,6,6,67, 9,11,11,5,9,52, 9,11,1,3,14,84, + 9,11,1,6,6,68, 9,10,12,3,3,85, 9,10,12,5,9,53, 9,10,1,6,6,69, 9,9,12,5,9,54, 9,9,1,6,6,70, 9,8,12,5,9,55, 9,8,1,6,6,71, + 9,7,12,4,9,56, 9,7,12,5,9,56, 9,7,1,4,9,56, 9,7,1,6,6,72, 9,6,11,5,9,57, 9,6,2,4,9,57, 9,6,2,6,6,73, 9,5,12,3,3,90, + 9,5,12,5,9,58, 9,5,3,6,6,74, 9,4,13,3,2,91, 9,4,13,5,9,59, 9,4,3,6,6,75, 9,3,15,3,0,92, 9,3,15,5,9,60, 9,3,14,3,1,92, + 9,3,2,3,13,92, 9,3,2,6,6,76, 9,2,15,4,9,61, 9,2,15,5,9,61, 9,2,2,4,9,61, 9,2,2,6,6,77, 9,1,14,4,9,62, 9,1,14,5,9,62, + 9,1,13,4,9,62, 9,1,8,4,9,62, 9,1,7,4,9,62, 9,1,3,6,6,78, 9,0,12,5,6,79, 9,0,9,6,6,79, 9,0,6,5,6,79, 9,0,3,6,6,79, + 10,13,10,3,5,82, 10,13,10,5,10,50, 10,13,9,3,6,82, 10,13,8,3,7,82, 10,13,7,3,8,82, 10,13,6,3,9,82, 10,13,5,3,10,82, 10,13,4,3,11,82, + 10,13,3,3,12,82, 10,13,3,6,5,66, 10,12,11,3,4,83, 10,12,11,5,10,51, 10,12,2,3,13,83, 10,12,2,6,5,67, 10,11,11,5,10,52, 10,11,1,3,14,84, + 10,11,1,6,5,68, 10,10,12,3,3,85, 10,10,12,5,10,53, 10,10,1,6,5,69, 10,9,12,5,10,54, 10,9,1,6,5,70, 10,8,12,5,10,55, 10,8,1,6,5,71, + 10,7,12,4,10,56, 10,7,12,5,10,56, 10,7,1,4,10,56, 10,7,1,6,5,72, 10,6,11,5,10,57, 10,6,2,4,10,57, 10,6,2,6,5,73, 10,5,12,3,3,90, + 10,5,12,5,10,58, 10,5,3,6,5,74, 10,4,13,3,2,91, 10,4,13,5,10,59, 10,4,3,6,5,75, 10,3,15,3,0,92, 10,3,15,5,10,60, 10,3,14,3,1,92, + 10,3,2,3,13,92, 10,3,2,6,5,76, 10,2,15,4,10,61, 10,2,15,5,10,61, 10,2,2,4,10,61, 10,2,2,6,5,77, 10,1,14,4,10,62, 10,1,14,5,10,62, + 10,1,13,4,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,3,6,5,78, 10,0,12,5,5,79, 10,0,9,6,5,79, 10,0,6,5,5,79, 10,0,3,6,5,79, + 11,13,10,1,5,82, 11,13,10,3,5,82, 11,13,10,5,11,50, 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, 11,13,7,1,8,82, + 11,13,7,3,8,82, 11,13,6,1,9,82, 11,13,6,3,9,82, 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,4,1,11,82, 11,13,4,3,11,82, 11,13,3,1,12,82, + 11,13,3,3,12,82, 11,13,3,6,4,66, 11,12,11,3,4,83, 11,12,11,5,11,51, 11,12,2,3,13,83, 11,12,2,6,4,67, 11,11,11,5,11,52, 11,11,1,3,14,84, + 11,11,1,6,4,68, 11,10,12,3,3,85, 11,10,12,5,11,53, 11,10,1,6,4,69, 11,9,12,5,11,54, 11,9,1,6,4,70, 11,8,12,5,11,55, 11,8,1,6,4,71, + 11,7,12,4,11,56, 11,7,12,5,11,56, 11,7,1,4,11,56, 11,7,1,6,4,72, 11,6,11,5,11,57, 11,6,2,4,11,57, 11,6,2,6,4,73, 11,5,12,3,3,90, + 11,5,12,5,11,58, 11,5,3,6,4,74, 11,4,13,3,2,91, 11,4,13,5,11,59, 11,4,3,6,4,75, 11,3,15,3,0,92, 11,3,15,5,11,60, 11,3,14,3,1,92, + 11,3,2,3,13,92, 11,3,2,6,4,76, 11,2,15,4,11,61, 11,2,15,5,11,61, 11,2,2,4,11,61, 11,2,2,6,4,77, 11,1,14,4,4,78, 11,1,14,5,4,78, + 11,1,13,4,4,78, 11,1,8,4,4,78, 11,1,7,4,4,78, 11,1,3,6,4,78, 11,0,12,5,4,79, 11,0,9,6,4,79, 11,0,6,5,4,79, 11,0,3,6,4,79, + 12,12,11,1,4,83, 12,12,11,3,4,83, 12,12,11,5,12,51, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, 12,12,8,1,7,83, + 12,12,8,3,7,83, 12,12,7,1,8,83, 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, 12,12,4,1,11,83, + 12,12,4,3,11,83, 12,12,3,1,12,83, 12,12,3,3,12,83, 12,12,2,1,13,83, 12,12,2,3,13,83, 12,12,2,6,3,67, 12,11,11,1,4,84, 12,11,11,5,12,52, + 12,11,10,1,5,84, 12,11,9,1,6,84, 12,11,8,1,7,84, 12,11,7,1,8,84, 12,11,6,1,9,84, 12,11,5,1,10,84, 12,11,4,1,11,84, 12,11,3,1,12,84, + 12,11,2,1,13,84, 12,11,1,1,14,84, 12,11,1,3,14,84, 12,11,1,6,3,68, 12,10,12,3,3,85, 12,10,12,5,12,53, 12,10,1,6,3,69, 12,9,12,5,12,54, + 12,9,1,6,3,70, 12,8,12,5,12,55, 12,8,1,6,3,71, 12,7,12,4,12,56, 12,7,12,5,12,56, 12,7,1,4,12,56, 12,7,1,6,3,72, 12,6,11,5,12,57, + 12,6,2,4,12,57, 12,6,2,6,3,73, 12,5,12,3,3,90, 12,5,12,5,12,58, 12,5,3,6,3,74, 12,4,13,3,2,91, 12,4,13,5,12,59, 12,4,3,6,3,75, + 12,3,15,3,0,92, 12,3,15,5,12,60, 12,3,14,3,1,92, 12,3,2,3,13,92, 12,3,2,6,3,76, 12,2,15,4,12,61, 12,2,15,5,12,61, 12,2,2,4,12,61, + 12,2,2,6,3,77, 12,1,14,4,12,62, 12,1,14,5,12,62, 12,1,13,4,12,62, 12,1,8,4,12,62, 12,1,7,4,12,62, 12,1,3,6,3,78, 12,0,12,1,3,95, + 12,0,12,5,3,79, 12,0,11,1,4,95, 12,0,10,1,5,95, 12,0,9,1,6,95, 12,0,9,6,3,79, 12,0,6,1,9,95, 12,0,6,5,3,79, 12,0,5,1,10,95, + 12,0,4,1,11,95, 12,0,3,1,12,95, 12,0,3,6,3,79, 13,10,12,1,3,85, 13,10,12,3,3,85, 13,10,12,5,13,53, 13,10,11,1,4,85, 13,10,11,3,4,85, + 13,10,10,1,5,85, 13,10,10,3,5,85, 13,10,9,1,6,85, 13,10,9,3,6,85, 13,10,8,1,7,85, 13,10,8,3,7,85, 13,10,7,1,8,85, 13,10,7,3,8,85, + 13,10,6,1,9,85, 13,10,6,3,9,85, 13,10,5,1,10,85, 13,10,5,3,10,85, 13,10,4,1,11,85, 13,10,4,3,11,85, 13,10,3,1,12,85, 13,10,3,3,12,85, + 13,10,2,1,13,85, 13,10,2,3,13,85, 13,10,1,1,14,85, 13,10,1,3,14,85, 13,10,1,6,2,69, 13,9,12,5,13,54, 13,9,1,6,2,70, 13,8,12,5,13,55, + 13,8,1,6,2,71, 13,7,12,4,13,56, 13,7,12,5,13,56, 13,7,1,4,13,56, 13,7,1,6,2,72, 13,6,11,1,4,89, 13,6,11,5,13,57, 13,6,10,1,5,89, + 13,6,9,1,6,89, 13,6,8,1,7,89, 13,6,7,1,8,89, 13,6,6,1,9,89, 13,6,5,1,10,89, 13,6,4,1,11,89, 13,6,3,1,12,89, 13,6,2,1,13,89, + 13,6,2,4,13,57, 13,6,2,6,2,73, 13,5,12,3,3,90, 13,5,12,5,13,58, 13,5,3,6,2,74, 13,4,13,3,2,91, 13,4,13,5,13,59, 13,4,3,6,2,75, + 13,3,15,3,0,92, 13,3,15,5,13,60, 13,3,14,3,1,92, 13,3,2,3,13,92, 13,3,2,6,2,76, 13,2,15,4,13,61, 13,2,15,5,13,61, 13,2,2,4,13,61, + 13,2,2,6,2,77, 13,1,14,1,1,94, 13,1,14,4,13,62, 13,1,14,5,13,62, 13,1,13,1,2,94, 13,1,13,4,13,62, 13,1,12,1,3,94, 13,1,12,4,13,62, + 13,1,11,1,4,94, 13,1,11,4,13,62, 13,1,10,1,5,94, 13,1,10,4,13,62, 13,1,9,1,6,94, 13,1,9,4,13,62, 13,1,8,1,7,94, 13,1,8,4,13,62, + 13,1,7,1,8,94, 13,1,7,4,13,62, 13,1,6,1,9,94, 13,1,6,4,13,62, 13,1,5,1,10,94, 13,1,5,4,13,62, 13,1,4,1,11,94, 13,1,4,4,13,62, + 13,1,3,1,12,94, 13,1,3,4,13,62, 13,1,3,6,2,78, 14,9,12,1,3,86, 14,9,12,3,3,86, 14,9,12,5,14,54, 14,9,11,1,4,86, 14,9,11,3,4,86, + 14,9,10,1,5,86, 14,9,10,3,5,86, 14,9,9,1,6,86, 14,9,9,3,6,86, 14,9,8,1,7,86, 14,9,8,3,7,86, 14,9,7,1,8,86, 14,9,7,3,8,86, + 14,9,6,1,9,86, 14,9,6,3,9,86, 14,9,5,1,10,86, 14,9,5,3,10,86, 14,9,4,1,11,86, 14,9,4,3,11,86, 14,9,3,1,12,86, 14,9,3,3,12,86, + 14,9,2,1,13,86, 14,9,2,3,13,86, 14,9,1,1,14,86, 14,9,1,3,14,86, 14,9,1,6,1,70, 14,8,12,1,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, + 14,8,10,1,5,87, 14,8,9,1,6,87, 14,8,8,1,7,87, 14,8,7,1,8,87, 14,8,6,1,9,87, 14,8,5,1,10,87, 14,8,4,1,11,87, 14,8,3,1,12,87, + 14,8,2,1,13,87, 14,8,1,1,14,87, 14,8,1,6,1,71, 14,7,12,1,3,88, 14,7,12,4,14,56, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,11,4,14,56, + 14,7,10,1,5,88, 14,7,10,4,14,56, 14,7,9,1,6,88, 14,7,9,4,14,56, 14,7,8,1,7,88, 14,7,8,4,14,56, 14,7,7,1,8,88, 14,7,7,4,14,56, + 14,7,6,1,9,88, 14,7,6,4,14,56, 14,7,5,1,10,88, 14,7,5,4,14,56, 14,7,4,1,11,88, 14,7,4,4,14,56, 14,7,3,1,12,88, 14,7,3,4,14,56, + 14,7,2,1,13,88, 14,7,2,4,14,56, 14,7,1,1,14,88, 14,7,1,4,14,56, 14,7,1,6,1,72, 14,5,12,1,3,90, 14,5,12,3,3,90, 14,5,12,5,14,58, + 14,5,11,1,4,90, 14,5,11,3,4,90, 14,5,10,1,5,90, 14,5,10,3,5,90, 14,5,9,1,6,90, 14,5,9,3,6,90, 14,5,8,1,7,90, 14,5,8,3,7,90, + 14,5,7,1,8,90, 14,5,7,3,8,90, 14,5,6,1,9,90, 14,5,6,3,9,90, 14,5,5,1,10,90, 14,5,5,3,10,90, 14,5,4,1,11,90, 14,5,4,3,11,90, + 14,5,3,1,12,90, 14,5,3,3,12,90, 14,5,3,6,1,74, 14,4,13,3,2,91, 14,4,13,5,14,59, 14,4,3,6,1,75, 14,3,15,3,0,92, 14,3,15,5,14,60, + 14,3,14,3,1,92, 14,3,2,3,13,92, 14,3,2,6,1,76, 14,2,15,1,0,93, 14,2,15,4,14,61, 14,2,15,5,14,61, 14,2,14,1,1,93, 14,2,14,4,14,61, + 14,2,13,1,2,93, 14,2,13,4,14,61, 14,2,12,1,3,93, 14,2,12,4,14,61, 14,2,11,1,4,93, 14,2,11,4,14,61, 14,2,10,1,5,93, 14,2,10,4,14,61, + 14,2,9,1,6,93, 14,2,9,4,14,61, 14,2,8,1,7,93, 14,2,8,4,14,61, 14,2,7,1,8,93, 14,2,7,4,14,61, 14,2,6,1,9,93, 14,2,6,4,14,61, + 14,2,5,1,10,93, 14,2,5,4,14,61, 14,2,4,1,11,93, 14,2,4,4,14,61, 14,2,3,1,12,93, 14,2,3,4,14,61, 14,2,2,1,13,93, 14,2,2,4,14,61, + 14,2,2,6,1,77, 15,4,13,1,2,91, 15,4,13,3,2,91, 15,4,13,5,15,59, 15,4,12,1,3,91, 15,4,12,3,3,91, 15,4,11,1,4,91, 15,4,11,3,4,91, + 15,4,10,1,5,91, 15,4,10,3,5,91, 15,4,9,1,6,91, 15,4,9,3,6,91, 15,4,8,1,7,91, 15,4,8,3,7,91, 15,4,7,1,8,91, 15,4,7,3,8,91, + 15,4,6,1,9,91, 15,4,6,3,9,91, 15,4,5,1,10,91, 15,4,5,3,10,91, 15,4,4,1,11,91, 15,4,4,3,11,91, 15,4,3,1,12,91, 15,4,3,3,12,91, + 15,4,3,6,0,75, 15,3,15,1,0,92, 15,3,15,3,0,92, 15,3,15,4,15,60, 15,3,15,5,15,60, 15,3,14,1,1,92, 15,3,14,3,1,92, 15,3,14,4,15,60, + 15,3,13,1,2,92, 15,3,13,4,15,60, 15,3,12,1,3,92, 15,3,12,4,15,60, 15,3,11,1,4,92, 15,3,11,4,15,60, 15,3,10,1,5,92, 15,3,10,4,15,60, + 15,3,9,1,6,92, 15,3,9,4,15,60, 15,3,8,1,7,92, 15,3,8,4,15,60, 15,3,7,1,8,92, 15,3,7,4,15,60, 15,3,6,1,9,92, 15,3,6,4,15,60, + 15,3,5,1,10,92, 15,3,5,4,15,60, 15,3,4,1,11,92, 15,3,4,4,15,60, 15,3,3,1,12,92, 15,3,3,4,15,60, 15,3,2,1,13,92, 15,3,2,3,13,92, + 15,3,2,4,15,60, 15,3,2,6,0,76, + }, + }, + }, +} diff --git a/assets/voxels/fishing_guru.lua b/assets/voxels/fishing_guru.lua new file mode 100644 index 0000000..6d12ecc --- /dev/null +++ b/assets/voxels/fishing_guru.lua @@ -0,0 +1,168 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "fishing_guru" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "fishing_guru", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1700, + count = 1144, + faces = { + 0,11,14,2,1,36, 0,11,14,3,1,36, 0,11,14,4,0,4, 0,11,14,5,0,4, 0,11,13,2,2,36, 0,11,13,3,2,36, 0,11,13,4,0,4, 0,11,12,2,3,36, + 0,11,12,3,3,36, 0,11,12,4,0,4, 0,11,11,2,4,36, 0,11,11,3,4,36, 0,11,11,4,0,4, 0,11,10,2,5,36, 0,11,10,3,5,36, 0,11,10,4,0,4, + 0,11,9,2,6,36, 0,11,9,3,6,36, 0,11,9,4,0,4, 0,11,8,2,7,36, 0,11,8,3,7,36, 0,11,8,4,0,4, 0,11,7,2,8,36, 0,11,7,3,8,36, + 0,11,7,4,0,4, 0,11,6,2,9,36, 0,11,6,3,9,36, 0,11,6,4,0,4, 0,11,5,2,10,36, 0,11,5,3,10,36, 0,11,5,4,0,4, 0,11,4,2,11,36, + 0,11,4,3,11,36, 0,11,4,4,0,4, 0,11,3,2,12,36, 0,11,3,3,12,36, 0,11,3,4,0,4, 0,11,2,2,13,36, 0,11,2,3,13,36, 0,11,2,4,0,4, + 0,11,1,2,14,36, 0,11,1,3,14,36, 0,11,1,4,0,4, 0,11,1,6,15,20, 1,12,13,2,2,35, 1,12,13,3,2,35, 1,12,13,5,1,3, 1,12,12,2,3,35, + 1,12,12,3,3,35, 1,12,11,2,4,35, 1,12,11,3,4,35, 1,12,10,2,5,35, 1,12,10,3,5,35, 1,12,9,2,6,35, 1,12,9,3,6,35, 1,12,8,2,7,35, + 1,12,8,3,7,35, 1,12,7,2,8,35, 1,12,7,3,8,35, 1,12,6,2,9,35, 1,12,6,3,9,35, 1,12,5,2,10,35, 1,12,5,3,10,35, 1,12,4,2,11,35, + 1,12,4,3,11,35, 1,12,3,2,12,35, 1,12,3,3,12,35, 1,12,2,2,13,35, 1,12,2,3,13,35, 1,12,2,6,14,19, 1,11,14,3,1,36, 1,11,14,4,1,4, + 1,11,14,5,1,4, 1,11,1,3,14,36, 1,11,1,4,1,4, 1,11,1,6,14,20, 1,10,13,2,2,37, 1,10,13,4,1,5, 1,10,13,5,1,5, 1,10,12,2,3,37, + 1,10,11,2,4,37, 1,10,10,2,5,37, 1,10,9,2,6,37, 1,10,8,2,7,37, 1,10,7,2,8,37, 1,10,6,2,9,37, 1,10,5,2,10,37, 1,10,4,2,11,37, + 1,10,3,2,12,37, 1,10,2,2,13,37, 1,10,2,6,14,21, 1,9,12,2,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,10,2,5,38, 1,9,9,2,6,38, + 1,9,8,2,7,38, 1,9,7,2,8,38, 1,9,6,2,9,38, 1,9,5,2,10,38, 1,9,4,2,11,38, 1,9,3,2,12,38, 1,9,2,2,13,38, 1,9,2,6,14,22, + 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, + 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, + 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,2,2,13,39, 1,8,2,4,1,7, 1,8,2,6,14,23, + 1,5,10,2,5,42, 1,5,10,3,5,42, 1,5,10,5,1,10, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, + 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,4,6,14,26, + 1,4,10,2,5,43, 1,4,10,4,1,11, 1,4,10,5,1,11, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, + 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,4,6,14,27, + 2,12,13,3,2,35, 2,12,13,5,2,3, 2,12,12,3,3,35, 2,12,11,3,4,35, 2,12,10,3,5,35, 2,12,9,3,6,35, 2,12,8,3,7,35, 2,12,7,3,8,35, + 2,12,6,3,9,35, 2,12,5,3,10,35, 2,12,4,3,11,35, 2,12,3,3,12,35, 2,12,2,3,13,35, 2,12,2,6,13,19, 2,11,14,3,1,36, 2,11,14,4,2,4, + 2,11,14,5,2,4, 2,11,1,3,14,36, 2,11,1,4,2,4, 2,11,1,6,13,20, 2,10,13,4,2,5, 2,10,13,5,2,5, 2,10,2,6,13,21, 2,9,12,5,2,6, + 2,9,2,6,13,22, 2,8,12,5,2,7, 2,8,2,4,2,7, 2,8,2,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, + 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, + 2,7,3,4,2,8, 2,7,3,6,13,24, 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, + 2,6,7,2,8,41, 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,4,6,13,25, 2,5,10,5,2,10, 2,5,4,6,13,26, 2,4,10,4,2,11, + 2,4,10,5,2,11, 2,4,4,6,13,27, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,9,5,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, + 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, 2,3,4,6,13,28, + 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, 3,13,9,2,6,34, + 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, 3,13,5,2,10,34, + 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,13,3,2,35, 3,12,13,5,3,3, + 3,12,2,3,13,35, 3,12,2,6,12,19, 3,11,14,3,1,36, 3,11,14,4,3,4, 3,11,14,5,3,4, 3,11,1,3,14,36, 3,11,1,4,3,4, 3,11,1,6,12,20, + 3,10,13,4,3,5, 3,10,13,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,2,4,3,7, 3,8,2,6,12,23, + 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,11,4,3,9, 3,6,11,5,3,9, 3,6,4,6,12,25, 3,5,10,5,3,10, + 3,5,4,6,12,26, 3,4,10,4,3,11, 3,4,10,5,3,11, 3,4,4,6,12,27, 3,3,9,5,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, + 3,2,10,3,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,5,6,12,29, + 3,1,11,2,4,46, 3,1,11,3,4,46, 3,1,11,4,3,14, 3,1,11,5,3,14, 3,1,10,2,5,46, 3,1,10,4,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, + 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, + 3,1,5,6,12,30, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, + 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, + 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, + 4,12,13,5,4,3, 4,12,2,3,13,35, 4,12,2,6,11,19, 4,11,14,3,1,36, 4,11,14,4,4,4, 4,11,14,5,4,4, 4,11,1,3,14,36, 4,11,1,4,4,4, + 4,11,1,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,2,4,4,7, + 4,8,2,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,11,4,4,9, 4,6,11,5,4,9, 4,6,4,6,11,25, + 4,5,10,5,4,10, 4,5,4,6,11,26, 4,4,10,4,4,11, 4,4,10,5,4,11, 4,4,4,6,11,27, 4,3,9,5,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, + 4,2,10,3,5,45, 4,2,10,5,4,13, 4,2,5,6,11,29, 4,1,11,3,4,46, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, + 4,0,10,2,5,47, 4,0,10,5,4,15, 4,0,9,2,6,47, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, 4,0,6,6,11,31, 5,14,11,3,4,33, + 5,14,11,5,5,1, 5,14,10,3,5,33, 5,14,9,3,6,33, 5,14,8,3,7,33, 5,14,7,3,8,33, 5,14,6,3,9,33, 5,14,5,3,10,33, 5,14,4,3,11,33, + 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,3,2,35, 5,12,13,5,5,3, 5,12,2,3,13,35, + 5,12,2,6,10,19, 5,11,14,3,1,36, 5,11,14,4,5,4, 5,11,14,5,5,4, 5,11,1,3,14,36, 5,11,1,4,5,4, 5,11,1,6,10,20, 5,10,13,4,5,5, + 5,10,13,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,2,4,5,7, 5,8,2,6,10,23, 5,7,12,4,5,8, + 5,7,12,5,5,8, 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,4,6,10,25, 5,5,10,5,5,10, 5,5,4,6,10,26, + 5,4,10,4,5,11, 5,4,10,5,5,11, 5,4,4,6,10,27, 5,3,9,5,5,12, 5,3,4,4,5,12, 5,3,4,6,10,28, 5,2,10,3,5,45, 5,2,10,5,5,13, + 5,2,5,6,10,29, 5,1,11,3,4,46, 5,1,11,4,5,14, 5,1,11,5,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,10,5,5,15, 5,0,6,6,10,31, + 6,15,10,2,5,32, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,2,6,32, 6,15,9,3,6,32, 6,15,8,2,7,32, 6,15,8,3,7,32, 6,15,7,2,8,32, + 6,15,7,3,8,32, 6,15,6,2,9,32, 6,15,6,3,9,32, 6,15,5,2,10,32, 6,15,5,3,10,32, 6,15,5,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, + 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,13,3,2,35, 6,12,13,5,6,3, + 6,12,2,3,13,35, 6,12,2,6,9,19, 6,11,14,3,1,36, 6,11,14,4,6,4, 6,11,14,5,6,4, 6,11,1,3,14,36, 6,11,1,4,6,4, 6,11,1,6,9,20, + 6,10,13,4,6,5, 6,10,13,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,2,4,6,7, 6,8,2,6,9,23, + 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, 6,6,4,6,9,25, 6,5,10,5,6,10, + 6,5,4,6,9,26, 6,4,10,4,6,11, 6,4,10,5,6,11, 6,4,4,6,9,27, 6,3,9,5,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,10,3,5,45, + 6,2,10,5,6,13, 6,2,5,6,9,29, 6,1,11,3,4,46, 6,1,11,4,6,14, 6,1,11,5,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,10,1,5,47, + 6,0,10,5,6,15, 6,0,9,1,6,47, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,15,10,3,5,32, 7,15,10,5,7,0, + 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,5,3,10,32, 7,15,5,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, + 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, 7,12,13,5,7,3, + 7,12,2,3,13,35, 7,12,2,6,8,19, 7,11,14,3,1,36, 7,11,14,4,7,4, 7,11,14,5,7,4, 7,11,1,3,14,36, 7,11,1,4,7,4, 7,11,1,6,8,20, + 7,10,13,4,7,5, 7,10,13,5,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,2,4,7,7, 7,8,2,6,8,23, + 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,3,4,7,8, 7,7,3,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,4,6,8,25, 7,5,10,5,7,10, + 7,5,4,6,8,26, 7,4,10,4,7,11, 7,4,10,5,7,11, 7,4,4,6,8,27, 7,3,9,5,7,12, 7,3,4,4,7,12, 7,3,4,6,8,28, 7,2,10,3,5,45, + 7,2,10,5,7,13, 7,2,5,6,8,29, 7,1,11,3,4,46, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, + 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,3,6,32, 8,15,8,3,7,32, + 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,5,3,10,32, 8,15,5,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,4,3,11,33, 8,14,4,6,7,17, + 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,2,3,13,35, 8,12,2,6,7,19, + 8,11,14,3,1,36, 8,11,14,4,8,4, 8,11,14,5,8,4, 8,11,1,3,14,36, 8,11,1,4,8,4, 8,11,1,6,7,20, 8,10,13,4,8,5, 8,10,13,5,8,5, + 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,6,7,22, 8,8,12,5,8,7, 8,8,2,4,8,7, 8,8,2,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, + 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,4,6,7,25, 8,5,10,5,8,10, 8,5,4,6,7,26, 8,4,10,4,8,11, + 8,4,10,5,8,11, 8,4,4,6,7,27, 8,3,9,5,8,12, 8,3,4,4,8,12, 8,3,4,6,7,28, 8,2,10,3,5,45, 8,2,10,5,8,13, 8,2,5,6,7,29, + 8,1,11,3,4,46, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, + 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,10,1,5,32, 9,15,10,3,5,32, 9,15,10,5,9,0, 9,15,9,1,6,32, 9,15,9,3,6,32, 9,15,8,1,7,32, + 9,15,8,3,7,32, 9,15,7,1,8,32, 9,15,7,3,8,32, 9,15,6,1,9,32, 9,15,6,3,9,32, 9,15,5,1,10,32, 9,15,5,3,10,32, 9,15,5,6,6,16, + 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, + 9,12,13,3,2,35, 9,12,13,5,9,3, 9,12,2,3,13,35, 9,12,2,6,6,19, 9,11,14,3,1,36, 9,11,14,4,9,4, 9,11,14,5,9,4, 9,11,1,3,14,36, + 9,11,1,4,9,4, 9,11,1,6,6,20, 9,10,13,4,9,5, 9,10,13,5,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, + 9,8,2,4,9,7, 9,8,2,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,3,4,9,8, 9,7,3,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, + 9,6,4,6,6,25, 9,5,10,5,9,10, 9,5,4,6,6,26, 9,4,10,4,9,11, 9,4,10,5,9,11, 9,4,4,6,6,27, 9,3,9,5,9,12, 9,3,4,4,9,12, + 9,3,4,6,6,28, 9,2,10,3,5,45, 9,2,10,5,9,13, 9,2,5,6,6,29, 9,1,11,3,4,46, 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,5,4,9,14, + 9,1,5,6,6,30, 9,0,10,2,5,47, 9,0,10,5,9,15, 9,0,9,2,6,47, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, + 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,10,3,5,33, 10,14,9,3,6,33, 10,14,8,3,7,33, 10,14,7,3,8,33, 10,14,6,3,9,33, 10,14,5,3,10,33, + 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, 10,13,12,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, + 10,12,2,3,13,35, 10,12,2,6,5,19, 10,11,14,3,1,36, 10,11,14,4,10,4, 10,11,14,5,10,4, 10,11,1,3,14,36, 10,11,1,4,10,4, 10,11,1,6,5,20, + 10,10,13,4,10,5, 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, 10,8,2,4,10,7, 10,8,2,6,5,23, + 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,4,6,5,25, 10,5,10,5,10,10, + 10,5,4,6,5,26, 10,4,10,4,10,11, 10,4,10,5,10,11, 10,4,4,6,5,27, 10,3,9,5,10,12, 10,3,4,4,10,12, 10,3,4,6,5,28, 10,2,10,3,5,45, + 10,2,10,5,10,13, 10,2,5,6,5,29, 10,1,11,3,4,46, 10,1,11,4,10,14, 10,1,11,5,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,10,5,10,15, + 10,0,6,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, + 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, + 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, + 11,12,13,5,11,3, 11,12,2,3,13,35, 11,12,2,6,4,19, 11,11,14,3,1,36, 11,11,14,4,11,4, 11,11,14,5,11,4, 11,11,1,3,14,36, 11,11,1,4,11,4, + 11,11,1,6,4,20, 11,10,13,4,11,5, 11,10,13,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,2,4,11,7, + 11,8,2,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,4,6,4,25, + 11,5,10,5,11,10, 11,5,4,6,4,26, 11,4,10,4,11,11, 11,4,10,5,11,11, 11,4,4,6,4,27, 11,3,9,5,11,12, 11,3,4,4,11,12, 11,3,4,6,4,28, + 11,2,10,3,5,45, 11,2,10,5,11,13, 11,2,5,6,4,29, 11,1,11,3,4,46, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, + 11,0,10,1,5,47, 11,0,10,5,11,15, 11,0,9,1,6,47, 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,6,6,4,31, 12,13,12,1,3,34, + 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, 12,13,9,3,6,34, + 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, 12,13,5,3,10,34, + 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,3,2,35, 12,12,13,5,12,3, 12,12,2,3,13,35, + 12,12,2,6,3,19, 12,11,14,3,1,36, 12,11,14,4,12,4, 12,11,14,5,12,4, 12,11,1,3,14,36, 12,11,1,4,12,4, 12,11,1,6,3,20, 12,10,13,4,12,5, + 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,2,4,12,7, 12,8,2,6,3,23, 12,7,12,4,12,8, + 12,7,12,5,12,8, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,4,6,3,25, 12,5,10,5,12,10, 12,5,4,6,3,26, + 12,4,10,4,12,11, 12,4,10,5,12,11, 12,4,4,6,3,27, 12,3,9,5,12,12, 12,3,4,4,12,12, 12,3,4,6,3,28, 12,2,10,1,5,45, 12,2,10,3,5,45, + 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,5,6,3,29, 12,1,11,1,4,46, + 12,1,11,3,4,46, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, + 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,5,6,3,30, + 13,12,13,3,2,35, 13,12,13,5,13,3, 13,12,12,3,3,35, 13,12,11,3,4,35, 13,12,10,3,5,35, 13,12,9,3,6,35, 13,12,8,3,7,35, 13,12,7,3,8,35, + 13,12,6,3,9,35, 13,12,5,3,10,35, 13,12,4,3,11,35, 13,12,3,3,12,35, 13,12,2,3,13,35, 13,12,2,6,2,19, 13,11,14,3,1,36, 13,11,14,4,13,4, + 13,11,14,5,13,4, 13,11,1,3,14,36, 13,11,1,4,13,4, 13,11,1,6,2,20, 13,10,13,4,13,5, 13,10,13,5,13,5, 13,10,2,6,2,21, 13,9,12,5,13,6, + 13,9,2,6,2,22, 13,8,12,5,13,7, 13,8,2,4,13,7, 13,8,2,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, + 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, + 13,7,3,4,13,8, 13,7,3,6,2,24, 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, + 13,6,7,1,8,41, 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,4,6,2,25, 13,5,10,5,13,10, 13,5,4,6,2,26, 13,4,10,4,13,11, + 13,4,10,5,13,11, 13,4,4,6,2,27, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, + 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, + 14,12,13,1,2,35, 14,12,13,3,2,35, 14,12,13,5,14,3, 14,12,12,1,3,35, 14,12,12,3,3,35, 14,12,11,1,4,35, 14,12,11,3,4,35, 14,12,10,1,5,35, + 14,12,10,3,5,35, 14,12,9,1,6,35, 14,12,9,3,6,35, 14,12,8,1,7,35, 14,12,8,3,7,35, 14,12,7,1,8,35, 14,12,7,3,8,35, 14,12,6,1,9,35, + 14,12,6,3,9,35, 14,12,5,1,10,35, 14,12,5,3,10,35, 14,12,4,1,11,35, 14,12,4,3,11,35, 14,12,3,1,12,35, 14,12,3,3,12,35, 14,12,2,1,13,35, + 14,12,2,3,13,35, 14,12,2,6,1,19, 14,11,14,3,1,36, 14,11,14,4,14,4, 14,11,14,5,14,4, 14,11,1,3,14,36, 14,11,1,4,14,4, 14,11,1,6,1,20, + 14,10,13,1,2,37, 14,10,13,4,14,5, 14,10,13,5,14,5, 14,10,12,1,3,37, 14,10,11,1,4,37, 14,10,10,1,5,37, 14,10,9,1,6,37, 14,10,8,1,7,37, + 14,10,7,1,8,37, 14,10,6,1,9,37, 14,10,5,1,10,37, 14,10,4,1,11,37, 14,10,3,1,12,37, 14,10,2,1,13,37, 14,10,2,6,1,21, 14,9,12,1,3,38, + 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,10,1,5,38, 14,9,9,1,6,38, 14,9,8,1,7,38, 14,9,7,1,8,38, 14,9,6,1,9,38, 14,9,5,1,10,38, + 14,9,4,1,11,38, 14,9,3,1,12,38, 14,9,2,1,13,38, 14,9,2,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,4,39, + 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, + 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, + 14,8,3,4,14,7, 14,8,2,1,13,39, 14,8,2,4,14,7, 14,8,2,6,1,23, 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,5,14,10, 14,5,9,1,6,42, + 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, + 14,5,5,3,10,42, 14,5,4,1,11,42, 14,5,4,3,11,42, 14,5,4,6,1,26, 14,4,10,1,5,43, 14,4,10,4,14,11, 14,4,10,5,14,11, 14,4,9,1,6,43, + 14,4,9,4,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, + 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,4,14,11, 14,4,4,6,1,27, 15,11,14,1,1,36, 15,11,14,3,1,36, 15,11,14,4,15,4, 15,11,14,5,15,4, + 15,11,13,1,2,36, 15,11,13,3,2,36, 15,11,13,4,15,4, 15,11,12,1,3,36, 15,11,12,3,3,36, 15,11,12,4,15,4, 15,11,11,1,4,36, 15,11,11,3,4,36, + 15,11,11,4,15,4, 15,11,10,1,5,36, 15,11,10,3,5,36, 15,11,10,4,15,4, 15,11,9,1,6,36, 15,11,9,3,6,36, 15,11,9,4,15,4, 15,11,8,1,7,36, + 15,11,8,3,7,36, 15,11,8,4,15,4, 15,11,7,1,8,36, 15,11,7,3,8,36, 15,11,7,4,15,4, 15,11,6,1,9,36, 15,11,6,3,9,36, 15,11,6,4,15,4, + 15,11,5,1,10,36, 15,11,5,3,10,36, 15,11,5,4,15,4, 15,11,4,1,11,36, 15,11,4,3,11,36, 15,11,4,4,15,4, 15,11,3,1,12,36, 15,11,3,3,12,36, + 15,11,3,4,15,4, 15,11,2,1,13,36, 15,11,2,3,13,36, 15,11,2,4,15,4, 15,11,1,1,14,36, 15,11,1,3,14,36, 15,11,1,4,15,4, 15,11,1,6,0,20, + }, + }, + }, +} diff --git a/assets/voxels/fossil.lua b/assets/voxels/fossil.lua new file mode 100644 index 0000000..db7a716 --- /dev/null +++ b/assets/voxels/fossil.lua @@ -0,0 +1,138 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "fossil" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "fossil", + sheetW = 16, + sheetH = 16, + size = 16, + poses = { + stand = { + frames = { 0 }, + voxels = 1620, + count = 898, + faces = { + 1,10,14,2,13,4, 1,10,14,3,13,4, 1,10,14,5,13,4, 1,10,13,2,12,4, 1,10,13,3,12,4, 1,10,12,2,11,4, 1,10,12,3,11,4, 1,10,11,2,10,4, + 1,10,11,3,10,4, 1,10,10,2,9,4, 1,10,10,3,9,4, 1,10,9,2,8,4, 1,10,9,3,8,4, 1,10,8,2,7,4, 1,10,8,3,7,4, 1,10,7,2,6,4, + 1,10,7,3,6,4, 1,10,6,2,5,4, 1,10,6,3,5,4, 1,10,5,2,4,4, 1,10,5,3,4,4, 1,10,4,2,3,4, 1,10,4,3,3,4, 1,10,3,2,2,4, + 1,10,3,3,2,4, 1,10,3,6,13,4, 1,9,14,2,13,5, 1,9,14,5,1,5, 1,9,13,2,12,5, 1,9,12,2,11,5, 1,9,11,2,10,5, 1,9,10,2,9,5, + 1,9,9,2,8,5, 1,9,8,2,7,5, 1,9,7,2,6,5, 1,9,6,2,5,5, 1,9,5,2,4,5, 1,9,4,2,3,5, 1,9,3,2,2,5, 1,9,2,2,1,5, + 1,9,2,3,1,5, 1,9,2,6,13,5, 1,8,14,2,13,6, 1,8,14,5,1,6, 1,8,13,2,12,6, 1,8,12,2,11,6, 1,8,11,2,10,6, 1,8,10,2,9,6, + 1,8,9,2,8,6, 1,8,8,2,7,6, 1,8,7,2,6,6, 1,8,6,2,5,6, 1,8,5,2,4,6, 1,8,4,2,3,6, 1,8,3,2,2,6, 1,8,2,2,1,6, + 1,8,2,6,13,6, 1,7,14,2,13,7, 1,7,14,5,1,7, 1,7,13,2,12,7, 1,7,12,2,11,7, 1,7,11,2,10,7, 1,7,10,2,9,7, 1,7,9,2,8,7, + 1,7,8,2,7,7, 1,7,7,2,6,7, 1,7,6,2,5,7, 1,7,5,2,4,7, 1,7,4,2,3,7, 1,7,3,2,2,7, 1,7,2,2,1,7, 1,7,2,6,13,7, + 1,6,14,2,13,8, 1,6,14,5,1,8, 1,6,13,2,12,8, 1,6,12,2,11,8, 1,6,11,2,10,8, 1,6,10,2,9,8, 1,6,9,2,8,8, 1,6,8,2,7,8, + 1,6,7,2,6,8, 1,6,6,2,5,8, 1,6,5,2,4,8, 1,6,4,2,3,8, 1,6,3,2,2,8, 1,6,2,2,1,8, 1,6,2,6,13,8, 1,5,14,2,13,9, + 1,5,14,4,1,9, 1,5,14,5,1,9, 1,5,13,2,12,9, 1,5,13,4,1,9, 1,5,12,2,11,9, 1,5,12,4,1,9, 1,5,11,2,10,9, 1,5,11,4,1,9, + 1,5,10,2,9,9, 1,5,10,4,1,9, 1,5,9,2,8,9, 1,5,9,4,1,9, 1,5,8,2,7,9, 1,5,8,4,1,9, 1,5,7,2,6,9, 1,5,7,4,1,9, + 1,5,6,2,5,9, 1,5,6,4,1,9, 1,5,5,2,4,9, 1,5,5,4,1,9, 1,5,4,2,3,9, 1,5,4,4,1,9, 1,5,3,2,2,9, 1,5,3,4,1,9, + 1,5,2,2,1,9, 1,5,2,4,1,9, 1,5,2,6,13,9, 2,11,13,2,12,3, 2,11,13,3,12,3, 2,11,13,5,2,3, 2,11,12,2,11,3, 2,11,12,3,11,3, + 2,11,11,2,10,3, 2,11,11,3,10,3, 2,11,10,2,9,3, 2,11,10,3,9,3, 2,11,9,2,8,3, 2,11,9,3,8,3, 2,11,8,2,7,3, 2,11,8,3,7,3, + 2,11,7,2,6,3, 2,11,7,3,6,3, 2,11,6,2,5,3, 2,11,6,3,5,3, 2,11,5,2,4,3, 2,11,5,3,4,3, 2,11,4,2,3,3, 2,11,4,3,3,3, + 2,11,3,2,2,3, 2,11,3,3,2,3, 2,11,3,6,12,3, 2,10,14,3,13,4, 2,10,14,5,2,4, 2,10,3,6,12,4, 2,9,14,5,2,5, 2,9,2,3,1,5, + 2,9,2,6,12,5, 2,8,14,5,2,6, 2,8,2,6,12,6, 2,7,14,5,2,7, 2,7,2,6,12,7, 2,6,14,5,2,8, 2,6,2,6,12,8, 2,5,14,4,2,9, + 2,5,14,5,2,9, 2,5,2,4,2,9, 2,5,2,6,12,9, 2,4,13,2,12,10, 2,4,13,5,2,10, 2,4,12,2,11,10, 2,4,11,2,10,10, 2,4,10,2,9,10, + 2,4,9,2,8,10, 2,4,8,2,7,10, 2,4,7,2,6,10, 2,4,6,2,5,10, 2,4,5,2,4,10, 2,4,4,2,3,10, 2,4,3,2,2,10, 2,4,3,6,12,10, + 2,3,13,2,12,11, 2,3,13,4,2,11, 2,3,13,5,2,11, 2,3,12,2,11,11, 2,3,12,4,2,11, 2,3,11,2,10,11, 2,3,11,4,2,11, 2,3,10,2,9,11, + 2,3,10,4,2,11, 2,3,9,2,8,11, 2,3,9,4,2,11, 2,3,8,2,7,11, 2,3,8,4,2,11, 2,3,7,2,6,11, 2,3,7,4,2,11, 2,3,6,2,5,11, + 2,3,6,4,2,11, 2,3,5,2,4,11, 2,3,5,4,2,11, 2,3,4,2,3,11, 2,3,4,4,2,11, 2,3,3,2,2,11, 2,3,3,4,2,11, 2,3,3,6,12,11, + 3,12,12,2,11,2, 3,12,12,3,11,2, 3,12,12,5,3,2, 3,12,11,2,10,2, 3,12,11,3,10,2, 3,12,10,2,9,2, 3,12,10,3,9,2, 3,12,9,2,8,2, + 3,12,9,3,8,2, 3,12,8,2,7,2, 3,12,8,3,7,2, 3,12,7,2,6,2, 3,12,7,3,6,2, 3,12,6,2,5,2, 3,12,6,3,5,2, 3,12,5,2,4,2, + 3,12,5,3,4,2, 3,12,4,2,3,2, 3,12,4,3,3,2, 3,12,4,6,11,2, 3,11,13,3,12,3, 3,11,13,5,3,3, 3,11,3,3,2,3, 3,11,3,6,11,3, + 3,10,14,3,13,4, 3,10,14,5,3,4, 3,10,3,6,11,4, 3,9,14,5,3,5, 3,9,2,3,1,5, 3,9,2,6,11,5, 3,8,14,5,3,6, 3,8,2,6,11,6, + 3,7,14,5,3,7, 3,7,2,6,11,7, 3,6,14,5,3,8, 3,6,2,6,11,8, 3,5,14,4,3,9, 3,5,14,5,3,9, 3,5,2,4,3,9, 3,5,2,6,11,9, + 3,4,13,5,3,10, 3,4,3,6,11,10, 3,3,13,4,3,11, 3,3,13,5,3,11, 3,3,3,4,3,11, 3,3,3,6,11,11, 3,2,12,2,11,12, 3,2,12,4,3,12, + 3,2,12,5,3,12, 3,2,11,2,10,12, 3,2,11,4,3,12, 3,2,10,2,9,12, 3,2,10,4,3,12, 3,2,9,2,8,12, 3,2,9,4,3,12, 3,2,8,2,7,12, + 3,2,8,4,3,12, 3,2,7,2,6,12, 3,2,7,4,3,12, 3,2,6,2,5,12, 3,2,6,4,3,12, 3,2,5,2,4,12, 3,2,5,4,3,12, 3,2,4,2,3,12, + 3,2,4,4,3,12, 3,2,4,6,11,12, 4,12,12,3,11,2, 4,12,12,5,4,2, 4,12,11,3,10,2, 4,12,10,3,9,2, 4,12,9,3,8,2, 4,12,8,3,7,2, + 4,12,7,3,6,2, 4,12,6,3,5,2, 4,12,5,3,4,2, 4,12,4,3,3,2, 4,12,4,6,10,2, 4,11,13,3,12,3, 4,11,13,5,4,3, 4,11,3,3,2,3, + 4,11,3,6,10,3, 4,10,14,3,13,4, 4,10,14,5,4,4, 4,10,3,6,10,4, 4,9,14,5,4,5, 4,9,2,3,1,5, 4,9,2,6,10,5, 4,8,14,5,4,6, + 4,8,2,6,10,6, 4,7,14,5,4,7, 4,7,2,6,10,7, 4,6,14,5,4,8, 4,6,2,6,10,8, 4,5,14,4,4,9, 4,5,14,5,4,9, 4,5,2,4,4,9, + 4,5,2,6,10,9, 4,4,13,5,4,10, 4,4,3,6,10,10, 4,3,13,4,4,11, 4,3,13,5,4,11, 4,3,3,4,4,11, 4,3,3,6,10,11, 4,2,12,4,4,12, + 4,2,12,5,4,12, 4,2,4,4,4,12, 4,2,4,6,10,12, 4,1,11,2,10,13, 4,1,11,4,4,13, 4,1,11,5,4,13, 4,1,10,2,9,13, 4,1,10,4,4,13, + 4,1,9,2,8,13, 4,1,9,4,4,13, 4,1,8,2,7,13, 4,1,8,4,4,13, 4,1,7,2,6,13, 4,1,7,4,4,13, 4,1,6,2,5,13, 4,1,6,4,4,13, + 4,1,5,2,4,13, 4,1,5,4,4,13, 4,1,5,6,10,13, 5,13,10,2,9,1, 5,13,10,3,9,1, 5,13,10,5,5,1, 5,13,9,2,8,1, 5,13,9,3,8,1, + 5,13,8,2,7,1, 5,13,8,3,7,1, 5,13,7,2,6,1, 5,13,7,3,6,1, 5,13,6,2,5,1, 5,13,6,3,5,1, 5,13,6,6,9,1, 5,12,12,3,11,2, + 5,12,12,5,5,2, 5,12,11,3,10,2, 5,12,5,3,4,2, 5,12,4,3,3,2, 5,12,4,6,9,2, 5,11,13,3,12,3, 5,11,13,5,5,3, 5,11,3,3,2,3, + 5,11,3,6,9,3, 5,10,14,3,13,4, 5,10,14,5,5,4, 5,10,3,6,9,4, 5,9,14,5,5,5, 5,9,2,3,1,5, 5,9,2,6,9,5, 5,8,14,5,5,6, + 5,8,2,6,9,6, 5,7,14,5,5,7, 5,7,2,6,9,7, 5,6,14,5,5,8, 5,6,2,6,9,8, 5,5,14,4,5,9, 5,5,14,5,5,9, 5,5,2,4,5,9, + 5,5,2,6,9,9, 5,4,13,5,5,10, 5,4,3,6,9,10, 5,3,13,4,5,11, 5,3,13,5,5,11, 5,3,3,4,5,11, 5,3,3,6,9,11, 5,2,12,4,5,12, + 5,2,12,5,5,12, 5,2,4,4,5,12, 5,2,4,6,9,12, 5,1,11,4,5,13, 5,1,11,5,5,13, 5,1,10,4,5,13, 5,1,5,4,5,13, 5,1,5,6,9,13, + 5,0,9,2,8,14, 5,0,9,5,5,14, 5,0,8,2,7,14, 5,0,7,2,6,14, 5,0,6,2,5,14, 5,0,6,6,5,14, 6,13,10,3,9,1, 6,13,10,5,6,1, + 6,13,9,3,8,1, 6,13,8,3,7,1, 6,13,7,3,6,1, 6,13,6,3,5,1, 6,13,6,6,8,1, 6,12,12,3,11,2, 6,12,12,5,6,2, 6,12,11,3,10,2, + 6,12,5,3,4,2, 6,12,4,3,3,2, 6,12,4,6,8,2, 6,11,13,3,12,3, 6,11,13,5,6,3, 6,11,3,3,2,3, 6,11,3,6,8,3, 6,10,14,3,13,4, + 6,10,14,5,6,4, 6,10,3,6,8,4, 6,9,14,5,6,5, 6,9,2,3,1,5, 6,9,2,6,8,5, 6,8,14,5,6,6, 6,8,2,6,8,6, 6,7,14,5,6,7, + 6,7,2,6,8,7, 6,6,14,5,6,8, 6,6,2,6,8,8, 6,5,14,4,6,9, 6,5,14,5,6,9, 6,5,2,4,6,9, 6,5,2,6,8,9, 6,4,13,5,6,10, + 6,4,3,6,8,10, 6,3,13,4,6,11, 6,3,13,5,6,11, 6,3,3,4,6,11, 6,3,3,6,8,11, 6,2,12,4,6,12, 6,2,12,5,6,12, 6,2,4,4,6,12, + 6,2,4,6,8,12, 6,1,11,4,6,13, 6,1,11,5,6,13, 6,1,10,4,6,13, 6,1,5,4,6,13, 6,1,5,6,8,13, 6,0,9,5,6,14, 6,0,6,6,8,14, + 7,13,10,3,9,1, 7,13,10,5,7,1, 7,13,9,3,8,1, 7,13,8,3,7,1, 7,13,7,3,6,1, 7,13,6,3,5,1, 7,13,6,6,7,1, 7,12,12,3,11,2, + 7,12,12,5,7,2, 7,12,11,3,10,2, 7,12,5,3,4,2, 7,12,4,3,3,2, 7,12,4,6,7,2, 7,11,13,3,12,3, 7,11,13,5,7,3, 7,11,3,3,2,3, + 7,11,3,6,7,3, 7,10,14,3,13,4, 7,10,14,5,7,4, 7,10,3,6,7,4, 7,9,14,5,7,5, 7,9,2,3,1,5, 7,9,2,6,7,5, 7,8,14,5,7,6, + 7,8,2,6,7,6, 7,7,14,5,7,7, 7,7,2,6,7,7, 7,6,14,5,7,8, 7,6,2,6,7,8, 7,5,14,4,7,9, 7,5,14,5,7,9, 7,5,2,4,7,9, + 7,5,2,6,7,9, 7,4,13,5,7,10, 7,4,3,6,7,10, 7,3,13,4,7,11, 7,3,13,5,7,11, 7,3,3,4,7,11, 7,3,3,6,7,11, 7,2,12,4,7,12, + 7,2,12,5,7,12, 7,2,4,4,7,12, 7,2,4,6,7,12, 7,1,11,4,7,13, 7,1,11,5,7,13, 7,1,10,4,7,13, 7,1,5,4,7,13, 7,1,5,6,7,13, + 7,0,9,5,7,14, 7,0,6,6,7,14, 8,13,10,3,9,1, 8,13,10,5,8,1, 8,13,9,3,8,1, 8,13,8,3,7,1, 8,13,7,3,6,1, 8,13,6,3,5,1, + 8,13,6,6,6,1, 8,12,12,3,11,2, 8,12,12,5,8,2, 8,12,11,3,10,2, 8,12,5,3,4,2, 8,12,4,3,3,2, 8,12,4,6,6,2, 8,11,13,3,12,3, + 8,11,13,5,8,3, 8,11,3,3,2,3, 8,11,3,6,6,3, 8,10,14,3,13,4, 8,10,14,5,8,4, 8,10,3,6,6,4, 8,9,14,5,8,5, 8,9,2,3,1,5, + 8,9,2,6,6,5, 8,8,14,5,8,6, 8,8,2,6,6,6, 8,7,14,5,8,7, 8,7,2,6,6,7, 8,6,14,5,8,8, 8,6,2,6,6,8, 8,5,14,4,8,9, + 8,5,14,5,8,9, 8,5,2,4,8,9, 8,5,2,6,6,9, 8,4,13,5,8,10, 8,4,3,6,6,10, 8,3,13,4,8,11, 8,3,13,5,8,11, 8,3,3,4,8,11, + 8,3,3,6,6,11, 8,2,12,4,8,12, 8,2,12,5,8,12, 8,2,4,4,8,12, 8,2,4,6,6,12, 8,1,11,4,8,13, 8,1,11,5,8,13, 8,1,10,4,8,13, + 8,1,5,4,8,13, 8,1,5,6,6,13, 8,0,9,5,8,14, 8,0,6,6,6,14, 9,13,10,1,9,1, 9,13,10,3,9,1, 9,13,10,5,9,1, 9,13,9,1,8,1, + 9,13,9,3,8,1, 9,13,8,1,7,1, 9,13,8,3,7,1, 9,13,7,1,6,1, 9,13,7,3,6,1, 9,13,6,1,5,1, 9,13,6,3,5,1, 9,13,6,6,5,1, + 9,12,12,3,11,2, 9,12,12,5,9,2, 9,12,11,3,10,2, 9,12,5,3,4,2, 9,12,4,3,3,2, 9,12,4,6,5,2, 9,11,13,3,12,3, 9,11,13,5,9,3, + 9,11,3,3,2,3, 9,11,3,6,5,3, 9,10,14,3,13,4, 9,10,14,5,9,4, 9,10,3,6,5,4, 9,9,14,5,9,5, 9,9,2,3,1,5, 9,9,2,6,5,5, + 9,8,14,5,9,6, 9,8,2,6,5,6, 9,7,14,5,9,7, 9,7,2,6,5,7, 9,6,14,5,9,8, 9,6,2,6,5,8, 9,5,14,4,9,9, 9,5,14,5,9,9, + 9,5,2,4,9,9, 9,5,2,6,5,9, 9,4,13,5,9,10, 9,4,3,6,5,10, 9,3,13,4,9,11, 9,3,13,5,9,11, 9,3,3,4,9,11, 9,3,3,6,5,11, + 9,2,12,4,9,12, 9,2,12,5,9,12, 9,2,4,4,9,12, 9,2,4,6,5,12, 9,1,11,4,9,13, 9,1,11,5,9,13, 9,1,10,4,9,13, 9,1,5,4,9,13, + 9,1,5,6,5,13, 9,0,9,1,8,14, 9,0,9,5,5,14, 9,0,8,1,7,14, 9,0,7,1,6,14, 9,0,6,1,5,14, 9,0,6,6,5,14, 10,12,12,3,11,2, + 10,12,12,5,10,2, 10,12,11,3,10,2, 10,12,10,3,9,2, 10,12,9,3,8,2, 10,12,8,3,7,2, 10,12,7,3,6,2, 10,12,6,3,5,2, 10,12,5,3,4,2, + 10,12,4,3,3,2, 10,12,4,6,4,2, 10,11,13,3,12,3, 10,11,13,5,10,3, 10,11,3,3,2,3, 10,11,3,6,4,3, 10,10,14,3,13,4, 10,10,14,5,10,4, + 10,10,3,6,4,4, 10,9,14,5,10,5, 10,9,2,3,1,5, 10,9,2,6,4,5, 10,8,14,5,10,6, 10,8,2,6,4,6, 10,7,14,5,10,7, 10,7,2,6,4,7, + 10,6,14,5,10,8, 10,6,2,6,4,8, 10,5,14,4,10,9, 10,5,14,5,10,9, 10,5,2,4,10,9, 10,5,2,6,4,9, 10,4,13,5,10,10, 10,4,3,6,4,10, + 10,3,13,4,10,11, 10,3,13,5,10,11, 10,3,3,4,10,11, 10,3,3,6,4,11, 10,2,12,4,10,12, 10,2,12,5,10,12, 10,2,4,4,10,12, 10,2,4,6,4,12, + 10,1,11,1,10,13, 10,1,11,4,10,13, 10,1,11,5,10,13, 10,1,10,1,9,13, 10,1,10,4,10,13, 10,1,9,1,8,13, 10,1,9,4,10,13, 10,1,8,1,7,13, + 10,1,8,4,10,13, 10,1,7,1,6,13, 10,1,7,4,10,13, 10,1,6,1,5,13, 10,1,6,4,10,13, 10,1,5,1,4,13, 10,1,5,4,10,13, 10,1,5,6,4,13, + 11,12,12,1,11,2, 11,12,12,3,11,2, 11,12,12,5,11,2, 11,12,11,1,10,2, 11,12,11,3,10,2, 11,12,10,1,9,2, 11,12,10,3,9,2, 11,12,9,1,8,2, + 11,12,9,3,8,2, 11,12,8,1,7,2, 11,12,8,3,7,2, 11,12,7,1,6,2, 11,12,7,3,6,2, 11,12,6,1,5,2, 11,12,6,3,5,2, 11,12,5,1,4,2, + 11,12,5,3,4,2, 11,12,4,1,3,2, 11,12,4,3,3,2, 11,12,4,6,3,2, 11,11,13,3,12,3, 11,11,13,5,11,3, 11,11,3,3,2,3, 11,11,3,6,3,3, + 11,10,14,3,13,4, 11,10,14,5,11,4, 11,10,3,6,3,4, 11,9,14,5,11,5, 11,9,2,3,1,5, 11,9,2,6,3,5, 11,8,14,5,11,6, 11,8,2,6,3,6, + 11,7,14,5,11,7, 11,7,2,6,3,7, 11,6,14,5,11,8, 11,6,2,6,3,8, 11,5,14,4,11,9, 11,5,14,5,11,9, 11,5,2,4,11,9, 11,5,2,6,3,9, + 11,4,13,5,11,10, 11,4,3,6,3,10, 11,3,13,4,11,11, 11,3,13,5,11,11, 11,3,3,4,11,11, 11,3,3,6,3,11, 11,2,12,1,11,12, 11,2,12,4,11,12, + 11,2,12,5,11,12, 11,2,11,1,10,12, 11,2,11,4,11,12, 11,2,10,1,9,12, 11,2,10,4,11,12, 11,2,9,1,8,12, 11,2,9,4,11,12, 11,2,8,1,7,12, + 11,2,8,4,11,12, 11,2,7,1,6,12, 11,2,7,4,11,12, 11,2,6,1,5,12, 11,2,6,4,11,12, 11,2,5,1,4,12, 11,2,5,4,11,12, 11,2,4,1,3,12, + 11,2,4,4,11,12, 11,2,4,6,3,12, 12,11,13,1,12,3, 12,11,13,3,12,3, 12,11,13,5,12,3, 12,11,12,1,11,3, 12,11,12,3,11,3, 12,11,11,1,10,3, + 12,11,11,3,10,3, 12,11,10,1,9,3, 12,11,10,3,9,3, 12,11,9,1,8,3, 12,11,9,3,8,3, 12,11,8,1,7,3, 12,11,8,3,7,3, 12,11,7,1,6,3, + 12,11,7,3,6,3, 12,11,6,1,5,3, 12,11,6,3,5,3, 12,11,5,1,4,3, 12,11,5,3,4,3, 12,11,4,1,3,3, 12,11,4,3,3,3, 12,11,3,1,2,3, + 12,11,3,3,2,3, 12,11,3,6,2,3, 12,10,14,3,13,4, 12,10,14,5,12,4, 12,10,3,6,2,4, 12,9,14,5,12,5, 12,9,2,3,1,5, 12,9,2,6,2,5, + 12,8,14,5,12,6, 12,8,2,6,2,6, 12,7,14,5,12,7, 12,7,2,6,2,7, 12,6,14,5,12,8, 12,6,2,6,2,8, 12,5,14,4,12,9, 12,5,14,5,12,9, + 12,5,2,4,12,9, 12,5,2,6,2,9, 12,4,13,1,12,10, 12,4,13,5,12,10, 12,4,12,1,11,10, 12,4,11,1,10,10, 12,4,10,1,9,10, 12,4,9,1,8,10, + 12,4,8,1,7,10, 12,4,7,1,6,10, 12,4,6,1,5,10, 12,4,5,1,4,10, 12,4,4,1,3,10, 12,4,3,1,2,10, 12,4,3,6,2,10, 12,3,13,1,12,11, + 12,3,13,4,12,11, 12,3,13,5,12,11, 12,3,12,1,11,11, 12,3,12,4,12,11, 12,3,11,1,10,11, 12,3,11,4,12,11, 12,3,10,1,9,11, 12,3,10,4,12,11, + 12,3,9,1,8,11, 12,3,9,4,12,11, 12,3,8,1,7,11, 12,3,8,4,12,11, 12,3,7,1,6,11, 12,3,7,4,12,11, 12,3,6,1,5,11, 12,3,6,4,12,11, + 12,3,5,1,4,11, 12,3,5,4,12,11, 12,3,4,1,3,11, 12,3,4,4,12,11, 12,3,3,1,2,11, 12,3,3,4,12,11, 12,3,3,6,2,11, 13,10,14,1,13,4, + 13,10,14,3,13,4, 13,10,14,5,13,4, 13,10,13,1,12,4, 13,10,13,3,12,4, 13,10,12,1,11,4, 13,10,12,3,11,4, 13,10,11,1,10,4, 13,10,11,3,10,4, + 13,10,10,1,9,4, 13,10,10,3,9,4, 13,10,9,1,8,4, 13,10,9,3,8,4, 13,10,8,1,7,4, 13,10,8,3,7,4, 13,10,7,1,6,4, 13,10,7,3,6,4, + 13,10,6,1,5,4, 13,10,6,3,5,4, 13,10,5,1,4,4, 13,10,5,3,4,4, 13,10,4,1,3,4, 13,10,4,3,3,4, 13,10,3,1,2,4, 13,10,3,3,2,4, + 13,10,3,6,13,4, 13,9,14,1,13,5, 13,9,14,5,13,5, 13,9,13,1,12,5, 13,9,12,1,11,5, 13,9,11,1,10,5, 13,9,10,1,9,5, 13,9,9,1,8,5, + 13,9,8,1,7,5, 13,9,7,1,6,5, 13,9,6,1,5,5, 13,9,5,1,4,5, 13,9,4,1,3,5, 13,9,3,1,2,5, 13,9,2,1,1,5, 13,9,2,3,1,5, + 13,9,2,6,1,5, 13,8,14,1,13,6, 13,8,14,5,13,6, 13,8,13,1,12,6, 13,8,12,1,11,6, 13,8,11,1,10,6, 13,8,10,1,9,6, 13,8,9,1,8,6, + 13,8,8,1,7,6, 13,8,7,1,6,6, 13,8,6,1,5,6, 13,8,5,1,4,6, 13,8,4,1,3,6, 13,8,3,1,2,6, 13,8,2,1,1,6, 13,8,2,6,1,6, + 13,7,14,1,13,7, 13,7,14,5,13,7, 13,7,13,1,12,7, 13,7,12,1,11,7, 13,7,11,1,10,7, 13,7,10,1,9,7, 13,7,9,1,8,7, 13,7,8,1,7,7, + 13,7,7,1,6,7, 13,7,6,1,5,7, 13,7,5,1,4,7, 13,7,4,1,3,7, 13,7,3,1,2,7, 13,7,2,1,1,7, 13,7,2,6,1,7, 13,6,14,1,13,8, + 13,6,14,5,13,8, 13,6,13,1,12,8, 13,6,12,1,11,8, 13,6,11,1,10,8, 13,6,10,1,9,8, 13,6,9,1,8,8, 13,6,8,1,7,8, 13,6,7,1,6,8, + 13,6,6,1,5,8, 13,6,5,1,4,8, 13,6,4,1,3,8, 13,6,3,1,2,8, 13,6,2,1,1,8, 13,6,2,6,1,8, 13,5,14,1,13,9, 13,5,14,4,13,9, + 13,5,14,5,13,9, 13,5,13,1,12,9, 13,5,13,4,13,9, 13,5,12,1,11,9, 13,5,12,4,13,9, 13,5,11,1,10,9, 13,5,11,4,13,9, 13,5,10,1,9,9, + 13,5,10,4,13,9, 13,5,9,1,8,9, 13,5,9,4,13,9, 13,5,8,1,7,9, 13,5,8,4,13,9, 13,5,7,1,6,9, 13,5,7,4,13,9, 13,5,6,1,5,9, + 13,5,6,4,13,9, 13,5,5,1,4,9, 13,5,5,4,13,9, 13,5,4,1,3,9, 13,5,4,4,13,9, 13,5,3,1,2,9, 13,5,3,4,13,9, 13,5,2,1,1,9, + 13,5,2,4,13,9, 13,5,2,6,1,9, + }, + }, + }, +} diff --git a/assets/voxels/gambler.lua b/assets/voxels/gambler.lua new file mode 100644 index 0000000..49887a6 --- /dev/null +++ b/assets/voxels/gambler.lua @@ -0,0 +1,272 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "gambler" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "gambler", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1560, + count = 990, + faces = { + 1,10,13,2,3,37, 1,10,13,3,3,37, 1,10,13,5,1,5, 1,10,12,2,4,37, 1,10,12,3,4,37, 1,10,11,2,5,37, 1,10,11,3,5,37, 1,10,10,2,6,37, + 1,10,10,3,6,37, 1,10,9,2,7,37, 1,10,9,3,7,37, 1,10,8,2,8,37, 1,10,8,3,8,37, 1,10,7,2,9,37, 1,10,7,3,9,37, 1,10,6,2,10,37, + 1,10,6,3,10,37, 1,10,5,2,11,37, 1,10,5,3,11,37, 1,10,4,2,12,37, 1,10,4,3,12,37, 1,10,3,2,13,37, 1,10,3,3,13,37, 1,10,3,6,14,21, + 1,9,13,2,3,38, 1,9,13,4,1,6, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,12,4,1,6, 1,9,11,2,5,38, 1,9,11,4,1,6, 1,9,10,2,6,38, + 1,9,10,4,1,6, 1,9,9,2,7,38, 1,9,9,4,1,6, 1,9,8,2,8,38, 1,9,8,4,1,6, 1,9,7,2,9,38, 1,9,7,4,1,6, 1,9,6,2,10,38, + 1,9,6,4,1,6, 1,9,5,2,11,38, 1,9,5,4,1,6, 1,9,4,2,12,38, 1,9,4,4,1,6, 1,9,3,2,13,38, 1,9,3,4,1,6, 1,9,3,6,14,22, + 1,5,11,2,5,42, 1,5,11,3,5,42, 1,5,11,5,1,10, 1,5,10,2,6,42, 1,5,10,3,6,42, 1,5,9,2,7,42, 1,5,9,3,7,42, 1,5,8,2,8,42, + 1,5,8,3,8,42, 1,5,7,2,9,42, 1,5,7,3,9,42, 1,5,6,2,10,42, 1,5,6,3,10,42, 1,5,5,2,11,42, 1,5,5,3,11,42, 1,5,5,6,14,26, + 1,4,11,2,5,43, 1,4,11,4,1,11, 1,4,11,5,1,11, 1,4,10,2,6,43, 1,4,10,4,1,11, 1,4,9,2,7,43, 1,4,9,4,1,11, 1,4,8,2,8,43, + 1,4,8,4,1,11, 1,4,7,2,9,43, 1,4,7,4,1,11, 1,4,6,2,10,43, 1,4,6,4,1,11, 1,4,5,2,11,43, 1,4,5,4,1,11, 1,4,4,2,12,43, + 1,4,4,3,12,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,11,13,2,3,36, 2,11,13,3,3,36, 2,11,13,5,2,4, 2,11,12,2,4,36, 2,11,12,3,4,36, + 2,11,11,2,5,36, 2,11,11,3,5,36, 2,11,10,2,6,36, 2,11,10,3,6,36, 2,11,9,2,7,36, 2,11,9,3,7,36, 2,11,8,2,8,36, 2,11,8,3,8,36, + 2,11,7,2,9,36, 2,11,7,3,9,36, 2,11,6,2,10,36, 2,11,6,3,10,36, 2,11,5,2,11,36, 2,11,5,3,11,36, 2,11,4,2,12,36, 2,11,4,3,12,36, + 2,11,3,2,13,36, 2,11,3,3,13,36, 2,11,3,6,13,20, 2,10,13,5,2,5, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,3,6,13,22, 2,8,13,2,3,39, + 2,8,13,4,2,7, 2,8,13,5,2,7, 2,8,12,2,4,39, 2,8,12,4,2,7, 2,8,11,2,5,39, 2,8,11,4,2,7, 2,8,10,2,6,39, 2,8,10,4,2,7, + 2,8,9,2,7,39, 2,8,9,4,2,7, 2,8,8,2,8,39, 2,8,8,4,2,7, 2,8,7,2,9,39, 2,8,7,4,2,7, 2,8,6,2,10,39, 2,8,6,4,2,7, + 2,8,5,2,11,39, 2,8,5,4,2,7, 2,8,4,2,12,39, 2,8,4,4,2,7, 2,8,3,2,13,39, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,6,12,2,4,41, + 2,6,12,3,4,41, 2,6,12,4,2,9, 2,6,12,5,2,9, 2,6,11,2,5,41, 2,6,11,3,5,41, 2,6,10,2,6,41, 2,6,10,3,6,41, 2,6,9,2,7,41, + 2,6,9,3,7,41, 2,6,8,2,8,41, 2,6,8,3,8,41, 2,6,7,2,9,41, 2,6,7,3,9,41, 2,6,6,2,10,41, 2,6,6,3,10,41, 2,6,5,2,11,41, + 2,6,5,3,11,41, 2,6,4,2,12,41, 2,6,4,3,12,41, 2,6,4,4,2,9, 2,6,4,6,13,25, 2,5,11,5,2,10, 2,5,5,6,13,26, 2,4,11,5,2,11, + 2,4,4,3,12,43, 2,4,4,6,13,27, 2,3,12,2,4,44, 2,3,12,3,4,44, 2,3,12,4,2,12, 2,3,12,5,2,12, 2,3,11,2,5,44, 2,3,11,4,2,12, + 2,3,10,2,6,44, 2,3,10,4,2,12, 2,3,9,2,7,44, 2,3,9,4,2,12, 2,3,8,2,8,44, 2,3,8,4,2,12, 2,3,7,2,9,44, 2,3,7,4,2,12, + 2,3,6,2,10,44, 2,3,6,4,2,12, 2,3,5,2,11,44, 2,3,5,4,2,12, 2,3,4,2,12,44, 2,3,4,4,2,12, 2,3,4,6,13,28, 3,12,12,2,4,35, + 3,12,12,3,4,35, 3,12,12,5,3,3, 3,12,11,2,5,35, 3,12,11,3,5,35, 3,12,10,2,6,35, 3,12,10,3,6,35, 3,12,9,2,7,35, 3,12,9,3,7,35, + 3,12,8,2,8,35, 3,12,8,3,8,35, 3,12,7,2,9,35, 3,12,7,3,9,35, 3,12,6,2,10,35, 3,12,6,3,10,35, 3,12,5,2,11,35, 3,12,5,3,11,35, + 3,12,4,2,12,35, 3,12,4,3,12,35, 3,12,4,6,12,19, 3,11,13,3,3,36, 3,11,13,5,3,4, 3,11,3,3,13,36, 3,11,3,6,12,20, 3,10,13,5,3,5, + 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,3,6,12,22, 3,8,13,5,3,7, 3,8,3,6,12,23, 3,7,13,2,3,40, 3,7,13,4,3,8, 3,7,13,5,3,8, + 3,7,12,2,4,40, 3,7,11,2,5,40, 3,7,10,2,6,40, 3,7,9,2,7,40, 3,7,8,2,8,40, 3,7,7,2,9,40, 3,7,6,2,10,40, 3,7,5,2,11,40, + 3,7,4,2,12,40, 3,7,3,2,13,40, 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,4,4,3,9, 3,6,4,6,12,25, + 3,5,11,5,3,10, 3,5,5,6,12,26, 3,4,11,5,3,11, 3,4,4,3,12,43, 3,4,4,6,12,27, 3,3,12,3,4,44, 3,3,12,5,3,12, 3,3,4,6,12,28, + 3,2,12,2,4,45, 3,2,12,5,3,13, 3,2,11,2,5,45, 3,2,10,2,6,45, 3,2,9,2,7,45, 3,2,8,2,8,45, 3,2,7,2,9,45, 3,2,6,2,10,45, + 3,2,5,2,11,45, 3,2,4,2,12,45, 3,2,4,6,12,29, 3,1,12,2,4,46, 3,1,12,4,3,14, 3,1,12,5,3,14, 3,1,11,2,5,46, 3,1,11,4,3,14, + 3,1,10,2,6,46, 3,1,10,4,3,14, 3,1,9,2,7,46, 3,1,9,4,3,14, 3,1,8,2,8,46, 3,1,8,4,3,14, 3,1,7,2,9,46, 3,1,7,4,3,14, + 3,1,6,2,10,46, 3,1,6,4,3,14, 3,1,5,2,11,46, 3,1,5,4,3,14, 3,1,4,2,12,46, 3,1,4,4,3,14, 3,1,4,6,12,30, 4,13,12,2,4,34, + 4,13,12,3,4,34, 4,13,12,5,4,2, 4,13,11,2,5,34, 4,13,11,3,5,34, 4,13,10,2,6,34, 4,13,10,3,6,34, 4,13,9,2,7,34, 4,13,9,3,7,34, + 4,13,8,2,8,34, 4,13,8,3,8,34, 4,13,7,2,9,34, 4,13,7,3,9,34, 4,13,6,2,10,34, 4,13,6,3,10,34, 4,13,5,2,11,34, 4,13,5,3,11,34, + 4,13,4,2,12,34, 4,13,4,3,12,34, 4,13,4,6,11,18, 4,12,12,5,4,3, 4,12,4,6,11,19, 4,11,13,3,3,36, 4,11,13,5,4,4, 4,11,3,3,13,36, + 4,11,3,6,11,20, 4,10,13,5,4,5, 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,6,11,22, 4,8,13,5,4,7, 4,8,3,6,11,23, 4,7,13,4,4,8, + 4,7,13,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,4,4,4,9, 4,6,4,6,11,25, 4,5,11,5,4,10, + 4,5,5,6,11,26, 4,4,11,5,4,11, 4,4,4,3,12,43, 4,4,4,6,11,27, 4,3,12,3,4,44, 4,3,12,5,4,12, 4,3,4,6,11,28, 4,2,12,5,4,13, + 4,2,4,6,11,29, 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,4,4,4,14, 4,1,4,6,11,30, 4,0,11,2,5,47, 4,0,11,5,4,15, 4,0,10,2,6,47, + 4,0,9,2,7,47, 4,0,8,2,8,47, 4,0,7,2,9,47, 4,0,6,2,10,47, 4,0,5,2,11,47, 4,0,5,6,11,31, 5,14,11,2,5,33, 5,14,11,3,5,33, + 5,14,11,5,5,1, 5,14,10,2,6,33, 5,14,10,3,6,33, 5,14,9,2,7,33, 5,14,9,3,7,33, 5,14,8,2,8,33, 5,14,8,3,8,33, 5,14,7,2,9,33, + 5,14,7,3,9,33, 5,14,6,2,10,33, 5,14,6,3,10,33, 5,14,5,2,11,33, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,12,3,4,34, 5,13,12,5,5,2, + 5,13,4,3,12,34, 5,13,4,6,10,18, 5,12,12,5,5,3, 5,12,4,6,10,19, 5,11,13,3,3,36, 5,11,13,5,5,4, 5,11,3,3,13,36, 5,11,3,6,10,20, + 5,10,13,5,5,5, 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,3,6,10,22, 5,8,13,5,5,7, 5,8,3,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, + 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,4,4,5,9, 5,6,4,6,10,25, 5,5,11,5,5,10, 5,5,5,6,10,26, + 5,4,11,5,5,11, 5,4,4,3,12,43, 5,4,4,6,10,27, 5,3,12,3,4,44, 5,3,12,5,5,12, 5,3,4,6,10,28, 5,2,12,5,5,13, 5,2,4,6,10,29, + 5,1,12,4,5,14, 5,1,12,5,5,14, 5,1,4,4,5,14, 5,1,4,6,10,30, 5,0,11,5,5,15, 5,0,5,6,10,31, 6,15,9,2,7,32, 6,15,9,3,7,32, + 6,15,9,5,6,0, 6,15,8,2,8,32, 6,15,8,3,8,32, 6,15,7,2,9,32, 6,15,7,3,9,32, 6,15,7,6,9,16, 6,14,11,3,5,33, 6,14,11,5,6,1, + 6,14,10,3,6,33, 6,14,6,3,10,33, 6,14,5,3,11,33, 6,14,5,6,9,17, 6,13,12,3,4,34, 6,13,12,5,6,2, 6,13,4,3,12,34, 6,13,4,6,9,18, + 6,12,12,5,6,3, 6,12,4,6,9,19, 6,11,13,3,3,36, 6,11,13,5,6,4, 6,11,3,3,13,36, 6,11,3,6,9,20, 6,10,13,5,6,5, 6,10,3,6,9,21, + 6,9,13,5,6,6, 6,9,3,6,9,22, 6,8,13,5,6,7, 6,8,3,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, + 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,4,4,6,9, 6,6,4,6,9,25, 6,5,11,5,6,10, 6,5,5,6,9,26, 6,4,11,5,6,11, 6,4,4,3,12,43, + 6,4,4,6,9,27, 6,3,12,3,4,44, 6,3,12,5,6,12, 6,3,4,6,9,28, 6,2,12,5,6,13, 6,2,4,6,9,29, 6,1,12,4,6,14, 6,1,12,5,6,14, + 6,1,4,4,6,14, 6,1,4,6,9,30, 6,0,11,5,6,15, 6,0,5,6,9,31, 7,15,9,3,7,32, 7,15,9,5,7,0, 7,15,8,3,8,32, 7,15,7,3,9,32, + 7,15,7,6,8,16, 7,14,11,3,5,33, 7,14,11,5,7,1, 7,14,10,3,6,33, 7,14,6,3,10,33, 7,14,5,3,11,33, 7,14,5,6,8,17, 7,13,12,3,4,34, + 7,13,12,5,7,2, 7,13,4,3,12,34, 7,13,4,6,8,18, 7,12,12,5,7,3, 7,12,4,6,8,19, 7,11,13,3,3,36, 7,11,13,5,7,4, 7,11,3,3,13,36, + 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,3,6,8,22, 7,8,13,5,7,7, 7,8,3,6,8,23, 7,7,13,4,7,8, + 7,7,13,5,7,8, 7,7,3,4,7,8, 7,7,3,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,4,4,7,9, 7,6,4,6,8,25, 7,5,11,5,7,10, + 7,5,5,6,8,26, 7,4,11,5,7,11, 7,4,4,3,12,43, 7,4,4,6,8,27, 7,3,12,3,4,44, 7,3,12,5,7,12, 7,3,4,6,8,28, 7,2,12,5,7,13, + 7,2,4,6,8,29, 7,1,12,4,7,14, 7,1,12,5,7,14, 7,1,4,4,7,14, 7,1,4,6,8,30, 7,0,11,5,7,15, 7,0,5,6,8,31, 8,15,9,3,7,32, + 8,15,9,5,8,0, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,7,6,7,16, 8,14,11,3,5,33, 8,14,11,5,8,1, 8,14,10,3,6,33, 8,14,6,3,10,33, + 8,14,5,3,11,33, 8,14,5,6,7,17, 8,13,12,3,4,34, 8,13,12,5,8,2, 8,13,4,3,12,34, 8,13,4,6,7,18, 8,12,12,5,8,3, 8,12,4,6,7,19, + 8,11,13,3,3,36, 8,11,13,5,8,4, 8,11,3,3,13,36, 8,11,3,6,7,20, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,6,7,22, + 8,8,13,5,8,7, 8,8,3,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, + 8,6,4,4,8,9, 8,6,4,6,7,25, 8,5,11,5,8,10, 8,5,5,6,7,26, 8,4,11,5,8,11, 8,4,4,3,12,43, 8,4,4,6,7,27, 8,3,12,3,4,44, + 8,3,12,5,8,12, 8,3,4,6,7,28, 8,2,12,5,8,13, 8,2,4,6,7,29, 8,1,12,4,8,14, 8,1,12,5,8,14, 8,1,4,4,8,14, 8,1,4,6,7,30, + 8,0,11,5,8,15, 8,0,5,6,7,31, 9,15,9,1,7,32, 9,15,9,3,7,32, 9,15,9,5,9,0, 9,15,8,1,8,32, 9,15,8,3,8,32, 9,15,7,1,9,32, + 9,15,7,3,9,32, 9,15,7,6,6,16, 9,14,11,3,5,33, 9,14,11,5,9,1, 9,14,10,3,6,33, 9,14,6,3,10,33, 9,14,5,3,11,33, 9,14,5,6,6,17, + 9,13,12,3,4,34, 9,13,12,5,9,2, 9,13,4,3,12,34, 9,13,4,6,6,18, 9,12,12,5,9,3, 9,12,4,6,6,19, 9,11,13,3,3,36, 9,11,13,5,9,4, + 9,11,3,3,13,36, 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, 9,9,3,6,6,22, 9,8,13,5,9,7, 9,8,3,6,6,23, + 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,3,4,9,8, 9,7,3,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,4,4,9,9, 9,6,4,6,6,25, + 9,5,11,5,9,10, 9,5,5,6,6,26, 9,4,11,5,9,11, 9,4,4,3,12,43, 9,4,4,6,6,27, 9,3,12,3,4,44, 9,3,12,5,9,12, 9,3,4,6,6,28, + 9,2,12,5,9,13, 9,2,4,6,6,29, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,4,4,9,14, 9,1,4,6,6,30, 9,0,11,5,9,15, 9,0,5,6,6,31, + 10,14,11,1,5,33, 10,14,11,3,5,33, 10,14,11,5,10,1, 10,14,10,1,6,33, 10,14,10,3,6,33, 10,14,9,1,7,33, 10,14,9,3,7,33, 10,14,8,1,8,33, + 10,14,8,3,8,33, 10,14,7,1,9,33, 10,14,7,3,9,33, 10,14,6,1,10,33, 10,14,6,3,10,33, 10,14,5,1,11,33, 10,14,5,3,11,33, 10,14,5,6,5,17, + 10,13,12,3,4,34, 10,13,12,5,10,2, 10,13,4,3,12,34, 10,13,4,6,5,18, 10,12,12,5,10,3, 10,12,4,6,5,19, 10,11,13,3,3,36, 10,11,13,5,10,4, + 10,11,3,3,13,36, 10,11,3,6,5,20, 10,10,13,5,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,3,6,5,22, 10,8,13,5,10,7, 10,8,3,6,5,23, + 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,4,4,10,9, 10,6,4,6,5,25, + 10,5,11,5,10,10, 10,5,5,6,5,26, 10,4,11,5,10,11, 10,4,4,3,12,43, 10,4,4,6,5,27, 10,3,12,3,4,44, 10,3,12,5,10,12, 10,3,4,6,5,28, + 10,2,12,5,10,13, 10,2,4,6,5,29, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,4,4,10,14, 10,1,4,6,5,30, 10,0,11,5,10,15, 10,0,5,6,5,31, + 11,13,12,1,4,34, 11,13,12,3,4,34, 11,13,12,5,11,2, 11,13,11,1,5,34, 11,13,11,3,5,34, 11,13,10,1,6,34, 11,13,10,3,6,34, 11,13,9,1,7,34, + 11,13,9,3,7,34, 11,13,8,1,8,34, 11,13,8,3,8,34, 11,13,7,1,9,34, 11,13,7,3,9,34, 11,13,6,1,10,34, 11,13,6,3,10,34, 11,13,5,1,11,34, + 11,13,5,3,11,34, 11,13,4,1,12,34, 11,13,4,3,12,34, 11,13,4,6,4,18, 11,12,12,5,11,3, 11,12,4,6,4,19, 11,11,13,3,3,36, 11,11,13,5,11,4, + 11,11,3,3,13,36, 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,6,4,22, 11,8,13,5,11,7, 11,8,3,6,4,23, + 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,4,4,11,9, 11,6,4,6,4,25, + 11,5,11,5,11,10, 11,5,5,6,4,26, 11,4,11,5,11,11, 11,4,4,3,12,43, 11,4,4,6,4,27, 11,3,12,3,4,44, 11,3,12,5,11,12, 11,3,4,6,4,28, + 11,2,12,5,11,13, 11,2,4,6,4,29, 11,1,12,4,11,14, 11,1,12,5,11,14, 11,1,4,4,11,14, 11,1,4,6,4,30, 11,0,11,1,5,47, 11,0,11,5,11,15, + 11,0,10,1,6,47, 11,0,9,1,7,47, 11,0,8,1,8,47, 11,0,7,1,9,47, 11,0,6,1,10,47, 11,0,5,1,11,47, 11,0,5,6,4,31, 12,12,12,1,4,35, + 12,12,12,3,4,35, 12,12,12,5,12,3, 12,12,11,1,5,35, 12,12,11,3,5,35, 12,12,10,1,6,35, 12,12,10,3,6,35, 12,12,9,1,7,35, 12,12,9,3,7,35, + 12,12,8,1,8,35, 12,12,8,3,8,35, 12,12,7,1,9,35, 12,12,7,3,9,35, 12,12,6,1,10,35, 12,12,6,3,10,35, 12,12,5,1,11,35, 12,12,5,3,11,35, + 12,12,4,1,12,35, 12,12,4,3,12,35, 12,12,4,6,3,19, 12,11,13,3,3,36, 12,11,13,5,12,4, 12,11,3,3,13,36, 12,11,3,6,3,20, 12,10,13,5,12,5, + 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,3,6,3,22, 12,8,13,5,12,7, 12,8,3,6,3,23, 12,7,13,1,3,40, 12,7,13,4,12,8, 12,7,13,5,12,8, + 12,7,12,1,4,40, 12,7,11,1,5,40, 12,7,10,1,6,40, 12,7,9,1,7,40, 12,7,8,1,8,40, 12,7,7,1,9,40, 12,7,6,1,10,40, 12,7,5,1,11,40, + 12,7,4,1,12,40, 12,7,3,1,13,40, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,4,4,12,9, 12,6,4,6,3,25, + 12,5,11,5,12,10, 12,5,5,6,3,26, 12,4,11,5,12,11, 12,4,4,3,12,43, 12,4,4,6,3,27, 12,3,12,3,4,44, 12,3,12,5,12,12, 12,3,4,6,3,28, + 12,2,12,1,4,45, 12,2,12,5,12,13, 12,2,11,1,5,45, 12,2,10,1,6,45, 12,2,9,1,7,45, 12,2,8,1,8,45, 12,2,7,1,9,45, 12,2,6,1,10,45, + 12,2,5,1,11,45, 12,2,4,1,12,45, 12,2,4,6,3,29, 12,1,12,1,4,46, 12,1,12,4,12,14, 12,1,12,5,12,14, 12,1,11,1,5,46, 12,1,11,4,12,14, + 12,1,10,1,6,46, 12,1,10,4,12,14, 12,1,9,1,7,46, 12,1,9,4,12,14, 12,1,8,1,8,46, 12,1,8,4,12,14, 12,1,7,1,9,46, 12,1,7,4,12,14, + 12,1,6,1,10,46, 12,1,6,4,12,14, 12,1,5,1,11,46, 12,1,5,4,12,14, 12,1,4,1,12,46, 12,1,4,4,12,14, 12,1,4,6,3,30, 13,11,13,1,3,36, + 13,11,13,3,3,36, 13,11,13,5,13,4, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, 13,11,11,3,5,36, 13,11,10,1,6,36, 13,11,10,3,6,36, + 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, 13,11,7,3,9,36, 13,11,6,1,10,36, 13,11,6,3,10,36, + 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, 13,11,3,3,13,36, 13,11,3,6,2,20, 13,10,13,5,13,5, + 13,10,3,6,2,21, 13,9,13,5,13,6, 13,9,3,6,2,22, 13,8,13,1,3,39, 13,8,13,4,13,7, 13,8,13,5,13,7, 13,8,12,1,4,39, 13,8,12,4,13,7, + 13,8,11,1,5,39, 13,8,11,4,13,7, 13,8,10,1,6,39, 13,8,10,4,13,7, 13,8,9,1,7,39, 13,8,9,4,13,7, 13,8,8,1,8,39, 13,8,8,4,13,7, + 13,8,7,1,9,39, 13,8,7,4,13,7, 13,8,6,1,10,39, 13,8,6,4,13,7, 13,8,5,1,11,39, 13,8,5,4,13,7, 13,8,4,1,12,39, 13,8,4,4,13,7, + 13,8,3,1,13,39, 13,8,3,4,13,7, 13,8,3,6,2,23, 13,6,12,1,4,41, 13,6,12,3,4,41, 13,6,12,4,13,9, 13,6,12,5,13,9, 13,6,11,1,5,41, + 13,6,11,3,5,41, 13,6,10,1,6,41, 13,6,10,3,6,41, 13,6,9,1,7,41, 13,6,9,3,7,41, 13,6,8,1,8,41, 13,6,8,3,8,41, 13,6,7,1,9,41, + 13,6,7,3,9,41, 13,6,6,1,10,41, 13,6,6,3,10,41, 13,6,5,1,11,41, 13,6,5,3,11,41, 13,6,4,1,12,41, 13,6,4,3,12,41, 13,6,4,4,13,9, + 13,6,4,6,2,25, 13,5,11,5,13,10, 13,5,5,6,2,26, 13,4,11,5,13,11, 13,4,4,3,12,43, 13,4,4,6,2,27, 13,3,12,1,4,44, 13,3,12,3,4,44, + 13,3,12,4,13,12, 13,3,12,5,13,12, 13,3,11,1,5,44, 13,3,11,4,13,12, 13,3,10,1,6,44, 13,3,10,4,13,12, 13,3,9,1,7,44, 13,3,9,4,13,12, + 13,3,8,1,8,44, 13,3,8,4,13,12, 13,3,7,1,9,44, 13,3,7,4,13,12, 13,3,6,1,10,44, 13,3,6,4,13,12, 13,3,5,1,11,44, 13,3,5,4,13,12, + 13,3,4,1,12,44, 13,3,4,4,13,12, 13,3,4,6,2,28, 14,10,13,1,3,37, 14,10,13,3,3,37, 14,10,13,5,14,5, 14,10,12,1,4,37, 14,10,12,3,4,37, + 14,10,11,1,5,37, 14,10,11,3,5,37, 14,10,10,1,6,37, 14,10,10,3,6,37, 14,10,9,1,7,37, 14,10,9,3,7,37, 14,10,8,1,8,37, 14,10,8,3,8,37, + 14,10,7,1,9,37, 14,10,7,3,9,37, 14,10,6,1,10,37, 14,10,6,3,10,37, 14,10,5,1,11,37, 14,10,5,3,11,37, 14,10,4,1,12,37, 14,10,4,3,12,37, + 14,10,3,1,13,37, 14,10,3,3,13,37, 14,10,3,6,1,21, 14,9,13,1,3,38, 14,9,13,4,14,6, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,12,4,14,6, + 14,9,11,1,5,38, 14,9,11,4,14,6, 14,9,10,1,6,38, 14,9,10,4,14,6, 14,9,9,1,7,38, 14,9,9,4,14,6, 14,9,8,1,8,38, 14,9,8,4,14,6, + 14,9,7,1,9,38, 14,9,7,4,14,6, 14,9,6,1,10,38, 14,9,6,4,14,6, 14,9,5,1,11,38, 14,9,5,4,14,6, 14,9,4,1,12,38, 14,9,4,4,14,6, + 14,9,3,1,13,38, 14,9,3,4,14,6, 14,9,3,6,1,22, 14,5,11,1,5,42, 14,5,11,3,5,42, 14,5,11,5,14,10, 14,5,10,1,6,42, 14,5,10,3,6,42, + 14,5,9,1,7,42, 14,5,9,3,7,42, 14,5,8,1,8,42, 14,5,8,3,8,42, 14,5,7,1,9,42, 14,5,7,3,9,42, 14,5,6,1,10,42, 14,5,6,3,10,42, + 14,5,5,1,11,42, 14,5,5,3,11,42, 14,5,5,6,1,26, 14,4,11,1,5,43, 14,4,11,4,14,11, 14,4,11,5,14,11, 14,4,10,1,6,43, 14,4,10,4,14,11, + 14,4,9,1,7,43, 14,4,9,4,14,11, 14,4,8,1,8,43, 14,4,8,4,14,11, 14,4,7,1,9,43, 14,4,7,4,14,11, 14,4,6,1,10,43, 14,4,6,4,14,11, + 14,4,5,1,11,43, 14,4,5,4,14,11, 14,4,4,1,12,43, 14,4,4,3,12,43, 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1466, + count = 926, + faces = { + 1,9,13,2,2,86, 1,9,13,3,2,86, 1,9,13,5,1,54, 1,9,12,2,3,86, 1,9,12,3,3,86, 1,9,11,2,4,86, 1,9,11,3,4,86, 1,9,10,2,5,86, + 1,9,10,3,5,86, 1,9,9,2,6,86, 1,9,9,3,6,86, 1,9,8,2,7,86, 1,9,8,3,7,86, 1,9,7,2,8,86, 1,9,7,3,8,86, 1,9,6,2,9,86, + 1,9,6,3,9,86, 1,9,5,2,10,86, 1,9,5,3,10,86, 1,9,4,2,11,86, 1,9,4,3,11,86, 1,9,3,2,12,86, 1,9,3,3,12,86, 1,9,3,6,14,70, + 1,8,13,2,2,87, 1,8,13,4,1,55, 1,8,13,5,1,55, 1,8,12,2,3,87, 1,8,12,4,1,55, 1,8,11,2,4,87, 1,8,11,4,1,55, 1,8,10,2,5,87, + 1,8,10,4,1,55, 1,8,9,2,6,87, 1,8,9,4,1,55, 1,8,8,2,7,87, 1,8,8,4,1,55, 1,8,7,2,8,87, 1,8,7,4,1,55, 1,8,6,2,9,87, + 1,8,6,4,1,55, 1,8,5,2,10,87, 1,8,5,4,1,55, 1,8,4,2,11,87, 1,8,4,4,1,55, 1,8,3,2,12,87, 1,8,3,4,1,55, 1,8,3,6,14,71, + 1,4,11,2,4,91, 1,4,11,3,4,91, 1,4,11,5,1,59, 1,4,10,2,5,91, 1,4,10,3,5,91, 1,4,9,2,6,91, 1,4,9,3,6,91, 1,4,8,2,7,91, + 1,4,8,3,7,91, 1,4,7,2,8,91, 1,4,7,3,8,91, 1,4,6,2,9,91, 1,4,6,3,9,91, 1,4,5,2,10,91, 1,4,5,3,10,91, 1,4,4,2,11,91, + 1,4,4,3,11,91, 1,4,4,6,14,75, 1,3,11,2,4,92, 1,3,11,4,1,60, 1,3,11,5,1,60, 1,3,10,2,5,92, 1,3,10,4,1,60, 1,3,9,2,6,92, + 1,3,9,4,1,60, 1,3,8,2,7,92, 1,3,8,4,1,60, 1,3,7,2,8,92, 1,3,7,4,1,60, 1,3,6,2,9,92, 1,3,6,4,1,60, 1,3,5,2,10,92, + 1,3,5,4,1,60, 1,3,4,2,11,92, 1,3,4,4,1,60, 1,3,4,6,14,76, 2,10,13,2,2,85, 2,10,13,3,2,85, 2,10,13,5,2,53, 2,10,12,2,3,85, + 2,10,12,3,3,85, 2,10,11,2,4,85, 2,10,11,3,4,85, 2,10,10,2,5,85, 2,10,10,3,5,85, 2,10,9,2,6,85, 2,10,9,3,6,85, 2,10,8,2,7,85, + 2,10,8,3,7,85, 2,10,7,2,8,85, 2,10,7,3,8,85, 2,10,6,2,9,85, 2,10,6,3,9,85, 2,10,5,2,10,85, 2,10,5,3,10,85, 2,10,4,2,11,85, + 2,10,4,3,11,85, 2,10,3,2,12,85, 2,10,3,3,12,85, 2,10,3,6,13,69, 2,9,13,5,2,54, 2,9,3,6,13,70, 2,8,13,5,2,55, 2,8,3,6,13,71, + 2,7,13,2,2,88, 2,7,13,4,2,56, 2,7,13,5,2,56, 2,7,12,2,3,88, 2,7,12,4,2,56, 2,7,11,2,4,88, 2,7,11,4,2,56, 2,7,10,2,5,88, + 2,7,10,4,2,56, 2,7,9,2,6,88, 2,7,9,4,2,56, 2,7,8,2,7,88, 2,7,8,4,2,56, 2,7,7,2,8,88, 2,7,7,4,2,56, 2,7,6,2,9,88, + 2,7,6,4,2,56, 2,7,5,2,10,88, 2,7,5,4,2,56, 2,7,4,2,11,88, 2,7,4,4,2,56, 2,7,3,2,12,88, 2,7,3,4,2,56, 2,7,3,6,13,72, + 2,5,11,2,4,90, 2,5,11,3,4,90, 2,5,11,5,2,58, 2,5,10,2,5,90, 2,5,10,3,5,90, 2,5,9,2,6,90, 2,5,9,3,6,90, 2,5,8,2,7,90, + 2,5,8,3,7,90, 2,5,7,2,8,90, 2,5,7,3,8,90, 2,5,6,2,9,90, 2,5,6,3,9,90, 2,5,5,2,10,90, 2,5,5,3,10,90, 2,5,5,6,13,74, + 2,4,11,5,2,59, 2,4,4,3,11,91, 2,4,4,6,13,75, 2,3,11,5,2,60, 2,3,4,6,13,76, 2,2,11,2,4,93, 2,2,11,4,2,61, 2,2,11,5,2,61, + 2,2,10,2,5,93, 2,2,10,4,2,61, 2,2,9,2,6,93, 2,2,9,4,2,61, 2,2,8,2,7,93, 2,2,8,4,2,61, 2,2,7,2,8,93, 2,2,7,4,2,61, + 2,2,6,2,9,93, 2,2,6,4,2,61, 2,2,5,2,10,93, 2,2,5,4,2,61, 2,2,4,2,11,93, 2,2,4,4,2,61, 2,2,4,6,13,77, 3,11,13,2,2,84, + 3,11,13,3,2,84, 3,11,13,5,3,52, 3,11,12,2,3,84, 3,11,12,3,3,84, 3,11,11,2,4,84, 3,11,11,3,4,84, 3,11,10,2,5,84, 3,11,10,3,5,84, + 3,11,9,2,6,84, 3,11,9,3,6,84, 3,11,8,2,7,84, 3,11,8,3,7,84, 3,11,7,2,8,84, 3,11,7,3,8,84, 3,11,6,2,9,84, 3,11,6,3,9,84, + 3,11,5,2,10,84, 3,11,5,3,10,84, 3,11,4,2,11,84, 3,11,4,3,11,84, 3,11,3,2,12,84, 3,11,3,3,12,84, 3,11,3,6,12,68, 3,10,13,5,3,53, + 3,10,3,6,12,69, 3,9,13,5,3,54, 3,9,3,6,12,70, 3,8,13,5,3,55, 3,8,3,6,12,71, 3,7,13,4,3,56, 3,7,13,5,3,56, 3,7,3,4,3,56, + 3,7,3,6,12,72, 3,6,12,2,3,89, 3,6,12,4,3,57, 3,6,12,5,3,57, 3,6,11,2,4,89, 3,6,10,2,5,89, 3,6,9,2,6,89, 3,6,8,2,7,89, + 3,6,7,2,8,89, 3,6,6,2,9,89, 3,6,5,2,10,89, 3,6,4,2,11,89, 3,6,4,4,3,57, 3,6,4,6,12,73, 3,5,11,5,3,58, 3,5,5,6,12,74, + 3,4,11,5,3,59, 3,4,4,3,11,91, 3,4,4,6,12,75, 3,3,11,5,3,60, 3,3,4,6,12,76, 3,2,11,5,3,61, 3,2,4,6,12,77, 3,1,11,2,4,94, + 3,1,11,4,3,62, 3,1,11,5,3,62, 3,1,10,2,5,94, 3,1,10,4,3,62, 3,1,9,2,6,94, 3,1,9,4,3,62, 3,1,8,2,7,94, 3,1,8,4,3,62, + 3,1,7,2,8,94, 3,1,7,4,3,62, 3,1,6,2,9,94, 3,1,6,4,3,62, 3,1,5,2,10,94, 3,1,5,4,3,62, 3,1,4,2,11,94, 3,1,4,4,3,62, + 3,1,4,6,12,78, 4,12,12,2,3,83, 4,12,12,3,3,83, 4,12,12,5,4,51, 4,12,11,2,4,83, 4,12,11,3,4,83, 4,12,10,2,5,83, 4,12,10,3,5,83, + 4,12,9,2,6,83, 4,12,9,3,6,83, 4,12,8,2,7,83, 4,12,8,3,7,83, 4,12,7,2,8,83, 4,12,7,3,8,83, 4,12,6,2,9,83, 4,12,6,3,9,83, + 4,12,5,2,10,83, 4,12,5,3,10,83, 4,12,4,2,11,83, 4,12,4,3,11,83, 4,12,4,6,11,67, 4,11,13,3,2,84, 4,11,13,5,4,52, 4,11,3,3,12,84, + 4,11,3,6,11,68, 4,10,13,5,4,53, 4,10,3,6,11,69, 4,9,13,5,4,54, 4,9,3,6,11,70, 4,8,13,5,4,55, 4,8,3,6,11,71, 4,7,13,4,4,56, + 4,7,13,5,4,56, 4,7,3,4,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,4,4,57, 4,6,4,6,11,73, 4,5,11,5,4,58, + 4,5,5,6,11,74, 4,4,11,5,4,59, 4,4,4,3,11,91, 4,4,4,6,11,75, 4,3,11,5,4,60, 4,3,4,6,11,76, 4,2,11,5,4,61, 4,2,4,6,11,77, + 4,1,11,4,4,62, 4,1,11,5,4,62, 4,1,4,6,11,78, 4,0,10,2,5,95, 4,0,10,5,4,63, 4,0,9,2,6,95, 4,0,8,2,7,95, 4,0,7,2,8,95, + 4,0,6,2,9,95, 4,0,5,2,10,95, 4,0,4,2,11,95, 4,0,4,6,11,79, 5,13,12,2,3,82, 5,13,12,3,3,82, 5,13,12,5,5,50, 5,13,11,2,4,82, + 5,13,11,3,4,82, 5,13,10,2,5,82, 5,13,10,3,5,82, 5,13,9,2,6,82, 5,13,9,3,6,82, 5,13,8,2,7,82, 5,13,8,3,7,82, 5,13,7,2,8,82, + 5,13,7,3,8,82, 5,13,6,2,9,82, 5,13,6,3,9,82, 5,13,5,2,10,82, 5,13,5,3,10,82, 5,13,4,2,11,82, 5,13,4,3,11,82, 5,13,4,6,10,66, + 5,12,12,5,5,51, 5,12,4,6,10,67, 5,11,13,3,2,84, 5,11,13,5,5,52, 5,11,3,3,12,84, 5,11,3,6,10,68, 5,10,13,5,5,53, 5,10,3,6,10,69, + 5,9,13,5,5,54, 5,9,3,6,10,70, 5,8,13,5,5,55, 5,8,3,6,10,71, 5,7,13,4,5,56, 5,7,13,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, + 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,4,4,5,57, 5,6,4,6,10,73, 5,5,11,5,5,58, 5,5,5,6,10,74, 5,4,11,5,5,59, 5,4,4,3,11,91, + 5,4,4,6,10,75, 5,3,11,5,5,60, 5,3,4,6,10,76, 5,2,11,5,5,61, 5,2,4,6,10,77, 5,1,11,4,5,62, 5,1,11,5,5,62, 5,1,4,6,10,78, + 5,0,10,5,5,63, 5,0,4,6,10,79, 6,14,11,2,4,81, 6,14,11,3,4,81, 6,14,11,5,6,49, 6,14,10,2,5,81, 6,14,10,3,5,81, 6,14,9,2,6,81, + 6,14,9,3,6,81, 6,14,8,2,7,81, 6,14,8,3,7,81, 6,14,7,2,8,81, 6,14,7,3,8,81, 6,14,6,2,9,81, 6,14,6,3,9,81, 6,14,5,2,10,81, + 6,14,5,3,10,81, 6,14,5,6,9,65, 6,13,12,3,3,82, 6,13,12,5,6,50, 6,13,4,3,11,82, 6,13,4,6,9,66, 6,12,12,5,6,51, 6,12,4,6,9,67, + 6,11,13,3,2,84, 6,11,13,5,6,52, 6,11,3,3,12,84, 6,11,3,6,9,68, 6,10,13,5,6,53, 6,10,3,6,9,69, 6,9,13,5,6,54, 6,9,3,6,9,70, + 6,8,13,5,6,55, 6,8,3,6,9,71, 6,7,13,4,6,56, 6,7,13,5,6,56, 6,7,3,4,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, + 6,6,4,4,6,57, 6,6,4,6,9,73, 6,5,11,5,6,58, 6,5,5,6,9,74, 6,4,11,5,6,59, 6,4,4,3,11,91, 6,4,4,6,9,75, 6,3,11,5,6,60, + 6,3,4,6,9,76, 6,2,11,5,6,61, 6,2,4,6,9,77, 6,1,11,4,6,62, 6,1,11,5,6,62, 6,1,4,6,9,78, 6,0,10,5,6,63, 6,0,4,6,9,79, + 7,14,11,3,4,81, 7,14,11,5,7,49, 7,14,10,3,5,81, 7,14,9,3,6,81, 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,5,3,10,81, + 7,14,5,6,8,65, 7,13,12,3,3,82, 7,13,12,5,7,50, 7,13,4,3,11,82, 7,13,4,6,8,66, 7,12,12,5,7,51, 7,12,4,6,8,67, 7,11,13,3,2,84, + 7,11,13,5,7,52, 7,11,3,3,12,84, 7,11,3,6,8,68, 7,10,13,5,7,53, 7,10,3,6,8,69, 7,9,13,5,7,54, 7,9,3,6,8,70, 7,8,13,5,7,55, + 7,8,3,6,8,71, 7,7,13,4,7,56, 7,7,13,5,7,56, 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,4,7,57, + 7,6,4,6,8,73, 7,5,11,5,7,58, 7,5,5,6,8,74, 7,4,11,5,7,59, 7,4,4,3,11,91, 7,4,4,6,8,75, 7,3,11,5,7,60, 7,3,4,6,8,76, + 7,2,11,5,7,61, 7,2,4,6,8,77, 7,1,11,4,7,62, 7,1,11,5,7,62, 7,1,4,6,8,78, 7,0,10,5,7,63, 7,0,4,6,8,79, 8,14,11,3,4,81, + 8,14,11,5,8,49, 8,14,10,3,5,81, 8,14,9,3,6,81, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, 8,14,5,6,7,65, + 8,13,12,3,3,82, 8,13,12,5,8,50, 8,13,4,3,11,82, 8,13,4,6,7,66, 8,12,12,5,8,51, 8,12,4,6,7,67, 8,11,13,3,2,84, 8,11,13,5,8,52, + 8,11,3,3,12,84, 8,11,3,6,7,68, 8,10,13,5,8,53, 8,10,3,6,7,69, 8,9,13,5,8,54, 8,9,3,6,7,70, 8,8,13,5,8,55, 8,8,3,6,7,71, + 8,7,13,4,8,56, 8,7,13,5,8,56, 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,4,8,57, 8,6,4,6,7,73, + 8,5,11,5,8,58, 8,5,5,6,7,74, 8,4,11,5,8,59, 8,4,4,3,11,91, 8,4,4,6,7,75, 8,3,11,5,8,60, 8,3,4,6,7,76, 8,2,11,5,8,61, + 8,2,4,6,7,77, 8,1,11,4,8,62, 8,1,11,5,8,62, 8,1,4,6,7,78, 8,0,10,5,8,63, 8,0,4,6,7,79, 9,14,11,1,4,81, 9,14,11,3,4,81, + 9,14,11,5,9,49, 9,14,10,1,5,81, 9,14,10,3,5,81, 9,14,9,1,6,81, 9,14,9,3,6,81, 9,14,8,1,7,81, 9,14,8,3,7,81, 9,14,7,1,8,81, + 9,14,7,3,8,81, 9,14,6,1,9,81, 9,14,6,3,9,81, 9,14,5,1,10,81, 9,14,5,3,10,81, 9,14,5,6,6,65, 9,13,12,3,3,82, 9,13,12,5,9,50, + 9,13,4,3,11,82, 9,13,4,6,6,66, 9,12,12,5,9,51, 9,12,4,6,6,67, 9,11,13,3,2,84, 9,11,13,5,9,52, 9,11,3,3,12,84, 9,11,3,6,6,68, + 9,10,13,5,9,53, 9,10,3,6,6,69, 9,9,13,5,9,54, 9,9,3,6,6,70, 9,8,13,5,9,55, 9,8,3,6,6,71, 9,7,13,4,9,56, 9,7,13,5,9,56, + 9,7,3,4,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,4,4,9,57, 9,6,4,6,6,73, 9,5,11,5,9,58, 9,5,5,6,6,74, + 9,4,11,5,9,59, 9,4,4,3,11,91, 9,4,4,6,6,75, 9,3,11,5,9,60, 9,3,4,6,6,76, 9,2,11,5,9,61, 9,2,4,6,6,77, 9,1,11,4,9,62, + 9,1,11,5,9,62, 9,1,4,6,6,78, 9,0,10,5,9,63, 9,0,4,6,6,79, 10,13,12,1,3,82, 10,13,12,3,3,82, 10,13,12,5,10,50, 10,13,11,1,4,82, + 10,13,11,3,4,82, 10,13,10,1,5,82, 10,13,10,3,5,82, 10,13,9,1,6,82, 10,13,9,3,6,82, 10,13,8,1,7,82, 10,13,8,3,7,82, 10,13,7,1,8,82, + 10,13,7,3,8,82, 10,13,6,1,9,82, 10,13,6,3,9,82, 10,13,5,1,10,82, 10,13,5,3,10,82, 10,13,4,1,11,82, 10,13,4,3,11,82, 10,13,4,6,5,66, + 10,12,12,5,10,51, 10,12,4,6,5,67, 10,11,13,3,2,84, 10,11,13,5,10,52, 10,11,3,3,12,84, 10,11,3,6,5,68, 10,10,13,5,10,53, 10,10,3,6,5,69, + 10,9,13,5,10,54, 10,9,3,6,5,70, 10,8,13,5,10,55, 10,8,3,6,5,71, 10,7,13,4,10,56, 10,7,13,5,10,56, 10,7,3,4,10,56, 10,7,3,6,5,72, + 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,4,4,10,57, 10,6,4,6,5,73, 10,5,11,5,10,58, 10,5,5,6,5,74, 10,4,11,5,10,59, 10,4,4,3,11,91, + 10,4,4,6,5,75, 10,3,11,5,10,60, 10,3,4,6,5,76, 10,2,11,5,10,61, 10,2,4,6,5,77, 10,1,11,4,10,62, 10,1,11,5,10,62, 10,1,4,6,5,78, + 10,0,10,5,10,63, 10,0,4,6,5,79, 11,12,12,1,3,83, 11,12,12,3,3,83, 11,12,12,5,11,51, 11,12,11,1,4,83, 11,12,11,3,4,83, 11,12,10,1,5,83, + 11,12,10,3,5,83, 11,12,9,1,6,83, 11,12,9,3,6,83, 11,12,8,1,7,83, 11,12,8,3,7,83, 11,12,7,1,8,83, 11,12,7,3,8,83, 11,12,6,1,9,83, + 11,12,6,3,9,83, 11,12,5,1,10,83, 11,12,5,3,10,83, 11,12,4,1,11,83, 11,12,4,3,11,83, 11,12,4,6,4,67, 11,11,13,3,2,84, 11,11,13,5,11,52, + 11,11,3,3,12,84, 11,11,3,6,4,68, 11,10,13,5,11,53, 11,10,3,6,4,69, 11,9,13,5,11,54, 11,9,3,6,4,70, 11,8,13,5,11,55, 11,8,3,6,4,71, + 11,7,13,4,11,56, 11,7,13,5,11,56, 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,4,11,57, 11,6,4,6,4,73, + 11,5,11,5,11,58, 11,5,5,6,4,74, 11,4,11,5,11,59, 11,4,4,3,11,91, 11,4,4,6,4,75, 11,3,11,5,11,60, 11,3,4,6,4,76, 11,2,11,5,11,61, + 11,2,4,6,4,77, 11,1,11,4,11,62, 11,1,11,5,11,62, 11,1,4,6,4,78, 11,0,10,1,5,95, 11,0,10,5,11,63, 11,0,9,1,6,95, 11,0,8,1,7,95, + 11,0,7,1,8,95, 11,0,6,1,9,95, 11,0,5,1,10,95, 11,0,4,1,11,95, 11,0,4,6,4,79, 12,11,13,1,2,84, 12,11,13,3,2,84, 12,11,13,5,12,52, + 12,11,12,1,3,84, 12,11,12,3,3,84, 12,11,11,1,4,84, 12,11,11,3,4,84, 12,11,10,1,5,84, 12,11,10,3,5,84, 12,11,9,1,6,84, 12,11,9,3,6,84, + 12,11,8,1,7,84, 12,11,8,3,7,84, 12,11,7,1,8,84, 12,11,7,3,8,84, 12,11,6,1,9,84, 12,11,6,3,9,84, 12,11,5,1,10,84, 12,11,5,3,10,84, + 12,11,4,1,11,84, 12,11,4,3,11,84, 12,11,3,1,12,84, 12,11,3,3,12,84, 12,11,3,6,3,68, 12,10,13,5,12,53, 12,10,3,6,3,69, 12,9,13,5,12,54, + 12,9,3,6,3,70, 12,8,13,5,12,55, 12,8,3,6,3,71, 12,7,13,4,12,56, 12,7,13,5,12,56, 12,7,3,4,12,56, 12,7,3,6,3,72, 12,6,12,1,3,89, + 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,11,1,4,89, 12,6,10,1,5,89, 12,6,9,1,6,89, 12,6,8,1,7,89, 12,6,7,1,8,89, 12,6,6,1,9,89, + 12,6,5,1,10,89, 12,6,4,1,11,89, 12,6,4,4,12,57, 12,6,4,6,3,73, 12,5,11,5,12,58, 12,5,5,6,3,74, 12,4,11,5,12,59, 12,4,4,3,11,91, + 12,4,4,6,3,75, 12,3,11,5,12,60, 12,3,4,6,3,76, 12,2,11,5,12,61, 12,2,4,6,3,77, 12,1,11,1,4,94, 12,1,11,4,12,62, 12,1,11,5,12,62, + 12,1,10,1,5,94, 12,1,10,4,12,62, 12,1,9,1,6,94, 12,1,9,4,12,62, 12,1,8,1,7,94, 12,1,8,4,12,62, 12,1,7,1,8,94, 12,1,7,4,12,62, + 12,1,6,1,9,94, 12,1,6,4,12,62, 12,1,5,1,10,94, 12,1,5,4,12,62, 12,1,4,1,11,94, 12,1,4,4,12,62, 12,1,4,6,3,78, 13,10,13,1,2,85, + 13,10,13,3,2,85, 13,10,13,5,13,53, 13,10,12,1,3,85, 13,10,12,3,3,85, 13,10,11,1,4,85, 13,10,11,3,4,85, 13,10,10,1,5,85, 13,10,10,3,5,85, + 13,10,9,1,6,85, 13,10,9,3,6,85, 13,10,8,1,7,85, 13,10,8,3,7,85, 13,10,7,1,8,85, 13,10,7,3,8,85, 13,10,6,1,9,85, 13,10,6,3,9,85, + 13,10,5,1,10,85, 13,10,5,3,10,85, 13,10,4,1,11,85, 13,10,4,3,11,85, 13,10,3,1,12,85, 13,10,3,3,12,85, 13,10,3,6,2,69, 13,9,13,5,13,54, + 13,9,3,6,2,70, 13,8,13,5,13,55, 13,8,3,6,2,71, 13,7,13,1,2,88, 13,7,13,4,13,56, 13,7,13,5,13,56, 13,7,12,1,3,88, 13,7,12,4,13,56, + 13,7,11,1,4,88, 13,7,11,4,13,56, 13,7,10,1,5,88, 13,7,10,4,13,56, 13,7,9,1,6,88, 13,7,9,4,13,56, 13,7,8,1,7,88, 13,7,8,4,13,56, + 13,7,7,1,8,88, 13,7,7,4,13,56, 13,7,6,1,9,88, 13,7,6,4,13,56, 13,7,5,1,10,88, 13,7,5,4,13,56, 13,7,4,1,11,88, 13,7,4,4,13,56, + 13,7,3,1,12,88, 13,7,3,4,13,56, 13,7,3,6,2,72, 13,5,11,1,4,90, 13,5,11,3,4,90, 13,5,11,5,13,58, 13,5,10,1,5,90, 13,5,10,3,5,90, + 13,5,9,1,6,90, 13,5,9,3,6,90, 13,5,8,1,7,90, 13,5,8,3,7,90, 13,5,7,1,8,90, 13,5,7,3,8,90, 13,5,6,1,9,90, 13,5,6,3,9,90, + 13,5,5,1,10,90, 13,5,5,3,10,90, 13,5,5,6,2,74, 13,4,11,5,13,59, 13,4,4,3,11,91, 13,4,4,6,2,75, 13,3,11,5,13,60, 13,3,4,6,2,76, + 13,2,11,1,4,93, 13,2,11,4,13,61, 13,2,11,5,13,61, 13,2,10,1,5,93, 13,2,10,4,13,61, 13,2,9,1,6,93, 13,2,9,4,13,61, 13,2,8,1,7,93, + 13,2,8,4,13,61, 13,2,7,1,8,93, 13,2,7,4,13,61, 13,2,6,1,9,93, 13,2,6,4,13,61, 13,2,5,1,10,93, 13,2,5,4,13,61, 13,2,4,1,11,93, + 13,2,4,4,13,61, 13,2,4,6,2,77, 14,9,13,1,2,86, 14,9,13,3,2,86, 14,9,13,5,14,54, 14,9,12,1,3,86, 14,9,12,3,3,86, 14,9,11,1,4,86, + 14,9,11,3,4,86, 14,9,10,1,5,86, 14,9,10,3,5,86, 14,9,9,1,6,86, 14,9,9,3,6,86, 14,9,8,1,7,86, 14,9,8,3,7,86, 14,9,7,1,8,86, + 14,9,7,3,8,86, 14,9,6,1,9,86, 14,9,6,3,9,86, 14,9,5,1,10,86, 14,9,5,3,10,86, 14,9,4,1,11,86, 14,9,4,3,11,86, 14,9,3,1,12,86, + 14,9,3,3,12,86, 14,9,3,6,1,70, 14,8,13,1,2,87, 14,8,13,4,14,55, 14,8,13,5,14,55, 14,8,12,1,3,87, 14,8,12,4,14,55, 14,8,11,1,4,87, + 14,8,11,4,14,55, 14,8,10,1,5,87, 14,8,10,4,14,55, 14,8,9,1,6,87, 14,8,9,4,14,55, 14,8,8,1,7,87, 14,8,8,4,14,55, 14,8,7,1,8,87, + 14,8,7,4,14,55, 14,8,6,1,9,87, 14,8,6,4,14,55, 14,8,5,1,10,87, 14,8,5,4,14,55, 14,8,4,1,11,87, 14,8,4,4,14,55, 14,8,3,1,12,87, + 14,8,3,4,14,55, 14,8,3,6,1,71, 14,4,11,1,4,91, 14,4,11,3,4,91, 14,4,11,5,14,59, 14,4,10,1,5,91, 14,4,10,3,5,91, 14,4,9,1,6,91, + 14,4,9,3,6,91, 14,4,8,1,7,91, 14,4,8,3,7,91, 14,4,7,1,8,91, 14,4,7,3,8,91, 14,4,6,1,9,91, 14,4,6,3,9,91, 14,4,5,1,10,91, + 14,4,5,3,10,91, 14,4,4,1,11,91, 14,4,4,3,11,91, 14,4,4,6,1,75, 14,3,11,1,4,92, 14,3,11,4,14,60, 14,3,11,5,14,60, 14,3,10,1,5,92, + 14,3,10,4,14,60, 14,3,9,1,6,92, 14,3,9,4,14,60, 14,3,8,1,7,92, 14,3,8,4,14,60, 14,3,7,1,8,92, 14,3,7,4,14,60, 14,3,6,1,9,92, + 14,3,6,4,14,60, 14,3,5,1,10,92, 14,3,5,4,14,60, 14,3,4,1,11,92, 14,3,4,4,14,60, 14,3,4,6,1,76, + }, + }, + }, +} diff --git a/assets/voxels/gambler_asleep.lua b/assets/voxels/gambler_asleep.lua new file mode 100644 index 0000000..b8b411e --- /dev/null +++ b/assets/voxels/gambler_asleep.lua @@ -0,0 +1,234 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "gambler_asleep" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "gambler_asleep", + sheetW = 16, + sheetH = 16, + size = 16, + poses = { + stand = { + frames = { 0 }, + voxels = 2672, + count = 1668, + faces = { + 0,14,15,2,15,1, 0,14,15,3,15,1, 0,14,15,5,15,1, 0,14,14,2,14,1, 0,14,14,3,14,1, 0,14,14,6,15,1, 0,14,10,2,10,1, 0,14,10,3,10,1, + 0,14,10,5,15,1, 0,14,9,2,9,1, 0,14,9,3,9,1, 0,14,8,2,8,1, 0,14,8,3,8,1, 0,14,7,2,7,1, 0,14,7,3,7,1, 0,14,6,2,6,1, + 0,14,6,3,6,1, 0,14,5,2,5,1, 0,14,5,3,5,1, 0,14,5,6,15,1, 0,13,15,2,15,2, 0,13,15,5,15,2, 0,13,14,2,14,2, 0,13,13,2,13,2, + 0,13,13,3,13,2, 0,13,13,6,15,2, 0,13,10,2,10,2, 0,13,10,5,15,2, 0,13,9,2,9,2, 0,13,8,2,8,2, 0,13,7,2,7,2, 0,13,6,2,6,2, + 0,13,5,2,5,2, 0,13,4,2,4,2, 0,13,4,3,4,2, 0,13,4,6,15,2, 0,12,15,2,15,3, 0,12,15,5,15,3, 0,12,14,2,14,3, 0,12,13,2,13,3, + 0,12,12,2,12,3, 0,12,12,3,12,3, 0,12,11,2,11,3, 0,12,11,3,11,3, 0,12,10,2,10,3, 0,12,9,2,9,3, 0,12,8,2,8,3, 0,12,7,2,7,3, + 0,12,6,2,6,3, 0,12,5,2,5,3, 0,12,4,2,4,3, 0,12,3,2,3,3, 0,12,3,3,3,3, 0,12,3,6,15,3, 0,11,15,2,15,4, 0,11,15,4,15,4, + 0,11,15,5,15,4, 0,11,14,2,14,4, 0,11,14,4,15,4, 0,11,13,2,13,4, 0,11,13,4,15,4, 0,11,12,2,12,4, 0,11,12,4,15,4, 0,11,11,2,11,4, + 0,11,11,4,15,4, 0,11,10,2,10,4, 0,11,10,4,15,4, 0,11,9,2,9,4, 0,11,9,4,15,4, 0,11,8,2,8,4, 0,11,8,4,15,4, 0,11,7,2,7,4, + 0,11,7,4,15,4, 0,11,6,2,6,4, 0,11,6,4,15,4, 0,11,5,2,5,4, 0,11,5,4,15,4, 0,11,4,2,4,4, 0,11,4,4,15,4, 0,11,3,2,3,4, + 0,11,3,4,15,4, 0,11,2,2,2,4, 0,11,2,3,2,4, 0,11,2,4,15,4, 0,11,2,6,15,4, 0,9,14,2,14,6, 0,9,14,3,14,6, 0,9,14,5,0,6, + 0,9,13,2,13,6, 0,9,13,3,13,6, 0,9,12,2,12,6, 0,9,12,3,12,6, 0,9,11,2,11,6, 0,9,11,3,11,6, 0,9,10,2,10,6, 0,9,10,3,10,6, + 0,9,9,2,9,6, 0,9,9,3,9,6, 0,9,8,2,8,6, 0,9,8,3,8,6, 0,9,7,2,7,6, 0,9,7,3,7,6, 0,9,6,2,6,6, 0,9,6,3,6,6, + 0,9,5,2,5,6, 0,9,5,3,5,6, 0,9,4,2,4,6, 0,9,4,3,4,6, 0,9,3,2,3,6, 0,9,3,3,3,6, 0,9,2,2,2,6, 0,9,2,3,2,6, + 0,9,1,2,1,6, 0,9,1,3,1,6, 0,9,0,2,0,6, 0,9,0,3,0,6, 0,9,0,6,0,6, 0,8,14,2,14,7, 0,8,14,5,0,7, 0,8,13,2,13,7, + 0,8,12,2,12,7, 0,8,11,2,11,7, 0,8,10,2,10,7, 0,8,9,2,9,7, 0,8,8,2,8,7, 0,8,7,2,7,7, 0,8,6,2,6,7, 0,8,5,2,5,7, + 0,8,4,2,4,7, 0,8,3,2,3,7, 0,8,2,2,2,7, 0,8,1,2,1,7, 0,8,0,2,0,7, 0,8,0,6,0,7, 0,7,14,2,14,8, 0,7,14,5,0,8, + 0,7,13,2,13,8, 0,7,12,2,12,8, 0,7,11,2,11,8, 0,7,10,2,10,8, 0,7,9,2,9,8, 0,7,8,2,8,8, 0,7,7,2,7,8, 0,7,6,2,6,8, + 0,7,5,2,5,8, 0,7,4,2,4,8, 0,7,3,2,3,8, 0,7,2,2,2,8, 0,7,1,2,1,8, 0,7,0,2,0,8, 0,7,0,6,0,8, 0,6,14,2,14,9, + 0,6,14,4,0,9, 0,6,14,5,0,9, 0,6,13,2,13,9, 0,6,13,4,0,9, 0,6,12,2,12,9, 0,6,12,4,0,9, 0,6,11,2,11,9, 0,6,11,4,0,9, + 0,6,10,2,10,9, 0,6,10,4,0,9, 0,6,9,2,9,9, 0,6,9,4,0,9, 0,6,8,2,8,9, 0,6,8,4,0,9, 0,6,7,2,7,9, 0,6,7,4,0,9, + 0,6,6,2,6,9, 0,6,6,4,0,9, 0,6,5,2,5,9, 0,6,5,4,0,9, 0,6,4,2,4,9, 0,6,4,4,0,9, 0,6,3,2,3,9, 0,6,3,4,0,9, + 0,6,2,2,2,9, 0,6,2,4,0,9, 0,6,1,2,1,9, 0,6,1,4,0,9, 0,6,0,2,0,9, 0,6,0,4,0,9, 0,6,0,6,0,9, 0,4,15,2,15,11, + 0,4,15,3,15,11, 0,4,15,5,15,11, 0,4,14,2,14,11, 0,4,14,3,14,11, 0,4,13,2,13,11, 0,4,13,3,13,11, 0,4,12,2,12,11, 0,4,12,3,12,11, + 0,4,11,2,11,11, 0,4,11,3,11,11, 0,4,10,2,10,11, 0,4,10,3,10,11, 0,4,9,2,9,11, 0,4,9,3,9,11, 0,4,8,2,8,11, 0,4,8,3,8,11, + 0,4,7,2,7,11, 0,4,7,3,7,11, 0,4,6,2,6,11, 0,4,6,3,6,11, 0,4,5,2,5,11, 0,4,5,3,5,11, 0,4,4,2,4,11, 0,4,4,3,4,11, + 0,4,3,2,3,11, 0,4,3,3,3,11, 0,4,2,2,2,11, 0,4,2,3,2,11, 0,4,2,4,15,11, 0,4,2,6,15,11, 0,3,15,2,15,12, 0,3,15,5,15,12, + 0,3,14,2,14,12, 0,3,13,2,13,12, 0,3,12,2,12,12, 0,3,12,4,15,12, 0,3,11,2,11,12, 0,3,11,4,15,12, 0,3,10,2,10,12, 0,3,9,2,9,12, + 0,3,8,2,8,12, 0,3,7,2,7,12, 0,3,6,2,6,12, 0,3,5,2,5,12, 0,3,4,2,4,12, 0,3,3,2,3,12, 0,3,3,4,15,12, 0,3,3,6,15,12, + 0,2,15,2,15,13, 0,2,15,5,15,13, 0,2,14,2,14,13, 0,2,13,2,13,13, 0,2,13,4,15,13, 0,2,13,6,15,13, 0,2,10,2,10,13, 0,2,10,5,15,13, + 0,2,9,2,9,13, 0,2,8,2,8,13, 0,2,7,2,7,13, 0,2,6,2,6,13, 0,2,5,2,5,13, 0,2,4,2,4,13, 0,2,4,4,15,13, 0,2,4,6,15,13, + 0,1,15,2,15,14, 0,1,15,4,15,14, 0,1,15,5,15,14, 0,1,14,2,14,14, 0,1,14,4,15,14, 0,1,14,6,15,14, 0,1,10,2,10,14, 0,1,10,4,15,14, + 0,1,10,5,15,14, 0,1,9,2,9,14, 0,1,9,4,15,14, 0,1,8,2,8,14, 0,1,8,4,15,14, 0,1,7,2,7,14, 0,1,7,4,15,14, 0,1,6,2,6,14, + 0,1,6,4,15,14, 0,1,5,2,5,14, 0,1,5,4,15,14, 0,1,5,6,15,14, 1,14,15,1,15,1, 1,14,15,3,15,1, 1,14,15,5,14,1, 1,14,14,1,14,1, + 1,14,14,3,14,1, 1,14,14,6,14,1, 1,14,10,1,10,1, 1,14,10,3,10,1, 1,14,10,5,14,1, 1,14,9,1,9,1, 1,14,9,3,9,1, 1,14,8,1,8,1, + 1,14,8,3,8,1, 1,14,7,1,7,1, 1,14,7,3,7,1, 1,14,6,1,6,1, 1,14,6,3,6,1, 1,14,5,1,5,1, 1,14,5,3,5,1, 1,14,5,6,14,1, + 1,13,15,5,14,2, 1,13,13,3,13,2, 1,13,13,6,14,2, 1,13,10,5,14,2, 1,13,4,3,4,2, 1,13,4,6,14,2, 1,12,15,5,14,3, 1,12,12,3,12,3, + 1,12,11,3,11,3, 1,12,3,3,3,3, 1,12,3,6,14,3, 1,11,15,4,14,4, 1,11,15,5,14,4, 1,11,2,3,2,4, 1,11,2,6,14,4, 1,10,14,2,14,5, + 1,10,14,5,1,5, 1,10,13,2,13,5, 1,10,12,2,12,5, 1,10,11,2,11,5, 1,10,10,2,10,5, 1,10,9,2,9,5, 1,10,8,2,8,5, 1,10,7,2,7,5, + 1,10,6,2,6,5, 1,10,5,2,5,5, 1,10,4,2,4,5, 1,10,3,2,3,5, 1,10,2,2,2,5, 1,10,1,2,1,5, 1,10,1,3,1,5, 1,10,1,6,14,5, + 1,9,14,5,1,6, 1,9,0,3,0,6, 1,9,0,6,14,6, 1,8,14,5,1,7, 1,8,0,6,14,7, 1,7,14,5,1,8, 1,7,0,6,14,8, 1,6,14,5,1,9, + 1,6,0,4,1,9, 1,6,0,6,14,9, 1,5,14,2,14,10, 1,5,14,5,1,10, 1,5,13,2,13,10, 1,5,12,2,12,10, 1,5,11,2,11,10, 1,5,10,2,10,10, + 1,5,9,2,9,10, 1,5,8,2,8,10, 1,5,7,2,7,10, 1,5,6,2,6,10, 1,5,5,2,5,10, 1,5,4,2,4,10, 1,5,3,2,3,10, 1,5,2,2,2,10, + 1,5,1,2,1,10, 1,5,1,4,1,10, 1,5,1,6,14,10, 1,4,15,3,15,11, 1,4,15,5,14,11, 1,4,2,4,14,11, 1,4,2,6,14,11, 1,3,15,5,14,12, + 1,3,12,4,14,12, 1,3,11,4,14,12, 1,3,3,4,14,12, 1,3,3,6,14,12, 1,2,15,5,14,13, 1,2,13,4,14,13, 1,2,13,6,14,13, 1,2,10,5,14,13, + 1,2,4,4,14,13, 1,2,4,6,14,13, 1,1,15,1,15,14, 1,1,15,4,14,14, 1,1,15,5,14,14, 1,1,14,1,14,14, 1,1,14,4,14,14, 1,1,14,6,14,14, + 1,1,10,1,10,14, 1,1,10,4,14,14, 1,1,10,5,14,14, 1,1,9,1,9,14, 1,1,9,4,14,14, 1,1,8,1,8,14, 1,1,8,4,14,14, 1,1,7,1,7,14, + 1,1,7,4,14,14, 1,1,6,1,6,14, 1,1,6,4,14,14, 1,1,5,1,5,14, 1,1,5,4,14,14, 1,1,5,6,14,14, 2,13,15,1,15,2, 2,13,15,3,15,2, + 2,13,15,5,13,2, 2,13,14,1,14,2, 2,13,14,3,14,2, 2,13,13,1,13,2, 2,13,13,3,13,2, 2,13,13,6,13,2, 2,13,10,1,10,2, 2,13,10,3,10,2, + 2,13,10,5,13,2, 2,13,9,1,9,2, 2,13,9,3,9,2, 2,13,8,1,8,2, 2,13,8,3,8,2, 2,13,7,1,7,2, 2,13,7,3,7,2, 2,13,6,1,6,2, + 2,13,6,3,6,2, 2,13,5,1,5,2, 2,13,5,3,5,2, 2,13,4,1,4,2, 2,13,4,3,4,2, 2,13,4,6,13,2, 2,12,15,5,13,3, 2,12,12,3,12,3, + 2,12,11,3,11,3, 2,12,3,3,3,3, 2,12,3,6,13,3, 2,11,15,4,2,4, 2,11,15,5,2,4, 2,11,2,3,2,4, 2,11,2,6,13,4, 2,10,14,5,2,5, + 2,10,1,3,1,5, 2,10,1,6,13,5, 2,9,14,5,2,6, 2,9,0,3,0,6, 2,9,0,6,13,6, 2,8,14,5,2,7, 2,8,0,6,13,7, 2,7,14,5,2,8, + 2,7,0,6,13,8, 2,6,14,5,2,9, 2,6,0,4,2,9, 2,6,0,6,13,9, 2,5,14,5,2,10, 2,5,1,4,2,10, 2,5,1,6,13,10, 2,4,15,3,15,11, + 2,4,15,5,2,11, 2,4,2,4,2,11, 2,4,2,6,13,11, 2,3,15,5,13,12, 2,3,12,4,13,12, 2,3,11,4,13,12, 2,3,3,4,13,12, 2,3,3,6,13,12, + 2,2,15,1,15,13, 2,2,15,4,13,13, 2,2,15,5,13,13, 2,2,14,1,14,13, 2,2,14,4,13,13, 2,2,13,1,13,13, 2,2,13,4,13,13, 2,2,13,6,13,13, + 2,2,10,1,10,13, 2,2,10,4,13,13, 2,2,10,5,13,13, 2,2,9,1,9,13, 2,2,9,4,13,13, 2,2,8,1,8,13, 2,2,8,4,13,13, 2,2,7,1,7,13, + 2,2,7,4,13,13, 2,2,6,1,6,13, 2,2,6,4,13,13, 2,2,5,1,5,13, 2,2,5,4,13,13, 2,2,4,1,4,13, 2,2,4,4,13,13, 2,2,4,6,13,13, + 3,12,15,3,15,3, 3,12,15,5,3,3, 3,12,14,3,14,3, 3,12,13,3,13,3, 3,12,12,3,12,3, 3,12,11,3,11,3, 3,12,10,3,10,3, 3,12,9,3,9,3, + 3,12,8,3,8,3, 3,12,7,3,7,3, 3,12,6,3,6,3, 3,12,5,3,5,3, 3,12,4,3,4,3, 3,12,3,3,3,3, 3,12,3,6,12,3, 3,11,15,4,3,4, + 3,11,15,5,3,4, 3,11,2,3,2,4, 3,11,2,6,12,4, 3,10,14,5,3,5, 3,10,1,3,1,5, 3,10,1,6,12,5, 3,9,14,5,3,6, 3,9,0,3,0,6, + 3,9,0,6,12,6, 3,8,14,5,3,7, 3,8,0,6,12,7, 3,7,14,5,3,8, 3,7,0,6,12,8, 3,6,14,5,3,9, 3,6,0,4,3,9, 3,6,0,6,12,9, + 3,5,14,5,3,10, 3,5,1,4,3,10, 3,5,1,6,12,10, 3,4,15,3,15,11, 3,4,15,5,3,11, 3,4,2,4,3,11, 3,4,2,6,12,11, 3,3,15,4,3,12, + 3,3,15,5,3,12, 3,3,14,4,3,12, 3,3,13,4,3,12, 3,3,12,4,3,12, 3,3,11,4,3,12, 3,3,10,4,3,12, 3,3,9,4,3,12, 3,3,8,4,3,12, + 3,3,7,4,3,12, 3,3,6,4,3,12, 3,3,5,4,3,12, 3,3,4,4,3,12, 3,3,3,4,3,12, 3,3,3,6,12,12, 4,13,15,2,15,2, 4,13,15,3,15,2, + 4,13,15,5,4,2, 4,13,14,2,14,2, 4,13,14,3,14,2, 4,13,13,2,13,2, 4,13,13,3,13,2, 4,13,13,6,4,2, 4,13,10,2,10,2, 4,13,10,3,10,2, + 4,13,10,5,4,2, 4,13,9,2,9,2, 4,13,9,3,9,2, 4,13,8,2,8,2, 4,13,8,3,8,2, 4,13,7,2,7,2, 4,13,7,3,7,2, 4,13,6,2,6,2, + 4,13,6,3,6,2, 4,13,5,2,5,2, 4,13,5,3,5,2, 4,13,4,2,4,2, 4,13,4,3,4,2, 4,13,4,6,4,2, 4,12,15,5,4,3, 4,12,12,3,12,3, + 4,12,11,3,11,3, 4,12,3,3,3,3, 4,12,3,6,11,3, 4,11,15,4,4,4, 4,11,15,5,4,4, 4,11,2,3,2,4, 4,11,2,6,11,4, 4,10,14,5,4,5, + 4,10,1,3,1,5, 4,10,1,6,11,5, 4,9,14,5,4,6, 4,9,0,3,0,6, 4,9,0,6,11,6, 4,8,14,5,4,7, 4,8,0,6,11,7, 4,7,14,5,4,8, + 4,7,0,6,11,8, 4,6,14,5,4,9, 4,6,0,4,4,9, 4,6,0,6,11,9, 4,5,14,5,4,10, 4,5,1,4,4,10, 4,5,1,6,11,10, 4,4,15,3,15,11, + 4,4,15,5,4,11, 4,4,2,4,4,11, 4,4,2,6,11,11, 4,3,15,5,4,12, 4,3,12,4,4,12, 4,3,11,4,4,12, 4,3,3,4,4,12, 4,3,3,6,11,12, + 4,2,15,2,15,13, 4,2,15,4,4,13, 4,2,15,5,4,13, 4,2,14,2,14,13, 4,2,14,4,4,13, 4,2,13,2,13,13, 4,2,13,4,4,13, 4,2,13,6,4,13, + 4,2,10,2,10,13, 4,2,10,4,4,13, 4,2,10,5,4,13, 4,2,9,2,9,13, 4,2,9,4,4,13, 4,2,8,2,8,13, 4,2,8,4,4,13, 4,2,7,2,7,13, + 4,2,7,4,4,13, 4,2,6,2,6,13, 4,2,6,4,4,13, 4,2,5,2,5,13, 4,2,5,4,4,13, 4,2,4,2,4,13, 4,2,4,4,4,13, 4,2,4,6,4,13, + 5,14,15,2,15,1, 5,14,15,3,15,1, 5,14,15,5,5,1, 5,14,14,2,14,1, 5,14,14,3,14,1, 5,14,14,6,10,1, 5,14,10,2,10,1, 5,14,10,3,10,1, + 5,14,10,5,5,1, 5,14,9,2,9,1, 5,14,9,3,9,1, 5,14,8,2,8,1, 5,14,8,3,8,1, 5,14,7,2,7,1, 5,14,7,3,7,1, 5,14,6,2,6,1, + 5,14,6,3,6,1, 5,14,5,2,5,1, 5,14,5,3,5,1, 5,14,5,6,10,1, 5,13,15,5,5,2, 5,13,13,3,13,2, 5,13,13,6,10,2, 5,13,10,5,5,2, + 5,13,4,3,4,2, 5,13,4,6,10,2, 5,12,15,5,5,3, 5,12,12,3,12,3, 5,12,11,3,11,3, 5,12,3,3,3,3, 5,12,3,6,10,3, 5,11,15,4,5,4, + 5,11,15,5,5,4, 5,11,2,3,2,4, 5,11,2,6,10,4, 5,10,14,5,5,5, 5,10,1,3,1,5, 5,10,1,6,10,5, 5,9,14,5,5,6, 5,9,0,3,0,6, + 5,9,0,6,10,6, 5,8,14,5,5,7, 5,8,0,6,10,7, 5,7,14,5,5,8, 5,7,0,6,10,8, 5,6,14,5,5,9, 5,6,0,4,5,9, 5,6,0,6,10,9, + 5,5,14,5,5,10, 5,5,1,4,5,10, 5,5,1,6,10,10, 5,4,15,3,15,11, 5,4,15,5,5,11, 5,4,2,4,5,11, 5,4,2,6,10,11, 5,3,15,5,5,12, + 5,3,12,4,5,12, 5,3,11,4,5,12, 5,3,3,4,5,12, 5,3,3,6,10,12, 5,2,15,5,5,13, 5,2,13,4,5,13, 5,2,13,6,10,13, 5,2,10,5,5,13, + 5,2,4,4,5,13, 5,2,4,6,10,13, 5,1,15,2,15,14, 5,1,15,4,5,14, 5,1,15,5,5,14, 5,1,14,2,14,14, 5,1,14,4,5,14, 5,1,14,6,10,14, + 5,1,10,2,10,14, 5,1,10,4,5,14, 5,1,10,5,5,14, 5,1,9,2,9,14, 5,1,9,4,5,14, 5,1,8,2,8,14, 5,1,8,4,5,14, 5,1,7,2,7,14, + 5,1,7,4,5,14, 5,1,6,2,6,14, 5,1,6,4,5,14, 5,1,5,2,5,14, 5,1,5,4,5,14, 5,1,5,6,10,14, 6,15,9,2,9,0, 6,15,9,3,9,0, + 6,15,9,5,9,0, 6,15,8,2,8,0, 6,15,8,3,8,0, 6,15,8,6,9,0, 6,14,15,3,15,1, 6,14,15,5,6,1, 6,14,14,3,14,1, 6,14,14,6,9,1, + 6,14,10,3,10,1, 6,14,10,5,6,1, 6,14,7,3,7,1, 6,14,6,3,6,1, 6,14,5,3,5,1, 6,14,5,6,9,1, 6,13,15,5,6,2, 6,13,13,3,13,2, + 6,13,13,6,9,2, 6,13,10,5,6,2, 6,13,4,3,4,2, 6,13,4,6,9,2, 6,12,15,5,6,3, 6,12,12,3,12,3, 6,12,11,3,11,3, 6,12,3,3,3,3, + 6,12,3,6,9,3, 6,11,15,4,6,4, 6,11,15,5,6,4, 6,11,2,3,2,4, 6,11,2,6,9,4, 6,10,14,5,6,5, 6,10,1,3,1,5, 6,10,1,6,9,5, + 6,9,14,5,6,6, 6,9,0,3,0,6, 6,9,0,6,9,6, 6,8,14,5,6,7, 6,8,0,6,9,7, 6,7,14,5,6,8, 6,7,0,6,9,8, 6,6,14,5,6,9, + 6,6,0,4,6,9, 6,6,0,6,9,9, 6,5,14,5,6,10, 6,5,1,4,6,10, 6,5,1,6,9,10, 6,4,15,3,15,11, 6,4,15,5,6,11, 6,4,2,4,6,11, + 6,4,2,6,9,11, 6,3,15,5,6,12, 6,3,12,4,6,12, 6,3,11,4,6,12, 6,3,3,4,6,12, 6,3,3,6,9,12, 6,2,15,5,6,13, 6,2,13,4,6,13, + 6,2,13,6,9,13, 6,2,10,5,6,13, 6,2,4,4,6,13, 6,2,4,6,9,13, 6,1,15,4,6,14, 6,1,15,5,6,14, 6,1,14,4,6,14, 6,1,14,6,9,14, + 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,7,4,6,14, 6,1,6,4,6,14, 6,1,5,4,6,14, 6,1,5,6,9,14, 6,0,9,2,9,15, 6,0,9,5,9,15, + 6,0,8,2,8,15, 6,0,8,6,9,15, 7,15,9,3,9,0, 7,15,9,5,8,0, 7,15,8,3,8,0, 7,15,8,6,8,0, 7,14,15,3,15,1, 7,14,15,5,7,1, + 7,14,14,3,14,1, 7,14,14,6,8,1, 7,14,10,3,10,1, 7,14,10,5,7,1, 7,14,7,3,7,1, 7,14,6,3,6,1, 7,14,5,3,5,1, 7,14,5,6,8,1, + 7,13,15,5,7,2, 7,13,13,3,13,2, 7,13,13,6,8,2, 7,13,10,5,7,2, 7,13,4,3,4,2, 7,13,4,6,8,2, 7,12,15,5,7,3, 7,12,12,3,12,3, + 7,12,11,3,11,3, 7,12,3,3,3,3, 7,12,3,6,8,3, 7,11,15,4,7,4, 7,11,15,5,7,4, 7,11,2,3,2,4, 7,11,2,6,8,4, 7,10,14,5,7,5, + 7,10,1,3,1,5, 7,10,1,6,8,5, 7,9,14,5,7,6, 7,9,0,3,0,6, 7,9,0,6,8,6, 7,8,14,5,7,7, 7,8,0,6,8,7, 7,7,14,5,7,8, + 7,7,0,6,8,8, 7,6,14,5,7,9, 7,6,0,4,7,9, 7,6,0,6,8,9, 7,5,14,5,7,10, 7,5,1,4,7,10, 7,5,1,6,8,10, 7,4,15,3,15,11, + 7,4,15,5,7,11, 7,4,2,4,7,11, 7,4,2,6,8,11, 7,3,15,5,7,12, 7,3,12,4,7,12, 7,3,11,4,7,12, 7,3,3,4,7,12, 7,3,3,6,8,12, + 7,2,15,5,7,13, 7,2,13,4,7,13, 7,2,13,6,8,13, 7,2,10,5,7,13, 7,2,4,4,7,13, 7,2,4,6,8,13, 7,1,15,4,7,14, 7,1,15,5,7,14, + 7,1,14,4,7,14, 7,1,14,6,8,14, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,14, + 7,0,9,5,8,15, 7,0,8,6,8,15, 8,15,9,3,9,0, 8,15,9,5,8,0, 8,15,8,3,8,0, 8,15,8,6,8,0, 8,14,15,3,15,1, 8,14,15,5,8,1, + 8,14,14,3,14,1, 8,14,14,6,7,1, 8,14,10,3,10,1, 8,14,10,5,8,1, 8,14,7,3,7,1, 8,14,6,3,6,1, 8,14,5,3,5,1, 8,14,5,6,7,1, + 8,13,15,5,8,2, 8,13,13,3,13,2, 8,13,13,6,7,2, 8,13,10,5,8,2, 8,13,4,3,4,2, 8,13,4,6,7,2, 8,12,15,5,8,3, 8,12,12,3,12,3, + 8,12,11,3,11,3, 8,12,3,3,3,3, 8,12,3,6,7,3, 8,11,15,4,8,4, 8,11,15,5,8,4, 8,11,2,3,2,4, 8,11,2,6,7,4, 8,10,14,5,8,5, + 8,10,1,3,1,5, 8,10,1,6,7,5, 8,9,14,5,8,6, 8,9,0,3,0,6, 8,9,0,6,7,6, 8,8,14,5,8,7, 8,8,0,6,7,7, 8,7,14,5,8,8, + 8,7,0,6,7,8, 8,6,14,5,8,9, 8,6,0,4,8,9, 8,6,0,6,7,9, 8,5,14,5,8,10, 8,5,1,4,8,10, 8,5,1,6,7,10, 8,4,15,3,15,11, + 8,4,15,5,8,11, 8,4,2,4,8,11, 8,4,2,6,7,11, 8,3,15,5,8,12, 8,3,12,4,8,12, 8,3,11,4,8,12, 8,3,3,4,8,12, 8,3,3,6,7,12, + 8,2,15,5,8,13, 8,2,13,4,8,13, 8,2,13,6,7,13, 8,2,10,5,8,13, 8,2,4,4,8,13, 8,2,4,6,7,13, 8,1,15,4,8,14, 8,1,15,5,8,14, + 8,1,14,4,8,14, 8,1,14,6,7,14, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,14, + 8,0,9,5,8,15, 8,0,8,6,8,15, 9,15,9,1,9,0, 9,15,9,3,9,0, 9,15,9,5,9,0, 9,15,8,1,8,0, 9,15,8,3,8,0, 9,15,8,6,9,0, + 9,14,15,3,15,1, 9,14,15,5,9,1, 9,14,14,3,14,1, 9,14,14,6,6,1, 9,14,10,3,10,1, 9,14,10,5,9,1, 9,14,7,3,7,1, 9,14,6,3,6,1, + 9,14,5,3,5,1, 9,14,5,6,6,1, 9,13,15,5,9,2, 9,13,13,3,13,2, 9,13,13,6,6,2, 9,13,10,5,9,2, 9,13,4,3,4,2, 9,13,4,6,6,2, + 9,12,15,5,9,3, 9,12,12,3,12,3, 9,12,11,3,11,3, 9,12,3,3,3,3, 9,12,3,6,6,3, 9,11,15,4,9,4, 9,11,15,5,9,4, 9,11,2,3,2,4, + 9,11,2,6,6,4, 9,10,14,5,9,5, 9,10,1,3,1,5, 9,10,1,6,6,5, 9,9,14,5,9,6, 9,9,0,3,0,6, 9,9,0,6,6,6, 9,8,14,5,9,7, + 9,8,0,6,6,7, 9,7,14,5,9,8, 9,7,0,6,6,8, 9,6,14,5,9,9, 9,6,0,4,9,9, 9,6,0,6,6,9, 9,5,14,5,9,10, 9,5,1,4,9,10, + 9,5,1,6,6,10, 9,4,15,3,15,11, 9,4,15,5,9,11, 9,4,2,4,9,11, 9,4,2,6,6,11, 9,3,15,5,9,12, 9,3,12,4,9,12, 9,3,11,4,9,12, + 9,3,3,4,9,12, 9,3,3,6,6,12, 9,2,15,5,9,13, 9,2,13,4,9,13, 9,2,13,6,6,13, 9,2,10,5,9,13, 9,2,4,4,9,13, 9,2,4,6,6,13, + 9,1,15,4,9,14, 9,1,15,5,9,14, 9,1,14,4,9,14, 9,1,14,6,6,14, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,7,4,9,14, 9,1,6,4,9,14, + 9,1,5,4,9,14, 9,1,5,6,6,14, 9,0,9,1,9,15, 9,0,9,5,9,15, 9,0,8,1,8,15, 9,0,8,6,9,15, 10,14,15,1,15,1, 10,14,15,3,15,1, + 10,14,15,5,10,1, 10,14,14,1,14,1, 10,14,14,3,14,1, 10,14,14,6,5,1, 10,14,10,1,10,1, 10,14,10,3,10,1, 10,14,10,5,10,1, 10,14,9,1,9,1, + 10,14,9,3,9,1, 10,14,8,1,8,1, 10,14,8,3,8,1, 10,14,7,1,7,1, 10,14,7,3,7,1, 10,14,6,1,6,1, 10,14,6,3,6,1, 10,14,5,1,5,1, + 10,14,5,3,5,1, 10,14,5,6,5,1, 10,13,15,5,10,2, 10,13,13,3,13,2, 10,13,13,6,5,2, 10,13,10,5,10,2, 10,13,4,3,4,2, 10,13,4,6,5,2, + 10,12,15,5,10,3, 10,12,12,3,12,3, 10,12,11,3,11,3, 10,12,3,3,3,3, 10,12,3,6,5,3, 10,11,15,4,10,4, 10,11,15,5,10,4, 10,11,2,3,2,4, + 10,11,2,6,5,4, 10,10,14,5,10,5, 10,10,1,3,1,5, 10,10,1,6,5,5, 10,9,14,5,10,6, 10,9,0,3,0,6, 10,9,0,6,5,6, 10,8,14,5,10,7, + 10,8,0,6,5,7, 10,7,14,5,10,8, 10,7,0,6,5,8, 10,6,14,5,10,9, 10,6,0,4,10,9, 10,6,0,6,5,9, 10,5,14,5,10,10, 10,5,1,4,10,10, + 10,5,1,6,5,10, 10,4,15,3,15,11, 10,4,15,5,10,11, 10,4,2,4,10,11, 10,4,2,6,5,11, 10,3,15,5,10,12, 10,3,12,4,10,12, 10,3,11,4,10,12, + 10,3,3,4,10,12, 10,3,3,6,5,12, 10,2,15,5,10,13, 10,2,13,4,10,13, 10,2,13,6,5,13, 10,2,10,5,10,13, 10,2,4,4,10,13, 10,2,4,6,5,13, + 10,1,15,1,15,14, 10,1,15,4,10,14, 10,1,15,5,10,14, 10,1,14,1,14,14, 10,1,14,4,10,14, 10,1,14,6,5,14, 10,1,10,1,10,14, 10,1,10,4,10,14, + 10,1,10,5,10,14, 10,1,9,1,9,14, 10,1,9,4,10,14, 10,1,8,1,8,14, 10,1,8,4,10,14, 10,1,7,1,7,14, 10,1,7,4,10,14, 10,1,6,1,6,14, + 10,1,6,4,10,14, 10,1,5,1,5,14, 10,1,5,4,10,14, 10,1,5,6,5,14, 11,13,15,1,15,2, 11,13,15,3,15,2, 11,13,15,5,4,2, 11,13,14,1,14,2, + 11,13,14,3,14,2, 11,13,13,1,13,2, 11,13,13,3,13,2, 11,13,13,6,4,2, 11,13,10,1,10,2, 11,13,10,3,10,2, 11,13,10,5,4,2, 11,13,9,1,9,2, + 11,13,9,3,9,2, 11,13,8,1,8,2, 11,13,8,3,8,2, 11,13,7,1,7,2, 11,13,7,3,7,2, 11,13,6,1,6,2, 11,13,6,3,6,2, 11,13,5,1,5,2, + 11,13,5,3,5,2, 11,13,4,1,4,2, 11,13,4,3,4,2, 11,13,4,6,4,2, 11,12,15,5,11,3, 11,12,12,3,12,3, 11,12,11,3,11,3, 11,12,3,3,3,3, + 11,12,3,6,4,3, 11,11,15,4,11,4, 11,11,15,5,11,4, 11,11,2,3,2,4, 11,11,2,6,4,4, 11,10,14,5,11,5, 11,10,1,3,1,5, 11,10,1,6,4,5, + 11,9,14,5,11,6, 11,9,0,3,0,6, 11,9,0,6,4,6, 11,8,14,5,11,7, 11,8,0,6,4,7, 11,7,14,5,11,8, 11,7,0,6,4,8, 11,6,14,5,11,9, + 11,6,0,4,11,9, 11,6,0,6,4,9, 11,5,14,5,11,10, 11,5,1,4,11,10, 11,5,1,6,4,10, 11,4,15,3,15,11, 11,4,15,5,11,11, 11,4,2,4,11,11, + 11,4,2,6,4,11, 11,3,15,5,11,12, 11,3,12,4,11,12, 11,3,11,4,11,12, 11,3,3,4,11,12, 11,3,3,6,4,12, 11,2,15,1,15,13, 11,2,15,4,4,13, + 11,2,15,5,4,13, 11,2,14,1,14,13, 11,2,14,4,4,13, 11,2,13,1,13,13, 11,2,13,4,4,13, 11,2,13,6,4,13, 11,2,10,1,10,13, 11,2,10,4,4,13, + 11,2,10,5,4,13, 11,2,9,1,9,13, 11,2,9,4,4,13, 11,2,8,1,8,13, 11,2,8,4,4,13, 11,2,7,1,7,13, 11,2,7,4,4,13, 11,2,6,1,6,13, + 11,2,6,4,4,13, 11,2,5,1,5,13, 11,2,5,4,4,13, 11,2,4,1,4,13, 11,2,4,4,4,13, 11,2,4,6,4,13, 12,12,15,3,15,3, 12,12,15,5,12,3, + 12,12,14,3,14,3, 12,12,13,3,13,3, 12,12,12,3,12,3, 12,12,11,3,11,3, 12,12,10,3,10,3, 12,12,9,3,9,3, 12,12,8,3,8,3, 12,12,7,3,7,3, + 12,12,6,3,6,3, 12,12,5,3,5,3, 12,12,4,3,4,3, 12,12,3,3,3,3, 12,12,3,6,3,3, 12,11,15,4,12,4, 12,11,15,5,12,4, 12,11,2,3,2,4, + 12,11,2,6,3,4, 12,10,14,5,12,5, 12,10,1,3,1,5, 12,10,1,6,3,5, 12,9,14,5,12,6, 12,9,0,3,0,6, 12,9,0,6,3,6, 12,8,14,5,12,7, + 12,8,0,6,3,7, 12,7,14,5,12,8, 12,7,0,6,3,8, 12,6,14,5,12,9, 12,6,0,4,12,9, 12,6,0,6,3,9, 12,5,14,5,12,10, 12,5,1,4,12,10, + 12,5,1,6,3,10, 12,4,15,3,15,11, 12,4,15,5,12,11, 12,4,2,4,12,11, 12,4,2,6,3,11, 12,3,15,4,12,12, 12,3,15,5,12,12, 12,3,14,4,12,12, + 12,3,13,4,12,12, 12,3,12,4,12,12, 12,3,11,4,12,12, 12,3,10,4,12,12, 12,3,9,4,12,12, 12,3,8,4,12,12, 12,3,7,4,12,12, 12,3,6,4,12,12, + 12,3,5,4,12,12, 12,3,4,4,12,12, 12,3,3,4,12,12, 12,3,3,6,3,12, 13,13,15,2,15,2, 13,13,15,3,15,2, 13,13,15,5,13,2, 13,13,14,2,14,2, + 13,13,14,3,14,2, 13,13,13,2,13,2, 13,13,13,3,13,2, 13,13,13,6,13,2, 13,13,10,2,10,2, 13,13,10,3,10,2, 13,13,10,5,13,2, 13,13,9,2,9,2, + 13,13,9,3,9,2, 13,13,8,2,8,2, 13,13,8,3,8,2, 13,13,7,2,7,2, 13,13,7,3,7,2, 13,13,6,2,6,2, 13,13,6,3,6,2, 13,13,5,2,5,2, + 13,13,5,3,5,2, 13,13,4,2,4,2, 13,13,4,3,4,2, 13,13,4,6,13,2, 13,12,15,5,13,3, 13,12,12,3,12,3, 13,12,11,3,11,3, 13,12,3,3,3,3, + 13,12,3,6,13,3, 13,11,15,4,13,4, 13,11,15,5,13,4, 13,11,2,3,2,4, 13,11,2,6,2,4, 13,10,14,5,13,5, 13,10,1,3,1,5, 13,10,1,6,2,5, + 13,9,14,5,13,6, 13,9,0,3,0,6, 13,9,0,6,2,6, 13,8,14,5,13,7, 13,8,0,6,2,7, 13,7,14,5,13,8, 13,7,0,6,2,8, 13,6,14,5,13,9, + 13,6,0,4,13,9, 13,6,0,6,2,9, 13,5,14,5,13,10, 13,5,1,4,13,10, 13,5,1,6,2,10, 13,4,15,3,15,11, 13,4,15,5,13,11, 13,4,2,4,13,11, + 13,4,2,6,2,11, 13,3,15,5,13,12, 13,3,12,4,13,12, 13,3,11,4,13,12, 13,3,3,4,13,12, 13,3,3,6,13,12, 13,2,15,2,15,13, 13,2,15,4,13,13, + 13,2,15,5,13,13, 13,2,14,2,14,13, 13,2,14,4,13,13, 13,2,13,2,13,13, 13,2,13,4,13,13, 13,2,13,6,13,13, 13,2,10,2,10,13, 13,2,10,4,13,13, + 13,2,10,5,13,13, 13,2,9,2,9,13, 13,2,9,4,13,13, 13,2,8,2,8,13, 13,2,8,4,13,13, 13,2,7,2,7,13, 13,2,7,4,13,13, 13,2,6,2,6,13, + 13,2,6,4,13,13, 13,2,5,2,5,13, 13,2,5,4,13,13, 13,2,4,2,4,13, 13,2,4,4,13,13, 13,2,4,6,13,13, 14,14,15,2,15,1, 14,14,15,3,15,1, + 14,14,15,5,14,1, 14,14,14,2,14,1, 14,14,14,3,14,1, 14,14,14,6,14,1, 14,14,10,2,10,1, 14,14,10,3,10,1, 14,14,10,5,14,1, 14,14,9,2,9,1, + 14,14,9,3,9,1, 14,14,8,2,8,1, 14,14,8,3,8,1, 14,14,7,2,7,1, 14,14,7,3,7,1, 14,14,6,2,6,1, 14,14,6,3,6,1, 14,14,5,2,5,1, + 14,14,5,3,5,1, 14,14,5,6,14,1, 14,13,15,5,14,2, 14,13,13,3,13,2, 14,13,13,6,14,2, 14,13,10,5,14,2, 14,13,4,3,4,2, 14,13,4,6,14,2, + 14,12,15,5,14,3, 14,12,12,3,12,3, 14,12,11,3,11,3, 14,12,3,3,3,3, 14,12,3,6,14,3, 14,11,15,4,14,4, 14,11,15,5,14,4, 14,11,2,3,2,4, + 14,11,2,6,14,4, 14,10,14,1,14,5, 14,10,14,5,14,5, 14,10,13,1,13,5, 14,10,12,1,12,5, 14,10,11,1,11,5, 14,10,10,1,10,5, 14,10,9,1,9,5, + 14,10,8,1,8,5, 14,10,7,1,7,5, 14,10,6,1,6,5, 14,10,5,1,5,5, 14,10,4,1,4,5, 14,10,3,1,3,5, 14,10,2,1,2,5, 14,10,1,1,1,5, + 14,10,1,3,1,5, 14,10,1,6,1,5, 14,9,14,5,14,6, 14,9,0,3,0,6, 14,9,0,6,1,6, 14,8,14,5,14,7, 14,8,0,6,1,7, 14,7,14,5,14,8, + 14,7,0,6,1,8, 14,6,14,5,14,9, 14,6,0,4,14,9, 14,6,0,6,1,9, 14,5,14,1,14,10, 14,5,14,5,14,10, 14,5,13,1,13,10, 14,5,12,1,12,10, + 14,5,11,1,11,10, 14,5,10,1,10,10, 14,5,9,1,9,10, 14,5,8,1,8,10, 14,5,7,1,7,10, 14,5,6,1,6,10, 14,5,5,1,5,10, 14,5,4,1,4,10, + 14,5,3,1,3,10, 14,5,2,1,2,10, 14,5,1,1,1,10, 14,5,1,4,14,10, 14,5,1,6,1,10, 14,4,15,3,15,11, 14,4,15,5,14,11, 14,4,2,4,14,11, + 14,4,2,6,14,11, 14,3,15,5,14,12, 14,3,12,4,14,12, 14,3,11,4,14,12, 14,3,3,4,14,12, 14,3,3,6,14,12, 14,2,15,5,14,13, 14,2,13,4,14,13, + 14,2,13,6,14,13, 14,2,10,5,14,13, 14,2,4,4,14,13, 14,2,4,6,14,13, 14,1,15,2,15,14, 14,1,15,4,14,14, 14,1,15,5,14,14, 14,1,14,2,14,14, + 14,1,14,4,14,14, 14,1,14,6,14,14, 14,1,10,2,10,14, 14,1,10,4,14,14, 14,1,10,5,14,14, 14,1,9,2,9,14, 14,1,9,4,14,14, 14,1,8,2,8,14, + 14,1,8,4,14,14, 14,1,7,2,7,14, 14,1,7,4,14,14, 14,1,6,2,6,14, 14,1,6,4,14,14, 14,1,5,2,5,14, 14,1,5,4,14,14, 14,1,5,6,14,14, + 15,14,15,1,15,1, 15,14,15,3,15,1, 15,14,15,5,15,1, 15,14,14,1,14,1, 15,14,14,3,14,1, 15,14,14,6,15,1, 15,14,10,1,10,1, 15,14,10,3,10,1, + 15,14,10,5,15,1, 15,14,9,1,9,1, 15,14,9,3,9,1, 15,14,8,1,8,1, 15,14,8,3,8,1, 15,14,7,1,7,1, 15,14,7,3,7,1, 15,14,6,1,6,1, + 15,14,6,3,6,1, 15,14,5,1,5,1, 15,14,5,3,5,1, 15,14,5,6,15,1, 15,13,15,1,15,2, 15,13,15,5,15,2, 15,13,14,1,14,2, 15,13,13,1,13,2, + 15,13,13,3,13,2, 15,13,13,6,15,2, 15,13,10,1,10,2, 15,13,10,5,15,2, 15,13,9,1,9,2, 15,13,8,1,8,2, 15,13,7,1,7,2, 15,13,6,1,6,2, + 15,13,5,1,5,2, 15,13,4,1,4,2, 15,13,4,3,4,2, 15,13,4,6,15,2, 15,12,15,1,15,3, 15,12,15,5,15,3, 15,12,14,1,14,3, 15,12,13,1,13,3, + 15,12,12,1,12,3, 15,12,12,3,12,3, 15,12,11,1,11,3, 15,12,11,3,11,3, 15,12,10,1,10,3, 15,12,9,1,9,3, 15,12,8,1,8,3, 15,12,7,1,7,3, + 15,12,6,1,6,3, 15,12,5,1,5,3, 15,12,4,1,4,3, 15,12,3,1,3,3, 15,12,3,3,3,3, 15,12,3,6,15,3, 15,11,15,1,15,4, 15,11,15,4,15,4, + 15,11,15,5,15,4, 15,11,14,1,14,4, 15,11,14,4,15,4, 15,11,13,1,13,4, 15,11,13,4,15,4, 15,11,12,1,12,4, 15,11,12,4,15,4, 15,11,11,1,11,4, + 15,11,11,4,15,4, 15,11,10,1,10,4, 15,11,10,4,15,4, 15,11,9,1,9,4, 15,11,9,4,15,4, 15,11,8,1,8,4, 15,11,8,4,15,4, 15,11,7,1,7,4, + 15,11,7,4,15,4, 15,11,6,1,6,4, 15,11,6,4,15,4, 15,11,5,1,5,4, 15,11,5,4,15,4, 15,11,4,1,4,4, 15,11,4,4,15,4, 15,11,3,1,3,4, + 15,11,3,4,15,4, 15,11,2,1,2,4, 15,11,2,3,2,4, 15,11,2,4,15,4, 15,11,2,6,15,4, 15,9,14,1,14,6, 15,9,14,3,14,6, 15,9,14,5,0,6, + 15,9,13,1,13,6, 15,9,13,3,13,6, 15,9,12,1,12,6, 15,9,12,3,12,6, 15,9,11,1,11,6, 15,9,11,3,11,6, 15,9,10,1,10,6, 15,9,10,3,10,6, + 15,9,9,1,9,6, 15,9,9,3,9,6, 15,9,8,1,8,6, 15,9,8,3,8,6, 15,9,7,1,7,6, 15,9,7,3,7,6, 15,9,6,1,6,6, 15,9,6,3,6,6, + 15,9,5,1,5,6, 15,9,5,3,5,6, 15,9,4,1,4,6, 15,9,4,3,4,6, 15,9,3,1,3,6, 15,9,3,3,3,6, 15,9,2,1,2,6, 15,9,2,3,2,6, + 15,9,1,1,1,6, 15,9,1,3,1,6, 15,9,0,1,0,6, 15,9,0,3,0,6, 15,9,0,6,0,6, 15,8,14,1,14,7, 15,8,14,5,0,7, 15,8,13,1,13,7, + 15,8,12,1,12,7, 15,8,11,1,11,7, 15,8,10,1,10,7, 15,8,9,1,9,7, 15,8,8,1,8,7, 15,8,7,1,7,7, 15,8,6,1,6,7, 15,8,5,1,5,7, + 15,8,4,1,4,7, 15,8,3,1,3,7, 15,8,2,1,2,7, 15,8,1,1,1,7, 15,8,0,1,0,7, 15,8,0,6,0,7, 15,7,14,1,14,8, 15,7,14,5,0,8, + 15,7,13,1,13,8, 15,7,12,1,12,8, 15,7,11,1,11,8, 15,7,10,1,10,8, 15,7,9,1,9,8, 15,7,8,1,8,8, 15,7,7,1,7,8, 15,7,6,1,6,8, + 15,7,5,1,5,8, 15,7,4,1,4,8, 15,7,3,1,3,8, 15,7,2,1,2,8, 15,7,1,1,1,8, 15,7,0,1,0,8, 15,7,0,6,0,8, 15,6,14,1,14,9, + 15,6,14,4,0,9, 15,6,14,5,0,9, 15,6,13,1,13,9, 15,6,13,4,0,9, 15,6,12,1,12,9, 15,6,12,4,0,9, 15,6,11,1,11,9, 15,6,11,4,0,9, + 15,6,10,1,10,9, 15,6,10,4,0,9, 15,6,9,1,9,9, 15,6,9,4,0,9, 15,6,8,1,8,9, 15,6,8,4,0,9, 15,6,7,1,7,9, 15,6,7,4,0,9, + 15,6,6,1,6,9, 15,6,6,4,0,9, 15,6,5,1,5,9, 15,6,5,4,0,9, 15,6,4,1,4,9, 15,6,4,4,0,9, 15,6,3,1,3,9, 15,6,3,4,0,9, + 15,6,2,1,2,9, 15,6,2,4,0,9, 15,6,1,1,1,9, 15,6,1,4,0,9, 15,6,0,1,0,9, 15,6,0,4,0,9, 15,6,0,6,0,9, 15,4,15,1,15,11, + 15,4,15,3,15,11, 15,4,15,5,15,11, 15,4,14,1,14,11, 15,4,14,3,14,11, 15,4,13,1,13,11, 15,4,13,3,13,11, 15,4,12,1,12,11, 15,4,12,3,12,11, + 15,4,11,1,11,11, 15,4,11,3,11,11, 15,4,10,1,10,11, 15,4,10,3,10,11, 15,4,9,1,9,11, 15,4,9,3,9,11, 15,4,8,1,8,11, 15,4,8,3,8,11, + 15,4,7,1,7,11, 15,4,7,3,7,11, 15,4,6,1,6,11, 15,4,6,3,6,11, 15,4,5,1,5,11, 15,4,5,3,5,11, 15,4,4,1,4,11, 15,4,4,3,4,11, + 15,4,3,1,3,11, 15,4,3,3,3,11, 15,4,2,1,2,11, 15,4,2,3,2,11, 15,4,2,4,15,11, 15,4,2,6,15,11, 15,3,15,1,15,12, 15,3,15,5,15,12, + 15,3,14,1,14,12, 15,3,13,1,13,12, 15,3,12,1,12,12, 15,3,12,4,15,12, 15,3,11,1,11,12, 15,3,11,4,15,12, 15,3,10,1,10,12, 15,3,9,1,9,12, + 15,3,8,1,8,12, 15,3,7,1,7,12, 15,3,6,1,6,12, 15,3,5,1,5,12, 15,3,4,1,4,12, 15,3,3,1,3,12, 15,3,3,4,15,12, 15,3,3,6,15,12, + 15,2,15,1,15,13, 15,2,15,5,15,13, 15,2,14,1,14,13, 15,2,13,1,13,13, 15,2,13,4,15,13, 15,2,13,6,15,13, 15,2,10,1,10,13, 15,2,10,5,15,13, + 15,2,9,1,9,13, 15,2,8,1,8,13, 15,2,7,1,7,13, 15,2,6,1,6,13, 15,2,5,1,5,13, 15,2,4,1,4,13, 15,2,4,4,15,13, 15,2,4,6,15,13, + 15,1,15,1,15,14, 15,1,15,4,15,14, 15,1,15,5,15,14, 15,1,14,1,14,14, 15,1,14,4,15,14, 15,1,14,6,15,14, 15,1,10,1,10,14, 15,1,10,4,15,14, + 15,1,10,5,15,14, 15,1,9,1,9,14, 15,1,9,4,15,14, 15,1,8,1,8,14, 15,1,8,4,15,14, 15,1,7,1,7,14, 15,1,7,4,15,14, 15,1,6,1,6,14, + 15,1,6,4,15,14, 15,1,5,1,5,14, 15,1,5,4,15,14, 15,1,5,6,15,14, + }, + }, + }, +} diff --git a/assets/voxels/gameboy_kid.lua b/assets/voxels/gameboy_kid.lua new file mode 100644 index 0000000..b8dbd20 --- /dev/null +++ b/assets/voxels/gameboy_kid.lua @@ -0,0 +1,161 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "gameboy_kid" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "gameboy_kid", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1668, + count = 1082, + faces = { + 1,10,12,2,3,37, 1,10,12,3,3,37, 1,10,12,5,1,5, 1,10,11,2,4,37, 1,10,11,3,4,37, 1,10,10,2,5,37, 1,10,10,3,5,37, 1,10,9,2,6,37, + 1,10,9,3,6,37, 1,10,8,2,7,37, 1,10,8,3,7,37, 1,10,7,2,8,37, 1,10,7,3,8,37, 1,10,6,2,9,37, 1,10,6,3,9,37, 1,10,5,2,10,37, + 1,10,5,3,10,37, 1,10,4,2,11,37, 1,10,4,3,11,37, 1,10,3,2,12,37, 1,10,3,3,12,37, 1,10,2,2,13,37, 1,10,2,3,13,37, 1,10,2,6,14,21, + 1,9,12,2,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,10,2,5,38, 1,9,9,2,6,38, 1,9,8,2,7,38, 1,9,7,2,8,38, 1,9,6,2,9,38, + 1,9,5,2,10,38, 1,9,4,2,11,38, 1,9,3,2,12,38, 1,9,2,2,13,38, 1,9,2,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, + 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, + 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, + 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,2,2,13,39, 1,8,2,4,1,7, 1,8,2,6,14,23, 2,12,13,2,2,35, 2,12,13,3,2,35, 2,12,13,5,13,19, + 2,12,12,2,3,35, 2,12,12,3,3,35, 2,12,11,2,4,35, 2,12,11,3,4,35, 2,12,10,2,5,35, 2,12,10,3,5,35, 2,12,9,2,6,35, 2,12,9,3,6,35, + 2,12,8,2,7,35, 2,12,8,3,7,35, 2,12,7,2,8,35, 2,12,7,3,8,35, 2,12,6,2,9,35, 2,12,6,3,9,35, 2,12,5,2,10,35, 2,12,5,3,10,35, + 2,12,4,2,11,35, 2,12,4,3,11,35, 2,12,3,2,12,35, 2,12,3,3,12,35, 2,12,3,6,13,19, 2,11,13,2,2,36, 2,11,13,4,2,4, 2,11,13,5,2,4, + 2,11,12,2,3,36, 2,11,11,2,4,36, 2,11,10,2,5,36, 2,11,9,2,6,36, 2,11,8,2,7,36, 2,11,7,2,8,36, 2,11,6,2,9,36, 2,11,5,2,10,36, + 2,11,4,2,11,36, 2,11,3,2,12,36, 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,12,5,2,5, 2,10,2,6,13,21, 2,9,12,5,2,6, + 2,9,2,6,13,22, 2,8,12,5,2,7, 2,8,2,4,2,7, 2,8,2,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, + 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, + 2,7,3,4,2,8, 2,7,3,6,13,24, 2,6,11,2,4,41, 2,6,11,5,13,25, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, + 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,4,6,13,25, 2,5,12,2,3,42, 2,5,12,3,3,42, 2,5,12,4,13,26, 2,5,12,5,13,26, + 2,5,11,2,4,42, 2,5,11,4,13,26, 2,5,10,2,5,42, 2,5,10,4,13,26, 2,5,9,2,6,42, 2,5,9,4,13,26, 2,5,8,2,7,42, 2,5,8,4,13,26, + 2,5,7,2,8,42, 2,5,7,4,13,26, 2,5,6,2,9,42, 2,5,6,4,13,26, 2,5,5,2,10,42, 2,5,5,4,13,26, 2,5,4,2,11,42, 2,5,4,4,13,26, + 2,5,3,2,12,42, 2,5,3,3,12,42, 2,5,3,4,13,26, 2,5,3,6,13,26, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, + 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, + 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, + 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,13,3,2,35, 3,12,13,5,3,3, 3,12,3,6,12,19, 3,11,13,4,3,4, 3,11,13,5,3,4, 3,11,2,3,13,36, + 3,11,2,6,12,20, 3,10,12,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,2,4,3,7, 3,8,2,6,12,23, + 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,11,5,12,25, 3,6,4,6,12,25, 3,5,12,3,3,42, 3,5,12,5,3,10, + 3,5,3,3,12,42, 3,5,3,6,12,26, 3,4,12,2,3,43, 3,4,12,4,3,11, 3,4,12,5,3,11, 3,4,11,2,4,43, 3,4,11,4,3,11, 3,4,10,2,5,43, + 3,4,10,4,3,11, 3,4,9,2,6,43, 3,4,9,4,3,11, 3,4,8,2,7,43, 3,4,8,4,3,11, 3,4,7,2,8,43, 3,4,7,4,3,11, 3,4,6,2,9,43, + 3,4,6,4,3,11, 3,4,5,2,10,43, 3,4,5,4,3,11, 3,4,4,2,11,43, 3,4,4,4,3,11, 3,4,3,2,12,43, 3,4,3,4,3,11, 3,4,3,6,12,27, + 3,2,12,2,3,45, 3,2,12,3,3,45, 3,2,12,5,3,13, 3,2,11,2,4,45, 3,2,11,3,4,45, 3,2,10,2,5,45, 3,2,10,3,5,45, 3,2,9,2,6,45, + 3,2,9,3,6,45, 3,2,8,2,7,45, 3,2,8,3,7,45, 3,2,7,2,8,45, 3,2,7,3,8,45, 3,2,6,2,9,45, 3,2,6,3,9,45, 3,2,5,2,10,45, + 3,2,5,3,10,45, 3,2,4,2,11,45, 3,2,4,3,11,45, 3,2,3,2,12,45, 3,2,3,3,12,45, 3,2,3,6,12,29, 3,1,12,2,3,46, 3,1,12,4,3,14, + 3,1,12,5,3,14, 3,1,11,2,4,46, 3,1,11,4,3,14, 3,1,10,2,5,46, 3,1,10,4,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, + 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,4,2,11,46, + 3,1,4,4,3,14, 3,1,3,2,12,46, 3,1,3,4,3,14, 3,1,3,6,12,30, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, + 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, + 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, + 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, 4,12,3,6,11,19, 4,11,13,4,4,4, 4,11,13,5,4,4, 4,11,2,3,13,36, + 4,11,2,6,11,20, 4,10,12,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,2,4,4,7, 4,8,2,6,11,23, + 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,11,5,4,9, 4,6,4,6,11,25, 4,5,12,3,3,42, 4,5,12,5,4,10, + 4,5,3,3,12,42, 4,5,3,6,11,26, 4,4,12,4,4,11, 4,4,12,5,4,11, 4,4,3,4,4,11, 4,4,3,6,11,27, 4,3,11,2,4,44, 4,3,11,5,4,12, + 4,3,10,2,5,44, 4,3,9,2,6,44, 4,3,8,2,7,44, 4,3,7,2,8,44, 4,3,6,2,9,44, 4,3,5,2,10,44, 4,3,4,2,11,44, 4,3,4,6,11,28, + 4,2,12,3,3,45, 4,2,12,5,4,13, 4,2,3,3,12,45, 4,2,3,6,11,29, 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,8,4,4,14, 4,1,7,4,4,14, + 4,1,3,4,4,14, 4,1,3,6,11,30, 4,0,11,2,4,47, 4,0,11,5,4,15, 4,0,10,2,5,47, 4,0,9,2,6,47, 4,0,9,6,11,31, 4,0,6,2,9,47, + 4,0,6,5,4,15, 4,0,5,2,10,47, 4,0,4,2,11,47, 4,0,4,6,11,31, 5,15,10,2,5,32, 5,15,10,3,5,32, 5,15,10,5,10,16, 5,15,9,2,6,32, + 5,15,9,3,6,32, 5,15,8,2,7,32, 5,15,8,3,7,32, 5,15,7,2,8,32, 5,15,7,3,8,32, 5,15,6,2,9,32, 5,15,6,3,9,32, 5,15,6,6,10,16, + 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,5,3,10,33, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, + 5,13,3,6,10,18, 5,12,13,3,2,35, 5,12,13,5,5,3, 5,12,3,6,10,19, 5,11,13,4,5,4, 5,11,13,5,5,4, 5,11,2,3,13,36, 5,11,2,6,10,20, + 5,10,12,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,2,4,5,7, 5,8,2,6,10,23, 5,7,12,4,5,8, + 5,7,12,5,5,8, 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,11,5,5,9, 5,6,4,6,10,25, 5,5,12,3,3,42, 5,5,12,5,5,10, 5,5,3,3,12,42, + 5,5,3,6,10,26, 5,4,12,4,5,11, 5,4,12,5,5,11, 5,4,3,4,5,11, 5,4,3,6,10,27, 5,3,11,5,5,12, 5,3,4,6,10,28, 5,2,12,3,3,45, + 5,2,12,5,5,13, 5,2,3,3,12,45, 5,2,3,6,10,29, 5,1,12,4,5,14, 5,1,12,5,5,14, 5,1,8,4,5,14, 5,1,7,4,5,14, 5,1,3,4,5,14, + 5,1,3,6,10,30, 5,0,11,5,5,15, 5,0,9,6,10,31, 5,0,6,5,5,15, 5,0,4,6,10,31, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,3,6,32, + 6,15,8,3,7,32, 6,15,7,3,8,32, 6,15,6,3,9,32, 6,15,6,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,5,3,10,33, 6,14,4,3,11,33, + 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,3,6,9,19, + 6,11,13,4,6,4, 6,11,13,5,6,4, 6,11,2,3,13,36, 6,11,2,6,9,20, 6,10,12,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,6,9,22, + 6,8,12,5,6,7, 6,8,2,4,6,7, 6,8,2,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,11,5,6,9, + 6,6,4,6,9,25, 6,5,12,3,3,42, 6,5,12,5,6,10, 6,5,3,3,12,42, 6,5,3,6,9,26, 6,4,12,4,6,11, 6,4,12,5,6,11, 6,4,3,4,6,11, + 6,4,3,6,9,27, 6,3,11,5,6,12, 6,3,4,6,9,28, 6,2,12,3,3,45, 6,2,12,5,6,13, 6,2,3,3,12,45, 6,2,3,6,9,29, 6,1,12,4,6,14, + 6,1,12,5,6,14, 6,1,8,4,6,14, 6,1,7,4,6,14, 6,1,3,4,6,14, 6,1,3,6,9,30, 6,0,11,1,4,47, 6,0,11,5,6,15, 6,0,10,1,5,47, + 6,0,9,1,6,47, 6,0,9,6,9,31, 6,0,6,1,9,47, 6,0,6,5,6,15, 6,0,5,1,10,47, 6,0,4,1,11,47, 6,0,4,6,9,31, 7,15,10,3,5,32, + 7,15,10,5,7,0, 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,6,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, + 7,14,5,3,10,33, 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, + 7,12,13,5,7,3, 7,12,3,6,8,19, 7,11,13,4,7,4, 7,11,13,5,7,4, 7,11,2,3,13,36, 7,11,2,6,8,20, 7,10,12,5,7,5, 7,10,2,6,8,21, + 7,9,12,5,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,2,4,7,7, 7,8,2,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,3,4,7,8, + 7,7,3,6,8,24, 7,6,11,5,7,9, 7,6,4,6,8,25, 7,5,12,3,3,42, 7,5,12,5,7,10, 7,5,3,3,12,42, 7,5,3,6,8,26, 7,4,12,4,7,11, + 7,4,12,5,7,11, 7,4,3,4,7,11, 7,4,3,6,8,27, 7,3,11,5,7,12, 7,3,4,6,8,28, 7,2,12,3,3,45, 7,2,12,5,7,13, 7,2,3,3,12,45, + 7,2,3,6,8,29, 7,1,12,4,7,14, 7,1,12,5,7,14, 7,1,11,4,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, + 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,4,4,7,14, 7,1,3,4,7,14, 7,1,3,6,8,30, 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,3,6,32, + 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,5,3,10,33, 8,14,4,3,11,33, + 8,14,4,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,3,6,7,19, + 8,11,13,4,8,4, 8,11,13,5,8,4, 8,11,2,3,13,36, 8,11,2,6,7,20, 8,10,12,5,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,6,7,22, + 8,8,12,5,8,7, 8,8,2,4,8,7, 8,8,2,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,11,5,8,9, + 8,6,4,6,7,25, 8,5,12,3,3,42, 8,5,12,5,8,10, 8,5,3,3,12,42, 8,5,3,6,7,26, 8,4,12,4,8,11, 8,4,12,5,8,11, 8,4,3,4,8,11, + 8,4,3,6,7,27, 8,3,11,5,8,12, 8,3,4,6,7,28, 8,2,12,3,3,45, 8,2,12,5,8,13, 8,2,3,3,12,45, 8,2,3,6,7,29, 8,1,12,4,8,14, + 8,1,12,5,8,14, 8,1,11,4,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, + 8,1,4,4,8,14, 8,1,3,4,8,14, 8,1,3,6,7,30, 9,15,10,3,5,32, 9,15,10,5,9,0, 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, + 9,15,6,3,9,32, 9,15,6,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,5,3,10,33, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, + 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, 9,12,13,5,9,3, 9,12,3,6,6,19, 9,11,13,4,9,4, 9,11,13,5,9,4, + 9,11,2,3,13,36, 9,11,2,6,6,20, 9,10,12,5,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,2,4,9,7, + 9,8,2,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,3,4,9,8, 9,7,3,6,6,24, 9,6,11,5,9,9, 9,6,4,6,6,25, 9,5,12,3,3,42, + 9,5,12,5,9,10, 9,5,3,3,12,42, 9,5,3,6,6,26, 9,4,12,4,9,11, 9,4,12,5,9,11, 9,4,3,4,9,11, 9,4,3,6,6,27, 9,3,11,5,9,12, + 9,3,4,6,6,28, 9,2,12,3,3,45, 9,2,12,5,9,13, 9,2,3,3,12,45, 9,2,3,6,6,29, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,8,4,9,14, + 9,1,7,4,9,14, 9,1,3,4,9,14, 9,1,3,6,6,30, 9,0,11,2,4,47, 9,0,11,5,9,15, 9,0,10,2,5,47, 9,0,9,2,6,47, 9,0,9,6,6,31, + 9,0,6,2,9,47, 9,0,6,5,9,15, 9,0,5,2,10,47, 9,0,4,2,11,47, 9,0,4,6,6,31, 10,15,10,1,5,32, 10,15,10,3,5,32, 10,15,10,5,5,16, + 10,15,9,1,6,32, 10,15,9,3,6,32, 10,15,8,1,7,32, 10,15,8,3,7,32, 10,15,7,1,8,32, 10,15,7,3,8,32, 10,15,6,1,9,32, 10,15,6,3,9,32, + 10,15,6,6,5,16, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,5,3,10,33, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, 10,13,12,5,10,2, + 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,3,6,5,19, 10,11,13,4,10,4, 10,11,13,5,10,4, 10,11,2,3,13,36, + 10,11,2,6,5,20, 10,10,12,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, 10,8,2,4,10,7, 10,8,2,6,5,23, + 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,11,5,10,9, 10,6,4,6,5,25, 10,5,12,3,3,42, 10,5,12,5,10,10, + 10,5,3,3,12,42, 10,5,3,6,5,26, 10,4,12,4,10,11, 10,4,12,5,10,11, 10,4,3,4,10,11, 10,4,3,6,5,27, 10,3,11,5,10,12, 10,3,4,6,5,28, + 10,2,12,3,3,45, 10,2,12,5,10,13, 10,2,3,3,12,45, 10,2,3,6,5,29, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,8,4,10,14, 10,1,7,4,10,14, + 10,1,3,4,10,14, 10,1,3,6,5,30, 10,0,11,5,10,15, 10,0,9,6,5,31, 10,0,6,5,10,15, 10,0,4,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, + 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, + 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, + 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, 11,12,13,5,11,3, 11,12,3,6,4,19, 11,11,13,4,11,4, + 11,11,13,5,11,4, 11,11,2,3,13,36, 11,11,2,6,4,20, 11,10,12,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,2,6,4,22, 11,8,12,5,11,7, + 11,8,2,4,11,7, 11,8,2,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,11,5,11,9, 11,6,4,6,4,25, + 11,5,12,3,3,42, 11,5,12,5,11,10, 11,5,3,3,12,42, 11,5,3,6,4,26, 11,4,12,4,11,11, 11,4,12,5,11,11, 11,4,3,4,11,11, 11,4,3,6,4,27, + 11,3,11,1,4,44, 11,3,11,5,11,12, 11,3,10,1,5,44, 11,3,9,1,6,44, 11,3,8,1,7,44, 11,3,7,1,8,44, 11,3,6,1,9,44, 11,3,5,1,10,44, + 11,3,4,1,11,44, 11,3,4,6,4,28, 11,2,12,3,3,45, 11,2,12,5,11,13, 11,2,3,3,12,45, 11,2,3,6,4,29, 11,1,12,4,11,14, 11,1,12,5,11,14, + 11,1,8,4,11,14, 11,1,7,4,11,14, 11,1,3,4,11,14, 11,1,3,6,4,30, 11,0,11,1,4,47, 11,0,11,5,11,15, 11,0,10,1,5,47, 11,0,9,1,6,47, + 11,0,9,6,4,31, 11,0,6,1,9,47, 11,0,6,5,11,15, 11,0,5,1,10,47, 11,0,4,1,11,47, 11,0,4,6,4,31, 12,13,12,1,3,34, 12,13,12,3,3,34, + 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, + 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, + 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,3,2,35, 12,12,13,5,12,3, 12,12,3,6,3,19, 12,11,13,4,12,4, + 12,11,13,5,12,4, 12,11,2,3,13,36, 12,11,2,6,3,20, 12,10,12,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, + 12,8,2,4,12,7, 12,8,2,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,6,11,5,3,25, 12,6,4,6,3,25, + 12,5,12,3,3,42, 12,5,12,5,12,10, 12,5,3,3,12,42, 12,5,3,6,3,26, 12,4,12,1,3,43, 12,4,12,4,12,11, 12,4,12,5,12,11, 12,4,11,1,4,43, + 12,4,11,4,12,11, 12,4,10,1,5,43, 12,4,10,4,12,11, 12,4,9,1,6,43, 12,4,9,4,12,11, 12,4,8,1,7,43, 12,4,8,4,12,11, 12,4,7,1,8,43, + 12,4,7,4,12,11, 12,4,6,1,9,43, 12,4,6,4,12,11, 12,4,5,1,10,43, 12,4,5,4,12,11, 12,4,4,1,11,43, 12,4,4,4,12,11, 12,4,3,1,12,43, + 12,4,3,4,12,11, 12,4,3,6,3,27, 12,2,12,1,3,45, 12,2,12,3,3,45, 12,2,12,5,12,13, 12,2,11,1,4,45, 12,2,11,3,4,45, 12,2,10,1,5,45, + 12,2,10,3,5,45, 12,2,9,1,6,45, 12,2,9,3,6,45, 12,2,8,1,7,45, 12,2,8,3,7,45, 12,2,7,1,8,45, 12,2,7,3,8,45, 12,2,6,1,9,45, + 12,2,6,3,9,45, 12,2,5,1,10,45, 12,2,5,3,10,45, 12,2,4,1,11,45, 12,2,4,3,11,45, 12,2,3,1,12,45, 12,2,3,3,12,45, 12,2,3,6,3,29, + 12,1,12,1,3,46, 12,1,12,4,12,14, 12,1,12,5,12,14, 12,1,11,1,4,46, 12,1,11,4,12,14, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,9,1,6,46, + 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, + 12,1,5,4,12,14, 12,1,4,1,11,46, 12,1,4,4,12,14, 12,1,3,1,12,46, 12,1,3,4,12,14, 12,1,3,6,3,30, 13,12,13,1,2,35, 13,12,13,3,2,35, + 13,12,13,5,2,19, 13,12,12,1,3,35, 13,12,12,3,3,35, 13,12,11,1,4,35, 13,12,11,3,4,35, 13,12,10,1,5,35, 13,12,10,3,5,35, 13,12,9,1,6,35, + 13,12,9,3,6,35, 13,12,8,1,7,35, 13,12,8,3,7,35, 13,12,7,1,8,35, 13,12,7,3,8,35, 13,12,6,1,9,35, 13,12,6,3,9,35, 13,12,5,1,10,35, + 13,12,5,3,10,35, 13,12,4,1,11,35, 13,12,4,3,11,35, 13,12,3,1,12,35, 13,12,3,3,12,35, 13,12,3,6,2,19, 13,11,13,1,2,36, 13,11,13,4,13,4, + 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,11,1,4,36, 13,11,10,1,5,36, 13,11,9,1,6,36, 13,11,8,1,7,36, 13,11,7,1,8,36, 13,11,6,1,9,36, + 13,11,5,1,10,36, 13,11,4,1,11,36, 13,11,3,1,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, 13,10,12,5,13,5, 13,10,2,6,2,21, + 13,9,12,5,13,6, 13,9,2,6,2,22, 13,8,12,5,13,7, 13,8,2,4,13,7, 13,8,2,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, + 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, + 13,7,3,1,12,40, 13,7,3,4,13,8, 13,7,3,6,2,24, 13,6,11,1,4,41, 13,6,11,5,2,25, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, + 13,6,7,1,8,41, 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,4,6,2,25, 13,5,12,1,3,42, 13,5,12,3,3,42, 13,5,12,4,2,26, + 13,5,12,5,2,26, 13,5,11,1,4,42, 13,5,11,4,2,26, 13,5,10,1,5,42, 13,5,10,4,2,26, 13,5,9,1,6,42, 13,5,9,4,2,26, 13,5,8,1,7,42, + 13,5,8,4,2,26, 13,5,7,1,8,42, 13,5,7,4,2,26, 13,5,6,1,9,42, 13,5,6,4,2,26, 13,5,5,1,10,42, 13,5,5,4,2,26, 13,5,4,1,11,42, + 13,5,4,4,2,26, 13,5,3,1,12,42, 13,5,3,3,12,42, 13,5,3,4,2,26, 13,5,3,6,2,26, 14,10,12,1,3,37, 14,10,12,3,3,37, 14,10,12,5,14,5, + 14,10,11,1,4,37, 14,10,11,3,4,37, 14,10,10,1,5,37, 14,10,10,3,5,37, 14,10,9,1,6,37, 14,10,9,3,6,37, 14,10,8,1,7,37, 14,10,8,3,7,37, + 14,10,7,1,8,37, 14,10,7,3,8,37, 14,10,6,1,9,37, 14,10,6,3,9,37, 14,10,5,1,10,37, 14,10,5,3,10,37, 14,10,4,1,11,37, 14,10,4,3,11,37, + 14,10,3,1,12,37, 14,10,3,3,12,37, 14,10,2,1,13,37, 14,10,2,3,13,37, 14,10,2,6,1,21, 14,9,12,1,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, + 14,9,10,1,5,38, 14,9,9,1,6,38, 14,9,8,1,7,38, 14,9,7,1,8,38, 14,9,6,1,9,38, 14,9,5,1,10,38, 14,9,4,1,11,38, 14,9,3,1,12,38, + 14,9,2,1,13,38, 14,9,2,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, + 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, + 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,2,1,13,39, + 14,8,2,4,14,7, 14,8,2,6,1,23, + }, + }, + }, +} diff --git a/assets/voxels/gentleman.lua b/assets/voxels/gentleman.lua new file mode 100644 index 0000000..7f369e4 --- /dev/null +++ b/assets/voxels/gentleman.lua @@ -0,0 +1,323 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "gentleman" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "gentleman", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1570, + count = 1150, + faces = { + 1,11,14,2,1,36, 1,11,14,3,1,36, 1,11,14,4,1,4, 1,11,14,5,1,4, 1,11,13,2,2,36, 1,11,13,3,2,36, 1,11,13,4,1,4, 1,11,12,2,3,36, + 1,11,12,3,3,36, 1,11,12,4,1,4, 1,11,11,2,4,36, 1,11,11,3,4,36, 1,11,11,4,1,4, 1,11,10,2,5,36, 1,11,10,3,5,36, 1,11,10,4,1,4, + 1,11,9,2,6,36, 1,11,9,3,6,36, 1,11,9,4,1,4, 1,11,8,2,7,36, 1,11,8,3,7,36, 1,11,8,4,1,4, 1,11,7,2,8,36, 1,11,7,3,8,36, + 1,11,7,4,1,4, 1,11,6,2,9,36, 1,11,6,3,9,36, 1,11,6,4,1,4, 1,11,5,2,10,36, 1,11,5,3,10,36, 1,11,5,4,1,4, 1,11,4,2,11,36, + 1,11,4,3,11,36, 1,11,4,4,1,4, 1,11,3,2,12,36, 1,11,3,3,12,36, 1,11,3,4,1,4, 1,11,2,2,13,36, 1,11,2,3,13,36, 1,11,2,4,1,4, + 1,11,1,2,14,36, 1,11,1,3,14,36, 1,11,1,4,1,4, 1,11,1,6,14,20, 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, + 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, 1,9,9,3,6,38, 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, + 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, 1,9,5,3,10,38, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, + 1,9,3,3,12,38, 1,9,3,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, + 1,8,10,4,1,7, 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, + 1,8,6,4,1,7, 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, + 1,5,10,2,5,42, 1,5,10,3,5,42, 1,5,10,4,1,10, 1,5,10,5,1,10, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, + 1,5,7,2,8,42, 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,5,6,14,26, 1,4,9,2,6,43, + 1,4,9,4,1,11, 1,4,9,5,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, + 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,3,11,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,11,14,3,1,36, 2,11,14,4,2,4, + 2,11,14,5,2,4, 2,11,13,3,2,36, 2,11,12,3,3,36, 2,11,11,3,4,36, 2,11,10,3,5,36, 2,11,9,3,6,36, 2,11,8,3,7,36, 2,11,7,3,8,36, + 2,11,6,3,9,36, 2,11,5,3,10,36, 2,11,4,3,11,36, 2,11,3,3,12,36, 2,11,2,3,13,36, 2,11,1,3,14,36, 2,11,1,4,2,4, 2,11,1,6,13,20, + 2,10,13,2,2,37, 2,10,13,4,2,5, 2,10,13,5,2,5, 2,10,12,2,3,37, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, 2,10,8,2,7,37, + 2,10,7,2,8,37, 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,4,2,5, 2,10,2,6,13,21, + 2,9,12,5,2,6, 2,9,3,6,13,22, 2,8,12,5,2,7, 2,8,3,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, + 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, + 2,7,3,4,2,8, 2,7,3,6,13,24, 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, + 2,6,7,2,8,41, 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,4,4,2,9, 2,6,4,6,13,25, 2,5,10,4,2,10, 2,5,10,5,2,10, + 2,5,5,6,13,26, 2,4,9,5,2,11, 2,4,4,3,11,43, 2,4,4,6,13,27, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,9,5,2,12, 2,3,8,2,7,44, + 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, + 2,3,4,4,2,12, 2,3,4,6,13,28, 3,12,12,2,3,35, 3,12,12,3,3,35, 3,12,12,5,3,3, 3,12,11,2,4,35, 3,12,11,3,4,35, 3,12,10,2,5,35, + 3,12,10,3,5,35, 3,12,9,2,6,35, 3,12,9,3,6,35, 3,12,8,2,7,35, 3,12,8,3,7,35, 3,12,7,2,8,35, 3,12,7,3,8,35, 3,12,6,2,9,35, + 3,12,6,3,9,35, 3,12,5,2,10,35, 3,12,5,3,10,35, 3,12,4,2,11,35, 3,12,4,3,11,35, 3,12,3,2,12,35, 3,12,3,3,12,35, 3,12,3,6,12,19, + 3,11,14,3,1,36, 3,11,14,4,3,4, 3,11,14,5,3,4, 3,11,13,3,2,36, 3,11,2,3,13,36, 3,11,1,3,14,36, 3,11,1,4,3,4, 3,11,1,6,12,20, + 3,10,13,4,3,5, 3,10,13,5,3,5, 3,10,2,4,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,3,6,12,22, 3,8,12,5,3,7, 3,8,3,6,12,23, + 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,11,4,3,9, 3,6,11,5,3,9, 3,6,4,4,3,9, 3,6,4,6,12,25, + 3,5,10,4,3,10, 3,5,10,5,3,10, 3,5,5,6,12,26, 3,4,9,5,3,11, 3,4,4,3,11,43, 3,4,4,6,12,27, 3,3,9,5,3,12, 3,3,4,6,12,28, + 3,2,10,2,5,45, 3,2,10,3,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, + 3,2,4,2,11,45, 3,2,4,6,12,29, 3,1,11,2,4,46, 3,1,11,3,4,46, 3,1,11,4,3,14, 3,1,11,5,3,14, 3,1,10,2,5,46, 3,1,10,4,3,14, + 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, 3,1,6,2,9,46, 3,1,6,4,3,14, + 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,4,2,11,46, 3,1,4,4,3,14, 3,1,3,2,12,46, 3,1,3,3,12,46, 3,1,3,4,3,14, 3,1,3,6,12,30, + 4,15,11,2,4,32, 4,15,11,3,4,32, 4,15,11,5,4,0, 4,15,10,2,5,32, 4,15,10,3,5,32, 4,15,9,2,6,32, 4,15,9,3,6,32, 4,15,8,2,7,32, + 4,15,8,3,7,32, 4,15,7,2,8,32, 4,15,7,3,8,32, 4,15,6,2,9,32, 4,15,6,3,9,32, 4,15,5,2,10,32, 4,15,5,3,10,32, 4,15,4,2,11,32, + 4,15,4,3,11,32, 4,15,4,6,11,16, 4,14,11,2,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, 4,14,9,2,6,33, 4,14,8,2,7,33, 4,14,7,2,8,33, + 4,14,6,2,9,33, 4,14,5,2,10,33, 4,14,4,2,11,33, 4,14,4,6,11,17, 4,13,11,2,4,34, 4,13,11,5,4,2, 4,13,10,2,5,34, 4,13,9,2,6,34, + 4,13,8,2,7,34, 4,13,7,2,8,34, 4,13,6,2,9,34, 4,13,5,2,10,34, 4,13,4,2,11,34, 4,13,4,6,11,18, 4,12,12,3,3,35, 4,12,12,5,4,3, + 4,12,3,3,12,35, 4,12,3,6,11,19, 4,11,14,3,1,36, 4,11,14,4,4,4, 4,11,14,5,4,4, 4,11,13,3,2,36, 4,11,2,3,13,36, 4,11,1,3,14,36, + 4,11,1,4,4,4, 4,11,1,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,2,4,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,3,6,11,22, + 4,8,12,5,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,11,4,4,9, 4,6,11,5,4,9, + 4,6,4,4,4,9, 4,6,4,6,11,25, 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,5,6,11,26, 4,4,9,5,4,11, 4,4,4,3,11,43, 4,4,4,6,11,27, + 4,3,9,5,4,12, 4,3,4,6,11,28, 4,2,10,3,5,45, 4,2,10,5,4,13, 4,2,4,6,11,29, 4,1,11,3,4,46, 4,1,11,5,4,14, 4,1,4,4,4,14, + 4,1,3,3,12,46, 4,1,3,4,4,14, 4,1,3,6,11,30, 4,0,11,2,4,47, 4,0,11,5,4,15, 4,0,10,2,5,47, 4,0,9,2,6,47, 4,0,8,2,7,47, + 4,0,7,2,8,47, 4,0,6,2,9,47, 4,0,5,2,10,47, 4,0,5,6,11,31, 5,15,11,3,4,32, 5,15,11,5,5,0, 5,15,10,3,5,32, 5,15,9,3,6,32, + 5,15,8,3,7,32, 5,15,7,3,8,32, 5,15,6,3,9,32, 5,15,5,3,10,32, 5,15,4,3,11,32, 5,15,4,6,10,16, 5,14,11,5,5,1, 5,14,4,6,10,17, + 5,13,11,5,5,2, 5,13,4,6,10,18, 5,12,12,3,3,35, 5,12,12,5,5,3, 5,12,3,3,12,35, 5,12,3,6,10,19, 5,11,14,3,1,36, 5,11,14,4,5,4, + 5,11,14,5,5,4, 5,11,13,3,2,36, 5,11,2,3,13,36, 5,11,1,3,14,36, 5,11,1,4,5,4, 5,11,1,6,10,20, 5,10,13,4,5,5, 5,10,13,5,5,5, + 5,10,2,4,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,3,6,10,22, 5,8,12,5,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, + 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,4,4,5,9, 5,6,4,6,10,25, 5,5,10,4,5,10, 5,5,10,5,5,10, + 5,5,5,6,10,26, 5,4,9,5,5,11, 5,4,4,3,11,43, 5,4,4,6,10,27, 5,3,9,5,5,12, 5,3,4,6,10,28, 5,2,10,3,5,45, 5,2,10,5,5,13, + 5,2,4,6,10,29, 5,1,11,3,4,46, 5,1,11,5,5,14, 5,1,4,4,5,14, 5,1,3,3,12,46, 5,1,3,4,5,14, 5,1,3,6,10,30, 5,0,11,5,5,15, + 5,0,5,6,10,31, 6,15,11,3,4,32, 6,15,11,5,6,0, 6,15,10,3,5,32, 6,15,9,3,6,32, 6,15,8,3,7,32, 6,15,7,3,8,32, 6,15,6,3,9,32, + 6,15,5,3,10,32, 6,15,4,3,11,32, 6,15,4,6,9,16, 6,14,11,5,6,1, 6,14,4,6,9,17, 6,13,11,5,6,2, 6,13,4,6,9,18, 6,12,12,3,3,35, + 6,12,12,5,6,3, 6,12,3,3,12,35, 6,12,3,6,9,19, 6,11,14,3,1,36, 6,11,14,4,6,4, 6,11,14,5,6,4, 6,11,13,3,2,36, 6,11,2,3,13,36, + 6,11,1,3,14,36, 6,11,1,4,6,4, 6,11,1,6,9,20, 6,10,13,4,6,5, 6,10,13,5,6,5, 6,10,2,4,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, + 6,9,3,6,9,22, 6,8,12,5,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,11,4,6,9, + 6,6,11,5,6,9, 6,6,4,4,6,9, 6,6,4,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, 6,5,5,6,9,26, 6,4,9,5,6,11, 6,4,4,3,11,43, + 6,4,4,6,9,27, 6,3,9,5,6,12, 6,3,4,6,9,28, 6,2,10,3,5,45, 6,2,10,5,6,13, 6,2,4,6,9,29, 6,1,11,3,4,46, 6,1,11,5,6,14, + 6,1,4,4,6,14, 6,1,3,3,12,46, 6,1,3,4,6,14, 6,1,3,6,9,30, 6,0,11,1,4,47, 6,0,11,5,6,15, 6,0,10,1,5,47, 6,0,9,1,6,47, + 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,5,1,10,47, 6,0,5,6,9,31, 7,15,11,3,4,32, 7,15,11,5,7,0, 7,15,10,3,5,32, + 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,5,3,10,32, 7,15,4,3,11,32, 7,15,4,6,8,16, 7,14,11,5,7,1, + 7,14,4,6,8,17, 7,13,11,5,7,2, 7,13,4,6,8,18, 7,12,12,3,3,35, 7,12,12,5,7,3, 7,12,3,3,12,35, 7,12,3,6,8,19, 7,11,14,3,1,36, + 7,11,14,4,7,4, 7,11,14,5,7,4, 7,11,13,3,2,36, 7,11,2,3,13,36, 7,11,1,3,14,36, 7,11,1,4,7,4, 7,11,1,6,8,20, 7,10,13,4,7,5, + 7,10,13,5,7,5, 7,10,2,4,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,3,6,8,22, 7,8,12,5,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, + 7,7,12,5,7,8, 7,7,3,4,7,8, 7,7,3,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,4,4,7,9, 7,6,4,6,8,25, 7,5,10,4,7,10, + 7,5,10,5,7,10, 7,5,5,6,8,26, 7,4,9,5,7,11, 7,4,4,3,11,43, 7,4,4,6,8,27, 7,3,9,5,7,12, 7,3,4,6,8,28, 7,2,10,3,5,45, + 7,2,10,5,7,13, 7,2,4,6,8,29, 7,1,11,3,4,46, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, + 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,4,4,7,14, 7,1,3,3,12,46, 7,1,3,4,7,14, 7,1,3,6,8,30, 8,15,11,3,4,32, + 8,15,11,5,8,0, 8,15,10,3,5,32, 8,15,9,3,6,32, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,5,3,10,32, 8,15,4,3,11,32, + 8,15,4,6,7,16, 8,14,11,5,8,1, 8,14,4,6,7,17, 8,13,11,5,8,2, 8,13,4,6,7,18, 8,12,12,3,3,35, 8,12,12,5,8,3, 8,12,3,3,12,35, + 8,12,3,6,7,19, 8,11,14,3,1,36, 8,11,14,4,8,4, 8,11,14,5,8,4, 8,11,13,3,2,36, 8,11,2,3,13,36, 8,11,1,3,14,36, 8,11,1,4,8,4, + 8,11,1,6,7,20, 8,10,13,4,8,5, 8,10,13,5,8,5, 8,10,2,4,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,3,6,7,22, 8,8,12,5,8,7, + 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,4,4,8,9, + 8,6,4,6,7,25, 8,5,10,4,8,10, 8,5,10,5,8,10, 8,5,5,6,7,26, 8,4,9,5,8,11, 8,4,4,3,11,43, 8,4,4,6,7,27, 8,3,9,5,8,12, + 8,3,4,6,7,28, 8,2,10,3,5,45, 8,2,10,5,8,13, 8,2,4,6,7,29, 8,1,11,3,4,46, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, + 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,4,4,8,14, 8,1,3,3,12,46, 8,1,3,4,8,14, + 8,1,3,6,7,30, 9,15,11,3,4,32, 9,15,11,5,9,0, 9,15,10,3,5,32, 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, 9,15,6,3,9,32, + 9,15,5,3,10,32, 9,15,4,3,11,32, 9,15,4,6,6,16, 9,14,11,5,9,1, 9,14,4,6,6,17, 9,13,11,5,9,2, 9,13,4,6,6,18, 9,12,12,3,3,35, + 9,12,12,5,9,3, 9,12,3,3,12,35, 9,12,3,6,6,19, 9,11,14,3,1,36, 9,11,14,4,9,4, 9,11,14,5,9,4, 9,11,13,3,2,36, 9,11,2,3,13,36, + 9,11,1,3,14,36, 9,11,1,4,9,4, 9,11,1,6,6,20, 9,10,13,4,9,5, 9,10,13,5,9,5, 9,10,2,4,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, + 9,9,3,6,6,22, 9,8,12,5,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,3,4,9,8, 9,7,3,6,6,24, 9,6,11,4,9,9, + 9,6,11,5,9,9, 9,6,4,4,9,9, 9,6,4,6,6,25, 9,5,10,4,9,10, 9,5,10,5,9,10, 9,5,5,6,6,26, 9,4,9,5,9,11, 9,4,4,3,11,43, + 9,4,4,6,6,27, 9,3,9,5,9,12, 9,3,4,6,6,28, 9,2,10,3,5,45, 9,2,10,5,9,13, 9,2,4,6,6,29, 9,1,11,3,4,46, 9,1,11,5,9,14, + 9,1,4,4,9,14, 9,1,3,3,12,46, 9,1,3,4,9,14, 9,1,3,6,6,30, 9,0,11,2,4,47, 9,0,11,5,9,15, 9,0,10,2,5,47, 9,0,9,2,6,47, + 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,5,2,10,47, 9,0,5,6,6,31, 10,15,11,3,4,32, 10,15,11,5,10,0, 10,15,10,3,5,32, + 10,15,9,3,6,32, 10,15,8,3,7,32, 10,15,7,3,8,32, 10,15,6,3,9,32, 10,15,5,3,10,32, 10,15,4,3,11,32, 10,15,4,6,5,16, 10,14,11,5,10,1, + 10,14,4,6,5,17, 10,13,11,5,10,2, 10,13,4,6,5,18, 10,12,12,3,3,35, 10,12,12,5,10,3, 10,12,3,3,12,35, 10,12,3,6,5,19, 10,11,14,3,1,36, + 10,11,14,4,10,4, 10,11,14,5,10,4, 10,11,13,3,2,36, 10,11,2,3,13,36, 10,11,1,3,14,36, 10,11,1,4,10,4, 10,11,1,6,5,20, 10,10,13,4,10,5, + 10,10,13,5,10,5, 10,10,2,4,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,3,6,5,22, 10,8,12,5,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, + 10,7,12,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,4,4,10,9, 10,6,4,6,5,25, 10,5,10,4,10,10, + 10,5,10,5,10,10, 10,5,5,6,5,26, 10,4,9,5,10,11, 10,4,4,3,11,43, 10,4,4,6,5,27, 10,3,9,5,10,12, 10,3,4,6,5,28, 10,2,10,3,5,45, + 10,2,10,5,10,13, 10,2,4,6,5,29, 10,1,11,3,4,46, 10,1,11,5,10,14, 10,1,4,4,10,14, 10,1,3,3,12,46, 10,1,3,4,10,14, 10,1,3,6,5,30, + 10,0,11,5,10,15, 10,0,5,6,5,31, 11,15,11,1,4,32, 11,15,11,3,4,32, 11,15,11,5,11,0, 11,15,10,1,5,32, 11,15,10,3,5,32, 11,15,9,1,6,32, + 11,15,9,3,6,32, 11,15,8,1,7,32, 11,15,8,3,7,32, 11,15,7,1,8,32, 11,15,7,3,8,32, 11,15,6,1,9,32, 11,15,6,3,9,32, 11,15,5,1,10,32, + 11,15,5,3,10,32, 11,15,4,1,11,32, 11,15,4,3,11,32, 11,15,4,6,4,16, 11,14,11,1,4,33, 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,9,1,6,33, + 11,14,8,1,7,33, 11,14,7,1,8,33, 11,14,6,1,9,33, 11,14,5,1,10,33, 11,14,4,1,11,33, 11,14,4,6,4,17, 11,13,11,1,4,34, 11,13,11,5,11,2, + 11,13,10,1,5,34, 11,13,9,1,6,34, 11,13,8,1,7,34, 11,13,7,1,8,34, 11,13,6,1,9,34, 11,13,5,1,10,34, 11,13,4,1,11,34, 11,13,4,6,4,18, + 11,12,12,3,3,35, 11,12,12,5,11,3, 11,12,3,3,12,35, 11,12,3,6,4,19, 11,11,14,3,1,36, 11,11,14,4,11,4, 11,11,14,5,11,4, 11,11,13,3,2,36, + 11,11,2,3,13,36, 11,11,1,3,14,36, 11,11,1,4,11,4, 11,11,1,6,4,20, 11,10,13,4,11,5, 11,10,13,5,11,5, 11,10,2,4,11,5, 11,10,2,6,4,21, + 11,9,12,5,11,6, 11,9,3,6,4,22, 11,8,12,5,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, + 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,4,4,11,9, 11,6,4,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, 11,5,5,6,4,26, 11,4,9,5,11,11, + 11,4,4,3,11,43, 11,4,4,6,4,27, 11,3,9,5,11,12, 11,3,4,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, 11,2,4,6,4,29, 11,1,11,3,4,46, + 11,1,11,5,11,14, 11,1,4,4,11,14, 11,1,3,3,12,46, 11,1,3,4,11,14, 11,1,3,6,4,30, 11,0,11,1,4,47, 11,0,11,5,11,15, 11,0,10,1,5,47, + 11,0,9,1,6,47, 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,5,1,10,47, 11,0,5,6,4,31, 12,12,12,1,3,35, 12,12,12,3,3,35, + 12,12,12,5,12,3, 12,12,11,1,4,35, 12,12,11,3,4,35, 12,12,10,1,5,35, 12,12,10,3,5,35, 12,12,9,1,6,35, 12,12,9,3,6,35, 12,12,8,1,7,35, + 12,12,8,3,7,35, 12,12,7,1,8,35, 12,12,7,3,8,35, 12,12,6,1,9,35, 12,12,6,3,9,35, 12,12,5,1,10,35, 12,12,5,3,10,35, 12,12,4,1,11,35, + 12,12,4,3,11,35, 12,12,3,1,12,35, 12,12,3,3,12,35, 12,12,3,6,3,19, 12,11,14,3,1,36, 12,11,14,4,12,4, 12,11,14,5,12,4, 12,11,13,3,2,36, + 12,11,2,3,13,36, 12,11,1,3,14,36, 12,11,1,4,12,4, 12,11,1,6,3,20, 12,10,13,4,12,5, 12,10,13,5,12,5, 12,10,2,4,12,5, 12,10,2,6,3,21, + 12,9,12,5,12,6, 12,9,3,6,3,22, 12,8,12,5,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,3,4,12,8, 12,7,3,6,3,24, + 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,4,4,12,9, 12,6,4,6,3,25, 12,5,10,4,12,10, 12,5,10,5,12,10, 12,5,5,6,3,26, 12,4,9,5,12,11, + 12,4,4,3,11,43, 12,4,4,6,3,27, 12,3,9,5,12,12, 12,3,4,6,3,28, 12,2,10,1,5,45, 12,2,10,3,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, + 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,4,1,11,45, 12,2,4,6,3,29, 12,1,11,1,4,46, 12,1,11,3,4,46, + 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, + 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,4,1,11,46, 12,1,4,4,12,14, + 12,1,3,1,12,46, 12,1,3,3,12,46, 12,1,3,4,12,14, 12,1,3,6,3,30, 13,11,14,3,1,36, 13,11,14,4,13,4, 13,11,14,5,13,4, 13,11,13,3,2,36, + 13,11,12,3,3,36, 13,11,11,3,4,36, 13,11,10,3,5,36, 13,11,9,3,6,36, 13,11,8,3,7,36, 13,11,7,3,8,36, 13,11,6,3,9,36, 13,11,5,3,10,36, + 13,11,4,3,11,36, 13,11,3,3,12,36, 13,11,2,3,13,36, 13,11,1,3,14,36, 13,11,1,4,13,4, 13,11,1,6,2,20, 13,10,13,1,2,37, 13,10,13,4,13,5, + 13,10,13,5,13,5, 13,10,12,1,3,37, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, 13,10,6,1,9,37, + 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,4,13,5, 13,10,2,6,2,21, 13,9,12,5,13,6, 13,9,3,6,2,22, + 13,8,12,5,13,7, 13,8,3,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, + 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, 13,7,3,4,13,8, 13,7,3,6,2,24, + 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, + 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,4,4,13,9, 13,6,4,6,2,25, 13,5,10,4,13,10, 13,5,10,5,13,10, 13,5,5,6,2,26, 13,4,9,5,13,11, + 13,4,4,3,11,43, 13,4,4,6,2,27, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, + 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, + 14,11,14,1,1,36, 14,11,14,3,1,36, 14,11,14,4,14,4, 14,11,14,5,14,4, 14,11,13,1,2,36, 14,11,13,3,2,36, 14,11,13,4,14,4, 14,11,12,1,3,36, + 14,11,12,3,3,36, 14,11,12,4,14,4, 14,11,11,1,4,36, 14,11,11,3,4,36, 14,11,11,4,14,4, 14,11,10,1,5,36, 14,11,10,3,5,36, 14,11,10,4,14,4, + 14,11,9,1,6,36, 14,11,9,3,6,36, 14,11,9,4,14,4, 14,11,8,1,7,36, 14,11,8,3,7,36, 14,11,8,4,14,4, 14,11,7,1,8,36, 14,11,7,3,8,36, + 14,11,7,4,14,4, 14,11,6,1,9,36, 14,11,6,3,9,36, 14,11,6,4,14,4, 14,11,5,1,10,36, 14,11,5,3,10,36, 14,11,5,4,14,4, 14,11,4,1,11,36, + 14,11,4,3,11,36, 14,11,4,4,14,4, 14,11,3,1,12,36, 14,11,3,3,12,36, 14,11,3,4,14,4, 14,11,2,1,13,36, 14,11,2,3,13,36, 14,11,2,4,14,4, + 14,11,1,1,14,36, 14,11,1,3,14,36, 14,11,1,4,14,4, 14,11,1,6,1,20, 14,9,12,1,3,38, 14,9,12,3,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, + 14,9,11,3,4,38, 14,9,10,1,5,38, 14,9,10,3,5,38, 14,9,9,1,6,38, 14,9,9,3,6,38, 14,9,8,1,7,38, 14,9,8,3,7,38, 14,9,7,1,8,38, + 14,9,7,3,8,38, 14,9,6,1,9,38, 14,9,6,3,9,38, 14,9,5,1,10,38, 14,9,5,3,10,38, 14,9,4,1,11,38, 14,9,4,3,11,38, 14,9,3,1,12,38, + 14,9,3,3,12,38, 14,9,3,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, + 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, + 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,3,6,1,23, + 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,4,14,10, 14,5,10,5,14,10, 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, + 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,5,6,1,26, 14,4,9,1,6,43, + 14,4,9,4,14,11, 14,4,9,5,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, + 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,3,11,43, 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1617, + count = 1170, + faces = { + 1,10,14,2,1,85, 1,10,14,3,1,85, 1,10,14,4,1,53, 1,10,14,5,1,53, 1,10,13,2,2,85, 1,10,13,3,2,85, 1,10,13,4,1,53, 1,10,12,2,3,85, + 1,10,12,3,3,85, 1,10,12,4,1,53, 1,10,11,2,4,85, 1,10,11,3,4,85, 1,10,11,4,1,53, 1,10,10,2,5,85, 1,10,10,3,5,85, 1,10,10,4,1,53, + 1,10,9,2,6,85, 1,10,9,3,6,85, 1,10,9,4,1,53, 1,10,8,2,7,85, 1,10,8,3,7,85, 1,10,8,4,1,53, 1,10,7,2,8,85, 1,10,7,3,8,85, + 1,10,7,4,1,53, 1,10,6,2,9,85, 1,10,6,3,9,85, 1,10,6,4,1,53, 1,10,5,2,10,85, 1,10,5,3,10,85, 1,10,5,4,1,53, 1,10,4,2,11,85, + 1,10,4,3,11,85, 1,10,4,4,1,53, 1,10,3,2,12,85, 1,10,3,3,12,85, 1,10,3,4,1,53, 1,10,2,2,13,85, 1,10,2,3,13,85, 1,10,2,4,1,53, + 1,10,1,2,14,85, 1,10,1,3,14,85, 1,10,1,4,1,53, 1,10,1,6,14,69, 1,8,12,2,3,87, 1,8,12,3,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, + 1,8,11,3,4,87, 1,8,10,2,5,87, 1,8,10,3,5,87, 1,8,9,2,6,87, 1,8,9,3,6,87, 1,8,8,2,7,87, 1,8,8,3,7,87, 1,8,7,2,8,87, + 1,8,7,3,8,87, 1,8,6,2,9,87, 1,8,6,3,9,87, 1,8,5,2,10,87, 1,8,5,3,10,87, 1,8,4,2,11,87, 1,8,4,3,11,87, 1,8,3,2,12,87, + 1,8,3,3,12,87, 1,8,3,6,14,71, 1,7,12,2,3,88, 1,7,12,5,1,56, 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, + 1,7,7,2,8,88, 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, 1,7,3,2,12,88, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, + 1,6,12,5,1,57, 1,6,11,2,4,89, 1,6,10,2,5,89, 1,6,9,2,6,89, 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, + 1,6,4,2,11,89, 1,6,3,2,12,89, 1,6,3,4,1,57, 1,6,3,6,1,57, 1,5,11,2,4,90, 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, + 1,5,10,4,1,58, 1,5,9,2,6,90, 1,5,9,4,1,58, 1,5,8,2,7,90, 1,5,8,4,1,58, 1,5,7,2,8,90, 1,5,7,4,1,58, 1,5,6,2,9,90, + 1,5,6,4,1,58, 1,5,5,2,10,90, 1,5,5,4,1,58, 1,5,4,2,11,90, 1,5,4,4,1,58, 1,5,4,6,1,58, 2,10,14,3,1,85, 2,10,14,4,2,53, + 2,10,14,5,2,53, 2,10,13,3,2,85, 2,10,12,3,3,85, 2,10,11,3,4,85, 2,10,10,3,5,85, 2,10,9,3,6,85, 2,10,8,3,7,85, 2,10,7,3,8,85, + 2,10,6,3,9,85, 2,10,5,3,10,85, 2,10,4,3,11,85, 2,10,3,3,12,85, 2,10,2,3,13,85, 2,10,1,3,14,85, 2,10,1,4,2,53, 2,10,1,6,13,69, + 2,9,13,2,2,86, 2,9,13,4,2,54, 2,9,13,5,2,54, 2,9,12,2,3,86, 2,9,11,2,4,86, 2,9,10,2,5,86, 2,9,9,2,6,86, 2,9,8,2,7,86, + 2,9,7,2,8,86, 2,9,6,2,9,86, 2,9,5,2,10,86, 2,9,4,2,11,86, 2,9,3,2,12,86, 2,9,2,2,13,86, 2,9,2,4,2,54, 2,9,2,6,13,70, + 2,8,12,5,2,55, 2,8,3,6,13,71, 2,7,12,5,2,56, 2,7,3,6,13,72, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,3,4,2,57, 2,6,3,6,13,73, + 2,5,11,4,2,58, 2,5,11,5,2,58, 2,5,4,4,2,58, 2,5,4,6,13,74, 2,4,10,2,5,91, 2,4,10,5,2,59, 2,4,9,2,6,91, 2,4,8,2,7,91, + 2,4,7,2,8,91, 2,4,6,2,9,91, 2,4,5,2,10,91, 2,4,5,6,2,59, 2,3,12,2,3,92, 2,3,12,3,3,92, 2,3,12,5,13,76, 2,3,11,2,4,92, + 2,3,11,3,4,92, 2,3,10,2,5,92, 2,3,9,2,6,92, 2,3,8,2,7,92, 2,3,7,2,8,92, 2,3,6,2,9,92, 2,3,5,2,10,92, 2,3,4,2,11,92, + 2,3,4,3,11,92, 2,3,3,2,12,92, 2,3,3,3,12,92, 2,3,3,6,13,76, 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, 2,2,13,5,13,77, + 2,2,12,2,3,93, 2,2,12,4,13,77, 2,2,11,2,4,93, 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,4,13,77, + 2,2,8,2,7,93, 2,2,8,4,13,77, 2,2,7,2,8,93, 2,2,7,4,13,77, 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,4,13,77, + 2,2,4,2,11,93, 2,2,4,4,13,77, 2,2,3,2,12,93, 2,2,3,4,13,77, 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, 2,2,2,6,13,77, + 3,11,12,2,3,84, 3,11,12,3,3,84, 3,11,12,5,3,52, 3,11,11,2,4,84, 3,11,11,3,4,84, 3,11,10,2,5,84, 3,11,10,3,5,84, 3,11,9,2,6,84, + 3,11,9,3,6,84, 3,11,8,2,7,84, 3,11,8,3,7,84, 3,11,7,2,8,84, 3,11,7,3,8,84, 3,11,6,2,9,84, 3,11,6,3,9,84, 3,11,5,2,10,84, + 3,11,5,3,10,84, 3,11,4,2,11,84, 3,11,4,3,11,84, 3,11,3,2,12,84, 3,11,3,3,12,84, 3,11,3,6,12,68, 3,10,14,3,1,85, 3,10,14,4,3,53, + 3,10,14,5,3,53, 3,10,13,3,2,85, 3,10,2,3,13,85, 3,10,1,3,14,85, 3,10,1,4,3,53, 3,10,1,6,12,69, 3,9,13,4,3,54, 3,9,13,5,3,54, + 3,9,2,4,3,54, 3,9,2,6,12,70, 3,8,12,5,3,55, 3,8,3,6,12,71, 3,7,12,5,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, 3,6,12,5,3,57, + 3,6,3,4,3,57, 3,6,3,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,4,4,3,58, 3,5,4,6,12,74, 3,4,10,5,3,59, 3,4,5,6,12,75, + 3,3,12,3,3,92, 3,3,12,5,3,60, 3,3,11,3,4,92, 3,3,4,3,11,92, 3,3,3,3,12,92, 3,3,3,6,12,76, 3,2,13,3,2,93, 3,2,13,4,12,77, + 3,2,13,5,12,77, 3,2,2,3,13,93, 3,2,2,6,12,77, 3,1,12,2,3,94, 3,1,12,4,12,78, 3,1,12,5,12,78, 3,1,11,2,4,94, 3,1,11,4,12,78, + 3,1,10,2,5,94, 3,1,10,4,12,78, 3,1,9,2,6,94, 3,1,9,4,12,78, 3,1,8,2,7,94, 3,1,8,4,12,78, 3,1,7,2,8,94, 3,1,7,4,12,78, + 3,1,6,2,9,94, 3,1,6,4,12,78, 3,1,5,2,10,94, 3,1,5,4,12,78, 3,1,4,2,11,94, 3,1,4,4,12,78, 3,1,3,2,12,94, 3,1,3,4,12,78, + 3,1,2,2,13,94, 3,1,2,4,12,78, 3,1,2,6,12,78, 4,14,11,2,4,81, 4,14,11,3,4,81, 4,14,11,5,4,49, 4,14,10,2,5,81, 4,14,10,3,5,81, + 4,14,9,2,6,81, 4,14,9,3,6,81, 4,14,8,2,7,81, 4,14,8,3,7,81, 4,14,7,2,8,81, 4,14,7,3,8,81, 4,14,6,2,9,81, 4,14,6,3,9,81, + 4,14,5,2,10,81, 4,14,5,3,10,81, 4,14,4,2,11,81, 4,14,4,3,11,81, 4,14,4,6,11,65, 4,13,11,2,4,82, 4,13,11,5,4,50, 4,13,10,2,5,82, + 4,13,9,2,6,82, 4,13,8,2,7,82, 4,13,7,2,8,82, 4,13,6,2,9,82, 4,13,5,2,10,82, 4,13,4,2,11,82, 4,13,4,6,11,66, 4,12,11,2,4,83, + 4,12,11,5,4,51, 4,12,10,2,5,83, 4,12,9,2,6,83, 4,12,8,2,7,83, 4,12,7,2,8,83, 4,12,6,2,9,83, 4,12,5,2,10,83, 4,12,4,2,11,83, + 4,12,4,6,11,67, 4,11,12,3,3,84, 4,11,12,5,4,52, 4,11,3,3,12,84, 4,11,3,6,11,68, 4,10,14,3,1,85, 4,10,14,4,4,53, 4,10,14,5,4,53, + 4,10,13,3,2,85, 4,10,2,3,13,85, 4,10,1,3,14,85, 4,10,1,4,4,53, 4,10,1,6,11,69, 4,9,13,4,4,54, 4,9,13,5,4,54, 4,9,2,4,4,54, + 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,3,6,11,71, 4,7,12,5,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,3,4,4,57, + 4,6,3,6,11,73, 4,5,11,4,4,58, 4,5,11,5,4,58, 4,5,4,4,4,58, 4,5,4,6,11,74, 4,4,10,5,4,59, 4,4,5,6,11,75, 4,3,12,3,3,92, + 4,3,12,5,4,60, 4,3,11,3,4,92, 4,3,4,3,11,92, 4,3,3,3,12,92, 4,3,3,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, + 4,2,2,3,13,93, 4,2,2,6,11,77, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,4,4,62, 4,1,10,4,4,62, 4,1,9,4,4,62, 4,1,8,4,4,62, + 4,1,7,4,4,62, 4,1,6,4,4,62, 4,1,5,4,4,62, 4,1,4,4,4,62, 4,1,3,4,4,62, 4,1,2,4,4,62, 4,1,2,6,11,78, 5,14,11,3,4,81, + 5,14,11,5,5,49, 5,14,10,3,5,81, 5,14,9,3,6,81, 5,14,8,3,7,81, 5,14,7,3,8,81, 5,14,6,3,9,81, 5,14,5,3,10,81, 5,14,4,3,11,81, + 5,14,4,6,10,65, 5,13,11,5,5,50, 5,13,4,6,10,66, 5,12,11,5,5,51, 5,12,4,6,10,67, 5,11,12,3,3,84, 5,11,12,5,5,52, 5,11,3,3,12,84, + 5,11,3,6,10,68, 5,10,14,3,1,85, 5,10,14,4,5,53, 5,10,14,5,5,53, 5,10,13,3,2,85, 5,10,2,3,13,85, 5,10,1,3,14,85, 5,10,1,4,5,53, + 5,10,1,6,10,69, 5,9,13,4,5,54, 5,9,13,5,5,54, 5,9,2,4,5,54, 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,3,6,10,71, 5,7,12,5,5,56, + 5,7,3,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,3,4,5,57, 5,6,3,6,10,73, 5,5,11,4,5,58, 5,5,11,5,5,58, 5,5,4,4,5,58, + 5,5,4,6,10,74, 5,4,10,5,5,59, 5,4,5,6,10,75, 5,3,12,3,3,92, 5,3,12,5,5,60, 5,3,11,3,4,92, 5,3,4,3,11,92, 5,3,3,3,12,92, + 5,3,3,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,3,13,93, 5,2,2,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, + 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,2,6,5,62, 5,0,11,2,4,95, 5,0,11,5,5,63, + 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,4,2,11,95, 5,0,4,5,5,63, 5,0,3,2,12,95, 5,0,3,6,5,63, 6,14,11,3,4,81, + 6,14,11,5,6,49, 6,14,10,3,5,81, 6,14,9,3,6,81, 6,14,8,3,7,81, 6,14,7,3,8,81, 6,14,6,3,9,81, 6,14,5,3,10,81, 6,14,4,3,11,81, + 6,14,4,6,9,65, 6,13,11,5,6,50, 6,13,4,6,9,66, 6,12,11,5,6,51, 6,12,4,6,9,67, 6,11,12,3,3,84, 6,11,12,5,6,52, 6,11,3,3,12,84, + 6,11,3,6,9,68, 6,10,14,3,1,85, 6,10,14,4,6,53, 6,10,14,5,6,53, 6,10,13,3,2,85, 6,10,2,3,13,85, 6,10,1,3,14,85, 6,10,1,4,6,53, + 6,10,1,6,9,69, 6,9,13,4,6,54, 6,9,13,5,6,54, 6,9,2,4,6,54, 6,9,2,6,9,70, 6,8,12,5,6,55, 6,8,3,6,9,71, 6,7,12,5,6,56, + 6,7,3,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,3,4,6,57, 6,6,3,6,9,73, 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,4,4,6,58, + 6,5,4,6,9,74, 6,4,10,5,6,59, 6,4,5,6,9,75, 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,11,3,4,92, 6,3,4,3,11,92, 6,3,3,3,12,92, + 6,3,3,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, + 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, 6,1,2,6,6,62, 6,0,11,5,6,63, 6,0,9,6,6,63, + 6,0,4,5,6,63, 6,0,3,6,6,63, 7,14,11,3,4,81, 7,14,11,5,7,49, 7,14,10,3,5,81, 7,14,9,3,6,81, 7,14,8,3,7,81, 7,14,7,3,8,81, + 7,14,6,3,9,81, 7,14,5,3,10,81, 7,14,4,3,11,81, 7,14,4,6,8,65, 7,13,11,5,7,50, 7,13,4,6,8,66, 7,12,11,5,7,51, 7,12,4,6,8,67, + 7,11,12,3,3,84, 7,11,12,5,7,52, 7,11,3,3,12,84, 7,11,3,6,8,68, 7,10,14,3,1,85, 7,10,14,4,7,53, 7,10,14,5,7,53, 7,10,13,3,2,85, + 7,10,2,3,13,85, 7,10,1,3,14,85, 7,10,1,4,7,53, 7,10,1,6,8,69, 7,9,13,4,7,54, 7,9,13,5,7,54, 7,9,2,4,7,54, 7,9,2,6,8,70, + 7,8,12,5,7,55, 7,8,3,6,8,71, 7,7,12,5,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,3,4,7,57, 7,6,3,6,8,73, + 7,5,11,4,7,58, 7,5,11,5,7,58, 7,5,4,4,7,58, 7,5,4,6,8,74, 7,4,10,5,7,59, 7,4,5,6,8,75, 7,3,12,3,3,92, 7,3,12,5,7,60, + 7,3,11,3,4,92, 7,3,4,3,11,92, 7,3,3,3,12,92, 7,3,3,6,8,76, 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, + 7,2,2,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,2,4,7,62, + 7,1,2,6,8,78, 7,0,11,5,7,63, 7,0,9,6,7,63, 7,0,4,5,7,63, 7,0,3,6,7,63, 8,14,11,3,4,81, 8,14,11,5,8,49, 8,14,10,3,5,81, + 8,14,9,3,6,81, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, 8,14,4,3,11,81, 8,14,4,6,7,65, 8,13,11,5,8,50, + 8,13,4,6,7,66, 8,12,11,5,8,51, 8,12,4,6,7,67, 8,11,12,3,3,84, 8,11,12,5,8,52, 8,11,3,3,12,84, 8,11,3,6,7,68, 8,10,14,3,1,85, + 8,10,14,4,8,53, 8,10,14,5,8,53, 8,10,13,3,2,85, 8,10,2,3,13,85, 8,10,1,3,14,85, 8,10,1,4,8,53, 8,10,1,6,7,69, 8,9,13,4,8,54, + 8,9,13,5,8,54, 8,9,2,4,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, 8,8,3,6,7,71, 8,7,12,5,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, + 8,6,12,5,8,57, 8,6,3,4,8,57, 8,6,3,6,7,73, 8,5,11,4,8,58, 8,5,11,5,8,58, 8,5,4,4,8,58, 8,5,4,6,7,74, 8,4,10,5,8,59, + 8,4,5,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, 8,3,11,3,4,92, 8,3,4,3,11,92, 8,3,3,3,12,92, 8,3,3,6,7,76, 8,2,13,3,2,93, + 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, + 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, 8,0,11,5,7,79, 8,0,9,6,7,79, 8,0,4,5,7,79, 8,0,3,6,7,79, + 9,14,11,3,4,81, 9,14,11,5,9,49, 9,14,10,3,5,81, 9,14,9,3,6,81, 9,14,8,3,7,81, 9,14,7,3,8,81, 9,14,6,3,9,81, 9,14,5,3,10,81, + 9,14,4,3,11,81, 9,14,4,6,6,65, 9,13,11,5,9,50, 9,13,4,6,6,66, 9,12,11,5,9,51, 9,12,4,6,6,67, 9,11,12,3,3,84, 9,11,12,5,9,52, + 9,11,3,3,12,84, 9,11,3,6,6,68, 9,10,14,3,1,85, 9,10,14,4,9,53, 9,10,14,5,9,53, 9,10,13,3,2,85, 9,10,2,3,13,85, 9,10,1,3,14,85, + 9,10,1,4,9,53, 9,10,1,6,6,69, 9,9,13,4,9,54, 9,9,13,5,9,54, 9,9,2,4,9,54, 9,9,2,6,6,70, 9,8,12,5,9,55, 9,8,3,6,6,71, + 9,7,12,5,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,3,4,9,57, 9,6,3,6,6,73, 9,5,11,4,9,58, 9,5,11,5,9,58, + 9,5,4,4,9,58, 9,5,4,6,6,74, 9,4,10,5,9,59, 9,4,5,6,6,75, 9,3,12,3,3,92, 9,3,12,5,9,60, 9,3,11,3,4,92, 9,3,4,3,11,92, + 9,3,3,3,12,92, 9,3,3,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,2,3,13,93, 9,2,2,6,6,77, 9,1,12,4,6,78, + 9,1,12,5,6,78, 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,5,4,6,78, 9,1,2,4,6,78, 9,1,2,6,6,78, 9,0,11,5,6,79, + 9,0,9,6,6,79, 9,0,4,5,6,79, 9,0,3,6,6,79, 10,14,11,3,4,81, 10,14,11,5,10,49, 10,14,10,3,5,81, 10,14,9,3,6,81, 10,14,8,3,7,81, + 10,14,7,3,8,81, 10,14,6,3,9,81, 10,14,5,3,10,81, 10,14,4,3,11,81, 10,14,4,6,5,65, 10,13,11,5,10,50, 10,13,4,6,5,66, 10,12,11,5,10,51, + 10,12,4,6,5,67, 10,11,12,3,3,84, 10,11,12,5,10,52, 10,11,3,3,12,84, 10,11,3,6,5,68, 10,10,14,3,1,85, 10,10,14,4,10,53, 10,10,14,5,10,53, + 10,10,13,3,2,85, 10,10,2,3,13,85, 10,10,1,3,14,85, 10,10,1,4,10,53, 10,10,1,6,5,69, 10,9,13,4,10,54, 10,9,13,5,10,54, 10,9,2,4,10,54, + 10,9,2,6,5,70, 10,8,12,5,10,55, 10,8,3,6,5,71, 10,7,12,5,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,3,4,10,57, + 10,6,3,6,5,73, 10,5,11,4,10,58, 10,5,11,5,10,58, 10,5,4,4,10,58, 10,5,4,6,5,74, 10,4,10,5,10,59, 10,4,5,6,5,75, 10,3,12,3,3,92, + 10,3,12,5,10,60, 10,3,11,3,4,92, 10,3,4,3,11,92, 10,3,3,3,12,92, 10,3,3,6,5,76, 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, + 10,2,2,3,13,93, 10,2,2,6,5,77, 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, + 10,1,2,4,10,62, 10,1,2,6,5,78, 10,0,11,1,4,95, 10,0,11,5,5,79, 10,0,10,1,5,95, 10,0,9,1,6,95, 10,0,9,6,5,79, 10,0,4,1,11,95, + 10,0,4,5,5,79, 10,0,3,1,12,95, 10,0,3,6,5,79, 11,14,11,1,4,81, 11,14,11,3,4,81, 11,14,11,5,11,49, 11,14,10,1,5,81, 11,14,10,3,5,81, + 11,14,9,1,6,81, 11,14,9,3,6,81, 11,14,8,1,7,81, 11,14,8,3,7,81, 11,14,7,1,8,81, 11,14,7,3,8,81, 11,14,6,1,9,81, 11,14,6,3,9,81, + 11,14,5,1,10,81, 11,14,5,3,10,81, 11,14,4,1,11,81, 11,14,4,3,11,81, 11,14,4,6,4,65, 11,13,11,1,4,82, 11,13,11,5,11,50, 11,13,10,1,5,82, + 11,13,9,1,6,82, 11,13,8,1,7,82, 11,13,7,1,8,82, 11,13,6,1,9,82, 11,13,5,1,10,82, 11,13,4,1,11,82, 11,13,4,6,4,66, 11,12,11,1,4,83, + 11,12,11,5,11,51, 11,12,10,1,5,83, 11,12,9,1,6,83, 11,12,8,1,7,83, 11,12,7,1,8,83, 11,12,6,1,9,83, 11,12,5,1,10,83, 11,12,4,1,11,83, + 11,12,4,6,4,67, 11,11,12,3,3,84, 11,11,12,5,11,52, 11,11,3,3,12,84, 11,11,3,6,4,68, 11,10,14,3,1,85, 11,10,14,4,11,53, 11,10,14,5,11,53, + 11,10,13,3,2,85, 11,10,2,3,13,85, 11,10,1,3,14,85, 11,10,1,4,11,53, 11,10,1,6,4,69, 11,9,13,4,11,54, 11,9,13,5,11,54, 11,9,2,4,11,54, + 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,3,6,4,71, 11,7,12,5,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,3,4,11,57, + 11,6,3,6,4,73, 11,5,11,4,11,58, 11,5,11,5,11,58, 11,5,4,4,11,58, 11,5,4,6,4,74, 11,4,10,5,11,59, 11,4,5,6,4,75, 11,3,12,3,3,92, + 11,3,12,5,11,60, 11,3,11,3,4,92, 11,3,4,3,11,92, 11,3,3,3,12,92, 11,3,3,6,4,76, 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, + 11,2,2,3,13,93, 11,2,2,6,4,77, 11,1,12,1,3,94, 11,1,12,4,11,62, 11,1,12,5,11,62, 11,1,11,1,4,94, 11,1,11,4,11,62, 11,1,10,1,5,94, + 11,1,10,4,11,62, 11,1,9,1,6,94, 11,1,9,4,11,62, 11,1,8,1,7,94, 11,1,8,4,11,62, 11,1,7,1,8,94, 11,1,7,4,11,62, 11,1,6,1,9,94, + 11,1,6,4,11,62, 11,1,5,1,10,94, 11,1,5,4,11,62, 11,1,4,1,11,94, 11,1,4,4,11,62, 11,1,3,1,12,94, 11,1,3,4,11,62, 11,1,2,1,13,94, + 11,1,2,4,11,62, 11,1,2,6,4,78, 12,11,12,1,3,84, 12,11,12,3,3,84, 12,11,12,5,12,52, 12,11,11,1,4,84, 12,11,11,3,4,84, 12,11,10,1,5,84, + 12,11,10,3,5,84, 12,11,9,1,6,84, 12,11,9,3,6,84, 12,11,8,1,7,84, 12,11,8,3,7,84, 12,11,7,1,8,84, 12,11,7,3,8,84, 12,11,6,1,9,84, + 12,11,6,3,9,84, 12,11,5,1,10,84, 12,11,5,3,10,84, 12,11,4,1,11,84, 12,11,4,3,11,84, 12,11,3,1,12,84, 12,11,3,3,12,84, 12,11,3,6,3,68, + 12,10,14,3,1,85, 12,10,14,4,12,53, 12,10,14,5,12,53, 12,10,13,3,2,85, 12,10,2,3,13,85, 12,10,1,3,14,85, 12,10,1,4,12,53, 12,10,1,6,3,69, + 12,9,13,4,12,54, 12,9,13,5,12,54, 12,9,2,4,12,54, 12,9,2,6,3,70, 12,8,12,5,12,55, 12,8,3,6,3,71, 12,7,12,5,12,56, 12,7,3,6,3,72, + 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,3,4,12,57, 12,6,3,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, 12,5,4,4,12,58, 12,5,4,6,3,74, + 12,4,10,5,12,59, 12,4,5,6,3,75, 12,3,12,3,3,92, 12,3,12,5,12,60, 12,3,11,3,4,92, 12,3,4,3,11,92, 12,3,3,3,12,92, 12,3,3,6,3,76, + 12,2,13,1,2,93, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,1,3,93, 12,2,12,4,12,61, 12,2,11,1,4,93, 12,2,11,4,12,61, + 12,2,10,1,5,93, 12,2,10,4,12,61, 12,2,9,1,6,93, 12,2,9,4,12,61, 12,2,8,1,7,93, 12,2,8,4,12,61, 12,2,7,1,8,93, 12,2,7,4,12,61, + 12,2,6,1,9,93, 12,2,6,4,12,61, 12,2,5,1,10,93, 12,2,5,4,12,61, 12,2,4,1,11,93, 12,2,4,4,12,61, 12,2,3,1,12,93, 12,2,3,4,12,61, + 12,2,2,1,13,93, 12,2,2,3,13,93, 12,2,2,4,12,61, 12,2,2,6,12,61, 13,10,14,3,1,85, 13,10,14,4,13,53, 13,10,14,5,13,53, 13,10,13,3,2,85, + 13,10,12,3,3,85, 13,10,11,3,4,85, 13,10,10,3,5,85, 13,10,9,3,6,85, 13,10,8,3,7,85, 13,10,7,3,8,85, 13,10,6,3,9,85, 13,10,5,3,10,85, + 13,10,4,3,11,85, 13,10,3,3,12,85, 13,10,2,3,13,85, 13,10,1,3,14,85, 13,10,1,4,13,53, 13,10,1,6,2,69, 13,9,13,1,2,86, 13,9,13,4,13,54, + 13,9,13,5,13,54, 13,9,12,1,3,86, 13,9,11,1,4,86, 13,9,10,1,5,86, 13,9,9,1,6,86, 13,9,8,1,7,86, 13,9,7,1,8,86, 13,9,6,1,9,86, + 13,9,5,1,10,86, 13,9,4,1,11,86, 13,9,3,1,12,86, 13,9,2,1,13,86, 13,9,2,4,13,54, 13,9,2,6,2,70, 13,8,12,5,13,55, 13,8,3,6,2,71, + 13,7,12,5,13,56, 13,7,3,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,3,4,13,57, 13,6,3,6,2,73, 13,5,11,4,13,58, 13,5,11,5,13,58, + 13,5,4,4,13,58, 13,5,4,6,2,74, 13,4,10,1,5,91, 13,4,10,5,13,59, 13,4,9,1,6,91, 13,4,8,1,7,91, 13,4,7,1,8,91, 13,4,6,1,9,91, + 13,4,5,1,10,91, 13,4,5,6,2,75, 13,3,12,1,3,92, 13,3,12,3,3,92, 13,3,12,4,13,60, 13,3,12,5,13,60, 13,3,11,1,4,92, 13,3,11,3,4,92, + 13,3,11,4,13,60, 13,3,10,1,5,92, 13,3,10,4,13,60, 13,3,9,1,6,92, 13,3,9,4,13,60, 13,3,8,1,7,92, 13,3,8,4,13,60, 13,3,7,1,8,92, + 13,3,7,4,13,60, 13,3,6,1,9,92, 13,3,6,4,13,60, 13,3,5,1,10,92, 13,3,5,4,13,60, 13,3,4,1,11,92, 13,3,4,3,11,92, 13,3,4,4,13,60, + 13,3,3,1,12,92, 13,3,3,3,12,92, 13,3,3,4,13,60, 13,3,3,6,13,60, 14,10,14,1,1,85, 14,10,14,3,1,85, 14,10,14,4,14,53, 14,10,14,5,14,53, + 14,10,13,1,2,85, 14,10,13,3,2,85, 14,10,13,4,14,53, 14,10,12,1,3,85, 14,10,12,3,3,85, 14,10,12,4,14,53, 14,10,11,1,4,85, 14,10,11,3,4,85, + 14,10,11,4,14,53, 14,10,10,1,5,85, 14,10,10,3,5,85, 14,10,10,4,14,53, 14,10,9,1,6,85, 14,10,9,3,6,85, 14,10,9,4,14,53, 14,10,8,1,7,85, + 14,10,8,3,7,85, 14,10,8,4,14,53, 14,10,7,1,8,85, 14,10,7,3,8,85, 14,10,7,4,14,53, 14,10,6,1,9,85, 14,10,6,3,9,85, 14,10,6,4,14,53, + 14,10,5,1,10,85, 14,10,5,3,10,85, 14,10,5,4,14,53, 14,10,4,1,11,85, 14,10,4,3,11,85, 14,10,4,4,14,53, 14,10,3,1,12,85, 14,10,3,3,12,85, + 14,10,3,4,14,53, 14,10,2,1,13,85, 14,10,2,3,13,85, 14,10,2,4,14,53, 14,10,1,1,14,85, 14,10,1,3,14,85, 14,10,1,4,14,53, 14,10,1,6,1,69, + 14,8,12,1,3,87, 14,8,12,3,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,11,3,4,87, 14,8,10,1,5,87, 14,8,10,3,5,87, 14,8,9,1,6,87, + 14,8,9,3,6,87, 14,8,8,1,7,87, 14,8,8,3,7,87, 14,8,7,1,8,87, 14,8,7,3,8,87, 14,8,6,1,9,87, 14,8,6,3,9,87, 14,8,5,1,10,87, + 14,8,5,3,10,87, 14,8,4,1,11,87, 14,8,4,3,11,87, 14,8,3,1,12,87, 14,8,3,3,12,87, 14,8,3,6,1,71, 14,7,12,1,3,88, 14,7,12,5,14,56, + 14,7,11,1,4,88, 14,7,10,1,5,88, 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, 14,7,6,1,9,88, 14,7,5,1,10,88, 14,7,4,1,11,88, + 14,7,3,1,12,88, 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, 14,6,12,5,1,73, 14,6,11,1,4,89, 14,6,10,1,5,89, 14,6,9,1,6,89, + 14,6,8,1,7,89, 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, 14,6,4,1,11,89, 14,6,3,1,12,89, 14,6,3,4,1,73, 14,6,3,6,1,73, + 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, 14,5,10,1,5,90, 14,5,10,4,1,74, 14,5,9,1,6,90, 14,5,9,4,1,74, 14,5,8,1,7,90, + 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, 14,5,6,1,9,90, 14,5,6,4,1,74, 14,5,5,1,10,90, 14,5,5,4,1,74, 14,5,4,1,11,90, + 14,5,4,4,1,74, 14,5,4,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/giovanni.lua b/assets/voxels/giovanni.lua new file mode 100644 index 0000000..043d8f6 --- /dev/null +++ b/assets/voxels/giovanni.lua @@ -0,0 +1,270 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "giovanni" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "giovanni", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1358, + count = 938, + faces = { + 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, + 1,9,9,3,6,38, 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, + 1,9,5,3,10,38, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, 1,9,3,3,12,38, 1,9,3,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, + 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, + 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, + 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,10,2,5,42, 1,5,10,3,5,42, 1,5,10,4,1,10, 1,5,10,5,1,10, + 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, + 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,5,6,14,26, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,9,5,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, + 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,3,11,43, + 1,4,4,4,1,11, 1,4,4,6,14,27, 2,10,12,2,3,37, 2,10,12,3,3,37, 2,10,12,5,2,5, 2,10,11,2,4,37, 2,10,11,3,4,37, 2,10,10,2,5,37, + 2,10,10,3,5,37, 2,10,9,2,6,37, 2,10,9,3,6,37, 2,10,8,2,7,37, 2,10,8,3,7,37, 2,10,7,2,8,37, 2,10,7,3,8,37, 2,10,6,2,9,37, + 2,10,6,3,9,37, 2,10,5,2,10,37, 2,10,5,3,10,37, 2,10,4,2,11,37, 2,10,4,3,11,37, 2,10,3,2,12,37, 2,10,3,3,12,37, 2,10,3,6,13,21, + 2,9,12,5,2,6, 2,9,3,6,13,22, 2,8,12,5,2,7, 2,8,3,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, + 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, + 2,7,3,4,2,8, 2,7,3,6,13,24, 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, + 2,6,7,2,8,41, 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,4,4,2,9, 2,6,4,6,13,25, 2,5,10,4,2,10, 2,5,10,5,2,10, + 2,5,5,6,13,26, 2,4,9,5,2,11, 2,4,4,3,11,43, 2,4,4,6,13,27, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,9,5,2,12, 2,3,8,2,7,44, + 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, + 2,3,4,4,2,12, 2,3,4,6,13,28, 3,12,12,2,3,35, 3,12,12,3,3,35, 3,12,12,5,3,3, 3,12,11,2,4,35, 3,12,11,3,4,35, 3,12,10,2,5,35, + 3,12,10,3,5,35, 3,12,9,2,6,35, 3,12,9,3,6,35, 3,12,8,2,7,35, 3,12,8,3,7,35, 3,12,7,2,8,35, 3,12,7,3,8,35, 3,12,6,2,9,35, + 3,12,6,3,9,35, 3,12,5,2,10,35, 3,12,5,3,10,35, 3,12,4,2,11,35, 3,12,4,3,11,35, 3,12,3,2,12,35, 3,12,3,3,12,35, 3,12,3,6,12,19, + 3,11,12,2,3,36, 3,11,12,5,3,4, 3,11,11,2,4,36, 3,11,10,2,5,36, 3,11,9,2,6,36, 3,11,8,2,7,36, 3,11,7,2,8,36, 3,11,6,2,9,36, + 3,11,5,2,10,36, 3,11,4,2,11,36, 3,11,3,2,12,36, 3,11,3,6,12,20, 3,10,12,5,3,5, 3,10,3,6,12,21, 3,9,12,5,3,6, 3,9,3,6,12,22, + 3,8,12,5,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,11,4,3,9, 3,6,11,5,3,9, + 3,6,4,4,3,9, 3,6,4,6,12,25, 3,5,10,4,3,10, 3,5,10,5,3,10, 3,5,5,6,12,26, 3,4,9,5,3,11, 3,4,4,3,11,43, 3,4,4,6,12,27, + 3,3,9,5,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, 3,2,10,3,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, 3,2,8,2,7,45, 3,2,7,2,8,45, + 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,4,2,11,45, 3,2,4,6,12,29, 3,1,11,2,4,46, 3,1,11,3,4,46, 3,1,11,4,3,14, 3,1,11,5,3,14, + 3,1,10,2,5,46, 3,1,10,4,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, + 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,4,2,11,46, 3,1,4,4,3,14, 3,1,3,2,12,46, 3,1,3,3,12,46, + 3,1,3,4,3,14, 3,1,3,6,12,30, 4,13,11,2,4,34, 4,13,11,3,4,34, 4,13,11,5,4,2, 4,13,10,2,5,34, 4,13,10,3,5,34, 4,13,9,2,6,34, + 4,13,9,3,6,34, 4,13,8,2,7,34, 4,13,8,3,7,34, 4,13,7,2,8,34, 4,13,7,3,8,34, 4,13,6,2,9,34, 4,13,6,3,9,34, 4,13,5,2,10,34, + 4,13,5,3,10,34, 4,13,4,2,11,34, 4,13,4,3,11,34, 4,13,4,6,11,18, 4,12,12,3,3,35, 4,12,12,5,4,3, 4,12,3,3,12,35, 4,12,3,6,11,19, + 4,11,12,5,4,4, 4,11,3,6,11,20, 4,10,12,5,4,5, 4,10,3,6,11,21, 4,9,12,5,4,6, 4,9,3,6,11,22, 4,8,12,5,4,7, 4,8,3,6,11,23, + 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,11,4,4,9, 4,6,11,5,4,9, 4,6,4,4,4,9, 4,6,4,6,11,25, + 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,5,6,11,26, 4,4,9,5,4,11, 4,4,4,3,11,43, 4,4,4,6,11,27, 4,3,9,5,4,12, 4,3,4,6,11,28, + 4,2,10,3,5,45, 4,2,10,5,4,13, 4,2,4,6,11,29, 4,1,11,3,4,46, 4,1,11,5,4,14, 4,1,4,4,4,14, 4,1,3,3,12,46, 4,1,3,4,4,14, + 4,1,3,6,11,30, 4,0,11,2,4,47, 4,0,11,5,4,15, 4,0,10,2,5,47, 4,0,9,2,6,47, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, + 4,0,5,2,10,47, 4,0,5,6,11,31, 5,14,10,2,5,33, 5,14,10,3,5,33, 5,14,10,5,5,1, 5,14,9,2,6,33, 5,14,9,3,6,33, 5,14,8,2,7,33, + 5,14,8,3,7,33, 5,14,7,2,8,33, 5,14,7,3,8,33, 5,14,6,2,9,33, 5,14,6,3,9,33, 5,14,5,2,10,33, 5,14,5,3,10,33, 5,14,5,6,10,17, + 5,13,11,3,4,34, 5,13,11,5,5,2, 5,13,4,3,11,34, 5,13,4,6,10,18, 5,12,12,3,3,35, 5,12,12,5,5,3, 5,12,3,3,12,35, 5,12,3,6,10,19, + 5,11,12,5,5,4, 5,11,3,6,10,20, 5,10,12,5,5,5, 5,10,3,6,10,21, 5,9,12,5,5,6, 5,9,3,6,10,22, 5,8,12,5,5,7, 5,8,3,6,10,23, + 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,4,4,5,9, 5,6,4,6,10,25, + 5,5,10,4,5,10, 5,5,10,5,5,10, 5,5,5,6,10,26, 5,4,9,5,5,11, 5,4,4,3,11,43, 5,4,4,6,10,27, 5,3,9,5,5,12, 5,3,4,6,10,28, + 5,2,10,3,5,45, 5,2,10,5,5,13, 5,2,4,6,10,29, 5,1,11,3,4,46, 5,1,11,5,5,14, 5,1,4,4,5,14, 5,1,3,3,12,46, 5,1,3,4,5,14, + 5,1,3,6,10,30, 5,0,11,5,5,15, 5,0,5,6,10,31, 6,14,10,3,5,33, 6,14,10,5,6,1, 6,14,9,3,6,33, 6,14,8,3,7,33, 6,14,7,3,8,33, + 6,14,6,3,9,33, 6,14,5,3,10,33, 6,14,5,6,9,17, 6,13,11,3,4,34, 6,13,11,5,6,2, 6,13,4,3,11,34, 6,13,4,6,9,18, 6,12,12,3,3,35, + 6,12,12,5,6,3, 6,12,3,3,12,35, 6,12,3,6,9,19, 6,11,12,5,6,4, 6,11,3,6,9,20, 6,10,12,5,6,5, 6,10,3,6,9,21, 6,9,12,5,6,6, + 6,9,3,6,9,22, 6,8,12,5,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,11,4,6,9, + 6,6,11,5,6,9, 6,6,4,4,6,9, 6,6,4,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, 6,5,5,6,9,26, 6,4,9,5,6,11, 6,4,4,3,11,43, + 6,4,4,6,9,27, 6,3,9,5,6,12, 6,3,4,6,9,28, 6,2,10,3,5,45, 6,2,10,5,6,13, 6,2,4,6,9,29, 6,1,11,3,4,46, 6,1,11,5,6,14, + 6,1,4,4,6,14, 6,1,3,3,12,46, 6,1,3,4,6,14, 6,1,3,6,9,30, 6,0,11,1,4,47, 6,0,11,5,6,15, 6,0,10,1,5,47, 6,0,9,1,6,47, + 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,5,1,10,47, 6,0,5,6,9,31, 7,14,10,3,5,33, 7,14,10,5,7,1, 7,14,9,3,6,33, + 7,14,8,3,7,33, 7,14,7,3,8,33, 7,14,6,3,9,33, 7,14,5,3,10,33, 7,14,5,6,8,17, 7,13,11,3,4,34, 7,13,11,5,7,2, 7,13,4,3,11,34, + 7,13,4,6,8,18, 7,12,12,3,3,35, 7,12,12,5,7,3, 7,12,3,3,12,35, 7,12,3,6,8,19, 7,11,12,5,7,4, 7,11,3,6,8,20, 7,10,12,5,7,5, + 7,10,3,6,8,21, 7,9,12,5,7,6, 7,9,3,6,8,22, 7,8,12,5,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,3,4,7,8, + 7,7,3,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,4,4,7,9, 7,6,4,6,8,25, 7,5,10,4,7,10, 7,5,10,5,7,10, 7,5,5,6,8,26, + 7,4,9,5,7,11, 7,4,4,3,11,43, 7,4,4,6,8,27, 7,3,9,5,7,12, 7,3,4,6,8,28, 7,2,10,3,5,45, 7,2,10,5,7,13, 7,2,4,6,8,29, + 7,1,11,3,4,46, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, + 7,1,5,4,7,14, 7,1,4,4,7,14, 7,1,3,3,12,46, 7,1,3,4,7,14, 7,1,3,6,8,30, 8,14,10,3,5,33, 8,14,10,5,8,1, 8,14,9,3,6,33, + 8,14,8,3,7,33, 8,14,7,3,8,33, 8,14,6,3,9,33, 8,14,5,3,10,33, 8,14,5,6,7,17, 8,13,11,3,4,34, 8,13,11,5,8,2, 8,13,4,3,11,34, + 8,13,4,6,7,18, 8,12,12,3,3,35, 8,12,12,5,8,3, 8,12,3,3,12,35, 8,12,3,6,7,19, 8,11,12,5,8,4, 8,11,3,6,7,20, 8,10,12,5,8,5, + 8,10,3,6,7,21, 8,9,12,5,8,6, 8,9,3,6,7,22, 8,8,12,5,8,7, 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,3,4,8,8, + 8,7,3,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,4,4,8,9, 8,6,4,6,7,25, 8,5,10,4,8,10, 8,5,10,5,8,10, 8,5,5,6,7,26, + 8,4,9,5,8,11, 8,4,4,3,11,43, 8,4,4,6,7,27, 8,3,9,5,8,12, 8,3,4,6,7,28, 8,2,10,3,5,45, 8,2,10,5,8,13, 8,2,4,6,7,29, + 8,1,11,3,4,46, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, + 8,1,5,4,8,14, 8,1,4,4,8,14, 8,1,3,3,12,46, 8,1,3,4,8,14, 8,1,3,6,7,30, 9,14,10,3,5,33, 9,14,10,5,9,1, 9,14,9,3,6,33, + 9,14,8,3,7,33, 9,14,7,3,8,33, 9,14,6,3,9,33, 9,14,5,3,10,33, 9,14,5,6,6,17, 9,13,11,3,4,34, 9,13,11,5,9,2, 9,13,4,3,11,34, + 9,13,4,6,6,18, 9,12,12,3,3,35, 9,12,12,5,9,3, 9,12,3,3,12,35, 9,12,3,6,6,19, 9,11,12,5,9,4, 9,11,3,6,6,20, 9,10,12,5,9,5, + 9,10,3,6,6,21, 9,9,12,5,9,6, 9,9,3,6,6,22, 9,8,12,5,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,3,4,9,8, + 9,7,3,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, 9,6,4,4,9,9, 9,6,4,6,6,25, 9,5,10,4,9,10, 9,5,10,5,9,10, 9,5,5,6,6,26, + 9,4,9,5,9,11, 9,4,4,3,11,43, 9,4,4,6,6,27, 9,3,9,5,9,12, 9,3,4,6,6,28, 9,2,10,3,5,45, 9,2,10,5,9,13, 9,2,4,6,6,29, + 9,1,11,3,4,46, 9,1,11,5,9,14, 9,1,4,4,9,14, 9,1,3,3,12,46, 9,1,3,4,9,14, 9,1,3,6,6,30, 9,0,11,2,4,47, 9,0,11,5,9,15, + 9,0,10,2,5,47, 9,0,9,2,6,47, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,5,2,10,47, 9,0,5,6,6,31, 10,14,10,1,5,33, + 10,14,10,3,5,33, 10,14,10,5,10,1, 10,14,9,1,6,33, 10,14,9,3,6,33, 10,14,8,1,7,33, 10,14,8,3,7,33, 10,14,7,1,8,33, 10,14,7,3,8,33, + 10,14,6,1,9,33, 10,14,6,3,9,33, 10,14,5,1,10,33, 10,14,5,3,10,33, 10,14,5,6,5,17, 10,13,11,3,4,34, 10,13,11,5,10,2, 10,13,4,3,11,34, + 10,13,4,6,5,18, 10,12,12,3,3,35, 10,12,12,5,10,3, 10,12,3,3,12,35, 10,12,3,6,5,19, 10,11,12,5,10,4, 10,11,3,6,5,20, 10,10,12,5,10,5, + 10,10,3,6,5,21, 10,9,12,5,10,6, 10,9,3,6,5,22, 10,8,12,5,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,3,4,10,8, + 10,7,3,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,4,4,10,9, 10,6,4,6,5,25, 10,5,10,4,10,10, 10,5,10,5,10,10, 10,5,5,6,5,26, + 10,4,9,5,10,11, 10,4,4,3,11,43, 10,4,4,6,5,27, 10,3,9,5,10,12, 10,3,4,6,5,28, 10,2,10,3,5,45, 10,2,10,5,10,13, 10,2,4,6,5,29, + 10,1,11,3,4,46, 10,1,11,5,10,14, 10,1,4,4,10,14, 10,1,3,3,12,46, 10,1,3,4,10,14, 10,1,3,6,5,30, 10,0,11,5,10,15, 10,0,5,6,5,31, + 11,13,11,1,4,34, 11,13,11,3,4,34, 11,13,11,5,11,2, 11,13,10,1,5,34, 11,13,10,3,5,34, 11,13,9,1,6,34, 11,13,9,3,6,34, 11,13,8,1,7,34, + 11,13,8,3,7,34, 11,13,7,1,8,34, 11,13,7,3,8,34, 11,13,6,1,9,34, 11,13,6,3,9,34, 11,13,5,1,10,34, 11,13,5,3,10,34, 11,13,4,1,11,34, + 11,13,4,3,11,34, 11,13,4,6,4,18, 11,12,12,3,3,35, 11,12,12,5,11,3, 11,12,3,3,12,35, 11,12,3,6,4,19, 11,11,12,5,11,4, 11,11,3,6,4,20, + 11,10,12,5,11,5, 11,10,3,6,4,21, 11,9,12,5,11,6, 11,9,3,6,4,22, 11,8,12,5,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, + 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,4,4,11,9, 11,6,4,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, + 11,5,5,6,4,26, 11,4,9,5,11,11, 11,4,4,3,11,43, 11,4,4,6,4,27, 11,3,9,5,11,12, 11,3,4,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, + 11,2,4,6,4,29, 11,1,11,3,4,46, 11,1,11,5,11,14, 11,1,4,4,11,14, 11,1,3,3,12,46, 11,1,3,4,11,14, 11,1,3,6,4,30, 11,0,11,1,4,47, + 11,0,11,5,11,15, 11,0,10,1,5,47, 11,0,9,1,6,47, 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,5,1,10,47, 11,0,5,6,4,31, + 12,12,12,1,3,35, 12,12,12,3,3,35, 12,12,12,5,12,3, 12,12,11,1,4,35, 12,12,11,3,4,35, 12,12,10,1,5,35, 12,12,10,3,5,35, 12,12,9,1,6,35, + 12,12,9,3,6,35, 12,12,8,1,7,35, 12,12,8,3,7,35, 12,12,7,1,8,35, 12,12,7,3,8,35, 12,12,6,1,9,35, 12,12,6,3,9,35, 12,12,5,1,10,35, + 12,12,5,3,10,35, 12,12,4,1,11,35, 12,12,4,3,11,35, 12,12,3,1,12,35, 12,12,3,3,12,35, 12,12,3,6,3,19, 12,11,12,1,3,36, 12,11,12,5,12,4, + 12,11,11,1,4,36, 12,11,10,1,5,36, 12,11,9,1,6,36, 12,11,8,1,7,36, 12,11,7,1,8,36, 12,11,6,1,9,36, 12,11,5,1,10,36, 12,11,4,1,11,36, + 12,11,3,1,12,36, 12,11,3,6,3,20, 12,10,12,5,12,5, 12,10,3,6,3,21, 12,9,12,5,12,6, 12,9,3,6,3,22, 12,8,12,5,12,7, 12,8,3,6,3,23, + 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,4,4,12,9, 12,6,4,6,3,25, + 12,5,10,4,12,10, 12,5,10,5,12,10, 12,5,5,6,3,26, 12,4,9,5,12,11, 12,4,4,3,11,43, 12,4,4,6,3,27, 12,3,9,5,12,12, 12,3,4,6,3,28, + 12,2,10,1,5,45, 12,2,10,3,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, + 12,2,4,1,11,45, 12,2,4,6,3,29, 12,1,11,1,4,46, 12,1,11,3,4,46, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,5,46, 12,1,10,4,12,14, + 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, + 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,4,1,11,46, 12,1,4,4,12,14, 12,1,3,1,12,46, 12,1,3,3,12,46, 12,1,3,4,12,14, 12,1,3,6,3,30, + 13,10,12,1,3,37, 13,10,12,3,3,37, 13,10,12,5,13,5, 13,10,11,1,4,37, 13,10,11,3,4,37, 13,10,10,1,5,37, 13,10,10,3,5,37, 13,10,9,1,6,37, + 13,10,9,3,6,37, 13,10,8,1,7,37, 13,10,8,3,7,37, 13,10,7,1,8,37, 13,10,7,3,8,37, 13,10,6,1,9,37, 13,10,6,3,9,37, 13,10,5,1,10,37, + 13,10,5,3,10,37, 13,10,4,1,11,37, 13,10,4,3,11,37, 13,10,3,1,12,37, 13,10,3,3,12,37, 13,10,3,6,2,21, 13,9,12,5,13,6, 13,9,3,6,2,22, + 13,8,12,5,13,7, 13,8,3,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, + 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, 13,7,3,4,13,8, 13,7,3,6,2,24, + 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, + 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,4,4,13,9, 13,6,4,6,2,25, 13,5,10,4,13,10, 13,5,10,5,13,10, 13,5,5,6,2,26, 13,4,9,5,13,11, + 13,4,4,3,11,43, 13,4,4,6,2,27, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, + 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, + 14,9,12,1,3,38, 14,9,12,3,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,11,3,4,38, 14,9,10,1,5,38, 14,9,10,3,5,38, 14,9,9,1,6,38, + 14,9,9,3,6,38, 14,9,8,1,7,38, 14,9,8,3,7,38, 14,9,7,1,8,38, 14,9,7,3,8,38, 14,9,6,1,9,38, 14,9,6,3,9,38, 14,9,5,1,10,38, + 14,9,5,3,10,38, 14,9,4,1,11,38, 14,9,4,3,11,38, 14,9,3,1,12,38, 14,9,3,3,12,38, 14,9,3,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, + 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, + 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, + 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,3,6,1,23, 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,4,14,10, 14,5,10,5,14,10, + 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, + 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,5,6,1,26, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,9,5,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, + 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,3,11,43, + 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1405, + count = 958, + faces = { + 1,8,12,2,3,87, 1,8,12,3,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,11,3,4,87, 1,8,10,2,5,87, 1,8,10,3,5,87, 1,8,9,2,6,87, + 1,8,9,3,6,87, 1,8,8,2,7,87, 1,8,8,3,7,87, 1,8,7,2,8,87, 1,8,7,3,8,87, 1,8,6,2,9,87, 1,8,6,3,9,87, 1,8,5,2,10,87, + 1,8,5,3,10,87, 1,8,4,2,11,87, 1,8,4,3,11,87, 1,8,3,2,12,87, 1,8,3,3,12,87, 1,8,3,6,14,71, 1,7,12,2,3,88, 1,7,12,5,1,56, + 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, + 1,7,3,2,12,88, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, 1,6,12,5,1,57, 1,6,11,2,4,89, 1,6,10,2,5,89, 1,6,9,2,6,89, + 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, 1,6,4,2,11,89, 1,6,3,2,12,89, 1,6,3,4,1,57, 1,6,3,6,1,57, + 1,5,11,2,4,90, 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,10,4,1,58, 1,5,9,2,6,90, 1,5,9,4,1,58, 1,5,8,2,7,90, + 1,5,8,4,1,58, 1,5,7,2,8,90, 1,5,7,4,1,58, 1,5,6,2,9,90, 1,5,6,4,1,58, 1,5,5,2,10,90, 1,5,5,4,1,58, 1,5,4,2,11,90, + 1,5,4,4,1,58, 1,5,4,6,1,58, 2,9,12,2,3,86, 2,9,12,3,3,86, 2,9,12,5,2,54, 2,9,11,2,4,86, 2,9,11,3,4,86, 2,9,10,2,5,86, + 2,9,10,3,5,86, 2,9,9,2,6,86, 2,9,9,3,6,86, 2,9,8,2,7,86, 2,9,8,3,7,86, 2,9,7,2,8,86, 2,9,7,3,8,86, 2,9,6,2,9,86, + 2,9,6,3,9,86, 2,9,5,2,10,86, 2,9,5,3,10,86, 2,9,4,2,11,86, 2,9,4,3,11,86, 2,9,3,2,12,86, 2,9,3,3,12,86, 2,9,3,6,13,70, + 2,8,12,5,2,55, 2,8,3,6,13,71, 2,7,12,5,2,56, 2,7,3,6,13,72, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,3,4,2,57, 2,6,3,6,13,73, + 2,5,11,4,2,58, 2,5,11,5,2,58, 2,5,4,4,2,58, 2,5,4,6,13,74, 2,4,10,2,5,91, 2,4,10,5,2,59, 2,4,9,2,6,91, 2,4,8,2,7,91, + 2,4,7,2,8,91, 2,4,6,2,9,91, 2,4,5,2,10,91, 2,4,5,6,2,59, 2,3,12,2,3,92, 2,3,12,3,3,92, 2,3,12,5,13,76, 2,3,11,2,4,92, + 2,3,11,3,4,92, 2,3,10,2,5,92, 2,3,9,2,6,92, 2,3,8,2,7,92, 2,3,7,2,8,92, 2,3,6,2,9,92, 2,3,5,2,10,92, 2,3,4,2,11,92, + 2,3,4,3,11,92, 2,3,3,2,12,92, 2,3,3,3,12,92, 2,3,3,6,13,76, 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, 2,2,13,5,13,77, + 2,2,12,2,3,93, 2,2,12,4,13,77, 2,2,11,2,4,93, 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,4,13,77, + 2,2,8,2,7,93, 2,2,8,4,13,77, 2,2,7,2,8,93, 2,2,7,4,13,77, 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,4,13,77, + 2,2,4,2,11,93, 2,2,4,4,13,77, 2,2,3,2,12,93, 2,2,3,4,13,77, 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, 2,2,2,6,13,77, + 3,11,12,2,3,84, 3,11,12,3,3,84, 3,11,12,5,3,52, 3,11,11,2,4,84, 3,11,11,3,4,84, 3,11,10,2,5,84, 3,11,10,3,5,84, 3,11,9,2,6,84, + 3,11,9,3,6,84, 3,11,8,2,7,84, 3,11,8,3,7,84, 3,11,7,2,8,84, 3,11,7,3,8,84, 3,11,6,2,9,84, 3,11,6,3,9,84, 3,11,5,2,10,84, + 3,11,5,3,10,84, 3,11,4,2,11,84, 3,11,4,3,11,84, 3,11,3,2,12,84, 3,11,3,3,12,84, 3,11,3,6,12,68, 3,10,12,2,3,85, 3,10,12,5,3,53, + 3,10,11,2,4,85, 3,10,10,2,5,85, 3,10,9,2,6,85, 3,10,8,2,7,85, 3,10,7,2,8,85, 3,10,6,2,9,85, 3,10,5,2,10,85, 3,10,4,2,11,85, + 3,10,3,2,12,85, 3,10,3,6,12,69, 3,9,12,5,3,54, 3,9,3,6,12,70, 3,8,12,5,3,55, 3,8,3,6,12,71, 3,7,12,5,3,56, 3,7,3,6,12,72, + 3,6,12,4,3,57, 3,6,12,5,3,57, 3,6,3,4,3,57, 3,6,3,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,4,4,3,58, 3,5,4,6,12,74, + 3,4,10,5,3,59, 3,4,5,6,12,75, 3,3,12,3,3,92, 3,3,12,5,3,60, 3,3,11,3,4,92, 3,3,4,3,11,92, 3,3,3,3,12,92, 3,3,3,6,12,76, + 3,2,13,3,2,93, 3,2,13,4,12,77, 3,2,13,5,12,77, 3,2,2,3,13,93, 3,2,2,6,12,77, 3,1,12,2,3,94, 3,1,12,4,12,78, 3,1,12,5,12,78, + 3,1,11,2,4,94, 3,1,11,4,12,78, 3,1,10,2,5,94, 3,1,10,4,12,78, 3,1,9,2,6,94, 3,1,9,4,12,78, 3,1,8,2,7,94, 3,1,8,4,12,78, + 3,1,7,2,8,94, 3,1,7,4,12,78, 3,1,6,2,9,94, 3,1,6,4,12,78, 3,1,5,2,10,94, 3,1,5,4,12,78, 3,1,4,2,11,94, 3,1,4,4,12,78, + 3,1,3,2,12,94, 3,1,3,4,12,78, 3,1,2,2,13,94, 3,1,2,4,12,78, 3,1,2,6,12,78, 4,12,11,2,4,83, 4,12,11,3,4,83, 4,12,11,5,4,51, + 4,12,10,2,5,83, 4,12,10,3,5,83, 4,12,9,2,6,83, 4,12,9,3,6,83, 4,12,8,2,7,83, 4,12,8,3,7,83, 4,12,7,2,8,83, 4,12,7,3,8,83, + 4,12,6,2,9,83, 4,12,6,3,9,83, 4,12,5,2,10,83, 4,12,5,3,10,83, 4,12,4,2,11,83, 4,12,4,3,11,83, 4,12,4,6,11,67, 4,11,12,3,3,84, + 4,11,12,5,4,52, 4,11,3,3,12,84, 4,11,3,6,11,68, 4,10,12,5,4,53, 4,10,3,6,11,69, 4,9,12,5,4,54, 4,9,3,6,11,70, 4,8,12,5,4,55, + 4,8,3,6,11,71, 4,7,12,5,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,3,4,4,57, 4,6,3,6,11,73, 4,5,11,4,4,58, + 4,5,11,5,4,58, 4,5,4,4,4,58, 4,5,4,6,11,74, 4,4,10,5,4,59, 4,4,5,6,11,75, 4,3,12,3,3,92, 4,3,12,5,4,60, 4,3,11,3,4,92, + 4,3,4,3,11,92, 4,3,3,3,12,92, 4,3,3,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,2,3,13,93, 4,2,2,6,11,77, + 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,4,4,62, 4,1,10,4,4,62, 4,1,9,4,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, 4,1,6,4,4,62, + 4,1,5,4,4,62, 4,1,4,4,4,62, 4,1,3,4,4,62, 4,1,2,4,4,62, 4,1,2,6,11,78, 5,13,10,2,5,82, 5,13,10,3,5,82, 5,13,10,5,5,50, + 5,13,9,2,6,82, 5,13,9,3,6,82, 5,13,8,2,7,82, 5,13,8,3,7,82, 5,13,7,2,8,82, 5,13,7,3,8,82, 5,13,6,2,9,82, 5,13,6,3,9,82, + 5,13,5,2,10,82, 5,13,5,3,10,82, 5,13,5,6,10,66, 5,12,11,3,4,83, 5,12,11,5,5,51, 5,12,4,3,11,83, 5,12,4,6,10,67, 5,11,12,3,3,84, + 5,11,12,5,5,52, 5,11,3,3,12,84, 5,11,3,6,10,68, 5,10,12,5,5,53, 5,10,3,6,10,69, 5,9,12,5,5,54, 5,9,3,6,10,70, 5,8,12,5,5,55, + 5,8,3,6,10,71, 5,7,12,5,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,3,4,5,57, 5,6,3,6,10,73, 5,5,11,4,5,58, + 5,5,11,5,5,58, 5,5,4,4,5,58, 5,5,4,6,10,74, 5,4,10,5,5,59, 5,4,5,6,10,75, 5,3,12,3,3,92, 5,3,12,5,5,60, 5,3,11,3,4,92, + 5,3,4,3,11,92, 5,3,3,3,12,92, 5,3,3,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,3,13,93, 5,2,2,6,10,77, + 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,2,6,5,62, + 5,0,11,2,4,95, 5,0,11,5,5,63, 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,4,2,11,95, 5,0,4,5,5,63, 5,0,3,2,12,95, + 5,0,3,6,5,63, 6,13,10,3,5,82, 6,13,10,5,6,50, 6,13,9,3,6,82, 6,13,8,3,7,82, 6,13,7,3,8,82, 6,13,6,3,9,82, 6,13,5,3,10,82, + 6,13,5,6,9,66, 6,12,11,3,4,83, 6,12,11,5,6,51, 6,12,4,3,11,83, 6,12,4,6,9,67, 6,11,12,3,3,84, 6,11,12,5,6,52, 6,11,3,3,12,84, + 6,11,3,6,9,68, 6,10,12,5,6,53, 6,10,3,6,9,69, 6,9,12,5,6,54, 6,9,3,6,9,70, 6,8,12,5,6,55, 6,8,3,6,9,71, 6,7,12,5,6,56, + 6,7,3,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,3,4,6,57, 6,6,3,6,9,73, 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,4,4,6,58, + 6,5,4,6,9,74, 6,4,10,5,6,59, 6,4,5,6,9,75, 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,11,3,4,92, 6,3,4,3,11,92, 6,3,3,3,12,92, + 6,3,3,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, + 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, 6,1,2,6,6,62, 6,0,11,5,6,63, 6,0,9,6,6,63, + 6,0,4,5,6,63, 6,0,3,6,6,63, 7,13,10,3,5,82, 7,13,10,5,7,50, 7,13,9,3,6,82, 7,13,8,3,7,82, 7,13,7,3,8,82, 7,13,6,3,9,82, + 7,13,5,3,10,82, 7,13,5,6,8,66, 7,12,11,3,4,83, 7,12,11,5,7,51, 7,12,4,3,11,83, 7,12,4,6,8,67, 7,11,12,3,3,84, 7,11,12,5,7,52, + 7,11,3,3,12,84, 7,11,3,6,8,68, 7,10,12,5,7,53, 7,10,3,6,8,69, 7,9,12,5,7,54, 7,9,3,6,8,70, 7,8,12,5,7,55, 7,8,3,6,8,71, + 7,7,12,5,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,3,4,7,57, 7,6,3,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, + 7,5,4,4,7,58, 7,5,4,6,8,74, 7,4,10,5,7,59, 7,4,5,6,8,75, 7,3,12,3,3,92, 7,3,12,5,7,60, 7,3,11,3,4,92, 7,3,4,3,11,92, + 7,3,3,3,12,92, 7,3,3,6,8,76, 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, 7,2,2,6,8,77, 7,1,12,4,7,62, + 7,1,12,5,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,2,4,7,62, 7,1,2,6,8,78, 7,0,11,5,7,63, + 7,0,9,6,7,63, 7,0,4,5,7,63, 7,0,3,6,7,63, 8,13,10,3,5,82, 8,13,10,5,8,50, 8,13,9,3,6,82, 8,13,8,3,7,82, 8,13,7,3,8,82, + 8,13,6,3,9,82, 8,13,5,3,10,82, 8,13,5,6,7,66, 8,12,11,3,4,83, 8,12,11,5,8,51, 8,12,4,3,11,83, 8,12,4,6,7,67, 8,11,12,3,3,84, + 8,11,12,5,8,52, 8,11,3,3,12,84, 8,11,3,6,7,68, 8,10,12,5,8,53, 8,10,3,6,7,69, 8,9,12,5,8,54, 8,9,3,6,7,70, 8,8,12,5,8,55, + 8,8,3,6,7,71, 8,7,12,5,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,3,4,8,57, 8,6,3,6,7,73, 8,5,11,4,8,58, + 8,5,11,5,8,58, 8,5,4,4,8,58, 8,5,4,6,7,74, 8,4,10,5,8,59, 8,4,5,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, 8,3,11,3,4,92, + 8,3,4,3,11,92, 8,3,3,3,12,92, 8,3,3,6,7,76, 8,2,13,3,2,93, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,7,77, + 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, + 8,0,11,5,7,79, 8,0,9,6,7,79, 8,0,4,5,7,79, 8,0,3,6,7,79, 9,13,10,3,5,82, 9,13,10,5,9,50, 9,13,9,3,6,82, 9,13,8,3,7,82, + 9,13,7,3,8,82, 9,13,6,3,9,82, 9,13,5,3,10,82, 9,13,5,6,6,66, 9,12,11,3,4,83, 9,12,11,5,9,51, 9,12,4,3,11,83, 9,12,4,6,6,67, + 9,11,12,3,3,84, 9,11,12,5,9,52, 9,11,3,3,12,84, 9,11,3,6,6,68, 9,10,12,5,9,53, 9,10,3,6,6,69, 9,9,12,5,9,54, 9,9,3,6,6,70, + 9,8,12,5,9,55, 9,8,3,6,6,71, 9,7,12,5,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,3,4,9,57, 9,6,3,6,6,73, + 9,5,11,4,9,58, 9,5,11,5,9,58, 9,5,4,4,9,58, 9,5,4,6,6,74, 9,4,10,5,9,59, 9,4,5,6,6,75, 9,3,12,3,3,92, 9,3,12,5,9,60, + 9,3,11,3,4,92, 9,3,4,3,11,92, 9,3,3,3,12,92, 9,3,3,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,2,3,13,93, + 9,2,2,6,6,77, 9,1,12,4,6,78, 9,1,12,5,6,78, 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,5,4,6,78, 9,1,2,4,6,78, + 9,1,2,6,6,78, 9,0,11,5,6,79, 9,0,9,6,6,79, 9,0,4,5,6,79, 9,0,3,6,6,79, 10,13,10,1,5,82, 10,13,10,3,5,82, 10,13,10,5,10,50, + 10,13,9,1,6,82, 10,13,9,3,6,82, 10,13,8,1,7,82, 10,13,8,3,7,82, 10,13,7,1,8,82, 10,13,7,3,8,82, 10,13,6,1,9,82, 10,13,6,3,9,82, + 10,13,5,1,10,82, 10,13,5,3,10,82, 10,13,5,6,5,66, 10,12,11,3,4,83, 10,12,11,5,10,51, 10,12,4,3,11,83, 10,12,4,6,5,67, 10,11,12,3,3,84, + 10,11,12,5,10,52, 10,11,3,3,12,84, 10,11,3,6,5,68, 10,10,12,5,10,53, 10,10,3,6,5,69, 10,9,12,5,10,54, 10,9,3,6,5,70, 10,8,12,5,10,55, + 10,8,3,6,5,71, 10,7,12,5,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,3,4,10,57, 10,6,3,6,5,73, 10,5,11,4,10,58, + 10,5,11,5,10,58, 10,5,4,4,10,58, 10,5,4,6,5,74, 10,4,10,5,10,59, 10,4,5,6,5,75, 10,3,12,3,3,92, 10,3,12,5,10,60, 10,3,11,3,4,92, + 10,3,4,3,11,92, 10,3,3,3,12,92, 10,3,3,6,5,76, 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,3,13,93, 10,2,2,6,5,77, + 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,2,4,10,62, 10,1,2,6,5,78, + 10,0,11,1,4,95, 10,0,11,5,5,79, 10,0,10,1,5,95, 10,0,9,1,6,95, 10,0,9,6,5,79, 10,0,4,1,11,95, 10,0,4,5,5,79, 10,0,3,1,12,95, + 10,0,3,6,5,79, 11,12,11,1,4,83, 11,12,11,3,4,83, 11,12,11,5,11,51, 11,12,10,1,5,83, 11,12,10,3,5,83, 11,12,9,1,6,83, 11,12,9,3,6,83, + 11,12,8,1,7,83, 11,12,8,3,7,83, 11,12,7,1,8,83, 11,12,7,3,8,83, 11,12,6,1,9,83, 11,12,6,3,9,83, 11,12,5,1,10,83, 11,12,5,3,10,83, + 11,12,4,1,11,83, 11,12,4,3,11,83, 11,12,4,6,4,67, 11,11,12,3,3,84, 11,11,12,5,11,52, 11,11,3,3,12,84, 11,11,3,6,4,68, 11,10,12,5,11,53, + 11,10,3,6,4,69, 11,9,12,5,11,54, 11,9,3,6,4,70, 11,8,12,5,11,55, 11,8,3,6,4,71, 11,7,12,5,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, + 11,6,12,5,11,57, 11,6,3,4,11,57, 11,6,3,6,4,73, 11,5,11,4,11,58, 11,5,11,5,11,58, 11,5,4,4,11,58, 11,5,4,6,4,74, 11,4,10,5,11,59, + 11,4,5,6,4,75, 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,11,3,4,92, 11,3,4,3,11,92, 11,3,3,3,12,92, 11,3,3,6,4,76, 11,2,13,3,2,93, + 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,3,13,93, 11,2,2,6,4,77, 11,1,12,1,3,94, 11,1,12,4,11,62, 11,1,12,5,11,62, 11,1,11,1,4,94, + 11,1,11,4,11,62, 11,1,10,1,5,94, 11,1,10,4,11,62, 11,1,9,1,6,94, 11,1,9,4,11,62, 11,1,8,1,7,94, 11,1,8,4,11,62, 11,1,7,1,8,94, + 11,1,7,4,11,62, 11,1,6,1,9,94, 11,1,6,4,11,62, 11,1,5,1,10,94, 11,1,5,4,11,62, 11,1,4,1,11,94, 11,1,4,4,11,62, 11,1,3,1,12,94, + 11,1,3,4,11,62, 11,1,2,1,13,94, 11,1,2,4,11,62, 11,1,2,6,4,78, 12,11,12,1,3,84, 12,11,12,3,3,84, 12,11,12,5,12,52, 12,11,11,1,4,84, + 12,11,11,3,4,84, 12,11,10,1,5,84, 12,11,10,3,5,84, 12,11,9,1,6,84, 12,11,9,3,6,84, 12,11,8,1,7,84, 12,11,8,3,7,84, 12,11,7,1,8,84, + 12,11,7,3,8,84, 12,11,6,1,9,84, 12,11,6,3,9,84, 12,11,5,1,10,84, 12,11,5,3,10,84, 12,11,4,1,11,84, 12,11,4,3,11,84, 12,11,3,1,12,84, + 12,11,3,3,12,84, 12,11,3,6,3,68, 12,10,12,1,3,85, 12,10,12,5,12,53, 12,10,11,1,4,85, 12,10,10,1,5,85, 12,10,9,1,6,85, 12,10,8,1,7,85, + 12,10,7,1,8,85, 12,10,6,1,9,85, 12,10,5,1,10,85, 12,10,4,1,11,85, 12,10,3,1,12,85, 12,10,3,6,3,69, 12,9,12,5,12,54, 12,9,3,6,3,70, + 12,8,12,5,12,55, 12,8,3,6,3,71, 12,7,12,5,12,56, 12,7,3,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,3,4,12,57, 12,6,3,6,3,73, + 12,5,11,4,12,58, 12,5,11,5,12,58, 12,5,4,4,12,58, 12,5,4,6,3,74, 12,4,10,5,12,59, 12,4,5,6,3,75, 12,3,12,3,3,92, 12,3,12,5,12,60, + 12,3,11,3,4,92, 12,3,4,3,11,92, 12,3,3,3,12,92, 12,3,3,6,3,76, 12,2,13,1,2,93, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, + 12,2,12,1,3,93, 12,2,12,4,12,61, 12,2,11,1,4,93, 12,2,11,4,12,61, 12,2,10,1,5,93, 12,2,10,4,12,61, 12,2,9,1,6,93, 12,2,9,4,12,61, + 12,2,8,1,7,93, 12,2,8,4,12,61, 12,2,7,1,8,93, 12,2,7,4,12,61, 12,2,6,1,9,93, 12,2,6,4,12,61, 12,2,5,1,10,93, 12,2,5,4,12,61, + 12,2,4,1,11,93, 12,2,4,4,12,61, 12,2,3,1,12,93, 12,2,3,4,12,61, 12,2,2,1,13,93, 12,2,2,3,13,93, 12,2,2,4,12,61, 12,2,2,6,12,61, + 13,9,12,1,3,86, 13,9,12,3,3,86, 13,9,12,5,13,54, 13,9,11,1,4,86, 13,9,11,3,4,86, 13,9,10,1,5,86, 13,9,10,3,5,86, 13,9,9,1,6,86, + 13,9,9,3,6,86, 13,9,8,1,7,86, 13,9,8,3,7,86, 13,9,7,1,8,86, 13,9,7,3,8,86, 13,9,6,1,9,86, 13,9,6,3,9,86, 13,9,5,1,10,86, + 13,9,5,3,10,86, 13,9,4,1,11,86, 13,9,4,3,11,86, 13,9,3,1,12,86, 13,9,3,3,12,86, 13,9,3,6,2,70, 13,8,12,5,13,55, 13,8,3,6,2,71, + 13,7,12,5,13,56, 13,7,3,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,3,4,13,57, 13,6,3,6,2,73, 13,5,11,4,13,58, 13,5,11,5,13,58, + 13,5,4,4,13,58, 13,5,4,6,2,74, 13,4,10,1,5,91, 13,4,10,5,13,59, 13,4,9,1,6,91, 13,4,8,1,7,91, 13,4,7,1,8,91, 13,4,6,1,9,91, + 13,4,5,1,10,91, 13,4,5,6,2,75, 13,3,12,1,3,92, 13,3,12,3,3,92, 13,3,12,4,13,60, 13,3,12,5,13,60, 13,3,11,1,4,92, 13,3,11,3,4,92, + 13,3,11,4,13,60, 13,3,10,1,5,92, 13,3,10,4,13,60, 13,3,9,1,6,92, 13,3,9,4,13,60, 13,3,8,1,7,92, 13,3,8,4,13,60, 13,3,7,1,8,92, + 13,3,7,4,13,60, 13,3,6,1,9,92, 13,3,6,4,13,60, 13,3,5,1,10,92, 13,3,5,4,13,60, 13,3,4,1,11,92, 13,3,4,3,11,92, 13,3,4,4,13,60, + 13,3,3,1,12,92, 13,3,3,3,12,92, 13,3,3,4,13,60, 13,3,3,6,13,60, 14,8,12,1,3,87, 14,8,12,3,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, + 14,8,11,3,4,87, 14,8,10,1,5,87, 14,8,10,3,5,87, 14,8,9,1,6,87, 14,8,9,3,6,87, 14,8,8,1,7,87, 14,8,8,3,7,87, 14,8,7,1,8,87, + 14,8,7,3,8,87, 14,8,6,1,9,87, 14,8,6,3,9,87, 14,8,5,1,10,87, 14,8,5,3,10,87, 14,8,4,1,11,87, 14,8,4,3,11,87, 14,8,3,1,12,87, + 14,8,3,3,12,87, 14,8,3,6,1,71, 14,7,12,1,3,88, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, 14,7,9,1,6,88, 14,7,8,1,7,88, + 14,7,7,1,8,88, 14,7,6,1,9,88, 14,7,5,1,10,88, 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, + 14,6,12,5,1,73, 14,6,11,1,4,89, 14,6,10,1,5,89, 14,6,9,1,6,89, 14,6,8,1,7,89, 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, + 14,6,4,1,11,89, 14,6,3,1,12,89, 14,6,3,4,1,73, 14,6,3,6,1,73, 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, 14,5,10,1,5,90, + 14,5,10,4,1,74, 14,5,9,1,6,90, 14,5,9,4,1,74, 14,5,8,1,7,90, 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, 14,5,6,1,9,90, + 14,5,6,4,1,74, 14,5,5,1,10,90, 14,5,5,4,1,74, 14,5,4,1,11,90, 14,5,4,4,1,74, 14,5,4,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/girl.lua b/assets/voxels/girl.lua new file mode 100644 index 0000000..89d7da5 --- /dev/null +++ b/assets/voxels/girl.lua @@ -0,0 +1,282 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "girl" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "girl", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1628, + count = 944, + faces = { + 1,5,10,2,5,42, 1,5,10,3,5,42, 1,5,10,5,1,10, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, + 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,3,2,12,42, + 1,5,3,3,12,42, 1,5,2,2,13,42, 1,5,2,3,13,42, 1,5,2,6,14,26, 1,4,10,2,5,43, 1,4,10,4,1,11, 1,4,10,5,1,11, 1,4,9,2,6,43, + 1,4,9,4,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, + 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,3,2,12,43, 1,4,3,4,1,11, 1,4,2,2,13,43, 1,4,2,4,1,11, 1,4,2,6,14,27, + 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,13,4,2,4, 2,11,13,5,2,4, 2,11,12,2,3,36, 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, + 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, + 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, + 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,12,2,3,37, 2,10,12,5,2,5, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, + 2,10,8,2,7,37, 2,10,7,2,8,37, 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,6,13,21, + 2,9,12,2,3,38, 2,9,12,5,2,6, 2,9,11,2,4,38, 2,9,10,2,5,38, 2,9,9,2,6,38, 2,9,8,2,7,38, 2,9,7,2,8,38, 2,9,6,2,9,38, + 2,9,5,2,10,38, 2,9,4,2,11,38, 2,9,3,2,12,38, 2,9,2,2,13,38, 2,9,2,6,13,22, 2,8,12,2,3,39, 2,8,12,5,2,7, 2,8,11,2,4,39, + 2,8,10,2,5,39, 2,8,9,2,6,39, 2,8,8,2,7,39, 2,8,7,2,8,39, 2,8,6,2,9,39, 2,8,5,2,10,39, 2,8,4,2,11,39, 2,8,3,2,12,39, + 2,8,2,2,13,39, 2,8,2,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, + 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, 2,7,2,2,13,40, 2,7,2,6,13,24, + 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, 2,6,6,2,9,41, + 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,3,2,12,41, 2,6,2,2,13,41, 2,6,2,6,13,25, 2,5,10,5,2,10, 2,5,2,6,13,26, 2,4,10,5,2,11, + 2,4,2,4,2,11, 2,4,2,6,13,27, 2,3,10,2,5,44, 2,3,10,4,2,12, 2,3,10,5,2,12, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,8,2,7,44, + 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, + 2,3,4,4,2,12, 2,3,3,2,12,44, 2,3,3,4,2,12, 2,3,3,6,13,28, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, + 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, + 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, + 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,13,2,2,35, 3,12,13,3,2,35, 3,12,13,5,3,3, 3,12,12,2,3,35, 3,12,11,2,4,35, 3,12,10,2,5,35, + 3,12,9,2,6,35, 3,12,8,2,7,35, 3,12,7,2,8,35, 3,12,6,2,9,35, 3,12,5,2,10,35, 3,12,4,2,11,35, 3,12,3,2,12,35, 3,12,2,2,13,35, + 3,12,2,3,13,35, 3,12,2,6,12,19, 3,11,13,4,3,4, 3,11,13,5,3,4, 3,11,2,6,12,20, 3,10,12,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, + 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,2,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,2,6,12,24, 3,6,11,4,3,9, 3,6,11,5,3,9, + 3,6,2,6,12,25, 3,5,10,5,3,10, 3,5,2,6,12,26, 3,4,10,5,3,11, 3,4,2,4,3,11, 3,4,2,6,12,27, 3,3,10,5,3,12, 3,3,3,4,3,12, + 3,3,3,6,12,28, 3,2,11,2,4,45, 3,2,11,3,4,45, 3,2,11,4,3,13, 3,2,11,5,3,13, 3,2,10,2,5,45, 3,2,10,4,3,13, 3,2,9,2,6,45, + 3,2,9,4,3,13, 3,2,8,2,7,45, 3,2,8,4,3,13, 3,2,7,2,8,45, 3,2,7,4,3,13, 3,2,6,2,9,45, 3,2,6,4,3,13, 3,2,5,2,10,45, + 3,2,5,4,3,13, 3,2,4,2,11,45, 3,2,4,4,3,13, 3,2,4,6,12,29, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, + 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, + 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, + 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, 4,12,2,3,13,35, 4,12,2,6,11,19, 4,11,13,4,4,4, 4,11,13,5,4,4, + 4,11,2,6,11,20, 4,10,12,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,2,6,11,23, 4,7,12,4,4,8, + 4,7,12,5,4,8, 4,7,2,6,11,24, 4,6,11,4,4,9, 4,6,11,5,4,9, 4,6,2,6,11,25, 4,5,10,5,4,10, 4,5,2,6,11,26, 4,4,10,5,4,11, + 4,4,2,4,4,11, 4,4,2,6,11,27, 4,3,10,5,4,12, 4,3,3,4,4,12, 4,3,3,6,11,28, 4,2,11,3,4,45, 4,2,11,5,4,13, 4,2,4,6,11,29, + 4,1,11,2,4,46, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,10,2,5,46, 4,1,10,4,4,14, 4,1,9,2,6,46, 4,1,9,4,4,14, 4,1,8,2,7,46, + 4,1,8,4,4,14, 4,1,7,2,8,46, 4,1,7,4,4,14, 4,1,6,2,9,46, 4,1,6,4,4,14, 4,1,5,2,10,46, 4,1,5,4,4,14, 4,1,4,2,11,46, + 4,1,4,4,4,14, 4,1,4,6,11,30, 5,15,9,2,6,32, 5,15,9,3,6,32, 5,15,9,5,5,0, 5,15,8,2,7,32, 5,15,8,3,7,32, 5,15,7,2,8,32, + 5,15,7,3,8,32, 5,15,6,2,9,32, 5,15,6,3,9,32, 5,15,6,6,10,16, 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,10,3,5,33, 5,14,5,3,10,33, + 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,3,2,35, 5,12,13,5,5,3, + 5,12,2,3,13,35, 5,12,2,6,10,19, 5,11,13,4,5,4, 5,11,13,5,5,4, 5,11,2,6,10,20, 5,10,12,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, + 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,2,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,2,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, + 5,6,2,6,10,25, 5,5,10,5,5,10, 5,5,2,6,10,26, 5,4,10,5,5,11, 5,4,2,4,5,11, 5,4,2,6,10,27, 5,3,10,5,5,12, 5,3,3,4,5,12, + 5,3,3,6,10,28, 5,2,11,3,4,45, 5,2,11,5,5,13, 5,2,4,6,10,29, 5,1,11,4,5,14, 5,1,11,5,5,14, 5,1,4,4,5,14, 5,1,4,6,10,30, + 5,0,10,2,5,47, 5,0,10,5,5,15, 5,0,9,2,6,47, 5,0,8,2,7,47, 5,0,7,2,8,47, 5,0,6,2,9,47, 5,0,5,2,10,47, 5,0,5,6,10,31, + 6,15,9,3,6,32, 6,15,9,5,6,0, 6,15,8,3,7,32, 6,15,7,3,8,32, 6,15,6,3,9,32, 6,15,6,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, + 6,14,10,3,5,33, 6,14,5,3,10,33, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, 6,13,3,6,9,18, + 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,2,3,13,35, 6,12,2,6,9,19, 6,11,13,4,6,4, 6,11,13,5,6,4, 6,11,2,6,9,20, 6,10,12,5,6,5, + 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,2,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,2,6,9,24, + 6,6,11,4,6,9, 6,6,11,5,6,9, 6,6,2,6,9,25, 6,5,10,5,6,10, 6,5,2,6,9,26, 6,4,10,5,6,11, 6,4,2,4,6,11, 6,4,2,6,9,27, + 6,3,10,5,6,12, 6,3,3,4,6,12, 6,3,3,6,9,28, 6,2,11,3,4,45, 6,2,11,5,6,13, 6,2,4,6,9,29, 6,1,11,4,6,14, 6,1,11,5,6,14, + 6,1,4,4,6,14, 6,1,4,6,9,30, 6,0,10,5,6,15, 6,0,5,6,9,31, 7,15,9,3,6,32, 7,15,9,5,7,0, 7,15,8,3,7,32, 7,15,7,3,8,32, + 7,15,6,3,9,32, 7,15,6,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,10,3,5,33, 7,14,5,3,10,33, 7,14,4,3,11,33, 7,14,4,6,8,17, + 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, 7,12,13,5,7,3, 7,12,2,3,13,35, 7,12,2,6,8,19, + 7,11,13,4,7,4, 7,11,13,5,7,4, 7,11,2,6,8,20, 7,10,12,5,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, + 7,8,2,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,2,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,2,6,8,25, 7,5,10,5,7,10, + 7,5,2,6,8,26, 7,4,10,5,7,11, 7,4,2,4,7,11, 7,4,2,6,8,27, 7,3,10,5,7,12, 7,3,3,4,7,12, 7,3,3,6,8,28, 7,2,11,3,4,45, + 7,2,11,5,7,13, 7,2,4,6,8,29, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,4,4,7,14, 7,1,4,6,8,30, 7,0,10,5,7,15, 7,0,5,6,8,31, + 8,15,9,3,6,32, 8,15,9,5,8,0, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, + 8,14,10,3,5,33, 8,14,5,3,10,33, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, + 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,2,3,13,35, 8,12,2,6,7,19, 8,11,13,4,8,4, 8,11,13,5,8,4, 8,11,2,6,7,20, 8,10,12,5,8,5, + 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,6,7,22, 8,8,12,5,8,7, 8,8,2,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,2,6,7,24, + 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,2,6,7,25, 8,5,10,5,8,10, 8,5,2,6,7,26, 8,4,10,5,8,11, 8,4,2,4,8,11, 8,4,2,6,7,27, + 8,3,10,5,8,12, 8,3,3,4,8,12, 8,3,3,6,7,28, 8,2,11,3,4,45, 8,2,11,5,8,13, 8,2,4,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, + 8,1,4,4,8,14, 8,1,4,6,7,30, 8,0,10,5,8,15, 8,0,5,6,7,31, 9,15,9,3,6,32, 9,15,9,5,9,0, 9,15,8,3,7,32, 9,15,7,3,8,32, + 9,15,6,3,9,32, 9,15,6,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,10,3,5,33, 9,14,5,3,10,33, 9,14,4,3,11,33, 9,14,4,6,6,17, + 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, 9,12,13,5,9,3, 9,12,2,3,13,35, 9,12,2,6,6,19, + 9,11,13,4,9,4, 9,11,13,5,9,4, 9,11,2,6,6,20, 9,10,12,5,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, + 9,8,2,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,2,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, 9,6,2,6,6,25, 9,5,10,5,9,10, + 9,5,2,6,6,26, 9,4,10,5,9,11, 9,4,2,4,9,11, 9,4,2,6,6,27, 9,3,10,5,9,12, 9,3,3,4,9,12, 9,3,3,6,6,28, 9,2,11,3,4,45, + 9,2,11,5,9,13, 9,2,4,6,6,29, 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,4,4,9,14, 9,1,4,6,6,30, 9,0,10,5,9,15, 9,0,5,6,6,31, + 10,15,9,1,6,32, 10,15,9,3,6,32, 10,15,9,5,10,0, 10,15,8,1,7,32, 10,15,8,3,7,32, 10,15,7,1,8,32, 10,15,7,3,8,32, 10,15,6,1,9,32, + 10,15,6,3,9,32, 10,15,6,6,5,16, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,10,3,5,33, 10,14,5,3,10,33, 10,14,4,3,11,33, 10,14,4,6,5,17, + 10,13,12,3,3,34, 10,13,12,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,2,3,13,35, 10,12,2,6,5,19, + 10,11,13,4,10,4, 10,11,13,5,10,4, 10,11,2,6,5,20, 10,10,12,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, + 10,8,2,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,2,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,2,6,5,25, 10,5,10,5,10,10, + 10,5,2,6,5,26, 10,4,10,5,10,11, 10,4,2,4,10,11, 10,4,2,6,5,27, 10,3,10,5,10,12, 10,3,3,4,10,12, 10,3,3,6,5,28, 10,2,11,3,4,45, + 10,2,11,5,10,13, 10,2,4,6,5,29, 10,1,11,4,10,14, 10,1,11,5,10,14, 10,1,4,4,10,14, 10,1,4,6,5,30, 10,0,10,1,5,47, 10,0,10,5,10,15, + 10,0,9,1,6,47, 10,0,8,1,7,47, 10,0,7,1,8,47, 10,0,6,1,9,47, 10,0,5,1,10,47, 10,0,5,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, + 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, + 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, + 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, 11,12,13,5,11,3, 11,12,2,3,13,35, 11,12,2,6,4,19, + 11,11,13,4,11,4, 11,11,13,5,11,4, 11,11,2,6,4,20, 11,10,12,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,2,6,4,22, 11,8,12,5,11,7, + 11,8,2,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,2,6,4,24, 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,2,6,4,25, 11,5,10,5,11,10, + 11,5,2,6,4,26, 11,4,10,5,11,11, 11,4,2,4,11,11, 11,4,2,6,4,27, 11,3,10,5,11,12, 11,3,3,4,11,12, 11,3,3,6,4,28, 11,2,11,3,4,45, + 11,2,11,5,11,13, 11,2,4,6,4,29, 11,1,11,1,4,46, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,10,1,5,46, 11,1,10,4,11,14, 11,1,9,1,6,46, + 11,1,9,4,11,14, 11,1,8,1,7,46, 11,1,8,4,11,14, 11,1,7,1,8,46, 11,1,7,4,11,14, 11,1,6,1,9,46, 11,1,6,4,11,14, 11,1,5,1,10,46, + 11,1,5,4,11,14, 11,1,4,1,11,46, 11,1,4,4,11,14, 11,1,4,6,4,30, 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, + 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, + 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, + 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,1,2,35, 12,12,13,3,2,35, 12,12,13,5,12,3, 12,12,12,1,3,35, 12,12,11,1,4,35, 12,12,10,1,5,35, + 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, 12,12,6,1,9,35, 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, 12,12,2,1,13,35, + 12,12,2,3,13,35, 12,12,2,6,3,19, 12,11,13,4,12,4, 12,11,13,5,12,4, 12,11,2,6,3,20, 12,10,12,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, + 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,2,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,2,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, + 12,6,2,6,3,25, 12,5,10,5,12,10, 12,5,2,6,3,26, 12,4,10,5,12,11, 12,4,2,4,12,11, 12,4,2,6,3,27, 12,3,10,5,12,12, 12,3,3,4,12,12, + 12,3,3,6,3,28, 12,2,11,1,4,45, 12,2,11,3,4,45, 12,2,11,4,12,13, 12,2,11,5,12,13, 12,2,10,1,5,45, 12,2,10,4,12,13, 12,2,9,1,6,45, + 12,2,9,4,12,13, 12,2,8,1,7,45, 12,2,8,4,12,13, 12,2,7,1,8,45, 12,2,7,4,12,13, 12,2,6,1,9,45, 12,2,6,4,12,13, 12,2,5,1,10,45, + 12,2,5,4,12,13, 12,2,4,1,11,45, 12,2,4,4,12,13, 12,2,4,6,3,29, 13,11,13,1,2,36, 13,11,13,3,2,36, 13,11,13,4,13,4, 13,11,13,5,13,4, + 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, 13,11,9,3,6,36, + 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, 13,11,5,3,10,36, + 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, 13,10,12,1,3,37, + 13,10,12,5,13,5, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, 13,10,6,1,9,37, 13,10,5,1,10,37, + 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,6,2,21, 13,9,12,1,3,38, 13,9,12,5,13,6, 13,9,11,1,4,38, 13,9,10,1,5,38, + 13,9,9,1,6,38, 13,9,8,1,7,38, 13,9,7,1,8,38, 13,9,6,1,9,38, 13,9,5,1,10,38, 13,9,4,1,11,38, 13,9,3,1,12,38, 13,9,2,1,13,38, + 13,9,2,6,2,22, 13,8,12,1,3,39, 13,8,12,5,13,7, 13,8,11,1,4,39, 13,8,10,1,5,39, 13,8,9,1,6,39, 13,8,8,1,7,39, 13,8,7,1,8,39, + 13,8,6,1,9,39, 13,8,5,1,10,39, 13,8,4,1,11,39, 13,8,3,1,12,39, 13,8,2,1,13,39, 13,8,2,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, + 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, + 13,7,4,1,11,40, 13,7,3,1,12,40, 13,7,2,1,13,40, 13,7,2,6,2,24, 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, + 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,3,1,12,41, 13,6,2,1,13,41, + 13,6,2,6,2,25, 13,5,10,5,13,10, 13,5,2,6,2,26, 13,4,10,5,13,11, 13,4,2,4,13,11, 13,4,2,6,2,27, 13,3,10,1,5,44, 13,3,10,4,13,12, + 13,3,10,5,13,12, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, 13,3,7,4,13,12, 13,3,6,1,9,44, + 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,3,1,12,44, 13,3,3,4,13,12, 13,3,3,6,2,28, + 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,5,14,10, 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, + 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,4,1,11,42, 14,5,4,3,11,42, 14,5,3,1,12,42, + 14,5,3,3,12,42, 14,5,2,1,13,42, 14,5,2,3,13,42, 14,5,2,6,1,26, 14,4,10,1,5,43, 14,4,10,4,14,11, 14,4,10,5,14,11, 14,4,9,1,6,43, + 14,4,9,4,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, + 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,4,14,11, 14,4,3,1,12,43, 14,4,3,4,14,11, 14,4,2,1,13,43, 14,4,2,4,14,11, 14,4,2,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1877, + count = 1051, + faces = { + 1,10,14,2,2,85, 1,10,14,3,2,85, 1,10,14,4,13,69, 1,10,14,5,13,69, 1,10,13,2,3,85, 1,10,13,3,3,85, 1,10,12,2,4,85, 1,10,12,3,4,85, + 1,10,11,2,5,85, 1,10,11,3,5,85, 1,10,10,2,6,85, 1,10,10,3,6,85, 1,10,9,2,7,85, 1,10,9,3,7,85, 1,10,8,2,8,85, 1,10,8,3,8,85, + 1,10,7,2,9,85, 1,10,7,3,9,85, 1,10,6,2,10,85, 1,10,6,3,10,85, 1,10,5,2,11,85, 1,10,5,3,11,85, 1,10,4,2,12,85, 1,10,4,3,12,85, + 1,10,3,2,13,85, 1,10,3,3,13,85, 1,10,3,6,13,69, 1,9,13,2,3,86, 1,9,13,5,13,70, 1,9,12,2,4,86, 1,9,11,2,5,86, 1,9,10,2,6,86, + 1,9,9,2,7,86, 1,9,8,2,8,86, 1,9,7,2,9,86, 1,9,6,2,10,86, 1,9,5,2,11,86, 1,9,4,2,12,86, 1,9,3,2,13,86, 1,9,2,2,14,86, + 1,9,2,3,14,86, 1,9,2,6,13,70, 1,8,13,2,3,87, 1,8,13,5,13,71, 1,8,12,2,4,87, 1,8,11,2,5,87, 1,8,10,2,6,87, 1,8,9,2,7,87, + 1,8,8,2,8,87, 1,8,7,2,9,87, 1,8,6,2,10,87, 1,8,5,2,11,87, 1,8,4,2,12,87, 1,8,3,2,13,87, 1,8,2,2,14,87, 1,8,1,2,15,87, + 1,8,1,3,15,87, 1,8,1,6,13,71, 1,7,13,2,3,88, 1,7,13,5,13,72, 1,7,12,2,4,88, 1,7,11,2,5,88, 1,7,10,2,6,88, 1,7,9,2,7,88, + 1,7,8,2,8,88, 1,7,7,2,9,88, 1,7,6,2,10,88, 1,7,5,2,11,88, 1,7,4,2,12,88, 1,7,3,2,13,88, 1,7,2,2,14,88, 1,7,1,2,15,88, + 1,7,1,6,13,72, 1,6,13,2,3,89, 1,6,13,4,0,57, 1,6,13,5,0,57, 1,6,12,2,4,89, 1,6,11,2,5,89, 1,6,10,2,6,89, 1,6,9,2,7,89, + 1,6,8,2,8,89, 1,6,7,2,9,89, 1,6,6,2,10,89, 1,6,5,2,11,89, 1,6,4,2,12,89, 1,6,3,2,13,89, 1,6,2,2,14,89, 1,6,1,2,15,89, + 1,6,1,6,0,57, 1,5,12,2,4,90, 1,5,12,4,0,58, 1,5,12,5,0,58, 1,5,11,2,5,90, 1,5,11,4,0,58, 1,5,10,2,6,90, 1,5,10,4,0,58, + 1,5,9,2,7,90, 1,5,9,4,0,58, 1,5,8,2,8,90, 1,5,8,4,0,58, 1,5,7,2,9,90, 1,5,7,4,0,58, 1,5,6,2,10,90, 1,5,6,4,0,58, + 1,5,5,2,11,90, 1,5,5,4,0,58, 1,5,4,2,12,90, 1,5,4,4,0,58, 1,5,3,2,13,90, 1,5,3,4,0,58, 1,5,2,2,14,90, 1,5,2,4,0,58, + 1,5,1,2,15,90, 1,5,1,4,0,58, 1,5,1,6,0,58, 2,12,13,2,3,83, 2,12,13,3,3,83, 2,12,13,5,12,67, 2,12,12,2,4,83, 2,12,12,3,4,83, + 2,12,11,2,5,83, 2,12,11,3,5,83, 2,12,10,2,6,83, 2,12,10,3,6,83, 2,12,9,2,7,83, 2,12,9,3,7,83, 2,12,8,2,8,83, 2,12,8,3,8,83, + 2,12,7,2,9,83, 2,12,7,3,9,83, 2,12,6,2,10,83, 2,12,6,3,10,83, 2,12,5,2,11,83, 2,12,5,3,11,83, 2,12,4,2,12,83, 2,12,4,3,12,83, + 2,12,4,6,12,67, 2,11,14,2,2,84, 2,11,14,3,2,84, 2,11,14,5,12,68, 2,11,13,2,3,84, 2,11,12,2,4,84, 2,11,11,2,5,84, 2,11,10,2,6,84, + 2,11,9,2,7,84, 2,11,8,2,8,84, 2,11,7,2,9,84, 2,11,6,2,10,84, 2,11,5,2,11,84, 2,11,4,2,12,84, 2,11,3,2,13,84, 2,11,3,3,13,84, + 2,11,3,6,12,68, 2,10,14,4,12,69, 2,10,14,5,12,69, 2,10,3,6,12,69, 2,9,13,5,12,70, 2,9,2,3,14,86, 2,9,2,6,12,70, 2,8,13,5,1,55, + 2,8,1,3,15,87, 2,8,1,6,12,71, 2,7,13,5,1,56, 2,7,1,6,12,72, 2,6,13,4,1,57, 2,6,13,5,1,57, 2,6,1,6,12,73, 2,5,12,4,1,58, + 2,5,12,5,1,58, 2,5,1,4,1,58, 2,5,1,6,12,74, 2,4,11,2,5,91, 2,4,11,4,1,59, 2,4,11,5,1,59, 2,4,10,2,6,91, 2,4,9,2,7,91, + 2,4,8,2,8,91, 2,4,7,2,9,91, 2,4,6,2,10,91, 2,4,5,2,11,91, 2,4,4,2,12,91, 2,4,3,2,13,91, 2,4,3,4,1,59, 2,4,2,2,14,91, + 2,4,2,4,1,59, 2,4,2,6,12,75, 2,3,10,2,6,92, 2,3,10,5,12,76, 2,3,9,2,7,92, 2,3,8,2,8,92, 2,3,7,2,9,92, 2,3,6,2,10,92, + 2,3,5,2,11,92, 2,3,4,2,12,92, 2,3,4,6,12,76, 2,2,11,2,5,93, 2,2,11,3,5,93, 2,2,11,4,12,77, 2,2,11,5,12,77, 2,2,10,2,6,93, + 2,2,10,4,12,77, 2,2,9,2,7,93, 2,2,9,4,12,77, 2,2,8,2,8,93, 2,2,8,4,12,77, 2,2,7,2,9,93, 2,2,7,4,12,77, 2,2,6,2,10,93, + 2,2,6,4,12,77, 2,2,5,2,11,93, 2,2,5,4,12,77, 2,2,4,2,12,93, 2,2,4,4,12,77, 2,2,3,2,13,93, 2,2,3,3,13,93, 2,2,3,4,12,77, + 2,2,3,6,12,77, 3,13,12,2,4,82, 3,13,12,3,4,82, 3,13,12,5,11,66, 3,13,11,2,5,82, 3,13,11,3,5,82, 3,13,10,2,6,82, 3,13,10,3,6,82, + 3,13,9,2,7,82, 3,13,9,3,7,82, 3,13,8,2,8,82, 3,13,8,3,8,82, 3,13,7,2,9,82, 3,13,7,3,9,82, 3,13,6,2,10,82, 3,13,6,3,10,82, + 3,13,5,2,11,82, 3,13,5,3,11,82, 3,13,5,6,11,66, 3,12,13,3,3,83, 3,12,13,5,11,67, 3,12,4,3,12,83, 3,12,4,6,11,67, 3,11,14,3,2,84, + 3,11,14,5,11,68, 3,11,3,3,13,84, 3,11,3,6,11,68, 3,10,14,4,2,53, 3,10,14,5,2,53, 3,10,3,6,11,69, 3,9,13,5,2,54, 3,9,2,3,14,86, + 3,9,2,6,11,70, 3,8,13,5,2,55, 3,8,1,3,15,87, 3,8,1,6,11,71, 3,7,13,5,2,56, 3,7,1,6,11,72, 3,6,13,4,2,57, 3,6,13,5,2,57, + 3,6,1,6,11,73, 3,5,12,4,2,58, 3,5,12,5,2,58, 3,5,1,4,2,58, 3,5,1,6,11,74, 3,4,11,4,2,59, 3,4,11,5,2,59, 3,4,3,4,2,59, + 3,4,2,4,2,59, 3,4,2,6,11,75, 3,3,10,5,11,76, 3,3,4,6,11,76, 3,2,11,3,5,93, 3,2,11,5,11,77, 3,2,3,3,13,93, 3,2,3,6,11,77, + 3,1,11,2,5,94, 3,1,11,4,11,78, 3,1,11,5,11,78, 3,1,10,2,6,94, 3,1,10,4,11,78, 3,1,9,2,7,94, 3,1,9,4,11,78, 3,1,8,2,8,94, + 3,1,8,4,11,78, 3,1,7,2,9,94, 3,1,7,4,11,78, 3,1,6,2,10,94, 3,1,6,4,11,78, 3,1,5,2,11,94, 3,1,5,4,11,78, 3,1,4,2,12,94, + 3,1,4,4,11,78, 3,1,3,2,13,94, 3,1,3,4,11,78, 3,1,3,6,11,78, 4,14,10,2,6,81, 4,14,10,3,6,81, 4,14,10,5,10,65, 4,14,9,2,7,81, + 4,14,9,3,7,81, 4,14,8,2,8,81, 4,14,8,3,8,81, 4,14,7,2,9,81, 4,14,7,3,9,81, 4,14,7,6,10,65, 4,13,12,3,4,82, 4,13,12,5,10,66, + 4,13,11,3,5,82, 4,13,6,3,10,82, 4,13,5,3,11,82, 4,13,5,6,10,66, 4,12,13,3,3,83, 4,12,13,5,3,51, 4,12,4,3,12,83, 4,12,4,6,10,67, + 4,11,14,3,2,84, 4,11,14,5,3,52, 4,11,3,3,13,84, 4,11,3,6,10,68, 4,10,14,4,3,53, 4,10,14,5,3,53, 4,10,3,6,10,69, 4,9,13,5,3,54, + 4,9,2,3,14,86, 4,9,2,6,10,70, 4,8,13,5,3,55, 4,8,1,3,15,87, 4,8,1,6,10,71, 4,7,13,5,3,56, 4,7,1,6,10,72, 4,6,13,4,3,57, + 4,6,13,5,3,57, 4,6,1,6,10,73, 4,5,12,4,3,58, 4,5,12,5,3,58, 4,5,1,4,3,58, 4,5,1,6,10,74, 4,4,11,4,3,59, 4,4,11,5,3,59, + 4,4,3,4,3,59, 4,4,2,4,3,59, 4,4,2,6,10,75, 4,3,10,5,3,60, 4,3,4,6,10,76, 4,2,11,3,5,93, 4,2,11,5,3,61, 4,2,3,3,13,93, + 4,2,3,6,10,77, 4,1,11,4,10,78, 4,1,11,5,10,78, 4,1,10,4,10,78, 4,1,9,4,10,78, 4,1,8,4,10,78, 4,1,7,4,10,78, 4,1,6,4,10,78, + 4,1,5,4,10,78, 4,1,4,4,10,78, 4,1,3,4,10,78, 4,1,3,6,10,78, 5,14,10,3,6,81, 5,14,10,5,9,65, 5,14,9,3,7,81, 5,14,8,3,8,81, + 5,14,7,3,9,81, 5,14,7,6,9,65, 5,13,12,3,4,82, 5,13,12,5,4,50, 5,13,11,3,5,82, 5,13,6,3,10,82, 5,13,5,3,11,82, 5,13,5,6,9,66, + 5,12,13,3,3,83, 5,12,13,5,4,51, 5,12,4,3,12,83, 5,12,4,6,9,67, 5,11,14,3,2,84, 5,11,14,5,4,52, 5,11,3,3,13,84, 5,11,3,6,9,68, + 5,10,14,4,4,53, 5,10,14,5,4,53, 5,10,3,6,9,69, 5,9,13,5,4,54, 5,9,2,3,14,86, 5,9,2,6,9,70, 5,8,13,5,4,55, 5,8,1,3,15,87, + 5,8,1,6,9,71, 5,7,13,5,4,56, 5,7,1,6,9,72, 5,6,13,4,4,57, 5,6,13,5,4,57, 5,6,1,6,9,73, 5,5,12,4,4,58, 5,5,12,5,4,58, + 5,5,1,4,4,58, 5,5,1,6,9,74, 5,4,11,4,4,59, 5,4,11,5,4,59, 5,4,3,4,4,59, 5,4,2,4,4,59, 5,4,2,6,9,75, 5,3,10,5,4,60, + 5,3,4,6,9,76, 5,2,11,3,5,93, 5,2,11,5,4,61, 5,2,3,3,13,93, 5,2,3,6,9,77, 5,1,11,4,4,62, 5,1,11,5,4,62, 5,1,3,4,4,62, + 5,1,3,6,9,78, 5,0,10,2,6,95, 5,0,10,5,9,79, 5,0,9,2,7,95, 5,0,8,2,8,95, 5,0,7,2,9,95, 5,0,6,2,10,95, 5,0,5,2,11,95, + 5,0,4,2,12,95, 5,0,4,6,9,79, 6,14,10,3,6,81, 6,14,10,5,5,49, 6,14,9,3,7,81, 6,14,8,3,8,81, 6,14,7,3,9,81, 6,14,7,6,8,65, + 6,13,12,3,4,82, 6,13,12,5,5,50, 6,13,11,3,5,82, 6,13,6,3,10,82, 6,13,5,3,11,82, 6,13,5,6,8,66, 6,12,13,3,3,83, 6,12,13,5,5,51, + 6,12,4,3,12,83, 6,12,4,6,8,67, 6,11,14,3,2,84, 6,11,14,5,5,52, 6,11,3,3,13,84, 6,11,3,6,8,68, 6,10,14,4,5,53, 6,10,14,5,5,53, + 6,10,3,6,8,69, 6,9,13,5,5,54, 6,9,2,3,14,86, 6,9,2,6,8,70, 6,8,13,5,5,55, 6,8,1,3,15,87, 6,8,1,6,8,71, 6,7,13,5,5,56, + 6,7,1,6,8,72, 6,6,13,4,5,57, 6,6,13,5,5,57, 6,6,1,6,8,73, 6,5,12,4,5,58, 6,5,12,5,5,58, 6,5,1,4,5,58, 6,5,1,6,8,74, + 6,4,11,4,5,59, 6,4,11,5,5,59, 6,4,3,4,5,59, 6,4,2,4,5,59, 6,4,2,6,8,75, 6,3,10,5,5,60, 6,3,4,6,8,76, 6,2,11,3,5,93, + 6,2,11,5,5,61, 6,2,3,3,13,93, 6,2,3,6,8,77, 6,1,11,4,5,62, 6,1,11,5,5,62, 6,1,3,4,5,62, 6,1,3,6,8,78, 6,0,10,5,5,63, + 6,0,4,6,8,79, 7,14,10,3,6,81, 7,14,10,5,6,49, 7,14,9,3,7,81, 7,14,8,3,8,81, 7,14,7,3,9,81, 7,14,7,6,7,65, 7,13,12,3,4,82, + 7,13,12,5,6,50, 7,13,11,3,5,82, 7,13,6,3,10,82, 7,13,5,3,11,82, 7,13,5,6,7,66, 7,12,13,3,3,83, 7,12,13,5,6,51, 7,12,4,3,12,83, + 7,12,4,6,7,67, 7,11,14,3,2,84, 7,11,14,5,6,52, 7,11,3,3,13,84, 7,11,3,6,7,68, 7,10,14,4,6,53, 7,10,14,5,6,53, 7,10,3,6,7,69, + 7,9,13,5,6,54, 7,9,2,3,14,86, 7,9,2,6,7,70, 7,8,13,5,6,55, 7,8,1,3,15,87, 7,8,1,6,7,71, 7,7,13,5,6,56, 7,7,1,6,7,72, + 7,6,13,4,6,57, 7,6,13,5,6,57, 7,6,1,6,7,73, 7,5,12,4,6,58, 7,5,12,5,6,58, 7,5,1,4,6,58, 7,5,1,6,7,74, 7,4,11,4,6,59, + 7,4,11,5,6,59, 7,4,3,4,6,59, 7,4,2,4,6,59, 7,4,2,6,7,75, 7,3,10,5,6,60, 7,3,4,6,7,76, 7,2,11,3,5,93, 7,2,11,5,6,61, + 7,2,3,3,13,93, 7,2,3,6,7,77, 7,1,11,4,6,62, 7,1,11,5,6,62, 7,1,3,4,6,62, 7,1,3,6,7,78, 7,0,10,5,6,63, 7,0,4,6,7,79, + 8,14,10,3,6,81, 8,14,10,5,7,49, 8,14,9,3,7,81, 8,14,8,3,8,81, 8,14,7,3,9,81, 8,14,7,6,6,65, 8,13,12,3,4,82, 8,13,12,5,7,50, + 8,13,11,3,5,82, 8,13,6,3,10,82, 8,13,5,3,11,82, 8,13,5,6,6,66, 8,12,13,3,3,83, 8,12,13,5,7,51, 8,12,4,3,12,83, 8,12,4,6,6,67, + 8,11,14,3,2,84, 8,11,14,5,7,52, 8,11,3,3,13,84, 8,11,3,6,6,68, 8,10,14,4,7,53, 8,10,14,5,7,53, 8,10,3,6,6,69, 8,9,13,5,7,54, + 8,9,2,3,14,86, 8,9,2,6,6,70, 8,8,13,5,7,55, 8,8,1,3,15,87, 8,8,1,6,6,71, 8,7,13,5,7,56, 8,7,1,6,6,72, 8,6,13,4,7,57, + 8,6,13,5,7,57, 8,6,1,6,6,73, 8,5,12,4,7,58, 8,5,12,5,7,58, 8,5,1,4,7,58, 8,5,1,6,6,74, 8,4,11,4,7,59, 8,4,11,5,7,59, + 8,4,3,4,7,59, 8,4,2,4,7,59, 8,4,2,6,6,75, 8,3,10,5,7,60, 8,3,4,6,6,76, 8,2,11,3,5,93, 8,2,11,5,7,61, 8,2,3,3,13,93, + 8,2,3,6,6,77, 8,1,11,4,7,62, 8,1,11,5,7,62, 8,1,3,4,7,62, 8,1,3,6,6,78, 8,0,10,5,7,63, 8,0,4,6,6,79, 9,14,10,3,6,81, + 9,14,10,5,8,49, 9,14,9,3,7,81, 9,14,8,3,8,81, 9,14,7,3,9,81, 9,14,7,6,5,65, 9,13,12,3,4,82, 9,13,12,5,8,50, 9,13,11,3,5,82, + 9,13,6,3,10,82, 9,13,5,3,11,82, 9,13,5,6,5,66, 9,12,13,3,3,83, 9,12,13,5,8,51, 9,12,4,3,12,83, 9,12,4,6,5,67, 9,11,14,3,2,84, + 9,11,14,5,8,52, 9,11,3,3,13,84, 9,11,3,6,5,68, 9,10,14,4,8,53, 9,10,14,5,8,53, 9,10,3,6,5,69, 9,9,13,5,8,54, 9,9,2,3,14,86, + 9,9,2,6,5,70, 9,8,13,5,8,55, 9,8,1,3,15,87, 9,8,1,6,5,71, 9,7,13,5,8,56, 9,7,1,6,5,72, 9,6,13,4,8,57, 9,6,13,5,8,57, + 9,6,1,6,5,73, 9,5,12,4,8,58, 9,5,12,5,8,58, 9,5,1,4,8,58, 9,5,1,6,5,74, 9,4,11,4,8,59, 9,4,11,5,8,59, 9,4,3,4,8,59, + 9,4,2,4,8,59, 9,4,2,6,5,75, 9,3,10,5,8,60, 9,3,4,6,5,76, 9,2,11,3,5,93, 9,2,11,5,8,61, 9,2,3,3,13,93, 9,2,3,6,5,77, + 9,1,11,4,8,62, 9,1,11,5,8,62, 9,1,3,4,8,62, 9,1,3,6,5,78, 9,0,10,5,8,63, 9,0,4,6,5,79, 10,14,10,3,6,81, 10,14,10,5,9,49, + 10,14,9,3,7,81, 10,14,8,3,8,81, 10,14,7,3,9,81, 10,14,7,6,9,49, 10,13,12,3,4,82, 10,13,12,5,9,50, 10,13,11,3,5,82, 10,13,6,3,10,82, + 10,13,5,3,11,82, 10,13,5,6,4,66, 10,12,13,3,3,83, 10,12,13,5,9,51, 10,12,4,3,12,83, 10,12,4,6,4,67, 10,11,14,3,2,84, 10,11,14,5,9,52, + 10,11,3,3,13,84, 10,11,3,6,4,68, 10,10,14,4,9,53, 10,10,14,5,9,53, 10,10,3,6,4,69, 10,9,13,5,9,54, 10,9,2,3,14,86, 10,9,2,6,4,70, + 10,8,13,5,9,55, 10,8,1,3,15,87, 10,8,1,6,4,71, 10,7,13,5,9,56, 10,7,1,6,4,72, 10,6,13,4,9,57, 10,6,13,5,9,57, 10,6,1,6,4,73, + 10,5,12,4,9,58, 10,5,12,5,9,58, 10,5,1,4,9,58, 10,5,1,6,4,74, 10,4,11,4,9,59, 10,4,11,5,9,59, 10,4,3,4,9,59, 10,4,2,4,9,59, + 10,4,2,6,4,75, 10,3,10,5,9,60, 10,3,4,6,4,76, 10,2,11,3,5,93, 10,2,11,5,9,61, 10,2,3,3,13,93, 10,2,3,6,4,77, 10,1,11,4,9,62, + 10,1,11,5,9,62, 10,1,3,4,9,62, 10,1,3,6,4,78, 10,0,10,5,9,63, 10,0,4,6,4,79, 11,14,10,1,6,81, 11,14,10,3,6,81, 11,14,10,5,10,49, + 11,14,9,1,7,81, 11,14,9,3,7,81, 11,14,8,1,8,81, 11,14,8,3,8,81, 11,14,7,1,9,81, 11,14,7,3,9,81, 11,14,7,6,10,49, 11,13,12,3,4,82, + 11,13,12,5,10,50, 11,13,11,3,5,82, 11,13,6,3,10,82, 11,13,5,3,11,82, 11,13,5,6,10,50, 11,12,13,3,3,83, 11,12,13,5,10,51, 11,12,4,3,12,83, + 11,12,4,6,3,67, 11,11,14,3,2,84, 11,11,14,5,10,52, 11,11,3,3,13,84, 11,11,3,6,3,68, 11,10,14,4,10,53, 11,10,14,5,10,53, 11,10,3,6,3,69, + 11,9,13,5,10,54, 11,9,2,3,14,86, 11,9,2,6,3,70, 11,8,13,5,10,55, 11,8,1,3,15,87, 11,8,1,6,3,71, 11,7,13,5,10,56, 11,7,1,6,3,72, + 11,6,13,4,10,57, 11,6,13,5,10,57, 11,6,1,6,3,73, 11,5,12,4,10,58, 11,5,12,5,10,58, 11,5,1,4,10,58, 11,5,1,6,3,74, 11,4,11,4,10,59, + 11,4,11,5,10,59, 11,4,3,4,10,59, 11,4,2,4,10,59, 11,4,2,6,3,75, 11,3,10,5,10,60, 11,3,4,6,3,76, 11,2,11,3,5,93, 11,2,11,5,10,61, + 11,2,3,3,13,93, 11,2,3,6,3,77, 11,1,11,4,10,62, 11,1,11,5,10,62, 11,1,3,4,10,62, 11,1,3,6,3,78, 11,0,10,1,6,95, 11,0,10,5,3,79, + 11,0,9,1,7,95, 11,0,8,1,8,95, 11,0,7,1,9,95, 11,0,6,1,10,95, 11,0,5,1,11,95, 11,0,4,1,12,95, 11,0,4,6,3,79, 12,13,12,1,4,82, + 12,13,12,3,4,82, 12,13,12,5,11,50, 12,13,11,1,5,82, 12,13,11,3,5,82, 12,13,10,1,6,82, 12,13,10,3,6,82, 12,13,9,1,7,82, 12,13,9,3,7,82, + 12,13,8,1,8,82, 12,13,8,3,8,82, 12,13,7,1,9,82, 12,13,7,3,9,82, 12,13,6,1,10,82, 12,13,6,3,10,82, 12,13,5,1,11,82, 12,13,5,3,11,82, + 12,13,5,6,11,50, 12,12,13,3,3,83, 12,12,13,5,11,51, 12,12,4,3,12,83, 12,12,4,6,11,51, 12,11,14,3,2,84, 12,11,14,5,11,52, 12,11,3,3,13,84, + 12,11,3,6,11,52, 12,10,14,4,11,53, 12,10,14,5,11,53, 12,10,3,6,2,69, 12,9,13,5,11,54, 12,9,2,3,14,86, 12,9,2,6,2,70, 12,8,13,5,11,55, + 12,8,1,3,15,87, 12,8,1,6,2,71, 12,7,13,5,11,56, 12,7,1,6,2,72, 12,6,13,4,11,57, 12,6,13,5,11,57, 12,6,1,6,2,73, 12,5,12,4,11,58, + 12,5,12,5,11,58, 12,5,1,4,11,58, 12,5,1,6,2,74, 12,4,11,4,11,59, 12,4,11,5,11,59, 12,4,3,4,11,59, 12,4,2,4,11,59, 12,4,2,6,2,75, + 12,3,10,5,11,60, 12,3,4,6,2,76, 12,2,11,3,5,93, 12,2,11,5,11,61, 12,2,3,3,13,93, 12,2,3,6,2,77, 12,1,11,1,5,94, 12,1,11,4,11,62, + 12,1,11,5,11,62, 12,1,10,1,6,94, 12,1,10,4,11,62, 12,1,9,1,7,94, 12,1,9,4,11,62, 12,1,8,1,8,94, 12,1,8,4,11,62, 12,1,7,1,9,94, + 12,1,7,4,11,62, 12,1,6,1,10,94, 12,1,6,4,11,62, 12,1,5,1,11,94, 12,1,5,4,11,62, 12,1,4,1,12,94, 12,1,4,4,11,62, 12,1,3,1,13,94, + 12,1,3,4,11,62, 12,1,3,6,2,78, 13,12,13,1,3,83, 13,12,13,3,3,83, 13,12,13,5,12,51, 13,12,12,1,4,83, 13,12,12,3,4,83, 13,12,11,1,5,83, + 13,12,11,3,5,83, 13,12,10,1,6,83, 13,12,10,3,6,83, 13,12,9,1,7,83, 13,12,9,3,7,83, 13,12,8,1,8,83, 13,12,8,3,8,83, 13,12,7,1,9,83, + 13,12,7,3,9,83, 13,12,6,1,10,83, 13,12,6,3,10,83, 13,12,5,1,11,83, 13,12,5,3,11,83, 13,12,4,1,12,83, 13,12,4,3,12,83, 13,12,4,6,12,51, + 13,11,14,1,2,84, 13,11,14,3,2,84, 13,11,14,5,12,52, 13,11,13,1,3,84, 13,11,12,1,4,84, 13,11,11,1,5,84, 13,11,10,1,6,84, 13,11,9,1,7,84, + 13,11,8,1,8,84, 13,11,7,1,9,84, 13,11,6,1,10,84, 13,11,5,1,11,84, 13,11,4,1,12,84, 13,11,3,1,13,84, 13,11,3,3,13,84, 13,11,3,6,12,52, + 13,10,14,4,12,53, 13,10,14,5,12,53, 13,10,3,6,12,53, 13,9,13,5,12,54, 13,9,2,3,14,86, 13,9,2,6,12,54, 13,8,13,5,12,55, 13,8,1,3,15,87, + 13,8,1,6,12,55, 13,7,13,5,12,56, 13,7,1,6,1,72, 13,6,13,4,12,57, 13,6,13,5,12,57, 13,6,1,6,1,73, 13,5,12,4,12,58, 13,5,12,5,12,58, + 13,5,1,4,12,58, 13,5,1,6,1,74, 13,4,11,1,5,91, 13,4,11,4,12,59, 13,4,11,5,12,59, 13,4,10,1,6,91, 13,4,9,1,7,91, 13,4,8,1,8,91, + 13,4,7,1,9,91, 13,4,6,1,10,91, 13,4,5,1,11,91, 13,4,4,1,12,91, 13,4,3,1,13,91, 13,4,3,4,12,59, 13,4,2,1,14,91, 13,4,2,4,12,59, + 13,4,2,6,12,59, 13,3,10,1,6,92, 13,3,10,5,12,60, 13,3,9,1,7,92, 13,3,8,1,8,92, 13,3,7,1,9,92, 13,3,6,1,10,92, 13,3,5,1,11,92, + 13,3,4,1,12,92, 13,3,4,6,1,76, 13,2,11,1,5,93, 13,2,11,3,5,93, 13,2,11,4,12,61, 13,2,11,5,12,61, 13,2,10,1,6,93, 13,2,10,4,12,61, + 13,2,9,1,7,93, 13,2,9,4,12,61, 13,2,8,1,8,93, 13,2,8,4,12,61, 13,2,7,1,9,93, 13,2,7,4,12,61, 13,2,6,1,10,93, 13,2,6,4,12,61, + 13,2,5,1,11,93, 13,2,5,4,12,61, 13,2,4,1,12,93, 13,2,4,4,12,61, 13,2,3,1,13,93, 13,2,3,3,13,93, 13,2,3,4,12,61, 13,2,3,6,1,77, + 14,10,14,1,2,85, 14,10,14,3,2,85, 14,10,14,4,13,53, 14,10,14,5,13,53, 14,10,13,1,3,85, 14,10,13,3,3,85, 14,10,12,1,4,85, 14,10,12,3,4,85, + 14,10,11,1,5,85, 14,10,11,3,5,85, 14,10,10,1,6,85, 14,10,10,3,6,85, 14,10,9,1,7,85, 14,10,9,3,7,85, 14,10,8,1,8,85, 14,10,8,3,8,85, + 14,10,7,1,9,85, 14,10,7,3,9,85, 14,10,6,1,10,85, 14,10,6,3,10,85, 14,10,5,1,11,85, 14,10,5,3,11,85, 14,10,4,1,12,85, 14,10,4,3,12,85, + 14,10,3,1,13,85, 14,10,3,3,13,85, 14,10,3,6,13,53, 14,9,13,1,3,86, 14,9,13,5,13,54, 14,9,12,1,4,86, 14,9,11,1,5,86, 14,9,10,1,6,86, + 14,9,9,1,7,86, 14,9,8,1,8,86, 14,9,7,1,9,86, 14,9,6,1,10,86, 14,9,5,1,11,86, 14,9,4,1,12,86, 14,9,3,1,13,86, 14,9,2,1,14,86, + 14,9,2,3,14,86, 14,9,2,6,13,54, 14,8,13,1,3,87, 14,8,13,5,13,55, 14,8,12,1,4,87, 14,8,11,1,5,87, 14,8,10,1,6,87, 14,8,9,1,7,87, + 14,8,8,1,8,87, 14,8,7,1,9,87, 14,8,6,1,10,87, 14,8,5,1,11,87, 14,8,4,1,12,87, 14,8,3,1,13,87, 14,8,2,1,14,87, 14,8,1,1,15,87, + 14,8,1,3,15,87, 14,8,1,6,13,55, 14,7,13,1,3,88, 14,7,13,5,13,56, 14,7,12,1,4,88, 14,7,11,1,5,88, 14,7,10,1,6,88, 14,7,9,1,7,88, + 14,7,8,1,8,88, 14,7,7,1,9,88, 14,7,6,1,10,88, 14,7,5,1,11,88, 14,7,4,1,12,88, 14,7,3,1,13,88, 14,7,2,1,14,88, 14,7,1,1,15,88, + 14,7,1,6,13,56, 14,6,13,1,3,89, 14,6,13,4,13,57, 14,6,13,5,13,57, 14,6,12,1,4,89, 14,6,11,1,5,89, 14,6,10,1,6,89, 14,6,9,1,7,89, + 14,6,8,1,8,89, 14,6,7,1,9,89, 14,6,6,1,10,89, 14,6,5,1,11,89, 14,6,4,1,12,89, 14,6,3,1,13,89, 14,6,2,1,14,89, 14,6,1,1,15,89, + 14,6,1,6,13,57, 14,5,12,1,4,90, 14,5,12,4,13,58, 14,5,12,5,13,58, 14,5,11,1,5,90, 14,5,11,4,13,58, 14,5,10,1,6,90, 14,5,10,4,13,58, + 14,5,9,1,7,90, 14,5,9,4,13,58, 14,5,8,1,8,90, 14,5,8,4,13,58, 14,5,7,1,9,90, 14,5,7,4,13,58, 14,5,6,1,10,90, 14,5,6,4,13,58, + 14,5,5,1,11,90, 14,5,5,4,13,58, 14,5,4,1,12,90, 14,5,4,4,13,58, 14,5,3,1,13,90, 14,5,3,4,13,58, 14,5,2,1,14,90, 14,5,2,4,13,58, + 14,5,1,1,15,90, 14,5,1,4,13,58, 14,5,1,6,13,58, + }, + }, + }, +} diff --git a/assets/voxels/gramps.lua b/assets/voxels/gramps.lua new file mode 100644 index 0000000..4db1af5 --- /dev/null +++ b/assets/voxels/gramps.lua @@ -0,0 +1,161 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "gramps" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "gramps", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1878, + count = 1086, + faces = { + 1,10,13,2,2,37, 1,10,13,3,2,37, 1,10,13,5,1,5, 1,10,12,2,3,37, 1,10,12,3,3,37, 1,10,11,2,4,37, 1,10,11,3,4,37, 1,10,10,2,5,37, + 1,10,10,3,5,37, 1,10,9,2,6,37, 1,10,9,3,6,37, 1,10,8,2,7,37, 1,10,8,3,7,37, 1,10,7,2,8,37, 1,10,7,3,8,37, 1,10,6,2,9,37, + 1,10,6,3,9,37, 1,10,5,2,10,37, 1,10,5,3,10,37, 1,10,4,2,11,37, 1,10,4,3,11,37, 1,10,3,2,12,37, 1,10,3,3,12,37, 1,10,2,2,13,37, + 1,10,2,3,13,37, 1,10,2,6,14,21, 1,9,13,2,2,38, 1,9,13,5,1,6, 1,9,12,2,3,38, 1,9,11,2,4,38, 1,9,10,2,5,38, 1,9,9,2,6,38, + 1,9,8,2,7,38, 1,9,7,2,8,38, 1,9,6,2,9,38, 1,9,5,2,10,38, 1,9,4,2,11,38, 1,9,3,2,12,38, 1,9,2,2,13,38, 1,9,2,6,14,22, + 1,8,13,2,2,39, 1,8,13,4,1,7, 1,8,13,5,1,7, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, + 1,8,10,4,1,7, 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, + 1,8,6,4,1,7, 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,2,2,13,39, + 1,8,2,4,1,7, 1,8,2,6,14,23, 1,6,12,2,3,41, 1,6,12,3,3,41, 1,6,12,5,14,25, 1,6,11,2,4,41, 1,6,11,3,4,41, 1,6,10,2,5,41, + 1,6,10,3,5,41, 1,6,9,2,6,41, 1,6,9,3,6,41, 1,6,8,2,7,41, 1,6,8,3,7,41, 1,6,7,2,8,41, 1,6,7,3,8,41, 1,6,6,2,9,41, + 1,6,6,3,9,41, 1,6,5,2,10,41, 1,6,5,3,10,41, 1,6,4,2,11,41, 1,6,4,3,11,41, 1,6,3,2,12,41, 1,6,3,3,12,41, 1,6,3,6,14,25, + 1,5,12,2,3,42, 1,5,12,4,1,10, 1,5,12,5,1,10, 1,5,11,2,4,42, 1,5,10,2,5,42, 1,5,9,2,6,42, 1,5,8,2,7,42, 1,5,7,2,8,42, + 1,5,6,2,9,42, 1,5,5,2,10,42, 1,5,4,2,11,42, 1,5,3,2,12,42, 1,5,3,6,14,26, 1,4,11,2,4,43, 1,4,11,4,1,11, 1,4,11,5,1,11, + 1,4,10,2,5,43, 1,4,10,4,1,11, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, + 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,3,2,12,43, 1,4,3,4,1,11, + 1,4,2,2,13,43, 1,4,2,3,13,43, 1,4,2,4,1,11, 1,4,2,6,14,27, 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,13,5,2,4, 2,11,12,2,3,36, + 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, + 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, + 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,13,5,2,5, 2,10,2,6,13,21, + 2,9,13,5,2,6, 2,9,2,6,13,22, 2,8,13,5,2,7, 2,8,2,6,13,23, 2,7,13,2,2,40, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,12,2,3,40, + 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, + 2,7,3,2,12,40, 2,7,2,2,13,40, 2,7,2,4,2,8, 2,7,2,6,13,24, 2,6,12,5,2,9, 2,6,3,6,13,25, 2,5,12,4,2,10, 2,5,12,5,2,10, + 2,5,3,6,13,26, 2,4,11,4,2,11, 2,4,11,5,2,11, 2,4,2,3,13,43, 2,4,2,6,13,27, 2,3,10,2,5,44, 2,3,10,4,2,12, 2,3,10,5,2,12, + 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, + 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, 2,3,3,2,12,44, 2,3,3,4,2,12, 2,3,2,2,13,44, 2,3,2,4,2,12, + 2,3,2,6,13,28, 2,1,11,2,4,46, 2,1,11,3,4,46, 2,1,11,4,2,14, 2,1,11,5,2,14, 2,1,10,2,5,46, 2,1,10,3,5,46, 2,1,9,2,6,46, + 2,1,9,3,6,46, 2,1,8,2,7,46, 2,1,8,3,7,46, 2,1,7,2,8,46, 2,1,7,3,8,46, 2,1,6,2,9,46, 2,1,6,3,9,46, 2,1,5,2,10,46, + 2,1,5,3,10,46, 2,1,4,2,11,46, 2,1,4,3,11,46, 2,1,3,2,12,46, 2,1,3,3,12,46, 2,1,3,4,2,14, 2,1,3,6,13,30, 2,0,10,2,5,47, + 2,0,10,5,2,15, 2,0,9,2,6,47, 2,0,8,2,7,47, 2,0,7,2,8,47, 2,0,6,2,9,47, 2,0,5,2,10,47, 2,0,4,2,11,47, 2,0,4,6,13,31, + 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, 3,13,9,2,6,34, + 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, 3,13,5,2,10,34, + 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,12,2,3,35, 3,12,12,5,3,3, + 3,12,11,2,4,35, 3,12,10,2,5,35, 3,12,9,2,6,35, 3,12,8,2,7,35, 3,12,7,2,8,35, 3,12,6,2,9,35, 3,12,5,2,10,35, 3,12,4,2,11,35, + 3,12,3,2,12,35, 3,12,3,6,12,19, 3,11,13,3,2,36, 3,11,13,5,3,4, 3,11,2,3,13,36, 3,11,2,6,12,20, 3,10,13,5,3,5, 3,10,2,6,12,21, + 3,9,13,5,3,6, 3,9,2,6,12,22, 3,8,13,5,3,7, 3,8,2,6,12,23, 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,2,4,3,8, 3,7,2,6,12,24, + 3,6,12,5,3,9, 3,6,3,6,12,25, 3,5,12,4,3,10, 3,5,12,5,3,10, 3,5,3,6,12,26, 3,4,11,4,3,11, 3,4,11,5,3,11, 3,4,2,3,13,43, + 3,4,2,6,12,27, 3,3,10,5,3,12, 3,3,2,6,12,28, 3,2,11,2,4,45, 3,2,11,3,4,45, 3,2,11,5,3,13, 3,2,10,2,5,45, 3,2,9,2,6,45, + 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,4,2,11,45, 3,2,3,2,12,45, 3,2,2,2,13,45, 3,2,2,4,3,13, + 3,2,2,6,12,29, 3,1,11,4,3,14, 3,1,11,5,3,14, 3,1,3,4,3,14, 3,1,3,6,12,30, 3,0,10,5,3,15, 3,0,4,6,12,31, 4,14,11,2,4,33, + 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, + 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, + 4,14,4,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,12,5,4,3, 4,12,3,6,11,19, 4,11,13,3,2,36, + 4,11,13,5,4,4, 4,11,2,3,13,36, 4,11,2,6,11,20, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,13,5,4,6, 4,9,2,6,11,22, 4,8,13,5,4,7, + 4,8,2,6,11,23, 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,2,4,4,8, 4,7,2,6,11,24, 4,6,12,5,4,9, 4,6,3,6,11,25, 4,5,12,4,4,10, + 4,5,12,5,4,10, 4,5,3,6,11,26, 4,4,11,4,4,11, 4,4,11,5,4,11, 4,4,2,3,13,43, 4,4,2,6,11,27, 4,3,10,5,4,12, 4,3,2,6,11,28, + 4,2,11,3,4,45, 4,2,11,5,4,13, 4,2,2,4,4,13, 4,2,2,6,11,29, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,3,4,4,14, 4,1,3,6,11,30, + 4,0,10,5,4,15, 4,0,4,6,11,31, 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,10,3,5,33, 5,14,9,3,6,33, 5,14,8,3,7,33, 5,14,7,3,8,33, + 5,14,6,3,9,33, 5,14,5,3,10,33, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, + 5,12,12,5,5,3, 5,12,3,6,10,19, 5,11,13,3,2,36, 5,11,13,5,5,4, 5,11,2,3,13,36, 5,11,2,6,10,20, 5,10,13,5,5,5, 5,10,2,6,10,21, + 5,9,13,5,5,6, 5,9,2,6,10,22, 5,8,13,5,5,7, 5,8,2,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,2,4,5,8, 5,7,2,6,10,24, + 5,6,12,5,5,9, 5,6,3,6,10,25, 5,5,12,4,5,10, 5,5,12,5,5,10, 5,5,3,6,10,26, 5,4,11,4,5,11, 5,4,11,5,5,11, 5,4,2,3,13,43, + 5,4,2,6,10,27, 5,3,10,5,5,12, 5,3,2,6,10,28, 5,2,11,3,4,45, 5,2,11,5,5,13, 5,2,2,4,5,13, 5,2,2,6,10,29, 5,1,11,4,5,14, + 5,1,11,5,5,14, 5,1,3,4,5,14, 5,1,3,6,10,30, 5,0,10,5,5,15, 5,0,4,6,10,31, 6,15,9,2,6,32, 6,15,9,3,6,32, 6,15,9,5,6,0, + 6,15,8,2,7,32, 6,15,8,3,7,32, 6,15,7,2,8,32, 6,15,7,3,8,32, 6,15,6,2,9,32, 6,15,6,3,9,32, 6,15,6,6,9,16, 6,14,11,3,4,33, + 6,14,11,5,6,1, 6,14,10,3,5,33, 6,14,5,3,10,33, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, + 6,13,3,6,9,18, 6,12,12,5,6,3, 6,12,3,6,9,19, 6,11,13,3,2,36, 6,11,13,5,6,4, 6,11,2,3,13,36, 6,11,2,6,9,20, 6,10,13,5,6,5, + 6,10,2,6,9,21, 6,9,13,5,6,6, 6,9,2,6,9,22, 6,8,13,5,6,7, 6,8,2,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,2,4,6,8, + 6,7,2,6,9,24, 6,6,12,5,6,9, 6,6,3,6,9,25, 6,5,12,4,6,10, 6,5,12,5,6,10, 6,5,3,6,9,26, 6,4,11,4,6,11, 6,4,11,5,6,11, + 6,4,2,3,13,43, 6,4,2,6,9,27, 6,3,10,5,6,12, 6,3,2,6,9,28, 6,2,11,3,4,45, 6,2,11,5,6,13, 6,2,2,4,6,13, 6,2,2,6,9,29, + 6,1,11,4,6,14, 6,1,11,5,6,14, 6,1,3,4,6,14, 6,1,3,6,9,30, 6,0,10,1,5,47, 6,0,10,5,6,15, 6,0,9,1,6,47, 6,0,8,1,7,47, + 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,5,1,10,47, 6,0,4,1,11,47, 6,0,4,6,9,31, 7,15,9,3,6,32, 7,15,9,5,7,0, 7,15,8,3,7,32, + 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,6,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,10,3,5,33, 7,14,5,3,10,33, 7,14,4,3,11,33, + 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,12,5,7,3, 7,12,3,6,8,19, 7,11,13,3,2,36, + 7,11,13,5,7,4, 7,11,2,3,13,36, 7,11,2,6,8,20, 7,10,13,5,7,5, 7,10,2,6,8,21, 7,9,13,5,7,6, 7,9,2,6,8,22, 7,8,13,5,7,7, + 7,8,2,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,2,4,7,8, 7,7,2,6,8,24, 7,6,12,5,7,9, 7,6,3,6,8,25, 7,5,12,4,7,10, + 7,5,12,5,7,10, 7,5,3,6,8,26, 7,4,11,4,7,11, 7,4,11,5,7,11, 7,4,2,3,13,43, 7,4,2,6,8,27, 7,3,10,5,7,12, 7,3,2,6,8,28, + 7,2,11,3,4,45, 7,2,11,5,7,13, 7,2,2,4,7,13, 7,2,2,6,8,29, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, + 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,4,4,7,14, 7,1,3,4,7,14, 7,1,3,6,8,30, 8,15,9,3,6,32, + 8,15,9,5,8,0, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,10,3,5,33, + 8,14,5,3,10,33, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,12,5,8,3, + 8,12,3,6,7,19, 8,11,13,3,2,36, 8,11,13,5,8,4, 8,11,2,3,13,36, 8,11,2,6,7,20, 8,10,13,5,8,5, 8,10,2,6,7,21, 8,9,13,5,8,6, + 8,9,2,6,7,22, 8,8,13,5,8,7, 8,8,2,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,2,4,8,8, 8,7,2,6,7,24, 8,6,12,5,8,9, + 8,6,3,6,7,25, 8,5,12,4,8,10, 8,5,12,5,8,10, 8,5,3,6,7,26, 8,4,11,4,8,11, 8,4,11,5,8,11, 8,4,2,3,13,43, 8,4,2,6,7,27, + 8,3,10,5,8,12, 8,3,2,6,7,28, 8,2,11,3,4,45, 8,2,11,5,8,13, 8,2,2,4,8,13, 8,2,2,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, + 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,4,4,8,14, 8,1,3,4,8,14, + 8,1,3,6,7,30, 9,15,9,1,6,32, 9,15,9,3,6,32, 9,15,9,5,9,0, 9,15,8,1,7,32, 9,15,8,3,7,32, 9,15,7,1,8,32, 9,15,7,3,8,32, + 9,15,6,1,9,32, 9,15,6,3,9,32, 9,15,6,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,10,3,5,33, 9,14,5,3,10,33, 9,14,4,3,11,33, + 9,14,4,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,12,5,9,3, 9,12,3,6,6,19, 9,11,13,3,2,36, + 9,11,13,5,9,4, 9,11,2,3,13,36, 9,11,2,6,6,20, 9,10,13,5,9,5, 9,10,2,6,6,21, 9,9,13,5,9,6, 9,9,2,6,6,22, 9,8,13,5,9,7, + 9,8,2,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,2,4,9,8, 9,7,2,6,6,24, 9,6,12,5,9,9, 9,6,3,6,6,25, 9,5,12,4,9,10, + 9,5,12,5,9,10, 9,5,3,6,6,26, 9,4,11,4,9,11, 9,4,11,5,9,11, 9,4,2,3,13,43, 9,4,2,6,6,27, 9,3,10,5,9,12, 9,3,2,6,6,28, + 9,2,11,3,4,45, 9,2,11,5,9,13, 9,2,2,4,9,13, 9,2,2,6,6,29, 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,3,4,9,14, 9,1,3,6,6,30, + 9,0,10,2,5,47, 9,0,10,5,9,15, 9,0,9,2,6,47, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,5,2,10,47, 9,0,4,2,11,47, + 9,0,4,6,6,31, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,10,3,5,33, 10,14,9,3,6,33, 10,14,8,3,7,33, 10,14,7,3,8,33, 10,14,6,3,9,33, + 10,14,5,3,10,33, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, 10,13,12,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,12,5,10,3, + 10,12,3,6,5,19, 10,11,13,3,2,36, 10,11,13,5,10,4, 10,11,2,3,13,36, 10,11,2,6,5,20, 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,13,5,10,6, + 10,9,2,6,5,22, 10,8,13,5,10,7, 10,8,2,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,2,4,10,8, 10,7,2,6,5,24, 10,6,12,5,10,9, + 10,6,3,6,5,25, 10,5,12,4,10,10, 10,5,12,5,10,10, 10,5,3,6,5,26, 10,4,11,4,10,11, 10,4,11,5,10,11, 10,4,2,3,13,43, 10,4,2,6,5,27, + 10,3,10,5,10,12, 10,3,2,6,5,28, 10,2,11,3,4,45, 10,2,11,5,10,13, 10,2,2,4,10,13, 10,2,2,6,5,29, 10,1,11,4,10,14, 10,1,11,5,10,14, + 10,1,3,4,10,14, 10,1,3,6,5,30, 10,0,10,5,10,15, 10,0,4,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,10,1,5,33, + 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, + 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,12,3,3,34, 11,13,12,5,11,2, + 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,12,5,11,3, 11,12,3,6,4,19, 11,11,13,3,2,36, 11,11,13,5,11,4, 11,11,2,3,13,36, 11,11,2,6,4,20, + 11,10,13,5,11,5, 11,10,2,6,4,21, 11,9,13,5,11,6, 11,9,2,6,4,22, 11,8,13,5,11,7, 11,8,2,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, + 11,7,2,4,11,8, 11,7,2,6,4,24, 11,6,12,5,11,9, 11,6,3,6,4,25, 11,5,12,4,11,10, 11,5,12,5,11,10, 11,5,3,6,4,26, 11,4,11,4,11,11, + 11,4,11,5,11,11, 11,4,2,3,13,43, 11,4,2,6,4,27, 11,3,10,5,11,12, 11,3,2,6,4,28, 11,2,11,3,4,45, 11,2,11,5,11,13, 11,2,2,4,11,13, + 11,2,2,6,4,29, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,3,4,11,14, 11,1,3,6,4,30, 11,0,10,5,11,15, 11,0,4,6,4,31, 12,13,12,1,3,34, + 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, 12,13,9,3,6,34, + 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, 12,13,5,3,10,34, + 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,12,1,3,35, 12,12,12,5,12,3, 12,12,11,1,4,35, + 12,12,10,1,5,35, 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, 12,12,6,1,9,35, 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, + 12,12,3,6,3,19, 12,11,13,3,2,36, 12,11,13,5,12,4, 12,11,2,3,13,36, 12,11,2,6,3,20, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,13,5,12,6, + 12,9,2,6,3,22, 12,8,13,5,12,7, 12,8,2,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,2,4,12,8, 12,7,2,6,3,24, 12,6,12,5,12,9, + 12,6,3,6,3,25, 12,5,12,4,12,10, 12,5,12,5,12,10, 12,5,3,6,3,26, 12,4,11,4,12,11, 12,4,11,5,12,11, 12,4,2,3,13,43, 12,4,2,6,3,27, + 12,3,10,5,12,12, 12,3,2,6,3,28, 12,2,11,1,4,45, 12,2,11,3,4,45, 12,2,11,5,12,13, 12,2,10,1,5,45, 12,2,9,1,6,45, 12,2,8,1,7,45, + 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,4,1,11,45, 12,2,3,1,12,45, 12,2,2,1,13,45, 12,2,2,4,12,13, 12,2,2,6,3,29, + 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,3,4,12,14, 12,1,3,6,3,30, 12,0,10,5,12,15, 12,0,4,6,3,31, 13,11,13,1,2,36, 13,11,13,3,2,36, + 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, + 13,11,9,3,6,36, 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, + 13,11,5,3,10,36, 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, + 13,10,13,5,13,5, 13,10,2,6,2,21, 13,9,13,5,13,6, 13,9,2,6,2,22, 13,8,13,5,13,7, 13,8,2,6,2,23, 13,7,13,1,2,40, 13,7,13,4,13,8, + 13,7,13,5,13,8, 13,7,12,1,3,40, 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, + 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, 13,7,2,1,13,40, 13,7,2,4,13,8, 13,7,2,6,2,24, 13,6,12,5,13,9, 13,6,3,6,2,25, + 13,5,12,4,13,10, 13,5,12,5,13,10, 13,5,3,6,2,26, 13,4,11,4,13,11, 13,4,11,5,13,11, 13,4,2,3,13,43, 13,4,2,6,2,27, 13,3,10,1,5,44, + 13,3,10,4,13,12, 13,3,10,5,13,12, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, 13,3,7,4,13,12, + 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,3,1,12,44, 13,3,3,4,13,12, + 13,3,2,1,13,44, 13,3,2,4,13,12, 13,3,2,6,2,28, 13,1,11,1,4,46, 13,1,11,3,4,46, 13,1,11,4,13,14, 13,1,11,5,13,14, 13,1,10,1,5,46, + 13,1,10,3,5,46, 13,1,9,1,6,46, 13,1,9,3,6,46, 13,1,8,1,7,46, 13,1,8,3,7,46, 13,1,7,1,8,46, 13,1,7,3,8,46, 13,1,6,1,9,46, + 13,1,6,3,9,46, 13,1,5,1,10,46, 13,1,5,3,10,46, 13,1,4,1,11,46, 13,1,4,3,11,46, 13,1,3,1,12,46, 13,1,3,3,12,46, 13,1,3,4,13,14, + 13,1,3,6,2,30, 13,0,10,1,5,47, 13,0,10,5,13,15, 13,0,9,1,6,47, 13,0,8,1,7,47, 13,0,7,1,8,47, 13,0,6,1,9,47, 13,0,5,1,10,47, + 13,0,4,1,11,47, 13,0,4,6,2,31, 14,10,13,1,2,37, 14,10,13,3,2,37, 14,10,13,5,14,5, 14,10,12,1,3,37, 14,10,12,3,3,37, 14,10,11,1,4,37, + 14,10,11,3,4,37, 14,10,10,1,5,37, 14,10,10,3,5,37, 14,10,9,1,6,37, 14,10,9,3,6,37, 14,10,8,1,7,37, 14,10,8,3,7,37, 14,10,7,1,8,37, + 14,10,7,3,8,37, 14,10,6,1,9,37, 14,10,6,3,9,37, 14,10,5,1,10,37, 14,10,5,3,10,37, 14,10,4,1,11,37, 14,10,4,3,11,37, 14,10,3,1,12,37, + 14,10,3,3,12,37, 14,10,2,1,13,37, 14,10,2,3,13,37, 14,10,2,6,1,21, 14,9,13,1,2,38, 14,9,13,5,14,6, 14,9,12,1,3,38, 14,9,11,1,4,38, + 14,9,10,1,5,38, 14,9,9,1,6,38, 14,9,8,1,7,38, 14,9,7,1,8,38, 14,9,6,1,9,38, 14,9,5,1,10,38, 14,9,4,1,11,38, 14,9,3,1,12,38, + 14,9,2,1,13,38, 14,9,2,6,1,22, 14,8,13,1,2,39, 14,8,13,4,14,7, 14,8,13,5,14,7, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,11,1,4,39, + 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, + 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, + 14,8,3,4,14,7, 14,8,2,1,13,39, 14,8,2,4,14,7, 14,8,2,6,1,23, 14,6,12,1,3,41, 14,6,12,3,3,41, 14,6,12,5,1,25, 14,6,11,1,4,41, + 14,6,11,3,4,41, 14,6,10,1,5,41, 14,6,10,3,5,41, 14,6,9,1,6,41, 14,6,9,3,6,41, 14,6,8,1,7,41, 14,6,8,3,7,41, 14,6,7,1,8,41, + 14,6,7,3,8,41, 14,6,6,1,9,41, 14,6,6,3,9,41, 14,6,5,1,10,41, 14,6,5,3,10,41, 14,6,4,1,11,41, 14,6,4,3,11,41, 14,6,3,1,12,41, + 14,6,3,3,12,41, 14,6,3,6,1,25, 14,5,12,1,3,42, 14,5,12,4,14,10, 14,5,12,5,14,10, 14,5,11,1,4,42, 14,5,10,1,5,42, 14,5,9,1,6,42, + 14,5,8,1,7,42, 14,5,7,1,8,42, 14,5,6,1,9,42, 14,5,5,1,10,42, 14,5,4,1,11,42, 14,5,3,1,12,42, 14,5,3,6,1,26, 14,4,11,1,4,43, + 14,4,11,4,14,11, 14,4,11,5,14,11, 14,4,10,1,5,43, 14,4,10,4,14,11, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, + 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,4,14,11, + 14,4,3,1,12,43, 14,4,3,4,14,11, 14,4,2,1,13,43, 14,4,2,3,13,43, 14,4,2,4,14,11, 14,4,2,6,1,27, + }, + }, + }, +} diff --git a/assets/voxels/granny.lua b/assets/voxels/granny.lua new file mode 100644 index 0000000..25dc138 --- /dev/null +++ b/assets/voxels/granny.lua @@ -0,0 +1,157 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "granny" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "granny", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1596, + count = 1050, + faces = { + 1,9,13,2,2,38, 1,9,13,3,2,38, 1,9,13,4,1,6, 1,9,13,5,1,6, 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,4,1,6, 1,9,11,2,4,38, + 1,9,11,3,4,38, 1,9,11,4,1,6, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,10,4,1,6, 1,9,9,2,6,38, 1,9,9,3,6,38, 1,9,9,4,1,6, + 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,8,4,1,6, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,7,4,1,6, 1,9,6,2,9,38, 1,9,6,3,9,38, + 1,9,6,4,1,6, 1,9,5,2,10,38, 1,9,5,3,10,38, 1,9,5,4,1,6, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,4,4,1,6, 1,9,3,2,12,38, + 1,9,3,3,12,38, 1,9,3,4,1,6, 1,9,2,2,13,38, 1,9,2,3,13,38, 1,9,2,4,1,6, 1,9,2,6,14,22, 2,12,13,2,2,35, 2,12,13,3,2,35, + 2,12,13,5,2,3, 2,12,12,2,3,35, 2,12,12,3,3,35, 2,12,11,2,4,35, 2,12,11,3,4,35, 2,12,10,2,5,35, 2,12,10,3,5,35, 2,12,9,2,6,35, + 2,12,9,3,6,35, 2,12,8,2,7,35, 2,12,8,3,7,35, 2,12,7,2,8,35, 2,12,7,3,8,35, 2,12,6,2,9,35, 2,12,6,3,9,35, 2,12,5,2,10,35, + 2,12,5,3,10,35, 2,12,4,2,11,35, 2,12,4,3,11,35, 2,12,3,2,12,35, 2,12,3,3,12,35, 2,12,2,2,13,35, 2,12,2,3,13,35, 2,12,2,6,13,19, + 2,11,13,2,2,36, 2,11,13,5,2,4, 2,11,12,2,3,36, 2,11,11,2,4,36, 2,11,10,2,5,36, 2,11,9,2,6,36, 2,11,8,2,7,36, 2,11,7,2,8,36, + 2,11,6,2,9,36, 2,11,5,2,10,36, 2,11,4,2,11,36, 2,11,3,2,12,36, 2,11,2,2,13,36, 2,11,2,6,13,20, 2,10,13,2,2,37, 2,10,13,5,2,5, + 2,10,12,2,3,37, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, 2,10,8,2,7,37, 2,10,7,2,8,37, 2,10,6,2,9,37, 2,10,5,2,10,37, + 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,6,13,21, 2,9,13,4,2,6, 2,9,13,5,2,6, 2,9,2,6,13,22, 2,8,12,2,3,39, + 2,8,12,4,2,7, 2,8,12,5,2,7, 2,8,11,2,4,39, 2,8,11,4,2,7, 2,8,10,2,5,39, 2,8,10,4,2,7, 2,8,9,2,6,39, 2,8,9,4,2,7, + 2,8,8,2,7,39, 2,8,8,4,2,7, 2,8,7,2,8,39, 2,8,7,4,2,7, 2,8,6,2,9,39, 2,8,6,4,2,7, 2,8,5,2,10,39, 2,8,5,4,2,7, + 2,8,4,2,11,39, 2,8,4,4,2,7, 2,8,3,2,12,39, 2,8,3,4,2,7, 2,8,2,2,13,39, 2,8,2,4,2,7, 2,8,2,6,13,23, 2,2,12,2,3,45, + 2,2,12,3,3,45, 2,2,12,5,2,13, 2,2,11,2,4,45, 2,2,11,3,4,45, 2,2,10,2,5,45, 2,2,10,3,5,45, 2,2,9,2,6,45, 2,2,9,3,6,45, + 2,2,8,2,7,45, 2,2,8,3,7,45, 2,2,7,2,8,45, 2,2,7,3,8,45, 2,2,6,2,9,45, 2,2,6,3,9,45, 2,2,5,2,10,45, 2,2,5,3,10,45, + 2,2,4,2,11,45, 2,2,4,3,11,45, 2,2,3,2,12,45, 2,2,3,3,12,45, 2,2,3,6,13,29, 2,1,13,2,2,46, 2,1,13,3,2,46, 2,1,13,4,2,14, + 2,1,13,5,2,14, 2,1,12,2,3,46, 2,1,12,4,2,14, 2,1,11,2,4,46, 2,1,11,4,2,14, 2,1,10,2,5,46, 2,1,10,4,2,14, 2,1,9,2,6,46, + 2,1,9,4,2,14, 2,1,8,2,7,46, 2,1,8,4,2,14, 2,1,7,2,8,46, 2,1,7,4,2,14, 2,1,6,2,9,46, 2,1,6,4,2,14, 2,1,5,2,10,46, + 2,1,5,4,2,14, 2,1,4,2,11,46, 2,1,4,4,2,14, 2,1,3,2,12,46, 2,1,3,4,2,14, 2,1,2,2,13,46, 2,1,2,3,13,46, 2,1,2,4,2,14, + 2,1,2,6,13,30, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, + 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, + 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,13,3,2,35, + 3,12,13,5,3,3, 3,12,2,3,13,35, 3,12,2,6,12,19, 3,11,13,5,3,4, 3,11,2,6,12,20, 3,10,13,5,3,5, 3,10,2,6,12,21, 3,9,13,4,3,6, + 3,9,13,5,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,2,4,3,7, 3,8,2,6,12,23, 3,7,12,2,3,40, 3,7,12,4,3,8, 3,7,12,5,3,8, + 3,7,11,2,4,40, 3,7,11,4,3,8, 3,7,10,2,5,40, 3,7,10,4,3,8, 3,7,9,2,6,40, 3,7,9,4,3,8, 3,7,8,2,7,40, 3,7,8,4,3,8, + 3,7,7,2,8,40, 3,7,7,4,3,8, 3,7,6,2,9,40, 3,7,6,4,3,8, 3,7,5,2,10,40, 3,7,5,4,3,8, 3,7,4,2,11,40, 3,7,4,4,3,8, + 3,7,3,2,12,40, 3,7,3,4,3,8, 3,7,3,6,12,24, 3,3,10,2,5,44, 3,3,10,3,5,44, 3,3,10,5,3,12, 3,3,9,2,6,44, 3,3,9,3,6,44, + 3,3,8,2,7,44, 3,3,8,3,7,44, 3,3,7,2,8,44, 3,3,7,3,8,44, 3,3,6,2,9,44, 3,3,6,3,9,44, 3,3,5,2,10,44, 3,3,5,3,10,44, + 3,3,5,6,12,28, 3,2,12,3,3,45, 3,2,12,5,3,13, 3,2,11,3,4,45, 3,2,4,3,11,45, 3,2,3,3,12,45, 3,2,3,6,12,29, 3,1,13,3,2,46, + 3,1,13,4,3,14, 3,1,13,5,3,14, 3,1,2,3,13,46, 3,1,2,4,3,14, 3,1,2,6,12,30, 3,0,12,2,3,47, 3,0,12,5,3,15, 3,0,11,2,4,47, + 3,0,10,2,5,47, 3,0,9,2,6,47, 3,0,8,2,7,47, 3,0,7,2,8,47, 3,0,6,2,9,47, 3,0,5,2,10,47, 3,0,4,2,11,47, 3,0,3,2,12,47, + 3,0,3,6,12,31, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, + 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, + 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, + 4,12,13,5,4,3, 4,12,2,3,13,35, 4,12,2,6,11,19, 4,11,13,5,4,4, 4,11,2,6,11,20, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,13,4,4,6, + 4,9,13,5,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,2,4,4,7, 4,8,2,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,3,4,4,8, + 4,7,3,6,11,24, 4,6,11,2,4,41, 4,6,11,4,4,9, 4,6,11,5,4,9, 4,6,10,2,5,41, 4,6,9,2,6,41, 4,6,8,2,7,41, 4,6,7,2,8,41, + 4,6,6,2,9,41, 4,6,5,2,10,41, 4,6,4,2,11,41, 4,6,4,4,4,9, 4,6,4,6,11,25, 4,5,10,2,5,42, 4,5,10,5,4,10, 4,5,9,2,6,42, + 4,5,8,2,7,42, 4,5,7,2,8,42, 4,5,6,2,9,42, 4,5,5,2,10,42, 4,5,5,6,11,26, 4,4,10,2,5,43, 4,4,10,5,4,11, 4,4,9,2,6,43, + 4,4,8,2,7,43, 4,4,7,2,8,43, 4,4,6,2,9,43, 4,4,5,2,10,43, 4,4,5,6,11,27, 4,3,10,5,4,12, 4,3,5,6,11,28, 4,2,12,3,3,45, + 4,2,12,5,4,13, 4,2,11,3,4,45, 4,2,4,3,11,45, 4,2,3,3,12,45, 4,2,3,6,11,29, 4,1,13,3,2,46, 4,1,13,4,4,14, 4,1,13,5,4,14, + 4,1,2,3,13,46, 4,1,2,4,4,14, 4,1,2,6,11,30, 4,0,12,5,4,15, 4,0,3,6,11,31, 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,10,3,5,33, + 5,14,9,3,6,33, 5,14,8,3,7,33, 5,14,7,3,8,33, 5,14,6,3,9,33, 5,14,5,3,10,33, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, + 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,3,2,35, 5,12,13,5,5,3, 5,12,2,3,13,35, 5,12,2,6,10,19, 5,11,13,5,5,4, + 5,11,2,6,10,20, 5,10,13,5,5,5, 5,10,2,6,10,21, 5,9,13,4,5,6, 5,9,13,5,5,6, 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,2,4,5,7, + 5,8,2,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,4,4,5,9, + 5,6,4,6,10,25, 5,5,10,5,5,10, 5,5,5,6,10,26, 5,4,10,5,5,11, 5,4,5,6,10,27, 5,3,10,5,5,12, 5,3,5,6,10,28, 5,2,12,3,3,45, + 5,2,12,5,5,13, 5,2,11,3,4,45, 5,2,4,3,11,45, 5,2,3,3,12,45, 5,2,3,6,10,29, 5,1,13,3,2,46, 5,1,13,4,5,14, 5,1,13,5,5,14, + 5,1,2,3,13,46, 5,1,2,4,5,14, 5,1,2,6,10,30, 5,0,12,5,5,15, 5,0,3,6,10,31, 6,15,9,2,6,32, 6,15,9,3,6,32, 6,15,9,5,6,0, + 6,15,8,2,7,32, 6,15,8,3,7,32, 6,15,7,2,8,32, 6,15,7,3,8,32, 6,15,6,2,9,32, 6,15,6,3,9,32, 6,15,6,6,9,16, 6,14,11,3,4,33, + 6,14,11,5,6,1, 6,14,10,3,5,33, 6,14,5,3,10,33, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, + 6,13,3,6,9,18, 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,2,3,13,35, 6,12,2,6,9,19, 6,11,13,5,6,4, 6,11,2,6,9,20, 6,10,13,5,6,5, + 6,10,2,6,9,21, 6,9,13,4,6,6, 6,9,13,5,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,2,4,6,7, 6,8,2,6,9,23, 6,7,12,4,6,8, + 6,7,12,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, 6,6,4,4,6,9, 6,6,4,6,9,25, 6,5,10,5,6,10, + 6,5,5,6,9,26, 6,4,10,5,6,11, 6,4,5,6,9,27, 6,3,10,5,6,12, 6,3,5,6,9,28, 6,2,12,3,3,45, 6,2,12,5,6,13, 6,2,11,3,4,45, + 6,2,4,3,11,45, 6,2,3,3,12,45, 6,2,3,6,9,29, 6,1,13,3,2,46, 6,1,13,4,6,14, 6,1,13,5,6,14, 6,1,2,3,13,46, 6,1,2,4,6,14, + 6,1,2,6,9,30, 6,0,12,5,6,15, 6,0,3,6,9,31, 7,15,9,3,6,32, 7,15,9,5,7,0, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, + 7,15,6,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,10,3,5,33, 7,14,5,3,10,33, 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, + 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, 7,12,13,5,7,3, 7,12,2,3,13,35, 7,12,2,6,8,19, 7,11,13,5,7,4, + 7,11,2,6,8,20, 7,10,13,5,7,5, 7,10,2,6,8,21, 7,9,13,4,7,6, 7,9,13,5,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,2,4,7,7, + 7,8,2,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,3,4,7,8, 7,7,3,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,4,4,7,9, + 7,6,4,6,8,25, 7,5,10,5,7,10, 7,5,5,6,8,26, 7,4,10,5,7,11, 7,4,5,6,8,27, 7,3,10,5,7,12, 7,3,5,6,8,28, 7,2,12,3,3,45, + 7,2,12,5,7,13, 7,2,11,3,4,45, 7,2,4,3,11,45, 7,2,3,3,12,45, 7,2,3,6,8,29, 7,1,13,3,2,46, 7,1,13,4,7,14, 7,1,13,5,7,14, + 7,1,2,3,13,46, 7,1,2,4,7,14, 7,1,2,6,8,30, 7,0,12,5,7,15, 7,0,3,6,8,31, 8,15,9,3,6,32, 8,15,9,5,8,0, 8,15,8,3,7,32, + 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,10,3,5,33, 8,14,5,3,10,33, 8,14,4,3,11,33, + 8,14,4,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,2,3,13,35, + 8,12,2,6,7,19, 8,11,13,5,8,4, 8,11,2,6,7,20, 8,10,13,5,8,5, 8,10,2,6,7,21, 8,9,13,4,8,6, 8,9,13,5,8,6, 8,9,2,6,7,22, + 8,8,12,5,8,7, 8,8,2,4,8,7, 8,8,2,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,11,4,8,9, + 8,6,11,5,8,9, 8,6,4,4,8,9, 8,6,4,6,7,25, 8,5,10,5,8,10, 8,5,5,6,7,26, 8,4,10,5,8,11, 8,4,5,6,7,27, 8,3,10,5,8,12, + 8,3,5,6,7,28, 8,2,12,3,3,45, 8,2,12,5,8,13, 8,2,11,3,4,45, 8,2,4,3,11,45, 8,2,3,3,12,45, 8,2,3,6,7,29, 8,1,13,3,2,46, + 8,1,13,4,8,14, 8,1,13,5,8,14, 8,1,2,3,13,46, 8,1,2,4,8,14, 8,1,2,6,7,30, 8,0,12,5,8,15, 8,0,3,6,7,31, 9,15,9,1,6,32, + 9,15,9,3,6,32, 9,15,9,5,9,0, 9,15,8,1,7,32, 9,15,8,3,7,32, 9,15,7,1,8,32, 9,15,7,3,8,32, 9,15,6,1,9,32, 9,15,6,3,9,32, + 9,15,6,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,10,3,5,33, 9,14,5,3,10,33, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, + 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, 9,12,13,5,9,3, 9,12,2,3,13,35, 9,12,2,6,6,19, 9,11,13,5,9,4, + 9,11,2,6,6,20, 9,10,13,5,9,5, 9,10,2,6,6,21, 9,9,13,4,9,6, 9,9,13,5,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,2,4,9,7, + 9,8,2,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,3,4,9,8, 9,7,3,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, 9,6,4,4,9,9, + 9,6,4,6,6,25, 9,5,10,5,9,10, 9,5,5,6,6,26, 9,4,10,5,9,11, 9,4,5,6,6,27, 9,3,10,5,9,12, 9,3,5,6,6,28, 9,2,12,3,3,45, + 9,2,12,5,9,13, 9,2,11,3,4,45, 9,2,4,3,11,45, 9,2,3,3,12,45, 9,2,3,6,6,29, 9,1,13,3,2,46, 9,1,13,4,9,14, 9,1,13,5,9,14, + 9,1,2,3,13,46, 9,1,2,4,9,14, 9,1,2,6,6,30, 9,0,12,5,9,15, 9,0,3,6,6,31, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,10,3,5,33, + 10,14,9,3,6,33, 10,14,8,3,7,33, 10,14,7,3,8,33, 10,14,6,3,9,33, 10,14,5,3,10,33, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, + 10,13,12,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,2,3,13,35, 10,12,2,6,5,19, 10,11,13,5,10,4, + 10,11,2,6,5,20, 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,13,4,10,6, 10,9,13,5,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, 10,8,2,4,10,7, + 10,8,2,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,4,4,10,9, + 10,6,4,6,5,25, 10,5,10,5,10,10, 10,5,5,6,5,26, 10,4,10,5,10,11, 10,4,5,6,5,27, 10,3,10,5,10,12, 10,3,5,6,5,28, 10,2,12,3,3,45, + 10,2,12,5,10,13, 10,2,11,3,4,45, 10,2,4,3,11,45, 10,2,3,3,12,45, 10,2,3,6,5,29, 10,1,13,3,2,46, 10,1,13,4,10,14, 10,1,13,5,10,14, + 10,1,2,3,13,46, 10,1,2,4,10,14, 10,1,2,6,5,30, 10,0,12,5,10,15, 10,0,3,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,11,5,11,1, + 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, + 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,12,3,3,34, + 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, 11,12,13,5,11,3, 11,12,2,3,13,35, 11,12,2,6,4,19, 11,11,13,5,11,4, + 11,11,2,6,4,20, 11,10,13,5,11,5, 11,10,2,6,4,21, 11,9,13,4,11,6, 11,9,13,5,11,6, 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,2,4,11,7, + 11,8,2,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,11,1,4,41, 11,6,11,4,11,9, 11,6,11,5,11,9, + 11,6,10,1,5,41, 11,6,9,1,6,41, 11,6,8,1,7,41, 11,6,7,1,8,41, 11,6,6,1,9,41, 11,6,5,1,10,41, 11,6,4,1,11,41, 11,6,4,4,11,9, + 11,6,4,6,4,25, 11,5,10,1,5,42, 11,5,10,5,11,10, 11,5,9,1,6,42, 11,5,8,1,7,42, 11,5,7,1,8,42, 11,5,6,1,9,42, 11,5,5,1,10,42, + 11,5,5,6,4,26, 11,4,10,1,5,43, 11,4,10,5,11,11, 11,4,9,1,6,43, 11,4,8,1,7,43, 11,4,7,1,8,43, 11,4,6,1,9,43, 11,4,5,1,10,43, + 11,4,5,6,4,27, 11,3,10,5,11,12, 11,3,5,6,4,28, 11,2,12,3,3,45, 11,2,12,5,11,13, 11,2,11,3,4,45, 11,2,4,3,11,45, 11,2,3,3,12,45, + 11,2,3,6,4,29, 11,1,13,3,2,46, 11,1,13,4,11,14, 11,1,13,5,11,14, 11,1,2,3,13,46, 11,1,2,4,11,14, 11,1,2,6,4,30, 11,0,12,5,11,15, + 11,0,3,6,4,31, 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, + 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, + 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,3,2,35, + 12,12,13,5,12,3, 12,12,2,3,13,35, 12,12,2,6,3,19, 12,11,13,5,12,4, 12,11,2,6,3,20, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,13,4,12,6, + 12,9,13,5,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,2,4,12,7, 12,8,2,6,3,23, 12,7,12,1,3,40, 12,7,12,4,12,8, 12,7,12,5,12,8, + 12,7,11,1,4,40, 12,7,11,4,12,8, 12,7,10,1,5,40, 12,7,10,4,12,8, 12,7,9,1,6,40, 12,7,9,4,12,8, 12,7,8,1,7,40, 12,7,8,4,12,8, + 12,7,7,1,8,40, 12,7,7,4,12,8, 12,7,6,1,9,40, 12,7,6,4,12,8, 12,7,5,1,10,40, 12,7,5,4,12,8, 12,7,4,1,11,40, 12,7,4,4,12,8, + 12,7,3,1,12,40, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,3,10,1,5,44, 12,3,10,3,5,44, 12,3,10,5,12,12, 12,3,9,1,6,44, 12,3,9,3,6,44, + 12,3,8,1,7,44, 12,3,8,3,7,44, 12,3,7,1,8,44, 12,3,7,3,8,44, 12,3,6,1,9,44, 12,3,6,3,9,44, 12,3,5,1,10,44, 12,3,5,3,10,44, + 12,3,5,6,3,28, 12,2,12,3,3,45, 12,2,12,5,12,13, 12,2,11,3,4,45, 12,2,4,3,11,45, 12,2,3,3,12,45, 12,2,3,6,3,29, 12,1,13,3,2,46, + 12,1,13,4,12,14, 12,1,13,5,12,14, 12,1,2,3,13,46, 12,1,2,4,12,14, 12,1,2,6,3,30, 12,0,12,1,3,47, 12,0,12,5,12,15, 12,0,11,1,4,47, + 12,0,10,1,5,47, 12,0,9,1,6,47, 12,0,8,1,7,47, 12,0,7,1,8,47, 12,0,6,1,9,47, 12,0,5,1,10,47, 12,0,4,1,11,47, 12,0,3,1,12,47, + 12,0,3,6,3,31, 13,12,13,1,2,35, 13,12,13,3,2,35, 13,12,13,5,13,3, 13,12,12,1,3,35, 13,12,12,3,3,35, 13,12,11,1,4,35, 13,12,11,3,4,35, + 13,12,10,1,5,35, 13,12,10,3,5,35, 13,12,9,1,6,35, 13,12,9,3,6,35, 13,12,8,1,7,35, 13,12,8,3,7,35, 13,12,7,1,8,35, 13,12,7,3,8,35, + 13,12,6,1,9,35, 13,12,6,3,9,35, 13,12,5,1,10,35, 13,12,5,3,10,35, 13,12,4,1,11,35, 13,12,4,3,11,35, 13,12,3,1,12,35, 13,12,3,3,12,35, + 13,12,2,1,13,35, 13,12,2,3,13,35, 13,12,2,6,2,19, 13,11,13,1,2,36, 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,11,1,4,36, 13,11,10,1,5,36, + 13,11,9,1,6,36, 13,11,8,1,7,36, 13,11,7,1,8,36, 13,11,6,1,9,36, 13,11,5,1,10,36, 13,11,4,1,11,36, 13,11,3,1,12,36, 13,11,2,1,13,36, + 13,11,2,6,2,20, 13,10,13,1,2,37, 13,10,13,5,13,5, 13,10,12,1,3,37, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, + 13,10,7,1,8,37, 13,10,6,1,9,37, 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,6,2,21, 13,9,13,4,13,6, + 13,9,13,5,13,6, 13,9,2,6,2,22, 13,8,12,1,3,39, 13,8,12,4,13,7, 13,8,12,5,13,7, 13,8,11,1,4,39, 13,8,11,4,13,7, 13,8,10,1,5,39, + 13,8,10,4,13,7, 13,8,9,1,6,39, 13,8,9,4,13,7, 13,8,8,1,7,39, 13,8,8,4,13,7, 13,8,7,1,8,39, 13,8,7,4,13,7, 13,8,6,1,9,39, + 13,8,6,4,13,7, 13,8,5,1,10,39, 13,8,5,4,13,7, 13,8,4,1,11,39, 13,8,4,4,13,7, 13,8,3,1,12,39, 13,8,3,4,13,7, 13,8,2,1,13,39, + 13,8,2,4,13,7, 13,8,2,6,2,23, 13,2,12,1,3,45, 13,2,12,3,3,45, 13,2,12,5,13,13, 13,2,11,1,4,45, 13,2,11,3,4,45, 13,2,10,1,5,45, + 13,2,10,3,5,45, 13,2,9,1,6,45, 13,2,9,3,6,45, 13,2,8,1,7,45, 13,2,8,3,7,45, 13,2,7,1,8,45, 13,2,7,3,8,45, 13,2,6,1,9,45, + 13,2,6,3,9,45, 13,2,5,1,10,45, 13,2,5,3,10,45, 13,2,4,1,11,45, 13,2,4,3,11,45, 13,2,3,1,12,45, 13,2,3,3,12,45, 13,2,3,6,2,29, + 13,1,13,1,2,46, 13,1,13,3,2,46, 13,1,13,4,13,14, 13,1,13,5,13,14, 13,1,12,1,3,46, 13,1,12,4,13,14, 13,1,11,1,4,46, 13,1,11,4,13,14, + 13,1,10,1,5,46, 13,1,10,4,13,14, 13,1,9,1,6,46, 13,1,9,4,13,14, 13,1,8,1,7,46, 13,1,8,4,13,14, 13,1,7,1,8,46, 13,1,7,4,13,14, + 13,1,6,1,9,46, 13,1,6,4,13,14, 13,1,5,1,10,46, 13,1,5,4,13,14, 13,1,4,1,11,46, 13,1,4,4,13,14, 13,1,3,1,12,46, 13,1,3,4,13,14, + 13,1,2,1,13,46, 13,1,2,3,13,46, 13,1,2,4,13,14, 13,1,2,6,2,30, 14,9,13,1,2,38, 14,9,13,3,2,38, 14,9,13,4,14,6, 14,9,13,5,14,6, + 14,9,12,1,3,38, 14,9,12,3,3,38, 14,9,12,4,14,6, 14,9,11,1,4,38, 14,9,11,3,4,38, 14,9,11,4,14,6, 14,9,10,1,5,38, 14,9,10,3,5,38, + 14,9,10,4,14,6, 14,9,9,1,6,38, 14,9,9,3,6,38, 14,9,9,4,14,6, 14,9,8,1,7,38, 14,9,8,3,7,38, 14,9,8,4,14,6, 14,9,7,1,8,38, + 14,9,7,3,8,38, 14,9,7,4,14,6, 14,9,6,1,9,38, 14,9,6,3,9,38, 14,9,6,4,14,6, 14,9,5,1,10,38, 14,9,5,3,10,38, 14,9,5,4,14,6, + 14,9,4,1,11,38, 14,9,4,3,11,38, 14,9,4,4,14,6, 14,9,3,1,12,38, 14,9,3,3,12,38, 14,9,3,4,14,6, 14,9,2,1,13,38, 14,9,2,3,13,38, + 14,9,2,4,14,6, 14,9,2,6,1,22, + }, + }, + }, +} diff --git a/assets/voxels/guard.lua b/assets/voxels/guard.lua new file mode 100644 index 0000000..8fc5056 --- /dev/null +++ b/assets/voxels/guard.lua @@ -0,0 +1,155 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "guard" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "guard", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1558, + count = 1040, + faces = { + 1,9,11,2,3,38, 1,9,11,3,3,38, 1,9,11,5,1,6, 1,9,10,2,4,38, 1,9,10,3,4,38, 1,9,9,2,5,38, 1,9,9,3,5,38, 1,9,8,2,6,38, + 1,9,8,3,6,38, 1,9,7,2,7,38, 1,9,7,3,7,38, 1,9,6,2,8,38, 1,9,6,3,8,38, 1,9,5,2,9,38, 1,9,5,3,9,38, 1,9,4,2,10,38, + 1,9,4,3,10,38, 1,9,3,2,11,38, 1,9,3,3,11,38, 1,9,2,2,12,38, 1,9,2,3,12,38, 1,9,2,6,14,22, 1,8,11,2,3,39, 1,8,11,4,1,7, + 1,8,11,5,1,7, 1,8,10,2,4,39, 1,8,10,4,1,7, 1,8,9,2,5,39, 1,8,9,4,1,7, 1,8,8,2,6,39, 1,8,8,4,1,7, 1,8,7,2,7,39, + 1,8,7,4,1,7, 1,8,6,2,8,39, 1,8,6,4,1,7, 1,8,5,2,9,39, 1,8,5,4,1,7, 1,8,4,2,10,39, 1,8,4,4,1,7, 1,8,3,2,11,39, + 1,8,3,4,1,7, 1,8,2,2,12,39, 1,8,2,4,1,7, 1,8,2,6,14,23, 1,4,10,2,4,43, 1,4,10,3,4,43, 1,4,10,5,1,11, 1,4,9,2,5,43, + 1,4,9,3,5,43, 1,4,8,2,6,43, 1,4,8,3,6,43, 1,4,7,2,7,43, 1,4,7,3,7,43, 1,4,6,2,8,43, 1,4,6,3,8,43, 1,4,5,2,9,43, + 1,4,5,3,9,43, 1,4,4,2,10,43, 1,4,4,3,10,43, 1,4,4,6,14,27, 1,3,10,2,4,44, 1,3,10,4,1,12, 1,3,10,5,1,12, 1,3,9,2,5,44, + 1,3,9,4,1,12, 1,3,8,2,6,44, 1,3,8,4,1,12, 1,3,7,2,7,44, 1,3,7,4,1,12, 1,3,6,2,8,44, 1,3,6,4,1,12, 1,3,5,2,9,44, + 1,3,5,4,1,12, 1,3,4,2,10,44, 1,3,4,4,1,12, 1,3,4,6,14,28, 2,11,13,2,1,36, 2,11,13,3,1,36, 2,11,13,4,2,4, 2,11,13,5,2,4, + 2,11,12,2,2,36, 2,11,12,3,2,36, 2,11,11,2,3,36, 2,11,11,3,3,36, 2,11,10,2,4,36, 2,11,10,3,4,36, 2,11,9,2,5,36, 2,11,9,3,5,36, + 2,11,8,2,6,36, 2,11,8,3,6,36, 2,11,7,2,7,36, 2,11,7,3,7,36, 2,11,6,2,8,36, 2,11,6,3,8,36, 2,11,5,2,9,36, 2,11,5,3,9,36, + 2,11,4,2,10,36, 2,11,4,3,10,36, 2,11,3,2,11,36, 2,11,3,3,11,36, 2,11,2,2,12,36, 2,11,2,3,12,36, 2,11,2,6,13,20, 2,10,12,2,2,37, + 2,10,12,4,2,5, 2,10,12,5,2,5, 2,10,11,2,3,37, 2,10,10,2,4,37, 2,10,9,2,5,37, 2,10,8,2,6,37, 2,10,7,2,7,37, 2,10,6,2,8,37, + 2,10,5,2,9,37, 2,10,4,2,10,37, 2,10,3,2,11,37, 2,10,2,2,12,37, 2,10,2,6,13,21, 2,9,11,5,2,6, 2,9,2,6,13,22, 2,8,11,5,2,7, + 2,8,2,4,2,7, 2,8,2,6,13,23, 2,7,11,2,3,40, 2,7,11,4,2,8, 2,7,11,5,2,8, 2,7,10,2,4,40, 2,7,10,4,2,8, 2,7,9,2,5,40, + 2,7,9,4,2,8, 2,7,8,2,6,40, 2,7,8,4,2,8, 2,7,7,2,7,40, 2,7,7,4,2,8, 2,7,6,2,8,40, 2,7,6,4,2,8, 2,7,5,2,9,40, + 2,7,5,4,2,8, 2,7,4,2,10,40, 2,7,4,4,2,8, 2,7,3,2,11,40, 2,7,3,4,2,8, 2,7,3,6,13,24, 2,5,10,2,4,42, 2,5,10,3,4,42, + 2,5,10,5,2,10, 2,5,9,2,5,42, 2,5,9,3,5,42, 2,5,8,2,6,42, 2,5,8,3,6,42, 2,5,7,2,7,42, 2,5,7,3,7,42, 2,5,6,2,8,42, + 2,5,6,3,8,42, 2,5,5,2,9,42, 2,5,5,3,9,42, 2,5,4,2,10,42, 2,5,4,3,10,42, 2,5,4,6,13,26, 2,4,10,5,2,11, 2,4,4,6,13,27, + 2,3,10,4,2,12, 2,3,10,5,2,12, 2,3,4,6,13,28, 2,2,9,2,5,45, 2,2,9,4,2,13, 2,2,9,5,2,13, 2,2,8,2,6,45, 2,2,8,4,2,13, + 2,2,7,2,7,45, 2,2,7,4,2,13, 2,2,6,2,8,45, 2,2,6,4,2,13, 2,2,5,2,9,45, 2,2,5,4,2,13, 2,2,4,2,10,45, 2,2,4,4,2,13, + 2,2,4,6,13,29, 3,14,11,2,3,33, 3,14,11,3,3,33, 3,14,11,5,3,1, 3,14,10,2,4,33, 3,14,10,3,4,33, 3,14,9,2,5,33, 3,14,9,3,5,33, + 3,14,8,2,6,33, 3,14,8,3,6,33, 3,14,7,2,7,33, 3,14,7,3,7,33, 3,14,6,2,8,33, 3,14,6,3,8,33, 3,14,5,2,9,33, 3,14,5,3,9,33, + 3,14,4,2,10,33, 3,14,4,3,10,33, 3,14,3,2,11,33, 3,14,3,3,11,33, 3,14,2,2,12,33, 3,14,2,3,12,33, 3,14,2,6,12,17, 3,13,11,2,3,34, + 3,13,11,5,3,2, 3,13,10,2,4,34, 3,13,9,2,5,34, 3,13,8,2,6,34, 3,13,7,2,7,34, 3,13,6,2,8,34, 3,13,5,2,9,34, 3,13,4,2,10,34, + 3,13,3,2,11,34, 3,13,2,2,12,34, 3,13,2,6,12,18, 3,12,12,2,2,35, 3,12,12,3,2,35, 3,12,12,5,3,3, 3,12,11,2,3,35, 3,12,10,2,4,35, + 3,12,9,2,5,35, 3,12,8,2,6,35, 3,12,7,2,7,35, 3,12,6,2,8,35, 3,12,5,2,9,35, 3,12,4,2,10,35, 3,12,3,2,11,35, 3,12,2,2,12,35, + 3,12,2,6,12,19, 3,11,13,3,1,36, 3,11,13,4,3,4, 3,11,13,5,3,4, 3,11,2,6,12,20, 3,10,12,4,3,5, 3,10,12,5,3,5, 3,10,2,6,12,21, + 3,9,11,5,3,6, 3,9,2,6,12,22, 3,8,11,5,3,7, 3,8,2,4,3,7, 3,8,2,6,12,23, 3,7,11,4,3,8, 3,7,11,5,3,8, 3,7,4,4,3,8, + 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,10,2,4,41, 3,6,10,5,3,9, 3,6,9,2,5,41, 3,6,8,2,6,41, 3,6,7,2,7,41, 3,6,6,2,8,41, + 3,6,5,2,9,41, 3,6,5,6,12,25, 3,5,10,5,3,10, 3,5,4,3,10,42, 3,5,4,6,12,26, 3,4,10,5,3,11, 3,4,4,6,12,27, 3,3,10,4,3,12, + 3,3,10,5,3,12, 3,3,4,6,12,28, 3,2,9,5,3,13, 3,2,4,4,3,13, 3,2,4,6,12,29, 3,1,10,2,4,46, 3,1,10,3,4,46, 3,1,10,5,3,14, + 3,1,9,2,5,46, 3,1,8,2,6,46, 3,1,7,2,7,46, 3,1,6,2,8,46, 3,1,5,2,9,46, 3,1,5,4,3,14, 3,1,5,6,12,30, 3,0,11,2,3,47, + 3,0,11,3,3,47, 3,0,11,5,3,15, 3,0,10,2,4,47, 3,0,9,2,5,47, 3,0,8,2,6,47, 3,0,7,2,7,47, 3,0,6,2,8,47, 3,0,6,6,12,31, + 4,15,10,2,4,32, 4,15,10,3,4,32, 4,15,10,5,4,0, 4,15,9,2,5,32, 4,15,9,3,5,32, 4,15,8,2,6,32, 4,15,8,3,6,32, 4,15,7,2,7,32, + 4,15,7,3,7,32, 4,15,6,2,8,32, 4,15,6,3,8,32, 4,15,5,2,9,32, 4,15,5,3,9,32, 4,15,4,2,10,32, 4,15,4,3,10,32, 4,15,3,2,11,32, + 4,15,3,3,11,32, 4,15,3,6,11,16, 4,14,11,3,3,33, 4,14,11,5,4,1, 4,14,2,3,12,33, 4,14,2,6,11,17, 4,13,11,5,4,2, 4,13,2,6,11,18, + 4,12,12,3,2,35, 4,12,12,5,4,3, 4,12,2,6,11,19, 4,11,13,3,1,36, 4,11,13,4,4,4, 4,11,13,5,4,4, 4,11,2,6,11,20, 4,10,12,4,4,5, + 4,10,12,5,4,5, 4,10,2,6,11,21, 4,9,11,5,4,6, 4,9,2,6,11,22, 4,8,11,5,4,7, 4,8,2,4,4,7, 4,8,2,6,11,23, 4,7,11,4,4,8, + 4,7,11,5,4,8, 4,7,4,4,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,10,5,4,9, 4,6,5,6,11,25, 4,5,10,5,4,10, 4,5,4,3,10,42, + 4,5,4,6,11,26, 4,4,10,5,4,11, 4,4,4,6,11,27, 4,3,10,4,4,12, 4,3,10,5,4,12, 4,3,4,6,11,28, 4,2,9,5,4,13, 4,2,4,4,4,13, + 4,2,4,6,11,29, 4,1,10,3,4,46, 4,1,10,5,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, 4,0,11,3,3,47, 4,0,11,5,4,15, 4,0,6,6,11,31, + 5,15,10,3,4,32, 5,15,10,5,5,0, 5,15,9,3,5,32, 5,15,8,3,6,32, 5,15,7,3,7,32, 5,15,6,3,8,32, 5,15,5,3,9,32, 5,15,4,3,10,32, + 5,15,3,3,11,32, 5,15,3,6,10,16, 5,14,11,3,3,33, 5,14,11,5,5,1, 5,14,2,3,12,33, 5,14,2,6,10,17, 5,13,11,5,5,2, 5,13,2,6,10,18, + 5,12,12,3,2,35, 5,12,12,5,5,3, 5,12,2,6,10,19, 5,11,13,3,1,36, 5,11,13,4,5,4, 5,11,13,5,5,4, 5,11,2,6,10,20, 5,10,12,4,5,5, + 5,10,12,5,5,5, 5,10,2,6,10,21, 5,9,11,5,5,6, 5,9,2,6,10,22, 5,8,11,5,5,7, 5,8,2,4,5,7, 5,8,2,6,10,23, 5,7,11,4,5,8, + 5,7,11,5,5,8, 5,7,4,4,5,8, 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,10,5,5,9, 5,6,5,6,10,25, 5,5,10,5,5,10, 5,5,4,3,10,42, + 5,5,4,6,10,26, 5,4,10,5,5,11, 5,4,4,6,10,27, 5,3,10,4,5,12, 5,3,10,5,5,12, 5,3,4,6,10,28, 5,2,9,5,5,13, 5,2,4,4,5,13, + 5,2,4,6,10,29, 5,1,10,3,4,46, 5,1,10,5,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,11,3,3,47, 5,0,11,5,5,15, 5,0,6,6,10,31, + 6,15,10,3,4,32, 6,15,10,5,6,0, 6,15,9,3,5,32, 6,15,8,3,6,32, 6,15,7,3,7,32, 6,15,6,3,8,32, 6,15,5,3,9,32, 6,15,4,3,10,32, + 6,15,3,3,11,32, 6,15,3,6,9,16, 6,14,11,3,3,33, 6,14,11,5,6,1, 6,14,2,3,12,33, 6,14,2,6,9,17, 6,13,11,5,6,2, 6,13,2,6,9,18, + 6,12,12,3,2,35, 6,12,12,5,6,3, 6,12,2,6,9,19, 6,11,13,3,1,36, 6,11,13,4,6,4, 6,11,13,5,6,4, 6,11,2,6,9,20, 6,10,12,4,6,5, + 6,10,12,5,6,5, 6,10,2,6,9,21, 6,9,11,5,6,6, 6,9,2,6,9,22, 6,8,11,5,6,7, 6,8,2,4,6,7, 6,8,2,6,9,23, 6,7,11,4,6,8, + 6,7,11,5,6,8, 6,7,4,4,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,10,5,6,9, 6,6,5,6,9,25, 6,5,10,5,6,10, 6,5,4,3,10,42, + 6,5,4,6,9,26, 6,4,10,5,6,11, 6,4,4,6,9,27, 6,3,10,4,6,12, 6,3,10,5,6,12, 6,3,4,6,9,28, 6,2,9,5,6,13, 6,2,4,4,6,13, + 6,2,4,6,9,29, 6,1,10,3,4,46, 6,1,10,5,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,11,1,3,47, 6,0,11,3,3,47, 6,0,11,5,6,15, + 6,0,10,1,4,47, 6,0,9,1,5,47, 6,0,8,1,6,47, 6,0,7,1,7,47, 6,0,6,1,8,47, 6,0,6,6,9,31, 7,15,10,3,4,32, 7,15,10,5,7,0, + 7,15,9,3,5,32, 7,15,8,3,6,32, 7,15,7,3,7,32, 7,15,6,3,8,32, 7,15,5,3,9,32, 7,15,4,3,10,32, 7,15,3,3,11,32, 7,15,3,6,8,16, + 7,14,11,3,3,33, 7,14,11,5,7,1, 7,14,2,3,12,33, 7,14,2,6,8,17, 7,13,11,5,7,2, 7,13,2,6,8,18, 7,12,12,3,2,35, 7,12,12,5,7,3, + 7,12,2,6,8,19, 7,11,13,3,1,36, 7,11,13,4,7,4, 7,11,13,5,7,4, 7,11,2,6,8,20, 7,10,12,4,7,5, 7,10,12,5,7,5, 7,10,2,6,8,21, + 7,9,11,5,7,6, 7,9,2,6,8,22, 7,8,11,5,7,7, 7,8,2,4,7,7, 7,8,2,6,8,23, 7,7,11,4,7,8, 7,7,11,5,7,8, 7,7,4,4,7,8, + 7,7,3,4,7,8, 7,7,3,6,8,24, 7,6,10,5,7,9, 7,6,5,6,8,25, 7,5,10,5,7,10, 7,5,4,3,10,42, 7,5,4,6,8,26, 7,4,10,5,7,11, + 7,4,4,6,8,27, 7,3,10,4,7,12, 7,3,10,5,7,12, 7,3,4,6,8,28, 7,2,9,5,7,13, 7,2,4,4,7,13, 7,2,4,6,8,29, 7,1,10,3,4,46, + 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, + 8,15,10,3,4,32, 8,15,10,5,8,0, 8,15,9,3,5,32, 8,15,8,3,6,32, 8,15,7,3,7,32, 8,15,6,3,8,32, 8,15,5,3,9,32, 8,15,4,3,10,32, + 8,15,3,3,11,32, 8,15,3,6,7,16, 8,14,11,3,3,33, 8,14,11,5,8,1, 8,14,2,3,12,33, 8,14,2,6,7,17, 8,13,11,5,8,2, 8,13,2,6,7,18, + 8,12,12,3,2,35, 8,12,12,5,8,3, 8,12,2,6,7,19, 8,11,13,3,1,36, 8,11,13,4,8,4, 8,11,13,5,8,4, 8,11,2,6,7,20, 8,10,12,4,8,5, + 8,10,12,5,8,5, 8,10,2,6,7,21, 8,9,11,5,8,6, 8,9,2,6,7,22, 8,8,11,5,8,7, 8,8,2,4,8,7, 8,8,2,6,7,23, 8,7,11,4,8,8, + 8,7,11,5,8,8, 8,7,4,4,8,8, 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,10,5,8,9, 8,6,5,6,7,25, 8,5,10,5,8,10, 8,5,4,3,10,42, + 8,5,4,6,7,26, 8,4,10,5,8,11, 8,4,4,6,7,27, 8,3,10,4,8,12, 8,3,10,5,8,12, 8,3,4,6,7,28, 8,2,9,5,8,13, 8,2,4,4,8,13, + 8,2,4,6,7,29, 8,1,10,3,4,46, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, + 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,10,3,4,32, 9,15,10,5,9,0, 9,15,9,3,5,32, 9,15,8,3,6,32, 9,15,7,3,7,32, 9,15,6,3,8,32, + 9,15,5,3,9,32, 9,15,4,3,10,32, 9,15,3,3,11,32, 9,15,3,6,6,16, 9,14,11,3,3,33, 9,14,11,5,9,1, 9,14,2,3,12,33, 9,14,2,6,6,17, + 9,13,11,5,9,2, 9,13,2,6,6,18, 9,12,12,3,2,35, 9,12,12,5,9,3, 9,12,2,6,6,19, 9,11,13,3,1,36, 9,11,13,4,9,4, 9,11,13,5,9,4, + 9,11,2,6,6,20, 9,10,12,4,9,5, 9,10,12,5,9,5, 9,10,2,6,6,21, 9,9,11,5,9,6, 9,9,2,6,6,22, 9,8,11,5,9,7, 9,8,2,4,9,7, + 9,8,2,6,6,23, 9,7,11,4,9,8, 9,7,11,5,9,8, 9,7,4,4,9,8, 9,7,3,4,9,8, 9,7,3,6,6,24, 9,6,10,5,9,9, 9,6,5,6,6,25, + 9,5,10,5,9,10, 9,5,4,3,10,42, 9,5,4,6,6,26, 9,4,10,5,9,11, 9,4,4,6,6,27, 9,3,10,4,9,12, 9,3,10,5,9,12, 9,3,4,6,6,28, + 9,2,9,5,9,13, 9,2,4,4,9,13, 9,2,4,6,6,29, 9,1,10,3,4,46, 9,1,10,5,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,11,2,3,47, + 9,0,11,3,3,47, 9,0,11,5,9,15, 9,0,10,2,4,47, 9,0,9,2,5,47, 9,0,8,2,6,47, 9,0,7,2,7,47, 9,0,6,2,8,47, 9,0,6,6,6,31, + 10,15,10,3,4,32, 10,15,10,5,10,0, 10,15,9,3,5,32, 10,15,8,3,6,32, 10,15,7,3,7,32, 10,15,6,3,8,32, 10,15,5,3,9,32, 10,15,4,3,10,32, + 10,15,3,3,11,32, 10,15,3,6,5,16, 10,14,11,3,3,33, 10,14,11,5,10,1, 10,14,2,3,12,33, 10,14,2,6,5,17, 10,13,11,5,10,2, 10,13,2,6,5,18, + 10,12,12,3,2,35, 10,12,12,5,10,3, 10,12,2,6,5,19, 10,11,13,3,1,36, 10,11,13,4,10,4, 10,11,13,5,10,4, 10,11,2,6,5,20, 10,10,12,4,10,5, + 10,10,12,5,10,5, 10,10,2,6,5,21, 10,9,11,5,10,6, 10,9,2,6,5,22, 10,8,11,5,10,7, 10,8,2,4,10,7, 10,8,2,6,5,23, 10,7,11,4,10,8, + 10,7,11,5,10,8, 10,7,4,4,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,10,5,10,9, 10,6,5,6,5,25, 10,5,10,5,10,10, 10,5,4,3,10,42, + 10,5,4,6,5,26, 10,4,10,5,10,11, 10,4,4,6,5,27, 10,3,10,4,10,12, 10,3,10,5,10,12, 10,3,4,6,5,28, 10,2,9,5,10,13, 10,2,4,4,10,13, + 10,2,4,6,5,29, 10,1,10,3,4,46, 10,1,10,5,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,11,3,3,47, 10,0,11,5,10,15, 10,0,6,6,5,31, + 11,15,10,1,4,32, 11,15,10,3,4,32, 11,15,10,5,11,0, 11,15,9,1,5,32, 11,15,9,3,5,32, 11,15,8,1,6,32, 11,15,8,3,6,32, 11,15,7,1,7,32, + 11,15,7,3,7,32, 11,15,6,1,8,32, 11,15,6,3,8,32, 11,15,5,1,9,32, 11,15,5,3,9,32, 11,15,4,1,10,32, 11,15,4,3,10,32, 11,15,3,1,11,32, + 11,15,3,3,11,32, 11,15,3,6,4,16, 11,14,11,3,3,33, 11,14,11,5,11,1, 11,14,2,3,12,33, 11,14,2,6,4,17, 11,13,11,5,11,2, 11,13,2,6,4,18, + 11,12,12,3,2,35, 11,12,12,5,11,3, 11,12,2,6,4,19, 11,11,13,3,1,36, 11,11,13,4,11,4, 11,11,13,5,11,4, 11,11,2,6,4,20, 11,10,12,4,11,5, + 11,10,12,5,11,5, 11,10,2,6,4,21, 11,9,11,5,11,6, 11,9,2,6,4,22, 11,8,11,5,11,7, 11,8,2,4,11,7, 11,8,2,6,4,23, 11,7,11,4,11,8, + 11,7,11,5,11,8, 11,7,4,4,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,10,5,11,9, 11,6,5,6,4,25, 11,5,10,5,11,10, 11,5,4,3,10,42, + 11,5,4,6,4,26, 11,4,10,5,11,11, 11,4,4,6,4,27, 11,3,10,4,11,12, 11,3,10,5,11,12, 11,3,4,6,4,28, 11,2,9,5,11,13, 11,2,4,4,11,13, + 11,2,4,6,4,29, 11,1,10,3,4,46, 11,1,10,5,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,11,3,3,47, 11,0,11,5,11,15, 11,0,6,6,4,31, + 12,14,11,1,3,33, 12,14,11,3,3,33, 12,14,11,5,12,1, 12,14,10,1,4,33, 12,14,10,3,4,33, 12,14,9,1,5,33, 12,14,9,3,5,33, 12,14,8,1,6,33, + 12,14,8,3,6,33, 12,14,7,1,7,33, 12,14,7,3,7,33, 12,14,6,1,8,33, 12,14,6,3,8,33, 12,14,5,1,9,33, 12,14,5,3,9,33, 12,14,4,1,10,33, + 12,14,4,3,10,33, 12,14,3,1,11,33, 12,14,3,3,11,33, 12,14,2,1,12,33, 12,14,2,3,12,33, 12,14,2,6,3,17, 12,13,11,1,3,34, 12,13,11,5,12,2, + 12,13,10,1,4,34, 12,13,9,1,5,34, 12,13,8,1,6,34, 12,13,7,1,7,34, 12,13,6,1,8,34, 12,13,5,1,9,34, 12,13,4,1,10,34, 12,13,3,1,11,34, + 12,13,2,1,12,34, 12,13,2,6,3,18, 12,12,12,1,2,35, 12,12,12,3,2,35, 12,12,12,5,12,3, 12,12,11,1,3,35, 12,12,10,1,4,35, 12,12,9,1,5,35, + 12,12,8,1,6,35, 12,12,7,1,7,35, 12,12,6,1,8,35, 12,12,5,1,9,35, 12,12,4,1,10,35, 12,12,3,1,11,35, 12,12,2,1,12,35, 12,12,2,6,3,19, + 12,11,13,3,1,36, 12,11,13,4,12,4, 12,11,13,5,12,4, 12,11,2,6,3,20, 12,10,12,4,12,5, 12,10,12,5,12,5, 12,10,2,6,3,21, 12,9,11,5,12,6, + 12,9,2,6,3,22, 12,8,11,5,12,7, 12,8,2,4,12,7, 12,8,2,6,3,23, 12,7,11,4,12,8, 12,7,11,5,12,8, 12,7,4,4,12,8, 12,7,3,4,12,8, + 12,7,3,6,3,24, 12,6,10,1,4,41, 12,6,10,5,12,9, 12,6,9,1,5,41, 12,6,8,1,6,41, 12,6,7,1,7,41, 12,6,6,1,8,41, 12,6,5,1,9,41, + 12,6,5,6,3,25, 12,5,10,5,12,10, 12,5,4,3,10,42, 12,5,4,6,3,26, 12,4,10,5,12,11, 12,4,4,6,3,27, 12,3,10,4,12,12, 12,3,10,5,12,12, + 12,3,4,6,3,28, 12,2,9,5,12,13, 12,2,4,4,12,13, 12,2,4,6,3,29, 12,1,10,1,4,46, 12,1,10,3,4,46, 12,1,10,5,12,14, 12,1,9,1,5,46, + 12,1,8,1,6,46, 12,1,7,1,7,46, 12,1,6,1,8,46, 12,1,5,1,9,46, 12,1,5,4,12,14, 12,1,5,6,3,30, 12,0,11,1,3,47, 12,0,11,3,3,47, + 12,0,11,5,12,15, 12,0,10,1,4,47, 12,0,9,1,5,47, 12,0,8,1,6,47, 12,0,7,1,7,47, 12,0,6,1,8,47, 12,0,6,6,3,31, 13,11,13,1,1,36, + 13,11,13,3,1,36, 13,11,13,4,13,4, 13,11,13,5,13,4, 13,11,12,1,2,36, 13,11,12,3,2,36, 13,11,11,1,3,36, 13,11,11,3,3,36, 13,11,10,1,4,36, + 13,11,10,3,4,36, 13,11,9,1,5,36, 13,11,9,3,5,36, 13,11,8,1,6,36, 13,11,8,3,6,36, 13,11,7,1,7,36, 13,11,7,3,7,36, 13,11,6,1,8,36, + 13,11,6,3,8,36, 13,11,5,1,9,36, 13,11,5,3,9,36, 13,11,4,1,10,36, 13,11,4,3,10,36, 13,11,3,1,11,36, 13,11,3,3,11,36, 13,11,2,1,12,36, + 13,11,2,3,12,36, 13,11,2,6,2,20, 13,10,12,1,2,37, 13,10,12,4,13,5, 13,10,12,5,13,5, 13,10,11,1,3,37, 13,10,10,1,4,37, 13,10,9,1,5,37, + 13,10,8,1,6,37, 13,10,7,1,7,37, 13,10,6,1,8,37, 13,10,5,1,9,37, 13,10,4,1,10,37, 13,10,3,1,11,37, 13,10,2,1,12,37, 13,10,2,6,2,21, + 13,9,11,5,13,6, 13,9,2,6,2,22, 13,8,11,5,13,7, 13,8,2,4,13,7, 13,8,2,6,2,23, 13,7,11,1,3,40, 13,7,11,4,13,8, 13,7,11,5,13,8, + 13,7,10,1,4,40, 13,7,10,4,13,8, 13,7,9,1,5,40, 13,7,9,4,13,8, 13,7,8,1,6,40, 13,7,8,4,13,8, 13,7,7,1,7,40, 13,7,7,4,13,8, + 13,7,6,1,8,40, 13,7,6,4,13,8, 13,7,5,1,9,40, 13,7,5,4,13,8, 13,7,4,1,10,40, 13,7,4,4,13,8, 13,7,3,1,11,40, 13,7,3,4,13,8, + 13,7,3,6,2,24, 13,5,10,1,4,42, 13,5,10,3,4,42, 13,5,10,5,13,10, 13,5,9,1,5,42, 13,5,9,3,5,42, 13,5,8,1,6,42, 13,5,8,3,6,42, + 13,5,7,1,7,42, 13,5,7,3,7,42, 13,5,6,1,8,42, 13,5,6,3,8,42, 13,5,5,1,9,42, 13,5,5,3,9,42, 13,5,4,1,10,42, 13,5,4,3,10,42, + 13,5,4,6,2,26, 13,4,10,5,13,11, 13,4,4,6,2,27, 13,3,10,4,13,12, 13,3,10,5,13,12, 13,3,4,6,2,28, 13,2,9,1,5,45, 13,2,9,4,13,13, + 13,2,9,5,13,13, 13,2,8,1,6,45, 13,2,8,4,13,13, 13,2,7,1,7,45, 13,2,7,4,13,13, 13,2,6,1,8,45, 13,2,6,4,13,13, 13,2,5,1,9,45, + 13,2,5,4,13,13, 13,2,4,1,10,45, 13,2,4,4,13,13, 13,2,4,6,2,29, 14,9,11,1,3,38, 14,9,11,3,3,38, 14,9,11,5,14,6, 14,9,10,1,4,38, + 14,9,10,3,4,38, 14,9,9,1,5,38, 14,9,9,3,5,38, 14,9,8,1,6,38, 14,9,8,3,6,38, 14,9,7,1,7,38, 14,9,7,3,7,38, 14,9,6,1,8,38, + 14,9,6,3,8,38, 14,9,5,1,9,38, 14,9,5,3,9,38, 14,9,4,1,10,38, 14,9,4,3,10,38, 14,9,3,1,11,38, 14,9,3,3,11,38, 14,9,2,1,12,38, + 14,9,2,3,12,38, 14,9,2,6,1,22, 14,8,11,1,3,39, 14,8,11,4,14,7, 14,8,11,5,14,7, 14,8,10,1,4,39, 14,8,10,4,14,7, 14,8,9,1,5,39, + 14,8,9,4,14,7, 14,8,8,1,6,39, 14,8,8,4,14,7, 14,8,7,1,7,39, 14,8,7,4,14,7, 14,8,6,1,8,39, 14,8,6,4,14,7, 14,8,5,1,9,39, + 14,8,5,4,14,7, 14,8,4,1,10,39, 14,8,4,4,14,7, 14,8,3,1,11,39, 14,8,3,4,14,7, 14,8,2,1,12,39, 14,8,2,4,14,7, 14,8,2,6,1,23, + 14,4,10,1,4,43, 14,4,10,3,4,43, 14,4,10,5,14,11, 14,4,9,1,5,43, 14,4,9,3,5,43, 14,4,8,1,6,43, 14,4,8,3,6,43, 14,4,7,1,7,43, + 14,4,7,3,7,43, 14,4,6,1,8,43, 14,4,6,3,8,43, 14,4,5,1,9,43, 14,4,5,3,9,43, 14,4,4,1,10,43, 14,4,4,3,10,43, 14,4,4,6,1,27, + 14,3,10,1,4,44, 14,3,10,4,14,12, 14,3,10,5,14,12, 14,3,9,1,5,44, 14,3,9,4,14,12, 14,3,8,1,6,44, 14,3,8,4,14,12, 14,3,7,1,7,44, + 14,3,7,4,14,12, 14,3,6,1,8,44, 14,3,6,4,14,12, 14,3,5,1,9,44, 14,3,5,4,14,12, 14,3,4,1,10,44, 14,3,4,4,14,12, 14,3,4,6,1,28, + }, + }, + }, +} diff --git a/assets/voxels/gym_guide.lua b/assets/voxels/gym_guide.lua new file mode 100644 index 0000000..8d4441a --- /dev/null +++ b/assets/voxels/gym_guide.lua @@ -0,0 +1,139 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "gym_guide" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "gym_guide", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1384, + count = 906, + faces = { + 1,9,13,2,3,38, 1,9,13,3,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,12,3,4,38, 1,9,11,2,5,38, 1,9,11,3,5,38, 1,9,10,2,6,38, + 1,9,10,3,6,38, 1,9,9,2,7,38, 1,9,9,3,7,38, 1,9,8,2,8,38, 1,9,8,3,8,38, 1,9,7,2,9,38, 1,9,7,3,9,38, 1,9,6,2,10,38, + 1,9,6,3,10,38, 1,9,5,2,11,38, 1,9,5,3,11,38, 1,9,4,2,12,38, 1,9,4,3,12,38, 1,9,3,2,13,38, 1,9,3,3,13,38, 1,9,3,4,1,6, + 1,9,3,6,14,22, 1,8,13,2,3,39, 1,8,13,4,1,7, 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,12,4,1,7, 1,8,11,2,5,39, 1,8,11,4,1,7, + 1,8,10,2,6,39, 1,8,10,4,1,7, 1,8,9,2,7,39, 1,8,9,4,1,7, 1,8,8,2,8,39, 1,8,8,4,1,7, 1,8,7,2,9,39, 1,8,7,4,1,7, + 1,8,6,2,10,39, 1,8,6,4,1,7, 1,8,5,2,11,39, 1,8,5,4,1,7, 1,8,4,2,12,39, 1,8,4,4,1,7, 1,8,4,6,14,23, 2,11,13,2,3,36, + 2,11,13,3,3,36, 2,11,13,5,2,4, 2,11,12,2,4,36, 2,11,12,3,4,36, 2,11,11,2,5,36, 2,11,11,3,5,36, 2,11,10,2,6,36, 2,11,10,3,6,36, + 2,11,9,2,7,36, 2,11,9,3,7,36, 2,11,8,2,8,36, 2,11,8,3,8,36, 2,11,7,2,9,36, 2,11,7,3,9,36, 2,11,6,2,10,36, 2,11,6,3,10,36, + 2,11,5,2,11,36, 2,11,5,3,11,36, 2,11,4,2,12,36, 2,11,4,3,12,36, 2,11,3,2,13,36, 2,11,3,3,13,36, 2,11,3,6,13,20, 2,10,13,2,3,37, + 2,10,13,5,2,5, 2,10,12,2,4,37, 2,10,11,2,5,37, 2,10,10,2,6,37, 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, 2,10,6,2,10,37, + 2,10,5,2,11,37, 2,10,4,2,12,37, 2,10,3,2,13,37, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,3,4,2,6, 2,9,3,6,13,22, 2,8,13,5,2,7, + 2,8,4,4,2,7, 2,8,4,6,13,23, 2,7,13,2,3,40, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,12,2,4,40, 2,7,12,4,2,8, 2,7,11,2,5,40, + 2,7,11,4,2,8, 2,7,10,2,6,40, 2,7,10,4,2,8, 2,7,9,2,7,40, 2,7,9,4,2,8, 2,7,8,2,8,40, 2,7,8,4,2,8, 2,7,7,2,9,40, + 2,7,7,4,2,8, 2,7,6,2,10,40, 2,7,6,4,2,8, 2,7,5,2,11,40, 2,7,5,4,2,8, 2,7,5,6,13,24, 2,5,11,2,5,42, 2,5,11,3,5,42, + 2,5,11,5,2,10, 2,5,10,2,6,42, 2,5,10,3,6,42, 2,5,9,2,7,42, 2,5,9,3,7,42, 2,5,8,2,8,42, 2,5,8,3,8,42, 2,5,7,2,9,42, + 2,5,7,3,9,42, 2,5,6,2,10,42, 2,5,6,3,10,42, 2,5,6,6,13,26, 2,4,11,2,5,43, 2,4,11,4,2,11, 2,4,11,5,2,11, 2,4,10,2,6,43, + 2,4,10,4,2,11, 2,4,9,2,7,43, 2,4,9,4,2,11, 2,4,8,2,8,43, 2,4,8,4,2,11, 2,4,7,2,9,43, 2,4,7,4,2,11, 2,4,6,2,10,43, + 2,4,6,4,2,11, 2,4,6,6,13,27, 3,13,13,2,3,34, 3,13,13,3,3,34, 3,13,13,5,3,2, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,11,2,5,34, + 3,13,11,3,5,34, 3,13,10,2,6,34, 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, + 3,13,7,3,9,34, 3,13,6,2,10,34, 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,4,6,12,18, + 3,12,13,2,3,35, 3,12,13,5,3,3, 3,12,12,2,4,35, 3,12,11,2,5,35, 3,12,10,2,6,35, 3,12,9,2,7,35, 3,12,8,2,8,35, 3,12,7,2,9,35, + 3,12,6,2,10,35, 3,12,5,2,11,35, 3,12,4,2,12,35, 3,12,4,6,12,19, 3,11,13,5,3,4, 3,11,3,3,13,36, 3,11,3,6,12,20, 3,10,13,5,3,5, + 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,3,4,3,6, 3,9,3,6,12,22, 3,8,13,5,3,7, 3,8,4,4,3,7, 3,8,4,6,12,23, 3,7,13,4,3,8, + 3,7,13,5,3,8, 3,7,5,4,3,8, 3,7,5,6,12,24, 3,6,12,2,4,41, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,11,2,5,41, 3,6,10,2,6,41, + 3,6,9,2,7,41, 3,6,8,2,8,41, 3,6,7,2,9,41, 3,6,6,2,10,41, 3,6,6,6,12,25, 3,5,11,5,3,10, 3,5,6,6,12,26, 3,4,11,5,3,11, + 3,4,6,6,12,27, 3,3,11,2,5,44, 3,3,11,5,3,12, 3,3,10,2,6,44, 3,3,9,2,7,44, 3,3,8,2,8,44, 3,3,7,2,9,44, 3,3,6,2,10,44, + 3,3,6,6,12,28, 3,2,11,2,5,45, 3,2,11,5,3,13, 3,2,10,2,6,45, 3,2,9,2,7,45, 3,2,8,2,8,45, 3,2,7,2,9,45, 3,2,6,2,10,45, + 3,2,6,6,12,29, 3,1,11,2,5,46, 3,1,11,4,12,30, 3,1,11,5,12,30, 3,1,10,2,6,46, 3,1,10,4,12,30, 3,1,9,2,7,46, 3,1,9,4,12,30, + 3,1,8,2,8,46, 3,1,8,4,12,30, 3,1,7,2,9,46, 3,1,7,4,12,30, 3,1,6,2,10,46, 3,1,6,4,12,30, 3,1,6,6,12,30, 4,14,12,2,4,33, + 4,14,12,3,4,33, 4,14,12,5,4,1, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, + 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,5,2,11,33, 4,14,5,3,11,33, + 4,14,5,6,11,17, 4,13,13,3,3,34, 4,13,13,5,4,2, 4,13,4,3,12,34, 4,13,4,6,11,18, 4,12,13,5,4,3, 4,12,4,6,11,19, 4,11,13,5,4,4, + 4,11,3,3,13,36, 4,11,3,6,11,20, 4,10,13,5,4,5, 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,4,4,6, 4,9,3,6,11,22, 4,8,13,5,4,7, + 4,8,4,4,4,7, 4,8,4,6,11,23, 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,5,4,4,8, 4,7,5,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, + 4,6,6,6,11,25, 4,5,11,5,4,10, 4,5,6,6,11,26, 4,4,11,5,4,11, 4,4,6,6,11,27, 4,3,11,5,4,12, 4,3,6,6,11,28, 4,2,11,5,4,13, + 4,2,6,6,11,29, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,6,4,4,14, 4,1,6,6,11,30, 4,0,10,2,6,47, 4,0,10,5,4,15, 4,0,9,2,7,47, + 4,0,8,2,8,47, 4,0,7,2,9,47, 4,0,7,6,11,31, 5,15,11,2,5,32, 5,15,11,3,5,32, 5,15,11,5,5,0, 5,15,10,2,6,32, 5,15,10,3,6,32, + 5,15,9,2,7,32, 5,15,9,3,7,32, 5,15,8,2,8,32, 5,15,8,3,8,32, 5,15,7,2,9,32, 5,15,7,3,9,32, 5,15,6,2,10,32, 5,15,6,3,10,32, + 5,15,6,6,10,16, 5,14,12,3,4,33, 5,14,12,5,5,1, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,13,3,3,34, 5,13,13,5,5,2, 5,13,4,3,12,34, + 5,13,4,6,10,18, 5,12,13,5,5,3, 5,12,4,6,10,19, 5,11,13,5,5,4, 5,11,3,3,13,36, 5,11,3,6,10,20, 5,10,13,5,5,5, 5,10,3,6,10,21, + 5,9,13,5,5,6, 5,9,3,4,5,6, 5,9,3,6,10,22, 5,8,13,5,5,7, 5,8,4,4,5,7, 5,8,4,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, + 5,7,5,4,5,8, 5,7,5,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,6,6,10,25, 5,5,11,5,5,10, 5,5,6,6,10,26, 5,4,11,5,5,11, + 5,4,6,6,10,27, 5,3,11,5,5,12, 5,3,6,6,10,28, 5,2,11,5,5,13, 5,2,6,6,10,29, 5,1,11,4,5,14, 5,1,11,5,5,14, 5,1,6,4,5,14, + 5,1,6,6,10,30, 5,0,10,5,5,15, 5,0,7,6,10,31, 6,15,11,3,5,32, 6,15,11,5,6,0, 6,15,10,3,6,32, 6,15,9,3,7,32, 6,15,8,3,8,32, + 6,15,7,3,9,32, 6,15,6,3,10,32, 6,15,6,6,9,16, 6,14,12,3,4,33, 6,14,12,5,6,1, 6,14,5,3,11,33, 6,14,5,6,9,17, 6,13,13,3,3,34, + 6,13,13,5,6,2, 6,13,4,3,12,34, 6,13,4,6,9,18, 6,12,13,5,6,3, 6,12,4,6,9,19, 6,11,13,5,6,4, 6,11,3,3,13,36, 6,11,3,6,9,20, + 6,10,13,5,6,5, 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,3,4,6,6, 6,9,3,6,9,22, 6,8,13,5,6,7, 6,8,4,4,6,7, 6,8,4,6,9,23, + 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,5,4,6,8, 6,7,5,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,6,6,9,25, 6,5,11,5,6,10, + 6,5,6,6,9,26, 6,4,11,5,6,11, 6,4,6,6,9,27, 6,3,11,5,6,12, 6,3,6,6,9,28, 6,2,11,5,6,13, 6,2,6,6,9,29, 6,1,11,4,6,14, + 6,1,11,5,6,14, 6,1,6,4,6,14, 6,1,6,6,9,30, 6,0,10,1,6,47, 6,0,10,5,6,15, 6,0,9,1,7,47, 6,0,8,1,8,47, 6,0,7,1,9,47, + 6,0,7,6,9,31, 7,15,11,3,5,32, 7,15,11,5,7,0, 7,15,10,3,6,32, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, 7,15,6,3,10,32, + 7,15,6,6,8,16, 7,14,12,3,4,33, 7,14,12,5,7,1, 7,14,5,3,11,33, 7,14,5,6,8,17, 7,13,13,3,3,34, 7,13,13,5,7,2, 7,13,4,3,12,34, + 7,13,4,6,8,18, 7,12,13,5,7,3, 7,12,4,6,8,19, 7,11,13,5,7,4, 7,11,3,3,13,36, 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,6,8,21, + 7,9,13,5,7,6, 7,9,3,4,7,6, 7,9,3,6,8,22, 7,8,13,5,7,7, 7,8,4,4,7,7, 7,8,4,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, + 7,7,5,4,7,8, 7,7,5,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,6,6,8,25, 7,5,11,5,7,10, 7,5,6,6,8,26, 7,4,11,5,7,11, + 7,4,6,6,8,27, 7,3,11,5,7,12, 7,3,6,6,8,28, 7,2,11,5,7,13, 7,2,6,6,8,29, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, + 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,6,6,8,30, 8,15,11,3,5,32, 8,15,11,5,8,0, 8,15,10,3,6,32, + 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,6,6,7,16, 8,14,12,3,4,33, 8,14,12,5,8,1, 8,14,5,3,11,33, + 8,14,5,6,7,17, 8,13,13,3,3,34, 8,13,13,5,8,2, 8,13,4,3,12,34, 8,13,4,6,7,18, 8,12,13,5,8,3, 8,12,4,6,7,19, 8,11,13,5,8,4, + 8,11,3,3,13,36, 8,11,3,6,7,20, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,4,8,6, 8,9,3,6,7,22, 8,8,13,5,8,7, + 8,8,4,4,8,7, 8,8,4,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,5,4,8,8, 8,7,5,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, + 8,6,6,6,7,25, 8,5,11,5,8,10, 8,5,6,6,7,26, 8,4,11,5,8,11, 8,4,6,6,7,27, 8,3,11,5,8,12, 8,3,6,6,7,28, 8,2,11,5,8,13, + 8,2,6,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, + 8,1,6,6,7,30, 9,15,11,3,5,32, 9,15,11,5,9,0, 9,15,10,3,6,32, 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, 9,15,6,3,10,32, + 9,15,6,6,6,16, 9,14,12,3,4,33, 9,14,12,5,9,1, 9,14,5,3,11,33, 9,14,5,6,6,17, 9,13,13,3,3,34, 9,13,13,5,9,2, 9,13,4,3,12,34, + 9,13,4,6,6,18, 9,12,13,5,9,3, 9,12,4,6,6,19, 9,11,13,5,9,4, 9,11,3,3,13,36, 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,6,6,21, + 9,9,13,5,9,6, 9,9,3,4,9,6, 9,9,3,6,6,22, 9,8,13,5,9,7, 9,8,4,4,9,7, 9,8,4,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, + 9,7,5,4,9,8, 9,7,5,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,6,6,6,25, 9,5,11,5,9,10, 9,5,6,6,6,26, 9,4,11,5,9,11, + 9,4,6,6,6,27, 9,3,11,5,9,12, 9,3,6,6,6,28, 9,2,11,5,9,13, 9,2,6,6,6,29, 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,6,4,9,14, + 9,1,6,6,6,30, 9,0,10,2,6,47, 9,0,10,5,9,15, 9,0,9,2,7,47, 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,7,6,6,31, 10,15,11,1,5,32, + 10,15,11,3,5,32, 10,15,11,5,10,0, 10,15,10,1,6,32, 10,15,10,3,6,32, 10,15,9,1,7,32, 10,15,9,3,7,32, 10,15,8,1,8,32, 10,15,8,3,8,32, + 10,15,7,1,9,32, 10,15,7,3,9,32, 10,15,6,1,10,32, 10,15,6,3,10,32, 10,15,6,6,5,16, 10,14,12,3,4,33, 10,14,12,5,10,1, 10,14,5,3,11,33, + 10,14,5,6,5,17, 10,13,13,3,3,34, 10,13,13,5,10,2, 10,13,4,3,12,34, 10,13,4,6,5,18, 10,12,13,5,10,3, 10,12,4,6,5,19, 10,11,13,5,10,4, + 10,11,3,3,13,36, 10,11,3,6,5,20, 10,10,13,5,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,3,4,10,6, 10,9,3,6,5,22, 10,8,13,5,10,7, + 10,8,4,4,10,7, 10,8,4,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,5,4,10,8, 10,7,5,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, + 10,6,6,6,5,25, 10,5,11,5,10,10, 10,5,6,6,5,26, 10,4,11,5,10,11, 10,4,6,6,5,27, 10,3,11,5,10,12, 10,3,6,6,5,28, 10,2,11,5,10,13, + 10,2,6,6,5,29, 10,1,11,4,10,14, 10,1,11,5,10,14, 10,1,6,4,10,14, 10,1,6,6,5,30, 10,0,10,5,10,15, 10,0,7,6,5,31, 11,14,12,1,4,33, + 11,14,12,3,4,33, 11,14,12,5,11,1, 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, + 11,14,8,1,8,33, 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, + 11,14,5,6,4,17, 11,13,13,3,3,34, 11,13,13,5,11,2, 11,13,4,3,12,34, 11,13,4,6,4,18, 11,12,13,5,11,3, 11,12,4,6,4,19, 11,11,13,5,11,4, + 11,11,3,3,13,36, 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,4,11,6, 11,9,3,6,4,22, 11,8,13,5,11,7, + 11,8,4,4,11,7, 11,8,4,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,5,4,11,8, 11,7,5,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, + 11,6,6,6,4,25, 11,5,11,5,11,10, 11,5,6,6,4,26, 11,4,11,5,11,11, 11,4,6,6,4,27, 11,3,11,5,11,12, 11,3,6,6,4,28, 11,2,11,5,11,13, + 11,2,6,6,4,29, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,6,4,11,14, 11,1,6,6,4,30, 11,0,10,1,6,47, 11,0,10,5,11,15, 11,0,9,1,7,47, + 11,0,8,1,8,47, 11,0,7,1,9,47, 11,0,7,6,4,31, 12,13,13,1,3,34, 12,13,13,3,3,34, 12,13,13,5,12,2, 12,13,12,1,4,34, 12,13,12,3,4,34, + 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, + 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,4,1,12,34, 12,13,4,3,12,34, + 12,13,4,6,3,18, 12,12,13,1,3,35, 12,12,13,5,12,3, 12,12,12,1,4,35, 12,12,11,1,5,35, 12,12,10,1,6,35, 12,12,9,1,7,35, 12,12,8,1,8,35, + 12,12,7,1,9,35, 12,12,6,1,10,35, 12,12,5,1,11,35, 12,12,4,1,12,35, 12,12,4,6,3,19, 12,11,13,5,12,4, 12,11,3,3,13,36, 12,11,3,6,3,20, + 12,10,13,5,12,5, 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,3,4,12,6, 12,9,3,6,3,22, 12,8,13,5,12,7, 12,8,4,4,12,7, 12,8,4,6,3,23, + 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,5,4,12,8, 12,7,5,6,3,24, 12,6,12,1,4,41, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,11,1,5,41, + 12,6,10,1,6,41, 12,6,9,1,7,41, 12,6,8,1,8,41, 12,6,7,1,9,41, 12,6,6,1,10,41, 12,6,6,6,3,25, 12,5,11,5,12,10, 12,5,6,6,3,26, + 12,4,11,5,12,11, 12,4,6,6,3,27, 12,3,11,1,5,44, 12,3,11,5,12,12, 12,3,10,1,6,44, 12,3,9,1,7,44, 12,3,8,1,8,44, 12,3,7,1,9,44, + 12,3,6,1,10,44, 12,3,6,6,3,28, 12,2,11,1,5,45, 12,2,11,5,12,13, 12,2,10,1,6,45, 12,2,9,1,7,45, 12,2,8,1,8,45, 12,2,7,1,9,45, + 12,2,6,1,10,45, 12,2,6,6,3,29, 12,1,11,1,5,46, 12,1,11,4,3,30, 12,1,11,5,3,30, 12,1,10,1,6,46, 12,1,10,4,3,30, 12,1,9,1,7,46, + 12,1,9,4,3,30, 12,1,8,1,8,46, 12,1,8,4,3,30, 12,1,7,1,9,46, 12,1,7,4,3,30, 12,1,6,1,10,46, 12,1,6,4,3,30, 12,1,6,6,3,30, + 13,11,13,1,3,36, 13,11,13,3,3,36, 13,11,13,5,13,4, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, 13,11,11,3,5,36, 13,11,10,1,6,36, + 13,11,10,3,6,36, 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, 13,11,7,3,9,36, 13,11,6,1,10,36, + 13,11,6,3,10,36, 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, 13,11,3,3,13,36, 13,11,3,6,2,20, + 13,10,13,1,3,37, 13,10,13,5,13,5, 13,10,12,1,4,37, 13,10,11,1,5,37, 13,10,10,1,6,37, 13,10,9,1,7,37, 13,10,8,1,8,37, 13,10,7,1,9,37, + 13,10,6,1,10,37, 13,10,5,1,11,37, 13,10,4,1,12,37, 13,10,3,1,13,37, 13,10,3,6,2,21, 13,9,13,5,13,6, 13,9,3,4,13,6, 13,9,3,6,2,22, + 13,8,13,5,13,7, 13,8,4,4,13,7, 13,8,4,6,2,23, 13,7,13,1,3,40, 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,12,1,4,40, 13,7,12,4,13,8, + 13,7,11,1,5,40, 13,7,11,4,13,8, 13,7,10,1,6,40, 13,7,10,4,13,8, 13,7,9,1,7,40, 13,7,9,4,13,8, 13,7,8,1,8,40, 13,7,8,4,13,8, + 13,7,7,1,9,40, 13,7,7,4,13,8, 13,7,6,1,10,40, 13,7,6,4,13,8, 13,7,5,1,11,40, 13,7,5,4,13,8, 13,7,5,6,2,24, 13,5,11,1,5,42, + 13,5,11,3,5,42, 13,5,11,5,13,10, 13,5,10,1,6,42, 13,5,10,3,6,42, 13,5,9,1,7,42, 13,5,9,3,7,42, 13,5,8,1,8,42, 13,5,8,3,8,42, + 13,5,7,1,9,42, 13,5,7,3,9,42, 13,5,6,1,10,42, 13,5,6,3,10,42, 13,5,6,6,2,26, 13,4,11,1,5,43, 13,4,11,4,13,11, 13,4,11,5,13,11, + 13,4,10,1,6,43, 13,4,10,4,13,11, 13,4,9,1,7,43, 13,4,9,4,13,11, 13,4,8,1,8,43, 13,4,8,4,13,11, 13,4,7,1,9,43, 13,4,7,4,13,11, + 13,4,6,1,10,43, 13,4,6,4,13,11, 13,4,6,6,2,27, 14,9,13,1,3,38, 14,9,13,3,3,38, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,12,3,4,38, + 14,9,11,1,5,38, 14,9,11,3,5,38, 14,9,10,1,6,38, 14,9,10,3,6,38, 14,9,9,1,7,38, 14,9,9,3,7,38, 14,9,8,1,8,38, 14,9,8,3,8,38, + 14,9,7,1,9,38, 14,9,7,3,9,38, 14,9,6,1,10,38, 14,9,6,3,10,38, 14,9,5,1,11,38, 14,9,5,3,11,38, 14,9,4,1,12,38, 14,9,4,3,12,38, + 14,9,3,1,13,38, 14,9,3,3,13,38, 14,9,3,4,14,6, 14,9,3,6,1,22, 14,8,13,1,3,39, 14,8,13,4,14,7, 14,8,13,5,14,7, 14,8,12,1,4,39, + 14,8,12,4,14,7, 14,8,11,1,5,39, 14,8,11,4,14,7, 14,8,10,1,6,39, 14,8,10,4,14,7, 14,8,9,1,7,39, 14,8,9,4,14,7, 14,8,8,1,8,39, + 14,8,8,4,14,7, 14,8,7,1,9,39, 14,8,7,4,14,7, 14,8,6,1,10,39, 14,8,6,4,14,7, 14,8,5,1,11,39, 14,8,5,4,14,7, 14,8,4,1,12,39, + 14,8,4,4,14,7, 14,8,4,6,1,23, + }, + }, + }, +} diff --git a/assets/voxels/hiker.lua b/assets/voxels/hiker.lua new file mode 100644 index 0000000..f1db6d4 --- /dev/null +++ b/assets/voxels/hiker.lua @@ -0,0 +1,285 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "hiker" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "hiker", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1664, + count = 1050, + faces = { + 0,6,11,2,5,41, 0,6,11,3,5,41, 0,6,11,5,0,9, 0,6,10,2,6,41, 0,6,10,3,6,41, 0,6,9,2,7,41, 0,6,9,3,7,41, 0,6,8,2,8,41, + 0,6,8,3,8,41, 0,6,7,2,9,41, 0,6,7,3,9,41, 0,6,6,2,10,41, 0,6,6,3,10,41, 0,6,5,2,11,41, 0,6,5,3,11,41, 0,6,5,6,15,25, + 0,5,12,2,4,42, 0,5,12,3,4,42, 0,5,12,5,0,10, 0,5,11,2,5,42, 0,5,10,2,6,42, 0,5,9,2,7,42, 0,5,8,2,8,42, 0,5,7,2,9,42, + 0,5,6,2,10,42, 0,5,5,2,11,42, 0,5,5,6,15,26, 0,4,12,2,4,43, 0,4,12,4,0,11, 0,4,12,5,0,11, 0,4,11,2,5,43, 0,4,11,4,0,11, + 0,4,10,2,6,43, 0,4,10,4,0,11, 0,4,9,2,7,43, 0,4,9,4,0,11, 0,4,8,2,8,43, 0,4,8,4,0,11, 0,4,7,2,9,43, 0,4,7,4,0,11, + 0,4,6,2,10,43, 0,4,6,4,0,11, 0,4,5,2,11,43, 0,4,5,4,0,11, 0,4,5,6,15,27, 1,10,13,2,3,37, 1,10,13,3,3,37, 1,10,13,5,1,5, + 1,10,12,2,4,37, 1,10,12,3,4,37, 1,10,11,2,5,37, 1,10,11,3,5,37, 1,10,10,2,6,37, 1,10,10,3,6,37, 1,10,9,2,7,37, 1,10,9,3,7,37, + 1,10,8,2,8,37, 1,10,8,3,8,37, 1,10,7,2,9,37, 1,10,7,3,9,37, 1,10,6,2,10,37, 1,10,6,3,10,37, 1,10,5,2,11,37, 1,10,5,3,11,37, + 1,10,4,2,12,37, 1,10,4,3,12,37, 1,10,3,2,13,37, 1,10,3,3,13,37, 1,10,3,6,14,21, 1,9,13,2,3,38, 1,9,13,4,1,6, 1,9,13,5,1,6, + 1,9,12,2,4,38, 1,9,12,4,1,6, 1,9,11,2,5,38, 1,9,11,4,1,6, 1,9,10,2,6,38, 1,9,10,4,1,6, 1,9,9,2,7,38, 1,9,9,4,1,6, + 1,9,8,2,8,38, 1,9,8,4,1,6, 1,9,7,2,9,38, 1,9,7,4,1,6, 1,9,6,2,10,38, 1,9,6,4,1,6, 1,9,5,2,11,38, 1,9,5,4,1,6, + 1,9,4,2,12,38, 1,9,4,4,1,6, 1,9,3,2,13,38, 1,9,3,4,1,6, 1,9,3,6,14,22, 1,7,12,2,4,40, 1,7,12,3,4,40, 1,7,12,4,1,8, + 1,7,12,5,1,8, 1,7,11,2,5,40, 1,7,11,3,5,40, 1,7,10,2,6,40, 1,7,10,3,6,40, 1,7,9,2,7,40, 1,7,9,3,7,40, 1,7,8,2,8,40, + 1,7,8,3,8,40, 1,7,7,2,9,40, 1,7,7,3,9,40, 1,7,6,2,10,40, 1,7,6,3,10,40, 1,7,5,2,11,40, 1,7,5,3,11,40, 1,7,4,2,12,40, + 1,7,4,3,12,40, 1,7,4,4,1,8, 1,7,4,6,14,24, 1,6,11,5,1,9, 1,6,5,6,14,25, 1,5,12,3,4,42, 1,5,12,5,1,10, 1,5,5,6,14,26, + 1,4,12,4,1,11, 1,4,12,5,1,11, 1,4,5,6,14,27, 1,3,11,2,5,44, 1,3,11,4,1,12, 1,3,11,5,1,12, 1,3,10,2,6,44, 1,3,10,4,1,12, + 1,3,9,2,7,44, 1,3,9,4,1,12, 1,3,8,2,8,44, 1,3,8,4,1,12, 1,3,7,2,9,44, 1,3,7,4,1,12, 1,3,6,2,10,44, 1,3,6,4,1,12, + 1,3,5,2,11,44, 1,3,5,4,1,12, 1,3,5,6,14,28, 2,11,13,2,3,36, 2,11,13,3,3,36, 2,11,13,5,2,4, 2,11,12,2,4,36, 2,11,12,3,4,36, + 2,11,11,2,5,36, 2,11,11,3,5,36, 2,11,10,2,6,36, 2,11,10,3,6,36, 2,11,9,2,7,36, 2,11,9,3,7,36, 2,11,8,2,8,36, 2,11,8,3,8,36, + 2,11,7,2,9,36, 2,11,7,3,9,36, 2,11,6,2,10,36, 2,11,6,3,10,36, 2,11,5,2,11,36, 2,11,5,3,11,36, 2,11,4,2,12,36, 2,11,4,3,12,36, + 2,11,3,2,13,36, 2,11,3,3,13,36, 2,11,3,6,13,20, 2,10,13,5,2,5, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,3,6,13,22, 2,8,13,2,3,39, + 2,8,13,4,2,7, 2,8,13,5,2,7, 2,8,12,2,4,39, 2,8,11,2,5,39, 2,8,10,2,6,39, 2,8,9,2,7,39, 2,8,8,2,8,39, 2,8,7,2,9,39, + 2,8,6,2,10,39, 2,8,5,2,11,39, 2,8,4,2,12,39, 2,8,3,2,13,39, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,12,4,2,8, 2,7,12,5,2,8, + 2,7,4,4,2,8, 2,7,4,6,13,24, 2,6,11,5,2,9, 2,6,5,6,13,25, 2,5,12,3,4,42, 2,5,12,5,2,10, 2,5,5,6,13,26, 2,4,12,4,2,11, + 2,4,12,5,2,11, 2,4,5,6,13,27, 2,3,11,4,2,12, 2,3,11,5,2,12, 2,3,10,4,2,12, 2,3,9,4,2,12, 2,3,8,4,2,12, 2,3,7,4,2,12, + 2,3,6,4,2,12, 2,3,5,4,2,12, 2,3,5,6,13,28, 2,0,12,2,4,47, 2,0,12,3,4,47, 2,0,12,5,2,15, 2,0,11,2,5,47, 2,0,11,3,5,47, + 2,0,10,2,6,47, 2,0,10,3,6,47, 2,0,9,2,7,47, 2,0,9,3,7,47, 2,0,8,2,8,47, 2,0,8,3,8,47, 2,0,7,2,9,47, 2,0,7,3,9,47, + 2,0,6,2,10,47, 2,0,6,3,10,47, 2,0,6,6,13,31, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,12,5,3,2, 3,13,11,2,5,34, 3,13,11,3,5,34, + 3,13,10,2,6,34, 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, + 3,13,6,2,10,34, 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,4,6,12,18, 3,12,13,2,3,35, + 3,12,13,3,3,35, 3,12,13,5,3,3, 3,12,12,2,4,35, 3,12,11,2,5,35, 3,12,10,2,6,35, 3,12,9,2,7,35, 3,12,8,2,8,35, 3,12,7,2,9,35, + 3,12,6,2,10,35, 3,12,5,2,11,35, 3,12,4,2,12,35, 3,12,3,2,13,35, 3,12,3,3,13,35, 3,12,3,6,12,19, 3,11,13,5,3,4, 3,11,3,6,12,20, + 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,3,6,12,22, 3,8,13,4,3,7, 3,8,13,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, + 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,4,4,3,8, 3,7,4,6,12,24, 3,6,11,5,3,9, 3,6,5,6,12,25, 3,5,12,3,4,42, 3,5,12,5,3,10, + 3,5,5,6,12,26, 3,4,12,4,3,11, 3,4,12,5,3,11, 3,4,5,6,12,27, 3,3,11,5,3,12, 3,3,5,6,12,28, 3,2,11,2,5,45, 3,2,11,5,3,13, + 3,2,10,2,6,45, 3,2,9,2,7,45, 3,2,8,2,8,45, 3,2,7,2,9,45, 3,2,6,2,10,45, 3,2,5,2,11,45, 3,2,5,4,3,13, 3,2,5,6,12,29, + 3,1,11,2,5,46, 3,1,11,5,3,14, 3,1,10,2,6,46, 3,1,9,2,7,46, 3,1,8,2,8,46, 3,1,7,2,9,46, 3,1,6,2,10,46, 3,1,6,6,12,30, + 3,0,12,3,4,47, 3,0,12,5,3,15, 3,0,6,6,12,31, 4,14,12,2,4,33, 4,14,12,3,4,33, 4,14,12,5,4,1, 4,14,11,2,5,33, 4,14,11,3,5,33, + 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, + 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,5,2,11,33, 4,14,5,3,11,33, 4,14,5,6,11,17, 4,13,12,5,4,2, 4,13,4,3,12,34, 4,13,4,6,11,18, + 4,12,13,3,3,35, 4,12,13,5,4,3, 4,12,3,3,13,35, 4,12,3,6,11,19, 4,11,13,5,4,4, 4,11,3,6,11,20, 4,10,13,5,4,5, 4,10,3,6,11,21, + 4,9,13,5,4,6, 4,9,3,6,11,22, 4,8,13,4,4,7, 4,8,13,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, + 4,7,4,4,4,8, 4,7,4,6,11,24, 4,6,11,5,4,9, 4,6,5,6,11,25, 4,5,12,3,4,42, 4,5,12,5,4,10, 4,5,5,6,11,26, 4,4,12,4,4,11, + 4,4,12,5,4,11, 4,4,5,6,11,27, 4,3,11,5,4,12, 4,3,5,6,11,28, 4,2,11,5,4,13, 4,2,5,4,4,13, 4,2,5,6,11,29, 4,1,11,5,4,14, + 4,1,6,6,11,30, 4,0,12,3,4,47, 4,0,12,5,4,15, 4,0,6,6,11,31, 5,15,11,2,5,32, 5,15,11,3,5,32, 5,15,11,5,5,0, 5,15,10,2,6,32, + 5,15,10,3,6,32, 5,15,9,2,7,32, 5,15,9,3,7,32, 5,15,8,2,8,32, 5,15,8,3,8,32, 5,15,7,2,9,32, 5,15,7,3,9,32, 5,15,6,2,10,32, + 5,15,6,3,10,32, 5,15,6,6,10,16, 5,14,12,3,4,33, 5,14,12,5,5,1, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,12,5,5,2, 5,13,4,3,12,34, + 5,13,4,6,10,18, 5,12,13,3,3,35, 5,12,13,5,5,3, 5,12,3,3,13,35, 5,12,3,6,10,19, 5,11,13,5,5,4, 5,11,3,6,10,20, 5,10,13,5,5,5, + 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,3,6,10,22, 5,8,13,4,5,7, 5,8,13,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, + 5,7,12,5,5,8, 5,7,4,4,5,8, 5,7,4,6,10,24, 5,6,11,5,5,9, 5,6,5,6,10,25, 5,5,12,3,4,42, 5,5,12,5,5,10, 5,5,5,6,10,26, + 5,4,12,4,5,11, 5,4,12,5,5,11, 5,4,5,6,10,27, 5,3,11,5,5,12, 5,3,5,6,10,28, 5,2,11,5,5,13, 5,2,5,4,5,13, 5,2,5,6,10,29, + 5,1,11,5,5,14, 5,1,6,6,10,30, 5,0,12,3,4,47, 5,0,12,5,5,15, 5,0,6,6,10,31, 6,15,11,3,5,32, 6,15,11,5,6,0, 6,15,10,3,6,32, + 6,15,9,3,7,32, 6,15,8,3,8,32, 6,15,7,3,9,32, 6,15,6,3,10,32, 6,15,6,6,9,16, 6,14,12,3,4,33, 6,14,12,5,6,1, 6,14,5,3,11,33, + 6,14,5,6,9,17, 6,13,12,5,6,2, 6,13,4,3,12,34, 6,13,4,6,9,18, 6,12,13,3,3,35, 6,12,13,5,6,3, 6,12,3,3,13,35, 6,12,3,6,9,19, + 6,11,13,5,6,4, 6,11,3,6,9,20, 6,10,13,5,6,5, 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,3,6,9,22, 6,8,13,4,6,7, 6,8,13,5,6,7, + 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,4,4,6,8, 6,7,4,6,9,24, 6,6,11,5,6,9, 6,6,5,6,9,25, + 6,5,12,3,4,42, 6,5,12,5,6,10, 6,5,5,6,9,26, 6,4,12,4,6,11, 6,4,12,5,6,11, 6,4,5,6,9,27, 6,3,11,5,6,12, 6,3,5,6,9,28, + 6,2,11,5,6,13, 6,2,5,4,6,13, 6,2,5,6,9,29, 6,1,11,5,6,14, 6,1,6,6,9,30, 6,0,12,1,4,47, 6,0,12,3,4,47, 6,0,12,5,6,15, + 6,0,11,1,5,47, 6,0,10,1,6,47, 6,0,9,1,7,47, 6,0,8,1,8,47, 6,0,7,1,9,47, 6,0,6,1,10,47, 6,0,6,6,9,31, 7,15,11,3,5,32, + 7,15,11,5,7,0, 7,15,10,3,6,32, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, 7,15,6,3,10,32, 7,15,6,6,8,16, 7,14,12,3,4,33, + 7,14,12,5,7,1, 7,14,5,3,11,33, 7,14,5,6,8,17, 7,13,12,5,7,2, 7,13,4,3,12,34, 7,13,4,6,8,18, 7,12,13,3,3,35, 7,12,13,5,7,3, + 7,12,3,3,13,35, 7,12,3,6,8,19, 7,11,13,5,7,4, 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,3,6,8,22, + 7,8,13,4,7,7, 7,8,13,5,7,7, 7,8,3,4,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,4,4,7,8, 7,7,4,6,8,24, + 7,6,11,5,7,9, 7,6,5,6,8,25, 7,5,12,3,4,42, 7,5,12,5,7,10, 7,5,5,6,8,26, 7,4,12,4,7,11, 7,4,12,5,7,11, 7,4,5,6,8,27, + 7,3,11,5,7,12, 7,3,5,6,8,28, 7,2,11,5,7,13, 7,2,5,4,7,13, 7,2,5,6,8,29, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, + 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,6,6,8,30, 8,15,11,3,5,32, 8,15,11,5,8,0, 8,15,10,3,6,32, + 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,6,6,7,16, 8,14,12,3,4,33, 8,14,12,5,8,1, 8,14,5,3,11,33, + 8,14,5,6,7,17, 8,13,12,5,8,2, 8,13,4,3,12,34, 8,13,4,6,7,18, 8,12,13,3,3,35, 8,12,13,5,8,3, 8,12,3,3,13,35, 8,12,3,6,7,19, + 8,11,13,5,8,4, 8,11,3,6,7,20, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,6,7,22, 8,8,13,4,8,7, 8,8,13,5,8,7, + 8,8,3,4,8,7, 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,4,8,8, 8,7,4,6,7,24, 8,6,11,5,8,9, 8,6,5,6,7,25, + 8,5,12,3,4,42, 8,5,12,5,8,10, 8,5,5,6,7,26, 8,4,12,4,8,11, 8,4,12,5,8,11, 8,4,5,6,7,27, 8,3,11,5,8,12, 8,3,5,6,7,28, + 8,2,11,5,8,13, 8,2,5,4,8,13, 8,2,5,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, + 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,6,6,7,30, 9,15,11,3,5,32, 9,15,11,5,9,0, 9,15,10,3,6,32, 9,15,9,3,7,32, 9,15,8,3,8,32, + 9,15,7,3,9,32, 9,15,6,3,10,32, 9,15,6,6,6,16, 9,14,12,3,4,33, 9,14,12,5,9,1, 9,14,5,3,11,33, 9,14,5,6,6,17, 9,13,12,5,9,2, + 9,13,4,3,12,34, 9,13,4,6,6,18, 9,12,13,3,3,35, 9,12,13,5,9,3, 9,12,3,3,13,35, 9,12,3,6,6,19, 9,11,13,5,9,4, 9,11,3,6,6,20, + 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, 9,9,3,6,6,22, 9,8,13,4,9,7, 9,8,13,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, + 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,4,4,9,8, 9,7,4,6,6,24, 9,6,11,5,9,9, 9,6,5,6,6,25, 9,5,12,3,4,42, 9,5,12,5,9,10, + 9,5,5,6,6,26, 9,4,12,4,9,11, 9,4,12,5,9,11, 9,4,5,6,6,27, 9,3,11,5,9,12, 9,3,5,6,6,28, 9,2,11,5,9,13, 9,2,5,4,9,13, + 9,2,5,6,6,29, 9,1,11,5,9,14, 9,1,6,6,6,30, 9,0,12,2,4,47, 9,0,12,3,4,47, 9,0,12,5,9,15, 9,0,11,2,5,47, 9,0,10,2,6,47, + 9,0,9,2,7,47, 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,6,2,10,47, 9,0,6,6,6,31, 10,15,11,1,5,32, 10,15,11,3,5,32, 10,15,11,5,10,0, + 10,15,10,1,6,32, 10,15,10,3,6,32, 10,15,9,1,7,32, 10,15,9,3,7,32, 10,15,8,1,8,32, 10,15,8,3,8,32, 10,15,7,1,9,32, 10,15,7,3,9,32, + 10,15,6,1,10,32, 10,15,6,3,10,32, 10,15,6,6,5,16, 10,14,12,3,4,33, 10,14,12,5,10,1, 10,14,5,3,11,33, 10,14,5,6,5,17, 10,13,12,5,10,2, + 10,13,4,3,12,34, 10,13,4,6,5,18, 10,12,13,3,3,35, 10,12,13,5,10,3, 10,12,3,3,13,35, 10,12,3,6,5,19, 10,11,13,5,10,4, 10,11,3,6,5,20, + 10,10,13,5,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,3,6,5,22, 10,8,13,4,10,7, 10,8,13,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, + 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,4,4,10,8, 10,7,4,6,5,24, 10,6,11,5,10,9, 10,6,5,6,5,25, 10,5,12,3,4,42, 10,5,12,5,10,10, + 10,5,5,6,5,26, 10,4,12,4,10,11, 10,4,12,5,10,11, 10,4,5,6,5,27, 10,3,11,5,10,12, 10,3,5,6,5,28, 10,2,11,5,10,13, 10,2,5,4,10,13, + 10,2,5,6,5,29, 10,1,11,5,10,14, 10,1,6,6,5,30, 10,0,12,3,4,47, 10,0,12,5,10,15, 10,0,6,6,5,31, 11,14,12,1,4,33, 11,14,12,3,4,33, + 11,14,12,5,11,1, 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, + 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,5,6,4,17, + 11,13,12,5,11,2, 11,13,4,3,12,34, 11,13,4,6,4,18, 11,12,13,3,3,35, 11,12,13,5,11,3, 11,12,3,3,13,35, 11,12,3,6,4,19, 11,11,13,5,11,4, + 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,6,4,22, 11,8,13,4,11,7, 11,8,13,5,11,7, 11,8,3,4,11,7, + 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,4,4,11,8, 11,7,4,6,4,24, 11,6,11,5,11,9, 11,6,5,6,4,25, 11,5,12,3,4,42, + 11,5,12,5,11,10, 11,5,5,6,4,26, 11,4,12,4,11,11, 11,4,12,5,11,11, 11,4,5,6,4,27, 11,3,11,5,11,12, 11,3,5,6,4,28, 11,2,11,5,11,13, + 11,2,5,4,11,13, 11,2,5,6,4,29, 11,1,11,5,11,14, 11,1,6,6,4,30, 11,0,12,3,4,47, 11,0,12,5,11,15, 11,0,6,6,4,31, 12,13,12,1,4,34, + 12,13,12,3,4,34, 12,13,12,5,12,2, 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, + 12,13,8,1,8,34, 12,13,8,3,8,34, 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, + 12,13,4,1,12,34, 12,13,4,3,12,34, 12,13,4,6,3,18, 12,12,13,1,3,35, 12,12,13,3,3,35, 12,12,13,5,12,3, 12,12,12,1,4,35, 12,12,11,1,5,35, + 12,12,10,1,6,35, 12,12,9,1,7,35, 12,12,8,1,8,35, 12,12,7,1,9,35, 12,12,6,1,10,35, 12,12,5,1,11,35, 12,12,4,1,12,35, 12,12,3,1,13,35, + 12,12,3,3,13,35, 12,12,3,6,3,19, 12,11,13,5,12,4, 12,11,3,6,3,20, 12,10,13,5,12,5, 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,3,6,3,22, + 12,8,13,4,12,7, 12,8,13,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,4,12,8, 12,7,4,6,3,24, + 12,6,11,5,12,9, 12,6,5,6,3,25, 12,5,12,3,4,42, 12,5,12,5,12,10, 12,5,5,6,3,26, 12,4,12,4,12,11, 12,4,12,5,12,11, 12,4,5,6,3,27, + 12,3,11,5,12,12, 12,3,5,6,3,28, 12,2,11,1,5,45, 12,2,11,5,12,13, 12,2,10,1,6,45, 12,2,9,1,7,45, 12,2,8,1,8,45, 12,2,7,1,9,45, + 12,2,6,1,10,45, 12,2,5,1,11,45, 12,2,5,4,12,13, 12,2,5,6,3,29, 12,1,11,1,5,46, 12,1,11,5,12,14, 12,1,10,1,6,46, 12,1,9,1,7,46, + 12,1,8,1,8,46, 12,1,7,1,9,46, 12,1,6,1,10,46, 12,1,6,6,3,30, 12,0,12,3,4,47, 12,0,12,5,12,15, 12,0,6,6,3,31, 13,11,13,1,3,36, + 13,11,13,3,3,36, 13,11,13,5,13,4, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, 13,11,11,3,5,36, 13,11,10,1,6,36, 13,11,10,3,6,36, + 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, 13,11,7,3,9,36, 13,11,6,1,10,36, 13,11,6,3,10,36, + 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, 13,11,3,3,13,36, 13,11,3,6,2,20, 13,10,13,5,13,5, + 13,10,3,6,2,21, 13,9,13,5,13,6, 13,9,3,6,2,22, 13,8,13,1,3,39, 13,8,13,4,13,7, 13,8,13,5,13,7, 13,8,12,1,4,39, 13,8,11,1,5,39, + 13,8,10,1,6,39, 13,8,9,1,7,39, 13,8,8,1,8,39, 13,8,7,1,9,39, 13,8,6,1,10,39, 13,8,5,1,11,39, 13,8,4,1,12,39, 13,8,3,1,13,39, + 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,4,4,13,8, 13,7,4,6,2,24, 13,6,11,5,13,9, 13,6,5,6,2,25, + 13,5,12,3,4,42, 13,5,12,5,13,10, 13,5,5,6,2,26, 13,4,12,4,13,11, 13,4,12,5,13,11, 13,4,5,6,2,27, 13,3,11,4,13,12, 13,3,11,5,13,12, + 13,3,10,4,13,12, 13,3,9,4,13,12, 13,3,8,4,13,12, 13,3,7,4,13,12, 13,3,6,4,13,12, 13,3,5,4,13,12, 13,3,5,6,2,28, 13,0,12,1,4,47, + 13,0,12,3,4,47, 13,0,12,5,13,15, 13,0,11,1,5,47, 13,0,11,3,5,47, 13,0,10,1,6,47, 13,0,10,3,6,47, 13,0,9,1,7,47, 13,0,9,3,7,47, + 13,0,8,1,8,47, 13,0,8,3,8,47, 13,0,7,1,9,47, 13,0,7,3,9,47, 13,0,6,1,10,47, 13,0,6,3,10,47, 13,0,6,6,2,31, 14,10,13,1,3,37, + 14,10,13,3,3,37, 14,10,13,5,14,5, 14,10,12,1,4,37, 14,10,12,3,4,37, 14,10,11,1,5,37, 14,10,11,3,5,37, 14,10,10,1,6,37, 14,10,10,3,6,37, + 14,10,9,1,7,37, 14,10,9,3,7,37, 14,10,8,1,8,37, 14,10,8,3,8,37, 14,10,7,1,9,37, 14,10,7,3,9,37, 14,10,6,1,10,37, 14,10,6,3,10,37, + 14,10,5,1,11,37, 14,10,5,3,11,37, 14,10,4,1,12,37, 14,10,4,3,12,37, 14,10,3,1,13,37, 14,10,3,3,13,37, 14,10,3,6,1,21, 14,9,13,1,3,38, + 14,9,13,4,14,6, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,12,4,14,6, 14,9,11,1,5,38, 14,9,11,4,14,6, 14,9,10,1,6,38, 14,9,10,4,14,6, + 14,9,9,1,7,38, 14,9,9,4,14,6, 14,9,8,1,8,38, 14,9,8,4,14,6, 14,9,7,1,9,38, 14,9,7,4,14,6, 14,9,6,1,10,38, 14,9,6,4,14,6, + 14,9,5,1,11,38, 14,9,5,4,14,6, 14,9,4,1,12,38, 14,9,4,4,14,6, 14,9,3,1,13,38, 14,9,3,4,14,6, 14,9,3,6,1,22, 14,7,12,1,4,40, + 14,7,12,3,4,40, 14,7,12,4,14,8, 14,7,12,5,14,8, 14,7,11,1,5,40, 14,7,11,3,5,40, 14,7,10,1,6,40, 14,7,10,3,6,40, 14,7,9,1,7,40, + 14,7,9,3,7,40, 14,7,8,1,8,40, 14,7,8,3,8,40, 14,7,7,1,9,40, 14,7,7,3,9,40, 14,7,6,1,10,40, 14,7,6,3,10,40, 14,7,5,1,11,40, + 14,7,5,3,11,40, 14,7,4,1,12,40, 14,7,4,3,12,40, 14,7,4,4,14,8, 14,7,4,6,1,24, 14,6,11,5,14,9, 14,6,5,6,1,25, 14,5,12,3,4,42, + 14,5,12,5,14,10, 14,5,5,6,1,26, 14,4,12,4,14,11, 14,4,12,5,14,11, 14,4,5,6,1,27, 14,3,11,1,5,44, 14,3,11,4,14,12, 14,3,11,5,14,12, + 14,3,10,1,6,44, 14,3,10,4,14,12, 14,3,9,1,7,44, 14,3,9,4,14,12, 14,3,8,1,8,44, 14,3,8,4,14,12, 14,3,7,1,9,44, 14,3,7,4,14,12, + 14,3,6,1,10,44, 14,3,6,4,14,12, 14,3,5,1,11,44, 14,3,5,4,14,12, 14,3,5,6,1,28, 15,6,11,1,5,41, 15,6,11,3,5,41, 15,6,11,5,15,9, + 15,6,10,1,6,41, 15,6,10,3,6,41, 15,6,9,1,7,41, 15,6,9,3,7,41, 15,6,8,1,8,41, 15,6,8,3,8,41, 15,6,7,1,9,41, 15,6,7,3,9,41, + 15,6,6,1,10,41, 15,6,6,3,10,41, 15,6,5,1,11,41, 15,6,5,3,11,41, 15,6,5,6,0,25, 15,5,12,1,4,42, 15,5,12,3,4,42, 15,5,12,5,15,10, + 15,5,11,1,5,42, 15,5,10,1,6,42, 15,5,9,1,7,42, 15,5,8,1,8,42, 15,5,7,1,9,42, 15,5,6,1,10,42, 15,5,5,1,11,42, 15,5,5,6,0,26, + 15,4,12,1,4,43, 15,4,12,4,15,11, 15,4,12,5,15,11, 15,4,11,1,5,43, 15,4,11,4,15,11, 15,4,10,1,6,43, 15,4,10,4,15,11, 15,4,9,1,7,43, + 15,4,9,4,15,11, 15,4,8,1,8,43, 15,4,8,4,15,11, 15,4,7,1,9,43, 15,4,7,4,15,11, 15,4,6,1,10,43, 15,4,6,4,15,11, 15,4,5,1,11,43, + 15,4,5,4,15,11, 15,4,5,6,0,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1580, + count = 967, + faces = { + 1,9,13,2,3,86, 1,9,13,3,3,86, 1,9,13,5,1,54, 1,9,12,2,4,86, 1,9,12,3,4,86, 1,9,11,2,5,86, 1,9,11,3,5,86, 1,9,10,2,6,86, + 1,9,10,3,6,86, 1,9,9,2,7,86, 1,9,9,3,7,86, 1,9,8,2,8,86, 1,9,8,3,8,86, 1,9,7,2,9,86, 1,9,7,3,9,86, 1,9,6,2,10,86, + 1,9,6,3,10,86, 1,9,5,2,11,86, 1,9,5,3,11,86, 1,9,4,2,12,86, 1,9,4,3,12,86, 1,9,3,2,13,86, 1,9,3,3,13,86, 1,9,3,6,14,70, + 1,8,13,2,3,87, 1,8,13,4,1,55, 1,8,13,5,1,55, 1,8,12,2,4,87, 1,8,12,4,1,55, 1,8,11,2,5,87, 1,8,11,4,1,55, 1,8,10,2,6,87, + 1,8,10,4,1,55, 1,8,9,2,7,87, 1,8,9,4,1,55, 1,8,8,2,8,87, 1,8,8,4,1,55, 1,8,7,2,9,87, 1,8,7,4,1,55, 1,8,6,2,10,87, + 1,8,6,4,1,55, 1,8,5,2,11,87, 1,8,5,4,1,55, 1,8,4,2,12,87, 1,8,4,4,1,55, 1,8,3,2,13,87, 1,8,3,4,1,55, 1,8,3,6,14,71, + 1,5,11,2,5,90, 1,5,11,3,5,90, 1,5,11,5,1,58, 1,5,10,2,6,90, 1,5,10,3,6,90, 1,5,9,2,7,90, 1,5,9,3,7,90, 1,5,8,2,8,90, + 1,5,8,3,8,90, 1,5,7,2,9,90, 1,5,7,3,9,90, 1,5,6,2,10,90, 1,5,6,3,10,90, 1,5,5,2,11,90, 1,5,5,3,11,90, 1,5,4,2,12,90, + 1,5,4,3,12,90, 1,5,4,6,14,74, 1,4,12,2,4,91, 1,4,12,3,4,91, 1,4,12,5,1,59, 1,4,11,2,5,91, 1,4,10,2,6,91, 1,4,9,2,7,91, + 1,4,8,2,8,91, 1,4,7,2,9,91, 1,4,6,2,10,91, 1,4,5,2,11,91, 1,4,4,2,12,91, 1,4,4,6,14,75, 1,3,12,2,4,92, 1,3,12,4,1,60, + 1,3,12,5,1,60, 1,3,11,2,5,92, 1,3,11,4,1,60, 1,3,10,2,6,92, 1,3,10,4,1,60, 1,3,9,2,7,92, 1,3,9,4,1,60, 1,3,8,2,8,92, + 1,3,8,4,1,60, 1,3,7,2,9,92, 1,3,7,4,1,60, 1,3,6,2,10,92, 1,3,6,4,1,60, 1,3,5,2,11,92, 1,3,5,4,1,60, 1,3,4,2,12,92, + 1,3,4,4,1,60, 1,3,4,6,14,76, 2,10,13,2,3,85, 2,10,13,3,3,85, 2,10,13,5,2,53, 2,10,12,2,4,85, 2,10,12,3,4,85, 2,10,11,2,5,85, + 2,10,11,3,5,85, 2,10,10,2,6,85, 2,10,10,3,6,85, 2,10,9,2,7,85, 2,10,9,3,7,85, 2,10,8,2,8,85, 2,10,8,3,8,85, 2,10,7,2,9,85, + 2,10,7,3,9,85, 2,10,6,2,10,85, 2,10,6,3,10,85, 2,10,5,2,11,85, 2,10,5,3,11,85, 2,10,4,2,12,85, 2,10,4,3,12,85, 2,10,3,2,13,85, + 2,10,3,3,13,85, 2,10,3,6,13,69, 2,9,13,5,2,54, 2,9,3,6,13,70, 2,8,13,5,2,55, 2,8,3,6,13,71, 2,7,13,2,3,88, 2,7,13,4,2,56, + 2,7,13,5,2,56, 2,7,12,2,4,88, 2,7,11,2,5,88, 2,7,10,2,6,88, 2,7,9,2,7,88, 2,7,8,2,8,88, 2,7,7,2,9,88, 2,7,6,2,10,88, + 2,7,5,2,11,88, 2,7,4,2,12,88, 2,7,3,2,13,88, 2,7,3,4,2,56, 2,7,3,6,13,72, 2,6,12,2,4,89, 2,6,12,4,2,57, 2,6,12,5,2,57, + 2,6,11,2,5,89, 2,6,10,2,6,89, 2,6,9,2,7,89, 2,6,8,2,8,89, 2,6,7,2,9,89, 2,6,6,2,10,89, 2,6,5,2,11,89, 2,6,4,2,12,89, + 2,6,4,6,13,73, 2,5,11,5,2,58, 2,5,4,6,13,74, 2,4,12,3,4,91, 2,4,12,5,2,59, 2,4,4,6,13,75, 2,3,12,5,2,60, 2,3,4,6,13,76, + 2,2,13,2,3,93, 2,2,13,3,3,93, 2,2,13,4,2,61, 2,2,13,5,2,61, 2,2,12,2,4,93, 2,2,12,4,2,61, 2,2,11,2,5,93, 2,2,11,4,2,61, + 2,2,10,2,6,93, 2,2,10,4,2,61, 2,2,9,2,7,93, 2,2,9,4,2,61, 2,2,8,2,8,93, 2,2,8,4,2,61, 2,2,7,2,9,93, 2,2,7,4,2,61, + 2,2,6,2,10,93, 2,2,6,4,2,61, 2,2,5,2,11,93, 2,2,5,4,2,61, 2,2,4,2,12,93, 2,2,4,4,2,61, 2,2,4,6,13,77, 3,12,12,2,4,83, + 3,12,12,3,4,83, 3,12,12,5,3,51, 3,12,11,2,5,83, 3,12,11,3,5,83, 3,12,10,2,6,83, 3,12,10,3,6,83, 3,12,9,2,7,83, 3,12,9,3,7,83, + 3,12,8,2,8,83, 3,12,8,3,8,83, 3,12,7,2,9,83, 3,12,7,3,9,83, 3,12,6,2,10,83, 3,12,6,3,10,83, 3,12,5,2,11,83, 3,12,5,3,11,83, + 3,12,4,2,12,83, 3,12,4,3,12,83, 3,12,4,6,12,67, 3,11,13,2,3,84, 3,11,13,3,3,84, 3,11,13,5,3,52, 3,11,12,2,4,84, 3,11,11,2,5,84, + 3,11,10,2,6,84, 3,11,9,2,7,84, 3,11,8,2,8,84, 3,11,7,2,9,84, 3,11,6,2,10,84, 3,11,5,2,11,84, 3,11,4,2,12,84, 3,11,3,2,13,84, + 3,11,3,3,13,84, 3,11,3,6,12,68, 3,10,13,5,3,53, 3,10,3,6,12,69, 3,9,13,5,3,54, 3,9,3,6,12,70, 3,8,13,5,3,55, 3,8,3,6,12,71, + 3,7,13,4,3,56, 3,7,13,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, 3,6,12,5,3,57, 3,6,4,6,12,73, 3,5,11,5,3,58, + 3,5,4,6,12,74, 3,4,12,3,4,91, 3,4,12,5,3,59, 3,4,4,6,12,75, 3,3,12,5,3,60, 3,3,4,6,12,76, 3,2,13,3,3,93, 3,2,13,5,3,61, + 3,2,4,4,3,61, 3,2,4,6,12,77, 3,1,13,2,3,94, 3,1,13,4,3,62, 3,1,13,5,3,62, 3,1,12,2,4,94, 3,1,12,4,3,62, 3,1,11,2,5,94, + 3,1,11,4,3,62, 3,1,10,2,6,94, 3,1,10,4,3,62, 3,1,9,2,7,94, 3,1,9,4,3,62, 3,1,8,2,8,94, 3,1,8,4,3,62, 3,1,7,2,9,94, + 3,1,7,4,3,62, 3,1,6,2,10,94, 3,1,6,4,3,62, 3,1,5,2,11,94, 3,1,5,4,3,62, 3,1,5,6,12,78, 4,13,12,2,4,82, 4,13,12,3,4,82, + 4,13,12,5,4,50, 4,13,11,2,5,82, 4,13,11,3,5,82, 4,13,10,2,6,82, 4,13,10,3,6,82, 4,13,9,2,7,82, 4,13,9,3,7,82, 4,13,8,2,8,82, + 4,13,8,3,8,82, 4,13,7,2,9,82, 4,13,7,3,9,82, 4,13,6,2,10,82, 4,13,6,3,10,82, 4,13,5,2,11,82, 4,13,5,3,11,82, 4,13,5,6,11,66, + 4,12,12,5,4,51, 4,12,4,3,12,83, 4,12,4,6,11,67, 4,11,13,3,3,84, 4,11,13,5,4,52, 4,11,3,3,13,84, 4,11,3,6,11,68, 4,10,13,5,4,53, + 4,10,3,6,11,69, 4,9,13,5,4,54, 4,9,3,6,11,70, 4,8,13,5,4,55, 4,8,3,6,11,71, 4,7,13,4,4,56, 4,7,13,5,4,56, 4,7,3,4,4,56, + 4,7,3,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,6,11,73, 4,5,11,5,4,58, 4,5,4,6,11,74, 4,4,12,3,4,91, 4,4,12,5,4,59, + 4,4,4,6,11,75, 4,3,12,5,4,60, 4,3,4,6,11,76, 4,2,13,3,3,93, 4,2,13,5,4,61, 4,2,4,4,4,61, 4,2,4,6,11,77, 4,1,13,4,4,62, + 4,1,13,5,4,62, 4,1,5,4,4,62, 4,1,5,6,11,78, 4,0,12,2,4,95, 4,0,12,5,4,63, 4,0,11,2,5,95, 4,0,10,2,6,95, 4,0,9,2,7,95, + 4,0,8,2,8,95, 4,0,7,2,9,95, 4,0,6,2,10,95, 4,0,6,6,11,79, 5,14,11,2,5,81, 5,14,11,3,5,81, 5,14,11,5,5,49, 5,14,10,2,6,81, + 5,14,10,3,6,81, 5,14,9,2,7,81, 5,14,9,3,7,81, 5,14,8,2,8,81, 5,14,8,3,8,81, 5,14,7,2,9,81, 5,14,7,3,9,81, 5,14,6,2,10,81, + 5,14,6,3,10,81, 5,14,6,6,10,65, 5,13,12,3,4,82, 5,13,12,5,5,50, 5,13,5,3,11,82, 5,13,5,6,10,66, 5,12,12,5,5,51, 5,12,4,3,12,83, + 5,12,4,6,10,67, 5,11,13,3,3,84, 5,11,13,5,5,52, 5,11,3,3,13,84, 5,11,3,6,10,68, 5,10,13,5,5,53, 5,10,3,6,10,69, 5,9,13,5,5,54, + 5,9,3,6,10,70, 5,8,13,5,5,55, 5,8,3,6,10,71, 5,7,13,4,5,56, 5,7,13,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, + 5,6,12,5,5,57, 5,6,4,6,10,73, 5,5,11,5,5,58, 5,5,4,6,10,74, 5,4,12,3,4,91, 5,4,12,5,5,59, 5,4,4,6,10,75, 5,3,12,5,5,60, + 5,3,4,6,10,76, 5,2,13,3,3,93, 5,2,13,5,5,61, 5,2,4,4,5,61, 5,2,4,6,10,77, 5,1,13,4,5,62, 5,1,13,5,5,62, 5,1,5,4,5,62, + 5,1,5,6,10,78, 5,0,12,5,5,63, 5,0,6,6,10,79, 6,14,11,3,5,81, 6,14,11,5,6,49, 6,14,10,3,6,81, 6,14,9,3,7,81, 6,14,8,3,8,81, + 6,14,7,3,9,81, 6,14,6,3,10,81, 6,14,6,6,9,65, 6,13,12,3,4,82, 6,13,12,5,6,50, 6,13,5,3,11,82, 6,13,5,6,9,66, 6,12,12,5,6,51, + 6,12,4,3,12,83, 6,12,4,6,9,67, 6,11,13,3,3,84, 6,11,13,5,6,52, 6,11,3,3,13,84, 6,11,3,6,9,68, 6,10,13,5,6,53, 6,10,3,6,9,69, + 6,9,13,5,6,54, 6,9,3,6,9,70, 6,8,13,5,6,55, 6,8,3,6,9,71, 6,7,13,4,6,56, 6,7,13,5,6,56, 6,7,3,4,6,56, 6,7,3,6,9,72, + 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,4,6,9,73, 6,5,11,5,6,58, 6,5,4,6,9,74, 6,4,12,3,4,91, 6,4,12,5,6,59, 6,4,4,6,9,75, + 6,3,12,5,6,60, 6,3,4,6,9,76, 6,2,13,3,3,93, 6,2,13,5,6,61, 6,2,4,4,6,61, 6,2,4,6,9,77, 6,1,13,4,6,62, 6,1,13,5,6,62, + 6,1,5,4,6,62, 6,1,5,6,9,78, 6,0,12,5,6,63, 6,0,6,6,9,79, 7,14,11,3,5,81, 7,14,11,5,7,49, 7,14,10,3,6,81, 7,14,9,3,7,81, + 7,14,8,3,8,81, 7,14,7,3,9,81, 7,14,6,3,10,81, 7,14,6,6,8,65, 7,13,12,3,4,82, 7,13,12,5,7,50, 7,13,5,3,11,82, 7,13,5,6,8,66, + 7,12,12,5,7,51, 7,12,4,3,12,83, 7,12,4,6,8,67, 7,11,13,3,3,84, 7,11,13,5,7,52, 7,11,3,3,13,84, 7,11,3,6,8,68, 7,10,13,5,7,53, + 7,10,3,6,8,69, 7,9,13,5,7,54, 7,9,3,6,8,70, 7,8,13,5,7,55, 7,8,3,6,8,71, 7,7,13,4,7,56, 7,7,13,5,7,56, 7,7,3,4,7,56, + 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,6,8,73, 7,5,11,5,7,58, 7,5,4,6,8,74, 7,4,12,3,4,91, 7,4,12,5,7,59, + 7,4,4,6,8,75, 7,3,12,5,7,60, 7,3,4,6,8,76, 7,2,13,3,3,93, 7,2,13,5,7,61, 7,2,4,4,7,61, 7,2,4,6,8,77, 7,1,13,4,7,62, + 7,1,13,5,7,62, 7,1,5,4,7,62, 7,1,5,6,8,78, 7,0,12,5,7,63, 7,0,6,6,8,79, 8,14,11,3,5,81, 8,14,11,5,8,49, 8,14,10,3,6,81, + 8,14,9,3,7,81, 8,14,8,3,8,81, 8,14,7,3,9,81, 8,14,6,3,10,81, 8,14,6,6,7,65, 8,13,12,3,4,82, 8,13,12,5,8,50, 8,13,5,3,11,82, + 8,13,5,6,7,66, 8,12,12,5,8,51, 8,12,4,3,12,83, 8,12,4,6,7,67, 8,11,13,3,3,84, 8,11,13,5,8,52, 8,11,3,3,13,84, 8,11,3,6,7,68, + 8,10,13,5,8,53, 8,10,3,6,7,69, 8,9,13,5,8,54, 8,9,3,6,7,70, 8,8,13,5,8,55, 8,8,3,6,7,71, 8,7,13,4,8,56, 8,7,13,5,8,56, + 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,6,7,73, 8,5,11,5,8,58, 8,5,4,6,7,74, 8,4,12,3,4,91, + 8,4,12,5,8,59, 8,4,4,6,7,75, 8,3,12,5,8,60, 8,3,4,6,7,76, 8,2,13,3,3,93, 8,2,13,5,8,61, 8,2,4,4,8,61, 8,2,4,6,7,77, + 8,1,13,4,8,62, 8,1,13,5,8,62, 8,1,5,4,8,62, 8,1,5,6,7,78, 8,0,12,1,4,95, 8,0,12,5,8,63, 8,0,11,1,5,95, 8,0,10,1,6,95, + 8,0,9,1,7,95, 8,0,8,1,8,95, 8,0,7,1,9,95, 8,0,6,1,10,95, 8,0,6,6,8,63, 9,14,11,3,5,81, 9,14,11,5,9,49, 9,14,10,3,6,81, + 9,14,9,3,7,81, 9,14,8,3,8,81, 9,14,7,3,9,81, 9,14,6,3,10,81, 9,14,6,6,6,65, 9,13,12,3,4,82, 9,13,12,5,9,50, 9,13,5,3,11,82, + 9,13,5,6,6,66, 9,12,12,5,9,51, 9,12,4,3,12,83, 9,12,4,6,6,67, 9,11,13,3,3,84, 9,11,13,5,9,52, 9,11,3,3,13,84, 9,11,3,6,6,68, + 9,10,13,5,9,53, 9,10,3,6,6,69, 9,9,13,5,9,54, 9,9,3,6,6,70, 9,8,13,5,9,55, 9,8,3,6,6,71, 9,7,13,4,9,56, 9,7,13,5,9,56, + 9,7,3,4,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,4,6,6,73, 9,5,11,5,9,58, 9,5,4,6,6,74, 9,4,12,3,4,91, + 9,4,12,5,9,59, 9,4,4,6,6,75, 9,3,12,5,9,60, 9,3,4,6,6,76, 9,2,13,3,3,93, 9,2,13,5,9,61, 9,2,4,4,9,61, 9,2,4,6,6,77, + 9,1,13,4,9,62, 9,1,13,5,9,62, 9,1,12,4,9,62, 9,1,11,4,9,62, 9,1,10,4,9,62, 9,1,9,4,9,62, 9,1,8,4,9,62, 9,1,7,4,9,62, + 9,1,6,4,9,62, 9,1,5,4,9,62, 9,1,5,6,6,78, 10,14,11,1,5,81, 10,14,11,3,5,81, 10,14,11,5,10,49, 10,14,10,1,6,81, 10,14,10,3,6,81, + 10,14,9,1,7,81, 10,14,9,3,7,81, 10,14,8,1,8,81, 10,14,8,3,8,81, 10,14,7,1,9,81, 10,14,7,3,9,81, 10,14,6,1,10,81, 10,14,6,3,10,81, + 10,14,6,6,5,65, 10,13,12,3,4,82, 10,13,12,5,10,50, 10,13,5,3,11,82, 10,13,5,6,5,66, 10,12,12,5,10,51, 10,12,4,3,12,83, 10,12,4,6,5,67, + 10,11,13,3,3,84, 10,11,13,5,10,52, 10,11,3,3,13,84, 10,11,3,6,5,68, 10,10,13,5,10,53, 10,10,3,6,5,69, 10,9,13,5,10,54, 10,9,3,6,5,70, + 10,8,13,5,10,55, 10,8,3,6,5,71, 10,7,13,4,10,56, 10,7,13,5,10,56, 10,7,3,4,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, + 10,6,4,6,5,73, 10,5,11,5,10,58, 10,5,4,6,5,74, 10,4,12,3,4,91, 10,4,12,5,10,59, 10,4,4,6,5,75, 10,3,12,5,10,60, 10,3,4,6,5,76, + 10,2,13,3,3,93, 10,2,13,5,10,61, 10,2,4,4,10,61, 10,2,4,6,5,77, 10,1,13,4,10,62, 10,1,13,5,10,62, 10,1,12,4,10,62, 10,1,11,4,10,62, + 10,1,10,4,10,62, 10,1,9,4,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,5,6,5,78, 11,13,12,1,4,82, + 11,13,12,3,4,82, 11,13,12,5,11,50, 11,13,11,1,5,82, 11,13,11,3,5,82, 11,13,10,1,6,82, 11,13,10,3,6,82, 11,13,9,1,7,82, 11,13,9,3,7,82, + 11,13,8,1,8,82, 11,13,8,3,8,82, 11,13,7,1,9,82, 11,13,7,3,9,82, 11,13,6,1,10,82, 11,13,6,3,10,82, 11,13,5,1,11,82, 11,13,5,3,11,82, + 11,13,5,6,4,66, 11,12,12,5,11,51, 11,12,4,3,12,83, 11,12,4,6,4,67, 11,11,13,3,3,84, 11,11,13,5,11,52, 11,11,3,3,13,84, 11,11,3,6,4,68, + 11,10,13,5,11,53, 11,10,3,6,4,69, 11,9,13,5,11,54, 11,9,3,6,4,70, 11,8,13,5,11,55, 11,8,3,6,4,71, 11,7,13,4,11,56, 11,7,13,5,11,56, + 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,6,4,73, 11,5,11,5,11,58, 11,5,4,6,4,74, 11,4,12,3,4,91, + 11,4,12,5,11,59, 11,4,4,6,4,75, 11,3,12,5,11,60, 11,3,4,6,4,76, 11,2,13,3,3,93, 11,2,13,5,11,61, 11,2,4,4,11,61, 11,2,4,6,4,77, + 11,1,13,1,3,94, 11,1,13,4,11,62, 11,1,13,5,11,62, 11,1,12,1,4,94, 11,1,12,4,11,62, 11,1,11,1,5,94, 11,1,11,4,11,62, 11,1,10,1,6,94, + 11,1,10,4,11,62, 11,1,9,1,7,94, 11,1,9,4,11,62, 11,1,8,1,8,94, 11,1,8,4,11,62, 11,1,7,1,9,94, 11,1,7,4,11,62, 11,1,6,1,10,94, + 11,1,6,4,11,62, 11,1,5,1,11,94, 11,1,5,4,11,62, 11,1,5,6,11,62, 12,12,12,1,4,83, 12,12,12,3,4,83, 12,12,12,5,12,51, 12,12,11,1,5,83, + 12,12,11,3,5,83, 12,12,10,1,6,83, 12,12,10,3,6,83, 12,12,9,1,7,83, 12,12,9,3,7,83, 12,12,8,1,8,83, 12,12,8,3,8,83, 12,12,7,1,9,83, + 12,12,7,3,9,83, 12,12,6,1,10,83, 12,12,6,3,10,83, 12,12,5,1,11,83, 12,12,5,3,11,83, 12,12,4,1,12,83, 12,12,4,3,12,83, 12,12,4,6,3,67, + 12,11,13,1,3,84, 12,11,13,3,3,84, 12,11,13,5,12,52, 12,11,12,1,4,84, 12,11,11,1,5,84, 12,11,10,1,6,84, 12,11,9,1,7,84, 12,11,8,1,8,84, + 12,11,7,1,9,84, 12,11,6,1,10,84, 12,11,5,1,11,84, 12,11,4,1,12,84, 12,11,3,1,13,84, 12,11,3,3,13,84, 12,11,3,6,3,68, 12,10,13,5,12,53, + 12,10,3,6,3,69, 12,9,13,5,12,54, 12,9,3,6,3,70, 12,8,13,5,12,55, 12,8,3,6,3,71, 12,7,13,4,12,56, 12,7,13,5,12,56, 12,7,3,4,12,56, + 12,7,3,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,4,6,3,73, 12,5,11,5,12,58, 12,5,4,6,3,74, 12,4,12,3,4,91, 12,4,12,5,12,59, + 12,4,4,6,3,75, 12,3,12,5,12,60, 12,3,4,6,3,76, 12,2,13,3,3,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,4,12,61, 12,2,11,4,12,61, + 12,2,10,4,12,61, 12,2,9,4,12,61, 12,2,8,4,12,61, 12,2,7,4,12,61, 12,2,6,4,12,61, 12,2,5,4,12,61, 12,2,4,4,12,61, 12,2,4,6,3,77, + 13,10,13,1,3,85, 13,10,13,3,3,85, 13,10,13,5,13,53, 13,10,12,1,4,85, 13,10,12,3,4,85, 13,10,11,1,5,85, 13,10,11,3,5,85, 13,10,10,1,6,85, + 13,10,10,3,6,85, 13,10,9,1,7,85, 13,10,9,3,7,85, 13,10,8,1,8,85, 13,10,8,3,8,85, 13,10,7,1,9,85, 13,10,7,3,9,85, 13,10,6,1,10,85, + 13,10,6,3,10,85, 13,10,5,1,11,85, 13,10,5,3,11,85, 13,10,4,1,12,85, 13,10,4,3,12,85, 13,10,3,1,13,85, 13,10,3,3,13,85, 13,10,3,6,2,69, + 13,9,13,5,13,54, 13,9,3,6,2,70, 13,8,13,5,13,55, 13,8,3,6,2,71, 13,7,13,1,3,88, 13,7,13,4,13,56, 13,7,13,5,13,56, 13,7,12,1,4,88, + 13,7,11,1,5,88, 13,7,10,1,6,88, 13,7,9,1,7,88, 13,7,8,1,8,88, 13,7,7,1,9,88, 13,7,6,1,10,88, 13,7,5,1,11,88, 13,7,4,1,12,88, + 13,7,3,1,13,88, 13,7,3,4,13,56, 13,7,3,6,2,72, 13,6,12,1,4,89, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,11,1,5,89, 13,6,10,1,6,89, + 13,6,9,1,7,89, 13,6,8,1,8,89, 13,6,7,1,9,89, 13,6,6,1,10,89, 13,6,5,1,11,89, 13,6,4,1,12,89, 13,6,4,6,2,73, 13,5,11,5,13,58, + 13,5,4,6,2,74, 13,4,12,3,4,91, 13,4,12,5,13,59, 13,4,4,6,2,75, 13,3,12,5,13,60, 13,3,4,6,2,76, 13,2,13,1,3,93, 13,2,13,3,3,93, + 13,2,13,4,2,77, 13,2,13,5,2,77, 13,2,12,1,4,93, 13,2,12,4,2,77, 13,2,11,1,5,93, 13,2,11,4,2,77, 13,2,10,1,6,93, 13,2,10,4,2,77, + 13,2,9,1,7,93, 13,2,9,4,2,77, 13,2,8,1,8,93, 13,2,8,4,2,77, 13,2,7,1,9,93, 13,2,7,4,2,77, 13,2,6,1,10,93, 13,2,6,4,2,77, + 13,2,5,1,11,93, 13,2,5,4,2,77, 13,2,4,1,12,93, 13,2,4,4,2,77, 13,2,4,6,2,77, 14,9,13,1,3,86, 14,9,13,3,3,86, 14,9,13,5,14,54, + 14,9,12,1,4,86, 14,9,12,3,4,86, 14,9,11,1,5,86, 14,9,11,3,5,86, 14,9,10,1,6,86, 14,9,10,3,6,86, 14,9,9,1,7,86, 14,9,9,3,7,86, + 14,9,8,1,8,86, 14,9,8,3,8,86, 14,9,7,1,9,86, 14,9,7,3,9,86, 14,9,6,1,10,86, 14,9,6,3,10,86, 14,9,5,1,11,86, 14,9,5,3,11,86, + 14,9,4,1,12,86, 14,9,4,3,12,86, 14,9,3,1,13,86, 14,9,3,3,13,86, 14,9,3,6,1,70, 14,8,13,1,3,87, 14,8,13,4,14,55, 14,8,13,5,14,55, + 14,8,12,1,4,87, 14,8,12,4,14,55, 14,8,11,1,5,87, 14,8,11,4,14,55, 14,8,10,1,6,87, 14,8,10,4,14,55, 14,8,9,1,7,87, 14,8,9,4,14,55, + 14,8,8,1,8,87, 14,8,8,4,14,55, 14,8,7,1,9,87, 14,8,7,4,14,55, 14,8,6,1,10,87, 14,8,6,4,14,55, 14,8,5,1,11,87, 14,8,5,4,14,55, + 14,8,4,1,12,87, 14,8,4,4,14,55, 14,8,3,1,13,87, 14,8,3,4,14,55, 14,8,3,6,1,71, 14,5,11,1,5,90, 14,5,11,3,5,90, 14,5,11,5,14,58, + 14,5,10,1,6,90, 14,5,10,3,6,90, 14,5,9,1,7,90, 14,5,9,3,7,90, 14,5,8,1,8,90, 14,5,8,3,8,90, 14,5,7,1,9,90, 14,5,7,3,9,90, + 14,5,6,1,10,90, 14,5,6,3,10,90, 14,5,5,1,11,90, 14,5,5,3,11,90, 14,5,4,1,12,90, 14,5,4,3,12,90, 14,5,4,6,1,74, 14,4,12,1,4,91, + 14,4,12,3,4,91, 14,4,12,5,14,59, 14,4,11,1,5,91, 14,4,10,1,6,91, 14,4,9,1,7,91, 14,4,8,1,8,91, 14,4,7,1,9,91, 14,4,6,1,10,91, + 14,4,5,1,11,91, 14,4,4,1,12,91, 14,4,4,6,1,75, 14,3,12,1,4,92, 14,3,12,4,1,76, 14,3,12,5,1,76, 14,3,11,1,5,92, 14,3,11,4,1,76, + 14,3,10,1,6,92, 14,3,10,4,1,76, 14,3,9,1,7,92, 14,3,9,4,1,76, 14,3,8,1,8,92, 14,3,8,4,1,76, 14,3,7,1,9,92, 14,3,7,4,1,76, + 14,3,6,1,10,92, 14,3,6,4,1,76, 14,3,5,1,11,92, 14,3,5,4,1,76, 14,3,4,1,12,92, 14,3,4,4,1,76, 14,3,4,6,1,76, + }, + }, + }, +} diff --git a/assets/voxels/koga.lua b/assets/voxels/koga.lua new file mode 100644 index 0000000..3788a25 --- /dev/null +++ b/assets/voxels/koga.lua @@ -0,0 +1,296 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "koga" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "koga", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1502, + count = 1026, + faces = { + 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, + 1,9,9,3,6,38, 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, + 1,9,5,3,10,38, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, 1,9,3,3,12,38, 1,9,2,2,13,38, 1,9,2,3,13,38, 1,9,2,4,1,6, + 1,9,2,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, + 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, + 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,10,2,5,42, + 1,5,10,3,5,42, 1,5,10,4,1,10, 1,5,10,5,1,10, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, + 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,4,6,14,26, + 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,9,5,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, + 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,11,13,2,2,36, 2,11,13,3,2,36, + 2,11,13,5,2,4, 2,11,12,2,3,36, 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, + 2,11,9,3,6,36, 2,11,8,2,7,36, 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, + 2,11,5,3,10,36, 2,11,4,2,11,36, 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, + 2,10,13,2,2,37, 2,10,13,4,2,5, 2,10,13,5,2,5, 2,10,12,2,3,37, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, 2,10,8,2,7,37, + 2,10,7,2,8,37, 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,6,13,21, 2,9,12,5,2,6, + 2,9,2,4,2,6, 2,9,2,6,13,22, 2,8,12,5,2,7, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, + 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, + 2,7,4,4,2,8, 2,7,4,6,13,24, 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, + 2,6,7,2,8,41, 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,5,6,13,25, 2,5,10,4,2,10, 2,5,10,5,2,10, 2,5,4,3,11,42, 2,5,4,6,13,26, + 2,4,9,5,2,11, 2,4,4,6,13,27, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,9,5,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, + 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, 2,3,4,6,13,28, + 2,1,10,2,5,46, 2,1,10,3,5,46, 2,1,10,4,2,14, 2,1,10,5,2,14, 2,1,9,2,6,46, 2,1,9,3,6,46, 2,1,8,2,7,46, 2,1,8,3,7,46, + 2,1,7,2,8,46, 2,1,7,3,8,46, 2,1,6,2,9,46, 2,1,6,3,9,46, 2,1,5,2,10,46, 2,1,5,3,10,46, 2,1,5,4,2,14, 2,1,5,6,13,30, + 2,0,9,2,6,47, 2,0,9,5,2,15, 2,0,8,2,7,47, 2,0,7,2,8,47, 2,0,6,2,9,47, 2,0,6,6,13,31, 3,13,12,2,3,34, 3,13,12,3,3,34, + 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, + 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, + 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,13,2,2,35, 3,12,13,3,2,35, 3,12,13,5,3,3, 3,12,12,2,3,35, + 3,12,11,2,4,35, 3,12,10,2,5,35, 3,12,9,2,6,35, 3,12,8,2,7,35, 3,12,7,2,8,35, 3,12,6,2,9,35, 3,12,5,2,10,35, 3,12,4,2,11,35, + 3,12,3,2,12,35, 3,12,3,6,12,19, 3,11,13,5,3,4, 3,11,2,3,13,36, 3,11,2,6,12,20, 3,10,13,4,3,5, 3,10,13,5,3,5, 3,10,2,6,12,21, + 3,9,12,5,3,6, 3,9,2,4,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, + 3,7,4,4,3,8, 3,7,4,6,12,24, 3,6,11,4,3,9, 3,6,11,5,3,9, 3,6,5,6,12,25, 3,5,10,4,3,10, 3,5,10,5,3,10, 3,5,4,3,11,42, + 3,5,4,6,12,26, 3,4,9,5,3,11, 3,4,4,6,12,27, 3,3,9,5,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, 3,2,10,3,5,45, + 3,2,10,5,3,13, 3,2,9,2,6,45, 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,5,6,12,29, 3,1,10,4,3,14, + 3,1,10,5,3,14, 3,1,5,4,3,14, 3,1,5,6,12,30, 3,0,9,5,3,15, 3,0,6,6,12,31, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, + 4,14,10,2,5,33, 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, + 4,14,6,2,9,33, 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, + 4,13,12,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, 4,12,3,6,11,19, 4,11,13,5,4,4, 4,11,2,3,13,36, + 4,11,2,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,4,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, + 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,4,4,8, 4,7,4,6,11,24, 4,6,11,4,4,9, 4,6,11,5,4,9, + 4,6,5,6,11,25, 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,4,3,11,42, 4,5,4,6,11,26, 4,4,9,5,4,11, 4,4,4,6,11,27, 4,3,9,5,4,12, + 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,10,3,5,45, 4,2,10,5,4,13, 4,2,5,6,11,29, 4,1,10,4,4,14, 4,1,10,5,4,14, 4,1,5,4,4,14, + 4,1,5,6,11,30, 4,0,9,5,4,15, 4,0,6,6,11,31, 5,15,10,2,5,32, 5,15,10,3,5,32, 5,15,10,5,5,0, 5,15,9,2,6,32, 5,15,9,3,6,32, + 5,15,8,2,7,32, 5,15,8,3,7,32, 5,15,7,2,8,32, 5,15,7,3,8,32, 5,15,6,2,9,32, 5,15,6,3,9,32, 5,15,5,2,10,32, 5,15,5,3,10,32, + 5,15,5,6,10,16, 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, + 5,13,3,6,10,18, 5,12,13,3,2,35, 5,12,13,5,5,3, 5,12,3,6,10,19, 5,11,13,5,5,4, 5,11,2,3,13,36, 5,11,2,6,10,20, 5,10,13,4,5,5, + 5,10,13,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,4,5,6, 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, + 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,4,4,5,8, 5,7,4,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,5,6,10,25, 5,5,10,4,5,10, + 5,5,10,5,5,10, 5,5,4,3,11,42, 5,5,4,6,10,26, 5,4,9,5,5,11, 5,4,4,6,10,27, 5,3,9,5,5,12, 5,3,4,4,5,12, 5,3,4,6,10,28, + 5,2,10,3,5,45, 5,2,10,5,5,13, 5,2,5,6,10,29, 5,1,10,4,5,14, 5,1,10,5,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,9,1,6,47, + 5,0,9,5,5,15, 5,0,8,1,7,47, 5,0,7,1,8,47, 5,0,6,1,9,47, 5,0,6,6,10,31, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,3,6,32, + 6,15,8,3,7,32, 6,15,7,3,8,32, 6,15,6,3,9,32, 6,15,5,3,10,32, 6,15,5,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,4,3,11,33, + 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,3,6,9,19, + 6,11,13,5,6,4, 6,11,2,3,13,36, 6,11,2,6,9,20, 6,10,13,4,6,5, 6,10,13,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,4,6,6, + 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,4,4,6,8, 6,7,4,6,9,24, + 6,6,11,4,6,9, 6,6,11,5,6,9, 6,6,5,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, 6,5,4,3,11,42, 6,5,4,6,9,26, 6,4,9,5,6,11, + 6,4,4,6,9,27, 6,3,9,5,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,10,3,5,45, 6,2,10,5,6,13, 6,2,5,6,9,29, 6,1,10,4,6,14, + 6,1,10,5,6,14, 6,1,9,4,6,14, 6,1,8,4,6,14, 6,1,7,4,6,14, 6,1,6,4,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 7,15,10,3,5,32, + 7,15,10,5,7,0, 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,5,3,10,32, 7,15,5,6,8,16, 7,14,11,3,4,33, + 7,14,11,5,7,1, 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, + 7,12,13,5,7,3, 7,12,3,6,8,19, 7,11,13,5,7,4, 7,11,2,3,13,36, 7,11,2,6,8,20, 7,10,13,4,7,5, 7,10,13,5,7,5, 7,10,2,6,8,21, + 7,9,12,5,7,6, 7,9,2,4,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,3,4,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, + 7,7,4,4,7,8, 7,7,4,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,5,6,8,25, 7,5,10,4,7,10, 7,5,10,5,7,10, 7,5,4,3,11,42, + 7,5,4,6,8,26, 7,4,9,5,7,11, 7,4,4,6,8,27, 7,3,9,5,7,12, 7,3,4,4,7,12, 7,3,4,6,8,28, 7,2,10,3,5,45, 7,2,10,5,7,13, + 7,2,5,6,8,29, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, + 7,1,5,6,8,30, 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,3,6,32, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,5,3,10,32, + 8,15,5,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, + 8,13,3,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,3,6,7,19, 8,11,13,5,8,4, 8,11,2,3,13,36, 8,11,2,6,7,20, 8,10,13,4,8,5, + 8,10,13,5,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,4,8,6, 8,9,2,6,7,22, 8,8,12,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, + 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,4,8,8, 8,7,4,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,5,6,7,25, 8,5,10,4,8,10, + 8,5,10,5,8,10, 8,5,4,3,11,42, 8,5,4,6,7,26, 8,4,9,5,8,11, 8,4,4,6,7,27, 8,3,9,5,8,12, 8,3,4,4,8,12, 8,3,4,6,7,28, + 8,2,10,3,5,45, 8,2,10,5,8,13, 8,2,5,6,7,29, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, + 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,10,3,5,32, 9,15,10,5,9,0, 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, + 9,15,6,3,9,32, 9,15,5,3,10,32, 9,15,5,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, + 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, 9,12,13,5,9,3, 9,12,3,6,6,19, 9,11,13,5,9,4, 9,11,2,3,13,36, + 9,11,2,6,6,20, 9,10,13,4,9,5, 9,10,13,5,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,2,4,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, + 9,8,3,4,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,4,4,9,8, 9,7,4,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, + 9,6,5,6,6,25, 9,5,10,4,9,10, 9,5,10,5,9,10, 9,5,4,3,11,42, 9,5,4,6,6,26, 9,4,9,5,9,11, 9,4,4,6,6,27, 9,3,9,5,9,12, + 9,3,4,4,9,12, 9,3,4,6,6,28, 9,2,10,3,5,45, 9,2,10,5,9,13, 9,2,5,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,9,4,9,14, + 9,1,8,4,9,14, 9,1,7,4,9,14, 9,1,6,4,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 10,15,10,1,5,32, 10,15,10,3,5,32, 10,15,10,5,10,0, + 10,15,9,1,6,32, 10,15,9,3,6,32, 10,15,8,1,7,32, 10,15,8,3,7,32, 10,15,7,1,8,32, 10,15,7,3,8,32, 10,15,6,1,9,32, 10,15,6,3,9,32, + 10,15,5,1,10,32, 10,15,5,3,10,32, 10,15,5,6,5,16, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, + 10,13,12,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,3,6,5,19, 10,11,13,5,10,4, 10,11,2,3,13,36, + 10,11,2,6,5,20, 10,10,13,4,10,5, 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,4,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, + 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,4,4,10,8, 10,7,4,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, + 10,6,5,6,5,25, 10,5,10,4,10,10, 10,5,10,5,10,10, 10,5,4,3,11,42, 10,5,4,6,5,26, 10,4,9,5,10,11, 10,4,4,6,5,27, 10,3,9,5,10,12, + 10,3,4,4,10,12, 10,3,4,6,5,28, 10,2,10,3,5,45, 10,2,10,5,10,13, 10,2,5,6,5,29, 10,1,10,4,10,14, 10,1,10,5,10,14, 10,1,5,4,10,14, + 10,1,5,6,5,30, 10,0,9,2,6,47, 10,0,9,5,10,15, 10,0,8,2,7,47, 10,0,7,2,8,47, 10,0,6,2,9,47, 10,0,6,6,5,31, 11,14,11,1,4,33, + 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, + 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, 11,14,4,3,11,33, + 11,14,4,6,4,17, 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, 11,12,13,5,11,3, 11,12,3,6,4,19, + 11,11,13,5,11,4, 11,11,2,3,13,36, 11,11,2,6,4,20, 11,10,13,4,11,5, 11,10,13,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,2,4,11,6, + 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,4,4,11,8, 11,7,4,6,4,24, + 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,5,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, 11,5,4,3,11,42, 11,5,4,6,4,26, 11,4,9,5,11,11, + 11,4,4,6,4,27, 11,3,9,5,11,12, 11,3,4,4,11,12, 11,3,4,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, 11,2,5,6,4,29, 11,1,10,4,11,14, + 11,1,10,5,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,9,5,11,15, 11,0,6,6,4,31, 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,12,5,12,2, + 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, + 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, + 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,1,2,35, 12,12,13,3,2,35, 12,12,13,5,12,3, 12,12,12,1,3,35, 12,12,11,1,4,35, + 12,12,10,1,5,35, 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, 12,12,6,1,9,35, 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, + 12,12,3,6,3,19, 12,11,13,5,12,4, 12,11,2,3,13,36, 12,11,2,6,3,20, 12,10,13,4,12,5, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, + 12,9,2,4,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,4,12,8, + 12,7,4,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,5,6,3,25, 12,5,10,4,12,10, 12,5,10,5,12,10, 12,5,4,3,11,42, 12,5,4,6,3,26, + 12,4,9,5,12,11, 12,4,4,6,3,27, 12,3,9,5,12,12, 12,3,4,4,12,12, 12,3,4,6,3,28, 12,2,10,1,5,45, 12,2,10,3,5,45, 12,2,10,5,12,13, + 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,5,6,3,29, 12,1,10,4,12,14, 12,1,10,5,12,14, + 12,1,5,4,12,14, 12,1,5,6,3,30, 12,0,9,5,12,15, 12,0,6,6,3,31, 13,11,13,1,2,36, 13,11,13,3,2,36, 13,11,13,5,13,4, 13,11,12,1,3,36, + 13,11,12,3,3,36, 13,11,11,1,4,36, 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, 13,11,9,3,6,36, 13,11,8,1,7,36, + 13,11,8,3,7,36, 13,11,7,1,8,36, 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, 13,11,5,3,10,36, 13,11,4,1,11,36, + 13,11,4,3,11,36, 13,11,3,1,12,36, 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, 13,10,13,1,2,37, 13,10,13,4,13,5, + 13,10,13,5,13,5, 13,10,12,1,3,37, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, 13,10,6,1,9,37, + 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,6,2,21, 13,9,12,5,13,6, 13,9,2,4,13,6, 13,9,2,6,2,22, + 13,8,12,5,13,7, 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, + 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,4,4,13,8, 13,7,4,6,2,24, + 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, + 13,6,5,1,10,41, 13,6,5,6,2,25, 13,5,10,4,13,10, 13,5,10,5,13,10, 13,5,4,3,11,42, 13,5,4,6,2,26, 13,4,9,5,13,11, 13,4,4,6,2,27, + 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, 13,3,7,4,13,12, 13,3,6,1,9,44, + 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, 13,1,10,1,5,46, 13,1,10,3,5,46, + 13,1,10,4,13,14, 13,1,10,5,13,14, 13,1,9,1,6,46, 13,1,9,3,6,46, 13,1,8,1,7,46, 13,1,8,3,7,46, 13,1,7,1,8,46, 13,1,7,3,8,46, + 13,1,6,1,9,46, 13,1,6,3,9,46, 13,1,5,1,10,46, 13,1,5,3,10,46, 13,1,5,4,13,14, 13,1,5,6,2,30, 13,0,9,1,6,47, 13,0,9,5,13,15, + 13,0,8,1,7,47, 13,0,7,1,8,47, 13,0,6,1,9,47, 13,0,6,6,2,31, 14,9,12,1,3,38, 14,9,12,3,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, + 14,9,11,3,4,38, 14,9,10,1,5,38, 14,9,10,3,5,38, 14,9,9,1,6,38, 14,9,9,3,6,38, 14,9,8,1,7,38, 14,9,8,3,7,38, 14,9,7,1,8,38, + 14,9,7,3,8,38, 14,9,6,1,9,38, 14,9,6,3,9,38, 14,9,5,1,10,38, 14,9,5,3,10,38, 14,9,4,1,11,38, 14,9,4,3,11,38, 14,9,3,1,12,38, + 14,9,3,3,12,38, 14,9,2,1,13,38, 14,9,2,3,13,38, 14,9,2,4,14,6, 14,9,2,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, + 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, + 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, + 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,3,6,1,23, 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,4,14,10, 14,5,10,5,14,10, 14,5,9,1,6,42, + 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, + 14,5,5,3,10,42, 14,5,4,1,11,42, 14,5,4,3,11,42, 14,5,4,6,1,26, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,9,5,14,11, 14,4,8,1,7,43, + 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, + 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1571, + count = 1075, + faces = { + 1,8,12,2,3,87, 1,8,12,3,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,11,3,4,87, 1,8,10,2,5,87, 1,8,10,3,5,87, 1,8,9,2,6,87, + 1,8,9,3,6,87, 1,8,8,2,7,87, 1,8,8,3,7,87, 1,8,7,2,8,87, 1,8,7,3,8,87, 1,8,6,2,9,87, 1,8,6,3,9,87, 1,8,5,2,10,87, + 1,8,5,3,10,87, 1,8,4,2,11,87, 1,8,4,3,11,87, 1,8,3,2,12,87, 1,8,3,3,12,87, 1,8,2,2,13,87, 1,8,2,3,13,87, 1,8,2,4,1,55, + 1,8,2,6,14,71, 1,7,12,2,3,88, 1,7,12,5,1,56, 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, + 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, 1,7,3,2,12,88, 1,7,3,4,1,56, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, + 1,6,12,5,1,57, 1,6,11,2,4,89, 1,6,10,2,5,89, 1,6,9,2,6,89, 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, + 1,6,4,2,11,89, 1,6,4,4,1,57, 1,6,4,6,1,57, 1,5,11,2,4,90, 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, + 1,5,8,2,7,90, 1,5,7,2,8,90, 1,5,6,2,9,90, 1,5,5,2,10,90, 1,5,5,6,1,58, 1,4,10,2,5,91, 1,4,10,5,14,75, 1,4,9,2,6,91, + 1,4,8,2,7,91, 1,4,7,2,8,91, 1,4,6,2,9,91, 1,4,5,2,10,91, 1,4,4,2,11,91, 1,4,4,3,11,91, 1,4,4,6,14,75, 1,3,12,2,3,92, + 1,3,12,3,3,92, 1,3,12,4,14,76, 1,3,12,5,14,76, 1,3,11,2,4,92, 1,3,11,3,4,92, 1,3,11,4,14,76, 1,3,10,2,5,92, 1,3,10,4,14,76, + 1,3,9,2,6,92, 1,3,9,4,14,76, 1,3,8,2,7,92, 1,3,8,4,14,76, 1,3,7,2,8,92, 1,3,7,4,14,76, 1,3,6,2,9,92, 1,3,6,4,14,76, + 1,3,5,2,10,92, 1,3,5,4,14,76, 1,3,4,2,11,92, 1,3,4,4,14,76, 1,3,4,6,14,76, 2,10,13,2,2,85, 2,10,13,3,2,85, 2,10,13,5,2,53, + 2,10,12,2,3,85, 2,10,12,3,3,85, 2,10,11,2,4,85, 2,10,11,3,4,85, 2,10,10,2,5,85, 2,10,10,3,5,85, 2,10,9,2,6,85, 2,10,9,3,6,85, + 2,10,8,2,7,85, 2,10,8,3,7,85, 2,10,7,2,8,85, 2,10,7,3,8,85, 2,10,6,2,9,85, 2,10,6,3,9,85, 2,10,5,2,10,85, 2,10,5,3,10,85, + 2,10,4,2,11,85, 2,10,4,3,11,85, 2,10,3,2,12,85, 2,10,3,3,12,85, 2,10,2,2,13,85, 2,10,2,3,13,85, 2,10,2,6,13,69, 2,9,13,2,2,86, + 2,9,13,4,2,54, 2,9,13,5,2,54, 2,9,12,2,3,86, 2,9,11,2,4,86, 2,9,10,2,5,86, 2,9,9,2,6,86, 2,9,8,2,7,86, 2,9,7,2,8,86, + 2,9,6,2,9,86, 2,9,5,2,10,86, 2,9,4,2,11,86, 2,9,3,2,12,86, 2,9,2,2,13,86, 2,9,2,6,13,70, 2,8,12,5,2,55, 2,8,2,4,2,55, + 2,8,2,6,13,71, 2,7,12,5,2,56, 2,7,3,4,2,56, 2,7,3,6,13,72, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,4,4,2,57, 2,6,4,6,13,73, + 2,5,11,4,2,58, 2,5,11,5,2,58, 2,5,5,6,13,74, 2,4,10,5,2,59, 2,4,4,3,11,91, 2,4,4,6,13,75, 2,3,12,3,3,92, 2,3,12,5,13,76, + 2,3,11,3,4,92, 2,3,4,6,13,76, 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, 2,2,13,5,13,77, 2,2,12,2,3,93, 2,2,12,4,13,77, + 2,2,11,2,4,93, 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,4,13,77, 2,2,8,2,7,93, 2,2,8,4,13,77, + 2,2,7,2,8,93, 2,2,7,4,13,77, 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,4,13,77, 2,2,4,2,11,93, 2,2,4,4,13,77, + 2,2,3,2,12,93, 2,2,3,3,12,93, 2,2,3,4,13,77, 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, 2,2,2,6,13,77, 3,12,12,2,3,83, + 3,12,12,3,3,83, 3,12,12,5,3,51, 3,12,11,2,4,83, 3,12,11,3,4,83, 3,12,10,2,5,83, 3,12,10,3,5,83, 3,12,9,2,6,83, 3,12,9,3,6,83, + 3,12,8,2,7,83, 3,12,8,3,7,83, 3,12,7,2,8,83, 3,12,7,3,8,83, 3,12,6,2,9,83, 3,12,6,3,9,83, 3,12,5,2,10,83, 3,12,5,3,10,83, + 3,12,4,2,11,83, 3,12,4,3,11,83, 3,12,3,2,12,83, 3,12,3,3,12,83, 3,12,3,6,12,67, 3,11,13,2,2,84, 3,11,13,3,2,84, 3,11,13,5,3,52, + 3,11,12,2,3,84, 3,11,11,2,4,84, 3,11,10,2,5,84, 3,11,9,2,6,84, 3,11,8,2,7,84, 3,11,7,2,8,84, 3,11,6,2,9,84, 3,11,5,2,10,84, + 3,11,4,2,11,84, 3,11,3,2,12,84, 3,11,3,6,12,68, 3,10,13,5,3,53, 3,10,2,3,13,85, 3,10,2,6,12,69, 3,9,13,4,3,54, 3,9,13,5,3,54, + 3,9,2,6,12,70, 3,8,12,5,3,55, 3,8,2,4,3,55, 3,8,2,6,12,71, 3,7,12,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, + 3,6,12,5,3,57, 3,6,4,4,3,57, 3,6,4,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,5,6,12,74, 3,4,10,5,3,59, 3,4,4,3,11,91, + 3,4,4,6,12,75, 3,3,12,3,3,92, 3,3,12,5,12,76, 3,3,11,3,4,92, 3,3,4,6,12,76, 3,2,13,3,2,93, 3,2,13,4,12,77, 3,2,13,5,12,77, + 3,2,12,4,12,77, 3,2,11,4,12,77, 3,2,10,4,12,77, 3,2,9,4,12,77, 3,2,8,4,12,77, 3,2,7,4,12,77, 3,2,6,4,12,77, 3,2,5,4,12,77, + 3,2,4,4,12,77, 3,2,3,3,12,93, 3,2,3,4,12,77, 3,2,2,3,13,93, 3,2,2,4,12,77, 3,2,2,6,12,77, 4,13,11,2,4,82, 4,13,11,3,4,82, + 4,13,11,5,4,50, 4,13,10,2,5,82, 4,13,10,3,5,82, 4,13,9,2,6,82, 4,13,9,3,6,82, 4,13,8,2,7,82, 4,13,8,3,7,82, 4,13,7,2,8,82, + 4,13,7,3,8,82, 4,13,6,2,9,82, 4,13,6,3,9,82, 4,13,5,2,10,82, 4,13,5,3,10,82, 4,13,4,2,11,82, 4,13,4,3,11,82, 4,13,4,6,11,66, + 4,12,12,3,3,83, 4,12,12,5,4,51, 4,12,3,3,12,83, 4,12,3,6,11,67, 4,11,13,3,2,84, 4,11,13,5,4,52, 4,11,3,6,11,68, 4,10,13,5,4,53, + 4,10,2,3,13,85, 4,10,2,6,11,69, 4,9,13,4,4,54, 4,9,13,5,4,54, 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,2,4,4,55, 4,8,2,6,11,71, + 4,7,12,5,4,56, 4,7,3,4,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,4,4,57, 4,6,4,6,11,73, 4,5,11,4,4,58, + 4,5,11,5,4,58, 4,5,5,6,11,74, 4,4,10,5,4,59, 4,4,4,3,11,91, 4,4,4,6,11,75, 4,3,12,3,3,92, 4,3,12,5,4,60, 4,3,11,3,4,92, + 4,3,4,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,3,3,12,93, 4,2,2,3,13,93, 4,2,2,6,11,77, 4,1,12,2,3,94, + 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,2,4,94, 4,1,11,4,4,62, 4,1,10,2,5,94, 4,1,10,4,4,62, 4,1,9,2,6,94, 4,1,9,4,4,62, + 4,1,8,2,7,94, 4,1,8,4,4,62, 4,1,7,2,8,94, 4,1,7,4,4,62, 4,1,6,2,9,94, 4,1,6,4,4,62, 4,1,5,2,10,94, 4,1,5,4,4,62, + 4,1,4,2,11,94, 4,1,4,4,4,62, 4,1,3,2,12,94, 4,1,3,4,4,62, 4,1,2,2,13,94, 4,1,2,4,4,62, 4,1,2,6,4,62, 5,14,10,2,5,81, + 5,14,10,3,5,81, 5,14,10,5,5,49, 5,14,9,2,6,81, 5,14,9,3,6,81, 5,14,8,2,7,81, 5,14,8,3,7,81, 5,14,7,2,8,81, 5,14,7,3,8,81, + 5,14,6,2,9,81, 5,14,6,3,9,81, 5,14,5,2,10,81, 5,14,5,3,10,81, 5,14,5,6,10,65, 5,13,11,3,4,82, 5,13,11,5,5,50, 5,13,4,3,11,82, + 5,13,4,6,10,66, 5,12,12,3,3,83, 5,12,12,5,5,51, 5,12,3,3,12,83, 5,12,3,6,10,67, 5,11,13,3,2,84, 5,11,13,5,5,52, 5,11,3,6,10,68, + 5,10,13,5,5,53, 5,10,2,3,13,85, 5,10,2,6,10,69, 5,9,13,4,5,54, 5,9,13,5,5,54, 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,2,4,5,55, + 5,8,2,6,10,71, 5,7,12,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,4,4,5,57, 5,6,4,6,10,73, + 5,5,11,4,5,58, 5,5,11,5,5,58, 5,5,5,6,10,74, 5,4,10,5,5,59, 5,4,4,3,11,91, 5,4,4,6,10,75, 5,3,12,3,3,92, 5,3,12,5,5,60, + 5,3,11,3,4,92, 5,3,4,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,3,3,12,93, 5,2,2,3,13,93, 5,2,2,6,10,77, + 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,2,6,5,62, + 5,0,11,2,4,95, 5,0,11,5,5,63, 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,4,2,11,95, 5,0,4,5,5,63, 5,0,3,2,12,95, + 5,0,3,6,5,63, 6,14,10,3,5,81, 6,14,10,5,6,49, 6,14,9,3,6,81, 6,14,8,3,7,81, 6,14,7,3,8,81, 6,14,6,3,9,81, 6,14,5,3,10,81, + 6,14,5,6,9,65, 6,13,11,3,4,82, 6,13,11,5,6,50, 6,13,4,3,11,82, 6,13,4,6,9,66, 6,12,12,3,3,83, 6,12,12,5,6,51, 6,12,3,3,12,83, + 6,12,3,6,9,67, 6,11,13,3,2,84, 6,11,13,5,6,52, 6,11,3,6,9,68, 6,10,13,5,6,53, 6,10,2,3,13,85, 6,10,2,6,9,69, 6,9,13,4,6,54, + 6,9,13,5,6,54, 6,9,2,6,9,70, 6,8,12,5,6,55, 6,8,2,4,6,55, 6,8,2,6,9,71, 6,7,12,5,6,56, 6,7,3,4,6,56, 6,7,3,6,9,72, + 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,4,4,6,57, 6,6,4,6,9,73, 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,5,6,9,74, 6,4,10,5,6,59, + 6,4,4,3,11,91, 6,4,4,6,9,75, 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,11,3,4,92, 6,3,4,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, + 6,2,13,5,6,61, 6,2,3,3,12,93, 6,2,2,3,13,93, 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, + 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, 6,1,2,6,9,78, 6,0,11,1,4,95, 6,0,11,5,6,63, 6,0,10,1,5,95, 6,0,9,1,6,95, + 6,0,9,6,6,63, 6,0,4,1,11,95, 6,0,4,5,6,63, 6,0,3,1,12,95, 6,0,3,6,6,63, 7,14,10,3,5,81, 7,14,10,5,7,49, 7,14,9,3,6,81, + 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,5,3,10,81, 7,14,5,6,8,65, 7,13,11,3,4,82, 7,13,11,5,7,50, 7,13,4,3,11,82, + 7,13,4,6,8,66, 7,12,12,3,3,83, 7,12,12,5,7,51, 7,12,3,3,12,83, 7,12,3,6,8,67, 7,11,13,3,2,84, 7,11,13,5,7,52, 7,11,3,6,8,68, + 7,10,13,5,7,53, 7,10,2,3,13,85, 7,10,2,6,8,69, 7,9,13,4,7,54, 7,9,13,5,7,54, 7,9,2,6,8,70, 7,8,12,5,7,55, 7,8,2,4,7,55, + 7,8,2,6,8,71, 7,7,12,5,7,56, 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,4,7,57, 7,6,4,6,8,73, + 7,5,11,4,7,58, 7,5,11,5,7,58, 7,5,5,6,8,74, 7,4,10,5,7,59, 7,4,4,3,11,91, 7,4,4,6,8,75, 7,3,12,3,3,92, 7,3,12,5,7,60, + 7,3,11,3,4,92, 7,3,4,6,8,76, 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,3,3,12,93, 7,2,2,3,13,93, 7,2,2,6,8,77, + 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,11,4,7,62, 7,1,10,4,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, + 7,1,5,4,7,62, 7,1,4,4,7,62, 7,1,3,4,7,62, 7,1,2,4,7,62, 7,1,2,6,8,78, 8,14,10,3,5,81, 8,14,10,5,8,49, 8,14,9,3,6,81, + 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, 8,14,5,6,7,65, 8,13,11,3,4,82, 8,13,11,5,8,50, 8,13,4,3,11,82, + 8,13,4,6,7,66, 8,12,12,3,3,83, 8,12,12,5,8,51, 8,12,3,3,12,83, 8,12,3,6,7,67, 8,11,13,3,2,84, 8,11,13,5,8,52, 8,11,3,6,7,68, + 8,10,13,5,8,53, 8,10,2,3,13,85, 8,10,2,6,7,69, 8,9,13,4,8,54, 8,9,13,5,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, 8,8,2,4,8,55, + 8,8,2,6,7,71, 8,7,12,5,8,56, 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,4,8,57, 8,6,4,6,7,73, + 8,5,11,4,8,58, 8,5,11,5,8,58, 8,5,5,6,7,74, 8,4,10,5,8,59, 8,4,4,3,11,91, 8,4,4,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, + 8,3,11,3,4,92, 8,3,4,6,7,76, 8,2,13,3,2,93, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,3,3,12,93, 8,2,2,3,13,93, 8,2,2,6,7,77, + 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,11,4,8,62, 8,1,10,4,8,62, 8,1,9,4,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, + 8,1,5,4,8,62, 8,1,4,4,8,62, 8,1,3,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, 9,14,10,3,5,81, 9,14,10,5,9,49, 9,14,9,3,6,81, + 9,14,8,3,7,81, 9,14,7,3,8,81, 9,14,6,3,9,81, 9,14,5,3,10,81, 9,14,5,6,6,65, 9,13,11,3,4,82, 9,13,11,5,9,50, 9,13,4,3,11,82, + 9,13,4,6,6,66, 9,12,12,3,3,83, 9,12,12,5,9,51, 9,12,3,3,12,83, 9,12,3,6,6,67, 9,11,13,3,2,84, 9,11,13,5,9,52, 9,11,3,6,6,68, + 9,10,13,5,9,53, 9,10,2,3,13,85, 9,10,2,6,6,69, 9,9,13,4,9,54, 9,9,13,5,9,54, 9,9,2,6,6,70, 9,8,12,5,9,55, 9,8,2,4,9,55, + 9,8,2,6,6,71, 9,7,12,5,9,56, 9,7,3,4,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,4,4,9,57, 9,6,4,6,6,73, + 9,5,11,4,9,58, 9,5,11,5,9,58, 9,5,5,6,6,74, 9,4,10,5,9,59, 9,4,4,3,11,91, 9,4,4,6,6,75, 9,3,12,3,3,92, 9,3,12,5,9,60, + 9,3,11,3,4,92, 9,3,4,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,3,3,12,93, 9,2,2,3,13,93, 9,2,2,6,6,77, + 9,1,12,4,6,78, 9,1,12,5,6,78, 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,5,4,6,78, 9,1,2,4,6,78, 9,1,2,6,6,78, + 9,0,11,2,4,95, 9,0,11,5,6,79, 9,0,10,2,5,95, 9,0,9,2,6,95, 9,0,9,6,6,79, 9,0,4,2,11,95, 9,0,4,5,6,79, 9,0,3,2,12,95, + 9,0,3,6,6,79, 10,14,10,1,5,81, 10,14,10,3,5,81, 10,14,10,5,10,49, 10,14,9,1,6,81, 10,14,9,3,6,81, 10,14,8,1,7,81, 10,14,8,3,7,81, + 10,14,7,1,8,81, 10,14,7,3,8,81, 10,14,6,1,9,81, 10,14,6,3,9,81, 10,14,5,1,10,81, 10,14,5,3,10,81, 10,14,5,6,5,65, 10,13,11,3,4,82, + 10,13,11,5,10,50, 10,13,4,3,11,82, 10,13,4,6,5,66, 10,12,12,3,3,83, 10,12,12,5,10,51, 10,12,3,3,12,83, 10,12,3,6,5,67, 10,11,13,3,2,84, + 10,11,13,5,10,52, 10,11,3,6,5,68, 10,10,13,5,10,53, 10,10,2,3,13,85, 10,10,2,6,5,69, 10,9,13,4,10,54, 10,9,13,5,10,54, 10,9,2,6,5,70, + 10,8,12,5,10,55, 10,8,2,4,10,55, 10,8,2,6,5,71, 10,7,12,5,10,56, 10,7,3,4,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, + 10,6,4,4,10,57, 10,6,4,6,5,73, 10,5,11,4,10,58, 10,5,11,5,10,58, 10,5,5,6,5,74, 10,4,10,5,10,59, 10,4,4,3,11,91, 10,4,4,6,5,75, + 10,3,12,3,3,92, 10,3,12,5,10,60, 10,3,11,3,4,92, 10,3,4,6,5,76, 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,3,3,12,93, + 10,2,2,3,13,93, 10,2,2,6,5,77, 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, + 10,1,2,4,10,62, 10,1,2,6,5,78, 10,0,11,5,5,79, 10,0,9,6,5,79, 10,0,4,5,5,79, 10,0,3,6,5,79, 11,13,11,1,4,82, 11,13,11,3,4,82, + 11,13,11,5,11,50, 11,13,10,1,5,82, 11,13,10,3,5,82, 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, 11,13,7,1,8,82, + 11,13,7,3,8,82, 11,13,6,1,9,82, 11,13,6,3,9,82, 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,4,1,11,82, 11,13,4,3,11,82, 11,13,4,6,4,66, + 11,12,12,3,3,83, 11,12,12,5,11,51, 11,12,3,3,12,83, 11,12,3,6,4,67, 11,11,13,3,2,84, 11,11,13,5,11,52, 11,11,3,6,4,68, 11,10,13,5,11,53, + 11,10,2,3,13,85, 11,10,2,6,4,69, 11,9,13,4,11,54, 11,9,13,5,11,54, 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,2,4,11,55, 11,8,2,6,4,71, + 11,7,12,5,11,56, 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,4,11,57, 11,6,4,6,4,73, 11,5,11,4,11,58, + 11,5,11,5,11,58, 11,5,5,6,4,74, 11,4,10,5,11,59, 11,4,4,3,11,91, 11,4,4,6,4,75, 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,11,3,4,92, + 11,3,4,6,4,76, 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,3,3,12,93, 11,2,2,3,13,93, 11,2,2,6,4,77, 11,1,12,4,11,62, + 11,1,12,5,11,62, 11,1,8,4,11,62, 11,1,7,4,11,62, 11,1,6,4,11,62, 11,1,5,4,11,62, 11,1,2,4,11,62, 11,1,2,6,4,78, 11,0,11,1,4,95, + 11,0,11,5,4,79, 11,0,10,1,5,95, 11,0,9,1,6,95, 11,0,9,6,4,79, 11,0,4,1,11,95, 11,0,4,5,4,79, 11,0,3,1,12,95, 11,0,3,6,4,79, + 12,12,12,1,3,83, 12,12,12,3,3,83, 12,12,12,5,12,51, 12,12,11,1,4,83, 12,12,11,3,4,83, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, + 12,12,9,3,6,83, 12,12,8,1,7,83, 12,12,8,3,7,83, 12,12,7,1,8,83, 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, + 12,12,5,3,10,83, 12,12,4,1,11,83, 12,12,4,3,11,83, 12,12,3,1,12,83, 12,12,3,3,12,83, 12,12,3,6,3,67, 12,11,13,1,2,84, 12,11,13,3,2,84, + 12,11,13,5,12,52, 12,11,12,1,3,84, 12,11,11,1,4,84, 12,11,10,1,5,84, 12,11,9,1,6,84, 12,11,8,1,7,84, 12,11,7,1,8,84, 12,11,6,1,9,84, + 12,11,5,1,10,84, 12,11,4,1,11,84, 12,11,3,1,12,84, 12,11,3,6,3,68, 12,10,13,5,12,53, 12,10,2,3,13,85, 12,10,2,6,3,69, 12,9,13,4,12,54, + 12,9,13,5,12,54, 12,9,2,6,3,70, 12,8,12,5,12,55, 12,8,2,4,12,55, 12,8,2,6,3,71, 12,7,12,5,12,56, 12,7,3,4,12,56, 12,7,3,6,3,72, + 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,4,4,12,57, 12,6,4,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, 12,5,5,6,3,74, 12,4,10,5,12,59, + 12,4,4,3,11,91, 12,4,4,6,3,75, 12,3,12,1,3,92, 12,3,12,3,3,92, 12,3,12,5,12,60, 12,3,11,1,4,92, 12,3,11,3,4,92, 12,3,10,1,5,92, + 12,3,9,1,6,92, 12,3,8,1,7,92, 12,3,7,1,8,92, 12,3,6,1,9,92, 12,3,5,1,10,92, 12,3,4,1,11,92, 12,3,4,6,3,76, 12,2,13,1,2,93, + 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,1,3,93, 12,2,11,1,4,93, 12,2,10,1,5,93, 12,2,9,1,6,93, 12,2,8,1,7,93, + 12,2,7,1,8,93, 12,2,6,1,9,93, 12,2,5,1,10,93, 12,2,4,1,11,93, 12,2,3,1,12,93, 12,2,3,3,12,93, 12,2,2,1,13,93, 12,2,2,3,13,93, + 12,2,2,6,3,77, 12,1,12,1,3,94, 12,1,12,4,3,78, 12,1,12,5,3,78, 12,1,11,1,4,94, 12,1,11,4,3,78, 12,1,10,1,5,94, 12,1,10,4,3,78, + 12,1,9,1,6,94, 12,1,9,4,3,78, 12,1,8,1,7,94, 12,1,8,4,3,78, 12,1,7,1,8,94, 12,1,7,4,3,78, 12,1,6,1,9,94, 12,1,6,4,3,78, + 12,1,5,1,10,94, 12,1,5,4,3,78, 12,1,4,1,11,94, 12,1,4,4,3,78, 12,1,3,1,12,94, 12,1,3,4,3,78, 12,1,2,1,13,94, 12,1,2,4,3,78, + 12,1,2,6,3,78, 13,10,13,1,2,85, 13,10,13,3,2,85, 13,10,13,5,13,53, 13,10,12,1,3,85, 13,10,12,3,3,85, 13,10,11,1,4,85, 13,10,11,3,4,85, + 13,10,10,1,5,85, 13,10,10,3,5,85, 13,10,9,1,6,85, 13,10,9,3,6,85, 13,10,8,1,7,85, 13,10,8,3,7,85, 13,10,7,1,8,85, 13,10,7,3,8,85, + 13,10,6,1,9,85, 13,10,6,3,9,85, 13,10,5,1,10,85, 13,10,5,3,10,85, 13,10,4,1,11,85, 13,10,4,3,11,85, 13,10,3,1,12,85, 13,10,3,3,12,85, + 13,10,2,1,13,85, 13,10,2,3,13,85, 13,10,2,6,2,69, 13,9,13,1,2,86, 13,9,13,4,13,54, 13,9,13,5,13,54, 13,9,12,1,3,86, 13,9,11,1,4,86, + 13,9,10,1,5,86, 13,9,9,1,6,86, 13,9,8,1,7,86, 13,9,7,1,8,86, 13,9,6,1,9,86, 13,9,5,1,10,86, 13,9,4,1,11,86, 13,9,3,1,12,86, + 13,9,2,1,13,86, 13,9,2,6,2,70, 13,8,12,5,13,55, 13,8,2,4,13,55, 13,8,2,6,2,71, 13,7,12,5,13,56, 13,7,3,4,13,56, 13,7,3,6,2,72, + 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,4,4,13,57, 13,6,4,6,2,73, 13,5,11,4,2,74, 13,5,11,5,2,74, 13,5,5,6,2,74, 13,4,10,1,5,91, + 13,4,10,4,2,75, 13,4,10,5,2,75, 13,4,9,1,6,91, 13,4,9,4,2,75, 13,4,8,1,7,91, 13,4,8,4,2,75, 13,4,7,1,8,91, 13,4,7,4,2,75, + 13,4,6,1,9,91, 13,4,6,4,2,75, 13,4,5,1,10,91, 13,4,5,4,2,75, 13,4,4,1,11,91, 13,4,4,3,11,91, 13,4,4,4,2,75, 13,4,4,6,2,75, + 14,8,12,1,3,87, 14,8,12,3,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,11,3,4,87, 14,8,10,1,5,87, 14,8,10,3,5,87, 14,8,9,1,6,87, + 14,8,9,3,6,87, 14,8,8,1,7,87, 14,8,8,3,7,87, 14,8,7,1,8,87, 14,8,7,3,8,87, 14,8,6,1,9,87, 14,8,6,3,9,87, 14,8,5,1,10,87, + 14,8,5,3,10,87, 14,8,4,1,11,87, 14,8,4,3,11,87, 14,8,3,1,12,87, 14,8,3,3,12,87, 14,8,2,1,13,87, 14,8,2,3,13,87, 14,8,2,4,14,55, + 14,8,2,6,1,71, 14,7,12,1,3,88, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, + 14,7,6,1,9,88, 14,7,5,1,10,88, 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,3,4,14,56, 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, + 14,6,12,5,1,73, 14,6,11,1,4,89, 14,6,10,1,5,89, 14,6,9,1,6,89, 14,6,8,1,7,89, 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, + 14,6,4,1,11,89, 14,6,4,4,1,73, 14,6,4,6,1,73, 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, 14,5,10,1,5,90, 14,5,10,4,1,74, + 14,5,9,1,6,90, 14,5,9,4,1,74, 14,5,8,1,7,90, 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, 14,5,6,1,9,90, 14,5,6,4,1,74, + 14,5,5,1,10,90, 14,5,5,4,1,74, 14,5,5,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/lance.lua b/assets/voxels/lance.lua new file mode 100644 index 0000000..26b892b --- /dev/null +++ b/assets/voxels/lance.lua @@ -0,0 +1,367 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "lance" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "lance", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1890, + count = 1290, + faces = { + 0,3,10,2,6,44, 0,3,10,3,6,44, 0,3,10,5,0,12, 0,3,9,2,7,44, 0,3,9,3,7,44, 0,3,8,2,8,44, 0,3,8,3,8,44, 0,3,7,2,9,44, + 0,3,7,3,9,44, 0,3,6,2,10,44, 0,3,6,3,10,44, 0,3,5,2,11,44, 0,3,5,3,11,44, 0,3,4,2,12,44, 0,3,4,3,12,44, 0,3,3,2,13,44, + 0,3,3,3,13,44, 0,3,2,2,14,44, 0,3,2,3,14,44, 0,3,2,4,0,12, 0,3,2,6,15,28, 0,2,11,2,5,45, 0,2,11,3,5,45, 0,2,11,4,0,13, + 0,2,11,5,0,13, 0,2,10,2,6,45, 0,2,10,4,0,13, 0,2,9,2,7,45, 0,2,9,4,0,13, 0,2,8,2,8,45, 0,2,8,4,0,13, 0,2,7,2,9,45, + 0,2,7,4,0,13, 0,2,6,2,10,45, 0,2,6,4,0,13, 0,2,5,2,11,45, 0,2,5,4,0,13, 0,2,4,2,12,45, 0,2,4,4,0,13, 0,2,3,2,13,45, + 0,2,3,4,0,13, 0,2,3,6,15,29, 1,13,13,2,3,34, 1,13,13,3,3,34, 1,13,13,4,14,18, 1,13,13,5,14,18, 1,13,12,2,4,34, 1,13,12,3,4,34, + 1,13,12,4,14,18, 1,13,11,2,5,34, 1,13,11,3,5,34, 1,13,11,4,14,18, 1,13,10,2,6,34, 1,13,10,3,6,34, 1,13,10,4,14,18, 1,13,9,2,7,34, + 1,13,9,3,7,34, 1,13,9,4,14,18, 1,13,8,2,8,34, 1,13,8,3,8,34, 1,13,8,4,14,18, 1,13,7,2,9,34, 1,13,7,3,9,34, 1,13,7,4,14,18, + 1,13,6,2,10,34, 1,13,6,3,10,34, 1,13,6,4,14,18, 1,13,5,2,11,34, 1,13,5,3,11,34, 1,13,5,4,14,18, 1,13,4,2,12,34, 1,13,4,3,12,34, + 1,13,4,4,14,18, 1,13,3,2,13,34, 1,13,3,3,13,34, 1,13,3,4,14,18, 1,13,2,2,14,34, 1,13,2,3,14,34, 1,13,2,4,14,18, 1,13,1,2,15,34, + 1,13,1,3,15,34, 1,13,1,4,14,18, 1,13,1,6,14,18, 1,10,13,2,3,37, 1,10,13,3,3,37, 1,10,13,5,1,5, 1,10,12,2,4,37, 1,10,12,3,4,37, + 1,10,11,2,5,37, 1,10,11,3,5,37, 1,10,10,2,6,37, 1,10,10,3,6,37, 1,10,9,2,7,37, 1,10,9,3,7,37, 1,10,8,2,8,37, 1,10,8,3,8,37, + 1,10,7,2,9,37, 1,10,7,3,9,37, 1,10,6,2,10,37, 1,10,6,3,10,37, 1,10,5,2,11,37, 1,10,5,3,11,37, 1,10,4,2,12,37, 1,10,4,3,12,37, + 1,10,3,2,13,37, 1,10,3,3,13,37, 1,10,3,4,1,5, 1,10,3,6,1,5, 1,9,13,2,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,11,2,5,38, + 1,9,10,2,6,38, 1,9,9,2,7,38, 1,9,8,2,8,38, 1,9,7,2,9,38, 1,9,6,2,10,38, 1,9,5,2,11,38, 1,9,4,2,12,38, 1,9,4,6,14,22, + 1,8,13,2,3,39, 1,8,13,4,1,7, 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,12,4,1,7, 1,8,11,2,5,39, 1,8,11,4,1,7, 1,8,10,2,6,39, + 1,8,10,4,1,7, 1,8,9,2,7,39, 1,8,9,4,1,7, 1,8,8,2,8,39, 1,8,8,4,1,7, 1,8,7,2,9,39, 1,8,7,4,1,7, 1,8,6,2,10,39, + 1,8,6,4,1,7, 1,8,5,2,11,39, 1,8,5,4,1,7, 1,8,4,2,12,39, 1,8,4,4,1,7, 1,8,4,6,14,23, 1,5,11,2,5,42, 1,5,11,3,5,42, + 1,5,11,4,1,10, 1,5,11,5,1,10, 1,5,10,2,6,42, 1,5,10,3,6,42, 1,5,9,2,7,42, 1,5,9,3,7,42, 1,5,8,2,8,42, 1,5,8,3,8,42, + 1,5,7,2,9,42, 1,5,7,3,9,42, 1,5,6,2,10,42, 1,5,6,3,10,42, 1,5,5,2,11,42, 1,5,5,3,11,42, 1,5,4,2,12,42, 1,5,4,3,12,42, + 1,5,4,6,1,10, 1,4,10,2,6,43, 1,4,10,5,1,11, 1,4,9,2,7,43, 1,4,8,2,8,43, 1,4,7,2,9,43, 1,4,6,2,10,43, 1,4,5,2,11,43, + 1,4,4,2,12,43, 1,4,3,2,13,43, 1,4,3,3,13,43, 1,4,3,6,14,27, 1,3,10,5,1,12, 1,3,2,3,14,44, 1,3,2,4,1,12, 1,3,2,6,14,28, + 1,2,11,3,5,45, 1,2,11,5,1,13, 1,2,4,4,1,13, 1,2,3,4,1,13, 1,2,3,6,14,29, 1,1,11,2,5,46, 1,1,11,4,1,14, 1,1,11,5,1,14, + 1,1,10,2,6,46, 1,1,10,4,1,14, 1,1,9,2,7,46, 1,1,9,4,1,14, 1,1,8,2,8,46, 1,1,8,4,1,14, 1,1,7,2,9,46, 1,1,7,4,1,14, + 1,1,6,2,10,46, 1,1,6,4,1,14, 1,1,5,2,11,46, 1,1,5,4,1,14, 1,1,5,6,14,30, 2,13,13,3,3,34, 2,13,13,5,13,18, 2,13,12,3,4,34, + 2,13,11,3,5,34, 2,13,10,3,6,34, 2,13,9,3,7,34, 2,13,8,3,8,34, 2,13,7,3,9,34, 2,13,6,3,10,34, 2,13,5,3,11,34, 2,13,4,3,12,34, + 2,13,3,3,13,34, 2,13,2,3,14,34, 2,13,1,3,15,34, 2,13,1,4,13,18, 2,13,1,6,13,18, 2,12,14,2,2,35, 2,12,14,3,2,35, 2,12,14,5,13,19, + 2,12,13,2,3,35, 2,12,12,2,4,35, 2,12,11,2,5,35, 2,12,10,2,6,35, 2,12,9,2,7,35, 2,12,8,2,8,35, 2,12,7,2,9,35, 2,12,6,2,10,35, + 2,12,5,2,11,35, 2,12,4,2,12,35, 2,12,3,2,13,35, 2,12,2,2,14,35, 2,12,2,4,13,19, 2,12,2,6,13,19, 2,11,14,2,2,36, 2,11,14,4,2,4, + 2,11,14,5,2,4, 2,11,13,2,3,36, 2,11,12,2,4,36, 2,11,11,2,5,36, 2,11,10,2,6,36, 2,11,9,2,7,36, 2,11,8,2,8,36, 2,11,7,2,9,36, + 2,11,6,2,10,36, 2,11,5,2,11,36, 2,11,4,2,12,36, 2,11,3,2,13,36, 2,11,3,6,13,20, 2,10,13,5,2,5, 2,10,3,4,2,5, 2,10,3,6,13,21, + 2,9,13,5,2,6, 2,9,4,6,13,22, 2,8,13,5,2,7, 2,8,4,4,2,7, 2,8,4,6,13,23, 2,7,13,2,3,40, 2,7,13,4,2,8, 2,7,13,5,2,8, + 2,7,12,2,4,40, 2,7,11,2,5,40, 2,7,10,2,6,40, 2,7,9,2,7,40, 2,7,8,2,8,40, 2,7,7,2,9,40, 2,7,6,2,10,40, 2,7,5,2,11,40, + 2,7,5,6,13,24, 2,6,12,2,4,41, 2,6,12,4,2,9, 2,6,12,5,2,9, 2,6,11,2,5,41, 2,6,10,2,6,41, 2,6,9,2,7,41, 2,6,8,2,8,41, + 2,6,7,2,9,41, 2,6,6,2,10,41, 2,6,5,2,11,41, 2,6,5,6,2,9, 2,5,11,4,2,10, 2,5,11,5,2,10, 2,5,4,3,12,42, 2,5,4,6,13,26, + 2,4,10,5,2,11, 2,4,3,3,13,43, 2,4,3,6,13,27, 2,3,10,5,2,12, 2,3,2,3,14,44, 2,3,2,4,2,12, 2,3,2,6,13,28, 2,2,11,3,5,45, + 2,2,11,5,2,13, 2,2,4,4,2,13, 2,2,3,4,2,13, 2,2,3,6,13,29, 2,1,11,4,2,14, 2,1,11,5,2,14, 2,1,10,4,2,14, 2,1,9,4,2,14, + 2,1,8,4,2,14, 2,1,7,4,2,14, 2,1,6,4,2,14, 2,1,5,4,2,14, 2,1,5,6,13,30, 3,14,12,2,4,33, 3,14,12,3,4,33, 3,14,12,5,12,17, + 3,14,11,2,5,33, 3,14,11,3,5,33, 3,14,10,2,6,33, 3,14,10,3,6,33, 3,14,9,2,7,33, 3,14,9,3,7,33, 3,14,8,2,8,33, 3,14,8,3,8,33, + 3,14,7,2,9,33, 3,14,7,3,9,33, 3,14,6,2,10,33, 3,14,6,3,10,33, 3,14,5,2,11,33, 3,14,5,3,11,33, 3,14,4,2,12,33, 3,14,4,3,12,33, + 3,14,3,2,13,33, 3,14,3,3,13,33, 3,14,3,6,12,17, 3,13,13,3,3,34, 3,13,13,5,3,2, 3,13,2,3,14,34, 3,13,1,3,15,34, 3,13,1,4,3,2, + 3,13,1,6,12,18, 3,12,14,3,2,35, 3,12,14,5,3,3, 3,12,2,4,3,3, 3,12,2,6,12,19, 3,11,14,4,3,4, 3,11,14,5,3,4, 3,11,3,6,12,20, + 3,10,13,5,3,5, 3,10,3,4,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,4,6,12,22, 3,8,13,5,3,7, 3,8,4,4,3,7, 3,8,4,6,12,23, + 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,5,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,5,6,12,25, 3,5,11,4,3,10, 3,5,11,5,3,10, + 3,5,4,3,12,42, 3,5,4,6,12,26, 3,4,10,5,3,11, 3,4,3,3,13,43, 3,4,3,6,12,27, 3,3,10,5,3,12, 3,3,2,3,14,44, 3,3,2,4,3,12, + 3,3,2,6,12,28, 3,2,11,3,5,45, 3,2,11,5,3,13, 3,2,4,4,3,13, 3,2,3,4,3,13, 3,2,3,6,12,29, 3,1,11,4,3,14, 3,1,11,5,3,14, + 3,1,10,4,3,14, 3,1,9,4,3,14, 3,1,8,4,3,14, 3,1,7,4,3,14, 3,1,6,4,3,14, 3,1,5,4,3,14, 3,1,5,6,12,30, 4,14,12,3,4,33, + 4,14,12,5,4,1, 4,14,11,3,5,33, 4,14,10,3,6,33, 4,14,9,3,7,33, 4,14,8,3,8,33, 4,14,7,3,9,33, 4,14,6,3,10,33, 4,14,5,3,11,33, + 4,14,4,3,12,33, 4,14,3,3,13,33, 4,14,3,6,11,17, 4,13,13,3,3,34, 4,13,13,5,4,2, 4,13,2,3,14,34, 4,13,1,3,15,34, 4,13,1,4,4,2, + 4,13,1,6,11,18, 4,12,14,3,2,35, 4,12,14,5,4,3, 4,12,2,4,4,3, 4,12,2,6,11,19, 4,11,14,4,4,4, 4,11,14,5,4,4, 4,11,3,6,11,20, + 4,10,13,5,4,5, 4,10,3,4,4,5, 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,4,6,11,22, 4,8,13,5,4,7, 4,8,4,4,4,7, 4,8,4,6,11,23, + 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,5,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,5,6,11,25, 4,5,11,4,4,10, 4,5,11,5,4,10, + 4,5,4,3,12,42, 4,5,4,6,11,26, 4,4,10,5,4,11, 4,4,3,3,13,43, 4,4,3,6,11,27, 4,3,10,5,4,12, 4,3,2,3,14,44, 4,3,2,4,4,12, + 4,3,2,6,11,28, 4,2,11,3,5,45, 4,2,11,5,4,13, 4,2,4,4,4,13, 4,2,3,4,4,13, 4,2,3,6,11,29, 4,1,11,4,4,14, 4,1,11,5,4,14, + 4,1,6,4,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, 4,0,10,2,6,47, 4,0,10,5,4,15, 4,0,9,2,7,47, 4,0,8,2,8,47, 4,0,7,2,9,47, + 4,0,7,6,11,31, 5,15,10,2,6,32, 5,15,10,3,6,32, 5,15,10,5,10,16, 5,15,9,2,7,32, 5,15,9,3,7,32, 5,15,8,2,8,32, 5,15,8,3,8,32, + 5,15,7,2,9,32, 5,15,7,3,9,32, 5,15,6,2,10,32, 5,15,6,3,10,32, 5,15,5,2,11,32, 5,15,5,3,11,32, 5,15,5,6,10,16, 5,14,12,3,4,33, + 5,14,12,5,5,1, 5,14,11,3,5,33, 5,14,4,3,12,33, 5,14,3,3,13,33, 5,14,3,6,10,17, 5,13,13,3,3,34, 5,13,13,5,5,2, 5,13,2,3,14,34, + 5,13,1,3,15,34, 5,13,1,4,5,2, 5,13,1,6,10,18, 5,12,14,3,2,35, 5,12,14,5,5,3, 5,12,2,4,5,3, 5,12,2,6,10,19, 5,11,14,4,5,4, + 5,11,14,5,5,4, 5,11,3,6,10,20, 5,10,13,5,5,5, 5,10,3,4,5,5, 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,4,6,10,22, 5,8,13,5,5,7, + 5,8,4,4,5,7, 5,8,4,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,5,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,5,6,10,25, + 5,5,11,4,5,10, 5,5,11,5,5,10, 5,5,4,3,12,42, 5,5,4,6,10,26, 5,4,10,5,5,11, 5,4,3,3,13,43, 5,4,3,6,10,27, 5,3,10,5,5,12, + 5,3,2,3,14,44, 5,3,2,4,5,12, 5,3,2,6,10,28, 5,2,11,3,5,45, 5,2,11,5,5,13, 5,2,4,4,5,13, 5,2,3,4,5,13, 5,2,3,6,10,29, + 5,1,11,4,5,14, 5,1,11,5,5,14, 5,1,6,4,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,10,5,5,15, 5,0,7,6,10,31, 6,15,10,3,6,32, + 6,15,10,5,6,0, 6,15,9,3,7,32, 6,15,8,3,8,32, 6,15,7,3,9,32, 6,15,6,3,10,32, 6,15,5,3,11,32, 6,15,5,6,9,16, 6,14,12,3,4,33, + 6,14,12,5,6,1, 6,14,11,3,5,33, 6,14,4,3,12,33, 6,14,3,3,13,33, 6,14,3,6,9,17, 6,13,13,3,3,34, 6,13,13,5,6,2, 6,13,2,3,14,34, + 6,13,1,3,15,34, 6,13,1,4,6,2, 6,13,1,6,9,18, 6,12,14,3,2,35, 6,12,14,5,6,3, 6,12,2,4,6,3, 6,12,2,6,9,19, 6,11,14,4,6,4, + 6,11,14,5,6,4, 6,11,3,6,9,20, 6,10,13,5,6,5, 6,10,3,4,6,5, 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,4,6,9,22, 6,8,13,5,6,7, + 6,8,4,4,6,7, 6,8,4,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,5,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,5,6,9,25, + 6,5,11,4,6,10, 6,5,11,5,6,10, 6,5,4,3,12,42, 6,5,4,6,9,26, 6,4,10,5,6,11, 6,4,3,3,13,43, 6,4,3,6,9,27, 6,3,10,5,6,12, + 6,3,2,3,14,44, 6,3,2,4,6,12, 6,3,2,6,9,28, 6,2,11,3,5,45, 6,2,11,5,6,13, 6,2,4,4,6,13, 6,2,3,4,6,13, 6,2,3,6,9,29, + 6,1,11,4,6,14, 6,1,11,5,6,14, 6,1,6,4,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,10,1,6,47, 6,0,10,5,6,15, 6,0,9,1,7,47, + 6,0,8,1,8,47, 6,0,7,1,9,47, 6,0,7,6,9,31, 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, + 7,15,6,3,10,32, 7,15,5,3,11,32, 7,15,5,6,8,16, 7,14,12,3,4,33, 7,14,12,5,7,1, 7,14,11,3,5,33, 7,14,4,3,12,33, 7,14,3,3,13,33, + 7,14,3,6,8,17, 7,13,13,3,3,34, 7,13,13,5,7,2, 7,13,2,3,14,34, 7,13,1,3,15,34, 7,13,1,4,7,2, 7,13,1,6,8,18, 7,12,14,3,2,35, + 7,12,14,5,7,3, 7,12,2,4,7,3, 7,12,2,6,8,19, 7,11,14,4,7,4, 7,11,14,5,7,4, 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,4,7,5, + 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,4,6,8,22, 7,8,13,5,7,7, 7,8,4,4,7,7, 7,8,4,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, + 7,7,5,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,5,6,8,25, 7,5,11,4,7,10, 7,5,11,5,7,10, 7,5,4,3,12,42, 7,5,4,6,8,26, + 7,4,10,5,7,11, 7,4,3,3,13,43, 7,4,3,6,8,27, 7,3,10,5,7,12, 7,3,2,3,14,44, 7,3,2,4,7,12, 7,3,2,6,8,28, 7,2,11,3,5,45, + 7,2,11,5,7,13, 7,2,4,4,7,13, 7,2,3,4,7,13, 7,2,3,6,8,29, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, + 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, 8,15,10,3,6,32, 8,15,10,5,8,0, 8,15,9,3,7,32, + 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,5,3,11,32, 8,15,5,6,7,16, 8,14,12,3,4,33, 8,14,12,5,8,1, 8,14,11,3,5,33, + 8,14,4,3,12,33, 8,14,3,3,13,33, 8,14,3,6,7,17, 8,13,13,3,3,34, 8,13,13,5,8,2, 8,13,2,3,14,34, 8,13,1,3,15,34, 8,13,1,4,8,2, + 8,13,1,6,7,18, 8,12,14,3,2,35, 8,12,14,5,8,3, 8,12,2,4,8,3, 8,12,2,6,7,19, 8,11,14,4,8,4, 8,11,14,5,8,4, 8,11,3,6,7,20, + 8,10,13,5,8,5, 8,10,3,4,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,4,6,7,22, 8,8,13,5,8,7, 8,8,4,4,8,7, 8,8,4,6,7,23, + 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,5,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,5,6,7,25, 8,5,11,4,8,10, 8,5,11,5,8,10, + 8,5,4,3,12,42, 8,5,4,6,7,26, 8,4,10,5,8,11, 8,4,3,3,13,43, 8,4,3,6,7,27, 8,3,10,5,8,12, 8,3,2,3,14,44, 8,3,2,4,8,12, + 8,3,2,6,7,28, 8,2,11,3,5,45, 8,2,11,5,8,13, 8,2,4,4,8,13, 8,2,3,4,8,13, 8,2,3,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, + 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,10,3,6,32, + 9,15,10,5,9,0, 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, 9,15,6,3,10,32, 9,15,5,3,11,32, 9,15,5,6,6,16, 9,14,12,3,4,33, + 9,14,12,5,9,1, 9,14,11,3,5,33, 9,14,4,3,12,33, 9,14,3,3,13,33, 9,14,3,6,6,17, 9,13,13,3,3,34, 9,13,13,5,9,2, 9,13,2,3,14,34, + 9,13,1,3,15,34, 9,13,1,4,9,2, 9,13,1,6,6,18, 9,12,14,3,2,35, 9,12,14,5,9,3, 9,12,2,4,9,3, 9,12,2,6,6,19, 9,11,14,4,9,4, + 9,11,14,5,9,4, 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,4,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, 9,9,4,6,6,22, 9,8,13,5,9,7, + 9,8,4,4,9,7, 9,8,4,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,5,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,5,6,6,25, + 9,5,11,4,9,10, 9,5,11,5,9,10, 9,5,4,3,12,42, 9,5,4,6,6,26, 9,4,10,5,9,11, 9,4,3,3,13,43, 9,4,3,6,6,27, 9,3,10,5,9,12, + 9,3,2,3,14,44, 9,3,2,4,9,12, 9,3,2,6,6,28, 9,2,11,3,5,45, 9,2,11,5,9,13, 9,2,4,4,9,13, 9,2,3,4,9,13, 9,2,3,6,6,29, + 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,6,4,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,10,2,6,47, 9,0,10,5,9,15, 9,0,9,2,7,47, + 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,7,6,6,31, 10,15,10,1,6,32, 10,15,10,3,6,32, 10,15,10,5,10,0, 10,15,9,1,7,32, 10,15,9,3,7,32, + 10,15,8,1,8,32, 10,15,8,3,8,32, 10,15,7,1,9,32, 10,15,7,3,9,32, 10,15,6,1,10,32, 10,15,6,3,10,32, 10,15,5,1,11,32, 10,15,5,3,11,32, + 10,15,5,6,10,0, 10,14,12,3,4,33, 10,14,12,5,10,1, 10,14,11,3,5,33, 10,14,4,3,12,33, 10,14,3,3,13,33, 10,14,3,6,5,17, 10,13,13,3,3,34, + 10,13,13,5,10,2, 10,13,2,3,14,34, 10,13,1,3,15,34, 10,13,1,4,10,2, 10,13,1,6,5,18, 10,12,14,3,2,35, 10,12,14,5,10,3, 10,12,2,4,10,3, + 10,12,2,6,5,19, 10,11,14,4,10,4, 10,11,14,5,10,4, 10,11,3,6,5,20, 10,10,13,5,10,5, 10,10,3,4,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, + 10,9,4,6,5,22, 10,8,13,5,10,7, 10,8,4,4,10,7, 10,8,4,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,5,6,5,24, 10,6,12,4,10,9, + 10,6,12,5,10,9, 10,6,5,6,5,25, 10,5,11,4,10,10, 10,5,11,5,10,10, 10,5,4,3,12,42, 10,5,4,6,5,26, 10,4,10,5,10,11, 10,4,3,3,13,43, + 10,4,3,6,5,27, 10,3,10,5,10,12, 10,3,2,3,14,44, 10,3,2,4,10,12, 10,3,2,6,5,28, 10,2,11,3,5,45, 10,2,11,5,10,13, 10,2,4,4,10,13, + 10,2,3,4,10,13, 10,2,3,6,5,29, 10,1,11,4,10,14, 10,1,11,5,10,14, 10,1,6,4,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,10,5,10,15, + 10,0,7,6,5,31, 11,14,12,3,4,33, 11,14,12,5,11,1, 11,14,11,3,5,33, 11,14,10,3,6,33, 11,14,9,3,7,33, 11,14,8,3,8,33, 11,14,7,3,9,33, + 11,14,6,3,10,33, 11,14,5,3,11,33, 11,14,4,3,12,33, 11,14,3,3,13,33, 11,14,3,6,4,17, 11,13,13,3,3,34, 11,13,13,5,11,2, 11,13,2,3,14,34, + 11,13,1,3,15,34, 11,13,1,4,11,2, 11,13,1,6,4,18, 11,12,14,3,2,35, 11,12,14,5,11,3, 11,12,2,4,11,3, 11,12,2,6,4,19, 11,11,14,4,11,4, + 11,11,14,5,11,4, 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,4,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,4,6,4,22, 11,8,13,5,11,7, + 11,8,4,4,11,7, 11,8,4,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,5,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,5,6,4,25, + 11,5,11,4,11,10, 11,5,11,5,11,10, 11,5,4,3,12,42, 11,5,4,6,4,26, 11,4,10,5,11,11, 11,4,3,3,13,43, 11,4,3,6,4,27, 11,3,10,5,11,12, + 11,3,2,3,14,44, 11,3,2,4,11,12, 11,3,2,6,4,28, 11,2,11,3,5,45, 11,2,11,5,11,13, 11,2,4,4,11,13, 11,2,3,4,11,13, 11,2,3,6,4,29, + 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,6,4,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,10,1,6,47, 11,0,10,5,11,15, 11,0,9,1,7,47, + 11,0,8,1,8,47, 11,0,7,1,9,47, 11,0,7,6,4,31, 12,14,12,1,4,33, 12,14,12,3,4,33, 12,14,12,5,12,1, 12,14,11,1,5,33, 12,14,11,3,5,33, + 12,14,10,1,6,33, 12,14,10,3,6,33, 12,14,9,1,7,33, 12,14,9,3,7,33, 12,14,8,1,8,33, 12,14,8,3,8,33, 12,14,7,1,9,33, 12,14,7,3,9,33, + 12,14,6,1,10,33, 12,14,6,3,10,33, 12,14,5,1,11,33, 12,14,5,3,11,33, 12,14,4,1,12,33, 12,14,4,3,12,33, 12,14,3,1,13,33, 12,14,3,3,13,33, + 12,14,3,6,12,1, 12,13,13,3,3,34, 12,13,13,5,12,2, 12,13,2,3,14,34, 12,13,1,3,15,34, 12,13,1,4,12,2, 12,13,1,6,3,18, 12,12,14,3,2,35, + 12,12,14,5,12,3, 12,12,2,4,12,3, 12,12,2,6,3,19, 12,11,14,4,12,4, 12,11,14,5,12,4, 12,11,3,6,3,20, 12,10,13,5,12,5, 12,10,3,4,12,5, + 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,4,6,3,22, 12,8,13,5,12,7, 12,8,4,4,12,7, 12,8,4,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, + 12,7,5,6,3,24, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,5,6,3,25, 12,5,11,4,12,10, 12,5,11,5,12,10, 12,5,4,3,12,42, 12,5,4,6,3,26, + 12,4,10,5,12,11, 12,4,3,3,13,43, 12,4,3,6,3,27, 12,3,10,5,12,12, 12,3,2,3,14,44, 12,3,2,4,12,12, 12,3,2,6,3,28, 12,2,11,3,5,45, + 12,2,11,5,12,13, 12,2,4,4,12,13, 12,2,3,4,12,13, 12,2,3,6,3,29, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,4,12,14, 12,1,9,4,12,14, + 12,1,8,4,12,14, 12,1,7,4,12,14, 12,1,6,4,12,14, 12,1,5,4,12,14, 12,1,5,6,3,30, 13,13,13,3,3,34, 13,13,13,5,13,2, 13,13,12,3,4,34, + 13,13,11,3,5,34, 13,13,10,3,6,34, 13,13,9,3,7,34, 13,13,8,3,8,34, 13,13,7,3,9,34, 13,13,6,3,10,34, 13,13,5,3,11,34, 13,13,4,3,12,34, + 13,13,3,3,13,34, 13,13,2,3,14,34, 13,13,1,3,15,34, 13,13,1,4,13,2, 13,13,1,6,13,2, 13,12,14,1,2,35, 13,12,14,3,2,35, 13,12,14,5,13,3, + 13,12,13,1,3,35, 13,12,12,1,4,35, 13,12,11,1,5,35, 13,12,10,1,6,35, 13,12,9,1,7,35, 13,12,8,1,8,35, 13,12,7,1,9,35, 13,12,6,1,10,35, + 13,12,5,1,11,35, 13,12,4,1,12,35, 13,12,3,1,13,35, 13,12,2,1,14,35, 13,12,2,4,13,3, 13,12,2,6,2,19, 13,11,14,1,2,36, 13,11,14,4,13,4, + 13,11,14,5,13,4, 13,11,13,1,3,36, 13,11,12,1,4,36, 13,11,11,1,5,36, 13,11,10,1,6,36, 13,11,9,1,7,36, 13,11,8,1,8,36, 13,11,7,1,9,36, + 13,11,6,1,10,36, 13,11,5,1,11,36, 13,11,4,1,12,36, 13,11,3,1,13,36, 13,11,3,6,2,20, 13,10,13,5,13,5, 13,10,3,4,13,5, 13,10,3,6,2,21, + 13,9,13,5,13,6, 13,9,4,6,2,22, 13,8,13,5,13,7, 13,8,4,4,13,7, 13,8,4,6,2,23, 13,7,13,1,3,40, 13,7,13,4,13,8, 13,7,13,5,13,8, + 13,7,12,1,4,40, 13,7,11,1,5,40, 13,7,10,1,6,40, 13,7,9,1,7,40, 13,7,8,1,8,40, 13,7,7,1,9,40, 13,7,6,1,10,40, 13,7,5,1,11,40, + 13,7,5,6,2,24, 13,6,12,1,4,41, 13,6,12,4,13,9, 13,6,12,5,13,9, 13,6,11,1,5,41, 13,6,10,1,6,41, 13,6,9,1,7,41, 13,6,8,1,8,41, + 13,6,7,1,9,41, 13,6,6,1,10,41, 13,6,5,1,11,41, 13,6,5,6,13,9, 13,5,11,4,13,10, 13,5,11,5,13,10, 13,5,4,3,12,42, 13,5,4,6,2,26, + 13,4,10,5,13,11, 13,4,3,3,13,43, 13,4,3,6,2,27, 13,3,10,5,13,12, 13,3,2,3,14,44, 13,3,2,4,13,12, 13,3,2,6,2,28, 13,2,11,3,5,45, + 13,2,11,5,13,13, 13,2,4,4,13,13, 13,2,3,4,13,13, 13,2,3,6,2,29, 13,1,11,4,13,14, 13,1,11,5,13,14, 13,1,10,4,13,14, 13,1,9,4,13,14, + 13,1,8,4,13,14, 13,1,7,4,13,14, 13,1,6,4,13,14, 13,1,5,4,13,14, 13,1,5,6,2,30, 14,13,13,1,3,34, 14,13,13,3,3,34, 14,13,13,4,14,2, + 14,13,13,5,14,2, 14,13,12,1,4,34, 14,13,12,3,4,34, 14,13,12,4,14,2, 14,13,11,1,5,34, 14,13,11,3,5,34, 14,13,11,4,14,2, 14,13,10,1,6,34, + 14,13,10,3,6,34, 14,13,10,4,14,2, 14,13,9,1,7,34, 14,13,9,3,7,34, 14,13,9,4,14,2, 14,13,8,1,8,34, 14,13,8,3,8,34, 14,13,8,4,14,2, + 14,13,7,1,9,34, 14,13,7,3,9,34, 14,13,7,4,14,2, 14,13,6,1,10,34, 14,13,6,3,10,34, 14,13,6,4,14,2, 14,13,5,1,11,34, 14,13,5,3,11,34, + 14,13,5,4,14,2, 14,13,4,1,12,34, 14,13,4,3,12,34, 14,13,4,4,14,2, 14,13,3,1,13,34, 14,13,3,3,13,34, 14,13,3,4,14,2, 14,13,2,1,14,34, + 14,13,2,3,14,34, 14,13,2,4,14,2, 14,13,1,1,15,34, 14,13,1,3,15,34, 14,13,1,4,14,2, 14,13,1,6,14,2, 14,10,13,1,3,37, 14,10,13,3,3,37, + 14,10,13,5,14,5, 14,10,12,1,4,37, 14,10,12,3,4,37, 14,10,11,1,5,37, 14,10,11,3,5,37, 14,10,10,1,6,37, 14,10,10,3,6,37, 14,10,9,1,7,37, + 14,10,9,3,7,37, 14,10,8,1,8,37, 14,10,8,3,8,37, 14,10,7,1,9,37, 14,10,7,3,9,37, 14,10,6,1,10,37, 14,10,6,3,10,37, 14,10,5,1,11,37, + 14,10,5,3,11,37, 14,10,4,1,12,37, 14,10,4,3,12,37, 14,10,3,1,13,37, 14,10,3,3,13,37, 14,10,3,4,14,5, 14,10,3,6,14,5, 14,9,13,1,3,38, + 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,11,1,5,38, 14,9,10,1,6,38, 14,9,9,1,7,38, 14,9,8,1,8,38, 14,9,7,1,9,38, 14,9,6,1,10,38, + 14,9,5,1,11,38, 14,9,4,1,12,38, 14,9,4,6,1,22, 14,8,13,1,3,39, 14,8,13,4,14,7, 14,8,13,5,14,7, 14,8,12,1,4,39, 14,8,12,4,14,7, + 14,8,11,1,5,39, 14,8,11,4,14,7, 14,8,10,1,6,39, 14,8,10,4,14,7, 14,8,9,1,7,39, 14,8,9,4,14,7, 14,8,8,1,8,39, 14,8,8,4,14,7, + 14,8,7,1,9,39, 14,8,7,4,14,7, 14,8,6,1,10,39, 14,8,6,4,14,7, 14,8,5,1,11,39, 14,8,5,4,14,7, 14,8,4,1,12,39, 14,8,4,4,14,7, + 14,8,4,6,1,23, 14,5,11,1,5,42, 14,5,11,3,5,42, 14,5,11,4,14,10, 14,5,11,5,14,10, 14,5,10,1,6,42, 14,5,10,3,6,42, 14,5,9,1,7,42, + 14,5,9,3,7,42, 14,5,8,1,8,42, 14,5,8,3,8,42, 14,5,7,1,9,42, 14,5,7,3,9,42, 14,5,6,1,10,42, 14,5,6,3,10,42, 14,5,5,1,11,42, + 14,5,5,3,11,42, 14,5,4,1,12,42, 14,5,4,3,12,42, 14,5,4,6,14,10, 14,4,10,1,6,43, 14,4,10,5,14,11, 14,4,9,1,7,43, 14,4,8,1,8,43, + 14,4,7,1,9,43, 14,4,6,1,10,43, 14,4,5,1,11,43, 14,4,4,1,12,43, 14,4,3,1,13,43, 14,4,3,3,13,43, 14,4,3,6,1,27, 14,3,10,5,14,12, + 14,3,2,3,14,44, 14,3,2,4,14,12, 14,3,2,6,1,28, 14,2,11,3,5,45, 14,2,11,5,14,13, 14,2,4,4,14,13, 14,2,3,4,14,13, 14,2,3,6,1,29, + 14,1,11,1,5,46, 14,1,11,4,14,14, 14,1,11,5,14,14, 14,1,10,1,6,46, 14,1,10,4,14,14, 14,1,9,1,7,46, 14,1,9,4,14,14, 14,1,8,1,8,46, + 14,1,8,4,14,14, 14,1,7,1,9,46, 14,1,7,4,14,14, 14,1,6,1,10,46, 14,1,6,4,14,14, 14,1,5,1,11,46, 14,1,5,4,14,14, 14,1,5,6,1,30, + 15,3,10,1,6,44, 15,3,10,3,6,44, 15,3,10,5,15,12, 15,3,9,1,7,44, 15,3,9,3,7,44, 15,3,8,1,8,44, 15,3,8,3,8,44, 15,3,7,1,9,44, + 15,3,7,3,9,44, 15,3,6,1,10,44, 15,3,6,3,10,44, 15,3,5,1,11,44, 15,3,5,3,11,44, 15,3,4,1,12,44, 15,3,4,3,12,44, 15,3,3,1,13,44, + 15,3,3,3,13,44, 15,3,2,1,14,44, 15,3,2,3,14,44, 15,3,2,4,15,12, 15,3,2,6,0,28, 15,2,11,1,5,45, 15,2,11,3,5,45, 15,2,11,4,15,13, + 15,2,11,5,15,13, 15,2,10,1,6,45, 15,2,10,4,15,13, 15,2,9,1,7,45, 15,2,9,4,15,13, 15,2,8,1,8,45, 15,2,8,4,15,13, 15,2,7,1,9,45, + 15,2,7,4,15,13, 15,2,6,1,10,45, 15,2,6,4,15,13, 15,2,5,1,11,45, 15,2,5,4,15,13, 15,2,4,1,12,45, 15,2,4,4,15,13, 15,2,3,1,13,45, + 15,2,3,4,15,13, 15,2,3,6,0,29, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 2069, + count = 1378, + faces = { + 0,12,13,2,3,83, 0,12,13,3,3,83, 0,12,13,4,14,67, 0,12,13,5,14,67, 0,12,12,2,4,83, 0,12,12,3,4,83, 0,12,12,4,14,67, 0,12,11,2,5,83, + 0,12,11,3,5,83, 0,12,11,4,14,67, 0,12,10,2,6,83, 0,12,10,3,6,83, 0,12,10,4,14,67, 0,12,9,2,7,83, 0,12,9,3,7,83, 0,12,9,4,14,67, + 0,12,8,2,8,83, 0,12,8,3,8,83, 0,12,8,4,14,67, 0,12,7,2,9,83, 0,12,7,3,9,83, 0,12,7,4,14,67, 0,12,6,2,10,83, 0,12,6,3,10,83, + 0,12,6,4,14,67, 0,12,5,2,11,83, 0,12,5,3,11,83, 0,12,5,4,14,67, 0,12,4,2,12,83, 0,12,4,3,12,83, 0,12,4,4,14,67, 0,12,3,2,13,83, + 0,12,3,3,13,83, 0,12,3,4,14,67, 0,12,2,2,14,83, 0,12,2,3,14,83, 0,12,2,4,14,67, 0,12,1,2,15,83, 0,12,1,3,15,83, 0,12,1,4,14,67, + 0,12,1,6,14,67, 0,8,13,2,3,87, 0,8,13,3,3,87, 0,8,13,5,14,71, 0,8,12,2,4,87, 0,8,12,3,4,87, 0,8,11,2,5,87, 0,8,11,3,5,87, + 0,8,10,2,6,87, 0,8,10,3,6,87, 0,8,9,2,7,87, 0,8,9,3,7,87, 0,8,8,2,8,87, 0,8,8,3,8,87, 0,8,7,2,9,87, 0,8,7,3,9,87, + 0,8,6,2,10,87, 0,8,6,3,10,87, 0,8,5,2,11,87, 0,8,5,3,11,87, 0,8,4,2,12,87, 0,8,4,3,12,87, 0,8,4,6,14,71, 0,7,13,2,3,88, + 0,7,13,4,14,72, 0,7,13,5,14,72, 0,7,12,2,4,88, 0,7,12,4,14,72, 0,7,11,2,5,88, 0,7,11,4,14,72, 0,7,10,2,6,88, 0,7,10,4,14,72, + 0,7,9,2,7,88, 0,7,9,4,14,72, 0,7,8,2,8,88, 0,7,8,4,14,72, 0,7,7,2,9,88, 0,7,7,4,14,72, 0,7,6,2,10,88, 0,7,6,4,14,72, + 0,7,5,2,11,88, 0,7,5,4,14,72, 0,7,4,2,12,88, 0,7,4,4,14,72, 0,7,4,6,14,72, 0,4,11,2,5,91, 0,4,11,3,5,91, 0,4,11,5,0,59, + 0,4,10,2,6,91, 0,4,10,3,6,91, 0,4,9,2,7,91, 0,4,9,3,7,91, 0,4,8,2,8,91, 0,4,8,3,8,91, 0,4,7,2,9,91, 0,4,7,3,9,91, + 0,4,6,2,10,91, 0,4,6,3,10,91, 0,4,5,2,11,91, 0,4,5,3,11,91, 0,4,4,2,12,91, 0,4,4,3,12,91, 0,4,3,2,13,91, 0,4,3,3,13,91, + 0,4,2,2,14,91, 0,4,2,3,14,91, 0,4,2,6,14,75, 0,3,13,2,3,92, 0,3,13,3,3,92, 0,3,13,4,0,60, 0,3,13,5,0,60, 0,3,12,2,4,92, + 0,3,12,3,4,92, 0,3,12,4,0,60, 0,3,11,2,5,92, 0,3,11,4,0,60, 0,3,10,2,6,92, 0,3,10,4,0,60, 0,3,9,2,7,92, 0,3,9,4,0,60, + 0,3,8,2,8,92, 0,3,8,4,0,60, 0,3,7,2,9,92, 0,3,7,4,0,60, 0,3,6,2,10,92, 0,3,6,4,0,60, 0,3,5,2,11,92, 0,3,5,4,0,60, + 0,3,4,2,12,92, 0,3,4,4,0,60, 0,3,3,2,13,92, 0,3,3,4,0,60, 0,3,2,2,14,92, 0,3,2,4,0,60, 0,3,2,6,14,76, 1,12,13,3,3,83, + 1,12,13,5,13,67, 1,12,12,3,4,83, 1,12,11,3,5,83, 1,12,10,3,6,83, 1,12,9,3,7,83, 1,12,8,3,8,83, 1,12,7,3,9,83, 1,12,6,3,10,83, + 1,12,5,3,11,83, 1,12,4,3,12,83, 1,12,3,3,13,83, 1,12,2,3,14,83, 1,12,1,3,15,83, 1,12,1,4,13,67, 1,12,1,6,13,67, 1,11,14,2,2,84, + 1,11,14,3,2,84, 1,11,14,5,13,68, 1,11,13,2,3,84, 1,11,12,2,4,84, 1,11,11,2,5,84, 1,11,10,2,6,84, 1,11,9,2,7,84, 1,11,8,2,8,84, + 1,11,7,2,9,84, 1,11,6,2,10,84, 1,11,5,2,11,84, 1,11,4,2,12,84, 1,11,3,2,13,84, 1,11,2,2,14,84, 1,11,2,4,13,68, 1,11,2,6,13,68, + 1,10,14,2,2,85, 1,10,14,4,13,69, 1,10,14,5,13,69, 1,10,13,2,3,85, 1,10,12,2,4,85, 1,10,11,2,5,85, 1,10,10,2,6,85, 1,10,9,2,7,85, + 1,10,8,2,8,85, 1,10,7,2,9,85, 1,10,6,2,10,85, 1,10,5,2,11,85, 1,10,4,2,12,85, 1,10,3,2,13,85, 1,10,3,6,13,69, 1,9,13,2,3,86, + 1,9,13,5,13,70, 1,9,12,2,4,86, 1,9,11,2,5,86, 1,9,10,2,6,86, 1,9,9,2,7,86, 1,9,8,2,8,86, 1,9,7,2,9,86, 1,9,6,2,10,86, + 1,9,5,2,11,86, 1,9,4,2,12,86, 1,9,3,2,13,86, 1,9,3,4,13,70, 1,9,3,6,13,70, 1,8,13,5,1,55, 1,8,4,6,13,71, 1,7,13,5,1,56, + 1,7,4,4,1,56, 1,7,4,6,13,72, 1,6,13,2,3,89, 1,6,13,4,1,57, 1,6,13,5,1,57, 1,6,12,2,4,89, 1,6,11,2,5,89, 1,6,10,2,6,89, + 1,6,9,2,7,89, 1,6,8,2,8,89, 1,6,7,2,9,89, 1,6,6,2,10,89, 1,6,5,2,11,89, 1,6,5,6,13,73, 1,5,12,2,4,90, 1,5,12,4,1,58, + 1,5,12,5,1,58, 1,5,11,2,5,90, 1,5,10,2,6,90, 1,5,9,2,7,90, 1,5,8,2,8,90, 1,5,7,2,9,90, 1,5,6,2,10,90, 1,5,5,2,11,90, + 1,5,4,2,12,90, 1,5,4,3,12,90, 1,5,3,2,13,90, 1,5,3,3,13,90, 1,5,2,2,14,90, 1,5,2,3,14,90, 1,5,1,2,15,90, 1,5,1,3,15,90, + 1,5,1,4,1,58, 1,5,1,6,13,74, 1,4,11,5,1,59, 1,4,2,6,13,75, 1,3,13,3,3,92, 1,3,13,5,1,60, 1,3,12,3,4,92, 1,3,2,4,1,60, + 1,3,2,6,13,76, 1,2,14,2,2,93, 1,2,14,3,2,93, 1,2,14,4,1,61, 1,2,14,5,1,61, 1,2,13,2,3,93, 1,2,13,4,1,61, 1,2,12,2,4,93, + 1,2,12,4,1,61, 1,2,11,2,5,93, 1,2,11,4,1,61, 1,2,10,2,6,93, 1,2,10,4,1,61, 1,2,9,2,7,93, 1,2,9,4,1,61, 1,2,8,2,8,93, + 1,2,8,4,1,61, 1,2,7,2,9,93, 1,2,7,4,1,61, 1,2,6,2,10,93, 1,2,6,4,1,61, 1,2,5,2,11,93, 1,2,5,4,1,61, 1,2,4,2,12,93, + 1,2,4,4,1,61, 1,2,3,2,13,93, 1,2,3,4,1,61, 1,2,3,6,13,77, 2,13,12,2,4,82, 2,13,12,3,4,82, 2,13,12,5,12,66, 2,13,11,2,5,82, + 2,13,11,3,5,82, 2,13,10,2,6,82, 2,13,10,3,6,82, 2,13,9,2,7,82, 2,13,9,3,7,82, 2,13,8,2,8,82, 2,13,8,3,8,82, 2,13,7,2,9,82, + 2,13,7,3,9,82, 2,13,6,2,10,82, 2,13,6,3,10,82, 2,13,5,2,11,82, 2,13,5,3,11,82, 2,13,4,2,12,82, 2,13,4,3,12,82, 2,13,3,2,13,82, + 2,13,3,3,13,82, 2,13,3,6,12,66, 2,12,13,3,3,83, 2,12,13,5,12,67, 2,12,2,3,14,83, 2,12,1,3,15,83, 2,12,1,4,12,67, 2,12,1,6,12,67, + 2,11,14,3,2,84, 2,11,14,5,2,52, 2,11,2,4,2,52, 2,11,2,6,12,68, 2,10,14,4,2,53, 2,10,14,5,2,53, 2,10,3,6,12,69, 2,9,13,5,2,54, + 2,9,3,4,2,54, 2,9,3,6,12,70, 2,8,13,5,2,55, 2,8,4,6,12,71, 2,7,13,5,2,56, 2,7,4,4,2,56, 2,7,4,6,12,72, 2,6,13,4,2,57, + 2,6,13,5,2,57, 2,6,5,6,12,73, 2,5,12,4,2,58, 2,5,12,5,2,58, 2,5,4,3,12,90, 2,5,3,3,13,90, 2,5,2,3,14,90, 2,5,1,3,15,90, + 2,5,1,4,2,58, 2,5,1,6,12,74, 2,4,11,5,2,59, 2,4,2,6,12,75, 2,3,13,3,3,92, 2,3,13,5,2,60, 2,3,12,3,4,92, 2,3,2,4,2,60, + 2,3,2,6,12,76, 2,2,14,3,2,93, 2,2,14,4,2,61, 2,2,14,5,2,61, 2,2,13,4,2,61, 2,2,12,4,2,61, 2,2,11,4,2,61, 2,2,10,4,2,61, + 2,2,9,4,2,61, 2,2,8,4,2,61, 2,2,7,4,2,61, 2,2,6,4,2,61, 2,2,5,4,2,61, 2,2,4,4,2,61, 2,2,3,4,2,61, 2,2,3,6,12,77, + 3,13,12,3,4,82, 3,13,12,5,11,66, 3,13,11,3,5,82, 3,13,10,3,6,82, 3,13,9,3,7,82, 3,13,8,3,8,82, 3,13,7,3,9,82, 3,13,6,3,10,82, + 3,13,5,3,11,82, 3,13,4,3,12,82, 3,13,3,3,13,82, 3,13,3,6,11,66, 3,12,13,3,3,83, 3,12,13,5,3,51, 3,12,2,3,14,83, 3,12,1,3,15,83, + 3,12,1,4,3,51, 3,12,1,6,11,67, 3,11,14,3,2,84, 3,11,14,5,3,52, 3,11,2,4,3,52, 3,11,2,6,11,68, 3,10,14,4,3,53, 3,10,14,5,3,53, + 3,10,3,6,11,69, 3,9,13,5,3,54, 3,9,3,4,3,54, 3,9,3,6,11,70, 3,8,13,5,3,55, 3,8,4,6,11,71, 3,7,13,5,3,56, 3,7,4,4,3,56, + 3,7,4,6,11,72, 3,6,13,4,3,57, 3,6,13,5,3,57, 3,6,5,6,11,73, 3,5,12,4,3,58, 3,5,12,5,3,58, 3,5,4,3,12,90, 3,5,3,3,13,90, + 3,5,2,3,14,90, 3,5,1,3,15,90, 3,5,1,4,3,58, 3,5,1,6,11,74, 3,4,11,5,3,59, 3,4,2,6,11,75, 3,3,13,3,3,92, 3,3,13,5,3,60, + 3,3,12,3,4,92, 3,3,2,4,3,60, 3,3,2,6,11,76, 3,2,14,3,2,93, 3,2,14,4,3,61, 3,2,14,5,3,61, 3,2,3,6,11,77, 3,1,13,2,3,94, + 3,1,13,4,3,62, 3,1,13,5,3,62, 3,1,12,2,4,94, 3,1,12,4,3,62, 3,1,11,2,5,94, 3,1,11,4,3,62, 3,1,10,2,6,94, 3,1,10,4,3,62, + 3,1,9,2,7,94, 3,1,9,4,3,62, 3,1,8,2,8,94, 3,1,8,4,3,62, 3,1,7,2,9,94, 3,1,7,4,3,62, 3,1,6,2,10,94, 3,1,6,4,3,62, + 3,1,5,2,11,94, 3,1,5,4,3,62, 3,1,4,2,12,94, 3,1,4,4,3,62, 3,1,3,2,13,94, 3,1,3,4,3,62, 3,1,3,6,3,62, 4,14,10,2,6,81, + 4,14,10,3,6,81, 4,14,10,5,10,65, 4,14,9,2,7,81, 4,14,9,3,7,81, 4,14,8,2,8,81, 4,14,8,3,8,81, 4,14,7,2,9,81, 4,14,7,3,9,81, + 4,14,6,2,10,81, 4,14,6,3,10,81, 4,14,5,2,11,81, 4,14,5,3,11,81, 4,14,5,6,10,65, 4,13,12,3,4,82, 4,13,12,5,4,50, 4,13,11,3,5,82, + 4,13,4,3,12,82, 4,13,3,3,13,82, 4,13,3,6,10,66, 4,12,13,3,3,83, 4,12,13,5,4,51, 4,12,2,3,14,83, 4,12,1,3,15,83, 4,12,1,4,4,51, + 4,12,1,6,10,67, 4,11,14,3,2,84, 4,11,14,5,4,52, 4,11,2,4,4,52, 4,11,2,6,10,68, 4,10,14,4,4,53, 4,10,14,5,4,53, 4,10,3,6,10,69, + 4,9,13,5,4,54, 4,9,3,4,4,54, 4,9,3,6,10,70, 4,8,13,5,4,55, 4,8,4,6,10,71, 4,7,13,5,4,56, 4,7,4,4,4,56, 4,7,4,6,10,72, + 4,6,13,4,4,57, 4,6,13,5,4,57, 4,6,5,6,10,73, 4,5,12,4,4,58, 4,5,12,5,4,58, 4,5,4,3,12,90, 4,5,3,3,13,90, 4,5,2,3,14,90, + 4,5,1,3,15,90, 4,5,1,4,4,58, 4,5,1,6,10,74, 4,4,11,5,4,59, 4,4,2,6,10,75, 4,3,13,3,3,92, 4,3,13,5,4,60, 4,3,12,3,4,92, + 4,3,2,4,4,60, 4,3,2,6,10,76, 4,2,14,3,2,93, 4,2,14,4,4,61, 4,2,14,5,4,61, 4,2,3,6,10,77, 4,1,13,4,4,62, 4,1,13,5,4,62, + 4,1,12,4,4,62, 4,1,11,4,4,62, 4,1,10,4,4,62, 4,1,9,4,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, 4,1,6,4,4,62, 4,1,5,4,4,62, + 4,1,4,4,4,62, 4,1,3,4,4,62, 4,1,3,6,4,62, 5,14,10,3,6,81, 5,14,10,5,9,65, 5,14,9,3,7,81, 5,14,8,3,8,81, 5,14,7,3,9,81, + 5,14,6,3,10,81, 5,14,5,3,11,81, 5,14,5,6,9,65, 5,13,12,3,4,82, 5,13,12,5,5,50, 5,13,11,3,5,82, 5,13,4,3,12,82, 5,13,3,3,13,82, + 5,13,3,6,9,66, 5,12,13,3,3,83, 5,12,13,5,5,51, 5,12,2,3,14,83, 5,12,1,3,15,83, 5,12,1,4,5,51, 5,12,1,6,9,67, 5,11,14,3,2,84, + 5,11,14,5,5,52, 5,11,2,4,5,52, 5,11,2,6,9,68, 5,10,14,4,5,53, 5,10,14,5,5,53, 5,10,3,6,9,69, 5,9,13,5,5,54, 5,9,3,4,5,54, + 5,9,3,6,9,70, 5,8,13,5,5,55, 5,8,4,6,9,71, 5,7,13,5,5,56, 5,7,4,4,5,56, 5,7,4,6,9,72, 5,6,13,4,5,57, 5,6,13,5,5,57, + 5,6,5,6,9,73, 5,5,12,4,5,58, 5,5,12,5,5,58, 5,5,4,3,12,90, 5,5,3,3,13,90, 5,5,2,3,14,90, 5,5,1,3,15,90, 5,5,1,4,5,58, + 5,5,1,6,9,74, 5,4,11,5,5,59, 5,4,2,6,9,75, 5,3,13,3,3,92, 5,3,13,5,5,60, 5,3,12,3,4,92, 5,3,2,4,5,60, 5,3,2,6,9,76, + 5,2,14,3,2,93, 5,2,14,4,5,61, 5,2,14,5,5,61, 5,2,3,6,9,77, 5,1,13,4,5,62, 5,1,13,5,5,62, 5,1,9,4,5,62, 5,1,8,4,5,62, + 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,3,4,5,62, 5,1,3,6,9,78, 5,0,12,2,4,95, 5,0,12,5,5,63, 5,0,11,2,5,95, 5,0,10,2,6,95, + 5,0,10,6,5,63, 5,0,5,2,11,95, 5,0,5,5,5,63, 5,0,4,2,12,95, 5,0,4,6,5,63, 6,14,10,3,6,81, 6,14,10,5,6,49, 6,14,9,3,7,81, + 6,14,8,3,8,81, 6,14,7,3,9,81, 6,14,6,3,10,81, 6,14,5,3,11,81, 6,14,5,6,8,65, 6,13,12,3,4,82, 6,13,12,5,6,50, 6,13,11,3,5,82, + 6,13,4,3,12,82, 6,13,3,3,13,82, 6,13,3,6,8,66, 6,12,13,3,3,83, 6,12,13,5,6,51, 6,12,2,3,14,83, 6,12,1,3,15,83, 6,12,1,4,6,51, + 6,12,1,6,8,67, 6,11,14,3,2,84, 6,11,14,5,6,52, 6,11,2,4,6,52, 6,11,2,6,8,68, 6,10,14,4,6,53, 6,10,14,5,6,53, 6,10,3,6,8,69, + 6,9,13,5,6,54, 6,9,3,4,6,54, 6,9,3,6,8,70, 6,8,13,5,6,55, 6,8,4,6,8,71, 6,7,13,5,6,56, 6,7,4,4,6,56, 6,7,4,6,8,72, + 6,6,13,4,6,57, 6,6,13,5,6,57, 6,6,5,6,8,73, 6,5,12,4,6,58, 6,5,12,5,6,58, 6,5,4,3,12,90, 6,5,3,3,13,90, 6,5,2,3,14,90, + 6,5,1,3,15,90, 6,5,1,4,6,58, 6,5,1,6,8,74, 6,4,11,5,6,59, 6,4,2,6,8,75, 6,3,13,3,3,92, 6,3,13,5,6,60, 6,3,12,3,4,92, + 6,3,2,4,6,60, 6,3,2,6,8,76, 6,2,14,3,2,93, 6,2,14,4,6,61, 6,2,14,5,6,61, 6,2,3,6,8,77, 6,1,13,4,6,62, 6,1,13,5,6,62, + 6,1,9,4,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,3,4,6,62, 6,1,3,6,8,78, 6,0,12,5,6,63, 6,0,10,6,6,63, + 6,0,5,5,6,63, 6,0,4,6,6,63, 7,14,10,3,6,81, 7,14,10,5,7,49, 7,14,9,3,7,81, 7,14,8,3,8,81, 7,14,7,3,9,81, 7,14,6,3,10,81, + 7,14,5,3,11,81, 7,14,5,6,7,65, 7,13,12,3,4,82, 7,13,12,5,7,50, 7,13,11,3,5,82, 7,13,4,3,12,82, 7,13,3,3,13,82, 7,13,3,6,7,66, + 7,12,13,3,3,83, 7,12,13,5,7,51, 7,12,2,3,14,83, 7,12,1,3,15,83, 7,12,1,4,7,51, 7,12,1,6,7,67, 7,11,14,3,2,84, 7,11,14,5,7,52, + 7,11,2,4,7,52, 7,11,2,6,7,68, 7,10,14,4,7,53, 7,10,14,5,7,53, 7,10,3,6,7,69, 7,9,13,5,7,54, 7,9,3,4,7,54, 7,9,3,6,7,70, + 7,8,13,5,7,55, 7,8,4,6,7,71, 7,7,13,5,7,56, 7,7,4,4,7,56, 7,7,4,6,7,72, 7,6,13,4,7,57, 7,6,13,5,7,57, 7,6,5,6,7,73, + 7,5,12,4,7,58, 7,5,12,5,7,58, 7,5,4,3,12,90, 7,5,3,3,13,90, 7,5,2,3,14,90, 7,5,1,3,15,90, 7,5,1,4,7,58, 7,5,1,6,7,74, + 7,4,11,5,7,59, 7,4,2,6,7,75, 7,3,13,3,3,92, 7,3,13,5,7,60, 7,3,12,3,4,92, 7,3,2,4,7,60, 7,3,2,6,7,76, 7,2,14,3,2,93, + 7,2,14,4,7,61, 7,2,14,5,7,61, 7,2,3,6,7,77, 7,1,13,4,7,62, 7,1,13,5,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, + 7,1,6,4,7,62, 7,1,3,4,7,62, 7,1,3,6,7,78, 7,0,12,5,7,63, 7,0,10,6,7,63, 7,0,5,5,7,63, 7,0,4,6,7,63, 8,14,10,3,6,81, + 8,14,10,5,8,49, 8,14,9,3,7,81, 8,14,8,3,8,81, 8,14,7,3,9,81, 8,14,6,3,10,81, 8,14,5,3,11,81, 8,14,5,6,6,65, 8,13,12,3,4,82, + 8,13,12,5,8,50, 8,13,11,3,5,82, 8,13,4,3,12,82, 8,13,3,3,13,82, 8,13,3,6,6,66, 8,12,13,3,3,83, 8,12,13,5,8,51, 8,12,2,3,14,83, + 8,12,1,3,15,83, 8,12,1,4,8,51, 8,12,1,6,6,67, 8,11,14,3,2,84, 8,11,14,5,8,52, 8,11,2,4,8,52, 8,11,2,6,6,68, 8,10,14,4,8,53, + 8,10,14,5,8,53, 8,10,3,6,6,69, 8,9,13,5,8,54, 8,9,3,4,8,54, 8,9,3,6,6,70, 8,8,13,5,8,55, 8,8,4,6,6,71, 8,7,13,5,8,56, + 8,7,4,4,8,56, 8,7,4,6,6,72, 8,6,13,4,8,57, 8,6,13,5,8,57, 8,6,5,6,6,73, 8,5,12,4,8,58, 8,5,12,5,8,58, 8,5,4,3,12,90, + 8,5,3,3,13,90, 8,5,2,3,14,90, 8,5,1,3,15,90, 8,5,1,4,8,58, 8,5,1,6,6,74, 8,4,11,5,8,59, 8,4,2,6,6,75, 8,3,13,3,3,92, + 8,3,13,5,8,60, 8,3,12,3,4,92, 8,3,2,4,8,60, 8,3,2,6,6,76, 8,2,14,3,2,93, 8,2,14,4,8,61, 8,2,14,5,8,61, 8,2,3,6,6,77, + 8,1,13,4,8,62, 8,1,13,5,8,62, 8,1,9,4,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,3,4,8,62, 8,1,3,6,6,78, + 8,0,12,5,6,79, 8,0,10,6,6,79, 8,0,5,5,6,79, 8,0,4,6,6,79, 9,14,10,3,6,81, 9,14,10,5,9,49, 9,14,9,3,7,81, 9,14,8,3,8,81, + 9,14,7,3,9,81, 9,14,6,3,10,81, 9,14,5,3,11,81, 9,14,5,6,9,49, 9,13,12,3,4,82, 9,13,12,5,9,50, 9,13,11,3,5,82, 9,13,4,3,12,82, + 9,13,3,3,13,82, 9,13,3,6,5,66, 9,12,13,3,3,83, 9,12,13,5,9,51, 9,12,2,3,14,83, 9,12,1,3,15,83, 9,12,1,4,9,51, 9,12,1,6,5,67, + 9,11,14,3,2,84, 9,11,14,5,9,52, 9,11,2,4,9,52, 9,11,2,6,5,68, 9,10,14,4,9,53, 9,10,14,5,9,53, 9,10,3,6,5,69, 9,9,13,5,9,54, + 9,9,3,4,9,54, 9,9,3,6,5,70, 9,8,13,5,9,55, 9,8,4,6,5,71, 9,7,13,5,9,56, 9,7,4,4,9,56, 9,7,4,6,5,72, 9,6,13,4,9,57, + 9,6,13,5,9,57, 9,6,5,6,5,73, 9,5,12,4,9,58, 9,5,12,5,9,58, 9,5,4,3,12,90, 9,5,3,3,13,90, 9,5,2,3,14,90, 9,5,1,3,15,90, + 9,5,1,4,9,58, 9,5,1,6,5,74, 9,4,11,5,9,59, 9,4,2,6,5,75, 9,3,13,3,3,92, 9,3,13,5,9,60, 9,3,12,3,4,92, 9,3,2,4,9,60, + 9,3,2,6,5,76, 9,2,14,3,2,93, 9,2,14,4,9,61, 9,2,14,5,9,61, 9,2,3,6,5,77, 9,1,13,4,5,78, 9,1,13,5,5,78, 9,1,9,4,5,78, + 9,1,8,4,5,78, 9,1,7,4,5,78, 9,1,6,4,5,78, 9,1,3,4,5,78, 9,1,3,6,5,78, 9,0,12,5,5,79, 9,0,10,6,5,79, 9,0,5,5,5,79, + 9,0,4,6,5,79, 10,14,10,1,6,81, 10,14,10,3,6,81, 10,14,10,5,10,49, 10,14,9,1,7,81, 10,14,9,3,7,81, 10,14,8,1,8,81, 10,14,8,3,8,81, + 10,14,7,1,9,81, 10,14,7,3,9,81, 10,14,6,1,10,81, 10,14,6,3,10,81, 10,14,5,1,11,81, 10,14,5,3,11,81, 10,14,5,6,10,49, 10,13,12,3,4,82, + 10,13,12,5,10,50, 10,13,11,3,5,82, 10,13,4,3,12,82, 10,13,3,3,13,82, 10,13,3,6,4,66, 10,12,13,3,3,83, 10,12,13,5,10,51, 10,12,2,3,14,83, + 10,12,1,3,15,83, 10,12,1,4,10,51, 10,12,1,6,4,67, 10,11,14,3,2,84, 10,11,14,5,10,52, 10,11,2,4,10,52, 10,11,2,6,4,68, 10,10,14,4,10,53, + 10,10,14,5,10,53, 10,10,3,6,4,69, 10,9,13,5,10,54, 10,9,3,4,10,54, 10,9,3,6,4,70, 10,8,13,5,10,55, 10,8,4,6,4,71, 10,7,13,5,10,56, + 10,7,4,4,10,56, 10,7,4,6,4,72, 10,6,13,4,10,57, 10,6,13,5,10,57, 10,6,5,6,4,73, 10,5,12,4,10,58, 10,5,12,5,10,58, 10,5,4,3,12,90, + 10,5,3,3,13,90, 10,5,2,3,14,90, 10,5,1,3,15,90, 10,5,1,4,10,58, 10,5,1,6,4,74, 10,4,11,5,10,59, 10,4,2,6,4,75, 10,3,13,3,3,92, + 10,3,13,5,10,60, 10,3,12,3,4,92, 10,3,2,4,10,60, 10,3,2,6,4,76, 10,2,14,3,2,93, 10,2,14,4,10,61, 10,2,14,5,10,61, 10,2,3,6,4,77, + 10,1,13,4,10,62, 10,1,13,5,10,62, 10,1,9,4,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,3,4,10,62, 10,1,3,6,4,78, + 10,0,12,1,4,95, 10,0,12,5,4,79, 10,0,11,1,5,95, 10,0,10,1,6,95, 10,0,10,6,4,79, 10,0,5,1,11,95, 10,0,5,5,4,79, 10,0,4,1,12,95, + 10,0,4,6,4,79, 11,13,12,3,4,82, 11,13,12,5,11,50, 11,13,11,3,5,82, 11,13,10,3,6,82, 11,13,9,3,7,82, 11,13,8,3,8,82, 11,13,7,3,9,82, + 11,13,6,3,10,82, 11,13,5,3,11,82, 11,13,4,3,12,82, 11,13,3,3,13,82, 11,13,3,6,11,50, 11,12,13,3,3,83, 11,12,13,5,11,51, 11,12,2,3,14,83, + 11,12,1,3,15,83, 11,12,1,4,11,51, 11,12,1,6,3,67, 11,11,14,3,2,84, 11,11,14,5,11,52, 11,11,2,4,11,52, 11,11,2,6,3,68, 11,10,14,4,11,53, + 11,10,14,5,11,53, 11,10,3,6,3,69, 11,9,13,5,11,54, 11,9,3,4,11,54, 11,9,3,6,3,70, 11,8,13,5,11,55, 11,8,4,6,3,71, 11,7,13,5,11,56, + 11,7,4,4,11,56, 11,7,4,6,3,72, 11,6,13,4,11,57, 11,6,13,5,11,57, 11,6,5,6,3,73, 11,5,12,4,11,58, 11,5,12,5,11,58, 11,5,4,3,12,90, + 11,5,3,3,13,90, 11,5,2,3,14,90, 11,5,1,3,15,90, 11,5,1,4,11,58, 11,5,1,6,3,74, 11,4,11,5,11,59, 11,4,2,6,3,75, 11,3,13,3,3,92, + 11,3,13,5,11,60, 11,3,12,3,4,92, 11,3,2,4,11,60, 11,3,2,6,3,76, 11,2,14,3,2,93, 11,2,14,4,11,61, 11,2,14,5,11,61, 11,2,3,6,3,77, + 11,1,13,4,11,62, 11,1,13,5,11,62, 11,1,12,4,11,62, 11,1,11,4,11,62, 11,1,10,4,11,62, 11,1,9,4,11,62, 11,1,8,4,11,62, 11,1,7,4,11,62, + 11,1,6,4,11,62, 11,1,5,4,11,62, 11,1,4,4,11,62, 11,1,3,4,11,62, 11,1,3,6,3,78, 12,13,12,1,4,82, 12,13,12,3,4,82, 12,13,12,5,12,50, + 12,13,11,1,5,82, 12,13,11,3,5,82, 12,13,10,1,6,82, 12,13,10,3,6,82, 12,13,9,1,7,82, 12,13,9,3,7,82, 12,13,8,1,8,82, 12,13,8,3,8,82, + 12,13,7,1,9,82, 12,13,7,3,9,82, 12,13,6,1,10,82, 12,13,6,3,10,82, 12,13,5,1,11,82, 12,13,5,3,11,82, 12,13,4,1,12,82, 12,13,4,3,12,82, + 12,13,3,1,13,82, 12,13,3,3,13,82, 12,13,3,6,12,50, 12,12,13,3,3,83, 12,12,13,5,12,51, 12,12,2,3,14,83, 12,12,1,3,15,83, 12,12,1,4,12,51, + 12,12,1,6,12,51, 12,11,14,3,2,84, 12,11,14,5,12,52, 12,11,2,4,12,52, 12,11,2,6,2,68, 12,10,14,4,12,53, 12,10,14,5,12,53, 12,10,3,6,2,69, + 12,9,13,5,12,54, 12,9,3,4,12,54, 12,9,3,6,2,70, 12,8,13,5,12,55, 12,8,4,6,2,71, 12,7,13,5,12,56, 12,7,4,4,12,56, 12,7,4,6,2,72, + 12,6,13,4,12,57, 12,6,13,5,12,57, 12,6,5,6,2,73, 12,5,12,4,12,58, 12,5,12,5,12,58, 12,5,4,3,12,90, 12,5,3,3,13,90, 12,5,2,3,14,90, + 12,5,1,3,15,90, 12,5,1,4,12,58, 12,5,1,6,2,74, 12,4,11,5,12,59, 12,4,2,6,2,75, 12,3,13,3,3,92, 12,3,13,5,12,60, 12,3,12,3,4,92, + 12,3,2,4,12,60, 12,3,2,6,2,76, 12,2,14,3,2,93, 12,2,14,4,12,61, 12,2,14,5,12,61, 12,2,3,6,2,77, 12,1,13,1,3,94, 12,1,13,4,12,62, + 12,1,13,5,12,62, 12,1,12,1,4,94, 12,1,12,4,12,62, 12,1,11,1,5,94, 12,1,11,4,12,62, 12,1,10,1,6,94, 12,1,10,4,12,62, 12,1,9,1,7,94, + 12,1,9,4,12,62, 12,1,8,1,8,94, 12,1,8,4,12,62, 12,1,7,1,9,94, 12,1,7,4,12,62, 12,1,6,1,10,94, 12,1,6,4,12,62, 12,1,5,1,11,94, + 12,1,5,4,12,62, 12,1,4,1,12,94, 12,1,4,4,12,62, 12,1,3,1,13,94, 12,1,3,4,12,62, 12,1,3,6,12,62, 13,12,13,3,3,83, 13,12,13,5,13,51, + 13,12,12,3,4,83, 13,12,11,3,5,83, 13,12,10,3,6,83, 13,12,9,3,7,83, 13,12,8,3,8,83, 13,12,7,3,9,83, 13,12,6,3,10,83, 13,12,5,3,11,83, + 13,12,4,3,12,83, 13,12,3,3,13,83, 13,12,2,3,14,83, 13,12,1,3,15,83, 13,12,1,4,13,51, 13,12,1,6,13,51, 13,11,14,1,2,84, 13,11,14,3,2,84, + 13,11,14,5,13,52, 13,11,13,1,3,84, 13,11,12,1,4,84, 13,11,11,1,5,84, 13,11,10,1,6,84, 13,11,9,1,7,84, 13,11,8,1,8,84, 13,11,7,1,9,84, + 13,11,6,1,10,84, 13,11,5,1,11,84, 13,11,4,1,12,84, 13,11,3,1,13,84, 13,11,2,1,14,84, 13,11,2,4,13,52, 13,11,2,6,13,52, 13,10,14,1,2,85, + 13,10,14,4,13,53, 13,10,14,5,13,53, 13,10,13,1,3,85, 13,10,12,1,4,85, 13,10,11,1,5,85, 13,10,10,1,6,85, 13,10,9,1,7,85, 13,10,8,1,8,85, + 13,10,7,1,9,85, 13,10,6,1,10,85, 13,10,5,1,11,85, 13,10,4,1,12,85, 13,10,3,1,13,85, 13,10,3,6,13,53, 13,9,13,1,3,86, 13,9,13,5,13,54, + 13,9,12,1,4,86, 13,9,11,1,5,86, 13,9,10,1,6,86, 13,9,9,1,7,86, 13,9,8,1,8,86, 13,9,7,1,9,86, 13,9,6,1,10,86, 13,9,5,1,11,86, + 13,9,4,1,12,86, 13,9,3,1,13,86, 13,9,3,4,13,54, 13,9,3,6,13,54, 13,8,13,5,13,55, 13,8,4,6,1,71, 13,7,13,5,13,56, 13,7,4,4,13,56, + 13,7,4,6,1,72, 13,6,13,4,13,57, 13,6,13,5,13,57, 13,6,5,6,13,57, 13,5,12,4,13,58, 13,5,12,5,13,58, 13,5,4,3,12,90, 13,5,3,3,13,90, + 13,5,2,3,14,90, 13,5,1,3,15,90, 13,5,1,4,13,58, 13,5,1,6,1,74, 13,4,11,5,13,59, 13,4,2,6,1,75, 13,3,13,3,3,92, 13,3,13,5,13,60, + 13,3,12,3,4,92, 13,3,2,4,13,60, 13,3,2,6,1,76, 13,2,14,3,2,93, 13,2,14,4,13,61, 13,2,14,5,13,61, 13,2,13,4,13,61, 13,2,12,4,13,61, + 13,2,11,4,13,61, 13,2,10,4,13,61, 13,2,9,4,13,61, 13,2,8,4,13,61, 13,2,7,4,13,61, 13,2,6,4,13,61, 13,2,5,4,13,61, 13,2,4,4,13,61, + 13,2,3,4,13,61, 13,2,3,6,1,77, 14,12,13,1,3,83, 14,12,13,3,3,83, 14,12,13,4,14,51, 14,12,13,5,14,51, 14,12,12,1,4,83, 14,12,12,3,4,83, + 14,12,12,4,14,51, 14,12,11,1,5,83, 14,12,11,3,5,83, 14,12,11,4,14,51, 14,12,10,1,6,83, 14,12,10,3,6,83, 14,12,10,4,14,51, 14,12,9,1,7,83, + 14,12,9,3,7,83, 14,12,9,4,14,51, 14,12,8,1,8,83, 14,12,8,3,8,83, 14,12,8,4,14,51, 14,12,7,1,9,83, 14,12,7,3,9,83, 14,12,7,4,14,51, + 14,12,6,1,10,83, 14,12,6,3,10,83, 14,12,6,4,14,51, 14,12,5,1,11,83, 14,12,5,3,11,83, 14,12,5,4,14,51, 14,12,4,1,12,83, 14,12,4,3,12,83, + 14,12,4,4,14,51, 14,12,3,1,13,83, 14,12,3,3,13,83, 14,12,3,4,14,51, 14,12,2,1,14,83, 14,12,2,3,14,83, 14,12,2,4,14,51, 14,12,1,1,15,83, + 14,12,1,3,15,83, 14,12,1,4,14,51, 14,12,1,6,14,51, 14,8,13,1,3,87, 14,8,13,3,3,87, 14,8,13,5,14,55, 14,8,12,1,4,87, 14,8,12,3,4,87, + 14,8,11,1,5,87, 14,8,11,3,5,87, 14,8,10,1,6,87, 14,8,10,3,6,87, 14,8,9,1,7,87, 14,8,9,3,7,87, 14,8,8,1,8,87, 14,8,8,3,8,87, + 14,8,7,1,9,87, 14,8,7,3,9,87, 14,8,6,1,10,87, 14,8,6,3,10,87, 14,8,5,1,11,87, 14,8,5,3,11,87, 14,8,4,1,12,87, 14,8,4,3,12,87, + 14,8,4,6,14,55, 14,7,13,1,3,88, 14,7,13,5,14,56, 14,7,12,1,4,88, 14,7,11,1,5,88, 14,7,10,1,6,88, 14,7,9,1,7,88, 14,7,8,1,8,88, + 14,7,7,1,9,88, 14,7,6,1,10,88, 14,7,5,1,11,88, 14,7,4,1,12,88, 14,7,4,4,14,56, 14,7,4,6,14,56, 14,6,13,1,3,89, 14,6,13,4,14,57, + 14,6,13,5,14,57, 14,6,12,1,4,89, 14,6,11,1,5,89, 14,6,10,1,6,89, 14,6,9,1,7,89, 14,6,8,1,8,89, 14,6,7,1,9,89, 14,6,6,1,10,89, + 14,6,5,1,11,89, 14,6,5,6,14,57, 14,5,12,1,4,90, 14,5,12,4,0,74, 14,5,12,5,0,74, 14,5,11,1,5,90, 14,5,10,1,6,90, 14,5,9,1,7,90, + 14,5,8,1,8,90, 14,5,7,1,9,90, 14,5,6,1,10,90, 14,5,5,1,11,90, 14,5,4,1,12,90, 14,5,4,3,12,90, 14,5,3,1,13,90, 14,5,3,3,13,90, + 14,5,2,1,14,90, 14,5,2,3,14,90, 14,5,1,1,15,90, 14,5,1,3,15,90, 14,5,1,4,0,74, 14,5,1,6,0,74, 14,4,11,5,14,59, 14,4,2,6,0,75, + 14,3,13,3,3,92, 14,3,13,5,14,60, 14,3,12,3,4,92, 14,3,2,4,14,60, 14,3,2,6,14,60, 14,2,14,1,2,93, 14,2,14,3,2,93, 14,2,14,4,14,61, + 14,2,14,5,14,61, 14,2,13,1,3,93, 14,2,13,4,14,61, 14,2,12,1,4,93, 14,2,12,4,14,61, 14,2,11,1,5,93, 14,2,11,4,14,61, 14,2,10,1,6,93, + 14,2,10,4,14,61, 14,2,9,1,7,93, 14,2,9,4,14,61, 14,2,8,1,8,93, 14,2,8,4,14,61, 14,2,7,1,9,93, 14,2,7,4,14,61, 14,2,6,1,10,93, + 14,2,6,4,14,61, 14,2,5,1,11,93, 14,2,5,4,14,61, 14,2,4,1,12,93, 14,2,4,4,14,61, 14,2,3,1,13,93, 14,2,3,4,14,61, 14,2,3,6,14,61, + 15,4,11,1,5,91, 15,4,11,3,5,91, 15,4,11,5,15,59, 15,4,10,1,6,91, 15,4,10,3,6,91, 15,4,9,1,7,91, 15,4,9,3,7,91, 15,4,8,1,8,91, + 15,4,8,3,8,91, 15,4,7,1,9,91, 15,4,7,3,9,91, 15,4,6,1,10,91, 15,4,6,3,10,91, 15,4,5,1,11,91, 15,4,5,3,11,91, 15,4,4,1,12,91, + 15,4,4,3,12,91, 15,4,3,1,13,91, 15,4,3,3,13,91, 15,4,2,1,14,91, 15,4,2,3,14,91, 15,4,2,6,15,59, 15,3,13,1,3,92, 15,3,13,3,3,92, + 15,3,13,4,15,60, 15,3,13,5,15,60, 15,3,12,1,4,92, 15,3,12,3,4,92, 15,3,12,4,15,60, 15,3,11,1,5,92, 15,3,11,4,15,60, 15,3,10,1,6,92, + 15,3,10,4,15,60, 15,3,9,1,7,92, 15,3,9,4,15,60, 15,3,8,1,8,92, 15,3,8,4,15,60, 15,3,7,1,9,92, 15,3,7,4,15,60, 15,3,6,1,10,92, + 15,3,6,4,15,60, 15,3,5,1,11,92, 15,3,5,4,15,60, 15,3,4,1,12,92, 15,3,4,4,15,60, 15,3,3,1,13,92, 15,3,3,4,15,60, 15,3,2,1,14,92, + 15,3,2,4,15,60, 15,3,2,6,15,60, + }, + }, + }, +} diff --git a/assets/voxels/link_receptionist.lua b/assets/voxels/link_receptionist.lua new file mode 100644 index 0000000..def9523 --- /dev/null +++ b/assets/voxels/link_receptionist.lua @@ -0,0 +1,155 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "link_receptionist" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "link_receptionist", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1560, + count = 1038, + faces = { + 0,8,13,2,3,39, 0,8,13,3,3,39, 0,8,13,5,0,7, 0,8,12,2,4,39, 0,8,12,3,4,39, 0,8,11,2,5,39, 0,8,11,3,5,39, 0,8,10,2,6,39, + 0,8,10,3,6,39, 0,8,9,2,7,39, 0,8,9,3,7,39, 0,8,8,2,8,39, 0,8,8,3,8,39, 0,8,7,2,9,39, 0,8,7,3,9,39, 0,8,6,2,10,39, + 0,8,6,3,10,39, 0,8,5,2,11,39, 0,8,5,3,11,39, 0,8,4,2,12,39, 0,8,4,3,12,39, 0,8,3,2,13,39, 0,8,3,3,13,39, 0,8,2,2,14,39, + 0,8,2,3,14,39, 0,8,2,6,15,23, 0,7,13,2,3,40, 0,7,13,4,0,8, 0,7,13,5,0,8, 0,7,12,2,4,40, 0,7,12,4,0,8, 0,7,11,2,5,40, + 0,7,11,4,0,8, 0,7,10,2,6,40, 0,7,10,4,0,8, 0,7,9,2,7,40, 0,7,9,4,0,8, 0,7,8,2,8,40, 0,7,8,4,0,8, 0,7,7,2,9,40, + 0,7,7,4,0,8, 0,7,6,2,10,40, 0,7,6,4,0,8, 0,7,5,2,11,40, 0,7,5,4,0,8, 0,7,4,2,12,40, 0,7,4,4,0,8, 0,7,3,2,13,40, + 0,7,3,4,0,8, 0,7,2,2,14,40, 0,7,2,4,0,8, 0,7,2,6,15,24, 1,9,13,2,3,38, 1,9,13,3,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, + 1,9,12,3,4,38, 1,9,11,2,5,38, 1,9,11,3,5,38, 1,9,10,2,6,38, 1,9,10,3,6,38, 1,9,9,2,7,38, 1,9,9,3,7,38, 1,9,8,2,8,38, + 1,9,8,3,8,38, 1,9,7,2,9,38, 1,9,7,3,9,38, 1,9,6,2,10,38, 1,9,6,3,10,38, 1,9,5,2,11,38, 1,9,5,3,11,38, 1,9,4,2,12,38, + 1,9,4,3,12,38, 1,9,3,2,13,38, 1,9,3,3,13,38, 1,9,2,2,14,38, 1,9,2,3,14,38, 1,9,2,6,14,22, 1,8,13,5,1,7, 1,8,2,6,14,23, + 1,7,13,4,1,8, 1,7,13,5,1,8, 1,7,2,4,1,8, 1,7,2,6,14,24, 1,6,12,2,4,41, 1,6,12,4,1,9, 1,6,12,5,1,9, 1,6,11,2,5,41, + 1,6,11,4,1,9, 1,6,10,2,6,41, 1,6,10,4,1,9, 1,6,9,2,7,41, 1,6,9,4,1,9, 1,6,8,2,8,41, 1,6,8,4,1,9, 1,6,7,2,9,41, + 1,6,7,4,1,9, 1,6,6,2,10,41, 1,6,6,4,1,9, 1,6,5,2,11,41, 1,6,5,4,1,9, 1,6,4,2,12,41, 1,6,4,4,1,9, 1,6,3,2,13,41, + 1,6,3,4,1,9, 1,6,3,6,14,25, 2,12,13,2,3,35, 2,12,13,3,3,35, 2,12,13,5,2,3, 2,12,12,2,4,35, 2,12,12,3,4,35, 2,12,11,2,5,35, + 2,12,11,3,5,35, 2,12,10,2,6,35, 2,12,10,3,6,35, 2,12,9,2,7,35, 2,12,9,3,7,35, 2,12,8,2,8,35, 2,12,8,3,8,35, 2,12,7,2,9,35, + 2,12,7,3,9,35, 2,12,6,2,10,35, 2,12,6,3,10,35, 2,12,5,2,11,35, 2,12,5,3,11,35, 2,12,4,2,12,35, 2,12,4,3,12,35, 2,12,4,6,13,19, + 2,11,14,2,2,36, 2,11,14,3,2,36, 2,11,14,5,2,4, 2,11,13,2,3,36, 2,11,12,2,4,36, 2,11,11,2,5,36, 2,11,10,2,6,36, 2,11,9,2,7,36, + 2,11,8,2,8,36, 2,11,7,2,9,36, 2,11,6,2,10,36, 2,11,5,2,11,36, 2,11,4,2,12,36, 2,11,4,6,13,20, 2,10,14,2,2,37, 2,10,14,4,2,5, + 2,10,14,5,2,5, 2,10,13,2,3,37, 2,10,12,2,4,37, 2,10,11,2,5,37, 2,10,10,2,6,37, 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, + 2,10,6,2,10,37, 2,10,5,2,11,37, 2,10,4,2,12,37, 2,10,3,2,13,37, 2,10,3,3,13,37, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,2,3,14,38, + 2,9,2,6,13,22, 2,8,13,5,2,7, 2,8,2,6,13,23, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,2,4,2,8, 2,7,2,6,13,24, 2,6,12,4,2,9, + 2,6,12,5,2,9, 2,6,11,4,2,9, 2,6,10,4,2,9, 2,6,9,4,2,9, 2,6,8,4,2,9, 2,6,7,4,2,9, 2,6,6,4,2,9, 2,6,5,4,2,9, + 2,6,4,4,2,9, 2,6,3,4,2,9, 2,6,3,6,13,25, 3,13,13,2,3,34, 3,13,13,3,3,34, 3,13,13,5,3,2, 3,13,12,2,4,34, 3,13,12,3,4,34, + 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, + 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,5,6,12,18, 3,12,13,5,3,3, + 3,12,4,3,12,35, 3,12,4,6,12,19, 3,11,14,3,2,36, 3,11,14,5,3,4, 3,11,4,6,12,20, 3,10,14,4,3,5, 3,10,14,5,3,5, 3,10,3,3,13,37, + 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,2,3,14,38, 3,9,2,6,12,22, 3,8,13,5,3,7, 3,8,2,6,12,23, 3,7,13,4,3,8, 3,7,13,5,3,8, + 3,7,2,4,3,8, 3,7,2,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,3,4,3,9, 3,6,3,6,12,25, 3,5,11,2,5,42, 3,5,11,5,3,10, + 3,5,10,2,6,42, 3,5,9,2,7,42, 3,5,8,2,8,42, 3,5,7,2,9,42, 3,5,6,2,10,42, 3,5,5,2,11,42, 3,5,5,4,3,10, 3,5,4,2,12,42, + 3,5,4,4,3,10, 3,5,4,6,12,26, 3,4,11,2,5,43, 3,4,11,4,3,11, 3,4,11,5,3,11, 3,4,10,2,6,43, 3,4,9,2,7,43, 3,4,8,2,8,43, + 3,4,7,2,9,43, 3,4,6,2,10,43, 3,4,6,6,12,27, 3,3,10,2,6,44, 3,3,10,4,3,12, 3,3,10,5,3,12, 3,3,9,2,7,44, 3,3,9,4,3,12, + 3,3,8,2,8,44, 3,3,8,4,3,12, 3,3,7,2,9,44, 3,3,7,4,3,12, 3,3,6,2,10,44, 3,3,6,4,3,12, 3,3,6,6,12,28, 4,14,12,2,4,33, + 4,14,12,3,4,33, 4,14,12,5,4,1, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, + 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,6,6,11,17, 4,13,13,3,3,34, + 4,13,13,5,4,2, 4,13,5,3,11,34, 4,13,5,6,11,18, 4,12,13,5,4,3, 4,12,4,3,12,35, 4,12,4,6,11,19, 4,11,14,3,2,36, 4,11,14,5,4,4, + 4,11,4,6,11,20, 4,10,14,4,4,5, 4,10,14,5,4,5, 4,10,3,3,13,37, 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,2,3,14,38, 4,9,2,6,11,22, + 4,8,13,5,4,7, 4,8,2,6,11,23, 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,2,4,4,8, 4,7,2,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, + 4,6,3,4,4,9, 4,6,3,6,11,25, 4,5,11,5,4,10, 4,5,5,4,4,10, 4,5,4,4,4,10, 4,5,4,6,11,26, 4,4,11,4,4,11, 4,4,11,5,4,11, + 4,4,6,6,11,27, 4,3,10,5,4,12, 4,3,6,6,11,28, 4,2,11,2,5,45, 4,2,11,3,5,45, 4,2,11,5,4,13, 4,2,10,2,6,45, 4,2,9,2,7,45, + 4,2,8,2,8,45, 4,2,7,2,9,45, 4,2,6,2,10,45, 4,2,6,4,4,13, 4,2,6,6,11,29, 4,1,12,2,4,46, 4,1,12,3,4,46, 4,1,12,4,4,14, + 4,1,12,5,4,14, 4,1,11,2,5,46, 4,1,11,4,4,14, 4,1,10,2,6,46, 4,1,10,4,4,14, 4,1,9,2,7,46, 4,1,9,4,4,14, 4,1,8,2,8,46, + 4,1,8,4,4,14, 4,1,7,2,9,46, 4,1,7,4,4,14, 4,1,7,6,11,30, 5,14,12,3,4,33, 5,14,12,5,5,1, 5,14,11,3,5,33, 5,14,10,3,6,33, + 5,14,9,3,7,33, 5,14,8,3,8,33, 5,14,7,3,9,33, 5,14,6,3,10,33, 5,14,6,6,10,17, 5,13,13,3,3,34, 5,13,13,5,5,2, 5,13,5,3,11,34, + 5,13,5,6,10,18, 5,12,13,5,5,3, 5,12,4,3,12,35, 5,12,4,6,10,19, 5,11,14,3,2,36, 5,11,14,5,5,4, 5,11,4,6,10,20, 5,10,14,4,5,5, + 5,10,14,5,5,5, 5,10,3,3,13,37, 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,2,3,14,38, 5,9,2,6,10,22, 5,8,13,5,5,7, 5,8,2,6,10,23, + 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,2,4,5,8, 5,7,2,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,3,4,5,9, 5,6,3,6,10,25, + 5,5,11,5,5,10, 5,5,5,4,5,10, 5,5,4,4,5,10, 5,5,4,6,10,26, 5,4,11,4,5,11, 5,4,11,5,5,11, 5,4,6,6,10,27, 5,3,10,5,5,12, + 5,3,6,6,10,28, 5,2,11,3,5,45, 5,2,11,5,5,13, 5,2,6,4,5,13, 5,2,6,6,10,29, 5,1,12,3,4,46, 5,1,12,4,5,14, 5,1,12,5,5,14, + 5,1,7,6,10,30, 5,0,11,2,5,47, 5,0,11,5,5,15, 5,0,10,2,6,47, 5,0,9,2,7,47, 5,0,8,2,8,47, 5,0,7,2,9,47, 5,0,7,6,10,31, + 6,15,11,2,5,32, 6,15,11,3,5,32, 6,15,11,5,6,0, 6,15,10,2,6,32, 6,15,10,3,6,32, 6,15,9,2,7,32, 6,15,9,3,7,32, 6,15,8,2,8,32, + 6,15,8,3,8,32, 6,15,7,2,9,32, 6,15,7,3,9,32, 6,15,7,6,9,16, 6,14,12,3,4,33, 6,14,12,5,6,1, 6,14,6,3,10,33, 6,14,6,6,9,17, + 6,13,13,3,3,34, 6,13,13,5,6,2, 6,13,5,3,11,34, 6,13,5,6,9,18, 6,12,13,5,6,3, 6,12,4,3,12,35, 6,12,4,6,9,19, 6,11,14,3,2,36, + 6,11,14,5,6,4, 6,11,4,6,9,20, 6,10,14,4,6,5, 6,10,14,5,6,5, 6,10,3,3,13,37, 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,2,3,14,38, + 6,9,2,6,9,22, 6,8,13,5,6,7, 6,8,2,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,2,4,6,8, 6,7,2,6,9,24, 6,6,12,4,6,9, + 6,6,12,5,6,9, 6,6,3,4,6,9, 6,6,3,6,9,25, 6,5,11,5,6,10, 6,5,5,4,6,10, 6,5,4,4,6,10, 6,5,4,6,9,26, 6,4,11,4,6,11, + 6,4,11,5,6,11, 6,4,6,6,9,27, 6,3,10,5,6,12, 6,3,6,6,9,28, 6,2,11,3,5,45, 6,2,11,5,6,13, 6,2,6,4,6,13, 6,2,6,6,9,29, + 6,1,12,3,4,46, 6,1,12,4,6,14, 6,1,12,5,6,14, 6,1,7,6,9,30, 6,0,11,1,5,47, 6,0,11,5,6,15, 6,0,10,1,6,47, 6,0,9,1,7,47, + 6,0,8,1,8,47, 6,0,7,1,9,47, 6,0,7,6,9,31, 7,15,11,3,5,32, 7,15,11,5,7,0, 7,15,10,3,6,32, 7,15,9,3,7,32, 7,15,8,3,8,32, + 7,15,7,3,9,32, 7,15,7,6,8,16, 7,14,12,3,4,33, 7,14,12,5,7,1, 7,14,6,3,10,33, 7,14,6,6,8,17, 7,13,13,3,3,34, 7,13,13,5,7,2, + 7,13,5,3,11,34, 7,13,5,6,8,18, 7,12,13,5,7,3, 7,12,4,3,12,35, 7,12,4,6,8,19, 7,11,14,3,2,36, 7,11,14,5,7,4, 7,11,4,6,8,20, + 7,10,14,4,7,5, 7,10,14,5,7,5, 7,10,3,3,13,37, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,2,3,14,38, 7,9,2,6,8,22, 7,8,13,5,7,7, + 7,8,2,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,2,4,7,8, 7,7,2,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,3,4,7,9, + 7,6,3,6,8,25, 7,5,11,5,7,10, 7,5,5,4,7,10, 7,5,4,4,7,10, 7,5,4,6,8,26, 7,4,11,4,7,11, 7,4,11,5,7,11, 7,4,6,6,8,27, + 7,3,10,5,7,12, 7,3,6,6,8,28, 7,2,11,3,5,45, 7,2,11,5,7,13, 7,2,6,4,7,13, 7,2,6,6,8,29, 7,1,12,3,4,46, 7,1,12,4,7,14, + 7,1,12,5,7,14, 7,1,11,4,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,7,6,8,30, 8,15,11,3,5,32, + 8,15,11,5,8,0, 8,15,10,3,6,32, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,7,6,7,16, 8,14,12,3,4,33, 8,14,12,5,8,1, + 8,14,6,3,10,33, 8,14,6,6,7,17, 8,13,13,3,3,34, 8,13,13,5,8,2, 8,13,5,3,11,34, 8,13,5,6,7,18, 8,12,13,5,8,3, 8,12,4,3,12,35, + 8,12,4,6,7,19, 8,11,14,3,2,36, 8,11,14,5,8,4, 8,11,4,6,7,20, 8,10,14,4,8,5, 8,10,14,5,8,5, 8,10,3,3,13,37, 8,10,3,6,7,21, + 8,9,13,5,8,6, 8,9,2,3,14,38, 8,9,2,6,7,22, 8,8,13,5,8,7, 8,8,2,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,2,4,8,8, + 8,7,2,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,3,4,8,9, 8,6,3,6,7,25, 8,5,11,5,8,10, 8,5,5,4,8,10, 8,5,4,4,8,10, + 8,5,4,6,7,26, 8,4,11,4,8,11, 8,4,11,5,8,11, 8,4,6,6,7,27, 8,3,10,5,8,12, 8,3,6,6,7,28, 8,2,11,3,5,45, 8,2,11,5,8,13, + 8,2,6,4,8,13, 8,2,6,6,7,29, 8,1,12,3,4,46, 8,1,12,4,8,14, 8,1,12,5,8,14, 8,1,11,4,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, + 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,7,6,7,30, 9,15,11,1,5,32, 9,15,11,3,5,32, 9,15,11,5,9,0, 9,15,10,1,6,32, 9,15,10,3,6,32, + 9,15,9,1,7,32, 9,15,9,3,7,32, 9,15,8,1,8,32, 9,15,8,3,8,32, 9,15,7,1,9,32, 9,15,7,3,9,32, 9,15,7,6,6,16, 9,14,12,3,4,33, + 9,14,12,5,9,1, 9,14,6,3,10,33, 9,14,6,6,6,17, 9,13,13,3,3,34, 9,13,13,5,9,2, 9,13,5,3,11,34, 9,13,5,6,6,18, 9,12,13,5,9,3, + 9,12,4,3,12,35, 9,12,4,6,6,19, 9,11,14,3,2,36, 9,11,14,5,9,4, 9,11,4,6,6,20, 9,10,14,4,9,5, 9,10,14,5,9,5, 9,10,3,3,13,37, + 9,10,3,6,6,21, 9,9,13,5,9,6, 9,9,2,3,14,38, 9,9,2,6,6,22, 9,8,13,5,9,7, 9,8,2,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, + 9,7,2,4,9,8, 9,7,2,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,3,4,9,9, 9,6,3,6,6,25, 9,5,11,5,9,10, 9,5,5,4,9,10, + 9,5,4,4,9,10, 9,5,4,6,6,26, 9,4,11,4,9,11, 9,4,11,5,9,11, 9,4,6,6,6,27, 9,3,10,5,9,12, 9,3,6,6,6,28, 9,2,11,3,5,45, + 9,2,11,5,9,13, 9,2,6,4,9,13, 9,2,6,6,6,29, 9,1,12,3,4,46, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,7,6,6,30, 9,0,11,2,5,47, + 9,0,11,5,9,15, 9,0,10,2,6,47, 9,0,9,2,7,47, 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,7,6,6,31, 10,14,12,3,4,33, 10,14,12,5,10,1, + 10,14,11,3,5,33, 10,14,10,3,6,33, 10,14,9,3,7,33, 10,14,8,3,8,33, 10,14,7,3,9,33, 10,14,6,3,10,33, 10,14,6,6,5,17, 10,13,13,3,3,34, + 10,13,13,5,10,2, 10,13,5,3,11,34, 10,13,5,6,5,18, 10,12,13,5,10,3, 10,12,4,3,12,35, 10,12,4,6,5,19, 10,11,14,3,2,36, 10,11,14,5,10,4, + 10,11,4,6,5,20, 10,10,14,4,10,5, 10,10,14,5,10,5, 10,10,3,3,13,37, 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,2,3,14,38, 10,9,2,6,5,22, + 10,8,13,5,10,7, 10,8,2,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,2,4,10,8, 10,7,2,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, + 10,6,3,4,10,9, 10,6,3,6,5,25, 10,5,11,5,10,10, 10,5,5,4,10,10, 10,5,4,4,10,10, 10,5,4,6,5,26, 10,4,11,4,10,11, 10,4,11,5,10,11, + 10,4,6,6,5,27, 10,3,10,5,10,12, 10,3,6,6,5,28, 10,2,11,3,5,45, 10,2,11,5,10,13, 10,2,6,4,10,13, 10,2,6,6,5,29, 10,1,12,3,4,46, + 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,7,6,5,30, 10,0,11,1,5,47, 10,0,11,5,10,15, 10,0,10,1,6,47, 10,0,9,1,7,47, 10,0,8,1,8,47, + 10,0,7,1,9,47, 10,0,7,6,5,31, 11,14,12,1,4,33, 11,14,12,3,4,33, 11,14,12,5,11,1, 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,10,1,6,33, + 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, + 11,14,6,3,10,33, 11,14,6,6,4,17, 11,13,13,3,3,34, 11,13,13,5,11,2, 11,13,5,3,11,34, 11,13,5,6,4,18, 11,12,13,5,11,3, 11,12,4,3,12,35, + 11,12,4,6,4,19, 11,11,14,3,2,36, 11,11,14,5,11,4, 11,11,4,6,4,20, 11,10,14,4,11,5, 11,10,14,5,11,5, 11,10,3,3,13,37, 11,10,3,6,4,21, + 11,9,13,5,11,6, 11,9,2,3,14,38, 11,9,2,6,4,22, 11,8,13,5,11,7, 11,8,2,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,2,4,11,8, + 11,7,2,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,3,4,11,9, 11,6,3,6,4,25, 11,5,11,5,11,10, 11,5,5,4,11,10, 11,5,4,4,11,10, + 11,5,4,6,4,26, 11,4,11,4,11,11, 11,4,11,5,11,11, 11,4,6,6,4,27, 11,3,10,5,11,12, 11,3,6,6,4,28, 11,2,11,1,5,45, 11,2,11,3,5,45, + 11,2,11,5,11,13, 11,2,10,1,6,45, 11,2,9,1,7,45, 11,2,8,1,8,45, 11,2,7,1,9,45, 11,2,6,1,10,45, 11,2,6,4,11,13, 11,2,6,6,4,29, + 11,1,12,1,4,46, 11,1,12,3,4,46, 11,1,12,4,11,14, 11,1,12,5,11,14, 11,1,11,1,5,46, 11,1,11,4,11,14, 11,1,10,1,6,46, 11,1,10,4,11,14, + 11,1,9,1,7,46, 11,1,9,4,11,14, 11,1,8,1,8,46, 11,1,8,4,11,14, 11,1,7,1,9,46, 11,1,7,4,11,14, 11,1,7,6,4,30, 12,13,13,1,3,34, + 12,13,13,3,3,34, 12,13,13,5,12,2, 12,13,12,1,4,34, 12,13,12,3,4,34, 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, + 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, + 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,5,6,3,18, 12,12,13,5,12,3, 12,12,4,3,12,35, 12,12,4,6,3,19, 12,11,14,3,2,36, 12,11,14,5,12,4, + 12,11,4,6,3,20, 12,10,14,4,12,5, 12,10,14,5,12,5, 12,10,3,3,13,37, 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,2,3,14,38, 12,9,2,6,3,22, + 12,8,13,5,12,7, 12,8,2,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,2,4,12,8, 12,7,2,6,3,24, 12,6,12,4,12,9, 12,6,12,5,12,9, + 12,6,3,4,12,9, 12,6,3,6,3,25, 12,5,11,1,5,42, 12,5,11,5,12,10, 12,5,10,1,6,42, 12,5,9,1,7,42, 12,5,8,1,8,42, 12,5,7,1,9,42, + 12,5,6,1,10,42, 12,5,5,1,11,42, 12,5,5,4,12,10, 12,5,4,1,12,42, 12,5,4,4,12,10, 12,5,4,6,3,26, 12,4,11,1,5,43, 12,4,11,4,12,11, + 12,4,11,5,12,11, 12,4,10,1,6,43, 12,4,9,1,7,43, 12,4,8,1,8,43, 12,4,7,1,9,43, 12,4,6,1,10,43, 12,4,6,6,3,27, 12,3,10,1,6,44, + 12,3,10,4,12,12, 12,3,10,5,12,12, 12,3,9,1,7,44, 12,3,9,4,12,12, 12,3,8,1,8,44, 12,3,8,4,12,12, 12,3,7,1,9,44, 12,3,7,4,12,12, + 12,3,6,1,10,44, 12,3,6,4,12,12, 12,3,6,6,3,28, 13,12,13,1,3,35, 13,12,13,3,3,35, 13,12,13,5,13,3, 13,12,12,1,4,35, 13,12,12,3,4,35, + 13,12,11,1,5,35, 13,12,11,3,5,35, 13,12,10,1,6,35, 13,12,10,3,6,35, 13,12,9,1,7,35, 13,12,9,3,7,35, 13,12,8,1,8,35, 13,12,8,3,8,35, + 13,12,7,1,9,35, 13,12,7,3,9,35, 13,12,6,1,10,35, 13,12,6,3,10,35, 13,12,5,1,11,35, 13,12,5,3,11,35, 13,12,4,1,12,35, 13,12,4,3,12,35, + 13,12,4,6,2,19, 13,11,14,1,2,36, 13,11,14,3,2,36, 13,11,14,5,13,4, 13,11,13,1,3,36, 13,11,12,1,4,36, 13,11,11,1,5,36, 13,11,10,1,6,36, + 13,11,9,1,7,36, 13,11,8,1,8,36, 13,11,7,1,9,36, 13,11,6,1,10,36, 13,11,5,1,11,36, 13,11,4,1,12,36, 13,11,4,6,2,20, 13,10,14,1,2,37, + 13,10,14,4,13,5, 13,10,14,5,13,5, 13,10,13,1,3,37, 13,10,12,1,4,37, 13,10,11,1,5,37, 13,10,10,1,6,37, 13,10,9,1,7,37, 13,10,8,1,8,37, + 13,10,7,1,9,37, 13,10,6,1,10,37, 13,10,5,1,11,37, 13,10,4,1,12,37, 13,10,3,1,13,37, 13,10,3,3,13,37, 13,10,3,6,2,21, 13,9,13,5,13,6, + 13,9,2,3,14,38, 13,9,2,6,2,22, 13,8,13,5,13,7, 13,8,2,6,2,23, 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,2,4,13,8, 13,7,2,6,2,24, + 13,6,12,4,13,9, 13,6,12,5,13,9, 13,6,11,4,13,9, 13,6,10,4,13,9, 13,6,9,4,13,9, 13,6,8,4,13,9, 13,6,7,4,13,9, 13,6,6,4,13,9, + 13,6,5,4,13,9, 13,6,4,4,13,9, 13,6,3,4,13,9, 13,6,3,6,2,25, 14,9,13,1,3,38, 14,9,13,3,3,38, 14,9,13,5,14,6, 14,9,12,1,4,38, + 14,9,12,3,4,38, 14,9,11,1,5,38, 14,9,11,3,5,38, 14,9,10,1,6,38, 14,9,10,3,6,38, 14,9,9,1,7,38, 14,9,9,3,7,38, 14,9,8,1,8,38, + 14,9,8,3,8,38, 14,9,7,1,9,38, 14,9,7,3,9,38, 14,9,6,1,10,38, 14,9,6,3,10,38, 14,9,5,1,11,38, 14,9,5,3,11,38, 14,9,4,1,12,38, + 14,9,4,3,12,38, 14,9,3,1,13,38, 14,9,3,3,13,38, 14,9,2,1,14,38, 14,9,2,3,14,38, 14,9,2,6,1,22, 14,8,13,5,14,7, 14,8,2,6,1,23, + 14,7,13,4,14,8, 14,7,13,5,14,8, 14,7,2,4,14,8, 14,7,2,6,1,24, 14,6,12,1,4,41, 14,6,12,4,14,9, 14,6,12,5,14,9, 14,6,11,1,5,41, + 14,6,11,4,14,9, 14,6,10,1,6,41, 14,6,10,4,14,9, 14,6,9,1,7,41, 14,6,9,4,14,9, 14,6,8,1,8,41, 14,6,8,4,14,9, 14,6,7,1,9,41, + 14,6,7,4,14,9, 14,6,6,1,10,41, 14,6,6,4,14,9, 14,6,5,1,11,41, 14,6,5,4,14,9, 14,6,4,1,12,41, 14,6,4,4,14,9, 14,6,3,1,13,41, + 14,6,3,4,14,9, 14,6,3,6,1,25, 15,8,13,1,3,39, 15,8,13,3,3,39, 15,8,13,5,15,7, 15,8,12,1,4,39, 15,8,12,3,4,39, 15,8,11,1,5,39, + 15,8,11,3,5,39, 15,8,10,1,6,39, 15,8,10,3,6,39, 15,8,9,1,7,39, 15,8,9,3,7,39, 15,8,8,1,8,39, 15,8,8,3,8,39, 15,8,7,1,9,39, + 15,8,7,3,9,39, 15,8,6,1,10,39, 15,8,6,3,10,39, 15,8,5,1,11,39, 15,8,5,3,11,39, 15,8,4,1,12,39, 15,8,4,3,12,39, 15,8,3,1,13,39, + 15,8,3,3,13,39, 15,8,2,1,14,39, 15,8,2,3,14,39, 15,8,2,6,0,23, 15,7,13,1,3,40, 15,7,13,4,15,8, 15,7,13,5,15,8, 15,7,12,1,4,40, + 15,7,12,4,15,8, 15,7,11,1,5,40, 15,7,11,4,15,8, 15,7,10,1,6,40, 15,7,10,4,15,8, 15,7,9,1,7,40, 15,7,9,4,15,8, 15,7,8,1,8,40, + 15,7,8,4,15,8, 15,7,7,1,9,40, 15,7,7,4,15,8, 15,7,6,1,10,40, 15,7,6,4,15,8, 15,7,5,1,11,40, 15,7,5,4,15,8, 15,7,4,1,12,40, + 15,7,4,4,15,8, 15,7,3,1,13,40, 15,7,3,4,15,8, 15,7,2,1,14,40, 15,7,2,4,15,8, 15,7,2,6,0,24, + }, + }, + }, +} diff --git a/assets/voxels/little_boy.lua b/assets/voxels/little_boy.lua new file mode 100644 index 0000000..3416a19 --- /dev/null +++ b/assets/voxels/little_boy.lua @@ -0,0 +1,131 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "little_boy" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "little_boy", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1098, + count = 842, + faces = { + 2,9,13,2,2,38, 2,9,13,3,2,38, 2,9,13,4,2,6, 2,9,13,5,2,6, 2,9,12,2,3,38, 2,9,12,3,3,38, 2,9,11,2,4,38, 2,9,11,3,4,38, + 2,9,10,2,5,38, 2,9,10,3,5,38, 2,9,9,2,6,38, 2,9,9,3,6,38, 2,9,8,2,7,38, 2,9,8,3,7,38, 2,9,7,2,8,38, 2,9,7,3,8,38, + 2,9,6,2,9,38, 2,9,6,3,9,38, 2,9,5,2,10,38, 2,9,5,3,10,38, 2,9,4,2,11,38, 2,9,4,3,11,38, 2,9,3,2,12,38, 2,9,3,3,12,38, + 2,9,2,2,13,38, 2,9,2,3,13,38, 2,9,2,6,13,22, 2,8,12,2,3,39, 2,8,12,5,2,7, 2,8,11,2,4,39, 2,8,10,2,5,39, 2,8,9,2,6,39, + 2,8,8,2,7,39, 2,8,7,2,8,39, 2,8,6,2,9,39, 2,8,5,2,10,39, 2,8,4,2,11,39, 2,8,3,2,12,39, 2,8,2,2,13,39, 2,8,2,6,13,23, + 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,11,4,2,8, 2,7,10,2,5,40, 2,7,10,4,2,8, 2,7,9,2,6,40, + 2,7,9,4,2,8, 2,7,8,2,7,40, 2,7,8,4,2,8, 2,7,7,2,8,40, 2,7,7,4,2,8, 2,7,6,2,9,40, 2,7,6,4,2,8, 2,7,5,2,10,40, + 2,7,5,4,2,8, 2,7,4,2,11,40, 2,7,4,4,2,8, 2,7,3,2,12,40, 2,7,3,4,2,8, 2,7,2,2,13,40, 2,7,2,4,2,8, 2,7,2,6,13,24, + 2,3,10,2,5,44, 2,3,10,3,5,44, 2,3,10,4,2,12, 2,3,10,5,2,12, 2,3,9,2,6,44, 2,3,9,3,6,44, 2,3,9,4,2,12, 2,3,8,2,7,44, + 2,3,8,3,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,3,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,3,9,44, 2,3,6,4,2,12, + 2,3,5,2,10,44, 2,3,5,3,10,44, 2,3,5,4,2,12, 2,3,5,6,13,28, 3,11,12,2,3,36, 3,11,12,3,3,36, 3,11,12,5,3,4, 3,11,11,2,4,36, + 3,11,11,3,4,36, 3,11,10,2,5,36, 3,11,10,3,5,36, 3,11,9,2,6,36, 3,11,9,3,6,36, 3,11,8,2,7,36, 3,11,8,3,7,36, 3,11,7,2,8,36, + 3,11,7,3,8,36, 3,11,6,2,9,36, 3,11,6,3,9,36, 3,11,5,2,10,36, 3,11,5,3,10,36, 3,11,4,2,11,36, 3,11,4,3,11,36, 3,11,3,2,12,36, + 3,11,3,3,12,36, 3,11,3,6,12,20, 3,10,13,2,2,37, 3,10,13,3,2,37, 3,10,13,5,3,5, 3,10,12,2,3,37, 3,10,11,2,4,37, 3,10,10,2,5,37, + 3,10,9,2,6,37, 3,10,8,2,7,37, 3,10,7,2,8,37, 3,10,6,2,9,37, 3,10,5,2,10,37, 3,10,4,2,11,37, 3,10,3,2,12,37, 3,10,3,6,12,21, + 3,9,13,4,3,6, 3,9,13,5,3,6, 3,9,2,3,13,38, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,2,6,12,23, 3,7,12,5,3,8, 3,7,2,4,3,8, + 3,7,2,6,12,24, 3,6,12,2,3,41, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,11,2,4,41, 3,6,11,4,3,9, 3,6,10,2,5,41, 3,6,10,4,3,9, + 3,6,9,2,6,41, 3,6,9,4,3,9, 3,6,8,2,7,41, 3,6,8,4,3,9, 3,6,7,2,8,41, 3,6,7,4,3,9, 3,6,6,2,9,41, 3,6,6,4,3,9, + 3,6,5,2,10,41, 3,6,5,4,3,9, 3,6,4,2,11,41, 3,6,4,4,3,9, 3,6,3,2,12,41, 3,6,3,4,3,9, 3,6,3,6,12,25, 3,4,10,2,5,43, + 3,4,10,3,5,43, 3,4,10,5,3,11, 3,4,9,2,6,43, 3,4,9,3,6,43, 3,4,8,2,7,43, 3,4,8,3,7,43, 3,4,7,2,8,43, 3,4,7,3,8,43, + 3,4,6,2,9,43, 3,4,6,3,9,43, 3,4,6,6,12,27, 3,3,10,4,3,12, 3,3,10,5,3,12, 3,3,5,3,10,44, 3,3,5,6,12,28, 3,2,9,2,6,45, + 3,2,9,4,3,13, 3,2,9,5,3,13, 3,2,8,2,7,45, 3,2,8,4,3,13, 3,2,7,2,8,45, 3,2,7,4,3,13, 3,2,6,2,9,45, 3,2,6,4,3,13, + 3,2,5,2,10,45, 3,2,5,4,3,13, 3,2,5,6,12,29, 4,12,11,2,4,35, 4,12,11,3,4,35, 4,12,11,5,4,3, 4,12,10,2,5,35, 4,12,10,3,5,35, + 4,12,9,2,6,35, 4,12,9,3,6,35, 4,12,8,2,7,35, 4,12,8,3,7,35, 4,12,7,2,8,35, 4,12,7,3,8,35, 4,12,6,2,9,35, 4,12,6,3,9,35, + 4,12,5,2,10,35, 4,12,5,3,10,35, 4,12,4,2,11,35, 4,12,4,3,11,35, 4,12,4,6,11,19, 4,11,12,3,3,36, 4,11,12,5,4,4, 4,11,3,3,12,36, + 4,11,3,6,11,20, 4,10,13,3,2,37, 4,10,13,5,4,5, 4,10,3,6,11,21, 4,9,13,4,4,6, 4,9,13,5,4,6, 4,9,2,3,13,38, 4,9,2,6,11,22, + 4,8,12,5,4,7, 4,8,2,6,11,23, 4,7,12,5,4,8, 4,7,2,4,4,8, 4,7,2,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,3,4,4,9, + 4,6,3,6,11,25, 4,5,11,2,4,42, 4,5,11,4,4,10, 4,5,11,5,4,10, 4,5,10,2,5,42, 4,5,9,2,6,42, 4,5,8,2,7,42, 4,5,7,2,8,42, + 4,5,6,2,9,42, 4,5,5,2,10,42, 4,5,5,4,4,10, 4,5,4,2,11,42, 4,5,4,4,4,10, 4,5,4,6,11,26, 4,4,10,5,4,11, 4,4,6,6,11,27, + 4,3,10,4,4,12, 4,3,10,5,4,12, 4,3,5,3,10,44, 4,3,5,6,11,28, 4,2,9,5,4,13, 4,2,5,6,11,29, 4,1,10,2,5,46, 4,1,10,3,5,46, + 4,1,10,4,4,14, 4,1,10,5,4,14, 4,1,9,2,6,46, 4,1,9,4,4,14, 4,1,8,2,7,46, 4,1,8,4,4,14, 4,1,7,2,8,46, 4,1,7,4,4,14, + 4,1,6,2,9,46, 4,1,6,4,4,14, 4,1,5,2,10,46, 4,1,5,4,4,14, 4,1,5,6,11,30, 5,12,11,3,4,35, 5,12,11,5,5,3, 5,12,10,3,5,35, + 5,12,9,3,6,35, 5,12,8,3,7,35, 5,12,7,3,8,35, 5,12,6,3,9,35, 5,12,5,3,10,35, 5,12,4,3,11,35, 5,12,4,6,10,19, 5,11,12,3,3,36, + 5,11,12,5,5,4, 5,11,3,3,12,36, 5,11,3,6,10,20, 5,10,13,3,2,37, 5,10,13,5,5,5, 5,10,3,6,10,21, 5,9,13,4,5,6, 5,9,13,5,5,6, + 5,9,2,3,13,38, 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,2,6,10,23, 5,7,12,5,5,8, 5,7,2,4,5,8, 5,7,2,6,10,24, 5,6,12,4,5,9, + 5,6,12,5,5,9, 5,6,3,4,5,9, 5,6,3,6,10,25, 5,5,11,4,5,10, 5,5,11,5,5,10, 5,5,5,4,5,10, 5,5,4,4,5,10, 5,5,4,6,10,26, + 5,4,10,5,5,11, 5,4,6,6,10,27, 5,3,10,4,5,12, 5,3,10,5,5,12, 5,3,5,3,10,44, 5,3,5,6,10,28, 5,2,9,5,5,13, 5,2,5,6,10,29, + 5,1,10,3,5,46, 5,1,10,4,5,14, 5,1,10,5,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,9,2,6,47, 5,0,9,5,5,15, 5,0,8,2,7,47, + 5,0,7,2,8,47, 5,0,6,2,9,47, 5,0,6,6,10,31, 6,13,9,2,6,34, 6,13,9,3,6,34, 6,13,9,5,6,2, 6,13,8,2,7,34, 6,13,8,3,7,34, + 6,13,7,2,8,34, 6,13,7,3,8,34, 6,13,6,2,9,34, 6,13,6,3,9,34, 6,13,6,6,9,18, 6,12,11,3,4,35, 6,12,11,5,6,3, 6,12,10,3,5,35, + 6,12,5,3,10,35, 6,12,4,3,11,35, 6,12,4,6,9,19, 6,11,12,3,3,36, 6,11,12,5,6,4, 6,11,3,3,12,36, 6,11,3,6,9,20, 6,10,13,3,2,37, + 6,10,13,5,6,5, 6,10,3,6,9,21, 6,9,13,4,6,6, 6,9,13,5,6,6, 6,9,2,3,13,38, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,2,6,9,23, + 6,7,12,5,6,8, 6,7,2,4,6,8, 6,7,2,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,3,4,6,9, 6,6,3,6,9,25, 6,5,11,4,6,10, + 6,5,11,5,6,10, 6,5,5,4,6,10, 6,5,4,4,6,10, 6,5,4,6,9,26, 6,4,10,5,6,11, 6,4,6,6,9,27, 6,3,10,4,6,12, 6,3,10,5,6,12, + 6,3,5,3,10,44, 6,3,5,6,9,28, 6,2,9,5,6,13, 6,2,5,6,9,29, 6,1,10,3,5,46, 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,5,4,6,14, + 6,1,5,6,9,30, 6,0,9,1,6,47, 6,0,9,5,6,15, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,13,9,3,6,34, + 7,13,9,5,7,2, 7,13,8,3,7,34, 7,13,7,3,8,34, 7,13,6,3,9,34, 7,13,6,6,8,18, 7,12,11,3,4,35, 7,12,11,5,7,3, 7,12,10,3,5,35, + 7,12,5,3,10,35, 7,12,4,3,11,35, 7,12,4,6,8,19, 7,11,12,3,3,36, 7,11,12,5,7,4, 7,11,3,3,12,36, 7,11,3,6,8,20, 7,10,13,3,2,37, + 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,4,7,6, 7,9,13,5,7,6, 7,9,2,3,13,38, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,2,6,8,23, + 7,7,12,5,7,8, 7,7,2,4,7,8, 7,7,2,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,3,4,7,9, 7,6,3,6,8,25, 7,5,11,4,7,10, + 7,5,11,5,7,10, 7,5,5,4,7,10, 7,5,4,4,7,10, 7,5,4,6,8,26, 7,4,10,5,7,11, 7,4,6,6,8,27, 7,3,10,4,7,12, 7,3,10,5,7,12, + 7,3,5,3,10,44, 7,3,5,6,8,28, 7,2,9,5,7,13, 7,2,5,6,8,29, 7,1,10,3,5,46, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, + 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, 8,13,9,3,6,34, 8,13,9,5,8,2, 8,13,8,3,7,34, + 8,13,7,3,8,34, 8,13,6,3,9,34, 8,13,6,6,7,18, 8,12,11,3,4,35, 8,12,11,5,8,3, 8,12,10,3,5,35, 8,12,5,3,10,35, 8,12,4,3,11,35, + 8,12,4,6,7,19, 8,11,12,3,3,36, 8,11,12,5,8,4, 8,11,3,3,12,36, 8,11,3,6,7,20, 8,10,13,3,2,37, 8,10,13,5,8,5, 8,10,3,6,7,21, + 8,9,13,4,8,6, 8,9,13,5,8,6, 8,9,2,3,13,38, 8,9,2,6,7,22, 8,8,12,5,8,7, 8,8,2,6,7,23, 8,7,12,5,8,8, 8,7,2,4,8,8, + 8,7,2,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,3,4,8,9, 8,6,3,6,7,25, 8,5,11,4,8,10, 8,5,11,5,8,10, 8,5,5,4,8,10, + 8,5,4,4,8,10, 8,5,4,6,7,26, 8,4,10,5,8,11, 8,4,6,6,7,27, 8,3,10,4,8,12, 8,3,10,5,8,12, 8,3,5,3,10,44, 8,3,5,6,7,28, + 8,2,9,5,8,13, 8,2,5,6,7,29, 8,1,10,3,5,46, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, + 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,13,9,1,6,34, 9,13,9,3,6,34, 9,13,9,5,9,2, 9,13,8,1,7,34, 9,13,8,3,7,34, + 9,13,7,1,8,34, 9,13,7,3,8,34, 9,13,6,1,9,34, 9,13,6,3,9,34, 9,13,6,6,6,18, 9,12,11,3,4,35, 9,12,11,5,9,3, 9,12,10,3,5,35, + 9,12,5,3,10,35, 9,12,4,3,11,35, 9,12,4,6,6,19, 9,11,12,3,3,36, 9,11,12,5,9,4, 9,11,3,3,12,36, 9,11,3,6,6,20, 9,10,13,3,2,37, + 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,13,4,9,6, 9,9,13,5,9,6, 9,9,2,3,13,38, 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,2,6,6,23, + 9,7,12,5,9,8, 9,7,2,4,9,8, 9,7,2,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,3,4,9,9, 9,6,3,6,6,25, 9,5,11,4,9,10, + 9,5,11,5,9,10, 9,5,5,4,9,10, 9,5,4,4,9,10, 9,5,4,6,6,26, 9,4,10,5,9,11, 9,4,6,6,6,27, 9,3,10,4,9,12, 9,3,10,5,9,12, + 9,3,5,3,10,44, 9,3,5,6,6,28, 9,2,9,5,9,13, 9,2,5,6,6,29, 9,1,10,3,5,46, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,5,4,9,14, + 9,1,5,6,6,30, 9,0,9,2,6,47, 9,0,9,5,9,15, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, 10,12,11,3,4,35, + 10,12,11,5,10,3, 10,12,10,3,5,35, 10,12,9,3,6,35, 10,12,8,3,7,35, 10,12,7,3,8,35, 10,12,6,3,9,35, 10,12,5,3,10,35, 10,12,4,3,11,35, + 10,12,4,6,5,19, 10,11,12,3,3,36, 10,11,12,5,10,4, 10,11,3,3,12,36, 10,11,3,6,5,20, 10,10,13,3,2,37, 10,10,13,5,10,5, 10,10,3,6,5,21, + 10,9,13,4,10,6, 10,9,13,5,10,6, 10,9,2,3,13,38, 10,9,2,6,5,22, 10,8,12,5,10,7, 10,8,2,6,5,23, 10,7,12,5,10,8, 10,7,2,4,10,8, + 10,7,2,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,3,4,10,9, 10,6,3,6,5,25, 10,5,11,4,10,10, 10,5,11,5,10,10, 10,5,5,4,10,10, + 10,5,4,4,10,10, 10,5,4,6,5,26, 10,4,10,5,10,11, 10,4,6,6,5,27, 10,3,10,4,10,12, 10,3,10,5,10,12, 10,3,5,3,10,44, 10,3,5,6,5,28, + 10,2,9,5,10,13, 10,2,5,6,5,29, 10,1,10,3,5,46, 10,1,10,4,10,14, 10,1,10,5,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,9,1,6,47, + 10,0,9,5,10,15, 10,0,8,1,7,47, 10,0,7,1,8,47, 10,0,6,1,9,47, 10,0,6,6,5,31, 11,12,11,1,4,35, 11,12,11,3,4,35, 11,12,11,5,11,3, + 11,12,10,1,5,35, 11,12,10,3,5,35, 11,12,9,1,6,35, 11,12,9,3,6,35, 11,12,8,1,7,35, 11,12,8,3,7,35, 11,12,7,1,8,35, 11,12,7,3,8,35, + 11,12,6,1,9,35, 11,12,6,3,9,35, 11,12,5,1,10,35, 11,12,5,3,10,35, 11,12,4,1,11,35, 11,12,4,3,11,35, 11,12,4,6,4,19, 11,11,12,3,3,36, + 11,11,12,5,11,4, 11,11,3,3,12,36, 11,11,3,6,4,20, 11,10,13,3,2,37, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,4,11,6, 11,9,13,5,11,6, + 11,9,2,3,13,38, 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,2,6,4,23, 11,7,12,5,11,8, 11,7,2,4,11,8, 11,7,2,6,4,24, 11,6,12,4,11,9, + 11,6,12,5,11,9, 11,6,3,4,11,9, 11,6,3,6,4,25, 11,5,11,1,4,42, 11,5,11,4,11,10, 11,5,11,5,11,10, 11,5,10,1,5,42, 11,5,9,1,6,42, + 11,5,8,1,7,42, 11,5,7,1,8,42, 11,5,6,1,9,42, 11,5,5,1,10,42, 11,5,5,4,11,10, 11,5,4,1,11,42, 11,5,4,4,11,10, 11,5,4,6,4,26, + 11,4,10,5,11,11, 11,4,6,6,4,27, 11,3,10,4,11,12, 11,3,10,5,11,12, 11,3,5,3,10,44, 11,3,5,6,4,28, 11,2,9,5,11,13, 11,2,5,6,4,29, + 11,1,10,1,5,46, 11,1,10,3,5,46, 11,1,10,4,11,14, 11,1,10,5,11,14, 11,1,9,1,6,46, 11,1,9,4,11,14, 11,1,8,1,7,46, 11,1,8,4,11,14, + 11,1,7,1,8,46, 11,1,7,4,11,14, 11,1,6,1,9,46, 11,1,6,4,11,14, 11,1,5,1,10,46, 11,1,5,4,11,14, 11,1,5,6,4,30, 12,11,12,1,3,36, + 12,11,12,3,3,36, 12,11,12,5,12,4, 12,11,11,1,4,36, 12,11,11,3,4,36, 12,11,10,1,5,36, 12,11,10,3,5,36, 12,11,9,1,6,36, 12,11,9,3,6,36, + 12,11,8,1,7,36, 12,11,8,3,7,36, 12,11,7,1,8,36, 12,11,7,3,8,36, 12,11,6,1,9,36, 12,11,6,3,9,36, 12,11,5,1,10,36, 12,11,5,3,10,36, + 12,11,4,1,11,36, 12,11,4,3,11,36, 12,11,3,1,12,36, 12,11,3,3,12,36, 12,11,3,6,3,20, 12,10,13,1,2,37, 12,10,13,3,2,37, 12,10,13,5,12,5, + 12,10,12,1,3,37, 12,10,11,1,4,37, 12,10,10,1,5,37, 12,10,9,1,6,37, 12,10,8,1,7,37, 12,10,7,1,8,37, 12,10,6,1,9,37, 12,10,5,1,10,37, + 12,10,4,1,11,37, 12,10,3,1,12,37, 12,10,3,6,3,21, 12,9,13,4,12,6, 12,9,13,5,12,6, 12,9,2,3,13,38, 12,9,2,6,3,22, 12,8,12,5,12,7, + 12,8,2,6,3,23, 12,7,12,5,12,8, 12,7,2,4,12,8, 12,7,2,6,3,24, 12,6,12,1,3,41, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,11,1,4,41, + 12,6,11,4,12,9, 12,6,10,1,5,41, 12,6,10,4,12,9, 12,6,9,1,6,41, 12,6,9,4,12,9, 12,6,8,1,7,41, 12,6,8,4,12,9, 12,6,7,1,8,41, + 12,6,7,4,12,9, 12,6,6,1,9,41, 12,6,6,4,12,9, 12,6,5,1,10,41, 12,6,5,4,12,9, 12,6,4,1,11,41, 12,6,4,4,12,9, 12,6,3,1,12,41, + 12,6,3,4,12,9, 12,6,3,6,3,25, 12,4,10,1,5,43, 12,4,10,3,5,43, 12,4,10,5,12,11, 12,4,9,1,6,43, 12,4,9,3,6,43, 12,4,8,1,7,43, + 12,4,8,3,7,43, 12,4,7,1,8,43, 12,4,7,3,8,43, 12,4,6,1,9,43, 12,4,6,3,9,43, 12,4,6,6,3,27, 12,3,10,4,12,12, 12,3,10,5,12,12, + 12,3,5,3,10,44, 12,3,5,6,3,28, 12,2,9,1,6,45, 12,2,9,4,12,13, 12,2,9,5,12,13, 12,2,8,1,7,45, 12,2,8,4,12,13, 12,2,7,1,8,45, + 12,2,7,4,12,13, 12,2,6,1,9,45, 12,2,6,4,12,13, 12,2,5,1,10,45, 12,2,5,4,12,13, 12,2,5,6,3,29, 13,9,13,1,2,38, 13,9,13,3,2,38, + 13,9,13,4,13,6, 13,9,13,5,13,6, 13,9,12,1,3,38, 13,9,12,3,3,38, 13,9,11,1,4,38, 13,9,11,3,4,38, 13,9,10,1,5,38, 13,9,10,3,5,38, + 13,9,9,1,6,38, 13,9,9,3,6,38, 13,9,8,1,7,38, 13,9,8,3,7,38, 13,9,7,1,8,38, 13,9,7,3,8,38, 13,9,6,1,9,38, 13,9,6,3,9,38, + 13,9,5,1,10,38, 13,9,5,3,10,38, 13,9,4,1,11,38, 13,9,4,3,11,38, 13,9,3,1,12,38, 13,9,3,3,12,38, 13,9,2,1,13,38, 13,9,2,3,13,38, + 13,9,2,6,2,22, 13,8,12,1,3,39, 13,8,12,5,13,7, 13,8,11,1,4,39, 13,8,10,1,5,39, 13,8,9,1,6,39, 13,8,8,1,7,39, 13,8,7,1,8,39, + 13,8,6,1,9,39, 13,8,5,1,10,39, 13,8,4,1,11,39, 13,8,3,1,12,39, 13,8,2,1,13,39, 13,8,2,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, + 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,11,4,13,8, 13,7,10,1,5,40, 13,7,10,4,13,8, 13,7,9,1,6,40, 13,7,9,4,13,8, 13,7,8,1,7,40, + 13,7,8,4,13,8, 13,7,7,1,8,40, 13,7,7,4,13,8, 13,7,6,1,9,40, 13,7,6,4,13,8, 13,7,5,1,10,40, 13,7,5,4,13,8, 13,7,4,1,11,40, + 13,7,4,4,13,8, 13,7,3,1,12,40, 13,7,3,4,13,8, 13,7,2,1,13,40, 13,7,2,4,13,8, 13,7,2,6,2,24, 13,3,10,1,5,44, 13,3,10,3,5,44, + 13,3,10,4,13,12, 13,3,10,5,13,12, 13,3,9,1,6,44, 13,3,9,3,6,44, 13,3,9,4,13,12, 13,3,8,1,7,44, 13,3,8,3,7,44, 13,3,8,4,13,12, + 13,3,7,1,8,44, 13,3,7,3,8,44, 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,3,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,3,10,44, + 13,3,5,4,13,12, 13,3,5,6,2,28, + }, + }, + }, +} diff --git a/assets/voxels/little_girl.lua b/assets/voxels/little_girl.lua new file mode 100644 index 0000000..f2ae12d --- /dev/null +++ b/assets/voxels/little_girl.lua @@ -0,0 +1,257 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "little_girl" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "little_girl", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1146, + count = 896, + faces = { + 2,9,13,2,2,38, 2,9,13,3,2,38, 2,9,13,4,2,6, 2,9,13,5,2,6, 2,9,12,2,3,38, 2,9,12,3,3,38, 2,9,11,2,4,38, 2,9,11,3,4,38, + 2,9,10,2,5,38, 2,9,10,3,5,38, 2,9,9,2,6,38, 2,9,9,3,6,38, 2,9,8,2,7,38, 2,9,8,3,7,38, 2,9,7,2,8,38, 2,9,7,3,8,38, + 2,9,6,2,9,38, 2,9,6,3,9,38, 2,9,5,2,10,38, 2,9,5,3,10,38, 2,9,4,2,11,38, 2,9,4,3,11,38, 2,9,3,2,12,38, 2,9,3,3,12,38, + 2,9,2,2,13,38, 2,9,2,3,13,38, 2,9,2,6,13,22, 2,8,12,2,3,39, 2,8,12,5,2,7, 2,8,11,2,4,39, 2,8,10,2,5,39, 2,8,9,2,6,39, + 2,8,8,2,7,39, 2,8,7,2,8,39, 2,8,6,2,9,39, 2,8,5,2,10,39, 2,8,4,2,11,39, 2,8,3,2,12,39, 2,8,2,2,13,39, 2,8,2,6,13,23, + 2,7,12,2,3,40, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, + 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, 2,7,2,2,13,40, 2,7,2,4,2,8, 2,7,2,6,13,24, 2,6,12,2,3,41, 2,6,12,4,2,9, + 2,6,12,5,2,9, 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,10,2,5,41, 2,6,10,4,2,9, 2,6,9,2,6,41, 2,6,9,4,2,9, 2,6,8,2,7,41, + 2,6,8,4,2,9, 2,6,7,2,8,41, 2,6,7,4,2,9, 2,6,6,2,9,41, 2,6,6,4,2,9, 2,6,5,2,10,41, 2,6,5,4,2,9, 2,6,4,2,11,41, + 2,6,4,4,2,9, 2,6,3,2,12,41, 2,6,3,4,2,9, 2,6,3,6,13,25, 2,3,10,2,5,44, 2,3,10,3,5,44, 2,3,10,4,2,12, 2,3,10,5,2,12, + 2,3,9,2,6,44, 2,3,9,3,6,44, 2,3,9,4,2,12, 2,3,8,2,7,44, 2,3,8,3,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,3,8,44, + 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,3,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,3,10,44, 2,3,5,4,2,12, 2,3,5,6,13,28, + 3,11,12,2,3,36, 3,11,12,3,3,36, 3,11,12,5,3,4, 3,11,11,2,4,36, 3,11,11,3,4,36, 3,11,10,2,5,36, 3,11,10,3,5,36, 3,11,9,2,6,36, + 3,11,9,3,6,36, 3,11,8,2,7,36, 3,11,8,3,7,36, 3,11,7,2,8,36, 3,11,7,3,8,36, 3,11,6,2,9,36, 3,11,6,3,9,36, 3,11,5,2,10,36, + 3,11,5,3,10,36, 3,11,4,2,11,36, 3,11,4,3,11,36, 3,11,3,2,12,36, 3,11,3,3,12,36, 3,11,3,6,12,20, 3,10,13,2,2,37, 3,10,13,3,2,37, + 3,10,13,5,3,5, 3,10,12,2,3,37, 3,10,11,2,4,37, 3,10,10,2,5,37, 3,10,9,2,6,37, 3,10,8,2,7,37, 3,10,7,2,8,37, 3,10,6,2,9,37, + 3,10,5,2,10,37, 3,10,4,2,11,37, 3,10,3,2,12,37, 3,10,3,6,12,21, 3,9,13,4,3,6, 3,9,13,5,3,6, 3,9,2,3,13,38, 3,9,2,6,12,22, + 3,8,12,5,3,7, 3,8,2,6,12,23, 3,7,12,5,3,8, 3,7,2,4,3,8, 3,7,2,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,11,4,3,9, + 3,6,10,4,3,9, 3,6,9,4,3,9, 3,6,8,4,3,9, 3,6,7,4,3,9, 3,6,6,4,3,9, 3,6,5,4,3,9, 3,6,4,4,3,9, 3,6,3,4,3,9, + 3,6,3,6,12,25, 3,4,10,2,5,43, 3,4,10,3,5,43, 3,4,10,5,3,11, 3,4,9,2,6,43, 3,4,9,3,6,43, 3,4,8,2,7,43, 3,4,8,3,7,43, + 3,4,7,2,8,43, 3,4,7,3,8,43, 3,4,6,2,9,43, 3,4,6,3,9,43, 3,4,6,6,12,27, 3,4,3,2,12,43, 3,4,3,3,12,43, 3,4,3,4,3,11, + 3,4,3,5,3,11, 3,4,3,6,12,27, 3,3,10,4,3,12, 3,3,10,5,3,12, 3,3,5,3,10,44, 3,3,5,6,12,28, 3,2,9,2,6,45, 3,2,9,4,3,13, + 3,2,9,5,3,13, 3,2,8,2,7,45, 3,2,8,4,3,13, 3,2,7,2,8,45, 3,2,7,4,3,13, 3,2,6,2,9,45, 3,2,6,4,3,13, 3,2,5,2,10,45, + 3,2,5,4,3,13, 3,2,4,2,11,45, 3,2,4,3,11,45, 3,2,4,4,3,13, 3,2,4,6,12,29, 4,12,11,2,4,35, 4,12,11,3,4,35, 4,12,11,5,4,3, + 4,12,10,2,5,35, 4,12,10,3,5,35, 4,12,9,2,6,35, 4,12,9,3,6,35, 4,12,8,2,7,35, 4,12,8,3,7,35, 4,12,7,2,8,35, 4,12,7,3,8,35, + 4,12,6,2,9,35, 4,12,6,3,9,35, 4,12,5,2,10,35, 4,12,5,3,10,35, 4,12,4,2,11,35, 4,12,4,3,11,35, 4,12,4,6,11,19, 4,11,12,3,3,36, + 4,11,12,5,4,4, 4,11,3,3,12,36, 4,11,3,6,11,20, 4,10,13,3,2,37, 4,10,13,5,4,5, 4,10,3,6,11,21, 4,9,13,4,4,6, 4,9,13,5,4,6, + 4,9,2,3,13,38, 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,2,6,11,23, 4,7,12,5,4,8, 4,7,2,4,4,8, 4,7,2,6,11,24, 4,6,12,4,4,9, + 4,6,12,5,4,9, 4,6,3,6,11,25, 4,5,11,2,4,42, 4,5,11,4,4,10, 4,5,11,5,4,10, 4,5,10,2,5,42, 4,5,9,2,6,42, 4,5,8,2,7,42, + 4,5,7,2,8,42, 4,5,6,2,9,42, 4,5,5,2,10,42, 4,5,5,4,4,10, 4,5,4,2,11,42, 4,5,4,4,4,10, 4,5,3,2,12,42, 4,5,3,6,11,26, + 4,4,10,5,4,11, 4,4,6,6,11,27, 4,4,3,4,4,11, 4,4,3,5,4,11, 4,4,3,6,11,27, 4,3,10,4,4,12, 4,3,10,5,4,12, 4,3,5,3,10,44, + 4,3,5,6,11,28, 4,2,9,5,4,13, 4,2,4,3,11,45, 4,2,4,4,4,13, 4,2,4,6,11,29, 4,1,10,2,5,46, 4,1,10,3,5,46, 4,1,10,4,4,14, + 4,1,10,5,4,14, 4,1,9,2,6,46, 4,1,9,4,4,14, 4,1,8,2,7,46, 4,1,8,4,4,14, 4,1,7,2,8,46, 4,1,7,4,4,14, 4,1,6,2,9,46, + 4,1,6,4,4,14, 4,1,5,2,10,46, 4,1,5,4,4,14, 4,1,5,6,11,30, 5,12,11,3,4,35, 5,12,11,5,5,3, 5,12,10,3,5,35, 5,12,9,3,6,35, + 5,12,8,3,7,35, 5,12,7,3,8,35, 5,12,6,3,9,35, 5,12,5,3,10,35, 5,12,4,3,11,35, 5,12,4,6,10,19, 5,11,12,3,3,36, 5,11,12,5,5,4, + 5,11,3,3,12,36, 5,11,3,6,10,20, 5,10,13,3,2,37, 5,10,13,5,5,5, 5,10,3,6,10,21, 5,9,13,4,5,6, 5,9,13,5,5,6, 5,9,2,3,13,38, + 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,2,6,10,23, 5,7,12,5,5,8, 5,7,2,4,5,8, 5,7,2,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, + 5,6,3,6,10,25, 5,5,11,4,5,10, 5,5,11,5,5,10, 5,5,5,4,5,10, 5,5,4,4,5,10, 5,5,3,6,10,26, 5,4,10,5,5,11, 5,4,6,6,10,27, + 5,4,3,4,5,11, 5,4,3,5,5,11, 5,4,3,6,10,27, 5,3,10,4,5,12, 5,3,10,5,5,12, 5,3,5,3,10,44, 5,3,5,6,10,28, 5,2,9,5,5,13, + 5,2,4,3,11,45, 5,2,4,4,5,13, 5,2,4,6,10,29, 5,1,10,3,5,46, 5,1,10,4,5,14, 5,1,10,5,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, + 5,0,9,2,6,47, 5,0,9,5,5,15, 5,0,8,2,7,47, 5,0,7,2,8,47, 5,0,6,2,9,47, 5,0,6,6,10,31, 6,13,9,2,6,34, 6,13,9,3,6,34, + 6,13,9,5,6,2, 6,13,8,2,7,34, 6,13,8,3,7,34, 6,13,7,2,8,34, 6,13,7,3,8,34, 6,13,6,2,9,34, 6,13,6,3,9,34, 6,13,6,6,9,18, + 6,12,11,3,4,35, 6,12,11,5,6,3, 6,12,10,3,5,35, 6,12,5,3,10,35, 6,12,4,3,11,35, 6,12,4,6,9,19, 6,11,12,3,3,36, 6,11,12,5,6,4, + 6,11,3,3,12,36, 6,11,3,6,9,20, 6,10,13,3,2,37, 6,10,13,5,6,5, 6,10,3,6,9,21, 6,9,13,4,6,6, 6,9,13,5,6,6, 6,9,2,3,13,38, + 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,2,6,9,23, 6,7,12,5,6,8, 6,7,2,4,6,8, 6,7,2,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, + 6,6,3,6,9,25, 6,5,11,4,6,10, 6,5,11,5,6,10, 6,5,5,4,6,10, 6,5,4,4,6,10, 6,5,3,6,9,26, 6,4,10,5,6,11, 6,4,6,6,9,27, + 6,4,3,4,6,11, 6,4,3,5,6,11, 6,4,3,6,9,27, 6,3,10,4,6,12, 6,3,10,5,6,12, 6,3,5,3,10,44, 6,3,5,6,9,28, 6,2,9,5,6,13, + 6,2,4,3,11,45, 6,2,4,4,6,13, 6,2,4,6,9,29, 6,1,10,3,5,46, 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, + 6,0,9,1,6,47, 6,0,9,5,6,15, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,13,9,3,6,34, 7,13,9,5,7,2, + 7,13,8,3,7,34, 7,13,7,3,8,34, 7,13,6,3,9,34, 7,13,6,6,8,18, 7,12,11,3,4,35, 7,12,11,5,7,3, 7,12,10,3,5,35, 7,12,5,3,10,35, + 7,12,4,3,11,35, 7,12,4,6,8,19, 7,11,12,3,3,36, 7,11,12,5,7,4, 7,11,3,3,12,36, 7,11,3,6,8,20, 7,10,13,3,2,37, 7,10,13,5,7,5, + 7,10,3,6,8,21, 7,9,13,4,7,6, 7,9,13,5,7,6, 7,9,2,3,13,38, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,2,6,8,23, 7,7,12,5,7,8, + 7,7,2,4,7,8, 7,7,2,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,3,6,8,25, 7,5,11,4,7,10, 7,5,11,5,7,10, 7,5,5,4,7,10, + 7,5,4,4,7,10, 7,5,3,6,8,26, 7,4,10,5,7,11, 7,4,6,6,8,27, 7,4,3,4,7,11, 7,4,3,5,7,11, 7,4,3,6,8,27, 7,3,10,4,7,12, + 7,3,10,5,7,12, 7,3,5,3,10,44, 7,3,5,6,8,28, 7,2,9,5,7,13, 7,2,4,3,11,45, 7,2,4,4,7,13, 7,2,4,6,8,29, 7,1,10,3,5,46, + 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, + 8,13,9,3,6,34, 8,13,9,5,8,2, 8,13,8,3,7,34, 8,13,7,3,8,34, 8,13,6,3,9,34, 8,13,6,6,7,18, 8,12,11,3,4,35, 8,12,11,5,8,3, + 8,12,10,3,5,35, 8,12,5,3,10,35, 8,12,4,3,11,35, 8,12,4,6,7,19, 8,11,12,3,3,36, 8,11,12,5,8,4, 8,11,3,3,12,36, 8,11,3,6,7,20, + 8,10,13,3,2,37, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,4,8,6, 8,9,13,5,8,6, 8,9,2,3,13,38, 8,9,2,6,7,22, 8,8,12,5,8,7, + 8,8,2,6,7,23, 8,7,12,5,8,8, 8,7,2,4,8,8, 8,7,2,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,3,6,7,25, 8,5,11,4,8,10, + 8,5,11,5,8,10, 8,5,5,4,8,10, 8,5,4,4,8,10, 8,5,3,6,7,26, 8,4,10,5,8,11, 8,4,6,6,7,27, 8,4,3,4,8,11, 8,4,3,5,8,11, + 8,4,3,6,7,27, 8,3,10,4,8,12, 8,3,10,5,8,12, 8,3,5,3,10,44, 8,3,5,6,7,28, 8,2,9,5,8,13, 8,2,4,3,11,45, 8,2,4,4,8,13, + 8,2,4,6,7,29, 8,1,10,3,5,46, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, + 8,1,5,4,8,14, 8,1,5,6,7,30, 9,13,9,1,6,34, 9,13,9,3,6,34, 9,13,9,5,9,2, 9,13,8,1,7,34, 9,13,8,3,7,34, 9,13,7,1,8,34, + 9,13,7,3,8,34, 9,13,6,1,9,34, 9,13,6,3,9,34, 9,13,6,6,6,18, 9,12,11,3,4,35, 9,12,11,5,9,3, 9,12,10,3,5,35, 9,12,5,3,10,35, + 9,12,4,3,11,35, 9,12,4,6,6,19, 9,11,12,3,3,36, 9,11,12,5,9,4, 9,11,3,3,12,36, 9,11,3,6,6,20, 9,10,13,3,2,37, 9,10,13,5,9,5, + 9,10,3,6,6,21, 9,9,13,4,9,6, 9,9,13,5,9,6, 9,9,2,3,13,38, 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,2,6,6,23, 9,7,12,5,9,8, + 9,7,2,4,9,8, 9,7,2,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,3,6,6,25, 9,5,11,4,9,10, 9,5,11,5,9,10, 9,5,5,4,9,10, + 9,5,4,4,9,10, 9,5,3,6,6,26, 9,4,10,5,9,11, 9,4,6,6,6,27, 9,4,3,4,9,11, 9,4,3,5,9,11, 9,4,3,6,6,27, 9,3,10,4,9,12, + 9,3,10,5,9,12, 9,3,5,3,10,44, 9,3,5,6,6,28, 9,2,9,5,9,13, 9,2,4,3,11,45, 9,2,4,4,9,13, 9,2,4,6,6,29, 9,1,10,3,5,46, + 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,9,2,6,47, 9,0,9,5,9,15, 9,0,8,2,7,47, 9,0,7,2,8,47, + 9,0,6,2,9,47, 9,0,6,6,6,31, 10,12,11,3,4,35, 10,12,11,5,10,3, 10,12,10,3,5,35, 10,12,9,3,6,35, 10,12,8,3,7,35, 10,12,7,3,8,35, + 10,12,6,3,9,35, 10,12,5,3,10,35, 10,12,4,3,11,35, 10,12,4,6,5,19, 10,11,12,3,3,36, 10,11,12,5,10,4, 10,11,3,3,12,36, 10,11,3,6,5,20, + 10,10,13,3,2,37, 10,10,13,5,10,5, 10,10,3,6,5,21, 10,9,13,4,10,6, 10,9,13,5,10,6, 10,9,2,3,13,38, 10,9,2,6,5,22, 10,8,12,5,10,7, + 10,8,2,6,5,23, 10,7,12,5,10,8, 10,7,2,4,10,8, 10,7,2,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,3,6,5,25, 10,5,11,4,10,10, + 10,5,11,5,10,10, 10,5,5,4,10,10, 10,5,4,4,10,10, 10,5,3,6,5,26, 10,4,10,5,10,11, 10,4,6,6,5,27, 10,4,3,4,10,11, 10,4,3,5,10,11, + 10,4,3,6,5,27, 10,3,10,4,10,12, 10,3,10,5,10,12, 10,3,5,3,10,44, 10,3,5,6,5,28, 10,2,9,5,10,13, 10,2,4,3,11,45, 10,2,4,4,10,13, + 10,2,4,6,5,29, 10,1,10,3,5,46, 10,1,10,4,10,14, 10,1,10,5,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,9,1,6,47, 10,0,9,5,10,15, + 10,0,8,1,7,47, 10,0,7,1,8,47, 10,0,6,1,9,47, 10,0,6,6,5,31, 11,12,11,1,4,35, 11,12,11,3,4,35, 11,12,11,5,11,3, 11,12,10,1,5,35, + 11,12,10,3,5,35, 11,12,9,1,6,35, 11,12,9,3,6,35, 11,12,8,1,7,35, 11,12,8,3,7,35, 11,12,7,1,8,35, 11,12,7,3,8,35, 11,12,6,1,9,35, + 11,12,6,3,9,35, 11,12,5,1,10,35, 11,12,5,3,10,35, 11,12,4,1,11,35, 11,12,4,3,11,35, 11,12,4,6,4,19, 11,11,12,3,3,36, 11,11,12,5,11,4, + 11,11,3,3,12,36, 11,11,3,6,4,20, 11,10,13,3,2,37, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,4,11,6, 11,9,13,5,11,6, 11,9,2,3,13,38, + 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,2,6,4,23, 11,7,12,5,11,8, 11,7,2,4,11,8, 11,7,2,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, + 11,6,3,6,4,25, 11,5,11,1,4,42, 11,5,11,4,11,10, 11,5,11,5,11,10, 11,5,10,1,5,42, 11,5,9,1,6,42, 11,5,8,1,7,42, 11,5,7,1,8,42, + 11,5,6,1,9,42, 11,5,5,1,10,42, 11,5,5,4,11,10, 11,5,4,1,11,42, 11,5,4,4,11,10, 11,5,3,1,12,42, 11,5,3,6,4,26, 11,4,10,5,11,11, + 11,4,6,6,4,27, 11,4,3,4,11,11, 11,4,3,5,11,11, 11,4,3,6,4,27, 11,3,10,4,11,12, 11,3,10,5,11,12, 11,3,5,3,10,44, 11,3,5,6,4,28, + 11,2,9,5,11,13, 11,2,4,3,11,45, 11,2,4,4,11,13, 11,2,4,6,4,29, 11,1,10,1,5,46, 11,1,10,3,5,46, 11,1,10,4,11,14, 11,1,10,5,11,14, + 11,1,9,1,6,46, 11,1,9,4,11,14, 11,1,8,1,7,46, 11,1,8,4,11,14, 11,1,7,1,8,46, 11,1,7,4,11,14, 11,1,6,1,9,46, 11,1,6,4,11,14, + 11,1,5,1,10,46, 11,1,5,4,11,14, 11,1,5,6,4,30, 12,11,12,1,3,36, 12,11,12,3,3,36, 12,11,12,5,12,4, 12,11,11,1,4,36, 12,11,11,3,4,36, + 12,11,10,1,5,36, 12,11,10,3,5,36, 12,11,9,1,6,36, 12,11,9,3,6,36, 12,11,8,1,7,36, 12,11,8,3,7,36, 12,11,7,1,8,36, 12,11,7,3,8,36, + 12,11,6,1,9,36, 12,11,6,3,9,36, 12,11,5,1,10,36, 12,11,5,3,10,36, 12,11,4,1,11,36, 12,11,4,3,11,36, 12,11,3,1,12,36, 12,11,3,3,12,36, + 12,11,3,6,3,20, 12,10,13,1,2,37, 12,10,13,3,2,37, 12,10,13,5,12,5, 12,10,12,1,3,37, 12,10,11,1,4,37, 12,10,10,1,5,37, 12,10,9,1,6,37, + 12,10,8,1,7,37, 12,10,7,1,8,37, 12,10,6,1,9,37, 12,10,5,1,10,37, 12,10,4,1,11,37, 12,10,3,1,12,37, 12,10,3,6,3,21, 12,9,13,4,12,6, + 12,9,13,5,12,6, 12,9,2,3,13,38, 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,2,6,3,23, 12,7,12,5,12,8, 12,7,2,4,12,8, 12,7,2,6,3,24, + 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,11,4,12,9, 12,6,10,4,12,9, 12,6,9,4,12,9, 12,6,8,4,12,9, 12,6,7,4,12,9, 12,6,6,4,12,9, + 12,6,5,4,12,9, 12,6,4,4,12,9, 12,6,3,4,12,9, 12,6,3,6,3,25, 12,4,10,1,5,43, 12,4,10,3,5,43, 12,4,10,5,12,11, 12,4,9,1,6,43, + 12,4,9,3,6,43, 12,4,8,1,7,43, 12,4,8,3,7,43, 12,4,7,1,8,43, 12,4,7,3,8,43, 12,4,6,1,9,43, 12,4,6,3,9,43, 12,4,6,6,3,27, + 12,4,3,1,12,43, 12,4,3,3,12,43, 12,4,3,4,12,11, 12,4,3,5,12,11, 12,4,3,6,3,27, 12,3,10,4,12,12, 12,3,10,5,12,12, 12,3,5,3,10,44, + 12,3,5,6,3,28, 12,2,9,1,6,45, 12,2,9,4,12,13, 12,2,9,5,12,13, 12,2,8,1,7,45, 12,2,8,4,12,13, 12,2,7,1,8,45, 12,2,7,4,12,13, + 12,2,6,1,9,45, 12,2,6,4,12,13, 12,2,5,1,10,45, 12,2,5,4,12,13, 12,2,4,1,11,45, 12,2,4,3,11,45, 12,2,4,4,12,13, 12,2,4,6,3,29, + 13,9,13,1,2,38, 13,9,13,3,2,38, 13,9,13,4,13,6, 13,9,13,5,13,6, 13,9,12,1,3,38, 13,9,12,3,3,38, 13,9,11,1,4,38, 13,9,11,3,4,38, + 13,9,10,1,5,38, 13,9,10,3,5,38, 13,9,9,1,6,38, 13,9,9,3,6,38, 13,9,8,1,7,38, 13,9,8,3,7,38, 13,9,7,1,8,38, 13,9,7,3,8,38, + 13,9,6,1,9,38, 13,9,6,3,9,38, 13,9,5,1,10,38, 13,9,5,3,10,38, 13,9,4,1,11,38, 13,9,4,3,11,38, 13,9,3,1,12,38, 13,9,3,3,12,38, + 13,9,2,1,13,38, 13,9,2,3,13,38, 13,9,2,6,2,22, 13,8,12,1,3,39, 13,8,12,5,13,7, 13,8,11,1,4,39, 13,8,10,1,5,39, 13,8,9,1,6,39, + 13,8,8,1,7,39, 13,8,7,1,8,39, 13,8,6,1,9,39, 13,8,5,1,10,39, 13,8,4,1,11,39, 13,8,3,1,12,39, 13,8,2,1,13,39, 13,8,2,6,2,23, + 13,7,12,1,3,40, 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, + 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, 13,7,2,1,13,40, 13,7,2,4,13,8, 13,7,2,6,2,24, 13,6,12,1,3,41, 13,6,12,4,13,9, + 13,6,12,5,13,9, 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,10,1,5,41, 13,6,10,4,13,9, 13,6,9,1,6,41, 13,6,9,4,13,9, 13,6,8,1,7,41, + 13,6,8,4,13,9, 13,6,7,1,8,41, 13,6,7,4,13,9, 13,6,6,1,9,41, 13,6,6,4,13,9, 13,6,5,1,10,41, 13,6,5,4,13,9, 13,6,4,1,11,41, + 13,6,4,4,13,9, 13,6,3,1,12,41, 13,6,3,4,13,9, 13,6,3,6,2,25, 13,3,10,1,5,44, 13,3,10,3,5,44, 13,3,10,4,13,12, 13,3,10,5,13,12, + 13,3,9,1,6,44, 13,3,9,3,6,44, 13,3,9,4,13,12, 13,3,8,1,7,44, 13,3,8,3,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, 13,3,7,3,8,44, + 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,3,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,3,10,44, 13,3,5,4,13,12, 13,3,5,6,2,28, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1174, + count = 904, + faces = { + 2,8,13,2,2,87, 2,8,13,3,2,87, 2,8,13,4,2,55, 2,8,13,5,2,55, 2,8,12,2,3,87, 2,8,12,3,3,87, 2,8,11,2,4,87, 2,8,11,3,4,87, + 2,8,10,2,5,87, 2,8,10,3,5,87, 2,8,9,2,6,87, 2,8,9,3,6,87, 2,8,8,2,7,87, 2,8,8,3,7,87, 2,8,7,2,8,87, 2,8,7,3,8,87, + 2,8,6,2,9,87, 2,8,6,3,9,87, 2,8,5,2,10,87, 2,8,5,3,10,87, 2,8,4,2,11,87, 2,8,4,3,11,87, 2,8,3,2,12,87, 2,8,3,3,12,87, + 2,8,2,2,13,87, 2,8,2,3,13,87, 2,8,2,6,13,71, 2,7,12,2,3,88, 2,7,12,5,2,56, 2,7,11,2,4,88, 2,7,10,2,5,88, 2,7,9,2,6,88, + 2,7,8,2,7,88, 2,7,7,2,8,88, 2,7,6,2,9,88, 2,7,5,2,10,88, 2,7,4,2,11,88, 2,7,3,2,12,88, 2,7,2,2,13,88, 2,7,2,6,13,72, + 2,6,12,2,3,89, 2,6,12,5,2,57, 2,6,11,2,4,89, 2,6,10,2,5,89, 2,6,9,2,6,89, 2,6,8,2,7,89, 2,6,7,2,8,89, 2,6,6,2,9,89, + 2,6,5,2,10,89, 2,6,4,2,11,89, 2,6,3,2,12,89, 2,6,2,2,13,89, 2,6,2,4,2,57, 2,6,2,6,13,73, 2,5,12,2,3,90, 2,5,12,4,2,58, + 2,5,12,5,2,58, 2,5,11,2,4,90, 2,5,11,4,2,58, 2,5,10,2,5,90, 2,5,10,4,2,58, 2,5,9,2,6,90, 2,5,9,4,2,58, 2,5,8,2,7,90, + 2,5,8,4,2,58, 2,5,7,2,8,90, 2,5,7,4,2,58, 2,5,6,2,9,90, 2,5,6,4,2,58, 2,5,5,2,10,90, 2,5,5,4,2,58, 2,5,4,2,11,90, + 2,5,4,4,2,58, 2,5,3,2,12,90, 2,5,3,4,2,58, 2,5,3,6,13,74, 2,2,12,2,3,93, 2,2,12,3,3,93, 2,2,12,4,13,77, 2,2,12,5,13,77, + 2,2,11,2,4,93, 2,2,11,3,4,93, 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,3,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,3,6,93, + 2,2,9,4,13,77, 2,2,8,2,7,93, 2,2,8,3,7,93, 2,2,8,4,13,77, 2,2,7,2,8,93, 2,2,7,3,8,93, 2,2,7,4,13,77, 2,2,6,2,9,93, + 2,2,6,3,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,3,10,93, 2,2,5,4,13,77, 2,2,4,2,11,93, 2,2,4,3,11,93, 2,2,4,4,13,77, + 2,2,4,6,13,77, 3,10,12,2,3,85, 3,10,12,3,3,85, 3,10,12,5,3,53, 3,10,11,2,4,85, 3,10,11,3,4,85, 3,10,10,2,5,85, 3,10,10,3,5,85, + 3,10,9,2,6,85, 3,10,9,3,6,85, 3,10,8,2,7,85, 3,10,8,3,7,85, 3,10,7,2,8,85, 3,10,7,3,8,85, 3,10,6,2,9,85, 3,10,6,3,9,85, + 3,10,5,2,10,85, 3,10,5,3,10,85, 3,10,4,2,11,85, 3,10,4,3,11,85, 3,10,3,2,12,85, 3,10,3,3,12,85, 3,10,3,6,12,69, 3,9,13,2,2,86, + 3,9,13,3,2,86, 3,9,13,5,3,54, 3,9,12,2,3,86, 3,9,11,2,4,86, 3,9,10,2,5,86, 3,9,9,2,6,86, 3,9,8,2,7,86, 3,9,7,2,8,86, + 3,9,6,2,9,86, 3,9,5,2,10,86, 3,9,4,2,11,86, 3,9,3,2,12,86, 3,9,3,6,12,70, 3,8,13,4,3,55, 3,8,13,5,3,55, 3,8,2,3,13,87, + 3,8,2,6,12,71, 3,7,12,5,3,56, 3,7,2,6,12,72, 3,6,12,5,3,57, 3,6,2,4,3,57, 3,6,2,6,12,73, 3,5,12,4,3,58, 3,5,12,5,3,58, + 3,5,11,4,3,58, 3,5,10,4,3,58, 3,5,9,4,3,58, 3,5,8,4,3,58, 3,5,7,4,3,58, 3,5,6,4,3,58, 3,5,5,4,3,58, 3,5,4,4,3,58, + 3,5,3,4,3,58, 3,5,3,6,12,74, 3,3,11,2,4,92, 3,3,11,3,4,92, 3,3,11,5,3,60, 3,3,10,2,5,92, 3,3,10,3,5,92, 3,3,9,2,6,92, + 3,3,9,3,6,92, 3,3,8,2,7,92, 3,3,8,3,7,92, 3,3,7,2,8,92, 3,3,7,3,8,92, 3,3,6,2,9,92, 3,3,6,3,9,92, 3,3,6,6,12,76, + 3,3,3,2,12,92, 3,3,3,3,12,92, 3,3,3,4,3,60, 3,3,3,5,3,60, 3,3,3,6,12,76, 3,2,12,3,3,93, 3,2,12,4,12,77, 3,2,12,5,12,77, + 3,2,5,3,10,93, 3,2,4,3,11,93, 3,2,4,6,12,77, 3,1,11,2,4,94, 3,1,11,4,12,78, 3,1,11,5,12,78, 3,1,10,2,5,94, 3,1,10,4,12,78, + 3,1,9,2,6,94, 3,1,9,4,12,78, 3,1,8,2,7,94, 3,1,8,4,12,78, 3,1,7,2,8,94, 3,1,7,4,12,78, 3,1,6,2,9,94, 3,1,6,4,12,78, + 3,1,5,2,10,94, 3,1,5,4,12,78, 3,1,4,2,11,94, 3,1,4,4,12,78, 3,1,4,6,12,78, 4,11,11,2,4,84, 4,11,11,3,4,84, 4,11,11,5,4,52, + 4,11,10,2,5,84, 4,11,10,3,5,84, 4,11,9,2,6,84, 4,11,9,3,6,84, 4,11,8,2,7,84, 4,11,8,3,7,84, 4,11,7,2,8,84, 4,11,7,3,8,84, + 4,11,6,2,9,84, 4,11,6,3,9,84, 4,11,5,2,10,84, 4,11,5,3,10,84, 4,11,4,2,11,84, 4,11,4,3,11,84, 4,11,4,6,11,68, 4,10,12,3,3,85, + 4,10,12,5,4,53, 4,10,3,3,12,85, 4,10,3,6,11,69, 4,9,13,3,2,86, 4,9,13,5,4,54, 4,9,3,6,11,70, 4,8,13,4,4,55, 4,8,13,5,4,55, + 4,8,2,3,13,87, 4,8,2,6,11,71, 4,7,12,5,4,56, 4,7,2,6,11,72, 4,6,12,5,4,57, 4,6,2,4,4,57, 4,6,2,6,11,73, 4,5,12,4,4,58, + 4,5,12,5,4,58, 4,5,3,6,11,74, 4,4,11,2,4,91, 4,4,11,5,4,59, 4,4,10,2,5,91, 4,4,9,2,6,91, 4,4,8,2,7,91, 4,4,7,2,8,91, + 4,4,6,2,9,91, 4,4,5,2,10,91, 4,4,5,4,4,59, 4,4,4,2,11,91, 4,4,4,4,4,59, 4,4,3,2,12,91, 4,4,3,6,11,75, 4,3,11,5,4,60, + 4,3,6,6,11,76, 4,3,3,4,4,60, 4,3,3,5,4,60, 4,3,3,6,11,76, 4,2,12,3,3,93, 4,2,12,4,4,61, 4,2,12,5,4,61, 4,2,5,3,10,93, + 4,2,4,3,11,93, 4,2,4,6,11,77, 4,1,11,4,4,62, 4,1,11,5,4,62, 4,1,10,4,4,62, 4,1,9,4,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, + 4,1,6,4,4,62, 4,1,5,4,4,62, 4,1,4,4,4,62, 4,1,4,6,11,78, 5,11,11,3,4,84, 5,11,11,5,5,52, 5,11,10,3,5,84, 5,11,9,3,6,84, + 5,11,8,3,7,84, 5,11,7,3,8,84, 5,11,6,3,9,84, 5,11,5,3,10,84, 5,11,4,3,11,84, 5,11,4,6,10,68, 5,10,12,3,3,85, 5,10,12,5,5,53, + 5,10,3,3,12,85, 5,10,3,6,10,69, 5,9,13,3,2,86, 5,9,13,5,5,54, 5,9,3,6,10,70, 5,8,13,4,5,55, 5,8,13,5,5,55, 5,8,2,3,13,87, + 5,8,2,6,10,71, 5,7,12,5,5,56, 5,7,2,6,10,72, 5,6,12,5,5,57, 5,6,2,4,5,57, 5,6,2,6,10,73, 5,5,12,4,5,58, 5,5,12,5,5,58, + 5,5,3,6,10,74, 5,4,11,5,5,59, 5,4,5,4,5,59, 5,4,4,4,5,59, 5,4,3,6,10,75, 5,3,11,5,5,60, 5,3,6,6,10,76, 5,3,3,4,5,60, + 5,3,3,5,5,60, 5,3,3,6,10,76, 5,2,12,3,3,93, 5,2,12,4,5,61, 5,2,12,5,5,61, 5,2,5,3,10,93, 5,2,4,3,11,93, 5,2,4,6,10,77, + 5,1,11,4,5,62, 5,1,11,5,5,62, 5,1,9,4,5,62, 5,1,6,4,5,62, 5,1,4,4,5,62, 5,1,4,6,10,78, 5,0,10,2,5,95, 5,0,10,5,5,63, + 5,0,10,6,5,63, 5,0,8,2,7,95, 5,0,8,5,5,63, 5,0,7,2,8,95, 5,0,7,6,5,63, 5,0,5,2,10,95, 5,0,5,5,5,63, 5,0,5,6,5,63, + 6,12,9,2,6,83, 6,12,9,3,6,83, 6,12,9,5,6,51, 6,12,8,2,7,83, 6,12,8,3,7,83, 6,12,7,2,8,83, 6,12,7,3,8,83, 6,12,6,2,9,83, + 6,12,6,3,9,83, 6,12,6,6,9,67, 6,11,11,3,4,84, 6,11,11,5,6,52, 6,11,10,3,5,84, 6,11,5,3,10,84, 6,11,4,3,11,84, 6,11,4,6,9,68, + 6,10,12,3,3,85, 6,10,12,5,6,53, 6,10,3,3,12,85, 6,10,3,6,9,69, 6,9,13,3,2,86, 6,9,13,5,6,54, 6,9,3,6,9,70, 6,8,13,4,6,55, + 6,8,13,5,6,55, 6,8,2,3,13,87, 6,8,2,6,9,71, 6,7,12,5,6,56, 6,7,2,6,9,72, 6,6,12,5,6,57, 6,6,2,4,6,57, 6,6,2,6,9,73, + 6,5,12,4,6,58, 6,5,12,5,6,58, 6,5,3,6,9,74, 6,4,11,5,6,59, 6,4,5,4,6,59, 6,4,4,4,6,59, 6,4,3,6,9,75, 6,3,11,5,6,60, + 6,3,6,6,9,76, 6,3,3,4,6,60, 6,3,3,5,6,60, 6,3,3,6,9,76, 6,2,12,3,3,93, 6,2,12,4,6,61, 6,2,12,5,6,61, 6,2,5,3,10,93, + 6,2,4,3,11,93, 6,2,4,6,9,77, 6,1,11,4,6,62, 6,1,11,5,6,62, 6,1,9,4,6,62, 6,1,6,4,6,62, 6,1,4,4,6,62, 6,1,4,6,9,78, + 6,0,10,1,5,95, 6,0,10,5,6,63, 6,0,10,6,6,63, 6,0,8,1,7,95, 6,0,8,5,6,63, 6,0,7,1,8,95, 6,0,7,6,6,63, 6,0,5,1,10,95, + 6,0,5,5,6,63, 6,0,5,6,6,63, 7,12,9,3,6,83, 7,12,9,5,7,51, 7,12,8,3,7,83, 7,12,7,3,8,83, 7,12,6,3,9,83, 7,12,6,6,8,67, + 7,11,11,3,4,84, 7,11,11,5,7,52, 7,11,10,3,5,84, 7,11,5,3,10,84, 7,11,4,3,11,84, 7,11,4,6,8,68, 7,10,12,3,3,85, 7,10,12,5,7,53, + 7,10,3,3,12,85, 7,10,3,6,8,69, 7,9,13,3,2,86, 7,9,13,5,7,54, 7,9,3,6,8,70, 7,8,13,4,7,55, 7,8,13,5,7,55, 7,8,2,3,13,87, + 7,8,2,6,8,71, 7,7,12,5,7,56, 7,7,2,6,8,72, 7,6,12,5,7,57, 7,6,2,4,7,57, 7,6,2,6,8,73, 7,5,12,4,7,58, 7,5,12,5,7,58, + 7,5,3,6,8,74, 7,4,11,5,7,59, 7,4,5,4,7,59, 7,4,4,4,7,59, 7,4,3,6,8,75, 7,3,11,5,7,60, 7,3,6,6,8,76, 7,3,3,4,7,60, + 7,3,3,5,7,60, 7,3,3,6,8,76, 7,2,12,3,3,93, 7,2,12,4,7,61, 7,2,12,5,7,61, 7,2,5,3,10,93, 7,2,4,3,11,93, 7,2,4,6,8,77, + 7,1,11,4,7,62, 7,1,11,5,7,62, 7,1,10,4,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, + 7,1,4,4,7,62, 7,1,4,6,8,78, 8,12,9,3,6,83, 8,12,9,5,8,51, 8,12,8,3,7,83, 8,12,7,3,8,83, 8,12,6,3,9,83, 8,12,6,6,7,67, + 8,11,11,3,4,84, 8,11,11,5,8,52, 8,11,10,3,5,84, 8,11,5,3,10,84, 8,11,4,3,11,84, 8,11,4,6,7,68, 8,10,12,3,3,85, 8,10,12,5,8,53, + 8,10,3,3,12,85, 8,10,3,6,7,69, 8,9,13,3,2,86, 8,9,13,5,8,54, 8,9,3,6,7,70, 8,8,13,4,8,55, 8,8,13,5,8,55, 8,8,2,3,13,87, + 8,8,2,6,7,71, 8,7,12,5,8,56, 8,7,2,6,7,72, 8,6,12,5,8,57, 8,6,2,4,8,57, 8,6,2,6,7,73, 8,5,12,4,8,58, 8,5,12,5,8,58, + 8,5,3,6,7,74, 8,4,11,5,8,59, 8,4,5,4,8,59, 8,4,4,4,8,59, 8,4,3,6,7,75, 8,3,11,5,8,60, 8,3,6,6,7,76, 8,3,3,4,8,60, + 8,3,3,5,8,60, 8,3,3,6,7,76, 8,2,12,3,3,93, 8,2,12,4,8,61, 8,2,12,5,8,61, 8,2,5,3,10,93, 8,2,4,3,11,93, 8,2,4,6,7,77, + 8,1,11,4,8,62, 8,1,11,5,8,62, 8,1,10,4,8,62, 8,1,9,4,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, + 8,1,4,4,8,62, 8,1,4,6,7,78, 9,12,9,1,6,83, 9,12,9,3,6,83, 9,12,9,5,9,51, 9,12,8,1,7,83, 9,12,8,3,7,83, 9,12,7,1,8,83, + 9,12,7,3,8,83, 9,12,6,1,9,83, 9,12,6,3,9,83, 9,12,6,6,6,67, 9,11,11,3,4,84, 9,11,11,5,9,52, 9,11,10,3,5,84, 9,11,5,3,10,84, + 9,11,4,3,11,84, 9,11,4,6,6,68, 9,10,12,3,3,85, 9,10,12,5,9,53, 9,10,3,3,12,85, 9,10,3,6,6,69, 9,9,13,3,2,86, 9,9,13,5,9,54, + 9,9,3,6,6,70, 9,8,13,4,9,55, 9,8,13,5,9,55, 9,8,2,3,13,87, 9,8,2,6,6,71, 9,7,12,5,9,56, 9,7,2,6,6,72, 9,6,12,5,9,57, + 9,6,2,4,9,57, 9,6,2,6,6,73, 9,5,12,4,9,58, 9,5,12,5,9,58, 9,5,3,6,6,74, 9,4,11,5,9,59, 9,4,5,4,9,59, 9,4,4,4,9,59, + 9,4,3,6,6,75, 9,3,11,5,9,60, 9,3,6,6,6,76, 9,3,3,4,9,60, 9,3,3,5,9,60, 9,3,3,6,6,76, 9,2,12,3,3,93, 9,2,12,4,9,61, + 9,2,12,5,9,61, 9,2,5,3,10,93, 9,2,4,3,11,93, 9,2,4,6,6,77, 9,1,11,4,9,62, 9,1,11,5,9,62, 9,1,9,4,9,62, 9,1,6,4,9,62, + 9,1,4,4,9,62, 9,1,4,6,6,78, 9,0,10,2,5,95, 9,0,10,5,6,79, 9,0,10,6,6,79, 9,0,8,2,7,95, 9,0,8,5,6,79, 9,0,7,2,8,95, + 9,0,7,6,6,79, 9,0,5,2,10,95, 9,0,5,5,6,79, 9,0,5,6,6,79, 10,11,11,3,4,84, 10,11,11,5,10,52, 10,11,10,3,5,84, 10,11,9,3,6,84, + 10,11,8,3,7,84, 10,11,7,3,8,84, 10,11,6,3,9,84, 10,11,5,3,10,84, 10,11,4,3,11,84, 10,11,4,6,5,68, 10,10,12,3,3,85, 10,10,12,5,10,53, + 10,10,3,3,12,85, 10,10,3,6,5,69, 10,9,13,3,2,86, 10,9,13,5,10,54, 10,9,3,6,5,70, 10,8,13,4,10,55, 10,8,13,5,10,55, 10,8,2,3,13,87, + 10,8,2,6,5,71, 10,7,12,5,10,56, 10,7,2,6,5,72, 10,6,12,5,10,57, 10,6,2,4,10,57, 10,6,2,6,5,73, 10,5,12,4,10,58, 10,5,12,5,10,58, + 10,5,3,6,5,74, 10,4,11,5,10,59, 10,4,5,4,10,59, 10,4,4,4,10,59, 10,4,3,6,5,75, 10,3,11,5,10,60, 10,3,6,6,5,76, 10,3,3,4,10,60, + 10,3,3,5,10,60, 10,3,3,6,5,76, 10,2,12,3,3,93, 10,2,12,4,10,61, 10,2,12,5,10,61, 10,2,5,3,10,93, 10,2,4,3,11,93, 10,2,4,6,5,77, + 10,1,11,4,10,62, 10,1,11,5,10,62, 10,1,9,4,10,62, 10,1,6,4,10,62, 10,1,4,4,10,62, 10,1,4,6,5,78, 10,0,10,1,5,95, 10,0,10,5,5,79, + 10,0,10,6,5,79, 10,0,8,1,7,95, 10,0,8,5,5,79, 10,0,7,1,8,95, 10,0,7,6,5,79, 10,0,5,1,10,95, 10,0,5,5,5,79, 10,0,5,6,5,79, + 11,11,11,1,4,84, 11,11,11,3,4,84, 11,11,11,5,11,52, 11,11,10,1,5,84, 11,11,10,3,5,84, 11,11,9,1,6,84, 11,11,9,3,6,84, 11,11,8,1,7,84, + 11,11,8,3,7,84, 11,11,7,1,8,84, 11,11,7,3,8,84, 11,11,6,1,9,84, 11,11,6,3,9,84, 11,11,5,1,10,84, 11,11,5,3,10,84, 11,11,4,1,11,84, + 11,11,4,3,11,84, 11,11,4,6,4,68, 11,10,12,3,3,85, 11,10,12,5,11,53, 11,10,3,3,12,85, 11,10,3,6,4,69, 11,9,13,3,2,86, 11,9,13,5,11,54, + 11,9,3,6,4,70, 11,8,13,4,11,55, 11,8,13,5,11,55, 11,8,2,3,13,87, 11,8,2,6,4,71, 11,7,12,5,11,56, 11,7,2,6,4,72, 11,6,12,5,11,57, + 11,6,2,4,11,57, 11,6,2,6,4,73, 11,5,12,4,11,58, 11,5,12,5,11,58, 11,5,3,6,4,74, 11,4,11,5,11,59, 11,4,5,4,11,59, 11,4,4,4,11,59, + 11,4,3,6,4,75, 11,3,11,5,11,60, 11,3,6,6,4,76, 11,3,3,4,11,60, 11,3,3,5,11,60, 11,3,3,6,4,76, 11,2,12,3,3,93, 11,2,12,4,11,61, + 11,2,12,5,11,61, 11,2,5,3,10,93, 11,2,4,3,11,93, 11,2,4,6,4,77, 11,1,11,1,4,94, 11,1,11,4,11,62, 11,1,11,5,11,62, 11,1,10,1,5,94, + 11,1,10,4,11,62, 11,1,9,1,6,94, 11,1,9,4,11,62, 11,1,8,1,7,94, 11,1,8,4,11,62, 11,1,7,1,8,94, 11,1,7,4,11,62, 11,1,6,1,9,94, + 11,1,6,4,11,62, 11,1,5,1,10,94, 11,1,5,4,11,62, 11,1,4,1,11,94, 11,1,4,4,11,62, 11,1,4,6,4,78, 12,10,12,1,3,85, 12,10,12,3,3,85, + 12,10,12,5,12,53, 12,10,11,1,4,85, 12,10,11,3,4,85, 12,10,10,1,5,85, 12,10,10,3,5,85, 12,10,9,1,6,85, 12,10,9,3,6,85, 12,10,8,1,7,85, + 12,10,8,3,7,85, 12,10,7,1,8,85, 12,10,7,3,8,85, 12,10,6,1,9,85, 12,10,6,3,9,85, 12,10,5,1,10,85, 12,10,5,3,10,85, 12,10,4,1,11,85, + 12,10,4,3,11,85, 12,10,3,1,12,85, 12,10,3,3,12,85, 12,10,3,6,3,69, 12,9,13,1,2,86, 12,9,13,3,2,86, 12,9,13,5,12,54, 12,9,12,1,3,86, + 12,9,11,1,4,86, 12,9,10,1,5,86, 12,9,9,1,6,86, 12,9,8,1,7,86, 12,9,7,1,8,86, 12,9,6,1,9,86, 12,9,5,1,10,86, 12,9,4,1,11,86, + 12,9,3,1,12,86, 12,9,3,6,3,70, 12,8,13,4,12,55, 12,8,13,5,12,55, 12,8,2,3,13,87, 12,8,2,6,3,71, 12,7,12,5,12,56, 12,7,2,6,3,72, + 12,6,12,5,12,57, 12,6,2,4,12,57, 12,6,2,6,3,73, 12,5,12,4,12,58, 12,5,12,5,12,58, 12,5,3,6,3,74, 12,4,11,5,3,75, 12,4,5,4,3,75, + 12,4,4,4,3,75, 12,4,3,6,3,75, 12,3,11,1,4,92, 12,3,11,5,12,60, 12,3,10,1,5,92, 12,3,9,1,6,92, 12,3,8,1,7,92, 12,3,7,1,8,92, + 12,3,6,1,9,92, 12,3,6,6,3,76, 12,3,3,1,12,92, 12,3,3,4,12,60, 12,3,3,5,12,60, 12,3,3,6,3,76, 12,2,12,1,3,93, 12,2,12,3,3,93, + 12,2,12,4,12,61, 12,2,12,5,12,61, 12,2,11,1,4,93, 12,2,11,4,12,61, 12,2,10,1,5,93, 12,2,10,4,12,61, 12,2,9,1,6,93, 12,2,9,4,12,61, + 12,2,8,1,7,93, 12,2,8,4,12,61, 12,2,7,1,8,93, 12,2,7,4,12,61, 12,2,6,1,9,93, 12,2,6,4,12,61, 12,2,5,1,10,93, 12,2,5,3,10,93, + 12,2,5,4,12,61, 12,2,4,1,11,93, 12,2,4,3,11,93, 12,2,4,4,12,61, 12,2,4,6,12,61, 13,8,13,1,2,87, 13,8,13,3,2,87, 13,8,13,4,13,55, + 13,8,13,5,13,55, 13,8,12,1,3,87, 13,8,12,3,3,87, 13,8,11,1,4,87, 13,8,11,3,4,87, 13,8,10,1,5,87, 13,8,10,3,5,87, 13,8,9,1,6,87, + 13,8,9,3,6,87, 13,8,8,1,7,87, 13,8,8,3,7,87, 13,8,7,1,8,87, 13,8,7,3,8,87, 13,8,6,1,9,87, 13,8,6,3,9,87, 13,8,5,1,10,87, + 13,8,5,3,10,87, 13,8,4,1,11,87, 13,8,4,3,11,87, 13,8,3,1,12,87, 13,8,3,3,12,87, 13,8,2,1,13,87, 13,8,2,3,13,87, 13,8,2,6,2,71, + 13,7,12,1,3,88, 13,7,12,5,13,56, 13,7,11,1,4,88, 13,7,10,1,5,88, 13,7,9,1,6,88, 13,7,8,1,7,88, 13,7,7,1,8,88, 13,7,6,1,9,88, + 13,7,5,1,10,88, 13,7,4,1,11,88, 13,7,3,1,12,88, 13,7,2,1,13,88, 13,7,2,6,2,72, 13,6,12,1,3,89, 13,6,12,5,13,57, 13,6,11,1,4,89, + 13,6,10,1,5,89, 13,6,9,1,6,89, 13,6,8,1,7,89, 13,6,7,1,8,89, 13,6,6,1,9,89, 13,6,5,1,10,89, 13,6,4,1,11,89, 13,6,3,1,12,89, + 13,6,2,1,13,89, 13,6,2,4,13,57, 13,6,2,6,2,73, 13,5,12,1,3,90, 13,5,12,4,13,58, 13,5,12,5,13,58, 13,5,11,1,4,90, 13,5,10,1,5,90, + 13,5,9,1,6,90, 13,5,8,1,7,90, 13,5,7,1,8,90, 13,5,6,1,9,90, 13,5,5,1,10,90, 13,5,4,1,11,90, 13,5,3,1,12,90, 13,5,3,6,2,74, + 13,4,11,4,2,75, 13,4,11,5,2,75, 13,4,10,4,2,75, 13,4,9,4,2,75, 13,4,8,4,2,75, 13,4,7,4,2,75, 13,4,6,4,2,75, 13,4,5,4,2,75, + 13,4,4,4,2,75, 13,4,3,4,2,75, 13,4,3,6,2,75, 14,4,11,1,4,91, 14,4,11,3,4,91, 14,4,11,4,14,59, 14,4,11,5,14,59, 14,4,10,1,5,91, + 14,4,10,3,5,91, 14,4,10,4,14,59, 14,4,9,1,6,91, 14,4,9,3,6,91, 14,4,9,4,14,59, 14,4,8,1,7,91, 14,4,8,3,7,91, 14,4,8,4,14,59, + 14,4,7,1,8,91, 14,4,7,3,8,91, 14,4,7,4,14,59, 14,4,6,1,9,91, 14,4,6,3,9,91, 14,4,6,4,14,59, 14,4,5,1,10,91, 14,4,5,3,10,91, + 14,4,5,4,14,59, 14,4,4,1,11,91, 14,4,4,3,11,91, 14,4,4,4,14,59, 14,4,3,1,12,91, 14,4,3,3,12,91, 14,4,3,4,14,59, 14,4,3,6,1,75, + }, + }, + }, +} diff --git a/assets/voxels/lorelei.lua b/assets/voxels/lorelei.lua new file mode 100644 index 0000000..3d23062 --- /dev/null +++ b/assets/voxels/lorelei.lua @@ -0,0 +1,273 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "lorelei" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "lorelei", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1374, + count = 976, + faces = { + 2,12,14,2,1,35, 2,12,14,3,1,35, 2,12,14,5,2,3, 2,12,13,2,2,35, 2,12,13,3,2,35, 2,12,12,2,3,35, 2,12,12,3,3,35, 2,12,11,2,4,35, + 2,12,11,3,4,35, 2,12,10,2,5,35, 2,12,10,3,5,35, 2,12,9,2,6,35, 2,12,9,3,6,35, 2,12,8,2,7,35, 2,12,8,3,7,35, 2,12,7,2,8,35, + 2,12,7,3,8,35, 2,12,6,2,9,35, 2,12,6,3,9,35, 2,12,5,2,10,35, 2,12,5,3,10,35, 2,12,4,2,11,35, 2,12,4,3,11,35, 2,12,4,6,13,19, + 2,11,14,2,1,36, 2,11,14,4,2,4, 2,11,14,5,2,4, 2,11,13,2,2,36, 2,11,12,2,3,36, 2,11,11,2,4,36, 2,11,10,2,5,36, 2,11,9,2,6,36, + 2,11,8,2,7,36, 2,11,7,2,8,36, 2,11,6,2,9,36, 2,11,5,2,10,36, 2,11,4,2,11,36, 2,11,4,6,13,20, 2,10,13,2,2,37, 2,10,13,4,2,5, + 2,10,13,5,2,5, 2,10,12,2,3,37, 2,10,12,4,2,5, 2,10,11,2,4,37, 2,10,11,4,2,5, 2,10,10,2,5,37, 2,10,10,4,2,5, 2,10,9,2,6,37, + 2,10,9,4,2,5, 2,10,8,2,7,37, 2,10,8,4,2,5, 2,10,7,2,8,37, 2,10,7,4,2,5, 2,10,6,2,9,37, 2,10,6,4,2,5, 2,10,5,2,10,37, + 2,10,5,4,2,5, 2,10,4,2,11,37, 2,10,4,4,2,5, 2,10,4,6,13,21, 2,5,11,2,4,42, 2,5,11,3,4,42, 2,5,11,5,2,10, 2,5,10,2,5,42, + 2,5,10,3,5,42, 2,5,9,2,6,42, 2,5,9,3,6,42, 2,5,8,2,7,42, 2,5,8,3,7,42, 2,5,7,2,8,42, 2,5,7,3,8,42, 2,5,6,2,9,42, + 2,5,6,3,9,42, 2,5,5,2,10,42, 2,5,5,3,10,42, 2,5,4,2,11,42, 2,5,4,3,11,42, 2,5,3,2,12,42, 2,5,3,3,12,42, 2,5,2,2,13,42, + 2,5,2,3,13,42, 2,5,2,6,13,26, 2,4,11,2,4,43, 2,4,11,4,2,11, 2,4,11,5,2,11, 2,4,10,2,5,43, 2,4,10,4,2,11, 2,4,9,2,6,43, + 2,4,9,4,2,11, 2,4,8,2,7,43, 2,4,8,4,2,11, 2,4,7,2,8,43, 2,4,7,4,2,11, 2,4,6,2,9,43, 2,4,6,4,2,11, 2,4,5,2,10,43, + 2,4,5,4,2,11, 2,4,4,2,11,43, 2,4,4,4,2,11, 2,4,3,2,12,43, 2,4,3,4,2,11, 2,4,2,2,13,43, 2,4,2,4,2,11, 2,4,2,6,13,27, + 3,13,13,2,2,34, 3,13,13,3,2,34, 3,13,13,5,3,2, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, + 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, + 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,5,6,12,18, 3,12,14,3,1,35, 3,12,14,5,3,3, 3,12,4,3,11,35, 3,12,4,6,12,19, + 3,11,14,4,3,4, 3,11,14,5,3,4, 3,11,4,6,12,20, 3,10,13,5,3,5, 3,10,4,6,12,21, 3,9,13,2,2,38, 3,9,13,5,3,6, 3,9,12,2,3,38, + 3,9,11,2,4,38, 3,9,10,2,5,38, 3,9,9,2,6,38, 3,9,8,2,7,38, 3,9,7,2,8,38, 3,9,6,2,9,38, 3,9,5,2,10,38, 3,9,4,2,11,38, + 3,9,4,6,12,22, 3,8,13,2,2,39, 3,8,13,4,3,7, 3,8,13,5,3,7, 3,8,12,2,3,39, 3,8,12,4,3,7, 3,8,11,2,4,39, 3,8,11,4,3,7, + 3,8,10,2,5,39, 3,8,10,4,3,7, 3,8,9,2,6,39, 3,8,9,4,3,7, 3,8,8,2,7,39, 3,8,8,4,3,7, 3,8,7,2,8,39, 3,8,7,4,3,7, + 3,8,6,2,9,39, 3,8,6,4,3,7, 3,8,5,2,10,39, 3,8,5,4,3,7, 3,8,4,2,11,39, 3,8,4,4,3,7, 3,8,4,6,12,23, 3,6,12,2,3,41, + 3,6,12,3,3,41, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,11,2,4,41, 3,6,11,3,4,41, 3,6,10,2,5,41, 3,6,10,3,5,41, 3,6,9,2,6,41, + 3,6,9,3,6,41, 3,6,8,2,7,41, 3,6,8,3,7,41, 3,6,7,2,8,41, 3,6,7,3,8,41, 3,6,6,2,9,41, 3,6,6,3,9,41, 3,6,5,2,10,41, + 3,6,5,3,10,41, 3,6,4,2,11,41, 3,6,4,3,11,41, 3,6,3,2,12,41, 3,6,3,3,12,41, 3,6,3,6,12,25, 3,5,11,5,3,10, 3,5,2,3,13,42, + 3,5,2,6,12,26, 3,4,11,5,3,11, 3,4,5,4,3,11, 3,4,2,4,3,11, 3,4,2,6,12,27, 3,3,11,2,4,44, 3,3,11,4,3,12, 3,3,11,5,3,12, + 3,3,10,2,5,44, 3,3,10,4,3,12, 3,3,9,2,6,44, 3,3,9,4,3,12, 3,3,8,2,7,44, 3,3,8,4,3,12, 3,3,7,2,8,44, 3,3,7,4,3,12, + 3,3,6,2,9,44, 3,3,6,4,3,12, 3,3,6,6,12,28, 3,3,4,2,11,44, 3,3,4,4,3,12, 3,3,4,5,3,12, 3,3,3,2,12,44, 3,3,3,4,3,12, + 3,3,3,6,12,28, 4,14,12,2,3,33, 4,14,12,3,3,33, 4,14,12,5,4,1, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,10,2,5,33, 4,14,10,3,5,33, + 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, 4,14,6,3,9,33, + 4,14,6,6,11,17, 4,13,13,3,2,34, 4,13,13,5,4,2, 4,13,5,3,10,34, 4,13,5,6,11,18, 4,12,14,3,1,35, 4,12,14,5,4,3, 4,12,4,3,11,35, + 4,12,4,6,11,19, 4,11,14,4,4,4, 4,11,14,5,4,4, 4,11,4,6,11,20, 4,10,13,5,4,5, 4,10,4,6,11,21, 4,9,13,5,4,6, 4,9,4,6,11,22, + 4,8,13,5,4,7, 4,8,4,6,11,23, 4,7,13,2,2,40, 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,12,2,3,40, 4,7,11,2,4,40, 4,7,10,2,5,40, + 4,7,9,2,6,40, 4,7,8,2,7,40, 4,7,7,2,8,40, 4,7,6,2,9,40, 4,7,5,2,10,40, 4,7,4,2,11,40, 4,7,4,6,11,24, 4,6,12,4,4,9, + 4,6,12,5,4,9, 4,6,3,3,12,41, 4,6,3,6,11,25, 4,5,11,5,4,10, 4,5,2,3,13,42, 4,5,2,6,11,26, 4,4,11,5,4,11, 4,4,5,4,4,11, + 4,4,2,4,4,11, 4,4,2,6,11,27, 4,3,11,5,4,12, 4,3,6,6,11,28, 4,3,4,4,4,12, 4,3,4,5,4,12, 4,3,3,4,4,12, 4,3,3,6,11,28, + 4,2,11,2,4,45, 4,2,11,5,4,13, 4,2,10,2,5,45, 4,2,9,2,6,45, 4,2,8,2,7,45, 4,2,7,2,8,45, 4,2,6,2,9,45, 4,2,6,6,11,29, + 4,1,11,2,4,46, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,10,2,5,46, 4,1,10,4,4,14, 4,1,9,2,6,46, 4,1,9,4,4,14, 4,1,8,2,7,46, + 4,1,8,4,4,14, 4,1,7,2,8,46, 4,1,7,4,4,14, 4,1,6,2,9,46, 4,1,6,4,4,14, 4,1,6,6,11,30, 5,15,10,2,5,32, 5,15,10,3,5,32, + 5,15,10,5,5,0, 5,15,9,2,6,32, 5,15,9,3,6,32, 5,15,8,2,7,32, 5,15,8,3,7,32, 5,15,7,2,8,32, 5,15,7,3,8,32, 5,15,7,6,10,16, + 5,14,12,3,3,33, 5,14,12,5,5,1, 5,14,11,3,4,33, 5,14,6,3,9,33, 5,14,6,6,10,17, 5,13,13,3,2,34, 5,13,13,5,5,2, 5,13,5,3,10,34, + 5,13,5,6,10,18, 5,12,14,3,1,35, 5,12,14,5,5,3, 5,12,4,3,11,35, 5,12,4,6,10,19, 5,11,14,4,5,4, 5,11,14,5,5,4, 5,11,4,6,10,20, + 5,10,13,5,5,5, 5,10,4,6,10,21, 5,9,13,5,5,6, 5,9,4,6,10,22, 5,8,13,5,5,7, 5,8,4,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, + 5,7,4,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,3,3,12,41, 5,6,3,6,10,25, 5,5,11,5,5,10, 5,5,2,3,13,42, 5,5,2,6,10,26, + 5,4,11,5,5,11, 5,4,5,4,5,11, 5,4,2,4,5,11, 5,4,2,6,10,27, 5,3,11,5,5,12, 5,3,6,6,10,28, 5,3,4,4,5,12, 5,3,4,5,5,12, + 5,3,3,4,5,12, 5,3,3,6,10,28, 5,2,11,5,5,13, 5,2,6,6,10,29, 5,1,11,5,5,14, 5,1,6,4,5,14, 5,1,6,6,10,30, 5,0,12,2,3,47, + 5,0,12,3,3,47, 5,0,12,5,5,15, 5,0,11,2,4,47, 5,0,10,2,5,47, 5,0,9,2,6,47, 5,0,8,2,7,47, 5,0,7,2,8,47, 5,0,7,6,10,31, + 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,3,6,32, 6,15,8,3,7,32, 6,15,7,3,8,32, 6,15,7,6,9,16, 6,14,12,3,3,33, 6,14,12,5,6,1, + 6,14,11,3,4,33, 6,14,6,3,9,33, 6,14,6,6,9,17, 6,13,13,3,2,34, 6,13,13,5,6,2, 6,13,5,3,10,34, 6,13,5,6,9,18, 6,12,14,3,1,35, + 6,12,14,5,6,3, 6,12,4,3,11,35, 6,12,4,6,9,19, 6,11,14,4,6,4, 6,11,14,5,6,4, 6,11,4,6,9,20, 6,10,13,5,6,5, 6,10,4,6,9,21, + 6,9,13,5,6,6, 6,9,4,6,9,22, 6,8,13,5,6,7, 6,8,4,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,4,6,9,24, 6,6,12,4,6,9, + 6,6,12,5,6,9, 6,6,3,3,12,41, 6,6,3,6,9,25, 6,5,11,5,6,10, 6,5,2,3,13,42, 6,5,2,6,9,26, 6,4,11,5,6,11, 6,4,5,4,6,11, + 6,4,2,4,6,11, 6,4,2,6,9,27, 6,3,11,5,6,12, 6,3,6,6,9,28, 6,3,4,4,6,12, 6,3,4,5,6,12, 6,3,3,4,6,12, 6,3,3,6,9,28, + 6,2,11,5,6,13, 6,2,6,6,9,29, 6,1,11,5,6,14, 6,1,6,4,6,14, 6,1,6,6,9,30, 6,0,12,1,3,47, 6,0,12,3,3,47, 6,0,12,5,6,15, + 6,0,11,1,4,47, 6,0,10,1,5,47, 6,0,9,1,6,47, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,7,6,9,31, 7,15,10,3,5,32, 7,15,10,5,7,0, + 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,7,6,8,16, 7,14,12,3,3,33, 7,14,12,5,7,1, 7,14,11,3,4,33, 7,14,6,3,9,33, + 7,14,6,6,8,17, 7,13,13,3,2,34, 7,13,13,5,7,2, 7,13,5,3,10,34, 7,13,5,6,8,18, 7,12,14,3,1,35, 7,12,14,5,7,3, 7,12,4,3,11,35, + 7,12,4,6,8,19, 7,11,14,4,7,4, 7,11,14,5,7,4, 7,11,4,6,8,20, 7,10,13,5,7,5, 7,10,4,6,8,21, 7,9,13,5,7,6, 7,9,4,6,8,22, + 7,8,13,5,7,7, 7,8,4,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,4,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,3,3,12,41, + 7,6,3,6,8,25, 7,5,11,5,7,10, 7,5,2,3,13,42, 7,5,2,6,8,26, 7,4,11,5,7,11, 7,4,5,4,7,11, 7,4,2,4,7,11, 7,4,2,6,8,27, + 7,3,11,5,7,12, 7,3,6,6,8,28, 7,3,4,4,7,12, 7,3,4,5,7,12, 7,3,3,4,7,12, 7,3,3,6,8,28, 7,2,11,5,7,13, 7,2,6,6,8,29, + 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,6,6,8,30, + 8,15,10,3,5,32, 8,15,10,5,7,16, 8,15,9,3,6,32, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,7,6,7,16, 8,14,12,3,3,33, 8,14,12,5,8,1, + 8,14,11,3,4,33, 8,14,6,3,9,33, 8,14,6,6,7,17, 8,13,13,3,2,34, 8,13,13,5,8,2, 8,13,5,3,10,34, 8,13,5,6,7,18, 8,12,14,3,1,35, + 8,12,14,5,8,3, 8,12,4,3,11,35, 8,12,4,6,7,19, 8,11,14,4,8,4, 8,11,14,5,8,4, 8,11,4,6,7,20, 8,10,13,5,8,5, 8,10,4,6,7,21, + 8,9,13,5,8,6, 8,9,4,6,7,22, 8,8,13,5,8,7, 8,8,4,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,4,6,7,24, 8,6,12,4,8,9, + 8,6,12,5,8,9, 8,6,3,3,12,41, 8,6,3,6,7,25, 8,5,11,5,8,10, 8,5,2,3,13,42, 8,5,2,6,7,26, 8,4,11,5,8,11, 8,4,5,4,8,11, + 8,4,2,4,8,11, 8,4,2,6,7,27, 8,3,11,5,8,12, 8,3,6,6,7,28, 8,3,4,4,8,12, 8,3,4,5,8,12, 8,3,3,4,8,12, 8,3,3,6,7,28, + 8,2,11,5,8,13, 8,2,6,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, + 8,1,6,4,8,14, 8,1,6,6,7,30, 9,15,10,3,5,32, 9,15,10,5,9,0, 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, 9,15,7,6,6,16, + 9,14,12,3,3,33, 9,14,12,5,9,1, 9,14,11,3,4,33, 9,14,6,3,9,33, 9,14,6,6,6,17, 9,13,13,3,2,34, 9,13,13,5,9,2, 9,13,5,3,10,34, + 9,13,5,6,6,18, 9,12,14,3,1,35, 9,12,14,5,9,3, 9,12,4,3,11,35, 9,12,4,6,6,19, 9,11,14,4,9,4, 9,11,14,5,9,4, 9,11,4,6,6,20, + 9,10,13,5,9,5, 9,10,4,6,6,21, 9,9,13,5,9,6, 9,9,4,6,6,22, 9,8,13,5,9,7, 9,8,4,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, + 9,7,4,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,3,3,12,41, 9,6,3,6,6,25, 9,5,11,5,9,10, 9,5,2,3,13,42, 9,5,2,6,6,26, + 9,4,11,5,9,11, 9,4,5,4,9,11, 9,4,2,4,9,11, 9,4,2,6,6,27, 9,3,11,5,9,12, 9,3,6,6,6,28, 9,3,4,4,9,12, 9,3,4,5,9,12, + 9,3,3,4,9,12, 9,3,3,6,6,28, 9,2,11,5,9,13, 9,2,6,6,6,29, 9,1,11,5,9,14, 9,1,6,4,9,14, 9,1,6,6,6,30, 9,0,12,2,3,47, + 9,0,12,3,3,47, 9,0,12,5,9,15, 9,0,11,2,4,47, 9,0,10,2,5,47, 9,0,9,2,6,47, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,7,6,6,31, + 10,15,10,1,5,32, 10,15,10,3,5,32, 10,15,10,5,10,0, 10,15,9,1,6,32, 10,15,9,3,6,32, 10,15,8,1,7,32, 10,15,8,3,7,32, 10,15,7,1,8,32, + 10,15,7,3,8,32, 10,15,7,6,5,16, 10,14,12,3,3,33, 10,14,12,5,10,1, 10,14,11,3,4,33, 10,14,6,3,9,33, 10,14,6,6,5,17, 10,13,13,3,2,34, + 10,13,13,5,10,2, 10,13,5,3,10,34, 10,13,5,6,5,18, 10,12,14,3,1,35, 10,12,14,5,10,3, 10,12,4,3,11,35, 10,12,4,6,5,19, 10,11,14,4,10,4, + 10,11,14,5,10,4, 10,11,4,6,5,20, 10,10,13,5,10,5, 10,10,4,6,5,21, 10,9,13,5,10,6, 10,9,4,6,5,22, 10,8,13,5,10,7, 10,8,4,6,5,23, + 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,4,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,3,3,12,41, 10,6,3,6,5,25, 10,5,11,5,10,10, + 10,5,2,3,13,42, 10,5,2,6,5,26, 10,4,11,5,10,11, 10,4,5,4,10,11, 10,4,2,4,10,11, 10,4,2,6,5,27, 10,3,11,5,10,12, 10,3,6,6,5,28, + 10,3,4,4,10,12, 10,3,4,5,10,12, 10,3,3,4,10,12, 10,3,3,6,5,28, 10,2,11,5,10,13, 10,2,6,6,5,29, 10,1,11,5,10,14, 10,1,6,4,10,14, + 10,1,6,6,5,30, 10,0,12,1,3,47, 10,0,12,3,3,47, 10,0,12,5,10,15, 10,0,11,1,4,47, 10,0,10,1,5,47, 10,0,9,1,6,47, 10,0,8,1,7,47, + 10,0,7,1,8,47, 10,0,7,6,5,31, 11,14,12,1,3,33, 11,14,12,3,3,33, 11,14,12,5,11,1, 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,10,1,5,33, + 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, + 11,14,6,3,9,33, 11,14,6,6,4,17, 11,13,13,3,2,34, 11,13,13,5,11,2, 11,13,5,3,10,34, 11,13,5,6,4,18, 11,12,14,3,1,35, 11,12,14,5,11,3, + 11,12,4,3,11,35, 11,12,4,6,4,19, 11,11,14,4,11,4, 11,11,14,5,11,4, 11,11,4,6,4,20, 11,10,13,5,11,5, 11,10,4,6,4,21, 11,9,13,5,11,6, + 11,9,4,6,4,22, 11,8,13,5,11,7, 11,8,4,6,4,23, 11,7,13,1,2,40, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,12,1,3,40, 11,7,11,1,4,40, + 11,7,10,1,5,40, 11,7,9,1,6,40, 11,7,8,1,7,40, 11,7,7,1,8,40, 11,7,6,1,9,40, 11,7,5,1,10,40, 11,7,4,1,11,40, 11,7,4,6,4,24, + 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,3,3,12,41, 11,6,3,6,4,25, 11,5,11,5,11,10, 11,5,2,3,13,42, 11,5,2,6,4,26, 11,4,11,5,11,11, + 11,4,5,4,11,11, 11,4,2,4,11,11, 11,4,2,6,4,27, 11,3,11,5,11,12, 11,3,6,6,4,28, 11,3,4,4,11,12, 11,3,4,5,11,12, 11,3,3,4,11,12, + 11,3,3,6,4,28, 11,2,11,1,4,45, 11,2,11,5,11,13, 11,2,10,1,5,45, 11,2,9,1,6,45, 11,2,8,1,7,45, 11,2,7,1,8,45, 11,2,6,1,9,45, + 11,2,6,6,4,29, 11,1,11,1,4,46, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,10,1,5,46, 11,1,10,4,11,14, 11,1,9,1,6,46, 11,1,9,4,11,14, + 11,1,8,1,7,46, 11,1,8,4,11,14, 11,1,7,1,8,46, 11,1,7,4,11,14, 11,1,6,1,9,46, 11,1,6,4,11,14, 11,1,6,6,4,30, 12,13,13,1,2,34, + 12,13,13,3,2,34, 12,13,13,5,12,2, 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, + 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, + 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,5,6,3,18, 12,12,14,3,1,35, 12,12,14,5,12,3, 12,12,4,3,11,35, 12,12,4,6,3,19, 12,11,14,4,12,4, + 12,11,14,5,12,4, 12,11,4,6,3,20, 12,10,13,5,12,5, 12,10,4,6,3,21, 12,9,13,1,2,38, 12,9,13,5,12,6, 12,9,12,1,3,38, 12,9,11,1,4,38, + 12,9,10,1,5,38, 12,9,9,1,6,38, 12,9,8,1,7,38, 12,9,7,1,8,38, 12,9,6,1,9,38, 12,9,5,1,10,38, 12,9,4,1,11,38, 12,9,4,6,3,22, + 12,8,13,1,2,39, 12,8,13,4,12,7, 12,8,13,5,12,7, 12,8,12,1,3,39, 12,8,12,4,12,7, 12,8,11,1,4,39, 12,8,11,4,12,7, 12,8,10,1,5,39, + 12,8,10,4,12,7, 12,8,9,1,6,39, 12,8,9,4,12,7, 12,8,8,1,7,39, 12,8,8,4,12,7, 12,8,7,1,8,39, 12,8,7,4,12,7, 12,8,6,1,9,39, + 12,8,6,4,12,7, 12,8,5,1,10,39, 12,8,5,4,12,7, 12,8,4,1,11,39, 12,8,4,4,12,7, 12,8,4,6,3,23, 12,6,12,1,3,41, 12,6,12,3,3,41, + 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,11,1,4,41, 12,6,11,3,4,41, 12,6,10,1,5,41, 12,6,10,3,5,41, 12,6,9,1,6,41, 12,6,9,3,6,41, + 12,6,8,1,7,41, 12,6,8,3,7,41, 12,6,7,1,8,41, 12,6,7,3,8,41, 12,6,6,1,9,41, 12,6,6,3,9,41, 12,6,5,1,10,41, 12,6,5,3,10,41, + 12,6,4,1,11,41, 12,6,4,3,11,41, 12,6,3,1,12,41, 12,6,3,3,12,41, 12,6,3,6,3,25, 12,5,11,5,12,10, 12,5,2,3,13,42, 12,5,2,6,3,26, + 12,4,11,5,12,11, 12,4,5,4,12,11, 12,4,2,4,12,11, 12,4,2,6,3,27, 12,3,11,1,4,44, 12,3,11,4,12,12, 12,3,11,5,12,12, 12,3,10,1,5,44, + 12,3,10,4,12,12, 12,3,9,1,6,44, 12,3,9,4,12,12, 12,3,8,1,7,44, 12,3,8,4,12,12, 12,3,7,1,8,44, 12,3,7,4,12,12, 12,3,6,1,9,44, + 12,3,6,4,12,12, 12,3,6,6,3,28, 12,3,4,1,11,44, 12,3,4,4,12,12, 12,3,4,5,12,12, 12,3,3,1,12,44, 12,3,3,4,12,12, 12,3,3,6,3,28, + 13,12,14,1,1,35, 13,12,14,3,1,35, 13,12,14,5,13,3, 13,12,13,1,2,35, 13,12,13,3,2,35, 13,12,12,1,3,35, 13,12,12,3,3,35, 13,12,11,1,4,35, + 13,12,11,3,4,35, 13,12,10,1,5,35, 13,12,10,3,5,35, 13,12,9,1,6,35, 13,12,9,3,6,35, 13,12,8,1,7,35, 13,12,8,3,7,35, 13,12,7,1,8,35, + 13,12,7,3,8,35, 13,12,6,1,9,35, 13,12,6,3,9,35, 13,12,5,1,10,35, 13,12,5,3,10,35, 13,12,4,1,11,35, 13,12,4,3,11,35, 13,12,4,6,2,19, + 13,11,14,1,1,36, 13,11,14,4,13,4, 13,11,14,5,13,4, 13,11,13,1,2,36, 13,11,12,1,3,36, 13,11,11,1,4,36, 13,11,10,1,5,36, 13,11,9,1,6,36, + 13,11,8,1,7,36, 13,11,7,1,8,36, 13,11,6,1,9,36, 13,11,5,1,10,36, 13,11,4,1,11,36, 13,11,4,6,2,20, 13,10,13,1,2,37, 13,10,13,4,13,5, + 13,10,13,5,13,5, 13,10,12,1,3,37, 13,10,12,4,13,5, 13,10,11,1,4,37, 13,10,11,4,13,5, 13,10,10,1,5,37, 13,10,10,4,13,5, 13,10,9,1,6,37, + 13,10,9,4,13,5, 13,10,8,1,7,37, 13,10,8,4,13,5, 13,10,7,1,8,37, 13,10,7,4,13,5, 13,10,6,1,9,37, 13,10,6,4,13,5, 13,10,5,1,10,37, + 13,10,5,4,13,5, 13,10,4,1,11,37, 13,10,4,4,13,5, 13,10,4,6,2,21, 13,5,11,1,4,42, 13,5,11,3,4,42, 13,5,11,5,13,10, 13,5,10,1,5,42, + 13,5,10,3,5,42, 13,5,9,1,6,42, 13,5,9,3,6,42, 13,5,8,1,7,42, 13,5,8,3,7,42, 13,5,7,1,8,42, 13,5,7,3,8,42, 13,5,6,1,9,42, + 13,5,6,3,9,42, 13,5,5,1,10,42, 13,5,5,3,10,42, 13,5,4,1,11,42, 13,5,4,3,11,42, 13,5,3,1,12,42, 13,5,3,3,12,42, 13,5,2,1,13,42, + 13,5,2,3,13,42, 13,5,2,6,2,26, 13,4,11,1,4,43, 13,4,11,4,13,11, 13,4,11,5,13,11, 13,4,10,1,5,43, 13,4,10,4,13,11, 13,4,9,1,6,43, + 13,4,9,4,13,11, 13,4,8,1,7,43, 13,4,8,4,13,11, 13,4,7,1,8,43, 13,4,7,4,13,11, 13,4,6,1,9,43, 13,4,6,4,13,11, 13,4,5,1,10,43, + 13,4,5,4,13,11, 13,4,4,1,11,43, 13,4,4,4,13,11, 13,4,3,1,12,43, 13,4,3,4,13,11, 13,4,2,1,13,43, 13,4,2,4,13,11, 13,4,2,6,2,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1441, + count = 950, + faces = { + 2,11,14,2,1,84, 2,11,14,3,1,84, 2,11,14,5,2,52, 2,11,13,2,2,84, 2,11,13,3,2,84, 2,11,12,2,3,84, 2,11,12,3,3,84, 2,11,11,2,4,84, + 2,11,11,3,4,84, 2,11,10,2,5,84, 2,11,10,3,5,84, 2,11,9,2,6,84, 2,11,9,3,6,84, 2,11,8,2,7,84, 2,11,8,3,7,84, 2,11,7,2,8,84, + 2,11,7,3,8,84, 2,11,6,2,9,84, 2,11,6,3,9,84, 2,11,5,2,10,84, 2,11,5,3,10,84, 2,11,4,2,11,84, 2,11,4,3,11,84, 2,11,4,6,13,68, + 2,10,14,2,1,85, 2,10,14,4,2,53, 2,10,14,5,2,53, 2,10,13,2,2,85, 2,10,12,2,3,85, 2,10,11,2,4,85, 2,10,10,2,5,85, 2,10,9,2,6,85, + 2,10,8,2,7,85, 2,10,7,2,8,85, 2,10,6,2,9,85, 2,10,5,2,10,85, 2,10,4,2,11,85, 2,10,4,6,13,69, 2,9,13,2,2,86, 2,9,13,5,2,54, + 2,9,12,2,3,86, 2,9,11,2,4,86, 2,9,10,2,5,86, 2,9,9,2,6,86, 2,9,8,2,7,86, 2,9,7,2,8,86, 2,9,6,2,9,86, 2,9,5,2,10,86, + 2,9,4,2,11,86, 2,9,4,6,13,70, 2,8,13,2,2,87, 2,8,13,4,13,71, 2,8,13,5,13,71, 2,8,12,2,3,87, 2,8,12,4,13,71, 2,8,11,2,4,87, + 2,8,11,4,13,71, 2,8,10,2,5,87, 2,8,10,4,13,71, 2,8,9,2,6,87, 2,8,9,4,13,71, 2,8,8,2,7,87, 2,8,8,4,13,71, 2,8,7,2,8,87, + 2,8,7,4,13,71, 2,8,6,2,9,87, 2,8,6,4,13,71, 2,8,5,2,10,87, 2,8,5,4,13,71, 2,8,4,2,11,87, 2,8,4,4,13,71, 2,8,4,6,13,71, + 2,6,13,2,2,89, 2,6,13,3,2,89, 2,6,13,4,2,57, 2,6,13,5,2,57, 2,6,12,2,3,89, 2,6,12,3,3,89, 2,6,11,2,4,89, 2,6,11,3,4,89, + 2,6,10,2,5,89, 2,6,10,3,5,89, 2,6,9,2,6,89, 2,6,9,3,6,89, 2,6,8,2,7,89, 2,6,8,3,7,89, 2,6,7,2,8,89, 2,6,7,3,8,89, + 2,6,6,2,9,89, 2,6,6,3,9,89, 2,6,5,2,10,89, 2,6,5,3,10,89, 2,6,4,2,11,89, 2,6,4,3,11,89, 2,6,4,6,2,57, 2,5,12,2,3,90, + 2,5,12,4,2,58, 2,5,12,5,2,58, 2,5,11,2,4,90, 2,5,10,2,5,90, 2,5,9,2,6,90, 2,5,8,2,7,90, 2,5,7,2,8,90, 2,5,6,2,9,90, + 2,5,5,2,10,90, 2,5,4,2,11,90, 2,5,3,2,12,90, 2,5,3,3,12,90, 2,5,3,6,2,58, 2,4,11,2,4,91, 2,4,11,5,13,75, 2,4,10,2,5,91, + 2,4,9,2,6,91, 2,4,8,2,7,91, 2,4,7,2,8,91, 2,4,6,2,9,91, 2,4,5,2,10,91, 2,4,4,2,11,91, 2,4,3,2,12,91, 2,4,2,2,13,91, + 2,4,2,3,13,91, 2,4,2,6,13,75, 2,3,11,2,4,92, 2,3,11,4,13,76, 2,3,11,5,13,76, 2,3,10,2,5,92, 2,3,10,4,13,76, 2,3,9,2,6,92, + 2,3,9,4,13,76, 2,3,8,2,7,92, 2,3,8,4,13,76, 2,3,7,2,8,92, 2,3,7,4,13,76, 2,3,6,2,9,92, 2,3,6,4,13,76, 2,3,5,2,10,92, + 2,3,5,4,13,76, 2,3,4,2,11,92, 2,3,4,4,13,76, 2,3,3,2,12,92, 2,3,3,4,13,76, 2,3,2,2,13,92, 2,3,2,4,13,76, 2,3,2,6,13,76, + 3,12,13,2,2,83, 3,12,13,3,2,83, 3,12,13,5,3,51, 3,12,12,2,3,83, 3,12,12,3,3,83, 3,12,11,2,4,83, 3,12,11,3,4,83, 3,12,10,2,5,83, + 3,12,10,3,5,83, 3,12,9,2,6,83, 3,12,9,3,6,83, 3,12,8,2,7,83, 3,12,8,3,7,83, 3,12,7,2,8,83, 3,12,7,3,8,83, 3,12,6,2,9,83, + 3,12,6,3,9,83, 3,12,5,2,10,83, 3,12,5,3,10,83, 3,12,5,6,12,67, 3,11,14,3,1,84, 3,11,14,5,3,52, 3,11,4,3,11,84, 3,11,4,6,12,68, + 3,10,14,4,3,53, 3,10,14,5,3,53, 3,10,4,6,12,69, 3,9,13,5,3,54, 3,9,4,6,12,70, 3,8,13,5,3,55, 3,8,4,6,12,71, 3,7,13,2,2,88, + 3,7,13,5,3,56, 3,7,12,2,3,88, 3,7,11,2,4,88, 3,7,10,2,5,88, 3,7,9,2,6,88, 3,7,8,2,7,88, 3,7,7,2,8,88, 3,7,6,2,9,88, + 3,7,5,2,10,88, 3,7,4,2,11,88, 3,7,4,6,12,72, 3,6,13,4,3,57, 3,6,13,5,3,57, 3,6,4,6,3,57, 3,5,12,4,3,58, 3,5,12,5,3,58, + 3,5,3,3,12,90, 3,5,3,6,12,74, 3,4,11,5,3,59, 3,4,2,3,13,91, 3,4,2,6,12,75, 3,3,11,5,3,60, 3,3,2,4,3,60, 3,3,2,6,12,76, + 3,2,13,2,2,93, 3,2,13,3,2,93, 3,2,13,4,12,77, 3,2,13,5,12,77, 3,2,12,2,3,93, 3,2,12,3,3,93, 3,2,12,4,12,77, 3,2,11,2,4,93, + 3,2,11,4,12,77, 3,2,10,2,5,93, 3,2,10,4,12,77, 3,2,9,2,6,93, 3,2,9,4,12,77, 3,2,8,2,7,93, 3,2,8,4,12,77, 3,2,7,2,8,93, + 3,2,7,4,12,77, 3,2,6,2,9,93, 3,2,6,4,12,77, 3,2,5,2,10,93, 3,2,5,4,12,77, 3,2,4,2,11,93, 3,2,4,4,12,77, 3,2,3,2,12,93, + 3,2,3,4,12,77, 3,2,3,6,12,77, 4,13,12,2,3,82, 4,13,12,3,3,82, 4,13,12,5,4,50, 4,13,11,2,4,82, 4,13,11,3,4,82, 4,13,10,2,5,82, + 4,13,10,3,5,82, 4,13,9,2,6,82, 4,13,9,3,6,82, 4,13,8,2,7,82, 4,13,8,3,7,82, 4,13,7,2,8,82, 4,13,7,3,8,82, 4,13,6,2,9,82, + 4,13,6,3,9,82, 4,13,6,6,11,66, 4,12,13,3,2,83, 4,12,13,5,4,51, 4,12,5,3,10,83, 4,12,5,6,11,67, 4,11,14,3,1,84, 4,11,14,5,4,52, + 4,11,4,3,11,84, 4,11,4,6,11,68, 4,10,14,4,4,53, 4,10,14,5,4,53, 4,10,4,6,11,69, 4,9,13,5,4,54, 4,9,4,6,11,70, 4,8,13,5,4,55, + 4,8,4,6,11,71, 4,7,13,5,4,56, 4,7,4,6,11,72, 4,6,13,4,4,57, 4,6,13,5,4,57, 4,6,4,6,11,73, 4,5,12,4,4,58, 4,5,12,5,4,58, + 4,5,3,3,12,90, 4,5,3,6,11,74, 4,4,11,5,4,59, 4,4,2,3,13,91, 4,4,2,6,11,75, 4,3,11,5,4,60, 4,3,2,4,4,60, 4,3,2,6,11,76, + 4,2,13,3,2,93, 4,2,13,5,4,61, 4,2,12,3,3,93, 4,2,3,4,4,61, 4,2,3,6,11,77, 4,1,13,2,2,94, 4,1,13,4,4,62, 4,1,13,5,4,62, + 4,1,12,2,3,94, 4,1,12,4,4,62, 4,1,11,2,4,94, 4,1,11,4,4,62, 4,1,10,2,5,94, 4,1,10,4,4,62, 4,1,9,2,6,94, 4,1,9,4,4,62, + 4,1,8,2,7,94, 4,1,8,4,4,62, 4,1,7,2,8,94, 4,1,7,4,4,62, 4,1,6,2,9,94, 4,1,6,4,4,62, 4,1,5,2,10,94, 4,1,5,4,4,62, + 4,1,4,2,11,94, 4,1,4,4,4,62, 4,1,4,6,4,62, 5,14,10,2,5,81, 5,14,10,3,5,81, 5,14,10,5,5,49, 5,14,9,2,6,81, 5,14,9,3,6,81, + 5,14,8,2,7,81, 5,14,8,3,7,81, 5,14,7,2,8,81, 5,14,7,3,8,81, 5,14,7,6,10,65, 5,13,12,3,3,82, 5,13,12,5,5,50, 5,13,11,3,4,82, + 5,13,6,3,9,82, 5,13,6,6,10,66, 5,12,13,3,2,83, 5,12,13,5,5,51, 5,12,5,3,10,83, 5,12,5,6,10,67, 5,11,14,3,1,84, 5,11,14,5,5,52, + 5,11,4,3,11,84, 5,11,4,6,10,68, 5,10,14,4,5,53, 5,10,14,5,5,53, 5,10,4,6,10,69, 5,9,13,5,5,54, 5,9,4,6,10,70, 5,8,13,5,5,55, + 5,8,4,6,10,71, 5,7,13,5,5,56, 5,7,4,6,10,72, 5,6,13,4,5,57, 5,6,13,5,5,57, 5,6,4,6,10,73, 5,5,12,4,5,58, 5,5,12,5,5,58, + 5,5,3,3,12,90, 5,5,3,6,10,74, 5,4,11,5,5,59, 5,4,2,3,13,91, 5,4,2,6,10,75, 5,3,11,5,5,60, 5,3,2,4,5,60, 5,3,2,6,10,76, + 5,2,13,3,2,93, 5,2,13,5,5,61, 5,2,12,3,3,93, 5,2,3,4,5,61, 5,2,3,6,10,77, 5,1,13,4,5,62, 5,1,13,5,5,62, 5,1,5,4,5,62, + 5,1,4,4,5,62, 5,1,4,6,5,62, 5,0,12,2,3,95, 5,0,12,5,5,63, 5,0,11,2,4,95, 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,8,2,7,95, + 5,0,7,2,8,95, 5,0,6,2,9,95, 5,0,6,6,5,63, 6,14,10,3,5,81, 6,14,10,5,6,49, 6,14,9,3,6,81, 6,14,8,3,7,81, 6,14,7,3,8,81, + 6,14,7,6,9,65, 6,13,12,3,3,82, 6,13,12,5,6,50, 6,13,11,3,4,82, 6,13,6,3,9,82, 6,13,6,6,9,66, 6,12,13,3,2,83, 6,12,13,5,6,51, + 6,12,5,3,10,83, 6,12,5,6,9,67, 6,11,14,3,1,84, 6,11,14,5,6,52, 6,11,4,3,11,84, 6,11,4,6,9,68, 6,10,14,4,6,53, 6,10,14,5,6,53, + 6,10,4,6,9,69, 6,9,13,5,6,54, 6,9,4,6,9,70, 6,8,13,5,6,55, 6,8,4,6,9,71, 6,7,13,5,6,56, 6,7,4,6,9,72, 6,6,13,4,6,57, + 6,6,13,5,6,57, 6,6,4,6,9,73, 6,5,12,4,6,58, 6,5,12,5,6,58, 6,5,3,3,12,90, 6,5,3,6,9,74, 6,4,11,5,6,59, 6,4,2,3,13,91, + 6,4,2,6,9,75, 6,3,11,5,6,60, 6,3,2,4,6,60, 6,3,2,6,9,76, 6,2,13,3,2,93, 6,2,13,5,6,61, 6,2,12,3,3,93, 6,2,3,4,6,61, + 6,2,3,6,9,77, 6,1,13,4,6,62, 6,1,13,5,6,62, 6,1,5,4,6,62, 6,1,4,4,6,62, 6,1,4,6,9,78, 6,0,12,1,3,95, 6,0,12,5,6,63, + 6,0,11,1,4,95, 6,0,10,1,5,95, 6,0,9,1,6,95, 6,0,8,1,7,95, 6,0,7,1,8,95, 6,0,6,1,9,95, 6,0,6,6,6,63, 7,14,10,3,5,81, + 7,14,10,5,7,49, 7,14,9,3,6,81, 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,7,6,8,65, 7,13,12,3,3,82, 7,13,12,5,7,50, 7,13,11,3,4,82, + 7,13,6,3,9,82, 7,13,6,6,8,66, 7,12,13,3,2,83, 7,12,13,5,7,51, 7,12,5,3,10,83, 7,12,5,6,8,67, 7,11,14,3,1,84, 7,11,14,5,7,52, + 7,11,4,3,11,84, 7,11,4,6,8,68, 7,10,14,4,7,53, 7,10,14,5,7,53, 7,10,4,6,8,69, 7,9,13,5,7,54, 7,9,4,6,8,70, 7,8,13,5,7,55, + 7,8,4,6,8,71, 7,7,13,5,7,56, 7,7,4,6,8,72, 7,6,13,4,7,57, 7,6,13,5,7,57, 7,6,4,6,8,73, 7,5,12,4,7,58, 7,5,12,5,7,58, + 7,5,3,3,12,90, 7,5,3,6,8,74, 7,4,11,5,7,59, 7,4,2,3,13,91, 7,4,2,6,8,75, 7,3,11,5,7,60, 7,3,2,4,7,60, 7,3,2,6,8,76, + 7,2,13,3,2,93, 7,2,13,5,7,61, 7,2,12,3,3,93, 7,2,3,4,7,61, 7,2,3,6,8,77, 7,1,13,4,7,62, 7,1,13,5,7,62, 7,1,12,4,7,62, + 7,1,11,4,7,62, 7,1,10,4,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,4,4,7,62, + 7,1,4,6,8,78, 8,14,10,3,5,81, 8,14,10,5,7,65, 8,14,9,3,6,81, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,7,6,7,65, 8,13,12,3,3,82, + 8,13,12,5,8,50, 8,13,11,3,4,82, 8,13,6,3,9,82, 8,13,6,6,7,66, 8,12,13,3,2,83, 8,12,13,5,8,51, 8,12,5,3,10,83, 8,12,5,6,7,67, + 8,11,14,3,1,84, 8,11,14,5,8,52, 8,11,4,3,11,84, 8,11,4,6,7,68, 8,10,14,4,8,53, 8,10,14,5,8,53, 8,10,4,6,7,69, 8,9,13,5,8,54, + 8,9,4,6,7,70, 8,8,13,5,8,55, 8,8,4,6,7,71, 8,7,13,5,8,56, 8,7,4,6,7,72, 8,6,13,4,8,57, 8,6,13,5,8,57, 8,6,4,6,7,73, + 8,5,12,4,8,58, 8,5,12,5,8,58, 8,5,3,3,12,90, 8,5,3,6,7,74, 8,4,11,5,8,59, 8,4,2,3,13,91, 8,4,2,6,7,75, 8,3,11,5,8,60, + 8,3,2,4,8,60, 8,3,2,6,7,76, 8,2,13,3,2,93, 8,2,13,5,8,61, 8,2,12,3,3,93, 8,2,3,4,8,61, 8,2,3,6,7,77, 8,1,13,4,7,78, + 8,1,13,5,7,78, 8,1,12,4,7,78, 8,1,11,4,7,78, 8,1,10,4,7,78, 8,1,9,4,7,78, 8,1,8,4,7,78, 8,1,7,4,7,78, 8,1,6,4,7,78, + 8,1,5,4,7,78, 8,1,4,4,7,78, 8,1,4,6,7,78, 9,14,10,3,5,81, 9,14,10,5,9,49, 9,14,9,3,6,81, 9,14,8,3,7,81, 9,14,7,3,8,81, + 9,14,7,6,6,65, 9,13,12,3,3,82, 9,13,12,5,9,50, 9,13,11,3,4,82, 9,13,6,3,9,82, 9,13,6,6,6,66, 9,12,13,3,2,83, 9,12,13,5,9,51, + 9,12,5,3,10,83, 9,12,5,6,6,67, 9,11,14,3,1,84, 9,11,14,5,9,52, 9,11,4,3,11,84, 9,11,4,6,6,68, 9,10,14,4,9,53, 9,10,14,5,9,53, + 9,10,4,6,6,69, 9,9,13,5,9,54, 9,9,4,6,6,70, 9,8,13,5,9,55, 9,8,4,6,6,71, 9,7,13,5,9,56, 9,7,4,6,6,72, 9,6,13,4,9,57, + 9,6,13,5,9,57, 9,6,4,6,6,73, 9,5,12,4,9,58, 9,5,12,5,9,58, 9,5,3,3,12,90, 9,5,3,6,6,74, 9,4,11,5,9,59, 9,4,2,3,13,91, + 9,4,2,6,6,75, 9,3,11,5,9,60, 9,3,2,4,9,60, 9,3,2,6,6,76, 9,2,13,3,2,93, 9,2,13,5,9,61, 9,2,12,3,3,93, 9,2,3,4,9,61, + 9,2,3,6,6,77, 9,1,13,4,6,78, 9,1,13,5,6,78, 9,1,5,4,6,78, 9,1,4,4,6,78, 9,1,4,6,6,78, 9,0,12,2,3,95, 9,0,12,5,6,79, + 9,0,11,2,4,95, 9,0,10,2,5,95, 9,0,9,2,6,95, 9,0,8,2,7,95, 9,0,7,2,8,95, 9,0,6,2,9,95, 9,0,6,6,6,79, 10,14,10,1,5,81, + 10,14,10,3,5,81, 10,14,10,5,10,49, 10,14,9,1,6,81, 10,14,9,3,6,81, 10,14,8,1,7,81, 10,14,8,3,7,81, 10,14,7,1,8,81, 10,14,7,3,8,81, + 10,14,7,6,5,65, 10,13,12,3,3,82, 10,13,12,5,10,50, 10,13,11,3,4,82, 10,13,6,3,9,82, 10,13,6,6,5,66, 10,12,13,3,2,83, 10,12,13,5,10,51, + 10,12,5,3,10,83, 10,12,5,6,5,67, 10,11,14,3,1,84, 10,11,14,5,10,52, 10,11,4,3,11,84, 10,11,4,6,5,68, 10,10,14,4,10,53, 10,10,14,5,10,53, + 10,10,4,6,5,69, 10,9,13,5,10,54, 10,9,4,6,5,70, 10,8,13,5,10,55, 10,8,4,6,5,71, 10,7,13,5,10,56, 10,7,4,6,5,72, 10,6,13,4,10,57, + 10,6,13,5,10,57, 10,6,4,6,5,73, 10,5,12,4,10,58, 10,5,12,5,10,58, 10,5,3,3,12,90, 10,5,3,6,5,74, 10,4,11,5,10,59, 10,4,2,3,13,91, + 10,4,2,6,5,75, 10,3,11,5,10,60, 10,3,2,4,10,60, 10,3,2,6,5,76, 10,2,13,3,2,93, 10,2,13,5,10,61, 10,2,12,3,3,93, 10,2,3,4,10,61, + 10,2,3,6,5,77, 10,1,13,4,5,78, 10,1,13,5,5,78, 10,1,5,4,5,78, 10,1,4,4,5,78, 10,1,4,6,5,78, 10,0,12,1,3,95, 10,0,12,5,5,79, + 10,0,11,1,4,95, 10,0,10,1,5,95, 10,0,9,1,6,95, 10,0,8,1,7,95, 10,0,7,1,8,95, 10,0,6,1,9,95, 10,0,6,6,5,79, 11,13,12,1,3,82, + 11,13,12,3,3,82, 11,13,12,5,11,50, 11,13,11,1,4,82, 11,13,11,3,4,82, 11,13,10,1,5,82, 11,13,10,3,5,82, 11,13,9,1,6,82, 11,13,9,3,6,82, + 11,13,8,1,7,82, 11,13,8,3,7,82, 11,13,7,1,8,82, 11,13,7,3,8,82, 11,13,6,1,9,82, 11,13,6,3,9,82, 11,13,6,6,4,66, 11,12,13,3,2,83, + 11,12,13,5,11,51, 11,12,5,3,10,83, 11,12,5,6,4,67, 11,11,14,3,1,84, 11,11,14,5,11,52, 11,11,4,3,11,84, 11,11,4,6,4,68, 11,10,14,4,11,53, + 11,10,14,5,11,53, 11,10,4,6,4,69, 11,9,13,5,11,54, 11,9,4,6,4,70, 11,8,13,5,11,55, 11,8,4,6,4,71, 11,7,13,5,11,56, 11,7,4,6,4,72, + 11,6,13,4,11,57, 11,6,13,5,11,57, 11,6,4,6,4,73, 11,5,12,4,11,58, 11,5,12,5,11,58, 11,5,3,3,12,90, 11,5,3,6,4,74, 11,4,11,5,11,59, + 11,4,2,3,13,91, 11,4,2,6,4,75, 11,3,11,5,11,60, 11,3,2,4,11,60, 11,3,2,6,4,76, 11,2,13,1,2,93, 11,2,13,3,2,93, 11,2,13,5,11,61, + 11,2,12,1,3,93, 11,2,12,3,3,93, 11,2,11,1,4,93, 11,2,10,1,5,93, 11,2,9,1,6,93, 11,2,8,1,7,93, 11,2,7,1,8,93, 11,2,6,1,9,93, + 11,2,5,1,10,93, 11,2,4,1,11,93, 11,2,3,1,12,93, 11,2,3,4,11,61, 11,2,3,6,4,77, 11,1,13,1,2,94, 11,1,13,4,4,78, 11,1,13,5,4,78, + 11,1,12,1,3,94, 11,1,12,4,4,78, 11,1,11,1,4,94, 11,1,11,4,4,78, 11,1,10,1,5,94, 11,1,10,4,4,78, 11,1,9,1,6,94, 11,1,9,4,4,78, + 11,1,8,1,7,94, 11,1,8,4,4,78, 11,1,7,1,8,94, 11,1,7,4,4,78, 11,1,6,1,9,94, 11,1,6,4,4,78, 11,1,5,1,10,94, 11,1,5,4,4,78, + 11,1,4,1,11,94, 11,1,4,4,4,78, 11,1,4,6,4,78, 12,12,13,1,2,83, 12,12,13,3,2,83, 12,12,13,5,12,51, 12,12,12,1,3,83, 12,12,12,3,3,83, + 12,12,11,1,4,83, 12,12,11,3,4,83, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, 12,12,8,1,7,83, 12,12,8,3,7,83, + 12,12,7,1,8,83, 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, 12,12,5,6,3,67, 12,11,14,3,1,84, + 12,11,14,5,12,52, 12,11,4,3,11,84, 12,11,4,6,3,68, 12,10,14,4,12,53, 12,10,14,5,12,53, 12,10,4,6,3,69, 12,9,13,5,12,54, 12,9,4,6,3,70, + 12,8,13,5,12,55, 12,8,4,6,3,71, 12,7,13,1,2,88, 12,7,13,5,12,56, 12,7,12,1,3,88, 12,7,11,1,4,88, 12,7,10,1,5,88, 12,7,9,1,6,88, + 12,7,8,1,7,88, 12,7,7,1,8,88, 12,7,6,1,9,88, 12,7,5,1,10,88, 12,7,4,1,11,88, 12,7,4,6,3,72, 12,6,13,4,12,57, 12,6,13,5,12,57, + 12,6,4,6,3,73, 12,5,12,4,12,58, 12,5,12,5,12,58, 12,5,3,3,12,90, 12,5,3,6,3,74, 12,4,11,1,4,91, 12,4,11,5,12,59, 12,4,10,1,5,91, + 12,4,9,1,6,91, 12,4,8,1,7,91, 12,4,7,1,8,91, 12,4,6,1,9,91, 12,4,5,1,10,91, 12,4,4,1,11,91, 12,4,3,1,12,91, 12,4,2,1,13,91, + 12,4,2,3,13,91, 12,4,2,6,3,75, 12,3,11,1,4,92, 12,3,11,4,12,60, 12,3,11,5,12,60, 12,3,10,1,5,92, 12,3,10,4,12,60, 12,3,9,1,6,92, + 12,3,9,4,12,60, 12,3,8,1,7,92, 12,3,8,4,12,60, 12,3,7,1,8,92, 12,3,7,4,12,60, 12,3,6,1,9,92, 12,3,6,4,12,60, 12,3,5,1,10,92, + 12,3,5,4,12,60, 12,3,4,1,11,92, 12,3,4,4,12,60, 12,3,3,1,12,92, 12,3,3,4,12,60, 12,3,2,1,13,92, 12,3,2,4,12,60, 12,3,2,6,12,60, + 13,11,14,1,1,84, 13,11,14,3,1,84, 13,11,14,5,13,52, 13,11,13,1,2,84, 13,11,13,3,2,84, 13,11,12,1,3,84, 13,11,12,3,3,84, 13,11,11,1,4,84, + 13,11,11,3,4,84, 13,11,10,1,5,84, 13,11,10,3,5,84, 13,11,9,1,6,84, 13,11,9,3,6,84, 13,11,8,1,7,84, 13,11,8,3,7,84, 13,11,7,1,8,84, + 13,11,7,3,8,84, 13,11,6,1,9,84, 13,11,6,3,9,84, 13,11,5,1,10,84, 13,11,5,3,10,84, 13,11,4,1,11,84, 13,11,4,3,11,84, 13,11,4,6,2,68, + 13,10,14,1,1,85, 13,10,14,4,13,53, 13,10,14,5,13,53, 13,10,13,1,2,85, 13,10,12,1,3,85, 13,10,11,1,4,85, 13,10,10,1,5,85, 13,10,9,1,6,85, + 13,10,8,1,7,85, 13,10,7,1,8,85, 13,10,6,1,9,85, 13,10,5,1,10,85, 13,10,4,1,11,85, 13,10,4,6,2,69, 13,9,13,1,2,86, 13,9,13,5,13,54, + 13,9,12,1,3,86, 13,9,11,1,4,86, 13,9,10,1,5,86, 13,9,9,1,6,86, 13,9,8,1,7,86, 13,9,7,1,8,86, 13,9,6,1,9,86, 13,9,5,1,10,86, + 13,9,4,1,11,86, 13,9,4,6,2,70, 13,8,13,1,2,87, 13,8,13,4,2,71, 13,8,13,5,2,71, 13,8,12,1,3,87, 13,8,12,4,2,71, 13,8,11,1,4,87, + 13,8,11,4,2,71, 13,8,10,1,5,87, 13,8,10,4,2,71, 13,8,9,1,6,87, 13,8,9,4,2,71, 13,8,8,1,7,87, 13,8,8,4,2,71, 13,8,7,1,8,87, + 13,8,7,4,2,71, 13,8,6,1,9,87, 13,8,6,4,2,71, 13,8,5,1,10,87, 13,8,5,4,2,71, 13,8,4,1,11,87, 13,8,4,4,2,71, 13,8,4,6,2,71, + 13,6,13,1,2,89, 13,6,13,3,2,89, 13,6,13,4,2,73, 13,6,13,5,2,73, 13,6,12,1,3,89, 13,6,12,3,3,89, 13,6,11,1,4,89, 13,6,11,3,4,89, + 13,6,10,1,5,89, 13,6,10,3,5,89, 13,6,9,1,6,89, 13,6,9,3,6,89, 13,6,8,1,7,89, 13,6,8,3,7,89, 13,6,7,1,8,89, 13,6,7,3,8,89, + 13,6,6,1,9,89, 13,6,6,3,9,89, 13,6,5,1,10,89, 13,6,5,3,10,89, 13,6,4,1,11,89, 13,6,4,3,11,89, 13,6,4,6,2,73, 13,5,12,1,3,90, + 13,5,12,4,2,74, 13,5,12,5,2,74, 13,5,11,1,4,90, 13,5,11,4,2,74, 13,5,10,1,5,90, 13,5,10,4,2,74, 13,5,9,1,6,90, 13,5,9,4,2,74, + 13,5,8,1,7,90, 13,5,8,4,2,74, 13,5,7,1,8,90, 13,5,7,4,2,74, 13,5,6,1,9,90, 13,5,6,4,2,74, 13,5,5,1,10,90, 13,5,5,4,2,74, + 13,5,4,1,11,90, 13,5,4,4,2,74, 13,5,3,1,12,90, 13,5,3,3,12,90, 13,5,3,4,2,74, 13,5,3,6,2,74, + }, + }, + }, +} diff --git a/assets/voxels/middle_aged_man.lua b/assets/voxels/middle_aged_man.lua new file mode 100644 index 0000000..2beebb5 --- /dev/null +++ b/assets/voxels/middle_aged_man.lua @@ -0,0 +1,310 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "middle_aged_man" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "middle_aged_man", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1758, + count = 1110, + faces = { + 0,6,11,2,5,41, 0,6,11,3,5,41, 0,6,11,5,0,9, 0,6,10,2,6,41, 0,6,10,3,6,41, 0,6,9,2,7,41, 0,6,9,3,7,41, 0,6,8,2,8,41, + 0,6,8,3,8,41, 0,6,7,2,9,41, 0,6,7,3,9,41, 0,6,6,2,10,41, 0,6,6,3,10,41, 0,6,5,2,11,41, 0,6,5,3,11,41, 0,6,5,6,15,25, + 0,5,12,2,4,42, 0,5,12,3,4,42, 0,5,12,4,0,10, 0,5,12,5,0,10, 0,5,11,2,5,42, 0,5,11,4,0,10, 0,5,10,2,6,42, 0,5,10,4,0,10, + 0,5,9,2,7,42, 0,5,9,4,0,10, 0,5,8,2,8,42, 0,5,8,4,0,10, 0,5,7,2,9,42, 0,5,7,4,0,10, 0,5,6,2,10,42, 0,5,6,4,0,10, + 0,5,5,2,11,42, 0,5,5,4,0,10, 0,5,4,2,12,42, 0,5,4,3,12,42, 0,5,4,4,0,10, 0,5,4,6,15,26, 1,11,13,2,3,36, 1,11,13,3,3,36, + 1,11,13,5,1,4, 1,11,12,2,4,36, 1,11,12,3,4,36, 1,11,11,2,5,36, 1,11,11,3,5,36, 1,11,10,2,6,36, 1,11,10,3,6,36, 1,11,9,2,7,36, + 1,11,9,3,7,36, 1,11,8,2,8,36, 1,11,8,3,8,36, 1,11,7,2,9,36, 1,11,7,3,9,36, 1,11,6,2,10,36, 1,11,6,3,10,36, 1,11,5,2,11,36, + 1,11,5,3,11,36, 1,11,4,2,12,36, 1,11,4,3,12,36, 1,11,3,2,13,36, 1,11,3,3,13,36, 1,11,3,6,14,20, 1,10,13,2,3,37, 1,10,13,5,1,5, + 1,10,12,2,4,37, 1,10,11,2,5,37, 1,10,10,2,6,37, 1,10,9,2,7,37, 1,10,8,2,8,37, 1,10,7,2,9,37, 1,10,6,2,10,37, 1,10,5,2,11,37, + 1,10,4,2,12,37, 1,10,3,2,13,37, 1,10,3,6,14,21, 1,9,13,2,3,38, 1,9,13,4,1,6, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,12,4,1,6, + 1,9,11,2,5,38, 1,9,11,4,1,6, 1,9,10,2,6,38, 1,9,10,4,1,6, 1,9,9,2,7,38, 1,9,9,4,1,6, 1,9,8,2,8,38, 1,9,8,4,1,6, + 1,9,7,2,9,38, 1,9,7,4,1,6, 1,9,6,2,10,38, 1,9,6,4,1,6, 1,9,5,2,11,38, 1,9,5,4,1,6, 1,9,4,2,12,38, 1,9,4,4,1,6, + 1,9,3,2,13,38, 1,9,3,4,1,6, 1,9,3,6,14,22, 1,7,12,2,4,40, 1,7,12,3,4,40, 1,7,12,4,1,8, 1,7,12,5,1,8, 1,7,11,2,5,40, + 1,7,11,3,5,40, 1,7,10,2,6,40, 1,7,10,3,6,40, 1,7,9,2,7,40, 1,7,9,3,7,40, 1,7,8,2,8,40, 1,7,8,3,8,40, 1,7,7,2,9,40, + 1,7,7,3,9,40, 1,7,6,2,10,40, 1,7,6,3,10,40, 1,7,5,2,11,40, 1,7,5,3,11,40, 1,7,4,2,12,40, 1,7,4,3,12,40, 1,7,4,4,1,8, + 1,7,4,6,14,24, 1,6,11,5,1,9, 1,6,5,6,14,25, 1,5,12,3,4,42, 1,5,12,5,1,10, 1,5,4,3,12,42, 1,5,4,6,14,26, 1,4,13,2,3,43, + 1,4,13,3,3,43, 1,4,13,4,1,11, 1,4,13,5,1,11, 1,4,12,2,4,43, 1,4,12,4,1,11, 1,4,11,2,5,43, 1,4,11,4,1,11, 1,4,10,2,6,43, + 1,4,10,4,1,11, 1,4,9,2,7,43, 1,4,9,4,1,11, 1,4,8,2,8,43, 1,4,8,4,1,11, 1,4,7,2,9,43, 1,4,7,4,1,11, 1,4,6,2,10,43, + 1,4,6,4,1,11, 1,4,5,2,11,43, 1,4,5,4,1,11, 1,4,4,2,12,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,12,13,2,3,35, 2,12,13,3,3,35, + 2,12,13,5,2,3, 2,12,12,2,4,35, 2,12,12,3,4,35, 2,12,11,2,5,35, 2,12,11,3,5,35, 2,12,10,2,6,35, 2,12,10,3,6,35, 2,12,9,2,7,35, + 2,12,9,3,7,35, 2,12,8,2,8,35, 2,12,8,3,8,35, 2,12,7,2,9,35, 2,12,7,3,9,35, 2,12,6,2,10,35, 2,12,6,3,10,35, 2,12,5,2,11,35, + 2,12,5,3,11,35, 2,12,4,2,12,35, 2,12,4,3,12,35, 2,12,3,2,13,35, 2,12,3,3,13,35, 2,12,3,6,13,19, 2,11,13,5,2,4, 2,11,3,6,13,20, + 2,10,13,5,2,5, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,3,6,13,22, 2,8,13,2,3,39, 2,8,13,4,2,7, 2,8,13,5,2,7, 2,8,12,2,4,39, + 2,8,11,2,5,39, 2,8,10,2,6,39, 2,8,9,2,7,39, 2,8,8,2,8,39, 2,8,7,2,9,39, 2,8,6,2,10,39, 2,8,5,2,11,39, 2,8,4,2,12,39, + 2,8,3,2,13,39, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,4,4,2,8, 2,7,4,6,13,24, 2,6,11,5,2,9, + 2,6,5,6,13,25, 2,5,12,3,4,42, 2,5,12,5,2,10, 2,5,4,3,12,42, 2,5,4,6,13,26, 2,4,13,3,3,43, 2,4,13,5,2,11, 2,4,4,6,13,27, + 2,3,13,2,3,44, 2,3,13,4,2,12, 2,3,13,5,2,12, 2,3,12,2,4,44, 2,3,11,2,5,44, 2,3,10,2,6,44, 2,3,9,2,7,44, 2,3,8,2,8,44, + 2,3,7,2,9,44, 2,3,6,2,10,44, 2,3,5,2,11,44, 2,3,4,2,12,44, 2,3,4,4,2,12, 2,3,4,6,13,28, 2,2,12,2,4,45, 2,2,12,5,2,13, + 2,2,11,2,5,45, 2,2,10,2,6,45, 2,2,9,2,7,45, 2,2,8,2,8,45, 2,2,7,2,9,45, 2,2,6,2,10,45, 2,2,5,2,11,45, 2,2,5,4,2,13, + 2,2,5,6,13,29, 2,1,12,2,4,46, 2,1,12,4,2,14, 2,1,12,5,2,14, 2,1,11,2,5,46, 2,1,11,4,2,14, 2,1,10,2,6,46, 2,1,10,4,2,14, + 2,1,9,2,7,46, 2,1,9,4,2,14, 2,1,8,2,8,46, 2,1,8,4,2,14, 2,1,7,2,9,46, 2,1,7,4,2,14, 2,1,6,2,10,46, 2,1,6,4,2,14, + 2,1,6,6,13,30, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,12,5,3,2, 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, 3,13,10,3,6,34, + 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, 3,13,6,3,10,34, + 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,4,6,12,18, 3,12,13,3,3,35, 3,12,13,5,3,3, 3,12,3,3,13,35, + 3,12,3,6,12,19, 3,11,13,5,3,4, 3,11,3,6,12,20, 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,3,6,12,22, 3,8,13,4,3,7, + 3,8,13,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,4,4,3,8, 3,7,4,6,12,24, 3,6,11,5,3,9, + 3,6,5,6,12,25, 3,5,12,3,4,42, 3,5,12,5,3,10, 3,5,4,3,12,42, 3,5,4,6,12,26, 3,4,13,3,3,43, 3,4,13,5,3,11, 3,4,4,6,12,27, + 3,3,13,4,3,12, 3,3,13,5,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, 3,2,12,5,3,13, 3,2,5,4,3,13, 3,2,5,6,12,29, 3,1,12,4,3,14, + 3,1,12,5,3,14, 3,1,6,6,12,30, 3,0,11,2,5,47, 3,0,11,5,3,15, 3,0,10,2,6,47, 3,0,9,2,7,47, 3,0,8,2,8,47, 3,0,7,2,9,47, + 3,0,6,2,10,47, 3,0,6,6,12,31, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,11,5,4,1, 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, + 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,5,2,11,33, + 4,14,5,3,11,33, 4,14,5,6,11,17, 4,13,12,3,4,34, 4,13,12,5,4,2, 4,13,4,3,12,34, 4,13,4,6,11,18, 4,12,13,3,3,35, 4,12,13,5,4,3, + 4,12,3,3,13,35, 4,12,3,6,11,19, 4,11,13,5,4,4, 4,11,3,6,11,20, 4,10,13,5,4,5, 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,6,11,22, + 4,8,13,4,4,7, 4,8,13,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,4,4,8, 4,7,4,6,11,24, + 4,6,11,5,4,9, 4,6,5,6,11,25, 4,5,12,3,4,42, 4,5,12,5,4,10, 4,5,4,3,12,42, 4,5,4,6,11,26, 4,4,13,3,3,43, 4,4,13,5,4,11, + 4,4,4,6,11,27, 4,3,13,4,4,12, 4,3,13,5,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,12,5,4,13, 4,2,5,4,4,13, 4,2,5,6,11,29, + 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,6,6,11,30, 4,0,11,5,4,15, 4,0,6,6,11,31, 5,15,10,2,6,32, 5,15,10,3,6,32, 5,15,10,5,5,0, + 5,15,9,2,7,32, 5,15,9,3,7,32, 5,15,8,2,8,32, 5,15,8,3,8,32, 5,15,7,2,9,32, 5,15,7,3,9,32, 5,15,6,2,10,32, 5,15,6,3,10,32, + 5,15,6,6,10,16, 5,14,11,3,5,33, 5,14,11,5,5,1, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,12,3,4,34, 5,13,12,5,5,2, 5,13,4,3,12,34, + 5,13,4,6,10,18, 5,12,13,3,3,35, 5,12,13,5,5,3, 5,12,3,3,13,35, 5,12,3,6,10,19, 5,11,13,5,5,4, 5,11,3,6,10,20, 5,10,13,5,5,5, + 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,3,6,10,22, 5,8,13,4,5,7, 5,8,13,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, + 5,7,12,5,5,8, 5,7,4,4,5,8, 5,7,4,6,10,24, 5,6,11,5,5,9, 5,6,5,6,10,25, 5,5,12,3,4,42, 5,5,12,5,5,10, 5,5,4,3,12,42, + 5,5,4,6,10,26, 5,4,13,3,3,43, 5,4,13,5,5,11, 5,4,4,6,10,27, 5,3,13,4,5,12, 5,3,13,5,5,12, 5,3,4,4,5,12, 5,3,4,6,10,28, + 5,2,12,5,5,13, 5,2,5,4,5,13, 5,2,5,6,10,29, 5,1,12,4,5,14, 5,1,12,5,5,14, 5,1,6,6,10,30, 5,0,11,5,5,15, 5,0,6,6,10,31, + 6,15,10,3,6,32, 6,15,10,5,6,0, 6,15,9,3,7,32, 6,15,8,3,8,32, 6,15,7,3,9,32, 6,15,6,3,10,32, 6,15,6,6,9,16, 6,14,11,3,5,33, + 6,14,11,5,6,1, 6,14,5,3,11,33, 6,14,5,6,9,17, 6,13,12,3,4,34, 6,13,12,5,6,2, 6,13,4,3,12,34, 6,13,4,6,9,18, 6,12,13,3,3,35, + 6,12,13,5,6,3, 6,12,3,3,13,35, 6,12,3,6,9,19, 6,11,13,5,6,4, 6,11,3,6,9,20, 6,10,13,5,6,5, 6,10,3,6,9,21, 6,9,13,5,6,6, + 6,9,3,6,9,22, 6,8,13,4,6,7, 6,8,13,5,6,7, 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,4,4,6,8, + 6,7,4,6,9,24, 6,6,11,5,6,9, 6,6,5,6,9,25, 6,5,12,3,4,42, 6,5,12,5,6,10, 6,5,4,3,12,42, 6,5,4,6,9,26, 6,4,13,3,3,43, + 6,4,13,5,6,11, 6,4,4,6,9,27, 6,3,13,4,6,12, 6,3,13,5,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,12,5,6,13, 6,2,5,4,6,13, + 6,2,5,6,9,29, 6,1,12,1,4,46, 6,1,12,4,6,14, 6,1,12,5,6,14, 6,1,11,1,5,46, 6,1,10,1,6,46, 6,1,9,1,7,46, 6,1,8,1,8,46, + 6,1,7,1,9,46, 6,1,6,1,10,46, 6,1,6,6,9,30, 6,0,11,1,5,47, 6,0,11,5,6,15, 6,0,10,1,6,47, 6,0,9,1,7,47, 6,0,8,1,8,47, + 6,0,7,1,9,47, 6,0,6,1,10,47, 6,0,6,6,9,31, 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, + 7,15,6,3,10,32, 7,15,6,6,8,16, 7,14,11,3,5,33, 7,14,11,5,7,1, 7,14,5,3,11,33, 7,14,5,6,8,17, 7,13,12,3,4,34, 7,13,12,5,7,2, + 7,13,4,3,12,34, 7,13,4,6,8,18, 7,12,13,3,3,35, 7,12,13,5,7,3, 7,12,3,3,13,35, 7,12,3,6,8,19, 7,11,13,5,7,4, 7,11,3,6,8,20, + 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,3,6,8,22, 7,8,13,4,7,7, 7,8,13,5,7,7, 7,8,3,4,7,7, 7,8,3,6,8,23, + 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,4,4,7,8, 7,7,4,6,8,24, 7,6,11,5,7,9, 7,6,5,6,8,25, 7,5,12,3,4,42, 7,5,12,5,7,10, + 7,5,4,3,12,42, 7,5,4,6,8,26, 7,4,13,3,3,43, 7,4,13,5,7,11, 7,4,4,6,8,27, 7,3,13,4,7,12, 7,3,13,5,7,12, 7,3,4,4,7,12, + 7,3,4,6,8,28, 7,2,12,4,7,13, 7,2,12,5,7,13, 7,2,11,4,7,13, 7,2,10,4,7,13, 7,2,9,4,7,13, 7,2,8,4,7,13, 7,2,7,4,7,13, + 7,2,6,4,7,13, 7,2,5,4,7,13, 7,2,5,6,8,29, 8,15,10,3,6,32, 8,15,10,5,8,0, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, + 8,15,6,3,10,32, 8,15,6,6,7,16, 8,14,11,3,5,33, 8,14,11,5,8,1, 8,14,5,3,11,33, 8,14,5,6,7,17, 8,13,12,3,4,34, 8,13,12,5,8,2, + 8,13,4,3,12,34, 8,13,4,6,7,18, 8,12,13,3,3,35, 8,12,13,5,8,3, 8,12,3,3,13,35, 8,12,3,6,7,19, 8,11,13,5,8,4, 8,11,3,6,7,20, + 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,6,7,22, 8,8,13,4,8,7, 8,8,13,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, + 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,4,8,8, 8,7,4,6,7,24, 8,6,11,5,8,9, 8,6,5,6,7,25, 8,5,12,3,4,42, 8,5,12,5,8,10, + 8,5,4,3,12,42, 8,5,4,6,7,26, 8,4,13,3,3,43, 8,4,13,5,8,11, 8,4,4,6,7,27, 8,3,13,4,8,12, 8,3,13,5,8,12, 8,3,4,4,8,12, + 8,3,4,6,7,28, 8,2,12,4,8,13, 8,2,12,5,8,13, 8,2,11,4,8,13, 8,2,10,4,8,13, 8,2,9,4,8,13, 8,2,8,4,8,13, 8,2,7,4,8,13, + 8,2,6,4,8,13, 8,2,5,4,8,13, 8,2,5,6,7,29, 9,15,10,3,6,32, 9,15,10,5,9,0, 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, + 9,15,6,3,10,32, 9,15,6,6,6,16, 9,14,11,3,5,33, 9,14,11,5,9,1, 9,14,5,3,11,33, 9,14,5,6,6,17, 9,13,12,3,4,34, 9,13,12,5,9,2, + 9,13,4,3,12,34, 9,13,4,6,6,18, 9,12,13,3,3,35, 9,12,13,5,9,3, 9,12,3,3,13,35, 9,12,3,6,6,19, 9,11,13,5,9,4, 9,11,3,6,6,20, + 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, 9,9,3,6,6,22, 9,8,13,4,9,7, 9,8,13,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, + 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,4,4,9,8, 9,7,4,6,6,24, 9,6,11,5,9,9, 9,6,5,6,6,25, 9,5,12,3,4,42, 9,5,12,5,9,10, + 9,5,4,3,12,42, 9,5,4,6,6,26, 9,4,13,3,3,43, 9,4,13,5,9,11, 9,4,4,6,6,27, 9,3,13,4,9,12, 9,3,13,5,9,12, 9,3,4,4,9,12, + 9,3,4,6,6,28, 9,2,12,5,9,13, 9,2,5,4,9,13, 9,2,5,6,6,29, 9,1,12,2,4,46, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,11,2,5,46, + 9,1,10,2,6,46, 9,1,9,2,7,46, 9,1,8,2,8,46, 9,1,7,2,9,46, 9,1,6,2,10,46, 9,1,6,6,6,30, 9,0,11,2,5,47, 9,0,11,5,9,15, + 9,0,10,2,6,47, 9,0,9,2,7,47, 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,6,2,10,47, 9,0,6,6,6,31, 10,15,10,1,6,32, 10,15,10,3,6,32, + 10,15,10,5,10,0, 10,15,9,1,7,32, 10,15,9,3,7,32, 10,15,8,1,8,32, 10,15,8,3,8,32, 10,15,7,1,9,32, 10,15,7,3,9,32, 10,15,6,1,10,32, + 10,15,6,3,10,32, 10,15,6,6,5,16, 10,14,11,3,5,33, 10,14,11,5,10,1, 10,14,5,3,11,33, 10,14,5,6,5,17, 10,13,12,3,4,34, 10,13,12,5,10,2, + 10,13,4,3,12,34, 10,13,4,6,5,18, 10,12,13,3,3,35, 10,12,13,5,10,3, 10,12,3,3,13,35, 10,12,3,6,5,19, 10,11,13,5,10,4, 10,11,3,6,5,20, + 10,10,13,5,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,3,6,5,22, 10,8,13,4,10,7, 10,8,13,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, + 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,4,4,10,8, 10,7,4,6,5,24, 10,6,11,5,10,9, 10,6,5,6,5,25, 10,5,12,3,4,42, 10,5,12,5,10,10, + 10,5,4,3,12,42, 10,5,4,6,5,26, 10,4,13,3,3,43, 10,4,13,5,10,11, 10,4,4,6,5,27, 10,3,13,4,10,12, 10,3,13,5,10,12, 10,3,4,4,10,12, + 10,3,4,6,5,28, 10,2,12,5,10,13, 10,2,5,4,10,13, 10,2,5,6,5,29, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,6,6,5,30, 10,0,11,5,10,15, + 10,0,6,6,5,31, 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,11,5,11,1, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, + 11,14,8,1,8,33, 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, + 11,14,5,6,4,17, 11,13,12,3,4,34, 11,13,12,5,11,2, 11,13,4,3,12,34, 11,13,4,6,4,18, 11,12,13,3,3,35, 11,12,13,5,11,3, 11,12,3,3,13,35, + 11,12,3,6,4,19, 11,11,13,5,11,4, 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,6,4,22, 11,8,13,4,11,7, + 11,8,13,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,4,4,11,8, 11,7,4,6,4,24, 11,6,11,5,11,9, + 11,6,5,6,4,25, 11,5,12,3,4,42, 11,5,12,5,11,10, 11,5,4,3,12,42, 11,5,4,6,4,26, 11,4,13,3,3,43, 11,4,13,5,11,11, 11,4,4,6,4,27, + 11,3,13,4,11,12, 11,3,13,5,11,12, 11,3,4,4,11,12, 11,3,4,6,4,28, 11,2,12,5,11,13, 11,2,5,4,11,13, 11,2,5,6,4,29, 11,1,12,4,11,14, + 11,1,12,5,11,14, 11,1,6,6,4,30, 11,0,11,5,11,15, 11,0,6,6,4,31, 12,13,12,1,4,34, 12,13,12,3,4,34, 12,13,12,5,12,2, 12,13,11,1,5,34, + 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, 12,13,7,1,9,34, + 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,4,1,12,34, 12,13,4,3,12,34, 12,13,4,6,3,18, + 12,12,13,3,3,35, 12,12,13,5,12,3, 12,12,3,3,13,35, 12,12,3,6,3,19, 12,11,13,5,12,4, 12,11,3,6,3,20, 12,10,13,5,12,5, 12,10,3,6,3,21, + 12,9,13,5,12,6, 12,9,3,6,3,22, 12,8,13,4,12,7, 12,8,13,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, + 12,7,4,4,12,8, 12,7,4,6,3,24, 12,6,11,5,12,9, 12,6,5,6,3,25, 12,5,12,3,4,42, 12,5,12,5,12,10, 12,5,4,3,12,42, 12,5,4,6,3,26, + 12,4,13,3,3,43, 12,4,13,5,12,11, 12,4,4,6,3,27, 12,3,13,4,12,12, 12,3,13,5,12,12, 12,3,4,4,12,12, 12,3,4,6,3,28, 12,2,12,5,12,13, + 12,2,5,4,12,13, 12,2,5,6,3,29, 12,1,12,4,12,14, 12,1,12,5,12,14, 12,1,6,6,3,30, 12,0,11,1,5,47, 12,0,11,5,12,15, 12,0,10,1,6,47, + 12,0,9,1,7,47, 12,0,8,1,8,47, 12,0,7,1,9,47, 12,0,6,1,10,47, 12,0,6,6,3,31, 13,12,13,1,3,35, 13,12,13,3,3,35, 13,12,13,5,13,3, + 13,12,12,1,4,35, 13,12,12,3,4,35, 13,12,11,1,5,35, 13,12,11,3,5,35, 13,12,10,1,6,35, 13,12,10,3,6,35, 13,12,9,1,7,35, 13,12,9,3,7,35, + 13,12,8,1,8,35, 13,12,8,3,8,35, 13,12,7,1,9,35, 13,12,7,3,9,35, 13,12,6,1,10,35, 13,12,6,3,10,35, 13,12,5,1,11,35, 13,12,5,3,11,35, + 13,12,4,1,12,35, 13,12,4,3,12,35, 13,12,3,1,13,35, 13,12,3,3,13,35, 13,12,3,6,2,19, 13,11,13,5,13,4, 13,11,3,6,2,20, 13,10,13,5,13,5, + 13,10,3,6,2,21, 13,9,13,5,13,6, 13,9,3,6,2,22, 13,8,13,1,3,39, 13,8,13,4,13,7, 13,8,13,5,13,7, 13,8,12,1,4,39, 13,8,11,1,5,39, + 13,8,10,1,6,39, 13,8,9,1,7,39, 13,8,8,1,8,39, 13,8,7,1,9,39, 13,8,6,1,10,39, 13,8,5,1,11,39, 13,8,4,1,12,39, 13,8,3,1,13,39, + 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,4,4,13,8, 13,7,4,6,2,24, 13,6,11,5,13,9, 13,6,5,6,2,25, + 13,5,12,3,4,42, 13,5,12,5,13,10, 13,5,4,3,12,42, 13,5,4,6,2,26, 13,4,13,3,3,43, 13,4,13,5,13,11, 13,4,4,6,2,27, 13,3,13,1,3,44, + 13,3,13,4,13,12, 13,3,13,5,13,12, 13,3,12,1,4,44, 13,3,11,1,5,44, 13,3,10,1,6,44, 13,3,9,1,7,44, 13,3,8,1,8,44, 13,3,7,1,9,44, + 13,3,6,1,10,44, 13,3,5,1,11,44, 13,3,4,1,12,44, 13,3,4,4,13,12, 13,3,4,6,2,28, 13,2,12,1,4,45, 13,2,12,5,13,13, 13,2,11,1,5,45, + 13,2,10,1,6,45, 13,2,9,1,7,45, 13,2,8,1,8,45, 13,2,7,1,9,45, 13,2,6,1,10,45, 13,2,5,1,11,45, 13,2,5,4,13,13, 13,2,5,6,2,29, + 13,1,12,1,4,46, 13,1,12,4,13,14, 13,1,12,5,13,14, 13,1,11,1,5,46, 13,1,11,4,13,14, 13,1,10,1,6,46, 13,1,10,4,13,14, 13,1,9,1,7,46, + 13,1,9,4,13,14, 13,1,8,1,8,46, 13,1,8,4,13,14, 13,1,7,1,9,46, 13,1,7,4,13,14, 13,1,6,1,10,46, 13,1,6,4,13,14, 13,1,6,6,2,30, + 14,11,13,1,3,36, 14,11,13,3,3,36, 14,11,13,5,14,4, 14,11,12,1,4,36, 14,11,12,3,4,36, 14,11,11,1,5,36, 14,11,11,3,5,36, 14,11,10,1,6,36, + 14,11,10,3,6,36, 14,11,9,1,7,36, 14,11,9,3,7,36, 14,11,8,1,8,36, 14,11,8,3,8,36, 14,11,7,1,9,36, 14,11,7,3,9,36, 14,11,6,1,10,36, + 14,11,6,3,10,36, 14,11,5,1,11,36, 14,11,5,3,11,36, 14,11,4,1,12,36, 14,11,4,3,12,36, 14,11,3,1,13,36, 14,11,3,3,13,36, 14,11,3,6,1,20, + 14,10,13,1,3,37, 14,10,13,5,14,5, 14,10,12,1,4,37, 14,10,11,1,5,37, 14,10,10,1,6,37, 14,10,9,1,7,37, 14,10,8,1,8,37, 14,10,7,1,9,37, + 14,10,6,1,10,37, 14,10,5,1,11,37, 14,10,4,1,12,37, 14,10,3,1,13,37, 14,10,3,6,1,21, 14,9,13,1,3,38, 14,9,13,4,14,6, 14,9,13,5,14,6, + 14,9,12,1,4,38, 14,9,12,4,14,6, 14,9,11,1,5,38, 14,9,11,4,14,6, 14,9,10,1,6,38, 14,9,10,4,14,6, 14,9,9,1,7,38, 14,9,9,4,14,6, + 14,9,8,1,8,38, 14,9,8,4,14,6, 14,9,7,1,9,38, 14,9,7,4,14,6, 14,9,6,1,10,38, 14,9,6,4,14,6, 14,9,5,1,11,38, 14,9,5,4,14,6, + 14,9,4,1,12,38, 14,9,4,4,14,6, 14,9,3,1,13,38, 14,9,3,4,14,6, 14,9,3,6,1,22, 14,7,12,1,4,40, 14,7,12,3,4,40, 14,7,12,4,14,8, + 14,7,12,5,14,8, 14,7,11,1,5,40, 14,7,11,3,5,40, 14,7,10,1,6,40, 14,7,10,3,6,40, 14,7,9,1,7,40, 14,7,9,3,7,40, 14,7,8,1,8,40, + 14,7,8,3,8,40, 14,7,7,1,9,40, 14,7,7,3,9,40, 14,7,6,1,10,40, 14,7,6,3,10,40, 14,7,5,1,11,40, 14,7,5,3,11,40, 14,7,4,1,12,40, + 14,7,4,3,12,40, 14,7,4,4,14,8, 14,7,4,6,1,24, 14,6,11,5,14,9, 14,6,5,6,1,25, 14,5,12,3,4,42, 14,5,12,5,14,10, 14,5,4,3,12,42, + 14,5,4,6,1,26, 14,4,13,1,3,43, 14,4,13,3,3,43, 14,4,13,4,14,11, 14,4,13,5,14,11, 14,4,12,1,4,43, 14,4,12,4,14,11, 14,4,11,1,5,43, + 14,4,11,4,14,11, 14,4,10,1,6,43, 14,4,10,4,14,11, 14,4,9,1,7,43, 14,4,9,4,14,11, 14,4,8,1,8,43, 14,4,8,4,14,11, 14,4,7,1,9,43, + 14,4,7,4,14,11, 14,4,6,1,10,43, 14,4,6,4,14,11, 14,4,5,1,11,43, 14,4,5,4,14,11, 14,4,4,1,12,43, 14,4,4,4,14,11, 14,4,4,6,1,27, + 15,6,11,1,5,41, 15,6,11,3,5,41, 15,6,11,5,15,9, 15,6,10,1,6,41, 15,6,10,3,6,41, 15,6,9,1,7,41, 15,6,9,3,7,41, 15,6,8,1,8,41, + 15,6,8,3,8,41, 15,6,7,1,9,41, 15,6,7,3,9,41, 15,6,6,1,10,41, 15,6,6,3,10,41, 15,6,5,1,11,41, 15,6,5,3,11,41, 15,6,5,6,0,25, + 15,5,12,1,4,42, 15,5,12,3,4,42, 15,5,12,4,15,10, 15,5,12,5,15,10, 15,5,11,1,5,42, 15,5,11,4,15,10, 15,5,10,1,6,42, 15,5,10,4,15,10, + 15,5,9,1,7,42, 15,5,9,4,15,10, 15,5,8,1,8,42, 15,5,8,4,15,10, 15,5,7,1,9,42, 15,5,7,4,15,10, 15,5,6,1,10,42, 15,5,6,4,15,10, + 15,5,5,1,11,42, 15,5,5,4,15,10, 15,5,4,1,12,42, 15,5,4,3,12,42, 15,5,4,4,15,10, 15,5,4,6,0,26, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1716, + count = 1112, + faces = { + 1,10,12,2,3,85, 1,10,12,3,3,85, 1,10,12,5,1,53, 1,10,11,2,4,85, 1,10,11,3,4,85, 1,10,10,2,5,85, 1,10,10,3,5,85, 1,10,9,2,6,85, + 1,10,9,3,6,85, 1,10,8,2,7,85, 1,10,8,3,7,85, 1,10,7,2,8,85, 1,10,7,3,8,85, 1,10,6,2,9,85, 1,10,6,3,9,85, 1,10,5,2,10,85, + 1,10,5,3,10,85, 1,10,4,2,11,85, 1,10,4,3,11,85, 1,10,3,2,12,85, 1,10,3,3,12,85, 1,10,2,2,13,85, 1,10,2,3,13,85, 1,10,2,6,14,69, + 1,9,12,2,3,86, 1,9,12,5,1,54, 1,9,11,2,4,86, 1,9,10,2,5,86, 1,9,9,2,6,86, 1,9,8,2,7,86, 1,9,7,2,8,86, 1,9,6,2,9,86, + 1,9,5,2,10,86, 1,9,4,2,11,86, 1,9,3,2,12,86, 1,9,2,2,13,86, 1,9,2,6,14,70, 1,8,12,2,3,87, 1,8,12,4,1,55, 1,8,12,5,1,55, + 1,8,11,2,4,87, 1,8,11,4,1,55, 1,8,10,2,5,87, 1,8,10,4,1,55, 1,8,9,2,6,87, 1,8,9,4,1,55, 1,8,8,2,7,87, 1,8,8,4,1,55, + 1,8,7,2,8,87, 1,8,7,4,1,55, 1,8,6,2,9,87, 1,8,6,4,1,55, 1,8,5,2,10,87, 1,8,5,4,1,55, 1,8,4,2,11,87, 1,8,4,4,1,55, + 1,8,3,2,12,87, 1,8,3,4,1,55, 1,8,2,2,13,87, 1,8,2,4,1,55, 1,8,2,6,14,71, 1,5,10,2,5,90, 1,5,10,3,5,90, 1,5,10,4,1,58, + 1,5,10,5,1,58, 1,5,9,2,6,90, 1,5,9,3,6,90, 1,5,9,4,1,58, 1,5,8,2,7,90, 1,5,8,3,7,90, 1,5,8,4,1,58, 1,5,7,2,8,90, + 1,5,7,3,8,90, 1,5,7,4,1,58, 1,5,6,2,9,90, 1,5,6,3,9,90, 1,5,6,4,1,58, 1,5,5,2,10,90, 1,5,5,3,10,90, 1,5,5,4,1,58, + 1,5,4,2,11,90, 1,5,4,3,11,90, 1,5,4,4,1,58, 1,5,3,2,12,90, 1,5,3,3,12,90, 1,5,3,4,1,58, 1,5,3,6,1,58, 2,11,12,2,3,84, + 2,11,12,3,3,84, 2,11,12,5,2,52, 2,11,11,2,4,84, 2,11,11,3,4,84, 2,11,10,2,5,84, 2,11,10,3,5,84, 2,11,9,2,6,84, 2,11,9,3,6,84, + 2,11,8,2,7,84, 2,11,8,3,7,84, 2,11,7,2,8,84, 2,11,7,3,8,84, 2,11,6,2,9,84, 2,11,6,3,9,84, 2,11,5,2,10,84, 2,11,5,3,10,84, + 2,11,4,2,11,84, 2,11,4,3,11,84, 2,11,3,2,12,84, 2,11,3,3,12,84, 2,11,2,2,13,84, 2,11,2,3,13,84, 2,11,2,6,13,68, 2,10,12,5,2,53, + 2,10,2,6,13,69, 2,9,12,5,2,54, 2,9,2,6,13,70, 2,8,12,5,2,55, 2,8,2,6,13,71, 2,7,12,2,3,88, 2,7,12,4,2,56, 2,7,12,5,2,56, + 2,7,11,2,4,88, 2,7,10,2,5,88, 2,7,9,2,6,88, 2,7,8,2,7,88, 2,7,7,2,8,88, 2,7,6,2,9,88, 2,7,5,2,10,88, 2,7,4,2,11,88, + 2,7,3,2,12,88, 2,7,2,2,13,88, 2,7,2,4,2,56, 2,7,2,6,13,72, 2,6,11,2,4,89, 2,6,11,4,2,57, 2,6,11,5,2,57, 2,6,10,2,5,89, + 2,6,9,2,6,89, 2,6,8,2,7,89, 2,6,7,2,8,89, 2,6,6,2,9,89, 2,6,5,2,10,89, 2,6,4,2,11,89, 2,6,3,2,12,89, 2,6,3,6,13,73, + 2,5,10,5,2,58, 2,5,3,6,13,74, 2,4,11,2,4,91, 2,4,11,3,4,91, 2,4,11,5,2,59, 2,4,10,2,5,91, 2,4,9,2,6,91, 2,4,8,2,7,91, + 2,4,7,2,8,91, 2,4,6,2,9,91, 2,4,5,2,10,91, 2,4,4,2,11,91, 2,4,3,2,12,91, 2,4,2,2,13,91, 2,4,2,3,13,91, 2,4,2,6,13,75, + 2,3,13,2,2,92, 2,3,13,3,2,92, 2,3,13,5,2,60, 2,3,12,2,3,92, 2,3,12,3,3,92, 2,3,11,2,4,92, 2,3,10,2,5,92, 2,3,9,2,6,92, + 2,3,8,2,7,92, 2,3,7,2,8,92, 2,3,6,2,9,92, 2,3,5,2,10,92, 2,3,4,2,11,92, 2,3,3,2,12,92, 2,3,2,2,13,92, 2,3,2,6,13,76, + 2,2,14,2,1,93, 2,2,14,3,1,93, 2,2,14,4,2,61, 2,2,14,5,2,61, 2,2,13,2,2,93, 2,2,13,4,2,61, 2,2,12,2,3,93, 2,2,12,4,2,61, + 2,2,11,2,4,93, 2,2,11,4,2,61, 2,2,10,2,5,93, 2,2,10,4,2,61, 2,2,9,2,6,93, 2,2,9,4,2,61, 2,2,8,2,7,93, 2,2,8,4,2,61, + 2,2,7,2,8,93, 2,2,7,4,2,61, 2,2,6,2,9,93, 2,2,6,4,2,61, 2,2,5,2,10,93, 2,2,5,4,2,61, 2,2,4,2,11,93, 2,2,4,4,2,61, + 2,2,3,2,12,93, 2,2,3,4,2,61, 2,2,2,2,13,93, 2,2,2,4,2,61, 2,2,1,2,14,93, 2,2,1,3,14,93, 2,2,1,4,2,61, 2,2,1,6,2,61, + 3,12,11,2,4,83, 3,12,11,3,4,83, 3,12,11,5,3,51, 3,12,10,2,5,83, 3,12,10,3,5,83, 3,12,9,2,6,83, 3,12,9,3,6,83, 3,12,8,2,7,83, + 3,12,8,3,7,83, 3,12,7,2,8,83, 3,12,7,3,8,83, 3,12,6,2,9,83, 3,12,6,3,9,83, 3,12,5,2,10,83, 3,12,5,3,10,83, 3,12,4,2,11,83, + 3,12,4,3,11,83, 3,12,3,2,12,83, 3,12,3,3,12,83, 3,12,3,6,12,67, 3,11,12,3,3,84, 3,11,12,5,3,52, 3,11,2,3,13,84, 3,11,2,6,12,68, + 3,10,12,5,3,53, 3,10,2,6,12,69, 3,9,12,5,3,54, 3,9,2,6,12,70, 3,8,12,5,3,55, 3,8,2,6,12,71, 3,7,12,4,3,56, 3,7,12,5,3,56, + 3,7,2,4,3,56, 3,7,2,6,12,72, 3,6,11,4,3,57, 3,6,11,5,3,57, 3,6,3,6,12,73, 3,5,10,5,3,58, 3,5,3,6,12,74, 3,4,11,3,4,91, + 3,4,11,5,3,59, 3,4,2,3,13,91, 3,4,2,6,12,75, 3,3,13,3,2,92, 3,3,13,5,3,60, 3,3,12,3,3,92, 3,3,2,6,12,76, 3,2,14,3,1,93, + 3,2,14,4,3,61, 3,2,14,5,3,61, 3,2,1,3,14,93, 3,2,1,6,12,77, 3,1,13,2,2,94, 3,1,13,4,3,62, 3,1,13,5,3,62, 3,1,12,2,3,94, + 3,1,11,2,4,94, 3,1,10,2,5,94, 3,1,9,2,6,94, 3,1,9,4,3,62, 3,1,8,2,7,94, 3,1,8,4,3,62, 3,1,7,2,8,94, 3,1,7,4,3,62, + 3,1,6,2,9,94, 3,1,6,4,3,62, 3,1,5,2,10,94, 3,1,5,4,3,62, 3,1,4,2,11,94, 3,1,4,4,3,62, 3,1,3,2,12,94, 3,1,2,2,13,94, + 3,1,1,2,14,94, 3,1,1,4,3,62, 3,1,1,6,3,62, 3,0,12,2,3,95, 3,0,12,5,3,63, 3,0,11,2,4,95, 3,0,10,2,5,95, 3,0,10,6,3,63, + 3,0,3,2,12,95, 3,0,3,5,3,63, 3,0,2,2,13,95, 3,0,2,6,3,63, 4,13,10,2,5,82, 4,13,10,3,5,82, 4,13,10,5,4,50, 4,13,9,2,6,82, + 4,13,9,3,6,82, 4,13,8,2,7,82, 4,13,8,3,7,82, 4,13,7,2,8,82, 4,13,7,3,8,82, 4,13,6,2,9,82, 4,13,6,3,9,82, 4,13,5,2,10,82, + 4,13,5,3,10,82, 4,13,4,2,11,82, 4,13,4,3,11,82, 4,13,4,6,11,66, 4,12,11,3,4,83, 4,12,11,5,4,51, 4,12,3,3,12,83, 4,12,3,6,11,67, + 4,11,12,3,3,84, 4,11,12,5,4,52, 4,11,2,3,13,84, 4,11,2,6,11,68, 4,10,12,5,4,53, 4,10,2,6,11,69, 4,9,12,5,4,54, 4,9,2,6,11,70, + 4,8,12,5,4,55, 4,8,2,6,11,71, 4,7,12,4,4,56, 4,7,12,5,4,56, 4,7,2,4,4,56, 4,7,2,6,11,72, 4,6,11,4,4,57, 4,6,11,5,4,57, + 4,6,3,6,11,73, 4,5,10,5,4,58, 4,5,3,6,11,74, 4,4,11,3,4,91, 4,4,11,5,4,59, 4,4,2,3,13,91, 4,4,2,6,11,75, 4,3,13,3,2,92, + 4,3,13,5,4,60, 4,3,12,3,3,92, 4,3,2,6,11,76, 4,2,14,3,1,93, 4,2,14,4,4,61, 4,2,14,5,4,61, 4,2,1,3,14,93, 4,2,1,6,11,77, + 4,1,13,4,4,62, 4,1,13,5,4,62, 4,1,9,4,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, 4,1,6,4,4,62, 4,1,5,4,4,62, 4,1,4,4,4,62, + 4,1,1,4,4,62, 4,1,1,6,11,78, 4,0,12,5,4,63, 4,0,10,6,4,63, 4,0,3,5,4,63, 4,0,2,6,4,63, 5,14,9,2,6,81, 5,14,9,3,6,81, + 5,14,9,5,5,49, 5,14,8,2,7,81, 5,14,8,3,7,81, 5,14,7,2,8,81, 5,14,7,3,8,81, 5,14,6,2,9,81, 5,14,6,3,9,81, 5,14,5,2,10,81, + 5,14,5,3,10,81, 5,14,5,6,10,65, 5,13,10,3,5,82, 5,13,10,5,5,50, 5,13,4,3,11,82, 5,13,4,6,10,66, 5,12,11,3,4,83, 5,12,11,5,5,51, + 5,12,3,3,12,83, 5,12,3,6,10,67, 5,11,12,3,3,84, 5,11,12,5,5,52, 5,11,2,3,13,84, 5,11,2,6,10,68, 5,10,12,5,5,53, 5,10,2,6,10,69, + 5,9,12,5,5,54, 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,2,6,10,71, 5,7,12,4,5,56, 5,7,12,5,5,56, 5,7,2,4,5,56, 5,7,2,6,10,72, + 5,6,11,4,5,57, 5,6,11,5,5,57, 5,6,3,6,10,73, 5,5,10,5,5,58, 5,5,3,6,10,74, 5,4,11,3,4,91, 5,4,11,5,5,59, 5,4,2,3,13,91, + 5,4,2,6,10,75, 5,3,13,3,2,92, 5,3,13,5,5,60, 5,3,12,3,3,92, 5,3,2,6,10,76, 5,2,14,3,1,93, 5,2,14,4,5,61, 5,2,14,5,5,61, + 5,2,1,3,14,93, 5,2,1,6,10,77, 5,1,13,4,5,62, 5,1,13,5,5,62, 5,1,9,4,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, + 5,1,5,4,5,62, 5,1,4,4,5,62, 5,1,1,4,5,62, 5,1,1,6,10,78, 5,0,12,5,5,63, 5,0,10,6,5,63, 5,0,3,5,5,63, 5,0,2,6,5,63, + 6,14,9,3,6,81, 6,14,9,5,6,49, 6,14,8,3,7,81, 6,14,7,3,8,81, 6,14,6,3,9,81, 6,14,5,3,10,81, 6,14,5,6,9,65, 6,13,10,3,5,82, + 6,13,10,5,6,50, 6,13,4,3,11,82, 6,13,4,6,9,66, 6,12,11,3,4,83, 6,12,11,5,6,51, 6,12,3,3,12,83, 6,12,3,6,9,67, 6,11,12,3,3,84, + 6,11,12,5,6,52, 6,11,2,3,13,84, 6,11,2,6,9,68, 6,10,12,5,6,53, 6,10,2,6,9,69, 6,9,12,5,6,54, 6,9,2,6,9,70, 6,8,12,5,6,55, + 6,8,2,6,9,71, 6,7,12,4,6,56, 6,7,12,5,6,56, 6,7,2,4,6,56, 6,7,2,6,9,72, 6,6,11,4,6,57, 6,6,11,5,6,57, 6,6,3,6,9,73, + 6,5,10,5,6,58, 6,5,3,6,9,74, 6,4,11,3,4,91, 6,4,11,5,6,59, 6,4,2,3,13,91, 6,4,2,6,9,75, 6,3,13,3,2,92, 6,3,13,5,6,60, + 6,3,12,3,3,92, 6,3,2,6,9,76, 6,2,14,3,1,93, 6,2,14,4,6,61, 6,2,14,5,6,61, 6,2,1,3,14,93, 6,2,1,6,9,77, 6,1,13,4,6,62, + 6,1,13,5,6,62, 6,1,9,4,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,4,4,6,62, 6,1,1,4,6,62, + 6,1,1,6,9,78, 6,0,12,1,3,95, 6,0,12,5,6,63, 6,0,11,1,4,95, 6,0,10,1,5,95, 6,0,10,6,6,63, 6,0,3,1,12,95, 6,0,3,5,6,63, + 6,0,2,1,13,95, 6,0,2,6,6,63, 7,14,9,3,6,81, 7,14,9,5,7,49, 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,5,3,10,81, + 7,14,5,6,8,65, 7,13,10,3,5,82, 7,13,10,5,7,50, 7,13,4,3,11,82, 7,13,4,6,8,66, 7,12,11,3,4,83, 7,12,11,5,7,51, 7,12,3,3,12,83, + 7,12,3,6,8,67, 7,11,12,3,3,84, 7,11,12,5,7,52, 7,11,2,3,13,84, 7,11,2,6,8,68, 7,10,12,5,7,53, 7,10,2,6,8,69, 7,9,12,5,7,54, + 7,9,2,6,8,70, 7,8,12,5,7,55, 7,8,2,6,8,71, 7,7,12,4,7,56, 7,7,12,5,7,56, 7,7,2,4,7,56, 7,7,2,6,8,72, 7,6,11,4,7,57, + 7,6,11,5,7,57, 7,6,3,6,8,73, 7,5,10,5,7,58, 7,5,3,6,8,74, 7,4,11,3,4,91, 7,4,11,5,7,59, 7,4,2,3,13,91, 7,4,2,6,8,75, + 7,3,13,3,2,92, 7,3,13,5,7,60, 7,3,12,3,3,92, 7,3,2,6,8,76, 7,2,14,3,1,93, 7,2,14,4,7,61, 7,2,14,5,7,61, 7,2,1,3,14,93, + 7,2,1,6,8,77, 7,1,13,1,2,94, 7,1,13,4,7,62, 7,1,13,5,7,62, 7,1,12,1,3,94, 7,1,12,4,7,62, 7,1,11,1,4,94, 7,1,11,4,7,62, + 7,1,10,1,5,94, 7,1,10,4,7,62, 7,1,9,1,6,94, 7,1,9,4,7,62, 7,1,8,1,7,94, 7,1,8,4,7,62, 7,1,7,1,8,94, 7,1,7,4,7,62, + 7,1,6,1,9,94, 7,1,6,4,7,62, 7,1,5,1,10,94, 7,1,5,4,7,62, 7,1,4,1,11,94, 7,1,4,4,7,62, 7,1,3,1,12,94, 7,1,3,4,7,62, + 7,1,2,1,13,94, 7,1,2,4,7,62, 7,1,1,1,14,94, 7,1,1,4,7,62, 7,1,1,6,7,62, 8,14,9,3,6,81, 8,14,9,5,8,49, 8,14,8,3,7,81, + 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, 8,14,5,6,7,65, 8,13,10,3,5,82, 8,13,10,5,8,50, 8,13,4,3,11,82, 8,13,4,6,7,66, + 8,12,11,3,4,83, 8,12,11,5,8,51, 8,12,3,3,12,83, 8,12,3,6,7,67, 8,11,12,3,3,84, 8,11,12,5,8,52, 8,11,2,3,13,84, 8,11,2,6,7,68, + 8,10,12,5,8,53, 8,10,2,6,7,69, 8,9,12,5,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, 8,8,2,6,7,71, 8,7,12,4,8,56, 8,7,12,5,8,56, + 8,7,2,4,8,56, 8,7,2,6,7,72, 8,6,11,4,8,57, 8,6,11,5,8,57, 8,6,3,6,7,73, 8,5,10,5,8,58, 8,5,3,6,7,74, 8,4,11,3,4,91, + 8,4,11,5,8,59, 8,4,2,3,13,91, 8,4,2,6,7,75, 8,3,13,3,2,92, 8,3,13,5,8,60, 8,3,12,3,3,92, 8,3,2,6,7,76, 8,2,14,3,1,93, + 8,2,14,4,8,61, 8,2,14,5,8,61, 8,2,13,4,8,61, 8,2,12,4,8,61, 8,2,11,4,8,61, 8,2,10,4,8,61, 8,2,9,4,8,61, 8,2,8,4,8,61, + 8,2,7,4,8,61, 8,2,6,4,8,61, 8,2,5,4,8,61, 8,2,4,4,8,61, 8,2,3,4,8,61, 8,2,2,4,8,61, 8,2,1,3,14,93, 8,2,1,4,8,61, + 8,2,1,6,7,77, 9,14,9,3,6,81, 9,14,9,5,9,49, 9,14,8,3,7,81, 9,14,7,3,8,81, 9,14,6,3,9,81, 9,14,5,3,10,81, 9,14,5,6,6,65, + 9,13,10,3,5,82, 9,13,10,5,9,50, 9,13,4,3,11,82, 9,13,4,6,6,66, 9,12,11,3,4,83, 9,12,11,5,9,51, 9,12,3,3,12,83, 9,12,3,6,6,67, + 9,11,12,3,3,84, 9,11,12,5,9,52, 9,11,2,3,13,84, 9,11,2,6,6,68, 9,10,12,5,9,53, 9,10,2,6,6,69, 9,9,12,5,9,54, 9,9,2,6,6,70, + 9,8,12,5,9,55, 9,8,2,6,6,71, 9,7,12,4,9,56, 9,7,12,5,9,56, 9,7,2,4,9,56, 9,7,2,6,6,72, 9,6,11,4,9,57, 9,6,11,5,9,57, + 9,6,3,6,6,73, 9,5,10,5,9,58, 9,5,3,6,6,74, 9,4,11,3,4,91, 9,4,11,5,9,59, 9,4,2,3,13,91, 9,4,2,6,6,75, 9,3,13,3,2,92, + 9,3,13,5,9,60, 9,3,12,3,3,92, 9,3,2,6,6,76, 9,2,14,3,1,93, 9,2,14,4,9,61, 9,2,14,5,9,61, 9,2,1,3,14,93, 9,2,1,6,6,77, + 9,1,13,2,2,94, 9,1,13,4,9,62, 9,1,13,5,9,62, 9,1,12,2,3,94, 9,1,11,2,4,94, 9,1,10,2,5,94, 9,1,9,2,6,94, 9,1,9,4,9,62, + 9,1,8,2,7,94, 9,1,8,4,9,62, 9,1,7,2,8,94, 9,1,7,4,9,62, 9,1,6,2,9,94, 9,1,6,4,9,62, 9,1,5,2,10,94, 9,1,5,4,9,62, + 9,1,4,2,11,94, 9,1,4,4,9,62, 9,1,3,2,12,94, 9,1,2,2,13,94, 9,1,1,2,14,94, 9,1,1,4,9,62, 9,1,1,6,6,78, 9,0,12,2,3,95, + 9,0,12,5,6,79, 9,0,11,2,4,95, 9,0,10,2,5,95, 9,0,10,6,6,79, 9,0,3,2,12,95, 9,0,3,5,6,79, 9,0,2,2,13,95, 9,0,2,6,6,79, + 10,14,9,1,6,81, 10,14,9,3,6,81, 10,14,9,5,10,49, 10,14,8,1,7,81, 10,14,8,3,7,81, 10,14,7,1,8,81, 10,14,7,3,8,81, 10,14,6,1,9,81, + 10,14,6,3,9,81, 10,14,5,1,10,81, 10,14,5,3,10,81, 10,14,5,6,5,65, 10,13,10,3,5,82, 10,13,10,5,10,50, 10,13,4,3,11,82, 10,13,4,6,5,66, + 10,12,11,3,4,83, 10,12,11,5,10,51, 10,12,3,3,12,83, 10,12,3,6,5,67, 10,11,12,3,3,84, 10,11,12,5,10,52, 10,11,2,3,13,84, 10,11,2,6,5,68, + 10,10,12,5,10,53, 10,10,2,6,5,69, 10,9,12,5,10,54, 10,9,2,6,5,70, 10,8,12,5,10,55, 10,8,2,6,5,71, 10,7,12,4,10,56, 10,7,12,5,10,56, + 10,7,2,4,10,56, 10,7,2,6,5,72, 10,6,11,4,10,57, 10,6,11,5,10,57, 10,6,3,6,5,73, 10,5,10,5,10,58, 10,5,3,6,5,74, 10,4,11,3,4,91, + 10,4,11,5,10,59, 10,4,2,3,13,91, 10,4,2,6,5,75, 10,3,13,3,2,92, 10,3,13,5,10,60, 10,3,12,3,3,92, 10,3,2,6,5,76, 10,2,14,3,1,93, + 10,2,14,4,10,61, 10,2,14,5,10,61, 10,2,1,3,14,93, 10,2,1,6,5,77, 10,1,13,4,10,62, 10,1,13,5,10,62, 10,1,9,4,10,62, 10,1,8,4,10,62, + 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,4,4,10,62, 10,1,1,4,10,62, 10,1,1,6,5,78, 10,0,12,5,5,79, 10,0,10,6,5,79, + 10,0,3,5,5,79, 10,0,2,6,5,79, 11,13,10,1,5,82, 11,13,10,3,5,82, 11,13,10,5,11,50, 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, + 11,13,8,3,7,82, 11,13,7,1,8,82, 11,13,7,3,8,82, 11,13,6,1,9,82, 11,13,6,3,9,82, 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,4,1,11,82, + 11,13,4,3,11,82, 11,13,4,6,4,66, 11,12,11,3,4,83, 11,12,11,5,11,51, 11,12,3,3,12,83, 11,12,3,6,4,67, 11,11,12,3,3,84, 11,11,12,5,11,52, + 11,11,2,3,13,84, 11,11,2,6,4,68, 11,10,12,5,11,53, 11,10,2,6,4,69, 11,9,12,5,11,54, 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,2,6,4,71, + 11,7,12,4,11,56, 11,7,12,5,11,56, 11,7,2,4,11,56, 11,7,2,6,4,72, 11,6,11,4,11,57, 11,6,11,5,11,57, 11,6,3,6,4,73, 11,5,10,5,11,58, + 11,5,3,6,4,74, 11,4,11,3,4,91, 11,4,11,5,11,59, 11,4,2,3,13,91, 11,4,2,6,4,75, 11,3,13,3,2,92, 11,3,13,5,11,60, 11,3,12,3,3,92, + 11,3,2,6,4,76, 11,2,14,3,1,93, 11,2,14,4,11,61, 11,2,14,5,11,61, 11,2,1,3,14,93, 11,2,1,6,4,77, 11,1,13,4,11,62, 11,1,13,5,11,62, + 11,1,9,4,11,62, 11,1,8,4,11,62, 11,1,7,4,11,62, 11,1,6,4,11,62, 11,1,5,4,11,62, 11,1,4,4,11,62, 11,1,1,4,11,62, 11,1,1,6,4,78, + 11,0,12,5,4,79, 11,0,10,6,4,79, 11,0,3,5,4,79, 11,0,2,6,4,79, 12,12,11,1,4,83, 12,12,11,3,4,83, 12,12,11,5,12,51, 12,12,10,1,5,83, + 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, 12,12,8,1,7,83, 12,12,8,3,7,83, 12,12,7,1,8,83, 12,12,7,3,8,83, 12,12,6,1,9,83, + 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, 12,12,4,1,11,83, 12,12,4,3,11,83, 12,12,3,1,12,83, 12,12,3,3,12,83, 12,12,3,6,3,67, + 12,11,12,3,3,84, 12,11,12,5,12,52, 12,11,2,3,13,84, 12,11,2,6,3,68, 12,10,12,5,12,53, 12,10,2,6,3,69, 12,9,12,5,12,54, 12,9,2,6,3,70, + 12,8,12,5,12,55, 12,8,2,6,3,71, 12,7,12,4,12,56, 12,7,12,5,12,56, 12,7,2,4,12,56, 12,7,2,6,3,72, 12,6,11,4,12,57, 12,6,11,5,12,57, + 12,6,3,6,3,73, 12,5,10,5,12,58, 12,5,3,6,3,74, 12,4,11,3,4,91, 12,4,11,5,12,59, 12,4,2,3,13,91, 12,4,2,6,3,75, 12,3,13,3,2,92, + 12,3,13,5,12,60, 12,3,12,3,3,92, 12,3,2,6,3,76, 12,2,14,3,1,93, 12,2,14,4,12,61, 12,2,14,5,12,61, 12,2,1,3,14,93, 12,2,1,6,3,77, + 12,1,13,4,12,62, 12,1,13,5,12,62, 12,1,9,4,12,62, 12,1,8,4,12,62, 12,1,7,4,12,62, 12,1,6,4,12,62, 12,1,5,4,12,62, 12,1,4,4,12,62, + 12,1,1,4,12,62, 12,1,1,6,3,78, 12,0,12,1,3,95, 12,0,12,5,3,79, 12,0,11,1,4,95, 12,0,10,1,5,95, 12,0,10,6,3,79, 12,0,3,1,12,95, + 12,0,3,5,3,79, 12,0,2,1,13,95, 12,0,2,6,3,79, 13,11,12,1,3,84, 13,11,12,3,3,84, 13,11,12,5,13,52, 13,11,11,1,4,84, 13,11,11,3,4,84, + 13,11,10,1,5,84, 13,11,10,3,5,84, 13,11,9,1,6,84, 13,11,9,3,6,84, 13,11,8,1,7,84, 13,11,8,3,7,84, 13,11,7,1,8,84, 13,11,7,3,8,84, + 13,11,6,1,9,84, 13,11,6,3,9,84, 13,11,5,1,10,84, 13,11,5,3,10,84, 13,11,4,1,11,84, 13,11,4,3,11,84, 13,11,3,1,12,84, 13,11,3,3,12,84, + 13,11,2,1,13,84, 13,11,2,3,13,84, 13,11,2,6,2,68, 13,10,12,5,13,53, 13,10,2,6,2,69, 13,9,12,5,13,54, 13,9,2,6,2,70, 13,8,12,5,13,55, + 13,8,2,6,2,71, 13,7,12,1,3,88, 13,7,12,4,13,56, 13,7,12,5,13,56, 13,7,11,1,4,88, 13,7,10,1,5,88, 13,7,9,1,6,88, 13,7,8,1,7,88, + 13,7,7,1,8,88, 13,7,6,1,9,88, 13,7,5,1,10,88, 13,7,4,1,11,88, 13,7,3,1,12,88, 13,7,2,1,13,88, 13,7,2,4,13,56, 13,7,2,6,2,72, + 13,6,11,1,4,89, 13,6,11,4,13,57, 13,6,11,5,13,57, 13,6,10,1,5,89, 13,6,9,1,6,89, 13,6,8,1,7,89, 13,6,7,1,8,89, 13,6,6,1,9,89, + 13,6,5,1,10,89, 13,6,4,1,11,89, 13,6,3,1,12,89, 13,6,3,6,2,73, 13,5,10,1,5,90, 13,5,10,5,13,58, 13,5,9,1,6,90, 13,5,8,1,7,90, + 13,5,7,1,8,90, 13,5,6,1,9,90, 13,5,5,1,10,90, 13,5,4,1,11,90, 13,5,3,1,12,90, 13,5,3,6,13,58, 13,4,11,1,4,91, 13,4,11,3,4,91, + 13,4,11,5,13,59, 13,4,10,1,5,91, 13,4,9,1,6,91, 13,4,8,1,7,91, 13,4,7,1,8,91, 13,4,6,1,9,91, 13,4,5,1,10,91, 13,4,4,1,11,91, + 13,4,3,1,12,91, 13,4,2,1,13,91, 13,4,2,3,13,91, 13,4,2,6,2,75, 13,3,13,1,2,92, 13,3,13,3,2,92, 13,3,13,5,13,60, 13,3,12,1,3,92, + 13,3,12,3,3,92, 13,3,11,1,4,92, 13,3,10,1,5,92, 13,3,9,1,6,92, 13,3,8,1,7,92, 13,3,7,1,8,92, 13,3,6,1,9,92, 13,3,5,1,10,92, + 13,3,4,1,11,92, 13,3,3,1,12,92, 13,3,2,1,13,92, 13,3,2,6,2,76, 13,2,14,1,1,93, 13,2,14,3,1,93, 13,2,14,4,13,61, 13,2,14,5,13,61, + 13,2,13,1,2,93, 13,2,12,1,3,93, 13,2,11,1,4,93, 13,2,10,1,5,93, 13,2,9,1,6,93, 13,2,8,1,7,93, 13,2,7,1,8,93, 13,2,6,1,9,93, + 13,2,5,1,10,93, 13,2,4,1,11,93, 13,2,3,1,12,93, 13,2,2,1,13,93, 13,2,1,1,14,93, 13,2,1,3,14,93, 13,2,1,6,2,77, 13,1,13,1,2,94, + 13,1,13,4,2,78, 13,1,13,5,2,78, 13,1,12,1,3,94, 13,1,12,4,2,78, 13,1,11,1,4,94, 13,1,11,4,2,78, 13,1,10,1,5,94, 13,1,10,4,2,78, + 13,1,9,1,6,94, 13,1,9,4,2,78, 13,1,8,1,7,94, 13,1,8,4,2,78, 13,1,7,1,8,94, 13,1,7,4,2,78, 13,1,6,1,9,94, 13,1,6,4,2,78, + 13,1,5,1,10,94, 13,1,5,4,2,78, 13,1,4,1,11,94, 13,1,4,4,2,78, 13,1,3,1,12,94, 13,1,3,4,2,78, 13,1,2,1,13,94, 13,1,2,4,2,78, + 13,1,1,1,14,94, 13,1,1,4,2,78, 13,1,1,6,2,78, 14,10,12,1,3,85, 14,10,12,3,3,85, 14,10,12,5,14,53, 14,10,11,1,4,85, 14,10,11,3,4,85, + 14,10,10,1,5,85, 14,10,10,3,5,85, 14,10,9,1,6,85, 14,10,9,3,6,85, 14,10,8,1,7,85, 14,10,8,3,7,85, 14,10,7,1,8,85, 14,10,7,3,8,85, + 14,10,6,1,9,85, 14,10,6,3,9,85, 14,10,5,1,10,85, 14,10,5,3,10,85, 14,10,4,1,11,85, 14,10,4,3,11,85, 14,10,3,1,12,85, 14,10,3,3,12,85, + 14,10,2,1,13,85, 14,10,2,3,13,85, 14,10,2,6,1,69, 14,9,12,1,3,86, 14,9,12,5,14,54, 14,9,11,1,4,86, 14,9,10,1,5,86, 14,9,9,1,6,86, + 14,9,8,1,7,86, 14,9,7,1,8,86, 14,9,6,1,9,86, 14,9,5,1,10,86, 14,9,4,1,11,86, 14,9,3,1,12,86, 14,9,2,1,13,86, 14,9,2,6,1,70, + 14,8,12,1,3,87, 14,8,12,4,14,55, 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,11,4,14,55, 14,8,10,1,5,87, 14,8,10,4,14,55, 14,8,9,1,6,87, + 14,8,9,4,14,55, 14,8,8,1,7,87, 14,8,8,4,14,55, 14,8,7,1,8,87, 14,8,7,4,14,55, 14,8,6,1,9,87, 14,8,6,4,14,55, 14,8,5,1,10,87, + 14,8,5,4,14,55, 14,8,4,1,11,87, 14,8,4,4,14,55, 14,8,3,1,12,87, 14,8,3,4,14,55, 14,8,2,1,13,87, 14,8,2,4,14,55, 14,8,2,6,1,71, + }, + }, + }, +} diff --git a/assets/voxels/middle_aged_woman.lua b/assets/voxels/middle_aged_woman.lua new file mode 100644 index 0000000..b5cf614 --- /dev/null +++ b/assets/voxels/middle_aged_woman.lua @@ -0,0 +1,295 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "middle_aged_woman" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "middle_aged_woman", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1544, + count = 1018, + faces = { + 1,4,11,2,5,43, 1,4,11,3,5,43, 1,4,11,5,14,27, 1,4,10,2,6,43, 1,4,10,3,6,43, 1,4,9,2,7,43, 1,4,9,3,7,43, 1,4,8,2,8,43, + 1,4,8,3,8,43, 1,4,7,2,9,43, 1,4,7,3,9,43, 1,4,6,2,10,43, 1,4,6,3,10,43, 1,4,5,2,11,43, 1,4,5,3,11,43, 1,4,5,6,14,27, + 1,3,11,2,5,44, 1,3,11,5,14,28, 1,3,10,2,6,44, 1,3,9,2,7,44, 1,3,8,2,8,44, 1,3,7,2,9,44, 1,3,6,2,10,44, 1,3,5,2,11,44, + 1,3,5,6,14,28, 1,2,11,2,5,45, 1,2,11,4,14,29, 1,2,11,5,14,29, 1,2,10,2,6,45, 1,2,10,4,14,29, 1,2,9,2,7,45, 1,2,9,4,14,29, + 1,2,8,2,8,45, 1,2,8,4,14,29, 1,2,7,2,9,45, 1,2,7,4,14,29, 1,2,6,2,10,45, 1,2,6,4,14,29, 1,2,5,2,11,45, 1,2,5,4,14,29, + 1,2,4,2,12,45, 1,2,4,3,12,45, 1,2,4,4,14,29, 1,2,4,6,14,29, 2,11,14,2,2,36, 2,11,14,3,2,36, 2,11,14,5,2,4, 2,11,13,2,3,36, + 2,11,13,3,3,36, 2,11,12,2,4,36, 2,11,12,3,4,36, 2,11,11,2,5,36, 2,11,11,3,5,36, 2,11,10,2,6,36, 2,11,10,3,6,36, 2,11,9,2,7,36, + 2,11,9,3,7,36, 2,11,8,2,8,36, 2,11,8,3,8,36, 2,11,7,2,9,36, 2,11,7,3,9,36, 2,11,6,2,10,36, 2,11,6,3,10,36, 2,11,5,2,11,36, + 2,11,5,3,11,36, 2,11,4,2,12,36, 2,11,4,3,12,36, 2,11,3,2,13,36, 2,11,3,3,13,36, 2,11,2,2,14,36, 2,11,2,3,14,36, 2,11,2,6,13,20, + 2,10,14,2,2,37, 2,10,14,4,2,5, 2,10,14,5,2,5, 2,10,13,2,3,37, 2,10,13,4,2,5, 2,10,12,2,4,37, 2,10,12,4,2,5, 2,10,11,2,5,37, + 2,10,11,4,2,5, 2,10,10,2,6,37, 2,10,10,4,2,5, 2,10,9,2,7,37, 2,10,9,4,2,5, 2,10,8,2,8,37, 2,10,8,4,2,5, 2,10,7,2,9,37, + 2,10,7,4,2,5, 2,10,6,2,10,37, 2,10,6,4,2,5, 2,10,5,2,11,37, 2,10,5,4,2,5, 2,10,4,2,12,37, 2,10,4,4,2,5, 2,10,3,2,13,37, + 2,10,3,4,2,5, 2,10,2,2,14,37, 2,10,2,4,2,5, 2,10,2,6,13,21, 2,5,11,2,5,42, 2,5,11,3,5,42, 2,5,11,5,13,26, 2,5,10,2,6,42, + 2,5,10,3,6,42, 2,5,9,2,7,42, 2,5,9,3,7,42, 2,5,8,2,8,42, 2,5,8,3,8,42, 2,5,7,2,9,42, 2,5,7,3,9,42, 2,5,6,2,10,42, + 2,5,6,3,10,42, 2,5,6,6,13,26, 2,4,11,5,2,11, 2,4,5,3,11,43, 2,4,5,6,13,27, 2,3,11,5,2,12, 2,3,5,6,13,28, 2,2,11,4,2,13, + 2,2,11,5,2,13, 2,2,10,4,2,13, 2,2,9,4,2,13, 2,2,8,4,2,13, 2,2,7,4,2,13, 2,2,6,4,2,13, 2,2,5,4,2,13, 2,2,4,3,12,45, + 2,2,4,4,2,13, 2,2,4,6,13,29, 3,13,13,2,3,34, 3,13,13,3,3,34, 3,13,13,5,3,2, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,11,2,5,34, + 3,13,11,3,5,34, 3,13,10,2,6,34, 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, + 3,13,7,3,9,34, 3,13,6,2,10,34, 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,3,2,13,34, + 3,13,3,3,13,34, 3,13,3,6,12,18, 3,12,13,2,3,35, 3,12,13,5,3,3, 3,12,12,2,4,35, 3,12,11,2,5,35, 3,12,10,2,6,35, 3,12,9,2,7,35, + 3,12,8,2,8,35, 3,12,7,2,9,35, 3,12,6,2,10,35, 3,12,5,2,11,35, 3,12,4,2,12,35, 3,12,3,2,13,35, 3,12,2,2,14,35, 3,12,2,3,14,35, + 3,12,2,6,12,19, 3,11,14,3,2,36, 3,11,14,5,3,4, 3,11,2,6,12,20, 3,10,14,4,3,5, 3,10,14,5,3,5, 3,10,2,4,3,5, 3,10,2,6,12,21, + 3,9,13,2,3,38, 3,9,13,5,3,6, 3,9,12,2,4,38, 3,9,11,2,5,38, 3,9,10,2,6,38, 3,9,9,2,7,38, 3,9,8,2,8,38, 3,9,7,2,9,38, + 3,9,6,2,10,38, 3,9,5,2,11,38, 3,9,4,2,12,38, 3,9,3,2,13,38, 3,9,3,6,12,22, 3,8,13,2,3,39, 3,8,13,4,3,7, 3,8,13,5,3,7, + 3,8,12,2,4,39, 3,8,12,4,3,7, 3,8,11,2,5,39, 3,8,11,4,3,7, 3,8,10,2,6,39, 3,8,10,4,3,7, 3,8,9,2,7,39, 3,8,9,4,3,7, + 3,8,8,2,8,39, 3,8,8,4,3,7, 3,8,7,2,9,39, 3,8,7,4,3,7, 3,8,6,2,10,39, 3,8,6,4,3,7, 3,8,5,2,11,39, 3,8,5,4,3,7, + 3,8,4,2,12,39, 3,8,4,4,3,7, 3,8,3,2,13,39, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,6,12,2,4,41, 3,6,12,3,4,41, 3,6,12,4,12,25, + 3,6,12,5,12,25, 3,6,11,2,5,41, 3,6,11,3,5,41, 3,6,10,2,6,41, 3,6,10,3,6,41, 3,6,9,2,7,41, 3,6,9,3,7,41, 3,6,8,2,8,41, + 3,6,8,3,8,41, 3,6,7,2,9,41, 3,6,7,3,9,41, 3,6,6,2,10,41, 3,6,6,3,10,41, 3,6,5,2,11,41, 3,6,5,3,11,41, 3,6,5,4,12,25, + 3,6,5,6,12,25, 3,5,11,5,3,10, 3,5,6,6,12,26, 3,4,11,5,3,11, 3,4,5,3,11,43, 3,4,5,6,12,27, 3,3,11,5,3,12, 3,3,5,6,12,28, + 3,2,11,5,3,13, 3,2,4,3,12,45, 3,2,4,6,12,29, 3,1,11,2,5,46, 3,1,11,4,3,14, 3,1,11,5,3,14, 3,1,10,2,6,46, 3,1,9,2,7,46, + 3,1,8,2,8,46, 3,1,7,2,9,46, 3,1,6,2,10,46, 3,1,5,2,11,46, 3,1,4,2,12,46, 3,1,4,4,3,14, 3,1,4,6,12,30, 3,0,10,2,6,47, + 3,0,10,5,3,15, 3,0,9,2,7,47, 3,0,8,2,8,47, 3,0,7,2,9,47, 3,0,6,2,10,47, 3,0,5,2,11,47, 3,0,5,6,12,31, 4,14,12,2,4,33, + 4,14,12,3,4,33, 4,14,12,5,4,1, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, + 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,5,2,11,33, 4,14,5,3,11,33, + 4,14,4,2,12,33, 4,14,4,3,12,33, 4,14,4,6,11,17, 4,13,13,3,3,34, 4,13,13,5,4,2, 4,13,3,3,13,34, 4,13,3,6,11,18, 4,12,13,5,4,3, + 4,12,2,3,14,35, 4,12,2,6,11,19, 4,11,14,3,2,36, 4,11,14,5,4,4, 4,11,2,6,11,20, 4,10,14,4,4,5, 4,10,14,5,4,5, 4,10,2,4,4,5, + 4,10,2,6,11,21, 4,9,13,5,4,6, 4,9,3,6,11,22, 4,8,13,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,13,2,3,40, 4,7,13,4,4,8, + 4,7,13,5,4,8, 4,7,12,2,4,40, 4,7,11,2,5,40, 4,7,10,2,6,40, 4,7,9,2,7,40, 4,7,8,2,8,40, 4,7,7,2,9,40, 4,7,6,2,10,40, + 4,7,5,2,11,40, 4,7,4,2,12,40, 4,7,4,4,4,8, 4,7,4,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,5,4,4,9, 4,6,5,6,11,25, + 4,5,11,5,4,10, 4,5,6,6,11,26, 4,4,11,5,4,11, 4,4,5,3,11,43, 4,4,5,6,11,27, 4,3,11,5,4,12, 4,3,5,6,11,28, 4,2,11,5,4,13, + 4,2,4,3,12,45, 4,2,4,6,11,29, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,4,4,4,14, 4,1,4,6,11,30, 4,0,10,5,4,15, 4,0,5,6,11,31, + 5,15,11,2,5,32, 5,15,11,3,5,32, 5,15,11,5,5,0, 5,15,10,2,6,32, 5,15,10,3,6,32, 5,15,9,2,7,32, 5,15,9,3,7,32, 5,15,8,2,8,32, + 5,15,8,3,8,32, 5,15,7,2,9,32, 5,15,7,3,9,32, 5,15,7,6,10,16, 5,14,12,3,4,33, 5,14,12,5,5,1, 5,14,6,3,10,33, 5,14,5,3,11,33, + 5,14,4,3,12,33, 5,14,4,6,10,17, 5,13,13,3,3,34, 5,13,13,5,5,2, 5,13,3,3,13,34, 5,13,3,6,10,18, 5,12,13,5,5,3, 5,12,2,3,14,35, + 5,12,2,6,10,19, 5,11,14,3,2,36, 5,11,14,5,5,4, 5,11,2,6,10,20, 5,10,14,4,5,5, 5,10,14,5,5,5, 5,10,2,4,5,5, 5,10,2,6,10,21, + 5,9,13,5,5,6, 5,9,3,6,10,22, 5,8,13,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,4,4,5,8, + 5,7,4,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,5,4,5,9, 5,6,5,6,10,25, 5,5,11,5,5,10, 5,5,6,6,10,26, 5,4,11,5,5,11, + 5,4,5,3,11,43, 5,4,5,6,10,27, 5,3,11,5,5,12, 5,3,5,6,10,28, 5,2,11,5,5,13, 5,2,4,3,12,45, 5,2,4,6,10,29, 5,1,11,4,5,14, + 5,1,11,5,5,14, 5,1,4,4,5,14, 5,1,4,6,10,30, 5,0,10,5,5,15, 5,0,5,6,10,31, 6,15,11,3,5,32, 6,15,11,5,6,0, 6,15,10,3,6,32, + 6,15,9,3,7,32, 6,15,8,3,8,32, 6,15,7,3,9,32, 6,15,7,6,9,16, 6,14,12,3,4,33, 6,14,12,5,6,1, 6,14,6,3,10,33, 6,14,5,3,11,33, + 6,14,4,3,12,33, 6,14,4,6,9,17, 6,13,13,3,3,34, 6,13,13,5,6,2, 6,13,3,3,13,34, 6,13,3,6,9,18, 6,12,13,5,6,3, 6,12,2,3,14,35, + 6,12,2,6,9,19, 6,11,14,3,2,36, 6,11,14,5,6,4, 6,11,2,6,9,20, 6,10,14,4,6,5, 6,10,14,5,6,5, 6,10,2,4,6,5, 6,10,2,6,9,21, + 6,9,13,5,6,6, 6,9,3,6,9,22, 6,8,13,5,6,7, 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,4,4,6,8, + 6,7,4,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,5,4,6,9, 6,6,5,6,9,25, 6,5,11,5,6,10, 6,5,6,6,9,26, 6,4,11,5,6,11, + 6,4,5,3,11,43, 6,4,5,6,9,27, 6,3,11,5,6,12, 6,3,5,6,9,28, 6,2,11,5,6,13, 6,2,4,3,12,45, 6,2,4,6,9,29, 6,1,11,4,6,14, + 6,1,11,5,6,14, 6,1,4,4,6,14, 6,1,4,6,9,30, 6,0,10,5,6,15, 6,0,5,6,9,31, 7,15,11,3,5,32, 7,15,11,5,7,0, 7,15,10,3,6,32, + 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, 7,15,7,6,8,16, 7,14,12,3,4,33, 7,14,12,5,7,1, 7,14,6,3,10,33, 7,14,5,3,11,33, + 7,14,4,3,12,33, 7,14,4,6,8,17, 7,13,13,3,3,34, 7,13,13,5,7,2, 7,13,3,3,13,34, 7,13,3,6,8,18, 7,12,13,5,7,3, 7,12,2,3,14,35, + 7,12,2,6,8,19, 7,11,14,3,2,36, 7,11,14,5,7,4, 7,11,2,6,8,20, 7,10,14,4,7,5, 7,10,14,5,7,5, 7,10,2,4,7,5, 7,10,2,6,8,21, + 7,9,13,5,7,6, 7,9,3,6,8,22, 7,8,13,5,7,7, 7,8,3,4,7,7, 7,8,3,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,4,4,7,8, + 7,7,4,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,5,4,7,9, 7,6,5,6,8,25, 7,5,11,5,7,10, 7,5,6,6,8,26, 7,4,11,5,7,11, + 7,4,5,3,11,43, 7,4,5,6,8,27, 7,3,11,5,7,12, 7,3,5,6,8,28, 7,2,11,5,7,13, 7,2,4,3,12,45, 7,2,4,6,8,29, 7,1,11,4,7,14, + 7,1,11,5,7,14, 7,1,4,4,7,14, 7,1,4,6,8,30, 7,0,10,5,7,15, 7,0,5,6,8,31, 8,15,11,3,5,32, 8,15,11,5,8,0, 8,15,10,3,6,32, + 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,7,6,7,16, 8,14,12,3,4,33, 8,14,12,5,8,1, 8,14,6,3,10,33, 8,14,5,3,11,33, + 8,14,4,3,12,33, 8,14,4,6,7,17, 8,13,13,3,3,34, 8,13,13,5,8,2, 8,13,3,3,13,34, 8,13,3,6,7,18, 8,12,13,5,8,3, 8,12,2,3,14,35, + 8,12,2,6,7,19, 8,11,14,3,2,36, 8,11,14,5,8,4, 8,11,2,6,7,20, 8,10,14,4,8,5, 8,10,14,5,8,5, 8,10,2,4,8,5, 8,10,2,6,7,21, + 8,9,13,5,8,6, 8,9,3,6,7,22, 8,8,13,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,4,4,8,8, + 8,7,4,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,5,4,8,9, 8,6,5,6,7,25, 8,5,11,5,8,10, 8,5,6,6,7,26, 8,4,11,5,8,11, + 8,4,5,3,11,43, 8,4,5,6,7,27, 8,3,11,5,8,12, 8,3,5,6,7,28, 8,2,11,5,8,13, 8,2,4,3,12,45, 8,2,4,6,7,29, 8,1,11,4,8,14, + 8,1,11,5,8,14, 8,1,4,4,8,14, 8,1,4,6,7,30, 8,0,10,5,8,15, 8,0,5,6,7,31, 9,15,11,3,5,32, 9,15,11,5,9,0, 9,15,10,3,6,32, + 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, 9,15,7,6,6,16, 9,14,12,3,4,33, 9,14,12,5,9,1, 9,14,6,3,10,33, 9,14,5,3,11,33, + 9,14,4,3,12,33, 9,14,4,6,6,17, 9,13,13,3,3,34, 9,13,13,5,9,2, 9,13,3,3,13,34, 9,13,3,6,6,18, 9,12,13,5,9,3, 9,12,2,3,14,35, + 9,12,2,6,6,19, 9,11,14,3,2,36, 9,11,14,5,9,4, 9,11,2,6,6,20, 9,10,14,4,9,5, 9,10,14,5,9,5, 9,10,2,4,9,5, 9,10,2,6,6,21, + 9,9,13,5,9,6, 9,9,3,6,6,22, 9,8,13,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,4,4,9,8, + 9,7,4,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,5,4,9,9, 9,6,5,6,6,25, 9,5,11,5,9,10, 9,5,6,6,6,26, 9,4,11,5,9,11, + 9,4,5,3,11,43, 9,4,5,6,6,27, 9,3,11,5,9,12, 9,3,5,6,6,28, 9,2,11,5,9,13, 9,2,4,3,12,45, 9,2,4,6,6,29, 9,1,11,4,9,14, + 9,1,11,5,9,14, 9,1,4,4,9,14, 9,1,4,6,6,30, 9,0,10,5,9,15, 9,0,5,6,6,31, 10,15,11,1,5,32, 10,15,11,3,5,32, 10,15,11,5,10,0, + 10,15,10,1,6,32, 10,15,10,3,6,32, 10,15,9,1,7,32, 10,15,9,3,7,32, 10,15,8,1,8,32, 10,15,8,3,8,32, 10,15,7,1,9,32, 10,15,7,3,9,32, + 10,15,7,6,5,16, 10,14,12,3,4,33, 10,14,12,5,10,1, 10,14,6,3,10,33, 10,14,5,3,11,33, 10,14,4,3,12,33, 10,14,4,6,5,17, 10,13,13,3,3,34, + 10,13,13,5,10,2, 10,13,3,3,13,34, 10,13,3,6,5,18, 10,12,13,5,10,3, 10,12,2,3,14,35, 10,12,2,6,5,19, 10,11,14,3,2,36, 10,11,14,5,10,4, + 10,11,2,6,5,20, 10,10,14,4,10,5, 10,10,14,5,10,5, 10,10,2,4,10,5, 10,10,2,6,5,21, 10,9,13,5,10,6, 10,9,3,6,5,22, 10,8,13,5,10,7, + 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,4,4,10,8, 10,7,4,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, + 10,6,5,4,10,9, 10,6,5,6,5,25, 10,5,11,5,10,10, 10,5,6,6,5,26, 10,4,11,5,10,11, 10,4,5,3,11,43, 10,4,5,6,5,27, 10,3,11,5,10,12, + 10,3,5,6,5,28, 10,2,11,5,10,13, 10,2,4,3,12,45, 10,2,4,6,5,29, 10,1,11,4,10,14, 10,1,11,5,10,14, 10,1,4,4,10,14, 10,1,4,6,5,30, + 10,0,10,5,10,15, 10,0,5,6,5,31, 11,14,12,1,4,33, 11,14,12,3,4,33, 11,14,12,5,11,1, 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,10,1,6,33, + 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, + 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,4,1,12,33, 11,14,4,3,12,33, 11,14,4,6,4,17, 11,13,13,3,3,34, 11,13,13,5,11,2, + 11,13,3,3,13,34, 11,13,3,6,4,18, 11,12,13,5,11,3, 11,12,2,3,14,35, 11,12,2,6,4,19, 11,11,14,3,2,36, 11,11,14,5,11,4, 11,11,2,6,4,20, + 11,10,14,4,11,5, 11,10,14,5,11,5, 11,10,2,4,11,5, 11,10,2,6,4,21, 11,9,13,5,11,6, 11,9,3,6,4,22, 11,8,13,5,11,7, 11,8,3,4,11,7, + 11,8,3,6,4,23, 11,7,13,1,3,40, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,12,1,4,40, 11,7,11,1,5,40, 11,7,10,1,6,40, 11,7,9,1,7,40, + 11,7,8,1,8,40, 11,7,7,1,9,40, 11,7,6,1,10,40, 11,7,5,1,11,40, 11,7,4,1,12,40, 11,7,4,4,11,8, 11,7,4,6,4,24, 11,6,12,4,11,9, + 11,6,12,5,11,9, 11,6,5,4,11,9, 11,6,5,6,4,25, 11,5,11,5,11,10, 11,5,6,6,4,26, 11,4,11,5,11,11, 11,4,5,3,11,43, 11,4,5,6,4,27, + 11,3,11,5,11,12, 11,3,5,6,4,28, 11,2,11,5,11,13, 11,2,4,3,12,45, 11,2,4,6,4,29, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,4,4,11,14, + 11,1,4,6,4,30, 11,0,10,5,11,15, 11,0,5,6,4,31, 12,13,13,1,3,34, 12,13,13,3,3,34, 12,13,13,5,12,2, 12,13,12,1,4,34, 12,13,12,3,4,34, + 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, + 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,4,1,12,34, 12,13,4,3,12,34, + 12,13,3,1,13,34, 12,13,3,3,13,34, 12,13,3,6,3,18, 12,12,13,1,3,35, 12,12,13,5,12,3, 12,12,12,1,4,35, 12,12,11,1,5,35, 12,12,10,1,6,35, + 12,12,9,1,7,35, 12,12,8,1,8,35, 12,12,7,1,9,35, 12,12,6,1,10,35, 12,12,5,1,11,35, 12,12,4,1,12,35, 12,12,3,1,13,35, 12,12,2,1,14,35, + 12,12,2,3,14,35, 12,12,2,6,3,19, 12,11,14,3,2,36, 12,11,14,5,12,4, 12,11,2,6,3,20, 12,10,14,4,12,5, 12,10,14,5,12,5, 12,10,2,4,12,5, + 12,10,2,6,3,21, 12,9,13,1,3,38, 12,9,13,5,12,6, 12,9,12,1,4,38, 12,9,11,1,5,38, 12,9,10,1,6,38, 12,9,9,1,7,38, 12,9,8,1,8,38, + 12,9,7,1,9,38, 12,9,6,1,10,38, 12,9,5,1,11,38, 12,9,4,1,12,38, 12,9,3,1,13,38, 12,9,3,6,3,22, 12,8,13,1,3,39, 12,8,13,4,12,7, + 12,8,13,5,12,7, 12,8,12,1,4,39, 12,8,12,4,12,7, 12,8,11,1,5,39, 12,8,11,4,12,7, 12,8,10,1,6,39, 12,8,10,4,12,7, 12,8,9,1,7,39, + 12,8,9,4,12,7, 12,8,8,1,8,39, 12,8,8,4,12,7, 12,8,7,1,9,39, 12,8,7,4,12,7, 12,8,6,1,10,39, 12,8,6,4,12,7, 12,8,5,1,11,39, + 12,8,5,4,12,7, 12,8,4,1,12,39, 12,8,4,4,12,7, 12,8,3,1,13,39, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,6,12,1,4,41, 12,6,12,3,4,41, + 12,6,12,4,3,25, 12,6,12,5,3,25, 12,6,11,1,5,41, 12,6,11,3,5,41, 12,6,10,1,6,41, 12,6,10,3,6,41, 12,6,9,1,7,41, 12,6,9,3,7,41, + 12,6,8,1,8,41, 12,6,8,3,8,41, 12,6,7,1,9,41, 12,6,7,3,9,41, 12,6,6,1,10,41, 12,6,6,3,10,41, 12,6,5,1,11,41, 12,6,5,3,11,41, + 12,6,5,4,3,25, 12,6,5,6,3,25, 12,5,11,5,12,10, 12,5,6,6,3,26, 12,4,11,5,12,11, 12,4,5,3,11,43, 12,4,5,6,3,27, 12,3,11,5,12,12, + 12,3,5,6,3,28, 12,2,11,5,12,13, 12,2,4,3,12,45, 12,2,4,6,3,29, 12,1,11,1,5,46, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,6,46, + 12,1,9,1,7,46, 12,1,8,1,8,46, 12,1,7,1,9,46, 12,1,6,1,10,46, 12,1,5,1,11,46, 12,1,4,1,12,46, 12,1,4,4,12,14, 12,1,4,6,3,30, + 12,0,10,1,6,47, 12,0,10,5,12,15, 12,0,9,1,7,47, 12,0,8,1,8,47, 12,0,7,1,9,47, 12,0,6,1,10,47, 12,0,5,1,11,47, 12,0,5,6,3,31, + 13,11,14,1,2,36, 13,11,14,3,2,36, 13,11,14,5,13,4, 13,11,13,1,3,36, 13,11,13,3,3,36, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, + 13,11,11,3,5,36, 13,11,10,1,6,36, 13,11,10,3,6,36, 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, + 13,11,7,3,9,36, 13,11,6,1,10,36, 13,11,6,3,10,36, 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, + 13,11,3,3,13,36, 13,11,2,1,14,36, 13,11,2,3,14,36, 13,11,2,6,2,20, 13,10,14,1,2,37, 13,10,14,4,13,5, 13,10,14,5,13,5, 13,10,13,1,3,37, + 13,10,13,4,13,5, 13,10,12,1,4,37, 13,10,12,4,13,5, 13,10,11,1,5,37, 13,10,11,4,13,5, 13,10,10,1,6,37, 13,10,10,4,13,5, 13,10,9,1,7,37, + 13,10,9,4,13,5, 13,10,8,1,8,37, 13,10,8,4,13,5, 13,10,7,1,9,37, 13,10,7,4,13,5, 13,10,6,1,10,37, 13,10,6,4,13,5, 13,10,5,1,11,37, + 13,10,5,4,13,5, 13,10,4,1,12,37, 13,10,4,4,13,5, 13,10,3,1,13,37, 13,10,3,4,13,5, 13,10,2,1,14,37, 13,10,2,4,13,5, 13,10,2,6,2,21, + 13,5,11,1,5,42, 13,5,11,3,5,42, 13,5,11,5,2,26, 13,5,10,1,6,42, 13,5,10,3,6,42, 13,5,9,1,7,42, 13,5,9,3,7,42, 13,5,8,1,8,42, + 13,5,8,3,8,42, 13,5,7,1,9,42, 13,5,7,3,9,42, 13,5,6,1,10,42, 13,5,6,3,10,42, 13,5,6,6,2,26, 13,4,11,5,13,11, 13,4,5,3,11,43, + 13,4,5,6,2,27, 13,3,11,5,13,12, 13,3,5,6,2,28, 13,2,11,4,13,13, 13,2,11,5,13,13, 13,2,10,4,13,13, 13,2,9,4,13,13, 13,2,8,4,13,13, + 13,2,7,4,13,13, 13,2,6,4,13,13, 13,2,5,4,13,13, 13,2,4,3,12,45, 13,2,4,4,13,13, 13,2,4,6,2,29, 14,4,11,1,5,43, 14,4,11,3,5,43, + 14,4,11,5,1,27, 14,4,10,1,6,43, 14,4,10,3,6,43, 14,4,9,1,7,43, 14,4,9,3,7,43, 14,4,8,1,8,43, 14,4,8,3,8,43, 14,4,7,1,9,43, + 14,4,7,3,9,43, 14,4,6,1,10,43, 14,4,6,3,10,43, 14,4,5,1,11,43, 14,4,5,3,11,43, 14,4,5,6,1,27, 14,3,11,1,5,44, 14,3,11,5,1,28, + 14,3,10,1,6,44, 14,3,9,1,7,44, 14,3,8,1,8,44, 14,3,7,1,9,44, 14,3,6,1,10,44, 14,3,5,1,11,44, 14,3,5,6,1,28, 14,2,11,1,5,45, + 14,2,11,4,1,29, 14,2,11,5,1,29, 14,2,10,1,6,45, 14,2,10,4,1,29, 14,2,9,1,7,45, 14,2,9,4,1,29, 14,2,8,1,8,45, 14,2,8,4,1,29, + 14,2,7,1,9,45, 14,2,7,4,1,29, 14,2,6,1,10,45, 14,2,6,4,1,29, 14,2,5,1,11,45, 14,2,5,4,1,29, 14,2,4,1,12,45, 14,2,4,3,12,45, + 14,2,4,4,1,29, 14,2,4,6,1,29, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1701, + count = 1077, + faces = { + 1,11,14,2,2,84, 1,11,14,3,2,84, 1,11,14,5,13,68, 1,11,13,2,3,84, 1,11,13,3,3,84, 1,11,12,2,4,84, 1,11,12,3,4,84, 1,11,11,2,5,84, + 1,11,11,3,5,84, 1,11,10,2,6,84, 1,11,10,3,6,84, 1,11,9,2,7,84, 1,11,9,3,7,84, 1,11,8,2,8,84, 1,11,8,3,8,84, 1,11,7,2,9,84, + 1,11,7,3,9,84, 1,11,6,2,10,84, 1,11,6,3,10,84, 1,11,5,2,11,84, 1,11,5,3,11,84, 1,11,4,2,12,84, 1,11,4,3,12,84, 1,11,3,2,13,84, + 1,11,3,3,13,84, 1,11,2,2,14,84, 1,11,2,3,14,84, 1,11,1,2,15,84, 1,11,1,3,15,84, 1,11,1,6,13,68, 1,10,14,2,2,85, 1,10,14,4,13,69, + 1,10,14,5,13,69, 1,10,13,2,3,85, 1,10,13,4,13,69, 1,10,12,2,4,85, 1,10,12,4,13,69, 1,10,11,2,5,85, 1,10,11,4,13,69, 1,10,10,2,6,85, + 1,10,10,4,13,69, 1,10,9,2,7,85, 1,10,9,4,13,69, 1,10,8,2,8,85, 1,10,8,4,13,69, 1,10,7,2,9,85, 1,10,7,4,13,69, 1,10,6,2,10,85, + 1,10,6,4,13,69, 1,10,5,2,11,85, 1,10,5,4,13,69, 1,10,4,2,12,85, 1,10,4,4,13,69, 1,10,3,2,13,85, 1,10,3,4,13,69, 1,10,2,2,14,85, + 1,10,2,4,13,69, 1,10,1,2,15,85, 1,10,1,4,13,69, 1,10,1,6,13,69, 1,5,11,2,5,90, 1,5,11,3,5,90, 1,5,11,5,13,74, 1,5,10,2,6,90, + 1,5,10,3,6,90, 1,5,9,2,7,90, 1,5,9,3,7,90, 1,5,8,2,8,90, 1,5,8,3,8,90, 1,5,7,2,9,90, 1,5,7,3,9,90, 1,5,6,2,10,90, + 1,5,6,3,10,90, 1,5,6,6,13,74, 1,4,11,2,5,91, 1,4,11,4,13,75, 1,4,11,5,13,75, 1,4,10,2,6,91, 1,4,10,4,13,75, 1,4,9,2,7,91, + 1,4,9,4,13,75, 1,4,8,2,8,91, 1,4,8,4,13,75, 1,4,7,2,9,91, 1,4,7,4,13,75, 1,4,6,2,10,91, 1,4,6,4,13,75, 1,4,6,6,13,75, + 2,13,13,2,3,82, 2,13,13,3,3,82, 2,13,13,5,12,66, 2,13,12,2,4,82, 2,13,12,3,4,82, 2,13,11,2,5,82, 2,13,11,3,5,82, 2,13,10,2,6,82, + 2,13,10,3,6,82, 2,13,9,2,7,82, 2,13,9,3,7,82, 2,13,8,2,8,82, 2,13,8,3,8,82, 2,13,7,2,9,82, 2,13,7,3,9,82, 2,13,6,2,10,82, + 2,13,6,3,10,82, 2,13,5,2,11,82, 2,13,5,3,11,82, 2,13,4,2,12,82, 2,13,4,3,12,82, 2,13,3,2,13,82, 2,13,3,3,13,82, 2,13,2,2,14,82, + 2,13,2,3,14,82, 2,13,1,2,15,82, 2,13,1,3,15,82, 2,13,1,6,12,66, 2,12,13,2,3,83, 2,12,13,5,12,67, 2,12,12,2,4,83, 2,12,11,2,5,83, + 2,12,10,2,6,83, 2,12,9,2,7,83, 2,12,8,2,8,83, 2,12,7,2,9,83, 2,12,6,2,10,83, 2,12,5,2,11,83, 2,12,4,2,12,83, 2,12,3,2,13,83, + 2,12,2,2,14,83, 2,12,1,2,15,83, 2,12,1,6,12,67, 2,11,14,3,2,84, 2,11,14,5,2,52, 2,11,1,6,12,68, 2,10,14,5,2,53, 2,10,1,6,12,69, + 2,9,14,2,2,86, 2,9,14,4,12,70, 2,9,14,5,12,70, 2,9,13,2,3,86, 2,9,12,2,4,86, 2,9,11,2,5,86, 2,9,10,2,6,86, 2,9,9,2,7,86, + 2,9,8,2,8,86, 2,9,7,2,9,86, 2,9,6,2,10,86, 2,9,5,2,11,86, 2,9,4,2,12,86, 2,9,3,2,13,86, 2,9,2,2,14,86, 2,9,1,2,15,86, + 2,9,1,6,12,70, 2,8,13,2,3,87, 2,8,13,4,12,71, 2,8,13,5,12,71, 2,8,12,2,4,87, 2,8,12,4,12,71, 2,8,11,2,5,87, 2,8,11,4,12,71, + 2,8,10,2,6,87, 2,8,10,4,12,71, 2,8,9,2,7,87, 2,8,9,4,12,71, 2,8,8,2,8,87, 2,8,8,4,12,71, 2,8,7,2,9,87, 2,8,7,4,12,71, + 2,8,6,2,10,87, 2,8,6,4,12,71, 2,8,5,2,11,87, 2,8,5,4,12,71, 2,8,4,2,12,87, 2,8,4,4,12,71, 2,8,3,2,13,87, 2,8,3,4,12,71, + 2,8,2,2,14,87, 2,8,2,4,12,71, 2,8,1,2,15,87, 2,8,1,4,12,71, 2,8,1,6,12,71, 2,6,12,2,4,89, 2,6,12,3,4,89, 2,6,12,4,12,73, + 2,6,12,5,12,73, 2,6,11,2,5,89, 2,6,11,3,5,89, 2,6,10,2,6,89, 2,6,10,3,6,89, 2,6,9,2,7,89, 2,6,9,3,7,89, 2,6,8,2,8,89, + 2,6,8,3,8,89, 2,6,7,2,9,89, 2,6,7,3,9,89, 2,6,6,2,10,89, 2,6,6,3,10,89, 2,6,5,2,11,89, 2,6,5,3,11,89, 2,6,5,4,12,73, + 2,6,5,6,12,73, 2,5,11,5,12,74, 2,5,6,6,12,74, 2,4,11,4,2,59, 2,4,11,5,2,59, 2,4,6,6,12,75, 2,3,10,2,6,92, 2,3,10,5,2,60, + 2,3,9,2,7,92, 2,3,8,2,8,92, 2,3,7,2,9,92, 2,3,6,2,10,92, 2,3,5,2,11,92, 2,3,5,3,11,92, 2,3,5,6,12,76, 2,2,11,2,5,93, + 2,2,11,3,5,93, 2,2,11,4,2,61, 2,2,11,5,2,61, 2,2,10,2,6,93, 2,2,10,4,2,61, 2,2,9,2,7,93, 2,2,9,4,2,61, 2,2,8,2,8,93, + 2,2,8,4,2,61, 2,2,7,2,9,93, 2,2,7,4,2,61, 2,2,6,2,10,93, 2,2,6,4,2,61, 2,2,5,2,11,93, 2,2,5,4,2,61, 2,2,5,6,12,77, + 3,14,12,2,4,81, 3,14,12,3,4,81, 3,14,12,5,11,65, 3,14,11,2,5,81, 3,14,11,3,5,81, 3,14,10,2,6,81, 3,14,10,3,6,81, 3,14,9,2,7,81, + 3,14,9,3,7,81, 3,14,8,2,8,81, 3,14,8,3,8,81, 3,14,7,2,9,81, 3,14,7,3,9,81, 3,14,6,2,10,81, 3,14,6,3,10,81, 3,14,5,2,11,81, + 3,14,5,3,11,81, 3,14,4,2,12,81, 3,14,4,3,12,81, 3,14,3,2,13,81, 3,14,3,3,13,81, 3,14,2,2,14,81, 3,14,2,3,14,81, 3,14,2,6,11,65, + 3,13,13,3,3,82, 3,13,13,5,3,50, 3,13,1,3,15,82, 3,13,1,6,11,66, 3,12,13,5,3,51, 3,12,1,6,11,67, 3,11,14,3,2,84, 3,11,14,5,3,52, + 3,11,1,6,11,68, 3,10,14,5,3,53, 3,10,1,6,11,69, 3,9,14,4,3,54, 3,9,14,5,3,54, 3,9,1,6,11,70, 3,8,13,5,3,55, 3,8,1,4,3,55, + 3,8,1,6,11,71, 3,7,13,2,3,88, 3,7,13,4,11,72, 3,7,13,5,11,72, 3,7,12,2,4,88, 3,7,11,2,5,88, 3,7,10,2,6,88, 3,7,9,2,7,88, + 3,7,8,2,8,88, 3,7,7,2,9,88, 3,7,6,2,10,88, 3,7,5,2,11,88, 3,7,4,2,12,88, 3,7,4,4,11,72, 3,7,3,2,13,88, 3,7,3,4,11,72, + 3,7,2,2,14,88, 3,7,2,4,11,72, 3,7,2,6,11,72, 3,6,12,4,11,73, 3,6,12,5,11,73, 3,6,5,4,11,73, 3,6,5,6,11,73, 3,5,11,5,3,58, + 3,5,6,6,11,74, 3,4,11,4,3,59, 3,4,11,5,3,59, 3,4,6,6,11,75, 3,3,10,5,3,60, 3,3,5,3,11,92, 3,3,5,6,11,76, 3,2,11,3,5,93, + 3,2,11,5,3,61, 3,2,5,4,3,61, 3,2,5,6,11,77, 3,1,11,2,5,94, 3,1,11,4,3,62, 3,1,11,5,3,62, 3,1,10,2,6,94, 3,1,9,2,7,94, + 3,1,8,2,8,94, 3,1,7,2,9,94, 3,1,6,2,10,94, 3,1,6,6,11,78, 3,0,10,2,6,95, 3,0,10,5,3,63, 3,0,9,2,7,95, 3,0,8,2,8,95, + 3,0,7,2,9,95, 3,0,6,2,10,95, 3,0,6,6,3,63, 4,15,10,2,6,80, 4,15,10,3,6,80, 4,15,10,5,10,64, 4,15,9,2,7,80, 4,15,9,3,7,80, + 4,15,8,2,8,80, 4,15,8,3,8,80, 4,15,7,2,9,80, 4,15,7,3,9,80, 4,15,6,2,10,80, 4,15,6,3,10,80, 4,15,5,2,11,80, 4,15,5,3,11,80, + 4,15,4,2,12,80, 4,15,4,3,12,80, 4,15,3,2,13,80, 4,15,3,3,13,80, 4,15,3,6,10,64, 4,14,12,3,4,81, 4,14,12,5,4,49, 4,14,11,3,5,81, + 4,14,2,3,14,81, 4,14,2,6,10,65, 4,13,13,3,3,82, 4,13,13,5,4,50, 4,13,1,3,15,82, 4,13,1,6,10,66, 4,12,13,5,4,51, 4,12,1,6,10,67, + 4,11,14,3,2,84, 4,11,14,5,4,52, 4,11,1,6,10,68, 4,10,14,5,4,53, 4,10,1,6,10,69, 4,9,14,4,4,54, 4,9,14,5,4,54, 4,9,1,6,10,70, + 4,8,13,5,4,55, 4,8,1,4,4,55, 4,8,1,6,10,71, 4,7,13,4,4,56, 4,7,13,5,4,56, 4,7,4,4,4,56, 4,7,3,4,4,56, 4,7,2,4,4,56, + 4,7,2,6,10,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,5,4,4,57, 4,6,5,6,10,73, 4,5,11,5,4,58, 4,5,6,6,10,74, 4,4,11,4,4,59, + 4,4,11,5,4,59, 4,4,6,6,10,75, 4,3,10,5,4,60, 4,3,5,3,11,92, 4,3,5,6,10,76, 4,2,11,3,5,93, 4,2,11,5,4,61, 4,2,5,4,4,61, + 4,2,5,6,10,77, 4,1,11,4,4,62, 4,1,11,5,4,62, 4,1,6,6,10,78, 4,0,10,5,4,63, 4,0,6,6,10,79, 5,15,10,3,6,80, 5,15,10,5,5,48, + 5,15,9,3,7,80, 5,15,8,3,8,80, 5,15,7,3,9,80, 5,15,6,3,10,80, 5,15,5,3,11,80, 5,15,4,3,12,80, 5,15,3,3,13,80, 5,15,3,6,9,64, + 5,14,12,3,4,81, 5,14,12,5,5,49, 5,14,11,3,5,81, 5,14,2,3,14,81, 5,14,2,6,9,65, 5,13,13,3,3,82, 5,13,13,5,5,50, 5,13,1,3,15,82, + 5,13,1,6,9,66, 5,12,13,5,5,51, 5,12,1,6,9,67, 5,11,14,3,2,84, 5,11,14,5,5,52, 5,11,1,6,9,68, 5,10,14,5,5,53, 5,10,1,6,9,69, + 5,9,14,4,5,54, 5,9,14,5,5,54, 5,9,1,6,9,70, 5,8,13,5,5,55, 5,8,1,4,5,55, 5,8,1,6,9,71, 5,7,13,4,5,56, 5,7,13,5,5,56, + 5,7,4,4,5,56, 5,7,3,4,5,56, 5,7,2,4,5,56, 5,7,2,6,9,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,5,4,5,57, 5,6,5,6,9,73, + 5,5,11,5,5,58, 5,5,6,6,9,74, 5,4,11,4,5,59, 5,4,11,5,5,59, 5,4,6,6,9,75, 5,3,10,5,5,60, 5,3,5,3,11,92, 5,3,5,6,9,76, + 5,2,11,3,5,93, 5,2,11,5,5,61, 5,2,5,4,5,61, 5,2,5,6,9,77, 5,1,11,4,5,62, 5,1,11,5,5,62, 5,1,6,6,9,78, 5,0,10,5,5,63, + 5,0,6,6,9,79, 6,15,10,3,6,80, 6,15,10,5,6,48, 6,15,9,3,7,80, 6,15,8,3,8,80, 6,15,7,3,9,80, 6,15,6,3,10,80, 6,15,5,3,11,80, + 6,15,4,3,12,80, 6,15,3,3,13,80, 6,15,3,6,8,64, 6,14,12,3,4,81, 6,14,12,5,6,49, 6,14,11,3,5,81, 6,14,2,3,14,81, 6,14,2,6,8,65, + 6,13,13,3,3,82, 6,13,13,5,6,50, 6,13,1,3,15,82, 6,13,1,6,8,66, 6,12,13,5,6,51, 6,12,1,6,8,67, 6,11,14,3,2,84, 6,11,14,5,6,52, + 6,11,1,6,8,68, 6,10,14,5,6,53, 6,10,1,6,8,69, 6,9,14,4,6,54, 6,9,14,5,6,54, 6,9,1,6,8,70, 6,8,13,5,6,55, 6,8,1,4,6,55, + 6,8,1,6,8,71, 6,7,13,4,6,56, 6,7,13,5,6,56, 6,7,4,4,6,56, 6,7,3,4,6,56, 6,7,2,4,6,56, 6,7,2,6,8,72, 6,6,12,4,6,57, + 6,6,12,5,6,57, 6,6,5,4,6,57, 6,6,5,6,8,73, 6,5,11,5,6,58, 6,5,6,6,8,74, 6,4,11,4,6,59, 6,4,11,5,6,59, 6,4,6,6,8,75, + 6,3,10,5,6,60, 6,3,5,3,11,92, 6,3,5,6,8,76, 6,2,11,3,5,93, 6,2,11,5,6,61, 6,2,5,4,6,61, 6,2,5,6,8,77, 6,1,11,4,6,62, + 6,1,11,5,6,62, 6,1,6,6,8,78, 6,0,10,5,6,63, 6,0,6,6,8,79, 7,15,10,3,6,80, 7,15,10,5,7,48, 7,15,9,3,7,80, 7,15,8,3,8,80, + 7,15,7,3,9,80, 7,15,6,3,10,80, 7,15,5,3,11,80, 7,15,4,3,12,80, 7,15,3,3,13,80, 7,15,3,6,7,64, 7,14,12,3,4,81, 7,14,12,5,7,49, + 7,14,11,3,5,81, 7,14,2,3,14,81, 7,14,2,6,7,65, 7,13,13,3,3,82, 7,13,13,5,7,50, 7,13,1,3,15,82, 7,13,1,6,7,66, 7,12,13,5,7,51, + 7,12,1,6,7,67, 7,11,14,3,2,84, 7,11,14,5,7,52, 7,11,1,6,7,68, 7,10,14,5,7,53, 7,10,1,6,7,69, 7,9,14,4,7,54, 7,9,14,5,7,54, + 7,9,1,6,7,70, 7,8,13,5,7,55, 7,8,1,4,7,55, 7,8,1,6,7,71, 7,7,13,4,7,56, 7,7,13,5,7,56, 7,7,4,4,7,56, 7,7,3,4,7,56, + 7,7,2,4,7,56, 7,7,2,6,7,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,5,4,7,57, 7,6,5,6,7,73, 7,5,11,5,7,58, 7,5,6,6,7,74, + 7,4,11,4,7,59, 7,4,11,5,7,59, 7,4,6,6,7,75, 7,3,10,5,7,60, 7,3,5,3,11,92, 7,3,5,6,7,76, 7,2,11,3,5,93, 7,2,11,5,7,61, + 7,2,5,4,7,61, 7,2,5,6,7,77, 7,1,11,4,7,62, 7,1,11,5,7,62, 7,1,6,6,7,78, 7,0,10,5,7,63, 7,0,6,6,7,79, 8,15,10,3,6,80, + 8,15,10,5,8,48, 8,15,9,3,7,80, 8,15,8,3,8,80, 8,15,7,3,9,80, 8,15,6,3,10,80, 8,15,5,3,11,80, 8,15,4,3,12,80, 8,15,3,3,13,80, + 8,15,3,6,6,64, 8,14,12,3,4,81, 8,14,12,5,8,49, 8,14,11,3,5,81, 8,14,2,3,14,81, 8,14,2,6,6,65, 8,13,13,3,3,82, 8,13,13,5,8,50, + 8,13,1,3,15,82, 8,13,1,6,6,66, 8,12,13,5,8,51, 8,12,1,6,6,67, 8,11,14,3,2,84, 8,11,14,5,8,52, 8,11,1,6,6,68, 8,10,14,5,8,53, + 8,10,1,6,6,69, 8,9,14,4,8,54, 8,9,14,5,8,54, 8,9,1,6,6,70, 8,8,13,5,8,55, 8,8,1,4,8,55, 8,8,1,6,6,71, 8,7,13,4,8,56, + 8,7,13,5,8,56, 8,7,4,4,8,56, 8,7,3,4,8,56, 8,7,2,4,8,56, 8,7,2,6,6,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,5,4,8,57, + 8,6,5,6,6,73, 8,5,11,5,8,58, 8,5,6,6,6,74, 8,4,11,4,8,59, 8,4,11,5,8,59, 8,4,6,6,6,75, 8,3,10,5,8,60, 8,3,5,3,11,92, + 8,3,5,6,6,76, 8,2,11,3,5,93, 8,2,11,5,8,61, 8,2,5,4,8,61, 8,2,5,6,6,77, 8,1,11,4,8,62, 8,1,11,5,8,62, 8,1,6,6,6,78, + 8,0,10,5,8,63, 8,0,6,6,6,79, 9,15,10,3,6,80, 9,15,10,5,9,48, 9,15,9,3,7,80, 9,15,8,3,8,80, 9,15,7,3,9,80, 9,15,6,3,10,80, + 9,15,5,3,11,80, 9,15,4,3,12,80, 9,15,3,3,13,80, 9,15,3,6,5,64, 9,14,12,3,4,81, 9,14,12,5,9,49, 9,14,11,3,5,81, 9,14,2,3,14,81, + 9,14,2,6,5,65, 9,13,13,3,3,82, 9,13,13,5,9,50, 9,13,1,3,15,82, 9,13,1,6,5,66, 9,12,13,5,9,51, 9,12,1,6,5,67, 9,11,14,3,2,84, + 9,11,14,5,9,52, 9,11,1,6,5,68, 9,10,14,5,9,53, 9,10,1,6,5,69, 9,9,14,4,9,54, 9,9,14,5,9,54, 9,9,1,6,5,70, 9,8,13,5,9,55, + 9,8,1,4,9,55, 9,8,1,6,5,71, 9,7,13,4,9,56, 9,7,13,5,9,56, 9,7,4,4,9,56, 9,7,3,4,9,56, 9,7,2,4,9,56, 9,7,2,6,5,72, + 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,5,4,9,57, 9,6,5,6,5,73, 9,5,11,5,9,58, 9,5,6,6,5,74, 9,4,11,4,9,59, 9,4,11,5,9,59, + 9,4,6,6,5,75, 9,3,10,5,9,60, 9,3,5,3,11,92, 9,3,5,6,5,76, 9,2,11,3,5,93, 9,2,11,5,9,61, 9,2,5,4,9,61, 9,2,5,6,5,77, + 9,1,11,4,9,62, 9,1,11,5,9,62, 9,1,6,6,5,78, 9,0,10,5,9,63, 9,0,6,6,5,79, 10,15,10,1,6,80, 10,15,10,3,6,80, 10,15,10,5,10,48, + 10,15,9,1,7,80, 10,15,9,3,7,80, 10,15,8,1,8,80, 10,15,8,3,8,80, 10,15,7,1,9,80, 10,15,7,3,9,80, 10,15,6,1,10,80, 10,15,6,3,10,80, + 10,15,5,1,11,80, 10,15,5,3,11,80, 10,15,4,1,12,80, 10,15,4,3,12,80, 10,15,3,1,13,80, 10,15,3,3,13,80, 10,15,3,6,10,48, 10,14,12,3,4,81, + 10,14,12,5,10,49, 10,14,11,3,5,81, 10,14,2,3,14,81, 10,14,2,6,4,65, 10,13,13,3,3,82, 10,13,13,5,10,50, 10,13,1,3,15,82, 10,13,1,6,4,66, + 10,12,13,5,10,51, 10,12,1,6,4,67, 10,11,14,3,2,84, 10,11,14,5,10,52, 10,11,1,6,4,68, 10,10,14,5,10,53, 10,10,1,6,4,69, 10,9,14,4,10,54, + 10,9,14,5,10,54, 10,9,1,6,4,70, 10,8,13,5,10,55, 10,8,1,4,10,55, 10,8,1,6,4,71, 10,7,13,4,10,56, 10,7,13,5,10,56, 10,7,4,4,10,56, + 10,7,3,4,10,56, 10,7,2,4,10,56, 10,7,2,6,4,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,5,4,10,57, 10,6,5,6,4,73, 10,5,11,5,10,58, + 10,5,6,6,4,74, 10,4,11,4,10,59, 10,4,11,5,10,59, 10,4,6,6,4,75, 10,3,10,5,10,60, 10,3,5,3,11,92, 10,3,5,6,4,76, 10,2,11,3,5,93, + 10,2,11,5,10,61, 10,2,5,4,10,61, 10,2,5,6,4,77, 10,1,11,4,10,62, 10,1,11,5,10,62, 10,1,6,6,4,78, 10,0,10,5,10,63, 10,0,6,6,4,79, + 11,14,12,1,4,81, 11,14,12,3,4,81, 11,14,12,5,11,49, 11,14,11,1,5,81, 11,14,11,3,5,81, 11,14,10,1,6,81, 11,14,10,3,6,81, 11,14,9,1,7,81, + 11,14,9,3,7,81, 11,14,8,1,8,81, 11,14,8,3,8,81, 11,14,7,1,9,81, 11,14,7,3,9,81, 11,14,6,1,10,81, 11,14,6,3,10,81, 11,14,5,1,11,81, + 11,14,5,3,11,81, 11,14,4,1,12,81, 11,14,4,3,12,81, 11,14,3,1,13,81, 11,14,3,3,13,81, 11,14,2,1,14,81, 11,14,2,3,14,81, 11,14,2,6,11,49, + 11,13,13,3,3,82, 11,13,13,5,11,50, 11,13,1,3,15,82, 11,13,1,6,3,66, 11,12,13,5,11,51, 11,12,1,6,3,67, 11,11,14,3,2,84, 11,11,14,5,11,52, + 11,11,1,6,3,68, 11,10,14,5,11,53, 11,10,1,6,3,69, 11,9,14,4,11,54, 11,9,14,5,11,54, 11,9,1,6,3,70, 11,8,13,5,11,55, 11,8,1,4,11,55, + 11,8,1,6,3,71, 11,7,13,1,3,88, 11,7,13,4,11,56, 11,7,13,5,11,56, 11,7,12,1,4,88, 11,7,11,1,5,88, 11,7,10,1,6,88, 11,7,9,1,7,88, + 11,7,8,1,8,88, 11,7,7,1,9,88, 11,7,6,1,10,88, 11,7,5,1,11,88, 11,7,4,1,12,88, 11,7,4,4,11,56, 11,7,3,1,13,88, 11,7,3,4,11,56, + 11,7,2,1,14,88, 11,7,2,4,11,56, 11,7,2,6,11,56, 11,6,12,1,4,89, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,11,1,5,89, 11,6,10,1,6,89, + 11,6,9,1,7,89, 11,6,8,1,8,89, 11,6,7,1,9,89, 11,6,6,1,10,89, 11,6,5,1,11,89, 11,6,5,4,11,57, 11,6,5,6,3,73, 11,5,11,5,11,58, + 11,5,6,6,3,74, 11,4,11,4,11,59, 11,4,11,5,11,59, 11,4,6,6,3,75, 11,3,10,5,11,60, 11,3,5,3,11,92, 11,3,5,6,3,76, 11,2,11,3,5,93, + 11,2,11,5,11,61, 11,2,5,4,11,61, 11,2,5,6,3,77, 11,1,11,4,11,62, 11,1,11,5,11,62, 11,1,6,6,3,78, 11,0,10,1,6,95, 11,0,10,5,3,79, + 11,0,9,1,7,95, 11,0,8,1,8,95, 11,0,7,1,9,95, 11,0,6,1,10,95, 11,0,6,6,3,79, 12,13,13,1,3,82, 12,13,13,3,3,82, 12,13,13,5,12,50, + 12,13,12,1,4,82, 12,13,12,3,4,82, 12,13,11,1,5,82, 12,13,11,3,5,82, 12,13,10,1,6,82, 12,13,10,3,6,82, 12,13,9,1,7,82, 12,13,9,3,7,82, + 12,13,8,1,8,82, 12,13,8,3,8,82, 12,13,7,1,9,82, 12,13,7,3,9,82, 12,13,6,1,10,82, 12,13,6,3,10,82, 12,13,5,1,11,82, 12,13,5,3,11,82, + 12,13,4,1,12,82, 12,13,4,3,12,82, 12,13,3,1,13,82, 12,13,3,3,13,82, 12,13,2,1,14,82, 12,13,2,3,14,82, 12,13,1,1,15,82, 12,13,1,3,15,82, + 12,13,1,6,12,50, 12,12,13,1,3,83, 12,12,13,5,12,51, 12,12,12,1,4,83, 12,12,11,1,5,83, 12,12,10,1,6,83, 12,12,9,1,7,83, 12,12,8,1,8,83, + 12,12,7,1,9,83, 12,12,6,1,10,83, 12,12,5,1,11,83, 12,12,4,1,12,83, 12,12,3,1,13,83, 12,12,2,1,14,83, 12,12,1,1,15,83, 12,12,1,6,12,51, + 12,11,14,3,2,84, 12,11,14,5,12,52, 12,11,1,6,2,68, 12,10,14,5,12,53, 12,10,1,6,2,69, 12,9,14,1,2,86, 12,9,14,4,12,54, 12,9,14,5,12,54, + 12,9,13,1,3,86, 12,9,12,1,4,86, 12,9,11,1,5,86, 12,9,10,1,6,86, 12,9,9,1,7,86, 12,9,8,1,8,86, 12,9,7,1,9,86, 12,9,6,1,10,86, + 12,9,5,1,11,86, 12,9,4,1,12,86, 12,9,3,1,13,86, 12,9,2,1,14,86, 12,9,1,1,15,86, 12,9,1,6,12,54, 12,8,13,1,3,87, 12,8,13,4,12,55, + 12,8,13,5,12,55, 12,8,12,1,4,87, 12,8,12,4,12,55, 12,8,11,1,5,87, 12,8,11,4,12,55, 12,8,10,1,6,87, 12,8,10,4,12,55, 12,8,9,1,7,87, + 12,8,9,4,12,55, 12,8,8,1,8,87, 12,8,8,4,12,55, 12,8,7,1,9,87, 12,8,7,4,12,55, 12,8,6,1,10,87, 12,8,6,4,12,55, 12,8,5,1,11,87, + 12,8,5,4,12,55, 12,8,4,1,12,87, 12,8,4,4,12,55, 12,8,3,1,13,87, 12,8,3,4,12,55, 12,8,2,1,14,87, 12,8,2,4,12,55, 12,8,1,1,15,87, + 12,8,1,4,12,55, 12,8,1,6,12,55, 12,5,11,1,5,90, 12,5,11,3,5,90, 12,5,11,5,12,58, 12,5,10,1,6,90, 12,5,10,3,6,90, 12,5,9,1,7,90, + 12,5,9,3,7,90, 12,5,8,1,8,90, 12,5,8,3,8,90, 12,5,7,1,9,90, 12,5,7,3,9,90, 12,5,6,1,10,90, 12,5,6,3,10,90, 12,5,6,6,2,74, + 12,4,11,4,12,59, 12,4,11,5,12,59, 12,4,6,6,2,75, 12,3,10,5,12,60, 12,3,5,3,11,92, 12,3,5,6,2,76, 12,2,11,3,5,93, 12,2,11,5,12,61, + 12,2,5,4,12,61, 12,2,5,6,2,77, 12,1,11,1,5,94, 12,1,11,4,12,62, 12,1,11,5,12,62, 12,1,10,1,6,94, 12,1,10,4,12,62, 12,1,9,1,7,94, + 12,1,9,4,12,62, 12,1,8,1,8,94, 12,1,8,4,12,62, 12,1,7,1,9,94, 12,1,7,4,12,62, 12,1,6,1,10,94, 12,1,6,4,12,62, 12,1,6,6,12,62, + 13,11,14,1,2,84, 13,11,14,3,2,84, 13,11,14,5,13,52, 13,11,13,1,3,84, 13,11,13,3,3,84, 13,11,12,1,4,84, 13,11,12,3,4,84, 13,11,11,1,5,84, + 13,11,11,3,5,84, 13,11,10,1,6,84, 13,11,10,3,6,84, 13,11,9,1,7,84, 13,11,9,3,7,84, 13,11,8,1,8,84, 13,11,8,3,8,84, 13,11,7,1,9,84, + 13,11,7,3,9,84, 13,11,6,1,10,84, 13,11,6,3,10,84, 13,11,5,1,11,84, 13,11,5,3,11,84, 13,11,4,1,12,84, 13,11,4,3,12,84, 13,11,3,1,13,84, + 13,11,3,3,13,84, 13,11,2,1,14,84, 13,11,2,3,14,84, 13,11,1,1,15,84, 13,11,1,3,15,84, 13,11,1,6,13,52, 13,10,14,1,2,85, 13,10,14,4,13,53, + 13,10,14,5,13,53, 13,10,13,1,3,85, 13,10,13,4,13,53, 13,10,12,1,4,85, 13,10,12,4,13,53, 13,10,11,1,5,85, 13,10,11,4,13,53, 13,10,10,1,6,85, + 13,10,10,4,13,53, 13,10,9,1,7,85, 13,10,9,4,13,53, 13,10,8,1,8,85, 13,10,8,4,13,53, 13,10,7,1,9,85, 13,10,7,4,13,53, 13,10,6,1,10,85, + 13,10,6,4,13,53, 13,10,5,1,11,85, 13,10,5,4,13,53, 13,10,4,1,12,85, 13,10,4,4,13,53, 13,10,3,1,13,85, 13,10,3,4,13,53, 13,10,2,1,14,85, + 13,10,2,4,13,53, 13,10,1,1,15,85, 13,10,1,4,13,53, 13,10,1,6,13,53, 13,4,11,1,5,91, 13,4,11,3,5,91, 13,4,11,4,13,59, 13,4,11,5,13,59, + 13,4,10,1,6,91, 13,4,10,3,6,91, 13,4,9,1,7,91, 13,4,9,3,7,91, 13,4,8,1,8,91, 13,4,8,3,8,91, 13,4,7,1,9,91, 13,4,7,3,9,91, + 13,4,6,1,10,91, 13,4,6,3,10,91, 13,4,6,6,1,75, 13,3,10,1,6,92, 13,3,10,5,13,60, 13,3,9,1,7,92, 13,3,8,1,8,92, 13,3,7,1,9,92, + 13,3,6,1,10,92, 13,3,5,1,11,92, 13,3,5,3,11,92, 13,3,5,6,1,76, 13,2,11,1,5,93, 13,2,11,3,5,93, 13,2,11,4,13,61, 13,2,11,5,13,61, + 13,2,10,1,6,93, 13,2,10,4,13,61, 13,2,9,1,7,93, 13,2,9,4,13,61, 13,2,8,1,8,93, 13,2,8,4,13,61, 13,2,7,1,9,93, 13,2,7,4,13,61, + 13,2,6,1,10,93, 13,2,6,4,13,61, 13,2,5,1,11,93, 13,2,5,4,13,61, 13,2,5,6,1,77, + }, + }, + }, +} diff --git a/assets/voxels/mom.lua b/assets/voxels/mom.lua new file mode 100644 index 0000000..3dd9f9c --- /dev/null +++ b/assets/voxels/mom.lua @@ -0,0 +1,151 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "mom" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "mom", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1735, + count = 1004, + faces = { + 1,8,13,2,3,39, 1,8,13,3,3,39, 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,12,3,4,39, 1,8,11,2,5,39, 1,8,11,3,5,39, 1,8,10,2,6,39, + 1,8,10,3,6,39, 1,8,9,2,7,39, 1,8,9,3,7,39, 1,8,8,2,8,39, 1,8,8,3,8,39, 1,8,7,2,9,39, 1,8,7,3,9,39, 1,8,6,2,10,39, + 1,8,6,3,10,39, 1,8,5,2,11,39, 1,8,5,3,11,39, 1,8,4,2,12,39, 1,8,4,3,12,39, 1,8,3,2,13,39, 1,8,3,3,13,39, 1,8,2,2,14,39, + 1,8,2,3,14,39, 1,8,2,6,14,23, 1,7,13,2,3,40, 1,7,13,4,1,8, 1,7,13,5,1,8, 1,7,12,2,4,40, 1,7,11,2,5,40, 1,7,10,2,6,40, + 1,7,9,2,7,40, 1,7,8,2,8,40, 1,7,7,2,9,40, 1,7,6,2,10,40, 1,7,5,2,11,40, 1,7,4,2,12,40, 1,7,3,2,13,40, 1,7,2,2,14,40, + 1,7,2,4,1,8, 1,7,2,6,14,24, 1,6,12,2,4,41, 1,6,12,4,1,9, 1,6,12,5,1,9, 1,6,11,2,5,41, 1,6,10,2,6,41, 1,6,9,2,7,41, + 1,6,8,2,8,41, 1,6,7,2,9,41, 1,6,6,2,10,41, 1,6,5,2,11,41, 1,6,4,2,12,41, 1,6,3,2,13,41, 1,6,3,6,14,25, 1,5,11,2,5,42, + 1,5,11,4,1,10, 1,5,11,5,1,10, 1,5,10,2,6,42, 1,5,10,4,1,10, 1,5,9,2,7,42, 1,5,9,4,1,10, 1,5,8,2,8,42, 1,5,8,4,1,10, + 1,5,7,2,9,42, 1,5,7,4,1,10, 1,5,6,2,10,42, 1,5,6,4,1,10, 1,5,5,2,11,42, 1,5,5,4,1,10, 1,5,4,2,12,42, 1,5,4,4,1,10, + 1,5,3,2,13,42, 1,5,3,4,1,10, 1,5,3,6,1,10, 2,12,13,2,3,35, 2,12,13,3,3,35, 2,12,13,5,13,19, 2,12,12,2,4,35, 2,12,12,3,4,35, + 2,12,11,2,5,35, 2,12,11,3,5,35, 2,12,10,2,6,35, 2,12,10,3,6,35, 2,12,9,2,7,35, 2,12,9,3,7,35, 2,12,8,2,8,35, 2,12,8,3,8,35, + 2,12,7,2,9,35, 2,12,7,3,9,35, 2,12,6,2,10,35, 2,12,6,3,10,35, 2,12,5,2,11,35, 2,12,5,3,11,35, 2,12,4,2,12,35, 2,12,4,3,12,35, + 2,12,3,2,13,35, 2,12,3,3,13,35, 2,12,3,6,13,19, 2,11,14,2,2,36, 2,11,14,3,2,36, 2,11,14,5,2,4, 2,11,13,2,3,36, 2,11,12,2,4,36, + 2,11,11,2,5,36, 2,11,10,2,6,36, 2,11,9,2,7,36, 2,11,8,2,8,36, 2,11,7,2,9,36, 2,11,6,2,10,36, 2,11,5,2,11,36, 2,11,4,2,12,36, + 2,11,3,2,13,36, 2,11,3,6,13,20, 2,10,14,2,2,37, 2,10,14,5,2,5, 2,10,13,2,3,37, 2,10,12,2,4,37, 2,10,11,2,5,37, 2,10,10,2,6,37, + 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, 2,10,6,2,10,37, 2,10,5,2,11,37, 2,10,4,2,12,37, 2,10,3,2,13,37, 2,10,3,6,13,21, + 2,9,14,2,2,38, 2,9,14,4,2,6, 2,9,14,5,2,6, 2,9,13,2,3,38, 2,9,12,2,4,38, 2,9,11,2,5,38, 2,9,10,2,6,38, 2,9,9,2,7,38, + 2,9,8,2,8,38, 2,9,7,2,9,38, 2,9,6,2,10,38, 2,9,5,2,11,38, 2,9,4,2,12,38, 2,9,3,2,13,38, 2,9,2,2,14,38, 2,9,2,3,14,38, + 2,9,2,6,13,22, 2,8,13,5,2,7, 2,8,2,6,13,23, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,2,4,2,8, 2,7,2,6,13,24, 2,6,12,4,2,9, + 2,6,12,5,2,9, 2,6,3,6,13,25, 2,5,11,5,2,10, 2,5,3,4,2,10, 2,5,3,6,13,26, 2,4,11,2,5,43, 2,4,11,5,2,11, 2,4,10,2,6,43, + 2,4,9,2,7,43, 2,4,8,2,8,43, 2,4,7,2,9,43, 2,4,6,2,10,43, 2,4,5,2,11,43, 2,4,4,2,12,43, 2,4,4,6,13,27, 2,3,11,2,5,44, + 2,3,11,4,2,12, 2,3,11,5,2,12, 2,3,10,2,6,44, 2,3,10,4,2,12, 2,3,9,2,7,44, 2,3,9,4,2,12, 2,3,8,2,8,44, 2,3,8,4,2,12, + 2,3,7,2,9,44, 2,3,7,4,2,12, 2,3,6,2,10,44, 2,3,6,4,2,12, 2,3,5,2,11,44, 2,3,5,4,2,12, 2,3,4,2,12,44, 2,3,4,4,2,12, + 2,3,3,2,13,44, 2,3,3,3,13,44, 2,3,3,4,2,12, 2,3,3,6,2,12, 3,13,13,2,3,34, 3,13,13,3,3,34, 3,13,13,5,3,2, 3,13,12,2,4,34, + 3,13,12,3,4,34, 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, + 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, + 3,13,4,3,12,34, 3,13,4,6,12,18, 3,12,13,5,3,3, 3,12,3,3,13,35, 3,12,3,6,12,19, 3,11,14,3,2,36, 3,11,14,5,3,4, 3,11,3,6,12,20, + 3,10,14,5,3,5, 3,10,3,6,12,21, 3,9,14,4,3,6, 3,9,14,5,3,6, 3,9,2,3,14,38, 3,9,2,6,12,22, 3,8,13,5,3,7, 3,8,2,6,12,23, + 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,2,4,3,8, 3,7,2,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,3,6,12,25, 3,5,11,5,3,10, + 3,5,3,4,3,10, 3,5,3,6,12,26, 3,4,11,5,3,11, 3,4,4,6,12,27, 3,3,11,5,3,12, 3,3,3,3,13,44, 3,3,3,6,12,28, 3,2,11,2,5,45, + 3,2,11,4,3,13, 3,2,11,5,3,13, 3,2,10,2,6,45, 3,2,10,4,3,13, 3,2,9,2,7,45, 3,2,9,4,3,13, 3,2,8,2,8,45, 3,2,8,4,3,13, + 3,2,7,2,9,45, 3,2,7,4,3,13, 3,2,6,2,10,45, 3,2,6,4,3,13, 3,2,5,2,11,45, 3,2,5,4,3,13, 3,2,4,2,12,45, 3,2,4,4,3,13, + 3,2,3,2,13,45, 3,2,3,4,3,13, 3,2,3,6,12,29, 4,14,12,2,4,33, 4,14,12,3,4,33, 4,14,12,5,4,1, 4,14,11,2,5,33, 4,14,11,3,5,33, + 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, + 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,5,2,11,33, 4,14,5,3,11,33, 4,14,5,6,11,17, 4,13,13,3,3,34, 4,13,13,5,4,2, 4,13,4,3,12,34, + 4,13,4,6,11,18, 4,12,13,5,4,3, 4,12,3,3,13,35, 4,12,3,6,11,19, 4,11,14,3,2,36, 4,11,14,5,4,4, 4,11,3,6,11,20, 4,10,14,5,4,5, + 4,10,3,6,11,21, 4,9,14,4,4,6, 4,9,14,5,4,6, 4,9,2,3,14,38, 4,9,2,6,11,22, 4,8,13,5,4,7, 4,8,2,6,11,23, 4,7,13,4,4,8, + 4,7,13,5,4,8, 4,7,2,4,4,8, 4,7,2,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,3,6,11,25, 4,5,11,5,4,10, 4,5,3,4,4,10, + 4,5,3,6,11,26, 4,4,11,5,4,11, 4,4,4,6,11,27, 4,3,11,5,4,12, 4,3,3,3,13,44, 4,3,3,6,11,28, 4,2,11,5,4,13, 4,2,3,4,4,13, + 4,2,3,6,11,29, 4,1,11,2,5,46, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,10,2,6,46, 4,1,10,4,4,14, 4,1,9,2,7,46, 4,1,9,4,4,14, + 4,1,8,2,8,46, 4,1,8,4,4,14, 4,1,7,2,9,46, 4,1,7,4,4,14, 4,1,6,2,10,46, 4,1,6,4,4,14, 4,1,5,2,11,46, 4,1,5,4,4,14, + 4,1,4,2,12,46, 4,1,4,4,4,14, 4,1,4,6,11,30, 5,14,12,3,4,33, 5,14,12,5,5,1, 5,14,11,3,5,33, 5,14,10,3,6,33, 5,14,9,3,7,33, + 5,14,8,3,8,33, 5,14,7,3,9,33, 5,14,6,3,10,33, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,13,3,3,34, 5,13,13,5,5,2, 5,13,4,3,12,34, + 5,13,4,6,10,18, 5,12,13,5,5,3, 5,12,3,3,13,35, 5,12,3,6,10,19, 5,11,14,3,2,36, 5,11,14,5,5,4, 5,11,3,6,10,20, 5,10,14,5,5,5, + 5,10,3,6,10,21, 5,9,14,4,5,6, 5,9,14,5,5,6, 5,9,2,3,14,38, 5,9,2,6,10,22, 5,8,13,5,5,7, 5,8,2,6,10,23, 5,7,13,4,5,8, + 5,7,13,5,5,8, 5,7,2,4,5,8, 5,7,2,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,3,6,10,25, 5,5,11,5,5,10, 5,5,3,4,5,10, + 5,5,3,6,10,26, 5,4,11,5,5,11, 5,4,4,6,10,27, 5,3,11,5,5,12, 5,3,3,3,13,44, 5,3,3,6,10,28, 5,2,11,5,5,13, 5,2,3,4,5,13, + 5,2,3,6,10,29, 5,1,11,4,5,14, 5,1,11,5,5,14, 5,1,5,4,5,14, 5,1,4,4,5,14, 5,1,4,6,10,30, 5,0,10,2,6,47, 5,0,10,5,5,15, + 5,0,9,2,7,47, 5,0,8,2,8,47, 5,0,7,2,9,47, 5,0,6,2,10,47, 5,0,6,6,10,31, 6,15,10,2,6,32, 6,15,10,3,6,32, 6,15,10,5,6,0, + 6,15,9,2,7,32, 6,15,9,3,7,32, 6,15,8,2,8,32, 6,15,8,3,8,32, 6,15,7,2,9,32, 6,15,7,3,9,32, 6,15,7,6,9,16, 6,14,12,3,4,33, + 6,14,12,5,6,1, 6,14,11,3,5,33, 6,14,6,3,10,33, 6,14,5,3,11,33, 6,14,5,6,9,17, 6,13,13,3,3,34, 6,13,13,5,6,2, 6,13,4,3,12,34, + 6,13,4,6,9,18, 6,12,13,5,6,3, 6,12,3,3,13,35, 6,12,3,6,9,19, 6,11,14,3,2,36, 6,11,14,5,6,4, 6,11,3,6,9,20, 6,10,14,5,6,5, + 6,10,3,6,9,21, 6,9,14,4,6,6, 6,9,14,5,6,6, 6,9,2,3,14,38, 6,9,2,6,9,22, 6,8,13,5,6,7, 6,8,2,6,9,23, 6,7,13,4,6,8, + 6,7,13,5,6,8, 6,7,2,4,6,8, 6,7,2,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,3,6,9,25, 6,5,11,5,6,10, 6,5,3,4,6,10, + 6,5,3,6,9,26, 6,4,11,5,6,11, 6,4,4,6,9,27, 6,3,11,5,6,12, 6,3,3,3,13,44, 6,3,3,6,9,28, 6,2,11,5,6,13, 6,2,3,4,6,13, + 6,2,3,6,9,29, 6,1,11,4,6,14, 6,1,11,5,6,14, 6,1,5,4,6,14, 6,1,4,4,6,14, 6,1,4,6,9,30, 6,0,10,5,6,15, 6,0,6,6,9,31, + 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, 7,15,7,6,8,16, 7,14,12,3,4,33, 7,14,12,5,7,1, + 7,14,11,3,5,33, 7,14,6,3,10,33, 7,14,5,3,11,33, 7,14,5,6,8,17, 7,13,13,3,3,34, 7,13,13,5,7,2, 7,13,4,3,12,34, 7,13,4,6,8,18, + 7,12,13,5,7,3, 7,12,3,3,13,35, 7,12,3,6,8,19, 7,11,14,3,2,36, 7,11,14,5,7,4, 7,11,3,6,8,20, 7,10,14,5,7,5, 7,10,3,6,8,21, + 7,9,14,4,7,6, 7,9,14,5,7,6, 7,9,2,3,14,38, 7,9,2,6,8,22, 7,8,13,5,7,7, 7,8,2,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, + 7,7,2,4,7,8, 7,7,2,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,3,6,8,25, 7,5,11,5,7,10, 7,5,3,4,7,10, 7,5,3,6,8,26, + 7,4,11,5,7,11, 7,4,4,6,8,27, 7,3,11,5,7,12, 7,3,3,3,13,44, 7,3,3,6,8,28, 7,2,11,5,7,13, 7,2,3,4,7,13, 7,2,3,6,8,29, + 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,5,4,7,14, 7,1,4,4,7,14, 7,1,4,6,8,30, 7,0,10,5,7,15, 7,0,6,6,8,31, 8,15,10,3,6,32, + 8,15,10,5,8,0, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,7,6,7,16, 8,14,12,3,4,33, 8,14,12,5,8,1, 8,14,11,3,5,33, + 8,14,6,3,10,33, 8,14,5,3,11,33, 8,14,5,6,7,17, 8,13,13,3,3,34, 8,13,13,5,8,2, 8,13,4,3,12,34, 8,13,4,6,7,18, 8,12,13,5,8,3, + 8,12,3,3,13,35, 8,12,3,6,7,19, 8,11,14,3,2,36, 8,11,14,5,8,4, 8,11,3,6,7,20, 8,10,14,5,8,5, 8,10,3,6,7,21, 8,9,14,4,8,6, + 8,9,14,5,8,6, 8,9,2,3,14,38, 8,9,2,6,7,22, 8,8,13,5,8,7, 8,8,2,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,2,4,8,8, + 8,7,2,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,3,6,7,25, 8,5,11,5,8,10, 8,5,3,4,8,10, 8,5,3,6,7,26, 8,4,11,5,8,11, + 8,4,4,6,7,27, 8,3,11,5,8,12, 8,3,3,3,13,44, 8,3,3,6,7,28, 8,2,11,5,8,13, 8,2,3,4,8,13, 8,2,3,6,7,29, 8,1,11,4,8,14, + 8,1,11,5,8,14, 8,1,5,4,8,14, 8,1,4,4,8,14, 8,1,4,6,7,30, 8,0,10,5,8,15, 8,0,6,6,7,31, 9,15,10,1,6,32, 9,15,10,3,6,32, + 9,15,10,5,9,0, 9,15,9,1,7,32, 9,15,9,3,7,32, 9,15,8,1,8,32, 9,15,8,3,8,32, 9,15,7,1,9,32, 9,15,7,3,9,32, 9,15,7,6,6,16, + 9,14,12,3,4,33, 9,14,12,5,9,1, 9,14,11,3,5,33, 9,14,6,3,10,33, 9,14,5,3,11,33, 9,14,5,6,6,17, 9,13,13,3,3,34, 9,13,13,5,9,2, + 9,13,4,3,12,34, 9,13,4,6,6,18, 9,12,13,5,9,3, 9,12,3,3,13,35, 9,12,3,6,6,19, 9,11,14,3,2,36, 9,11,14,5,9,4, 9,11,3,6,6,20, + 9,10,14,5,9,5, 9,10,3,6,6,21, 9,9,14,4,9,6, 9,9,14,5,9,6, 9,9,2,3,14,38, 9,9,2,6,6,22, 9,8,13,5,9,7, 9,8,2,6,6,23, + 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,2,4,9,8, 9,7,2,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,3,6,6,25, 9,5,11,5,9,10, + 9,5,3,4,9,10, 9,5,3,6,6,26, 9,4,11,5,9,11, 9,4,4,6,6,27, 9,3,11,5,9,12, 9,3,3,3,13,44, 9,3,3,6,6,28, 9,2,11,5,9,13, + 9,2,3,4,9,13, 9,2,3,6,6,29, 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,5,4,9,14, 9,1,4,4,9,14, 9,1,4,6,6,30, 9,0,10,5,9,15, + 9,0,6,6,6,31, 10,14,12,3,4,33, 10,14,12,5,10,1, 10,14,11,3,5,33, 10,14,10,3,6,33, 10,14,9,3,7,33, 10,14,8,3,8,33, 10,14,7,3,9,33, + 10,14,6,3,10,33, 10,14,5,3,11,33, 10,14,5,6,5,17, 10,13,13,3,3,34, 10,13,13,5,10,2, 10,13,4,3,12,34, 10,13,4,6,5,18, 10,12,13,5,10,3, + 10,12,3,3,13,35, 10,12,3,6,5,19, 10,11,14,3,2,36, 10,11,14,5,10,4, 10,11,3,6,5,20, 10,10,14,5,10,5, 10,10,3,6,5,21, 10,9,14,4,10,6, + 10,9,14,5,10,6, 10,9,2,3,14,38, 10,9,2,6,5,22, 10,8,13,5,10,7, 10,8,2,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,2,4,10,8, + 10,7,2,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,3,6,5,25, 10,5,11,5,10,10, 10,5,3,4,10,10, 10,5,3,6,5,26, 10,4,11,5,10,11, + 10,4,4,6,5,27, 10,3,11,5,10,12, 10,3,3,3,13,44, 10,3,3,6,5,28, 10,2,11,5,10,13, 10,2,3,4,10,13, 10,2,3,6,5,29, 10,1,11,4,10,14, + 10,1,11,5,10,14, 10,1,5,4,10,14, 10,1,4,4,10,14, 10,1,4,6,5,30, 10,0,10,1,6,47, 10,0,10,5,10,15, 10,0,9,1,7,47, 10,0,8,1,8,47, + 10,0,7,1,9,47, 10,0,6,1,10,47, 10,0,6,6,5,31, 11,14,12,1,4,33, 11,14,12,3,4,33, 11,14,12,5,11,1, 11,14,11,1,5,33, 11,14,11,3,5,33, + 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, + 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,5,6,4,17, 11,13,13,3,3,34, 11,13,13,5,11,2, 11,13,4,3,12,34, + 11,13,4,6,4,18, 11,12,13,5,11,3, 11,12,3,3,13,35, 11,12,3,6,4,19, 11,11,14,3,2,36, 11,11,14,5,11,4, 11,11,3,6,4,20, 11,10,14,5,11,5, + 11,10,3,6,4,21, 11,9,14,4,11,6, 11,9,14,5,11,6, 11,9,2,3,14,38, 11,9,2,6,4,22, 11,8,13,5,11,7, 11,8,2,6,4,23, 11,7,13,4,11,8, + 11,7,13,5,11,8, 11,7,2,4,11,8, 11,7,2,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,3,6,4,25, 11,5,11,5,11,10, 11,5,3,4,11,10, + 11,5,3,6,4,26, 11,4,11,5,11,11, 11,4,4,6,4,27, 11,3,11,5,11,12, 11,3,3,3,13,44, 11,3,3,6,4,28, 11,2,11,5,11,13, 11,2,3,4,11,13, + 11,2,3,6,4,29, 11,1,11,1,5,46, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,10,1,6,46, 11,1,10,4,11,14, 11,1,9,1,7,46, 11,1,9,4,11,14, + 11,1,8,1,8,46, 11,1,8,4,11,14, 11,1,7,1,9,46, 11,1,7,4,11,14, 11,1,6,1,10,46, 11,1,6,4,11,14, 11,1,5,1,11,46, 11,1,5,4,11,14, + 11,1,4,1,12,46, 11,1,4,4,11,14, 11,1,4,6,4,30, 12,13,13,1,3,34, 12,13,13,3,3,34, 12,13,13,5,12,2, 12,13,12,1,4,34, 12,13,12,3,4,34, + 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, + 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,4,1,12,34, 12,13,4,3,12,34, + 12,13,4,6,3,18, 12,12,13,1,3,35, 12,12,13,5,12,3, 12,12,12,1,4,35, 12,12,11,1,5,35, 12,12,10,1,6,35, 12,12,9,1,7,35, 12,12,8,1,8,35, + 12,12,7,1,9,35, 12,12,6,1,10,35, 12,12,5,1,11,35, 12,12,4,1,12,35, 12,12,3,1,13,35, 12,12,3,3,13,35, 12,12,3,6,3,19, 12,11,14,3,2,36, + 12,11,14,5,12,4, 12,11,3,6,3,20, 12,10,14,5,12,5, 12,10,3,6,3,21, 12,9,14,4,12,6, 12,9,14,5,12,6, 12,9,2,3,14,38, 12,9,2,6,3,22, + 12,8,13,5,12,7, 12,8,2,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,2,4,12,8, 12,7,2,6,3,24, 12,6,12,4,12,9, 12,6,12,5,12,9, + 12,6,3,6,3,25, 12,5,11,5,12,10, 12,5,3,4,12,10, 12,5,3,6,3,26, 12,4,11,5,12,11, 12,4,4,6,3,27, 12,3,11,5,12,12, 12,3,3,3,13,44, + 12,3,3,6,3,28, 12,2,11,1,5,45, 12,2,11,4,12,13, 12,2,11,5,12,13, 12,2,10,1,6,45, 12,2,10,4,12,13, 12,2,9,1,7,45, 12,2,9,4,12,13, + 12,2,8,1,8,45, 12,2,8,4,12,13, 12,2,7,1,9,45, 12,2,7,4,12,13, 12,2,6,1,10,45, 12,2,6,4,12,13, 12,2,5,1,11,45, 12,2,5,4,12,13, + 12,2,4,1,12,45, 12,2,4,4,12,13, 12,2,3,1,13,45, 12,2,3,4,12,13, 12,2,3,6,3,29, 13,11,14,1,2,36, 13,11,14,3,2,36, 13,11,14,5,13,4, + 13,11,13,1,3,36, 13,11,13,3,3,36, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, 13,11,11,3,5,36, 13,11,10,1,6,36, 13,11,10,3,6,36, + 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, 13,11,7,3,9,36, 13,11,6,1,10,36, 13,11,6,3,10,36, + 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, 13,11,3,3,13,36, 13,11,3,6,2,20, 13,10,14,1,2,37, + 13,10,14,5,13,5, 13,10,13,1,3,37, 13,10,12,1,4,37, 13,10,11,1,5,37, 13,10,10,1,6,37, 13,10,9,1,7,37, 13,10,8,1,8,37, 13,10,7,1,9,37, + 13,10,6,1,10,37, 13,10,5,1,11,37, 13,10,4,1,12,37, 13,10,3,1,13,37, 13,10,3,6,2,21, 13,9,14,1,2,38, 13,9,14,4,13,6, 13,9,14,5,13,6, + 13,9,13,1,3,38, 13,9,12,1,4,38, 13,9,11,1,5,38, 13,9,10,1,6,38, 13,9,9,1,7,38, 13,9,8,1,8,38, 13,9,7,1,9,38, 13,9,6,1,10,38, + 13,9,5,1,11,38, 13,9,4,1,12,38, 13,9,3,1,13,38, 13,9,2,1,14,38, 13,9,2,3,14,38, 13,9,2,6,2,22, 13,8,13,5,13,7, 13,8,2,6,2,23, + 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,2,4,13,8, 13,7,2,6,2,24, 13,6,12,4,13,9, 13,6,12,5,13,9, 13,6,3,6,2,25, 13,5,11,5,13,10, + 13,5,3,4,13,10, 13,5,3,6,2,26, 13,4,11,1,5,43, 13,4,11,5,13,11, 13,4,10,1,6,43, 13,4,9,1,7,43, 13,4,8,1,8,43, 13,4,7,1,9,43, + 13,4,6,1,10,43, 13,4,5,1,11,43, 13,4,4,1,12,43, 13,4,4,6,2,27, 13,3,11,1,5,44, 13,3,11,4,13,12, 13,3,11,5,13,12, 13,3,10,1,6,44, + 13,3,10,4,13,12, 13,3,9,1,7,44, 13,3,9,4,13,12, 13,3,8,1,8,44, 13,3,8,4,13,12, 13,3,7,1,9,44, 13,3,7,4,13,12, 13,3,6,1,10,44, + 13,3,6,4,13,12, 13,3,5,1,11,44, 13,3,5,4,13,12, 13,3,4,1,12,44, 13,3,4,4,13,12, 13,3,3,1,13,44, 13,3,3,3,13,44, 13,3,3,4,13,12, + 13,3,3,6,13,12, 14,8,13,1,3,39, 14,8,13,3,3,39, 14,8,13,5,14,7, 14,8,12,1,4,39, 14,8,12,3,4,39, 14,8,11,1,5,39, 14,8,11,3,5,39, + 14,8,10,1,6,39, 14,8,10,3,6,39, 14,8,9,1,7,39, 14,8,9,3,7,39, 14,8,8,1,8,39, 14,8,8,3,8,39, 14,8,7,1,9,39, 14,8,7,3,9,39, + 14,8,6,1,10,39, 14,8,6,3,10,39, 14,8,5,1,11,39, 14,8,5,3,11,39, 14,8,4,1,12,39, 14,8,4,3,12,39, 14,8,3,1,13,39, 14,8,3,3,13,39, + 14,8,2,1,14,39, 14,8,2,3,14,39, 14,8,2,6,1,23, 14,7,13,1,3,40, 14,7,13,4,14,8, 14,7,13,5,14,8, 14,7,12,1,4,40, 14,7,11,1,5,40, + 14,7,10,1,6,40, 14,7,9,1,7,40, 14,7,8,1,8,40, 14,7,7,1,9,40, 14,7,6,1,10,40, 14,7,5,1,11,40, 14,7,4,1,12,40, 14,7,3,1,13,40, + 14,7,2,1,14,40, 14,7,2,4,14,8, 14,7,2,6,1,24, 14,6,12,1,4,41, 14,6,12,4,14,9, 14,6,12,5,14,9, 14,6,11,1,5,41, 14,6,10,1,6,41, + 14,6,9,1,7,41, 14,6,8,1,8,41, 14,6,7,1,9,41, 14,6,6,1,10,41, 14,6,5,1,11,41, 14,6,4,1,12,41, 14,6,3,1,13,41, 14,6,3,6,1,25, + 14,5,11,1,5,42, 14,5,11,4,14,10, 14,5,11,5,14,10, 14,5,10,1,6,42, 14,5,10,4,14,10, 14,5,9,1,7,42, 14,5,9,4,14,10, 14,5,8,1,8,42, + 14,5,8,4,14,10, 14,5,7,1,9,42, 14,5,7,4,14,10, 14,5,6,1,10,42, 14,5,6,4,14,10, 14,5,5,1,11,42, 14,5,5,4,14,10, 14,5,4,1,12,42, + 14,5,4,4,14,10, 14,5,3,1,13,42, 14,5,3,4,14,10, 14,5,3,6,14,10, + }, + }, + }, +} diff --git a/assets/voxels/monster.lua b/assets/voxels/monster.lua new file mode 100644 index 0000000..8399c93 --- /dev/null +++ b/assets/voxels/monster.lua @@ -0,0 +1,367 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "monster" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "monster", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1812, + count = 1384, + faces = { + 0,5,12,2,3,42, 0,5,12,3,3,42, 0,5,12,4,0,10, 0,5,12,5,0,10, 0,5,11,2,4,42, 0,5,11,3,4,42, 0,5,11,4,0,10, 0,5,10,2,5,42, + 0,5,10,3,5,42, 0,5,10,4,0,10, 0,5,9,2,6,42, 0,5,9,3,6,42, 0,5,9,4,0,10, 0,5,8,2,7,42, 0,5,8,3,7,42, 0,5,8,4,0,10, + 0,5,7,2,8,42, 0,5,7,3,8,42, 0,5,7,4,0,10, 0,5,6,2,9,42, 0,5,6,3,9,42, 0,5,6,4,0,10, 0,5,5,2,10,42, 0,5,5,3,10,42, + 0,5,5,4,0,10, 0,5,4,2,11,42, 0,5,4,3,11,42, 0,5,4,4,0,10, 0,5,3,2,12,42, 0,5,3,3,12,42, 0,5,3,4,0,10, 0,5,2,2,13,42, + 0,5,2,3,13,42, 0,5,2,4,0,10, 0,5,1,2,14,42, 0,5,1,3,14,42, 0,5,1,4,0,10, 0,5,1,6,15,26, 1,14,12,2,3,33, 1,14,12,3,3,33, + 1,14,12,5,1,1, 1,14,11,2,4,33, 1,14,11,3,4,33, 1,14,10,2,5,33, 1,14,10,3,5,33, 1,14,9,2,6,33, 1,14,9,3,6,33, 1,14,8,2,7,33, + 1,14,8,3,7,33, 1,14,7,2,8,33, 1,14,7,3,8,33, 1,14,7,6,14,17, 1,13,12,2,3,34, 1,13,12,4,1,2, 1,13,12,5,1,2, 1,13,11,2,4,34, + 1,13,11,4,1,2, 1,13,10,2,5,34, 1,13,10,4,1,2, 1,13,9,2,6,34, 1,13,9,4,1,2, 1,13,8,2,7,34, 1,13,8,4,1,2, 1,13,7,2,8,34, + 1,13,7,4,1,2, 1,13,6,2,9,34, 1,13,6,3,9,34, 1,13,6,4,1,2, 1,13,5,2,10,34, 1,13,5,3,10,34, 1,13,5,4,1,2, 1,13,4,2,11,34, + 1,13,4,3,11,34, 1,13,4,4,1,2, 1,13,3,2,12,34, 1,13,3,3,12,34, 1,13,3,4,1,2, 1,13,3,6,14,18, 1,6,13,2,2,41, 1,6,13,3,2,41, + 1,6,13,4,1,9, 1,6,13,5,1,9, 1,6,12,2,3,41, 1,6,12,3,3,41, 1,6,11,2,4,41, 1,6,11,3,4,41, 1,6,10,2,5,41, 1,6,10,3,5,41, + 1,6,9,2,6,41, 1,6,9,3,6,41, 1,6,8,2,7,41, 1,6,8,3,7,41, 1,6,7,2,8,41, 1,6,7,3,8,41, 1,6,6,2,9,41, 1,6,6,3,9,41, + 1,6,5,2,10,41, 1,6,5,3,10,41, 1,6,4,2,11,41, 1,6,4,3,11,41, 1,6,3,2,12,41, 1,6,3,3,12,41, 1,6,3,6,14,25, 1,5,12,4,1,10, + 1,5,12,5,1,10, 1,5,11,4,1,10, 1,5,10,4,1,10, 1,5,2,3,13,42, 1,5,1,3,14,42, 1,5,1,6,14,26, 1,4,9,2,6,43, 1,4,9,4,1,11, + 1,4,9,5,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, + 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,3,2,12,43, 1,4,3,4,1,11, 1,4,2,2,13,43, 1,4,2,4,1,11, 1,4,1,2,14,43, + 1,4,1,4,1,11, 1,4,0,2,15,43, 1,4,0,3,15,43, 1,4,0,4,1,11, 1,4,0,6,14,27, 2,14,12,3,3,33, 2,14,12,5,2,1, 2,14,11,3,4,33, + 2,14,10,3,5,33, 2,14,9,3,6,33, 2,14,8,3,7,33, 2,14,7,3,8,33, 2,14,7,6,13,17, 2,13,12,5,2,2, 2,13,6,3,9,34, 2,13,5,3,10,34, + 2,13,4,3,11,34, 2,13,3,3,12,34, 2,13,3,6,13,18, 2,12,12,2,3,35, 2,12,12,4,2,3, 2,12,12,5,2,3, 2,12,11,2,4,35, 2,12,11,4,2,3, + 2,12,10,2,5,35, 2,12,10,4,2,3, 2,12,9,2,6,35, 2,12,9,4,2,3, 2,12,8,2,7,35, 2,12,8,4,2,3, 2,12,7,2,8,35, 2,12,7,4,2,3, + 2,12,6,2,9,35, 2,12,6,4,2,3, 2,12,5,2,10,35, 2,12,5,4,2,3, 2,12,4,2,11,35, 2,12,4,4,2,3, 2,12,3,2,12,35, 2,12,3,4,2,3, + 2,12,2,2,13,35, 2,12,2,3,13,35, 2,12,2,4,2,3, 2,12,2,6,13,19, 2,10,14,2,1,37, 2,10,14,3,1,37, 2,10,14,5,2,5, 2,10,13,2,2,37, + 2,10,13,3,2,37, 2,10,12,2,3,37, 2,10,12,3,3,37, 2,10,11,2,4,37, 2,10,11,3,4,37, 2,10,10,2,5,37, 2,10,10,3,5,37, 2,10,9,2,6,37, + 2,10,9,3,6,37, 2,10,8,2,7,37, 2,10,8,3,7,37, 2,10,7,2,8,37, 2,10,7,3,8,37, 2,10,6,2,9,37, 2,10,6,3,9,37, 2,10,5,2,10,37, + 2,10,5,3,10,37, 2,10,4,2,11,37, 2,10,4,3,11,37, 2,10,3,2,12,37, 2,10,3,3,12,37, 2,10,3,4,2,5, 2,10,3,6,13,21, 2,9,15,2,0,38, + 2,9,15,3,0,38, 2,9,15,4,2,6, 2,9,15,5,2,6, 2,9,14,2,1,38, 2,9,14,4,2,6, 2,9,13,2,2,38, 2,9,13,4,2,6, 2,9,12,2,3,38, + 2,9,12,4,2,6, 2,9,11,2,4,38, 2,9,11,4,2,6, 2,9,10,2,5,38, 2,9,10,4,2,6, 2,9,9,2,6,38, 2,9,9,4,2,6, 2,9,8,2,7,38, + 2,9,8,4,2,6, 2,9,7,2,8,38, 2,9,7,4,2,6, 2,9,6,2,9,38, 2,9,6,4,2,6, 2,9,5,2,10,38, 2,9,5,4,2,6, 2,9,4,2,11,38, + 2,9,4,4,2,6, 2,9,4,6,13,22, 2,7,14,2,1,40, 2,7,14,3,1,40, 2,7,14,4,2,8, 2,7,14,5,2,8, 2,7,13,2,2,40, 2,7,13,3,2,40, + 2,7,12,2,3,40, 2,7,12,3,3,40, 2,7,11,2,4,40, 2,7,11,3,4,40, 2,7,10,2,5,40, 2,7,10,3,5,40, 2,7,9,2,6,40, 2,7,9,3,6,40, + 2,7,8,2,7,40, 2,7,8,3,7,40, 2,7,7,2,8,40, 2,7,7,3,8,40, 2,7,6,2,9,40, 2,7,6,3,9,40, 2,7,5,2,10,40, 2,7,5,3,10,40, + 2,7,4,2,11,40, 2,7,4,3,11,40, 2,7,4,6,13,24, 2,6,13,4,2,9, 2,6,13,5,2,9, 2,6,3,3,12,41, 2,6,3,6,13,25, 2,5,12,4,2,10, + 2,5,12,5,2,10, 2,5,11,4,2,10, 2,5,10,4,2,10, 2,5,2,3,13,42, 2,5,1,3,14,42, 2,5,1,6,13,26, 2,4,9,4,2,11, 2,4,9,5,2,11, + 2,4,8,4,2,11, 2,4,7,4,2,11, 2,4,6,4,2,11, 2,4,5,4,2,11, 2,4,4,4,2,11, 2,4,3,4,2,11, 2,4,2,4,2,11, 2,4,1,4,2,11, + 2,4,0,3,15,43, 2,4,0,4,2,11, 2,4,0,6,13,27, 2,2,8,2,7,45, 2,2,8,3,7,45, 2,2,8,5,2,13, 2,2,7,2,8,45, 2,2,7,3,8,45, + 2,2,6,2,9,45, 2,2,6,3,9,45, 2,2,5,2,10,45, 2,2,5,3,10,45, 2,2,4,2,11,45, 2,2,4,3,11,45, 2,2,3,2,12,45, 2,2,3,3,12,45, + 2,2,2,2,13,45, 2,2,2,3,13,45, 2,2,1,2,14,45, 2,2,1,3,14,45, 2,2,1,4,2,13, 2,2,1,6,13,29, 2,1,9,2,6,46, 2,1,9,3,6,46, + 2,1,9,4,2,14, 2,1,9,5,2,14, 2,1,8,2,7,46, 2,1,8,4,2,14, 2,1,7,2,8,46, 2,1,7,4,2,14, 2,1,6,2,9,46, 2,1,6,4,2,14, + 2,1,5,2,10,46, 2,1,5,4,2,14, 2,1,4,2,11,46, 2,1,4,4,2,14, 2,1,3,2,12,46, 2,1,3,4,2,14, 2,1,2,2,13,46, 2,1,2,4,2,14, + 2,1,2,6,13,30, 3,14,12,3,3,33, 3,14,12,5,3,1, 3,14,11,3,4,33, 3,14,10,3,5,33, 3,14,9,3,6,33, 3,14,8,3,7,33, 3,14,7,3,8,33, + 3,14,7,6,12,17, 3,13,12,5,3,2, 3,13,6,3,9,34, 3,13,5,3,10,34, 3,13,4,3,11,34, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,12,5,3,3, + 3,12,2,3,13,35, 3,12,2,6,12,19, 3,11,13,2,2,36, 3,11,13,3,2,36, 3,11,13,5,3,4, 3,11,12,2,3,36, 3,11,11,2,4,36, 3,11,10,2,5,36, + 3,11,9,2,6,36, 3,11,8,2,7,36, 3,11,7,2,8,36, 3,11,6,2,9,36, 3,11,5,2,10,36, 3,11,4,2,11,36, 3,11,3,2,12,36, 3,11,2,2,13,36, + 3,11,2,4,3,4, 3,11,2,6,12,20, 3,10,14,3,1,37, 3,10,14,5,3,5, 3,10,3,4,3,5, 3,10,3,6,12,21, 3,9,15,3,0,38, 3,9,15,5,3,6, + 3,9,4,4,3,6, 3,9,4,6,12,22, 3,8,15,2,0,39, 3,8,15,4,3,7, 3,8,15,5,3,7, 3,8,14,2,1,39, 3,8,13,2,2,39, 3,8,12,2,3,39, + 3,8,11,2,4,39, 3,8,10,2,5,39, 3,8,9,2,6,39, 3,8,8,2,7,39, 3,8,7,2,8,39, 3,8,6,2,9,39, 3,8,5,2,10,39, 3,8,5,6,12,23, + 3,7,14,4,3,8, 3,7,14,5,3,8, 3,7,4,3,11,40, 3,7,4,6,12,24, 3,6,13,4,3,9, 3,6,13,5,3,9, 3,6,3,3,12,41, 3,6,3,6,12,25, + 3,5,12,4,3,10, 3,5,12,5,3,10, 3,5,11,4,3,10, 3,5,10,4,3,10, 3,5,2,3,13,42, 3,5,1,3,14,42, 3,5,1,6,12,26, 3,4,9,5,3,11, + 3,4,0,3,15,43, 3,4,0,6,12,27, 3,3,9,2,6,44, 3,3,9,4,3,12, 3,3,9,5,3,12, 3,3,8,2,7,44, 3,3,7,2,8,44, 3,3,6,2,9,44, + 3,3,5,2,10,44, 3,3,4,2,11,44, 3,3,3,2,12,44, 3,3,2,2,13,44, 3,3,1,2,14,44, 3,3,0,2,15,44, 3,3,0,4,3,12, 3,3,0,6,12,28, + 3,2,8,5,3,13, 3,2,1,4,3,13, 3,2,1,6,12,29, 3,1,9,3,6,46, 3,1,9,4,3,14, 3,1,9,5,3,14, 3,1,4,4,3,14, 3,1,3,4,3,14, + 3,1,2,4,3,14, 3,1,2,6,12,30, 3,0,8,2,7,47, 3,0,8,5,3,15, 3,0,7,2,8,47, 3,0,6,2,9,47, 3,0,5,2,10,47, 3,0,5,6,12,31, + 4,14,12,3,3,33, 4,14,12,5,4,1, 4,14,11,3,4,33, 4,14,10,3,5,33, 4,14,9,3,6,33, 4,14,8,3,7,33, 4,14,7,3,8,33, 4,14,7,6,11,17, + 4,13,12,5,4,2, 4,13,6,3,9,34, 4,13,5,3,10,34, 4,13,4,3,11,34, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,12,5,4,3, 4,12,2,3,13,35, + 4,12,2,6,11,19, 4,11,13,3,2,36, 4,11,13,5,4,4, 4,11,2,4,4,4, 4,11,2,6,11,20, 4,10,14,3,1,37, 4,10,14,5,4,5, 4,10,3,4,4,5, + 4,10,3,6,11,21, 4,9,15,3,0,38, 4,9,15,5,4,6, 4,9,4,4,4,6, 4,9,4,6,11,22, 4,8,15,4,4,7, 4,8,15,5,4,7, 4,8,5,6,11,23, + 4,7,14,4,4,8, 4,7,14,5,4,8, 4,7,4,3,11,40, 4,7,4,6,11,24, 4,6,13,4,4,9, 4,6,13,5,4,9, 4,6,3,3,12,41, 4,6,3,6,11,25, + 4,5,12,4,4,10, 4,5,12,5,4,10, 4,5,11,4,4,10, 4,5,10,4,4,10, 4,5,2,3,13,42, 4,5,1,3,14,42, 4,5,1,6,11,26, 4,4,9,5,4,11, + 4,4,0,3,15,43, 4,4,0,6,11,27, 4,3,9,4,4,12, 4,3,9,5,4,12, 4,3,0,4,4,12, 4,3,0,6,11,28, 4,2,8,5,4,13, 4,2,1,4,4,13, + 4,2,1,6,11,29, 4,1,9,3,6,46, 4,1,9,4,4,14, 4,1,9,5,4,14, 4,1,4,4,4,14, 4,1,3,4,4,14, 4,1,2,4,4,14, 4,1,2,6,11,30, + 4,0,8,5,4,15, 4,0,5,6,11,31, 5,14,12,3,3,33, 5,14,12,5,5,1, 5,14,11,3,4,33, 5,14,10,3,5,33, 5,14,9,3,6,33, 5,14,8,3,7,33, + 5,14,7,3,8,33, 5,14,7,6,10,17, 5,13,12,5,5,2, 5,13,6,3,9,34, 5,13,5,3,10,34, 5,13,4,3,11,34, 5,13,3,3,12,34, 5,13,3,6,10,18, + 5,12,12,5,5,3, 5,12,2,3,13,35, 5,12,2,6,10,19, 5,11,13,3,2,36, 5,11,13,5,5,4, 5,11,2,4,5,4, 5,11,2,6,10,20, 5,10,14,3,1,37, + 5,10,14,5,5,5, 5,10,3,4,5,5, 5,10,3,6,10,21, 5,9,15,3,0,38, 5,9,15,5,5,6, 5,9,4,4,5,6, 5,9,4,6,10,22, 5,8,15,4,5,7, + 5,8,15,5,5,7, 5,8,5,6,10,23, 5,7,14,4,5,8, 5,7,14,5,5,8, 5,7,4,3,11,40, 5,7,4,6,10,24, 5,6,13,4,5,9, 5,6,13,5,5,9, + 5,6,3,3,12,41, 5,6,3,6,10,25, 5,5,12,4,5,10, 5,5,12,5,5,10, 5,5,11,4,5,10, 5,5,10,4,5,10, 5,5,2,3,13,42, 5,5,1,3,14,42, + 5,5,1,6,10,26, 5,4,9,5,5,11, 5,4,0,3,15,43, 5,4,0,6,10,27, 5,3,9,4,5,12, 5,3,9,5,5,12, 5,3,0,4,5,12, 5,3,0,6,10,28, + 5,2,8,5,5,13, 5,2,1,4,5,13, 5,2,1,6,10,29, 5,1,9,3,6,46, 5,1,9,4,5,14, 5,1,9,5,5,14, 5,1,4,4,5,14, 5,1,3,4,5,14, + 5,1,2,4,5,14, 5,1,2,6,10,30, 5,0,8,1,7,47, 5,0,8,5,5,15, 5,0,7,1,8,47, 5,0,6,1,9,47, 5,0,5,1,10,47, 5,0,5,6,10,31, + 6,14,12,3,3,33, 6,14,12,5,6,1, 6,14,11,3,4,33, 6,14,10,3,5,33, 6,14,9,3,6,33, 6,14,8,3,7,33, 6,14,7,3,8,33, 6,14,7,6,9,17, + 6,13,12,5,6,2, 6,13,6,3,9,34, 6,13,5,3,10,34, 6,13,4,3,11,34, 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,12,5,6,3, 6,12,2,3,13,35, + 6,12,2,6,9,19, 6,11,13,3,2,36, 6,11,13,5,6,4, 6,11,2,4,6,4, 6,11,2,6,9,20, 6,10,14,3,1,37, 6,10,14,5,6,5, 6,10,3,4,6,5, + 6,10,3,6,9,21, 6,9,15,3,0,38, 6,9,15,5,6,6, 6,9,4,4,6,6, 6,9,4,6,9,22, 6,8,15,4,6,7, 6,8,15,5,6,7, 6,8,5,6,9,23, + 6,7,14,4,6,8, 6,7,14,5,6,8, 6,7,4,3,11,40, 6,7,4,6,9,24, 6,6,13,4,6,9, 6,6,13,5,6,9, 6,6,3,3,12,41, 6,6,3,6,9,25, + 6,5,12,4,6,10, 6,5,12,5,6,10, 6,5,11,4,6,10, 6,5,10,4,6,10, 6,5,2,3,13,42, 6,5,1,3,14,42, 6,5,1,6,9,26, 6,4,9,5,6,11, + 6,4,0,3,15,43, 6,4,0,6,9,27, 6,3,9,4,6,12, 6,3,9,5,6,12, 6,3,0,4,6,12, 6,3,0,6,9,28, 6,2,8,5,6,13, 6,2,1,4,6,13, + 6,2,1,6,9,29, 6,1,9,3,6,46, 6,1,9,4,6,14, 6,1,9,5,6,14, 6,1,8,4,6,14, 6,1,7,4,6,14, 6,1,6,4,6,14, 6,1,5,4,6,14, + 6,1,4,4,6,14, 6,1,3,4,6,14, 6,1,2,4,6,14, 6,1,2,6,9,30, 7,15,11,2,4,32, 7,15,11,3,4,32, 7,15,11,5,7,0, 7,15,10,2,5,32, + 7,15,10,3,5,32, 7,15,10,6,8,16, 7,14,12,3,3,33, 7,14,12,5,7,1, 7,14,9,3,6,33, 7,14,8,3,7,33, 7,14,7,3,8,33, 7,14,7,6,8,17, + 7,13,12,5,7,2, 7,13,6,3,9,34, 7,13,5,3,10,34, 7,13,4,3,11,34, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,12,5,7,3, 7,12,2,3,13,35, + 7,12,2,6,8,19, 7,11,13,3,2,36, 7,11,13,5,7,4, 7,11,2,4,7,4, 7,11,2,6,8,20, 7,10,14,3,1,37, 7,10,14,5,7,5, 7,10,3,4,7,5, + 7,10,3,6,8,21, 7,9,15,3,0,38, 7,9,15,5,7,6, 7,9,4,4,7,6, 7,9,4,6,8,22, 7,8,15,4,7,7, 7,8,15,5,7,7, 7,8,5,6,8,23, + 7,7,14,4,7,8, 7,7,14,5,7,8, 7,7,4,3,11,40, 7,7,4,6,8,24, 7,6,13,4,7,9, 7,6,13,5,7,9, 7,6,3,3,12,41, 7,6,3,6,8,25, + 7,5,12,4,7,10, 7,5,12,5,7,10, 7,5,11,4,7,10, 7,5,10,4,7,10, 7,5,2,3,13,42, 7,5,1,3,14,42, 7,5,1,6,8,26, 7,4,9,5,7,11, + 7,4,0,3,15,43, 7,4,0,6,8,27, 7,3,9,4,7,12, 7,3,9,5,7,12, 7,3,0,4,7,12, 7,3,0,6,8,28, 7,2,8,5,7,13, 7,2,1,4,7,13, + 7,2,1,6,8,29, 7,1,9,3,6,46, 7,1,9,4,7,14, 7,1,9,5,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, + 7,1,4,4,7,14, 7,1,3,4,7,14, 7,1,2,4,7,14, 7,1,2,6,8,30, 8,15,11,1,4,32, 8,15,11,3,4,32, 8,15,11,5,8,0, 8,15,10,1,5,32, + 8,15,10,3,5,32, 8,15,10,6,7,16, 8,14,12,3,3,33, 8,14,12,5,8,1, 8,14,9,3,6,33, 8,14,8,3,7,33, 8,14,7,3,8,33, 8,14,7,6,7,17, + 8,13,12,5,8,2, 8,13,6,3,9,34, 8,13,5,3,10,34, 8,13,4,3,11,34, 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,12,5,8,3, 8,12,2,3,13,35, + 8,12,2,6,7,19, 8,11,13,3,2,36, 8,11,13,5,8,4, 8,11,2,4,8,4, 8,11,2,6,7,20, 8,10,14,3,1,37, 8,10,14,5,8,5, 8,10,3,4,8,5, + 8,10,3,6,7,21, 8,9,15,3,0,38, 8,9,15,5,8,6, 8,9,4,4,8,6, 8,9,4,6,7,22, 8,8,15,4,8,7, 8,8,15,5,8,7, 8,8,5,6,7,23, + 8,7,14,4,8,8, 8,7,14,5,8,8, 8,7,4,3,11,40, 8,7,4,6,7,24, 8,6,13,4,8,9, 8,6,13,5,8,9, 8,6,3,3,12,41, 8,6,3,6,7,25, + 8,5,12,4,8,10, 8,5,12,5,8,10, 8,5,11,4,8,10, 8,5,10,4,8,10, 8,5,2,3,13,42, 8,5,1,3,14,42, 8,5,1,6,7,26, 8,4,9,5,8,11, + 8,4,0,3,15,43, 8,4,0,6,7,27, 8,3,9,4,8,12, 8,3,9,5,8,12, 8,3,0,4,8,12, 8,3,0,6,7,28, 8,2,8,5,8,13, 8,2,1,4,8,13, + 8,2,1,6,7,29, 8,1,9,3,6,46, 8,1,9,4,8,14, 8,1,9,5,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, + 8,1,4,4,8,14, 8,1,3,4,8,14, 8,1,2,4,8,14, 8,1,2,6,7,30, 9,14,12,3,3,33, 9,14,12,5,9,1, 9,14,11,3,4,33, 9,14,10,3,5,33, + 9,14,9,3,6,33, 9,14,8,3,7,33, 9,14,7,3,8,33, 9,14,7,6,6,17, 9,13,12,5,9,2, 9,13,6,3,9,34, 9,13,5,3,10,34, 9,13,4,3,11,34, + 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,12,5,9,3, 9,12,2,3,13,35, 9,12,2,6,6,19, 9,11,13,3,2,36, 9,11,13,5,9,4, 9,11,2,4,9,4, + 9,11,2,6,6,20, 9,10,14,3,1,37, 9,10,14,5,9,5, 9,10,3,4,9,5, 9,10,3,6,6,21, 9,9,15,3,0,38, 9,9,15,5,9,6, 9,9,4,4,9,6, + 9,9,4,6,6,22, 9,8,15,4,9,7, 9,8,15,5,9,7, 9,8,5,6,6,23, 9,7,14,4,9,8, 9,7,14,5,9,8, 9,7,4,3,11,40, 9,7,4,6,6,24, + 9,6,13,4,9,9, 9,6,13,5,9,9, 9,6,3,3,12,41, 9,6,3,6,6,25, 9,5,12,4,9,10, 9,5,12,5,9,10, 9,5,11,4,9,10, 9,5,10,4,9,10, + 9,5,2,3,13,42, 9,5,1,3,14,42, 9,5,1,6,6,26, 9,4,9,5,9,11, 9,4,0,3,15,43, 9,4,0,6,6,27, 9,3,9,4,9,12, 9,3,9,5,9,12, + 9,3,0,4,9,12, 9,3,0,6,6,28, 9,2,8,5,9,13, 9,2,1,4,9,13, 9,2,1,6,6,29, 9,1,9,3,6,46, 9,1,9,4,9,14, 9,1,9,5,9,14, + 9,1,8,4,9,14, 9,1,7,4,9,14, 9,1,6,4,9,14, 9,1,5,4,9,14, 9,1,4,4,9,14, 9,1,3,4,9,14, 9,1,2,4,9,14, 9,1,2,6,6,30, + 10,14,12,3,3,33, 10,14,12,5,10,1, 10,14,11,3,4,33, 10,14,10,3,5,33, 10,14,9,3,6,33, 10,14,8,3,7,33, 10,14,7,3,8,33, 10,14,7,6,5,17, + 10,13,12,5,10,2, 10,13,6,3,9,34, 10,13,5,3,10,34, 10,13,4,3,11,34, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,12,5,10,3, 10,12,2,3,13,35, + 10,12,2,6,5,19, 10,11,13,3,2,36, 10,11,13,5,10,4, 10,11,2,4,10,4, 10,11,2,6,5,20, 10,10,14,3,1,37, 10,10,14,5,10,5, 10,10,3,4,10,5, + 10,10,3,6,5,21, 10,9,15,3,0,38, 10,9,15,5,10,6, 10,9,4,4,10,6, 10,9,4,6,5,22, 10,8,15,4,10,7, 10,8,15,5,10,7, 10,8,5,6,5,23, + 10,7,14,4,10,8, 10,7,14,5,10,8, 10,7,4,3,11,40, 10,7,4,6,5,24, 10,6,13,4,10,9, 10,6,13,5,10,9, 10,6,3,3,12,41, 10,6,3,6,5,25, + 10,5,12,4,10,10, 10,5,12,5,10,10, 10,5,11,4,10,10, 10,5,10,4,10,10, 10,5,2,3,13,42, 10,5,1,3,14,42, 10,5,1,6,5,26, 10,4,9,5,10,11, + 10,4,0,3,15,43, 10,4,0,6,5,27, 10,3,9,4,10,12, 10,3,9,5,10,12, 10,3,0,4,10,12, 10,3,0,6,5,28, 10,2,8,5,10,13, 10,2,1,4,10,13, + 10,2,1,6,5,29, 10,1,9,3,6,46, 10,1,9,4,10,14, 10,1,9,5,10,14, 10,1,4,4,10,14, 10,1,3,4,10,14, 10,1,2,4,10,14, 10,1,2,6,5,30, + 10,0,8,2,7,47, 10,0,8,5,10,15, 10,0,7,2,8,47, 10,0,6,2,9,47, 10,0,5,2,10,47, 10,0,5,6,5,31, 11,14,12,3,3,33, 11,14,12,5,11,1, + 11,14,11,3,4,33, 11,14,10,3,5,33, 11,14,9,3,6,33, 11,14,8,3,7,33, 11,14,7,3,8,33, 11,14,7,6,4,17, 11,13,12,5,11,2, 11,13,6,3,9,34, + 11,13,5,3,10,34, 11,13,4,3,11,34, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,12,5,11,3, 11,12,2,3,13,35, 11,12,2,6,4,19, 11,11,13,3,2,36, + 11,11,13,5,11,4, 11,11,2,4,11,4, 11,11,2,6,4,20, 11,10,14,3,1,37, 11,10,14,5,11,5, 11,10,3,4,11,5, 11,10,3,6,4,21, 11,9,15,3,0,38, + 11,9,15,5,11,6, 11,9,4,4,11,6, 11,9,4,6,4,22, 11,8,15,4,11,7, 11,8,15,5,11,7, 11,8,5,6,4,23, 11,7,14,4,11,8, 11,7,14,5,11,8, + 11,7,4,3,11,40, 11,7,4,6,4,24, 11,6,13,4,11,9, 11,6,13,5,11,9, 11,6,3,3,12,41, 11,6,3,6,4,25, 11,5,12,4,11,10, 11,5,12,5,11,10, + 11,5,11,4,11,10, 11,5,10,4,11,10, 11,5,2,3,13,42, 11,5,1,3,14,42, 11,5,1,6,4,26, 11,4,9,5,11,11, 11,4,0,3,15,43, 11,4,0,6,4,27, + 11,3,9,4,11,12, 11,3,9,5,11,12, 11,3,0,4,11,12, 11,3,0,6,4,28, 11,2,8,5,11,13, 11,2,1,4,11,13, 11,2,1,6,4,29, 11,1,9,3,6,46, + 11,1,9,4,11,14, 11,1,9,5,11,14, 11,1,4,4,11,14, 11,1,3,4,11,14, 11,1,2,4,11,14, 11,1,2,6,4,30, 11,0,8,5,11,15, 11,0,5,6,4,31, + 12,14,12,3,3,33, 12,14,12,5,12,1, 12,14,11,3,4,33, 12,14,10,3,5,33, 12,14,9,3,6,33, 12,14,8,3,7,33, 12,14,7,3,8,33, 12,14,7,6,3,17, + 12,13,12,5,12,2, 12,13,6,3,9,34, 12,13,5,3,10,34, 12,13,4,3,11,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,12,5,12,3, 12,12,2,3,13,35, + 12,12,2,6,3,19, 12,11,13,1,2,36, 12,11,13,3,2,36, 12,11,13,5,12,4, 12,11,12,1,3,36, 12,11,11,1,4,36, 12,11,10,1,5,36, 12,11,9,1,6,36, + 12,11,8,1,7,36, 12,11,7,1,8,36, 12,11,6,1,9,36, 12,11,5,1,10,36, 12,11,4,1,11,36, 12,11,3,1,12,36, 12,11,2,1,13,36, 12,11,2,4,12,4, + 12,11,2,6,3,20, 12,10,14,3,1,37, 12,10,14,5,12,5, 12,10,3,4,12,5, 12,10,3,6,3,21, 12,9,15,3,0,38, 12,9,15,5,12,6, 12,9,4,4,12,6, + 12,9,4,6,3,22, 12,8,15,1,0,39, 12,8,15,4,12,7, 12,8,15,5,12,7, 12,8,14,1,1,39, 12,8,13,1,2,39, 12,8,12,1,3,39, 12,8,11,1,4,39, + 12,8,10,1,5,39, 12,8,9,1,6,39, 12,8,8,1,7,39, 12,8,7,1,8,39, 12,8,6,1,9,39, 12,8,5,1,10,39, 12,8,5,6,3,23, 12,7,14,4,12,8, + 12,7,14,5,12,8, 12,7,4,3,11,40, 12,7,4,6,3,24, 12,6,13,4,12,9, 12,6,13,5,12,9, 12,6,3,3,12,41, 12,6,3,6,3,25, 12,5,12,4,12,10, + 12,5,12,5,12,10, 12,5,11,4,12,10, 12,5,10,4,12,10, 12,5,2,3,13,42, 12,5,1,3,14,42, 12,5,1,6,3,26, 12,4,9,5,12,11, 12,4,0,3,15,43, + 12,4,0,6,3,27, 12,3,9,1,6,44, 12,3,9,4,12,12, 12,3,9,5,12,12, 12,3,8,1,7,44, 12,3,7,1,8,44, 12,3,6,1,9,44, 12,3,5,1,10,44, + 12,3,4,1,11,44, 12,3,3,1,12,44, 12,3,2,1,13,44, 12,3,1,1,14,44, 12,3,0,1,15,44, 12,3,0,4,12,12, 12,3,0,6,3,28, 12,2,8,5,12,13, + 12,2,1,4,12,13, 12,2,1,6,3,29, 12,1,9,3,6,46, 12,1,9,4,12,14, 12,1,9,5,12,14, 12,1,4,4,12,14, 12,1,3,4,12,14, 12,1,2,4,12,14, + 12,1,2,6,3,30, 12,0,8,1,7,47, 12,0,8,5,12,15, 12,0,7,1,8,47, 12,0,6,1,9,47, 12,0,5,1,10,47, 12,0,5,6,3,31, 13,14,12,3,3,33, + 13,14,12,5,13,1, 13,14,11,3,4,33, 13,14,10,3,5,33, 13,14,9,3,6,33, 13,14,8,3,7,33, 13,14,7,3,8,33, 13,14,7,6,2,17, 13,13,12,5,13,2, + 13,13,6,3,9,34, 13,13,5,3,10,34, 13,13,4,3,11,34, 13,13,3,3,12,34, 13,13,3,6,2,18, 13,12,12,1,3,35, 13,12,12,4,13,3, 13,12,12,5,13,3, + 13,12,11,1,4,35, 13,12,11,4,13,3, 13,12,10,1,5,35, 13,12,10,4,13,3, 13,12,9,1,6,35, 13,12,9,4,13,3, 13,12,8,1,7,35, 13,12,8,4,13,3, + 13,12,7,1,8,35, 13,12,7,4,13,3, 13,12,6,1,9,35, 13,12,6,4,13,3, 13,12,5,1,10,35, 13,12,5,4,13,3, 13,12,4,1,11,35, 13,12,4,4,13,3, + 13,12,3,1,12,35, 13,12,3,4,13,3, 13,12,2,1,13,35, 13,12,2,3,13,35, 13,12,2,4,13,3, 13,12,2,6,2,19, 13,10,14,1,1,37, 13,10,14,3,1,37, + 13,10,14,5,13,5, 13,10,13,1,2,37, 13,10,13,3,2,37, 13,10,12,1,3,37, 13,10,12,3,3,37, 13,10,11,1,4,37, 13,10,11,3,4,37, 13,10,10,1,5,37, + 13,10,10,3,5,37, 13,10,9,1,6,37, 13,10,9,3,6,37, 13,10,8,1,7,37, 13,10,8,3,7,37, 13,10,7,1,8,37, 13,10,7,3,8,37, 13,10,6,1,9,37, + 13,10,6,3,9,37, 13,10,5,1,10,37, 13,10,5,3,10,37, 13,10,4,1,11,37, 13,10,4,3,11,37, 13,10,3,1,12,37, 13,10,3,3,12,37, 13,10,3,4,13,5, + 13,10,3,6,2,21, 13,9,15,1,0,38, 13,9,15,3,0,38, 13,9,15,4,13,6, 13,9,15,5,13,6, 13,9,14,1,1,38, 13,9,14,4,13,6, 13,9,13,1,2,38, + 13,9,13,4,13,6, 13,9,12,1,3,38, 13,9,12,4,13,6, 13,9,11,1,4,38, 13,9,11,4,13,6, 13,9,10,1,5,38, 13,9,10,4,13,6, 13,9,9,1,6,38, + 13,9,9,4,13,6, 13,9,8,1,7,38, 13,9,8,4,13,6, 13,9,7,1,8,38, 13,9,7,4,13,6, 13,9,6,1,9,38, 13,9,6,4,13,6, 13,9,5,1,10,38, + 13,9,5,4,13,6, 13,9,4,1,11,38, 13,9,4,4,13,6, 13,9,4,6,2,22, 13,7,14,1,1,40, 13,7,14,3,1,40, 13,7,14,4,13,8, 13,7,14,5,13,8, + 13,7,13,1,2,40, 13,7,13,3,2,40, 13,7,12,1,3,40, 13,7,12,3,3,40, 13,7,11,1,4,40, 13,7,11,3,4,40, 13,7,10,1,5,40, 13,7,10,3,5,40, + 13,7,9,1,6,40, 13,7,9,3,6,40, 13,7,8,1,7,40, 13,7,8,3,7,40, 13,7,7,1,8,40, 13,7,7,3,8,40, 13,7,6,1,9,40, 13,7,6,3,9,40, + 13,7,5,1,10,40, 13,7,5,3,10,40, 13,7,4,1,11,40, 13,7,4,3,11,40, 13,7,4,6,2,24, 13,6,13,4,13,9, 13,6,13,5,13,9, 13,6,3,3,12,41, + 13,6,3,6,2,25, 13,5,12,4,13,10, 13,5,12,5,13,10, 13,5,11,4,13,10, 13,5,10,4,13,10, 13,5,2,3,13,42, 13,5,1,3,14,42, 13,5,1,6,2,26, + 13,4,9,4,13,11, 13,4,9,5,13,11, 13,4,8,4,13,11, 13,4,7,4,13,11, 13,4,6,4,13,11, 13,4,5,4,13,11, 13,4,4,4,13,11, 13,4,3,4,13,11, + 13,4,2,4,13,11, 13,4,1,4,13,11, 13,4,0,3,15,43, 13,4,0,4,13,11, 13,4,0,6,2,27, 13,2,8,1,7,45, 13,2,8,3,7,45, 13,2,8,5,13,13, + 13,2,7,1,8,45, 13,2,7,3,8,45, 13,2,6,1,9,45, 13,2,6,3,9,45, 13,2,5,1,10,45, 13,2,5,3,10,45, 13,2,4,1,11,45, 13,2,4,3,11,45, + 13,2,3,1,12,45, 13,2,3,3,12,45, 13,2,2,1,13,45, 13,2,2,3,13,45, 13,2,1,1,14,45, 13,2,1,3,14,45, 13,2,1,4,13,13, 13,2,1,6,2,29, + 13,1,9,1,6,46, 13,1,9,3,6,46, 13,1,9,4,13,14, 13,1,9,5,13,14, 13,1,8,1,7,46, 13,1,8,4,13,14, 13,1,7,1,8,46, 13,1,7,4,13,14, + 13,1,6,1,9,46, 13,1,6,4,13,14, 13,1,5,1,10,46, 13,1,5,4,13,14, 13,1,4,1,11,46, 13,1,4,4,13,14, 13,1,3,1,12,46, 13,1,3,4,13,14, + 13,1,2,1,13,46, 13,1,2,4,13,14, 13,1,2,6,2,30, 14,14,12,1,3,33, 14,14,12,3,3,33, 14,14,12,5,14,1, 14,14,11,1,4,33, 14,14,11,3,4,33, + 14,14,10,1,5,33, 14,14,10,3,5,33, 14,14,9,1,6,33, 14,14,9,3,6,33, 14,14,8,1,7,33, 14,14,8,3,7,33, 14,14,7,1,8,33, 14,14,7,3,8,33, + 14,14,7,6,1,17, 14,13,12,1,3,34, 14,13,12,4,14,2, 14,13,12,5,14,2, 14,13,11,1,4,34, 14,13,11,4,14,2, 14,13,10,1,5,34, 14,13,10,4,14,2, + 14,13,9,1,6,34, 14,13,9,4,14,2, 14,13,8,1,7,34, 14,13,8,4,14,2, 14,13,7,1,8,34, 14,13,7,4,14,2, 14,13,6,1,9,34, 14,13,6,3,9,34, + 14,13,6,4,14,2, 14,13,5,1,10,34, 14,13,5,3,10,34, 14,13,5,4,14,2, 14,13,4,1,11,34, 14,13,4,3,11,34, 14,13,4,4,14,2, 14,13,3,1,12,34, + 14,13,3,3,12,34, 14,13,3,4,14,2, 14,13,3,6,1,18, 14,6,13,1,2,41, 14,6,13,3,2,41, 14,6,13,4,14,9, 14,6,13,5,14,9, 14,6,12,1,3,41, + 14,6,12,3,3,41, 14,6,11,1,4,41, 14,6,11,3,4,41, 14,6,10,1,5,41, 14,6,10,3,5,41, 14,6,9,1,6,41, 14,6,9,3,6,41, 14,6,8,1,7,41, + 14,6,8,3,7,41, 14,6,7,1,8,41, 14,6,7,3,8,41, 14,6,6,1,9,41, 14,6,6,3,9,41, 14,6,5,1,10,41, 14,6,5,3,10,41, 14,6,4,1,11,41, + 14,6,4,3,11,41, 14,6,3,1,12,41, 14,6,3,3,12,41, 14,6,3,6,1,25, 14,5,12,4,14,10, 14,5,12,5,14,10, 14,5,11,4,14,10, 14,5,10,4,14,10, + 14,5,2,3,13,42, 14,5,1,3,14,42, 14,5,1,6,1,26, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,9,5,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, + 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,4,14,11, + 14,4,3,1,12,43, 14,4,3,4,14,11, 14,4,2,1,13,43, 14,4,2,4,14,11, 14,4,1,1,14,43, 14,4,1,4,14,11, 14,4,0,1,15,43, 14,4,0,3,15,43, + 14,4,0,4,14,11, 14,4,0,6,1,27, 15,5,12,1,3,42, 15,5,12,3,3,42, 15,5,12,4,15,10, 15,5,12,5,15,10, 15,5,11,1,4,42, 15,5,11,3,4,42, + 15,5,11,4,15,10, 15,5,10,1,5,42, 15,5,10,3,5,42, 15,5,10,4,15,10, 15,5,9,1,6,42, 15,5,9,3,6,42, 15,5,9,4,15,10, 15,5,8,1,7,42, + 15,5,8,3,7,42, 15,5,8,4,15,10, 15,5,7,1,8,42, 15,5,7,3,8,42, 15,5,7,4,15,10, 15,5,6,1,9,42, 15,5,6,3,9,42, 15,5,6,4,15,10, + 15,5,5,1,10,42, 15,5,5,3,10,42, 15,5,5,4,15,10, 15,5,4,1,11,42, 15,5,4,3,11,42, 15,5,4,4,15,10, 15,5,3,1,12,42, 15,5,3,3,12,42, + 15,5,3,4,15,10, 15,5,2,1,13,42, 15,5,2,3,13,42, 15,5,2,4,15,10, 15,5,1,1,14,42, 15,5,1,3,14,42, 15,5,1,4,15,10, 15,5,1,6,0,26, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 2058, + count = 1296, + faces = { + 0,8,15,2,0,87, 0,8,15,3,0,87, 0,8,15,5,0,55, 0,8,14,2,1,87, 0,8,14,3,1,87, 0,8,13,2,2,87, 0,8,13,3,2,87, 0,8,12,2,3,87, + 0,8,12,3,3,87, 0,8,11,2,4,87, 0,8,11,3,4,87, 0,8,10,2,5,87, 0,8,10,3,5,87, 0,8,9,2,6,87, 0,8,9,3,6,87, 0,8,8,2,7,87, + 0,8,8,3,7,87, 0,8,7,2,8,87, 0,8,7,3,8,87, 0,8,6,2,9,87, 0,8,6,3,9,87, 0,8,5,2,10,87, 0,8,5,3,10,87, 0,8,4,2,11,87, + 0,8,4,3,11,87, 0,8,3,2,12,87, 0,8,3,3,12,87, 0,8,3,6,15,71, 0,7,15,2,0,88, 0,7,15,4,0,56, 0,7,15,5,0,56, 0,7,14,2,1,88, + 0,7,13,2,2,88, 0,7,12,2,3,88, 0,7,11,2,4,88, 0,7,10,2,5,88, 0,7,9,2,6,88, 0,7,8,2,7,88, 0,7,7,2,8,88, 0,7,6,2,9,88, + 0,7,5,2,10,88, 0,7,4,2,11,88, 0,7,3,2,12,88, 0,7,3,6,15,72, 0,6,14,2,1,89, 0,6,14,4,0,57, 0,6,14,5,0,57, 0,6,13,2,2,89, + 0,6,13,4,0,57, 0,6,12,2,3,89, 0,6,12,4,0,57, 0,6,11,2,4,89, 0,6,11,4,0,57, 0,6,10,2,5,89, 0,6,10,4,0,57, 0,6,9,2,6,89, + 0,6,9,4,0,57, 0,6,8,2,7,89, 0,6,8,4,0,57, 0,6,7,2,8,89, 0,6,7,4,0,57, 0,6,6,2,9,89, 0,6,6,4,0,57, 0,6,5,2,10,89, + 0,6,5,4,0,57, 0,6,4,2,11,89, 0,6,4,4,0,57, 0,6,3,2,12,89, 0,6,3,4,0,57, 0,6,2,2,13,89, 0,6,2,3,13,89, 0,6,2,4,0,57, + 0,6,2,6,15,73, 1,13,12,2,3,82, 1,13,12,3,3,82, 1,13,12,5,1,50, 1,13,11,2,4,82, 1,13,11,3,4,82, 1,13,10,2,5,82, 1,13,10,3,5,82, + 1,13,9,2,6,82, 1,13,9,3,6,82, 1,13,8,2,7,82, 1,13,8,3,7,82, 1,13,7,2,8,82, 1,13,7,3,8,82, 1,13,7,6,14,66, 1,12,12,2,3,83, + 1,12,12,4,1,51, 1,12,12,5,1,51, 1,12,11,2,4,83, 1,12,11,4,1,51, 1,12,10,2,5,83, 1,12,10,4,1,51, 1,12,9,2,6,83, 1,12,9,4,1,51, + 1,12,8,2,7,83, 1,12,8,4,1,51, 1,12,7,2,8,83, 1,12,7,4,1,51, 1,12,6,2,9,83, 1,12,6,3,9,83, 1,12,6,4,1,51, 1,12,5,2,10,83, + 1,12,5,3,10,83, 1,12,5,4,1,51, 1,12,4,2,11,83, 1,12,4,3,11,83, 1,12,4,4,1,51, 1,12,3,2,12,83, 1,12,3,3,12,83, 1,12,3,4,1,51, + 1,12,3,6,14,67, 1,8,15,3,0,87, 1,8,15,5,1,55, 1,8,14,3,1,87, 1,8,13,3,2,87, 1,8,12,3,3,87, 1,8,11,3,4,87, 1,8,10,3,5,87, + 1,8,9,3,6,87, 1,8,8,3,7,87, 1,8,7,3,8,87, 1,8,6,3,9,87, 1,8,5,3,10,87, 1,8,4,3,11,87, 1,8,3,3,12,87, 1,8,3,6,14,71, + 1,7,15,4,1,56, 1,7,15,5,1,56, 1,7,3,6,14,72, 1,6,14,4,1,57, 1,6,14,5,1,57, 1,6,2,3,13,89, 1,6,2,6,14,73, 1,5,13,2,2,90, + 1,5,13,4,1,58, 1,5,13,5,1,58, 1,5,12,2,3,90, 1,5,12,4,1,58, 1,5,11,2,4,90, 1,5,11,4,1,58, 1,5,10,2,5,90, 1,5,10,4,1,58, + 1,5,9,2,6,90, 1,5,9,4,1,58, 1,5,8,2,7,90, 1,5,8,4,1,58, 1,5,7,2,8,90, 1,5,7,4,1,58, 1,5,6,2,9,90, 1,5,6,4,1,58, + 1,5,5,2,10,90, 1,5,5,4,1,58, 1,5,4,2,11,90, 1,5,4,4,1,58, 1,5,3,2,12,90, 1,5,3,4,1,58, 1,5,2,2,13,90, 1,5,2,4,1,58, + 1,5,2,6,14,74, 2,13,12,3,3,82, 2,13,12,5,2,50, 2,13,11,3,4,82, 2,13,10,3,5,82, 2,13,9,3,6,82, 2,13,8,3,7,82, 2,13,7,3,8,82, + 2,13,7,6,13,66, 2,12,12,5,2,51, 2,12,6,3,9,83, 2,12,5,3,10,83, 2,12,4,3,11,83, 2,12,3,3,12,83, 2,12,3,6,13,67, 2,11,12,2,3,84, + 2,11,12,4,2,52, 2,11,12,5,2,52, 2,11,11,2,4,84, 2,11,11,4,2,52, 2,11,10,2,5,84, 2,11,10,4,2,52, 2,11,9,2,6,84, 2,11,9,4,2,52, + 2,11,8,2,7,84, 2,11,8,4,2,52, 2,11,7,2,8,84, 2,11,7,4,2,52, 2,11,6,2,9,84, 2,11,6,4,2,52, 2,11,5,2,10,84, 2,11,5,4,2,52, + 2,11,4,2,11,84, 2,11,4,4,2,52, 2,11,3,2,12,84, 2,11,3,4,2,52, 2,11,2,2,13,84, 2,11,2,3,13,84, 2,11,2,4,2,52, 2,11,2,6,13,68, + 2,9,14,2,1,86, 2,9,14,3,1,86, 2,9,14,5,2,54, 2,9,13,2,2,86, 2,9,13,3,2,86, 2,9,12,2,3,86, 2,9,12,3,3,86, 2,9,11,2,4,86, + 2,9,11,3,4,86, 2,9,10,2,5,86, 2,9,10,3,5,86, 2,9,9,2,6,86, 2,9,9,3,6,86, 2,9,8,2,7,86, 2,9,8,3,7,86, 2,9,7,2,8,86, + 2,9,7,3,8,86, 2,9,6,2,9,86, 2,9,6,3,9,86, 2,9,5,2,10,86, 2,9,5,3,10,86, 2,9,4,2,11,86, 2,9,4,3,11,86, 2,9,3,2,12,86, + 2,9,3,3,12,86, 2,9,3,6,13,70, 2,8,15,3,0,87, 2,8,15,5,2,55, 2,8,3,6,13,71, 2,7,15,4,2,56, 2,7,15,5,2,56, 2,7,3,6,13,72, + 2,6,14,4,2,57, 2,6,14,5,2,57, 2,6,2,3,13,89, 2,6,2,6,13,73, 2,5,13,4,2,58, 2,5,13,5,2,58, 2,5,2,6,13,74, 2,4,12,2,3,91, + 2,4,12,5,2,59, 2,4,11,2,4,91, 2,4,10,2,5,91, 2,4,9,2,6,91, 2,4,8,2,7,91, 2,4,7,2,8,91, 2,4,6,2,9,91, 2,4,5,2,10,91, + 2,4,4,2,11,91, 2,4,3,2,12,91, 2,4,2,2,13,91, 2,4,1,2,14,91, 2,4,1,3,14,91, 2,4,1,6,13,75, 2,3,12,2,3,92, 2,3,12,5,2,60, + 2,3,11,2,4,92, 2,3,10,2,5,92, 2,3,9,2,6,92, 2,3,8,2,7,92, 2,3,7,2,8,92, 2,3,6,2,9,92, 2,3,5,2,10,92, 2,3,4,2,11,92, + 2,3,3,2,12,92, 2,3,2,2,13,92, 2,3,1,2,14,92, 2,3,0,2,15,92, 2,3,0,3,15,92, 2,3,0,6,2,60, 2,2,13,2,2,93, 2,2,13,3,2,93, + 2,2,13,4,2,61, 2,2,13,5,2,61, 2,2,12,2,3,93, 2,2,11,2,4,93, 2,2,10,2,5,93, 2,2,9,2,6,93, 2,2,8,2,7,93, 2,2,7,2,8,93, + 2,2,6,2,9,93, 2,2,5,2,10,93, 2,2,4,2,11,93, 2,2,3,2,12,93, 2,2,2,2,13,93, 2,2,1,2,14,93, 2,2,0,2,15,93, 2,2,0,4,2,61, + 2,2,0,6,2,61, 2,1,12,2,3,94, 2,1,12,4,2,62, 2,1,12,5,2,62, 2,1,11,2,4,94, 2,1,11,4,2,62, 2,1,10,2,5,94, 2,1,10,4,2,62, + 2,1,9,2,6,94, 2,1,9,4,2,62, 2,1,8,2,7,94, 2,1,8,4,2,62, 2,1,7,2,8,94, 2,1,7,4,2,62, 2,1,6,2,9,94, 2,1,6,4,2,62, + 2,1,5,2,10,94, 2,1,5,4,2,62, 2,1,4,2,11,94, 2,1,4,4,2,62, 2,1,3,2,12,94, 2,1,3,4,2,62, 2,1,2,2,13,94, 2,1,2,4,2,62, + 2,1,1,2,14,94, 2,1,1,4,2,62, 2,1,1,6,2,62, 3,13,12,3,3,82, 3,13,12,5,3,50, 3,13,11,3,4,82, 3,13,10,3,5,82, 3,13,9,3,6,82, + 3,13,8,3,7,82, 3,13,7,3,8,82, 3,13,7,6,12,66, 3,12,12,5,3,51, 3,12,6,3,9,83, 3,12,5,3,10,83, 3,12,4,3,11,83, 3,12,3,3,12,83, + 3,12,3,6,12,67, 3,11,12,5,3,52, 3,11,2,3,13,84, 3,11,2,6,12,68, 3,10,13,2,2,85, 3,10,13,3,2,85, 3,10,13,5,3,53, 3,10,12,2,3,85, + 3,10,11,2,4,85, 3,10,10,2,5,85, 3,10,9,2,6,85, 3,10,8,2,7,85, 3,10,7,2,8,85, 3,10,6,2,9,85, 3,10,5,2,10,85, 3,10,4,2,11,85, + 3,10,3,2,12,85, 3,10,2,2,13,85, 3,10,2,4,3,53, 3,10,2,6,12,69, 3,9,14,3,1,86, 3,9,14,5,3,54, 3,9,3,6,12,70, 3,8,15,3,0,87, + 3,8,15,5,3,55, 3,8,3,6,12,71, 3,7,15,4,3,56, 3,7,15,5,3,56, 3,7,3,6,12,72, 3,6,14,4,3,57, 3,6,14,5,3,57, 3,6,2,3,13,89, + 3,6,2,6,12,73, 3,5,13,4,3,58, 3,5,13,5,3,58, 3,5,2,6,12,74, 3,4,12,5,3,59, 3,4,1,3,14,91, 3,4,1,6,12,75, 3,3,12,5,3,60, + 3,3,0,3,15,92, 3,3,0,6,12,76, 3,2,13,3,2,93, 3,2,13,4,3,61, 3,2,13,5,3,61, 3,2,0,4,3,61, 3,2,0,6,12,77, 3,1,12,4,3,62, + 3,1,12,5,3,62, 3,1,8,4,3,62, 3,1,7,4,3,62, 3,1,6,4,3,62, 3,1,5,4,3,62, 3,1,2,4,3,62, 3,1,1,4,3,62, 3,1,1,6,3,62, + 3,0,11,2,4,95, 3,0,11,5,3,63, 3,0,10,2,5,95, 3,0,9,2,6,95, 3,0,9,6,3,63, 3,0,4,2,11,95, 3,0,4,5,3,63, 3,0,3,2,12,95, + 3,0,3,6,3,63, 4,13,12,3,3,82, 4,13,12,5,4,50, 4,13,11,3,4,82, 4,13,10,3,5,82, 4,13,9,3,6,82, 4,13,8,3,7,82, 4,13,7,3,8,82, + 4,13,7,6,11,66, 4,12,12,5,4,51, 4,12,6,3,9,83, 4,12,5,3,10,83, 4,12,4,3,11,83, 4,12,3,3,12,83, 4,12,3,6,11,67, 4,11,12,5,4,52, + 4,11,2,3,13,84, 4,11,2,6,11,68, 4,10,13,3,2,85, 4,10,13,5,4,53, 4,10,2,4,4,53, 4,10,2,6,11,69, 4,9,14,3,1,86, 4,9,14,5,4,54, + 4,9,3,6,11,70, 4,8,15,3,0,87, 4,8,15,5,4,55, 4,8,3,6,11,71, 4,7,15,4,4,56, 4,7,15,5,4,56, 4,7,3,6,11,72, 4,6,14,4,4,57, + 4,6,14,5,4,57, 4,6,2,3,13,89, 4,6,2,6,11,73, 4,5,13,4,4,58, 4,5,13,5,4,58, 4,5,2,6,11,74, 4,4,12,5,4,59, 4,4,1,3,14,91, + 4,4,1,6,11,75, 4,3,12,5,4,60, 4,3,0,3,15,92, 4,3,0,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,0,4,4,61, + 4,2,0,6,11,77, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, 4,1,6,4,4,62, 4,1,5,4,4,62, 4,1,2,4,4,62, + 4,1,1,4,4,62, 4,1,1,6,11,78, 4,0,11,5,4,63, 4,0,9,6,4,63, 4,0,4,5,4,63, 4,0,3,6,4,63, 5,13,12,3,3,82, 5,13,12,5,5,50, + 5,13,11,3,4,82, 5,13,10,3,5,82, 5,13,9,3,6,82, 5,13,8,3,7,82, 5,13,7,3,8,82, 5,13,7,6,10,66, 5,12,12,5,5,51, 5,12,6,3,9,83, + 5,12,5,3,10,83, 5,12,4,3,11,83, 5,12,3,3,12,83, 5,12,3,6,10,67, 5,11,12,5,5,52, 5,11,2,3,13,84, 5,11,2,6,10,68, 5,10,13,3,2,85, + 5,10,13,5,5,53, 5,10,2,4,5,53, 5,10,2,6,10,69, 5,9,14,3,1,86, 5,9,14,5,5,54, 5,9,3,6,10,70, 5,8,15,3,0,87, 5,8,15,5,5,55, + 5,8,3,6,10,71, 5,7,15,4,5,56, 5,7,15,5,5,56, 5,7,3,6,10,72, 5,6,14,4,5,57, 5,6,14,5,5,57, 5,6,2,3,13,89, 5,6,2,6,10,73, + 5,5,13,4,5,58, 5,5,13,5,5,58, 5,5,2,6,10,74, 5,4,12,5,5,59, 5,4,1,3,14,91, 5,4,1,6,10,75, 5,3,12,5,5,60, 5,3,0,3,15,92, + 5,3,0,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,0,4,5,61, 5,2,0,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, + 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,1,4,5,62, 5,1,1,6,10,78, 5,0,11,1,4,95, + 5,0,11,5,5,63, 5,0,10,1,5,95, 5,0,9,1,6,95, 5,0,9,6,5,63, 5,0,4,1,11,95, 5,0,4,5,5,63, 5,0,3,1,12,95, 5,0,3,6,5,63, + 6,13,12,3,3,82, 6,13,12,5,6,50, 6,13,11,3,4,82, 6,13,10,3,5,82, 6,13,9,3,6,82, 6,13,8,3,7,82, 6,13,7,3,8,82, 6,13,7,6,9,66, + 6,12,12,5,6,51, 6,12,6,3,9,83, 6,12,5,3,10,83, 6,12,4,3,11,83, 6,12,3,3,12,83, 6,12,3,6,9,67, 6,11,12,5,6,52, 6,11,2,3,13,84, + 6,11,2,6,9,68, 6,10,13,3,2,85, 6,10,13,5,6,53, 6,10,2,4,6,53, 6,10,2,6,9,69, 6,9,14,3,1,86, 6,9,14,5,6,54, 6,9,3,6,9,70, + 6,8,15,3,0,87, 6,8,15,5,6,55, 6,8,3,6,9,71, 6,7,15,4,6,56, 6,7,15,5,6,56, 6,7,3,6,9,72, 6,6,14,4,6,57, 6,6,14,5,6,57, + 6,6,2,3,13,89, 6,6,2,6,9,73, 6,5,13,4,6,58, 6,5,13,5,6,58, 6,5,2,6,9,74, 6,4,12,5,6,59, 6,4,1,3,14,91, 6,4,1,6,9,75, + 6,3,12,5,6,60, 6,3,0,3,15,92, 6,3,0,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,0,4,6,61, 6,2,0,6,9,77, + 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,11,4,6,62, 6,1,10,4,6,62, 6,1,9,4,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, + 6,1,5,4,6,62, 6,1,4,4,6,62, 6,1,3,4,6,62, 6,1,2,4,6,62, 6,1,1,4,6,62, 6,1,1,6,9,78, 7,14,11,2,4,81, 7,14,11,3,4,81, + 7,14,11,5,7,49, 7,14,10,2,5,81, 7,14,10,3,5,81, 7,14,10,6,8,65, 7,13,12,3,3,82, 7,13,12,5,7,50, 7,13,9,3,6,82, 7,13,8,3,7,82, + 7,13,7,3,8,82, 7,13,7,6,8,66, 7,12,12,5,7,51, 7,12,6,3,9,83, 7,12,5,3,10,83, 7,12,4,3,11,83, 7,12,3,3,12,83, 7,12,3,6,8,67, + 7,11,12,5,7,52, 7,11,2,3,13,84, 7,11,2,6,8,68, 7,10,13,3,2,85, 7,10,13,5,7,53, 7,10,2,4,7,53, 7,10,2,6,8,69, 7,9,14,3,1,86, + 7,9,14,5,7,54, 7,9,3,6,8,70, 7,8,15,3,0,87, 7,8,15,5,7,55, 7,8,3,6,8,71, 7,7,15,4,7,56, 7,7,15,5,7,56, 7,7,3,6,8,72, + 7,6,14,4,7,57, 7,6,14,5,7,57, 7,6,2,3,13,89, 7,6,2,6,8,73, 7,5,13,4,7,58, 7,5,13,5,7,58, 7,5,2,6,8,74, 7,4,12,5,7,59, + 7,4,1,3,14,91, 7,4,1,6,8,75, 7,3,12,5,7,60, 7,3,0,3,15,92, 7,3,0,6,8,76, 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, + 7,2,0,4,7,61, 7,2,0,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,11,4,7,62, 7,1,10,4,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, + 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,4,4,7,62, 7,1,3,4,7,62, 7,1,2,4,7,62, 7,1,1,4,7,62, 7,1,1,6,8,78, + 8,14,11,1,4,81, 8,14,11,3,4,81, 8,14,11,5,8,49, 8,14,10,1,5,81, 8,14,10,3,5,81, 8,14,10,6,7,65, 8,13,12,3,3,82, 8,13,12,5,8,50, + 8,13,9,3,6,82, 8,13,8,3,7,82, 8,13,7,3,8,82, 8,13,7,6,7,66, 8,12,12,5,8,51, 8,12,6,3,9,83, 8,12,5,3,10,83, 8,12,4,3,11,83, + 8,12,3,3,12,83, 8,12,3,6,7,67, 8,11,12,5,8,52, 8,11,2,3,13,84, 8,11,2,6,7,68, 8,10,13,3,2,85, 8,10,13,5,8,53, 8,10,2,4,8,53, + 8,10,2,6,7,69, 8,9,14,3,1,86, 8,9,14,5,8,54, 8,9,3,6,7,70, 8,8,15,3,0,87, 8,8,15,5,8,55, 8,8,3,6,7,71, 8,7,15,4,8,56, + 8,7,15,5,8,56, 8,7,3,6,7,72, 8,6,14,4,8,57, 8,6,14,5,8,57, 8,6,2,3,13,89, 8,6,2,6,7,73, 8,5,13,4,8,58, 8,5,13,5,8,58, + 8,5,2,6,7,74, 8,4,12,5,8,59, 8,4,1,3,14,91, 8,4,1,6,7,75, 8,3,12,5,8,60, 8,3,0,3,15,92, 8,3,0,6,7,76, 8,2,13,3,2,93, + 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,0,4,8,61, 8,2,0,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,11,4,8,62, 8,1,10,4,8,62, + 8,1,9,4,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,4,4,8,62, 8,1,3,4,8,62, 8,1,2,4,8,62, + 8,1,1,4,8,62, 8,1,1,6,7,78, 9,13,12,3,3,82, 9,13,12,5,9,50, 9,13,11,3,4,82, 9,13,10,3,5,82, 9,13,9,3,6,82, 9,13,8,3,7,82, + 9,13,7,3,8,82, 9,13,7,6,6,66, 9,12,12,5,9,51, 9,12,6,3,9,83, 9,12,5,3,10,83, 9,12,4,3,11,83, 9,12,3,3,12,83, 9,12,3,6,6,67, + 9,11,12,5,9,52, 9,11,2,3,13,84, 9,11,2,6,6,68, 9,10,13,3,2,85, 9,10,13,5,9,53, 9,10,2,4,9,53, 9,10,2,6,6,69, 9,9,14,3,1,86, + 9,9,14,5,9,54, 9,9,3,6,6,70, 9,8,15,3,0,87, 9,8,15,5,9,55, 9,8,3,6,6,71, 9,7,15,4,9,56, 9,7,15,5,9,56, 9,7,3,6,6,72, + 9,6,14,4,9,57, 9,6,14,5,9,57, 9,6,2,3,13,89, 9,6,2,6,6,73, 9,5,13,4,9,58, 9,5,13,5,9,58, 9,5,2,6,6,74, 9,4,12,5,9,59, + 9,4,1,3,14,91, 9,4,1,6,6,75, 9,3,12,5,9,60, 9,3,0,3,15,92, 9,3,0,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, + 9,2,0,4,9,61, 9,2,0,6,6,77, 9,1,12,4,9,62, 9,1,12,5,9,62, 9,1,11,4,9,62, 9,1,10,4,9,62, 9,1,9,4,9,62, 9,1,8,4,9,62, + 9,1,7,4,9,62, 9,1,6,4,9,62, 9,1,5,4,9,62, 9,1,4,4,9,62, 9,1,3,4,9,62, 9,1,2,4,9,62, 9,1,1,4,9,62, 9,1,1,6,6,78, + 10,13,12,3,3,82, 10,13,12,5,10,50, 10,13,11,3,4,82, 10,13,10,3,5,82, 10,13,9,3,6,82, 10,13,8,3,7,82, 10,13,7,3,8,82, 10,13,7,6,5,66, + 10,12,12,5,10,51, 10,12,6,3,9,83, 10,12,5,3,10,83, 10,12,4,3,11,83, 10,12,3,3,12,83, 10,12,3,6,5,67, 10,11,12,5,10,52, 10,11,2,3,13,84, + 10,11,2,6,5,68, 10,10,13,3,2,85, 10,10,13,5,10,53, 10,10,2,4,10,53, 10,10,2,6,5,69, 10,9,14,3,1,86, 10,9,14,5,10,54, 10,9,3,6,5,70, + 10,8,15,3,0,87, 10,8,15,5,10,55, 10,8,3,6,5,71, 10,7,15,4,10,56, 10,7,15,5,10,56, 10,7,3,6,5,72, 10,6,14,4,10,57, 10,6,14,5,10,57, + 10,6,2,3,13,89, 10,6,2,6,5,73, 10,5,13,4,10,58, 10,5,13,5,10,58, 10,5,2,6,5,74, 10,4,12,5,10,59, 10,4,1,3,14,91, 10,4,1,6,5,75, + 10,3,12,5,10,60, 10,3,0,3,15,92, 10,3,0,6,5,76, 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,0,4,10,61, 10,2,0,6,5,77, + 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,2,4,10,62, 10,1,1,4,10,62, + 10,1,1,6,5,78, 10,0,11,2,4,95, 10,0,11,5,5,79, 10,0,10,2,5,95, 10,0,9,2,6,95, 10,0,9,6,5,79, 10,0,4,2,11,95, 10,0,4,5,5,79, + 10,0,3,2,12,95, 10,0,3,6,5,79, 11,13,12,3,3,82, 11,13,12,5,11,50, 11,13,11,3,4,82, 11,13,10,3,5,82, 11,13,9,3,6,82, 11,13,8,3,7,82, + 11,13,7,3,8,82, 11,13,7,6,4,66, 11,12,12,5,11,51, 11,12,6,3,9,83, 11,12,5,3,10,83, 11,12,4,3,11,83, 11,12,3,3,12,83, 11,12,3,6,4,67, + 11,11,12,5,11,52, 11,11,2,3,13,84, 11,11,2,6,4,68, 11,10,13,3,2,85, 11,10,13,5,11,53, 11,10,2,4,11,53, 11,10,2,6,4,69, 11,9,14,3,1,86, + 11,9,14,5,11,54, 11,9,3,6,4,70, 11,8,15,3,0,87, 11,8,15,5,11,55, 11,8,3,6,4,71, 11,7,15,4,11,56, 11,7,15,5,11,56, 11,7,3,6,4,72, + 11,6,14,4,11,57, 11,6,14,5,11,57, 11,6,2,3,13,89, 11,6,2,6,4,73, 11,5,13,4,11,58, 11,5,13,5,11,58, 11,5,2,6,4,74, 11,4,12,5,11,59, + 11,4,1,3,14,91, 11,4,1,6,4,75, 11,3,12,5,11,60, 11,3,0,3,15,92, 11,3,0,6,4,76, 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, + 11,2,0,4,11,61, 11,2,0,6,4,77, 11,1,12,4,11,62, 11,1,12,5,11,62, 11,1,8,4,11,62, 11,1,7,4,11,62, 11,1,6,4,11,62, 11,1,5,4,11,62, + 11,1,2,4,11,62, 11,1,1,4,11,62, 11,1,1,6,4,78, 11,0,11,5,4,79, 11,0,9,6,4,79, 11,0,4,5,4,79, 11,0,3,6,4,79, 12,13,12,3,3,82, + 12,13,12,5,12,50, 12,13,11,3,4,82, 12,13,10,3,5,82, 12,13,9,3,6,82, 12,13,8,3,7,82, 12,13,7,3,8,82, 12,13,7,6,3,66, 12,12,12,5,12,51, + 12,12,6,3,9,83, 12,12,5,3,10,83, 12,12,4,3,11,83, 12,12,3,3,12,83, 12,12,3,6,3,67, 12,11,12,5,12,52, 12,11,2,3,13,84, 12,11,2,6,3,68, + 12,10,13,1,2,85, 12,10,13,3,2,85, 12,10,13,5,12,53, 12,10,12,1,3,85, 12,10,11,1,4,85, 12,10,10,1,5,85, 12,10,9,1,6,85, 12,10,8,1,7,85, + 12,10,7,1,8,85, 12,10,6,1,9,85, 12,10,5,1,10,85, 12,10,4,1,11,85, 12,10,3,1,12,85, 12,10,2,1,13,85, 12,10,2,4,12,53, 12,10,2,6,3,69, + 12,9,14,3,1,86, 12,9,14,5,12,54, 12,9,3,6,3,70, 12,8,15,3,0,87, 12,8,15,5,12,55, 12,8,3,6,3,71, 12,7,15,4,12,56, 12,7,15,5,12,56, + 12,7,3,6,3,72, 12,6,14,4,12,57, 12,6,14,5,12,57, 12,6,2,3,13,89, 12,6,2,6,3,73, 12,5,13,4,12,58, 12,5,13,5,12,58, 12,5,2,6,3,74, + 12,4,12,5,12,59, 12,4,1,3,14,91, 12,4,1,6,3,75, 12,3,12,5,12,60, 12,3,0,3,15,92, 12,3,0,6,3,76, 12,2,13,3,2,93, 12,2,13,4,12,61, + 12,2,13,5,12,61, 12,2,0,4,12,61, 12,2,0,6,3,77, 12,1,12,4,3,78, 12,1,12,5,3,78, 12,1,8,4,3,78, 12,1,7,4,3,78, 12,1,6,4,3,78, + 12,1,5,4,3,78, 12,1,2,4,3,78, 12,1,1,4,3,78, 12,1,1,6,3,78, 12,0,11,1,4,95, 12,0,11,5,3,79, 12,0,10,1,5,95, 12,0,9,1,6,95, + 12,0,9,6,3,79, 12,0,4,1,11,95, 12,0,4,5,3,79, 12,0,3,1,12,95, 12,0,3,6,3,79, 13,13,12,3,3,82, 13,13,12,5,13,50, 13,13,11,3,4,82, + 13,13,10,3,5,82, 13,13,9,3,6,82, 13,13,8,3,7,82, 13,13,7,3,8,82, 13,13,7,6,2,66, 13,12,12,5,13,51, 13,12,6,3,9,83, 13,12,5,3,10,83, + 13,12,4,3,11,83, 13,12,3,3,12,83, 13,12,3,6,2,67, 13,11,12,1,3,84, 13,11,12,4,13,52, 13,11,12,5,13,52, 13,11,11,1,4,84, 13,11,11,4,13,52, + 13,11,10,1,5,84, 13,11,10,4,13,52, 13,11,9,1,6,84, 13,11,9,4,13,52, 13,11,8,1,7,84, 13,11,8,4,13,52, 13,11,7,1,8,84, 13,11,7,4,13,52, + 13,11,6,1,9,84, 13,11,6,4,13,52, 13,11,5,1,10,84, 13,11,5,4,13,52, 13,11,4,1,11,84, 13,11,4,4,13,52, 13,11,3,1,12,84, 13,11,3,4,13,52, + 13,11,2,1,13,84, 13,11,2,3,13,84, 13,11,2,4,13,52, 13,11,2,6,2,68, 13,9,14,1,1,86, 13,9,14,3,1,86, 13,9,14,5,13,54, 13,9,13,1,2,86, + 13,9,13,3,2,86, 13,9,12,1,3,86, 13,9,12,3,3,86, 13,9,11,1,4,86, 13,9,11,3,4,86, 13,9,10,1,5,86, 13,9,10,3,5,86, 13,9,9,1,6,86, + 13,9,9,3,6,86, 13,9,8,1,7,86, 13,9,8,3,7,86, 13,9,7,1,8,86, 13,9,7,3,8,86, 13,9,6,1,9,86, 13,9,6,3,9,86, 13,9,5,1,10,86, + 13,9,5,3,10,86, 13,9,4,1,11,86, 13,9,4,3,11,86, 13,9,3,1,12,86, 13,9,3,3,12,86, 13,9,3,6,2,70, 13,8,15,3,0,87, 13,8,15,5,13,55, + 13,8,3,6,2,71, 13,7,15,4,13,56, 13,7,15,5,13,56, 13,7,3,6,2,72, 13,6,14,4,13,57, 13,6,14,5,13,57, 13,6,2,3,13,89, 13,6,2,6,2,73, + 13,5,13,4,13,58, 13,5,13,5,13,58, 13,5,2,6,2,74, 13,4,12,1,3,91, 13,4,12,5,13,59, 13,4,11,1,4,91, 13,4,10,1,5,91, 13,4,9,1,6,91, + 13,4,8,1,7,91, 13,4,7,1,8,91, 13,4,6,1,9,91, 13,4,5,1,10,91, 13,4,4,1,11,91, 13,4,3,1,12,91, 13,4,2,1,13,91, 13,4,1,1,14,91, + 13,4,1,3,14,91, 13,4,1,6,2,75, 13,3,12,1,3,92, 13,3,12,5,2,76, 13,3,11,1,4,92, 13,3,10,1,5,92, 13,3,9,1,6,92, 13,3,8,1,7,92, + 13,3,7,1,8,92, 13,3,6,1,9,92, 13,3,5,1,10,92, 13,3,4,1,11,92, 13,3,3,1,12,92, 13,3,2,1,13,92, 13,3,1,1,14,92, 13,3,0,1,15,92, + 13,3,0,3,15,92, 13,3,0,6,2,76, 13,2,13,1,2,93, 13,2,13,3,2,93, 13,2,13,4,2,77, 13,2,13,5,2,77, 13,2,12,1,3,93, 13,2,11,1,4,93, + 13,2,10,1,5,93, 13,2,9,1,6,93, 13,2,8,1,7,93, 13,2,7,1,8,93, 13,2,6,1,9,93, 13,2,5,1,10,93, 13,2,4,1,11,93, 13,2,3,1,12,93, + 13,2,2,1,13,93, 13,2,1,1,14,93, 13,2,0,1,15,93, 13,2,0,4,2,77, 13,2,0,6,2,77, 13,1,12,1,3,94, 13,1,12,4,2,78, 13,1,12,5,2,78, + 13,1,11,1,4,94, 13,1,11,4,2,78, 13,1,10,1,5,94, 13,1,10,4,2,78, 13,1,9,1,6,94, 13,1,9,4,2,78, 13,1,8,1,7,94, 13,1,8,4,2,78, + 13,1,7,1,8,94, 13,1,7,4,2,78, 13,1,6,1,9,94, 13,1,6,4,2,78, 13,1,5,1,10,94, 13,1,5,4,2,78, 13,1,4,1,11,94, 13,1,4,4,2,78, + 13,1,3,1,12,94, 13,1,3,4,2,78, 13,1,2,1,13,94, 13,1,2,4,2,78, 13,1,1,1,14,94, 13,1,1,4,2,78, 13,1,1,6,2,78, 14,13,12,1,3,82, + 14,13,12,3,3,82, 14,13,12,5,14,50, 14,13,11,1,4,82, 14,13,11,3,4,82, 14,13,10,1,5,82, 14,13,10,3,5,82, 14,13,9,1,6,82, 14,13,9,3,6,82, + 14,13,8,1,7,82, 14,13,8,3,7,82, 14,13,7,1,8,82, 14,13,7,3,8,82, 14,13,7,6,1,66, 14,12,12,1,3,83, 14,12,12,4,14,51, 14,12,12,5,14,51, + 14,12,11,1,4,83, 14,12,11,4,14,51, 14,12,10,1,5,83, 14,12,10,4,14,51, 14,12,9,1,6,83, 14,12,9,4,14,51, 14,12,8,1,7,83, 14,12,8,4,14,51, + 14,12,7,1,8,83, 14,12,7,4,14,51, 14,12,6,1,9,83, 14,12,6,3,9,83, 14,12,6,4,14,51, 14,12,5,1,10,83, 14,12,5,3,10,83, 14,12,5,4,14,51, + 14,12,4,1,11,83, 14,12,4,3,11,83, 14,12,4,4,14,51, 14,12,3,1,12,83, 14,12,3,3,12,83, 14,12,3,4,14,51, 14,12,3,6,1,67, 14,8,15,3,0,87, + 14,8,15,5,14,55, 14,8,14,3,1,87, 14,8,13,3,2,87, 14,8,12,3,3,87, 14,8,11,3,4,87, 14,8,10,3,5,87, 14,8,9,3,6,87, 14,8,8,3,7,87, + 14,8,7,3,8,87, 14,8,6,3,9,87, 14,8,5,3,10,87, 14,8,4,3,11,87, 14,8,3,3,12,87, 14,8,3,6,1,71, 14,7,15,4,14,56, 14,7,15,5,14,56, + 14,7,3,6,1,72, 14,6,14,4,14,57, 14,6,14,5,14,57, 14,6,2,3,13,89, 14,6,2,6,1,73, 14,5,13,1,2,90, 14,5,13,4,14,58, 14,5,13,5,14,58, + 14,5,12,1,3,90, 14,5,12,4,14,58, 14,5,11,1,4,90, 14,5,11,4,14,58, 14,5,10,1,5,90, 14,5,10,4,14,58, 14,5,9,1,6,90, 14,5,9,4,14,58, + 14,5,8,1,7,90, 14,5,8,4,14,58, 14,5,7,1,8,90, 14,5,7,4,14,58, 14,5,6,1,9,90, 14,5,6,4,14,58, 14,5,5,1,10,90, 14,5,5,4,14,58, + 14,5,4,1,11,90, 14,5,4,4,14,58, 14,5,3,1,12,90, 14,5,3,4,14,58, 14,5,2,1,13,90, 14,5,2,4,14,58, 14,5,2,6,1,74, 15,8,15,1,0,87, + 15,8,15,3,0,87, 15,8,15,5,15,55, 15,8,14,1,1,87, 15,8,14,3,1,87, 15,8,13,1,2,87, 15,8,13,3,2,87, 15,8,12,1,3,87, 15,8,12,3,3,87, + 15,8,11,1,4,87, 15,8,11,3,4,87, 15,8,10,1,5,87, 15,8,10,3,5,87, 15,8,9,1,6,87, 15,8,9,3,6,87, 15,8,8,1,7,87, 15,8,8,3,7,87, + 15,8,7,1,8,87, 15,8,7,3,8,87, 15,8,6,1,9,87, 15,8,6,3,9,87, 15,8,5,1,10,87, 15,8,5,3,10,87, 15,8,4,1,11,87, 15,8,4,3,11,87, + 15,8,3,1,12,87, 15,8,3,3,12,87, 15,8,3,6,0,71, 15,7,15,1,0,88, 15,7,15,4,15,56, 15,7,15,5,15,56, 15,7,14,1,1,88, 15,7,13,1,2,88, + 15,7,12,1,3,88, 15,7,11,1,4,88, 15,7,10,1,5,88, 15,7,9,1,6,88, 15,7,8,1,7,88, 15,7,7,1,8,88, 15,7,6,1,9,88, 15,7,5,1,10,88, + 15,7,4,1,11,88, 15,7,3,1,12,88, 15,7,3,6,0,72, 15,6,14,1,1,89, 15,6,14,4,15,57, 15,6,14,5,15,57, 15,6,13,1,2,89, 15,6,13,4,15,57, + 15,6,12,1,3,89, 15,6,12,4,15,57, 15,6,11,1,4,89, 15,6,11,4,15,57, 15,6,10,1,5,89, 15,6,10,4,15,57, 15,6,9,1,6,89, 15,6,9,4,15,57, + 15,6,8,1,7,89, 15,6,8,4,15,57, 15,6,7,1,8,89, 15,6,7,4,15,57, 15,6,6,1,9,89, 15,6,6,4,15,57, 15,6,5,1,10,89, 15,6,5,4,15,57, + 15,6,4,1,11,89, 15,6,4,4,15,57, 15,6,3,1,12,89, 15,6,3,4,15,57, 15,6,2,1,13,89, 15,6,2,3,13,89, 15,6,2,4,15,57, 15,6,2,6,0,73, + }, + }, + }, +} diff --git a/assets/voxels/mr_fuji.lua b/assets/voxels/mr_fuji.lua new file mode 100644 index 0000000..3ce651a --- /dev/null +++ b/assets/voxels/mr_fuji.lua @@ -0,0 +1,287 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "mr_fuji" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "mr_fuji", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1820, + count = 1042, + faces = { + 1,10,13,2,2,37, 1,10,13,3,2,37, 1,10,13,5,1,5, 1,10,12,2,3,37, 1,10,12,3,3,37, 1,10,11,2,4,37, 1,10,11,3,4,37, 1,10,10,2,5,37, + 1,10,10,3,5,37, 1,10,9,2,6,37, 1,10,9,3,6,37, 1,10,8,2,7,37, 1,10,8,3,7,37, 1,10,7,2,8,37, 1,10,7,3,8,37, 1,10,6,2,9,37, + 1,10,6,3,9,37, 1,10,5,2,10,37, 1,10,5,3,10,37, 1,10,4,2,11,37, 1,10,4,3,11,37, 1,10,3,2,12,37, 1,10,3,3,12,37, 1,10,2,2,13,37, + 1,10,2,3,13,37, 1,10,2,6,14,21, 1,9,13,2,2,38, 1,9,13,5,1,6, 1,9,12,2,3,38, 1,9,11,2,4,38, 1,9,10,2,5,38, 1,9,9,2,6,38, + 1,9,8,2,7,38, 1,9,7,2,8,38, 1,9,6,2,9,38, 1,9,5,2,10,38, 1,9,4,2,11,38, 1,9,3,2,12,38, 1,9,2,2,13,38, 1,9,2,6,14,22, + 1,8,13,2,2,39, 1,8,13,4,1,7, 1,8,13,5,1,7, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, + 1,8,10,4,1,7, 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, + 1,8,6,4,1,7, 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,2,2,13,39, + 1,8,2,4,1,7, 1,8,2,6,14,23, 1,6,12,2,3,41, 1,6,12,3,3,41, 1,6,12,5,14,25, 1,6,11,2,4,41, 1,6,11,3,4,41, 1,6,10,2,5,41, + 1,6,10,3,5,41, 1,6,9,2,6,41, 1,6,9,3,6,41, 1,6,8,2,7,41, 1,6,8,3,7,41, 1,6,7,2,8,41, 1,6,7,3,8,41, 1,6,6,2,9,41, + 1,6,6,3,9,41, 1,6,5,2,10,41, 1,6,5,3,10,41, 1,6,4,2,11,41, 1,6,4,3,11,41, 1,6,3,2,12,41, 1,6,3,3,12,41, 1,6,3,6,14,25, + 1,5,12,2,3,42, 1,5,12,4,1,10, 1,5,12,5,1,10, 1,5,11,2,4,42, 1,5,10,2,5,42, 1,5,9,2,6,42, 1,5,8,2,7,42, 1,5,7,2,8,42, + 1,5,6,2,9,42, 1,5,5,2,10,42, 1,5,4,2,11,42, 1,5,3,2,12,42, 1,5,3,6,14,26, 1,4,11,2,4,43, 1,4,11,4,1,11, 1,4,11,5,1,11, + 1,4,10,2,5,43, 1,4,10,4,1,11, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, + 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,3,2,12,43, 1,4,3,4,1,11, + 1,4,2,2,13,43, 1,4,2,3,13,43, 1,4,2,4,1,11, 1,4,2,6,14,27, 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,13,5,2,4, 2,11,12,2,3,36, + 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, + 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, + 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,13,5,2,5, 2,10,2,6,13,21, + 2,9,13,5,2,6, 2,9,2,6,13,22, 2,8,13,5,2,7, 2,8,2,6,13,23, 2,7,13,2,2,40, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,12,2,3,40, + 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, + 2,7,3,2,12,40, 2,7,2,2,13,40, 2,7,2,4,2,8, 2,7,2,6,13,24, 2,6,12,5,2,9, 2,6,3,6,13,25, 2,5,12,4,2,10, 2,5,12,5,2,10, + 2,5,3,6,13,26, 2,4,11,4,2,11, 2,4,11,5,2,11, 2,4,2,3,13,43, 2,4,2,6,13,27, 2,3,10,2,5,44, 2,3,10,4,2,12, 2,3,10,5,2,12, + 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, + 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, 2,3,3,2,12,44, 2,3,3,4,2,12, 2,3,2,2,13,44, 2,3,2,4,2,12, + 2,3,2,6,13,28, 2,1,11,2,4,46, 2,1,11,3,4,46, 2,1,11,4,2,14, 2,1,11,5,2,14, 2,1,10,2,5,46, 2,1,10,3,5,46, 2,1,9,2,6,46, + 2,1,9,3,6,46, 2,1,8,2,7,46, 2,1,8,3,7,46, 2,1,7,2,8,46, 2,1,7,3,8,46, 2,1,6,2,9,46, 2,1,6,3,9,46, 2,1,5,2,10,46, + 2,1,5,3,10,46, 2,1,4,2,11,46, 2,1,4,3,11,46, 2,1,3,2,12,46, 2,1,3,3,12,46, 2,1,3,4,2,14, 2,1,3,6,13,30, 2,0,10,2,5,47, + 2,0,10,5,2,15, 2,0,9,2,6,47, 2,0,8,2,7,47, 2,0,7,2,8,47, 2,0,6,2,9,47, 2,0,5,2,10,47, 2,0,4,2,11,47, 2,0,4,6,13,31, + 3,12,12,2,3,35, 3,12,12,3,3,35, 3,12,12,5,3,3, 3,12,11,2,4,35, 3,12,11,3,4,35, 3,12,10,2,5,35, 3,12,10,3,5,35, 3,12,9,2,6,35, + 3,12,9,3,6,35, 3,12,8,2,7,35, 3,12,8,3,7,35, 3,12,7,2,8,35, 3,12,7,3,8,35, 3,12,6,2,9,35, 3,12,6,3,9,35, 3,12,5,2,10,35, + 3,12,5,3,10,35, 3,12,4,2,11,35, 3,12,4,3,11,35, 3,12,3,2,12,35, 3,12,3,3,12,35, 3,12,3,6,12,19, 3,11,13,3,2,36, 3,11,13,5,3,4, + 3,11,2,3,13,36, 3,11,2,6,12,20, 3,10,13,5,3,5, 3,10,2,6,12,21, 3,9,13,5,3,6, 3,9,2,6,12,22, 3,8,13,5,3,7, 3,8,2,6,12,23, + 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,2,4,3,8, 3,7,2,6,12,24, 3,6,12,5,3,9, 3,6,3,6,12,25, 3,5,12,4,3,10, 3,5,12,5,3,10, + 3,5,3,6,12,26, 3,4,11,4,3,11, 3,4,11,5,3,11, 3,4,2,3,13,43, 3,4,2,6,12,27, 3,3,10,5,3,12, 3,3,2,6,12,28, 3,2,11,2,4,45, + 3,2,11,3,4,45, 3,2,11,5,3,13, 3,2,10,2,5,45, 3,2,9,2,6,45, 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, + 3,2,4,2,11,45, 3,2,3,2,12,45, 3,2,2,2,13,45, 3,2,2,4,3,13, 3,2,2,6,12,29, 3,1,11,4,3,14, 3,1,11,5,3,14, 3,1,3,4,3,14, + 3,1,3,6,12,30, 3,0,10,5,3,15, 3,0,4,6,12,31, 4,13,11,2,4,34, 4,13,11,3,4,34, 4,13,11,5,4,2, 4,13,10,2,5,34, 4,13,10,3,5,34, + 4,13,9,2,6,34, 4,13,9,3,6,34, 4,13,8,2,7,34, 4,13,8,3,7,34, 4,13,7,2,8,34, 4,13,7,3,8,34, 4,13,6,2,9,34, 4,13,6,3,9,34, + 4,13,5,2,10,34, 4,13,5,3,10,34, 4,13,4,2,11,34, 4,13,4,3,11,34, 4,13,4,6,11,18, 4,12,12,3,3,35, 4,12,12,5,4,3, 4,12,3,3,12,35, + 4,12,3,6,11,19, 4,11,13,3,2,36, 4,11,13,5,4,4, 4,11,2,3,13,36, 4,11,2,6,11,20, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,13,5,4,6, + 4,9,2,6,11,22, 4,8,13,5,4,7, 4,8,2,6,11,23, 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,2,4,4,8, 4,7,2,6,11,24, 4,6,12,5,4,9, + 4,6,3,6,11,25, 4,5,12,4,4,10, 4,5,12,5,4,10, 4,5,3,6,11,26, 4,4,11,4,4,11, 4,4,11,5,4,11, 4,4,2,3,13,43, 4,4,2,6,11,27, + 4,3,10,5,4,12, 4,3,2,6,11,28, 4,2,11,3,4,45, 4,2,11,5,4,13, 4,2,2,4,4,13, 4,2,2,6,11,29, 4,1,11,4,4,14, 4,1,11,5,4,14, + 4,1,3,4,4,14, 4,1,3,6,11,30, 4,0,10,5,4,15, 4,0,4,6,11,31, 5,14,10,2,5,33, 5,14,10,3,5,33, 5,14,10,5,5,1, 5,14,9,2,6,33, + 5,14,9,3,6,33, 5,14,8,2,7,33, 5,14,8,3,7,33, 5,14,7,2,8,33, 5,14,7,3,8,33, 5,14,6,2,9,33, 5,14,6,3,9,33, 5,14,5,2,10,33, + 5,14,5,3,10,33, 5,14,5,6,10,17, 5,13,11,3,4,34, 5,13,11,5,5,2, 5,13,4,3,11,34, 5,13,4,6,10,18, 5,12,12,3,3,35, 5,12,12,5,5,3, + 5,12,3,3,12,35, 5,12,3,6,10,19, 5,11,13,3,2,36, 5,11,13,5,5,4, 5,11,2,3,13,36, 5,11,2,6,10,20, 5,10,13,5,5,5, 5,10,2,6,10,21, + 5,9,13,5,5,6, 5,9,2,6,10,22, 5,8,13,5,5,7, 5,8,2,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,2,4,5,8, 5,7,2,6,10,24, + 5,6,12,5,5,9, 5,6,3,6,10,25, 5,5,12,4,5,10, 5,5,12,5,5,10, 5,5,3,6,10,26, 5,4,11,4,5,11, 5,4,11,5,5,11, 5,4,2,3,13,43, + 5,4,2,6,10,27, 5,3,10,5,5,12, 5,3,2,6,10,28, 5,2,11,3,4,45, 5,2,11,5,5,13, 5,2,2,4,5,13, 5,2,2,6,10,29, 5,1,11,4,5,14, + 5,1,11,5,5,14, 5,1,3,4,5,14, 5,1,3,6,10,30, 5,0,10,5,5,15, 5,0,4,6,10,31, 6,14,10,3,5,33, 6,14,10,5,6,1, 6,14,9,3,6,33, + 6,14,8,3,7,33, 6,14,7,3,8,33, 6,14,6,3,9,33, 6,14,5,3,10,33, 6,14,5,6,9,17, 6,13,11,3,4,34, 6,13,11,5,6,2, 6,13,4,3,11,34, + 6,13,4,6,9,18, 6,12,12,3,3,35, 6,12,12,5,6,3, 6,12,3,3,12,35, 6,12,3,6,9,19, 6,11,13,3,2,36, 6,11,13,5,6,4, 6,11,2,3,13,36, + 6,11,2,6,9,20, 6,10,13,5,6,5, 6,10,2,6,9,21, 6,9,13,5,6,6, 6,9,2,6,9,22, 6,8,13,5,6,7, 6,8,2,6,9,23, 6,7,13,4,6,8, + 6,7,13,5,6,8, 6,7,2,4,6,8, 6,7,2,6,9,24, 6,6,12,5,6,9, 6,6,3,6,9,25, 6,5,12,4,6,10, 6,5,12,5,6,10, 6,5,3,6,9,26, + 6,4,11,4,6,11, 6,4,11,5,6,11, 6,4,2,3,13,43, 6,4,2,6,9,27, 6,3,10,5,6,12, 6,3,2,6,9,28, 6,2,11,3,4,45, 6,2,11,5,6,13, + 6,2,2,4,6,13, 6,2,2,6,9,29, 6,1,11,4,6,14, 6,1,11,5,6,14, 6,1,3,4,6,14, 6,1,3,6,9,30, 6,0,10,5,6,15, 6,0,4,6,9,31, + 7,15,9,2,6,32, 7,15,9,3,6,32, 7,15,9,5,7,0, 7,15,8,2,7,32, 7,15,8,3,7,32, 7,15,7,2,8,32, 7,15,7,3,8,32, 7,15,6,2,9,32, + 7,15,6,3,9,32, 7,15,6,6,8,16, 7,14,10,3,5,33, 7,14,10,5,7,1, 7,14,5,3,10,33, 7,14,5,6,8,17, 7,13,11,3,4,34, 7,13,11,5,7,2, + 7,13,4,3,11,34, 7,13,4,6,8,18, 7,12,12,3,3,35, 7,12,12,5,7,3, 7,12,3,3,12,35, 7,12,3,6,8,19, 7,11,13,3,2,36, 7,11,13,5,7,4, + 7,11,2,3,13,36, 7,11,2,6,8,20, 7,10,13,5,7,5, 7,10,2,6,8,21, 7,9,13,5,7,6, 7,9,2,6,8,22, 7,8,13,5,7,7, 7,8,2,6,8,23, + 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,2,4,7,8, 7,7,2,6,8,24, 7,6,12,5,7,9, 7,6,3,6,8,25, 7,5,12,4,7,10, 7,5,12,5,7,10, + 7,5,3,6,8,26, 7,4,11,4,7,11, 7,4,11,5,7,11, 7,4,2,3,13,43, 7,4,2,6,8,27, 7,3,10,5,7,12, 7,3,2,6,8,28, 7,2,11,3,4,45, + 7,2,11,5,7,13, 7,2,2,4,7,13, 7,2,2,6,8,29, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,3,4,7,14, 7,1,3,6,8,30, 7,0,10,5,7,15, + 7,0,4,6,7,15, 8,15,9,1,6,32, 8,15,9,3,6,32, 8,15,9,5,8,0, 8,15,8,1,7,32, 8,15,8,3,7,32, 8,15,7,1,8,32, 8,15,7,3,8,32, + 8,15,6,1,9,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,10,3,5,33, 8,14,10,5,8,1, 8,14,5,3,10,33, 8,14,5,6,7,17, 8,13,11,3,4,34, + 8,13,11,5,8,2, 8,13,4,3,11,34, 8,13,4,6,7,18, 8,12,12,3,3,35, 8,12,12,5,8,3, 8,12,3,3,12,35, 8,12,3,6,7,19, 8,11,13,3,2,36, + 8,11,13,5,8,4, 8,11,2,3,13,36, 8,11,2,6,7,20, 8,10,13,5,8,5, 8,10,2,6,7,21, 8,9,13,5,8,6, 8,9,2,6,7,22, 8,8,13,5,8,7, + 8,8,2,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,2,4,8,8, 8,7,2,6,7,24, 8,6,12,5,8,9, 8,6,3,6,7,25, 8,5,12,4,8,10, + 8,5,12,5,8,10, 8,5,3,6,7,26, 8,4,11,4,8,11, 8,4,11,5,8,11, 8,4,2,3,13,43, 8,4,2,6,7,27, 8,3,10,5,8,12, 8,3,2,6,7,28, + 8,2,11,3,4,45, 8,2,11,5,8,13, 8,2,2,4,8,13, 8,2,2,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,3,4,8,14, 8,1,3,6,7,30, + 8,0,10,5,8,15, 8,0,4,6,8,15, 9,14,10,3,5,33, 9,14,10,5,9,1, 9,14,9,3,6,33, 9,14,8,3,7,33, 9,14,7,3,8,33, 9,14,6,3,9,33, + 9,14,5,3,10,33, 9,14,5,6,6,17, 9,13,11,3,4,34, 9,13,11,5,9,2, 9,13,4,3,11,34, 9,13,4,6,6,18, 9,12,12,3,3,35, 9,12,12,5,9,3, + 9,12,3,3,12,35, 9,12,3,6,6,19, 9,11,13,3,2,36, 9,11,13,5,9,4, 9,11,2,3,13,36, 9,11,2,6,6,20, 9,10,13,5,9,5, 9,10,2,6,6,21, + 9,9,13,5,9,6, 9,9,2,6,6,22, 9,8,13,5,9,7, 9,8,2,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,2,4,9,8, 9,7,2,6,6,24, + 9,6,12,5,9,9, 9,6,3,6,6,25, 9,5,12,4,9,10, 9,5,12,5,9,10, 9,5,3,6,6,26, 9,4,11,4,9,11, 9,4,11,5,9,11, 9,4,2,3,13,43, + 9,4,2,6,6,27, 9,3,10,5,9,12, 9,3,2,6,6,28, 9,2,11,3,4,45, 9,2,11,5,9,13, 9,2,2,4,9,13, 9,2,2,6,6,29, 9,1,11,4,9,14, + 9,1,11,5,9,14, 9,1,3,4,9,14, 9,1,3,6,6,30, 9,0,10,5,9,15, 9,0,4,6,6,31, 10,14,10,1,5,33, 10,14,10,3,5,33, 10,14,10,5,10,1, + 10,14,9,1,6,33, 10,14,9,3,6,33, 10,14,8,1,7,33, 10,14,8,3,7,33, 10,14,7,1,8,33, 10,14,7,3,8,33, 10,14,6,1,9,33, 10,14,6,3,9,33, + 10,14,5,1,10,33, 10,14,5,3,10,33, 10,14,5,6,5,17, 10,13,11,3,4,34, 10,13,11,5,10,2, 10,13,4,3,11,34, 10,13,4,6,5,18, 10,12,12,3,3,35, + 10,12,12,5,10,3, 10,12,3,3,12,35, 10,12,3,6,5,19, 10,11,13,3,2,36, 10,11,13,5,10,4, 10,11,2,3,13,36, 10,11,2,6,5,20, 10,10,13,5,10,5, + 10,10,2,6,5,21, 10,9,13,5,10,6, 10,9,2,6,5,22, 10,8,13,5,10,7, 10,8,2,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,2,4,10,8, + 10,7,2,6,5,24, 10,6,12,5,10,9, 10,6,3,6,5,25, 10,5,12,4,10,10, 10,5,12,5,10,10, 10,5,3,6,5,26, 10,4,11,4,10,11, 10,4,11,5,10,11, + 10,4,2,3,13,43, 10,4,2,6,5,27, 10,3,10,5,10,12, 10,3,2,6,5,28, 10,2,11,3,4,45, 10,2,11,5,10,13, 10,2,2,4,10,13, 10,2,2,6,5,29, + 10,1,11,4,10,14, 10,1,11,5,10,14, 10,1,3,4,10,14, 10,1,3,6,5,30, 10,0,10,5,10,15, 10,0,4,6,5,31, 11,13,11,1,4,34, 11,13,11,3,4,34, + 11,13,11,5,11,2, 11,13,10,1,5,34, 11,13,10,3,5,34, 11,13,9,1,6,34, 11,13,9,3,6,34, 11,13,8,1,7,34, 11,13,8,3,7,34, 11,13,7,1,8,34, + 11,13,7,3,8,34, 11,13,6,1,9,34, 11,13,6,3,9,34, 11,13,5,1,10,34, 11,13,5,3,10,34, 11,13,4,1,11,34, 11,13,4,3,11,34, 11,13,4,6,4,18, + 11,12,12,3,3,35, 11,12,12,5,11,3, 11,12,3,3,12,35, 11,12,3,6,4,19, 11,11,13,3,2,36, 11,11,13,5,11,4, 11,11,2,3,13,36, 11,11,2,6,4,20, + 11,10,13,5,11,5, 11,10,2,6,4,21, 11,9,13,5,11,6, 11,9,2,6,4,22, 11,8,13,5,11,7, 11,8,2,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, + 11,7,2,4,11,8, 11,7,2,6,4,24, 11,6,12,5,11,9, 11,6,3,6,4,25, 11,5,12,4,11,10, 11,5,12,5,11,10, 11,5,3,6,4,26, 11,4,11,4,11,11, + 11,4,11,5,11,11, 11,4,2,3,13,43, 11,4,2,6,4,27, 11,3,10,5,11,12, 11,3,2,6,4,28, 11,2,11,3,4,45, 11,2,11,5,11,13, 11,2,2,4,11,13, + 11,2,2,6,4,29, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,3,4,11,14, 11,1,3,6,4,30, 11,0,10,5,11,15, 11,0,4,6,4,31, 12,12,12,1,3,35, + 12,12,12,3,3,35, 12,12,12,5,12,3, 12,12,11,1,4,35, 12,12,11,3,4,35, 12,12,10,1,5,35, 12,12,10,3,5,35, 12,12,9,1,6,35, 12,12,9,3,6,35, + 12,12,8,1,7,35, 12,12,8,3,7,35, 12,12,7,1,8,35, 12,12,7,3,8,35, 12,12,6,1,9,35, 12,12,6,3,9,35, 12,12,5,1,10,35, 12,12,5,3,10,35, + 12,12,4,1,11,35, 12,12,4,3,11,35, 12,12,3,1,12,35, 12,12,3,3,12,35, 12,12,3,6,3,19, 12,11,13,3,2,36, 12,11,13,5,12,4, 12,11,2,3,13,36, + 12,11,2,6,3,20, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,13,5,12,6, 12,9,2,6,3,22, 12,8,13,5,12,7, 12,8,2,6,3,23, 12,7,13,4,12,8, + 12,7,13,5,12,8, 12,7,2,4,12,8, 12,7,2,6,3,24, 12,6,12,5,12,9, 12,6,3,6,3,25, 12,5,12,4,12,10, 12,5,12,5,12,10, 12,5,3,6,3,26, + 12,4,11,4,12,11, 12,4,11,5,12,11, 12,4,2,3,13,43, 12,4,2,6,3,27, 12,3,10,5,12,12, 12,3,2,6,3,28, 12,2,11,1,4,45, 12,2,11,3,4,45, + 12,2,11,5,12,13, 12,2,10,1,5,45, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,4,1,11,45, + 12,2,3,1,12,45, 12,2,2,1,13,45, 12,2,2,4,12,13, 12,2,2,6,3,29, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,3,4,12,14, 12,1,3,6,3,30, + 12,0,10,5,12,15, 12,0,4,6,3,31, 13,11,13,1,2,36, 13,11,13,3,2,36, 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, + 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, 13,11,9,3,6,36, 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, + 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, 13,11,5,3,10,36, 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, + 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, 13,10,13,5,13,5, 13,10,2,6,2,21, 13,9,13,5,13,6, 13,9,2,6,2,22, + 13,8,13,5,13,7, 13,8,2,6,2,23, 13,7,13,1,2,40, 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,12,1,3,40, 13,7,11,1,4,40, 13,7,10,1,5,40, + 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, 13,7,2,1,13,40, + 13,7,2,4,13,8, 13,7,2,6,2,24, 13,6,12,5,13,9, 13,6,3,6,2,25, 13,5,12,4,13,10, 13,5,12,5,13,10, 13,5,3,6,2,26, 13,4,11,4,13,11, + 13,4,11,5,13,11, 13,4,2,3,13,43, 13,4,2,6,2,27, 13,3,10,1,5,44, 13,3,10,4,13,12, 13,3,10,5,13,12, 13,3,9,1,6,44, 13,3,9,4,13,12, + 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, + 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,3,1,12,44, 13,3,3,4,13,12, 13,3,2,1,13,44, 13,3,2,4,13,12, 13,3,2,6,2,28, 13,1,11,1,4,46, + 13,1,11,3,4,46, 13,1,11,4,13,14, 13,1,11,5,13,14, 13,1,10,1,5,46, 13,1,10,3,5,46, 13,1,9,1,6,46, 13,1,9,3,6,46, 13,1,8,1,7,46, + 13,1,8,3,7,46, 13,1,7,1,8,46, 13,1,7,3,8,46, 13,1,6,1,9,46, 13,1,6,3,9,46, 13,1,5,1,10,46, 13,1,5,3,10,46, 13,1,4,1,11,46, + 13,1,4,3,11,46, 13,1,3,1,12,46, 13,1,3,3,12,46, 13,1,3,4,13,14, 13,1,3,6,2,30, 13,0,10,1,5,47, 13,0,10,5,13,15, 13,0,9,1,6,47, + 13,0,8,1,7,47, 13,0,7,1,8,47, 13,0,6,1,9,47, 13,0,5,1,10,47, 13,0,4,1,11,47, 13,0,4,6,2,31, 14,10,13,1,2,37, 14,10,13,3,2,37, + 14,10,13,5,14,5, 14,10,12,1,3,37, 14,10,12,3,3,37, 14,10,11,1,4,37, 14,10,11,3,4,37, 14,10,10,1,5,37, 14,10,10,3,5,37, 14,10,9,1,6,37, + 14,10,9,3,6,37, 14,10,8,1,7,37, 14,10,8,3,7,37, 14,10,7,1,8,37, 14,10,7,3,8,37, 14,10,6,1,9,37, 14,10,6,3,9,37, 14,10,5,1,10,37, + 14,10,5,3,10,37, 14,10,4,1,11,37, 14,10,4,3,11,37, 14,10,3,1,12,37, 14,10,3,3,12,37, 14,10,2,1,13,37, 14,10,2,3,13,37, 14,10,2,6,1,21, + 14,9,13,1,2,38, 14,9,13,5,14,6, 14,9,12,1,3,38, 14,9,11,1,4,38, 14,9,10,1,5,38, 14,9,9,1,6,38, 14,9,8,1,7,38, 14,9,7,1,8,38, + 14,9,6,1,9,38, 14,9,5,1,10,38, 14,9,4,1,11,38, 14,9,3,1,12,38, 14,9,2,1,13,38, 14,9,2,6,1,22, 14,8,13,1,2,39, 14,8,13,4,14,7, + 14,8,13,5,14,7, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, + 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, + 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,2,1,13,39, 14,8,2,4,14,7, 14,8,2,6,1,23, + 14,6,12,1,3,41, 14,6,12,3,3,41, 14,6,12,5,1,25, 14,6,11,1,4,41, 14,6,11,3,4,41, 14,6,10,1,5,41, 14,6,10,3,5,41, 14,6,9,1,6,41, + 14,6,9,3,6,41, 14,6,8,1,7,41, 14,6,8,3,7,41, 14,6,7,1,8,41, 14,6,7,3,8,41, 14,6,6,1,9,41, 14,6,6,3,9,41, 14,6,5,1,10,41, + 14,6,5,3,10,41, 14,6,4,1,11,41, 14,6,4,3,11,41, 14,6,3,1,12,41, 14,6,3,3,12,41, 14,6,3,6,1,25, 14,5,12,1,3,42, 14,5,12,4,14,10, + 14,5,12,5,14,10, 14,5,11,1,4,42, 14,5,10,1,5,42, 14,5,9,1,6,42, 14,5,8,1,7,42, 14,5,7,1,8,42, 14,5,6,1,9,42, 14,5,5,1,10,42, + 14,5,4,1,11,42, 14,5,3,1,12,42, 14,5,3,6,1,26, 14,4,11,1,4,43, 14,4,11,4,14,11, 14,4,11,5,14,11, 14,4,10,1,5,43, 14,4,10,4,14,11, + 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, + 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,4,14,11, 14,4,3,1,12,43, 14,4,3,4,14,11, 14,4,2,1,13,43, 14,4,2,3,13,43, + 14,4,2,4,14,11, 14,4,2,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1726, + count = 990, + faces = { + 1,10,13,2,1,85, 1,10,13,3,1,85, 1,10,13,5,1,53, 1,10,12,2,2,85, 1,10,12,3,2,85, 1,10,11,2,3,85, 1,10,11,3,3,85, 1,10,10,2,4,85, + 1,10,10,3,4,85, 1,10,9,2,5,85, 1,10,9,3,5,85, 1,10,8,2,6,85, 1,10,8,3,6,85, 1,10,7,2,7,85, 1,10,7,3,7,85, 1,10,6,2,8,85, + 1,10,6,3,8,85, 1,10,5,2,9,85, 1,10,5,3,9,85, 1,10,4,2,10,85, 1,10,4,3,10,85, 1,10,3,2,11,85, 1,10,3,3,11,85, 1,10,2,2,12,85, + 1,10,2,3,12,85, 1,10,2,6,14,69, 1,9,13,2,1,86, 1,9,13,5,1,54, 1,9,12,2,2,86, 1,9,11,2,3,86, 1,9,10,2,4,86, 1,9,9,2,5,86, + 1,9,8,2,6,86, 1,9,7,2,7,86, 1,9,6,2,8,86, 1,9,5,2,9,86, 1,9,4,2,10,86, 1,9,3,2,11,86, 1,9,2,2,12,86, 1,9,2,6,14,70, + 1,8,13,2,1,87, 1,8,13,4,1,55, 1,8,13,5,1,55, 1,8,12,2,2,87, 1,8,12,4,1,55, 1,8,11,2,3,87, 1,8,11,4,1,55, 1,8,10,2,4,87, + 1,8,10,4,1,55, 1,8,9,2,5,87, 1,8,9,4,1,55, 1,8,8,2,6,87, 1,8,8,4,1,55, 1,8,7,2,7,87, 1,8,7,4,1,55, 1,8,6,2,8,87, + 1,8,6,4,1,55, 1,8,5,2,9,87, 1,8,5,4,1,55, 1,8,4,2,10,87, 1,8,4,4,1,55, 1,8,3,2,11,87, 1,8,3,4,1,55, 1,8,2,2,12,87, + 1,8,2,4,1,55, 1,8,2,6,14,71, 1,6,12,2,2,89, 1,6,12,3,2,89, 1,6,12,5,1,57, 1,6,11,2,3,89, 1,6,11,3,3,89, 1,6,10,2,4,89, + 1,6,10,3,4,89, 1,6,9,2,5,89, 1,6,9,3,5,89, 1,6,8,2,6,89, 1,6,8,3,6,89, 1,6,7,2,7,89, 1,6,7,3,7,89, 1,6,6,2,8,89, + 1,6,6,3,8,89, 1,6,5,2,9,89, 1,6,5,3,9,89, 1,6,4,2,10,89, 1,6,4,3,10,89, 1,6,3,2,11,89, 1,6,3,3,11,89, 1,6,3,6,14,73, + 1,5,12,2,2,90, 1,5,12,4,1,58, 1,5,12,5,1,58, 1,5,11,2,3,90, 1,5,10,2,4,90, 1,5,9,2,5,90, 1,5,8,2,6,90, 1,5,7,2,7,90, + 1,5,6,2,8,90, 1,5,5,2,9,90, 1,5,4,2,10,90, 1,5,3,2,11,90, 1,5,3,4,1,58, 1,5,3,6,14,74, 1,4,11,2,3,91, 1,4,11,4,14,75, + 1,4,11,5,14,75, 1,4,10,2,4,91, 1,4,10,4,14,75, 1,4,9,2,5,91, 1,4,9,4,14,75, 1,4,8,2,6,91, 1,4,8,4,14,75, 1,4,7,2,7,91, + 1,4,7,4,14,75, 1,4,6,2,8,91, 1,4,6,4,14,75, 1,4,5,2,9,91, 1,4,5,4,14,75, 1,4,4,2,10,91, 1,4,4,4,14,75, 1,4,4,6,14,75, + 2,11,13,2,1,84, 2,11,13,3,1,84, 2,11,13,5,2,52, 2,11,12,2,2,84, 2,11,12,3,2,84, 2,11,11,2,3,84, 2,11,11,3,3,84, 2,11,10,2,4,84, + 2,11,10,3,4,84, 2,11,9,2,5,84, 2,11,9,3,5,84, 2,11,8,2,6,84, 2,11,8,3,6,84, 2,11,7,2,7,84, 2,11,7,3,7,84, 2,11,6,2,8,84, + 2,11,6,3,8,84, 2,11,5,2,9,84, 2,11,5,3,9,84, 2,11,4,2,10,84, 2,11,4,3,10,84, 2,11,3,2,11,84, 2,11,3,3,11,84, 2,11,2,2,12,84, + 2,11,2,3,12,84, 2,11,2,6,13,68, 2,10,13,5,2,53, 2,10,2,6,13,69, 2,9,13,5,2,54, 2,9,2,6,13,70, 2,8,13,5,2,55, 2,8,2,6,13,71, + 2,7,13,2,1,88, 2,7,13,4,2,56, 2,7,13,5,2,56, 2,7,12,2,2,88, 2,7,11,2,3,88, 2,7,10,2,4,88, 2,7,9,2,5,88, 2,7,8,2,6,88, + 2,7,7,2,7,88, 2,7,6,2,8,88, 2,7,5,2,9,88, 2,7,4,2,10,88, 2,7,3,2,11,88, 2,7,2,2,12,88, 2,7,2,4,2,56, 2,7,2,6,13,72, + 2,6,12,5,2,57, 2,6,3,6,13,73, 2,5,12,4,2,58, 2,5,12,5,2,58, 2,5,3,4,2,58, 2,5,3,6,13,74, 2,4,11,5,2,59, 2,4,4,6,13,75, + 2,3,11,2,3,92, 2,3,11,4,13,76, 2,3,11,5,13,76, 2,3,10,2,4,92, 2,3,10,4,13,76, 2,3,9,2,5,92, 2,3,9,4,13,76, 2,3,8,2,6,92, + 2,3,8,4,13,76, 2,3,7,2,7,92, 2,3,7,4,13,76, 2,3,6,2,8,92, 2,3,6,4,13,76, 2,3,5,2,9,92, 2,3,5,4,13,76, 2,3,4,2,10,92, + 2,3,4,4,13,76, 2,3,3,2,11,92, 2,3,3,3,11,92, 2,3,3,4,13,76, 2,3,3,6,13,76, 3,12,12,2,2,83, 3,12,12,3,2,83, 3,12,12,5,3,51, + 3,12,11,2,3,83, 3,12,11,3,3,83, 3,12,10,2,4,83, 3,12,10,3,4,83, 3,12,9,2,5,83, 3,12,9,3,5,83, 3,12,8,2,6,83, 3,12,8,3,6,83, + 3,12,7,2,7,83, 3,12,7,3,7,83, 3,12,6,2,8,83, 3,12,6,3,8,83, 3,12,5,2,9,83, 3,12,5,3,9,83, 3,12,4,2,10,83, 3,12,4,3,10,83, + 3,12,3,2,11,83, 3,12,3,3,11,83, 3,12,3,6,12,67, 3,11,13,3,1,84, 3,11,13,5,3,52, 3,11,2,3,12,84, 3,11,2,6,12,68, 3,10,13,5,3,53, + 3,10,2,6,12,69, 3,9,13,5,3,54, 3,9,2,6,12,70, 3,8,13,5,3,55, 3,8,2,6,12,71, 3,7,13,4,3,56, 3,7,13,5,3,56, 3,7,2,4,3,56, + 3,7,2,6,12,72, 3,6,12,5,3,57, 3,6,3,6,12,73, 3,5,12,4,3,58, 3,5,12,5,3,58, 3,5,3,4,3,58, 3,5,3,6,12,74, 3,4,11,5,3,59, + 3,4,4,6,12,75, 3,3,11,5,3,60, 3,3,3,3,11,92, 3,3,3,6,12,76, 3,2,11,2,3,93, 3,2,11,4,3,61, 3,2,11,5,3,61, 3,2,10,2,4,93, + 3,2,9,2,5,93, 3,2,8,2,6,93, 3,2,7,2,7,93, 3,2,6,2,8,93, 3,2,5,2,9,93, 3,2,4,2,10,93, 3,2,3,2,11,93, 3,2,3,6,12,77, + 3,1,10,2,4,94, 3,1,10,4,3,62, 3,1,10,5,3,62, 3,1,9,2,5,94, 3,1,9,4,3,62, 3,1,8,2,6,94, 3,1,8,4,3,62, 3,1,7,2,7,94, + 3,1,7,4,3,62, 3,1,6,2,8,94, 3,1,6,4,3,62, 3,1,5,2,9,94, 3,1,5,4,3,62, 3,1,4,2,10,94, 3,1,4,4,3,62, 3,1,3,2,11,94, + 3,1,3,4,3,62, 3,1,3,6,3,62, 4,13,11,2,3,82, 4,13,11,3,3,82, 4,13,11,5,4,50, 4,13,10,2,4,82, 4,13,10,3,4,82, 4,13,9,2,5,82, + 4,13,9,3,5,82, 4,13,8,2,6,82, 4,13,8,3,6,82, 4,13,7,2,7,82, 4,13,7,3,7,82, 4,13,6,2,8,82, 4,13,6,3,8,82, 4,13,5,2,9,82, + 4,13,5,3,9,82, 4,13,4,2,10,82, 4,13,4,3,10,82, 4,13,4,6,11,66, 4,12,12,3,2,83, 4,12,12,5,4,51, 4,12,3,3,11,83, 4,12,3,6,11,67, + 4,11,13,3,1,84, 4,11,13,5,4,52, 4,11,2,3,12,84, 4,11,2,6,11,68, 4,10,13,5,4,53, 4,10,2,6,11,69, 4,9,13,5,4,54, 4,9,2,6,11,70, + 4,8,13,5,4,55, 4,8,2,6,11,71, 4,7,13,4,4,56, 4,7,13,5,4,56, 4,7,2,4,4,56, 4,7,2,6,11,72, 4,6,12,5,4,57, 4,6,3,6,11,73, + 4,5,12,4,4,58, 4,5,12,5,4,58, 4,5,3,4,4,58, 4,5,3,6,11,74, 4,4,11,5,4,59, 4,4,4,6,11,75, 4,3,11,5,4,60, 4,3,3,3,11,92, + 4,3,3,6,11,76, 4,2,11,4,4,61, 4,2,11,5,4,61, 4,2,3,6,11,77, 4,1,10,5,4,62, 4,1,3,4,4,62, 4,1,3,6,11,78, 4,0,10,2,4,95, + 4,0,10,5,4,63, 4,0,9,2,5,95, 4,0,8,2,6,95, 4,0,7,2,7,95, 4,0,6,2,8,95, 4,0,5,2,9,95, 4,0,4,2,10,95, 4,0,4,6,4,63, + 5,14,10,2,4,81, 5,14,10,3,4,81, 5,14,10,5,5,49, 5,14,9,2,5,81, 5,14,9,3,5,81, 5,14,8,2,6,81, 5,14,8,3,6,81, 5,14,7,2,7,81, + 5,14,7,3,7,81, 5,14,6,2,8,81, 5,14,6,3,8,81, 5,14,5,2,9,81, 5,14,5,3,9,81, 5,14,5,6,10,65, 5,13,11,3,3,82, 5,13,11,5,5,50, + 5,13,4,3,10,82, 5,13,4,6,10,66, 5,12,12,3,2,83, 5,12,12,5,5,51, 5,12,3,3,11,83, 5,12,3,6,10,67, 5,11,13,3,1,84, 5,11,13,5,5,52, + 5,11,2,3,12,84, 5,11,2,6,10,68, 5,10,13,5,5,53, 5,10,2,6,10,69, 5,9,13,5,5,54, 5,9,2,6,10,70, 5,8,13,5,5,55, 5,8,2,6,10,71, + 5,7,13,4,5,56, 5,7,13,5,5,56, 5,7,2,4,5,56, 5,7,2,6,10,72, 5,6,12,5,5,57, 5,6,3,6,10,73, 5,5,12,4,5,58, 5,5,12,5,5,58, + 5,5,3,4,5,58, 5,5,3,6,10,74, 5,4,11,5,5,59, 5,4,4,6,10,75, 5,3,11,5,5,60, 5,3,3,3,11,92, 5,3,3,6,10,76, 5,2,11,4,5,61, + 5,2,11,5,5,61, 5,2,3,6,10,77, 5,1,10,5,5,62, 5,1,3,4,5,62, 5,1,3,6,10,78, 5,0,10,5,5,63, 5,0,4,6,5,63, 6,14,10,3,4,81, + 6,14,10,5,6,49, 6,14,9,3,5,81, 6,14,8,3,6,81, 6,14,7,3,7,81, 6,14,6,3,8,81, 6,14,5,3,9,81, 6,14,5,6,9,65, 6,13,11,3,3,82, + 6,13,11,5,6,50, 6,13,4,3,10,82, 6,13,4,6,9,66, 6,12,12,3,2,83, 6,12,12,5,6,51, 6,12,3,3,11,83, 6,12,3,6,9,67, 6,11,13,3,1,84, + 6,11,13,5,6,52, 6,11,2,3,12,84, 6,11,2,6,9,68, 6,10,13,5,6,53, 6,10,2,6,9,69, 6,9,13,5,6,54, 6,9,2,6,9,70, 6,8,13,5,6,55, + 6,8,2,6,9,71, 6,7,13,4,6,56, 6,7,13,5,6,56, 6,7,2,4,6,56, 6,7,2,6,9,72, 6,6,12,5,6,57, 6,6,3,6,9,73, 6,5,12,4,6,58, + 6,5,12,5,6,58, 6,5,3,4,6,58, 6,5,3,6,9,74, 6,4,11,5,6,59, 6,4,4,6,9,75, 6,3,11,5,6,60, 6,3,3,3,11,92, 6,3,3,6,9,76, + 6,2,11,4,6,61, 6,2,11,5,6,61, 6,2,3,6,9,77, 6,1,10,5,6,62, 6,1,3,4,6,62, 6,1,3,6,9,78, 6,0,10,5,6,63, 6,0,4,6,9,79, + 7,15,9,2,5,80, 7,15,9,3,5,80, 7,15,9,5,7,48, 7,15,8,2,6,80, 7,15,8,3,6,80, 7,15,7,2,7,80, 7,15,7,3,7,80, 7,15,6,2,8,80, + 7,15,6,3,8,80, 7,15,6,6,8,64, 7,14,10,3,4,81, 7,14,10,5,7,49, 7,14,5,3,9,81, 7,14,5,6,8,65, 7,13,11,3,3,82, 7,13,11,5,7,50, + 7,13,4,3,10,82, 7,13,4,6,8,66, 7,12,12,3,2,83, 7,12,12,5,7,51, 7,12,3,3,11,83, 7,12,3,6,8,67, 7,11,13,3,1,84, 7,11,13,5,7,52, + 7,11,2,3,12,84, 7,11,2,6,8,68, 7,10,13,5,7,53, 7,10,2,6,8,69, 7,9,13,5,7,54, 7,9,2,6,8,70, 7,8,13,5,7,55, 7,8,2,6,8,71, + 7,7,13,4,7,56, 7,7,13,5,7,56, 7,7,2,4,7,56, 7,7,2,6,8,72, 7,6,12,5,7,57, 7,6,3,6,8,73, 7,5,12,4,7,58, 7,5,12,5,7,58, + 7,5,3,4,7,58, 7,5,3,6,8,74, 7,4,11,5,7,59, 7,4,4,6,8,75, 7,3,11,5,7,60, 7,3,3,3,11,92, 7,3,3,6,8,76, 7,2,11,4,7,61, + 7,2,11,5,7,61, 7,2,3,6,8,77, 7,1,10,5,7,62, 7,1,3,4,7,62, 7,1,3,6,8,78, 7,0,10,5,7,63, 7,0,4,6,8,79, 8,15,9,1,5,80, + 8,15,9,3,5,80, 8,15,9,5,8,48, 8,15,8,1,6,80, 8,15,8,3,6,80, 8,15,7,1,7,80, 8,15,7,3,7,80, 8,15,6,1,8,80, 8,15,6,3,8,80, + 8,15,6,6,7,64, 8,14,10,3,4,81, 8,14,10,5,8,49, 8,14,5,3,9,81, 8,14,5,6,7,65, 8,13,11,3,3,82, 8,13,11,5,8,50, 8,13,4,3,10,82, + 8,13,4,6,7,66, 8,12,12,3,2,83, 8,12,12,5,8,51, 8,12,3,3,11,83, 8,12,3,6,7,67, 8,11,13,3,1,84, 8,11,13,5,8,52, 8,11,2,3,12,84, + 8,11,2,6,7,68, 8,10,13,5,8,53, 8,10,2,6,7,69, 8,9,13,5,8,54, 8,9,2,6,7,70, 8,8,13,5,8,55, 8,8,2,6,7,71, 8,7,13,4,8,56, + 8,7,13,5,8,56, 8,7,2,4,8,56, 8,7,2,6,7,72, 8,6,12,5,8,57, 8,6,3,6,7,73, 8,5,12,4,8,58, 8,5,12,5,8,58, 8,5,3,4,8,58, + 8,5,3,6,7,74, 8,4,11,5,8,59, 8,4,4,6,7,75, 8,3,11,5,8,60, 8,3,3,3,11,92, 8,3,3,6,7,76, 8,2,11,4,8,61, 8,2,11,5,8,61, + 8,2,3,6,7,77, 8,1,10,5,8,62, 8,1,3,4,8,62, 8,1,3,6,7,78, 8,0,10,5,8,63, 8,0,4,6,7,79, 9,14,10,3,4,81, 9,14,10,5,9,49, + 9,14,9,3,5,81, 9,14,8,3,6,81, 9,14,7,3,7,81, 9,14,6,3,8,81, 9,14,5,3,9,81, 9,14,5,6,6,65, 9,13,11,3,3,82, 9,13,11,5,9,50, + 9,13,4,3,10,82, 9,13,4,6,6,66, 9,12,12,3,2,83, 9,12,12,5,9,51, 9,12,3,3,11,83, 9,12,3,6,6,67, 9,11,13,3,1,84, 9,11,13,5,9,52, + 9,11,2,3,12,84, 9,11,2,6,6,68, 9,10,13,5,9,53, 9,10,2,6,6,69, 9,9,13,5,9,54, 9,9,2,6,6,70, 9,8,13,5,9,55, 9,8,2,6,6,71, + 9,7,13,4,9,56, 9,7,13,5,9,56, 9,7,2,4,9,56, 9,7,2,6,6,72, 9,6,12,5,9,57, 9,6,3,6,6,73, 9,5,12,4,9,58, 9,5,12,5,9,58, + 9,5,3,4,9,58, 9,5,3,6,6,74, 9,4,11,5,9,59, 9,4,4,6,6,75, 9,3,11,5,9,60, 9,3,3,3,11,92, 9,3,3,6,6,76, 9,2,11,4,9,61, + 9,2,11,5,9,61, 9,2,3,6,6,77, 9,1,10,5,9,62, 9,1,3,4,9,62, 9,1,3,6,6,78, 9,0,10,5,9,63, 9,0,4,6,6,79, 10,14,10,1,4,81, + 10,14,10,3,4,81, 10,14,10,5,10,49, 10,14,9,1,5,81, 10,14,9,3,5,81, 10,14,8,1,6,81, 10,14,8,3,6,81, 10,14,7,1,7,81, 10,14,7,3,7,81, + 10,14,6,1,8,81, 10,14,6,3,8,81, 10,14,5,1,9,81, 10,14,5,3,9,81, 10,14,5,6,5,65, 10,13,11,3,3,82, 10,13,11,5,10,50, 10,13,4,3,10,82, + 10,13,4,6,5,66, 10,12,12,3,2,83, 10,12,12,5,10,51, 10,12,3,3,11,83, 10,12,3,6,5,67, 10,11,13,3,1,84, 10,11,13,5,10,52, 10,11,2,3,12,84, + 10,11,2,6,5,68, 10,10,13,5,10,53, 10,10,2,6,5,69, 10,9,13,5,10,54, 10,9,2,6,5,70, 10,8,13,5,10,55, 10,8,2,6,5,71, 10,7,13,4,10,56, + 10,7,13,5,10,56, 10,7,2,4,10,56, 10,7,2,6,5,72, 10,6,12,5,10,57, 10,6,3,6,5,73, 10,5,12,4,10,58, 10,5,12,5,10,58, 10,5,3,4,10,58, + 10,5,3,6,5,74, 10,4,11,5,10,59, 10,4,4,6,5,75, 10,3,11,5,10,60, 10,3,3,3,11,92, 10,3,3,6,5,76, 10,2,11,4,10,61, 10,2,11,5,10,61, + 10,2,3,6,5,77, 10,1,10,5,10,62, 10,1,3,4,10,62, 10,1,3,6,5,78, 10,0,10,5,5,79, 10,0,4,6,5,79, 11,13,11,1,3,82, 11,13,11,3,3,82, + 11,13,11,5,11,50, 11,13,10,1,4,82, 11,13,10,3,4,82, 11,13,9,1,5,82, 11,13,9,3,5,82, 11,13,8,1,6,82, 11,13,8,3,6,82, 11,13,7,1,7,82, + 11,13,7,3,7,82, 11,13,6,1,8,82, 11,13,6,3,8,82, 11,13,5,1,9,82, 11,13,5,3,9,82, 11,13,4,1,10,82, 11,13,4,3,10,82, 11,13,4,6,4,66, + 11,12,12,3,2,83, 11,12,12,5,11,51, 11,12,3,3,11,83, 11,12,3,6,4,67, 11,11,13,3,1,84, 11,11,13,5,11,52, 11,11,2,3,12,84, 11,11,2,6,4,68, + 11,10,13,5,11,53, 11,10,2,6,4,69, 11,9,13,5,11,54, 11,9,2,6,4,70, 11,8,13,5,11,55, 11,8,2,6,4,71, 11,7,13,4,11,56, 11,7,13,5,11,56, + 11,7,2,4,11,56, 11,7,2,6,4,72, 11,6,12,5,11,57, 11,6,3,6,4,73, 11,5,12,4,11,58, 11,5,12,5,11,58, 11,5,3,4,11,58, 11,5,3,6,4,74, + 11,4,11,5,11,59, 11,4,4,6,4,75, 11,3,11,5,11,60, 11,3,3,3,11,92, 11,3,3,6,4,76, 11,2,11,4,11,61, 11,2,11,5,11,61, 11,2,3,6,4,77, + 11,1,10,5,11,62, 11,1,3,4,11,62, 11,1,3,6,4,78, 11,0,10,1,4,95, 11,0,10,5,4,79, 11,0,9,1,5,95, 11,0,8,1,6,95, 11,0,7,1,7,95, + 11,0,6,1,8,95, 11,0,5,1,9,95, 11,0,4,1,10,95, 11,0,4,6,4,79, 12,12,12,1,2,83, 12,12,12,3,2,83, 12,12,12,5,12,51, 12,12,11,1,3,83, + 12,12,11,3,3,83, 12,12,10,1,4,83, 12,12,10,3,4,83, 12,12,9,1,5,83, 12,12,9,3,5,83, 12,12,8,1,6,83, 12,12,8,3,6,83, 12,12,7,1,7,83, + 12,12,7,3,7,83, 12,12,6,1,8,83, 12,12,6,3,8,83, 12,12,5,1,9,83, 12,12,5,3,9,83, 12,12,4,1,10,83, 12,12,4,3,10,83, 12,12,3,1,11,83, + 12,12,3,3,11,83, 12,12,3,6,3,67, 12,11,13,3,1,84, 12,11,13,5,12,52, 12,11,2,3,12,84, 12,11,2,6,3,68, 12,10,13,5,12,53, 12,10,2,6,3,69, + 12,9,13,5,12,54, 12,9,2,6,3,70, 12,8,13,5,12,55, 12,8,2,6,3,71, 12,7,13,4,12,56, 12,7,13,5,12,56, 12,7,2,4,12,56, 12,7,2,6,3,72, + 12,6,12,5,12,57, 12,6,3,6,3,73, 12,5,12,4,12,58, 12,5,12,5,12,58, 12,5,3,4,12,58, 12,5,3,6,3,74, 12,4,11,5,12,59, 12,4,4,6,3,75, + 12,3,11,5,12,60, 12,3,3,3,11,92, 12,3,3,6,3,76, 12,2,11,1,3,93, 12,2,11,4,12,61, 12,2,11,5,12,61, 12,2,10,1,4,93, 12,2,9,1,5,93, + 12,2,8,1,6,93, 12,2,7,1,7,93, 12,2,6,1,8,93, 12,2,5,1,9,93, 12,2,4,1,10,93, 12,2,3,1,11,93, 12,2,3,6,3,77, 12,1,10,1,4,94, + 12,1,10,4,3,78, 12,1,10,5,3,78, 12,1,9,1,5,94, 12,1,9,4,3,78, 12,1,8,1,6,94, 12,1,8,4,3,78, 12,1,7,1,7,94, 12,1,7,4,3,78, + 12,1,6,1,8,94, 12,1,6,4,3,78, 12,1,5,1,9,94, 12,1,5,4,3,78, 12,1,4,1,10,94, 12,1,4,4,3,78, 12,1,3,1,11,94, 12,1,3,4,3,78, + 12,1,3,6,3,78, 13,11,13,1,1,84, 13,11,13,3,1,84, 13,11,13,5,13,52, 13,11,12,1,2,84, 13,11,12,3,2,84, 13,11,11,1,3,84, 13,11,11,3,3,84, + 13,11,10,1,4,84, 13,11,10,3,4,84, 13,11,9,1,5,84, 13,11,9,3,5,84, 13,11,8,1,6,84, 13,11,8,3,6,84, 13,11,7,1,7,84, 13,11,7,3,7,84, + 13,11,6,1,8,84, 13,11,6,3,8,84, 13,11,5,1,9,84, 13,11,5,3,9,84, 13,11,4,1,10,84, 13,11,4,3,10,84, 13,11,3,1,11,84, 13,11,3,3,11,84, + 13,11,2,1,12,84, 13,11,2,3,12,84, 13,11,2,6,2,68, 13,10,13,5,13,53, 13,10,2,6,2,69, 13,9,13,5,13,54, 13,9,2,6,2,70, 13,8,13,5,13,55, + 13,8,2,6,2,71, 13,7,13,1,1,88, 13,7,13,4,13,56, 13,7,13,5,13,56, 13,7,12,1,2,88, 13,7,11,1,3,88, 13,7,10,1,4,88, 13,7,9,1,5,88, + 13,7,8,1,6,88, 13,7,7,1,7,88, 13,7,6,1,8,88, 13,7,5,1,9,88, 13,7,4,1,10,88, 13,7,3,1,11,88, 13,7,2,1,12,88, 13,7,2,4,13,56, + 13,7,2,6,2,72, 13,6,12,5,13,57, 13,6,3,6,2,73, 13,5,12,4,13,58, 13,5,12,5,13,58, 13,5,3,4,13,58, 13,5,3,6,2,74, 13,4,11,5,13,59, + 13,4,4,6,2,75, 13,3,11,1,3,92, 13,3,11,4,2,76, 13,3,11,5,2,76, 13,3,10,1,4,92, 13,3,10,4,2,76, 13,3,9,1,5,92, 13,3,9,4,2,76, + 13,3,8,1,6,92, 13,3,8,4,2,76, 13,3,7,1,7,92, 13,3,7,4,2,76, 13,3,6,1,8,92, 13,3,6,4,2,76, 13,3,5,1,9,92, 13,3,5,4,2,76, + 13,3,4,1,10,92, 13,3,4,4,2,76, 13,3,3,1,11,92, 13,3,3,3,11,92, 13,3,3,4,2,76, 13,3,3,6,2,76, 14,10,13,1,1,85, 14,10,13,3,1,85, + 14,10,13,5,14,53, 14,10,12,1,2,85, 14,10,12,3,2,85, 14,10,11,1,3,85, 14,10,11,3,3,85, 14,10,10,1,4,85, 14,10,10,3,4,85, 14,10,9,1,5,85, + 14,10,9,3,5,85, 14,10,8,1,6,85, 14,10,8,3,6,85, 14,10,7,1,7,85, 14,10,7,3,7,85, 14,10,6,1,8,85, 14,10,6,3,8,85, 14,10,5,1,9,85, + 14,10,5,3,9,85, 14,10,4,1,10,85, 14,10,4,3,10,85, 14,10,3,1,11,85, 14,10,3,3,11,85, 14,10,2,1,12,85, 14,10,2,3,12,85, 14,10,2,6,1,69, + 14,9,13,1,1,86, 14,9,13,5,14,54, 14,9,12,1,2,86, 14,9,11,1,3,86, 14,9,10,1,4,86, 14,9,9,1,5,86, 14,9,8,1,6,86, 14,9,7,1,7,86, + 14,9,6,1,8,86, 14,9,5,1,9,86, 14,9,4,1,10,86, 14,9,3,1,11,86, 14,9,2,1,12,86, 14,9,2,6,1,70, 14,8,13,1,1,87, 14,8,13,4,14,55, + 14,8,13,5,14,55, 14,8,12,1,2,87, 14,8,12,4,14,55, 14,8,11,1,3,87, 14,8,11,4,14,55, 14,8,10,1,4,87, 14,8,10,4,14,55, 14,8,9,1,5,87, + 14,8,9,4,14,55, 14,8,8,1,6,87, 14,8,8,4,14,55, 14,8,7,1,7,87, 14,8,7,4,14,55, 14,8,6,1,8,87, 14,8,6,4,14,55, 14,8,5,1,9,87, + 14,8,5,4,14,55, 14,8,4,1,10,87, 14,8,4,4,14,55, 14,8,3,1,11,87, 14,8,3,4,14,55, 14,8,2,1,12,87, 14,8,2,4,14,55, 14,8,2,6,1,71, + 14,6,12,1,2,89, 14,6,12,3,2,89, 14,6,12,5,14,57, 14,6,11,1,3,89, 14,6,11,3,3,89, 14,6,10,1,4,89, 14,6,10,3,4,89, 14,6,9,1,5,89, + 14,6,9,3,5,89, 14,6,8,1,6,89, 14,6,8,3,6,89, 14,6,7,1,7,89, 14,6,7,3,7,89, 14,6,6,1,8,89, 14,6,6,3,8,89, 14,6,5,1,9,89, + 14,6,5,3,9,89, 14,6,4,1,10,89, 14,6,4,3,10,89, 14,6,3,1,11,89, 14,6,3,3,11,89, 14,6,3,6,1,73, 14,5,12,1,2,90, 14,5,12,4,14,58, + 14,5,12,5,14,58, 14,5,11,1,3,90, 14,5,10,1,4,90, 14,5,9,1,5,90, 14,5,8,1,6,90, 14,5,7,1,7,90, 14,5,6,1,8,90, 14,5,5,1,9,90, + 14,5,4,1,10,90, 14,5,3,1,11,90, 14,5,3,4,14,58, 14,5,3,6,1,74, 14,4,11,1,3,91, 14,4,11,4,1,75, 14,4,11,5,1,75, 14,4,10,1,4,91, + 14,4,10,4,1,75, 14,4,9,1,5,91, 14,4,9,4,1,75, 14,4,8,1,6,91, 14,4,8,4,1,75, 14,4,7,1,7,91, 14,4,7,4,1,75, 14,4,6,1,8,91, + 14,4,6,4,1,75, 14,4,5,1,9,91, 14,4,5,4,1,75, 14,4,4,1,10,91, 14,4,4,4,1,75, 14,4,4,6,1,75, + }, + }, + }, +} diff --git a/assets/voxels/nurse.lua b/assets/voxels/nurse.lua new file mode 100644 index 0000000..08cb88d --- /dev/null +++ b/assets/voxels/nurse.lua @@ -0,0 +1,163 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "nurse" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "nurse", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1810, + count = 1104, + faces = { + 1,9,13,2,3,38, 1,9,13,3,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,12,3,4,38, 1,9,11,2,5,38, 1,9,11,3,5,38, 1,9,10,2,6,38, + 1,9,10,3,6,38, 1,9,9,2,7,38, 1,9,9,3,7,38, 1,9,8,2,8,38, 1,9,8,3,8,38, 1,9,7,2,9,38, 1,9,7,3,9,38, 1,9,6,2,10,38, + 1,9,6,3,10,38, 1,9,5,2,11,38, 1,9,5,3,11,38, 1,9,4,2,12,38, 1,9,4,3,12,38, 1,9,3,2,13,38, 1,9,3,3,13,38, 1,9,3,6,1,6, + 1,8,13,2,3,39, 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,11,2,5,39, 1,8,10,2,6,39, 1,8,9,2,7,39, 1,8,8,2,8,39, 1,8,7,2,9,39, + 1,8,6,2,10,39, 1,8,5,2,11,39, 1,8,4,2,12,39, 1,8,3,2,13,39, 1,8,2,2,14,39, 1,8,2,3,14,39, 1,8,2,6,14,23, 1,7,13,2,3,40, + 1,7,13,4,1,8, 1,7,13,5,1,8, 1,7,12,2,4,40, 1,7,11,2,5,40, 1,7,10,2,6,40, 1,7,9,2,7,40, 1,7,8,2,8,40, 1,7,7,2,9,40, + 1,7,6,2,10,40, 1,7,5,2,11,40, 1,7,4,2,12,40, 1,7,3,2,13,40, 1,7,2,2,14,40, 1,7,2,6,14,24, 1,6,12,2,4,41, 1,6,12,4,1,9, + 1,6,12,5,1,9, 1,6,11,2,5,41, 1,6,10,2,6,41, 1,6,9,2,7,41, 1,6,8,2,8,41, 1,6,7,2,9,41, 1,6,6,2,10,41, 1,6,5,2,11,41, + 1,6,4,2,12,41, 1,6,3,2,13,41, 1,6,2,2,14,41, 1,6,2,6,14,25, 1,5,11,2,5,42, 1,5,11,5,1,10, 1,5,10,2,6,42, 1,5,9,2,7,42, + 1,5,8,2,8,42, 1,5,7,2,9,42, 1,5,6,2,10,42, 1,5,5,2,11,42, 1,5,4,2,12,42, 1,5,3,2,13,42, 1,5,2,2,14,42, 1,5,2,4,1,10, + 1,5,2,6,14,26, 1,4,13,2,3,43, 1,4,13,3,3,43, 1,4,13,4,14,27, 1,4,13,5,14,27, 1,4,12,2,4,43, 1,4,12,3,4,43, 1,4,12,4,14,27, + 1,4,11,2,5,43, 1,4,11,4,14,27, 1,4,10,2,6,43, 1,4,10,4,14,27, 1,4,9,2,7,43, 1,4,9,4,14,27, 1,4,8,2,8,43, 1,4,8,4,14,27, + 1,4,7,2,9,43, 1,4,7,4,14,27, 1,4,6,2,10,43, 1,4,6,4,14,27, 1,4,5,2,11,43, 1,4,5,4,14,27, 1,4,4,2,12,43, 1,4,4,4,14,27, + 1,4,3,2,13,43, 1,4,3,4,14,27, 1,4,3,6,14,27, 2,12,14,2,2,35, 2,12,14,3,2,35, 2,12,14,5,2,3, 2,12,13,2,3,35, 2,12,13,3,3,35, + 2,12,12,2,4,35, 2,12,12,3,4,35, 2,12,11,2,5,35, 2,12,11,3,5,35, 2,12,10,2,6,35, 2,12,10,3,6,35, 2,12,9,2,7,35, 2,12,9,3,7,35, + 2,12,8,2,8,35, 2,12,8,3,8,35, 2,12,7,2,9,35, 2,12,7,3,9,35, 2,12,6,2,10,35, 2,12,6,3,10,35, 2,12,5,2,11,35, 2,12,5,3,11,35, + 2,12,4,2,12,35, 2,12,4,3,12,35, 2,12,4,6,2,3, 2,11,14,2,2,36, 2,11,14,4,2,4, 2,11,14,5,2,4, 2,11,13,2,3,36, 2,11,12,2,4,36, + 2,11,11,2,5,36, 2,11,10,2,6,36, 2,11,9,2,7,36, 2,11,8,2,8,36, 2,11,7,2,9,36, 2,11,6,2,10,36, 2,11,5,2,11,36, 2,11,4,2,12,36, + 2,11,3,2,13,36, 2,11,3,3,13,36, 2,11,3,6,13,20, 2,10,13,2,3,37, 2,10,13,5,2,5, 2,10,12,2,4,37, 2,10,11,2,5,37, 2,10,10,2,6,37, + 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, 2,10,6,2,10,37, 2,10,5,2,11,37, 2,10,4,2,12,37, 2,10,3,2,13,37, 2,10,3,6,13,21, + 2,9,13,5,2,6, 2,9,3,6,13,22, 2,8,13,5,2,7, 2,8,2,3,14,39, 2,8,2,6,13,23, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,2,6,13,24, + 2,6,12,4,2,9, 2,6,12,5,2,9, 2,6,2,6,13,25, 2,5,11,5,2,10, 2,5,2,4,2,10, 2,5,2,6,13,26, 2,4,13,3,3,43, 2,4,13,5,2,11, + 2,4,12,3,4,43, 2,4,3,4,2,11, 2,4,3,6,13,27, 2,3,14,2,2,44, 2,3,14,3,2,44, 2,3,14,4,13,28, 2,3,14,5,13,28, 2,3,13,2,3,44, + 2,3,13,4,13,28, 2,3,12,2,4,44, 2,3,12,4,13,28, 2,3,11,2,5,44, 2,3,11,4,13,28, 2,3,10,2,6,44, 2,3,10,4,13,28, 2,3,9,2,7,44, + 2,3,9,4,13,28, 2,3,8,2,8,44, 2,3,8,4,13,28, 2,3,7,2,9,44, 2,3,7,4,13,28, 2,3,6,2,10,44, 2,3,6,4,13,28, 2,3,5,2,11,44, + 2,3,5,4,13,28, 2,3,4,2,12,44, 2,3,4,4,13,28, 2,3,4,6,13,28, 3,13,13,2,3,34, 3,13,13,3,3,34, 3,13,13,5,3,2, 3,13,12,2,4,34, + 3,13,12,3,4,34, 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, + 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,5,6,3,2, + 3,12,14,3,2,35, 3,12,14,5,3,3, 3,12,4,3,12,35, 3,12,4,6,12,19, 3,11,14,4,3,4, 3,11,14,5,3,4, 3,11,3,3,13,36, 3,11,3,6,12,20, + 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,3,6,12,22, 3,8,13,5,3,7, 3,8,2,3,14,39, 3,8,2,6,12,23, 3,7,13,4,3,8, + 3,7,13,5,3,8, 3,7,2,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,2,6,12,25, 3,5,11,5,3,10, 3,5,2,4,3,10, 3,5,2,6,12,26, + 3,4,13,3,3,43, 3,4,13,5,3,11, 3,4,12,3,4,43, 3,4,3,4,3,11, 3,4,3,6,12,27, 3,3,14,3,2,44, 3,3,14,4,3,12, 3,3,14,5,3,12, + 3,3,5,4,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, 3,2,13,2,3,45, 3,2,13,4,12,29, 3,2,13,5,12,29, 3,2,12,2,4,45, 3,2,12,4,12,29, + 3,2,11,2,5,45, 3,2,11,4,12,29, 3,2,10,2,6,45, 3,2,10,4,12,29, 3,2,9,2,7,45, 3,2,9,4,12,29, 3,2,8,2,8,45, 3,2,8,4,12,29, + 3,2,7,2,9,45, 3,2,7,4,12,29, 3,2,6,2,10,45, 3,2,6,4,12,29, 3,2,6,6,12,29, 4,14,12,2,4,33, 4,14,12,3,4,33, 4,14,12,5,4,1, + 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, + 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,6,6,4,1, 4,13,13,3,3,34, 4,13,13,5,4,2, 4,13,5,3,11,34, + 4,13,5,6,11,18, 4,12,14,3,2,35, 4,12,14,5,4,3, 4,12,4,3,12,35, 4,12,4,6,11,19, 4,11,14,4,4,4, 4,11,14,5,4,4, 4,11,3,3,13,36, + 4,11,3,6,11,20, 4,10,13,5,4,5, 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,6,11,22, 4,8,13,5,4,7, 4,8,2,3,14,39, 4,8,2,6,11,23, + 4,7,13,4,4,8, 4,7,13,5,4,8, 4,7,2,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,2,6,11,25, 4,5,11,5,4,10, 4,5,2,4,4,10, + 4,5,2,6,11,26, 4,4,13,3,3,43, 4,4,13,5,4,11, 4,4,12,3,4,43, 4,4,3,4,4,11, 4,4,3,6,11,27, 4,3,14,3,2,44, 4,3,14,4,4,12, + 4,3,14,5,4,12, 4,3,5,4,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,13,4,4,13, 4,2,13,5,4,13, 4,2,6,6,11,29, 4,1,12,2,4,46, + 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,11,2,5,46, 4,1,11,4,4,14, 4,1,10,2,6,46, 4,1,10,4,4,14, 4,1,9,2,7,46, 4,1,9,4,4,14, + 4,1,8,2,8,46, 4,1,8,4,4,14, 4,1,7,2,9,46, 4,1,7,4,4,14, 4,1,6,2,10,46, 4,1,6,4,4,14, 4,1,5,2,11,46, 4,1,5,3,11,46, + 4,1,5,4,4,14, 4,1,5,6,11,30, 5,15,11,2,5,32, 5,15,11,3,5,32, 5,15,11,5,5,0, 5,15,10,2,6,32, 5,15,10,3,6,32, 5,15,9,2,7,32, + 5,15,9,3,7,32, 5,15,8,2,8,32, 5,15,8,3,8,32, 5,15,7,2,9,32, 5,15,7,3,9,32, 5,15,7,6,5,0, 5,14,12,3,4,33, 5,14,12,5,5,1, + 5,14,6,3,10,33, 5,14,6,6,10,17, 5,13,13,3,3,34, 5,13,13,5,5,2, 5,13,5,3,11,34, 5,13,5,6,10,18, 5,12,14,3,2,35, 5,12,14,5,5,3, + 5,12,4,3,12,35, 5,12,4,6,10,19, 5,11,14,4,5,4, 5,11,14,5,5,4, 5,11,3,3,13,36, 5,11,3,6,10,20, 5,10,13,5,5,5, 5,10,3,6,10,21, + 5,9,13,5,5,6, 5,9,3,6,10,22, 5,8,13,5,5,7, 5,8,2,3,14,39, 5,8,2,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,2,6,10,24, + 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,2,6,10,25, 5,5,11,5,5,10, 5,5,2,4,5,10, 5,5,2,6,10,26, 5,4,13,3,3,43, 5,4,13,5,5,11, + 5,4,12,3,4,43, 5,4,3,4,5,11, 5,4,3,6,10,27, 5,3,14,3,2,44, 5,3,14,4,5,12, 5,3,14,5,5,12, 5,3,5,4,5,12, 5,3,4,4,5,12, + 5,3,4,6,10,28, 5,2,13,4,5,13, 5,2,13,5,5,13, 5,2,6,6,10,29, 5,1,12,4,5,14, 5,1,12,5,5,14, 5,1,11,4,5,14, 5,1,10,4,5,14, + 5,1,9,4,5,14, 5,1,8,4,5,14, 5,1,7,4,5,14, 5,1,6,4,5,14, 5,1,5,3,11,46, 5,1,5,4,5,14, 5,1,5,6,10,30, 6,15,11,3,5,32, + 6,15,11,5,6,0, 6,15,10,3,6,32, 6,15,9,3,7,32, 6,15,8,3,8,32, 6,15,7,3,9,32, 6,15,7,6,6,0, 6,14,12,3,4,33, 6,14,12,5,6,1, + 6,14,6,3,10,33, 6,14,6,6,9,17, 6,13,13,3,3,34, 6,13,13,5,6,2, 6,13,5,3,11,34, 6,13,5,6,9,18, 6,12,14,3,2,35, 6,12,14,5,6,3, + 6,12,4,3,12,35, 6,12,4,6,9,19, 6,11,14,4,6,4, 6,11,14,5,6,4, 6,11,3,3,13,36, 6,11,3,6,9,20, 6,10,13,5,6,5, 6,10,3,6,9,21, + 6,9,13,5,6,6, 6,9,3,6,9,22, 6,8,13,5,6,7, 6,8,2,3,14,39, 6,8,2,6,9,23, 6,7,13,4,6,8, 6,7,13,5,6,8, 6,7,2,6,9,24, + 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,2,6,9,25, 6,5,11,5,6,10, 6,5,2,4,6,10, 6,5,2,6,9,26, 6,4,13,3,3,43, 6,4,13,5,6,11, + 6,4,12,3,4,43, 6,4,3,4,6,11, 6,4,3,6,9,27, 6,3,14,3,2,44, 6,3,14,4,6,12, 6,3,14,5,6,12, 6,3,5,4,6,12, 6,3,4,4,6,12, + 6,3,4,6,9,28, 6,2,13,4,6,13, 6,2,13,5,6,13, 6,2,6,6,9,29, 6,1,12,4,6,14, 6,1,12,5,6,14, 6,1,11,4,6,14, 6,1,7,4,6,14, + 6,1,6,4,6,14, 6,1,5,3,11,46, 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,10,2,6,47, 6,0,10,5,6,15, 6,0,9,2,7,47, 6,0,8,2,8,47, + 6,0,8,6,9,31, 7,15,11,3,5,32, 7,15,11,5,7,0, 7,15,10,3,6,32, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, 7,15,7,6,7,0, + 7,14,12,3,4,33, 7,14,12,5,7,1, 7,14,6,3,10,33, 7,14,6,6,8,17, 7,13,13,3,3,34, 7,13,13,5,7,2, 7,13,5,3,11,34, 7,13,5,6,8,18, + 7,12,14,3,2,35, 7,12,14,5,7,3, 7,12,4,3,12,35, 7,12,4,6,8,19, 7,11,14,4,7,4, 7,11,14,5,7,4, 7,11,3,3,13,36, 7,11,3,6,8,20, + 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,3,6,8,22, 7,8,13,5,7,7, 7,8,2,3,14,39, 7,8,2,6,8,23, 7,7,13,4,7,8, + 7,7,13,5,7,8, 7,7,2,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,2,6,8,25, 7,5,11,5,7,10, 7,5,2,4,7,10, 7,5,2,6,8,26, + 7,4,13,3,3,43, 7,4,13,5,7,11, 7,4,12,3,4,43, 7,4,3,4,7,11, 7,4,3,6,8,27, 7,3,14,3,2,44, 7,3,14,4,7,12, 7,3,14,5,7,12, + 7,3,5,4,7,12, 7,3,4,4,7,12, 7,3,4,6,8,28, 7,2,13,4,7,13, 7,2,13,5,7,13, 7,2,6,6,8,29, 7,1,12,4,7,14, 7,1,12,5,7,14, + 7,1,11,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,3,11,46, 7,1,5,4,7,14, 7,1,5,6,8,30, 7,0,10,5,7,15, 7,0,8,6,8,31, + 8,15,11,3,5,32, 8,15,11,5,8,0, 8,15,10,3,6,32, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,7,6,8,0, 8,14,12,3,4,33, + 8,14,12,5,8,1, 8,14,6,3,10,33, 8,14,6,6,7,17, 8,13,13,3,3,34, 8,13,13,5,8,2, 8,13,5,3,11,34, 8,13,5,6,7,18, 8,12,14,3,2,35, + 8,12,14,5,8,3, 8,12,4,3,12,35, 8,12,4,6,7,19, 8,11,14,4,8,4, 8,11,14,5,8,4, 8,11,3,3,13,36, 8,11,3,6,7,20, 8,10,13,5,8,5, + 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,6,7,22, 8,8,13,5,8,7, 8,8,2,3,14,39, 8,8,2,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, + 8,7,2,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,2,6,7,25, 8,5,11,5,8,10, 8,5,2,4,8,10, 8,5,2,6,7,26, 8,4,13,3,3,43, + 8,4,13,5,8,11, 8,4,12,3,4,43, 8,4,3,4,8,11, 8,4,3,6,7,27, 8,3,14,3,2,44, 8,3,14,4,8,12, 8,3,14,5,8,12, 8,3,5,4,8,12, + 8,3,4,4,8,12, 8,3,4,6,7,28, 8,2,13,4,8,13, 8,2,13,5,8,13, 8,2,6,6,7,29, 8,1,12,4,8,14, 8,1,12,5,8,14, 8,1,11,4,8,14, + 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,3,11,46, 8,1,5,4,8,14, 8,1,5,6,7,30, 8,0,10,5,8,15, 8,0,8,6,7,31, 9,15,11,3,5,32, + 9,15,11,5,9,0, 9,15,10,3,6,32, 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, 9,15,7,6,9,0, 9,14,12,3,4,33, 9,14,12,5,9,1, + 9,14,6,3,10,33, 9,14,6,6,6,17, 9,13,13,3,3,34, 9,13,13,5,9,2, 9,13,5,3,11,34, 9,13,5,6,6,18, 9,12,14,3,2,35, 9,12,14,5,9,3, + 9,12,4,3,12,35, 9,12,4,6,6,19, 9,11,14,4,9,4, 9,11,14,5,9,4, 9,11,3,3,13,36, 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,6,6,21, + 9,9,13,5,9,6, 9,9,3,6,6,22, 9,8,13,5,9,7, 9,8,2,3,14,39, 9,8,2,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,2,6,6,24, + 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,2,6,6,25, 9,5,11,5,9,10, 9,5,2,4,9,10, 9,5,2,6,6,26, 9,4,13,3,3,43, 9,4,13,5,9,11, + 9,4,12,3,4,43, 9,4,3,4,9,11, 9,4,3,6,6,27, 9,3,14,3,2,44, 9,3,14,4,9,12, 9,3,14,5,9,12, 9,3,5,4,9,12, 9,3,4,4,9,12, + 9,3,4,6,6,28, 9,2,13,4,9,13, 9,2,13,5,9,13, 9,2,6,6,6,29, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,11,4,9,14, 9,1,7,4,9,14, + 9,1,6,4,9,14, 9,1,5,3,11,46, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,10,1,6,47, 9,0,10,5,9,15, 9,0,9,1,7,47, 9,0,8,1,8,47, + 9,0,8,6,6,31, 10,15,11,1,5,32, 10,15,11,3,5,32, 10,15,11,5,10,0, 10,15,10,1,6,32, 10,15,10,3,6,32, 10,15,9,1,7,32, 10,15,9,3,7,32, + 10,15,8,1,8,32, 10,15,8,3,8,32, 10,15,7,1,9,32, 10,15,7,3,9,32, 10,15,7,6,10,0, 10,14,12,3,4,33, 10,14,12,5,10,1, 10,14,6,3,10,33, + 10,14,6,6,5,17, 10,13,13,3,3,34, 10,13,13,5,10,2, 10,13,5,3,11,34, 10,13,5,6,5,18, 10,12,14,3,2,35, 10,12,14,5,10,3, 10,12,4,3,12,35, + 10,12,4,6,5,19, 10,11,14,4,10,4, 10,11,14,5,10,4, 10,11,3,3,13,36, 10,11,3,6,5,20, 10,10,13,5,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, + 10,9,3,6,5,22, 10,8,13,5,10,7, 10,8,2,3,14,39, 10,8,2,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,2,6,5,24, 10,6,12,4,10,9, + 10,6,12,5,10,9, 10,6,2,6,5,25, 10,5,11,5,10,10, 10,5,2,4,10,10, 10,5,2,6,5,26, 10,4,13,3,3,43, 10,4,13,5,10,11, 10,4,12,3,4,43, + 10,4,3,4,10,11, 10,4,3,6,5,27, 10,3,14,3,2,44, 10,3,14,4,10,12, 10,3,14,5,10,12, 10,3,5,4,10,12, 10,3,4,4,10,12, 10,3,4,6,5,28, + 10,2,13,4,10,13, 10,2,13,5,10,13, 10,2,6,6,5,29, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,11,4,10,14, 10,1,10,4,10,14, 10,1,9,4,10,14, + 10,1,8,4,10,14, 10,1,7,4,10,14, 10,1,6,4,10,14, 10,1,5,3,11,46, 10,1,5,4,10,14, 10,1,5,6,5,30, 11,14,12,1,4,33, 11,14,12,3,4,33, + 11,14,12,5,11,1, 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, + 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,6,6,11,1, 11,13,13,3,3,34, 11,13,13,5,11,2, + 11,13,5,3,11,34, 11,13,5,6,4,18, 11,12,14,3,2,35, 11,12,14,5,11,3, 11,12,4,3,12,35, 11,12,4,6,4,19, 11,11,14,4,11,4, 11,11,14,5,11,4, + 11,11,3,3,13,36, 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,6,4,22, 11,8,13,5,11,7, 11,8,2,3,14,39, + 11,8,2,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,2,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,2,6,4,25, 11,5,11,5,11,10, + 11,5,2,4,11,10, 11,5,2,6,4,26, 11,4,13,3,3,43, 11,4,13,5,11,11, 11,4,12,3,4,43, 11,4,3,4,11,11, 11,4,3,6,4,27, 11,3,14,3,2,44, + 11,3,14,4,11,12, 11,3,14,5,11,12, 11,3,5,4,11,12, 11,3,4,4,11,12, 11,3,4,6,4,28, 11,2,13,4,11,13, 11,2,13,5,11,13, 11,2,6,6,4,29, + 11,1,12,1,4,46, 11,1,12,4,11,14, 11,1,12,5,11,14, 11,1,11,1,5,46, 11,1,11,4,11,14, 11,1,10,1,6,46, 11,1,10,4,11,14, 11,1,9,1,7,46, + 11,1,9,4,11,14, 11,1,8,1,8,46, 11,1,8,4,11,14, 11,1,7,1,9,46, 11,1,7,4,11,14, 11,1,6,1,10,46, 11,1,6,4,11,14, 11,1,5,1,11,46, + 11,1,5,3,11,46, 11,1,5,4,11,14, 11,1,5,6,4,30, 12,13,13,1,3,34, 12,13,13,3,3,34, 12,13,13,5,12,2, 12,13,12,1,4,34, 12,13,12,3,4,34, + 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, + 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,5,6,12,2, 12,12,14,3,2,35, + 12,12,14,5,12,3, 12,12,4,3,12,35, 12,12,4,6,3,19, 12,11,14,4,12,4, 12,11,14,5,12,4, 12,11,3,3,13,36, 12,11,3,6,3,20, 12,10,13,5,12,5, + 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,3,6,3,22, 12,8,13,5,12,7, 12,8,2,3,14,39, 12,8,2,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, + 12,7,2,6,3,24, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,2,6,3,25, 12,5,11,5,12,10, 12,5,2,4,12,10, 12,5,2,6,3,26, 12,4,13,3,3,43, + 12,4,13,5,12,11, 12,4,12,3,4,43, 12,4,3,4,12,11, 12,4,3,6,3,27, 12,3,14,3,2,44, 12,3,14,4,12,12, 12,3,14,5,12,12, 12,3,5,4,12,12, + 12,3,4,4,12,12, 12,3,4,6,3,28, 12,2,13,1,3,45, 12,2,13,4,3,29, 12,2,13,5,3,29, 12,2,12,1,4,45, 12,2,12,4,3,29, 12,2,11,1,5,45, + 12,2,11,4,3,29, 12,2,10,1,6,45, 12,2,10,4,3,29, 12,2,9,1,7,45, 12,2,9,4,3,29, 12,2,8,1,8,45, 12,2,8,4,3,29, 12,2,7,1,9,45, + 12,2,7,4,3,29, 12,2,6,1,10,45, 12,2,6,4,3,29, 12,2,6,6,3,29, 13,12,14,1,2,35, 13,12,14,3,2,35, 13,12,14,5,13,3, 13,12,13,1,3,35, + 13,12,13,3,3,35, 13,12,12,1,4,35, 13,12,12,3,4,35, 13,12,11,1,5,35, 13,12,11,3,5,35, 13,12,10,1,6,35, 13,12,10,3,6,35, 13,12,9,1,7,35, + 13,12,9,3,7,35, 13,12,8,1,8,35, 13,12,8,3,8,35, 13,12,7,1,9,35, 13,12,7,3,9,35, 13,12,6,1,10,35, 13,12,6,3,10,35, 13,12,5,1,11,35, + 13,12,5,3,11,35, 13,12,4,1,12,35, 13,12,4,3,12,35, 13,12,4,6,13,3, 13,11,14,1,2,36, 13,11,14,4,13,4, 13,11,14,5,13,4, 13,11,13,1,3,36, + 13,11,12,1,4,36, 13,11,11,1,5,36, 13,11,10,1,6,36, 13,11,9,1,7,36, 13,11,8,1,8,36, 13,11,7,1,9,36, 13,11,6,1,10,36, 13,11,5,1,11,36, + 13,11,4,1,12,36, 13,11,3,1,13,36, 13,11,3,3,13,36, 13,11,3,6,2,20, 13,10,13,1,3,37, 13,10,13,5,13,5, 13,10,12,1,4,37, 13,10,11,1,5,37, + 13,10,10,1,6,37, 13,10,9,1,7,37, 13,10,8,1,8,37, 13,10,7,1,9,37, 13,10,6,1,10,37, 13,10,5,1,11,37, 13,10,4,1,12,37, 13,10,3,1,13,37, + 13,10,3,6,2,21, 13,9,13,5,13,6, 13,9,3,6,2,22, 13,8,13,5,13,7, 13,8,2,3,14,39, 13,8,2,6,2,23, 13,7,13,4,13,8, 13,7,13,5,13,8, + 13,7,2,6,2,24, 13,6,12,4,13,9, 13,6,12,5,13,9, 13,6,2,6,2,25, 13,5,11,5,13,10, 13,5,2,4,13,10, 13,5,2,6,2,26, 13,4,13,3,3,43, + 13,4,13,5,13,11, 13,4,12,3,4,43, 13,4,3,4,13,11, 13,4,3,6,2,27, 13,3,14,1,2,44, 13,3,14,3,2,44, 13,3,14,4,2,28, 13,3,14,5,2,28, + 13,3,13,1,3,44, 13,3,13,4,2,28, 13,3,12,1,4,44, 13,3,12,4,2,28, 13,3,11,1,5,44, 13,3,11,4,2,28, 13,3,10,1,6,44, 13,3,10,4,2,28, + 13,3,9,1,7,44, 13,3,9,4,2,28, 13,3,8,1,8,44, 13,3,8,4,2,28, 13,3,7,1,9,44, 13,3,7,4,2,28, 13,3,6,1,10,44, 13,3,6,4,2,28, + 13,3,5,1,11,44, 13,3,5,4,2,28, 13,3,4,1,12,44, 13,3,4,4,2,28, 13,3,4,6,2,28, 14,9,13,1,3,38, 14,9,13,3,3,38, 14,9,13,5,14,6, + 14,9,12,1,4,38, 14,9,12,3,4,38, 14,9,11,1,5,38, 14,9,11,3,5,38, 14,9,10,1,6,38, 14,9,10,3,6,38, 14,9,9,1,7,38, 14,9,9,3,7,38, + 14,9,8,1,8,38, 14,9,8,3,8,38, 14,9,7,1,9,38, 14,9,7,3,9,38, 14,9,6,1,10,38, 14,9,6,3,10,38, 14,9,5,1,11,38, 14,9,5,3,11,38, + 14,9,4,1,12,38, 14,9,4,3,12,38, 14,9,3,1,13,38, 14,9,3,3,13,38, 14,9,3,6,14,6, 14,8,13,1,3,39, 14,8,13,5,14,7, 14,8,12,1,4,39, + 14,8,11,1,5,39, 14,8,10,1,6,39, 14,8,9,1,7,39, 14,8,8,1,8,39, 14,8,7,1,9,39, 14,8,6,1,10,39, 14,8,5,1,11,39, 14,8,4,1,12,39, + 14,8,3,1,13,39, 14,8,2,1,14,39, 14,8,2,3,14,39, 14,8,2,6,1,23, 14,7,13,1,3,40, 14,7,13,4,14,8, 14,7,13,5,14,8, 14,7,12,1,4,40, + 14,7,11,1,5,40, 14,7,10,1,6,40, 14,7,9,1,7,40, 14,7,8,1,8,40, 14,7,7,1,9,40, 14,7,6,1,10,40, 14,7,5,1,11,40, 14,7,4,1,12,40, + 14,7,3,1,13,40, 14,7,2,1,14,40, 14,7,2,6,1,24, 14,6,12,1,4,41, 14,6,12,4,14,9, 14,6,12,5,14,9, 14,6,11,1,5,41, 14,6,10,1,6,41, + 14,6,9,1,7,41, 14,6,8,1,8,41, 14,6,7,1,9,41, 14,6,6,1,10,41, 14,6,5,1,11,41, 14,6,4,1,12,41, 14,6,3,1,13,41, 14,6,2,1,14,41, + 14,6,2,6,1,25, 14,5,11,1,5,42, 14,5,11,5,14,10, 14,5,10,1,6,42, 14,5,9,1,7,42, 14,5,8,1,8,42, 14,5,7,1,9,42, 14,5,6,1,10,42, + 14,5,5,1,11,42, 14,5,4,1,12,42, 14,5,3,1,13,42, 14,5,2,1,14,42, 14,5,2,4,14,10, 14,5,2,6,1,26, 14,4,13,1,3,43, 14,4,13,3,3,43, + 14,4,13,4,1,27, 14,4,13,5,1,27, 14,4,12,1,4,43, 14,4,12,3,4,43, 14,4,12,4,1,27, 14,4,11,1,5,43, 14,4,11,4,1,27, 14,4,10,1,6,43, + 14,4,10,4,1,27, 14,4,9,1,7,43, 14,4,9,4,1,27, 14,4,8,1,8,43, 14,4,8,4,1,27, 14,4,7,1,9,43, 14,4,7,4,1,27, 14,4,6,1,10,43, + 14,4,6,4,1,27, 14,4,5,1,11,43, 14,4,5,4,1,27, 14,4,4,1,12,43, 14,4,4,4,1,27, 14,4,3,1,13,43, 14,4,3,4,1,27, 14,4,3,6,1,27, + }, + }, + }, +} diff --git a/assets/voxels/oak.lua b/assets/voxels/oak.lua new file mode 100644 index 0000000..4517b6a --- /dev/null +++ b/assets/voxels/oak.lua @@ -0,0 +1,312 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "oak" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "oak", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1670, + count = 1108, + faces = { + 0,5,9,2,5,42, 0,5,9,3,5,42, 0,5,9,5,0,10, 0,5,8,2,6,42, 0,5,8,3,6,42, 0,5,7,2,7,42, 0,5,7,3,7,42, 0,5,6,2,8,42, + 0,5,6,3,8,42, 0,5,5,2,9,42, 0,5,5,3,9,42, 0,5,4,2,10,42, 0,5,4,3,10,42, 0,5,3,2,11,42, 0,5,3,3,11,42, 0,5,3,6,15,26, + 0,4,9,2,5,43, 0,4,9,4,0,11, 0,4,9,5,0,11, 0,4,8,2,6,43, 0,4,8,4,0,11, 0,4,7,2,7,43, 0,4,7,4,0,11, 0,4,6,2,8,43, + 0,4,6,4,0,11, 0,4,5,2,9,43, 0,4,5,4,0,11, 0,4,4,2,10,43, 0,4,4,4,0,11, 0,4,3,2,11,43, 0,4,3,4,0,11, 0,4,3,6,15,27, + 1,10,11,2,3,37, 1,10,11,3,3,37, 1,10,11,5,1,5, 1,10,10,2,4,37, 1,10,10,3,4,37, 1,10,9,2,5,37, 1,10,9,3,5,37, 1,10,8,2,6,37, + 1,10,8,3,6,37, 1,10,7,2,7,37, 1,10,7,3,7,37, 1,10,6,2,8,37, 1,10,6,3,8,37, 1,10,5,2,9,37, 1,10,5,3,9,37, 1,10,4,2,10,37, + 1,10,4,3,10,37, 1,10,3,2,11,37, 1,10,3,3,11,37, 1,10,2,2,12,37, 1,10,2,3,12,37, 1,10,2,6,14,21, 1,9,11,2,3,38, 1,9,11,5,1,6, + 1,9,10,2,4,38, 1,9,9,2,5,38, 1,9,8,2,6,38, 1,9,7,2,7,38, 1,9,6,2,8,38, 1,9,5,2,9,38, 1,9,4,2,10,38, 1,9,3,2,11,38, + 1,9,2,2,12,38, 1,9,2,6,14,22, 1,8,11,2,3,39, 1,8,11,4,1,7, 1,8,11,5,1,7, 1,8,10,2,4,39, 1,8,10,4,1,7, 1,8,9,2,5,39, + 1,8,9,4,1,7, 1,8,8,2,6,39, 1,8,8,4,1,7, 1,8,7,2,7,39, 1,8,7,4,1,7, 1,8,6,2,8,39, 1,8,6,4,1,7, 1,8,5,2,9,39, + 1,8,5,4,1,7, 1,8,4,2,10,39, 1,8,4,4,1,7, 1,8,3,2,11,39, 1,8,3,4,1,7, 1,8,2,2,12,39, 1,8,2,4,1,7, 1,8,2,6,14,23, + 1,6,10,2,4,41, 1,6,10,3,4,41, 1,6,10,4,1,9, 1,6,10,5,1,9, 1,6,9,2,5,41, 1,6,9,3,5,41, 1,6,8,2,6,41, 1,6,8,3,6,41, + 1,6,7,2,7,41, 1,6,7,3,7,41, 1,6,6,2,8,41, 1,6,6,3,8,41, 1,6,5,2,9,41, 1,6,5,3,9,41, 1,6,4,2,10,41, 1,6,4,3,10,41, + 1,6,4,6,14,25, 1,5,9,5,1,10, 1,5,3,3,11,42, 1,5,3,6,14,26, 1,4,9,5,1,11, 1,4,3,6,14,27, 1,3,9,2,5,44, 1,3,9,4,1,12, + 1,3,9,5,1,12, 1,3,8,2,6,44, 1,3,8,4,1,12, 1,3,7,2,7,44, 1,3,7,4,1,12, 1,3,6,2,8,44, 1,3,6,4,1,12, 1,3,5,2,9,44, + 1,3,5,4,1,12, 1,3,4,2,10,44, 1,3,4,4,1,12, 1,3,3,2,11,44, 1,3,3,4,1,12, 1,3,2,2,12,44, 1,3,2,3,12,44, 1,3,2,4,1,12, + 1,3,2,6,14,28, 2,14,12,2,2,33, 2,14,12,3,2,33, 2,14,12,4,2,1, 2,14,12,5,2,1, 2,14,11,2,3,33, 2,14,11,3,3,33, 2,14,11,4,2,1, + 2,14,10,2,4,33, 2,14,10,3,4,33, 2,14,10,4,2,1, 2,14,9,2,5,33, 2,14,9,3,5,33, 2,14,9,4,2,1, 2,14,8,2,6,33, 2,14,8,3,6,33, + 2,14,8,4,2,1, 2,14,7,2,7,33, 2,14,7,3,7,33, 2,14,7,4,2,1, 2,14,6,2,8,33, 2,14,6,3,8,33, 2,14,6,4,2,1, 2,14,5,2,9,33, + 2,14,5,3,9,33, 2,14,5,4,2,1, 2,14,4,2,10,33, 2,14,4,3,10,33, 2,14,4,4,2,1, 2,14,4,6,13,17, 2,11,12,2,2,36, 2,11,12,3,2,36, + 2,11,12,4,2,4, 2,11,12,5,2,4, 2,11,11,2,3,36, 2,11,11,3,3,36, 2,11,10,2,4,36, 2,11,10,3,4,36, 2,11,9,2,5,36, 2,11,9,3,5,36, + 2,11,8,2,6,36, 2,11,8,3,6,36, 2,11,7,2,7,36, 2,11,7,3,7,36, 2,11,6,2,8,36, 2,11,6,3,8,36, 2,11,5,2,9,36, 2,11,5,3,9,36, + 2,11,4,2,10,36, 2,11,4,3,10,36, 2,11,3,2,11,36, 2,11,3,3,11,36, 2,11,2,2,12,36, 2,11,2,3,12,36, 2,11,2,6,13,20, 2,10,11,5,2,5, + 2,10,2,6,13,21, 2,9,11,5,2,6, 2,9,2,6,13,22, 2,8,11,5,2,7, 2,8,2,4,2,7, 2,8,2,6,13,23, 2,7,11,2,3,40, 2,7,11,4,2,8, + 2,7,11,5,2,8, 2,7,10,2,4,40, 2,7,9,2,5,40, 2,7,8,2,6,40, 2,7,7,2,7,40, 2,7,6,2,8,40, 2,7,5,2,9,40, 2,7,4,2,10,40, + 2,7,3,2,11,40, 2,7,3,4,2,8, 2,7,3,6,13,24, 2,6,10,4,2,9, 2,6,10,5,2,9, 2,6,4,6,13,25, 2,5,9,5,2,10, 2,5,3,3,11,42, + 2,5,3,6,13,26, 2,4,9,5,2,11, 2,4,3,6,13,27, 2,3,9,5,2,12, 2,3,2,3,12,44, 2,3,2,6,13,28, 2,2,9,2,5,45, 2,2,9,4,2,13, + 2,2,9,5,2,13, 2,2,8,2,6,45, 2,2,8,4,2,13, 2,2,7,2,7,45, 2,2,7,4,2,13, 2,2,6,2,8,45, 2,2,6,4,2,13, 2,2,5,2,9,45, + 2,2,5,4,2,13, 2,2,4,2,10,45, 2,2,4,4,2,13, 2,2,3,2,11,45, 2,2,3,4,2,13, 2,2,2,2,12,45, 2,2,2,4,2,13, 2,2,2,6,13,29, + 2,0,10,2,4,47, 2,0,10,3,4,47, 2,0,10,5,2,15, 2,0,9,2,5,47, 2,0,9,3,5,47, 2,0,8,2,6,47, 2,0,8,3,6,47, 2,0,7,2,7,47, + 2,0,7,3,7,47, 2,0,6,2,8,47, 2,0,6,3,8,47, 2,0,5,2,9,47, 2,0,5,3,9,47, 2,0,5,6,13,31, 3,14,12,3,2,33, 3,14,12,5,3,1, + 3,14,11,3,3,33, 3,14,10,3,4,33, 3,14,9,3,5,33, 3,14,8,3,6,33, 3,14,7,3,7,33, 3,14,6,3,8,33, 3,14,5,3,9,33, 3,14,4,3,10,33, + 3,14,4,6,12,17, 3,13,13,2,1,34, 3,13,13,3,1,34, 3,13,13,4,3,2, 3,13,13,5,3,2, 3,13,12,2,2,34, 3,13,11,2,3,34, 3,13,10,2,4,34, + 3,13,9,2,5,34, 3,13,8,2,6,34, 3,13,7,2,7,34, 3,13,6,2,8,34, 3,13,5,2,9,34, 3,13,4,2,10,34, 3,13,3,2,11,34, 3,13,3,3,11,34, + 3,13,3,6,12,18, 3,12,12,2,2,35, 3,12,12,5,3,3, 3,12,11,2,3,35, 3,12,10,2,4,35, 3,12,9,2,5,35, 3,12,8,2,6,35, 3,12,7,2,7,35, + 3,12,6,2,8,35, 3,12,5,2,9,35, 3,12,4,2,10,35, 3,12,3,2,11,35, 3,12,2,2,12,35, 3,12,2,3,12,35, 3,12,2,6,12,19, 3,11,12,4,3,4, + 3,11,12,5,3,4, 3,11,2,6,12,20, 3,10,11,5,3,5, 3,10,2,6,12,21, 3,9,11,5,3,6, 3,9,2,6,12,22, 3,8,11,5,3,7, 3,8,2,4,3,7, + 3,8,2,6,12,23, 3,7,11,4,3,8, 3,7,11,5,3,8, 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,10,4,3,9, 3,6,10,5,3,9, 3,6,4,6,12,25, + 3,5,9,5,3,10, 3,5,3,3,11,42, 3,5,3,6,12,26, 3,4,9,5,3,11, 3,4,3,6,12,27, 3,3,9,5,3,12, 3,3,2,3,12,44, 3,3,2,6,12,28, + 3,2,9,5,3,13, 3,2,2,6,12,29, 3,1,9,2,5,46, 3,1,9,5,3,14, 3,1,8,2,6,46, 3,1,7,2,7,46, 3,1,6,2,8,46, 3,1,5,2,9,46, + 3,1,4,2,10,46, 3,1,4,4,3,14, 3,1,3,2,11,46, 3,1,3,4,3,14, 3,1,2,2,12,46, 3,1,2,4,3,14, 3,1,2,6,12,30, 3,0,10,3,4,47, + 3,0,10,5,3,15, 3,0,5,6,12,31, 4,14,12,3,2,33, 4,14,12,5,4,1, 4,14,11,3,3,33, 4,14,10,3,4,33, 4,14,9,3,5,33, 4,14,8,3,6,33, + 4,14,7,3,7,33, 4,14,6,3,8,33, 4,14,5,3,9,33, 4,14,4,3,10,33, 4,14,4,6,11,17, 4,13,13,3,1,34, 4,13,13,4,4,2, 4,13,13,5,4,2, + 4,13,3,3,11,34, 4,13,3,6,11,18, 4,12,12,5,4,3, 4,12,2,3,12,35, 4,12,2,6,11,19, 4,11,12,4,4,4, 4,11,12,5,4,4, 4,11,2,6,11,20, + 4,10,11,5,4,5, 4,10,2,6,11,21, 4,9,11,5,4,6, 4,9,2,6,11,22, 4,8,11,5,4,7, 4,8,2,4,4,7, 4,8,2,6,11,23, 4,7,11,4,4,8, + 4,7,11,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,10,4,4,9, 4,6,10,5,4,9, 4,6,4,6,11,25, 4,5,9,5,4,10, 4,5,3,3,11,42, + 4,5,3,6,11,26, 4,4,9,5,4,11, 4,4,3,6,11,27, 4,3,9,5,4,12, 4,3,2,3,12,44, 4,3,2,6,11,28, 4,2,9,5,4,13, 4,2,2,6,11,29, + 4,1,9,5,4,14, 4,1,4,4,4,14, 4,1,3,4,4,14, 4,1,2,4,4,14, 4,1,2,6,11,30, 4,0,10,3,4,47, 4,0,10,5,4,15, 4,0,5,6,11,31, + 5,15,9,2,5,32, 5,15,9,3,5,32, 5,15,9,5,5,0, 5,15,8,2,6,32, 5,15,8,3,6,32, 5,15,7,2,7,32, 5,15,7,3,7,32, 5,15,6,2,8,32, + 5,15,6,3,8,32, 5,15,5,2,9,32, 5,15,5,3,9,32, 5,15,5,6,10,16, 5,14,12,3,2,33, 5,14,12,5,5,1, 5,14,11,3,3,33, 5,14,10,3,4,33, + 5,14,4,3,10,33, 5,14,4,6,10,17, 5,13,13,3,1,34, 5,13,13,4,5,2, 5,13,13,5,5,2, 5,13,3,3,11,34, 5,13,3,6,10,18, 5,12,12,5,5,3, + 5,12,2,3,12,35, 5,12,2,6,10,19, 5,11,12,4,5,4, 5,11,12,5,5,4, 5,11,2,6,10,20, 5,10,11,5,5,5, 5,10,2,6,10,21, 5,9,11,5,5,6, + 5,9,2,6,10,22, 5,8,11,5,5,7, 5,8,2,4,5,7, 5,8,2,6,10,23, 5,7,11,4,5,8, 5,7,11,5,5,8, 5,7,3,4,5,8, 5,7,3,6,10,24, + 5,6,10,4,5,9, 5,6,10,5,5,9, 5,6,4,6,10,25, 5,5,9,5,5,10, 5,5,3,3,11,42, 5,5,3,6,10,26, 5,4,9,5,5,11, 5,4,3,6,10,27, + 5,3,9,5,5,12, 5,3,2,3,12,44, 5,3,2,6,10,28, 5,2,9,5,5,13, 5,2,2,6,10,29, 5,1,9,5,5,14, 5,1,4,4,5,14, 5,1,3,4,5,14, + 5,1,2,4,5,14, 5,1,2,6,10,30, 5,0,10,3,4,47, 5,0,10,5,5,15, 5,0,5,6,10,31, 6,15,9,3,5,32, 6,15,9,5,6,0, 6,15,8,3,6,32, + 6,15,7,3,7,32, 6,15,6,3,8,32, 6,15,5,3,9,32, 6,15,5,6,9,16, 6,14,12,3,2,33, 6,14,12,5,6,1, 6,14,11,3,3,33, 6,14,10,3,4,33, + 6,14,4,3,10,33, 6,14,4,6,9,17, 6,13,13,3,1,34, 6,13,13,4,6,2, 6,13,13,5,6,2, 6,13,3,3,11,34, 6,13,3,6,9,18, 6,12,12,5,6,3, + 6,12,2,3,12,35, 6,12,2,6,9,19, 6,11,12,4,6,4, 6,11,12,5,6,4, 6,11,2,6,9,20, 6,10,11,5,6,5, 6,10,2,6,9,21, 6,9,11,5,6,6, + 6,9,2,6,9,22, 6,8,11,5,6,7, 6,8,2,4,6,7, 6,8,2,6,9,23, 6,7,11,4,6,8, 6,7,11,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, + 6,6,10,4,6,9, 6,6,10,5,6,9, 6,6,4,6,9,25, 6,5,9,5,6,10, 6,5,3,3,11,42, 6,5,3,6,9,26, 6,4,9,5,6,11, 6,4,3,6,9,27, + 6,3,9,5,6,12, 6,3,2,3,12,44, 6,3,2,6,9,28, 6,2,9,5,6,13, 6,2,2,6,9,29, 6,1,9,5,6,14, 6,1,4,4,6,14, 6,1,3,4,6,14, + 6,1,2,4,6,14, 6,1,2,6,9,30, 6,0,10,1,4,47, 6,0,10,3,4,47, 6,0,10,5,6,15, 6,0,9,1,5,47, 6,0,8,1,6,47, 6,0,7,1,7,47, + 6,0,6,1,8,47, 6,0,5,1,9,47, 6,0,5,6,9,31, 7,15,9,3,5,32, 7,15,9,5,7,0, 7,15,8,3,6,32, 7,15,7,3,7,32, 7,15,6,3,8,32, + 7,15,5,3,9,32, 7,15,5,6,8,16, 7,14,12,3,2,33, 7,14,12,5,7,1, 7,14,11,3,3,33, 7,14,10,3,4,33, 7,14,4,3,10,33, 7,14,4,6,8,17, + 7,13,13,3,1,34, 7,13,13,4,7,2, 7,13,13,5,7,2, 7,13,3,3,11,34, 7,13,3,6,8,18, 7,12,12,5,7,3, 7,12,2,3,12,35, 7,12,2,6,8,19, + 7,11,12,4,7,4, 7,11,12,5,7,4, 7,11,2,6,8,20, 7,10,11,5,7,5, 7,10,2,6,8,21, 7,9,11,5,7,6, 7,9,2,6,8,22, 7,8,11,5,7,7, + 7,8,2,4,7,7, 7,8,2,6,8,23, 7,7,11,4,7,8, 7,7,11,5,7,8, 7,7,3,4,7,8, 7,7,3,6,8,24, 7,6,10,4,7,9, 7,6,10,5,7,9, + 7,6,4,6,8,25, 7,5,9,5,7,10, 7,5,3,3,11,42, 7,5,3,6,8,26, 7,4,9,5,7,11, 7,4,3,6,8,27, 7,3,9,5,7,12, 7,3,2,3,12,44, + 7,3,2,6,8,28, 7,2,9,5,7,13, 7,2,2,6,8,29, 7,1,9,4,7,14, 7,1,9,5,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, + 7,1,5,4,7,14, 7,1,4,4,7,14, 7,1,3,4,7,14, 7,1,2,4,7,14, 7,1,2,6,8,30, 8,15,9,3,5,32, 8,15,9,5,8,0, 8,15,8,3,6,32, + 8,15,7,3,7,32, 8,15,6,3,8,32, 8,15,5,3,9,32, 8,15,5,6,7,16, 8,14,12,3,2,33, 8,14,12,5,8,1, 8,14,11,3,3,33, 8,14,10,3,4,33, + 8,14,4,3,10,33, 8,14,4,6,7,17, 8,13,13,3,1,34, 8,13,13,4,8,2, 8,13,13,5,8,2, 8,13,3,3,11,34, 8,13,3,6,7,18, 8,12,12,5,8,3, + 8,12,2,3,12,35, 8,12,2,6,7,19, 8,11,12,4,8,4, 8,11,12,5,8,4, 8,11,2,6,7,20, 8,10,11,5,8,5, 8,10,2,6,7,21, 8,9,11,5,8,6, + 8,9,2,6,7,22, 8,8,11,5,8,7, 8,8,2,4,8,7, 8,8,2,6,7,23, 8,7,11,4,8,8, 8,7,11,5,8,8, 8,7,3,4,8,8, 8,7,3,6,7,24, + 8,6,10,4,8,9, 8,6,10,5,8,9, 8,6,4,6,7,25, 8,5,9,5,8,10, 8,5,3,3,11,42, 8,5,3,6,7,26, 8,4,9,5,8,11, 8,4,3,6,7,27, + 8,3,9,5,8,12, 8,3,2,3,12,44, 8,3,2,6,7,28, 8,2,9,5,8,13, 8,2,2,6,7,29, 8,1,9,4,8,14, 8,1,9,5,8,14, 8,1,8,4,8,14, + 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,4,4,8,14, 8,1,3,4,8,14, 8,1,2,4,8,14, 8,1,2,6,7,30, 9,15,9,3,5,32, + 9,15,9,5,9,0, 9,15,8,3,6,32, 9,15,7,3,7,32, 9,15,6,3,8,32, 9,15,5,3,9,32, 9,15,5,6,6,16, 9,14,12,3,2,33, 9,14,12,5,9,1, + 9,14,11,3,3,33, 9,14,10,3,4,33, 9,14,4,3,10,33, 9,14,4,6,6,17, 9,13,13,3,1,34, 9,13,13,4,9,2, 9,13,13,5,9,2, 9,13,3,3,11,34, + 9,13,3,6,6,18, 9,12,12,5,9,3, 9,12,2,3,12,35, 9,12,2,6,6,19, 9,11,12,4,9,4, 9,11,12,5,9,4, 9,11,2,6,6,20, 9,10,11,5,9,5, + 9,10,2,6,6,21, 9,9,11,5,9,6, 9,9,2,6,6,22, 9,8,11,5,9,7, 9,8,2,4,9,7, 9,8,2,6,6,23, 9,7,11,4,9,8, 9,7,11,5,9,8, + 9,7,3,4,9,8, 9,7,3,6,6,24, 9,6,10,4,9,9, 9,6,10,5,9,9, 9,6,4,6,6,25, 9,5,9,5,9,10, 9,5,3,3,11,42, 9,5,3,6,6,26, + 9,4,9,5,9,11, 9,4,3,6,6,27, 9,3,9,5,9,12, 9,3,2,3,12,44, 9,3,2,6,6,28, 9,2,9,5,9,13, 9,2,2,6,6,29, 9,1,9,5,9,14, + 9,1,4,4,9,14, 9,1,3,4,9,14, 9,1,2,4,9,14, 9,1,2,6,6,30, 9,0,10,2,4,47, 9,0,10,3,4,47, 9,0,10,5,9,15, 9,0,9,2,5,47, + 9,0,8,2,6,47, 9,0,7,2,7,47, 9,0,6,2,8,47, 9,0,5,2,9,47, 9,0,5,6,6,31, 10,15,9,1,5,32, 10,15,9,3,5,32, 10,15,9,5,10,0, + 10,15,8,1,6,32, 10,15,8,3,6,32, 10,15,7,1,7,32, 10,15,7,3,7,32, 10,15,6,1,8,32, 10,15,6,3,8,32, 10,15,5,1,9,32, 10,15,5,3,9,32, + 10,15,5,6,5,16, 10,14,12,3,2,33, 10,14,12,5,10,1, 10,14,11,3,3,33, 10,14,10,3,4,33, 10,14,4,3,10,33, 10,14,4,6,5,17, 10,13,13,3,1,34, + 10,13,13,4,10,2, 10,13,13,5,10,2, 10,13,3,3,11,34, 10,13,3,6,5,18, 10,12,12,5,10,3, 10,12,2,3,12,35, 10,12,2,6,5,19, 10,11,12,4,10,4, + 10,11,12,5,10,4, 10,11,2,6,5,20, 10,10,11,5,10,5, 10,10,2,6,5,21, 10,9,11,5,10,6, 10,9,2,6,5,22, 10,8,11,5,10,7, 10,8,2,4,10,7, + 10,8,2,6,5,23, 10,7,11,4,10,8, 10,7,11,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,10,4,10,9, 10,6,10,5,10,9, 10,6,4,6,5,25, + 10,5,9,5,10,10, 10,5,3,3,11,42, 10,5,3,6,5,26, 10,4,9,5,10,11, 10,4,3,6,5,27, 10,3,9,5,10,12, 10,3,2,3,12,44, 10,3,2,6,5,28, + 10,2,9,5,10,13, 10,2,2,6,5,29, 10,1,9,5,10,14, 10,1,4,4,10,14, 10,1,3,4,10,14, 10,1,2,4,10,14, 10,1,2,6,5,30, 10,0,10,3,4,47, + 10,0,10,5,10,15, 10,0,5,6,5,31, 11,14,12,1,2,33, 11,14,12,3,2,33, 11,14,12,5,11,1, 11,14,11,1,3,33, 11,14,11,3,3,33, 11,14,10,1,4,33, + 11,14,10,3,4,33, 11,14,9,1,5,33, 11,14,9,3,5,33, 11,14,8,1,6,33, 11,14,8,3,6,33, 11,14,7,1,7,33, 11,14,7,3,7,33, 11,14,6,1,8,33, + 11,14,6,3,8,33, 11,14,5,1,9,33, 11,14,5,3,9,33, 11,14,4,1,10,33, 11,14,4,3,10,33, 11,14,4,6,4,17, 11,13,13,3,1,34, 11,13,13,4,11,2, + 11,13,13,5,11,2, 11,13,3,3,11,34, 11,13,3,6,4,18, 11,12,12,5,11,3, 11,12,2,3,12,35, 11,12,2,6,4,19, 11,11,12,4,11,4, 11,11,12,5,11,4, + 11,11,2,6,4,20, 11,10,11,5,11,5, 11,10,2,6,4,21, 11,9,11,5,11,6, 11,9,2,6,4,22, 11,8,11,5,11,7, 11,8,2,4,11,7, 11,8,2,6,4,23, + 11,7,11,4,11,8, 11,7,11,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,10,4,11,9, 11,6,10,5,11,9, 11,6,4,6,4,25, 11,5,9,5,11,10, + 11,5,3,3,11,42, 11,5,3,6,4,26, 11,4,9,5,11,11, 11,4,3,6,4,27, 11,3,9,5,11,12, 11,3,2,3,12,44, 11,3,2,6,4,28, 11,2,9,5,11,13, + 11,2,2,6,4,29, 11,1,9,5,11,14, 11,1,4,4,11,14, 11,1,3,4,11,14, 11,1,2,4,11,14, 11,1,2,6,4,30, 11,0,10,3,4,47, 11,0,10,5,11,15, + 11,0,5,6,4,31, 12,13,13,1,1,34, 12,13,13,3,1,34, 12,13,13,4,12,2, 12,13,13,5,12,2, 12,13,12,1,2,34, 12,13,12,3,2,34, 12,13,11,1,3,34, + 12,13,11,3,3,34, 12,13,10,1,4,34, 12,13,10,3,4,34, 12,13,9,1,5,34, 12,13,9,3,5,34, 12,13,8,1,6,34, 12,13,8,3,6,34, 12,13,7,1,7,34, + 12,13,7,3,7,34, 12,13,6,1,8,34, 12,13,6,3,8,34, 12,13,5,1,9,34, 12,13,5,3,9,34, 12,13,4,1,10,34, 12,13,4,3,10,34, 12,13,3,1,11,34, + 12,13,3,3,11,34, 12,13,3,6,3,18, 12,12,12,1,2,35, 12,12,12,5,12,3, 12,12,11,1,3,35, 12,12,10,1,4,35, 12,12,9,1,5,35, 12,12,8,1,6,35, + 12,12,7,1,7,35, 12,12,6,1,8,35, 12,12,5,1,9,35, 12,12,4,1,10,35, 12,12,3,1,11,35, 12,12,2,1,12,35, 12,12,2,3,12,35, 12,12,2,6,3,19, + 12,11,12,4,12,4, 12,11,12,5,12,4, 12,11,2,6,3,20, 12,10,11,5,12,5, 12,10,2,6,3,21, 12,9,11,5,12,6, 12,9,2,6,3,22, 12,8,11,5,12,7, + 12,8,2,4,12,7, 12,8,2,6,3,23, 12,7,11,4,12,8, 12,7,11,5,12,8, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,6,10,4,12,9, 12,6,10,5,12,9, + 12,6,4,6,3,25, 12,5,9,5,12,10, 12,5,3,3,11,42, 12,5,3,6,3,26, 12,4,9,5,12,11, 12,4,3,6,3,27, 12,3,9,5,12,12, 12,3,2,3,12,44, + 12,3,2,6,3,28, 12,2,9,5,12,13, 12,2,2,6,3,29, 12,1,9,1,5,46, 12,1,9,5,12,14, 12,1,8,1,6,46, 12,1,7,1,7,46, 12,1,6,1,8,46, + 12,1,5,1,9,46, 12,1,4,1,10,46, 12,1,4,4,12,14, 12,1,3,1,11,46, 12,1,3,4,12,14, 12,1,2,1,12,46, 12,1,2,4,12,14, 12,1,2,6,3,30, + 12,0,10,3,4,47, 12,0,10,5,12,15, 12,0,5,6,3,31, 13,11,12,1,2,36, 13,11,12,3,2,36, 13,11,12,4,13,4, 13,11,12,5,13,4, 13,11,11,1,3,36, + 13,11,11,3,3,36, 13,11,10,1,4,36, 13,11,10,3,4,36, 13,11,9,1,5,36, 13,11,9,3,5,36, 13,11,8,1,6,36, 13,11,8,3,6,36, 13,11,7,1,7,36, + 13,11,7,3,7,36, 13,11,6,1,8,36, 13,11,6,3,8,36, 13,11,5,1,9,36, 13,11,5,3,9,36, 13,11,4,1,10,36, 13,11,4,3,10,36, 13,11,3,1,11,36, + 13,11,3,3,11,36, 13,11,2,1,12,36, 13,11,2,3,12,36, 13,11,2,6,2,20, 13,10,11,5,13,5, 13,10,2,6,2,21, 13,9,11,5,13,6, 13,9,2,6,2,22, + 13,8,11,5,13,7, 13,8,2,4,13,7, 13,8,2,6,2,23, 13,7,11,1,3,40, 13,7,11,4,13,8, 13,7,11,5,13,8, 13,7,10,1,4,40, 13,7,9,1,5,40, + 13,7,8,1,6,40, 13,7,7,1,7,40, 13,7,6,1,8,40, 13,7,5,1,9,40, 13,7,4,1,10,40, 13,7,3,1,11,40, 13,7,3,4,13,8, 13,7,3,6,2,24, + 13,6,10,4,13,9, 13,6,10,5,13,9, 13,6,4,6,2,25, 13,5,9,5,13,10, 13,5,3,3,11,42, 13,5,3,6,2,26, 13,4,9,5,13,11, 13,4,3,6,2,27, + 13,3,9,5,13,12, 13,3,2,3,12,44, 13,3,2,6,2,28, 13,2,9,1,5,45, 13,2,9,4,13,13, 13,2,9,5,13,13, 13,2,8,1,6,45, 13,2,8,4,13,13, + 13,2,7,1,7,45, 13,2,7,4,13,13, 13,2,6,1,8,45, 13,2,6,4,13,13, 13,2,5,1,9,45, 13,2,5,4,13,13, 13,2,4,1,10,45, 13,2,4,4,13,13, + 13,2,3,1,11,45, 13,2,3,4,13,13, 13,2,2,1,12,45, 13,2,2,4,13,13, 13,2,2,6,2,29, 13,0,10,1,4,47, 13,0,10,3,4,47, 13,0,10,5,13,15, + 13,0,9,1,5,47, 13,0,9,3,5,47, 13,0,8,1,6,47, 13,0,8,3,6,47, 13,0,7,1,7,47, 13,0,7,3,7,47, 13,0,6,1,8,47, 13,0,6,3,8,47, + 13,0,5,1,9,47, 13,0,5,3,9,47, 13,0,5,6,2,31, 14,10,11,1,3,37, 14,10,11,3,3,37, 14,10,11,5,14,5, 14,10,10,1,4,37, 14,10,10,3,4,37, + 14,10,9,1,5,37, 14,10,9,3,5,37, 14,10,8,1,6,37, 14,10,8,3,6,37, 14,10,7,1,7,37, 14,10,7,3,7,37, 14,10,6,1,8,37, 14,10,6,3,8,37, + 14,10,5,1,9,37, 14,10,5,3,9,37, 14,10,4,1,10,37, 14,10,4,3,10,37, 14,10,3,1,11,37, 14,10,3,3,11,37, 14,10,2,1,12,37, 14,10,2,3,12,37, + 14,10,2,6,1,21, 14,9,11,1,3,38, 14,9,11,5,14,6, 14,9,10,1,4,38, 14,9,9,1,5,38, 14,9,8,1,6,38, 14,9,7,1,7,38, 14,9,6,1,8,38, + 14,9,5,1,9,38, 14,9,4,1,10,38, 14,9,3,1,11,38, 14,9,2,1,12,38, 14,9,2,6,1,22, 14,8,11,1,3,39, 14,8,11,4,14,7, 14,8,11,5,14,7, + 14,8,10,1,4,39, 14,8,10,4,14,7, 14,8,9,1,5,39, 14,8,9,4,14,7, 14,8,8,1,6,39, 14,8,8,4,14,7, 14,8,7,1,7,39, 14,8,7,4,14,7, + 14,8,6,1,8,39, 14,8,6,4,14,7, 14,8,5,1,9,39, 14,8,5,4,14,7, 14,8,4,1,10,39, 14,8,4,4,14,7, 14,8,3,1,11,39, 14,8,3,4,14,7, + 14,8,2,1,12,39, 14,8,2,4,14,7, 14,8,2,6,1,23, 14,6,10,1,4,41, 14,6,10,3,4,41, 14,6,10,4,14,9, 14,6,10,5,14,9, 14,6,9,1,5,41, + 14,6,9,3,5,41, 14,6,8,1,6,41, 14,6,8,3,6,41, 14,6,7,1,7,41, 14,6,7,3,7,41, 14,6,6,1,8,41, 14,6,6,3,8,41, 14,6,5,1,9,41, + 14,6,5,3,9,41, 14,6,4,1,10,41, 14,6,4,3,10,41, 14,6,4,6,1,25, 14,5,9,5,14,10, 14,5,3,3,11,42, 14,5,3,6,1,26, 14,4,9,5,14,11, + 14,4,3,6,1,27, 14,3,9,1,5,44, 14,3,9,4,14,12, 14,3,9,5,14,12, 14,3,8,1,6,44, 14,3,8,4,14,12, 14,3,7,1,7,44, 14,3,7,4,14,12, + 14,3,6,1,8,44, 14,3,6,4,14,12, 14,3,5,1,9,44, 14,3,5,4,14,12, 14,3,4,1,10,44, 14,3,4,4,14,12, 14,3,3,1,11,44, 14,3,3,4,14,12, + 14,3,2,1,12,44, 14,3,2,3,12,44, 14,3,2,4,14,12, 14,3,2,6,1,28, 15,5,9,1,5,42, 15,5,9,3,5,42, 15,5,9,5,15,10, 15,5,8,1,6,42, + 15,5,8,3,6,42, 15,5,7,1,7,42, 15,5,7,3,7,42, 15,5,6,1,8,42, 15,5,6,3,8,42, 15,5,5,1,9,42, 15,5,5,3,9,42, 15,5,4,1,10,42, + 15,5,4,3,10,42, 15,5,3,1,11,42, 15,5,3,3,11,42, 15,5,3,6,0,26, 15,4,9,1,5,43, 15,4,9,4,15,11, 15,4,9,5,15,11, 15,4,8,1,6,43, + 15,4,8,4,15,11, 15,4,7,1,7,43, 15,4,7,4,15,11, 15,4,6,1,8,43, 15,4,6,4,15,11, 15,4,5,1,9,43, 15,4,5,4,15,11, 15,4,4,1,10,43, + 15,4,4,4,15,11, 15,4,3,1,11,43, 15,4,3,4,15,11, 15,4,3,6,0,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1666, + count = 1126, + faces = { + 0,4,10,2,5,91, 0,4,10,3,5,91, 0,4,10,5,15,75, 0,4,9,2,6,91, 0,4,9,3,6,91, 0,4,8,2,7,91, 0,4,8,3,7,91, 0,4,7,2,8,91, + 0,4,7,3,8,91, 0,4,6,2,9,91, 0,4,6,3,9,91, 0,4,5,2,10,91, 0,4,5,3,10,91, 0,4,4,2,11,91, 0,4,4,3,11,91, 0,4,3,2,12,91, + 0,4,3,3,12,91, 0,4,3,6,15,75, 0,3,10,2,5,92, 0,3,10,4,15,76, 0,3,10,5,15,76, 0,3,9,2,6,92, 0,3,9,4,15,76, 0,3,8,2,7,92, + 0,3,8,4,15,76, 0,3,7,2,8,92, 0,3,7,4,15,76, 0,3,6,2,9,92, 0,3,6,4,15,76, 0,3,5,2,10,92, 0,3,5,4,15,76, 0,3,4,2,11,92, + 0,3,4,4,15,76, 0,3,3,2,12,92, 0,3,3,4,15,76, 0,3,2,2,13,92, 0,3,2,3,13,92, 0,3,2,4,15,76, 0,3,2,6,15,76, 1,9,12,2,3,86, + 1,9,12,3,3,86, 1,9,12,5,1,54, 1,9,11,2,4,86, 1,9,11,3,4,86, 1,9,10,2,5,86, 1,9,10,3,5,86, 1,9,9,2,6,86, 1,9,9,3,6,86, + 1,9,8,2,7,86, 1,9,8,3,7,86, 1,9,7,2,8,86, 1,9,7,3,8,86, 1,9,6,2,9,86, 1,9,6,3,9,86, 1,9,5,2,10,86, 1,9,5,3,10,86, + 1,9,4,2,11,86, 1,9,4,3,11,86, 1,9,3,2,12,86, 1,9,3,3,12,86, 1,9,3,6,14,70, 1,8,12,2,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, + 1,8,10,2,5,87, 1,8,9,2,6,87, 1,8,8,2,7,87, 1,8,7,2,8,87, 1,8,6,2,9,87, 1,8,5,2,10,87, 1,8,4,2,11,87, 1,8,3,2,12,87, + 1,8,3,6,14,71, 1,7,12,2,3,88, 1,7,12,4,1,56, 1,7,12,5,1,56, 1,7,11,2,4,88, 1,7,11,4,1,56, 1,7,10,2,5,88, 1,7,10,4,1,56, + 1,7,9,2,6,88, 1,7,9,4,1,56, 1,7,8,2,7,88, 1,7,8,4,1,56, 1,7,7,2,8,88, 1,7,7,4,1,56, 1,7,6,2,9,88, 1,7,6,4,1,56, + 1,7,5,2,10,88, 1,7,5,4,1,56, 1,7,4,2,11,88, 1,7,4,4,1,56, 1,7,3,2,12,88, 1,7,3,4,1,56, 1,7,3,6,14,72, 1,5,11,2,4,90, + 1,5,11,3,4,90, 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,10,3,5,90, 1,5,9,2,6,90, 1,5,9,3,6,90, 1,5,8,2,7,90, + 1,5,8,3,7,90, 1,5,7,2,8,90, 1,5,7,3,8,90, 1,5,6,2,9,90, 1,5,6,3,9,90, 1,5,5,2,10,90, 1,5,5,3,10,90, 1,5,4,2,11,90, + 1,5,4,3,11,90, 1,5,4,6,14,74, 1,4,10,5,1,59, 1,4,3,3,12,91, 1,4,3,6,14,75, 1,3,10,5,14,76, 1,3,2,3,13,92, 1,3,2,6,14,76, + 1,2,13,2,2,93, 1,2,13,3,2,93, 1,2,13,4,14,77, 1,2,13,5,14,77, 1,2,12,2,3,93, 1,2,12,3,3,93, 1,2,12,4,14,77, 1,2,11,2,4,93, + 1,2,11,3,4,93, 1,2,11,4,14,77, 1,2,10,2,5,93, 1,2,10,4,14,77, 1,2,9,2,6,93, 1,2,9,4,14,77, 1,2,8,2,7,93, 1,2,8,4,14,77, + 1,2,7,2,8,93, 1,2,7,4,14,77, 1,2,6,2,9,93, 1,2,6,4,14,77, 1,2,5,2,10,93, 1,2,5,4,14,77, 1,2,4,2,11,93, 1,2,4,4,14,77, + 1,2,3,2,12,93, 1,2,3,4,14,77, 1,2,2,2,13,93, 1,2,2,4,14,77, 1,2,2,6,14,77, 2,13,13,2,2,82, 2,13,13,3,2,82, 2,13,13,4,2,50, + 2,13,13,5,2,50, 2,13,12,2,3,82, 2,13,12,3,3,82, 2,13,12,4,2,50, 2,13,11,2,4,82, 2,13,11,3,4,82, 2,13,11,4,2,50, 2,13,10,2,5,82, + 2,13,10,3,5,82, 2,13,10,4,2,50, 2,13,9,2,6,82, 2,13,9,3,6,82, 2,13,9,4,2,50, 2,13,8,2,7,82, 2,13,8,3,7,82, 2,13,8,4,2,50, + 2,13,7,2,8,82, 2,13,7,3,8,82, 2,13,7,4,2,50, 2,13,6,2,9,82, 2,13,6,3,9,82, 2,13,6,4,2,50, 2,13,5,2,10,82, 2,13,5,3,10,82, + 2,13,5,4,2,50, 2,13,5,6,13,66, 2,10,13,2,2,85, 2,10,13,3,2,85, 2,10,13,4,2,53, 2,10,13,5,2,53, 2,10,12,2,3,85, 2,10,12,3,3,85, + 2,10,11,2,4,85, 2,10,11,3,4,85, 2,10,10,2,5,85, 2,10,10,3,5,85, 2,10,9,2,6,85, 2,10,9,3,6,85, 2,10,8,2,7,85, 2,10,8,3,7,85, + 2,10,7,2,8,85, 2,10,7,3,8,85, 2,10,6,2,9,85, 2,10,6,3,9,85, 2,10,5,2,10,85, 2,10,5,3,10,85, 2,10,4,2,11,85, 2,10,4,3,11,85, + 2,10,3,2,12,85, 2,10,3,3,12,85, 2,10,3,6,13,69, 2,9,12,5,2,54, 2,9,3,6,13,70, 2,8,12,5,2,55, 2,8,3,6,13,71, 2,7,12,5,2,56, + 2,7,3,4,2,56, 2,7,3,6,13,72, 2,6,12,2,3,89, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,11,2,4,89, 2,6,10,2,5,89, 2,6,9,2,6,89, + 2,6,8,2,7,89, 2,6,7,2,8,89, 2,6,6,2,9,89, 2,6,5,2,10,89, 2,6,4,2,11,89, 2,6,4,6,13,73, 2,5,11,4,2,58, 2,5,11,5,2,58, + 2,5,4,6,13,74, 2,4,10,5,2,59, 2,4,3,3,12,91, 2,4,3,6,13,75, 2,3,10,5,2,60, 2,3,2,3,13,92, 2,3,2,6,13,76, 2,2,13,3,2,93, + 2,2,13,4,2,61, 2,2,13,5,2,61, 2,2,12,3,3,93, 2,2,12,4,2,61, 2,2,11,3,4,93, 2,2,11,4,2,61, 2,2,10,4,2,61, 2,2,9,4,2,61, + 2,2,8,4,2,61, 2,2,7,4,2,61, 2,2,6,4,2,61, 2,2,5,4,2,61, 2,2,4,4,2,61, 2,2,3,4,2,61, 2,2,2,4,2,61, 2,2,2,6,13,77, + 3,13,13,3,2,82, 3,13,13,5,3,50, 3,13,12,3,3,82, 3,13,11,3,4,82, 3,13,10,3,5,82, 3,13,9,3,6,82, 3,13,8,3,7,82, 3,13,7,3,8,82, + 3,13,6,3,9,82, 3,13,5,3,10,82, 3,13,5,6,12,66, 3,12,14,2,1,83, 3,12,14,3,1,83, 3,12,14,4,3,51, 3,12,14,5,3,51, 3,12,13,2,2,83, + 3,12,12,2,3,83, 3,12,11,2,4,83, 3,12,10,2,5,83, 3,12,9,2,6,83, 3,12,8,2,7,83, 3,12,7,2,8,83, 3,12,6,2,9,83, 3,12,5,2,10,83, + 3,12,4,2,11,83, 3,12,4,3,11,83, 3,12,4,6,12,67, 3,11,13,2,2,84, 3,11,13,5,3,52, 3,11,12,2,3,84, 3,11,11,2,4,84, 3,11,10,2,5,84, + 3,11,9,2,6,84, 3,11,8,2,7,84, 3,11,7,2,8,84, 3,11,6,2,9,84, 3,11,5,2,10,84, 3,11,4,2,11,84, 3,11,3,2,12,84, 3,11,3,3,12,84, + 3,11,3,6,12,68, 3,10,13,4,3,53, 3,10,13,5,3,53, 3,10,3,6,12,69, 3,9,12,5,3,54, 3,9,3,6,12,70, 3,8,12,5,3,55, 3,8,3,6,12,71, + 3,7,12,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, 3,6,12,5,3,57, 3,6,4,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, + 3,5,4,6,12,74, 3,4,10,5,3,59, 3,4,3,3,12,91, 3,4,3,6,12,75, 3,3,10,5,3,60, 3,3,2,3,13,92, 3,3,2,6,12,76, 3,2,13,3,2,93, + 3,2,13,4,3,61, 3,2,13,5,3,61, 3,2,12,3,3,93, 3,2,11,3,4,93, 3,2,2,6,12,77, 3,1,12,2,3,94, 3,1,12,4,3,62, 3,1,12,5,3,62, + 3,1,11,2,4,94, 3,1,11,4,3,62, 3,1,10,2,5,94, 3,1,10,4,3,62, 3,1,9,2,6,94, 3,1,9,4,3,62, 3,1,8,2,7,94, 3,1,8,4,3,62, + 3,1,7,2,8,94, 3,1,7,4,3,62, 3,1,6,2,9,94, 3,1,6,4,3,62, 3,1,5,2,10,94, 3,1,5,4,3,62, 3,1,4,2,11,94, 3,1,4,4,3,62, + 3,1,3,2,12,94, 3,1,3,4,3,62, 3,1,2,2,13,94, 3,1,2,4,3,62, 3,1,2,6,3,62, 4,13,13,3,2,82, 4,13,13,5,4,50, 4,13,12,3,3,82, + 4,13,11,3,4,82, 4,13,10,3,5,82, 4,13,9,3,6,82, 4,13,8,3,7,82, 4,13,7,3,8,82, 4,13,6,3,9,82, 4,13,5,3,10,82, 4,13,5,6,11,66, + 4,12,14,3,1,83, 4,12,14,4,4,51, 4,12,14,5,4,51, 4,12,4,3,11,83, 4,12,4,6,11,67, 4,11,13,5,4,52, 4,11,3,3,12,84, 4,11,3,6,11,68, + 4,10,13,4,4,53, 4,10,13,5,4,53, 4,10,3,6,11,69, 4,9,12,5,4,54, 4,9,3,6,11,70, 4,8,12,5,4,55, 4,8,3,6,11,71, 4,7,12,5,4,56, + 4,7,3,4,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,6,11,73, 4,5,11,4,4,58, 4,5,11,5,4,58, 4,5,4,6,11,74, + 4,4,10,5,4,59, 4,4,3,3,12,91, 4,4,3,6,11,75, 4,3,10,5,4,60, 4,3,2,3,13,92, 4,3,2,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, + 4,2,13,5,4,61, 4,2,12,3,3,93, 4,2,11,3,4,93, 4,2,2,6,11,77, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,4,4,62, 4,1,10,4,4,62, + 4,1,9,4,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, 4,1,6,4,4,62, 4,1,5,4,4,62, 4,1,4,4,4,62, 4,1,3,4,4,62, 4,1,2,4,4,62, + 4,1,2,6,11,78, 5,14,10,2,5,81, 5,14,10,3,5,81, 5,14,10,5,5,49, 5,14,9,2,6,81, 5,14,9,3,6,81, 5,14,8,2,7,81, 5,14,8,3,7,81, + 5,14,7,2,8,81, 5,14,7,3,8,81, 5,14,6,2,9,81, 5,14,6,3,9,81, 5,14,6,6,10,65, 5,13,13,3,2,82, 5,13,13,5,5,50, 5,13,12,3,3,82, + 5,13,11,3,4,82, 5,13,5,3,10,82, 5,13,5,6,10,66, 5,12,14,3,1,83, 5,12,14,4,5,51, 5,12,14,5,5,51, 5,12,4,3,11,83, 5,12,4,6,10,67, + 5,11,13,5,5,52, 5,11,3,3,12,84, 5,11,3,6,10,68, 5,10,13,4,5,53, 5,10,13,5,5,53, 5,10,3,6,10,69, 5,9,12,5,5,54, 5,9,3,6,10,70, + 5,8,12,5,5,55, 5,8,3,6,10,71, 5,7,12,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,4,6,10,73, + 5,5,11,4,5,58, 5,5,11,5,5,58, 5,5,4,6,10,74, 5,4,10,5,5,59, 5,4,3,3,12,91, 5,4,3,6,10,75, 5,3,10,5,5,60, 5,3,2,3,13,92, + 5,3,2,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,12,3,3,93, 5,2,11,3,4,93, 5,2,2,6,10,77, 5,1,12,4,5,62, + 5,1,12,5,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,2,4,5,62, 5,1,2,6,10,78, 5,0,11,2,4,95, 5,0,11,5,5,63, + 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,5,2,10,95, 5,0,5,5,5,63, 5,0,4,2,11,95, 5,0,3,2,12,95, 5,0,3,6,5,63, + 6,14,10,3,5,81, 6,14,10,5,6,49, 6,14,9,3,6,81, 6,14,8,3,7,81, 6,14,7,3,8,81, 6,14,6,3,9,81, 6,14,6,6,9,65, 6,13,13,3,2,82, + 6,13,13,5,6,50, 6,13,12,3,3,82, 6,13,11,3,4,82, 6,13,5,3,10,82, 6,13,5,6,9,66, 6,12,14,3,1,83, 6,12,14,4,6,51, 6,12,14,5,6,51, + 6,12,4,3,11,83, 6,12,4,6,9,67, 6,11,13,5,6,52, 6,11,3,3,12,84, 6,11,3,6,9,68, 6,10,13,4,6,53, 6,10,13,5,6,53, 6,10,3,6,9,69, + 6,9,12,5,6,54, 6,9,3,6,9,70, 6,8,12,5,6,55, 6,8,3,6,9,71, 6,7,12,5,6,56, 6,7,3,4,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, + 6,6,12,5,6,57, 6,6,4,6,9,73, 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,4,6,9,74, 6,4,10,5,6,59, 6,4,3,3,12,91, 6,4,3,6,9,75, + 6,3,10,5,6,60, 6,3,2,3,13,92, 6,3,2,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,12,3,3,93, 6,2,11,3,4,93, + 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,2,4,6,62, 6,1,2,6,9,78, + 6,0,11,5,6,63, 6,0,9,6,9,79, 6,0,5,5,6,63, 6,0,3,6,9,79, 7,14,10,3,5,81, 7,14,10,5,7,49, 7,14,9,3,6,81, 7,14,8,3,7,81, + 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,6,6,8,65, 7,13,13,3,2,82, 7,13,13,5,7,50, 7,13,12,3,3,82, 7,13,11,3,4,82, 7,13,5,3,10,82, + 7,13,5,6,8,66, 7,12,14,3,1,83, 7,12,14,4,7,51, 7,12,14,5,7,51, 7,12,4,3,11,83, 7,12,4,6,8,67, 7,11,13,5,7,52, 7,11,3,3,12,84, + 7,11,3,6,8,68, 7,10,13,4,7,53, 7,10,13,5,7,53, 7,10,3,6,8,69, 7,9,12,5,7,54, 7,9,3,6,8,70, 7,8,12,5,7,55, 7,8,3,6,8,71, + 7,7,12,5,7,56, 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, + 7,5,4,6,8,74, 7,4,10,5,7,59, 7,4,3,3,12,91, 7,4,3,6,8,75, 7,3,10,5,7,60, 7,3,2,3,13,92, 7,3,2,6,8,76, 7,2,13,3,2,93, + 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,12,3,3,93, 7,2,11,3,4,93, 7,2,2,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, + 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,2,4,7,62, 7,1,2,6,8,78, 7,0,11,5,7,63, 7,0,9,6,8,79, 7,0,5,5,7,63, 7,0,3,6,8,79, + 8,14,10,3,5,81, 8,14,10,5,8,49, 8,14,9,3,6,81, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,6,6,7,65, 8,13,13,3,2,82, + 8,13,13,5,8,50, 8,13,12,3,3,82, 8,13,11,3,4,82, 8,13,5,3,10,82, 8,13,5,6,7,66, 8,12,14,3,1,83, 8,12,14,4,8,51, 8,12,14,5,8,51, + 8,12,4,3,11,83, 8,12,4,6,7,67, 8,11,13,5,8,52, 8,11,3,3,12,84, 8,11,3,6,7,68, 8,10,13,4,8,53, 8,10,13,5,8,53, 8,10,3,6,7,69, + 8,9,12,5,8,54, 8,9,3,6,7,70, 8,8,12,5,8,55, 8,8,3,6,7,71, 8,7,12,5,8,56, 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, + 8,6,12,5,8,57, 8,6,4,6,7,73, 8,5,11,4,8,58, 8,5,11,5,8,58, 8,5,4,6,7,74, 8,4,10,5,8,59, 8,4,3,3,12,91, 8,4,3,6,7,75, + 8,3,10,5,8,60, 8,3,2,3,13,92, 8,3,2,6,7,76, 8,2,13,3,2,93, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,12,3,3,93, 8,2,11,3,4,93, + 8,2,2,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, + 8,0,11,5,8,63, 8,0,9,6,7,79, 8,0,5,5,8,63, 8,0,3,6,7,79, 9,14,10,3,5,81, 9,14,10,5,9,49, 9,14,9,3,6,81, 9,14,8,3,7,81, + 9,14,7,3,8,81, 9,14,6,3,9,81, 9,14,6,6,6,65, 9,13,13,3,2,82, 9,13,13,5,9,50, 9,13,12,3,3,82, 9,13,11,3,4,82, 9,13,5,3,10,82, + 9,13,5,6,6,66, 9,12,14,3,1,83, 9,12,14,4,9,51, 9,12,14,5,9,51, 9,12,4,3,11,83, 9,12,4,6,6,67, 9,11,13,5,9,52, 9,11,3,3,12,84, + 9,11,3,6,6,68, 9,10,13,4,9,53, 9,10,13,5,9,53, 9,10,3,6,6,69, 9,9,12,5,9,54, 9,9,3,6,6,70, 9,8,12,5,9,55, 9,8,3,6,6,71, + 9,7,12,5,9,56, 9,7,3,4,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,4,6,6,73, 9,5,11,4,9,58, 9,5,11,5,9,58, + 9,5,4,6,6,74, 9,4,10,5,9,59, 9,4,3,3,12,91, 9,4,3,6,6,75, 9,3,10,5,9,60, 9,3,2,3,13,92, 9,3,2,6,6,76, 9,2,13,3,2,93, + 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,12,3,3,93, 9,2,11,3,4,93, 9,2,2,6,6,77, 9,1,12,4,9,62, 9,1,12,5,9,62, 9,1,8,4,9,62, + 9,1,7,4,9,62, 9,1,6,4,9,62, 9,1,2,4,9,62, 9,1,2,6,6,78, 9,0,11,5,6,79, 9,0,9,6,6,79, 9,0,5,5,6,79, 9,0,3,6,6,79, + 10,14,10,1,5,81, 10,14,10,3,5,81, 10,14,10,5,10,49, 10,14,9,1,6,81, 10,14,9,3,6,81, 10,14,8,1,7,81, 10,14,8,3,7,81, 10,14,7,1,8,81, + 10,14,7,3,8,81, 10,14,6,1,9,81, 10,14,6,3,9,81, 10,14,6,6,5,65, 10,13,13,3,2,82, 10,13,13,5,10,50, 10,13,12,3,3,82, 10,13,11,3,4,82, + 10,13,5,3,10,82, 10,13,5,6,5,66, 10,12,14,3,1,83, 10,12,14,4,10,51, 10,12,14,5,10,51, 10,12,4,3,11,83, 10,12,4,6,5,67, 10,11,13,5,10,52, + 10,11,3,3,12,84, 10,11,3,6,5,68, 10,10,13,4,10,53, 10,10,13,5,10,53, 10,10,3,6,5,69, 10,9,12,5,10,54, 10,9,3,6,5,70, 10,8,12,5,10,55, + 10,8,3,6,5,71, 10,7,12,5,10,56, 10,7,3,4,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,4,6,5,73, 10,5,11,4,10,58, + 10,5,11,5,10,58, 10,5,4,6,5,74, 10,4,10,5,10,59, 10,4,3,3,12,91, 10,4,3,6,5,75, 10,3,10,5,10,60, 10,3,2,3,13,92, 10,3,2,6,5,76, + 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,12,3,3,93, 10,2,11,3,4,93, 10,2,2,6,5,77, 10,1,12,4,5,78, 10,1,12,5,5,78, + 10,1,8,4,5,78, 10,1,7,4,5,78, 10,1,6,4,5,78, 10,1,2,4,5,78, 10,1,2,6,5,78, 10,0,11,5,5,79, 10,0,9,6,5,79, 10,0,5,5,5,79, + 10,0,3,6,5,79, 11,13,13,1,2,82, 11,13,13,3,2,82, 11,13,13,5,11,50, 11,13,12,1,3,82, 11,13,12,3,3,82, 11,13,11,1,4,82, 11,13,11,3,4,82, + 11,13,10,1,5,82, 11,13,10,3,5,82, 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, 11,13,7,1,8,82, 11,13,7,3,8,82, + 11,13,6,1,9,82, 11,13,6,3,9,82, 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,5,6,4,66, 11,12,14,3,1,83, 11,12,14,4,11,51, 11,12,14,5,11,51, + 11,12,4,3,11,83, 11,12,4,6,4,67, 11,11,13,5,11,52, 11,11,3,3,12,84, 11,11,3,6,4,68, 11,10,13,4,11,53, 11,10,13,5,11,53, 11,10,3,6,4,69, + 11,9,12,5,11,54, 11,9,3,6,4,70, 11,8,12,5,11,55, 11,8,3,6,4,71, 11,7,12,5,11,56, 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, + 11,6,12,5,11,57, 11,6,4,6,4,73, 11,5,11,4,11,58, 11,5,11,5,11,58, 11,5,4,6,4,74, 11,4,10,5,11,59, 11,4,3,3,12,91, 11,4,3,6,4,75, + 11,3,10,5,11,60, 11,3,2,3,13,92, 11,3,2,6,4,76, 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,12,3,3,93, 11,2,11,3,4,93, + 11,2,2,6,4,77, 11,1,12,4,11,62, 11,1,12,5,11,62, 11,1,8,4,11,62, 11,1,7,4,11,62, 11,1,6,4,11,62, 11,1,2,4,11,62, 11,1,2,6,4,78, + 11,0,11,1,4,95, 11,0,11,5,4,79, 11,0,10,1,5,95, 11,0,9,1,6,95, 11,0,9,6,4,79, 11,0,5,1,10,95, 11,0,5,5,4,79, 11,0,4,1,11,95, + 11,0,3,1,12,95, 11,0,3,6,4,79, 12,12,14,1,1,83, 12,12,14,3,1,83, 12,12,14,4,12,51, 12,12,14,5,12,51, 12,12,13,1,2,83, 12,12,13,3,2,83, + 12,12,12,1,3,83, 12,12,12,3,3,83, 12,12,11,1,4,83, 12,12,11,3,4,83, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, + 12,12,8,1,7,83, 12,12,8,3,7,83, 12,12,7,1,8,83, 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, + 12,12,4,1,11,83, 12,12,4,3,11,83, 12,12,4,6,3,67, 12,11,13,1,2,84, 12,11,13,5,12,52, 12,11,12,1,3,84, 12,11,11,1,4,84, 12,11,10,1,5,84, + 12,11,9,1,6,84, 12,11,8,1,7,84, 12,11,7,1,8,84, 12,11,6,1,9,84, 12,11,5,1,10,84, 12,11,4,1,11,84, 12,11,3,1,12,84, 12,11,3,3,12,84, + 12,11,3,6,3,68, 12,10,13,4,12,53, 12,10,13,5,12,53, 12,10,3,6,3,69, 12,9,12,5,12,54, 12,9,3,6,3,70, 12,8,12,5,12,55, 12,8,3,6,3,71, + 12,7,12,5,12,56, 12,7,3,4,12,56, 12,7,3,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,4,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, + 12,5,4,6,3,74, 12,4,10,5,12,59, 12,4,3,3,12,91, 12,4,3,6,3,75, 12,3,10,5,12,60, 12,3,2,3,13,92, 12,3,2,6,3,76, 12,2,13,3,2,93, + 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,3,3,93, 12,2,11,3,4,93, 12,2,2,6,3,77, 12,1,12,1,3,94, 12,1,12,4,12,62, 12,1,12,5,12,62, + 12,1,11,1,4,94, 12,1,11,4,12,62, 12,1,10,1,5,94, 12,1,10,4,12,62, 12,1,9,1,6,94, 12,1,9,4,12,62, 12,1,8,1,7,94, 12,1,8,4,12,62, + 12,1,7,1,8,94, 12,1,7,4,12,62, 12,1,6,1,9,94, 12,1,6,4,12,62, 12,1,5,1,10,94, 12,1,5,4,12,62, 12,1,4,1,11,94, 12,1,4,4,12,62, + 12,1,3,1,12,94, 12,1,3,4,12,62, 12,1,2,1,13,94, 12,1,2,4,12,62, 12,1,2,6,3,78, 13,10,13,1,2,85, 13,10,13,3,2,85, 13,10,13,4,13,53, + 13,10,13,5,13,53, 13,10,12,1,3,85, 13,10,12,3,3,85, 13,10,11,1,4,85, 13,10,11,3,4,85, 13,10,10,1,5,85, 13,10,10,3,5,85, 13,10,9,1,6,85, + 13,10,9,3,6,85, 13,10,8,1,7,85, 13,10,8,3,7,85, 13,10,7,1,8,85, 13,10,7,3,8,85, 13,10,6,1,9,85, 13,10,6,3,9,85, 13,10,5,1,10,85, + 13,10,5,3,10,85, 13,10,4,1,11,85, 13,10,4,3,11,85, 13,10,3,1,12,85, 13,10,3,3,12,85, 13,10,3,6,2,69, 13,9,12,5,13,54, 13,9,3,6,2,70, + 13,8,12,5,13,55, 13,8,3,6,2,71, 13,7,12,5,13,56, 13,7,3,4,13,56, 13,7,3,6,2,72, 13,6,12,1,3,89, 13,6,12,4,13,57, 13,6,12,5,13,57, + 13,6,11,1,4,89, 13,6,10,1,5,89, 13,6,9,1,6,89, 13,6,8,1,7,89, 13,6,7,1,8,89, 13,6,6,1,9,89, 13,6,5,1,10,89, 13,6,4,1,11,89, + 13,6,4,6,2,73, 13,5,11,4,13,58, 13,5,11,5,13,58, 13,5,4,6,2,74, 13,4,10,5,13,59, 13,4,3,3,12,91, 13,4,3,6,2,75, 13,3,10,1,5,92, + 13,3,10,5,13,60, 13,3,9,1,6,92, 13,3,8,1,7,92, 13,3,7,1,8,92, 13,3,6,1,9,92, 13,3,5,1,10,92, 13,3,4,1,11,92, 13,3,3,1,12,92, + 13,3,2,1,13,92, 13,3,2,3,13,92, 13,3,2,6,2,76, 13,2,13,1,2,93, 13,2,13,3,2,93, 13,2,13,4,13,61, 13,2,13,5,13,61, 13,2,12,1,3,93, + 13,2,12,3,3,93, 13,2,12,4,13,61, 13,2,11,1,4,93, 13,2,11,3,4,93, 13,2,11,4,13,61, 13,2,10,1,5,93, 13,2,10,4,13,61, 13,2,9,1,6,93, + 13,2,9,4,13,61, 13,2,8,1,7,93, 13,2,8,4,13,61, 13,2,7,1,8,93, 13,2,7,4,13,61, 13,2,6,1,9,93, 13,2,6,4,13,61, 13,2,5,1,10,93, + 13,2,5,4,13,61, 13,2,4,1,11,93, 13,2,4,4,13,61, 13,2,3,1,12,93, 13,2,3,4,13,61, 13,2,2,1,13,93, 13,2,2,4,13,61, 13,2,2,6,13,61, + 14,9,12,1,3,86, 14,9,12,3,3,86, 14,9,12,5,14,54, 14,9,11,1,4,86, 14,9,11,3,4,86, 14,9,10,1,5,86, 14,9,10,3,5,86, 14,9,9,1,6,86, + 14,9,9,3,6,86, 14,9,8,1,7,86, 14,9,8,3,7,86, 14,9,7,1,8,86, 14,9,7,3,8,86, 14,9,6,1,9,86, 14,9,6,3,9,86, 14,9,5,1,10,86, + 14,9,5,3,10,86, 14,9,4,1,11,86, 14,9,4,3,11,86, 14,9,3,1,12,86, 14,9,3,3,12,86, 14,9,3,6,1,70, 14,8,12,1,3,87, 14,8,12,5,14,55, + 14,8,11,1,4,87, 14,8,10,1,5,87, 14,8,9,1,6,87, 14,8,8,1,7,87, 14,8,7,1,8,87, 14,8,6,1,9,87, 14,8,5,1,10,87, 14,8,4,1,11,87, + 14,8,3,1,12,87, 14,8,3,6,1,71, 14,7,12,1,3,88, 14,7,12,4,14,56, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,11,4,14,56, 14,7,10,1,5,88, + 14,7,10,4,14,56, 14,7,9,1,6,88, 14,7,9,4,14,56, 14,7,8,1,7,88, 14,7,8,4,14,56, 14,7,7,1,8,88, 14,7,7,4,14,56, 14,7,6,1,9,88, + 14,7,6,4,14,56, 14,7,5,1,10,88, 14,7,5,4,14,56, 14,7,4,1,11,88, 14,7,4,4,14,56, 14,7,3,1,12,88, 14,7,3,4,14,56, 14,7,3,6,1,72, + 14,5,11,1,4,90, 14,5,11,3,4,90, 14,5,11,4,14,58, 14,5,11,5,14,58, 14,5,10,1,5,90, 14,5,10,3,5,90, 14,5,9,1,6,90, 14,5,9,3,6,90, + 14,5,8,1,7,90, 14,5,8,3,7,90, 14,5,7,1,8,90, 14,5,7,3,8,90, 14,5,6,1,9,90, 14,5,6,3,9,90, 14,5,5,1,10,90, 14,5,5,3,10,90, + 14,5,4,1,11,90, 14,5,4,3,11,90, 14,5,4,6,1,74, 14,4,10,1,5,91, 14,4,10,4,14,59, 14,4,10,5,14,59, 14,4,9,1,6,91, 14,4,9,4,14,59, + 14,4,8,1,7,91, 14,4,8,4,14,59, 14,4,7,1,8,91, 14,4,7,4,14,59, 14,4,6,1,9,91, 14,4,6,4,14,59, 14,4,5,1,10,91, 14,4,5,4,14,59, + 14,4,4,1,11,91, 14,4,4,4,14,59, 14,4,3,1,12,91, 14,4,3,3,12,91, 14,4,3,4,14,59, 14,4,3,6,1,75, + }, + }, + }, +} diff --git a/assets/voxels/old_amber.lua b/assets/voxels/old_amber.lua new file mode 100644 index 0000000..3a36001 --- /dev/null +++ b/assets/voxels/old_amber.lua @@ -0,0 +1,96 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "old_amber" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "old_amber", + sheetW = 16, + sheetH = 16, + size = 16, + poses = { + stand = { + frames = { 0 }, + voxels = 832, + count = 568, + faces = { + 3,8,12,2,12,5, 3,8,12,3,12,5, 3,8,12,5,3,5, 3,8,11,2,11,5, 3,8,11,3,11,5, 3,8,10,2,10,5, 3,8,10,3,10,5, 3,8,9,2,9,5, + 3,8,9,3,9,5, 3,8,8,2,8,5, 3,8,8,3,8,5, 3,8,7,2,7,5, 3,8,7,3,7,5, 3,8,6,2,6,5, 3,8,6,3,6,5, 3,8,5,2,5,5, + 3,8,5,3,5,5, 3,8,4,2,4,5, 3,8,4,3,4,5, 3,8,3,2,3,5, 3,8,3,3,3,5, 3,8,3,6,12,5, 3,7,12,2,12,6, 3,7,12,5,3,6, + 3,7,11,2,11,6, 3,7,10,2,10,6, 3,7,9,2,9,6, 3,7,8,2,8,6, 3,7,7,2,7,6, 3,7,6,2,6,6, 3,7,5,2,5,6, 3,7,4,2,4,6, + 3,7,3,2,3,6, 3,7,3,6,12,6, 3,6,12,2,12,7, 3,6,12,5,3,7, 3,6,11,2,11,7, 3,6,10,2,10,7, 3,6,9,2,9,7, 3,6,8,2,8,7, + 3,6,7,2,7,7, 3,6,6,2,6,7, 3,6,5,2,5,7, 3,6,4,2,4,7, 3,6,3,2,3,7, 3,6,3,6,12,7, 3,5,12,2,12,8, 3,5,12,5,3,8, + 3,5,11,2,11,8, 3,5,10,2,10,8, 3,5,9,2,9,8, 3,5,8,2,8,8, 3,5,7,2,7,8, 3,5,6,2,6,8, 3,5,5,2,5,8, 3,5,4,2,4,8, + 3,5,3,2,3,8, 3,5,3,6,12,8, 3,4,12,2,12,9, 3,4,12,5,3,9, 3,4,11,2,11,9, 3,4,10,2,10,9, 3,4,9,2,9,9, 3,4,8,2,8,9, + 3,4,7,2,7,9, 3,4,6,2,6,9, 3,4,5,2,5,9, 3,4,4,2,4,9, 3,4,3,2,3,9, 3,4,3,6,12,9, 3,3,12,2,12,10, 3,3,12,4,3,10, + 3,3,12,5,3,10, 3,3,11,2,11,10, 3,3,11,4,3,10, 3,3,10,2,10,10, 3,3,10,4,3,10, 3,3,9,2,9,10, 3,3,9,4,3,10, 3,3,8,2,8,10, + 3,3,8,4,3,10, 3,3,7,2,7,10, 3,3,7,4,3,10, 3,3,6,2,6,10, 3,3,6,4,3,10, 3,3,5,2,5,10, 3,3,5,4,3,10, 3,3,4,2,4,10, + 3,3,4,4,3,10, 3,3,3,2,3,10, 3,3,3,4,3,10, 3,3,3,6,12,10, 4,9,11,2,11,4, 4,9,11,3,11,4, 4,9,11,5,4,4, 4,9,10,2,10,4, + 4,9,10,3,10,4, 4,9,9,2,9,4, 4,9,9,3,9,4, 4,9,8,2,8,4, 4,9,8,3,8,4, 4,9,7,2,7,4, 4,9,7,3,7,4, 4,9,6,2,6,4, + 4,9,6,3,6,4, 4,9,5,2,5,4, 4,9,5,3,5,4, 4,9,4,2,4,4, 4,9,4,3,4,4, 4,9,4,6,11,4, 4,8,12,3,12,5, 4,8,12,5,4,5, + 4,8,3,3,3,5, 4,8,3,6,11,5, 4,7,12,5,4,6, 4,7,3,6,11,6, 4,6,12,5,4,7, 4,6,3,6,11,7, 4,5,12,5,4,8, 4,5,3,6,11,8, + 4,4,12,5,4,9, 4,4,3,6,11,9, 4,3,12,4,4,10, 4,3,12,5,4,10, 4,3,3,4,4,10, 4,3,3,6,11,10, 4,2,11,2,11,11, 4,2,11,4,4,11, + 4,2,11,5,4,11, 4,2,10,2,10,11, 4,2,10,4,4,11, 4,2,9,2,9,11, 4,2,9,4,4,11, 4,2,8,2,8,11, 4,2,8,4,4,11, 4,2,7,2,7,11, + 4,2,7,4,4,11, 4,2,6,2,6,11, 4,2,6,4,4,11, 4,2,5,2,5,11, 4,2,5,4,4,11, 4,2,4,2,4,11, 4,2,4,4,4,11, 4,2,4,6,11,11, + 5,10,10,2,10,3, 5,10,10,3,10,3, 5,10,10,5,5,3, 5,10,9,2,9,3, 5,10,9,3,9,3, 5,10,8,2,8,3, 5,10,8,3,8,3, 5,10,7,2,7,3, + 5,10,7,3,7,3, 5,10,6,2,6,3, 5,10,6,3,6,3, 5,10,5,2,5,3, 5,10,5,3,5,3, 5,10,5,6,10,3, 5,9,11,3,11,4, 5,9,11,5,5,4, + 5,9,4,3,4,4, 5,9,4,6,10,4, 5,8,12,3,12,5, 5,8,12,5,5,5, 5,8,3,3,3,5, 5,8,3,6,10,5, 5,7,12,5,5,6, 5,7,3,6,10,6, + 5,6,12,5,5,7, 5,6,3,6,10,7, 5,5,12,5,5,8, 5,5,3,6,10,8, 5,4,12,5,5,9, 5,4,3,6,10,9, 5,3,12,4,5,10, 5,3,12,5,5,10, + 5,3,3,4,5,10, 5,3,3,6,10,10, 5,2,11,4,5,11, 5,2,11,5,5,11, 5,2,4,4,5,11, 5,2,4,6,10,11, 5,1,10,2,10,12, 5,1,10,4,5,12, + 5,1,10,5,5,12, 5,1,9,2,9,12, 5,1,9,4,5,12, 5,1,8,2,8,12, 5,1,8,4,5,12, 5,1,7,2,7,12, 5,1,7,4,5,12, 5,1,6,2,6,12, + 5,1,6,4,5,12, 5,1,5,2,5,12, 5,1,5,4,5,12, 5,1,5,6,10,12, 6,11,9,2,9,2, 6,11,9,3,9,2, 6,11,9,5,6,2, 6,11,8,2,8,2, + 6,11,8,3,8,2, 6,11,7,2,7,2, 6,11,7,3,7,2, 6,11,6,2,6,2, 6,11,6,3,6,2, 6,11,6,6,9,2, 6,10,10,3,10,3, 6,10,10,5,6,3, + 6,10,5,3,5,3, 6,10,5,6,9,3, 6,9,11,3,11,4, 6,9,11,5,6,4, 6,9,4,3,4,4, 6,9,4,6,9,4, 6,8,12,3,12,5, 6,8,12,5,6,5, + 6,8,3,3,3,5, 6,8,3,6,9,5, 6,7,12,5,6,6, 6,7,3,6,9,6, 6,6,12,5,6,7, 6,6,3,6,9,7, 6,5,12,5,6,8, 6,5,3,6,9,8, + 6,4,12,5,6,9, 6,4,3,6,9,9, 6,3,12,4,6,10, 6,3,12,5,6,10, 6,3,3,4,6,10, 6,3,3,6,9,10, 6,2,11,4,6,11, 6,2,11,5,6,11, + 6,2,4,4,6,11, 6,2,4,6,9,11, 6,1,10,4,6,12, 6,1,10,5,6,12, 6,1,5,4,6,12, 6,1,5,6,9,12, 6,0,9,2,9,13, 6,0,9,5,6,13, + 6,0,8,2,8,13, 6,0,7,2,7,13, 6,0,6,2,6,13, 6,0,6,6,9,13, 7,11,9,3,9,2, 7,11,9,5,7,2, 7,11,8,3,8,2, 7,11,7,3,7,2, + 7,11,6,3,6,2, 7,11,6,6,8,2, 7,10,10,3,10,3, 7,10,10,5,7,3, 7,10,5,3,5,3, 7,10,5,6,8,3, 7,9,11,3,11,4, 7,9,11,5,7,4, + 7,9,4,3,4,4, 7,9,4,6,8,4, 7,8,12,3,12,5, 7,8,12,5,7,5, 7,8,3,3,3,5, 7,8,3,6,8,5, 7,7,12,5,7,6, 7,7,3,6,8,6, + 7,6,12,5,7,7, 7,6,3,6,8,7, 7,5,12,5,7,8, 7,5,3,6,8,8, 7,4,12,5,7,9, 7,4,3,6,8,9, 7,3,12,4,7,10, 7,3,12,5,7,10, + 7,3,3,4,7,10, 7,3,3,6,8,10, 7,2,11,4,7,11, 7,2,11,5,7,11, 7,2,4,4,7,11, 7,2,4,6,8,11, 7,1,10,4,7,12, 7,1,10,5,7,12, + 7,1,5,4,7,12, 7,1,5,6,8,12, 7,0,9,5,7,13, 7,0,6,6,8,13, 8,11,9,3,9,2, 8,11,9,5,8,2, 8,11,8,3,8,2, 8,11,7,3,7,2, + 8,11,6,3,6,2, 8,11,6,6,7,2, 8,10,10,3,10,3, 8,10,10,5,8,3, 8,10,5,3,5,3, 8,10,5,6,7,3, 8,9,11,3,11,4, 8,9,11,5,8,4, + 8,9,4,3,4,4, 8,9,4,6,7,4, 8,8,12,3,12,5, 8,8,12,5,8,5, 8,8,3,3,3,5, 8,8,3,6,7,5, 8,7,12,5,8,6, 8,7,3,6,7,6, + 8,6,12,5,8,7, 8,6,3,6,7,7, 8,5,12,5,8,8, 8,5,3,6,7,8, 8,4,12,5,8,9, 8,4,3,6,7,9, 8,3,12,4,8,10, 8,3,12,5,8,10, + 8,3,3,4,8,10, 8,3,3,6,7,10, 8,2,11,4,8,11, 8,2,11,5,8,11, 8,2,4,4,8,11, 8,2,4,6,7,11, 8,1,10,4,8,12, 8,1,10,5,8,12, + 8,1,5,4,8,12, 8,1,5,6,7,12, 8,0,9,5,8,13, 8,0,6,6,7,13, 9,11,9,1,9,2, 9,11,9,3,9,2, 9,11,9,5,9,2, 9,11,8,1,8,2, + 9,11,8,3,8,2, 9,11,7,1,7,2, 9,11,7,3,7,2, 9,11,6,1,6,2, 9,11,6,3,6,2, 9,11,6,6,6,2, 9,10,10,3,10,3, 9,10,10,5,9,3, + 9,10,5,3,5,3, 9,10,5,6,6,3, 9,9,11,3,11,4, 9,9,11,5,9,4, 9,9,4,3,4,4, 9,9,4,6,6,4, 9,8,12,3,12,5, 9,8,12,5,9,5, + 9,8,3,3,3,5, 9,8,3,6,6,5, 9,7,12,5,9,6, 9,7,3,6,6,6, 9,6,12,5,9,7, 9,6,3,6,6,7, 9,5,12,5,9,8, 9,5,3,6,6,8, + 9,4,12,5,9,9, 9,4,3,6,6,9, 9,3,12,4,9,10, 9,3,12,5,9,10, 9,3,3,4,9,10, 9,3,3,6,6,10, 9,2,11,4,9,11, 9,2,11,5,9,11, + 9,2,4,4,9,11, 9,2,4,6,6,11, 9,1,10,4,9,12, 9,1,10,5,9,12, 9,1,5,4,9,12, 9,1,5,6,6,12, 9,0,9,1,9,13, 9,0,9,5,9,13, + 9,0,8,1,8,13, 9,0,7,1,7,13, 9,0,6,1,6,13, 9,0,6,6,6,13, 10,10,10,1,10,3, 10,10,10,3,10,3, 10,10,10,5,10,3, 10,10,9,1,9,3, + 10,10,9,3,9,3, 10,10,8,1,8,3, 10,10,8,3,8,3, 10,10,7,1,7,3, 10,10,7,3,7,3, 10,10,6,1,6,3, 10,10,6,3,6,3, 10,10,5,1,5,3, + 10,10,5,3,5,3, 10,10,5,6,5,3, 10,9,11,3,11,4, 10,9,11,5,10,4, 10,9,4,3,4,4, 10,9,4,6,5,4, 10,8,12,3,12,5, 10,8,12,5,10,5, + 10,8,3,3,3,5, 10,8,3,6,5,5, 10,7,12,5,10,6, 10,7,3,6,5,6, 10,6,12,5,10,7, 10,6,3,6,5,7, 10,5,12,5,10,8, 10,5,3,6,5,8, + 10,4,12,5,10,9, 10,4,3,6,5,9, 10,3,12,4,10,10, 10,3,12,5,10,10, 10,3,3,4,10,10, 10,3,3,6,5,10, 10,2,11,4,10,11, 10,2,11,5,10,11, + 10,2,4,4,10,11, 10,2,4,6,5,11, 10,1,10,1,10,12, 10,1,10,4,10,12, 10,1,10,5,10,12, 10,1,9,1,9,12, 10,1,9,4,10,12, 10,1,8,1,8,12, + 10,1,8,4,10,12, 10,1,7,1,7,12, 10,1,7,4,10,12, 10,1,6,1,6,12, 10,1,6,4,10,12, 10,1,5,1,5,12, 10,1,5,4,10,12, 10,1,5,6,5,12, + 11,9,11,1,11,4, 11,9,11,3,11,4, 11,9,11,5,11,4, 11,9,10,1,10,4, 11,9,10,3,10,4, 11,9,9,1,9,4, 11,9,9,3,9,4, 11,9,8,1,8,4, + 11,9,8,3,8,4, 11,9,7,1,7,4, 11,9,7,3,7,4, 11,9,6,1,6,4, 11,9,6,3,6,4, 11,9,5,1,5,4, 11,9,5,3,5,4, 11,9,4,1,4,4, + 11,9,4,3,4,4, 11,9,4,6,4,4, 11,8,12,3,12,5, 11,8,12,5,11,5, 11,8,3,3,3,5, 11,8,3,6,4,5, 11,7,12,5,11,6, 11,7,3,6,4,6, + 11,6,12,5,11,7, 11,6,3,6,4,7, 11,5,12,5,11,8, 11,5,3,6,4,8, 11,4,12,5,11,9, 11,4,3,6,4,9, 11,3,12,4,11,10, 11,3,12,5,11,10, + 11,3,3,4,11,10, 11,3,3,6,4,10, 11,2,11,1,11,11, 11,2,11,4,11,11, 11,2,11,5,11,11, 11,2,10,1,10,11, 11,2,10,4,11,11, 11,2,9,1,9,11, + 11,2,9,4,11,11, 11,2,8,1,8,11, 11,2,8,4,11,11, 11,2,7,1,7,11, 11,2,7,4,11,11, 11,2,6,1,6,11, 11,2,6,4,11,11, 11,2,5,1,5,11, + 11,2,5,4,11,11, 11,2,4,1,4,11, 11,2,4,4,11,11, 11,2,4,6,4,11, 12,8,12,1,12,5, 12,8,12,3,12,5, 12,8,12,5,12,5, 12,8,11,1,11,5, + 12,8,11,3,11,5, 12,8,10,1,10,5, 12,8,10,3,10,5, 12,8,9,1,9,5, 12,8,9,3,9,5, 12,8,8,1,8,5, 12,8,8,3,8,5, 12,8,7,1,7,5, + 12,8,7,3,7,5, 12,8,6,1,6,5, 12,8,6,3,6,5, 12,8,5,1,5,5, 12,8,5,3,5,5, 12,8,4,1,4,5, 12,8,4,3,4,5, 12,8,3,1,3,5, + 12,8,3,3,3,5, 12,8,3,6,3,5, 12,7,12,1,12,6, 12,7,12,5,12,6, 12,7,11,1,11,6, 12,7,10,1,10,6, 12,7,9,1,9,6, 12,7,8,1,8,6, + 12,7,7,1,7,6, 12,7,6,1,6,6, 12,7,5,1,5,6, 12,7,4,1,4,6, 12,7,3,1,3,6, 12,7,3,6,3,6, 12,6,12,1,12,7, 12,6,12,5,12,7, + 12,6,11,1,11,7, 12,6,10,1,10,7, 12,6,9,1,9,7, 12,6,8,1,8,7, 12,6,7,1,7,7, 12,6,6,1,6,7, 12,6,5,1,5,7, 12,6,4,1,4,7, + 12,6,3,1,3,7, 12,6,3,6,3,7, 12,5,12,1,12,8, 12,5,12,5,12,8, 12,5,11,1,11,8, 12,5,10,1,10,8, 12,5,9,1,9,8, 12,5,8,1,8,8, + 12,5,7,1,7,8, 12,5,6,1,6,8, 12,5,5,1,5,8, 12,5,4,1,4,8, 12,5,3,1,3,8, 12,5,3,6,3,8, 12,4,12,1,12,9, 12,4,12,5,12,9, + 12,4,11,1,11,9, 12,4,10,1,10,9, 12,4,9,1,9,9, 12,4,8,1,8,9, 12,4,7,1,7,9, 12,4,6,1,6,9, 12,4,5,1,5,9, 12,4,4,1,4,9, + 12,4,3,1,3,9, 12,4,3,6,3,9, 12,3,12,1,12,10, 12,3,12,4,12,10, 12,3,12,5,12,10, 12,3,11,1,11,10, 12,3,11,4,12,10, 12,3,10,1,10,10, + 12,3,10,4,12,10, 12,3,9,1,9,10, 12,3,9,4,12,10, 12,3,8,1,8,10, 12,3,8,4,12,10, 12,3,7,1,7,10, 12,3,7,4,12,10, 12,3,6,1,6,10, + 12,3,6,4,12,10, 12,3,5,1,5,10, 12,3,5,4,12,10, 12,3,4,1,4,10, 12,3,4,4,12,10, 12,3,3,1,3,10, 12,3,3,4,12,10, 12,3,3,6,3,10, + }, + }, + }, +} diff --git a/assets/voxels/paper.lua b/assets/voxels/paper.lua new file mode 100644 index 0000000..a0e2756 --- /dev/null +++ b/assets/voxels/paper.lua @@ -0,0 +1,120 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "paper" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "paper", + sheetW = 16, + sheetH = 16, + size = 16, + poses = { + stand = { + frames = { 0 }, + voxels = 1661, + count = 753, + faces = { + 2,13,13,2,12,1, 2,13,13,3,12,1, 2,13,13,5,2,1, 2,13,12,2,11,1, 2,13,12,3,11,1, 2,13,11,2,10,1, 2,13,11,3,10,1, 2,13,10,2,9,1, + 2,13,10,3,9,1, 2,13,9,2,8,1, 2,13,9,3,8,1, 2,13,8,2,7,1, 2,13,8,3,7,1, 2,13,7,2,6,1, 2,13,7,3,6,1, 2,13,6,2,5,1, + 2,13,6,3,5,1, 2,13,5,2,4,1, 2,13,5,3,4,1, 2,13,4,2,3,1, 2,13,4,3,3,1, 2,13,3,2,2,1, 2,13,3,3,2,1, 2,13,3,6,12,1, + 2,12,13,2,12,2, 2,12,13,5,2,2, 2,12,12,2,11,2, 2,12,11,2,10,2, 2,12,10,2,9,2, 2,12,9,2,8,2, 2,12,8,2,7,2, 2,12,7,2,6,2, + 2,12,6,2,5,2, 2,12,5,2,4,2, 2,12,4,2,3,2, 2,12,3,2,2,2, 2,12,3,6,12,2, 2,11,13,2,12,3, 2,11,13,5,2,3, 2,11,12,2,11,3, + 2,11,11,2,10,3, 2,11,10,2,9,3, 2,11,9,2,8,3, 2,11,8,2,7,3, 2,11,7,2,6,3, 2,11,6,2,5,3, 2,11,5,2,4,3, 2,11,4,2,3,3, + 2,11,3,2,2,3, 2,11,3,6,12,3, 2,10,13,2,12,4, 2,10,13,5,2,4, 2,10,12,2,11,4, 2,10,11,2,10,4, 2,10,10,2,9,4, 2,10,9,2,8,4, + 2,10,8,2,7,4, 2,10,7,2,6,4, 2,10,6,2,5,4, 2,10,5,2,4,4, 2,10,4,2,3,4, 2,10,3,2,2,4, 2,10,3,6,12,4, 2,9,13,2,12,5, + 2,9,13,5,2,5, 2,9,12,2,11,5, 2,9,11,2,10,5, 2,9,10,2,9,5, 2,9,9,2,8,5, 2,9,8,2,7,5, 2,9,7,2,6,5, 2,9,6,2,5,5, + 2,9,5,2,4,5, 2,9,4,2,3,5, 2,9,3,2,2,5, 2,9,3,6,12,5, 2,8,13,2,12,6, 2,8,13,5,2,6, 2,8,12,2,11,6, 2,8,11,2,10,6, + 2,8,10,2,9,6, 2,8,9,2,8,6, 2,8,8,2,7,6, 2,8,7,2,6,6, 2,8,6,2,5,6, 2,8,5,2,4,6, 2,8,4,2,3,6, 2,8,3,2,2,6, + 2,8,3,6,12,6, 2,7,13,2,12,7, 2,7,13,5,2,7, 2,7,12,2,11,7, 2,7,11,2,10,7, 2,7,10,2,9,7, 2,7,9,2,8,7, 2,7,8,2,7,7, + 2,7,7,2,6,7, 2,7,6,2,5,7, 2,7,5,2,4,7, 2,7,4,2,3,7, 2,7,3,2,2,7, 2,7,3,6,12,7, 2,6,13,2,12,8, 2,6,13,5,2,8, + 2,6,12,2,11,8, 2,6,11,2,10,8, 2,6,10,2,9,8, 2,6,9,2,8,8, 2,6,8,2,7,8, 2,6,7,2,6,8, 2,6,6,2,5,8, 2,6,5,2,4,8, + 2,6,4,2,3,8, 2,6,3,2,2,8, 2,6,3,6,12,8, 2,5,13,2,12,9, 2,5,13,5,2,9, 2,5,12,2,11,9, 2,5,11,2,10,9, 2,5,10,2,9,9, + 2,5,9,2,8,9, 2,5,8,2,7,9, 2,5,7,2,6,9, 2,5,6,2,5,9, 2,5,5,2,4,9, 2,5,4,2,3,9, 2,5,3,2,2,9, 2,5,3,6,12,9, + 2,4,13,2,12,10, 2,4,13,5,2,10, 2,4,12,2,11,10, 2,4,11,2,10,10, 2,4,10,2,9,10, 2,4,9,2,8,10, 2,4,8,2,7,10, 2,4,7,2,6,10, + 2,4,6,2,5,10, 2,4,5,2,4,10, 2,4,4,2,3,10, 2,4,3,2,2,10, 2,4,3,6,12,10, 2,3,13,2,12,11, 2,3,13,5,2,11, 2,3,12,2,11,11, + 2,3,11,2,10,11, 2,3,10,2,9,11, 2,3,9,2,8,11, 2,3,8,2,7,11, 2,3,7,2,6,11, 2,3,6,2,5,11, 2,3,5,2,4,11, 2,3,4,2,3,11, + 2,3,3,2,2,11, 2,3,3,6,12,11, 2,2,13,2,12,12, 2,2,13,5,2,12, 2,2,12,2,11,12, 2,2,11,2,10,12, 2,2,10,2,9,12, 2,2,9,2,8,12, + 2,2,8,2,7,12, 2,2,7,2,6,12, 2,2,6,2,5,12, 2,2,5,2,4,12, 2,2,4,2,3,12, 2,2,3,2,2,12, 2,2,3,4,2,12, 2,2,3,6,12,12, + 2,1,13,2,12,13, 2,1,13,5,12,13, 2,1,12,2,11,13, 2,1,11,2,10,13, 2,1,10,2,9,13, 2,1,9,2,8,13, 2,1,8,2,7,13, 2,1,7,2,6,13, + 2,1,6,2,5,13, 2,1,5,2,4,13, 2,1,4,2,3,13, 2,1,4,4,12,13, 2,1,4,6,12,13, 2,0,13,2,12,14, 2,0,13,5,12,14, 2,0,12,2,11,14, + 2,0,11,2,10,14, 2,0,10,2,9,14, 2,0,9,2,8,14, 2,0,8,2,7,14, 2,0,7,2,6,14, 2,0,6,2,5,14, 2,0,5,2,4,14, 2,0,5,6,12,14, + 3,13,13,3,12,1, 3,13,13,5,3,1, 3,13,12,3,11,1, 3,13,11,3,10,1, 3,13,10,3,9,1, 3,13,9,3,8,1, 3,13,8,3,7,1, 3,13,7,3,6,1, + 3,13,6,3,5,1, 3,13,5,3,4,1, 3,13,4,3,3,1, 3,13,3,3,2,1, 3,13,3,6,11,1, 3,12,13,5,3,2, 3,12,3,6,11,2, 3,11,13,5,3,3, + 3,11,3,6,11,3, 3,10,13,5,3,4, 3,10,3,6,11,4, 3,9,13,5,3,5, 3,9,3,6,11,5, 3,8,13,5,3,6, 3,8,3,6,11,6, 3,7,13,5,3,7, + 3,7,3,6,11,7, 3,6,13,5,3,8, 3,6,3,6,11,8, 3,5,13,5,3,9, 3,5,3,6,11,9, 3,4,13,5,3,10, 3,4,3,6,11,10, 3,3,13,5,3,11, + 3,3,3,6,11,11, 3,2,13,5,3,12, 3,2,3,4,3,12, 3,2,3,6,11,12, 3,1,13,5,3,13, 3,1,4,4,3,13, 3,1,4,6,11,13, 3,0,13,5,11,14, + 3,0,5,6,11,14, 4,13,13,3,12,1, 4,13,13,5,4,1, 4,13,12,3,11,1, 4,13,11,3,10,1, 4,13,10,3,9,1, 4,13,9,3,8,1, 4,13,8,3,7,1, + 4,13,7,3,6,1, 4,13,6,3,5,1, 4,13,5,3,4,1, 4,13,4,3,3,1, 4,13,3,3,2,1, 4,13,3,6,10,1, 4,12,13,5,4,2, 4,12,3,6,10,2, + 4,11,13,5,4,3, 4,11,3,6,10,3, 4,10,13,5,4,4, 4,10,3,6,10,4, 4,9,13,5,4,5, 4,9,3,6,10,5, 4,8,13,5,4,6, 4,8,3,6,10,6, + 4,7,13,5,4,7, 4,7,3,6,10,7, 4,6,13,5,4,8, 4,6,3,6,10,8, 4,5,13,5,4,9, 4,5,3,6,10,9, 4,4,13,5,4,10, 4,4,3,6,10,10, + 4,3,13,5,4,11, 4,3,3,6,10,11, 4,2,13,5,4,12, 4,2,3,4,4,12, 4,2,3,6,10,12, 4,1,13,5,4,13, 4,1,4,4,4,13, 4,1,4,6,10,13, + 4,0,13,5,4,14, 4,0,5,6,10,14, 5,13,13,3,12,1, 5,13,13,5,5,1, 5,13,12,3,11,1, 5,13,11,3,10,1, 5,13,10,3,9,1, 5,13,9,3,8,1, + 5,13,8,3,7,1, 5,13,7,3,6,1, 5,13,6,3,5,1, 5,13,5,3,4,1, 5,13,4,3,3,1, 5,13,3,3,2,1, 5,13,3,6,9,1, 5,12,13,5,5,2, + 5,12,3,6,9,2, 5,11,13,5,5,3, 5,11,3,6,9,3, 5,10,13,5,5,4, 5,10,3,6,9,4, 5,9,13,5,5,5, 5,9,3,6,9,5, 5,8,13,5,5,6, + 5,8,3,6,9,6, 5,7,13,5,5,7, 5,7,3,6,9,7, 5,6,13,5,5,8, 5,6,3,6,9,8, 5,5,13,5,5,9, 5,5,3,6,9,9, 5,4,13,5,5,10, + 5,4,3,6,9,10, 5,3,13,5,5,11, 5,3,3,6,9,11, 5,2,13,5,5,12, 5,2,3,4,5,12, 5,2,3,6,9,12, 5,1,13,5,5,13, 5,1,4,4,5,13, + 5,1,4,6,9,13, 5,0,13,5,5,14, 5,0,5,6,9,14, 6,13,13,3,12,1, 6,13,13,5,6,1, 6,13,12,3,11,1, 6,13,11,3,10,1, 6,13,10,3,9,1, + 6,13,9,3,8,1, 6,13,8,3,7,1, 6,13,7,3,6,1, 6,13,6,3,5,1, 6,13,5,3,4,1, 6,13,4,3,3,1, 6,13,3,3,2,1, 6,13,3,6,8,1, + 6,12,13,5,6,2, 6,12,3,6,8,2, 6,11,13,5,6,3, 6,11,3,6,8,3, 6,10,13,5,6,4, 6,10,3,6,8,4, 6,9,13,5,6,5, 6,9,3,6,8,5, + 6,8,13,5,6,6, 6,8,3,6,8,6, 6,7,13,5,6,7, 6,7,3,6,8,7, 6,6,13,5,6,8, 6,6,3,6,8,8, 6,5,13,5,6,9, 6,5,3,6,8,9, + 6,4,13,5,6,10, 6,4,3,6,8,10, 6,3,13,5,6,11, 6,3,3,6,8,11, 6,2,13,5,6,12, 6,2,3,4,6,12, 6,2,3,6,8,12, 6,1,13,5,6,13, + 6,1,4,4,6,13, 6,1,4,6,8,13, 6,0,13,5,6,14, 6,0,5,6,8,14, 7,13,13,3,12,1, 7,13,13,5,7,1, 7,13,12,3,11,1, 7,13,11,3,10,1, + 7,13,10,3,9,1, 7,13,9,3,8,1, 7,13,8,3,7,1, 7,13,7,3,6,1, 7,13,6,3,5,1, 7,13,5,3,4,1, 7,13,4,3,3,1, 7,13,3,3,2,1, + 7,13,3,6,7,1, 7,12,13,5,7,2, 7,12,3,6,7,2, 7,11,13,5,7,3, 7,11,3,6,7,3, 7,10,13,5,7,4, 7,10,3,6,7,4, 7,9,13,5,7,5, + 7,9,3,6,7,5, 7,8,13,5,7,6, 7,8,3,6,7,6, 7,7,13,5,7,7, 7,7,3,6,7,7, 7,6,13,5,7,8, 7,6,3,6,7,8, 7,5,13,5,7,9, + 7,5,3,6,7,9, 7,4,13,5,7,10, 7,4,3,6,7,10, 7,3,13,5,7,11, 7,3,3,6,7,11, 7,2,13,5,7,12, 7,2,3,4,7,12, 7,2,3,6,7,12, + 7,1,13,5,7,13, 7,1,4,4,7,13, 7,1,4,6,7,13, 7,0,13,5,7,14, 7,0,5,6,7,14, 8,13,13,3,12,1, 8,13,13,5,8,1, 8,13,12,3,11,1, + 8,13,11,3,10,1, 8,13,10,3,9,1, 8,13,9,3,8,1, 8,13,8,3,7,1, 8,13,7,3,6,1, 8,13,6,3,5,1, 8,13,5,3,4,1, 8,13,4,3,3,1, + 8,13,3,3,2,1, 8,13,3,6,6,1, 8,12,13,5,8,2, 8,12,3,6,6,2, 8,11,13,5,8,3, 8,11,3,6,6,3, 8,10,13,5,8,4, 8,10,3,6,6,4, + 8,9,13,5,8,5, 8,9,3,6,6,5, 8,8,13,5,8,6, 8,8,3,6,6,6, 8,7,13,5,8,7, 8,7,3,6,6,7, 8,6,13,5,8,8, 8,6,3,6,6,8, + 8,5,13,5,8,9, 8,5,3,6,6,9, 8,4,13,5,8,10, 8,4,3,6,6,10, 8,3,13,5,8,11, 8,3,3,6,6,11, 8,2,13,5,8,12, 8,2,3,4,8,12, + 8,2,3,6,6,12, 8,1,13,5,8,13, 8,1,4,4,8,13, 8,1,4,6,6,13, 8,0,13,5,8,14, 8,0,5,6,6,14, 9,13,13,3,12,1, 9,13,13,5,9,1, + 9,13,12,3,11,1, 9,13,11,3,10,1, 9,13,10,3,9,1, 9,13,9,3,8,1, 9,13,8,3,7,1, 9,13,7,3,6,1, 9,13,6,3,5,1, 9,13,5,3,4,1, + 9,13,4,3,3,1, 9,13,3,3,2,1, 9,13,3,6,5,1, 9,12,13,5,9,2, 9,12,3,6,5,2, 9,11,13,5,9,3, 9,11,3,6,5,3, 9,10,13,5,9,4, + 9,10,3,6,5,4, 9,9,13,5,9,5, 9,9,3,6,5,5, 9,8,13,5,9,6, 9,8,3,6,5,6, 9,7,13,5,9,7, 9,7,3,6,5,7, 9,6,13,5,9,8, + 9,6,3,6,5,8, 9,5,13,5,9,9, 9,5,3,6,5,9, 9,4,13,5,9,10, 9,4,3,6,5,10, 9,3,13,5,9,11, 9,3,3,6,5,11, 9,2,13,5,9,12, + 9,2,3,4,9,12, 9,2,3,6,5,12, 9,1,13,5,9,13, 9,1,4,4,9,13, 9,1,4,6,5,13, 9,0,13,5,9,14, 9,0,5,6,5,14, 10,13,13,3,12,1, + 10,13,13,5,10,1, 10,13,12,3,11,1, 10,13,11,3,10,1, 10,13,10,3,9,1, 10,13,9,3,8,1, 10,13,8,3,7,1, 10,13,7,3,6,1, 10,13,6,3,5,1, + 10,13,5,3,4,1, 10,13,4,3,3,1, 10,13,3,3,2,1, 10,13,3,6,4,1, 10,12,13,5,10,2, 10,12,3,6,4,2, 10,11,13,5,10,3, 10,11,3,6,4,3, + 10,10,13,5,10,4, 10,10,3,6,4,4, 10,9,13,5,10,5, 10,9,3,6,4,5, 10,8,13,5,10,6, 10,8,3,6,4,6, 10,7,13,5,10,7, 10,7,3,6,4,7, + 10,6,13,5,10,8, 10,6,3,6,4,8, 10,5,13,5,10,9, 10,5,3,6,4,9, 10,4,13,5,10,10, 10,4,3,6,4,10, 10,3,13,5,10,11, 10,3,3,6,4,11, + 10,2,13,5,10,12, 10,2,3,4,10,12, 10,2,3,6,4,12, 10,1,13,5,10,13, 10,1,4,4,10,13, 10,1,4,6,4,13, 10,0,13,5,10,14, 10,0,5,6,4,14, + 11,13,13,3,12,1, 11,13,13,5,11,1, 11,13,12,3,11,1, 11,13,11,3,10,1, 11,13,10,3,9,1, 11,13,9,3,8,1, 11,13,8,3,7,1, 11,13,7,3,6,1, + 11,13,6,3,5,1, 11,13,5,3,4,1, 11,13,4,3,3,1, 11,13,3,3,2,1, 11,13,3,6,3,1, 11,12,13,5,11,2, 11,12,3,6,3,2, 11,11,13,5,11,3, + 11,11,3,6,3,3, 11,10,13,5,11,4, 11,10,3,6,3,4, 11,9,13,5,11,5, 11,9,3,6,3,5, 11,8,13,5,11,6, 11,8,3,6,3,6, 11,7,13,5,11,7, + 11,7,3,6,3,7, 11,6,13,5,11,8, 11,6,3,6,3,8, 11,5,13,5,11,9, 11,5,3,6,3,9, 11,4,13,5,11,10, 11,4,3,6,3,10, 11,3,13,5,11,11, + 11,3,3,6,3,11, 11,2,13,5,11,12, 11,2,3,4,11,12, 11,2,3,6,3,12, 11,1,13,5,11,13, 11,1,4,4,11,13, 11,1,4,6,3,13, 11,0,13,5,11,14, + 11,0,5,6,11,14, 12,13,13,1,12,1, 12,13,13,3,12,1, 12,13,13,5,12,1, 12,13,12,1,11,1, 12,13,12,3,11,1, 12,13,11,1,10,1, 12,13,11,3,10,1, + 12,13,10,1,9,1, 12,13,10,3,9,1, 12,13,9,1,8,1, 12,13,9,3,8,1, 12,13,8,1,7,1, 12,13,8,3,7,1, 12,13,7,1,6,1, 12,13,7,3,6,1, + 12,13,6,1,5,1, 12,13,6,3,5,1, 12,13,5,1,4,1, 12,13,5,3,4,1, 12,13,4,1,3,1, 12,13,4,3,3,1, 12,13,3,1,2,1, 12,13,3,3,2,1, + 12,13,3,6,2,1, 12,12,13,1,12,2, 12,12,13,5,12,2, 12,12,12,1,11,2, 12,12,11,1,10,2, 12,12,10,1,9,2, 12,12,9,1,8,2, 12,12,8,1,7,2, + 12,12,7,1,6,2, 12,12,6,1,5,2, 12,12,5,1,4,2, 12,12,4,1,3,2, 12,12,3,1,2,2, 12,12,3,6,2,2, 12,11,13,1,12,3, 12,11,13,5,12,3, + 12,11,12,1,11,3, 12,11,11,1,10,3, 12,11,10,1,9,3, 12,11,9,1,8,3, 12,11,8,1,7,3, 12,11,7,1,6,3, 12,11,6,1,5,3, 12,11,5,1,4,3, + 12,11,4,1,3,3, 12,11,3,1,2,3, 12,11,3,6,2,3, 12,10,13,1,12,4, 12,10,13,5,12,4, 12,10,12,1,11,4, 12,10,11,1,10,4, 12,10,10,1,9,4, + 12,10,9,1,8,4, 12,10,8,1,7,4, 12,10,7,1,6,4, 12,10,6,1,5,4, 12,10,5,1,4,4, 12,10,4,1,3,4, 12,10,3,1,2,4, 12,10,3,6,2,4, + 12,9,13,1,12,5, 12,9,13,5,12,5, 12,9,12,1,11,5, 12,9,11,1,10,5, 12,9,10,1,9,5, 12,9,9,1,8,5, 12,9,8,1,7,5, 12,9,7,1,6,5, + 12,9,6,1,5,5, 12,9,5,1,4,5, 12,9,4,1,3,5, 12,9,3,1,2,5, 12,9,3,6,2,5, 12,8,13,1,12,6, 12,8,13,5,12,6, 12,8,12,1,11,6, + 12,8,11,1,10,6, 12,8,10,1,9,6, 12,8,9,1,8,6, 12,8,8,1,7,6, 12,8,7,1,6,6, 12,8,6,1,5,6, 12,8,5,1,4,6, 12,8,4,1,3,6, + 12,8,3,1,2,6, 12,8,3,6,2,6, 12,7,13,1,12,7, 12,7,13,5,12,7, 12,7,12,1,11,7, 12,7,11,1,10,7, 12,7,10,1,9,7, 12,7,9,1,8,7, + 12,7,8,1,7,7, 12,7,7,1,6,7, 12,7,6,1,5,7, 12,7,5,1,4,7, 12,7,4,1,3,7, 12,7,3,1,2,7, 12,7,3,6,2,7, 12,6,13,1,12,8, + 12,6,13,5,12,8, 12,6,12,1,11,8, 12,6,11,1,10,8, 12,6,10,1,9,8, 12,6,9,1,8,8, 12,6,8,1,7,8, 12,6,7,1,6,8, 12,6,6,1,5,8, + 12,6,5,1,4,8, 12,6,4,1,3,8, 12,6,3,1,2,8, 12,6,3,6,2,8, 12,5,13,1,12,9, 12,5,13,5,12,9, 12,5,12,1,11,9, 12,5,11,1,10,9, + 12,5,10,1,9,9, 12,5,9,1,8,9, 12,5,8,1,7,9, 12,5,7,1,6,9, 12,5,6,1,5,9, 12,5,5,1,4,9, 12,5,4,1,3,9, 12,5,3,1,2,9, + 12,5,3,6,2,9, 12,4,13,1,12,10, 12,4,13,5,12,10, 12,4,12,1,11,10, 12,4,11,1,10,10, 12,4,10,1,9,10, 12,4,9,1,8,10, 12,4,8,1,7,10, + 12,4,7,1,6,10, 12,4,6,1,5,10, 12,4,5,1,4,10, 12,4,4,1,3,10, 12,4,3,1,2,10, 12,4,3,6,2,10, 12,3,13,1,12,11, 12,3,13,5,12,11, + 12,3,12,1,11,11, 12,3,11,1,10,11, 12,3,10,1,9,11, 12,3,9,1,8,11, 12,3,8,1,7,11, 12,3,7,1,6,11, 12,3,6,1,5,11, 12,3,5,1,4,11, + 12,3,4,1,3,11, 12,3,3,1,2,11, 12,3,3,6,2,11, 12,2,13,1,12,12, 12,2,13,5,12,12, 12,2,12,1,11,12, 12,2,11,1,10,12, 12,2,10,1,9,12, + 12,2,9,1,8,12, 12,2,8,1,7,12, 12,2,7,1,6,12, 12,2,6,1,5,12, 12,2,5,1,4,12, 12,2,4,1,3,12, 12,2,3,1,2,12, 12,2,3,4,12,12, + 12,2,3,6,2,12, 12,1,13,1,12,13, 12,1,13,5,12,13, 12,1,12,1,11,13, 12,1,11,1,10,13, 12,1,10,1,9,13, 12,1,9,1,8,13, 12,1,8,1,7,13, + 12,1,7,1,6,13, 12,1,6,1,5,13, 12,1,5,1,4,13, 12,1,4,1,3,13, 12,1,4,4,12,13, 12,1,4,6,12,13, 12,0,13,1,12,14, 12,0,13,5,12,14, + 12,0,12,1,11,14, 12,0,11,1,10,14, 12,0,10,1,9,14, 12,0,9,1,8,14, 12,0,8,1,7,14, 12,0,7,1,6,14, 12,0,6,1,5,14, 12,0,5,1,4,14, + 12,0,5,6,12,14, + }, + }, + }, +} diff --git a/assets/voxels/poke_ball.lua b/assets/voxels/poke_ball.lua new file mode 100644 index 0000000..b27786c --- /dev/null +++ b/assets/voxels/poke_ball.lua @@ -0,0 +1,115 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "poke_ball" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "poke_ball", + sheetW = 16, + sheetH = 16, + size = 16, + poses = { + stand = { + frames = { 0 }, + voxels = 1136, + count = 720, + faces = { + 2,7,13,2,13,6, 2,7,13,3,13,6, 2,7,13,5,2,6, 2,7,12,2,12,6, 2,7,12,3,12,6, 2,7,11,2,11,6, 2,7,11,3,11,6, 2,7,10,2,10,6, + 2,7,10,3,10,6, 2,7,9,2,9,6, 2,7,9,3,9,6, 2,7,8,2,8,6, 2,7,8,3,8,6, 2,7,7,2,7,6, 2,7,7,3,7,6, 2,7,6,2,6,6, + 2,7,6,3,6,6, 2,7,5,2,5,6, 2,7,5,3,5,6, 2,7,4,2,4,6, 2,7,4,3,4,6, 2,7,3,2,3,6, 2,7,3,3,3,6, 2,7,2,2,2,6, + 2,7,2,3,2,6, 2,7,2,6,13,6, 2,6,13,2,13,7, 2,6,13,5,2,7, 2,6,12,2,12,7, 2,6,11,2,11,7, 2,6,10,2,10,7, 2,6,9,2,9,7, + 2,6,8,2,8,7, 2,6,7,2,7,7, 2,6,6,2,6,7, 2,6,5,2,5,7, 2,6,4,2,4,7, 2,6,3,2,3,7, 2,6,2,2,2,7, 2,6,2,6,13,7, + 2,5,13,2,13,8, 2,5,13,5,2,8, 2,5,12,2,12,8, 2,5,11,2,11,8, 2,5,10,2,10,8, 2,5,9,2,9,8, 2,5,8,2,8,8, 2,5,7,2,7,8, + 2,5,6,2,6,8, 2,5,5,2,5,8, 2,5,4,2,4,8, 2,5,3,2,3,8, 2,5,2,2,2,8, 2,5,2,6,13,8, 2,4,13,2,13,9, 2,4,13,4,2,9, + 2,4,13,5,2,9, 2,4,12,2,12,9, 2,4,12,4,2,9, 2,4,11,2,11,9, 2,4,11,4,2,9, 2,4,10,2,10,9, 2,4,10,4,2,9, 2,4,9,2,9,9, + 2,4,9,4,2,9, 2,4,8,2,8,9, 2,4,8,4,2,9, 2,4,7,2,7,9, 2,4,7,4,2,9, 2,4,6,2,6,9, 2,4,6,4,2,9, 2,4,5,2,5,9, + 2,4,5,4,2,9, 2,4,4,2,4,9, 2,4,4,4,2,9, 2,4,3,2,3,9, 2,4,3,4,2,9, 2,4,2,2,2,9, 2,4,2,4,2,9, 2,4,2,6,13,9, + 3,9,12,2,12,4, 3,9,12,3,12,4, 3,9,12,5,3,4, 3,9,11,2,11,4, 3,9,11,3,11,4, 3,9,10,2,10,4, 3,9,10,3,10,4, 3,9,9,2,9,4, + 3,9,9,3,9,4, 3,9,8,2,8,4, 3,9,8,3,8,4, 3,9,7,2,7,4, 3,9,7,3,7,4, 3,9,6,2,6,4, 3,9,6,3,6,4, 3,9,5,2,5,4, + 3,9,5,3,5,4, 3,9,4,2,4,4, 3,9,4,3,4,4, 3,9,3,2,3,4, 3,9,3,3,3,4, 3,9,3,6,12,4, 3,8,12,2,12,5, 3,8,12,5,3,5, + 3,8,11,2,11,5, 3,8,10,2,10,5, 3,8,9,2,9,5, 3,8,8,2,8,5, 3,8,7,2,7,5, 3,8,6,2,6,5, 3,8,5,2,5,5, 3,8,4,2,4,5, + 3,8,3,2,3,5, 3,8,3,6,12,5, 3,7,13,3,13,6, 3,7,13,5,3,6, 3,7,2,3,2,6, 3,7,2,6,12,6, 3,6,13,5,3,7, 3,6,2,6,12,7, + 3,5,13,5,3,8, 3,5,2,6,12,8, 3,4,13,4,3,9, 3,4,13,5,3,9, 3,4,2,4,3,9, 3,4,2,6,12,9, 3,3,12,2,12,10, 3,3,12,5,3,10, + 3,3,11,2,11,10, 3,3,10,2,10,10, 3,3,9,2,9,10, 3,3,8,2,8,10, 3,3,7,2,7,10, 3,3,6,2,6,10, 3,3,5,2,5,10, 3,3,4,2,4,10, + 3,3,3,2,3,10, 3,3,3,6,12,10, 3,2,12,2,12,11, 3,2,12,4,3,11, 3,2,12,5,3,11, 3,2,11,2,11,11, 3,2,11,4,3,11, 3,2,10,2,10,11, + 3,2,10,4,3,11, 3,2,9,2,9,11, 3,2,9,4,3,11, 3,2,8,2,8,11, 3,2,8,4,3,11, 3,2,7,2,7,11, 3,2,7,4,3,11, 3,2,6,2,6,11, + 3,2,6,4,3,11, 3,2,5,2,5,11, 3,2,5,4,3,11, 3,2,4,2,4,11, 3,2,4,4,3,11, 3,2,3,2,3,11, 3,2,3,4,3,11, 3,2,3,6,12,11, + 4,10,11,2,11,3, 4,10,11,3,11,3, 4,10,11,5,4,3, 4,10,10,2,10,3, 4,10,10,3,10,3, 4,10,9,2,9,3, 4,10,9,3,9,3, 4,10,8,2,8,3, + 4,10,8,3,8,3, 4,10,7,2,7,3, 4,10,7,3,7,3, 4,10,6,2,6,3, 4,10,6,3,6,3, 4,10,5,2,5,3, 4,10,5,3,5,3, 4,10,4,2,4,3, + 4,10,4,3,4,3, 4,10,4,6,11,3, 4,9,12,3,12,4, 4,9,12,5,4,4, 4,9,3,3,3,4, 4,9,3,6,11,4, 4,8,12,5,4,5, 4,8,3,6,11,5, + 4,7,13,3,13,6, 4,7,13,5,4,6, 4,7,2,3,2,6, 4,7,2,6,11,6, 4,6,13,5,4,7, 4,6,2,6,11,7, 4,5,13,5,4,8, 4,5,2,6,11,8, + 4,4,13,4,4,9, 4,4,13,5,4,9, 4,4,2,4,4,9, 4,4,2,6,11,9, 4,3,12,5,4,10, 4,3,3,6,11,10, 4,2,12,4,4,11, 4,2,12,5,4,11, + 4,2,3,4,4,11, 4,2,3,6,11,11, 4,1,11,2,11,12, 4,1,11,4,4,12, 4,1,11,5,4,12, 4,1,10,2,10,12, 4,1,10,4,4,12, 4,1,9,2,9,12, + 4,1,9,4,4,12, 4,1,8,2,8,12, 4,1,8,4,4,12, 4,1,7,2,7,12, 4,1,7,4,4,12, 4,1,6,2,6,12, 4,1,6,4,4,12, 4,1,5,2,5,12, + 4,1,5,4,4,12, 4,1,4,2,4,12, 4,1,4,4,4,12, 4,1,4,6,11,12, 5,10,11,3,11,3, 5,10,11,5,5,3, 5,10,10,3,10,3, 5,10,9,3,9,3, + 5,10,8,3,8,3, 5,10,7,3,7,3, 5,10,6,3,6,3, 5,10,5,3,5,3, 5,10,4,3,4,3, 5,10,4,6,10,3, 5,9,12,3,12,4, 5,9,12,5,5,4, + 5,9,3,3,3,4, 5,9,3,6,10,4, 5,8,12,5,5,5, 5,8,3,6,10,5, 5,7,13,3,13,6, 5,7,13,5,5,6, 5,7,2,3,2,6, 5,7,2,6,10,6, + 5,6,13,5,5,7, 5,6,2,6,10,7, 5,5,13,5,5,8, 5,5,2,6,10,8, 5,4,13,4,5,9, 5,4,13,5,5,9, 5,4,2,4,5,9, 5,4,2,6,10,9, + 5,3,12,5,5,10, 5,3,3,6,10,10, 5,2,12,4,5,11, 5,2,12,5,5,11, 5,2,3,4,5,11, 5,2,3,6,10,11, 5,1,11,4,5,12, 5,1,11,5,5,12, + 5,1,10,4,5,12, 5,1,9,4,5,12, 5,1,8,4,5,12, 5,1,7,4,5,12, 5,1,6,4,5,12, 5,1,5,4,5,12, 5,1,4,4,5,12, 5,1,4,6,10,12, + 6,11,9,2,9,2, 6,11,9,3,9,2, 6,11,9,5,6,2, 6,11,8,2,8,2, 6,11,8,3,8,2, 6,11,7,2,7,2, 6,11,7,3,7,2, 6,11,6,2,6,2, + 6,11,6,3,6,2, 6,11,6,6,9,2, 6,10,11,3,11,3, 6,10,11,5,6,3, 6,10,10,3,10,3, 6,10,5,3,5,3, 6,10,4,3,4,3, 6,10,4,6,9,3, + 6,9,12,3,12,4, 6,9,12,5,6,4, 6,9,3,3,3,4, 6,9,3,6,9,4, 6,8,12,5,6,5, 6,8,3,6,9,5, 6,7,13,3,13,6, 6,7,13,5,6,6, + 6,7,2,3,2,6, 6,7,2,6,9,6, 6,6,13,5,6,7, 6,6,2,6,9,7, 6,5,13,5,6,8, 6,5,2,6,9,8, 6,4,13,4,6,9, 6,4,13,5,6,9, + 6,4,2,4,6,9, 6,4,2,6,9,9, 6,3,12,5,6,10, 6,3,3,6,9,10, 6,2,12,4,6,11, 6,2,12,5,6,11, 6,2,3,4,6,11, 6,2,3,6,9,11, + 6,1,11,4,6,12, 6,1,11,5,6,12, 6,1,10,4,6,12, 6,1,5,4,6,12, 6,1,4,4,6,12, 6,1,4,6,9,12, 6,0,9,2,9,13, 6,0,9,5,6,13, + 6,0,8,2,8,13, 6,0,7,2,7,13, 6,0,6,2,6,13, 6,0,6,6,9,13, 7,11,9,3,9,2, 7,11,9,5,7,2, 7,11,8,3,8,2, 7,11,7,3,7,2, + 7,11,6,3,6,2, 7,11,6,6,8,2, 7,10,11,3,11,3, 7,10,11,5,7,3, 7,10,10,3,10,3, 7,10,5,3,5,3, 7,10,4,3,4,3, 7,10,4,6,8,3, + 7,9,12,3,12,4, 7,9,12,5,7,4, 7,9,3,3,3,4, 7,9,3,6,8,4, 7,8,12,5,7,5, 7,8,3,6,8,5, 7,7,13,3,13,6, 7,7,13,5,7,6, + 7,7,2,3,2,6, 7,7,2,6,8,6, 7,6,13,5,7,7, 7,6,2,6,8,7, 7,5,13,5,7,8, 7,5,2,6,8,8, 7,4,13,4,7,9, 7,4,13,5,7,9, + 7,4,2,4,7,9, 7,4,2,6,8,9, 7,3,12,5,7,10, 7,3,3,6,8,10, 7,2,12,4,7,11, 7,2,12,5,7,11, 7,2,3,4,7,11, 7,2,3,6,8,11, + 7,1,11,4,7,12, 7,1,11,5,7,12, 7,1,10,4,7,12, 7,1,5,4,7,12, 7,1,4,4,7,12, 7,1,4,6,8,12, 7,0,9,5,7,13, 7,0,6,6,8,13, + 8,11,9,3,9,2, 8,11,9,5,8,2, 8,11,8,3,8,2, 8,11,7,3,7,2, 8,11,6,3,6,2, 8,11,6,6,7,2, 8,10,11,3,11,3, 8,10,11,5,8,3, + 8,10,10,3,10,3, 8,10,5,3,5,3, 8,10,4,3,4,3, 8,10,4,6,7,3, 8,9,12,3,12,4, 8,9,12,5,8,4, 8,9,3,3,3,4, 8,9,3,6,7,4, + 8,8,12,5,8,5, 8,8,3,6,7,5, 8,7,13,3,13,6, 8,7,13,5,8,6, 8,7,2,3,2,6, 8,7,2,6,7,6, 8,6,13,5,8,7, 8,6,2,6,7,7, + 8,5,13,5,8,8, 8,5,2,6,7,8, 8,4,13,4,8,9, 8,4,13,5,8,9, 8,4,2,4,8,9, 8,4,2,6,7,9, 8,3,12,5,8,10, 8,3,3,6,7,10, + 8,2,12,4,8,11, 8,2,12,5,8,11, 8,2,3,4,8,11, 8,2,3,6,7,11, 8,1,11,4,8,12, 8,1,11,5,8,12, 8,1,10,4,8,12, 8,1,5,4,8,12, + 8,1,4,4,8,12, 8,1,4,6,7,12, 8,0,9,5,8,13, 8,0,6,6,7,13, 9,11,9,1,9,2, 9,11,9,3,9,2, 9,11,9,5,9,2, 9,11,8,1,8,2, + 9,11,8,3,8,2, 9,11,7,1,7,2, 9,11,7,3,7,2, 9,11,6,1,6,2, 9,11,6,3,6,2, 9,11,6,6,6,2, 9,10,11,3,11,3, 9,10,11,5,9,3, + 9,10,10,3,10,3, 9,10,5,3,5,3, 9,10,4,3,4,3, 9,10,4,6,6,3, 9,9,12,3,12,4, 9,9,12,5,9,4, 9,9,3,3,3,4, 9,9,3,6,6,4, + 9,8,12,5,9,5, 9,8,3,6,6,5, 9,7,13,3,13,6, 9,7,13,5,9,6, 9,7,2,3,2,6, 9,7,2,6,6,6, 9,6,13,5,9,7, 9,6,2,6,6,7, + 9,5,13,5,9,8, 9,5,2,6,6,8, 9,4,13,4,9,9, 9,4,13,5,9,9, 9,4,2,4,9,9, 9,4,2,6,6,9, 9,3,12,5,9,10, 9,3,3,6,6,10, + 9,2,12,4,9,11, 9,2,12,5,9,11, 9,2,3,4,9,11, 9,2,3,6,6,11, 9,1,11,4,9,12, 9,1,11,5,9,12, 9,1,10,4,9,12, 9,1,5,4,9,12, + 9,1,4,4,9,12, 9,1,4,6,6,12, 9,0,9,1,9,13, 9,0,9,5,9,13, 9,0,8,1,8,13, 9,0,7,1,7,13, 9,0,6,1,6,13, 9,0,6,6,6,13, + 10,10,11,3,11,3, 10,10,11,5,10,3, 10,10,10,3,10,3, 10,10,9,3,9,3, 10,10,8,3,8,3, 10,10,7,3,7,3, 10,10,6,3,6,3, 10,10,5,3,5,3, + 10,10,4,3,4,3, 10,10,4,6,5,3, 10,9,12,3,12,4, 10,9,12,5,10,4, 10,9,3,3,3,4, 10,9,3,6,5,4, 10,8,12,5,10,5, 10,8,3,6,5,5, + 10,7,13,3,13,6, 10,7,13,5,10,6, 10,7,2,3,2,6, 10,7,2,6,5,6, 10,6,13,5,10,7, 10,6,2,6,5,7, 10,5,13,5,10,8, 10,5,2,6,5,8, + 10,4,13,4,10,9, 10,4,13,5,10,9, 10,4,2,4,10,9, 10,4,2,6,5,9, 10,3,12,5,10,10, 10,3,3,6,5,10, 10,2,12,4,10,11, 10,2,12,5,10,11, + 10,2,3,4,10,11, 10,2,3,6,5,11, 10,1,11,4,10,12, 10,1,11,5,10,12, 10,1,10,4,10,12, 10,1,9,4,10,12, 10,1,8,4,10,12, 10,1,7,4,10,12, + 10,1,6,4,10,12, 10,1,5,4,10,12, 10,1,4,4,10,12, 10,1,4,6,5,12, 11,10,11,1,11,3, 11,10,11,3,11,3, 11,10,11,5,11,3, 11,10,10,1,10,3, + 11,10,10,3,10,3, 11,10,9,1,9,3, 11,10,9,3,9,3, 11,10,8,1,8,3, 11,10,8,3,8,3, 11,10,7,1,7,3, 11,10,7,3,7,3, 11,10,6,1,6,3, + 11,10,6,3,6,3, 11,10,5,1,5,3, 11,10,5,3,5,3, 11,10,4,1,4,3, 11,10,4,3,4,3, 11,10,4,6,4,3, 11,9,12,3,12,4, 11,9,12,5,11,4, + 11,9,3,3,3,4, 11,9,3,6,4,4, 11,8,12,5,11,5, 11,8,3,6,4,5, 11,7,13,3,13,6, 11,7,13,5,11,6, 11,7,2,3,2,6, 11,7,2,6,4,6, + 11,6,13,5,11,7, 11,6,2,6,4,7, 11,5,13,5,11,8, 11,5,2,6,4,8, 11,4,13,4,11,9, 11,4,13,5,11,9, 11,4,2,4,11,9, 11,4,2,6,4,9, + 11,3,12,5,11,10, 11,3,3,6,4,10, 11,2,12,4,11,11, 11,2,12,5,11,11, 11,2,3,4,11,11, 11,2,3,6,4,11, 11,1,11,1,11,12, 11,1,11,4,11,12, + 11,1,11,5,11,12, 11,1,10,1,10,12, 11,1,10,4,11,12, 11,1,9,1,9,12, 11,1,9,4,11,12, 11,1,8,1,8,12, 11,1,8,4,11,12, 11,1,7,1,7,12, + 11,1,7,4,11,12, 11,1,6,1,6,12, 11,1,6,4,11,12, 11,1,5,1,5,12, 11,1,5,4,11,12, 11,1,4,1,4,12, 11,1,4,4,11,12, 11,1,4,6,4,12, + 12,9,12,1,12,4, 12,9,12,3,12,4, 12,9,12,5,12,4, 12,9,11,1,11,4, 12,9,11,3,11,4, 12,9,10,1,10,4, 12,9,10,3,10,4, 12,9,9,1,9,4, + 12,9,9,3,9,4, 12,9,8,1,8,4, 12,9,8,3,8,4, 12,9,7,1,7,4, 12,9,7,3,7,4, 12,9,6,1,6,4, 12,9,6,3,6,4, 12,9,5,1,5,4, + 12,9,5,3,5,4, 12,9,4,1,4,4, 12,9,4,3,4,4, 12,9,3,1,3,4, 12,9,3,3,3,4, 12,9,3,6,3,4, 12,8,12,1,12,5, 12,8,12,5,12,5, + 12,8,11,1,11,5, 12,8,10,1,10,5, 12,8,9,1,9,5, 12,8,8,1,8,5, 12,8,7,1,7,5, 12,8,6,1,6,5, 12,8,5,1,5,5, 12,8,4,1,4,5, + 12,8,3,1,3,5, 12,8,3,6,3,5, 12,7,13,3,13,6, 12,7,13,5,12,6, 12,7,2,3,2,6, 12,7,2,6,3,6, 12,6,13,5,12,7, 12,6,2,6,3,7, + 12,5,13,5,12,8, 12,5,2,6,3,8, 12,4,13,4,12,9, 12,4,13,5,12,9, 12,4,2,4,12,9, 12,4,2,6,3,9, 12,3,12,1,12,10, 12,3,12,5,12,10, + 12,3,11,1,11,10, 12,3,10,1,10,10, 12,3,9,1,9,10, 12,3,8,1,8,10, 12,3,7,1,7,10, 12,3,6,1,6,10, 12,3,5,1,5,10, 12,3,4,1,4,10, + 12,3,3,1,3,10, 12,3,3,6,3,10, 12,2,12,1,12,11, 12,2,12,4,12,11, 12,2,12,5,12,11, 12,2,11,1,11,11, 12,2,11,4,12,11, 12,2,10,1,10,11, + 12,2,10,4,12,11, 12,2,9,1,9,11, 12,2,9,4,12,11, 12,2,8,1,8,11, 12,2,8,4,12,11, 12,2,7,1,7,11, 12,2,7,4,12,11, 12,2,6,1,6,11, + 12,2,6,4,12,11, 12,2,5,1,5,11, 12,2,5,4,12,11, 12,2,4,1,4,11, 12,2,4,4,12,11, 12,2,3,1,3,11, 12,2,3,4,12,11, 12,2,3,6,3,11, + 13,7,13,1,13,6, 13,7,13,3,13,6, 13,7,13,5,13,6, 13,7,12,1,12,6, 13,7,12,3,12,6, 13,7,11,1,11,6, 13,7,11,3,11,6, 13,7,10,1,10,6, + 13,7,10,3,10,6, 13,7,9,1,9,6, 13,7,9,3,9,6, 13,7,8,1,8,6, 13,7,8,3,8,6, 13,7,7,1,7,6, 13,7,7,3,7,6, 13,7,6,1,6,6, + 13,7,6,3,6,6, 13,7,5,1,5,6, 13,7,5,3,5,6, 13,7,4,1,4,6, 13,7,4,3,4,6, 13,7,3,1,3,6, 13,7,3,3,3,6, 13,7,2,1,2,6, + 13,7,2,3,2,6, 13,7,2,6,2,6, 13,6,13,1,13,7, 13,6,13,5,13,7, 13,6,12,1,12,7, 13,6,11,1,11,7, 13,6,10,1,10,7, 13,6,9,1,9,7, + 13,6,8,1,8,7, 13,6,7,1,7,7, 13,6,6,1,6,7, 13,6,5,1,5,7, 13,6,4,1,4,7, 13,6,3,1,3,7, 13,6,2,1,2,7, 13,6,2,6,2,7, + 13,5,13,1,13,8, 13,5,13,5,13,8, 13,5,12,1,12,8, 13,5,11,1,11,8, 13,5,10,1,10,8, 13,5,9,1,9,8, 13,5,8,1,8,8, 13,5,7,1,7,8, + 13,5,6,1,6,8, 13,5,5,1,5,8, 13,5,4,1,4,8, 13,5,3,1,3,8, 13,5,2,1,2,8, 13,5,2,6,2,8, 13,4,13,1,13,9, 13,4,13,4,13,9, + 13,4,13,5,13,9, 13,4,12,1,12,9, 13,4,12,4,13,9, 13,4,11,1,11,9, 13,4,11,4,13,9, 13,4,10,1,10,9, 13,4,10,4,13,9, 13,4,9,1,9,9, + 13,4,9,4,13,9, 13,4,8,1,8,9, 13,4,8,4,13,9, 13,4,7,1,7,9, 13,4,7,4,13,9, 13,4,6,1,6,9, 13,4,6,4,13,9, 13,4,5,1,5,9, + 13,4,5,4,13,9, 13,4,4,1,4,9, 13,4,4,4,13,9, 13,4,3,1,3,9, 13,4,3,4,13,9, 13,4,2,1,2,9, 13,4,2,4,13,9, 13,4,2,6,2,9, + }, + }, + }, +} diff --git a/assets/voxels/pokedex.lua b/assets/voxels/pokedex.lua new file mode 100644 index 0000000..ef49a42 --- /dev/null +++ b/assets/voxels/pokedex.lua @@ -0,0 +1,139 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "pokedex" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "pokedex", + sheetW = 16, + sheetH = 16, + size = 16, + poses = { + stand = { + frames = { 0 }, + voxels = 2350, + count = 905, + faces = { + 0,9,15,2,15,4, 0,9,15,3,15,4, 0,9,15,5,1,4, 0,9,14,2,14,4, 0,9,14,3,14,4, 0,9,13,2,13,4, 0,9,13,3,13,4, 0,9,12,2,12,4, + 0,9,12,3,12,4, 0,9,11,2,11,4, 0,9,11,3,11,4, 0,9,10,2,10,4, 0,9,10,3,10,4, 0,9,9,2,9,4, 0,9,9,3,9,4, 0,9,8,2,8,4, + 0,9,8,3,8,4, 0,9,7,2,7,4, 0,9,7,3,7,4, 0,9,6,2,6,4, 0,9,6,3,6,4, 0,9,5,2,5,4, 0,9,5,3,5,4, 0,9,4,2,4,4, + 0,9,4,3,4,4, 0,9,3,2,3,4, 0,9,3,3,3,4, 0,9,2,2,2,4, 0,9,2,3,2,4, 0,9,1,2,1,4, 0,9,1,3,1,4, 0,9,1,6,15,4, + 0,8,15,2,15,5, 0,8,15,5,1,5, 0,8,14,2,14,5, 0,8,13,2,13,5, 0,8,12,2,12,5, 0,8,11,2,11,5, 0,8,10,2,10,5, 0,8,9,2,9,5, + 0,8,8,2,8,5, 0,8,7,2,7,5, 0,8,6,2,6,5, 0,8,5,2,5,5, 0,8,4,2,4,5, 0,8,3,2,3,5, 0,8,2,2,2,5, 0,8,1,2,1,5, + 0,8,1,6,15,5, 0,7,15,2,15,6, 0,7,15,5,1,6, 0,7,14,2,14,6, 0,7,13,2,13,6, 0,7,12,2,12,6, 0,7,11,2,11,6, 0,7,10,2,10,6, + 0,7,9,2,9,6, 0,7,8,2,8,6, 0,7,7,2,7,6, 0,7,6,2,6,6, 0,7,5,2,5,6, 0,7,4,2,4,6, 0,7,3,2,3,6, 0,7,2,2,2,6, + 0,7,1,2,1,6, 0,7,1,6,15,6, 0,6,15,2,15,7, 0,6,15,5,1,7, 0,6,14,2,14,7, 0,6,13,2,13,7, 0,6,12,2,12,7, 0,6,11,2,11,7, + 0,6,10,2,10,7, 0,6,9,2,9,7, 0,6,8,2,8,7, 0,6,7,2,7,7, 0,6,6,2,6,7, 0,6,5,2,5,7, 0,6,4,2,4,7, 0,6,3,2,3,7, + 0,6,2,2,2,7, 0,6,1,2,1,7, 0,6,1,6,15,7, 0,5,15,2,15,8, 0,5,15,5,1,8, 0,5,14,2,14,8, 0,5,13,2,13,8, 0,5,12,2,12,8, + 0,5,11,2,11,8, 0,5,10,2,10,8, 0,5,9,2,9,8, 0,5,8,2,8,8, 0,5,7,2,7,8, 0,5,6,2,6,8, 0,5,5,2,5,8, 0,5,4,2,4,8, + 0,5,3,2,3,8, 0,5,2,2,2,8, 0,5,1,2,1,8, 0,5,1,6,15,8, 0,4,15,2,15,9, 0,4,15,5,1,9, 0,4,14,2,14,9, 0,4,13,2,13,9, + 0,4,12,2,12,9, 0,4,11,2,11,9, 0,4,10,2,10,9, 0,4,9,2,9,9, 0,4,8,2,8,9, 0,4,7,2,7,9, 0,4,6,2,6,9, 0,4,5,2,5,9, + 0,4,4,2,4,9, 0,4,3,2,3,9, 0,4,2,2,2,9, 0,4,1,2,1,9, 0,4,1,6,15,9, 0,3,15,2,15,10, 0,3,15,5,1,10, 0,3,14,2,14,10, + 0,3,13,2,13,10, 0,3,12,2,12,10, 0,3,11,2,11,10, 0,3,10,2,10,10, 0,3,9,2,9,10, 0,3,8,2,8,10, 0,3,7,2,7,10, 0,3,6,2,6,10, + 0,3,5,2,5,10, 0,3,4,2,4,10, 0,3,3,2,3,10, 0,3,2,2,2,10, 0,3,1,2,1,10, 0,3,1,6,15,10, 0,2,15,2,15,11, 0,2,15,5,1,11, + 0,2,14,2,14,11, 0,2,13,2,13,11, 0,2,12,2,12,11, 0,2,11,2,11,11, 0,2,10,2,10,11, 0,2,9,2,9,11, 0,2,8,2,8,11, 0,2,7,2,7,11, + 0,2,6,2,6,11, 0,2,5,2,5,11, 0,2,4,2,4,11, 0,2,3,2,3,11, 0,2,2,2,2,11, 0,2,1,2,1,11, 0,2,1,6,15,11, 0,1,15,2,15,12, + 0,1,15,5,1,12, 0,1,14,2,14,12, 0,1,13,2,13,12, 0,1,12,2,12,12, 0,1,11,2,11,12, 0,1,10,2,10,12, 0,1,9,2,9,12, 0,1,8,2,8,12, + 0,1,7,2,7,12, 0,1,6,2,6,12, 0,1,5,2,5,12, 0,1,4,2,4,12, 0,1,3,2,3,12, 0,1,2,2,2,12, 0,1,1,2,1,12, 0,1,1,6,15,12, + 0,0,15,2,15,13, 0,0,15,5,1,13, 0,0,14,2,14,13, 0,0,13,2,13,13, 0,0,12,2,12,13, 0,0,11,2,11,13, 0,0,10,2,10,13, 0,0,9,2,9,13, + 0,0,8,2,8,13, 0,0,7,2,7,13, 0,0,6,2,6,13, 0,0,5,2,5,13, 0,0,4,2,4,13, 0,0,3,2,3,13, 0,0,2,2,2,13, 0,0,1,2,1,13, + 0,0,1,6,15,13, 1,10,14,2,14,3, 1,10,14,3,14,3, 1,10,14,5,2,3, 1,10,13,2,13,3, 1,10,13,3,13,3, 1,10,12,2,12,3, 1,10,12,3,12,3, + 1,10,11,2,11,3, 1,10,11,3,11,3, 1,10,10,2,10,3, 1,10,10,3,10,3, 1,10,10,6,14,3, 1,10,6,2,6,3, 1,10,6,3,6,3, 1,10,6,5,2,3, + 1,10,5,2,5,3, 1,10,5,3,5,3, 1,10,4,2,4,3, 1,10,4,3,4,3, 1,10,3,2,3,3, 1,10,3,3,3,3, 1,10,2,2,2,3, 1,10,2,3,2,3, + 1,10,2,6,14,3, 1,9,15,3,15,4, 1,9,15,5,2,4, 1,9,9,3,9,4, 1,9,8,3,8,4, 1,9,7,3,7,4, 1,9,1,3,1,4, 1,9,1,6,14,4, + 1,8,15,5,2,5, 1,8,1,6,14,5, 1,7,15,5,2,6, 1,7,1,6,14,6, 1,6,15,5,2,7, 1,6,1,6,14,7, 1,5,15,5,2,8, 1,5,1,6,14,8, + 1,4,15,5,2,9, 1,4,1,6,14,9, 1,3,15,5,2,10, 1,3,1,6,14,10, 1,2,15,5,2,11, 1,2,1,6,14,11, 1,1,15,5,2,12, 1,1,1,6,14,12, + 1,0,15,5,2,13, 1,0,1,6,14,13, 2,10,14,3,14,3, 2,10,14,5,3,3, 2,10,13,3,13,3, 2,10,12,3,12,3, 2,10,11,3,11,3, 2,10,10,3,10,3, + 2,10,10,6,13,3, 2,10,6,3,6,3, 2,10,6,5,3,3, 2,10,5,3,5,3, 2,10,4,3,4,3, 2,10,3,3,3,3, 2,10,2,3,2,3, 2,10,2,6,13,3, + 2,9,15,3,15,4, 2,9,15,5,3,4, 2,9,9,3,9,4, 2,9,8,3,8,4, 2,9,7,3,7,4, 2,9,1,3,1,4, 2,9,1,6,13,4, 2,8,15,5,3,5, + 2,8,1,6,13,5, 2,7,15,5,3,6, 2,7,1,6,13,6, 2,6,15,5,3,7, 2,6,1,6,13,7, 2,5,15,5,3,8, 2,5,1,6,13,8, 2,4,15,5,3,9, + 2,4,1,6,13,9, 2,3,15,5,3,10, 2,3,1,6,13,10, 2,2,15,5,3,11, 2,2,1,6,13,11, 2,1,15,5,3,12, 2,1,1,6,13,12, 2,0,15,5,3,13, + 2,0,1,6,13,13, 3,10,14,3,14,3, 3,10,14,5,4,3, 3,10,13,3,13,3, 3,10,12,3,12,3, 3,10,11,3,11,3, 3,10,10,3,10,3, 3,10,10,6,12,3, + 3,10,6,3,6,3, 3,10,6,5,4,3, 3,10,5,3,5,3, 3,10,4,3,4,3, 3,10,3,3,3,3, 3,10,2,3,2,3, 3,10,2,6,12,3, 3,9,15,3,15,4, + 3,9,15,5,4,4, 3,9,9,3,9,4, 3,9,8,3,8,4, 3,9,7,3,7,4, 3,9,1,3,1,4, 3,9,1,6,12,4, 3,8,15,5,4,5, 3,8,1,6,12,5, + 3,7,15,5,4,6, 3,7,1,6,12,6, 3,6,15,5,4,7, 3,6,1,6,12,7, 3,5,15,5,4,8, 3,5,1,6,12,8, 3,4,15,5,4,9, 3,4,1,6,12,9, + 3,3,15,5,4,10, 3,3,1,6,12,10, 3,2,15,5,4,11, 3,2,1,6,12,11, 3,1,15,5,4,12, 3,1,1,6,12,12, 3,0,15,5,4,13, 3,0,1,6,12,13, + 4,10,14,3,14,3, 4,10,14,5,5,3, 4,10,13,3,13,3, 4,10,12,3,12,3, 4,10,11,3,11,3, 4,10,10,3,10,3, 4,10,10,6,11,3, 4,10,6,3,6,3, + 4,10,6,5,5,3, 4,10,5,3,5,3, 4,10,4,3,4,3, 4,10,3,3,3,3, 4,10,2,3,2,3, 4,10,2,6,11,3, 4,9,15,3,15,4, 4,9,15,5,5,4, + 4,9,9,3,9,4, 4,9,8,3,8,4, 4,9,7,3,7,4, 4,9,1,3,1,4, 4,9,1,6,11,4, 4,8,15,5,5,5, 4,8,1,6,11,5, 4,7,15,5,5,6, + 4,7,1,6,11,6, 4,6,15,5,5,7, 4,6,1,6,11,7, 4,5,15,5,5,8, 4,5,1,6,11,8, 4,4,15,5,5,9, 4,4,1,6,11,9, 4,3,15,5,5,10, + 4,3,1,6,11,10, 4,2,15,5,5,11, 4,2,1,6,11,11, 4,1,15,5,5,12, 4,1,1,6,11,12, 4,0,15,5,5,13, 4,0,1,6,11,13, 5,10,14,1,14,3, + 5,10,14,3,14,3, 5,10,14,5,6,3, 5,10,13,1,13,3, 5,10,13,3,13,3, 5,10,12,1,12,3, 5,10,12,3,12,3, 5,10,11,1,11,3, 5,10,11,3,11,3, + 5,10,10,1,10,3, 5,10,10,3,10,3, 5,10,10,6,10,3, 5,10,6,1,6,3, 5,10,6,3,6,3, 5,10,6,5,6,3, 5,10,5,1,5,3, 5,10,5,3,5,3, + 5,10,4,1,4,3, 5,10,4,3,4,3, 5,10,3,1,3,3, 5,10,3,3,3,3, 5,10,2,1,2,3, 5,10,2,3,2,3, 5,10,2,6,10,3, 5,9,15,3,15,4, + 5,9,15,5,6,4, 5,9,9,3,9,4, 5,9,8,3,8,4, 5,9,7,3,7,4, 5,9,1,3,1,4, 5,9,1,6,10,4, 5,8,15,5,6,5, 5,8,1,6,10,5, + 5,7,15,5,6,6, 5,7,1,6,10,6, 5,6,15,5,6,7, 5,6,1,6,10,7, 5,5,15,5,6,8, 5,5,1,6,10,8, 5,4,15,5,6,9, 5,4,1,6,10,9, + 5,3,15,5,6,10, 5,3,1,6,10,10, 5,2,15,5,6,11, 5,2,1,6,10,11, 5,1,15,5,6,12, 5,1,1,6,10,12, 5,0,15,5,6,13, 5,0,1,6,10,13, + 6,9,15,3,15,4, 6,9,15,5,7,4, 6,9,14,3,14,4, 6,9,13,3,13,4, 6,9,12,3,12,4, 6,9,11,3,11,4, 6,9,10,3,10,4, 6,9,9,3,9,4, + 6,9,8,3,8,4, 6,9,7,3,7,4, 6,9,6,3,6,4, 6,9,5,3,5,4, 6,9,4,3,4,4, 6,9,3,3,3,4, 6,9,2,3,2,4, 6,9,1,3,1,4, + 6,9,1,6,9,4, 6,8,15,5,7,5, 6,8,1,6,9,5, 6,7,15,5,7,6, 6,7,1,6,9,6, 6,6,15,5,7,7, 6,6,1,6,9,7, 6,5,15,5,7,8, + 6,5,1,6,9,8, 6,4,15,5,7,9, 6,4,1,6,9,9, 6,3,15,5,7,10, 6,3,1,6,9,10, 6,2,15,5,7,11, 6,2,1,6,9,11, 6,1,15,5,7,12, + 6,1,1,6,9,12, 6,0,15,5,7,13, 6,0,1,6,9,13, 7,9,15,3,15,4, 7,9,15,5,8,4, 7,9,14,3,14,4, 7,9,13,3,13,4, 7,9,12,3,12,4, + 7,9,11,3,11,4, 7,9,10,3,10,4, 7,9,9,3,9,4, 7,9,8,3,8,4, 7,9,7,3,7,4, 7,9,6,3,6,4, 7,9,5,3,5,4, 7,9,4,3,4,4, + 7,9,3,3,3,4, 7,9,2,3,2,4, 7,9,1,3,1,4, 7,9,1,6,8,4, 7,8,15,5,8,5, 7,8,1,6,8,5, 7,7,15,5,8,6, 7,7,1,6,8,6, + 7,6,15,5,8,7, 7,6,1,6,8,7, 7,5,15,5,8,8, 7,5,1,6,8,8, 7,4,15,5,8,9, 7,4,1,6,8,9, 7,3,15,5,8,10, 7,3,1,6,8,10, + 7,2,15,5,8,11, 7,2,1,6,8,11, 7,1,15,5,8,12, 7,1,1,6,8,12, 7,0,15,5,8,13, 7,0,1,6,8,13, 8,9,15,3,15,4, 8,9,15,5,9,4, + 8,9,14,3,14,4, 8,9,13,3,13,4, 8,9,12,3,12,4, 8,9,11,3,11,4, 8,9,10,3,10,4, 8,9,9,3,9,4, 8,9,8,3,8,4, 8,9,7,3,7,4, + 8,9,6,3,6,4, 8,9,5,3,5,4, 8,9,4,3,4,4, 8,9,3,3,3,4, 8,9,2,3,2,4, 8,9,1,3,1,4, 8,9,1,6,7,4, 8,8,15,5,9,5, + 8,8,1,6,7,5, 8,7,15,5,9,6, 8,7,1,6,7,6, 8,6,15,5,9,7, 8,6,1,6,7,7, 8,5,15,5,9,8, 8,5,1,6,7,8, 8,4,15,5,9,9, + 8,4,1,6,7,9, 8,3,15,5,9,10, 8,3,1,6,7,10, 8,2,15,5,9,11, 8,2,1,6,7,11, 8,1,15,5,9,12, 8,1,1,6,7,12, 8,0,15,5,9,13, + 8,0,1,6,7,13, 9,10,14,2,14,3, 9,10,14,3,14,3, 9,10,14,5,10,3, 9,10,13,2,13,3, 9,10,13,3,13,3, 9,10,12,2,12,3, 9,10,12,3,12,3, + 9,10,11,2,11,3, 9,10,11,3,11,3, 9,10,10,2,10,3, 9,10,10,3,10,3, 9,10,10,6,6,3, 9,10,6,2,6,3, 9,10,6,3,6,3, 9,10,6,5,10,3, + 9,10,5,2,5,3, 9,10,5,3,5,3, 9,10,4,2,4,3, 9,10,4,3,4,3, 9,10,3,2,3,3, 9,10,3,3,3,3, 9,10,2,2,2,3, 9,10,2,3,2,3, + 9,10,2,6,6,3, 9,9,15,3,15,4, 9,9,15,5,10,4, 9,9,9,3,9,4, 9,9,8,3,8,4, 9,9,7,3,7,4, 9,9,1,3,1,4, 9,9,1,6,6,4, + 9,8,15,5,10,5, 9,8,1,6,6,5, 9,7,15,5,10,6, 9,7,1,6,6,6, 9,6,15,5,10,7, 9,6,1,6,6,7, 9,5,15,5,10,8, 9,5,1,6,6,8, + 9,4,15,5,10,9, 9,4,1,6,6,9, 9,3,15,5,10,10, 9,3,1,6,6,10, 9,2,15,5,10,11, 9,2,1,6,6,11, 9,1,15,5,10,12, 9,1,1,6,6,12, + 9,0,15,5,10,13, 9,0,1,6,6,13, 10,10,14,3,14,3, 10,10,14,5,11,3, 10,10,13,3,13,3, 10,10,12,3,12,3, 10,10,11,3,11,3, 10,10,10,3,10,3, + 10,10,10,6,5,3, 10,10,6,3,6,3, 10,10,6,5,11,3, 10,10,5,3,5,3, 10,10,4,3,4,3, 10,10,3,3,3,3, 10,10,2,3,2,3, 10,10,2,6,5,3, + 10,9,15,3,15,4, 10,9,15,5,11,4, 10,9,9,3,9,4, 10,9,8,3,8,4, 10,9,7,3,7,4, 10,9,1,3,1,4, 10,9,1,6,5,4, 10,8,15,5,11,5, + 10,8,1,6,5,5, 10,7,15,5,11,6, 10,7,1,6,5,6, 10,6,15,5,11,7, 10,6,1,6,5,7, 10,5,15,5,11,8, 10,5,1,6,5,8, 10,4,15,5,11,9, + 10,4,1,6,5,9, 10,3,15,5,11,10, 10,3,1,6,5,10, 10,2,15,5,11,11, 10,2,1,6,5,11, 10,1,15,5,11,12, 10,1,1,6,5,12, 10,0,15,5,11,13, + 10,0,1,6,5,13, 11,10,14,3,14,3, 11,10,14,5,12,3, 11,10,13,3,13,3, 11,10,12,3,12,3, 11,10,11,3,11,3, 11,10,10,3,10,3, 11,10,10,6,4,3, + 11,10,6,3,6,3, 11,10,6,5,12,3, 11,10,5,3,5,3, 11,10,4,3,4,3, 11,10,3,3,3,3, 11,10,2,3,2,3, 11,10,2,6,4,3, 11,9,15,3,15,4, + 11,9,15,5,12,4, 11,9,9,3,9,4, 11,9,8,3,8,4, 11,9,7,3,7,4, 11,9,1,3,1,4, 11,9,1,6,4,4, 11,8,15,5,12,5, 11,8,1,6,4,5, + 11,7,15,5,12,6, 11,7,1,6,4,6, 11,6,15,5,12,7, 11,6,1,6,4,7, 11,5,15,5,12,8, 11,5,1,6,4,8, 11,4,15,5,12,9, 11,4,1,6,4,9, + 11,3,15,5,12,10, 11,3,1,6,4,10, 11,2,15,5,12,11, 11,2,1,6,4,11, 11,1,15,5,12,12, 11,1,1,6,4,12, 11,0,15,5,12,13, 11,0,1,6,4,13, + 12,10,14,3,14,3, 12,10,14,5,13,3, 12,10,13,3,13,3, 12,10,12,3,12,3, 12,10,11,3,11,3, 12,10,10,3,10,3, 12,10,10,6,3,3, 12,10,6,3,6,3, + 12,10,6,5,13,3, 12,10,5,3,5,3, 12,10,4,3,4,3, 12,10,3,3,3,3, 12,10,2,3,2,3, 12,10,2,6,3,3, 12,9,15,3,15,4, 12,9,15,5,13,4, + 12,9,9,3,9,4, 12,9,8,3,8,4, 12,9,7,3,7,4, 12,9,1,3,1,4, 12,9,1,6,3,4, 12,8,15,5,13,5, 12,8,1,6,3,5, 12,7,15,5,13,6, + 12,7,1,6,3,6, 12,6,15,5,13,7, 12,6,1,6,3,7, 12,5,15,5,13,8, 12,5,1,6,3,8, 12,4,15,5,13,9, 12,4,1,6,3,9, 12,3,15,5,13,10, + 12,3,1,6,3,10, 12,2,15,5,13,11, 12,2,1,6,3,11, 12,1,15,5,13,12, 12,1,1,6,3,12, 12,0,15,5,13,13, 12,0,1,6,3,13, 13,10,14,1,14,3, + 13,10,14,3,14,3, 13,10,14,5,14,3, 13,10,13,1,13,3, 13,10,13,3,13,3, 13,10,12,1,12,3, 13,10,12,3,12,3, 13,10,11,1,11,3, 13,10,11,3,11,3, + 13,10,10,1,10,3, 13,10,10,3,10,3, 13,10,10,6,2,3, 13,10,6,1,6,3, 13,10,6,3,6,3, 13,10,6,5,14,3, 13,10,5,1,5,3, 13,10,5,3,5,3, + 13,10,4,1,4,3, 13,10,4,3,4,3, 13,10,3,1,3,3, 13,10,3,3,3,3, 13,10,2,1,2,3, 13,10,2,3,2,3, 13,10,2,6,2,3, 13,9,15,3,15,4, + 13,9,15,5,14,4, 13,9,9,3,9,4, 13,9,8,3,8,4, 13,9,7,3,7,4, 13,9,1,3,1,4, 13,9,1,6,2,4, 13,8,15,5,14,5, 13,8,1,6,2,5, + 13,7,15,5,14,6, 13,7,1,6,2,6, 13,6,15,5,14,7, 13,6,1,6,2,7, 13,5,15,5,14,8, 13,5,1,6,2,8, 13,4,15,5,14,9, 13,4,1,6,2,9, + 13,3,15,5,14,10, 13,3,1,6,2,10, 13,2,15,5,14,11, 13,2,1,6,2,11, 13,1,15,5,14,12, 13,1,1,6,2,12, 13,0,15,5,14,13, 13,0,1,6,2,13, + 14,9,15,1,15,4, 14,9,15,3,15,4, 14,9,15,5,15,4, 14,9,14,1,14,4, 14,9,14,3,14,4, 14,9,13,1,13,4, 14,9,13,3,13,4, 14,9,12,1,12,4, + 14,9,12,3,12,4, 14,9,11,1,11,4, 14,9,11,3,11,4, 14,9,10,1,10,4, 14,9,10,3,10,4, 14,9,9,1,9,4, 14,9,9,3,9,4, 14,9,8,1,8,4, + 14,9,8,3,8,4, 14,9,7,1,7,4, 14,9,7,3,7,4, 14,9,6,1,6,4, 14,9,6,3,6,4, 14,9,5,1,5,4, 14,9,5,3,5,4, 14,9,4,1,4,4, + 14,9,4,3,4,4, 14,9,3,1,3,4, 14,9,3,3,3,4, 14,9,2,1,2,4, 14,9,2,3,2,4, 14,9,1,1,1,4, 14,9,1,3,1,4, 14,9,1,6,1,4, + 14,8,15,1,15,5, 14,8,15,5,15,5, 14,8,14,1,14,5, 14,8,13,1,13,5, 14,8,12,1,12,5, 14,8,11,1,11,5, 14,8,10,1,10,5, 14,8,9,1,9,5, + 14,8,8,1,8,5, 14,8,7,1,7,5, 14,8,6,1,6,5, 14,8,5,1,5,5, 14,8,4,1,4,5, 14,8,3,1,3,5, 14,8,2,1,2,5, 14,8,1,1,1,5, + 14,8,1,6,1,5, 14,7,15,1,15,6, 14,7,15,5,15,6, 14,7,14,1,14,6, 14,7,13,1,13,6, 14,7,12,1,12,6, 14,7,11,1,11,6, 14,7,10,1,10,6, + 14,7,9,1,9,6, 14,7,8,1,8,6, 14,7,7,1,7,6, 14,7,6,1,6,6, 14,7,5,1,5,6, 14,7,4,1,4,6, 14,7,3,1,3,6, 14,7,2,1,2,6, + 14,7,1,1,1,6, 14,7,1,6,1,6, 14,6,15,1,15,7, 14,6,15,5,15,7, 14,6,14,1,14,7, 14,6,13,1,13,7, 14,6,12,1,12,7, 14,6,11,1,11,7, + 14,6,10,1,10,7, 14,6,9,1,9,7, 14,6,8,1,8,7, 14,6,7,1,7,7, 14,6,6,1,6,7, 14,6,5,1,5,7, 14,6,4,1,4,7, 14,6,3,1,3,7, + 14,6,2,1,2,7, 14,6,1,1,1,7, 14,6,1,6,1,7, 14,5,15,1,15,8, 14,5,15,5,15,8, 14,5,14,1,14,8, 14,5,13,1,13,8, 14,5,12,1,12,8, + 14,5,11,1,11,8, 14,5,10,1,10,8, 14,5,9,1,9,8, 14,5,8,1,8,8, 14,5,7,1,7,8, 14,5,6,1,6,8, 14,5,5,1,5,8, 14,5,4,1,4,8, + 14,5,3,1,3,8, 14,5,2,1,2,8, 14,5,1,1,1,8, 14,5,1,6,1,8, 14,4,15,1,15,9, 14,4,15,5,15,9, 14,4,14,1,14,9, 14,4,13,1,13,9, + 14,4,12,1,12,9, 14,4,11,1,11,9, 14,4,10,1,10,9, 14,4,9,1,9,9, 14,4,8,1,8,9, 14,4,7,1,7,9, 14,4,6,1,6,9, 14,4,5,1,5,9, + 14,4,4,1,4,9, 14,4,3,1,3,9, 14,4,2,1,2,9, 14,4,1,1,1,9, 14,4,1,6,1,9, 14,3,15,1,15,10, 14,3,15,5,15,10, 14,3,14,1,14,10, + 14,3,13,1,13,10, 14,3,12,1,12,10, 14,3,11,1,11,10, 14,3,10,1,10,10, 14,3,9,1,9,10, 14,3,8,1,8,10, 14,3,7,1,7,10, 14,3,6,1,6,10, + 14,3,5,1,5,10, 14,3,4,1,4,10, 14,3,3,1,3,10, 14,3,2,1,2,10, 14,3,1,1,1,10, 14,3,1,6,1,10, 14,2,15,1,15,11, 14,2,15,5,15,11, + 14,2,14,1,14,11, 14,2,13,1,13,11, 14,2,12,1,12,11, 14,2,11,1,11,11, 14,2,10,1,10,11, 14,2,9,1,9,11, 14,2,8,1,8,11, 14,2,7,1,7,11, + 14,2,6,1,6,11, 14,2,5,1,5,11, 14,2,4,1,4,11, 14,2,3,1,3,11, 14,2,2,1,2,11, 14,2,1,1,1,11, 14,2,1,6,1,11, 14,1,15,1,15,12, + 14,1,15,5,15,12, 14,1,14,1,14,12, 14,1,13,1,13,12, 14,1,12,1,12,12, 14,1,11,1,11,12, 14,1,10,1,10,12, 14,1,9,1,9,12, 14,1,8,1,8,12, + 14,1,7,1,7,12, 14,1,6,1,6,12, 14,1,5,1,5,12, 14,1,4,1,4,12, 14,1,3,1,3,12, 14,1,2,1,2,12, 14,1,1,1,1,12, 14,1,1,6,1,12, + 14,0,15,1,15,13, 14,0,15,5,15,13, 14,0,14,1,14,13, 14,0,13,1,13,13, 14,0,12,1,12,13, 14,0,11,1,11,13, 14,0,10,1,10,13, 14,0,9,1,9,13, + 14,0,8,1,8,13, 14,0,7,1,7,13, 14,0,6,1,6,13, 14,0,5,1,5,13, 14,0,4,1,4,13, 14,0,3,1,3,13, 14,0,2,1,2,13, 14,0,1,1,1,13, + 14,0,1,6,1,13, + }, + }, + }, +} diff --git a/assets/voxels/red.lua b/assets/voxels/red.lua new file mode 100644 index 0000000..22dea20 --- /dev/null +++ b/assets/voxels/red.lua @@ -0,0 +1,299 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "red" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "red", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1568, + count = 1044, + faces = { + 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, + 1,9,9,3,6,38, 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, + 1,9,5,3,10,38, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, 1,9,3,3,12,38, 1,9,2,2,13,38, 1,9,2,3,13,38, 1,9,2,4,1,6, + 1,9,2,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, + 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, + 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,10,2,5,42, + 1,5,10,3,5,42, 1,5,10,4,1,10, 1,5,10,5,1,10, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, + 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,3,2,12,42, + 1,5,3,3,12,42, 1,5,3,6,14,26, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,9,5,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, + 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,3,2,12,43, + 1,4,3,4,1,11, 1,4,3,6,14,27, 2,11,14,2,1,36, 2,11,14,3,1,36, 2,11,14,4,2,4, 2,11,14,5,2,4, 2,11,13,2,2,36, 2,11,13,3,2,36, + 2,11,12,2,3,36, 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, + 2,11,8,2,7,36, 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, + 2,11,4,2,11,36, 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,13,2,2,37, + 2,10,13,4,2,5, 2,10,13,5,2,5, 2,10,12,2,3,37, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, 2,10,8,2,7,37, 2,10,7,2,8,37, + 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,6,13,21, 2,9,12,5,2,6, 2,9,2,4,2,6, + 2,9,2,6,13,22, 2,8,12,5,2,7, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, + 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,4,6,13,24, + 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, 2,6,6,2,9,41, + 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,3,2,12,41, 2,6,3,3,12,41, 2,6,3,6,13,25, 2,5,10,4,2,10, 2,5,10,5,2,10, 2,5,3,6,13,26, + 2,4,9,5,2,11, 2,4,3,6,13,27, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,9,5,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, + 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, 2,3,3,2,12,44, + 2,3,3,4,2,12, 2,3,3,6,13,28, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, + 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, + 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, + 3,12,13,2,2,35, 3,12,13,3,2,35, 3,12,13,5,3,3, 3,12,12,2,3,35, 3,12,11,2,4,35, 3,12,10,2,5,35, 3,12,9,2,6,35, 3,12,8,2,7,35, + 3,12,7,2,8,35, 3,12,6,2,9,35, 3,12,5,2,10,35, 3,12,4,2,11,35, 3,12,3,2,12,35, 3,12,3,6,12,19, 3,11,14,3,1,36, 3,11,14,4,3,4, + 3,11,14,5,3,4, 3,11,2,3,13,36, 3,11,2,6,12,20, 3,10,13,4,3,5, 3,10,13,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,2,4,3,6, + 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,4,6,12,24, 3,6,11,4,3,9, + 3,6,11,5,3,9, 3,6,3,3,12,41, 3,6,3,6,12,25, 3,5,10,4,3,10, 3,5,10,5,3,10, 3,5,3,6,12,26, 3,4,9,5,3,11, 3,4,3,6,12,27, + 3,3,9,5,3,12, 3,3,3,4,3,12, 3,3,3,6,12,28, 3,2,10,2,5,45, 3,2,10,3,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, 3,2,8,2,7,45, + 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,4,2,11,45, 3,2,4,4,3,13, 3,2,4,6,12,29, 3,1,10,2,5,46, 3,1,10,4,3,14, + 3,1,10,5,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, 3,1,6,2,9,46, + 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,5,6,12,30, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, + 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, + 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, + 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, 4,12,3,6,11,19, 4,11,14,3,1,36, 4,11,14,4,4,4, 4,11,14,5,4,4, + 4,11,2,3,13,36, 4,11,2,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,4,4,6, 4,9,2,6,11,22, + 4,8,12,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,6,11,24, 4,6,11,4,4,9, 4,6,11,5,4,9, + 4,6,3,3,12,41, 4,6,3,6,11,25, 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,3,6,11,26, 4,4,9,5,4,11, 4,4,3,6,11,27, 4,3,9,5,4,12, + 4,3,3,4,4,12, 4,3,3,6,11,28, 4,2,10,3,5,45, 4,2,10,5,4,13, 4,2,4,4,4,13, 4,2,4,6,11,29, 4,1,10,4,4,14, 4,1,10,5,4,14, + 4,1,5,4,4,14, 4,1,5,6,11,30, 4,0,9,2,6,47, 4,0,9,5,4,15, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, 4,0,6,6,11,31, + 5,15,10,2,5,32, 5,15,10,3,5,32, 5,15,10,5,5,0, 5,15,9,2,6,32, 5,15,9,3,6,32, 5,15,8,2,7,32, 5,15,8,3,7,32, 5,15,7,2,8,32, + 5,15,7,3,8,32, 5,15,6,2,9,32, 5,15,6,3,9,32, 5,15,5,2,10,32, 5,15,5,3,10,32, 5,15,5,6,10,16, 5,14,11,3,4,33, 5,14,11,5,5,1, + 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,3,2,35, 5,12,13,5,5,3, + 5,12,3,6,10,19, 5,11,14,3,1,36, 5,11,14,4,5,4, 5,11,14,5,5,4, 5,11,2,3,13,36, 5,11,2,6,10,20, 5,10,13,4,5,5, 5,10,13,5,5,5, + 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,4,5,6, 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, + 5,7,12,5,5,8, 5,7,4,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,3,3,12,41, 5,6,3,6,10,25, 5,5,10,4,5,10, 5,5,10,5,5,10, + 5,5,3,6,10,26, 5,4,9,5,5,11, 5,4,3,6,10,27, 5,3,9,5,5,12, 5,3,3,4,5,12, 5,3,3,6,10,28, 5,2,10,3,5,45, 5,2,10,5,5,13, + 5,2,4,4,5,13, 5,2,4,6,10,29, 5,1,10,4,5,14, 5,1,10,5,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,9,5,5,15, 5,0,6,6,10,31, + 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,3,6,32, 6,15,8,3,7,32, 6,15,7,3,8,32, 6,15,6,3,9,32, 6,15,5,3,10,32, 6,15,5,6,9,16, + 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, 6,13,3,6,9,18, + 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,3,6,9,19, 6,11,14,3,1,36, 6,11,14,4,6,4, 6,11,14,5,6,4, 6,11,2,3,13,36, 6,11,2,6,9,20, + 6,10,13,4,6,5, 6,10,13,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,4,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,3,4,6,7, + 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,4,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, 6,6,3,3,12,41, 6,6,3,6,9,25, + 6,5,10,4,6,10, 6,5,10,5,6,10, 6,5,3,6,9,26, 6,4,9,5,6,11, 6,4,3,6,9,27, 6,3,9,5,6,12, 6,3,3,4,6,12, 6,3,3,6,9,28, + 6,2,10,3,5,45, 6,2,10,5,6,13, 6,2,4,4,6,13, 6,2,4,6,9,29, 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, + 6,0,9,1,6,47, 6,0,9,5,6,15, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,15,10,3,5,32, 7,15,10,5,7,0, + 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,5,3,10,32, 7,15,5,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, + 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, 7,12,13,5,7,3, + 7,12,3,6,8,19, 7,11,14,3,1,36, 7,11,14,4,7,4, 7,11,14,5,7,4, 7,11,2,3,13,36, 7,11,2,6,8,20, 7,10,13,4,7,5, 7,10,13,5,7,5, + 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,2,4,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,3,4,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, + 7,7,12,5,7,8, 7,7,4,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,3,3,12,41, 7,6,3,6,8,25, 7,5,10,4,7,10, 7,5,10,5,7,10, + 7,5,3,6,8,26, 7,4,9,5,7,11, 7,4,3,6,8,27, 7,3,9,5,7,12, 7,3,3,4,7,12, 7,3,3,6,8,28, 7,2,10,3,5,45, 7,2,10,5,7,13, + 7,2,4,4,7,13, 7,2,4,6,8,29, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, + 7,1,5,4,7,14, 7,1,5,6,8,30, 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,3,6,32, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, + 8,15,5,3,10,32, 8,15,5,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, + 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,3,6,7,19, 8,11,14,3,1,36, 8,11,14,4,8,4, 8,11,14,5,8,4, + 8,11,2,3,13,36, 8,11,2,6,7,20, 8,10,13,4,8,5, 8,10,13,5,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,4,8,6, 8,9,2,6,7,22, + 8,8,12,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, + 8,6,3,3,12,41, 8,6,3,6,7,25, 8,5,10,4,8,10, 8,5,10,5,8,10, 8,5,3,6,7,26, 8,4,9,5,8,11, 8,4,3,6,7,27, 8,3,9,5,8,12, + 8,3,3,4,8,12, 8,3,3,6,7,28, 8,2,10,3,5,45, 8,2,10,5,8,13, 8,2,4,4,8,13, 8,2,4,6,7,29, 8,1,10,4,8,14, 8,1,10,5,8,14, + 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,10,3,5,32, 9,15,10,5,9,0, + 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, 9,15,6,3,9,32, 9,15,5,3,10,32, 9,15,5,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, + 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, 9,12,13,5,9,3, + 9,12,3,6,6,19, 9,11,14,3,1,36, 9,11,14,4,9,4, 9,11,14,5,9,4, 9,11,2,3,13,36, 9,11,2,6,6,20, 9,10,13,4,9,5, 9,10,13,5,9,5, + 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,2,4,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, + 9,7,12,5,9,8, 9,7,4,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, 9,6,3,3,12,41, 9,6,3,6,6,25, 9,5,10,4,9,10, 9,5,10,5,9,10, + 9,5,3,6,6,26, 9,4,9,5,9,11, 9,4,3,6,6,27, 9,3,9,5,9,12, 9,3,3,4,9,12, 9,3,3,6,6,28, 9,2,10,3,5,45, 9,2,10,5,9,13, + 9,2,4,4,9,13, 9,2,4,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,9,2,6,47, 9,0,9,5,9,15, + 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, 10,15,10,1,5,32, 10,15,10,3,5,32, 10,15,10,5,10,0, 10,15,9,1,6,32, + 10,15,9,3,6,32, 10,15,8,1,7,32, 10,15,8,3,7,32, 10,15,7,1,8,32, 10,15,7,3,8,32, 10,15,6,1,9,32, 10,15,6,3,9,32, 10,15,5,1,10,32, + 10,15,5,3,10,32, 10,15,5,6,5,16, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, 10,13,12,5,10,2, + 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,3,6,5,19, 10,11,14,3,1,36, 10,11,14,4,10,4, 10,11,14,5,10,4, + 10,11,2,3,13,36, 10,11,2,6,5,20, 10,10,13,4,10,5, 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,4,10,6, 10,9,2,6,5,22, + 10,8,12,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,4,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, + 10,6,3,3,12,41, 10,6,3,6,5,25, 10,5,10,4,10,10, 10,5,10,5,10,10, 10,5,3,6,5,26, 10,4,9,5,10,11, 10,4,3,6,5,27, 10,3,9,5,10,12, + 10,3,3,4,10,12, 10,3,3,6,5,28, 10,2,10,3,5,45, 10,2,10,5,10,13, 10,2,4,4,10,13, 10,2,4,6,5,29, 10,1,10,4,10,14, 10,1,10,5,10,14, + 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,9,5,10,15, 10,0,6,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,10,1,5,33, + 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, + 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,12,3,3,34, 11,13,12,5,11,2, + 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, 11,12,13,5,11,3, 11,12,3,6,4,19, 11,11,14,3,1,36, 11,11,14,4,11,4, 11,11,14,5,11,4, + 11,11,2,3,13,36, 11,11,2,6,4,20, 11,10,13,4,11,5, 11,10,13,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,2,4,11,6, 11,9,2,6,4,22, + 11,8,12,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,4,6,4,24, 11,6,11,4,11,9, 11,6,11,5,11,9, + 11,6,3,3,12,41, 11,6,3,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, 11,5,3,6,4,26, 11,4,9,5,11,11, 11,4,3,6,4,27, 11,3,9,5,11,12, + 11,3,3,4,11,12, 11,3,3,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, 11,2,4,4,11,13, 11,2,4,6,4,29, 11,1,10,4,11,14, 11,1,10,5,11,14, + 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,9,1,6,47, 11,0,9,5,11,15, 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,6,6,4,31, + 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, + 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, + 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,1,2,35, 12,12,13,3,2,35, + 12,12,13,5,12,3, 12,12,12,1,3,35, 12,12,11,1,4,35, 12,12,10,1,5,35, 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, 12,12,6,1,9,35, + 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, 12,12,3,6,3,19, 12,11,14,3,1,36, 12,11,14,4,12,4, 12,11,14,5,12,4, 12,11,2,3,13,36, + 12,11,2,6,3,20, 12,10,13,4,12,5, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,2,4,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, + 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,3,3,12,41, + 12,6,3,6,3,25, 12,5,10,4,12,10, 12,5,10,5,12,10, 12,5,3,6,3,26, 12,4,9,5,12,11, 12,4,3,6,3,27, 12,3,9,5,12,12, 12,3,3,4,12,12, + 12,3,3,6,3,28, 12,2,10,1,5,45, 12,2,10,3,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, + 12,2,5,1,10,45, 12,2,4,1,11,45, 12,2,4,4,12,13, 12,2,4,6,3,29, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,10,5,12,14, 12,1,9,1,6,46, + 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, + 12,1,5,4,12,14, 12,1,5,6,3,30, 13,11,14,1,1,36, 13,11,14,3,1,36, 13,11,14,4,13,4, 13,11,14,5,13,4, 13,11,13,1,2,36, 13,11,13,3,2,36, + 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, 13,11,9,3,6,36, + 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, 13,11,5,3,10,36, + 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, 13,10,13,1,2,37, + 13,10,13,4,13,5, 13,10,13,5,13,5, 13,10,12,1,3,37, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, + 13,10,6,1,9,37, 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,6,2,21, 13,9,12,5,13,6, 13,9,2,4,13,6, + 13,9,2,6,2,22, 13,8,12,5,13,7, 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, + 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,4,6,2,24, + 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, + 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,3,1,12,41, 13,6,3,3,12,41, 13,6,3,6,2,25, 13,5,10,4,13,10, 13,5,10,5,13,10, 13,5,3,6,2,26, + 13,4,9,5,13,11, 13,4,3,6,2,27, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, + 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,3,1,12,44, + 13,3,3,4,13,12, 13,3,3,6,2,28, 14,9,12,1,3,38, 14,9,12,3,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,11,3,4,38, 14,9,10,1,5,38, + 14,9,10,3,5,38, 14,9,9,1,6,38, 14,9,9,3,6,38, 14,9,8,1,7,38, 14,9,8,3,7,38, 14,9,7,1,8,38, 14,9,7,3,8,38, 14,9,6,1,9,38, + 14,9,6,3,9,38, 14,9,5,1,10,38, 14,9,5,3,10,38, 14,9,4,1,11,38, 14,9,4,3,11,38, 14,9,3,1,12,38, 14,9,3,3,12,38, 14,9,2,1,13,38, + 14,9,2,3,13,38, 14,9,2,4,14,6, 14,9,2,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, + 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, + 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, + 14,8,3,6,1,23, 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,4,14,10, 14,5,10,5,14,10, 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, + 14,5,8,3,7,42, 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,4,1,11,42, + 14,5,4,3,11,42, 14,5,3,1,12,42, 14,5,3,3,12,42, 14,5,3,6,1,26, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,9,5,14,11, 14,4,8,1,7,43, + 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, + 14,4,4,4,14,11, 14,4,3,1,12,43, 14,4,3,4,14,11, 14,4,3,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1640, + count = 1082, + faces = { + 1,8,12,2,3,87, 1,8,12,3,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,11,3,4,87, 1,8,10,2,5,87, 1,8,10,3,5,87, 1,8,9,2,6,87, + 1,8,9,3,6,87, 1,8,8,2,7,87, 1,8,8,3,7,87, 1,8,7,2,8,87, 1,8,7,3,8,87, 1,8,6,2,9,87, 1,8,6,3,9,87, 1,8,5,2,10,87, + 1,8,5,3,10,87, 1,8,4,2,11,87, 1,8,4,3,11,87, 1,8,3,2,12,87, 1,8,3,3,12,87, 1,8,2,2,13,87, 1,8,2,3,13,87, 1,8,2,4,1,55, + 1,8,2,6,14,71, 1,7,12,2,3,88, 1,7,12,5,1,56, 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, + 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, 1,7,3,2,12,88, 1,7,3,4,1,56, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, + 1,6,12,5,1,57, 1,6,11,2,4,89, 1,6,10,2,5,89, 1,6,9,2,6,89, 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, + 1,6,4,2,11,89, 1,6,4,6,1,57, 1,5,11,2,4,90, 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, 1,5,8,2,7,90, + 1,5,7,2,8,90, 1,5,6,2,9,90, 1,5,5,2,10,90, 1,5,4,2,11,90, 1,5,3,2,12,90, 1,5,3,3,12,90, 1,5,3,6,1,58, 1,4,10,2,5,91, + 1,4,10,5,14,75, 1,4,9,2,6,91, 1,4,8,2,7,91, 1,4,7,2,8,91, 1,4,6,2,9,91, 1,4,5,2,10,91, 1,4,4,2,11,91, 1,4,3,2,12,91, + 1,4,3,6,14,75, 1,3,12,2,3,92, 1,3,12,3,3,92, 1,3,12,4,14,76, 1,3,12,5,14,76, 1,3,11,2,4,92, 1,3,11,3,4,92, 1,3,11,4,14,76, + 1,3,10,2,5,92, 1,3,10,4,14,76, 1,3,9,2,6,92, 1,3,9,4,14,76, 1,3,8,2,7,92, 1,3,8,4,14,76, 1,3,7,2,8,92, 1,3,7,4,14,76, + 1,3,6,2,9,92, 1,3,6,4,14,76, 1,3,5,2,10,92, 1,3,5,4,14,76, 1,3,4,2,11,92, 1,3,4,4,14,76, 1,3,3,2,12,92, 1,3,3,4,14,76, + 1,3,3,6,14,76, 2,10,14,2,1,85, 2,10,14,3,1,85, 2,10,14,4,2,53, 2,10,14,5,2,53, 2,10,13,2,2,85, 2,10,13,3,2,85, 2,10,12,2,3,85, + 2,10,12,3,3,85, 2,10,11,2,4,85, 2,10,11,3,4,85, 2,10,10,2,5,85, 2,10,10,3,5,85, 2,10,9,2,6,85, 2,10,9,3,6,85, 2,10,8,2,7,85, + 2,10,8,3,7,85, 2,10,7,2,8,85, 2,10,7,3,8,85, 2,10,6,2,9,85, 2,10,6,3,9,85, 2,10,5,2,10,85, 2,10,5,3,10,85, 2,10,4,2,11,85, + 2,10,4,3,11,85, 2,10,3,2,12,85, 2,10,3,3,12,85, 2,10,2,2,13,85, 2,10,2,3,13,85, 2,10,2,6,13,69, 2,9,13,2,2,86, 2,9,13,4,2,54, + 2,9,13,5,2,54, 2,9,12,2,3,86, 2,9,11,2,4,86, 2,9,10,2,5,86, 2,9,9,2,6,86, 2,9,8,2,7,86, 2,9,7,2,8,86, 2,9,6,2,9,86, + 2,9,5,2,10,86, 2,9,4,2,11,86, 2,9,3,2,12,86, 2,9,2,2,13,86, 2,9,2,6,13,70, 2,8,12,5,2,55, 2,8,2,4,2,55, 2,8,2,6,13,71, + 2,7,12,5,2,56, 2,7,3,4,2,56, 2,7,3,6,13,72, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,4,6,13,73, 2,5,11,4,2,58, 2,5,11,5,2,58, + 2,5,3,3,12,90, 2,5,3,6,13,74, 2,4,10,5,2,59, 2,4,3,6,13,75, 2,3,12,3,3,92, 2,3,12,5,13,76, 2,3,11,3,4,92, 2,3,3,6,13,76, + 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, 2,2,13,5,13,77, 2,2,12,2,3,93, 2,2,12,4,13,77, 2,2,11,2,4,93, 2,2,11,4,13,77, + 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,4,13,77, 2,2,8,2,7,93, 2,2,8,4,13,77, 2,2,7,2,8,93, 2,2,7,4,13,77, + 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,4,13,77, 2,2,4,2,11,93, 2,2,4,4,13,77, 2,2,3,2,12,93, 2,2,3,4,13,77, + 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, 2,2,2,6,13,77, 3,12,12,2,3,83, 3,12,12,3,3,83, 3,12,12,5,3,51, 3,12,11,2,4,83, + 3,12,11,3,4,83, 3,12,10,2,5,83, 3,12,10,3,5,83, 3,12,9,2,6,83, 3,12,9,3,6,83, 3,12,8,2,7,83, 3,12,8,3,7,83, 3,12,7,2,8,83, + 3,12,7,3,8,83, 3,12,6,2,9,83, 3,12,6,3,9,83, 3,12,5,2,10,83, 3,12,5,3,10,83, 3,12,4,2,11,83, 3,12,4,3,11,83, 3,12,3,2,12,83, + 3,12,3,3,12,83, 3,12,3,6,12,67, 3,11,13,2,2,84, 3,11,13,3,2,84, 3,11,13,5,3,52, 3,11,12,2,3,84, 3,11,11,2,4,84, 3,11,10,2,5,84, + 3,11,9,2,6,84, 3,11,8,2,7,84, 3,11,7,2,8,84, 3,11,6,2,9,84, 3,11,5,2,10,84, 3,11,4,2,11,84, 3,11,3,2,12,84, 3,11,3,6,12,68, + 3,10,14,3,1,85, 3,10,14,4,3,53, 3,10,14,5,3,53, 3,10,2,3,13,85, 3,10,2,6,12,69, 3,9,13,4,3,54, 3,9,13,5,3,54, 3,9,2,6,12,70, + 3,8,12,5,3,55, 3,8,2,4,3,55, 3,8,2,6,12,71, 3,7,12,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, 3,6,12,5,3,57, + 3,6,4,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,3,3,12,90, 3,5,3,6,12,74, 3,4,10,5,3,59, 3,4,3,6,12,75, 3,3,12,3,3,92, + 3,3,12,5,3,60, 3,3,11,3,4,92, 3,3,3,6,12,76, 3,2,13,3,2,93, 3,2,13,4,12,77, 3,2,13,5,12,77, 3,2,12,4,12,77, 3,2,11,4,12,77, + 3,2,10,4,12,77, 3,2,9,4,12,77, 3,2,8,4,12,77, 3,2,7,4,12,77, 3,2,6,4,12,77, 3,2,5,4,12,77, 3,2,4,4,12,77, 3,2,3,4,12,77, + 3,2,2,3,13,93, 3,2,2,4,12,77, 3,2,2,6,12,77, 4,13,11,2,4,82, 4,13,11,3,4,82, 4,13,11,5,4,50, 4,13,10,2,5,82, 4,13,10,3,5,82, + 4,13,9,2,6,82, 4,13,9,3,6,82, 4,13,8,2,7,82, 4,13,8,3,7,82, 4,13,7,2,8,82, 4,13,7,3,8,82, 4,13,6,2,9,82, 4,13,6,3,9,82, + 4,13,5,2,10,82, 4,13,5,3,10,82, 4,13,4,2,11,82, 4,13,4,3,11,82, 4,13,4,6,11,66, 4,12,12,3,3,83, 4,12,12,5,4,51, 4,12,3,3,12,83, + 4,12,3,6,11,67, 4,11,13,3,2,84, 4,11,13,5,4,52, 4,11,3,6,11,68, 4,10,14,3,1,85, 4,10,14,4,4,53, 4,10,14,5,4,53, 4,10,2,3,13,85, + 4,10,2,6,11,69, 4,9,13,4,4,54, 4,9,13,5,4,54, 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,2,4,4,55, 4,8,2,6,11,71, 4,7,12,5,4,56, + 4,7,3,4,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,6,11,73, 4,5,11,4,4,58, 4,5,11,5,4,58, 4,5,3,3,12,90, + 4,5,3,6,11,74, 4,4,10,5,4,59, 4,4,3,6,11,75, 4,3,12,3,3,92, 4,3,12,5,4,60, 4,3,11,3,4,92, 4,3,3,6,11,76, 4,2,13,3,2,93, + 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,2,3,13,93, 4,2,2,6,11,77, 4,1,12,2,3,94, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,2,4,94, + 4,1,11,4,4,62, 4,1,10,2,5,94, 4,1,10,4,4,62, 4,1,9,2,6,94, 4,1,9,4,4,62, 4,1,8,2,7,94, 4,1,8,4,4,62, 4,1,7,2,8,94, + 4,1,7,4,4,62, 4,1,6,2,9,94, 4,1,6,4,4,62, 4,1,5,2,10,94, 4,1,5,4,4,62, 4,1,4,2,11,94, 4,1,4,4,4,62, 4,1,3,2,12,94, + 4,1,3,4,4,62, 4,1,2,2,13,94, 4,1,2,4,4,62, 4,1,2,6,4,62, 5,14,10,2,5,81, 5,14,10,3,5,81, 5,14,10,5,5,49, 5,14,9,2,6,81, + 5,14,9,3,6,81, 5,14,8,2,7,81, 5,14,8,3,7,81, 5,14,7,2,8,81, 5,14,7,3,8,81, 5,14,6,2,9,81, 5,14,6,3,9,81, 5,14,5,2,10,81, + 5,14,5,3,10,81, 5,14,5,6,10,65, 5,13,11,3,4,82, 5,13,11,5,5,50, 5,13,4,3,11,82, 5,13,4,6,10,66, 5,12,12,3,3,83, 5,12,12,5,5,51, + 5,12,3,3,12,83, 5,12,3,6,10,67, 5,11,13,3,2,84, 5,11,13,5,5,52, 5,11,3,6,10,68, 5,10,14,3,1,85, 5,10,14,4,5,53, 5,10,14,5,5,53, + 5,10,2,3,13,85, 5,10,2,6,10,69, 5,9,13,4,5,54, 5,9,13,5,5,54, 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,2,4,5,55, 5,8,2,6,10,71, + 5,7,12,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,4,6,10,73, 5,5,11,4,5,58, 5,5,11,5,5,58, + 5,5,3,3,12,90, 5,5,3,6,10,74, 5,4,10,5,5,59, 5,4,3,6,10,75, 5,3,12,3,3,92, 5,3,12,5,5,60, 5,3,11,3,4,92, 5,3,3,6,10,76, + 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,3,13,93, 5,2,2,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,8,4,5,62, + 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,2,6,5,62, 5,0,11,2,4,95, 5,0,11,5,5,63, 5,0,10,2,5,95, + 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,4,2,11,95, 5,0,4,5,5,63, 5,0,3,2,12,95, 5,0,3,6,5,63, 6,14,10,3,5,81, 6,14,10,5,6,49, + 6,14,9,3,6,81, 6,14,8,3,7,81, 6,14,7,3,8,81, 6,14,6,3,9,81, 6,14,5,3,10,81, 6,14,5,6,9,65, 6,13,11,3,4,82, 6,13,11,5,6,50, + 6,13,4,3,11,82, 6,13,4,6,9,66, 6,12,12,3,3,83, 6,12,12,5,6,51, 6,12,3,3,12,83, 6,12,3,6,9,67, 6,11,13,3,2,84, 6,11,13,5,6,52, + 6,11,3,6,9,68, 6,10,14,3,1,85, 6,10,14,4,6,53, 6,10,14,5,6,53, 6,10,2,3,13,85, 6,10,2,6,9,69, 6,9,13,4,6,54, 6,9,13,5,6,54, + 6,9,2,6,9,70, 6,8,12,5,6,55, 6,8,2,4,6,55, 6,8,2,6,9,71, 6,7,12,5,6,56, 6,7,3,4,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, + 6,6,12,5,6,57, 6,6,4,6,9,73, 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,3,3,12,90, 6,5,3,6,9,74, 6,4,10,5,6,59, 6,4,3,6,9,75, + 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,11,3,4,92, 6,3,3,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, + 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, + 6,1,2,6,9,78, 6,0,11,5,6,63, 6,0,9,6,6,63, 6,0,4,5,6,63, 6,0,3,6,6,63, 7,14,10,3,5,81, 7,14,10,5,7,49, 7,14,9,3,6,81, + 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,5,3,10,81, 7,14,5,6,8,65, 7,13,11,3,4,82, 7,13,11,5,7,50, 7,13,4,3,11,82, + 7,13,4,6,8,66, 7,12,12,3,3,83, 7,12,12,5,7,51, 7,12,3,3,12,83, 7,12,3,6,8,67, 7,11,13,3,2,84, 7,11,13,5,7,52, 7,11,3,6,8,68, + 7,10,14,3,1,85, 7,10,14,4,7,53, 7,10,14,5,7,53, 7,10,2,3,13,85, 7,10,2,6,8,69, 7,9,13,4,7,54, 7,9,13,5,7,54, 7,9,2,6,8,70, + 7,8,12,5,7,55, 7,8,2,4,7,55, 7,8,2,6,8,71, 7,7,12,5,7,56, 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, + 7,6,4,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, 7,5,3,3,12,90, 7,5,3,6,8,74, 7,4,10,5,7,59, 7,4,3,6,8,75, 7,3,12,3,3,92, + 7,3,12,5,7,60, 7,3,11,3,4,92, 7,3,3,6,8,76, 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, 7,2,2,6,8,77, + 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,2,4,7,62, 7,1,2,6,8,78, + 7,0,11,5,7,63, 7,0,9,6,7,63, 7,0,4,5,7,63, 7,0,3,6,7,63, 8,14,10,3,5,81, 8,14,10,5,8,49, 8,14,9,3,6,81, 8,14,8,3,7,81, + 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, 8,14,5,6,7,65, 8,13,11,3,4,82, 8,13,11,5,8,50, 8,13,4,3,11,82, 8,13,4,6,7,66, + 8,12,12,3,3,83, 8,12,12,5,8,51, 8,12,3,3,12,83, 8,12,3,6,7,67, 8,11,13,3,2,84, 8,11,13,5,8,52, 8,11,3,6,7,68, 8,10,14,3,1,85, + 8,10,14,4,8,53, 8,10,14,5,8,53, 8,10,2,3,13,85, 8,10,2,6,7,69, 8,9,13,4,8,54, 8,9,13,5,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, + 8,8,2,4,8,55, 8,8,2,6,7,71, 8,7,12,5,8,56, 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,6,7,73, + 8,5,11,4,8,58, 8,5,11,5,8,58, 8,5,3,3,12,90, 8,5,3,6,7,74, 8,4,10,5,8,59, 8,4,3,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, + 8,3,11,3,4,92, 8,3,3,6,7,76, 8,2,13,3,2,93, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,7,77, 8,1,12,4,8,62, + 8,1,12,5,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, 8,0,11,5,7,79, + 8,0,9,6,7,79, 8,0,4,5,7,79, 8,0,3,6,7,79, 9,14,10,3,5,81, 9,14,10,5,9,49, 9,14,9,3,6,81, 9,14,8,3,7,81, 9,14,7,3,8,81, + 9,14,6,3,9,81, 9,14,5,3,10,81, 9,14,5,6,6,65, 9,13,11,3,4,82, 9,13,11,5,9,50, 9,13,4,3,11,82, 9,13,4,6,6,66, 9,12,12,3,3,83, + 9,12,12,5,9,51, 9,12,3,3,12,83, 9,12,3,6,6,67, 9,11,13,3,2,84, 9,11,13,5,9,52, 9,11,3,6,6,68, 9,10,14,3,1,85, 9,10,14,4,9,53, + 9,10,14,5,9,53, 9,10,2,3,13,85, 9,10,2,6,6,69, 9,9,13,4,9,54, 9,9,13,5,9,54, 9,9,2,6,6,70, 9,8,12,5,9,55, 9,8,2,4,9,55, + 9,8,2,6,6,71, 9,7,12,5,9,56, 9,7,3,4,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,4,6,6,73, 9,5,11,4,9,58, + 9,5,11,5,9,58, 9,5,3,3,12,90, 9,5,3,6,6,74, 9,4,10,5,9,59, 9,4,3,6,6,75, 9,3,12,3,3,92, 9,3,12,5,9,60, 9,3,11,3,4,92, + 9,3,3,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,2,3,13,93, 9,2,2,6,6,77, 9,1,12,4,6,78, 9,1,12,5,6,78, + 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,5,4,6,78, 9,1,2,4,6,78, 9,1,2,6,6,78, 9,0,11,5,6,79, 9,0,9,6,6,79, + 9,0,4,5,6,79, 9,0,3,6,6,79, 10,14,10,1,5,81, 10,14,10,3,5,81, 10,14,10,5,10,49, 10,14,9,1,6,81, 10,14,9,3,6,81, 10,14,8,1,7,81, + 10,14,8,3,7,81, 10,14,7,1,8,81, 10,14,7,3,8,81, 10,14,6,1,9,81, 10,14,6,3,9,81, 10,14,5,1,10,81, 10,14,5,3,10,81, 10,14,5,6,5,65, + 10,13,11,3,4,82, 10,13,11,5,10,50, 10,13,4,3,11,82, 10,13,4,6,5,66, 10,12,12,3,3,83, 10,12,12,5,10,51, 10,12,3,3,12,83, 10,12,3,6,5,67, + 10,11,13,3,2,84, 10,11,13,5,10,52, 10,11,3,6,5,68, 10,10,14,3,1,85, 10,10,14,4,10,53, 10,10,14,5,10,53, 10,10,2,3,13,85, 10,10,2,6,5,69, + 10,9,13,4,10,54, 10,9,13,5,10,54, 10,9,2,6,5,70, 10,8,12,5,10,55, 10,8,2,4,10,55, 10,8,2,6,5,71, 10,7,12,5,10,56, 10,7,3,4,10,56, + 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,4,6,5,73, 10,5,11,4,10,58, 10,5,11,5,10,58, 10,5,3,3,12,90, 10,5,3,6,5,74, + 10,4,10,5,10,59, 10,4,3,6,5,75, 10,3,12,3,3,92, 10,3,12,5,10,60, 10,3,11,3,4,92, 10,3,3,6,5,76, 10,2,13,3,2,93, 10,2,13,4,10,61, + 10,2,13,5,10,61, 10,2,2,3,13,93, 10,2,2,6,5,77, 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, + 10,1,5,4,10,62, 10,1,2,4,10,62, 10,1,2,6,5,78, 10,0,11,1,4,95, 10,0,11,5,5,79, 10,0,10,1,5,95, 10,0,9,1,6,95, 10,0,9,6,5,79, + 10,0,4,1,11,95, 10,0,4,5,5,79, 10,0,3,1,12,95, 10,0,3,6,5,79, 11,13,11,1,4,82, 11,13,11,3,4,82, 11,13,11,5,11,50, 11,13,10,1,5,82, + 11,13,10,3,5,82, 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, 11,13,7,1,8,82, 11,13,7,3,8,82, 11,13,6,1,9,82, + 11,13,6,3,9,82, 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,4,1,11,82, 11,13,4,3,11,82, 11,13,4,6,4,66, 11,12,12,3,3,83, 11,12,12,5,11,51, + 11,12,3,3,12,83, 11,12,3,6,4,67, 11,11,13,3,2,84, 11,11,13,5,11,52, 11,11,3,6,4,68, 11,10,14,3,1,85, 11,10,14,4,11,53, 11,10,14,5,11,53, + 11,10,2,3,13,85, 11,10,2,6,4,69, 11,9,13,4,11,54, 11,9,13,5,11,54, 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,2,4,11,55, 11,8,2,6,4,71, + 11,7,12,5,11,56, 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,6,4,73, 11,5,11,4,11,58, 11,5,11,5,11,58, + 11,5,3,3,12,90, 11,5,3,6,4,74, 11,4,10,5,11,59, 11,4,3,6,4,75, 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,11,3,4,92, 11,3,3,6,4,76, + 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,3,13,93, 11,2,2,6,4,77, 11,1,12,1,3,94, 11,1,12,4,11,62, 11,1,12,5,11,62, + 11,1,11,1,4,94, 11,1,11,4,11,62, 11,1,10,1,5,94, 11,1,10,4,11,62, 11,1,9,1,6,94, 11,1,9,4,11,62, 11,1,8,1,7,94, 11,1,8,4,11,62, + 11,1,7,1,8,94, 11,1,7,4,11,62, 11,1,6,1,9,94, 11,1,6,4,11,62, 11,1,5,1,10,94, 11,1,5,4,11,62, 11,1,4,1,11,94, 11,1,4,4,11,62, + 11,1,3,1,12,94, 11,1,3,4,11,62, 11,1,2,1,13,94, 11,1,2,4,11,62, 11,1,2,6,4,78, 12,12,12,1,3,83, 12,12,12,3,3,83, 12,12,12,5,12,51, + 12,12,11,1,4,83, 12,12,11,3,4,83, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, 12,12,8,1,7,83, 12,12,8,3,7,83, + 12,12,7,1,8,83, 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, 12,12,4,1,11,83, 12,12,4,3,11,83, + 12,12,3,1,12,83, 12,12,3,3,12,83, 12,12,3,6,3,67, 12,11,13,1,2,84, 12,11,13,3,2,84, 12,11,13,5,12,52, 12,11,12,1,3,84, 12,11,11,1,4,84, + 12,11,10,1,5,84, 12,11,9,1,6,84, 12,11,8,1,7,84, 12,11,7,1,8,84, 12,11,6,1,9,84, 12,11,5,1,10,84, 12,11,4,1,11,84, 12,11,3,1,12,84, + 12,11,3,6,3,68, 12,10,14,3,1,85, 12,10,14,4,12,53, 12,10,14,5,12,53, 12,10,2,3,13,85, 12,10,2,6,3,69, 12,9,13,4,12,54, 12,9,13,5,12,54, + 12,9,2,6,3,70, 12,8,12,5,12,55, 12,8,2,4,12,55, 12,8,2,6,3,71, 12,7,12,5,12,56, 12,7,3,4,12,56, 12,7,3,6,3,72, 12,6,12,4,12,57, + 12,6,12,5,12,57, 12,6,4,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, 12,5,3,3,12,90, 12,5,3,6,3,74, 12,4,10,5,12,59, 12,4,3,6,3,75, + 12,3,12,3,3,92, 12,3,12,5,12,60, 12,3,11,3,4,92, 12,3,3,6,3,76, 12,2,13,1,2,93, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, + 12,2,12,1,3,93, 12,2,12,4,12,61, 12,2,11,1,4,93, 12,2,11,4,12,61, 12,2,10,1,5,93, 12,2,10,4,12,61, 12,2,9,1,6,93, 12,2,9,4,12,61, + 12,2,8,1,7,93, 12,2,8,4,12,61, 12,2,7,1,8,93, 12,2,7,4,12,61, 12,2,6,1,9,93, 12,2,6,4,12,61, 12,2,5,1,10,93, 12,2,5,4,12,61, + 12,2,4,1,11,93, 12,2,4,4,12,61, 12,2,3,1,12,93, 12,2,3,4,12,61, 12,2,2,1,13,93, 12,2,2,3,13,93, 12,2,2,4,12,61, 12,2,2,6,12,61, + 13,10,14,1,1,85, 13,10,14,3,1,85, 13,10,14,4,13,53, 13,10,14,5,13,53, 13,10,13,1,2,85, 13,10,13,3,2,85, 13,10,12,1,3,85, 13,10,12,3,3,85, + 13,10,11,1,4,85, 13,10,11,3,4,85, 13,10,10,1,5,85, 13,10,10,3,5,85, 13,10,9,1,6,85, 13,10,9,3,6,85, 13,10,8,1,7,85, 13,10,8,3,7,85, + 13,10,7,1,8,85, 13,10,7,3,8,85, 13,10,6,1,9,85, 13,10,6,3,9,85, 13,10,5,1,10,85, 13,10,5,3,10,85, 13,10,4,1,11,85, 13,10,4,3,11,85, + 13,10,3,1,12,85, 13,10,3,3,12,85, 13,10,2,1,13,85, 13,10,2,3,13,85, 13,10,2,6,2,69, 13,9,13,1,2,86, 13,9,13,4,13,54, 13,9,13,5,13,54, + 13,9,12,1,3,86, 13,9,11,1,4,86, 13,9,10,1,5,86, 13,9,9,1,6,86, 13,9,8,1,7,86, 13,9,7,1,8,86, 13,9,6,1,9,86, 13,9,5,1,10,86, + 13,9,4,1,11,86, 13,9,3,1,12,86, 13,9,2,1,13,86, 13,9,2,6,2,70, 13,8,12,5,13,55, 13,8,2,4,13,55, 13,8,2,6,2,71, 13,7,12,5,13,56, + 13,7,3,4,13,56, 13,7,3,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,4,6,2,73, 13,5,11,4,13,58, 13,5,11,5,13,58, 13,5,3,3,12,90, + 13,5,3,6,2,74, 13,4,10,1,5,91, 13,4,10,5,13,59, 13,4,9,1,6,91, 13,4,8,1,7,91, 13,4,7,1,8,91, 13,4,6,1,9,91, 13,4,5,1,10,91, + 13,4,4,1,11,91, 13,4,3,1,12,91, 13,4,3,6,2,75, 13,3,12,1,3,92, 13,3,12,3,3,92, 13,3,12,4,13,60, 13,3,12,5,13,60, 13,3,11,1,4,92, + 13,3,11,3,4,92, 13,3,11,4,13,60, 13,3,10,1,5,92, 13,3,10,4,13,60, 13,3,9,1,6,92, 13,3,9,4,13,60, 13,3,8,1,7,92, 13,3,8,4,13,60, + 13,3,7,1,8,92, 13,3,7,4,13,60, 13,3,6,1,9,92, 13,3,6,4,13,60, 13,3,5,1,10,92, 13,3,5,4,13,60, 13,3,4,1,11,92, 13,3,4,4,13,60, + 13,3,3,1,12,92, 13,3,3,4,13,60, 13,3,3,6,13,60, 14,8,12,1,3,87, 14,8,12,3,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,11,3,4,87, + 14,8,10,1,5,87, 14,8,10,3,5,87, 14,8,9,1,6,87, 14,8,9,3,6,87, 14,8,8,1,7,87, 14,8,8,3,7,87, 14,8,7,1,8,87, 14,8,7,3,8,87, + 14,8,6,1,9,87, 14,8,6,3,9,87, 14,8,5,1,10,87, 14,8,5,3,10,87, 14,8,4,1,11,87, 14,8,4,3,11,87, 14,8,3,1,12,87, 14,8,3,3,12,87, + 14,8,2,1,13,87, 14,8,2,3,13,87, 14,8,2,4,14,55, 14,8,2,6,1,71, 14,7,12,1,3,88, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, + 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, 14,7,6,1,9,88, 14,7,5,1,10,88, 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,3,4,14,56, + 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, 14,6,12,5,1,73, 14,6,11,1,4,89, 14,6,10,1,5,89, 14,6,9,1,6,89, 14,6,8,1,7,89, + 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, 14,6,4,1,11,89, 14,6,4,6,1,73, 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, + 14,5,10,1,5,90, 14,5,10,4,1,74, 14,5,9,1,6,90, 14,5,9,4,1,74, 14,5,8,1,7,90, 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, + 14,5,6,1,9,90, 14,5,6,4,1,74, 14,5,5,1,10,90, 14,5,5,4,1,74, 14,5,4,1,11,90, 14,5,4,4,1,74, 14,5,3,1,12,90, 14,5,3,3,12,90, + 14,5,3,4,1,74, 14,5,3,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/red_bike.lua b/assets/voxels/red_bike.lua new file mode 100644 index 0000000..d520b9a --- /dev/null +++ b/assets/voxels/red_bike.lua @@ -0,0 +1,341 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "red_bike" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "red_bike", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1972, + count = 1218, + faces = { + 1,10,12,2,4,37, 1,10,12,3,4,37, 1,10,12,5,1,5, 1,10,11,2,5,37, 1,10,11,3,5,37, 1,10,10,2,6,37, 1,10,10,3,6,37, 1,10,9,2,7,37, + 1,10,9,3,7,37, 1,10,8,2,8,37, 1,10,8,3,8,37, 1,10,7,2,9,37, 1,10,7,3,9,37, 1,10,6,2,10,37, 1,10,6,3,10,37, 1,10,5,2,11,37, + 1,10,5,3,11,37, 1,10,4,2,12,37, 1,10,4,3,12,37, 1,10,3,2,13,37, 1,10,3,3,13,37, 1,10,2,2,14,37, 1,10,2,3,14,37, 1,10,2,4,1,5, + 1,10,2,6,14,21, 1,9,12,2,4,38, 1,9,12,4,1,6, 1,9,12,5,1,6, 1,9,11,2,5,38, 1,9,11,4,1,6, 1,9,10,2,6,38, 1,9,10,4,1,6, + 1,9,9,2,7,38, 1,9,9,4,1,6, 1,9,8,2,8,38, 1,9,8,4,1,6, 1,9,7,2,9,38, 1,9,7,4,1,6, 1,9,6,2,10,38, 1,9,6,4,1,6, + 1,9,5,2,11,38, 1,9,5,4,1,6, 1,9,4,2,12,38, 1,9,4,4,1,6, 1,9,3,2,13,38, 1,9,3,4,1,6, 1,9,3,6,14,22, 1,6,13,2,3,41, + 1,6,13,3,3,41, 1,6,13,5,1,9, 1,6,12,2,4,41, 1,6,12,3,4,41, 1,6,11,2,5,41, 1,6,11,3,5,41, 1,6,10,2,6,41, 1,6,10,3,6,41, + 1,6,9,2,7,41, 1,6,9,3,7,41, 1,6,8,2,8,41, 1,6,8,3,8,41, 1,6,7,2,9,41, 1,6,7,3,9,41, 1,6,6,2,10,41, 1,6,6,3,10,41, + 1,6,5,2,11,41, 1,6,5,3,11,41, 1,6,4,2,12,41, 1,6,4,3,12,41, 1,6,3,2,13,41, 1,6,3,3,13,41, 1,6,2,2,14,41, 1,6,2,3,14,41, + 1,6,2,6,1,9, 1,5,13,2,3,42, 1,5,13,4,1,10, 1,5,13,5,1,10, 1,5,12,2,4,42, 1,5,12,4,1,10, 1,5,11,2,5,42, 1,5,11,4,1,10, + 1,5,10,2,6,42, 1,5,10,4,1,10, 1,5,9,2,7,42, 1,5,9,4,1,10, 1,5,8,2,8,42, 1,5,8,4,1,10, 1,5,7,2,9,42, 1,5,7,4,1,10, + 1,5,6,2,10,42, 1,5,6,4,1,10, 1,5,5,2,11,42, 1,5,5,4,1,10, 1,5,4,2,12,42, 1,5,4,4,1,10, 1,5,3,2,13,42, 1,5,3,4,1,10, + 1,5,2,2,14,42, 1,5,2,4,1,10, 1,5,2,6,1,10, 2,12,13,2,3,35, 2,12,13,3,3,35, 2,12,13,5,2,3, 2,12,12,2,4,35, 2,12,12,3,4,35, + 2,12,11,2,5,35, 2,12,11,3,5,35, 2,12,10,2,6,35, 2,12,10,3,6,35, 2,12,9,2,7,35, 2,12,9,3,7,35, 2,12,8,2,8,35, 2,12,8,3,8,35, + 2,12,7,2,9,35, 2,12,7,3,9,35, 2,12,6,2,10,35, 2,12,6,3,10,35, 2,12,5,2,11,35, 2,12,5,3,11,35, 2,12,4,2,12,35, 2,12,4,3,12,35, + 2,12,3,2,13,35, 2,12,3,3,13,35, 2,12,2,2,14,35, 2,12,2,3,14,35, 2,12,2,6,13,19, 2,11,13,2,3,36, 2,11,13,4,2,4, 2,11,13,5,2,4, + 2,11,12,2,4,36, 2,11,11,2,5,36, 2,11,10,2,6,36, 2,11,9,2,7,36, 2,11,8,2,8,36, 2,11,7,2,9,36, 2,11,6,2,10,36, 2,11,5,2,11,36, + 2,11,4,2,12,36, 2,11,3,2,13,36, 2,11,2,2,14,36, 2,11,2,6,13,20, 2,10,12,5,2,5, 2,10,2,4,2,5, 2,10,2,6,13,21, 2,9,12,5,2,6, + 2,9,3,4,2,6, 2,9,3,6,13,22, 2,8,12,2,4,39, 2,8,12,5,2,7, 2,8,11,2,5,39, 2,8,10,2,6,39, 2,8,9,2,7,39, 2,8,8,2,8,39, + 2,8,7,2,9,39, 2,8,6,2,10,39, 2,8,5,2,11,39, 2,8,4,2,12,39, 2,8,4,6,13,23, 2,7,13,2,3,40, 2,7,13,3,3,40, 2,7,13,5,2,8, + 2,7,12,2,4,40, 2,7,11,2,5,40, 2,7,10,2,6,40, 2,7,9,2,7,40, 2,7,8,2,8,40, 2,7,7,2,9,40, 2,7,6,2,10,40, 2,7,5,2,11,40, + 2,7,4,2,12,40, 2,7,3,2,13,40, 2,7,3,3,13,40, 2,7,3,6,13,24, 2,6,13,5,2,9, 2,6,2,3,14,41, 2,6,2,6,13,25, 2,5,13,5,2,10, + 2,5,2,6,2,10, 2,4,14,2,2,43, 2,4,14,3,2,43, 2,4,14,5,2,11, 2,4,13,2,3,43, 2,4,12,2,4,43, 2,4,11,2,5,43, 2,4,10,2,6,43, + 2,4,9,2,7,43, 2,4,8,2,8,43, 2,4,7,2,9,43, 2,4,6,2,10,43, 2,4,5,2,11,43, 2,4,4,2,12,43, 2,4,3,2,13,43, 2,4,2,2,14,43, + 2,4,2,6,13,27, 2,3,15,2,1,44, 2,3,15,3,1,44, 2,3,15,4,13,28, 2,3,15,5,13,28, 2,3,14,2,2,44, 2,3,14,4,13,28, 2,3,13,2,3,44, + 2,3,13,4,13,28, 2,3,12,2,4,44, 2,3,12,4,13,28, 2,3,11,2,5,44, 2,3,11,4,13,28, 2,3,10,2,6,44, 2,3,10,4,13,28, 2,3,9,2,7,44, + 2,3,9,4,13,28, 2,3,8,2,8,44, 2,3,8,4,13,28, 2,3,7,2,9,44, 2,3,7,4,13,28, 2,3,6,2,10,44, 2,3,6,4,13,28, 2,3,5,2,11,44, + 2,3,5,4,13,28, 2,3,4,2,12,44, 2,3,4,4,13,28, 2,3,3,2,13,44, 2,3,3,4,13,28, 2,3,2,2,14,44, 2,3,2,4,13,28, 2,3,1,2,15,44, + 2,3,1,3,15,44, 2,3,1,4,13,28, 2,3,1,6,13,28, 3,14,12,2,4,33, 3,14,12,3,4,33, 3,14,12,5,3,1, 3,14,11,2,5,33, 3,14,11,3,5,33, + 3,14,10,2,6,33, 3,14,10,3,6,33, 3,14,9,2,7,33, 3,14,9,3,7,33, 3,14,8,2,8,33, 3,14,8,3,8,33, 3,14,7,2,9,33, 3,14,7,3,9,33, + 3,14,6,2,10,33, 3,14,6,3,10,33, 3,14,5,2,11,33, 3,14,5,3,11,33, 3,14,4,2,12,33, 3,14,4,3,12,33, 3,14,3,2,13,33, 3,14,3,3,13,33, + 3,14,3,6,12,17, 3,13,12,2,4,34, 3,13,12,5,3,2, 3,13,11,2,5,34, 3,13,10,2,6,34, 3,13,9,2,7,34, 3,13,8,2,8,34, 3,13,7,2,9,34, + 3,13,6,2,10,34, 3,13,5,2,11,34, 3,13,4,2,12,34, 3,13,3,2,13,34, 3,13,3,6,12,18, 3,12,13,3,3,35, 3,12,13,5,3,3, 3,12,2,3,14,35, + 3,12,2,6,12,19, 3,11,13,4,3,4, 3,11,13,5,3,4, 3,11,2,6,12,20, 3,10,12,5,3,5, 3,10,2,4,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, + 3,9,3,4,3,6, 3,9,3,6,12,22, 3,8,12,5,3,7, 3,8,4,6,12,23, 3,7,13,3,3,40, 3,7,13,5,3,8, 3,7,3,3,13,40, 3,7,3,6,12,24, + 3,6,13,5,3,9, 3,6,2,3,14,41, 3,6,2,6,12,25, 3,5,13,5,3,10, 3,5,2,6,12,26, 3,4,14,3,2,43, 3,4,14,5,3,11, 3,4,2,6,12,27, + 3,3,15,3,1,44, 3,3,15,5,3,12, 3,3,1,3,15,44, 3,3,1,6,12,28, 3,2,15,2,1,45, 3,2,15,4,12,29, 3,2,15,5,12,29, 3,2,14,2,2,45, + 3,2,14,4,12,29, 3,2,13,2,3,45, 3,2,13,4,12,29, 3,2,12,2,4,45, 3,2,12,4,12,29, 3,2,11,2,5,45, 3,2,11,4,12,29, 3,2,10,2,6,45, + 3,2,10,4,12,29, 3,2,9,2,7,45, 3,2,9,4,12,29, 3,2,8,2,8,45, 3,2,8,4,12,29, 3,2,7,2,9,45, 3,2,7,4,12,29, 3,2,6,2,10,45, + 3,2,6,4,12,29, 3,2,5,2,11,45, 3,2,5,4,12,29, 3,2,4,2,12,45, 3,2,4,4,12,29, 3,2,3,2,13,45, 3,2,3,4,12,29, 3,2,2,2,14,45, + 3,2,2,4,12,29, 3,2,1,2,15,45, 3,2,1,4,12,29, 3,2,1,6,12,29, 4,15,11,2,5,32, 4,15,11,3,5,32, 4,15,11,5,4,0, 4,15,10,2,6,32, + 4,15,10,3,6,32, 4,15,9,2,7,32, 4,15,9,3,7,32, 4,15,8,2,8,32, 4,15,8,3,8,32, 4,15,7,2,9,32, 4,15,7,3,9,32, 4,15,6,2,10,32, + 4,15,6,3,10,32, 4,15,5,2,11,32, 4,15,5,3,11,32, 4,15,4,2,12,32, 4,15,4,3,12,32, 4,15,4,6,11,16, 4,14,12,3,4,33, 4,14,12,5,4,1, + 4,14,3,3,13,33, 4,14,3,6,11,17, 4,13,12,5,4,2, 4,13,3,6,11,18, 4,12,13,3,3,35, 4,12,13,5,4,3, 4,12,2,3,14,35, 4,12,2,6,11,19, + 4,11,13,4,4,4, 4,11,13,5,4,4, 4,11,2,6,11,20, 4,10,12,5,4,5, 4,10,2,4,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,3,4,4,6, + 4,9,3,6,11,22, 4,8,12,5,4,7, 4,8,4,6,11,23, 4,7,13,3,3,40, 4,7,13,5,4,8, 4,7,3,3,13,40, 4,7,3,6,11,24, 4,6,13,5,4,9, + 4,6,2,3,14,41, 4,6,2,6,11,25, 4,5,13,5,4,10, 4,5,2,6,11,26, 4,4,14,3,2,43, 4,4,14,5,4,11, 4,4,2,6,11,27, 4,3,15,3,1,44, + 4,3,15,5,4,12, 4,3,1,3,15,44, 4,3,1,6,11,28, 4,2,15,4,4,13, 4,2,15,5,4,13, 4,2,14,4,4,13, 4,2,13,4,4,13, 4,2,12,4,4,13, + 4,2,11,4,4,13, 4,2,10,4,4,13, 4,2,9,4,4,13, 4,2,8,4,4,13, 4,2,7,4,4,13, 4,2,6,4,4,13, 4,2,5,4,4,13, 4,2,4,4,4,13, + 4,2,3,4,4,13, 4,2,2,4,4,13, 4,2,1,4,4,13, 4,2,1,6,11,29, 5,15,11,3,5,32, 5,15,11,5,5,0, 5,15,10,3,6,32, 5,15,9,3,7,32, + 5,15,8,3,8,32, 5,15,7,3,9,32, 5,15,6,3,10,32, 5,15,5,3,11,32, 5,15,4,3,12,32, 5,15,4,6,10,16, 5,14,12,3,4,33, 5,14,12,5,5,1, + 5,14,3,3,13,33, 5,14,3,6,10,17, 5,13,12,5,5,2, 5,13,3,6,10,18, 5,12,13,3,3,35, 5,12,13,5,5,3, 5,12,2,3,14,35, 5,12,2,6,10,19, + 5,11,13,4,5,4, 5,11,13,5,5,4, 5,11,2,6,10,20, 5,10,12,5,5,5, 5,10,2,4,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,3,4,5,6, + 5,9,3,6,10,22, 5,8,12,5,5,7, 5,8,4,6,10,23, 5,7,13,3,3,40, 5,7,13,5,5,8, 5,7,3,3,13,40, 5,7,3,6,10,24, 5,6,13,5,5,9, + 5,6,2,3,14,41, 5,6,2,6,10,25, 5,5,13,5,5,10, 5,5,2,6,10,26, 5,4,14,3,2,43, 5,4,14,5,5,11, 5,4,2,6,10,27, 5,3,15,3,1,44, + 5,3,15,5,5,12, 5,3,1,3,15,44, 5,3,1,6,10,28, 5,2,15,4,5,13, 5,2,15,5,5,13, 5,2,14,4,5,13, 5,2,13,4,5,13, 5,2,12,4,5,13, + 5,2,11,4,5,13, 5,2,10,4,5,13, 5,2,9,4,5,13, 5,2,8,4,5,13, 5,2,7,4,5,13, 5,2,6,4,5,13, 5,2,5,4,5,13, 5,2,4,4,5,13, + 5,2,3,4,5,13, 5,2,2,4,5,13, 5,2,1,4,5,13, 5,2,1,6,10,29, 6,15,11,3,5,32, 6,15,11,5,6,0, 6,15,10,3,6,32, 6,15,9,3,7,32, + 6,15,8,3,8,32, 6,15,7,3,9,32, 6,15,6,3,10,32, 6,15,5,3,11,32, 6,15,4,3,12,32, 6,15,4,6,9,16, 6,14,12,3,4,33, 6,14,12,5,6,1, + 6,14,3,3,13,33, 6,14,3,6,9,17, 6,13,12,5,6,2, 6,13,3,6,9,18, 6,12,13,3,3,35, 6,12,13,5,6,3, 6,12,2,3,14,35, 6,12,2,6,9,19, + 6,11,13,4,6,4, 6,11,13,5,6,4, 6,11,2,6,9,20, 6,10,12,5,6,5, 6,10,2,4,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,3,4,6,6, + 6,9,3,6,9,22, 6,8,12,5,6,7, 6,8,4,6,9,23, 6,7,13,3,3,40, 6,7,13,5,6,8, 6,7,3,3,13,40, 6,7,3,6,9,24, 6,6,13,5,6,9, + 6,6,2,3,14,41, 6,6,2,6,9,25, 6,5,13,5,6,10, 6,5,2,6,9,26, 6,4,14,3,2,43, 6,4,14,5,6,11, 6,4,2,6,9,27, 6,3,15,3,1,44, + 6,3,15,5,6,12, 6,3,1,3,15,44, 6,3,1,6,9,28, 6,2,15,4,6,13, 6,2,15,5,6,13, 6,2,1,4,6,13, 6,2,1,6,9,29, 6,1,14,2,2,46, + 6,1,14,4,6,14, 6,1,14,5,6,14, 6,1,13,2,3,46, 6,1,13,4,6,14, 6,1,12,2,4,46, 6,1,12,4,6,14, 6,1,11,2,5,46, 6,1,11,4,6,14, + 6,1,10,2,6,46, 6,1,10,4,6,14, 6,1,9,2,7,46, 6,1,9,4,6,14, 6,1,8,2,8,46, 6,1,8,4,6,14, 6,1,7,2,9,46, 6,1,7,4,6,14, + 6,1,6,2,10,46, 6,1,6,4,6,14, 6,1,5,2,11,46, 6,1,5,4,6,14, 6,1,4,2,12,46, 6,1,4,4,6,14, 6,1,3,2,13,46, 6,1,3,4,6,14, + 6,1,2,2,14,46, 6,1,2,4,6,14, 6,1,2,6,9,30, 7,15,11,3,5,32, 7,15,11,5,7,0, 7,15,10,3,6,32, 7,15,9,3,7,32, 7,15,8,3,8,32, + 7,15,7,3,9,32, 7,15,6,3,10,32, 7,15,5,3,11,32, 7,15,4,3,12,32, 7,15,4,6,8,16, 7,14,12,3,4,33, 7,14,12,5,7,1, 7,14,3,3,13,33, + 7,14,3,6,8,17, 7,13,12,5,7,2, 7,13,3,6,8,18, 7,12,13,3,3,35, 7,12,13,5,7,3, 7,12,2,3,14,35, 7,12,2,6,8,19, 7,11,13,4,7,4, + 7,11,13,5,7,4, 7,11,2,6,8,20, 7,10,12,5,7,5, 7,10,2,4,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,3,4,7,6, 7,9,3,6,8,22, + 7,8,12,5,7,7, 7,8,4,6,8,23, 7,7,13,3,3,40, 7,7,13,5,7,8, 7,7,3,3,13,40, 7,7,3,6,8,24, 7,6,13,5,7,9, 7,6,2,3,14,41, + 7,6,2,6,8,25, 7,5,13,5,7,10, 7,5,2,6,8,26, 7,4,14,3,2,43, 7,4,14,5,7,11, 7,4,2,6,8,27, 7,3,15,3,1,44, 7,3,15,5,7,12, + 7,3,1,3,15,44, 7,3,1,6,8,28, 7,2,15,4,7,13, 7,2,15,5,7,13, 7,2,1,4,7,13, 7,2,1,6,8,29, 7,1,14,4,7,14, 7,1,14,5,7,14, + 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,2,4,7,14, 7,1,2,6,8,30, 7,0,13,2,3,47, + 7,0,13,5,7,15, 7,0,12,2,4,47, 7,0,11,2,5,47, 7,0,11,6,8,31, 7,0,5,2,11,47, 7,0,5,5,7,15, 7,0,4,2,12,47, 7,0,3,2,13,47, + 7,0,3,6,8,31, 8,15,11,3,5,32, 8,15,11,5,8,0, 8,15,10,3,6,32, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, + 8,15,5,3,11,32, 8,15,4,3,12,32, 8,15,4,6,7,16, 8,14,12,3,4,33, 8,14,12,5,8,1, 8,14,3,3,13,33, 8,14,3,6,7,17, 8,13,12,5,8,2, + 8,13,3,6,7,18, 8,12,13,3,3,35, 8,12,13,5,8,3, 8,12,2,3,14,35, 8,12,2,6,7,19, 8,11,13,4,8,4, 8,11,13,5,8,4, 8,11,2,6,7,20, + 8,10,12,5,8,5, 8,10,2,4,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,3,4,8,6, 8,9,3,6,7,22, 8,8,12,5,8,7, 8,8,4,6,7,23, + 8,7,13,3,3,40, 8,7,13,5,8,8, 8,7,3,3,13,40, 8,7,3,6,7,24, 8,6,13,5,8,9, 8,6,2,3,14,41, 8,6,2,6,7,25, 8,5,13,5,8,10, + 8,5,2,6,7,26, 8,4,14,3,2,43, 8,4,14,5,8,11, 8,4,2,6,7,27, 8,3,15,3,1,44, 8,3,15,5,8,12, 8,3,1,3,15,44, 8,3,1,6,7,28, + 8,2,15,4,8,13, 8,2,15,5,8,13, 8,2,1,4,8,13, 8,2,1,6,7,29, 8,1,14,4,8,14, 8,1,14,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, + 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,2,4,8,14, 8,1,2,6,7,30, 8,0,13,1,3,47, 8,0,13,5,8,15, 8,0,12,1,4,47, + 8,0,11,1,5,47, 8,0,11,6,7,31, 8,0,5,1,11,47, 8,0,5,5,8,15, 8,0,4,1,12,47, 8,0,3,1,13,47, 8,0,3,6,7,31, 9,15,11,3,5,32, + 9,15,11,5,9,0, 9,15,10,3,6,32, 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, 9,15,6,3,10,32, 9,15,5,3,11,32, 9,15,4,3,12,32, + 9,15,4,6,6,16, 9,14,12,3,4,33, 9,14,12,5,9,1, 9,14,3,3,13,33, 9,14,3,6,6,17, 9,13,12,5,9,2, 9,13,3,6,6,18, 9,12,13,3,3,35, + 9,12,13,5,9,3, 9,12,2,3,14,35, 9,12,2,6,6,19, 9,11,13,4,9,4, 9,11,13,5,9,4, 9,11,2,6,6,20, 9,10,12,5,9,5, 9,10,2,4,9,5, + 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,3,4,9,6, 9,9,3,6,6,22, 9,8,12,5,9,7, 9,8,4,6,6,23, 9,7,13,3,3,40, 9,7,13,5,9,8, + 9,7,3,3,13,40, 9,7,3,6,6,24, 9,6,13,5,9,9, 9,6,2,3,14,41, 9,6,2,6,6,25, 9,5,13,5,9,10, 9,5,2,6,6,26, 9,4,14,3,2,43, + 9,4,14,5,9,11, 9,4,2,6,6,27, 9,3,15,3,1,44, 9,3,15,5,9,12, 9,3,1,3,15,44, 9,3,1,6,6,28, 9,2,15,4,9,13, 9,2,15,5,9,13, + 9,2,1,4,9,13, 9,2,1,6,6,29, 9,1,14,1,2,46, 9,1,14,4,9,14, 9,1,14,5,9,14, 9,1,13,1,3,46, 9,1,13,4,9,14, 9,1,12,1,4,46, + 9,1,12,4,9,14, 9,1,11,1,5,46, 9,1,11,4,9,14, 9,1,10,1,6,46, 9,1,10,4,9,14, 9,1,9,1,7,46, 9,1,9,4,9,14, 9,1,8,1,8,46, + 9,1,8,4,9,14, 9,1,7,1,9,46, 9,1,7,4,9,14, 9,1,6,1,10,46, 9,1,6,4,9,14, 9,1,5,1,11,46, 9,1,5,4,9,14, 9,1,4,1,12,46, + 9,1,4,4,9,14, 9,1,3,1,13,46, 9,1,3,4,9,14, 9,1,2,1,14,46, 9,1,2,4,9,14, 9,1,2,6,6,30, 10,15,11,3,5,32, 10,15,11,5,10,0, + 10,15,10,3,6,32, 10,15,9,3,7,32, 10,15,8,3,8,32, 10,15,7,3,9,32, 10,15,6,3,10,32, 10,15,5,3,11,32, 10,15,4,3,12,32, 10,15,4,6,5,16, + 10,14,12,3,4,33, 10,14,12,5,10,1, 10,14,3,3,13,33, 10,14,3,6,5,17, 10,13,12,5,10,2, 10,13,3,6,5,18, 10,12,13,3,3,35, 10,12,13,5,10,3, + 10,12,2,3,14,35, 10,12,2,6,5,19, 10,11,13,4,10,4, 10,11,13,5,10,4, 10,11,2,6,5,20, 10,10,12,5,10,5, 10,10,2,4,10,5, 10,10,2,6,5,21, + 10,9,12,5,10,6, 10,9,3,4,10,6, 10,9,3,6,5,22, 10,8,12,5,10,7, 10,8,4,6,5,23, 10,7,13,3,3,40, 10,7,13,5,10,8, 10,7,3,3,13,40, + 10,7,3,6,5,24, 10,6,13,5,10,9, 10,6,2,3,14,41, 10,6,2,6,5,25, 10,5,13,5,10,10, 10,5,2,6,5,26, 10,4,14,3,2,43, 10,4,14,5,10,11, + 10,4,2,6,5,27, 10,3,15,3,1,44, 10,3,15,5,10,12, 10,3,1,3,15,44, 10,3,1,6,5,28, 10,2,15,4,10,13, 10,2,15,5,10,13, 10,2,14,4,10,13, + 10,2,13,4,10,13, 10,2,12,4,10,13, 10,2,11,4,10,13, 10,2,10,4,10,13, 10,2,9,4,10,13, 10,2,8,4,10,13, 10,2,7,4,10,13, 10,2,6,4,10,13, + 10,2,5,4,10,13, 10,2,4,4,10,13, 10,2,3,4,10,13, 10,2,2,4,10,13, 10,2,1,4,10,13, 10,2,1,6,5,29, 11,15,11,1,5,32, 11,15,11,3,5,32, + 11,15,11,5,11,0, 11,15,10,1,6,32, 11,15,10,3,6,32, 11,15,9,1,7,32, 11,15,9,3,7,32, 11,15,8,1,8,32, 11,15,8,3,8,32, 11,15,7,1,9,32, + 11,15,7,3,9,32, 11,15,6,1,10,32, 11,15,6,3,10,32, 11,15,5,1,11,32, 11,15,5,3,11,32, 11,15,4,1,12,32, 11,15,4,3,12,32, 11,15,4,6,4,16, + 11,14,12,3,4,33, 11,14,12,5,11,1, 11,14,3,3,13,33, 11,14,3,6,4,17, 11,13,12,5,11,2, 11,13,3,6,4,18, 11,12,13,3,3,35, 11,12,13,5,11,3, + 11,12,2,3,14,35, 11,12,2,6,4,19, 11,11,13,4,11,4, 11,11,13,5,11,4, 11,11,2,6,4,20, 11,10,12,5,11,5, 11,10,2,4,11,5, 11,10,2,6,4,21, + 11,9,12,5,11,6, 11,9,3,4,11,6, 11,9,3,6,4,22, 11,8,12,5,11,7, 11,8,4,6,4,23, 11,7,13,3,3,40, 11,7,13,5,11,8, 11,7,3,3,13,40, + 11,7,3,6,4,24, 11,6,13,5,11,9, 11,6,2,3,14,41, 11,6,2,6,4,25, 11,5,13,5,11,10, 11,5,2,6,4,26, 11,4,14,3,2,43, 11,4,14,5,11,11, + 11,4,2,6,4,27, 11,3,15,3,1,44, 11,3,15,5,11,12, 11,3,1,3,15,44, 11,3,1,6,4,28, 11,2,15,4,11,13, 11,2,15,5,11,13, 11,2,14,4,11,13, + 11,2,13,4,11,13, 11,2,12,4,11,13, 11,2,11,4,11,13, 11,2,10,4,11,13, 11,2,9,4,11,13, 11,2,8,4,11,13, 11,2,7,4,11,13, 11,2,6,4,11,13, + 11,2,5,4,11,13, 11,2,4,4,11,13, 11,2,3,4,11,13, 11,2,2,4,11,13, 11,2,1,4,11,13, 11,2,1,6,4,29, 12,14,12,1,4,33, 12,14,12,3,4,33, + 12,14,12,5,12,1, 12,14,11,1,5,33, 12,14,11,3,5,33, 12,14,10,1,6,33, 12,14,10,3,6,33, 12,14,9,1,7,33, 12,14,9,3,7,33, 12,14,8,1,8,33, + 12,14,8,3,8,33, 12,14,7,1,9,33, 12,14,7,3,9,33, 12,14,6,1,10,33, 12,14,6,3,10,33, 12,14,5,1,11,33, 12,14,5,3,11,33, 12,14,4,1,12,33, + 12,14,4,3,12,33, 12,14,3,1,13,33, 12,14,3,3,13,33, 12,14,3,6,3,17, 12,13,12,1,4,34, 12,13,12,5,12,2, 12,13,11,1,5,34, 12,13,10,1,6,34, + 12,13,9,1,7,34, 12,13,8,1,8,34, 12,13,7,1,9,34, 12,13,6,1,10,34, 12,13,5,1,11,34, 12,13,4,1,12,34, 12,13,3,1,13,34, 12,13,3,6,3,18, + 12,12,13,3,3,35, 12,12,13,5,12,3, 12,12,2,3,14,35, 12,12,2,6,3,19, 12,11,13,4,12,4, 12,11,13,5,12,4, 12,11,2,6,3,20, 12,10,12,5,12,5, + 12,10,2,4,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,3,4,12,6, 12,9,3,6,3,22, 12,8,12,5,12,7, 12,8,4,6,3,23, 12,7,13,3,3,40, + 12,7,13,5,12,8, 12,7,3,3,13,40, 12,7,3,6,3,24, 12,6,13,5,12,9, 12,6,2,3,14,41, 12,6,2,6,3,25, 12,5,13,5,12,10, 12,5,2,6,3,26, + 12,4,14,3,2,43, 12,4,14,5,12,11, 12,4,2,6,3,27, 12,3,15,3,1,44, 12,3,15,5,12,12, 12,3,1,3,15,44, 12,3,1,6,3,28, 12,2,15,1,1,45, + 12,2,15,4,3,29, 12,2,15,5,3,29, 12,2,14,1,2,45, 12,2,14,4,3,29, 12,2,13,1,3,45, 12,2,13,4,3,29, 12,2,12,1,4,45, 12,2,12,4,3,29, + 12,2,11,1,5,45, 12,2,11,4,3,29, 12,2,10,1,6,45, 12,2,10,4,3,29, 12,2,9,1,7,45, 12,2,9,4,3,29, 12,2,8,1,8,45, 12,2,8,4,3,29, + 12,2,7,1,9,45, 12,2,7,4,3,29, 12,2,6,1,10,45, 12,2,6,4,3,29, 12,2,5,1,11,45, 12,2,5,4,3,29, 12,2,4,1,12,45, 12,2,4,4,3,29, + 12,2,3,1,13,45, 12,2,3,4,3,29, 12,2,2,1,14,45, 12,2,2,4,3,29, 12,2,1,1,15,45, 12,2,1,4,3,29, 12,2,1,6,3,29, 13,12,13,1,3,35, + 13,12,13,3,3,35, 13,12,13,5,13,3, 13,12,12,1,4,35, 13,12,12,3,4,35, 13,12,11,1,5,35, 13,12,11,3,5,35, 13,12,10,1,6,35, 13,12,10,3,6,35, + 13,12,9,1,7,35, 13,12,9,3,7,35, 13,12,8,1,8,35, 13,12,8,3,8,35, 13,12,7,1,9,35, 13,12,7,3,9,35, 13,12,6,1,10,35, 13,12,6,3,10,35, + 13,12,5,1,11,35, 13,12,5,3,11,35, 13,12,4,1,12,35, 13,12,4,3,12,35, 13,12,3,1,13,35, 13,12,3,3,13,35, 13,12,2,1,14,35, 13,12,2,3,14,35, + 13,12,2,6,2,19, 13,11,13,1,3,36, 13,11,13,4,13,4, 13,11,13,5,13,4, 13,11,12,1,4,36, 13,11,11,1,5,36, 13,11,10,1,6,36, 13,11,9,1,7,36, + 13,11,8,1,8,36, 13,11,7,1,9,36, 13,11,6,1,10,36, 13,11,5,1,11,36, 13,11,4,1,12,36, 13,11,3,1,13,36, 13,11,2,1,14,36, 13,11,2,6,2,20, + 13,10,12,5,13,5, 13,10,2,4,13,5, 13,10,2,6,2,21, 13,9,12,5,13,6, 13,9,3,4,13,6, 13,9,3,6,2,22, 13,8,12,1,4,39, 13,8,12,5,13,7, + 13,8,11,1,5,39, 13,8,10,1,6,39, 13,8,9,1,7,39, 13,8,8,1,8,39, 13,8,7,1,9,39, 13,8,6,1,10,39, 13,8,5,1,11,39, 13,8,4,1,12,39, + 13,8,4,6,2,23, 13,7,13,1,3,40, 13,7,13,3,3,40, 13,7,13,5,13,8, 13,7,12,1,4,40, 13,7,11,1,5,40, 13,7,10,1,6,40, 13,7,9,1,7,40, + 13,7,8,1,8,40, 13,7,7,1,9,40, 13,7,6,1,10,40, 13,7,5,1,11,40, 13,7,4,1,12,40, 13,7,3,1,13,40, 13,7,3,3,13,40, 13,7,3,6,2,24, + 13,6,13,5,13,9, 13,6,2,3,14,41, 13,6,2,6,2,25, 13,5,13,5,13,10, 13,5,2,6,13,10, 13,4,14,1,2,43, 13,4,14,3,2,43, 13,4,14,5,13,11, + 13,4,13,1,3,43, 13,4,12,1,4,43, 13,4,11,1,5,43, 13,4,10,1,6,43, 13,4,9,1,7,43, 13,4,8,1,8,43, 13,4,7,1,9,43, 13,4,6,1,10,43, + 13,4,5,1,11,43, 13,4,4,1,12,43, 13,4,3,1,13,43, 13,4,2,1,14,43, 13,4,2,6,2,27, 13,3,15,1,1,44, 13,3,15,3,1,44, 13,3,15,4,2,28, + 13,3,15,5,2,28, 13,3,14,1,2,44, 13,3,14,4,2,28, 13,3,13,1,3,44, 13,3,13,4,2,28, 13,3,12,1,4,44, 13,3,12,4,2,28, 13,3,11,1,5,44, + 13,3,11,4,2,28, 13,3,10,1,6,44, 13,3,10,4,2,28, 13,3,9,1,7,44, 13,3,9,4,2,28, 13,3,8,1,8,44, 13,3,8,4,2,28, 13,3,7,1,9,44, + 13,3,7,4,2,28, 13,3,6,1,10,44, 13,3,6,4,2,28, 13,3,5,1,11,44, 13,3,5,4,2,28, 13,3,4,1,12,44, 13,3,4,4,2,28, 13,3,3,1,13,44, + 13,3,3,4,2,28, 13,3,2,1,14,44, 13,3,2,4,2,28, 13,3,1,1,15,44, 13,3,1,3,15,44, 13,3,1,4,2,28, 13,3,1,6,2,28, 14,10,12,1,4,37, + 14,10,12,3,4,37, 14,10,12,5,14,5, 14,10,11,1,5,37, 14,10,11,3,5,37, 14,10,10,1,6,37, 14,10,10,3,6,37, 14,10,9,1,7,37, 14,10,9,3,7,37, + 14,10,8,1,8,37, 14,10,8,3,8,37, 14,10,7,1,9,37, 14,10,7,3,9,37, 14,10,6,1,10,37, 14,10,6,3,10,37, 14,10,5,1,11,37, 14,10,5,3,11,37, + 14,10,4,1,12,37, 14,10,4,3,12,37, 14,10,3,1,13,37, 14,10,3,3,13,37, 14,10,2,1,14,37, 14,10,2,3,14,37, 14,10,2,4,14,5, 14,10,2,6,1,21, + 14,9,12,1,4,38, 14,9,12,4,14,6, 14,9,12,5,14,6, 14,9,11,1,5,38, 14,9,11,4,14,6, 14,9,10,1,6,38, 14,9,10,4,14,6, 14,9,9,1,7,38, + 14,9,9,4,14,6, 14,9,8,1,8,38, 14,9,8,4,14,6, 14,9,7,1,9,38, 14,9,7,4,14,6, 14,9,6,1,10,38, 14,9,6,4,14,6, 14,9,5,1,11,38, + 14,9,5,4,14,6, 14,9,4,1,12,38, 14,9,4,4,14,6, 14,9,3,1,13,38, 14,9,3,4,14,6, 14,9,3,6,1,22, 14,6,13,1,3,41, 14,6,13,3,3,41, + 14,6,13,5,14,9, 14,6,12,1,4,41, 14,6,12,3,4,41, 14,6,11,1,5,41, 14,6,11,3,5,41, 14,6,10,1,6,41, 14,6,10,3,6,41, 14,6,9,1,7,41, + 14,6,9,3,7,41, 14,6,8,1,8,41, 14,6,8,3,8,41, 14,6,7,1,9,41, 14,6,7,3,9,41, 14,6,6,1,10,41, 14,6,6,3,10,41, 14,6,5,1,11,41, + 14,6,5,3,11,41, 14,6,4,1,12,41, 14,6,4,3,12,41, 14,6,3,1,13,41, 14,6,3,3,13,41, 14,6,2,1,14,41, 14,6,2,3,14,41, 14,6,2,6,14,9, + 14,5,13,1,3,42, 14,5,13,4,14,10, 14,5,13,5,14,10, 14,5,12,1,4,42, 14,5,12,4,14,10, 14,5,11,1,5,42, 14,5,11,4,14,10, 14,5,10,1,6,42, + 14,5,10,4,14,10, 14,5,9,1,7,42, 14,5,9,4,14,10, 14,5,8,1,8,42, 14,5,8,4,14,10, 14,5,7,1,9,42, 14,5,7,4,14,10, 14,5,6,1,10,42, + 14,5,6,4,14,10, 14,5,5,1,11,42, 14,5,5,4,14,10, 14,5,4,1,12,42, 14,5,4,4,14,10, 14,5,3,1,13,42, 14,5,3,4,14,10, 14,5,2,1,14,42, + 14,5,2,4,14,10, 14,5,2,6,14,10, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 2030, + count = 1248, + faces = { + 1,10,12,2,3,85, 1,10,12,3,3,85, 1,10,12,5,0,53, 1,10,11,2,4,85, 1,10,11,3,4,85, 1,10,10,2,5,85, 1,10,10,3,5,85, 1,10,9,2,6,85, + 1,10,9,3,6,85, 1,10,8,2,7,85, 1,10,8,3,7,85, 1,10,7,2,8,85, 1,10,7,3,8,85, 1,10,6,2,9,85, 1,10,6,3,9,85, 1,10,5,2,10,85, + 1,10,5,3,10,85, 1,10,4,2,11,85, 1,10,4,3,11,85, 1,10,3,2,12,85, 1,10,3,3,12,85, 1,10,2,2,13,85, 1,10,2,3,13,85, 1,10,2,4,0,53, + 1,10,2,6,13,69, 1,9,12,2,3,86, 1,9,12,4,0,54, 1,9,12,5,0,54, 1,9,11,2,4,86, 1,9,11,4,0,54, 1,9,10,2,5,86, 1,9,10,4,0,54, + 1,9,9,2,6,86, 1,9,9,4,0,54, 1,9,8,2,7,86, 1,9,8,4,0,54, 1,9,7,2,8,86, 1,9,7,4,0,54, 1,9,6,2,9,86, 1,9,6,4,0,54, + 1,9,5,2,10,86, 1,9,5,4,0,54, 1,9,4,2,11,86, 1,9,4,4,0,54, 1,9,3,2,12,86, 1,9,3,4,0,54, 1,9,3,6,13,70, 1,6,13,2,2,89, + 1,6,13,3,2,89, 1,6,13,5,0,57, 1,6,12,2,3,89, 1,6,12,3,3,89, 1,6,11,2,4,89, 1,6,11,3,4,89, 1,6,10,2,5,89, 1,6,10,3,5,89, + 1,6,9,2,6,89, 1,6,9,3,6,89, 1,6,8,2,7,89, 1,6,8,3,7,89, 1,6,7,2,8,89, 1,6,7,3,8,89, 1,6,6,2,9,89, 1,6,6,3,9,89, + 1,6,5,2,10,89, 1,6,5,3,10,89, 1,6,4,2,11,89, 1,6,4,3,11,89, 1,6,3,2,12,89, 1,6,3,3,12,89, 1,6,2,2,13,89, 1,6,2,3,13,89, + 1,6,2,6,0,57, 1,5,13,2,2,90, 1,5,13,4,0,58, 1,5,13,5,0,58, 1,5,12,2,3,90, 1,5,12,4,0,58, 1,5,11,2,4,90, 1,5,11,4,0,58, + 1,5,10,2,5,90, 1,5,10,4,0,58, 1,5,9,2,6,90, 1,5,9,4,0,58, 1,5,8,2,7,90, 1,5,8,4,0,58, 1,5,7,2,8,90, 1,5,7,4,0,58, + 1,5,6,2,9,90, 1,5,6,4,0,58, 1,5,5,2,10,90, 1,5,5,4,0,58, 1,5,4,2,11,90, 1,5,4,4,0,58, 1,5,3,2,12,90, 1,5,3,4,0,58, + 1,5,2,2,13,90, 1,5,2,4,0,58, 1,5,2,6,0,58, 2,12,13,2,2,83, 2,12,13,3,2,83, 2,12,13,5,1,51, 2,12,12,2,3,83, 2,12,12,3,3,83, + 2,12,11,2,4,83, 2,12,11,3,4,83, 2,12,10,2,5,83, 2,12,10,3,5,83, 2,12,9,2,6,83, 2,12,9,3,6,83, 2,12,8,2,7,83, 2,12,8,3,7,83, + 2,12,7,2,8,83, 2,12,7,3,8,83, 2,12,6,2,9,83, 2,12,6,3,9,83, 2,12,5,2,10,83, 2,12,5,3,10,83, 2,12,4,2,11,83, 2,12,4,3,11,83, + 2,12,3,2,12,83, 2,12,3,3,12,83, 2,12,2,2,13,83, 2,12,2,3,13,83, 2,12,2,6,12,67, 2,11,13,2,2,84, 2,11,13,4,1,52, 2,11,13,5,1,52, + 2,11,12,2,3,84, 2,11,11,2,4,84, 2,11,10,2,5,84, 2,11,9,2,6,84, 2,11,8,2,7,84, 2,11,7,2,8,84, 2,11,6,2,9,84, 2,11,5,2,10,84, + 2,11,4,2,11,84, 2,11,3,2,12,84, 2,11,2,2,13,84, 2,11,2,6,12,68, 2,10,12,5,1,53, 2,10,2,4,1,53, 2,10,2,6,12,69, 2,9,12,5,1,54, + 2,9,3,4,1,54, 2,9,3,6,12,70, 2,8,12,2,3,87, 2,8,12,5,1,55, 2,8,11,2,4,87, 2,8,10,2,5,87, 2,8,9,2,6,87, 2,8,8,2,7,87, + 2,8,7,2,8,87, 2,8,6,2,9,87, 2,8,5,2,10,87, 2,8,4,2,11,87, 2,8,4,6,12,71, 2,7,13,2,2,88, 2,7,13,3,2,88, 2,7,13,5,1,56, + 2,7,12,2,3,88, 2,7,11,2,4,88, 2,7,10,2,5,88, 2,7,9,2,6,88, 2,7,8,2,7,88, 2,7,7,2,8,88, 2,7,6,2,9,88, 2,7,5,2,10,88, + 2,7,4,2,11,88, 2,7,3,2,12,88, 2,7,3,3,12,88, 2,7,3,6,12,72, 2,6,13,5,1,57, 2,6,2,3,13,89, 2,6,2,6,12,73, 2,5,13,5,1,58, + 2,5,2,6,12,74, 2,4,14,2,1,91, 2,4,14,3,1,91, 2,4,14,4,1,59, 2,4,14,5,1,59, 2,4,13,2,2,91, 2,4,13,4,1,59, 2,4,12,2,3,91, + 2,4,12,4,1,59, 2,4,11,2,4,91, 2,4,11,4,1,59, 2,4,10,2,5,91, 2,4,10,4,1,59, 2,4,9,2,6,91, 2,4,9,4,1,59, 2,4,8,2,7,91, + 2,4,8,4,1,59, 2,4,7,2,8,91, 2,4,7,4,1,59, 2,4,6,2,9,91, 2,4,6,4,1,59, 2,4,5,2,10,91, 2,4,5,4,1,59, 2,4,4,2,11,91, + 2,4,4,4,1,59, 2,4,3,2,12,91, 2,4,3,4,1,59, 2,4,2,2,13,91, 2,4,2,4,1,59, 2,4,2,6,12,75, 3,14,12,2,3,81, 3,14,12,3,3,81, + 3,14,12,5,2,49, 3,14,11,2,4,81, 3,14,11,3,4,81, 3,14,10,2,5,81, 3,14,10,3,5,81, 3,14,9,2,6,81, 3,14,9,3,6,81, 3,14,8,2,7,81, + 3,14,8,3,7,81, 3,14,7,2,8,81, 3,14,7,3,8,81, 3,14,6,2,9,81, 3,14,6,3,9,81, 3,14,5,2,10,81, 3,14,5,3,10,81, 3,14,4,2,11,81, + 3,14,4,3,11,81, 3,14,3,2,12,81, 3,14,3,3,12,81, 3,14,3,6,11,65, 3,13,12,2,3,82, 3,13,12,5,2,50, 3,13,11,2,4,82, 3,13,10,2,5,82, + 3,13,9,2,6,82, 3,13,8,2,7,82, 3,13,7,2,8,82, 3,13,6,2,9,82, 3,13,5,2,10,82, 3,13,4,2,11,82, 3,13,3,2,12,82, 3,13,3,6,11,66, + 3,12,13,3,2,83, 3,12,13,5,2,51, 3,12,2,3,13,83, 3,12,2,6,11,67, 3,11,13,4,2,52, 3,11,13,5,2,52, 3,11,2,6,11,68, 3,10,12,5,2,53, + 3,10,2,4,2,53, 3,10,2,6,11,69, 3,9,12,5,2,54, 3,9,3,4,2,54, 3,9,3,6,11,70, 3,8,12,5,2,55, 3,8,4,6,11,71, 3,7,13,3,2,88, + 3,7,13,5,2,56, 3,7,3,3,12,88, 3,7,3,6,11,72, 3,6,13,5,2,57, 3,6,2,3,13,89, 3,6,2,6,11,73, 3,5,13,5,2,58, 3,5,2,6,11,74, + 3,4,14,3,1,91, 3,4,14,5,2,59, 3,4,2,6,11,75, 3,3,15,2,0,92, 3,3,15,3,0,92, 3,3,15,5,2,60, 3,3,14,2,1,92, 3,3,13,2,2,92, + 3,3,12,2,3,92, 3,3,11,2,4,92, 3,3,10,2,5,92, 3,3,9,2,6,92, 3,3,8,2,7,92, 3,3,7,2,8,92, 3,3,6,2,9,92, 3,3,5,2,10,92, + 3,3,4,2,11,92, 3,3,3,2,12,92, 3,3,2,2,13,92, 3,3,1,2,14,92, 3,3,1,3,14,92, 3,3,1,6,11,76, 3,2,15,2,0,93, 3,2,15,4,2,61, + 3,2,15,5,2,61, 3,2,14,2,1,93, 3,2,14,4,2,61, 3,2,13,2,2,93, 3,2,13,4,2,61, 3,2,12,2,3,93, 3,2,12,4,2,61, 3,2,11,2,4,93, + 3,2,11,4,2,61, 3,2,10,2,5,93, 3,2,10,4,2,61, 3,2,9,2,6,93, 3,2,9,4,2,61, 3,2,8,2,7,93, 3,2,8,4,2,61, 3,2,7,2,8,93, + 3,2,7,4,2,61, 3,2,6,2,9,93, 3,2,6,4,2,61, 3,2,5,2,10,93, 3,2,5,4,2,61, 3,2,4,2,11,93, 3,2,4,4,2,61, 3,2,3,2,12,93, + 3,2,3,4,2,61, 3,2,2,2,13,93, 3,2,2,4,2,61, 3,2,1,2,14,93, 3,2,1,4,2,61, 3,2,1,6,2,61, 4,15,11,2,4,80, 4,15,11,3,4,80, + 4,15,11,5,3,48, 4,15,10,2,5,80, 4,15,10,3,5,80, 4,15,9,2,6,80, 4,15,9,3,6,80, 4,15,8,2,7,80, 4,15,8,3,7,80, 4,15,7,2,8,80, + 4,15,7,3,8,80, 4,15,6,2,9,80, 4,15,6,3,9,80, 4,15,5,2,10,80, 4,15,5,3,10,80, 4,15,4,2,11,80, 4,15,4,3,11,80, 4,15,4,6,10,64, + 4,14,12,3,3,81, 4,14,12,5,3,49, 4,14,3,3,12,81, 4,14,3,6,10,65, 4,13,12,5,3,50, 4,13,3,6,10,66, 4,12,13,3,2,83, 4,12,13,5,3,51, + 4,12,2,3,13,83, 4,12,2,6,10,67, 4,11,13,4,3,52, 4,11,13,5,3,52, 4,11,2,6,10,68, 4,10,12,5,3,53, 4,10,2,4,3,53, 4,10,2,6,10,69, + 4,9,12,5,3,54, 4,9,3,4,3,54, 4,9,3,6,10,70, 4,8,12,5,3,55, 4,8,4,6,10,71, 4,7,13,3,2,88, 4,7,13,5,3,56, 4,7,3,3,12,88, + 4,7,3,6,10,72, 4,6,13,5,3,57, 4,6,2,3,13,89, 4,6,2,6,10,73, 4,5,13,5,3,58, 4,5,2,6,10,74, 4,4,14,3,1,91, 4,4,14,5,3,59, + 4,4,2,6,10,75, 4,3,15,3,0,92, 4,3,15,5,3,60, 4,3,1,3,14,92, 4,3,1,6,10,76, 4,2,15,4,3,61, 4,2,15,5,3,61, 4,2,1,4,3,61, + 4,2,1,6,3,61, 4,1,14,2,1,94, 4,1,14,4,3,62, 4,1,14,5,3,62, 4,1,13,2,2,94, 4,1,13,4,3,62, 4,1,12,2,3,94, 4,1,12,4,3,62, + 4,1,11,2,4,94, 4,1,11,4,3,62, 4,1,10,2,5,94, 4,1,10,4,3,62, 4,1,9,2,6,94, 4,1,9,4,3,62, 4,1,8,2,7,94, 4,1,8,4,3,62, + 4,1,7,2,8,94, 4,1,7,4,3,62, 4,1,6,2,9,94, 4,1,6,4,3,62, 4,1,5,2,10,94, 4,1,5,4,3,62, 4,1,4,2,11,94, 4,1,4,4,3,62, + 4,1,3,2,12,94, 4,1,3,4,3,62, 4,1,2,2,13,94, 4,1,2,4,3,62, 4,1,2,6,3,62, 5,15,11,3,4,80, 5,15,11,5,4,48, 5,15,10,3,5,80, + 5,15,9,3,6,80, 5,15,8,3,7,80, 5,15,7,3,8,80, 5,15,6,3,9,80, 5,15,5,3,10,80, 5,15,4,3,11,80, 5,15,4,6,9,64, 5,14,12,3,3,81, + 5,14,12,5,4,49, 5,14,3,3,12,81, 5,14,3,6,9,65, 5,13,12,5,4,50, 5,13,3,6,9,66, 5,12,13,3,2,83, 5,12,13,5,4,51, 5,12,2,3,13,83, + 5,12,2,6,9,67, 5,11,13,4,4,52, 5,11,13,5,4,52, 5,11,2,6,9,68, 5,10,12,5,4,53, 5,10,2,4,4,53, 5,10,2,6,9,69, 5,9,12,5,4,54, + 5,9,3,4,4,54, 5,9,3,6,9,70, 5,8,12,5,4,55, 5,8,4,6,9,71, 5,7,13,3,2,88, 5,7,13,5,4,56, 5,7,3,3,12,88, 5,7,3,6,9,72, + 5,6,13,5,4,57, 5,6,2,3,13,89, 5,6,2,6,9,73, 5,5,13,5,4,58, 5,5,2,6,9,74, 5,4,14,3,1,91, 5,4,14,5,4,59, 5,4,2,6,9,75, + 5,3,15,3,0,92, 5,3,15,5,4,60, 5,3,1,3,14,92, 5,3,1,6,9,76, 5,2,15,4,4,61, 5,2,15,5,4,61, 5,2,1,4,4,61, 5,2,1,6,9,77, + 5,1,14,4,4,62, 5,1,14,5,4,62, 5,1,13,4,4,62, 5,1,12,4,4,62, 5,1,11,4,4,62, 5,1,10,4,4,62, 5,1,9,4,4,62, 5,1,8,4,4,62, + 5,1,7,4,4,62, 5,1,6,4,4,62, 5,1,5,4,4,62, 5,1,4,4,4,62, 5,1,3,4,4,62, 5,1,2,4,4,62, 5,1,2,6,4,62, 6,15,11,3,4,80, + 6,15,11,5,5,48, 6,15,10,3,5,80, 6,15,9,3,6,80, 6,15,8,3,7,80, 6,15,7,3,8,80, 6,15,6,3,9,80, 6,15,5,3,10,80, 6,15,4,3,11,80, + 6,15,4,6,8,64, 6,14,12,3,3,81, 6,14,12,5,5,49, 6,14,3,3,12,81, 6,14,3,6,8,65, 6,13,12,5,5,50, 6,13,3,6,8,66, 6,12,13,3,2,83, + 6,12,13,5,5,51, 6,12,2,3,13,83, 6,12,2,6,8,67, 6,11,13,4,5,52, 6,11,13,5,5,52, 6,11,2,6,8,68, 6,10,12,5,5,53, 6,10,2,4,5,53, + 6,10,2,6,8,69, 6,9,12,5,5,54, 6,9,3,4,5,54, 6,9,3,6,8,70, 6,8,12,5,5,55, 6,8,4,6,8,71, 6,7,13,3,2,88, 6,7,13,5,5,56, + 6,7,3,3,12,88, 6,7,3,6,8,72, 6,6,13,5,5,57, 6,6,2,3,13,89, 6,6,2,6,8,73, 6,5,13,5,5,58, 6,5,2,6,8,74, 6,4,14,3,1,91, + 6,4,14,5,5,59, 6,4,2,6,8,75, 6,3,15,3,0,92, 6,3,15,5,5,60, 6,3,1,3,14,92, 6,3,1,6,8,76, 6,2,15,4,5,61, 6,2,15,5,5,61, + 6,2,1,4,5,61, 6,2,1,6,8,77, 6,1,14,4,5,62, 6,1,14,5,5,62, 6,1,13,4,5,62, 6,1,12,4,5,62, 6,1,11,4,5,62, 6,1,10,4,5,62, + 6,1,9,4,5,62, 6,1,8,4,5,62, 6,1,7,4,5,62, 6,1,6,4,5,62, 6,1,5,4,5,62, 6,1,4,4,5,62, 6,1,3,4,5,62, 6,1,2,4,5,62, + 6,1,2,6,8,78, 7,15,11,3,4,80, 7,15,11,5,6,48, 7,15,10,3,5,80, 7,15,9,3,6,80, 7,15,8,3,7,80, 7,15,7,3,8,80, 7,15,6,3,9,80, + 7,15,5,3,10,80, 7,15,4,3,11,80, 7,15,4,6,7,64, 7,14,12,3,3,81, 7,14,12,5,6,49, 7,14,3,3,12,81, 7,14,3,6,7,65, 7,13,12,5,6,50, + 7,13,3,6,7,66, 7,12,13,3,2,83, 7,12,13,5,6,51, 7,12,2,3,13,83, 7,12,2,6,7,67, 7,11,13,4,6,52, 7,11,13,5,6,52, 7,11,2,6,7,68, + 7,10,12,5,6,53, 7,10,2,4,6,53, 7,10,2,6,7,69, 7,9,12,5,6,54, 7,9,3,4,6,54, 7,9,3,6,7,70, 7,8,12,5,6,55, 7,8,4,6,7,71, + 7,7,13,3,2,88, 7,7,13,5,6,56, 7,7,3,3,12,88, 7,7,3,6,7,72, 7,6,13,5,6,57, 7,6,2,3,13,89, 7,6,2,6,7,73, 7,5,13,5,6,58, + 7,5,2,6,7,74, 7,4,14,3,1,91, 7,4,14,5,6,59, 7,4,2,6,7,75, 7,3,15,3,0,92, 7,3,15,5,6,60, 7,3,1,3,14,92, 7,3,1,6,7,76, + 7,2,15,4,6,61, 7,2,15,5,6,61, 7,2,1,4,6,61, 7,2,1,6,7,77, 7,1,14,4,6,62, 7,1,14,5,6,62, 7,1,10,4,6,62, 7,1,9,4,6,62, + 7,1,2,4,6,62, 7,1,2,6,7,78, 7,0,13,2,2,95, 7,0,13,5,6,63, 7,0,12,2,3,95, 7,0,11,2,4,95, 7,0,11,6,7,79, 7,0,8,2,7,95, + 7,0,8,5,6,63, 7,0,7,2,8,95, 7,0,6,2,9,95, 7,0,5,2,10,95, 7,0,4,2,11,95, 7,0,3,2,12,95, 7,0,3,6,7,79, 8,15,11,3,4,80, + 8,15,11,5,7,48, 8,15,10,3,5,80, 8,15,9,3,6,80, 8,15,8,3,7,80, 8,15,7,3,8,80, 8,15,6,3,9,80, 8,15,5,3,10,80, 8,15,4,3,11,80, + 8,15,4,6,6,64, 8,14,12,3,3,81, 8,14,12,5,7,49, 8,14,3,3,12,81, 8,14,3,6,6,65, 8,13,12,5,7,50, 8,13,3,6,6,66, 8,12,13,3,2,83, + 8,12,13,5,7,51, 8,12,2,3,13,83, 8,12,2,6,6,67, 8,11,13,4,7,52, 8,11,13,5,7,52, 8,11,2,6,6,68, 8,10,12,5,7,53, 8,10,2,4,7,53, + 8,10,2,6,6,69, 8,9,12,5,7,54, 8,9,3,4,7,54, 8,9,3,6,6,70, 8,8,12,5,7,55, 8,8,4,6,6,71, 8,7,13,3,2,88, 8,7,13,5,7,56, + 8,7,3,3,12,88, 8,7,3,6,6,72, 8,6,13,5,7,57, 8,6,2,3,13,89, 8,6,2,6,6,73, 8,5,13,5,7,58, 8,5,2,6,6,74, 8,4,14,3,1,91, + 8,4,14,5,7,59, 8,4,2,6,6,75, 8,3,15,3,0,92, 8,3,15,5,7,60, 8,3,1,3,14,92, 8,3,1,6,6,76, 8,2,15,4,7,61, 8,2,15,5,7,61, + 8,2,1,4,7,61, 8,2,1,6,6,77, 8,1,14,4,7,62, 8,1,14,5,7,62, 8,1,10,4,7,62, 8,1,9,4,7,62, 8,1,2,4,7,62, 8,1,2,6,6,78, + 8,0,13,1,2,95, 8,0,13,5,7,63, 8,0,12,1,3,95, 8,0,11,1,4,95, 8,0,11,6,6,79, 8,0,8,1,7,95, 8,0,8,5,7,63, 8,0,7,1,8,95, + 8,0,6,1,9,95, 8,0,5,1,10,95, 8,0,4,1,11,95, 8,0,3,1,12,95, 8,0,3,6,6,79, 9,15,11,3,4,80, 9,15,11,5,8,48, 9,15,10,3,5,80, + 9,15,9,3,6,80, 9,15,8,3,7,80, 9,15,7,3,8,80, 9,15,6,3,9,80, 9,15,5,3,10,80, 9,15,4,3,11,80, 9,15,4,6,5,64, 9,14,12,3,3,81, + 9,14,12,5,8,49, 9,14,3,3,12,81, 9,14,3,6,5,65, 9,13,12,5,8,50, 9,13,3,6,5,66, 9,12,13,3,2,83, 9,12,13,5,8,51, 9,12,2,3,13,83, + 9,12,2,6,5,67, 9,11,13,4,8,52, 9,11,13,5,8,52, 9,11,2,6,5,68, 9,10,12,5,8,53, 9,10,2,4,8,53, 9,10,2,6,5,69, 9,9,12,5,8,54, + 9,9,3,4,8,54, 9,9,3,6,5,70, 9,8,12,5,8,55, 9,8,4,6,5,71, 9,7,13,3,2,88, 9,7,13,5,8,56, 9,7,3,3,12,88, 9,7,3,6,5,72, + 9,6,13,5,8,57, 9,6,2,3,13,89, 9,6,2,6,5,73, 9,5,13,5,8,58, 9,5,2,6,5,74, 9,4,14,3,1,91, 9,4,14,5,8,59, 9,4,2,6,5,75, + 9,3,15,3,0,92, 9,3,15,5,8,60, 9,3,1,3,14,92, 9,3,1,6,5,76, 9,2,15,4,8,61, 9,2,15,5,8,61, 9,2,1,4,8,61, 9,2,1,6,5,77, + 9,1,14,1,1,94, 9,1,14,4,8,62, 9,1,14,5,8,62, 9,1,13,1,2,94, 9,1,13,4,8,62, 9,1,12,1,3,94, 9,1,12,4,8,62, 9,1,11,1,4,94, + 9,1,11,4,8,62, 9,1,10,1,5,94, 9,1,10,4,8,62, 9,1,9,1,6,94, 9,1,9,4,8,62, 9,1,8,1,7,94, 9,1,8,4,8,62, 9,1,7,1,8,94, + 9,1,7,4,8,62, 9,1,6,1,9,94, 9,1,6,4,8,62, 9,1,5,1,10,94, 9,1,5,4,8,62, 9,1,4,1,11,94, 9,1,4,4,8,62, 9,1,3,1,12,94, + 9,1,3,4,8,62, 9,1,2,1,13,94, 9,1,2,4,8,62, 9,1,2,6,5,78, 10,15,11,3,4,80, 10,15,11,5,9,48, 10,15,10,3,5,80, 10,15,9,3,6,80, + 10,15,8,3,7,80, 10,15,7,3,8,80, 10,15,6,3,9,80, 10,15,5,3,10,80, 10,15,4,3,11,80, 10,15,4,6,4,64, 10,14,12,3,3,81, 10,14,12,5,9,49, + 10,14,3,3,12,81, 10,14,3,6,4,65, 10,13,12,5,9,50, 10,13,3,6,4,66, 10,12,13,3,2,83, 10,12,13,5,9,51, 10,12,2,3,13,83, 10,12,2,6,4,67, + 10,11,13,4,9,52, 10,11,13,5,9,52, 10,11,2,6,4,68, 10,10,12,5,9,53, 10,10,2,4,9,53, 10,10,2,6,4,69, 10,9,12,5,9,54, 10,9,3,4,9,54, + 10,9,3,6,4,70, 10,8,12,5,9,55, 10,8,4,6,4,71, 10,7,13,3,2,88, 10,7,13,5,9,56, 10,7,3,3,12,88, 10,7,3,6,4,72, 10,6,13,5,9,57, + 10,6,2,3,13,89, 10,6,2,6,4,73, 10,5,13,5,9,58, 10,5,2,6,4,74, 10,4,14,3,1,91, 10,4,14,5,9,59, 10,4,2,6,4,75, 10,3,15,3,0,92, + 10,3,15,5,9,60, 10,3,1,3,14,92, 10,3,1,6,4,76, 10,2,15,4,4,77, 10,2,15,5,4,77, 10,2,14,4,4,77, 10,2,13,4,4,77, 10,2,12,4,4,77, + 10,2,11,4,4,77, 10,2,10,4,4,77, 10,2,9,4,4,77, 10,2,8,4,4,77, 10,2,7,4,4,77, 10,2,6,4,4,77, 10,2,5,4,4,77, 10,2,4,4,4,77, + 10,2,3,4,4,77, 10,2,2,4,4,77, 10,2,1,4,4,77, 10,2,1,6,4,77, 11,15,11,1,4,80, 11,15,11,3,4,80, 11,15,11,5,10,48, 11,15,10,1,5,80, + 11,15,10,3,5,80, 11,15,9,1,6,80, 11,15,9,3,6,80, 11,15,8,1,7,80, 11,15,8,3,7,80, 11,15,7,1,8,80, 11,15,7,3,8,80, 11,15,6,1,9,80, + 11,15,6,3,9,80, 11,15,5,1,10,80, 11,15,5,3,10,80, 11,15,4,1,11,80, 11,15,4,3,11,80, 11,15,4,6,3,64, 11,14,12,3,3,81, 11,14,12,5,10,49, + 11,14,3,3,12,81, 11,14,3,6,3,65, 11,13,12,5,10,50, 11,13,3,6,3,66, 11,12,13,3,2,83, 11,12,13,5,10,51, 11,12,2,3,13,83, 11,12,2,6,3,67, + 11,11,13,4,10,52, 11,11,13,5,10,52, 11,11,2,6,3,68, 11,10,12,5,10,53, 11,10,2,4,10,53, 11,10,2,6,3,69, 11,9,12,5,10,54, 11,9,3,4,10,54, + 11,9,3,6,3,70, 11,8,12,5,10,55, 11,8,4,6,3,71, 11,7,13,3,2,88, 11,7,13,5,10,56, 11,7,3,3,12,88, 11,7,3,6,3,72, 11,6,13,5,10,57, + 11,6,2,3,13,89, 11,6,2,6,3,73, 11,5,13,5,10,58, 11,5,2,6,3,74, 11,4,14,3,1,91, 11,4,14,5,10,59, 11,4,2,6,3,75, 11,3,15,3,0,92, + 11,3,15,5,10,60, 11,3,1,3,14,92, 11,3,1,6,3,76, 11,2,15,4,3,77, 11,2,15,5,3,77, 11,2,1,4,3,77, 11,2,1,6,3,77, 11,1,14,2,1,94, + 11,1,14,4,3,78, 11,1,14,5,3,78, 11,1,13,2,2,94, 11,1,13,4,3,78, 11,1,12,2,3,94, 11,1,12,4,3,78, 11,1,11,2,4,94, 11,1,11,4,3,78, + 11,1,10,2,5,94, 11,1,10,4,3,78, 11,1,9,2,6,94, 11,1,9,4,3,78, 11,1,8,2,7,94, 11,1,8,4,3,78, 11,1,7,2,8,94, 11,1,7,4,3,78, + 11,1,6,2,9,94, 11,1,6,4,3,78, 11,1,5,2,10,94, 11,1,5,4,3,78, 11,1,4,2,11,94, 11,1,4,4,3,78, 11,1,3,2,12,94, 11,1,3,4,3,78, + 11,1,2,2,13,94, 11,1,2,4,3,78, 11,1,2,6,3,78, 12,14,12,1,3,81, 12,14,12,3,3,81, 12,14,12,5,11,49, 12,14,11,1,4,81, 12,14,11,3,4,81, + 12,14,10,1,5,81, 12,14,10,3,5,81, 12,14,9,1,6,81, 12,14,9,3,6,81, 12,14,8,1,7,81, 12,14,8,3,7,81, 12,14,7,1,8,81, 12,14,7,3,8,81, + 12,14,6,1,9,81, 12,14,6,3,9,81, 12,14,5,1,10,81, 12,14,5,3,10,81, 12,14,4,1,11,81, 12,14,4,3,11,81, 12,14,3,1,12,81, 12,14,3,3,12,81, + 12,14,3,6,2,65, 12,13,12,1,3,82, 12,13,12,5,11,50, 12,13,11,1,4,82, 12,13,10,1,5,82, 12,13,9,1,6,82, 12,13,8,1,7,82, 12,13,7,1,8,82, + 12,13,6,1,9,82, 12,13,5,1,10,82, 12,13,4,1,11,82, 12,13,3,1,12,82, 12,13,3,6,2,66, 12,12,13,3,2,83, 12,12,13,5,11,51, 12,12,2,3,13,83, + 12,12,2,6,2,67, 12,11,13,4,11,52, 12,11,13,5,11,52, 12,11,2,6,2,68, 12,10,12,5,11,53, 12,10,2,4,11,53, 12,10,2,6,2,69, 12,9,12,5,11,54, + 12,9,3,4,11,54, 12,9,3,6,2,70, 12,8,12,5,11,55, 12,8,4,6,2,71, 12,7,13,3,2,88, 12,7,13,5,11,56, 12,7,3,3,12,88, 12,7,3,6,2,72, + 12,6,13,5,11,57, 12,6,2,3,13,89, 12,6,2,6,2,73, 12,5,13,5,11,58, 12,5,2,6,2,74, 12,4,14,3,1,91, 12,4,14,5,11,59, 12,4,2,6,2,75, + 12,3,15,3,0,92, 12,3,15,5,2,76, 12,3,1,3,14,92, 12,3,1,6,2,76, 12,2,15,4,2,77, 12,2,15,5,2,77, 12,2,1,4,2,77, 12,2,1,6,2,77, + 12,1,14,1,1,94, 12,1,14,4,2,78, 12,1,14,5,2,78, 12,1,13,1,2,94, 12,1,13,4,2,78, 12,1,12,1,3,94, 12,1,12,4,2,78, 12,1,11,1,4,94, + 12,1,11,4,2,78, 12,1,10,1,5,94, 12,1,10,4,2,78, 12,1,9,1,6,94, 12,1,9,4,2,78, 12,1,8,1,7,94, 12,1,8,4,2,78, 12,1,7,1,8,94, + 12,1,7,4,2,78, 12,1,6,1,9,94, 12,1,6,4,2,78, 12,1,5,1,10,94, 12,1,5,4,2,78, 12,1,4,1,11,94, 12,1,4,4,2,78, 12,1,3,1,12,94, + 12,1,3,4,2,78, 12,1,2,1,13,94, 12,1,2,4,2,78, 12,1,2,6,2,78, 13,12,13,1,2,83, 13,12,13,3,2,83, 13,12,13,5,12,51, 13,12,12,1,3,83, + 13,12,12,3,3,83, 13,12,11,1,4,83, 13,12,11,3,4,83, 13,12,10,1,5,83, 13,12,10,3,5,83, 13,12,9,1,6,83, 13,12,9,3,6,83, 13,12,8,1,7,83, + 13,12,8,3,7,83, 13,12,7,1,8,83, 13,12,7,3,8,83, 13,12,6,1,9,83, 13,12,6,3,9,83, 13,12,5,1,10,83, 13,12,5,3,10,83, 13,12,4,1,11,83, + 13,12,4,3,11,83, 13,12,3,1,12,83, 13,12,3,3,12,83, 13,12,2,1,13,83, 13,12,2,3,13,83, 13,12,2,6,1,67, 13,11,13,1,2,84, 13,11,13,4,12,52, + 13,11,13,5,12,52, 13,11,12,1,3,84, 13,11,11,1,4,84, 13,11,10,1,5,84, 13,11,9,1,6,84, 13,11,8,1,7,84, 13,11,7,1,8,84, 13,11,6,1,9,84, + 13,11,5,1,10,84, 13,11,4,1,11,84, 13,11,3,1,12,84, 13,11,2,1,13,84, 13,11,2,6,1,68, 13,10,12,5,12,53, 13,10,2,4,12,53, 13,10,2,6,1,69, + 13,9,12,5,12,54, 13,9,3,4,12,54, 13,9,3,6,1,70, 13,8,12,1,3,87, 13,8,12,5,12,55, 13,8,11,1,4,87, 13,8,10,1,5,87, 13,8,9,1,6,87, + 13,8,8,1,7,87, 13,8,7,1,8,87, 13,8,6,1,9,87, 13,8,5,1,10,87, 13,8,4,1,11,87, 13,8,4,6,1,71, 13,7,13,1,2,88, 13,7,13,3,2,88, + 13,7,13,5,12,56, 13,7,12,1,3,88, 13,7,11,1,4,88, 13,7,10,1,5,88, 13,7,9,1,6,88, 13,7,8,1,7,88, 13,7,7,1,8,88, 13,7,6,1,9,88, + 13,7,5,1,10,88, 13,7,4,1,11,88, 13,7,3,1,12,88, 13,7,3,3,12,88, 13,7,3,6,1,72, 13,6,13,5,12,57, 13,6,2,3,13,89, 13,6,2,6,1,73, + 13,5,13,5,12,58, 13,5,2,6,12,58, 13,4,14,1,1,91, 13,4,14,3,1,91, 13,4,14,5,12,59, 13,4,13,1,2,91, 13,4,12,1,3,91, 13,4,11,1,4,91, + 13,4,10,1,5,91, 13,4,9,1,6,91, 13,4,8,1,7,91, 13,4,7,1,8,91, 13,4,6,1,9,91, 13,4,5,1,10,91, 13,4,4,1,11,91, 13,4,3,1,12,91, + 13,4,2,1,13,91, 13,4,2,6,12,59, 13,3,15,1,0,92, 13,3,15,3,0,92, 13,3,15,5,1,76, 13,3,14,1,1,92, 13,3,13,1,2,92, 13,3,12,1,3,92, + 13,3,11,1,4,92, 13,3,10,1,5,92, 13,3,9,1,6,92, 13,3,8,1,7,92, 13,3,7,1,8,92, 13,3,6,1,9,92, 13,3,5,1,10,92, 13,3,4,1,11,92, + 13,3,3,1,12,92, 13,3,2,1,13,92, 13,3,1,1,14,92, 13,3,1,3,14,92, 13,3,1,6,1,76, 13,2,15,1,0,93, 13,2,15,4,1,77, 13,2,15,5,1,77, + 13,2,14,1,1,93, 13,2,14,4,1,77, 13,2,13,1,2,93, 13,2,13,4,1,77, 13,2,12,1,3,93, 13,2,12,4,1,77, 13,2,11,1,4,93, 13,2,11,4,1,77, + 13,2,10,1,5,93, 13,2,10,4,1,77, 13,2,9,1,6,93, 13,2,9,4,1,77, 13,2,8,1,7,93, 13,2,8,4,1,77, 13,2,7,1,8,93, 13,2,7,4,1,77, + 13,2,6,1,9,93, 13,2,6,4,1,77, 13,2,5,1,10,93, 13,2,5,4,1,77, 13,2,4,1,11,93, 13,2,4,4,1,77, 13,2,3,1,12,93, 13,2,3,4,1,77, + 13,2,2,1,13,93, 13,2,2,4,1,77, 13,2,1,1,14,93, 13,2,1,4,1,77, 13,2,1,6,1,77, 14,10,12,1,3,85, 14,10,12,3,3,85, 14,10,12,5,13,53, + 14,10,11,1,4,85, 14,10,11,3,4,85, 14,10,10,1,5,85, 14,10,10,3,5,85, 14,10,9,1,6,85, 14,10,9,3,6,85, 14,10,8,1,7,85, 14,10,8,3,7,85, + 14,10,7,1,8,85, 14,10,7,3,8,85, 14,10,6,1,9,85, 14,10,6,3,9,85, 14,10,5,1,10,85, 14,10,5,3,10,85, 14,10,4,1,11,85, 14,10,4,3,11,85, + 14,10,3,1,12,85, 14,10,3,3,12,85, 14,10,2,1,13,85, 14,10,2,3,13,85, 14,10,2,4,13,53, 14,10,2,6,0,69, 14,9,12,1,3,86, 14,9,12,4,13,54, + 14,9,12,5,13,54, 14,9,11,1,4,86, 14,9,11,4,13,54, 14,9,10,1,5,86, 14,9,10,4,13,54, 14,9,9,1,6,86, 14,9,9,4,13,54, 14,9,8,1,7,86, + 14,9,8,4,13,54, 14,9,7,1,8,86, 14,9,7,4,13,54, 14,9,6,1,9,86, 14,9,6,4,13,54, 14,9,5,1,10,86, 14,9,5,4,13,54, 14,9,4,1,11,86, + 14,9,4,4,13,54, 14,9,3,1,12,86, 14,9,3,4,13,54, 14,9,3,6,0,70, 14,6,13,1,2,89, 14,6,13,3,2,89, 14,6,13,5,13,57, 14,6,12,1,3,89, + 14,6,12,3,3,89, 14,6,11,1,4,89, 14,6,11,3,4,89, 14,6,10,1,5,89, 14,6,10,3,5,89, 14,6,9,1,6,89, 14,6,9,3,6,89, 14,6,8,1,7,89, + 14,6,8,3,7,89, 14,6,7,1,8,89, 14,6,7,3,8,89, 14,6,6,1,9,89, 14,6,6,3,9,89, 14,6,5,1,10,89, 14,6,5,3,10,89, 14,6,4,1,11,89, + 14,6,4,3,11,89, 14,6,3,1,12,89, 14,6,3,3,12,89, 14,6,2,1,13,89, 14,6,2,3,13,89, 14,6,2,6,13,57, 14,5,13,1,2,90, 14,5,13,4,13,58, + 14,5,13,5,13,58, 14,5,12,1,3,90, 14,5,12,4,13,58, 14,5,11,1,4,90, 14,5,11,4,13,58, 14,5,10,1,5,90, 14,5,10,4,13,58, 14,5,9,1,6,90, + 14,5,9,4,13,58, 14,5,8,1,7,90, 14,5,8,4,13,58, 14,5,7,1,8,90, 14,5,7,4,13,58, 14,5,6,1,9,90, 14,5,6,4,13,58, 14,5,5,1,10,90, + 14,5,5,4,13,58, 14,5,4,1,11,90, 14,5,4,4,13,58, 14,5,3,1,12,90, 14,5,3,4,13,58, 14,5,2,1,13,90, 14,5,2,4,13,58, 14,5,2,6,13,58, + }, + }, + }, +} diff --git a/assets/voxels/rocker.lua b/assets/voxels/rocker.lua new file mode 100644 index 0000000..d6687f3 --- /dev/null +++ b/assets/voxels/rocker.lua @@ -0,0 +1,267 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "rocker" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "rocker", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1378, + count = 904, + faces = { + 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, + 1,9,9,3,6,38, 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, + 1,9,5,3,10,38, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, 1,9,3,3,12,38, 1,9,3,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, + 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, + 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, + 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,10,2,5,42, 1,5,10,3,5,42, 1,5,10,4,1,10, 1,5,10,5,1,10, + 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, + 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,4,6,14,26, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,9,5,1,11, + 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, + 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,10,12,2,3,37, 2,10,12,3,3,37, 2,10,12,5,2,5, 2,10,11,2,4,37, 2,10,11,3,4,37, + 2,10,10,2,5,37, 2,10,10,3,5,37, 2,10,9,2,6,37, 2,10,9,3,6,37, 2,10,8,2,7,37, 2,10,8,3,7,37, 2,10,7,2,8,37, 2,10,7,3,8,37, + 2,10,6,2,9,37, 2,10,6,3,9,37, 2,10,5,2,10,37, 2,10,5,3,10,37, 2,10,4,2,11,37, 2,10,4,3,11,37, 2,10,3,2,12,37, 2,10,3,3,12,37, + 2,10,3,6,13,21, 2,9,12,5,2,6, 2,9,3,6,13,22, 2,8,12,5,2,7, 2,8,3,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, + 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, + 2,7,3,2,12,40, 2,7,3,6,13,24, 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, + 2,6,7,2,8,41, 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,3,2,12,41, 2,6,3,4,2,9, 2,6,3,6,13,25, 2,5,10,4,2,10, + 2,5,10,5,2,10, 2,5,4,6,13,26, 2,4,9,5,2,11, 2,4,4,6,13,27, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,9,5,2,12, 2,3,8,2,7,44, + 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, + 2,3,4,4,2,12, 2,3,4,6,13,28, 3,12,12,2,3,35, 3,12,12,3,3,35, 3,12,12,5,3,3, 3,12,11,2,4,35, 3,12,11,3,4,35, 3,12,10,2,5,35, + 3,12,10,3,5,35, 3,12,9,2,6,35, 3,12,9,3,6,35, 3,12,8,2,7,35, 3,12,8,3,7,35, 3,12,7,2,8,35, 3,12,7,3,8,35, 3,12,6,2,9,35, + 3,12,6,3,9,35, 3,12,5,2,10,35, 3,12,5,3,10,35, 3,12,4,2,11,35, 3,12,4,3,11,35, 3,12,3,2,12,35, 3,12,3,3,12,35, 3,12,3,6,12,19, + 3,11,12,2,3,36, 3,11,12,5,3,4, 3,11,11,2,4,36, 3,11,10,2,5,36, 3,11,9,2,6,36, 3,11,8,2,7,36, 3,11,7,2,8,36, 3,11,6,2,9,36, + 3,11,5,2,10,36, 3,11,4,2,11,36, 3,11,3,2,12,36, 3,11,3,6,12,20, 3,10,12,5,3,5, 3,10,3,6,12,21, 3,9,12,5,3,6, 3,9,3,6,12,22, + 3,8,12,5,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,3,6,12,24, 3,6,11,4,3,9, 3,6,11,5,3,9, 3,6,3,4,3,9, + 3,6,3,6,12,25, 3,5,10,4,3,10, 3,5,10,5,3,10, 3,5,4,6,12,26, 3,4,9,5,3,11, 3,4,4,6,12,27, 3,3,9,5,3,12, 3,3,4,4,3,12, + 3,3,4,6,12,28, 3,2,10,2,5,45, 3,2,10,3,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, + 3,2,5,2,10,45, 3,2,5,6,12,29, 3,1,10,2,5,46, 3,1,10,4,3,14, 3,1,10,5,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, + 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,5,6,12,30, + 4,13,12,2,3,34, 4,13,12,3,3,34, 4,13,12,5,4,2, 4,13,11,2,4,34, 4,13,11,3,4,34, 4,13,10,2,5,34, 4,13,10,3,5,34, 4,13,9,2,6,34, + 4,13,9,3,6,34, 4,13,8,2,7,34, 4,13,8,3,7,34, 4,13,7,2,8,34, 4,13,7,3,8,34, 4,13,6,2,9,34, 4,13,6,3,9,34, 4,13,5,2,10,34, + 4,13,5,3,10,34, 4,13,4,2,11,34, 4,13,4,3,11,34, 4,13,3,2,12,34, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,12,5,4,3, 4,12,3,6,11,19, + 4,11,12,5,4,4, 4,11,3,6,11,20, 4,10,12,5,4,5, 4,10,3,6,11,21, 4,9,12,5,4,6, 4,9,3,6,11,22, 4,8,12,5,4,7, 4,8,3,6,11,23, + 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,3,6,11,24, 4,6,11,4,4,9, 4,6,11,5,4,9, 4,6,3,4,4,9, 4,6,3,6,11,25, 4,5,10,4,4,10, + 4,5,10,5,4,10, 4,5,4,6,11,26, 4,4,9,5,4,11, 4,4,4,6,11,27, 4,3,9,5,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,10,3,5,45, + 4,2,10,5,4,13, 4,2,5,6,11,29, 4,1,10,4,4,14, 4,1,10,5,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, 4,0,9,2,6,47, 4,0,9,5,4,15, + 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, 4,0,6,6,11,31, 5,14,11,2,4,33, 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,10,2,5,33, + 5,14,10,3,5,33, 5,14,9,2,6,33, 5,14,9,3,6,33, 5,14,8,2,7,33, 5,14,8,3,7,33, 5,14,7,2,8,33, 5,14,7,3,8,33, 5,14,6,2,9,33, + 5,14,6,3,9,33, 5,14,5,2,10,33, 5,14,5,3,10,33, 5,14,4,2,11,33, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, + 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,12,5,5,3, 5,12,3,6,10,19, 5,11,12,5,5,4, 5,11,3,6,10,20, 5,10,12,5,5,5, 5,10,3,6,10,21, + 5,9,12,5,5,6, 5,9,3,6,10,22, 5,8,12,5,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,3,6,10,24, 5,6,11,4,5,9, + 5,6,11,5,5,9, 5,6,3,4,5,9, 5,6,3,6,10,25, 5,5,10,4,5,10, 5,5,10,5,5,10, 5,5,4,6,10,26, 5,4,9,5,5,11, 5,4,4,6,10,27, + 5,3,9,5,5,12, 5,3,4,4,5,12, 5,3,4,6,10,28, 5,2,10,3,5,45, 5,2,10,5,5,13, 5,2,5,6,10,29, 5,1,10,4,5,14, 5,1,10,5,5,14, + 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,9,5,5,15, 5,0,6,6,10,31, 6,15,10,2,5,32, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,2,6,32, + 6,15,9,3,6,32, 6,15,8,2,7,32, 6,15,8,3,7,32, 6,15,7,2,8,32, 6,15,7,3,8,32, 6,15,6,2,9,32, 6,15,6,3,9,32, 6,15,5,2,10,32, + 6,15,5,3,10,32, 6,15,5,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, + 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,12,5,6,3, 6,12,3,6,9,19, 6,11,12,5,6,4, 6,11,3,6,9,20, 6,10,12,5,6,5, 6,10,3,6,9,21, + 6,9,12,5,6,6, 6,9,3,6,9,22, 6,8,12,5,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,3,6,9,24, 6,6,11,4,6,9, + 6,6,11,5,6,9, 6,6,3,4,6,9, 6,6,3,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, 6,5,4,6,9,26, 6,4,9,5,6,11, 6,4,4,6,9,27, + 6,3,9,5,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,10,3,5,45, 6,2,10,5,6,13, 6,2,5,6,9,29, 6,1,10,4,6,14, 6,1,10,5,6,14, + 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,9,1,6,47, 6,0,9,5,6,15, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, + 7,15,10,3,5,32, 7,15,10,5,7,0, 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,5,3,10,32, 7,15,5,6,8,16, + 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, + 7,12,12,5,7,3, 7,12,3,6,8,19, 7,11,12,5,7,4, 7,11,3,6,8,20, 7,10,12,5,7,5, 7,10,3,6,8,21, 7,9,12,5,7,6, 7,9,3,6,8,22, + 7,8,12,5,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,3,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,3,4,7,9, + 7,6,3,6,8,25, 7,5,10,4,7,10, 7,5,10,5,7,10, 7,5,4,6,8,26, 7,4,9,5,7,11, 7,4,4,6,8,27, 7,3,9,5,7,12, 7,3,4,4,7,12, + 7,3,4,6,8,28, 7,2,10,3,5,45, 7,2,10,5,7,13, 7,2,5,6,8,29, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, + 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,3,6,32, 8,15,8,3,7,32, + 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,5,3,10,32, 8,15,5,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,4,3,11,33, 8,14,4,6,7,17, + 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,12,5,8,3, 8,12,3,6,7,19, 8,11,12,5,8,4, 8,11,3,6,7,20, + 8,10,12,5,8,5, 8,10,3,6,7,21, 8,9,12,5,8,6, 8,9,3,6,7,22, 8,8,12,5,8,7, 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, + 8,7,3,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,3,4,8,9, 8,6,3,6,7,25, 8,5,10,4,8,10, 8,5,10,5,8,10, 8,5,4,6,7,26, + 8,4,9,5,8,11, 8,4,4,6,7,27, 8,3,9,5,8,12, 8,3,4,4,8,12, 8,3,4,6,7,28, 8,2,10,3,5,45, 8,2,10,5,8,13, 8,2,5,6,7,29, + 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, + 9,15,10,1,5,32, 9,15,10,3,5,32, 9,15,10,5,9,0, 9,15,9,1,6,32, 9,15,9,3,6,32, 9,15,8,1,7,32, 9,15,8,3,7,32, 9,15,7,1,8,32, + 9,15,7,3,8,32, 9,15,6,1,9,32, 9,15,6,3,9,32, 9,15,5,1,10,32, 9,15,5,3,10,32, 9,15,5,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, + 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,12,5,9,3, 9,12,3,6,6,19, + 9,11,12,5,9,4, 9,11,3,6,6,20, 9,10,12,5,9,5, 9,10,3,6,6,21, 9,9,12,5,9,6, 9,9,3,6,6,22, 9,8,12,5,9,7, 9,8,3,6,6,23, + 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,3,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, 9,6,3,4,9,9, 9,6,3,6,6,25, 9,5,10,4,9,10, + 9,5,10,5,9,10, 9,5,4,6,6,26, 9,4,9,5,9,11, 9,4,4,6,6,27, 9,3,9,5,9,12, 9,3,4,4,9,12, 9,3,4,6,6,28, 9,2,10,3,5,45, + 9,2,10,5,9,13, 9,2,5,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,9,2,6,47, 9,0,9,5,9,15, + 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, 10,14,11,1,4,33, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,10,1,5,33, + 10,14,10,3,5,33, 10,14,9,1,6,33, 10,14,9,3,6,33, 10,14,8,1,7,33, 10,14,8,3,7,33, 10,14,7,1,8,33, 10,14,7,3,8,33, 10,14,6,1,9,33, + 10,14,6,3,9,33, 10,14,5,1,10,33, 10,14,5,3,10,33, 10,14,4,1,11,33, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, 10,13,12,5,10,2, + 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,12,5,10,3, 10,12,3,6,5,19, 10,11,12,5,10,4, 10,11,3,6,5,20, 10,10,12,5,10,5, 10,10,3,6,5,21, + 10,9,12,5,10,6, 10,9,3,6,5,22, 10,8,12,5,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,3,6,5,24, 10,6,11,4,10,9, + 10,6,11,5,10,9, 10,6,3,4,10,9, 10,6,3,6,5,25, 10,5,10,4,10,10, 10,5,10,5,10,10, 10,5,4,6,5,26, 10,4,9,5,10,11, 10,4,4,6,5,27, + 10,3,9,5,10,12, 10,3,4,4,10,12, 10,3,4,6,5,28, 10,2,10,3,5,45, 10,2,10,5,10,13, 10,2,5,6,5,29, 10,1,10,4,10,14, 10,1,10,5,10,14, + 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,9,5,10,15, 10,0,6,6,5,31, 11,13,12,1,3,34, 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,11,1,4,34, + 11,13,11,3,4,34, 11,13,10,1,5,34, 11,13,10,3,5,34, 11,13,9,1,6,34, 11,13,9,3,6,34, 11,13,8,1,7,34, 11,13,8,3,7,34, 11,13,7,1,8,34, + 11,13,7,3,8,34, 11,13,6,1,9,34, 11,13,6,3,9,34, 11,13,5,1,10,34, 11,13,5,3,10,34, 11,13,4,1,11,34, 11,13,4,3,11,34, 11,13,3,1,12,34, + 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,12,5,11,3, 11,12,3,6,4,19, 11,11,12,5,11,4, 11,11,3,6,4,20, 11,10,12,5,11,5, 11,10,3,6,4,21, + 11,9,12,5,11,6, 11,9,3,6,4,22, 11,8,12,5,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,3,6,4,24, 11,6,11,4,11,9, + 11,6,11,5,11,9, 11,6,3,4,11,9, 11,6,3,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, 11,5,4,6,4,26, 11,4,9,5,11,11, 11,4,4,6,4,27, + 11,3,9,5,11,12, 11,3,4,4,11,12, 11,3,4,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, 11,2,5,6,4,29, 11,1,10,4,11,14, 11,1,10,5,11,14, + 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,9,1,6,47, 11,0,9,5,11,15, 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,6,6,4,31, + 12,12,12,1,3,35, 12,12,12,3,3,35, 12,12,12,5,12,3, 12,12,11,1,4,35, 12,12,11,3,4,35, 12,12,10,1,5,35, 12,12,10,3,5,35, 12,12,9,1,6,35, + 12,12,9,3,6,35, 12,12,8,1,7,35, 12,12,8,3,7,35, 12,12,7,1,8,35, 12,12,7,3,8,35, 12,12,6,1,9,35, 12,12,6,3,9,35, 12,12,5,1,10,35, + 12,12,5,3,10,35, 12,12,4,1,11,35, 12,12,4,3,11,35, 12,12,3,1,12,35, 12,12,3,3,12,35, 12,12,3,6,3,19, 12,11,12,1,3,36, 12,11,12,5,12,4, + 12,11,11,1,4,36, 12,11,10,1,5,36, 12,11,9,1,6,36, 12,11,8,1,7,36, 12,11,7,1,8,36, 12,11,6,1,9,36, 12,11,5,1,10,36, 12,11,4,1,11,36, + 12,11,3,1,12,36, 12,11,3,6,3,20, 12,10,12,5,12,5, 12,10,3,6,3,21, 12,9,12,5,12,6, 12,9,3,6,3,22, 12,8,12,5,12,7, 12,8,3,6,3,23, + 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,3,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,3,4,12,9, 12,6,3,6,3,25, 12,5,10,4,12,10, + 12,5,10,5,12,10, 12,5,4,6,3,26, 12,4,9,5,12,11, 12,4,4,6,3,27, 12,3,9,5,12,12, 12,3,4,4,12,12, 12,3,4,6,3,28, 12,2,10,1,5,45, + 12,2,10,3,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,5,6,3,29, + 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,10,5,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, + 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,5,6,3,30, 13,10,12,1,3,37, 13,10,12,3,3,37, + 13,10,12,5,13,5, 13,10,11,1,4,37, 13,10,11,3,4,37, 13,10,10,1,5,37, 13,10,10,3,5,37, 13,10,9,1,6,37, 13,10,9,3,6,37, 13,10,8,1,7,37, + 13,10,8,3,7,37, 13,10,7,1,8,37, 13,10,7,3,8,37, 13,10,6,1,9,37, 13,10,6,3,9,37, 13,10,5,1,10,37, 13,10,5,3,10,37, 13,10,4,1,11,37, + 13,10,4,3,11,37, 13,10,3,1,12,37, 13,10,3,3,12,37, 13,10,3,6,2,21, 13,9,12,5,13,6, 13,9,3,6,2,22, 13,8,12,5,13,7, 13,8,3,6,2,23, + 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, + 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, 13,7,3,6,2,24, 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, + 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,3,1,12,41, + 13,6,3,4,13,9, 13,6,3,6,2,25, 13,5,10,4,13,10, 13,5,10,5,13,10, 13,5,4,6,2,26, 13,4,9,5,13,11, 13,4,4,6,2,27, 13,3,9,1,6,44, + 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,4,13,12, + 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, 14,9,12,1,3,38, 14,9,12,3,3,38, 14,9,12,5,14,6, + 14,9,11,1,4,38, 14,9,11,3,4,38, 14,9,10,1,5,38, 14,9,10,3,5,38, 14,9,9,1,6,38, 14,9,9,3,6,38, 14,9,8,1,7,38, 14,9,8,3,7,38, + 14,9,7,1,8,38, 14,9,7,3,8,38, 14,9,6,1,9,38, 14,9,6,3,9,38, 14,9,5,1,10,38, 14,9,5,3,10,38, 14,9,4,1,11,38, 14,9,4,3,11,38, + 14,9,3,1,12,38, 14,9,3,3,12,38, 14,9,3,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, + 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, + 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, + 14,8,3,6,1,23, 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,4,14,10, 14,5,10,5,14,10, 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, + 14,5,8,3,7,42, 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,4,1,11,42, + 14,5,4,3,11,42, 14,5,4,6,1,26, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,9,5,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, 14,4,7,1,8,43, + 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1475, + count = 972, + faces = { + 1,8,12,2,3,87, 1,8,12,3,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,11,3,4,87, 1,8,10,2,5,87, 1,8,10,3,5,87, 1,8,9,2,6,87, + 1,8,9,3,6,87, 1,8,8,2,7,87, 1,8,8,3,7,87, 1,8,7,2,8,87, 1,8,7,3,8,87, 1,8,6,2,9,87, 1,8,6,3,9,87, 1,8,5,2,10,87, + 1,8,5,3,10,87, 1,8,4,2,11,87, 1,8,4,3,11,87, 1,8,3,2,12,87, 1,8,3,3,12,87, 1,8,3,6,14,71, 1,7,12,2,3,88, 1,7,12,5,1,56, + 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, + 1,7,3,2,12,88, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, 1,6,12,5,1,57, 1,6,11,2,4,89, 1,6,10,2,5,89, 1,6,9,2,6,89, + 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, 1,6,4,2,11,89, 1,6,3,2,12,89, 1,6,3,4,1,57, 1,6,3,6,1,57, + 1,5,11,2,4,90, 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, 1,5,8,2,7,90, 1,5,7,2,8,90, 1,5,6,2,9,90, + 1,5,5,2,10,90, 1,5,4,2,11,90, 1,5,4,6,1,58, 1,4,10,2,5,91, 1,4,10,5,14,75, 1,4,9,2,6,91, 1,4,8,2,7,91, 1,4,7,2,8,91, + 1,4,6,2,9,91, 1,4,5,2,10,91, 1,4,4,2,11,91, 1,4,4,6,14,75, 1,3,12,2,3,92, 1,3,12,3,3,92, 1,3,12,4,14,76, 1,3,12,5,14,76, + 1,3,11,2,4,92, 1,3,11,3,4,92, 1,3,11,4,14,76, 1,3,10,2,5,92, 1,3,10,4,14,76, 1,3,9,2,6,92, 1,3,9,4,14,76, 1,3,8,2,7,92, + 1,3,8,4,14,76, 1,3,7,2,8,92, 1,3,7,4,14,76, 1,3,6,2,9,92, 1,3,6,4,14,76, 1,3,5,2,10,92, 1,3,5,4,14,76, 1,3,4,2,11,92, + 1,3,4,4,14,76, 1,3,3,2,12,92, 1,3,3,3,12,92, 1,3,3,4,14,76, 1,3,3,6,14,76, 2,9,12,2,3,86, 2,9,12,3,3,86, 2,9,12,5,2,54, + 2,9,11,2,4,86, 2,9,11,3,4,86, 2,9,10,2,5,86, 2,9,10,3,5,86, 2,9,9,2,6,86, 2,9,9,3,6,86, 2,9,8,2,7,86, 2,9,8,3,7,86, + 2,9,7,2,8,86, 2,9,7,3,8,86, 2,9,6,2,9,86, 2,9,6,3,9,86, 2,9,5,2,10,86, 2,9,5,3,10,86, 2,9,4,2,11,86, 2,9,4,3,11,86, + 2,9,3,2,12,86, 2,9,3,3,12,86, 2,9,3,6,13,70, 2,8,12,5,2,55, 2,8,3,6,13,71, 2,7,12,5,2,56, 2,7,3,6,13,72, 2,6,12,4,2,57, + 2,6,12,5,2,57, 2,6,3,4,2,57, 2,6,3,6,13,73, 2,5,11,4,2,58, 2,5,11,5,2,58, 2,5,4,6,13,74, 2,4,10,5,2,59, 2,4,4,6,13,75, + 2,3,12,3,3,92, 2,3,12,5,13,76, 2,3,11,3,4,92, 2,3,3,3,12,92, 2,3,3,6,13,76, 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, + 2,2,13,5,13,77, 2,2,12,2,3,93, 2,2,12,4,13,77, 2,2,11,2,4,93, 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, + 2,2,9,4,13,77, 2,2,8,2,7,93, 2,2,8,4,13,77, 2,2,7,2,8,93, 2,2,7,4,13,77, 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, + 2,2,5,4,13,77, 2,2,4,2,11,93, 2,2,4,4,13,77, 2,2,3,2,12,93, 2,2,3,4,13,77, 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, + 2,2,2,6,13,77, 3,11,12,2,3,84, 3,11,12,3,3,84, 3,11,12,5,3,52, 3,11,11,2,4,84, 3,11,11,3,4,84, 3,11,10,2,5,84, 3,11,10,3,5,84, + 3,11,9,2,6,84, 3,11,9,3,6,84, 3,11,8,2,7,84, 3,11,8,3,7,84, 3,11,7,2,8,84, 3,11,7,3,8,84, 3,11,6,2,9,84, 3,11,6,3,9,84, + 3,11,5,2,10,84, 3,11,5,3,10,84, 3,11,4,2,11,84, 3,11,4,3,11,84, 3,11,3,2,12,84, 3,11,3,3,12,84, 3,11,3,6,12,68, 3,10,12,2,3,85, + 3,10,12,5,3,53, 3,10,11,2,4,85, 3,10,10,2,5,85, 3,10,9,2,6,85, 3,10,8,2,7,85, 3,10,7,2,8,85, 3,10,6,2,9,85, 3,10,5,2,10,85, + 3,10,4,2,11,85, 3,10,3,2,12,85, 3,10,3,6,12,69, 3,9,12,5,3,54, 3,9,3,6,12,70, 3,8,12,5,3,55, 3,8,3,6,12,71, 3,7,12,5,3,56, + 3,7,3,6,12,72, 3,6,12,4,3,57, 3,6,12,5,3,57, 3,6,3,4,3,57, 3,6,3,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,4,6,12,74, + 3,4,10,5,3,59, 3,4,4,6,12,75, 3,3,12,3,3,92, 3,3,12,5,3,60, 3,3,11,3,4,92, 3,3,3,3,12,92, 3,3,3,6,12,76, 3,2,13,3,2,93, + 3,2,13,4,12,77, 3,2,13,5,12,77, 3,2,12,4,12,77, 3,2,11,4,12,77, 3,2,10,4,12,77, 3,2,9,4,12,77, 3,2,8,4,12,77, 3,2,7,4,12,77, + 3,2,6,4,12,77, 3,2,5,4,12,77, 3,2,4,4,12,77, 3,2,3,4,12,77, 3,2,2,3,13,93, 3,2,2,4,12,77, 3,2,2,6,12,77, 4,12,12,2,3,83, + 4,12,12,3,3,83, 4,12,12,5,4,51, 4,12,11,2,4,83, 4,12,11,3,4,83, 4,12,10,2,5,83, 4,12,10,3,5,83, 4,12,9,2,6,83, 4,12,9,3,6,83, + 4,12,8,2,7,83, 4,12,8,3,7,83, 4,12,7,2,8,83, 4,12,7,3,8,83, 4,12,6,2,9,83, 4,12,6,3,9,83, 4,12,5,2,10,83, 4,12,5,3,10,83, + 4,12,4,2,11,83, 4,12,4,3,11,83, 4,12,3,2,12,83, 4,12,3,3,12,83, 4,12,3,6,11,67, 4,11,12,5,4,52, 4,11,3,6,11,68, 4,10,12,5,4,53, + 4,10,3,6,11,69, 4,9,12,5,4,54, 4,9,3,6,11,70, 4,8,12,5,4,55, 4,8,3,6,11,71, 4,7,12,5,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, + 4,6,12,5,4,57, 4,6,3,4,4,57, 4,6,3,6,11,73, 4,5,11,4,4,58, 4,5,11,5,4,58, 4,5,4,6,11,74, 4,4,10,5,4,59, 4,4,4,6,11,75, + 4,3,12,3,3,92, 4,3,12,5,4,60, 4,3,11,3,4,92, 4,3,3,3,12,92, 4,3,3,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, + 4,2,2,3,13,93, 4,2,2,6,11,77, 4,1,12,2,3,94, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,2,4,94, 4,1,11,4,4,62, 4,1,10,2,5,94, + 4,1,10,4,4,62, 4,1,9,2,6,94, 4,1,9,4,4,62, 4,1,8,2,7,94, 4,1,8,4,4,62, 4,1,7,2,8,94, 4,1,7,4,4,62, 4,1,6,2,9,94, + 4,1,6,4,4,62, 4,1,5,2,10,94, 4,1,5,4,4,62, 4,1,4,2,11,94, 4,1,4,4,4,62, 4,1,3,2,12,94, 4,1,3,4,4,62, 4,1,2,2,13,94, + 4,1,2,4,4,62, 4,1,2,6,4,62, 5,13,11,2,4,82, 5,13,11,3,4,82, 5,13,11,5,5,50, 5,13,10,2,5,82, 5,13,10,3,5,82, 5,13,9,2,6,82, + 5,13,9,3,6,82, 5,13,8,2,7,82, 5,13,8,3,7,82, 5,13,7,2,8,82, 5,13,7,3,8,82, 5,13,6,2,9,82, 5,13,6,3,9,82, 5,13,5,2,10,82, + 5,13,5,3,10,82, 5,13,4,2,11,82, 5,13,4,3,11,82, 5,13,4,6,10,66, 5,12,12,3,3,83, 5,12,12,5,5,51, 5,12,3,3,12,83, 5,12,3,6,10,67, + 5,11,12,5,5,52, 5,11,3,6,10,68, 5,10,12,5,5,53, 5,10,3,6,10,69, 5,9,12,5,5,54, 5,9,3,6,10,70, 5,8,12,5,5,55, 5,8,3,6,10,71, + 5,7,12,5,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,3,4,5,57, 5,6,3,6,10,73, 5,5,11,4,5,58, 5,5,11,5,5,58, + 5,5,4,6,10,74, 5,4,10,5,5,59, 5,4,4,6,10,75, 5,3,12,3,3,92, 5,3,12,5,5,60, 5,3,11,3,4,92, 5,3,3,3,12,92, 5,3,3,6,10,76, + 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,3,13,93, 5,2,2,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,8,4,5,62, + 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,2,6,5,62, 5,0,11,2,4,95, 5,0,11,5,5,63, 5,0,10,2,5,95, + 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,4,2,11,95, 5,0,4,5,5,63, 5,0,3,2,12,95, 5,0,3,6,5,63, 6,14,10,2,5,81, 6,14,10,3,5,81, + 6,14,10,5,6,49, 6,14,9,2,6,81, 6,14,9,3,6,81, 6,14,8,2,7,81, 6,14,8,3,7,81, 6,14,7,2,8,81, 6,14,7,3,8,81, 6,14,6,2,9,81, + 6,14,6,3,9,81, 6,14,5,2,10,81, 6,14,5,3,10,81, 6,14,5,6,9,65, 6,13,11,3,4,82, 6,13,11,5,6,50, 6,13,4,3,11,82, 6,13,4,6,9,66, + 6,12,12,3,3,83, 6,12,12,5,6,51, 6,12,3,3,12,83, 6,12,3,6,9,67, 6,11,12,5,6,52, 6,11,3,6,9,68, 6,10,12,5,6,53, 6,10,3,6,9,69, + 6,9,12,5,6,54, 6,9,3,6,9,70, 6,8,12,5,6,55, 6,8,3,6,9,71, 6,7,12,5,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, + 6,6,3,4,6,57, 6,6,3,6,9,73, 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,4,6,9,74, 6,4,10,5,6,59, 6,4,4,6,9,75, 6,3,12,3,3,92, + 6,3,12,5,6,60, 6,3,11,3,4,92, 6,3,3,3,12,92, 6,3,3,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, + 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, + 6,1,2,6,9,78, 6,0,11,5,6,63, 6,0,9,6,6,63, 6,0,4,5,6,63, 6,0,3,6,6,63, 7,14,10,3,5,81, 7,14,10,5,7,49, 7,14,9,3,6,81, + 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,5,3,10,81, 7,14,5,6,8,65, 7,13,11,3,4,82, 7,13,11,5,7,50, 7,13,4,3,11,82, + 7,13,4,6,8,66, 7,12,12,3,3,83, 7,12,12,5,7,51, 7,12,3,3,12,83, 7,12,3,6,8,67, 7,11,12,5,7,52, 7,11,3,6,8,68, 7,10,12,5,7,53, + 7,10,3,6,8,69, 7,9,12,5,7,54, 7,9,3,6,8,70, 7,8,12,5,7,55, 7,8,3,6,8,71, 7,7,12,5,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, + 7,6,12,5,7,57, 7,6,3,4,7,57, 7,6,3,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, 7,5,4,6,8,74, 7,4,10,5,7,59, 7,4,4,6,8,75, + 7,3,12,3,3,92, 7,3,12,5,7,60, 7,3,11,3,4,92, 7,3,3,3,12,92, 7,3,3,6,8,76, 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, + 7,2,2,3,13,93, 7,2,2,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, + 7,1,2,4,7,62, 7,1,2,6,8,78, 7,0,11,5,7,63, 7,0,9,6,7,63, 7,0,4,5,7,63, 7,0,3,6,7,63, 8,14,10,3,5,81, 8,14,10,5,8,49, + 8,14,9,3,6,81, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, 8,14,5,6,7,65, 8,13,11,3,4,82, 8,13,11,5,8,50, + 8,13,4,3,11,82, 8,13,4,6,7,66, 8,12,12,3,3,83, 8,12,12,5,8,51, 8,12,3,3,12,83, 8,12,3,6,7,67, 8,11,12,5,8,52, 8,11,3,6,7,68, + 8,10,12,5,8,53, 8,10,3,6,7,69, 8,9,12,5,8,54, 8,9,3,6,7,70, 8,8,12,5,8,55, 8,8,3,6,7,71, 8,7,12,5,8,56, 8,7,3,6,7,72, + 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,3,4,8,57, 8,6,3,6,7,73, 8,5,11,4,8,58, 8,5,11,5,8,58, 8,5,4,6,7,74, 8,4,10,5,8,59, + 8,4,4,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, 8,3,11,3,4,92, 8,3,3,3,12,92, 8,3,3,6,7,76, 8,2,13,3,2,93, 8,2,13,4,8,61, + 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, + 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, 8,0,11,5,7,79, 8,0,9,6,7,79, 8,0,4,5,7,79, 8,0,3,6,7,79, 9,14,10,1,5,81, + 9,14,10,3,5,81, 9,14,10,5,9,49, 9,14,9,1,6,81, 9,14,9,3,6,81, 9,14,8,1,7,81, 9,14,8,3,7,81, 9,14,7,1,8,81, 9,14,7,3,8,81, + 9,14,6,1,9,81, 9,14,6,3,9,81, 9,14,5,1,10,81, 9,14,5,3,10,81, 9,14,5,6,6,65, 9,13,11,3,4,82, 9,13,11,5,9,50, 9,13,4,3,11,82, + 9,13,4,6,6,66, 9,12,12,3,3,83, 9,12,12,5,9,51, 9,12,3,3,12,83, 9,12,3,6,6,67, 9,11,12,5,9,52, 9,11,3,6,6,68, 9,10,12,5,9,53, + 9,10,3,6,6,69, 9,9,12,5,9,54, 9,9,3,6,6,70, 9,8,12,5,9,55, 9,8,3,6,6,71, 9,7,12,5,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, + 9,6,12,5,9,57, 9,6,3,4,9,57, 9,6,3,6,6,73, 9,5,11,4,9,58, 9,5,11,5,9,58, 9,5,4,6,6,74, 9,4,10,5,9,59, 9,4,4,6,6,75, + 9,3,12,3,3,92, 9,3,12,5,9,60, 9,3,11,3,4,92, 9,3,3,3,12,92, 9,3,3,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, + 9,2,2,3,13,93, 9,2,2,6,6,77, 9,1,12,4,6,78, 9,1,12,5,6,78, 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,5,4,6,78, + 9,1,2,4,6,78, 9,1,2,6,6,78, 9,0,11,5,6,79, 9,0,9,6,6,79, 9,0,4,5,6,79, 9,0,3,6,6,79, 10,13,11,1,4,82, 10,13,11,3,4,82, + 10,13,11,5,10,50, 10,13,10,1,5,82, 10,13,10,3,5,82, 10,13,9,1,6,82, 10,13,9,3,6,82, 10,13,8,1,7,82, 10,13,8,3,7,82, 10,13,7,1,8,82, + 10,13,7,3,8,82, 10,13,6,1,9,82, 10,13,6,3,9,82, 10,13,5,1,10,82, 10,13,5,3,10,82, 10,13,4,1,11,82, 10,13,4,3,11,82, 10,13,4,6,5,66, + 10,12,12,3,3,83, 10,12,12,5,10,51, 10,12,3,3,12,83, 10,12,3,6,5,67, 10,11,12,5,10,52, 10,11,3,6,5,68, 10,10,12,5,10,53, 10,10,3,6,5,69, + 10,9,12,5,10,54, 10,9,3,6,5,70, 10,8,12,5,10,55, 10,8,3,6,5,71, 10,7,12,5,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, + 10,6,3,4,10,57, 10,6,3,6,5,73, 10,5,11,4,10,58, 10,5,11,5,10,58, 10,5,4,6,5,74, 10,4,10,5,10,59, 10,4,4,6,5,75, 10,3,12,3,3,92, + 10,3,12,5,10,60, 10,3,11,3,4,92, 10,3,3,3,12,92, 10,3,3,6,5,76, 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,3,13,93, + 10,2,2,6,5,77, 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,2,4,10,62, + 10,1,2,6,5,78, 10,0,11,1,4,95, 10,0,11,5,5,79, 10,0,10,1,5,95, 10,0,9,1,6,95, 10,0,9,6,5,79, 10,0,4,1,11,95, 10,0,4,5,5,79, + 10,0,3,1,12,95, 10,0,3,6,5,79, 11,12,12,1,3,83, 11,12,12,3,3,83, 11,12,12,5,11,51, 11,12,11,1,4,83, 11,12,11,3,4,83, 11,12,10,1,5,83, + 11,12,10,3,5,83, 11,12,9,1,6,83, 11,12,9,3,6,83, 11,12,8,1,7,83, 11,12,8,3,7,83, 11,12,7,1,8,83, 11,12,7,3,8,83, 11,12,6,1,9,83, + 11,12,6,3,9,83, 11,12,5,1,10,83, 11,12,5,3,10,83, 11,12,4,1,11,83, 11,12,4,3,11,83, 11,12,3,1,12,83, 11,12,3,3,12,83, 11,12,3,6,4,67, + 11,11,12,5,11,52, 11,11,3,6,4,68, 11,10,12,5,11,53, 11,10,3,6,4,69, 11,9,12,5,11,54, 11,9,3,6,4,70, 11,8,12,5,11,55, 11,8,3,6,4,71, + 11,7,12,5,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,3,4,11,57, 11,6,3,6,4,73, 11,5,11,4,11,58, 11,5,11,5,11,58, + 11,5,4,6,4,74, 11,4,10,5,11,59, 11,4,4,6,4,75, 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,11,3,4,92, 11,3,3,3,12,92, 11,3,3,6,4,76, + 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,3,13,93, 11,2,2,6,4,77, 11,1,12,1,3,94, 11,1,12,4,11,62, 11,1,12,5,11,62, + 11,1,11,1,4,94, 11,1,11,4,11,62, 11,1,10,1,5,94, 11,1,10,4,11,62, 11,1,9,1,6,94, 11,1,9,4,11,62, 11,1,8,1,7,94, 11,1,8,4,11,62, + 11,1,7,1,8,94, 11,1,7,4,11,62, 11,1,6,1,9,94, 11,1,6,4,11,62, 11,1,5,1,10,94, 11,1,5,4,11,62, 11,1,4,1,11,94, 11,1,4,4,11,62, + 11,1,3,1,12,94, 11,1,3,4,11,62, 11,1,2,1,13,94, 11,1,2,4,11,62, 11,1,2,6,4,78, 12,11,12,1,3,84, 12,11,12,3,3,84, 12,11,12,5,12,52, + 12,11,11,1,4,84, 12,11,11,3,4,84, 12,11,10,1,5,84, 12,11,10,3,5,84, 12,11,9,1,6,84, 12,11,9,3,6,84, 12,11,8,1,7,84, 12,11,8,3,7,84, + 12,11,7,1,8,84, 12,11,7,3,8,84, 12,11,6,1,9,84, 12,11,6,3,9,84, 12,11,5,1,10,84, 12,11,5,3,10,84, 12,11,4,1,11,84, 12,11,4,3,11,84, + 12,11,3,1,12,84, 12,11,3,3,12,84, 12,11,3,6,3,68, 12,10,12,1,3,85, 12,10,12,5,12,53, 12,10,11,1,4,85, 12,10,10,1,5,85, 12,10,9,1,6,85, + 12,10,8,1,7,85, 12,10,7,1,8,85, 12,10,6,1,9,85, 12,10,5,1,10,85, 12,10,4,1,11,85, 12,10,3,1,12,85, 12,10,3,6,3,69, 12,9,12,5,12,54, + 12,9,3,6,3,70, 12,8,12,5,12,55, 12,8,3,6,3,71, 12,7,12,5,12,56, 12,7,3,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,3,4,12,57, + 12,6,3,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, 12,5,4,6,3,74, 12,4,10,5,12,59, 12,4,4,6,3,75, 12,3,12,3,3,92, 12,3,12,5,12,60, + 12,3,11,3,4,92, 12,3,3,3,12,92, 12,3,3,6,3,76, 12,2,13,1,2,93, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,1,3,93, + 12,2,12,4,12,61, 12,2,11,1,4,93, 12,2,11,4,12,61, 12,2,10,1,5,93, 12,2,10,4,12,61, 12,2,9,1,6,93, 12,2,9,4,12,61, 12,2,8,1,7,93, + 12,2,8,4,12,61, 12,2,7,1,8,93, 12,2,7,4,12,61, 12,2,6,1,9,93, 12,2,6,4,12,61, 12,2,5,1,10,93, 12,2,5,4,12,61, 12,2,4,1,11,93, + 12,2,4,4,12,61, 12,2,3,1,12,93, 12,2,3,4,12,61, 12,2,2,1,13,93, 12,2,2,3,13,93, 12,2,2,4,12,61, 12,2,2,6,12,61, 13,9,12,1,3,86, + 13,9,12,3,3,86, 13,9,12,5,13,54, 13,9,11,1,4,86, 13,9,11,3,4,86, 13,9,10,1,5,86, 13,9,10,3,5,86, 13,9,9,1,6,86, 13,9,9,3,6,86, + 13,9,8,1,7,86, 13,9,8,3,7,86, 13,9,7,1,8,86, 13,9,7,3,8,86, 13,9,6,1,9,86, 13,9,6,3,9,86, 13,9,5,1,10,86, 13,9,5,3,10,86, + 13,9,4,1,11,86, 13,9,4,3,11,86, 13,9,3,1,12,86, 13,9,3,3,12,86, 13,9,3,6,2,70, 13,8,12,5,13,55, 13,8,3,6,2,71, 13,7,12,5,13,56, + 13,7,3,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,3,4,13,57, 13,6,3,6,2,73, 13,5,11,4,13,58, 13,5,11,5,13,58, 13,5,4,6,2,74, + 13,4,10,1,5,91, 13,4,10,5,13,59, 13,4,9,1,6,91, 13,4,8,1,7,91, 13,4,7,1,8,91, 13,4,6,1,9,91, 13,4,5,1,10,91, 13,4,4,1,11,91, + 13,4,4,6,2,75, 13,3,12,1,3,92, 13,3,12,3,3,92, 13,3,12,4,13,60, 13,3,12,5,13,60, 13,3,11,1,4,92, 13,3,11,3,4,92, 13,3,11,4,13,60, + 13,3,10,1,5,92, 13,3,10,4,13,60, 13,3,9,1,6,92, 13,3,9,4,13,60, 13,3,8,1,7,92, 13,3,8,4,13,60, 13,3,7,1,8,92, 13,3,7,4,13,60, + 13,3,6,1,9,92, 13,3,6,4,13,60, 13,3,5,1,10,92, 13,3,5,4,13,60, 13,3,4,1,11,92, 13,3,4,4,13,60, 13,3,3,1,12,92, 13,3,3,3,12,92, + 13,3,3,4,13,60, 13,3,3,6,13,60, 14,8,12,1,3,87, 14,8,12,3,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,11,3,4,87, 14,8,10,1,5,87, + 14,8,10,3,5,87, 14,8,9,1,6,87, 14,8,9,3,6,87, 14,8,8,1,7,87, 14,8,8,3,7,87, 14,8,7,1,8,87, 14,8,7,3,8,87, 14,8,6,1,9,87, + 14,8,6,3,9,87, 14,8,5,1,10,87, 14,8,5,3,10,87, 14,8,4,1,11,87, 14,8,4,3,11,87, 14,8,3,1,12,87, 14,8,3,3,12,87, 14,8,3,6,1,71, + 14,7,12,1,3,88, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, 14,7,6,1,9,88, + 14,7,5,1,10,88, 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, 14,6,12,5,1,73, 14,6,11,1,4,89, + 14,6,10,1,5,89, 14,6,9,1,6,89, 14,6,8,1,7,89, 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, 14,6,4,1,11,89, 14,6,3,1,12,89, + 14,6,3,4,1,73, 14,6,3,6,1,73, 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, 14,5,10,1,5,90, 14,5,10,4,1,74, 14,5,9,1,6,90, + 14,5,9,4,1,74, 14,5,8,1,7,90, 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, 14,5,6,1,9,90, 14,5,6,4,1,74, 14,5,5,1,10,90, + 14,5,5,4,1,74, 14,5,4,1,11,90, 14,5,4,4,1,74, 14,5,4,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/rocket.lua b/assets/voxels/rocket.lua new file mode 100644 index 0000000..06f7473 --- /dev/null +++ b/assets/voxels/rocket.lua @@ -0,0 +1,328 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "rocket" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "rocket", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1738, + count = 1156, + faces = { + 1,13,12,2,3,34, 1,13,12,3,3,34, 1,13,12,5,1,2, 1,13,11,2,4,34, 1,13,11,3,4,34, 1,13,10,2,5,34, 1,13,10,3,5,34, 1,13,9,2,6,34, + 1,13,9,3,6,34, 1,13,8,2,7,34, 1,13,8,3,7,34, 1,13,7,2,8,34, 1,13,7,3,8,34, 1,13,6,2,9,34, 1,13,6,3,9,34, 1,13,5,2,10,34, + 1,13,5,3,10,34, 1,13,4,2,11,34, 1,13,4,3,11,34, 1,13,3,2,12,34, 1,13,3,3,12,34, 1,13,2,2,13,34, 1,13,2,3,13,34, 1,13,2,6,1,2, + 1,12,13,2,2,35, 1,12,13,3,2,35, 1,12,13,5,1,3, 1,12,12,2,3,35, 1,12,11,2,4,35, 1,12,10,2,5,35, 1,12,9,2,6,35, 1,12,8,2,7,35, + 1,12,7,2,8,35, 1,12,6,2,9,35, 1,12,5,2,10,35, 1,12,4,2,11,35, 1,12,3,2,12,35, 1,12,2,2,13,35, 1,12,1,2,14,35, 1,12,1,3,14,35, + 1,12,1,6,14,19, 1,11,14,2,1,36, 1,11,14,3,1,36, 1,11,14,4,14,20, 1,11,14,5,14,20, 1,11,13,2,2,36, 1,11,13,4,14,20, 1,11,12,2,3,36, + 1,11,12,4,14,20, 1,11,11,2,4,36, 1,11,11,4,14,20, 1,11,10,2,5,36, 1,11,10,4,14,20, 1,11,9,2,6,36, 1,11,9,4,14,20, 1,11,8,2,7,36, + 1,11,8,4,14,20, 1,11,7,2,8,36, 1,11,7,4,14,20, 1,11,6,2,9,36, 1,11,6,4,14,20, 1,11,5,2,10,36, 1,11,5,4,14,20, 1,11,4,2,11,36, + 1,11,4,4,14,20, 1,11,3,2,12,36, 1,11,3,4,14,20, 1,11,2,2,13,36, 1,11,2,4,14,20, 1,11,1,2,14,36, 1,11,1,4,14,20, 1,11,1,6,14,20, + 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, + 1,9,9,3,6,38, 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, + 1,9,5,3,10,38, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, 1,9,3,3,12,38, 1,9,2,2,13,38, 1,9,2,3,13,38, 1,9,2,4,1,6, + 1,9,2,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, + 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, + 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,10,2,5,42, + 1,5,10,3,5,42, 1,5,10,4,1,10, 1,5,10,5,1,10, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, + 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,4,6,14,26, + 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,9,5,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, + 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,14,11,2,4,33, 2,14,11,3,4,33, + 2,14,11,5,2,1, 2,14,10,2,5,33, 2,14,10,3,5,33, 2,14,9,2,6,33, 2,14,9,3,6,33, 2,14,8,2,7,33, 2,14,8,3,7,33, 2,14,7,2,8,33, + 2,14,7,3,8,33, 2,14,6,2,9,33, 2,14,6,3,9,33, 2,14,5,2,10,33, 2,14,5,3,10,33, 2,14,4,2,11,33, 2,14,4,3,11,33, 2,14,3,2,12,33, + 2,14,3,3,12,33, 2,14,3,6,2,1, 2,13,12,3,3,34, 2,13,12,5,2,2, 2,13,2,3,13,34, 2,13,2,6,13,18, 2,12,13,3,2,35, 2,12,13,5,2,3, + 2,12,1,3,14,35, 2,12,1,6,13,19, 2,11,14,3,1,36, 2,11,14,4,2,4, 2,11,14,5,2,4, 2,11,1,4,2,4, 2,11,1,6,13,20, 2,10,13,2,2,37, + 2,10,13,4,2,5, 2,10,13,5,2,5, 2,10,12,2,3,37, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, 2,10,8,2,7,37, 2,10,7,2,8,37, + 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,6,13,21, 2,9,12,5,2,6, 2,9,2,4,2,6, + 2,9,2,6,13,22, 2,8,12,5,2,7, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, + 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,4,4,2,8, + 2,7,4,6,13,24, 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, + 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,5,6,13,25, 2,5,10,4,2,10, 2,5,10,5,2,10, 2,5,4,3,11,42, 2,5,4,6,13,26, 2,4,9,5,2,11, + 2,4,4,6,13,27, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,9,5,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, + 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, 2,3,4,6,13,28, 3,15,10,2,5,32, + 3,15,10,3,5,32, 3,15,10,5,3,0, 3,15,9,2,6,32, 3,15,9,3,6,32, 3,15,8,2,7,32, 3,15,8,3,7,32, 3,15,7,2,8,32, 3,15,7,3,8,32, + 3,15,6,2,9,32, 3,15,6,3,9,32, 3,15,5,2,10,32, 3,15,5,3,10,32, 3,15,5,6,3,0, 3,14,11,3,4,33, 3,14,11,5,3,1, 3,14,4,3,11,33, + 3,14,3,3,12,33, 3,14,3,6,12,17, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,2,3,13,34, 3,13,2,6,12,18, 3,12,13,3,2,35, 3,12,13,5,3,3, + 3,12,1,3,14,35, 3,12,1,6,12,19, 3,11,14,3,1,36, 3,11,14,4,3,4, 3,11,14,5,3,4, 3,11,1,4,3,4, 3,11,1,6,12,20, 3,10,13,4,3,5, + 3,10,13,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,2,4,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, + 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,4,4,3,8, 3,7,4,6,12,24, 3,6,11,4,3,9, 3,6,11,5,3,9, 3,6,5,6,12,25, 3,5,10,4,3,10, + 3,5,10,5,3,10, 3,5,4,3,11,42, 3,5,4,6,12,26, 3,4,9,5,3,11, 3,4,4,6,12,27, 3,3,9,5,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, + 3,2,10,3,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,4,2,11,45, + 3,2,4,4,3,13, 3,2,4,6,12,29, 3,1,10,2,5,46, 3,1,10,4,3,14, 3,1,10,5,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, + 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,5,6,12,30, + 4,15,10,3,5,32, 4,15,10,5,4,0, 4,15,9,3,6,32, 4,15,8,3,7,32, 4,15,7,3,8,32, 4,15,6,3,9,32, 4,15,5,3,10,32, 4,15,5,6,4,0, + 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,4,3,11,33, 4,14,3,3,12,33, 4,14,3,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, 4,13,2,3,13,34, + 4,13,2,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, 4,12,1,3,14,35, 4,12,1,6,11,19, 4,11,14,3,1,36, 4,11,14,4,4,4, 4,11,14,5,4,4, + 4,11,1,4,4,4, 4,11,1,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,4,4,6, 4,9,2,6,11,22, + 4,8,12,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,4,4,8, 4,7,4,6,11,24, 4,6,11,4,4,9, + 4,6,11,5,4,9, 4,6,5,6,11,25, 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,4,3,11,42, 4,5,4,6,11,26, 4,4,9,5,4,11, 4,4,4,6,11,27, + 4,3,9,5,4,12, 4,3,4,6,11,28, 4,2,10,3,5,45, 4,2,10,5,4,13, 4,2,4,4,4,13, 4,2,4,6,11,29, 4,1,10,4,4,14, 4,1,10,5,4,14, + 4,1,5,4,4,14, 4,1,5,6,11,30, 4,0,9,2,6,47, 4,0,9,5,4,15, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, 4,0,6,6,11,31, + 5,15,10,3,5,32, 5,15,10,5,5,0, 5,15,9,3,6,32, 5,15,8,3,7,32, 5,15,7,3,8,32, 5,15,6,3,9,32, 5,15,5,3,10,32, 5,15,5,6,10,16, + 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,4,3,11,33, 5,14,3,3,12,33, 5,14,3,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,2,3,13,34, + 5,13,2,6,10,18, 5,12,13,3,2,35, 5,12,13,5,5,3, 5,12,1,3,14,35, 5,12,1,6,10,19, 5,11,14,3,1,36, 5,11,14,4,5,4, 5,11,14,5,5,4, + 5,11,1,4,5,4, 5,11,1,6,10,20, 5,10,13,4,5,5, 5,10,13,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,4,5,6, 5,9,2,6,10,22, + 5,8,12,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,4,4,5,8, 5,7,4,6,10,24, 5,6,11,4,5,9, + 5,6,11,5,5,9, 5,6,5,6,10,25, 5,5,10,4,5,10, 5,5,10,5,5,10, 5,5,4,3,11,42, 5,5,4,6,10,26, 5,4,9,5,5,11, 5,4,4,6,10,27, + 5,3,9,5,5,12, 5,3,4,6,10,28, 5,2,10,3,5,45, 5,2,10,5,5,13, 5,2,4,4,5,13, 5,2,4,6,10,29, 5,1,10,4,5,14, 5,1,10,5,5,14, + 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,9,5,5,15, 5,0,6,6,10,31, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,3,6,32, 6,15,8,3,7,32, + 6,15,7,3,8,32, 6,15,6,3,9,32, 6,15,5,3,10,32, 6,15,5,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,4,3,11,33, 6,14,3,3,12,33, + 6,14,3,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,2,3,13,34, 6,13,2,6,9,18, 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,1,3,14,35, + 6,12,1,6,9,19, 6,11,14,3,1,36, 6,11,14,4,6,4, 6,11,14,5,6,4, 6,11,1,4,6,4, 6,11,1,6,9,20, 6,10,13,4,6,5, 6,10,13,5,6,5, + 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,4,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, + 6,7,12,5,6,8, 6,7,4,4,6,8, 6,7,4,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, 6,6,5,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, + 6,5,4,3,11,42, 6,5,4,6,9,26, 6,4,9,5,6,11, 6,4,4,6,9,27, 6,3,9,5,6,12, 6,3,4,6,9,28, 6,2,10,3,5,45, 6,2,10,5,6,13, + 6,2,4,4,6,13, 6,2,4,6,9,29, 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,9,1,6,47, 6,0,9,5,6,15, + 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,15,10,3,5,32, 7,15,10,5,7,0, 7,15,9,3,6,32, 7,15,8,3,7,32, + 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,5,3,10,32, 7,15,5,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,4,3,11,33, 7,14,3,3,12,33, + 7,14,3,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,2,3,13,34, 7,13,2,6,8,18, 7,12,13,3,2,35, 7,12,13,5,7,3, 7,12,1,3,14,35, + 7,12,1,6,8,19, 7,11,14,3,1,36, 7,11,14,4,7,4, 7,11,14,5,7,4, 7,11,1,4,7,4, 7,11,1,6,8,20, 7,10,13,4,7,5, 7,10,13,5,7,5, + 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,2,4,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,3,4,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, + 7,7,12,5,7,8, 7,7,4,4,7,8, 7,7,4,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,5,6,8,25, 7,5,10,4,7,10, 7,5,10,5,7,10, + 7,5,4,3,11,42, 7,5,4,6,8,26, 7,4,9,5,7,11, 7,4,4,6,8,27, 7,3,9,5,7,12, 7,3,4,6,8,28, 7,2,10,3,5,45, 7,2,10,5,7,13, + 7,2,4,4,7,13, 7,2,4,6,8,29, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, + 7,1,5,4,7,14, 7,1,5,6,8,30, 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,3,6,32, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, + 8,15,5,3,10,32, 8,15,5,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,4,3,11,33, 8,14,3,3,12,33, 8,14,3,6,7,17, 8,13,12,3,3,34, + 8,13,12,5,8,2, 8,13,2,3,13,34, 8,13,2,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,1,3,14,35, 8,12,1,6,7,19, 8,11,14,3,1,36, + 8,11,14,4,8,4, 8,11,14,5,8,4, 8,11,1,4,8,4, 8,11,1,6,7,20, 8,10,13,4,8,5, 8,10,13,5,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, + 8,9,2,4,8,6, 8,9,2,6,7,22, 8,8,12,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,4,8,8, + 8,7,4,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,5,6,7,25, 8,5,10,4,8,10, 8,5,10,5,8,10, 8,5,4,3,11,42, 8,5,4,6,7,26, + 8,4,9,5,8,11, 8,4,4,6,7,27, 8,3,9,5,8,12, 8,3,4,6,7,28, 8,2,10,3,5,45, 8,2,10,5,8,13, 8,2,4,4,8,13, 8,2,4,6,7,29, + 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, + 9,15,10,3,5,32, 9,15,10,5,9,0, 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, 9,15,6,3,9,32, 9,15,5,3,10,32, 9,15,5,6,6,16, + 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,4,3,11,33, 9,14,3,3,12,33, 9,14,3,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,2,3,13,34, + 9,13,2,6,6,18, 9,12,13,3,2,35, 9,12,13,5,9,3, 9,12,1,3,14,35, 9,12,1,6,6,19, 9,11,14,3,1,36, 9,11,14,4,9,4, 9,11,14,5,9,4, + 9,11,1,4,9,4, 9,11,1,6,6,20, 9,10,13,4,9,5, 9,10,13,5,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,2,4,9,6, 9,9,2,6,6,22, + 9,8,12,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,4,4,9,8, 9,7,4,6,6,24, 9,6,11,4,9,9, + 9,6,11,5,9,9, 9,6,5,6,6,25, 9,5,10,4,9,10, 9,5,10,5,9,10, 9,5,4,3,11,42, 9,5,4,6,6,26, 9,4,9,5,9,11, 9,4,4,6,6,27, + 9,3,9,5,9,12, 9,3,4,6,6,28, 9,2,10,3,5,45, 9,2,10,5,9,13, 9,2,4,4,9,13, 9,2,4,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, + 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,9,2,6,47, 9,0,9,5,9,15, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, + 10,15,10,3,5,32, 10,15,10,5,10,0, 10,15,9,3,6,32, 10,15,8,3,7,32, 10,15,7,3,8,32, 10,15,6,3,9,32, 10,15,5,3,10,32, 10,15,5,6,5,16, + 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,4,3,11,33, 10,14,3,3,12,33, 10,14,3,6,5,17, 10,13,12,3,3,34, 10,13,12,5,10,2, 10,13,2,3,13,34, + 10,13,2,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,1,3,14,35, 10,12,1,6,5,19, 10,11,14,3,1,36, 10,11,14,4,10,4, 10,11,14,5,10,4, + 10,11,1,4,10,4, 10,11,1,6,5,20, 10,10,13,4,10,5, 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,4,10,6, 10,9,2,6,5,22, + 10,8,12,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,4,4,10,8, 10,7,4,6,5,24, 10,6,11,4,10,9, + 10,6,11,5,10,9, 10,6,5,6,5,25, 10,5,10,4,10,10, 10,5,10,5,10,10, 10,5,4,3,11,42, 10,5,4,6,5,26, 10,4,9,5,10,11, 10,4,4,6,5,27, + 10,3,9,5,10,12, 10,3,4,6,5,28, 10,2,10,3,5,45, 10,2,10,5,10,13, 10,2,4,4,10,13, 10,2,4,6,5,29, 10,1,10,4,10,14, 10,1,10,5,10,14, + 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,9,5,10,15, 10,0,6,6,5,31, 11,15,10,3,5,32, 11,15,10,5,11,0, 11,15,9,3,6,32, 11,15,8,3,7,32, + 11,15,7,3,8,32, 11,15,6,3,9,32, 11,15,5,3,10,32, 11,15,5,6,11,0, 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,4,3,11,33, 11,14,3,3,12,33, + 11,14,3,6,4,17, 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,2,3,13,34, 11,13,2,6,4,18, 11,12,13,3,2,35, 11,12,13,5,11,3, 11,12,1,3,14,35, + 11,12,1,6,4,19, 11,11,14,3,1,36, 11,11,14,4,11,4, 11,11,14,5,11,4, 11,11,1,4,11,4, 11,11,1,6,4,20, 11,10,13,4,11,5, 11,10,13,5,11,5, + 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,2,4,11,6, 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, + 11,7,12,5,11,8, 11,7,4,4,11,8, 11,7,4,6,4,24, 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,5,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, + 11,5,4,3,11,42, 11,5,4,6,4,26, 11,4,9,5,11,11, 11,4,4,6,4,27, 11,3,9,5,11,12, 11,3,4,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, + 11,2,4,4,11,13, 11,2,4,6,4,29, 11,1,10,4,11,14, 11,1,10,5,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,9,1,6,47, 11,0,9,5,11,15, + 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,6,6,4,31, 12,15,10,1,5,32, 12,15,10,3,5,32, 12,15,10,5,12,0, 12,15,9,1,6,32, + 12,15,9,3,6,32, 12,15,8,1,7,32, 12,15,8,3,7,32, 12,15,7,1,8,32, 12,15,7,3,8,32, 12,15,6,1,9,32, 12,15,6,3,9,32, 12,15,5,1,10,32, + 12,15,5,3,10,32, 12,15,5,6,12,0, 12,14,11,3,4,33, 12,14,11,5,12,1, 12,14,4,3,11,33, 12,14,3,3,12,33, 12,14,3,6,3,17, 12,13,12,3,3,34, + 12,13,12,5,12,2, 12,13,2,3,13,34, 12,13,2,6,3,18, 12,12,13,3,2,35, 12,12,13,5,12,3, 12,12,1,3,14,35, 12,12,1,6,3,19, 12,11,14,3,1,36, + 12,11,14,4,12,4, 12,11,14,5,12,4, 12,11,1,4,12,4, 12,11,1,6,3,20, 12,10,13,4,12,5, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, + 12,9,2,4,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,4,12,8, + 12,7,4,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,5,6,3,25, 12,5,10,4,12,10, 12,5,10,5,12,10, 12,5,4,3,11,42, 12,5,4,6,3,26, + 12,4,9,5,12,11, 12,4,4,6,3,27, 12,3,9,5,12,12, 12,3,4,6,3,28, 12,2,10,1,5,45, 12,2,10,3,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, + 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,4,1,11,45, 12,2,4,4,12,13, 12,2,4,6,3,29, 12,1,10,1,5,46, + 12,1,10,4,12,14, 12,1,10,5,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, + 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,5,6,3,30, 13,14,11,1,4,33, 13,14,11,3,4,33, 13,14,11,5,13,1, + 13,14,10,1,5,33, 13,14,10,3,5,33, 13,14,9,1,6,33, 13,14,9,3,6,33, 13,14,8,1,7,33, 13,14,8,3,7,33, 13,14,7,1,8,33, 13,14,7,3,8,33, + 13,14,6,1,9,33, 13,14,6,3,9,33, 13,14,5,1,10,33, 13,14,5,3,10,33, 13,14,4,1,11,33, 13,14,4,3,11,33, 13,14,3,1,12,33, 13,14,3,3,12,33, + 13,14,3,6,13,1, 13,13,12,3,3,34, 13,13,12,5,13,2, 13,13,2,3,13,34, 13,13,2,6,2,18, 13,12,13,3,2,35, 13,12,13,5,13,3, 13,12,1,3,14,35, + 13,12,1,6,2,19, 13,11,14,3,1,36, 13,11,14,4,13,4, 13,11,14,5,13,4, 13,11,1,4,13,4, 13,11,1,6,2,20, 13,10,13,1,2,37, 13,10,13,4,13,5, + 13,10,13,5,13,5, 13,10,12,1,3,37, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, 13,10,6,1,9,37, + 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,6,2,21, 13,9,12,5,13,6, 13,9,2,4,13,6, 13,9,2,6,2,22, + 13,8,12,5,13,7, 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, + 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,4,4,13,8, 13,7,4,6,2,24, + 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, + 13,6,5,1,10,41, 13,6,5,6,2,25, 13,5,10,4,13,10, 13,5,10,5,13,10, 13,5,4,3,11,42, 13,5,4,6,2,26, 13,4,9,5,13,11, 13,4,4,6,2,27, + 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, 13,3,7,4,13,12, 13,3,6,1,9,44, + 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, 14,13,12,1,3,34, 14,13,12,3,3,34, + 14,13,12,5,14,2, 14,13,11,1,4,34, 14,13,11,3,4,34, 14,13,10,1,5,34, 14,13,10,3,5,34, 14,13,9,1,6,34, 14,13,9,3,6,34, 14,13,8,1,7,34, + 14,13,8,3,7,34, 14,13,7,1,8,34, 14,13,7,3,8,34, 14,13,6,1,9,34, 14,13,6,3,9,34, 14,13,5,1,10,34, 14,13,5,3,10,34, 14,13,4,1,11,34, + 14,13,4,3,11,34, 14,13,3,1,12,34, 14,13,3,3,12,34, 14,13,2,1,13,34, 14,13,2,3,13,34, 14,13,2,6,14,2, 14,12,13,1,2,35, 14,12,13,3,2,35, + 14,12,13,5,14,3, 14,12,12,1,3,35, 14,12,11,1,4,35, 14,12,10,1,5,35, 14,12,9,1,6,35, 14,12,8,1,7,35, 14,12,7,1,8,35, 14,12,6,1,9,35, + 14,12,5,1,10,35, 14,12,4,1,11,35, 14,12,3,1,12,35, 14,12,2,1,13,35, 14,12,1,1,14,35, 14,12,1,3,14,35, 14,12,1,6,1,19, 14,11,14,1,1,36, + 14,11,14,3,1,36, 14,11,14,4,1,20, 14,11,14,5,1,20, 14,11,13,1,2,36, 14,11,13,4,1,20, 14,11,12,1,3,36, 14,11,12,4,1,20, 14,11,11,1,4,36, + 14,11,11,4,1,20, 14,11,10,1,5,36, 14,11,10,4,1,20, 14,11,9,1,6,36, 14,11,9,4,1,20, 14,11,8,1,7,36, 14,11,8,4,1,20, 14,11,7,1,8,36, + 14,11,7,4,1,20, 14,11,6,1,9,36, 14,11,6,4,1,20, 14,11,5,1,10,36, 14,11,5,4,1,20, 14,11,4,1,11,36, 14,11,4,4,1,20, 14,11,3,1,12,36, + 14,11,3,4,1,20, 14,11,2,1,13,36, 14,11,2,4,1,20, 14,11,1,1,14,36, 14,11,1,4,1,20, 14,11,1,6,1,20, 14,9,12,1,3,38, 14,9,12,3,3,38, + 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,11,3,4,38, 14,9,10,1,5,38, 14,9,10,3,5,38, 14,9,9,1,6,38, 14,9,9,3,6,38, 14,9,8,1,7,38, + 14,9,8,3,7,38, 14,9,7,1,8,38, 14,9,7,3,8,38, 14,9,6,1,9,38, 14,9,6,3,9,38, 14,9,5,1,10,38, 14,9,5,3,10,38, 14,9,4,1,11,38, + 14,9,4,3,11,38, 14,9,3,1,12,38, 14,9,3,3,12,38, 14,9,2,1,13,38, 14,9,2,3,13,38, 14,9,2,4,14,6, 14,9,2,6,1,22, 14,8,12,1,3,39, + 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, + 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, + 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,3,6,1,23, 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,4,14,10, + 14,5,10,5,14,10, 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, + 14,5,6,3,9,42, 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,4,1,11,42, 14,5,4,3,11,42, 14,5,4,6,1,26, 14,4,9,1,6,43, 14,4,9,4,14,11, + 14,4,9,5,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, + 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1847, + count = 1202, + faces = { + 1,12,12,2,3,83, 1,12,12,3,3,83, 1,12,12,5,1,51, 1,12,11,2,4,83, 1,12,11,3,4,83, 1,12,10,2,5,83, 1,12,10,3,5,83, 1,12,9,2,6,83, + 1,12,9,3,6,83, 1,12,8,2,7,83, 1,12,8,3,7,83, 1,12,7,2,8,83, 1,12,7,3,8,83, 1,12,6,2,9,83, 1,12,6,3,9,83, 1,12,5,2,10,83, + 1,12,5,3,10,83, 1,12,4,2,11,83, 1,12,4,3,11,83, 1,12,3,2,12,83, 1,12,3,3,12,83, 1,12,2,2,13,83, 1,12,2,3,13,83, 1,12,2,6,1,51, + 1,11,13,2,2,84, 1,11,13,3,2,84, 1,11,13,5,1,52, 1,11,12,2,3,84, 1,11,11,2,4,84, 1,11,10,2,5,84, 1,11,9,2,6,84, 1,11,8,2,7,84, + 1,11,7,2,8,84, 1,11,6,2,9,84, 1,11,5,2,10,84, 1,11,4,2,11,84, 1,11,3,2,12,84, 1,11,2,2,13,84, 1,11,1,2,14,84, 1,11,1,3,14,84, + 1,11,1,6,14,68, 1,10,14,2,1,85, 1,10,14,3,1,85, 1,10,14,4,14,69, 1,10,14,5,14,69, 1,10,13,2,2,85, 1,10,13,4,14,69, 1,10,12,2,3,85, + 1,10,12,4,14,69, 1,10,11,2,4,85, 1,10,11,4,14,69, 1,10,10,2,5,85, 1,10,10,4,14,69, 1,10,9,2,6,85, 1,10,9,4,14,69, 1,10,8,2,7,85, + 1,10,8,4,14,69, 1,10,7,2,8,85, 1,10,7,4,14,69, 1,10,6,2,9,85, 1,10,6,4,14,69, 1,10,5,2,10,85, 1,10,5,4,14,69, 1,10,4,2,11,85, + 1,10,4,4,14,69, 1,10,3,2,12,85, 1,10,3,4,14,69, 1,10,2,2,13,85, 1,10,2,4,14,69, 1,10,1,2,14,85, 1,10,1,4,14,69, 1,10,1,6,14,69, + 1,8,12,2,3,87, 1,8,12,3,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,11,3,4,87, 1,8,10,2,5,87, 1,8,10,3,5,87, 1,8,9,2,6,87, + 1,8,9,3,6,87, 1,8,8,2,7,87, 1,8,8,3,7,87, 1,8,7,2,8,87, 1,8,7,3,8,87, 1,8,6,2,9,87, 1,8,6,3,9,87, 1,8,5,2,10,87, + 1,8,5,3,10,87, 1,8,4,2,11,87, 1,8,4,3,11,87, 1,8,3,2,12,87, 1,8,3,3,12,87, 1,8,2,2,13,87, 1,8,2,3,13,87, 1,8,2,4,1,55, + 1,8,2,6,14,71, 1,7,12,2,3,88, 1,7,12,5,1,56, 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, + 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, 1,7,3,2,12,88, 1,7,3,4,1,56, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, + 1,6,12,5,1,57, 1,6,11,2,4,89, 1,6,10,2,5,89, 1,6,9,2,6,89, 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, + 1,6,4,2,11,89, 1,6,4,6,1,57, 1,5,11,2,4,90, 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, 1,5,8,2,7,90, + 1,5,7,2,8,90, 1,5,6,2,9,90, 1,5,5,2,10,90, 1,5,4,2,11,90, 1,5,4,6,1,58, 1,4,10,2,5,91, 1,4,10,5,14,75, 1,4,9,2,6,91, + 1,4,8,2,7,91, 1,4,7,2,8,91, 1,4,6,2,9,91, 1,4,5,2,10,91, 1,4,4,2,11,91, 1,4,4,6,14,75, 1,3,12,2,3,92, 1,3,12,3,3,92, + 1,3,12,4,14,76, 1,3,12,5,14,76, 1,3,11,2,4,92, 1,3,11,3,4,92, 1,3,11,4,14,76, 1,3,10,2,5,92, 1,3,10,4,14,76, 1,3,9,2,6,92, + 1,3,9,4,14,76, 1,3,8,2,7,92, 1,3,8,4,14,76, 1,3,7,2,8,92, 1,3,7,4,14,76, 1,3,6,2,9,92, 1,3,6,4,14,76, 1,3,5,2,10,92, + 1,3,5,4,14,76, 1,3,4,2,11,92, 1,3,4,4,14,76, 1,3,3,2,12,92, 1,3,3,3,12,92, 1,3,3,4,14,76, 1,3,3,6,14,76, 2,13,11,2,4,82, + 2,13,11,3,4,82, 2,13,11,5,2,50, 2,13,10,2,5,82, 2,13,10,3,5,82, 2,13,9,2,6,82, 2,13,9,3,6,82, 2,13,8,2,7,82, 2,13,8,3,7,82, + 2,13,7,2,8,82, 2,13,7,3,8,82, 2,13,6,2,9,82, 2,13,6,3,9,82, 2,13,5,2,10,82, 2,13,5,3,10,82, 2,13,4,2,11,82, 2,13,4,3,11,82, + 2,13,3,2,12,82, 2,13,3,3,12,82, 2,13,3,6,2,50, 2,12,12,3,3,83, 2,12,12,5,2,51, 2,12,2,3,13,83, 2,12,2,6,13,67, 2,11,13,3,2,84, + 2,11,13,5,2,52, 2,11,1,3,14,84, 2,11,1,6,13,68, 2,10,14,3,1,85, 2,10,14,4,2,53, 2,10,14,5,2,53, 2,10,1,4,2,53, 2,10,1,6,13,69, + 2,9,13,2,2,86, 2,9,13,4,2,54, 2,9,13,5,2,54, 2,9,12,2,3,86, 2,9,11,2,4,86, 2,9,10,2,5,86, 2,9,9,2,6,86, 2,9,8,2,7,86, + 2,9,7,2,8,86, 2,9,6,2,9,86, 2,9,5,2,10,86, 2,9,4,2,11,86, 2,9,3,2,12,86, 2,9,2,2,13,86, 2,9,2,6,13,70, 2,8,12,5,2,55, + 2,8,2,4,2,55, 2,8,2,6,13,71, 2,7,12,5,2,56, 2,7,3,4,2,56, 2,7,3,6,13,72, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,4,6,13,73, + 2,5,11,4,2,58, 2,5,11,5,2,58, 2,5,4,6,13,74, 2,4,10,5,2,59, 2,4,4,6,13,75, 2,3,12,3,3,92, 2,3,12,5,13,76, 2,3,11,3,4,92, + 2,3,3,3,12,92, 2,3,3,6,13,76, 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, 2,2,13,5,13,77, 2,2,12,2,3,93, 2,2,12,4,13,77, + 2,2,11,2,4,93, 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,4,13,77, 2,2,8,2,7,93, 2,2,8,4,13,77, + 2,2,7,2,8,93, 2,2,7,4,13,77, 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,4,13,77, 2,2,4,2,11,93, 2,2,4,4,13,77, + 2,2,3,2,12,93, 2,2,3,4,13,77, 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, 2,2,2,6,13,77, 3,14,10,2,5,81, 3,14,10,3,5,81, + 3,14,10,5,3,49, 3,14,9,2,6,81, 3,14,9,3,6,81, 3,14,8,2,7,81, 3,14,8,3,7,81, 3,14,7,2,8,81, 3,14,7,3,8,81, 3,14,6,2,9,81, + 3,14,6,3,9,81, 3,14,5,2,10,81, 3,14,5,3,10,81, 3,14,5,6,3,49, 3,13,11,3,4,82, 3,13,11,5,3,50, 3,13,4,3,11,82, 3,13,3,3,12,82, + 3,13,3,6,12,66, 3,12,12,3,3,83, 3,12,12,5,3,51, 3,12,2,3,13,83, 3,12,2,6,12,67, 3,11,13,3,2,84, 3,11,13,5,3,52, 3,11,1,3,14,84, + 3,11,1,6,12,68, 3,10,14,3,1,85, 3,10,14,4,3,53, 3,10,14,5,3,53, 3,10,1,4,3,53, 3,10,1,6,12,69, 3,9,13,4,3,54, 3,9,13,5,3,54, + 3,9,2,6,12,70, 3,8,12,5,3,55, 3,8,2,4,3,55, 3,8,2,6,12,71, 3,7,12,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, + 3,6,12,5,3,57, 3,6,4,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,4,6,12,74, 3,4,10,5,3,59, 3,4,4,6,12,75, 3,3,12,3,3,92, + 3,3,12,5,3,60, 3,3,11,3,4,92, 3,3,3,3,12,92, 3,3,3,6,12,76, 3,2,13,3,2,93, 3,2,13,4,12,77, 3,2,13,5,12,77, 3,2,12,4,12,77, + 3,2,11,4,12,77, 3,2,10,4,12,77, 3,2,9,4,12,77, 3,2,8,4,12,77, 3,2,7,4,12,77, 3,2,6,4,12,77, 3,2,5,4,12,77, 3,2,4,4,12,77, + 3,2,3,4,12,77, 3,2,2,3,13,93, 3,2,2,4,12,77, 3,2,2,6,12,77, 4,14,10,3,5,81, 4,14,10,5,4,49, 4,14,9,3,6,81, 4,14,8,3,7,81, + 4,14,7,3,8,81, 4,14,6,3,9,81, 4,14,5,3,10,81, 4,14,5,6,4,49, 4,13,11,3,4,82, 4,13,11,5,4,50, 4,13,4,3,11,82, 4,13,3,3,12,82, + 4,13,3,6,11,66, 4,12,12,3,3,83, 4,12,12,5,4,51, 4,12,2,3,13,83, 4,12,2,6,11,67, 4,11,13,3,2,84, 4,11,13,5,4,52, 4,11,1,3,14,84, + 4,11,1,6,11,68, 4,10,14,3,1,85, 4,10,14,4,4,53, 4,10,14,5,4,53, 4,10,1,4,4,53, 4,10,1,6,11,69, 4,9,13,4,4,54, 4,9,13,5,4,54, + 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,2,4,4,55, 4,8,2,6,11,71, 4,7,12,5,4,56, 4,7,3,4,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, + 4,6,12,5,4,57, 4,6,4,6,11,73, 4,5,11,4,4,58, 4,5,11,5,4,58, 4,5,4,6,11,74, 4,4,10,5,4,59, 4,4,4,6,11,75, 4,3,12,3,3,92, + 4,3,12,5,4,60, 4,3,11,3,4,92, 4,3,3,3,12,92, 4,3,3,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,2,3,13,93, + 4,2,2,6,11,77, 4,1,12,2,3,94, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,2,4,94, 4,1,11,4,4,62, 4,1,10,2,5,94, 4,1,10,4,4,62, + 4,1,9,2,6,94, 4,1,9,4,4,62, 4,1,8,2,7,94, 4,1,8,4,4,62, 4,1,7,2,8,94, 4,1,7,4,4,62, 4,1,6,2,9,94, 4,1,6,4,4,62, + 4,1,5,2,10,94, 4,1,5,4,4,62, 4,1,4,2,11,94, 4,1,4,4,4,62, 4,1,3,2,12,94, 4,1,3,4,4,62, 4,1,2,2,13,94, 4,1,2,4,4,62, + 4,1,2,6,4,62, 5,14,10,3,5,81, 5,14,10,5,5,49, 5,14,9,3,6,81, 5,14,8,3,7,81, 5,14,7,3,8,81, 5,14,6,3,9,81, 5,14,5,3,10,81, + 5,14,5,6,10,65, 5,13,11,3,4,82, 5,13,11,5,5,50, 5,13,4,3,11,82, 5,13,3,3,12,82, 5,13,3,6,10,66, 5,12,12,3,3,83, 5,12,12,5,5,51, + 5,12,2,3,13,83, 5,12,2,6,10,67, 5,11,13,3,2,84, 5,11,13,5,5,52, 5,11,1,3,14,84, 5,11,1,6,10,68, 5,10,14,3,1,85, 5,10,14,4,5,53, + 5,10,14,5,5,53, 5,10,1,4,5,53, 5,10,1,6,10,69, 5,9,13,4,5,54, 5,9,13,5,5,54, 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,2,4,5,55, + 5,8,2,6,10,71, 5,7,12,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,4,6,10,73, 5,5,11,4,5,58, + 5,5,11,5,5,58, 5,5,4,6,10,74, 5,4,10,5,5,59, 5,4,4,6,10,75, 5,3,12,3,3,92, 5,3,12,5,5,60, 5,3,11,3,4,92, 5,3,3,3,12,92, + 5,3,3,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,3,13,93, 5,2,2,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, + 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,2,6,5,62, 5,0,11,2,4,95, 5,0,11,5,5,63, + 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,4,2,11,95, 5,0,4,5,5,63, 5,0,3,2,12,95, 5,0,3,6,5,63, 6,14,10,3,5,81, + 6,14,10,5,6,49, 6,14,9,3,6,81, 6,14,8,3,7,81, 6,14,7,3,8,81, 6,14,6,3,9,81, 6,14,5,3,10,81, 6,14,5,6,9,65, 6,13,11,3,4,82, + 6,13,11,5,6,50, 6,13,4,3,11,82, 6,13,3,3,12,82, 6,13,3,6,9,66, 6,12,12,3,3,83, 6,12,12,5,6,51, 6,12,2,3,13,83, 6,12,2,6,9,67, + 6,11,13,3,2,84, 6,11,13,5,6,52, 6,11,1,3,14,84, 6,11,1,6,9,68, 6,10,14,3,1,85, 6,10,14,4,6,53, 6,10,14,5,6,53, 6,10,1,4,6,53, + 6,10,1,6,9,69, 6,9,13,4,6,54, 6,9,13,5,6,54, 6,9,2,6,9,70, 6,8,12,5,6,55, 6,8,2,4,6,55, 6,8,2,6,9,71, 6,7,12,5,6,56, + 6,7,3,4,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,4,6,9,73, 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,4,6,9,74, + 6,4,10,5,6,59, 6,4,4,6,9,75, 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,11,3,4,92, 6,3,3,3,12,92, 6,3,3,6,9,76, 6,2,13,3,2,93, + 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, + 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, 6,1,2,6,9,78, 6,0,11,5,6,63, 6,0,9,6,6,63, 6,0,4,5,6,63, 6,0,3,6,6,63, + 7,14,10,3,5,81, 7,14,10,5,7,49, 7,14,9,3,6,81, 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,5,3,10,81, 7,14,5,6,8,65, + 7,13,11,3,4,82, 7,13,11,5,7,50, 7,13,4,3,11,82, 7,13,3,3,12,82, 7,13,3,6,8,66, 7,12,12,3,3,83, 7,12,12,5,7,51, 7,12,2,3,13,83, + 7,12,2,6,8,67, 7,11,13,3,2,84, 7,11,13,5,7,52, 7,11,1,3,14,84, 7,11,1,6,8,68, 7,10,14,3,1,85, 7,10,14,4,7,53, 7,10,14,5,7,53, + 7,10,1,4,7,53, 7,10,1,6,8,69, 7,9,13,4,7,54, 7,9,13,5,7,54, 7,9,2,6,8,70, 7,8,12,5,7,55, 7,8,2,4,7,55, 7,8,2,6,8,71, + 7,7,12,5,7,56, 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, + 7,5,4,6,8,74, 7,4,10,5,7,59, 7,4,4,6,8,75, 7,3,12,3,3,92, 7,3,12,5,7,60, 7,3,11,3,4,92, 7,3,3,3,12,92, 7,3,3,6,8,76, + 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, 7,2,2,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, + 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,2,4,7,62, 7,1,2,6,8,78, 7,0,11,5,7,63, 7,0,9,6,7,63, 7,0,4,5,7,63, + 7,0,3,6,7,63, 8,14,10,3,5,81, 8,14,10,5,8,49, 8,14,9,3,6,81, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, + 8,14,5,6,7,65, 8,13,11,3,4,82, 8,13,11,5,8,50, 8,13,4,3,11,82, 8,13,3,3,12,82, 8,13,3,6,7,66, 8,12,12,3,3,83, 8,12,12,5,8,51, + 8,12,2,3,13,83, 8,12,2,6,7,67, 8,11,13,3,2,84, 8,11,13,5,8,52, 8,11,1,3,14,84, 8,11,1,6,7,68, 8,10,14,3,1,85, 8,10,14,4,8,53, + 8,10,14,5,8,53, 8,10,1,4,8,53, 8,10,1,6,7,69, 8,9,13,4,8,54, 8,9,13,5,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, 8,8,2,4,8,55, + 8,8,2,6,7,71, 8,7,12,5,8,56, 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,6,7,73, 8,5,11,4,8,58, + 8,5,11,5,8,58, 8,5,4,6,7,74, 8,4,10,5,8,59, 8,4,4,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, 8,3,11,3,4,92, 8,3,3,3,12,92, + 8,3,3,6,7,76, 8,2,13,3,2,93, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, + 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, 8,0,11,5,7,79, 8,0,9,6,7,79, + 8,0,4,5,7,79, 8,0,3,6,7,79, 9,14,10,3,5,81, 9,14,10,5,9,49, 9,14,9,3,6,81, 9,14,8,3,7,81, 9,14,7,3,8,81, 9,14,6,3,9,81, + 9,14,5,3,10,81, 9,14,5,6,6,65, 9,13,11,3,4,82, 9,13,11,5,9,50, 9,13,4,3,11,82, 9,13,3,3,12,82, 9,13,3,6,6,66, 9,12,12,3,3,83, + 9,12,12,5,9,51, 9,12,2,3,13,83, 9,12,2,6,6,67, 9,11,13,3,2,84, 9,11,13,5,9,52, 9,11,1,3,14,84, 9,11,1,6,6,68, 9,10,14,3,1,85, + 9,10,14,4,9,53, 9,10,14,5,9,53, 9,10,1,4,9,53, 9,10,1,6,6,69, 9,9,13,4,9,54, 9,9,13,5,9,54, 9,9,2,6,6,70, 9,8,12,5,9,55, + 9,8,2,4,9,55, 9,8,2,6,6,71, 9,7,12,5,9,56, 9,7,3,4,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,4,6,6,73, + 9,5,11,4,9,58, 9,5,11,5,9,58, 9,5,4,6,6,74, 9,4,10,5,9,59, 9,4,4,6,6,75, 9,3,12,3,3,92, 9,3,12,5,9,60, 9,3,11,3,4,92, + 9,3,3,3,12,92, 9,3,3,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,2,3,13,93, 9,2,2,6,6,77, 9,1,12,4,6,78, + 9,1,12,5,6,78, 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,5,4,6,78, 9,1,2,4,6,78, 9,1,2,6,6,78, 9,0,11,5,6,79, + 9,0,9,6,6,79, 9,0,4,5,6,79, 9,0,3,6,6,79, 10,14,10,3,5,81, 10,14,10,5,10,49, 10,14,9,3,6,81, 10,14,8,3,7,81, 10,14,7,3,8,81, + 10,14,6,3,9,81, 10,14,5,3,10,81, 10,14,5,6,5,65, 10,13,11,3,4,82, 10,13,11,5,10,50, 10,13,4,3,11,82, 10,13,3,3,12,82, 10,13,3,6,5,66, + 10,12,12,3,3,83, 10,12,12,5,10,51, 10,12,2,3,13,83, 10,12,2,6,5,67, 10,11,13,3,2,84, 10,11,13,5,10,52, 10,11,1,3,14,84, 10,11,1,6,5,68, + 10,10,14,3,1,85, 10,10,14,4,10,53, 10,10,14,5,10,53, 10,10,1,4,10,53, 10,10,1,6,5,69, 10,9,13,4,10,54, 10,9,13,5,10,54, 10,9,2,6,5,70, + 10,8,12,5,10,55, 10,8,2,4,10,55, 10,8,2,6,5,71, 10,7,12,5,10,56, 10,7,3,4,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, + 10,6,4,6,5,73, 10,5,11,4,10,58, 10,5,11,5,10,58, 10,5,4,6,5,74, 10,4,10,5,10,59, 10,4,4,6,5,75, 10,3,12,3,3,92, 10,3,12,5,10,60, + 10,3,11,3,4,92, 10,3,3,3,12,92, 10,3,3,6,5,76, 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,3,13,93, 10,2,2,6,5,77, + 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,2,4,10,62, 10,1,2,6,5,78, + 10,0,11,1,4,95, 10,0,11,5,5,79, 10,0,10,1,5,95, 10,0,9,1,6,95, 10,0,9,6,5,79, 10,0,4,1,11,95, 10,0,4,5,5,79, 10,0,3,1,12,95, + 10,0,3,6,5,79, 11,14,10,3,5,81, 11,14,10,5,11,49, 11,14,9,3,6,81, 11,14,8,3,7,81, 11,14,7,3,8,81, 11,14,6,3,9,81, 11,14,5,3,10,81, + 11,14,5,6,11,49, 11,13,11,3,4,82, 11,13,11,5,11,50, 11,13,4,3,11,82, 11,13,3,3,12,82, 11,13,3,6,4,66, 11,12,12,3,3,83, 11,12,12,5,11,51, + 11,12,2,3,13,83, 11,12,2,6,4,67, 11,11,13,3,2,84, 11,11,13,5,11,52, 11,11,1,3,14,84, 11,11,1,6,4,68, 11,10,14,3,1,85, 11,10,14,4,11,53, + 11,10,14,5,11,53, 11,10,1,4,11,53, 11,10,1,6,4,69, 11,9,13,4,11,54, 11,9,13,5,11,54, 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,2,4,11,55, + 11,8,2,6,4,71, 11,7,12,5,11,56, 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,6,4,73, 11,5,11,4,11,58, + 11,5,11,5,11,58, 11,5,4,6,4,74, 11,4,10,5,11,59, 11,4,4,6,4,75, 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,11,3,4,92, 11,3,3,3,12,92, + 11,3,3,6,4,76, 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,3,13,93, 11,2,2,6,4,77, 11,1,12,1,3,94, 11,1,12,4,11,62, + 11,1,12,5,11,62, 11,1,11,1,4,94, 11,1,11,4,11,62, 11,1,10,1,5,94, 11,1,10,4,11,62, 11,1,9,1,6,94, 11,1,9,4,11,62, 11,1,8,1,7,94, + 11,1,8,4,11,62, 11,1,7,1,8,94, 11,1,7,4,11,62, 11,1,6,1,9,94, 11,1,6,4,11,62, 11,1,5,1,10,94, 11,1,5,4,11,62, 11,1,4,1,11,94, + 11,1,4,4,11,62, 11,1,3,1,12,94, 11,1,3,4,11,62, 11,1,2,1,13,94, 11,1,2,4,11,62, 11,1,2,6,4,78, 12,14,10,1,5,81, 12,14,10,3,5,81, + 12,14,10,5,12,49, 12,14,9,1,6,81, 12,14,9,3,6,81, 12,14,8,1,7,81, 12,14,8,3,7,81, 12,14,7,1,8,81, 12,14,7,3,8,81, 12,14,6,1,9,81, + 12,14,6,3,9,81, 12,14,5,1,10,81, 12,14,5,3,10,81, 12,14,5,6,12,49, 12,13,11,3,4,82, 12,13,11,5,12,50, 12,13,4,3,11,82, 12,13,3,3,12,82, + 12,13,3,6,3,66, 12,12,12,3,3,83, 12,12,12,5,12,51, 12,12,2,3,13,83, 12,12,2,6,3,67, 12,11,13,3,2,84, 12,11,13,5,12,52, 12,11,1,3,14,84, + 12,11,1,6,3,68, 12,10,14,3,1,85, 12,10,14,4,12,53, 12,10,14,5,12,53, 12,10,1,4,12,53, 12,10,1,6,3,69, 12,9,13,4,12,54, 12,9,13,5,12,54, + 12,9,2,6,3,70, 12,8,12,5,12,55, 12,8,2,4,12,55, 12,8,2,6,3,71, 12,7,12,5,12,56, 12,7,3,4,12,56, 12,7,3,6,3,72, 12,6,12,4,12,57, + 12,6,12,5,12,57, 12,6,4,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, 12,5,4,6,3,74, 12,4,10,5,12,59, 12,4,4,6,3,75, 12,3,12,3,3,92, + 12,3,12,5,12,60, 12,3,11,3,4,92, 12,3,3,3,12,92, 12,3,3,6,3,76, 12,2,13,1,2,93, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, + 12,2,12,1,3,93, 12,2,12,4,12,61, 12,2,11,1,4,93, 12,2,11,4,12,61, 12,2,10,1,5,93, 12,2,10,4,12,61, 12,2,9,1,6,93, 12,2,9,4,12,61, + 12,2,8,1,7,93, 12,2,8,4,12,61, 12,2,7,1,8,93, 12,2,7,4,12,61, 12,2,6,1,9,93, 12,2,6,4,12,61, 12,2,5,1,10,93, 12,2,5,4,12,61, + 12,2,4,1,11,93, 12,2,4,4,12,61, 12,2,3,1,12,93, 12,2,3,4,12,61, 12,2,2,1,13,93, 12,2,2,3,13,93, 12,2,2,4,12,61, 12,2,2,6,12,61, + 13,13,11,1,4,82, 13,13,11,3,4,82, 13,13,11,5,13,50, 13,13,10,1,5,82, 13,13,10,3,5,82, 13,13,9,1,6,82, 13,13,9,3,6,82, 13,13,8,1,7,82, + 13,13,8,3,7,82, 13,13,7,1,8,82, 13,13,7,3,8,82, 13,13,6,1,9,82, 13,13,6,3,9,82, 13,13,5,1,10,82, 13,13,5,3,10,82, 13,13,4,1,11,82, + 13,13,4,3,11,82, 13,13,3,1,12,82, 13,13,3,3,12,82, 13,13,3,6,13,50, 13,12,12,3,3,83, 13,12,12,5,13,51, 13,12,2,3,13,83, 13,12,2,6,2,67, + 13,11,13,3,2,84, 13,11,13,5,13,52, 13,11,1,3,14,84, 13,11,1,6,2,68, 13,10,14,3,1,85, 13,10,14,4,13,53, 13,10,14,5,13,53, 13,10,1,4,13,53, + 13,10,1,6,2,69, 13,9,13,1,2,86, 13,9,13,4,13,54, 13,9,13,5,13,54, 13,9,12,1,3,86, 13,9,11,1,4,86, 13,9,10,1,5,86, 13,9,9,1,6,86, + 13,9,8,1,7,86, 13,9,7,1,8,86, 13,9,6,1,9,86, 13,9,5,1,10,86, 13,9,4,1,11,86, 13,9,3,1,12,86, 13,9,2,1,13,86, 13,9,2,6,2,70, + 13,8,12,5,13,55, 13,8,2,4,13,55, 13,8,2,6,2,71, 13,7,12,5,13,56, 13,7,3,4,13,56, 13,7,3,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, + 13,6,4,6,2,73, 13,5,11,4,13,58, 13,5,11,5,13,58, 13,5,4,6,2,74, 13,4,10,1,5,91, 13,4,10,5,13,59, 13,4,9,1,6,91, 13,4,8,1,7,91, + 13,4,7,1,8,91, 13,4,6,1,9,91, 13,4,5,1,10,91, 13,4,4,1,11,91, 13,4,4,6,2,75, 13,3,12,1,3,92, 13,3,12,3,3,92, 13,3,12,4,13,60, + 13,3,12,5,13,60, 13,3,11,1,4,92, 13,3,11,3,4,92, 13,3,11,4,13,60, 13,3,10,1,5,92, 13,3,10,4,13,60, 13,3,9,1,6,92, 13,3,9,4,13,60, + 13,3,8,1,7,92, 13,3,8,4,13,60, 13,3,7,1,8,92, 13,3,7,4,13,60, 13,3,6,1,9,92, 13,3,6,4,13,60, 13,3,5,1,10,92, 13,3,5,4,13,60, + 13,3,4,1,11,92, 13,3,4,4,13,60, 13,3,3,1,12,92, 13,3,3,3,12,92, 13,3,3,4,13,60, 13,3,3,6,13,60, 14,12,12,1,3,83, 14,12,12,3,3,83, + 14,12,12,5,14,51, 14,12,11,1,4,83, 14,12,11,3,4,83, 14,12,10,1,5,83, 14,12,10,3,5,83, 14,12,9,1,6,83, 14,12,9,3,6,83, 14,12,8,1,7,83, + 14,12,8,3,7,83, 14,12,7,1,8,83, 14,12,7,3,8,83, 14,12,6,1,9,83, 14,12,6,3,9,83, 14,12,5,1,10,83, 14,12,5,3,10,83, 14,12,4,1,11,83, + 14,12,4,3,11,83, 14,12,3,1,12,83, 14,12,3,3,12,83, 14,12,2,1,13,83, 14,12,2,3,13,83, 14,12,2,6,14,51, 14,11,13,1,2,84, 14,11,13,3,2,84, + 14,11,13,5,14,52, 14,11,12,1,3,84, 14,11,11,1,4,84, 14,11,10,1,5,84, 14,11,9,1,6,84, 14,11,8,1,7,84, 14,11,7,1,8,84, 14,11,6,1,9,84, + 14,11,5,1,10,84, 14,11,4,1,11,84, 14,11,3,1,12,84, 14,11,2,1,13,84, 14,11,1,1,14,84, 14,11,1,3,14,84, 14,11,1,6,1,68, 14,10,14,1,1,85, + 14,10,14,3,1,85, 14,10,14,4,1,69, 14,10,14,5,1,69, 14,10,13,1,2,85, 14,10,13,4,1,69, 14,10,12,1,3,85, 14,10,12,4,1,69, 14,10,11,1,4,85, + 14,10,11,4,1,69, 14,10,10,1,5,85, 14,10,10,4,1,69, 14,10,9,1,6,85, 14,10,9,4,1,69, 14,10,8,1,7,85, 14,10,8,4,1,69, 14,10,7,1,8,85, + 14,10,7,4,1,69, 14,10,6,1,9,85, 14,10,6,4,1,69, 14,10,5,1,10,85, 14,10,5,4,1,69, 14,10,4,1,11,85, 14,10,4,4,1,69, 14,10,3,1,12,85, + 14,10,3,4,1,69, 14,10,2,1,13,85, 14,10,2,4,1,69, 14,10,1,1,14,85, 14,10,1,4,1,69, 14,10,1,6,1,69, 14,8,12,1,3,87, 14,8,12,3,3,87, + 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,11,3,4,87, 14,8,10,1,5,87, 14,8,10,3,5,87, 14,8,9,1,6,87, 14,8,9,3,6,87, 14,8,8,1,7,87, + 14,8,8,3,7,87, 14,8,7,1,8,87, 14,8,7,3,8,87, 14,8,6,1,9,87, 14,8,6,3,9,87, 14,8,5,1,10,87, 14,8,5,3,10,87, 14,8,4,1,11,87, + 14,8,4,3,11,87, 14,8,3,1,12,87, 14,8,3,3,12,87, 14,8,2,1,13,87, 14,8,2,3,13,87, 14,8,2,4,14,55, 14,8,2,6,1,71, 14,7,12,1,3,88, + 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, 14,7,6,1,9,88, 14,7,5,1,10,88, + 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,3,4,14,56, 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, 14,6,12,5,1,73, 14,6,11,1,4,89, + 14,6,10,1,5,89, 14,6,9,1,6,89, 14,6,8,1,7,89, 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, 14,6,4,1,11,89, 14,6,4,6,1,73, + 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, 14,5,10,1,5,90, 14,5,10,4,1,74, 14,5,9,1,6,90, 14,5,9,4,1,74, 14,5,8,1,7,90, + 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, 14,5,6,1,9,90, 14,5,6,4,1,74, 14,5,5,1,10,90, 14,5,5,4,1,74, 14,5,4,1,11,90, + 14,5,4,4,1,74, 14,5,4,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/safari_zone_worker.lua b/assets/voxels/safari_zone_worker.lua new file mode 100644 index 0000000..d9d8d81 --- /dev/null +++ b/assets/voxels/safari_zone_worker.lua @@ -0,0 +1,154 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "safari_zone_worker" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "safari_zone_worker", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1504, + count = 1030, + faces = { + 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, + 1,9,9,3,6,38, 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, + 1,9,5,3,10,38, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, 1,9,3,3,12,38, 1,9,2,2,13,38, 1,9,2,3,13,38, 1,9,2,4,1,6, + 1,9,2,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, + 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, + 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,10,2,5,42, + 1,5,10,3,5,42, 1,5,10,4,1,10, 1,5,10,5,1,10, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, + 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,4,6,14,26, + 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,9,5,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, + 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,11,14,2,1,36, 2,11,14,3,1,36, + 2,11,14,4,2,4, 2,11,14,5,2,4, 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,12,2,3,36, 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, + 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, + 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, + 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,13,2,2,37, 2,10,13,4,2,5, 2,10,13,5,2,5, 2,10,12,2,3,37, 2,10,11,2,4,37, + 2,10,10,2,5,37, 2,10,9,2,6,37, 2,10,8,2,7,37, 2,10,7,2,8,37, 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, + 2,10,2,2,13,37, 2,10,2,6,13,21, 2,9,12,5,2,6, 2,9,2,4,2,6, 2,9,2,6,13,22, 2,8,12,5,2,7, 2,8,3,4,2,7, 2,8,3,6,13,23, + 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, + 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,4,4,2,8, 2,7,4,6,13,24, 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, + 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,5,6,13,25, 2,5,10,4,2,10, + 2,5,10,5,2,10, 2,5,4,3,11,42, 2,5,4,6,13,26, 2,4,9,5,2,11, 2,4,4,6,13,27, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,9,5,2,12, + 2,3,8,2,7,44, 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, + 2,3,4,2,11,44, 2,3,4,4,2,12, 2,3,4,6,13,28, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, + 3,13,10,2,5,34, 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, + 3,13,6,2,9,34, 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, + 3,13,3,6,12,18, 3,12,13,2,2,35, 3,12,13,3,2,35, 3,12,13,5,3,3, 3,12,12,2,3,35, 3,12,11,2,4,35, 3,12,10,2,5,35, 3,12,9,2,6,35, + 3,12,8,2,7,35, 3,12,7,2,8,35, 3,12,6,2,9,35, 3,12,5,2,10,35, 3,12,4,2,11,35, 3,12,3,2,12,35, 3,12,3,6,12,19, 3,11,14,3,1,36, + 3,11,14,4,3,4, 3,11,14,5,3,4, 3,11,2,3,13,36, 3,11,2,6,12,20, 3,10,13,4,3,5, 3,10,13,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, + 3,9,2,4,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,4,4,3,8, + 3,7,4,6,12,24, 3,6,11,4,3,9, 3,6,11,5,3,9, 3,6,5,6,12,25, 3,5,10,4,3,10, 3,5,10,5,3,10, 3,5,4,3,11,42, 3,5,4,6,12,26, + 3,4,9,5,3,11, 3,4,4,6,12,27, 3,3,9,5,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, 3,2,10,3,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, + 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,4,2,11,45, 3,2,4,4,3,13, 3,2,4,6,12,29, 3,1,10,2,5,46, + 3,1,10,4,3,14, 3,1,10,5,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, + 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,5,6,12,30, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, + 4,14,10,2,5,33, 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, + 4,14,6,2,9,33, 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, + 4,13,12,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, 4,12,3,6,11,19, 4,11,14,3,1,36, 4,11,14,4,4,4, + 4,11,14,5,4,4, 4,11,2,3,13,36, 4,11,2,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,4,4,6, + 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,4,4,8, 4,7,4,6,11,24, + 4,6,11,4,4,9, 4,6,11,5,4,9, 4,6,5,6,11,25, 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,4,3,11,42, 4,5,4,6,11,26, 4,4,9,5,4,11, + 4,4,4,6,11,27, 4,3,9,5,4,12, 4,3,4,6,11,28, 4,2,10,3,5,45, 4,2,10,5,4,13, 4,2,4,4,4,13, 4,2,4,6,11,29, 4,1,10,4,4,14, + 4,1,10,5,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, 4,0,9,2,6,47, 4,0,9,5,4,15, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, + 4,0,6,6,11,31, 5,15,10,2,5,32, 5,15,10,3,5,32, 5,15,10,5,5,0, 5,15,9,2,6,32, 5,15,9,3,6,32, 5,15,8,2,7,32, 5,15,8,3,7,32, + 5,15,7,2,8,32, 5,15,7,3,8,32, 5,15,6,2,9,32, 5,15,6,3,9,32, 5,15,5,2,10,32, 5,15,5,3,10,32, 5,15,5,6,10,16, 5,14,11,3,4,33, + 5,14,11,5,5,1, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,3,2,35, + 5,12,13,5,5,3, 5,12,3,6,10,19, 5,11,14,3,1,36, 5,11,14,4,5,4, 5,11,14,5,5,4, 5,11,2,3,13,36, 5,11,2,6,10,20, 5,10,13,4,5,5, + 5,10,13,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,4,5,6, 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, + 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,4,4,5,8, 5,7,4,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,5,6,10,25, 5,5,10,4,5,10, + 5,5,10,5,5,10, 5,5,4,3,11,42, 5,5,4,6,10,26, 5,4,9,5,5,11, 5,4,4,6,10,27, 5,3,9,5,5,12, 5,3,4,6,10,28, 5,2,10,3,5,45, + 5,2,10,5,5,13, 5,2,4,4,5,13, 5,2,4,6,10,29, 5,1,10,4,5,14, 5,1,10,5,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,9,5,5,15, + 5,0,6,6,10,31, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,3,6,32, 6,15,8,3,7,32, 6,15,7,3,8,32, 6,15,6,3,9,32, 6,15,5,3,10,32, + 6,15,5,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, + 6,13,3,6,9,18, 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,3,6,9,19, 6,11,14,3,1,36, 6,11,14,4,6,4, 6,11,14,5,6,4, 6,11,2,3,13,36, + 6,11,2,6,9,20, 6,10,13,4,6,5, 6,10,13,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,4,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, + 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,4,4,6,8, 6,7,4,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, + 6,6,5,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, 6,5,4,3,11,42, 6,5,4,6,9,26, 6,4,9,5,6,11, 6,4,4,6,9,27, 6,3,9,5,6,12, + 6,3,4,6,9,28, 6,2,10,3,5,45, 6,2,10,5,6,13, 6,2,4,4,6,13, 6,2,4,6,9,29, 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,5,4,6,14, + 6,1,5,6,9,30, 6,0,9,1,6,47, 6,0,9,5,6,15, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,15,10,3,5,32, + 7,15,10,5,7,0, 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,5,3,10,32, 7,15,5,6,8,16, 7,14,11,3,4,33, + 7,14,11,5,7,1, 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, + 7,12,13,5,7,3, 7,12,3,6,8,19, 7,11,14,3,1,36, 7,11,14,4,7,4, 7,11,14,5,7,4, 7,11,2,3,13,36, 7,11,2,6,8,20, 7,10,13,4,7,5, + 7,10,13,5,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,2,4,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,3,4,7,7, 7,8,3,6,8,23, + 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,4,4,7,8, 7,7,4,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,5,6,8,25, 7,5,10,4,7,10, + 7,5,10,5,7,10, 7,5,4,3,11,42, 7,5,4,6,8,26, 7,4,9,5,7,11, 7,4,4,6,8,27, 7,3,9,5,7,12, 7,3,4,6,8,28, 7,2,10,3,5,45, + 7,2,10,5,7,13, 7,2,4,4,7,13, 7,2,4,6,8,29, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, + 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,3,6,32, 8,15,8,3,7,32, 8,15,7,3,8,32, + 8,15,6,3,9,32, 8,15,5,3,10,32, 8,15,5,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,12,3,3,34, + 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,3,6,7,19, 8,11,14,3,1,36, 8,11,14,4,8,4, + 8,11,14,5,8,4, 8,11,2,3,13,36, 8,11,2,6,7,20, 8,10,13,4,8,5, 8,10,13,5,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,4,8,6, + 8,9,2,6,7,22, 8,8,12,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,4,8,8, 8,7,4,6,7,24, + 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,5,6,7,25, 8,5,10,4,8,10, 8,5,10,5,8,10, 8,5,4,3,11,42, 8,5,4,6,7,26, 8,4,9,5,8,11, + 8,4,4,6,7,27, 8,3,9,5,8,12, 8,3,4,6,7,28, 8,2,10,3,5,45, 8,2,10,5,8,13, 8,2,4,4,8,13, 8,2,4,6,7,29, 8,1,10,4,8,14, + 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,10,3,5,32, + 9,15,10,5,9,0, 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, 9,15,6,3,9,32, 9,15,5,3,10,32, 9,15,5,6,6,16, 9,14,11,3,4,33, + 9,14,11,5,9,1, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, + 9,12,13,5,9,3, 9,12,3,6,6,19, 9,11,14,3,1,36, 9,11,14,4,9,4, 9,11,14,5,9,4, 9,11,2,3,13,36, 9,11,2,6,6,20, 9,10,13,4,9,5, + 9,10,13,5,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,2,4,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, + 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,4,4,9,8, 9,7,4,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, 9,6,5,6,6,25, 9,5,10,4,9,10, + 9,5,10,5,9,10, 9,5,4,3,11,42, 9,5,4,6,6,26, 9,4,9,5,9,11, 9,4,4,6,6,27, 9,3,9,5,9,12, 9,3,4,6,6,28, 9,2,10,3,5,45, + 9,2,10,5,9,13, 9,2,4,4,9,13, 9,2,4,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,9,2,6,47, + 9,0,9,5,9,15, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, 10,15,10,1,5,32, 10,15,10,3,5,32, 10,15,10,5,10,0, + 10,15,9,1,6,32, 10,15,9,3,6,32, 10,15,8,1,7,32, 10,15,8,3,7,32, 10,15,7,1,8,32, 10,15,7,3,8,32, 10,15,6,1,9,32, 10,15,6,3,9,32, + 10,15,5,1,10,32, 10,15,5,3,10,32, 10,15,5,6,5,16, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, + 10,13,12,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,3,6,5,19, 10,11,14,3,1,36, 10,11,14,4,10,4, + 10,11,14,5,10,4, 10,11,2,3,13,36, 10,11,2,6,5,20, 10,10,13,4,10,5, 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,4,10,6, + 10,9,2,6,5,22, 10,8,12,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,4,4,10,8, 10,7,4,6,5,24, + 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,5,6,5,25, 10,5,10,4,10,10, 10,5,10,5,10,10, 10,5,4,3,11,42, 10,5,4,6,5,26, 10,4,9,5,10,11, + 10,4,4,6,5,27, 10,3,9,5,10,12, 10,3,4,6,5,28, 10,2,10,3,5,45, 10,2,10,5,10,13, 10,2,4,4,10,13, 10,2,4,6,5,29, 10,1,10,4,10,14, + 10,1,10,5,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,9,5,10,15, 10,0,6,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,11,5,11,1, + 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, + 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,12,3,3,34, + 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, 11,12,13,5,11,3, 11,12,3,6,4,19, 11,11,14,3,1,36, 11,11,14,4,11,4, + 11,11,14,5,11,4, 11,11,2,3,13,36, 11,11,2,6,4,20, 11,10,13,4,11,5, 11,10,13,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,2,4,11,6, + 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,4,4,11,8, 11,7,4,6,4,24, + 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,5,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, 11,5,4,3,11,42, 11,5,4,6,4,26, 11,4,9,5,11,11, + 11,4,4,6,4,27, 11,3,9,5,11,12, 11,3,4,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, 11,2,4,4,11,13, 11,2,4,6,4,29, 11,1,10,4,11,14, + 11,1,10,5,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,9,1,6,47, 11,0,9,5,11,15, 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, + 11,0,6,6,4,31, 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, + 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, + 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,1,2,35, + 12,12,13,3,2,35, 12,12,13,5,12,3, 12,12,12,1,3,35, 12,12,11,1,4,35, 12,12,10,1,5,35, 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, + 12,12,6,1,9,35, 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, 12,12,3,6,3,19, 12,11,14,3,1,36, 12,11,14,4,12,4, 12,11,14,5,12,4, + 12,11,2,3,13,36, 12,11,2,6,3,20, 12,10,13,4,12,5, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,2,4,12,6, 12,9,2,6,3,22, + 12,8,12,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,4,12,8, 12,7,4,6,3,24, 12,6,11,4,12,9, + 12,6,11,5,12,9, 12,6,5,6,3,25, 12,5,10,4,12,10, 12,5,10,5,12,10, 12,5,4,3,11,42, 12,5,4,6,3,26, 12,4,9,5,12,11, 12,4,4,6,3,27, + 12,3,9,5,12,12, 12,3,4,6,3,28, 12,2,10,1,5,45, 12,2,10,3,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, + 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,4,1,11,45, 12,2,4,4,12,13, 12,2,4,6,3,29, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,10,5,12,14, + 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, + 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,5,6,3,30, 13,11,14,1,1,36, 13,11,14,3,1,36, 13,11,14,4,13,4, 13,11,14,5,13,4, 13,11,13,1,2,36, + 13,11,13,3,2,36, 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, + 13,11,9,3,6,36, 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, + 13,11,5,3,10,36, 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, + 13,10,13,1,2,37, 13,10,13,4,13,5, 13,10,13,5,13,5, 13,10,12,1,3,37, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, + 13,10,7,1,8,37, 13,10,6,1,9,37, 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,6,2,21, 13,9,12,5,13,6, + 13,9,2,4,13,6, 13,9,2,6,2,22, 13,8,12,5,13,7, 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, + 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, + 13,7,4,4,13,8, 13,7,4,6,2,24, 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, + 13,6,7,1,8,41, 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,5,6,2,25, 13,5,10,4,13,10, 13,5,10,5,13,10, 13,5,4,3,11,42, 13,5,4,6,2,26, + 13,4,9,5,13,11, 13,4,4,6,2,27, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, + 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, + 14,9,12,1,3,38, 14,9,12,3,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,11,3,4,38, 14,9,10,1,5,38, 14,9,10,3,5,38, 14,9,9,1,6,38, + 14,9,9,3,6,38, 14,9,8,1,7,38, 14,9,8,3,7,38, 14,9,7,1,8,38, 14,9,7,3,8,38, 14,9,6,1,9,38, 14,9,6,3,9,38, 14,9,5,1,10,38, + 14,9,5,3,10,38, 14,9,4,1,11,38, 14,9,4,3,11,38, 14,9,3,1,12,38, 14,9,3,3,12,38, 14,9,2,1,13,38, 14,9,2,3,13,38, 14,9,2,4,14,6, + 14,9,2,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, + 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, + 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,3,6,1,23, 14,5,10,1,5,42, + 14,5,10,3,5,42, 14,5,10,4,14,10, 14,5,10,5,14,10, 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, + 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,4,1,11,42, 14,5,4,3,11,42, 14,5,4,6,1,26, + 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,9,5,14,11, 14,4,8,1,7,43, 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, + 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + }, +} diff --git a/assets/voxels/sailor.lua b/assets/voxels/sailor.lua new file mode 100644 index 0000000..e4cd60f --- /dev/null +++ b/assets/voxels/sailor.lua @@ -0,0 +1,294 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "sailor" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "sailor", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1558, + count = 1030, + faces = { + 0,5,10,2,5,42, 0,5,10,3,5,42, 0,5,10,4,0,10, 0,5,10,5,0,10, 0,5,9,2,6,42, 0,5,9,3,6,42, 0,5,8,2,7,42, 0,5,8,3,7,42, + 0,5,7,2,8,42, 0,5,7,3,8,42, 0,5,6,2,9,42, 0,5,6,3,9,42, 0,5,5,2,10,42, 0,5,5,3,10,42, 0,5,4,2,11,42, 0,5,4,3,11,42, + 0,5,4,6,15,26, 0,4,9,2,6,43, 0,4,9,4,0,11, 0,4,9,5,0,11, 0,4,8,2,7,43, 0,4,8,4,0,11, 0,4,7,2,8,43, 0,4,7,4,0,11, + 0,4,6,2,9,43, 0,4,6,4,0,11, 0,4,5,2,10,43, 0,4,5,4,0,11, 0,4,4,2,11,43, 0,4,4,4,0,11, 0,4,4,6,15,27, 1,9,12,2,3,38, + 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, 1,9,9,3,6,38, + 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, 1,9,5,3,10,38, + 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, 1,9,3,3,12,38, 1,9,2,2,13,38, 1,9,2,3,13,38, 1,9,2,4,1,6, 1,9,2,6,14,22, + 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, + 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, + 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,6,11,2,4,41, 1,6,11,3,4,41, + 1,6,11,4,1,9, 1,6,11,5,1,9, 1,6,10,2,5,41, 1,6,10,3,5,41, 1,6,9,2,6,41, 1,6,9,3,6,41, 1,6,8,2,7,41, 1,6,8,3,7,41, + 1,6,7,2,8,41, 1,6,7,3,8,41, 1,6,6,2,9,41, 1,6,6,3,9,41, 1,6,5,2,10,41, 1,6,5,3,10,41, 1,6,4,2,11,41, 1,6,4,3,11,41, + 1,6,4,6,14,25, 1,5,10,4,1,10, 1,5,10,5,1,10, 1,5,4,6,14,26, 1,4,9,5,1,11, 1,4,4,6,14,27, 1,3,9,2,6,44, 1,3,9,4,1,12, + 1,3,9,5,1,12, 1,3,8,2,7,44, 1,3,8,4,1,12, 1,3,7,2,8,44, 1,3,7,4,1,12, 1,3,6,2,9,44, 1,3,6,4,1,12, 1,3,5,2,10,44, + 1,3,5,4,1,12, 1,3,4,2,11,44, 1,3,4,4,1,12, 1,3,4,6,14,28, 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,13,5,2,4, 2,11,12,2,3,36, + 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, + 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, + 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,13,2,2,37, 2,10,13,4,2,5, + 2,10,13,5,2,5, 2,10,12,2,3,37, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, 2,10,8,2,7,37, 2,10,7,2,8,37, 2,10,6,2,9,37, + 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,6,13,21, 2,9,12,5,2,6, 2,9,2,4,2,6, 2,9,2,6,13,22, + 2,8,12,5,2,7, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, + 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,4,6,13,24, 2,6,11,4,2,9, + 2,6,11,5,2,9, 2,6,4,6,13,25, 2,5,10,4,2,10, 2,5,10,5,2,10, 2,5,4,6,13,26, 2,4,9,5,2,11, 2,4,4,6,13,27, 2,3,9,4,2,12, + 2,3,9,5,2,12, 2,3,8,4,2,12, 2,3,7,4,2,12, 2,3,6,4,2,12, 2,3,5,4,2,12, 2,3,4,4,2,12, 2,3,4,6,13,28, 3,13,12,2,3,34, + 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, + 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, + 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,13,2,2,35, 3,12,13,3,2,35, 3,12,13,5,3,3, + 3,12,12,2,3,35, 3,12,11,2,4,35, 3,12,10,2,5,35, 3,12,9,2,6,35, 3,12,8,2,7,35, 3,12,7,2,8,35, 3,12,6,2,9,35, 3,12,5,2,10,35, + 3,12,4,2,11,35, 3,12,3,2,12,35, 3,12,3,6,12,19, 3,11,13,5,3,4, 3,11,2,3,13,36, 3,11,2,6,12,20, 3,10,13,4,3,5, 3,10,13,5,3,5, + 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,2,4,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, + 3,7,12,5,3,8, 3,7,4,6,12,24, 3,6,11,4,3,9, 3,6,11,5,3,9, 3,6,4,6,12,25, 3,5,10,4,3,10, 3,5,10,5,3,10, 3,5,4,6,12,26, + 3,4,9,5,3,11, 3,4,4,6,12,27, 3,3,9,5,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, 3,2,10,3,5,45, 3,2,10,5,3,13, 3,2,9,2,6,45, + 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,4,2,11,45, 3,2,4,4,3,13, 3,2,4,6,12,29, 3,1,10,2,5,46, + 3,1,10,4,3,14, 3,1,10,5,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, + 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,5,6,12,30, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, + 4,14,10,2,5,33, 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, + 4,14,6,2,9,33, 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, + 4,13,12,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, 4,12,3,6,11,19, 4,11,13,5,4,4, 4,11,2,3,13,36, + 4,11,2,6,11,20, 4,10,13,4,4,5, 4,10,13,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,4,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, + 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,6,11,24, 4,6,11,4,4,9, 4,6,11,5,4,9, 4,6,4,6,11,25, + 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,4,6,11,26, 4,4,9,5,4,11, 4,4,4,6,11,27, 4,3,9,5,4,12, 4,3,4,6,11,28, 4,2,10,3,5,45, + 4,2,10,5,4,13, 4,2,4,4,4,13, 4,2,4,6,11,29, 4,1,10,4,4,14, 4,1,10,5,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, 4,0,9,2,6,47, + 4,0,9,5,4,15, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, 4,0,6,6,11,31, 5,15,10,2,5,32, 5,15,10,3,5,32, 5,15,10,5,5,0, + 5,15,9,2,6,32, 5,15,9,3,6,32, 5,15,8,2,7,32, 5,15,8,3,7,32, 5,15,7,2,8,32, 5,15,7,3,8,32, 5,15,6,2,9,32, 5,15,6,3,9,32, + 5,15,5,2,10,32, 5,15,5,3,10,32, 5,15,5,6,10,16, 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, + 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,3,2,35, 5,12,13,5,5,3, 5,12,3,6,10,19, 5,11,13,5,5,4, 5,11,2,3,13,36, + 5,11,2,6,10,20, 5,10,13,4,5,5, 5,10,13,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,4,5,6, 5,9,2,6,10,22, 5,8,12,5,5,7, + 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, 5,7,4,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,4,6,10,25, + 5,5,10,4,5,10, 5,5,10,5,5,10, 5,5,4,6,10,26, 5,4,9,5,5,11, 5,4,4,6,10,27, 5,3,9,5,5,12, 5,3,4,6,10,28, 5,2,10,3,5,45, + 5,2,10,5,5,13, 5,2,4,4,5,13, 5,2,4,6,10,29, 5,1,10,4,5,14, 5,1,10,5,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,9,5,5,15, + 5,0,6,6,10,31, 6,15,10,3,5,32, 6,15,10,5,6,0, 6,15,9,3,6,32, 6,15,8,3,7,32, 6,15,7,3,8,32, 6,15,6,3,9,32, 6,15,5,3,10,32, + 6,15,5,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, + 6,13,3,6,9,18, 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,3,6,9,19, 6,11,13,5,6,4, 6,11,2,3,13,36, 6,11,2,6,9,20, 6,10,13,4,6,5, + 6,10,13,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,4,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,3,4,6,7, 6,8,3,6,9,23, + 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,4,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, 6,6,4,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, + 6,5,4,6,9,26, 6,4,9,5,6,11, 6,4,4,6,9,27, 6,3,9,5,6,12, 6,3,4,6,9,28, 6,2,10,3,5,45, 6,2,10,5,6,13, 6,2,4,4,6,13, + 6,2,4,6,9,29, 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,9,1,6,47, 6,0,9,5,6,15, 6,0,8,1,7,47, + 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,15,10,3,5,32, 7,15,10,5,7,0, 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, + 7,15,6,3,9,32, 7,15,5,3,10,32, 7,15,5,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, + 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, 7,12,13,5,7,3, 7,12,3,6,8,19, 7,11,13,5,7,4, 7,11,2,3,13,36, + 7,11,2,6,8,20, 7,10,13,4,7,5, 7,10,13,5,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,2,4,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, + 7,8,3,4,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,4,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,4,6,8,25, + 7,5,10,4,7,10, 7,5,10,5,7,10, 7,5,4,6,8,26, 7,4,9,5,7,11, 7,4,4,6,8,27, 7,3,9,5,7,12, 7,3,4,6,8,28, 7,2,10,3,5,45, + 7,2,10,5,7,13, 7,2,4,4,7,13, 7,2,4,6,8,29, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, + 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, 8,15,10,3,5,32, 8,15,10,5,8,0, 8,15,9,3,6,32, 8,15,8,3,7,32, 8,15,7,3,8,32, + 8,15,6,3,9,32, 8,15,5,3,10,32, 8,15,5,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,12,3,3,34, + 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,3,6,7,19, 8,11,13,5,8,4, 8,11,2,3,13,36, + 8,11,2,6,7,20, 8,10,13,4,8,5, 8,10,13,5,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,4,8,6, 8,9,2,6,7,22, 8,8,12,5,8,7, + 8,8,3,4,8,7, 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,4,6,7,25, + 8,5,10,4,8,10, 8,5,10,5,8,10, 8,5,4,6,7,26, 8,4,9,5,8,11, 8,4,4,6,7,27, 8,3,9,5,8,12, 8,3,4,6,7,28, 8,2,10,3,5,45, + 8,2,10,5,8,13, 8,2,4,4,8,13, 8,2,4,6,7,29, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, + 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,10,3,5,32, 9,15,10,5,9,0, 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, + 9,15,6,3,9,32, 9,15,5,3,10,32, 9,15,5,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, + 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, 9,12,13,5,9,3, 9,12,3,6,6,19, 9,11,13,5,9,4, 9,11,2,3,13,36, + 9,11,2,6,6,20, 9,10,13,4,9,5, 9,10,13,5,9,5, 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,2,4,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, + 9,8,3,4,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,4,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, 9,6,4,6,6,25, + 9,5,10,4,9,10, 9,5,10,5,9,10, 9,5,4,6,6,26, 9,4,9,5,9,11, 9,4,4,6,6,27, 9,3,9,5,9,12, 9,3,4,6,6,28, 9,2,10,3,5,45, + 9,2,10,5,9,13, 9,2,4,4,9,13, 9,2,4,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,9,2,6,47, + 9,0,9,5,9,15, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, 10,15,10,1,5,32, 10,15,10,3,5,32, 10,15,10,5,10,0, + 10,15,9,1,6,32, 10,15,9,3,6,32, 10,15,8,1,7,32, 10,15,8,3,7,32, 10,15,7,1,8,32, 10,15,7,3,8,32, 10,15,6,1,9,32, 10,15,6,3,9,32, + 10,15,5,1,10,32, 10,15,5,3,10,32, 10,15,5,6,5,16, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, + 10,13,12,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,3,6,5,19, 10,11,13,5,10,4, 10,11,2,3,13,36, + 10,11,2,6,5,20, 10,10,13,4,10,5, 10,10,13,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,4,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, + 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,4,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,4,6,5,25, + 10,5,10,4,10,10, 10,5,10,5,10,10, 10,5,4,6,5,26, 10,4,9,5,10,11, 10,4,4,6,5,27, 10,3,9,5,10,12, 10,3,4,6,5,28, 10,2,10,3,5,45, + 10,2,10,5,10,13, 10,2,4,4,10,13, 10,2,4,6,5,29, 10,1,10,4,10,14, 10,1,10,5,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,9,5,10,15, + 10,0,6,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, + 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, + 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, + 11,12,13,5,11,3, 11,12,3,6,4,19, 11,11,13,5,11,4, 11,11,2,3,13,36, 11,11,2,6,4,20, 11,10,13,4,11,5, 11,10,13,5,11,5, 11,10,2,6,4,21, + 11,9,12,5,11,6, 11,9,2,4,11,6, 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, + 11,7,4,6,4,24, 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,4,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, 11,5,4,6,4,26, 11,4,9,5,11,11, + 11,4,4,6,4,27, 11,3,9,5,11,12, 11,3,4,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, 11,2,4,4,11,13, 11,2,4,6,4,29, 11,1,10,4,11,14, + 11,1,10,5,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,9,1,6,47, 11,0,9,5,11,15, 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, + 11,0,6,6,4,31, 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, + 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, + 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,1,2,35, + 12,12,13,3,2,35, 12,12,13,5,12,3, 12,12,12,1,3,35, 12,12,11,1,4,35, 12,12,10,1,5,35, 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, + 12,12,6,1,9,35, 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, 12,12,3,6,3,19, 12,11,13,5,12,4, 12,11,2,3,13,36, 12,11,2,6,3,20, + 12,10,13,4,12,5, 12,10,13,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,2,4,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,3,4,12,7, + 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,4,6,3,25, 12,5,10,4,12,10, + 12,5,10,5,12,10, 12,5,4,6,3,26, 12,4,9,5,12,11, 12,4,4,6,3,27, 12,3,9,5,12,12, 12,3,4,6,3,28, 12,2,10,1,5,45, 12,2,10,3,5,45, + 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,4,1,11,45, 12,2,4,4,12,13, + 12,2,4,6,3,29, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,10,5,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, 12,1,8,4,12,14, + 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,5,6,3,30, 13,11,13,1,2,36, + 13,11,13,3,2,36, 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, + 13,11,9,1,6,36, 13,11,9,3,6,36, 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, + 13,11,5,1,10,36, 13,11,5,3,10,36, 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, + 13,11,2,6,2,20, 13,10,13,1,2,37, 13,10,13,4,13,5, 13,10,13,5,13,5, 13,10,12,1,3,37, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, + 13,10,8,1,7,37, 13,10,7,1,8,37, 13,10,6,1,9,37, 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,6,2,21, + 13,9,12,5,13,6, 13,9,2,4,13,6, 13,9,2,6,2,22, 13,8,12,5,13,7, 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, + 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, + 13,7,4,1,11,40, 13,7,4,6,2,24, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,4,6,2,25, 13,5,10,4,13,10, 13,5,10,5,13,10, 13,5,4,6,2,26, + 13,4,9,5,13,11, 13,4,4,6,2,27, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,4,13,12, 13,3,7,4,13,12, 13,3,6,4,13,12, 13,3,5,4,13,12, + 13,3,4,4,13,12, 13,3,4,6,2,28, 14,9,12,1,3,38, 14,9,12,3,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,11,3,4,38, 14,9,10,1,5,38, + 14,9,10,3,5,38, 14,9,9,1,6,38, 14,9,9,3,6,38, 14,9,8,1,7,38, 14,9,8,3,7,38, 14,9,7,1,8,38, 14,9,7,3,8,38, 14,9,6,1,9,38, + 14,9,6,3,9,38, 14,9,5,1,10,38, 14,9,5,3,10,38, 14,9,4,1,11,38, 14,9,4,3,11,38, 14,9,3,1,12,38, 14,9,3,3,12,38, 14,9,2,1,13,38, + 14,9,2,3,13,38, 14,9,2,4,14,6, 14,9,2,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, + 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, + 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, + 14,8,3,6,1,23, 14,6,11,1,4,41, 14,6,11,3,4,41, 14,6,11,4,14,9, 14,6,11,5,14,9, 14,6,10,1,5,41, 14,6,10,3,5,41, 14,6,9,1,6,41, + 14,6,9,3,6,41, 14,6,8,1,7,41, 14,6,8,3,7,41, 14,6,7,1,8,41, 14,6,7,3,8,41, 14,6,6,1,9,41, 14,6,6,3,9,41, 14,6,5,1,10,41, + 14,6,5,3,10,41, 14,6,4,1,11,41, 14,6,4,3,11,41, 14,6,4,6,1,25, 14,5,10,4,14,10, 14,5,10,5,14,10, 14,5,4,6,1,26, 14,4,9,5,14,11, + 14,4,4,6,1,27, 14,3,9,1,6,44, 14,3,9,4,14,12, 14,3,9,5,14,12, 14,3,8,1,7,44, 14,3,8,4,14,12, 14,3,7,1,8,44, 14,3,7,4,14,12, + 14,3,6,1,9,44, 14,3,6,4,14,12, 14,3,5,1,10,44, 14,3,5,4,14,12, 14,3,4,1,11,44, 14,3,4,4,14,12, 14,3,4,6,1,28, 15,5,10,1,5,42, + 15,5,10,3,5,42, 15,5,10,4,15,10, 15,5,10,5,15,10, 15,5,9,1,6,42, 15,5,9,3,6,42, 15,5,8,1,7,42, 15,5,8,3,7,42, 15,5,7,1,8,42, + 15,5,7,3,8,42, 15,5,6,1,9,42, 15,5,6,3,9,42, 15,5,5,1,10,42, 15,5,5,3,10,42, 15,5,4,1,11,42, 15,5,4,3,11,42, 15,5,4,6,0,26, + 15,4,9,1,6,43, 15,4,9,4,15,11, 15,4,9,5,15,11, 15,4,8,1,7,43, 15,4,8,4,15,11, 15,4,7,1,8,43, 15,4,7,4,15,11, 15,4,6,1,9,43, + 15,4,6,4,15,11, 15,4,5,1,10,43, 15,4,5,4,15,11, 15,4,4,1,11,43, 15,4,4,4,15,11, 15,4,4,6,0,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1624, + count = 1058, + faces = { + 1,8,12,2,3,87, 1,8,12,3,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,11,3,4,87, 1,8,10,2,5,87, 1,8,10,3,5,87, 1,8,9,2,6,87, + 1,8,9,3,6,87, 1,8,8,2,7,87, 1,8,8,3,7,87, 1,8,7,2,8,87, 1,8,7,3,8,87, 1,8,6,2,9,87, 1,8,6,3,9,87, 1,8,5,2,10,87, + 1,8,5,3,10,87, 1,8,4,2,11,87, 1,8,4,3,11,87, 1,8,3,2,12,87, 1,8,3,3,12,87, 1,8,2,2,13,87, 1,8,2,3,13,87, 1,8,2,4,1,55, + 1,8,2,6,14,71, 1,7,12,2,3,88, 1,7,12,5,1,56, 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, + 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, 1,7,3,2,12,88, 1,7,3,4,1,56, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, + 1,6,12,5,1,57, 1,6,11,2,4,89, 1,6,10,2,5,89, 1,6,9,2,6,89, 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, + 1,6,4,2,11,89, 1,6,4,6,1,57, 1,5,11,2,4,90, 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, 1,5,8,2,7,90, + 1,5,7,2,8,90, 1,5,6,2,9,90, 1,5,5,2,10,90, 1,5,4,2,11,90, 1,5,4,6,1,58, 1,4,10,2,5,91, 1,4,10,5,14,75, 1,4,9,2,6,91, + 1,4,8,2,7,91, 1,4,7,2,8,91, 1,4,6,2,9,91, 1,4,5,2,10,91, 1,4,4,2,11,91, 1,4,4,6,14,75, 1,3,12,2,3,92, 1,3,12,3,3,92, + 1,3,12,4,14,76, 1,3,12,5,14,76, 1,3,11,2,4,92, 1,3,11,3,4,92, 1,3,11,4,14,76, 1,3,10,2,5,92, 1,3,10,4,14,76, 1,3,9,2,6,92, + 1,3,9,4,14,76, 1,3,8,2,7,92, 1,3,8,4,14,76, 1,3,7,2,8,92, 1,3,7,4,14,76, 1,3,6,2,9,92, 1,3,6,4,14,76, 1,3,5,2,10,92, + 1,3,5,4,14,76, 1,3,4,2,11,92, 1,3,4,4,14,76, 1,3,3,2,12,92, 1,3,3,3,12,92, 1,3,3,4,14,76, 1,3,3,6,14,76, 2,10,13,2,2,85, + 2,10,13,3,2,85, 2,10,13,5,2,53, 2,10,12,2,3,85, 2,10,12,3,3,85, 2,10,11,2,4,85, 2,10,11,3,4,85, 2,10,10,2,5,85, 2,10,10,3,5,85, + 2,10,9,2,6,85, 2,10,9,3,6,85, 2,10,8,2,7,85, 2,10,8,3,7,85, 2,10,7,2,8,85, 2,10,7,3,8,85, 2,10,6,2,9,85, 2,10,6,3,9,85, + 2,10,5,2,10,85, 2,10,5,3,10,85, 2,10,4,2,11,85, 2,10,4,3,11,85, 2,10,3,2,12,85, 2,10,3,3,12,85, 2,10,2,2,13,85, 2,10,2,3,13,85, + 2,10,2,6,13,69, 2,9,13,2,2,86, 2,9,13,4,2,54, 2,9,13,5,2,54, 2,9,12,2,3,86, 2,9,11,2,4,86, 2,9,10,2,5,86, 2,9,9,2,6,86, + 2,9,8,2,7,86, 2,9,7,2,8,86, 2,9,6,2,9,86, 2,9,5,2,10,86, 2,9,4,2,11,86, 2,9,3,2,12,86, 2,9,2,2,13,86, 2,9,2,6,13,70, + 2,8,12,5,2,55, 2,8,2,4,2,55, 2,8,2,6,13,71, 2,7,12,5,2,56, 2,7,3,4,2,56, 2,7,3,6,13,72, 2,6,12,4,2,57, 2,6,12,5,2,57, + 2,6,4,6,13,73, 2,5,11,4,2,58, 2,5,11,5,2,58, 2,5,4,6,13,74, 2,4,10,5,2,59, 2,4,4,6,13,75, 2,3,12,3,3,92, 2,3,12,5,13,76, + 2,3,11,3,4,92, 2,3,3,3,12,92, 2,3,3,6,13,76, 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, 2,2,13,5,13,77, 2,2,12,2,3,93, + 2,2,12,4,13,77, 2,2,11,2,4,93, 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,4,13,77, 2,2,8,2,7,93, + 2,2,8,4,13,77, 2,2,7,2,8,93, 2,2,7,4,13,77, 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,4,13,77, 2,2,4,2,11,93, + 2,2,4,4,13,77, 2,2,3,2,12,93, 2,2,3,4,13,77, 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, 2,2,2,6,13,77, 3,12,12,2,3,83, + 3,12,12,3,3,83, 3,12,12,5,3,51, 3,12,11,2,4,83, 3,12,11,3,4,83, 3,12,10,2,5,83, 3,12,10,3,5,83, 3,12,9,2,6,83, 3,12,9,3,6,83, + 3,12,8,2,7,83, 3,12,8,3,7,83, 3,12,7,2,8,83, 3,12,7,3,8,83, 3,12,6,2,9,83, 3,12,6,3,9,83, 3,12,5,2,10,83, 3,12,5,3,10,83, + 3,12,4,2,11,83, 3,12,4,3,11,83, 3,12,3,2,12,83, 3,12,3,3,12,83, 3,12,3,6,12,67, 3,11,13,2,2,84, 3,11,13,3,2,84, 3,11,13,5,3,52, + 3,11,12,2,3,84, 3,11,11,2,4,84, 3,11,10,2,5,84, 3,11,9,2,6,84, 3,11,8,2,7,84, 3,11,7,2,8,84, 3,11,6,2,9,84, 3,11,5,2,10,84, + 3,11,4,2,11,84, 3,11,3,2,12,84, 3,11,3,6,12,68, 3,10,13,5,3,53, 3,10,2,3,13,85, 3,10,2,6,12,69, 3,9,13,4,3,54, 3,9,13,5,3,54, + 3,9,2,6,12,70, 3,8,12,5,3,55, 3,8,2,4,3,55, 3,8,2,6,12,71, 3,7,12,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, + 3,6,12,5,3,57, 3,6,4,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,4,6,12,74, 3,4,10,5,3,59, 3,4,4,6,12,75, 3,3,12,3,3,92, + 3,3,12,5,3,60, 3,3,11,3,4,92, 3,3,3,3,12,92, 3,3,3,6,12,76, 3,2,13,3,2,93, 3,2,13,4,12,77, 3,2,13,5,12,77, 3,2,12,4,12,77, + 3,2,11,4,12,77, 3,2,10,4,12,77, 3,2,9,4,12,77, 3,2,8,4,12,77, 3,2,7,4,12,77, 3,2,6,4,12,77, 3,2,5,4,12,77, 3,2,4,4,12,77, + 3,2,3,4,12,77, 3,2,2,3,13,93, 3,2,2,4,12,77, 3,2,2,6,12,77, 4,13,11,2,4,82, 4,13,11,3,4,82, 4,13,11,5,4,50, 4,13,10,2,5,82, + 4,13,10,3,5,82, 4,13,9,2,6,82, 4,13,9,3,6,82, 4,13,8,2,7,82, 4,13,8,3,7,82, 4,13,7,2,8,82, 4,13,7,3,8,82, 4,13,6,2,9,82, + 4,13,6,3,9,82, 4,13,5,2,10,82, 4,13,5,3,10,82, 4,13,4,2,11,82, 4,13,4,3,11,82, 4,13,4,6,11,66, 4,12,12,3,3,83, 4,12,12,5,4,51, + 4,12,3,3,12,83, 4,12,3,6,11,67, 4,11,13,3,2,84, 4,11,13,5,4,52, 4,11,3,6,11,68, 4,10,13,5,4,53, 4,10,2,3,13,85, 4,10,2,6,11,69, + 4,9,13,4,4,54, 4,9,13,5,4,54, 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,2,4,4,55, 4,8,2,6,11,71, 4,7,12,5,4,56, 4,7,3,4,4,56, + 4,7,3,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,6,11,73, 4,5,11,4,4,58, 4,5,11,5,4,58, 4,5,4,6,11,74, 4,4,10,5,4,59, + 4,4,4,6,11,75, 4,3,12,3,3,92, 4,3,12,5,4,60, 4,3,11,3,4,92, 4,3,3,3,12,92, 4,3,3,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, + 4,2,13,5,4,61, 4,2,2,3,13,93, 4,2,2,6,11,77, 4,1,12,2,3,94, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,2,4,94, 4,1,11,4,4,62, + 4,1,10,2,5,94, 4,1,10,4,4,62, 4,1,9,2,6,94, 4,1,9,4,4,62, 4,1,8,2,7,94, 4,1,8,4,4,62, 4,1,7,2,8,94, 4,1,7,4,4,62, + 4,1,6,2,9,94, 4,1,6,4,4,62, 4,1,5,2,10,94, 4,1,5,4,4,62, 4,1,4,2,11,94, 4,1,4,4,4,62, 4,1,3,2,12,94, 4,1,3,4,4,62, + 4,1,2,2,13,94, 4,1,2,4,4,62, 4,1,2,6,4,62, 5,14,10,2,5,81, 5,14,10,3,5,81, 5,14,10,5,5,49, 5,14,9,2,6,81, 5,14,9,3,6,81, + 5,14,8,2,7,81, 5,14,8,3,7,81, 5,14,7,2,8,81, 5,14,7,3,8,81, 5,14,6,2,9,81, 5,14,6,3,9,81, 5,14,5,2,10,81, 5,14,5,3,10,81, + 5,14,5,6,10,65, 5,13,11,3,4,82, 5,13,11,5,5,50, 5,13,4,3,11,82, 5,13,4,6,10,66, 5,12,12,3,3,83, 5,12,12,5,5,51, 5,12,3,3,12,83, + 5,12,3,6,10,67, 5,11,13,3,2,84, 5,11,13,5,5,52, 5,11,3,6,10,68, 5,10,13,5,5,53, 5,10,2,3,13,85, 5,10,2,6,10,69, 5,9,13,4,5,54, + 5,9,13,5,5,54, 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,2,4,5,55, 5,8,2,6,10,71, 5,7,12,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, + 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,4,6,10,73, 5,5,11,4,5,58, 5,5,11,5,5,58, 5,5,4,6,10,74, 5,4,10,5,5,59, 5,4,4,6,10,75, + 5,3,12,3,3,92, 5,3,12,5,5,60, 5,3,11,3,4,92, 5,3,3,3,12,92, 5,3,3,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, + 5,2,2,3,13,93, 5,2,2,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, + 5,1,2,4,5,62, 5,1,2,6,5,62, 5,0,11,2,4,95, 5,0,11,5,5,63, 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,4,2,11,95, + 5,0,4,5,5,63, 5,0,3,2,12,95, 5,0,3,6,5,63, 6,14,10,3,5,81, 6,14,10,5,6,49, 6,14,9,3,6,81, 6,14,8,3,7,81, 6,14,7,3,8,81, + 6,14,6,3,9,81, 6,14,5,3,10,81, 6,14,5,6,9,65, 6,13,11,3,4,82, 6,13,11,5,6,50, 6,13,4,3,11,82, 6,13,4,6,9,66, 6,12,12,3,3,83, + 6,12,12,5,6,51, 6,12,3,3,12,83, 6,12,3,6,9,67, 6,11,13,3,2,84, 6,11,13,5,6,52, 6,11,3,6,9,68, 6,10,13,5,6,53, 6,10,2,3,13,85, + 6,10,2,6,9,69, 6,9,13,4,6,54, 6,9,13,5,6,54, 6,9,2,6,9,70, 6,8,12,5,6,55, 6,8,2,4,6,55, 6,8,2,6,9,71, 6,7,12,5,6,56, + 6,7,3,4,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,4,6,9,73, 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,4,6,9,74, + 6,4,10,5,6,59, 6,4,4,6,9,75, 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,11,3,4,92, 6,3,3,3,12,92, 6,3,3,6,9,76, 6,2,13,3,2,93, + 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, + 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, 6,1,2,6,9,78, 6,0,11,5,6,63, 6,0,9,6,6,63, 6,0,4,5,6,63, 6,0,3,6,6,63, + 7,14,10,3,5,81, 7,14,10,5,7,49, 7,14,9,3,6,81, 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,5,3,10,81, 7,14,5,6,8,65, + 7,13,11,3,4,82, 7,13,11,5,7,50, 7,13,4,3,11,82, 7,13,4,6,8,66, 7,12,12,3,3,83, 7,12,12,5,7,51, 7,12,3,3,12,83, 7,12,3,6,8,67, + 7,11,13,3,2,84, 7,11,13,5,7,52, 7,11,3,6,8,68, 7,10,13,5,7,53, 7,10,2,3,13,85, 7,10,2,6,8,69, 7,9,13,4,7,54, 7,9,13,5,7,54, + 7,9,2,6,8,70, 7,8,12,5,7,55, 7,8,2,4,7,55, 7,8,2,6,8,71, 7,7,12,5,7,56, 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, + 7,6,12,5,7,57, 7,6,4,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, 7,5,4,6,8,74, 7,4,10,5,7,59, 7,4,4,6,8,75, 7,3,12,3,3,92, + 7,3,12,5,7,60, 7,3,11,3,4,92, 7,3,3,3,12,92, 7,3,3,6,8,76, 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, + 7,2,2,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,2,4,7,62, + 7,1,2,6,8,78, 7,0,11,5,7,63, 7,0,9,6,7,63, 7,0,4,5,7,63, 7,0,3,6,7,63, 8,14,10,3,5,81, 8,14,10,5,8,49, 8,14,9,3,6,81, + 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, 8,14,5,6,7,65, 8,13,11,3,4,82, 8,13,11,5,8,50, 8,13,4,3,11,82, + 8,13,4,6,7,66, 8,12,12,3,3,83, 8,12,12,5,8,51, 8,12,3,3,12,83, 8,12,3,6,7,67, 8,11,13,3,2,84, 8,11,13,5,8,52, 8,11,3,6,7,68, + 8,10,13,5,8,53, 8,10,2,3,13,85, 8,10,2,6,7,69, 8,9,13,4,8,54, 8,9,13,5,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, 8,8,2,4,8,55, + 8,8,2,6,7,71, 8,7,12,5,8,56, 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,6,7,73, 8,5,11,4,8,58, + 8,5,11,5,8,58, 8,5,4,6,7,74, 8,4,10,5,8,59, 8,4,4,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, 8,3,11,3,4,92, 8,3,3,3,12,92, + 8,3,3,6,7,76, 8,2,13,3,2,93, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, + 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, 8,0,11,5,7,79, 8,0,9,6,7,79, + 8,0,4,5,7,79, 8,0,3,6,7,79, 9,14,10,3,5,81, 9,14,10,5,9,49, 9,14,9,3,6,81, 9,14,8,3,7,81, 9,14,7,3,8,81, 9,14,6,3,9,81, + 9,14,5,3,10,81, 9,14,5,6,6,65, 9,13,11,3,4,82, 9,13,11,5,9,50, 9,13,4,3,11,82, 9,13,4,6,6,66, 9,12,12,3,3,83, 9,12,12,5,9,51, + 9,12,3,3,12,83, 9,12,3,6,6,67, 9,11,13,3,2,84, 9,11,13,5,9,52, 9,11,3,6,6,68, 9,10,13,5,9,53, 9,10,2,3,13,85, 9,10,2,6,6,69, + 9,9,13,4,9,54, 9,9,13,5,9,54, 9,9,2,6,6,70, 9,8,12,5,9,55, 9,8,2,4,9,55, 9,8,2,6,6,71, 9,7,12,5,9,56, 9,7,3,4,9,56, + 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,4,6,6,73, 9,5,11,4,9,58, 9,5,11,5,9,58, 9,5,4,6,6,74, 9,4,10,5,9,59, + 9,4,4,6,6,75, 9,3,12,3,3,92, 9,3,12,5,9,60, 9,3,11,3,4,92, 9,3,3,3,12,92, 9,3,3,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, + 9,2,13,5,9,61, 9,2,2,3,13,93, 9,2,2,6,6,77, 9,1,12,4,9,62, 9,1,12,5,9,62, 9,1,8,4,9,62, 9,1,7,4,9,62, 9,1,6,4,9,62, + 9,1,5,4,9,62, 9,1,2,4,9,62, 9,1,2,6,6,78, 9,0,11,5,6,79, 9,0,9,6,6,79, 9,0,4,5,6,79, 9,0,3,6,6,79, 10,14,10,1,5,81, + 10,14,10,3,5,81, 10,14,10,5,10,49, 10,14,9,1,6,81, 10,14,9,3,6,81, 10,14,8,1,7,81, 10,14,8,3,7,81, 10,14,7,1,8,81, 10,14,7,3,8,81, + 10,14,6,1,9,81, 10,14,6,3,9,81, 10,14,5,1,10,81, 10,14,5,3,10,81, 10,14,5,6,5,65, 10,13,11,3,4,82, 10,13,11,5,10,50, 10,13,4,3,11,82, + 10,13,4,6,5,66, 10,12,12,3,3,83, 10,12,12,5,10,51, 10,12,3,3,12,83, 10,12,3,6,5,67, 10,11,13,3,2,84, 10,11,13,5,10,52, 10,11,3,6,5,68, + 10,10,13,5,10,53, 10,10,2,3,13,85, 10,10,2,6,5,69, 10,9,13,4,10,54, 10,9,13,5,10,54, 10,9,2,6,5,70, 10,8,12,5,10,55, 10,8,2,4,10,55, + 10,8,2,6,5,71, 10,7,12,5,10,56, 10,7,3,4,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,4,6,5,73, 10,5,11,4,10,58, + 10,5,11,5,10,58, 10,5,4,6,5,74, 10,4,10,5,10,59, 10,4,4,6,5,75, 10,3,12,3,3,92, 10,3,12,5,10,60, 10,3,11,3,4,92, 10,3,3,3,12,92, + 10,3,3,6,5,76, 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,3,13,93, 10,2,2,6,5,77, 10,1,12,4,5,78, 10,1,12,5,5,78, + 10,1,8,4,5,78, 10,1,7,4,5,78, 10,1,6,4,5,78, 10,1,5,4,5,78, 10,1,2,4,5,78, 10,1,2,6,5,78, 10,0,11,1,4,95, 10,0,11,5,5,79, + 10,0,10,1,5,95, 10,0,9,1,6,95, 10,0,9,6,5,79, 10,0,4,1,11,95, 10,0,4,5,5,79, 10,0,3,1,12,95, 10,0,3,6,5,79, 11,13,11,1,4,82, + 11,13,11,3,4,82, 11,13,11,5,11,50, 11,13,10,1,5,82, 11,13,10,3,5,82, 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, + 11,13,7,1,8,82, 11,13,7,3,8,82, 11,13,6,1,9,82, 11,13,6,3,9,82, 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,4,1,11,82, 11,13,4,3,11,82, + 11,13,4,6,4,66, 11,12,12,3,3,83, 11,12,12,5,11,51, 11,12,3,3,12,83, 11,12,3,6,4,67, 11,11,13,3,2,84, 11,11,13,5,11,52, 11,11,3,6,4,68, + 11,10,13,5,11,53, 11,10,2,3,13,85, 11,10,2,6,4,69, 11,9,13,4,11,54, 11,9,13,5,11,54, 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,2,4,11,55, + 11,8,2,6,4,71, 11,7,12,5,11,56, 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,6,4,73, 11,5,11,4,11,58, + 11,5,11,5,11,58, 11,5,4,6,4,74, 11,4,10,5,11,59, 11,4,4,6,4,75, 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,11,3,4,92, 11,3,3,3,12,92, + 11,3,3,6,4,76, 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,3,13,93, 11,2,2,6,4,77, 11,1,12,4,11,62, 11,1,12,5,11,62, + 11,1,11,4,11,62, 11,1,10,4,11,62, 11,1,9,4,11,62, 11,1,8,4,11,62, 11,1,7,4,11,62, 11,1,6,4,11,62, 11,1,5,4,11,62, 11,1,4,4,11,62, + 11,1,3,4,11,62, 11,1,2,4,11,62, 11,1,2,6,4,78, 12,12,12,1,3,83, 12,12,12,3,3,83, 12,12,12,5,12,51, 12,12,11,1,4,83, 12,12,11,3,4,83, + 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, 12,12,8,1,7,83, 12,12,8,3,7,83, 12,12,7,1,8,83, 12,12,7,3,8,83, + 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, 12,12,4,1,11,83, 12,12,4,3,11,83, 12,12,3,1,12,83, 12,12,3,3,12,83, + 12,12,3,6,3,67, 12,11,13,1,2,84, 12,11,13,3,2,84, 12,11,13,5,12,52, 12,11,12,1,3,84, 12,11,11,1,4,84, 12,11,10,1,5,84, 12,11,9,1,6,84, + 12,11,8,1,7,84, 12,11,7,1,8,84, 12,11,6,1,9,84, 12,11,5,1,10,84, 12,11,4,1,11,84, 12,11,3,1,12,84, 12,11,3,6,3,68, 12,10,13,5,12,53, + 12,10,2,3,13,85, 12,10,2,6,3,69, 12,9,13,4,12,54, 12,9,13,5,12,54, 12,9,2,6,3,70, 12,8,12,5,12,55, 12,8,2,4,12,55, 12,8,2,6,3,71, + 12,7,12,5,12,56, 12,7,3,4,12,56, 12,7,3,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,4,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, + 12,5,4,6,3,74, 12,4,10,5,12,59, 12,4,4,6,3,75, 12,3,12,3,3,92, 12,3,12,5,12,60, 12,3,11,3,4,92, 12,3,3,3,12,92, 12,3,3,6,3,76, + 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,2,3,13,93, 12,2,2,6,12,61, 12,1,12,1,3,94, 12,1,12,4,12,62, 12,1,12,5,12,62, + 12,1,11,1,4,94, 12,1,11,4,12,62, 12,1,10,1,5,94, 12,1,10,4,12,62, 12,1,9,1,6,94, 12,1,9,4,12,62, 12,1,8,1,7,94, 12,1,8,4,12,62, + 12,1,7,1,8,94, 12,1,7,4,12,62, 12,1,6,1,9,94, 12,1,6,4,12,62, 12,1,5,1,10,94, 12,1,5,4,12,62, 12,1,4,1,11,94, 12,1,4,4,12,62, + 12,1,3,1,12,94, 12,1,3,4,12,62, 12,1,2,1,13,94, 12,1,2,4,12,62, 12,1,2,6,12,62, 13,10,13,1,2,85, 13,10,13,3,2,85, 13,10,13,5,13,53, + 13,10,12,1,3,85, 13,10,12,3,3,85, 13,10,11,1,4,85, 13,10,11,3,4,85, 13,10,10,1,5,85, 13,10,10,3,5,85, 13,10,9,1,6,85, 13,10,9,3,6,85, + 13,10,8,1,7,85, 13,10,8,3,7,85, 13,10,7,1,8,85, 13,10,7,3,8,85, 13,10,6,1,9,85, 13,10,6,3,9,85, 13,10,5,1,10,85, 13,10,5,3,10,85, + 13,10,4,1,11,85, 13,10,4,3,11,85, 13,10,3,1,12,85, 13,10,3,3,12,85, 13,10,2,1,13,85, 13,10,2,3,13,85, 13,10,2,6,2,69, 13,9,13,1,2,86, + 13,9,13,4,13,54, 13,9,13,5,13,54, 13,9,12,1,3,86, 13,9,11,1,4,86, 13,9,10,1,5,86, 13,9,9,1,6,86, 13,9,8,1,7,86, 13,9,7,1,8,86, + 13,9,6,1,9,86, 13,9,5,1,10,86, 13,9,4,1,11,86, 13,9,3,1,12,86, 13,9,2,1,13,86, 13,9,2,6,2,70, 13,8,12,5,13,55, 13,8,2,4,13,55, + 13,8,2,6,2,71, 13,7,12,5,13,56, 13,7,3,4,13,56, 13,7,3,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,4,6,2,73, 13,5,11,4,13,58, + 13,5,11,5,13,58, 13,5,4,6,2,74, 13,4,10,1,5,91, 13,4,10,5,13,59, 13,4,9,1,6,91, 13,4,8,1,7,91, 13,4,7,1,8,91, 13,4,6,1,9,91, + 13,4,5,1,10,91, 13,4,4,1,11,91, 13,4,4,6,2,75, 13,3,12,1,3,92, 13,3,12,3,3,92, 13,3,12,5,13,60, 13,3,11,1,4,92, 13,3,11,3,4,92, + 13,3,10,1,5,92, 13,3,9,1,6,92, 13,3,8,1,7,92, 13,3,7,1,8,92, 13,3,6,1,9,92, 13,3,5,1,10,92, 13,3,4,1,11,92, 13,3,3,1,12,92, + 13,3,3,3,12,92, 13,3,3,6,13,60, 13,2,13,1,2,93, 13,2,13,3,2,93, 13,2,13,4,13,61, 13,2,13,5,13,61, 13,2,12,1,3,93, 13,2,12,4,13,61, + 13,2,11,1,4,93, 13,2,11,4,13,61, 13,2,10,1,5,93, 13,2,10,4,13,61, 13,2,9,1,6,93, 13,2,9,4,13,61, 13,2,8,1,7,93, 13,2,8,4,13,61, + 13,2,7,1,8,93, 13,2,7,4,13,61, 13,2,6,1,9,93, 13,2,6,4,13,61, 13,2,5,1,10,93, 13,2,5,4,13,61, 13,2,4,1,11,93, 13,2,4,4,13,61, + 13,2,3,1,12,93, 13,2,3,4,13,61, 13,2,2,1,13,93, 13,2,2,3,13,93, 13,2,2,4,13,61, 13,2,2,6,13,61, 14,8,12,1,3,87, 14,8,12,3,3,87, + 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,11,3,4,87, 14,8,10,1,5,87, 14,8,10,3,5,87, 14,8,9,1,6,87, 14,8,9,3,6,87, 14,8,8,1,7,87, + 14,8,8,3,7,87, 14,8,7,1,8,87, 14,8,7,3,8,87, 14,8,6,1,9,87, 14,8,6,3,9,87, 14,8,5,1,10,87, 14,8,5,3,10,87, 14,8,4,1,11,87, + 14,8,4,3,11,87, 14,8,3,1,12,87, 14,8,3,3,12,87, 14,8,2,1,13,87, 14,8,2,3,13,87, 14,8,2,4,14,55, 14,8,2,6,1,71, 14,7,12,1,3,88, + 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, 14,7,6,1,9,88, 14,7,5,1,10,88, + 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,3,4,14,56, 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, 14,6,12,5,1,73, 14,6,11,1,4,89, + 14,6,10,1,5,89, 14,6,9,1,6,89, 14,6,8,1,7,89, 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, 14,6,4,1,11,89, 14,6,4,6,1,73, + 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, 14,5,10,1,5,90, 14,5,10,4,1,74, 14,5,9,1,6,90, 14,5,9,4,1,74, 14,5,8,1,7,90, + 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, 14,5,6,1,9,90, 14,5,6,4,1,74, 14,5,5,1,10,90, 14,5,5,4,1,74, 14,5,4,1,11,90, + 14,5,4,4,1,74, 14,5,4,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/scientist.lua b/assets/voxels/scientist.lua new file mode 100644 index 0000000..a632367 --- /dev/null +++ b/assets/voxels/scientist.lua @@ -0,0 +1,281 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "scientist" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "scientist", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1504, + count = 960, + faces = { + 1,10,13,2,3,37, 1,10,13,3,3,37, 1,10,13,5,1,5, 1,10,12,2,4,37, 1,10,12,3,4,37, 1,10,11,2,5,37, 1,10,11,3,5,37, 1,10,10,2,6,37, + 1,10,10,3,6,37, 1,10,9,2,7,37, 1,10,9,3,7,37, 1,10,8,2,8,37, 1,10,8,3,8,37, 1,10,7,2,9,37, 1,10,7,3,9,37, 1,10,6,2,10,37, + 1,10,6,3,10,37, 1,10,5,2,11,37, 1,10,5,3,11,37, 1,10,4,2,12,37, 1,10,4,3,12,37, 1,10,3,2,13,37, 1,10,3,3,13,37, 1,10,3,6,14,21, + 1,9,13,2,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,11,2,5,38, 1,9,10,2,6,38, 1,9,9,2,7,38, 1,9,8,2,8,38, 1,9,7,2,9,38, + 1,9,6,2,10,38, 1,9,5,2,11,38, 1,9,4,2,12,38, 1,9,3,2,13,38, 1,9,3,4,1,6, 1,9,3,6,14,22, 1,8,13,2,3,39, 1,8,13,4,1,7, + 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,12,4,1,7, 1,8,11,2,5,39, 1,8,11,4,1,7, 1,8,10,2,6,39, 1,8,10,4,1,7, 1,8,9,2,7,39, + 1,8,9,4,1,7, 1,8,8,2,8,39, 1,8,8,4,1,7, 1,8,7,2,9,39, 1,8,7,4,1,7, 1,8,6,2,10,39, 1,8,6,4,1,7, 1,8,5,2,11,39, + 1,8,5,4,1,7, 1,8,4,2,12,39, 1,8,4,4,1,7, 1,8,4,6,14,23, 1,5,11,2,5,42, 1,5,11,3,5,42, 1,5,11,5,1,10, 1,5,10,2,6,42, + 1,5,10,3,6,42, 1,5,9,2,7,42, 1,5,9,3,7,42, 1,5,8,2,8,42, 1,5,8,3,8,42, 1,5,7,2,9,42, 1,5,7,3,9,42, 1,5,6,2,10,42, + 1,5,6,3,10,42, 1,5,5,2,11,42, 1,5,5,3,11,42, 1,5,5,6,14,26, 1,4,11,2,5,43, 1,4,11,4,1,11, 1,4,11,5,1,11, 1,4,10,2,6,43, + 1,4,10,4,1,11, 1,4,9,2,7,43, 1,4,9,4,1,11, 1,4,8,2,8,43, 1,4,8,4,1,11, 1,4,7,2,9,43, 1,4,7,4,1,11, 1,4,6,2,10,43, + 1,4,6,4,1,11, 1,4,5,2,11,43, 1,4,5,4,1,11, 1,4,5,6,14,27, 2,11,13,2,3,36, 2,11,13,3,3,36, 2,11,13,5,2,4, 2,11,12,2,4,36, + 2,11,12,3,4,36, 2,11,11,2,5,36, 2,11,11,3,5,36, 2,11,10,2,6,36, 2,11,10,3,6,36, 2,11,9,2,7,36, 2,11,9,3,7,36, 2,11,8,2,8,36, + 2,11,8,3,8,36, 2,11,7,2,9,36, 2,11,7,3,9,36, 2,11,6,2,10,36, 2,11,6,3,10,36, 2,11,5,2,11,36, 2,11,5,3,11,36, 2,11,4,2,12,36, + 2,11,4,3,12,36, 2,11,3,2,13,36, 2,11,3,3,13,36, 2,11,3,6,13,20, 2,10,13,5,2,5, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,3,4,2,6, + 2,9,3,6,13,22, 2,8,13,5,2,7, 2,8,4,4,2,7, 2,8,4,6,13,23, 2,7,13,2,3,40, 2,7,13,4,2,8, 2,7,13,5,2,8, 2,7,12,2,4,40, + 2,7,11,2,5,40, 2,7,10,2,6,40, 2,7,9,2,7,40, 2,7,8,2,8,40, 2,7,7,2,9,40, 2,7,6,2,10,40, 2,7,5,2,11,40, 2,7,5,4,2,8, + 2,7,5,6,13,24, 2,6,12,2,4,41, 2,6,12,4,2,9, 2,6,12,5,2,9, 2,6,11,2,5,41, 2,6,10,2,6,41, 2,6,9,2,7,41, 2,6,8,2,8,41, + 2,6,7,2,9,41, 2,6,6,2,10,41, 2,6,6,6,13,25, 2,5,11,5,2,10, 2,5,5,3,11,42, 2,5,5,6,13,26, 2,4,11,5,2,11, 2,4,5,6,13,27, + 2,3,11,2,5,44, 2,3,11,4,2,12, 2,3,11,5,2,12, 2,3,10,2,6,44, 2,3,10,4,2,12, 2,3,9,2,7,44, 2,3,9,4,2,12, 2,3,8,2,8,44, + 2,3,8,4,2,12, 2,3,7,2,9,44, 2,3,7,4,2,12, 2,3,6,2,10,44, 2,3,6,4,2,12, 2,3,5,2,11,44, 2,3,5,4,2,12, 2,3,5,6,13,28, + 3,13,13,2,3,34, 3,13,13,3,3,34, 3,13,13,5,3,2, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, + 3,13,10,3,6,34, 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, + 3,13,6,3,10,34, 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,4,6,12,18, 3,12,13,2,3,35, 3,12,13,5,3,3, + 3,12,12,2,4,35, 3,12,11,2,5,35, 3,12,10,2,6,35, 3,12,9,2,7,35, 3,12,8,2,8,35, 3,12,7,2,9,35, 3,12,6,2,10,35, 3,12,5,2,11,35, + 3,12,4,2,12,35, 3,12,4,6,12,19, 3,11,13,5,3,4, 3,11,3,3,13,36, 3,11,3,6,12,20, 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, + 3,9,3,4,3,6, 3,9,3,6,12,22, 3,8,13,5,3,7, 3,8,4,4,3,7, 3,8,4,6,12,23, 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,5,4,3,8, + 3,7,5,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,6,6,12,25, 3,5,11,5,3,10, 3,5,5,3,11,42, 3,5,5,6,12,26, 3,4,11,5,3,11, + 3,4,5,6,12,27, 3,3,11,5,3,12, 3,3,5,6,12,28, 3,2,11,2,5,45, 3,2,11,5,3,13, 3,2,10,2,6,45, 3,2,9,2,7,45, 3,2,8,2,8,45, + 3,2,7,2,9,45, 3,2,6,2,10,45, 3,2,5,2,11,45, 3,2,5,6,12,29, 3,1,11,2,5,46, 3,1,11,4,3,14, 3,1,11,5,3,14, 3,1,10,2,6,46, + 3,1,10,4,3,14, 3,1,9,2,7,46, 3,1,9,4,3,14, 3,1,8,2,8,46, 3,1,8,4,3,14, 3,1,7,2,9,46, 3,1,7,4,3,14, 3,1,6,2,10,46, + 3,1,6,4,3,14, 3,1,5,2,11,46, 3,1,5,4,3,14, 3,1,5,6,12,30, 4,14,12,2,4,33, 4,14,12,3,4,33, 4,14,12,5,4,1, 4,14,11,2,5,33, + 4,14,11,3,5,33, 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, + 4,14,7,3,9,33, 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,5,2,11,33, 4,14,5,3,11,33, 4,14,5,6,11,17, 4,13,13,3,3,34, 4,13,13,5,4,2, + 4,13,4,3,12,34, 4,13,4,6,11,18, 4,12,13,5,4,3, 4,12,4,6,11,19, 4,11,13,5,4,4, 4,11,3,3,13,36, 4,11,3,6,11,20, 4,10,13,5,4,5, + 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,4,4,6, 4,9,3,6,11,22, 4,8,13,5,4,7, 4,8,4,4,4,7, 4,8,4,6,11,23, 4,7,13,4,4,8, + 4,7,13,5,4,8, 4,7,5,4,4,8, 4,7,5,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,6,6,11,25, 4,5,11,5,4,10, 4,5,5,3,11,42, + 4,5,5,6,11,26, 4,4,11,5,4,11, 4,4,5,6,11,27, 4,3,11,5,4,12, 4,3,5,6,11,28, 4,2,11,5,4,13, 4,2,5,6,11,29, 4,1,11,4,4,14, + 4,1,11,5,4,14, 4,1,6,4,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, 4,0,10,2,6,47, 4,0,10,5,4,15, 4,0,9,2,7,47, 4,0,8,2,8,47, + 4,0,7,2,9,47, 4,0,7,6,11,31, 5,14,12,3,4,33, 5,14,12,5,5,1, 5,14,11,3,5,33, 5,14,10,3,6,33, 5,14,9,3,7,33, 5,14,8,3,8,33, + 5,14,7,3,9,33, 5,14,6,3,10,33, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,13,3,3,34, 5,13,13,5,5,2, 5,13,4,3,12,34, 5,13,4,6,10,18, + 5,12,13,5,5,3, 5,12,4,6,10,19, 5,11,13,5,5,4, 5,11,3,3,13,36, 5,11,3,6,10,20, 5,10,13,5,5,5, 5,10,3,6,10,21, 5,9,13,5,5,6, + 5,9,3,4,5,6, 5,9,3,6,10,22, 5,8,13,5,5,7, 5,8,4,4,5,7, 5,8,4,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,5,4,5,8, + 5,7,5,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,6,6,10,25, 5,5,11,5,5,10, 5,5,5,3,11,42, 5,5,5,6,10,26, 5,4,11,5,5,11, + 5,4,5,6,10,27, 5,3,11,5,5,12, 5,3,5,6,10,28, 5,2,11,5,5,13, 5,2,5,6,10,29, 5,1,11,4,5,14, 5,1,11,5,5,14, 5,1,6,4,5,14, + 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,10,5,5,15, 5,0,7,6,10,31, 6,15,11,2,5,32, 6,15,11,3,5,32, 6,15,11,5,6,0, 6,15,10,2,6,32, + 6,15,10,3,6,32, 6,15,9,2,7,32, 6,15,9,3,7,32, 6,15,8,2,8,32, 6,15,8,3,8,32, 6,15,7,2,9,32, 6,15,7,3,9,32, 6,15,6,2,10,32, + 6,15,6,3,10,32, 6,15,6,6,9,16, 6,14,12,3,4,33, 6,14,12,5,6,1, 6,14,5,3,11,33, 6,14,5,6,9,17, 6,13,13,3,3,34, 6,13,13,5,6,2, + 6,13,4,3,12,34, 6,13,4,6,9,18, 6,12,13,5,6,3, 6,12,4,6,9,19, 6,11,13,5,6,4, 6,11,3,3,13,36, 6,11,3,6,9,20, 6,10,13,5,6,5, + 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,3,4,6,6, 6,9,3,6,9,22, 6,8,13,5,6,7, 6,8,4,4,6,7, 6,8,4,6,9,23, 6,7,13,4,6,8, + 6,7,13,5,6,8, 6,7,5,4,6,8, 6,7,5,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,6,6,9,25, 6,5,11,5,6,10, 6,5,5,3,11,42, + 6,5,5,6,9,26, 6,4,11,5,6,11, 6,4,5,6,9,27, 6,3,11,5,6,12, 6,3,5,6,9,28, 6,2,11,5,6,13, 6,2,5,6,9,29, 6,1,11,4,6,14, + 6,1,11,5,6,14, 6,1,6,4,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,10,1,6,47, 6,0,10,5,6,15, 6,0,9,1,7,47, 6,0,8,1,8,47, + 6,0,7,1,9,47, 6,0,7,6,9,31, 7,15,11,3,5,32, 7,15,11,5,7,0, 7,15,10,3,6,32, 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, + 7,15,6,3,10,32, 7,15,6,6,8,16, 7,14,12,3,4,33, 7,14,12,5,7,1, 7,14,5,3,11,33, 7,14,5,6,8,17, 7,13,13,3,3,34, 7,13,13,5,7,2, + 7,13,4,3,12,34, 7,13,4,6,8,18, 7,12,13,5,7,3, 7,12,4,6,8,19, 7,11,13,5,7,4, 7,11,3,3,13,36, 7,11,3,6,8,20, 7,10,13,5,7,5, + 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,3,4,7,6, 7,9,3,6,8,22, 7,8,13,5,7,7, 7,8,4,4,7,7, 7,8,4,6,8,23, 7,7,13,4,7,8, + 7,7,13,5,7,8, 7,7,5,4,7,8, 7,7,5,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,6,6,8,25, 7,5,11,5,7,10, 7,5,5,3,11,42, + 7,5,5,6,8,26, 7,4,11,5,7,11, 7,4,5,6,8,27, 7,3,11,5,7,12, 7,3,5,6,8,28, 7,2,11,5,7,13, 7,2,5,6,8,29, 7,1,11,4,7,14, + 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, + 8,15,11,3,5,32, 8,15,11,5,8,0, 8,15,10,3,6,32, 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,6,6,7,16, + 8,14,12,3,4,33, 8,14,12,5,8,1, 8,14,5,3,11,33, 8,14,5,6,7,17, 8,13,13,3,3,34, 8,13,13,5,8,2, 8,13,4,3,12,34, 8,13,4,6,7,18, + 8,12,13,5,8,3, 8,12,4,6,7,19, 8,11,13,5,8,4, 8,11,3,3,13,36, 8,11,3,6,7,20, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, + 8,9,3,4,8,6, 8,9,3,6,7,22, 8,8,13,5,8,7, 8,8,4,4,8,7, 8,8,4,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,5,4,8,8, + 8,7,5,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,6,6,7,25, 8,5,11,5,8,10, 8,5,5,3,11,42, 8,5,5,6,7,26, 8,4,11,5,8,11, + 8,4,5,6,7,27, 8,3,11,5,8,12, 8,3,5,6,7,28, 8,2,11,5,8,13, 8,2,5,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, + 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,11,1,5,32, 9,15,11,3,5,32, + 9,15,11,5,9,0, 9,15,10,1,6,32, 9,15,10,3,6,32, 9,15,9,1,7,32, 9,15,9,3,7,32, 9,15,8,1,8,32, 9,15,8,3,8,32, 9,15,7,1,9,32, + 9,15,7,3,9,32, 9,15,6,1,10,32, 9,15,6,3,10,32, 9,15,6,6,6,16, 9,14,12,3,4,33, 9,14,12,5,9,1, 9,14,5,3,11,33, 9,14,5,6,6,17, + 9,13,13,3,3,34, 9,13,13,5,9,2, 9,13,4,3,12,34, 9,13,4,6,6,18, 9,12,13,5,9,3, 9,12,4,6,6,19, 9,11,13,5,9,4, 9,11,3,3,13,36, + 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, 9,9,3,4,9,6, 9,9,3,6,6,22, 9,8,13,5,9,7, 9,8,4,4,9,7, + 9,8,4,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,5,4,9,8, 9,7,5,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,6,6,6,25, + 9,5,11,5,9,10, 9,5,5,3,11,42, 9,5,5,6,6,26, 9,4,11,5,9,11, 9,4,5,6,6,27, 9,3,11,5,9,12, 9,3,5,6,6,28, 9,2,11,5,9,13, + 9,2,5,6,6,29, 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,6,4,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,10,2,6,47, 9,0,10,5,9,15, + 9,0,9,2,7,47, 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,7,6,6,31, 10,14,12,3,4,33, 10,14,12,5,10,1, 10,14,11,3,5,33, 10,14,10,3,6,33, + 10,14,9,3,7,33, 10,14,8,3,8,33, 10,14,7,3,9,33, 10,14,6,3,10,33, 10,14,5,3,11,33, 10,14,5,6,5,17, 10,13,13,3,3,34, 10,13,13,5,10,2, + 10,13,4,3,12,34, 10,13,4,6,5,18, 10,12,13,5,10,3, 10,12,4,6,5,19, 10,11,13,5,10,4, 10,11,3,3,13,36, 10,11,3,6,5,20, 10,10,13,5,10,5, + 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,3,4,10,6, 10,9,3,6,5,22, 10,8,13,5,10,7, 10,8,4,4,10,7, 10,8,4,6,5,23, 10,7,13,4,10,8, + 10,7,13,5,10,8, 10,7,5,4,10,8, 10,7,5,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, 10,6,6,6,5,25, 10,5,11,5,10,10, 10,5,5,3,11,42, + 10,5,5,6,5,26, 10,4,11,5,10,11, 10,4,5,6,5,27, 10,3,11,5,10,12, 10,3,5,6,5,28, 10,2,11,5,10,13, 10,2,5,6,5,29, 10,1,11,4,10,14, + 10,1,11,5,10,14, 10,1,6,4,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,10,5,10,15, 10,0,7,6,5,31, 11,14,12,1,4,33, 11,14,12,3,4,33, + 11,14,12,5,11,1, 11,14,11,1,5,33, 11,14,11,3,5,33, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, + 11,14,8,3,8,33, 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,5,6,4,17, + 11,13,13,3,3,34, 11,13,13,5,11,2, 11,13,4,3,12,34, 11,13,4,6,4,18, 11,12,13,5,11,3, 11,12,4,6,4,19, 11,11,13,5,11,4, 11,11,3,3,13,36, + 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,4,11,6, 11,9,3,6,4,22, 11,8,13,5,11,7, 11,8,4,4,11,7, + 11,8,4,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,5,4,11,8, 11,7,5,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,6,6,4,25, + 11,5,11,5,11,10, 11,5,5,3,11,42, 11,5,5,6,4,26, 11,4,11,5,11,11, 11,4,5,6,4,27, 11,3,11,5,11,12, 11,3,5,6,4,28, 11,2,11,5,11,13, + 11,2,5,6,4,29, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,6,4,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,10,1,6,47, 11,0,10,5,11,15, + 11,0,9,1,7,47, 11,0,8,1,8,47, 11,0,7,1,9,47, 11,0,7,6,4,31, 12,13,13,1,3,34, 12,13,13,3,3,34, 12,13,13,5,12,2, 12,13,12,1,4,34, + 12,13,12,3,4,34, 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, + 12,13,8,3,8,34, 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,4,1,12,34, + 12,13,4,3,12,34, 12,13,4,6,3,18, 12,12,13,1,3,35, 12,12,13,5,12,3, 12,12,12,1,4,35, 12,12,11,1,5,35, 12,12,10,1,6,35, 12,12,9,1,7,35, + 12,12,8,1,8,35, 12,12,7,1,9,35, 12,12,6,1,10,35, 12,12,5,1,11,35, 12,12,4,1,12,35, 12,12,4,6,3,19, 12,11,13,5,12,4, 12,11,3,3,13,36, + 12,11,3,6,3,20, 12,10,13,5,12,5, 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,3,4,12,6, 12,9,3,6,3,22, 12,8,13,5,12,7, 12,8,4,4,12,7, + 12,8,4,6,3,23, 12,7,13,4,12,8, 12,7,13,5,12,8, 12,7,5,4,12,8, 12,7,5,6,3,24, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,6,6,3,25, + 12,5,11,5,12,10, 12,5,5,3,11,42, 12,5,5,6,3,26, 12,4,11,5,12,11, 12,4,5,6,3,27, 12,3,11,5,12,12, 12,3,5,6,3,28, 12,2,11,1,5,45, + 12,2,11,5,12,13, 12,2,10,1,6,45, 12,2,9,1,7,45, 12,2,8,1,8,45, 12,2,7,1,9,45, 12,2,6,1,10,45, 12,2,5,1,11,45, 12,2,5,6,3,29, + 12,1,11,1,5,46, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,6,46, 12,1,10,4,12,14, 12,1,9,1,7,46, 12,1,9,4,12,14, 12,1,8,1,8,46, + 12,1,8,4,12,14, 12,1,7,1,9,46, 12,1,7,4,12,14, 12,1,6,1,10,46, 12,1,6,4,12,14, 12,1,5,1,11,46, 12,1,5,4,12,14, 12,1,5,6,3,30, + 13,11,13,1,3,36, 13,11,13,3,3,36, 13,11,13,5,13,4, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, 13,11,11,3,5,36, 13,11,10,1,6,36, + 13,11,10,3,6,36, 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, 13,11,7,3,9,36, 13,11,6,1,10,36, + 13,11,6,3,10,36, 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, 13,11,3,3,13,36, 13,11,3,6,2,20, + 13,10,13,5,13,5, 13,10,3,6,2,21, 13,9,13,5,13,6, 13,9,3,4,13,6, 13,9,3,6,2,22, 13,8,13,5,13,7, 13,8,4,4,13,7, 13,8,4,6,2,23, + 13,7,13,1,3,40, 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,12,1,4,40, 13,7,11,1,5,40, 13,7,10,1,6,40, 13,7,9,1,7,40, 13,7,8,1,8,40, + 13,7,7,1,9,40, 13,7,6,1,10,40, 13,7,5,1,11,40, 13,7,5,4,13,8, 13,7,5,6,2,24, 13,6,12,1,4,41, 13,6,12,4,13,9, 13,6,12,5,13,9, + 13,6,11,1,5,41, 13,6,10,1,6,41, 13,6,9,1,7,41, 13,6,8,1,8,41, 13,6,7,1,9,41, 13,6,6,1,10,41, 13,6,6,6,2,25, 13,5,11,5,13,10, + 13,5,5,3,11,42, 13,5,5,6,2,26, 13,4,11,5,13,11, 13,4,5,6,2,27, 13,3,11,1,5,44, 13,3,11,4,13,12, 13,3,11,5,13,12, 13,3,10,1,6,44, + 13,3,10,4,13,12, 13,3,9,1,7,44, 13,3,9,4,13,12, 13,3,8,1,8,44, 13,3,8,4,13,12, 13,3,7,1,9,44, 13,3,7,4,13,12, 13,3,6,1,10,44, + 13,3,6,4,13,12, 13,3,5,1,11,44, 13,3,5,4,13,12, 13,3,5,6,2,28, 14,10,13,1,3,37, 14,10,13,3,3,37, 14,10,13,5,14,5, 14,10,12,1,4,37, + 14,10,12,3,4,37, 14,10,11,1,5,37, 14,10,11,3,5,37, 14,10,10,1,6,37, 14,10,10,3,6,37, 14,10,9,1,7,37, 14,10,9,3,7,37, 14,10,8,1,8,37, + 14,10,8,3,8,37, 14,10,7,1,9,37, 14,10,7,3,9,37, 14,10,6,1,10,37, 14,10,6,3,10,37, 14,10,5,1,11,37, 14,10,5,3,11,37, 14,10,4,1,12,37, + 14,10,4,3,12,37, 14,10,3,1,13,37, 14,10,3,3,13,37, 14,10,3,6,1,21, 14,9,13,1,3,38, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,11,1,5,38, + 14,9,10,1,6,38, 14,9,9,1,7,38, 14,9,8,1,8,38, 14,9,7,1,9,38, 14,9,6,1,10,38, 14,9,5,1,11,38, 14,9,4,1,12,38, 14,9,3,1,13,38, + 14,9,3,4,14,6, 14,9,3,6,1,22, 14,8,13,1,3,39, 14,8,13,4,14,7, 14,8,13,5,14,7, 14,8,12,1,4,39, 14,8,12,4,14,7, 14,8,11,1,5,39, + 14,8,11,4,14,7, 14,8,10,1,6,39, 14,8,10,4,14,7, 14,8,9,1,7,39, 14,8,9,4,14,7, 14,8,8,1,8,39, 14,8,8,4,14,7, 14,8,7,1,9,39, + 14,8,7,4,14,7, 14,8,6,1,10,39, 14,8,6,4,14,7, 14,8,5,1,11,39, 14,8,5,4,14,7, 14,8,4,1,12,39, 14,8,4,4,14,7, 14,8,4,6,1,23, + 14,5,11,1,5,42, 14,5,11,3,5,42, 14,5,11,5,14,10, 14,5,10,1,6,42, 14,5,10,3,6,42, 14,5,9,1,7,42, 14,5,9,3,7,42, 14,5,8,1,8,42, + 14,5,8,3,8,42, 14,5,7,1,9,42, 14,5,7,3,9,42, 14,5,6,1,10,42, 14,5,6,3,10,42, 14,5,5,1,11,42, 14,5,5,3,11,42, 14,5,5,6,1,26, + 14,4,11,1,5,43, 14,4,11,4,14,11, 14,4,11,5,14,11, 14,4,10,1,6,43, 14,4,10,4,14,11, 14,4,9,1,7,43, 14,4,9,4,14,11, 14,4,8,1,8,43, + 14,4,8,4,14,11, 14,4,7,1,9,43, 14,4,7,4,14,11, 14,4,6,1,10,43, 14,4,6,4,14,11, 14,4,5,1,11,43, 14,4,5,4,14,11, 14,4,5,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1604, + count = 1026, + faces = { + 1,9,12,2,3,86, 1,9,12,3,3,86, 1,9,12,5,1,54, 1,9,11,2,4,86, 1,9,11,3,4,86, 1,9,10,2,5,86, 1,9,10,3,5,86, 1,9,9,2,6,86, + 1,9,9,3,6,86, 1,9,8,2,7,86, 1,9,8,3,7,86, 1,9,7,2,8,86, 1,9,7,3,8,86, 1,9,6,2,9,86, 1,9,6,3,9,86, 1,9,5,2,10,86, + 1,9,5,3,10,86, 1,9,4,2,11,86, 1,9,4,3,11,86, 1,9,3,2,12,86, 1,9,3,3,12,86, 1,9,2,2,13,86, 1,9,2,3,13,86, 1,9,2,6,14,70, + 1,8,12,2,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,10,2,5,87, 1,8,9,2,6,87, 1,8,8,2,7,87, 1,8,7,2,8,87, 1,8,6,2,9,87, + 1,8,5,2,10,87, 1,8,4,2,11,87, 1,8,3,2,12,87, 1,8,2,2,13,87, 1,8,2,4,1,55, 1,8,2,6,14,71, 1,7,12,2,3,88, 1,7,12,5,1,56, + 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, + 1,7,3,2,12,88, 1,7,3,4,1,56, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, 1,6,12,5,1,57, 1,6,11,2,4,89, 1,6,10,2,5,89, + 1,6,9,2,6,89, 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, 1,6,4,2,11,89, 1,6,4,6,1,57, 1,5,11,2,4,90, + 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, 1,5,8,2,7,90, 1,5,7,2,8,90, 1,5,6,2,9,90, 1,5,5,2,10,90, + 1,5,4,2,11,90, 1,5,3,2,12,90, 1,5,3,3,12,90, 1,5,3,6,1,58, 1,4,10,2,5,91, 1,4,10,5,14,75, 1,4,9,2,6,91, 1,4,8,2,7,91, + 1,4,7,2,8,91, 1,4,6,2,9,91, 1,4,5,2,10,91, 1,4,4,2,11,91, 1,4,3,2,12,91, 1,4,3,6,14,75, 1,3,12,2,3,92, 1,3,12,3,3,92, + 1,3,12,4,14,76, 1,3,12,5,14,76, 1,3,11,2,4,92, 1,3,11,3,4,92, 1,3,11,4,14,76, 1,3,10,2,5,92, 1,3,10,4,14,76, 1,3,9,2,6,92, + 1,3,9,4,14,76, 1,3,8,2,7,92, 1,3,8,4,14,76, 1,3,7,2,8,92, 1,3,7,4,14,76, 1,3,6,2,9,92, 1,3,6,4,14,76, 1,3,5,2,10,92, + 1,3,5,4,14,76, 1,3,4,2,11,92, 1,3,4,4,14,76, 1,3,3,2,12,92, 1,3,3,4,14,76, 1,3,3,6,14,76, 2,10,12,2,3,85, 2,10,12,3,3,85, + 2,10,12,5,2,53, 2,10,11,2,4,85, 2,10,11,3,4,85, 2,10,10,2,5,85, 2,10,10,3,5,85, 2,10,9,2,6,85, 2,10,9,3,6,85, 2,10,8,2,7,85, + 2,10,8,3,7,85, 2,10,7,2,8,85, 2,10,7,3,8,85, 2,10,6,2,9,85, 2,10,6,3,9,85, 2,10,5,2,10,85, 2,10,5,3,10,85, 2,10,4,2,11,85, + 2,10,4,3,11,85, 2,10,3,2,12,85, 2,10,3,3,12,85, 2,10,2,2,13,85, 2,10,2,3,13,85, 2,10,2,6,13,69, 2,9,12,5,2,54, 2,9,2,6,13,70, + 2,8,12,5,2,55, 2,8,2,4,2,55, 2,8,2,6,13,71, 2,7,12,5,2,56, 2,7,3,4,2,56, 2,7,3,6,13,72, 2,6,12,4,2,57, 2,6,12,5,2,57, + 2,6,4,6,13,73, 2,5,11,4,2,58, 2,5,11,5,2,58, 2,5,3,3,12,90, 2,5,3,6,13,74, 2,4,10,5,2,59, 2,4,3,6,13,75, 2,3,12,3,3,92, + 2,3,12,5,13,76, 2,3,11,3,4,92, 2,3,3,6,13,76, 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, 2,2,13,5,13,77, 2,2,12,2,3,93, + 2,2,12,4,13,77, 2,2,11,2,4,93, 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,4,13,77, 2,2,8,2,7,93, + 2,2,8,4,13,77, 2,2,7,2,8,93, 2,2,7,4,13,77, 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,4,13,77, 2,2,4,2,11,93, + 2,2,4,4,13,77, 2,2,3,2,12,93, 2,2,3,4,13,77, 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, 2,2,2,6,13,77, 3,12,12,2,3,83, + 3,12,12,3,3,83, 3,12,12,5,3,51, 3,12,11,2,4,83, 3,12,11,3,4,83, 3,12,10,2,5,83, 3,12,10,3,5,83, 3,12,9,2,6,83, 3,12,9,3,6,83, + 3,12,8,2,7,83, 3,12,8,3,7,83, 3,12,7,2,8,83, 3,12,7,3,8,83, 3,12,6,2,9,83, 3,12,6,3,9,83, 3,12,5,2,10,83, 3,12,5,3,10,83, + 3,12,4,2,11,83, 3,12,4,3,11,83, 3,12,3,2,12,83, 3,12,3,3,12,83, 3,12,3,6,12,67, 3,11,12,2,3,84, 3,11,12,5,3,52, 3,11,11,2,4,84, + 3,11,10,2,5,84, 3,11,9,2,6,84, 3,11,8,2,7,84, 3,11,7,2,8,84, 3,11,6,2,9,84, 3,11,5,2,10,84, 3,11,4,2,11,84, 3,11,3,2,12,84, + 3,11,3,6,12,68, 3,10,12,5,3,53, 3,10,2,3,13,85, 3,10,2,6,12,69, 3,9,12,5,3,54, 3,9,2,6,12,70, 3,8,12,5,3,55, 3,8,2,4,3,55, + 3,8,2,6,12,71, 3,7,12,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, 3,6,12,5,3,57, 3,6,4,6,12,73, 3,5,11,4,3,58, + 3,5,11,5,3,58, 3,5,3,3,12,90, 3,5,3,6,12,74, 3,4,10,5,3,59, 3,4,3,6,12,75, 3,3,12,3,3,92, 3,3,12,5,3,60, 3,3,11,3,4,92, + 3,3,3,6,12,76, 3,2,13,3,2,93, 3,2,13,4,12,77, 3,2,13,5,12,77, 3,2,12,4,12,77, 3,2,11,4,12,77, 3,2,10,4,12,77, 3,2,9,4,12,77, + 3,2,8,4,12,77, 3,2,7,4,12,77, 3,2,6,4,12,77, 3,2,5,4,12,77, 3,2,4,4,12,77, 3,2,3,4,12,77, 3,2,2,3,13,93, 3,2,2,4,12,77, + 3,2,2,6,12,77, 4,13,11,2,4,82, 4,13,11,3,4,82, 4,13,11,5,4,50, 4,13,10,2,5,82, 4,13,10,3,5,82, 4,13,9,2,6,82, 4,13,9,3,6,82, + 4,13,8,2,7,82, 4,13,8,3,7,82, 4,13,7,2,8,82, 4,13,7,3,8,82, 4,13,6,2,9,82, 4,13,6,3,9,82, 4,13,5,2,10,82, 4,13,5,3,10,82, + 4,13,4,2,11,82, 4,13,4,3,11,82, 4,13,4,6,11,66, 4,12,12,3,3,83, 4,12,12,5,4,51, 4,12,3,3,12,83, 4,12,3,6,11,67, 4,11,12,5,4,52, + 4,11,3,6,11,68, 4,10,12,5,4,53, 4,10,2,3,13,85, 4,10,2,6,11,69, 4,9,12,5,4,54, 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,2,4,4,55, + 4,8,2,6,11,71, 4,7,12,5,4,56, 4,7,3,4,4,56, 4,7,3,6,11,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,6,11,73, 4,5,11,4,4,58, + 4,5,11,5,4,58, 4,5,3,3,12,90, 4,5,3,6,11,74, 4,4,10,5,4,59, 4,4,3,6,11,75, 4,3,12,3,3,92, 4,3,12,5,4,60, 4,3,11,3,4,92, + 4,3,3,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,2,3,13,93, 4,2,2,6,11,77, 4,1,12,2,3,94, 4,1,12,4,4,62, + 4,1,12,5,4,62, 4,1,11,2,4,94, 4,1,11,4,4,62, 4,1,10,2,5,94, 4,1,10,4,4,62, 4,1,9,2,6,94, 4,1,9,4,4,62, 4,1,8,2,7,94, + 4,1,8,4,4,62, 4,1,7,2,8,94, 4,1,7,4,4,62, 4,1,6,2,9,94, 4,1,6,4,4,62, 4,1,5,2,10,94, 4,1,5,4,4,62, 4,1,4,2,11,94, + 4,1,4,4,4,62, 4,1,3,2,12,94, 4,1,3,4,4,62, 4,1,2,2,13,94, 4,1,2,4,4,62, 4,1,2,6,4,62, 5,13,11,3,4,82, 5,13,11,5,5,50, + 5,13,10,3,5,82, 5,13,9,3,6,82, 5,13,8,3,7,82, 5,13,7,3,8,82, 5,13,6,3,9,82, 5,13,5,3,10,82, 5,13,4,3,11,82, 5,13,4,6,10,66, + 5,12,12,3,3,83, 5,12,12,5,5,51, 5,12,3,3,12,83, 5,12,3,6,10,67, 5,11,12,5,5,52, 5,11,3,6,10,68, 5,10,12,5,5,53, 5,10,2,3,13,85, + 5,10,2,6,10,69, 5,9,12,5,5,54, 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,2,4,5,55, 5,8,2,6,10,71, 5,7,12,5,5,56, 5,7,3,4,5,56, + 5,7,3,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,4,6,10,73, 5,5,11,4,5,58, 5,5,11,5,5,58, 5,5,3,3,12,90, 5,5,3,6,10,74, + 5,4,10,5,5,59, 5,4,3,6,10,75, 5,3,12,3,3,92, 5,3,12,5,5,60, 5,3,11,3,4,92, 5,3,3,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, + 5,2,13,5,5,61, 5,2,2,3,13,93, 5,2,2,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, + 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,2,6,5,62, 5,0,11,2,4,95, 5,0,11,5,5,63, 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,9,6,5,63, + 5,0,4,2,11,95, 5,0,4,5,5,63, 5,0,3,2,12,95, 5,0,3,6,5,63, 6,14,10,2,5,81, 6,14,10,3,5,81, 6,14,10,5,6,49, 6,14,9,2,6,81, + 6,14,9,3,6,81, 6,14,8,2,7,81, 6,14,8,3,7,81, 6,14,7,2,8,81, 6,14,7,3,8,81, 6,14,6,2,9,81, 6,14,6,3,9,81, 6,14,5,2,10,81, + 6,14,5,3,10,81, 6,14,5,6,9,65, 6,13,11,3,4,82, 6,13,11,5,6,50, 6,13,4,3,11,82, 6,13,4,6,9,66, 6,12,12,3,3,83, 6,12,12,5,6,51, + 6,12,3,3,12,83, 6,12,3,6,9,67, 6,11,12,5,6,52, 6,11,3,6,9,68, 6,10,12,5,6,53, 6,10,2,3,13,85, 6,10,2,6,9,69, 6,9,12,5,6,54, + 6,9,2,6,9,70, 6,8,12,5,6,55, 6,8,2,4,6,55, 6,8,2,6,9,71, 6,7,12,5,6,56, 6,7,3,4,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, + 6,6,12,5,6,57, 6,6,4,6,9,73, 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,3,3,12,90, 6,5,3,6,9,74, 6,4,10,5,6,59, 6,4,3,6,9,75, + 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,11,3,4,92, 6,3,3,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, + 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, + 6,1,2,6,9,78, 6,0,11,5,6,63, 6,0,9,6,6,63, 6,0,4,5,6,63, 6,0,3,6,6,63, 7,14,10,3,5,81, 7,14,10,5,7,49, 7,14,9,3,6,81, + 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,5,3,10,81, 7,14,5,6,8,65, 7,13,11,3,4,82, 7,13,11,5,7,50, 7,13,4,3,11,82, + 7,13,4,6,8,66, 7,12,12,3,3,83, 7,12,12,5,7,51, 7,12,3,3,12,83, 7,12,3,6,8,67, 7,11,12,5,7,52, 7,11,3,6,8,68, 7,10,12,5,7,53, + 7,10,2,3,13,85, 7,10,2,6,8,69, 7,9,12,5,7,54, 7,9,2,6,8,70, 7,8,12,5,7,55, 7,8,2,4,7,55, 7,8,2,6,8,71, 7,7,12,5,7,56, + 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, 7,5,3,3,12,90, + 7,5,3,6,8,74, 7,4,10,5,7,59, 7,4,3,6,8,75, 7,3,12,3,3,92, 7,3,12,5,7,60, 7,3,11,3,4,92, 7,3,3,6,8,76, 7,2,13,3,2,93, + 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, 7,2,2,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, + 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,2,4,7,62, 7,1,2,6,8,78, 7,0,11,5,7,63, 7,0,9,6,7,63, 7,0,4,5,7,63, 7,0,3,6,7,63, + 8,14,10,3,5,81, 8,14,10,5,8,49, 8,14,9,3,6,81, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, 8,14,5,6,7,65, + 8,13,11,3,4,82, 8,13,11,5,8,50, 8,13,4,3,11,82, 8,13,4,6,7,66, 8,12,12,3,3,83, 8,12,12,5,8,51, 8,12,3,3,12,83, 8,12,3,6,7,67, + 8,11,12,5,8,52, 8,11,3,6,7,68, 8,10,12,5,8,53, 8,10,2,3,13,85, 8,10,2,6,7,69, 8,9,12,5,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, + 8,8,2,4,8,55, 8,8,2,6,7,71, 8,7,12,5,8,56, 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,6,7,73, + 8,5,11,4,8,58, 8,5,11,5,8,58, 8,5,3,3,12,90, 8,5,3,6,7,74, 8,4,10,5,8,59, 8,4,3,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, + 8,3,11,3,4,92, 8,3,3,6,7,76, 8,2,13,3,2,93, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,7,77, 8,1,12,4,8,62, + 8,1,12,5,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, 8,0,11,5,7,79, + 8,0,9,6,7,79, 8,0,4,5,7,79, 8,0,3,6,7,79, 9,14,10,1,5,81, 9,14,10,3,5,81, 9,14,10,5,9,49, 9,14,9,1,6,81, 9,14,9,3,6,81, + 9,14,8,1,7,81, 9,14,8,3,7,81, 9,14,7,1,8,81, 9,14,7,3,8,81, 9,14,6,1,9,81, 9,14,6,3,9,81, 9,14,5,1,10,81, 9,14,5,3,10,81, + 9,14,5,6,6,65, 9,13,11,3,4,82, 9,13,11,5,9,50, 9,13,4,3,11,82, 9,13,4,6,6,66, 9,12,12,3,3,83, 9,12,12,5,9,51, 9,12,3,3,12,83, + 9,12,3,6,6,67, 9,11,12,5,9,52, 9,11,3,6,6,68, 9,10,12,5,9,53, 9,10,2,3,13,85, 9,10,2,6,6,69, 9,9,12,5,9,54, 9,9,2,6,6,70, + 9,8,12,5,9,55, 9,8,2,4,9,55, 9,8,2,6,6,71, 9,7,12,5,9,56, 9,7,3,4,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, + 9,6,4,6,6,73, 9,5,11,4,9,58, 9,5,11,5,9,58, 9,5,3,3,12,90, 9,5,3,6,6,74, 9,4,10,5,9,59, 9,4,3,6,6,75, 9,3,12,3,3,92, + 9,3,12,5,9,60, 9,3,11,3,4,92, 9,3,3,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,2,3,13,93, 9,2,2,6,6,77, + 9,1,12,4,6,78, 9,1,12,5,6,78, 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,5,4,6,78, 9,1,2,4,6,78, 9,1,2,6,6,78, + 9,0,11,5,6,79, 9,0,9,6,6,79, 9,0,4,5,6,79, 9,0,3,6,6,79, 10,13,11,3,4,82, 10,13,11,5,10,50, 10,13,10,3,5,82, 10,13,9,3,6,82, + 10,13,8,3,7,82, 10,13,7,3,8,82, 10,13,6,3,9,82, 10,13,5,3,10,82, 10,13,4,3,11,82, 10,13,4,6,5,66, 10,12,12,3,3,83, 10,12,12,5,10,51, + 10,12,3,3,12,83, 10,12,3,6,5,67, 10,11,12,5,10,52, 10,11,3,6,5,68, 10,10,12,5,10,53, 10,10,2,3,13,85, 10,10,2,6,5,69, 10,9,12,5,10,54, + 10,9,2,6,5,70, 10,8,12,5,10,55, 10,8,2,4,10,55, 10,8,2,6,5,71, 10,7,12,5,10,56, 10,7,3,4,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, + 10,6,12,5,10,57, 10,6,4,6,5,73, 10,5,11,4,10,58, 10,5,11,5,10,58, 10,5,3,3,12,90, 10,5,3,6,5,74, 10,4,10,5,10,59, 10,4,3,6,5,75, + 10,3,12,3,3,92, 10,3,12,5,10,60, 10,3,11,3,4,92, 10,3,3,6,5,76, 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,3,13,93, + 10,2,2,6,5,77, 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,2,4,10,62, + 10,1,2,6,5,78, 10,0,11,1,4,95, 10,0,11,5,5,79, 10,0,10,1,5,95, 10,0,9,1,6,95, 10,0,9,6,5,79, 10,0,4,1,11,95, 10,0,4,5,5,79, + 10,0,3,1,12,95, 10,0,3,6,5,79, 11,13,11,1,4,82, 11,13,11,3,4,82, 11,13,11,5,11,50, 11,13,10,1,5,82, 11,13,10,3,5,82, 11,13,9,1,6,82, + 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, 11,13,7,1,8,82, 11,13,7,3,8,82, 11,13,6,1,9,82, 11,13,6,3,9,82, 11,13,5,1,10,82, + 11,13,5,3,10,82, 11,13,4,1,11,82, 11,13,4,3,11,82, 11,13,4,6,4,66, 11,12,12,3,3,83, 11,12,12,5,11,51, 11,12,3,3,12,83, 11,12,3,6,4,67, + 11,11,12,5,11,52, 11,11,3,6,4,68, 11,10,12,5,11,53, 11,10,2,3,13,85, 11,10,2,6,4,69, 11,9,12,5,11,54, 11,9,2,6,4,70, 11,8,12,5,11,55, + 11,8,2,4,11,55, 11,8,2,6,4,71, 11,7,12,5,11,56, 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,6,4,73, + 11,5,11,4,11,58, 11,5,11,5,11,58, 11,5,3,3,12,90, 11,5,3,6,4,74, 11,4,10,5,11,59, 11,4,3,6,4,75, 11,3,12,3,3,92, 11,3,12,5,11,60, + 11,3,11,3,4,92, 11,3,3,6,4,76, 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,3,13,93, 11,2,2,6,4,77, 11,1,12,1,3,94, + 11,1,12,4,11,62, 11,1,12,5,11,62, 11,1,11,1,4,94, 11,1,11,4,11,62, 11,1,10,1,5,94, 11,1,10,4,11,62, 11,1,9,1,6,94, 11,1,9,4,11,62, + 11,1,8,1,7,94, 11,1,8,4,11,62, 11,1,7,1,8,94, 11,1,7,4,11,62, 11,1,6,1,9,94, 11,1,6,4,11,62, 11,1,5,1,10,94, 11,1,5,4,11,62, + 11,1,4,1,11,94, 11,1,4,4,11,62, 11,1,3,1,12,94, 11,1,3,4,11,62, 11,1,2,1,13,94, 11,1,2,4,11,62, 11,1,2,6,4,78, 12,12,12,1,3,83, + 12,12,12,3,3,83, 12,12,12,5,12,51, 12,12,11,1,4,83, 12,12,11,3,4,83, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, + 12,12,8,1,7,83, 12,12,8,3,7,83, 12,12,7,1,8,83, 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, + 12,12,4,1,11,83, 12,12,4,3,11,83, 12,12,3,1,12,83, 12,12,3,3,12,83, 12,12,3,6,3,67, 12,11,12,1,3,84, 12,11,12,5,12,52, 12,11,11,1,4,84, + 12,11,10,1,5,84, 12,11,9,1,6,84, 12,11,8,1,7,84, 12,11,7,1,8,84, 12,11,6,1,9,84, 12,11,5,1,10,84, 12,11,4,1,11,84, 12,11,3,1,12,84, + 12,11,3,6,3,68, 12,10,12,5,12,53, 12,10,2,3,13,85, 12,10,2,6,3,69, 12,9,12,5,12,54, 12,9,2,6,3,70, 12,8,12,5,12,55, 12,8,2,4,12,55, + 12,8,2,6,3,71, 12,7,12,5,12,56, 12,7,3,4,12,56, 12,7,3,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,4,6,3,73, 12,5,11,4,12,58, + 12,5,11,5,12,58, 12,5,3,3,12,90, 12,5,3,6,3,74, 12,4,10,5,12,59, 12,4,3,6,3,75, 12,3,12,3,3,92, 12,3,12,5,12,60, 12,3,11,3,4,92, + 12,3,3,6,3,76, 12,2,13,1,2,93, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,1,3,93, 12,2,12,4,12,61, 12,2,11,1,4,93, + 12,2,11,4,12,61, 12,2,10,1,5,93, 12,2,10,4,12,61, 12,2,9,1,6,93, 12,2,9,4,12,61, 12,2,8,1,7,93, 12,2,8,4,12,61, 12,2,7,1,8,93, + 12,2,7,4,12,61, 12,2,6,1,9,93, 12,2,6,4,12,61, 12,2,5,1,10,93, 12,2,5,4,12,61, 12,2,4,1,11,93, 12,2,4,4,12,61, 12,2,3,1,12,93, + 12,2,3,4,12,61, 12,2,2,1,13,93, 12,2,2,3,13,93, 12,2,2,4,12,61, 12,2,2,6,12,61, 13,10,12,1,3,85, 13,10,12,3,3,85, 13,10,12,5,13,53, + 13,10,11,1,4,85, 13,10,11,3,4,85, 13,10,10,1,5,85, 13,10,10,3,5,85, 13,10,9,1,6,85, 13,10,9,3,6,85, 13,10,8,1,7,85, 13,10,8,3,7,85, + 13,10,7,1,8,85, 13,10,7,3,8,85, 13,10,6,1,9,85, 13,10,6,3,9,85, 13,10,5,1,10,85, 13,10,5,3,10,85, 13,10,4,1,11,85, 13,10,4,3,11,85, + 13,10,3,1,12,85, 13,10,3,3,12,85, 13,10,2,1,13,85, 13,10,2,3,13,85, 13,10,2,6,2,69, 13,9,12,5,13,54, 13,9,2,6,2,70, 13,8,12,5,13,55, + 13,8,2,4,13,55, 13,8,2,6,2,71, 13,7,12,5,13,56, 13,7,3,4,13,56, 13,7,3,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,4,6,2,73, + 13,5,11,4,13,58, 13,5,11,5,13,58, 13,5,3,3,12,90, 13,5,3,6,2,74, 13,4,10,1,5,91, 13,4,10,5,13,59, 13,4,9,1,6,91, 13,4,8,1,7,91, + 13,4,7,1,8,91, 13,4,6,1,9,91, 13,4,5,1,10,91, 13,4,4,1,11,91, 13,4,3,1,12,91, 13,4,3,6,2,75, 13,3,12,1,3,92, 13,3,12,3,3,92, + 13,3,12,4,13,60, 13,3,12,5,13,60, 13,3,11,1,4,92, 13,3,11,3,4,92, 13,3,11,4,13,60, 13,3,10,1,5,92, 13,3,10,4,13,60, 13,3,9,1,6,92, + 13,3,9,4,13,60, 13,3,8,1,7,92, 13,3,8,4,13,60, 13,3,7,1,8,92, 13,3,7,4,13,60, 13,3,6,1,9,92, 13,3,6,4,13,60, 13,3,5,1,10,92, + 13,3,5,4,13,60, 13,3,4,1,11,92, 13,3,4,4,13,60, 13,3,3,1,12,92, 13,3,3,4,13,60, 13,3,3,6,13,60, 14,9,12,1,3,86, 14,9,12,3,3,86, + 14,9,12,5,14,54, 14,9,11,1,4,86, 14,9,11,3,4,86, 14,9,10,1,5,86, 14,9,10,3,5,86, 14,9,9,1,6,86, 14,9,9,3,6,86, 14,9,8,1,7,86, + 14,9,8,3,7,86, 14,9,7,1,8,86, 14,9,7,3,8,86, 14,9,6,1,9,86, 14,9,6,3,9,86, 14,9,5,1,10,86, 14,9,5,3,10,86, 14,9,4,1,11,86, + 14,9,4,3,11,86, 14,9,3,1,12,86, 14,9,3,3,12,86, 14,9,2,1,13,86, 14,9,2,3,13,86, 14,9,2,6,1,70, 14,8,12,1,3,87, 14,8,12,5,14,55, + 14,8,11,1,4,87, 14,8,10,1,5,87, 14,8,9,1,6,87, 14,8,8,1,7,87, 14,8,7,1,8,87, 14,8,6,1,9,87, 14,8,5,1,10,87, 14,8,4,1,11,87, + 14,8,3,1,12,87, 14,8,2,1,13,87, 14,8,2,4,14,55, 14,8,2,6,1,71, 14,7,12,1,3,88, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, + 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, 14,7,6,1,9,88, 14,7,5,1,10,88, 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,3,4,14,56, + 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, 14,6,12,5,1,73, 14,6,11,1,4,89, 14,6,10,1,5,89, 14,6,9,1,6,89, 14,6,8,1,7,89, + 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, 14,6,4,1,11,89, 14,6,4,6,1,73, 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, + 14,5,10,1,5,90, 14,5,10,4,1,74, 14,5,9,1,6,90, 14,5,9,4,1,74, 14,5,8,1,7,90, 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, + 14,5,6,1,9,90, 14,5,6,4,1,74, 14,5,5,1,10,90, 14,5,5,4,1,74, 14,5,4,1,11,90, 14,5,4,4,1,74, 14,5,3,1,12,90, 14,5,3,3,12,90, + 14,5,3,4,1,74, 14,5,3,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/seel.lua b/assets/voxels/seel.lua new file mode 100644 index 0000000..0af9e90 --- /dev/null +++ b/assets/voxels/seel.lua @@ -0,0 +1,332 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "seel" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "seel", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1696, + count = 1286, + faces = { + 0,6,14,2,1,38, 0,6,14,3,1,38, 0,6,14,5,15,24, 0,6,13,2,2,38, 0,6,13,3,2,38, 0,6,12,2,3,38, 0,6,12,3,3,38, 0,6,11,2,4,38, + 0,6,11,3,4,38, 0,6,10,2,5,38, 0,6,10,3,5,38, 0,6,9,2,6,38, 0,6,9,3,6,38, 0,6,8,2,7,38, 0,6,8,3,7,38, 0,6,7,2,8,38, + 0,6,7,3,8,38, 0,6,6,2,9,38, 0,6,6,3,9,38, 0,6,5,2,10,38, 0,6,5,3,10,38, 0,6,4,2,11,38, 0,6,4,3,11,38, 0,6,4,6,15,24, + 0,6,2,2,13,38, 0,6,2,3,13,38, 0,6,2,5,15,24, 0,6,1,2,14,38, 0,6,1,3,14,38, 0,6,0,2,15,38, 0,6,0,3,15,38, 0,6,0,6,15,24, + 0,5,15,2,0,39, 0,5,15,3,0,39, 0,5,15,5,15,25, 0,5,14,2,1,39, 0,5,13,2,2,39, 0,5,12,2,3,39, 0,5,11,2,4,39, 0,5,10,2,5,39, + 0,5,9,2,6,39, 0,5,8,2,7,39, 0,5,7,2,8,39, 0,5,6,2,9,39, 0,5,5,2,10,39, 0,5,4,2,11,39, 0,5,3,2,12,39, 0,5,3,3,12,39, + 0,5,2,2,13,39, 0,5,1,2,14,39, 0,5,0,2,15,39, 0,5,0,6,15,25, 0,4,15,2,0,40, 0,4,15,4,0,9, 0,4,15,5,0,9, 0,4,14,2,1,40, + 0,4,13,2,2,40, 0,4,12,2,3,40, 0,4,11,2,4,40, 0,4,10,2,5,40, 0,4,9,2,6,40, 0,4,8,2,7,40, 0,4,7,2,8,40, 0,4,6,2,9,40, + 0,4,5,2,10,40, 0,4,4,2,11,40, 0,4,3,2,12,40, 0,4,2,2,13,40, 0,4,1,2,14,40, 0,4,0,2,15,40, 0,4,0,6,0,9, 0,3,14,2,1,41, + 0,3,14,4,0,10, 0,3,14,5,0,10, 0,3,13,2,2,41, 0,3,13,4,0,10, 0,3,12,2,3,41, 0,3,12,4,0,10, 0,3,11,2,4,41, 0,3,11,4,0,10, + 0,3,10,2,5,41, 0,3,10,4,0,10, 0,3,9,2,6,41, 0,3,9,4,0,10, 0,3,8,2,7,41, 0,3,8,4,0,10, 0,3,7,2,8,41, 0,3,7,4,0,10, + 0,3,6,2,9,41, 0,3,6,4,0,10, 0,3,5,2,10,41, 0,3,5,4,0,10, 0,3,4,2,11,41, 0,3,4,4,0,10, 0,3,3,2,12,41, 0,3,3,4,0,10, + 0,3,2,2,13,41, 0,3,2,4,0,10, 0,3,1,2,14,41, 0,3,1,4,0,10, 0,3,0,2,15,41, 0,3,0,4,0,10, 0,3,0,6,0,10, 1,9,12,2,3,35, + 1,9,12,3,3,35, 1,9,12,5,14,21, 1,9,11,2,4,35, 1,9,11,3,4,35, 1,9,10,2,5,35, 1,9,10,3,5,35, 1,9,9,2,6,35, 1,9,9,3,6,35, + 1,9,8,2,7,35, 1,9,8,3,7,35, 1,9,7,2,8,35, 1,9,7,3,8,35, 1,9,7,6,14,21, 1,8,13,1,2,36, 1,8,13,2,2,36, 1,8,13,3,2,36, + 1,8,13,5,1,5, 1,8,12,1,3,36, 1,8,12,2,3,36, 1,8,11,1,4,36, 1,8,11,2,4,36, 1,8,10,1,5,36, 1,8,10,2,5,36, 1,8,9,1,6,36, + 1,8,9,2,6,36, 1,8,8,1,7,36, 1,8,8,2,7,36, 1,8,7,1,8,36, 1,8,7,2,8,36, 1,8,6,1,9,36, 1,8,6,2,9,36, 1,8,6,3,9,36, + 1,8,6,6,14,22, 1,7,14,2,1,37, 1,7,14,3,1,37, 1,7,14,5,1,6, 1,7,13,2,2,37, 1,7,12,2,3,37, 1,7,11,2,4,37, 1,7,10,2,5,37, + 1,7,9,2,6,37, 1,7,8,2,7,37, 1,7,7,2,8,37, 1,7,6,2,9,37, 1,7,5,2,10,37, 1,7,5,3,10,37, 1,7,5,6,14,23, 1,7,1,2,14,37, + 1,7,1,3,14,37, 1,7,1,5,1,6, 1,7,0,2,15,37, 1,7,0,3,15,37, 1,7,0,6,14,23, 1,6,14,5,1,7, 1,6,4,3,11,38, 1,6,4,6,14,24, + 1,6,2,3,13,38, 1,6,2,5,1,7, 1,6,0,6,14,24, 1,5,15,3,0,39, 1,5,15,5,1,8, 1,5,3,3,12,39, 1,5,0,6,14,25, 1,4,15,4,1,9, + 1,4,15,5,1,9, 1,4,0,6,1,9, 1,3,14,4,1,10, 1,3,14,5,1,10, 1,3,3,4,1,10, 1,3,2,4,1,10, 1,3,0,6,1,10, 1,2,13,2,2,42, + 1,2,13,4,14,28, 1,2,13,5,14,28, 1,2,12,2,3,42, 1,2,12,4,14,28, 1,2,11,2,4,42, 1,2,11,4,14,28, 1,2,10,2,5,42, 1,2,10,4,14,28, + 1,2,9,2,6,42, 1,2,9,4,14,28, 1,2,8,2,7,42, 1,2,8,4,14,28, 1,2,7,2,8,42, 1,2,7,4,14,28, 1,2,6,2,9,42, 1,2,6,4,14,28, + 1,2,5,2,10,42, 1,2,5,4,14,28, 1,2,4,2,11,42, 1,2,4,4,14,28, 1,2,4,6,14,28, 1,2,1,2,14,42, 1,2,1,4,14,28, 1,2,1,5,14,28, + 1,2,0,2,15,42, 1,2,0,4,14,28, 1,2,0,6,14,28, 2,10,11,2,4,34, 2,10,11,3,4,34, 2,10,11,5,2,3, 2,10,10,2,5,34, 2,10,10,3,5,34, + 2,10,9,2,6,34, 2,10,9,3,6,34, 2,10,8,2,7,34, 2,10,8,3,7,34, 2,10,8,6,13,20, 2,9,12,3,3,35, 2,9,12,4,2,4, 2,9,12,5,2,4, + 2,9,11,4,2,4, 2,9,10,4,2,4, 2,9,9,4,2,4, 2,9,8,4,2,4, 2,9,7,3,8,35, 2,9,7,4,2,4, 2,9,7,6,2,4, 2,7,14,3,1,37, + 2,7,14,5,13,23, 2,7,13,3,2,37, 2,7,12,3,3,37, 2,7,11,3,4,37, 2,7,10,3,5,37, 2,7,9,3,6,37, 2,7,8,3,7,37, 2,7,7,3,8,37, + 2,7,6,3,9,37, 2,7,5,3,10,37, 2,7,5,6,13,23, 2,7,1,3,14,37, 2,7,1,5,13,23, 2,7,0,3,15,37, 2,7,0,6,13,23, 2,6,14,5,13,24, + 2,6,4,3,11,38, 2,6,4,6,13,24, 2,6,2,3,13,38, 2,6,2,5,13,24, 2,6,0,6,13,24, 2,5,15,3,0,39, 2,5,15,5,2,8, 2,5,3,3,12,39, + 2,5,0,6,13,25, 2,4,15,4,2,9, 2,4,15,5,2,9, 2,4,0,6,13,26, 2,3,14,4,2,10, 2,3,14,5,2,10, 2,3,3,4,2,10, 2,3,2,4,2,10, + 2,3,0,6,2,10, 2,2,13,4,2,11, 2,2,13,5,2,11, 2,2,12,4,2,11, 2,2,11,4,2,11, 2,2,8,4,2,11, 2,2,7,4,2,11, 2,2,4,6,2,11, + 2,2,1,5,2,11, 2,2,0,4,2,11, 2,2,0,6,2,11, 2,1,10,2,5,43, 2,1,10,4,13,29, 2,1,10,5,13,29, 2,1,9,2,6,43, 2,1,9,4,13,29, + 2,1,9,6,13,29, 2,1,6,2,9,43, 2,1,6,4,13,29, 2,1,6,5,13,29, 2,1,5,2,10,43, 2,1,5,4,13,29, 2,1,4,2,11,43, 2,1,4,4,13,29, + 2,1,3,2,12,43, 2,1,3,3,12,43, 2,1,3,4,13,29, 2,1,2,2,13,43, 2,1,2,3,13,43, 2,1,2,4,13,29, 2,1,1,2,14,43, 2,1,1,4,13,29, + 2,1,1,6,13,29, 3,10,11,3,4,34, 3,10,11,5,12,20, 3,10,10,3,5,34, 3,10,9,3,6,34, 3,10,8,3,7,34, 3,10,8,6,12,20, 3,9,12,3,3,35, + 3,9,12,5,12,21, 3,9,7,3,8,35, 3,9,7,6,12,21, 3,8,13,2,2,36, 3,8,13,3,2,36, 3,8,13,5,3,5, 3,8,12,2,3,36, 3,8,11,2,4,36, + 3,8,10,2,5,36, 3,8,9,2,6,36, 3,8,8,2,7,36, 3,8,7,2,8,36, 3,8,6,2,9,36, 3,8,6,3,9,36, 3,8,6,6,12,22, 3,7,14,3,1,37, + 3,7,14,5,3,6, 3,7,5,3,10,37, 3,7,5,6,12,23, 3,7,1,3,14,37, 3,7,1,5,3,6, 3,7,0,3,15,37, 3,7,0,6,12,23, 3,6,14,5,3,7, + 3,6,4,3,11,38, 3,6,4,6,12,24, 3,6,2,3,13,38, 3,6,2,5,3,7, 3,6,0,6,12,24, 3,5,15,3,0,39, 3,5,15,5,3,8, 3,5,3,3,12,39, + 3,5,0,6,12,25, 3,4,15,4,3,9, 3,4,15,5,3,9, 3,4,0,6,12,26, 3,3,14,4,3,10, 3,3,14,5,3,10, 3,3,3,4,3,10, 3,3,2,4,3,10, + 3,3,0,6,12,27, 3,2,13,4,3,11, 3,2,13,5,3,11, 3,2,12,4,3,11, 3,2,11,4,3,11, 3,2,8,4,3,11, 3,2,7,4,3,11, 3,2,4,6,3,11, + 3,2,1,5,3,11, 3,2,0,4,3,11, 3,2,0,6,3,11, 3,1,10,5,3,12, 3,1,9,6,3,12, 3,1,6,4,3,12, 3,1,6,5,3,12, 3,1,5,4,3,12, + 3,1,4,4,3,12, 3,1,3,3,12,43, 3,1,3,4,3,12, 3,1,2,3,13,43, 3,1,2,4,3,12, 3,1,1,4,3,12, 3,1,1,6,3,12, 3,0,12,2,3,44, + 3,0,12,3,3,44, 3,0,12,5,12,30, 3,0,11,2,4,44, 3,0,11,3,4,44, 3,0,10,2,5,44, 3,0,9,2,6,44, 3,0,8,2,7,44, 3,0,8,3,7,44, + 3,0,7,2,8,44, 3,0,7,3,8,44, 3,0,7,6,12,30, 4,10,11,3,4,34, 4,10,11,5,11,20, 4,10,10,3,5,34, 4,10,9,3,6,34, 4,10,8,3,7,34, + 4,10,8,6,11,20, 4,9,12,3,3,35, 4,9,12,5,4,4, 4,9,7,3,8,35, 4,9,7,6,11,21, 4,8,13,3,2,36, 4,8,13,5,4,5, 4,8,6,3,9,36, + 4,8,6,6,11,22, 4,7,14,3,1,37, 4,7,14,5,4,6, 4,7,5,3,10,37, 4,7,5,6,11,23, 4,7,1,3,14,37, 4,7,1,5,4,6, 4,7,0,3,15,37, + 4,7,0,6,11,23, 4,6,14,5,4,7, 4,6,4,3,11,38, 4,6,4,6,11,24, 4,6,2,3,13,38, 4,6,2,5,4,7, 4,6,0,6,11,24, 4,5,15,3,0,39, + 4,5,15,5,4,8, 4,5,3,3,12,39, 4,5,0,6,11,25, 4,4,15,4,4,9, 4,4,15,5,4,9, 4,4,0,6,4,9, 4,3,14,4,4,10, 4,3,14,5,4,10, + 4,3,3,4,4,10, 4,3,2,4,4,10, 4,3,0,6,11,27, 4,2,13,4,4,11, 4,2,13,5,4,11, 4,2,12,4,4,11, 4,2,11,4,4,11, 4,2,8,4,4,11, + 4,2,7,4,4,11, 4,2,4,6,4,11, 4,2,1,5,4,11, 4,2,0,4,4,11, 4,2,0,6,4,11, 4,1,10,5,4,12, 4,1,9,6,4,12, 4,1,6,4,4,12, + 4,1,6,5,4,12, 4,1,5,4,4,12, 4,1,4,4,4,12, 4,1,3,3,12,43, 4,1,3,4,4,12, 4,1,2,3,13,43, 4,1,2,4,4,12, 4,1,1,4,4,12, + 4,1,1,6,4,12, 4,0,12,3,3,44, 4,0,12,5,11,30, 4,0,11,3,4,44, 4,0,8,3,7,44, 4,0,7,3,8,44, 4,0,7,6,11,30, 5,10,11,3,4,34, + 5,10,11,5,5,3, 5,10,10,3,5,34, 5,10,9,3,6,34, 5,10,8,3,7,34, 5,10,8,6,10,20, 5,9,12,3,3,35, 5,9,12,5,5,4, 5,9,7,3,8,35, + 5,9,7,6,10,21, 5,8,13,3,2,36, 5,8,13,5,5,5, 5,8,6,3,9,36, 5,8,6,6,10,22, 5,7,14,3,1,37, 5,7,14,5,5,6, 5,7,5,3,10,37, + 5,7,5,6,10,23, 5,7,1,3,14,37, 5,7,1,5,5,6, 5,7,0,3,15,37, 5,7,0,6,10,23, 5,6,14,5,5,7, 5,6,4,3,11,38, 5,6,4,6,10,24, + 5,6,2,3,13,38, 5,6,2,5,5,7, 5,6,0,6,10,24, 5,5,15,3,0,39, 5,5,15,5,5,8, 5,5,3,3,12,39, 5,5,0,6,10,25, 5,4,15,4,5,9, + 5,4,15,5,5,9, 5,4,0,6,10,26, 5,3,14,4,5,10, 5,3,14,5,5,10, 5,3,3,4,5,10, 5,3,2,4,5,10, 5,3,0,6,10,27, 5,2,13,4,5,11, + 5,2,13,5,5,11, 5,2,12,4,5,11, 5,2,11,4,5,11, 5,2,8,4,5,11, 5,2,7,4,5,11, 5,2,4,6,10,28, 5,2,1,5,5,11, 5,2,0,4,5,11, + 5,2,0,6,10,28, 5,1,10,5,5,12, 5,1,9,6,5,12, 5,1,6,4,5,12, 5,1,6,5,5,12, 5,1,5,4,5,12, 5,1,4,4,5,12, 5,1,3,3,12,43, + 5,1,3,4,5,12, 5,1,2,3,13,43, 5,1,2,4,5,12, 5,1,1,4,5,12, 5,1,1,6,5,12, 5,0,12,3,3,44, 5,0,12,5,5,13, 5,0,11,3,4,44, + 5,0,8,3,7,44, 5,0,7,3,8,44, 5,0,7,6,5,13, 6,10,11,3,4,34, 6,10,11,5,6,3, 6,10,10,3,5,34, 6,10,9,3,6,34, 6,10,8,3,7,34, + 6,10,8,6,9,20, 6,9,12,3,3,35, 6,9,12,5,6,4, 6,9,7,3,8,35, 6,9,7,6,9,21, 6,8,13,3,2,36, 6,8,13,5,6,5, 6,8,6,3,9,36, + 6,8,6,6,9,22, 6,7,14,3,1,37, 6,7,14,5,6,6, 6,7,5,3,10,37, 6,7,5,6,9,23, 6,7,1,3,14,37, 6,7,1,5,6,6, 6,7,0,3,15,37, + 6,7,0,6,9,23, 6,6,14,5,6,7, 6,6,4,3,11,38, 6,6,4,6,9,24, 6,6,2,3,13,38, 6,6,2,5,6,7, 6,6,0,6,9,24, 6,5,15,3,0,39, + 6,5,15,5,6,8, 6,5,3,3,12,39, 6,5,0,6,9,25, 6,4,15,4,6,9, 6,4,15,5,6,9, 6,4,0,6,9,26, 6,3,14,4,6,10, 6,3,14,5,6,10, + 6,3,3,4,6,10, 6,3,2,4,6,10, 6,3,0,6,9,27, 6,2,13,4,6,11, 6,2,13,5,6,11, 6,2,12,4,6,11, 6,2,11,4,6,11, 6,2,8,4,6,11, + 6,2,7,4,6,11, 6,2,4,6,6,11, 6,2,1,5,6,11, 6,2,0,4,6,11, 6,2,0,6,6,11, 6,1,10,5,6,12, 6,1,9,6,6,12, 6,1,6,4,6,12, + 6,1,6,5,6,12, 6,1,5,4,6,12, 6,1,4,4,6,12, 6,1,3,3,12,43, 6,1,3,4,6,12, 6,1,2,3,13,43, 6,1,2,4,6,12, 6,1,1,4,6,12, + 6,1,1,6,6,12, 6,0,12,3,3,44, 6,0,12,5,6,13, 6,0,11,3,4,44, 6,0,8,3,7,44, 6,0,7,3,8,44, 6,0,7,6,6,13, 7,10,11,3,4,34, + 7,10,11,5,7,3, 7,10,10,3,5,34, 7,10,9,3,6,34, 7,10,8,3,7,34, 7,10,8,6,8,20, 7,9,12,3,3,35, 7,9,12,5,7,4, 7,9,7,3,8,35, + 7,9,7,6,8,21, 7,8,13,3,2,36, 7,8,13,5,7,5, 7,8,6,3,9,36, 7,8,6,6,8,22, 7,7,14,3,1,37, 7,7,14,5,7,6, 7,7,5,3,10,37, + 7,7,5,6,8,23, 7,7,1,3,14,37, 7,7,1,5,7,6, 7,7,0,3,15,37, 7,7,0,6,8,23, 7,6,14,5,7,7, 7,6,4,3,11,38, 7,6,4,6,8,24, + 7,6,2,3,13,38, 7,6,2,5,7,7, 7,6,0,6,8,24, 7,5,15,3,0,39, 7,5,15,5,7,8, 7,5,3,3,12,39, 7,5,0,6,8,25, 7,4,15,4,7,9, + 7,4,15,5,7,9, 7,4,0,6,8,26, 7,3,14,4,7,10, 7,3,14,5,7,10, 7,3,3,4,7,10, 7,3,2,4,7,10, 7,3,0,6,8,27, 7,2,13,4,7,11, + 7,2,13,5,7,11, 7,2,12,4,7,11, 7,2,11,4,7,11, 7,2,8,4,7,11, 7,2,7,4,7,11, 7,2,4,6,8,28, 7,2,1,5,7,11, 7,2,0,4,7,11, + 7,2,0,6,8,28, 7,1,10,5,7,12, 7,1,9,6,7,12, 7,1,6,4,7,12, 7,1,6,5,7,12, 7,1,5,4,7,12, 7,1,4,4,7,12, 7,1,3,3,12,43, + 7,1,3,4,7,12, 7,1,2,3,13,43, 7,1,2,4,7,12, 7,1,1,4,7,12, 7,1,1,6,7,12, 7,0,12,3,3,44, 7,0,12,5,7,13, 7,0,11,3,4,44, + 7,0,8,3,7,44, 7,0,7,3,8,44, 7,0,7,6,7,13, 8,10,11,3,4,34, 8,10,11,5,8,3, 8,10,10,3,5,34, 8,10,9,3,6,34, 8,10,8,3,7,34, + 8,10,8,6,7,20, 8,9,12,3,3,35, 8,9,12,5,8,4, 8,9,7,3,8,35, 8,9,7,6,7,21, 8,8,13,3,2,36, 8,8,13,5,8,5, 8,8,6,3,9,36, + 8,8,6,6,7,22, 8,7,14,3,1,37, 8,7,14,5,8,6, 8,7,5,3,10,37, 8,7,5,6,7,23, 8,7,1,3,14,37, 8,7,1,5,8,6, 8,7,0,3,15,37, + 8,7,0,6,7,23, 8,6,14,5,8,7, 8,6,4,3,11,38, 8,6,4,6,7,24, 8,6,2,3,13,38, 8,6,2,5,8,7, 8,6,0,6,7,24, 8,5,15,3,0,39, + 8,5,15,5,8,8, 8,5,3,3,12,39, 8,5,0,6,7,25, 8,4,15,4,8,9, 8,4,15,5,8,9, 8,4,0,6,7,26, 8,3,14,4,8,10, 8,3,14,5,8,10, + 8,3,3,4,8,10, 8,3,2,4,8,10, 8,3,0,6,7,27, 8,2,13,4,8,11, 8,2,13,5,8,11, 8,2,12,4,8,11, 8,2,11,4,8,11, 8,2,8,4,8,11, + 8,2,7,4,8,11, 8,2,4,6,7,28, 8,2,1,5,8,11, 8,2,0,4,8,11, 8,2,0,6,7,28, 8,1,10,5,8,12, 8,1,9,6,8,12, 8,1,6,4,8,12, + 8,1,6,5,8,12, 8,1,5,4,8,12, 8,1,4,4,8,12, 8,1,3,3,12,43, 8,1,3,4,8,12, 8,1,2,3,13,43, 8,1,2,4,8,12, 8,1,1,4,8,12, + 8,1,1,6,8,12, 8,0,12,3,3,44, 8,0,12,5,8,13, 8,0,11,3,4,44, 8,0,8,3,7,44, 8,0,7,3,8,44, 8,0,7,6,8,13, 9,10,11,3,4,34, + 9,10,11,5,9,3, 9,10,10,3,5,34, 9,10,9,3,6,34, 9,10,8,3,7,34, 9,10,8,6,6,20, 9,9,12,3,3,35, 9,9,12,5,9,4, 9,9,7,3,8,35, + 9,9,7,6,6,21, 9,8,13,3,2,36, 9,8,13,5,9,5, 9,8,6,3,9,36, 9,8,6,6,6,22, 9,7,14,3,1,37, 9,7,14,5,9,6, 9,7,5,3,10,37, + 9,7,5,6,6,23, 9,7,1,3,14,37, 9,7,1,5,9,6, 9,7,0,3,15,37, 9,7,0,6,6,23, 9,6,14,5,9,7, 9,6,4,3,11,38, 9,6,4,6,6,24, + 9,6,2,3,13,38, 9,6,2,5,9,7, 9,6,0,6,6,24, 9,5,15,3,0,39, 9,5,15,5,9,8, 9,5,3,3,12,39, 9,5,0,6,6,25, 9,4,15,4,9,9, + 9,4,15,5,9,9, 9,4,0,6,6,26, 9,3,14,4,9,10, 9,3,14,5,9,10, 9,3,3,4,9,10, 9,3,2,4,9,10, 9,3,0,6,6,27, 9,2,13,4,9,11, + 9,2,13,5,9,11, 9,2,12,4,9,11, 9,2,11,4,9,11, 9,2,8,4,9,11, 9,2,7,4,9,11, 9,2,4,6,9,11, 9,2,1,5,9,11, 9,2,0,4,9,11, + 9,2,0,6,9,11, 9,1,10,5,9,12, 9,1,9,6,9,12, 9,1,6,4,9,12, 9,1,6,5,9,12, 9,1,5,4,9,12, 9,1,4,4,9,12, 9,1,3,3,12,43, + 9,1,3,4,9,12, 9,1,2,3,13,43, 9,1,2,4,9,12, 9,1,1,4,9,12, 9,1,1,6,9,12, 9,0,12,3,3,44, 9,0,12,5,9,13, 9,0,11,3,4,44, + 9,0,8,3,7,44, 9,0,7,3,8,44, 9,0,7,6,9,13, 10,10,11,3,4,34, 10,10,11,5,10,3, 10,10,10,3,5,34, 10,10,9,3,6,34, 10,10,8,3,7,34, + 10,10,8,6,5,20, 10,9,12,3,3,35, 10,9,12,5,10,4, 10,9,7,3,8,35, 10,9,7,6,5,21, 10,8,13,3,2,36, 10,8,13,5,10,5, 10,8,6,3,9,36, + 10,8,6,6,5,22, 10,7,14,3,1,37, 10,7,14,5,10,6, 10,7,5,3,10,37, 10,7,5,6,5,23, 10,7,1,3,14,37, 10,7,1,5,10,6, 10,7,0,3,15,37, + 10,7,0,6,5,23, 10,6,14,5,10,7, 10,6,4,3,11,38, 10,6,4,6,5,24, 10,6,2,3,13,38, 10,6,2,5,10,7, 10,6,0,6,5,24, 10,5,15,3,0,39, + 10,5,15,5,10,8, 10,5,3,3,12,39, 10,5,0,6,5,25, 10,4,15,4,10,9, 10,4,15,5,10,9, 10,4,0,6,5,26, 10,3,14,4,10,10, 10,3,14,5,10,10, + 10,3,3,4,10,10, 10,3,2,4,10,10, 10,3,0,6,5,27, 10,2,13,4,10,11, 10,2,13,5,10,11, 10,2,12,4,10,11, 10,2,11,4,10,11, 10,2,8,4,10,11, + 10,2,7,4,10,11, 10,2,4,6,5,28, 10,2,1,5,10,11, 10,2,0,4,10,11, 10,2,0,6,5,28, 10,1,10,5,10,12, 10,1,9,6,10,12, 10,1,6,4,10,12, + 10,1,6,5,10,12, 10,1,5,4,10,12, 10,1,4,4,10,12, 10,1,3,3,12,43, 10,1,3,4,10,12, 10,1,2,3,13,43, 10,1,2,4,10,12, 10,1,1,4,10,12, + 10,1,1,6,10,12, 10,0,12,3,3,44, 10,0,12,5,10,13, 10,0,11,3,4,44, 10,0,8,3,7,44, 10,0,7,3,8,44, 10,0,7,6,10,13, 11,10,11,3,4,34, + 11,10,11,5,4,20, 11,10,10,3,5,34, 11,10,9,3,6,34, 11,10,8,3,7,34, 11,10,8,6,4,20, 11,9,12,3,3,35, 11,9,12,5,11,4, 11,9,7,3,8,35, + 11,9,7,6,4,21, 11,8,13,3,2,36, 11,8,13,5,11,5, 11,8,6,3,9,36, 11,8,6,6,4,22, 11,7,14,3,1,37, 11,7,14,5,11,6, 11,7,5,3,10,37, + 11,7,5,6,4,23, 11,7,1,3,14,37, 11,7,1,5,11,6, 11,7,0,3,15,37, 11,7,0,6,4,23, 11,6,14,5,11,7, 11,6,4,3,11,38, 11,6,4,6,4,24, + 11,6,2,3,13,38, 11,6,2,5,11,7, 11,6,0,6,4,24, 11,5,15,3,0,39, 11,5,15,5,11,8, 11,5,3,3,12,39, 11,5,0,6,4,25, 11,4,15,4,11,9, + 11,4,15,5,11,9, 11,4,0,6,11,9, 11,3,14,4,11,10, 11,3,14,5,11,10, 11,3,3,4,11,10, 11,3,2,4,11,10, 11,3,0,6,4,27, 11,2,13,4,11,11, + 11,2,13,5,11,11, 11,2,12,4,11,11, 11,2,11,4,11,11, 11,2,8,4,11,11, 11,2,7,4,11,11, 11,2,4,6,11,11, 11,2,1,5,11,11, 11,2,0,4,11,11, + 11,2,0,6,11,11, 11,1,10,5,11,12, 11,1,9,6,11,12, 11,1,6,4,11,12, 11,1,6,5,11,12, 11,1,5,4,11,12, 11,1,4,4,11,12, 11,1,3,3,12,43, + 11,1,3,4,11,12, 11,1,2,3,13,43, 11,1,2,4,11,12, 11,1,1,4,11,12, 11,1,1,6,11,12, 11,0,12,3,3,44, 11,0,12,5,4,30, 11,0,11,3,4,44, + 11,0,8,3,7,44, 11,0,7,3,8,44, 11,0,7,6,4,30, 12,10,11,3,4,34, 12,10,11,5,3,20, 12,10,10,3,5,34, 12,10,9,3,6,34, 12,10,8,3,7,34, + 12,10,8,6,3,20, 12,9,12,3,3,35, 12,9,12,5,3,21, 12,9,7,3,8,35, 12,9,7,6,3,21, 12,8,13,1,2,36, 12,8,13,3,2,36, 12,8,13,5,12,5, + 12,8,12,1,3,36, 12,8,11,1,4,36, 12,8,10,1,5,36, 12,8,9,1,6,36, 12,8,8,1,7,36, 12,8,7,1,8,36, 12,8,6,1,9,36, 12,8,6,3,9,36, + 12,8,6,6,3,22, 12,7,14,3,1,37, 12,7,14,5,12,6, 12,7,5,3,10,37, 12,7,5,6,3,23, 12,7,1,3,14,37, 12,7,1,5,12,6, 12,7,0,3,15,37, + 12,7,0,6,3,23, 12,6,14,5,12,7, 12,6,4,3,11,38, 12,6,4,6,3,24, 12,6,2,3,13,38, 12,6,2,5,12,7, 12,6,0,6,3,24, 12,5,15,3,0,39, + 12,5,15,5,12,8, 12,5,3,3,12,39, 12,5,0,6,3,25, 12,4,15,4,12,9, 12,4,15,5,12,9, 12,4,0,6,3,26, 12,3,14,4,12,10, 12,3,14,5,12,10, + 12,3,3,4,12,10, 12,3,2,4,12,10, 12,3,0,6,3,27, 12,2,13,4,12,11, 12,2,13,5,12,11, 12,2,12,4,12,11, 12,2,11,4,12,11, 12,2,8,4,12,11, + 12,2,7,4,12,11, 12,2,4,6,12,11, 12,2,1,5,12,11, 12,2,0,4,12,11, 12,2,0,6,12,11, 12,1,10,5,12,12, 12,1,9,6,12,12, 12,1,6,4,12,12, + 12,1,6,5,12,12, 12,1,5,4,12,12, 12,1,4,4,12,12, 12,1,3,3,12,43, 12,1,3,4,12,12, 12,1,2,3,13,43, 12,1,2,4,12,12, 12,1,1,4,12,12, + 12,1,1,6,12,12, 12,0,12,1,3,44, 12,0,12,3,3,44, 12,0,12,5,3,30, 12,0,11,1,4,44, 12,0,11,3,4,44, 12,0,10,1,5,44, 12,0,9,1,6,44, + 12,0,8,1,7,44, 12,0,8,3,7,44, 12,0,7,1,8,44, 12,0,7,3,8,44, 12,0,7,6,3,30, 13,10,11,1,4,34, 13,10,11,3,4,34, 13,10,11,5,13,3, + 13,10,10,1,5,34, 13,10,10,3,5,34, 13,10,9,1,6,34, 13,10,9,3,6,34, 13,10,8,1,7,34, 13,10,8,3,7,34, 13,10,8,6,2,20, 13,9,12,3,3,35, + 13,9,12,4,13,4, 13,9,12,5,13,4, 13,9,11,4,13,4, 13,9,10,4,13,4, 13,9,9,4,13,4, 13,9,8,4,13,4, 13,9,7,3,8,35, 13,9,7,4,13,4, + 13,9,7,6,13,4, 13,7,14,3,1,37, 13,7,14,5,2,23, 13,7,13,3,2,37, 13,7,12,3,3,37, 13,7,11,3,4,37, 13,7,10,3,5,37, 13,7,9,3,6,37, + 13,7,8,3,7,37, 13,7,7,3,8,37, 13,7,6,3,9,37, 13,7,5,3,10,37, 13,7,5,6,2,23, 13,7,1,3,14,37, 13,7,1,5,2,23, 13,7,0,3,15,37, + 13,7,0,6,2,23, 13,6,14,5,2,24, 13,6,4,3,11,38, 13,6,4,6,2,24, 13,6,2,3,13,38, 13,6,2,5,2,24, 13,6,0,6,2,24, 13,5,15,3,0,39, + 13,5,15,5,13,8, 13,5,3,3,12,39, 13,5,0,6,2,25, 13,4,15,4,13,9, 13,4,15,5,13,9, 13,4,0,6,2,26, 13,3,14,4,13,10, 13,3,14,5,13,10, + 13,3,3,4,13,10, 13,3,2,4,13,10, 13,3,0,6,13,10, 13,2,13,4,13,11, 13,2,13,5,13,11, 13,2,12,4,13,11, 13,2,11,4,13,11, 13,2,8,4,13,11, + 13,2,7,4,13,11, 13,2,4,6,13,11, 13,2,1,5,13,11, 13,2,0,4,13,11, 13,2,0,6,13,11, 13,1,10,1,5,43, 13,1,10,4,2,29, 13,1,10,5,2,29, + 13,1,9,1,6,43, 13,1,9,4,2,29, 13,1,9,6,2,29, 13,1,6,1,9,43, 13,1,6,4,2,29, 13,1,6,5,2,29, 13,1,5,1,10,43, 13,1,5,4,2,29, + 13,1,4,1,11,43, 13,1,4,4,2,29, 13,1,3,1,12,43, 13,1,3,3,12,43, 13,1,3,4,2,29, 13,1,2,1,13,43, 13,1,2,3,13,43, 13,1,2,4,2,29, + 13,1,1,1,14,43, 13,1,1,4,2,29, 13,1,1,6,2,29, 14,9,12,1,3,35, 14,9,12,3,3,35, 14,9,12,5,1,21, 14,9,11,1,4,35, 14,9,11,3,4,35, + 14,9,10,1,5,35, 14,9,10,3,5,35, 14,9,9,1,6,35, 14,9,9,3,6,35, 14,9,8,1,7,35, 14,9,8,3,7,35, 14,9,7,1,8,35, 14,9,7,3,8,35, + 14,9,7,6,1,21, 14,8,13,1,2,36, 14,8,13,2,2,36, 14,8,13,3,2,36, 14,8,13,5,14,5, 14,8,12,1,3,36, 14,8,12,2,3,36, 14,8,11,1,4,36, + 14,8,11,2,4,36, 14,8,10,1,5,36, 14,8,10,2,5,36, 14,8,9,1,6,36, 14,8,9,2,6,36, 14,8,8,1,7,36, 14,8,8,2,7,36, 14,8,7,1,8,36, + 14,8,7,2,8,36, 14,8,6,1,9,36, 14,8,6,2,9,36, 14,8,6,3,9,36, 14,8,6,6,1,22, 14,7,14,1,1,37, 14,7,14,3,1,37, 14,7,14,5,14,6, + 14,7,13,1,2,37, 14,7,12,1,3,37, 14,7,11,1,4,37, 14,7,10,1,5,37, 14,7,9,1,6,37, 14,7,8,1,7,37, 14,7,7,1,8,37, 14,7,6,1,9,37, + 14,7,5,1,10,37, 14,7,5,3,10,37, 14,7,5,6,1,23, 14,7,1,1,14,37, 14,7,1,3,14,37, 14,7,1,5,14,6, 14,7,0,1,15,37, 14,7,0,3,15,37, + 14,7,0,6,1,23, 14,6,14,5,14,7, 14,6,4,3,11,38, 14,6,4,6,1,24, 14,6,2,3,13,38, 14,6,2,5,14,7, 14,6,0,6,1,24, 14,5,15,3,0,39, + 14,5,15,5,14,8, 14,5,3,3,12,39, 14,5,0,6,1,25, 14,4,15,4,14,9, 14,4,15,5,14,9, 14,4,0,6,14,9, 14,3,14,4,14,10, 14,3,14,5,14,10, + 14,3,3,4,14,10, 14,3,2,4,14,10, 14,3,0,6,14,10, 14,2,13,1,2,42, 14,2,13,4,1,28, 14,2,13,5,1,28, 14,2,12,1,3,42, 14,2,12,4,1,28, + 14,2,11,1,4,42, 14,2,11,4,1,28, 14,2,10,1,5,42, 14,2,10,4,1,28, 14,2,9,1,6,42, 14,2,9,4,1,28, 14,2,8,1,7,42, 14,2,8,4,1,28, + 14,2,7,1,8,42, 14,2,7,4,1,28, 14,2,6,1,9,42, 14,2,6,4,1,28, 14,2,5,1,10,42, 14,2,5,4,1,28, 14,2,4,1,11,42, 14,2,4,4,1,28, + 14,2,4,6,1,28, 14,2,1,1,14,42, 14,2,1,4,1,28, 14,2,1,5,1,28, 14,2,0,1,15,42, 14,2,0,4,1,28, 14,2,0,6,1,28, 15,6,14,1,1,38, + 15,6,14,3,1,38, 15,6,14,5,0,24, 15,6,13,1,2,38, 15,6,13,3,2,38, 15,6,12,1,3,38, 15,6,12,3,3,38, 15,6,11,1,4,38, 15,6,11,3,4,38, + 15,6,10,1,5,38, 15,6,10,3,5,38, 15,6,9,1,6,38, 15,6,9,3,6,38, 15,6,8,1,7,38, 15,6,8,3,7,38, 15,6,7,1,8,38, 15,6,7,3,8,38, + 15,6,6,1,9,38, 15,6,6,3,9,38, 15,6,5,1,10,38, 15,6,5,3,10,38, 15,6,4,1,11,38, 15,6,4,3,11,38, 15,6,4,6,0,24, 15,6,2,1,13,38, + 15,6,2,3,13,38, 15,6,2,5,0,24, 15,6,1,1,14,38, 15,6,1,3,14,38, 15,6,0,1,15,38, 15,6,0,3,15,38, 15,6,0,6,0,24, 15,5,15,1,0,39, + 15,5,15,3,0,39, 15,5,15,5,0,25, 15,5,14,1,1,39, 15,5,13,1,2,39, 15,5,12,1,3,39, 15,5,11,1,4,39, 15,5,10,1,5,39, 15,5,9,1,6,39, + 15,5,8,1,7,39, 15,5,7,1,8,39, 15,5,6,1,9,39, 15,5,5,1,10,39, 15,5,4,1,11,39, 15,5,3,1,12,39, 15,5,3,3,12,39, 15,5,2,1,13,39, + 15,5,1,1,14,39, 15,5,0,1,15,39, 15,5,0,6,0,25, 15,4,15,1,0,40, 15,4,15,4,15,9, 15,4,15,5,15,9, 15,4,14,1,1,40, 15,4,13,1,2,40, + 15,4,12,1,3,40, 15,4,11,1,4,40, 15,4,10,1,5,40, 15,4,9,1,6,40, 15,4,8,1,7,40, 15,4,7,1,8,40, 15,4,6,1,9,40, 15,4,5,1,10,40, + 15,4,4,1,11,40, 15,4,3,1,12,40, 15,4,2,1,13,40, 15,4,1,1,14,40, 15,4,0,1,15,40, 15,4,0,6,15,9, 15,3,14,1,1,41, 15,3,14,4,15,10, + 15,3,14,5,15,10, 15,3,13,1,2,41, 15,3,13,4,15,10, 15,3,12,1,3,41, 15,3,12,4,15,10, 15,3,11,1,4,41, 15,3,11,4,15,10, 15,3,10,1,5,41, + 15,3,10,4,15,10, 15,3,9,1,6,41, 15,3,9,4,15,10, 15,3,8,1,7,41, 15,3,8,4,15,10, 15,3,7,1,8,41, 15,3,7,4,15,10, 15,3,6,1,9,41, + 15,3,6,4,15,10, 15,3,5,1,10,41, 15,3,5,4,15,10, 15,3,4,1,11,41, 15,3,4,4,15,10, 15,3,3,1,12,41, 15,3,3,4,15,10, 15,3,2,1,13,41, + 15,3,2,4,15,10, 15,3,1,1,14,41, 15,3,1,4,15,10, 15,3,0,1,15,41, 15,3,0,4,15,10, 15,3,0,6,15,10, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1190, + count = 1106, + faces = { + 1,8,12,2,3,84, 1,8,12,3,3,84, 1,8,12,4,1,53, 1,8,12,5,1,53, 1,8,11,2,4,84, 1,8,11,3,4,84, 1,8,11,4,1,53, 1,8,10,2,5,84, + 1,8,10,3,5,84, 1,8,10,4,1,53, 1,8,9,2,6,84, 1,8,9,3,6,84, 1,8,9,4,1,53, 1,8,8,2,7,84, 1,8,8,3,7,84, 1,8,8,4,1,53, + 1,8,7,2,8,84, 1,8,7,3,8,84, 1,8,7,4,1,53, 1,8,7,6,1,53, 1,6,14,2,1,86, 1,6,14,3,1,86, 1,6,14,4,1,55, 1,6,14,5,1,55, + 1,6,13,2,2,86, 1,6,13,3,2,86, 1,6,13,4,1,55, 1,6,12,2,3,86, 1,6,12,3,3,86, 1,6,12,4,1,55, 1,6,11,2,4,86, 1,6,11,3,4,86, + 1,6,11,4,1,55, 1,6,10,2,5,86, 1,6,10,3,5,86, 1,6,10,4,1,55, 1,6,9,2,6,86, 1,6,9,3,6,86, 1,6,9,4,1,55, 1,6,8,2,7,86, + 1,6,8,3,7,86, 1,6,8,4,1,55, 1,6,7,2,8,86, 1,6,7,3,8,86, 1,6,7,4,1,55, 1,6,6,2,9,86, 1,6,6,3,9,86, 1,6,6,4,1,55, + 1,6,5,2,10,86, 1,6,5,3,10,86, 1,6,5,4,1,55, 1,6,5,6,1,55, 1,6,2,2,13,86, 1,6,2,3,13,86, 1,6,2,4,1,55, 1,6,2,5,1,55, + 1,6,1,2,14,86, 1,6,1,3,14,86, 1,6,1,4,1,55, 1,6,1,6,1,55, 1,2,14,2,1,90, 1,2,14,3,1,90, 1,2,14,4,14,76, 1,2,14,5,14,76, + 1,2,14,6,14,76, 1,2,11,2,4,90, 1,2,11,3,4,90, 1,2,11,4,14,76, 1,2,11,5,14,76, 1,2,10,2,5,90, 1,2,10,3,5,90, 1,2,10,4,14,76, + 1,2,9,2,6,90, 1,2,9,3,6,90, 1,2,8,2,7,90, 1,2,8,3,7,90, 1,2,7,2,8,90, 1,2,7,3,8,90, 1,2,6,2,9,90, 1,2,6,3,9,90, + 1,2,6,6,14,76, 1,2,4,2,11,90, 1,2,4,3,11,90, 1,2,4,4,14,76, 1,2,4,5,14,76, 1,2,3,2,12,90, 1,2,3,3,12,90, 1,2,3,4,14,76, + 1,2,3,6,14,76, 1,1,9,1,6,91, 1,1,9,2,6,91, 1,1,9,4,14,77, 1,1,9,5,14,77, 1,1,8,1,7,91, 1,1,8,2,7,91, 1,1,8,4,14,77, + 1,1,7,1,8,91, 1,1,7,2,8,91, 1,1,7,4,14,77, 1,1,6,1,9,91, 1,1,6,2,9,91, 1,1,6,4,14,77, 1,1,6,6,14,77, 2,8,12,3,3,84, + 2,8,12,5,13,70, 2,8,11,3,4,84, 2,8,10,3,5,84, 2,8,9,3,6,84, 2,8,8,3,7,84, 2,8,7,3,8,84, 2,8,7,6,13,70, 2,7,13,2,2,85, + 2,7,13,3,2,85, 2,7,13,5,13,71, 2,7,12,2,3,85, 2,7,11,2,4,85, 2,7,10,2,5,85, 2,7,9,2,6,85, 2,7,8,2,7,85, 2,7,7,2,8,85, + 2,7,6,2,9,85, 2,7,6,3,9,85, 2,7,6,6,13,71, 2,6,14,3,1,86, 2,6,14,5,13,72, 2,6,5,3,10,86, 2,6,5,6,13,72, 2,6,2,3,13,86, + 2,6,2,5,13,72, 2,6,1,3,14,86, 2,6,1,6,13,72, 2,5,14,2,1,87, 2,5,14,5,13,73, 2,5,13,2,2,87, 2,5,12,2,3,87, 2,5,11,2,4,87, + 2,5,10,2,5,87, 2,5,9,2,6,87, 2,5,8,2,7,87, 2,5,7,2,8,87, 2,5,6,2,9,87, 2,5,5,2,10,87, 2,5,4,2,11,87, 2,5,4,3,11,87, + 2,5,3,2,12,87, 2,5,3,3,12,87, 2,5,2,2,13,87, 2,5,1,2,14,87, 2,5,1,6,13,73, 2,4,15,2,0,88, 2,4,15,3,0,88, 2,4,15,5,2,57, + 2,4,14,2,1,88, 2,4,13,2,2,88, 2,4,12,2,3,88, 2,4,11,2,4,88, 2,4,10,2,5,88, 2,4,9,2,6,88, 2,4,8,2,7,88, 2,4,7,2,8,88, + 2,4,6,2,9,88, 2,4,5,2,10,88, 2,4,4,2,11,88, 2,4,3,2,12,88, 2,4,2,2,13,88, 2,4,1,2,14,88, 2,4,1,6,2,57, 2,3,15,2,0,89, + 2,3,15,4,2,58, 2,3,15,5,2,58, 2,3,14,2,1,89, 2,3,13,2,2,89, 2,3,13,4,2,58, 2,3,12,2,3,89, 2,3,12,4,2,58, 2,3,11,2,4,89, + 2,3,10,2,5,89, 2,3,9,2,6,89, 2,3,8,2,7,89, 2,3,7,2,8,89, 2,3,6,2,9,89, 2,3,5,2,10,89, 2,3,5,4,2,58, 2,3,4,2,11,89, + 2,3,3,2,12,89, 2,3,2,2,13,89, 2,3,2,4,2,58, 2,3,1,2,14,89, 2,3,1,4,2,58, 2,3,1,6,13,75, 2,2,14,4,2,59, 2,2,14,5,2,59, + 2,2,14,6,2,59, 2,2,11,4,2,59, 2,2,11,5,2,59, 2,2,10,4,2,59, 2,2,9,4,2,59, 2,2,8,4,2,59, 2,2,7,4,2,59, 2,2,6,4,2,59, + 2,2,6,6,2,59, 2,2,4,4,2,59, 2,2,4,5,2,59, 2,2,3,4,2,59, 2,2,3,6,2,59, 3,9,11,2,4,83, 3,9,11,3,4,83, 3,9,11,5,3,52, + 3,9,10,2,5,83, 3,9,10,3,5,83, 3,9,9,2,6,83, 3,9,9,3,6,83, 3,9,8,2,7,83, 3,9,8,3,7,83, 3,9,8,6,12,69, 3,8,12,3,3,84, + 3,8,12,5,12,70, 3,8,7,3,8,84, 3,8,7,6,12,70, 3,7,13,3,2,85, 3,7,13,5,12,71, 3,7,6,3,9,85, 3,7,6,6,12,71, 3,6,14,3,1,86, + 3,6,14,5,3,55, 3,6,5,3,10,86, 3,6,5,6,12,72, 3,6,2,3,13,86, 3,6,2,5,3,55, 3,6,1,3,14,86, 3,6,1,6,12,72, 3,5,14,5,3,56, + 3,5,4,3,11,87, 3,5,3,3,12,87, 3,5,1,6,12,73, 3,4,15,3,0,88, 3,4,15,5,3,57, 3,4,1,6,3,57, 3,3,15,4,3,58, 3,3,15,5,3,58, + 3,3,13,4,3,58, 3,3,12,4,3,58, 3,3,5,4,3,58, 3,3,2,4,3,58, 3,3,1,4,3,58, 3,3,1,6,3,58, 3,2,14,4,3,59, 3,2,14,5,3,59, + 3,2,14,6,3,59, 3,2,11,4,3,59, 3,2,11,5,3,59, 3,2,10,4,3,59, 3,2,6,6,3,59, 3,2,4,4,3,59, 3,2,4,5,3,59, 3,2,3,4,3,59, + 3,2,3,6,3,59, 3,1,13,2,2,91, 3,1,13,3,2,91, 3,1,13,4,3,60, 3,1,13,5,3,60, 3,1,12,2,3,91, 3,1,12,3,3,91, 3,1,12,6,3,60, + 3,1,9,2,6,91, 3,1,9,5,3,60, 3,1,8,2,7,91, 3,1,7,2,8,91, 3,1,6,2,9,91, 3,1,6,6,3,60, 3,0,12,1,3,92, 3,0,12,2,3,92, + 3,0,12,5,12,78, 3,0,11,1,4,92, 3,0,11,2,4,92, 3,0,11,3,4,92, 3,0,10,1,5,92, 3,0,10,2,5,92, 3,0,10,3,5,92, 3,0,9,1,6,92, + 3,0,9,2,6,92, 3,0,8,1,7,92, 3,0,8,2,7,92, 3,0,7,1,8,92, 3,0,7,2,8,92, 3,0,6,1,9,92, 3,0,6,2,9,92, 3,0,5,1,10,92, + 3,0,5,2,10,92, 3,0,5,3,10,92, 3,0,4,1,11,92, 3,0,4,2,11,92, 3,0,4,3,11,92, 3,0,3,1,12,92, 3,0,3,2,12,92, 3,0,3,3,12,92, + 3,0,3,6,12,78, 4,9,11,3,4,83, 4,9,11,5,11,69, 4,9,10,3,5,83, 4,9,9,3,6,83, 4,9,8,3,7,83, 4,9,8,6,11,69, 4,8,12,3,3,84, + 4,8,12,5,11,70, 4,8,7,3,8,84, 4,8,7,6,11,70, 4,7,13,3,2,85, 4,7,13,5,4,54, 4,7,6,3,9,85, 4,7,6,6,11,71, 4,6,14,3,1,86, + 4,6,14,5,4,55, 4,6,5,3,10,86, 4,6,5,6,11,72, 4,6,2,3,13,86, 4,6,2,5,4,55, 4,6,1,3,14,86, 4,6,1,6,11,72, 4,5,14,5,4,56, + 4,5,4,3,11,87, 4,5,3,3,12,87, 4,5,1,6,11,73, 4,4,15,3,0,88, 4,4,15,5,4,57, 4,4,1,6,11,74, 4,3,15,4,4,58, 4,3,15,5,4,58, + 4,3,13,4,4,58, 4,3,12,4,4,58, 4,3,5,4,4,58, 4,3,2,4,4,58, 4,3,1,4,4,58, 4,3,1,6,4,58, 4,2,14,4,4,59, 4,2,14,5,4,59, + 4,2,14,6,4,59, 4,2,11,4,4,59, 4,2,11,5,4,59, 4,2,10,4,4,59, 4,2,6,6,4,59, 4,2,4,4,4,59, 4,2,4,5,4,59, 4,2,3,4,4,59, + 4,2,3,6,4,59, 4,1,13,3,2,91, 4,1,13,4,4,60, 4,1,13,5,4,60, 4,1,12,3,3,91, 4,1,12,4,4,60, 4,1,12,6,4,60, 4,1,9,4,4,60, + 4,1,9,5,4,60, 4,1,8,4,4,60, 4,1,7,4,4,60, 4,1,6,4,4,60, 4,1,6,6,4,60, 5,9,11,3,4,83, 5,9,11,5,10,69, 5,9,10,3,5,83, + 5,9,9,3,6,83, 5,9,8,3,7,83, 5,9,8,6,10,69, 5,8,12,3,3,84, 5,8,12,5,5,53, 5,8,7,3,8,84, 5,8,7,6,10,70, 5,7,13,3,2,85, + 5,7,13,5,5,54, 5,7,6,3,9,85, 5,7,6,6,10,71, 5,6,14,3,1,86, 5,6,14,5,5,55, 5,6,5,3,10,86, 5,6,5,6,10,72, 5,6,2,3,13,86, + 5,6,2,5,5,55, 5,6,1,3,14,86, 5,6,1,6,10,72, 5,5,14,5,5,56, 5,5,4,3,11,87, 5,5,3,3,12,87, 5,5,1,6,10,73, 5,4,15,3,0,88, + 5,4,15,5,5,57, 5,4,1,6,10,74, 5,3,15,4,5,58, 5,3,15,5,5,58, 5,3,13,4,5,58, 5,3,12,4,5,58, 5,3,5,4,5,58, 5,3,2,4,5,58, + 5,3,1,4,5,58, 5,3,1,6,10,75, 5,2,14,4,5,59, 5,2,14,5,5,59, 5,2,14,6,10,76, 5,2,11,4,5,59, 5,2,11,5,5,59, 5,2,10,4,5,59, + 5,2,6,6,10,76, 5,2,4,4,5,59, 5,2,4,5,5,59, 5,2,3,4,5,59, 5,2,3,6,10,76, 5,1,13,3,2,91, 5,1,13,4,5,60, 5,1,13,5,5,60, + 5,1,12,3,3,91, 5,1,12,6,10,77, 5,1,9,5,5,60, 5,1,6,6,10,77, 5,0,12,2,3,92, 5,0,12,5,5,61, 5,0,11,2,4,92, 5,0,11,3,4,92, + 5,0,10,2,5,92, 5,0,10,3,5,92, 5,0,9,2,6,92, 5,0,8,2,7,92, 5,0,7,2,8,92, 5,0,6,2,9,92, 5,0,5,2,10,92, 5,0,5,3,10,92, + 5,0,4,2,11,92, 5,0,4,3,11,92, 5,0,3,2,12,92, 5,0,3,3,12,92, 5,0,3,6,5,61, 6,9,11,3,4,83, 6,9,11,5,6,52, 6,9,10,3,5,83, + 6,9,9,3,6,83, 6,9,8,3,7,83, 6,9,8,6,9,69, 6,8,12,3,3,84, 6,8,12,5,6,53, 6,8,7,3,8,84, 6,8,7,6,9,70, 6,7,13,3,2,85, + 6,7,13,5,6,54, 6,7,6,3,9,85, 6,7,6,6,9,71, 6,6,14,3,1,86, 6,6,14,5,6,55, 6,6,5,3,10,86, 6,6,5,6,9,72, 6,6,2,3,13,86, + 6,6,2,5,6,55, 6,6,1,3,14,86, 6,6,1,6,9,72, 6,5,14,5,6,56, 6,5,4,3,11,87, 6,5,3,3,12,87, 6,5,1,6,9,73, 6,4,15,3,0,88, + 6,4,15,5,6,57, 6,4,1,6,9,74, 6,3,15,4,6,58, 6,3,15,5,6,58, 6,3,13,4,6,58, 6,3,12,4,6,58, 6,3,5,4,6,58, 6,3,2,4,6,58, + 6,3,1,4,6,58, 6,3,1,6,9,75, 6,2,14,4,6,59, 6,2,14,5,6,59, 6,2,14,6,9,76, 6,2,11,4,6,59, 6,2,11,5,6,59, 6,2,10,4,6,59, + 6,2,6,6,9,76, 6,2,4,4,6,59, 6,2,4,5,6,59, 6,2,3,4,6,59, 6,2,3,6,9,76, 6,1,13,3,2,91, 6,1,13,4,6,60, 6,1,13,5,6,60, + 6,1,12,3,3,91, 6,1,12,6,9,77, 6,1,9,5,6,60, 6,1,6,6,9,77, 6,0,12,5,6,61, 6,0,11,3,4,92, 6,0,10,3,5,92, 6,0,5,3,10,92, + 6,0,4,3,11,92, 6,0,3,3,12,92, 6,0,3,6,6,61, 7,9,11,3,4,83, 7,9,11,5,7,52, 7,9,10,3,5,83, 7,9,9,3,6,83, 7,9,8,3,7,83, + 7,9,8,6,8,69, 7,8,12,3,3,84, 7,8,12,5,7,53, 7,8,7,3,8,84, 7,8,7,6,8,70, 7,7,13,3,2,85, 7,7,13,5,7,54, 7,7,6,3,9,85, + 7,7,6,6,8,71, 7,6,14,3,1,86, 7,6,14,5,7,55, 7,6,5,3,10,86, 7,6,5,6,8,72, 7,6,2,3,13,86, 7,6,2,5,7,55, 7,6,1,3,14,86, + 7,6,1,6,8,72, 7,5,14,5,7,56, 7,5,4,3,11,87, 7,5,3,3,12,87, 7,5,1,6,8,73, 7,4,15,3,0,88, 7,4,15,5,7,57, 7,4,1,6,8,74, + 7,3,15,4,7,58, 7,3,15,5,7,58, 7,3,13,4,7,58, 7,3,12,4,7,58, 7,3,5,4,7,58, 7,3,2,4,7,58, 7,3,1,4,7,58, 7,3,1,6,8,75, + 7,2,14,4,7,59, 7,2,14,5,7,59, 7,2,14,6,8,76, 7,2,11,4,7,59, 7,2,11,5,7,59, 7,2,10,4,7,59, 7,2,6,6,8,76, 7,2,4,4,7,59, + 7,2,4,5,7,59, 7,2,3,4,7,59, 7,2,3,6,8,76, 7,1,13,3,2,91, 7,1,13,4,7,60, 7,1,13,5,7,60, 7,1,12,3,3,91, 7,1,12,6,8,77, + 7,1,9,5,7,60, 7,1,6,6,8,77, 7,0,12,5,7,61, 7,0,11,3,4,92, 7,0,10,3,5,92, 7,0,5,3,10,92, 7,0,4,3,11,92, 7,0,3,3,12,92, + 7,0,3,6,7,61, 8,9,11,3,4,83, 8,9,11,5,8,52, 8,9,10,3,5,83, 8,9,9,3,6,83, 8,9,8,3,7,83, 8,9,8,6,7,69, 8,8,12,3,3,84, + 8,8,12,5,8,53, 8,8,7,3,8,84, 8,8,7,6,7,70, 8,7,13,3,2,85, 8,7,13,5,8,54, 8,7,6,3,9,85, 8,7,6,6,7,71, 8,6,14,3,1,86, + 8,6,14,5,8,55, 8,6,5,3,10,86, 8,6,5,6,7,72, 8,6,2,3,13,86, 8,6,2,5,8,55, 8,6,1,3,14,86, 8,6,1,6,7,72, 8,5,14,5,8,56, + 8,5,4,3,11,87, 8,5,3,3,12,87, 8,5,1,6,7,73, 8,4,15,3,0,88, 8,4,15,5,8,57, 8,4,1,6,7,74, 8,3,15,4,8,58, 8,3,15,5,8,58, + 8,3,13,4,8,58, 8,3,12,4,8,58, 8,3,5,4,8,58, 8,3,2,4,8,58, 8,3,1,4,8,58, 8,3,1,6,7,75, 8,2,14,4,8,59, 8,2,14,5,8,59, + 8,2,14,6,7,76, 8,2,11,4,8,59, 8,2,11,5,8,59, 8,2,10,4,8,59, 8,2,6,6,7,76, 8,2,4,4,8,59, 8,2,4,5,8,59, 8,2,3,4,8,59, + 8,2,3,6,7,76, 8,1,13,3,2,91, 8,1,13,4,8,60, 8,1,13,5,8,60, 8,1,12,3,3,91, 8,1,12,6,7,77, 8,1,9,5,8,60, 8,1,6,6,7,77, + 8,0,12,5,8,61, 8,0,11,3,4,92, 8,0,10,3,5,92, 8,0,5,3,10,92, 8,0,4,3,11,92, 8,0,3,3,12,92, 8,0,3,6,8,61, 9,9,11,3,4,83, + 9,9,11,5,9,52, 9,9,10,3,5,83, 9,9,9,3,6,83, 9,9,8,3,7,83, 9,9,8,6,6,69, 9,8,12,3,3,84, 9,8,12,5,9,53, 9,8,7,3,8,84, + 9,8,7,6,6,70, 9,7,13,3,2,85, 9,7,13,5,9,54, 9,7,6,3,9,85, 9,7,6,6,6,71, 9,6,14,3,1,86, 9,6,14,5,9,55, 9,6,5,3,10,86, + 9,6,5,6,6,72, 9,6,2,3,13,86, 9,6,2,5,9,55, 9,6,1,3,14,86, 9,6,1,6,6,72, 9,5,14,5,9,56, 9,5,4,3,11,87, 9,5,3,3,12,87, + 9,5,1,6,6,73, 9,4,15,3,0,88, 9,4,15,5,9,57, 9,4,1,6,6,74, 9,3,15,4,9,58, 9,3,15,5,9,58, 9,3,13,4,9,58, 9,3,12,4,9,58, + 9,3,5,4,9,58, 9,3,2,4,9,58, 9,3,1,4,9,58, 9,3,1,6,6,75, 9,2,14,4,9,59, 9,2,14,5,9,59, 9,2,14,6,6,76, 9,2,11,4,9,59, + 9,2,11,5,9,59, 9,2,10,4,9,59, 9,2,6,6,6,76, 9,2,4,4,9,59, 9,2,4,5,9,59, 9,2,3,4,9,59, 9,2,3,6,6,76, 9,1,13,3,2,91, + 9,1,13,4,9,60, 9,1,13,5,9,60, 9,1,12,3,3,91, 9,1,12,6,6,77, 9,1,9,5,9,60, 9,1,6,6,6,77, 9,0,12,5,9,61, 9,0,11,3,4,92, + 9,0,10,3,5,92, 9,0,5,3,10,92, 9,0,4,3,11,92, 9,0,3,3,12,92, 9,0,3,6,9,61, 10,9,11,3,4,83, 10,9,11,5,5,69, 10,9,10,3,5,83, + 10,9,9,3,6,83, 10,9,8,3,7,83, 10,9,8,6,5,69, 10,8,12,3,3,84, 10,8,12,5,10,53, 10,8,7,3,8,84, 10,8,7,6,5,70, 10,7,13,3,2,85, + 10,7,13,5,10,54, 10,7,6,3,9,85, 10,7,6,6,5,71, 10,6,14,3,1,86, 10,6,14,5,10,55, 10,6,5,3,10,86, 10,6,5,6,5,72, 10,6,2,3,13,86, + 10,6,2,5,10,55, 10,6,1,3,14,86, 10,6,1,6,5,72, 10,5,14,5,10,56, 10,5,4,3,11,87, 10,5,3,3,12,87, 10,5,1,6,5,73, 10,4,15,3,0,88, + 10,4,15,5,10,57, 10,4,1,6,5,74, 10,3,15,4,10,58, 10,3,15,5,10,58, 10,3,13,4,10,58, 10,3,12,4,10,58, 10,3,5,4,10,58, 10,3,2,4,10,58, + 10,3,1,4,10,58, 10,3,1,6,5,75, 10,2,14,4,10,59, 10,2,14,5,10,59, 10,2,14,6,5,76, 10,2,11,4,10,59, 10,2,11,5,10,59, 10,2,10,4,10,59, + 10,2,6,6,5,76, 10,2,4,4,10,59, 10,2,4,5,10,59, 10,2,3,4,10,59, 10,2,3,6,5,76, 10,1,13,3,2,91, 10,1,13,4,10,60, 10,1,13,5,10,60, + 10,1,12,3,3,91, 10,1,12,6,5,77, 10,1,9,5,10,60, 10,1,6,6,5,77, 10,0,12,1,3,92, 10,0,12,5,10,61, 10,0,11,1,4,92, 10,0,11,3,4,92, + 10,0,10,1,5,92, 10,0,10,3,5,92, 10,0,9,1,6,92, 10,0,8,1,7,92, 10,0,7,1,8,92, 10,0,6,1,9,92, 10,0,5,1,10,92, 10,0,5,3,10,92, + 10,0,4,1,11,92, 10,0,4,3,11,92, 10,0,3,1,12,92, 10,0,3,3,12,92, 10,0,3,6,10,61, 11,9,11,3,4,83, 11,9,11,5,4,69, 11,9,10,3,5,83, + 11,9,9,3,6,83, 11,9,8,3,7,83, 11,9,8,6,4,69, 11,8,12,3,3,84, 11,8,12,5,4,70, 11,8,7,3,8,84, 11,8,7,6,4,70, 11,7,13,3,2,85, + 11,7,13,5,11,54, 11,7,6,3,9,85, 11,7,6,6,4,71, 11,6,14,3,1,86, 11,6,14,5,11,55, 11,6,5,3,10,86, 11,6,5,6,4,72, 11,6,2,3,13,86, + 11,6,2,5,11,55, 11,6,1,3,14,86, 11,6,1,6,4,72, 11,5,14,5,11,56, 11,5,4,3,11,87, 11,5,3,3,12,87, 11,5,1,6,4,73, 11,4,15,3,0,88, + 11,4,15,5,11,57, 11,4,1,6,4,74, 11,3,15,4,11,58, 11,3,15,5,11,58, 11,3,13,4,11,58, 11,3,12,4,11,58, 11,3,5,4,11,58, 11,3,2,4,11,58, + 11,3,1,4,11,58, 11,3,1,6,11,58, 11,2,14,4,11,59, 11,2,14,5,11,59, 11,2,14,6,11,59, 11,2,11,4,11,59, 11,2,11,5,11,59, 11,2,10,4,11,59, + 11,2,6,6,11,59, 11,2,4,4,11,59, 11,2,4,5,11,59, 11,2,3,4,11,59, 11,2,3,6,11,59, 11,1,13,3,2,91, 11,1,13,4,11,60, 11,1,13,5,11,60, + 11,1,12,3,3,91, 11,1,12,4,11,60, 11,1,12,6,11,60, 11,1,9,4,11,60, 11,1,9,5,11,60, 11,1,8,4,11,60, 11,1,7,4,11,60, 11,1,6,4,11,60, + 11,1,6,6,11,60, 12,9,11,1,4,83, 12,9,11,3,4,83, 12,9,11,5,12,52, 12,9,10,1,5,83, 12,9,10,3,5,83, 12,9,9,1,6,83, 12,9,9,3,6,83, + 12,9,8,1,7,83, 12,9,8,3,7,83, 12,9,8,6,3,69, 12,8,12,3,3,84, 12,8,12,5,3,70, 12,8,7,3,8,84, 12,8,7,6,3,70, 12,7,13,3,2,85, + 12,7,13,5,3,71, 12,7,6,3,9,85, 12,7,6,6,3,71, 12,6,14,3,1,86, 12,6,14,5,12,55, 12,6,5,3,10,86, 12,6,5,6,3,72, 12,6,2,3,13,86, + 12,6,2,5,12,55, 12,6,1,3,14,86, 12,6,1,6,3,72, 12,5,14,5,12,56, 12,5,4,3,11,87, 12,5,3,3,12,87, 12,5,1,6,3,73, 12,4,15,3,0,88, + 12,4,15,5,12,57, 12,4,1,6,12,57, 12,3,15,4,12,58, 12,3,15,5,12,58, 12,3,13,4,12,58, 12,3,12,4,12,58, 12,3,5,4,12,58, 12,3,2,4,12,58, + 12,3,1,4,12,58, 12,3,1,6,12,58, 12,2,14,4,12,59, 12,2,14,5,12,59, 12,2,14,6,12,59, 12,2,11,4,12,59, 12,2,11,5,12,59, 12,2,10,4,12,59, + 12,2,6,6,12,59, 12,2,4,4,12,59, 12,2,4,5,12,59, 12,2,3,4,12,59, 12,2,3,6,12,59, 12,1,13,1,2,91, 12,1,13,3,2,91, 12,1,13,4,12,60, + 12,1,13,5,12,60, 12,1,12,1,3,91, 12,1,12,3,3,91, 12,1,12,6,12,60, 12,1,9,1,6,91, 12,1,9,5,12,60, 12,1,8,1,7,91, 12,1,7,1,8,91, + 12,1,6,1,9,91, 12,1,6,6,12,60, 12,0,12,1,3,92, 12,0,12,2,3,92, 12,0,12,5,3,78, 12,0,11,1,4,92, 12,0,11,2,4,92, 12,0,11,3,4,92, + 12,0,10,1,5,92, 12,0,10,2,5,92, 12,0,10,3,5,92, 12,0,9,1,6,92, 12,0,9,2,6,92, 12,0,8,1,7,92, 12,0,8,2,7,92, 12,0,7,1,8,92, + 12,0,7,2,8,92, 12,0,6,1,9,92, 12,0,6,2,9,92, 12,0,5,1,10,92, 12,0,5,2,10,92, 12,0,5,3,10,92, 12,0,4,1,11,92, 12,0,4,2,11,92, + 12,0,4,3,11,92, 12,0,3,1,12,92, 12,0,3,2,12,92, 12,0,3,3,12,92, 12,0,3,6,3,78, 13,8,12,3,3,84, 13,8,12,5,2,70, 13,8,11,3,4,84, + 13,8,10,3,5,84, 13,8,9,3,6,84, 13,8,8,3,7,84, 13,8,7,3,8,84, 13,8,7,6,2,70, 13,7,13,1,2,85, 13,7,13,3,2,85, 13,7,13,5,2,71, + 13,7,12,1,3,85, 13,7,11,1,4,85, 13,7,10,1,5,85, 13,7,9,1,6,85, 13,7,8,1,7,85, 13,7,7,1,8,85, 13,7,6,1,9,85, 13,7,6,3,9,85, + 13,7,6,6,2,71, 13,6,14,3,1,86, 13,6,14,5,2,72, 13,6,5,3,10,86, 13,6,5,6,2,72, 13,6,2,3,13,86, 13,6,2,5,2,72, 13,6,1,3,14,86, + 13,6,1,6,2,72, 13,5,14,1,1,87, 13,5,14,5,2,73, 13,5,13,1,2,87, 13,5,12,1,3,87, 13,5,11,1,4,87, 13,5,10,1,5,87, 13,5,9,1,6,87, + 13,5,8,1,7,87, 13,5,7,1,8,87, 13,5,6,1,9,87, 13,5,5,1,10,87, 13,5,4,1,11,87, 13,5,4,3,11,87, 13,5,3,1,12,87, 13,5,3,3,12,87, + 13,5,2,1,13,87, 13,5,1,1,14,87, 13,5,1,6,2,73, 13,4,15,1,0,88, 13,4,15,3,0,88, 13,4,15,5,13,57, 13,4,14,1,1,88, 13,4,13,1,2,88, + 13,4,12,1,3,88, 13,4,11,1,4,88, 13,4,10,1,5,88, 13,4,9,1,6,88, 13,4,8,1,7,88, 13,4,7,1,8,88, 13,4,6,1,9,88, 13,4,5,1,10,88, + 13,4,4,1,11,88, 13,4,3,1,12,88, 13,4,2,1,13,88, 13,4,1,1,14,88, 13,4,1,6,13,57, 13,3,15,1,0,89, 13,3,15,4,13,58, 13,3,15,5,13,58, + 13,3,14,1,1,89, 13,3,13,1,2,89, 13,3,13,4,13,58, 13,3,12,1,3,89, 13,3,12,4,13,58, 13,3,11,1,4,89, 13,3,10,1,5,89, 13,3,9,1,6,89, + 13,3,8,1,7,89, 13,3,7,1,8,89, 13,3,6,1,9,89, 13,3,5,1,10,89, 13,3,5,4,13,58, 13,3,4,1,11,89, 13,3,3,1,12,89, 13,3,2,1,13,89, + 13,3,2,4,13,58, 13,3,1,1,14,89, 13,3,1,4,13,58, 13,3,1,6,2,75, 13,2,14,4,13,59, 13,2,14,5,13,59, 13,2,14,6,13,59, 13,2,11,4,13,59, + 13,2,11,5,13,59, 13,2,10,4,13,59, 13,2,9,4,13,59, 13,2,8,4,13,59, 13,2,7,4,13,59, 13,2,6,4,13,59, 13,2,6,6,13,59, 13,2,4,4,13,59, + 13,2,4,5,13,59, 13,2,3,4,13,59, 13,2,3,6,13,59, 14,8,12,1,3,84, 14,8,12,3,3,84, 14,8,12,4,14,53, 14,8,12,5,14,53, 14,8,11,1,4,84, + 14,8,11,3,4,84, 14,8,11,4,14,53, 14,8,10,1,5,84, 14,8,10,3,5,84, 14,8,10,4,14,53, 14,8,9,1,6,84, 14,8,9,3,6,84, 14,8,9,4,14,53, + 14,8,8,1,7,84, 14,8,8,3,7,84, 14,8,8,4,14,53, 14,8,7,1,8,84, 14,8,7,3,8,84, 14,8,7,4,14,53, 14,8,7,6,14,53, 14,6,14,1,1,86, + 14,6,14,3,1,86, 14,6,14,4,14,55, 14,6,14,5,14,55, 14,6,13,1,2,86, 14,6,13,3,2,86, 14,6,13,4,14,55, 14,6,12,1,3,86, 14,6,12,3,3,86, + 14,6,12,4,14,55, 14,6,11,1,4,86, 14,6,11,3,4,86, 14,6,11,4,14,55, 14,6,10,1,5,86, 14,6,10,3,5,86, 14,6,10,4,14,55, 14,6,9,1,6,86, + 14,6,9,3,6,86, 14,6,9,4,14,55, 14,6,8,1,7,86, 14,6,8,3,7,86, 14,6,8,4,14,55, 14,6,7,1,8,86, 14,6,7,3,8,86, 14,6,7,4,14,55, + 14,6,6,1,9,86, 14,6,6,3,9,86, 14,6,6,4,14,55, 14,6,5,1,10,86, 14,6,5,3,10,86, 14,6,5,4,14,55, 14,6,5,6,14,55, 14,6,2,1,13,86, + 14,6,2,3,13,86, 14,6,2,4,14,55, 14,6,2,5,14,55, 14,6,1,1,14,86, 14,6,1,3,14,86, 14,6,1,4,14,55, 14,6,1,6,14,55, 14,2,14,1,1,90, + 14,2,14,3,1,90, 14,2,14,4,1,76, 14,2,14,5,1,76, 14,2,14,6,1,76, 14,2,11,1,4,90, 14,2,11,3,4,90, 14,2,11,4,1,76, 14,2,11,5,1,76, + 14,2,10,1,5,90, 14,2,10,3,5,90, 14,2,10,4,1,76, 14,2,9,1,6,90, 14,2,9,3,6,90, 14,2,8,1,7,90, 14,2,8,3,7,90, 14,2,7,1,8,90, + 14,2,7,3,8,90, 14,2,6,1,9,90, 14,2,6,3,9,90, 14,2,6,6,1,76, 14,2,4,1,11,90, 14,2,4,3,11,90, 14,2,4,4,1,76, 14,2,4,5,1,76, + 14,2,3,1,12,90, 14,2,3,3,12,90, 14,2,3,4,1,76, 14,2,3,6,1,76, 14,1,9,1,6,91, 14,1,9,2,6,91, 14,1,9,4,1,77, 14,1,9,5,1,77, + 14,1,8,1,7,91, 14,1,8,2,7,91, 14,1,8,4,1,77, 14,1,7,1,8,91, 14,1,7,2,8,91, 14,1,7,4,1,77, 14,1,6,1,9,91, 14,1,6,2,9,91, + 14,1,6,4,1,77, 14,1,6,6,1,77, + }, + }, + }, +} diff --git a/assets/voxels/silph_president.lua b/assets/voxels/silph_president.lua new file mode 100644 index 0000000..d0fc5af --- /dev/null +++ b/assets/voxels/silph_president.lua @@ -0,0 +1,163 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "silph_president" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "silph_president", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1772, + count = 1100, + faces = { + 0,6,11,2,5,41, 0,6,11,3,5,41, 0,6,11,5,0,9, 0,6,10,2,6,41, 0,6,10,3,6,41, 0,6,9,2,7,41, 0,6,9,3,7,41, 0,6,8,2,8,41, + 0,6,8,3,8,41, 0,6,7,2,9,41, 0,6,7,3,9,41, 0,6,6,2,10,41, 0,6,6,3,10,41, 0,6,5,2,11,41, 0,6,5,3,11,41, 0,6,5,6,15,25, + 0,5,12,2,4,42, 0,5,12,3,4,42, 0,5,12,4,0,10, 0,5,12,5,0,10, 0,5,11,2,5,42, 0,5,11,4,0,10, 0,5,10,2,6,42, 0,5,10,4,0,10, + 0,5,9,2,7,42, 0,5,9,4,0,10, 0,5,8,2,8,42, 0,5,8,4,0,10, 0,5,7,2,9,42, 0,5,7,4,0,10, 0,5,6,2,10,42, 0,5,6,4,0,10, + 0,5,5,2,11,42, 0,5,5,4,0,10, 0,5,4,2,12,42, 0,5,4,3,12,42, 0,5,4,4,0,10, 0,5,4,6,15,26, 1,11,13,2,3,36, 1,11,13,3,3,36, + 1,11,13,5,1,4, 1,11,12,2,4,36, 1,11,12,3,4,36, 1,11,11,2,5,36, 1,11,11,3,5,36, 1,11,10,2,6,36, 1,11,10,3,6,36, 1,11,9,2,7,36, + 1,11,9,3,7,36, 1,11,8,2,8,36, 1,11,8,3,8,36, 1,11,7,2,9,36, 1,11,7,3,9,36, 1,11,6,2,10,36, 1,11,6,3,10,36, 1,11,5,2,11,36, + 1,11,5,3,11,36, 1,11,4,2,12,36, 1,11,4,3,12,36, 1,11,3,2,13,36, 1,11,3,3,13,36, 1,11,3,6,14,20, 1,10,13,2,3,37, 1,10,13,5,1,5, + 1,10,12,2,4,37, 1,10,11,2,5,37, 1,10,10,2,6,37, 1,10,9,2,7,37, 1,10,8,2,8,37, 1,10,7,2,9,37, 1,10,6,2,10,37, 1,10,5,2,11,37, + 1,10,4,2,12,37, 1,10,3,2,13,37, 1,10,3,6,14,21, 1,9,13,2,3,38, 1,9,13,4,1,6, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,12,4,1,6, + 1,9,11,2,5,38, 1,9,11,4,1,6, 1,9,10,2,6,38, 1,9,10,4,1,6, 1,9,9,2,7,38, 1,9,9,4,1,6, 1,9,8,2,8,38, 1,9,8,4,1,6, + 1,9,7,2,9,38, 1,9,7,4,1,6, 1,9,6,2,10,38, 1,9,6,4,1,6, 1,9,5,2,11,38, 1,9,5,4,1,6, 1,9,4,2,12,38, 1,9,4,4,1,6, + 1,9,3,2,13,38, 1,9,3,4,1,6, 1,9,3,6,14,22, 1,7,12,2,4,40, 1,7,12,3,4,40, 1,7,12,4,1,8, 1,7,12,5,1,8, 1,7,11,2,5,40, + 1,7,11,3,5,40, 1,7,10,2,6,40, 1,7,10,3,6,40, 1,7,9,2,7,40, 1,7,9,3,7,40, 1,7,8,2,8,40, 1,7,8,3,8,40, 1,7,7,2,9,40, + 1,7,7,3,9,40, 1,7,6,2,10,40, 1,7,6,3,10,40, 1,7,5,2,11,40, 1,7,5,3,11,40, 1,7,4,2,12,40, 1,7,4,3,12,40, 1,7,4,4,1,8, + 1,7,4,6,14,24, 1,6,11,5,1,9, 1,6,5,6,14,25, 1,5,12,3,4,42, 1,5,12,5,1,10, 1,5,4,3,12,42, 1,5,4,6,14,26, 1,4,13,2,3,43, + 1,4,13,3,3,43, 1,4,13,4,1,11, 1,4,13,5,1,11, 1,4,12,2,4,43, 1,4,12,4,1,11, 1,4,11,2,5,43, 1,4,11,4,1,11, 1,4,10,2,6,43, + 1,4,10,4,1,11, 1,4,9,2,7,43, 1,4,9,4,1,11, 1,4,8,2,8,43, 1,4,8,4,1,11, 1,4,7,2,9,43, 1,4,7,4,1,11, 1,4,6,2,10,43, + 1,4,6,4,1,11, 1,4,5,2,11,43, 1,4,5,4,1,11, 1,4,4,2,12,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,12,13,2,3,35, 2,12,13,3,3,35, + 2,12,13,5,2,3, 2,12,12,2,4,35, 2,12,12,3,4,35, 2,12,11,2,5,35, 2,12,11,3,5,35, 2,12,10,2,6,35, 2,12,10,3,6,35, 2,12,9,2,7,35, + 2,12,9,3,7,35, 2,12,8,2,8,35, 2,12,8,3,8,35, 2,12,7,2,9,35, 2,12,7,3,9,35, 2,12,6,2,10,35, 2,12,6,3,10,35, 2,12,5,2,11,35, + 2,12,5,3,11,35, 2,12,4,2,12,35, 2,12,4,3,12,35, 2,12,3,2,13,35, 2,12,3,3,13,35, 2,12,3,6,13,19, 2,11,13,5,2,4, 2,11,3,6,13,20, + 2,10,13,5,2,5, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,3,6,13,22, 2,8,13,2,3,39, 2,8,13,4,2,7, 2,8,13,5,2,7, 2,8,12,2,4,39, + 2,8,11,2,5,39, 2,8,10,2,6,39, 2,8,9,2,7,39, 2,8,8,2,8,39, 2,8,7,2,9,39, 2,8,6,2,10,39, 2,8,5,2,11,39, 2,8,4,2,12,39, + 2,8,3,2,13,39, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,4,4,2,8, 2,7,4,6,13,24, 2,6,11,5,2,9, + 2,6,5,6,13,25, 2,5,12,3,4,42, 2,5,12,5,2,10, 2,5,4,3,12,42, 2,5,4,6,13,26, 2,4,13,3,3,43, 2,4,13,5,2,11, 2,4,4,6,13,27, + 2,3,13,2,3,44, 2,3,13,4,2,12, 2,3,13,5,2,12, 2,3,12,2,4,44, 2,3,11,2,5,44, 2,3,10,2,6,44, 2,3,9,2,7,44, 2,3,8,2,8,44, + 2,3,7,2,9,44, 2,3,6,2,10,44, 2,3,5,2,11,44, 2,3,4,2,12,44, 2,3,4,4,2,12, 2,3,4,6,13,28, 2,2,12,2,4,45, 2,2,12,5,2,13, + 2,2,11,2,5,45, 2,2,10,2,6,45, 2,2,9,2,7,45, 2,2,8,2,8,45, 2,2,7,2,9,45, 2,2,6,2,10,45, 2,2,5,2,11,45, 2,2,5,4,2,13, + 2,2,5,6,13,29, 2,1,12,2,4,46, 2,1,12,4,2,14, 2,1,12,5,2,14, 2,1,11,2,5,46, 2,1,11,4,2,14, 2,1,10,2,6,46, 2,1,10,4,2,14, + 2,1,9,2,7,46, 2,1,9,4,2,14, 2,1,8,2,8,46, 2,1,8,4,2,14, 2,1,7,2,9,46, 2,1,7,4,2,14, 2,1,6,2,10,46, 2,1,6,4,2,14, + 2,1,6,6,13,30, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,12,5,3,2, 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, 3,13,10,3,6,34, + 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, 3,13,6,3,10,34, + 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,4,6,12,18, 3,12,13,3,3,35, 3,12,13,5,3,3, 3,12,3,3,13,35, + 3,12,3,6,12,19, 3,11,13,5,3,4, 3,11,3,6,12,20, 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,3,6,12,22, 3,8,13,4,3,7, + 3,8,13,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,4,4,3,8, 3,7,4,6,12,24, 3,6,11,5,3,9, + 3,6,5,6,12,25, 3,5,12,3,4,42, 3,5,12,5,3,10, 3,5,4,3,12,42, 3,5,4,6,12,26, 3,4,13,3,3,43, 3,4,13,5,3,11, 3,4,4,6,12,27, + 3,3,13,4,3,12, 3,3,13,5,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, 3,2,12,5,3,13, 3,2,5,4,3,13, 3,2,5,6,12,29, 3,1,12,4,3,14, + 3,1,12,5,3,14, 3,1,6,6,12,30, 3,0,11,2,5,47, 3,0,11,5,3,15, 3,0,10,2,6,47, 3,0,9,2,7,47, 3,0,8,2,8,47, 3,0,7,2,9,47, + 3,0,6,2,10,47, 3,0,6,6,12,31, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,11,5,4,1, 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, + 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,5,2,11,33, + 4,14,5,3,11,33, 4,14,5,6,11,17, 4,13,12,3,4,34, 4,13,12,5,4,2, 4,13,4,3,12,34, 4,13,4,6,11,18, 4,12,13,3,3,35, 4,12,13,5,4,3, + 4,12,3,3,13,35, 4,12,3,6,11,19, 4,11,13,5,4,4, 4,11,3,6,11,20, 4,10,13,5,4,5, 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,6,11,22, + 4,8,13,4,4,7, 4,8,13,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,4,4,8, 4,7,4,6,11,24, + 4,6,11,5,4,9, 4,6,5,6,11,25, 4,5,12,3,4,42, 4,5,12,5,4,10, 4,5,4,3,12,42, 4,5,4,6,11,26, 4,4,13,3,3,43, 4,4,13,5,4,11, + 4,4,4,6,11,27, 4,3,13,4,4,12, 4,3,13,5,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,12,5,4,13, 4,2,5,4,4,13, 4,2,5,6,11,29, + 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,6,6,11,30, 4,0,11,5,4,15, 4,0,6,6,11,31, 5,15,10,2,6,32, 5,15,10,3,6,32, 5,15,10,5,5,0, + 5,15,9,2,7,32, 5,15,9,3,7,32, 5,15,8,2,8,32, 5,15,8,3,8,32, 5,15,7,2,9,32, 5,15,7,3,9,32, 5,15,6,2,10,32, 5,15,6,3,10,32, + 5,15,6,6,10,16, 5,14,11,3,5,33, 5,14,11,5,5,1, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,12,3,4,34, 5,13,12,5,5,2, 5,13,4,3,12,34, + 5,13,4,6,10,18, 5,12,13,3,3,35, 5,12,13,5,5,3, 5,12,3,3,13,35, 5,12,3,6,10,19, 5,11,13,5,5,4, 5,11,3,6,10,20, 5,10,13,5,5,5, + 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,3,6,10,22, 5,8,13,4,5,7, 5,8,13,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, + 5,7,12,5,5,8, 5,7,4,4,5,8, 5,7,4,6,10,24, 5,6,11,5,5,9, 5,6,5,6,10,25, 5,5,12,3,4,42, 5,5,12,5,5,10, 5,5,4,3,12,42, + 5,5,4,6,10,26, 5,4,13,3,3,43, 5,4,13,5,5,11, 5,4,4,6,10,27, 5,3,13,4,5,12, 5,3,13,5,5,12, 5,3,4,4,5,12, 5,3,4,6,10,28, + 5,2,12,5,5,13, 5,2,5,4,5,13, 5,2,5,6,10,29, 5,1,12,4,5,14, 5,1,12,5,5,14, 5,1,6,6,10,30, 5,0,11,5,5,15, 5,0,6,6,10,31, + 6,15,10,3,6,32, 6,15,10,5,6,0, 6,15,9,3,7,32, 6,15,8,3,8,32, 6,15,7,3,9,32, 6,15,6,3,10,32, 6,15,6,6,9,16, 6,14,11,3,5,33, + 6,14,11,5,6,1, 6,14,5,3,11,33, 6,14,5,6,9,17, 6,13,12,3,4,34, 6,13,12,5,6,2, 6,13,4,3,12,34, 6,13,4,6,9,18, 6,12,13,3,3,35, + 6,12,13,5,6,3, 6,12,3,3,13,35, 6,12,3,6,9,19, 6,11,13,5,6,4, 6,11,3,6,9,20, 6,10,13,5,6,5, 6,10,3,6,9,21, 6,9,13,5,6,6, + 6,9,3,6,9,22, 6,8,13,4,6,7, 6,8,13,5,6,7, 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,4,4,6,8, + 6,7,4,6,9,24, 6,6,11,5,6,9, 6,6,5,6,9,25, 6,5,12,3,4,42, 6,5,12,5,6,10, 6,5,4,3,12,42, 6,5,4,6,9,26, 6,4,13,3,3,43, + 6,4,13,5,6,11, 6,4,4,6,9,27, 6,3,13,4,6,12, 6,3,13,5,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,12,5,6,13, 6,2,5,4,6,13, + 6,2,5,6,9,29, 6,1,12,4,6,14, 6,1,12,5,6,14, 6,1,6,6,9,30, 6,0,11,1,5,47, 6,0,11,5,6,15, 6,0,10,1,6,47, 6,0,9,1,7,47, + 6,0,8,1,8,47, 6,0,7,1,9,47, 6,0,6,1,10,47, 6,0,6,6,9,31, 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, + 7,15,7,3,9,32, 7,15,6,3,10,32, 7,15,6,6,8,16, 7,14,11,3,5,33, 7,14,11,5,7,1, 7,14,5,3,11,33, 7,14,5,6,8,17, 7,13,12,3,4,34, + 7,13,12,5,7,2, 7,13,4,3,12,34, 7,13,4,6,8,18, 7,12,13,3,3,35, 7,12,13,5,7,3, 7,12,3,3,13,35, 7,12,3,6,8,19, 7,11,13,5,7,4, + 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,3,6,8,22, 7,8,13,4,7,7, 7,8,13,5,7,7, 7,8,3,4,7,7, + 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,4,4,7,8, 7,7,4,6,8,24, 7,6,11,5,7,9, 7,6,5,6,8,25, 7,5,12,3,4,42, + 7,5,12,5,7,10, 7,5,4,3,12,42, 7,5,4,6,8,26, 7,4,13,3,3,43, 7,4,13,5,7,11, 7,4,4,6,8,27, 7,3,13,4,7,12, 7,3,13,5,7,12, + 7,3,4,4,7,12, 7,3,4,6,8,28, 7,2,12,5,7,13, 7,2,5,4,7,13, 7,2,5,6,8,29, 7,1,12,4,7,14, 7,1,12,5,7,14, 7,1,11,4,7,14, + 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,6,6,8,30, 8,15,10,3,6,32, 8,15,10,5,8,0, + 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,6,6,7,16, 8,14,11,3,5,33, 8,14,11,5,8,1, 8,14,5,3,11,33, + 8,14,5,6,7,17, 8,13,12,3,4,34, 8,13,12,5,8,2, 8,13,4,3,12,34, 8,13,4,6,7,18, 8,12,13,3,3,35, 8,12,13,5,8,3, 8,12,3,3,13,35, + 8,12,3,6,7,19, 8,11,13,5,8,4, 8,11,3,6,7,20, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,6,7,22, 8,8,13,4,8,7, + 8,8,13,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,4,8,8, 8,7,4,6,7,24, 8,6,11,5,8,9, + 8,6,5,6,7,25, 8,5,12,3,4,42, 8,5,12,5,8,10, 8,5,4,3,12,42, 8,5,4,6,7,26, 8,4,13,3,3,43, 8,4,13,5,8,11, 8,4,4,6,7,27, + 8,3,13,4,8,12, 8,3,13,5,8,12, 8,3,4,4,8,12, 8,3,4,6,7,28, 8,2,12,5,8,13, 8,2,5,4,8,13, 8,2,5,6,7,29, 8,1,12,4,8,14, + 8,1,12,5,8,14, 8,1,11,4,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,6,6,7,30, + 9,15,10,3,6,32, 9,15,10,5,9,0, 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, 9,15,6,3,10,32, 9,15,6,6,6,16, 9,14,11,3,5,33, + 9,14,11,5,9,1, 9,14,5,3,11,33, 9,14,5,6,6,17, 9,13,12,3,4,34, 9,13,12,5,9,2, 9,13,4,3,12,34, 9,13,4,6,6,18, 9,12,13,3,3,35, + 9,12,13,5,9,3, 9,12,3,3,13,35, 9,12,3,6,6,19, 9,11,13,5,9,4, 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, + 9,9,3,6,6,22, 9,8,13,4,9,7, 9,8,13,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,4,4,9,8, + 9,7,4,6,6,24, 9,6,11,5,9,9, 9,6,5,6,6,25, 9,5,12,3,4,42, 9,5,12,5,9,10, 9,5,4,3,12,42, 9,5,4,6,6,26, 9,4,13,3,3,43, + 9,4,13,5,9,11, 9,4,4,6,6,27, 9,3,13,4,9,12, 9,3,13,5,9,12, 9,3,4,4,9,12, 9,3,4,6,6,28, 9,2,12,5,9,13, 9,2,5,4,9,13, + 9,2,5,6,6,29, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,6,6,6,30, 9,0,11,2,5,47, 9,0,11,5,9,15, 9,0,10,2,6,47, 9,0,9,2,7,47, + 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,6,2,10,47, 9,0,6,6,6,31, 10,15,10,1,6,32, 10,15,10,3,6,32, 10,15,10,5,10,0, 10,15,9,1,7,32, + 10,15,9,3,7,32, 10,15,8,1,8,32, 10,15,8,3,8,32, 10,15,7,1,9,32, 10,15,7,3,9,32, 10,15,6,1,10,32, 10,15,6,3,10,32, 10,15,6,6,5,16, + 10,14,11,3,5,33, 10,14,11,5,10,1, 10,14,5,3,11,33, 10,14,5,6,5,17, 10,13,12,3,4,34, 10,13,12,5,10,2, 10,13,4,3,12,34, 10,13,4,6,5,18, + 10,12,13,3,3,35, 10,12,13,5,10,3, 10,12,3,3,13,35, 10,12,3,6,5,19, 10,11,13,5,10,4, 10,11,3,6,5,20, 10,10,13,5,10,5, 10,10,3,6,5,21, + 10,9,13,5,10,6, 10,9,3,6,5,22, 10,8,13,4,10,7, 10,8,13,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, + 10,7,4,4,10,8, 10,7,4,6,5,24, 10,6,11,5,10,9, 10,6,5,6,5,25, 10,5,12,3,4,42, 10,5,12,5,10,10, 10,5,4,3,12,42, 10,5,4,6,5,26, + 10,4,13,3,3,43, 10,4,13,5,10,11, 10,4,4,6,5,27, 10,3,13,4,10,12, 10,3,13,5,10,12, 10,3,4,4,10,12, 10,3,4,6,5,28, 10,2,12,5,10,13, + 10,2,5,4,10,13, 10,2,5,6,5,29, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,6,6,5,30, 10,0,11,5,10,15, 10,0,6,6,5,31, 11,14,11,1,5,33, + 11,14,11,3,5,33, 11,14,11,5,11,1, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, 11,14,8,3,8,33, + 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,5,6,4,17, 11,13,12,3,4,34, + 11,13,12,5,11,2, 11,13,4,3,12,34, 11,13,4,6,4,18, 11,12,13,3,3,35, 11,12,13,5,11,3, 11,12,3,3,13,35, 11,12,3,6,4,19, 11,11,13,5,11,4, + 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,6,4,22, 11,8,13,4,11,7, 11,8,13,5,11,7, 11,8,3,4,11,7, + 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,4,4,11,8, 11,7,4,6,4,24, 11,6,11,5,11,9, 11,6,5,6,4,25, 11,5,12,3,4,42, + 11,5,12,5,11,10, 11,5,4,3,12,42, 11,5,4,6,4,26, 11,4,13,3,3,43, 11,4,13,5,11,11, 11,4,4,6,4,27, 11,3,13,4,11,12, 11,3,13,5,11,12, + 11,3,4,4,11,12, 11,3,4,6,4,28, 11,2,12,5,11,13, 11,2,5,4,11,13, 11,2,5,6,4,29, 11,1,12,4,11,14, 11,1,12,5,11,14, 11,1,6,6,4,30, + 11,0,11,5,11,15, 11,0,6,6,4,31, 12,13,12,1,4,34, 12,13,12,3,4,34, 12,13,12,5,12,2, 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, + 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, + 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,4,1,12,34, 12,13,4,3,12,34, 12,13,4,6,3,18, 12,12,13,3,3,35, 12,12,13,5,12,3, + 12,12,3,3,13,35, 12,12,3,6,3,19, 12,11,13,5,12,4, 12,11,3,6,3,20, 12,10,13,5,12,5, 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,3,6,3,22, + 12,8,13,4,12,7, 12,8,13,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,4,12,8, 12,7,4,6,3,24, + 12,6,11,5,12,9, 12,6,5,6,3,25, 12,5,12,3,4,42, 12,5,12,5,12,10, 12,5,4,3,12,42, 12,5,4,6,3,26, 12,4,13,3,3,43, 12,4,13,5,12,11, + 12,4,4,6,3,27, 12,3,13,4,12,12, 12,3,13,5,12,12, 12,3,4,4,12,12, 12,3,4,6,3,28, 12,2,12,5,12,13, 12,2,5,4,12,13, 12,2,5,6,3,29, + 12,1,12,4,12,14, 12,1,12,5,12,14, 12,1,6,6,3,30, 12,0,11,1,5,47, 12,0,11,5,12,15, 12,0,10,1,6,47, 12,0,9,1,7,47, 12,0,8,1,8,47, + 12,0,7,1,9,47, 12,0,6,1,10,47, 12,0,6,6,3,31, 13,12,13,1,3,35, 13,12,13,3,3,35, 13,12,13,5,13,3, 13,12,12,1,4,35, 13,12,12,3,4,35, + 13,12,11,1,5,35, 13,12,11,3,5,35, 13,12,10,1,6,35, 13,12,10,3,6,35, 13,12,9,1,7,35, 13,12,9,3,7,35, 13,12,8,1,8,35, 13,12,8,3,8,35, + 13,12,7,1,9,35, 13,12,7,3,9,35, 13,12,6,1,10,35, 13,12,6,3,10,35, 13,12,5,1,11,35, 13,12,5,3,11,35, 13,12,4,1,12,35, 13,12,4,3,12,35, + 13,12,3,1,13,35, 13,12,3,3,13,35, 13,12,3,6,2,19, 13,11,13,5,13,4, 13,11,3,6,2,20, 13,10,13,5,13,5, 13,10,3,6,2,21, 13,9,13,5,13,6, + 13,9,3,6,2,22, 13,8,13,1,3,39, 13,8,13,4,13,7, 13,8,13,5,13,7, 13,8,12,1,4,39, 13,8,11,1,5,39, 13,8,10,1,6,39, 13,8,9,1,7,39, + 13,8,8,1,8,39, 13,8,7,1,9,39, 13,8,6,1,10,39, 13,8,5,1,11,39, 13,8,4,1,12,39, 13,8,3,1,13,39, 13,8,3,4,13,7, 13,8,3,6,2,23, + 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,4,4,13,8, 13,7,4,6,2,24, 13,6,11,5,13,9, 13,6,5,6,2,25, 13,5,12,3,4,42, 13,5,12,5,13,10, + 13,5,4,3,12,42, 13,5,4,6,2,26, 13,4,13,3,3,43, 13,4,13,5,13,11, 13,4,4,6,2,27, 13,3,13,1,3,44, 13,3,13,4,13,12, 13,3,13,5,13,12, + 13,3,12,1,4,44, 13,3,11,1,5,44, 13,3,10,1,6,44, 13,3,9,1,7,44, 13,3,8,1,8,44, 13,3,7,1,9,44, 13,3,6,1,10,44, 13,3,5,1,11,44, + 13,3,4,1,12,44, 13,3,4,4,13,12, 13,3,4,6,2,28, 13,2,12,1,4,45, 13,2,12,5,13,13, 13,2,11,1,5,45, 13,2,10,1,6,45, 13,2,9,1,7,45, + 13,2,8,1,8,45, 13,2,7,1,9,45, 13,2,6,1,10,45, 13,2,5,1,11,45, 13,2,5,4,13,13, 13,2,5,6,2,29, 13,1,12,1,4,46, 13,1,12,4,13,14, + 13,1,12,5,13,14, 13,1,11,1,5,46, 13,1,11,4,13,14, 13,1,10,1,6,46, 13,1,10,4,13,14, 13,1,9,1,7,46, 13,1,9,4,13,14, 13,1,8,1,8,46, + 13,1,8,4,13,14, 13,1,7,1,9,46, 13,1,7,4,13,14, 13,1,6,1,10,46, 13,1,6,4,13,14, 13,1,6,6,2,30, 14,11,13,1,3,36, 14,11,13,3,3,36, + 14,11,13,5,14,4, 14,11,12,1,4,36, 14,11,12,3,4,36, 14,11,11,1,5,36, 14,11,11,3,5,36, 14,11,10,1,6,36, 14,11,10,3,6,36, 14,11,9,1,7,36, + 14,11,9,3,7,36, 14,11,8,1,8,36, 14,11,8,3,8,36, 14,11,7,1,9,36, 14,11,7,3,9,36, 14,11,6,1,10,36, 14,11,6,3,10,36, 14,11,5,1,11,36, + 14,11,5,3,11,36, 14,11,4,1,12,36, 14,11,4,3,12,36, 14,11,3,1,13,36, 14,11,3,3,13,36, 14,11,3,6,1,20, 14,10,13,1,3,37, 14,10,13,5,14,5, + 14,10,12,1,4,37, 14,10,11,1,5,37, 14,10,10,1,6,37, 14,10,9,1,7,37, 14,10,8,1,8,37, 14,10,7,1,9,37, 14,10,6,1,10,37, 14,10,5,1,11,37, + 14,10,4,1,12,37, 14,10,3,1,13,37, 14,10,3,6,1,21, 14,9,13,1,3,38, 14,9,13,4,14,6, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,12,4,14,6, + 14,9,11,1,5,38, 14,9,11,4,14,6, 14,9,10,1,6,38, 14,9,10,4,14,6, 14,9,9,1,7,38, 14,9,9,4,14,6, 14,9,8,1,8,38, 14,9,8,4,14,6, + 14,9,7,1,9,38, 14,9,7,4,14,6, 14,9,6,1,10,38, 14,9,6,4,14,6, 14,9,5,1,11,38, 14,9,5,4,14,6, 14,9,4,1,12,38, 14,9,4,4,14,6, + 14,9,3,1,13,38, 14,9,3,4,14,6, 14,9,3,6,1,22, 14,7,12,1,4,40, 14,7,12,3,4,40, 14,7,12,4,14,8, 14,7,12,5,14,8, 14,7,11,1,5,40, + 14,7,11,3,5,40, 14,7,10,1,6,40, 14,7,10,3,6,40, 14,7,9,1,7,40, 14,7,9,3,7,40, 14,7,8,1,8,40, 14,7,8,3,8,40, 14,7,7,1,9,40, + 14,7,7,3,9,40, 14,7,6,1,10,40, 14,7,6,3,10,40, 14,7,5,1,11,40, 14,7,5,3,11,40, 14,7,4,1,12,40, 14,7,4,3,12,40, 14,7,4,4,14,8, + 14,7,4,6,1,24, 14,6,11,5,14,9, 14,6,5,6,1,25, 14,5,12,3,4,42, 14,5,12,5,14,10, 14,5,4,3,12,42, 14,5,4,6,1,26, 14,4,13,1,3,43, + 14,4,13,3,3,43, 14,4,13,4,14,11, 14,4,13,5,14,11, 14,4,12,1,4,43, 14,4,12,4,14,11, 14,4,11,1,5,43, 14,4,11,4,14,11, 14,4,10,1,6,43, + 14,4,10,4,14,11, 14,4,9,1,7,43, 14,4,9,4,14,11, 14,4,8,1,8,43, 14,4,8,4,14,11, 14,4,7,1,9,43, 14,4,7,4,14,11, 14,4,6,1,10,43, + 14,4,6,4,14,11, 14,4,5,1,11,43, 14,4,5,4,14,11, 14,4,4,1,12,43, 14,4,4,4,14,11, 14,4,4,6,1,27, 15,6,11,1,5,41, 15,6,11,3,5,41, + 15,6,11,5,15,9, 15,6,10,1,6,41, 15,6,10,3,6,41, 15,6,9,1,7,41, 15,6,9,3,7,41, 15,6,8,1,8,41, 15,6,8,3,8,41, 15,6,7,1,9,41, + 15,6,7,3,9,41, 15,6,6,1,10,41, 15,6,6,3,10,41, 15,6,5,1,11,41, 15,6,5,3,11,41, 15,6,5,6,0,25, 15,5,12,1,4,42, 15,5,12,3,4,42, + 15,5,12,4,15,10, 15,5,12,5,15,10, 15,5,11,1,5,42, 15,5,11,4,15,10, 15,5,10,1,6,42, 15,5,10,4,15,10, 15,5,9,1,7,42, 15,5,9,4,15,10, + 15,5,8,1,8,42, 15,5,8,4,15,10, 15,5,7,1,9,42, 15,5,7,4,15,10, 15,5,6,1,10,42, 15,5,6,4,15,10, 15,5,5,1,11,42, 15,5,5,4,15,10, + 15,5,4,1,12,42, 15,5,4,3,12,42, 15,5,4,4,15,10, 15,5,4,6,0,26, + }, + }, + }, +} diff --git a/assets/voxels/silph_worker_f.lua b/assets/voxels/silph_worker_f.lua new file mode 100644 index 0000000..5bc8cf4 --- /dev/null +++ b/assets/voxels/silph_worker_f.lua @@ -0,0 +1,262 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "silph_worker_f" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "silph_worker_f", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1230, + count = 888, + faces = { + 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,13,4,2,4, 2,11,13,5,2,4, 2,11,12,2,3,36, 2,11,12,3,3,36, 2,11,11,2,4,36, 2,11,11,3,4,36, + 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, 2,11,8,3,7,36, 2,11,7,2,8,36, 2,11,7,3,8,36, + 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, 2,11,4,3,11,36, 2,11,3,2,12,36, 2,11,3,3,12,36, + 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,12,2,3,37, 2,10,12,5,2,5, 2,10,11,2,4,37, 2,10,10,2,5,37, 2,10,9,2,6,37, + 2,10,8,2,7,37, 2,10,7,2,8,37, 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, 2,10,2,6,13,21, + 2,9,12,2,3,38, 2,9,12,5,2,6, 2,9,11,2,4,38, 2,9,10,2,5,38, 2,9,9,2,6,38, 2,9,8,2,7,38, 2,9,7,2,8,38, 2,9,6,2,9,38, + 2,9,5,2,10,38, 2,9,4,2,11,38, 2,9,3,2,12,38, 2,9,2,2,13,38, 2,9,2,6,13,22, 2,8,12,2,3,39, 2,8,12,5,2,7, 2,8,11,2,4,39, + 2,8,10,2,5,39, 2,8,9,2,6,39, 2,8,8,2,7,39, 2,8,7,2,8,39, 2,8,6,2,9,39, 2,8,5,2,10,39, 2,8,4,2,11,39, 2,8,3,2,12,39, + 2,8,2,2,13,39, 2,8,2,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,11,4,2,8, 2,7,10,2,5,40, + 2,7,10,4,2,8, 2,7,9,2,6,40, 2,7,9,4,2,8, 2,7,8,2,7,40, 2,7,8,4,2,8, 2,7,7,2,8,40, 2,7,7,4,2,8, 2,7,6,2,9,40, + 2,7,6,4,2,8, 2,7,5,2,10,40, 2,7,5,4,2,8, 2,7,4,2,11,40, 2,7,4,4,2,8, 2,7,3,2,12,40, 2,7,3,4,2,8, 2,7,2,2,13,40, + 2,7,2,4,2,8, 2,7,2,6,13,24, 3,13,13,2,2,34, 3,13,13,3,2,34, 3,13,13,5,3,2, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,11,2,4,34, + 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, + 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,4,6,12,18, + 3,12,13,2,2,35, 3,12,13,5,3,3, 3,12,12,2,3,35, 3,12,11,2,4,35, 3,12,10,2,5,35, 3,12,9,2,6,35, 3,12,8,2,7,35, 3,12,7,2,8,35, + 3,12,6,2,9,35, 3,12,5,2,10,35, 3,12,4,2,11,35, 3,12,3,2,12,35, 3,12,3,3,12,35, 3,12,3,6,12,19, 3,11,13,4,3,4, 3,11,13,5,3,4, + 3,11,2,3,13,36, 3,11,2,6,12,20, 3,10,12,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,2,6,12,23, + 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,11,4,3,8, 3,7,10,4,3,8, 3,7,9,4,3,8, 3,7,8,4,3,8, 3,7,7,4,3,8, 3,7,6,4,3,8, + 3,7,5,4,3,8, 3,7,4,4,3,8, 3,7,3,4,3,8, 3,7,2,4,3,8, 3,7,2,6,12,24, 3,4,9,2,6,43, 3,4,9,3,6,43, 3,4,9,4,3,11, + 3,4,9,5,3,11, 3,4,8,2,7,43, 3,4,8,3,7,43, 3,4,8,4,3,11, 3,4,7,2,8,43, 3,4,7,3,8,43, 3,4,7,4,3,11, 3,4,6,2,9,43, + 3,4,6,3,9,43, 3,4,6,4,3,11, 3,4,6,6,12,27, 4,14,12,2,3,33, 4,14,12,3,3,33, 4,14,12,5,4,1, 4,14,11,2,4,33, 4,14,11,3,4,33, + 4,14,10,2,5,33, 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, + 4,14,6,2,9,33, 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,5,6,11,17, 4,13,13,3,2,34, 4,13,13,5,4,2, 4,13,4,3,11,34, + 4,13,4,6,11,18, 4,12,13,5,4,3, 4,12,3,3,12,35, 4,12,3,6,11,19, 4,11,13,4,4,4, 4,11,13,5,4,4, 4,11,2,3,13,36, 4,11,2,6,11,20, + 4,10,12,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,2,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, + 4,7,11,4,4,8, 4,7,10,4,4,8, 4,7,9,4,4,8, 4,7,8,4,4,8, 4,7,7,4,4,8, 4,7,6,4,4,8, 4,7,5,4,4,8, 4,7,4,4,4,8, + 4,7,3,4,4,8, 4,7,2,4,4,8, 4,7,2,6,11,24, 4,5,10,2,5,42, 4,5,10,3,5,42, 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,9,2,6,42, + 4,5,9,3,6,42, 4,5,8,2,7,42, 4,5,8,3,7,42, 4,5,7,2,8,42, 4,5,7,3,8,42, 4,5,7,6,11,26, 4,4,9,5,4,11, 4,4,6,3,9,43, + 4,4,6,6,11,27, 4,3,9,2,6,44, 4,3,9,4,4,12, 4,3,9,5,4,12, 4,3,8,2,7,44, 4,3,8,4,4,12, 4,3,7,2,8,44, 4,3,7,4,4,12, + 4,3,6,2,9,44, 4,3,6,4,4,12, 4,3,6,6,11,28, 5,15,11,2,4,32, 5,15,11,3,4,32, 5,15,11,5,5,0, 5,15,10,2,5,32, 5,15,10,3,5,32, + 5,15,9,2,6,32, 5,15,9,3,6,32, 5,15,8,2,7,32, 5,15,8,3,7,32, 5,15,7,2,8,32, 5,15,7,3,8,32, 5,15,6,2,9,32, 5,15,6,3,9,32, + 5,15,6,6,10,16, 5,14,12,3,3,33, 5,14,12,5,5,1, 5,14,5,3,10,33, 5,14,5,6,10,17, 5,13,13,3,2,34, 5,13,13,5,5,2, 5,13,4,3,11,34, + 5,13,4,6,10,18, 5,12,13,5,5,3, 5,12,3,3,12,35, 5,12,3,6,10,19, 5,11,13,4,5,4, 5,11,13,5,5,4, 5,11,2,3,13,36, 5,11,2,6,10,20, + 5,10,12,5,5,5, 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,2,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, + 5,7,2,6,10,24, 5,6,11,2,4,41, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,10,2,5,41, 5,6,9,2,6,41, 5,6,8,2,7,41, 5,6,7,2,8,41, + 5,6,6,2,9,41, 5,6,6,4,5,9, 5,6,5,2,10,41, 5,6,5,4,5,9, 5,6,4,2,11,41, 5,6,4,4,5,9, 5,6,3,2,12,41, 5,6,3,4,5,9, + 5,6,2,2,13,41, 5,6,2,4,5,9, 5,6,2,6,10,25, 5,5,10,4,5,10, 5,5,10,5,5,10, 5,5,7,6,10,26, 5,4,9,5,5,11, 5,4,6,3,9,43, + 5,4,6,6,10,27, 5,3,9,5,5,12, 5,3,6,6,10,28, 5,2,10,2,5,45, 5,2,10,3,5,45, 5,2,10,5,5,13, 5,2,9,2,6,45, 5,2,8,2,7,45, + 5,2,7,2,8,45, 5,2,6,2,9,45, 5,2,5,2,10,45, 5,2,5,3,10,45, 5,2,5,6,10,29, 5,1,10,2,5,46, 5,1,10,4,5,14, 5,1,10,5,5,14, + 5,1,9,2,6,46, 5,1,9,4,5,14, 5,1,8,2,7,46, 5,1,8,4,5,14, 5,1,7,2,8,46, 5,1,7,4,5,14, 5,1,6,2,9,46, 5,1,6,4,5,14, + 5,1,5,2,10,46, 5,1,5,4,5,14, 5,1,5,6,10,30, 6,15,11,3,4,32, 6,15,11,5,6,0, 6,15,10,3,5,32, 6,15,9,3,6,32, 6,15,8,3,7,32, + 6,15,7,3,8,32, 6,15,6,3,9,32, 6,15,6,6,9,16, 6,14,12,3,3,33, 6,14,12,5,6,1, 6,14,5,3,10,33, 6,14,5,6,9,17, 6,13,13,3,2,34, + 6,13,13,5,6,2, 6,13,4,3,11,34, 6,13,4,6,9,18, 6,12,13,5,6,3, 6,12,3,3,12,35, 6,12,3,6,9,19, 6,11,13,4,6,4, 6,11,13,5,6,4, + 6,11,2,3,13,36, 6,11,2,6,9,20, 6,10,12,5,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,2,6,9,23, + 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,2,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, 6,6,6,4,6,9, 6,6,5,4,6,9, 6,6,4,4,6,9, + 6,6,3,4,6,9, 6,6,2,4,6,9, 6,6,2,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, 6,5,7,6,9,26, 6,4,9,5,6,11, 6,4,6,3,9,43, + 6,4,6,6,9,27, 6,3,9,5,6,12, 6,3,6,6,9,28, 6,2,10,3,5,45, 6,2,10,5,6,13, 6,2,5,3,10,45, 6,2,5,6,9,29, 6,1,10,4,6,14, + 6,1,10,5,6,14, 6,1,6,4,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 6,0,9,2,6,47, 6,0,9,5,6,15, 6,0,8,2,7,47, 6,0,7,2,8,47, + 6,0,7,6,9,31, 7,15,11,3,4,32, 7,15,11,5,7,0, 7,15,10,3,5,32, 7,15,9,3,6,32, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, + 7,15,6,6,8,16, 7,14,12,3,3,33, 7,14,12,5,7,1, 7,14,5,3,10,33, 7,14,5,6,8,17, 7,13,13,3,2,34, 7,13,13,5,7,2, 7,13,4,3,11,34, + 7,13,4,6,8,18, 7,12,13,5,7,3, 7,12,3,3,12,35, 7,12,3,6,8,19, 7,11,13,4,7,4, 7,11,13,5,7,4, 7,11,2,3,13,36, 7,11,2,6,8,20, + 7,10,12,5,7,5, 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,2,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, + 7,7,2,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,6,4,7,9, 7,6,5,4,7,9, 7,6,4,4,7,9, 7,6,3,4,7,9, 7,6,2,4,7,9, + 7,6,2,6,8,25, 7,5,10,4,7,10, 7,5,10,5,7,10, 7,5,7,6,8,26, 7,4,9,5,7,11, 7,4,6,3,9,43, 7,4,6,6,8,27, 7,3,9,5,7,12, + 7,3,6,6,8,28, 7,2,10,3,5,45, 7,2,10,5,7,13, 7,2,5,3,10,45, 7,2,5,6,8,29, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,6,4,7,14, + 7,1,5,4,7,14, 7,1,5,6,8,30, 7,0,9,5,7,15, 7,0,7,6,8,31, 8,15,11,3,4,32, 8,15,11,5,8,0, 8,15,10,3,5,32, 8,15,9,3,6,32, + 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,12,3,3,33, 8,14,12,5,8,1, 8,14,5,3,10,33, 8,14,5,6,7,17, + 8,13,13,3,2,34, 8,13,13,5,8,2, 8,13,4,3,11,34, 8,13,4,6,7,18, 8,12,13,5,8,3, 8,12,3,3,12,35, 8,12,3,6,7,19, 8,11,13,4,8,4, + 8,11,13,5,8,4, 8,11,2,3,13,36, 8,11,2,6,7,20, 8,10,12,5,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,6,7,22, 8,8,12,5,8,7, + 8,8,2,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,2,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,6,4,8,9, 8,6,5,4,8,9, + 8,6,4,4,8,9, 8,6,3,4,8,9, 8,6,2,4,8,9, 8,6,2,6,7,25, 8,5,10,4,8,10, 8,5,10,5,8,10, 8,5,7,6,7,26, 8,4,9,5,8,11, + 8,4,6,3,9,43, 8,4,6,6,7,27, 8,3,9,5,8,12, 8,3,6,6,7,28, 8,2,10,3,5,45, 8,2,10,5,8,13, 8,2,5,3,10,45, 8,2,5,6,7,29, + 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 8,0,9,5,8,15, 8,0,7,6,7,31, 9,15,11,3,4,32, + 9,15,11,5,9,0, 9,15,10,3,5,32, 9,15,9,3,6,32, 9,15,8,3,7,32, 9,15,7,3,8,32, 9,15,6,3,9,32, 9,15,6,6,6,16, 9,14,12,3,3,33, + 9,14,12,5,9,1, 9,14,5,3,10,33, 9,14,5,6,6,17, 9,13,13,3,2,34, 9,13,13,5,9,2, 9,13,4,3,11,34, 9,13,4,6,6,18, 9,12,13,5,9,3, + 9,12,3,3,12,35, 9,12,3,6,6,19, 9,11,13,4,9,4, 9,11,13,5,9,4, 9,11,2,3,13,36, 9,11,2,6,6,20, 9,10,12,5,9,5, 9,10,2,6,6,21, + 9,9,12,5,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,2,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,2,6,6,24, 9,6,11,4,9,9, + 9,6,11,5,9,9, 9,6,6,4,9,9, 9,6,5,4,9,9, 9,6,4,4,9,9, 9,6,3,4,9,9, 9,6,2,4,9,9, 9,6,2,6,6,25, 9,5,10,4,9,10, + 9,5,10,5,9,10, 9,5,7,6,6,26, 9,4,9,5,9,11, 9,4,6,3,9,43, 9,4,6,6,6,27, 9,3,9,5,9,12, 9,3,6,6,6,28, 9,2,10,3,5,45, + 9,2,10,5,9,13, 9,2,5,3,10,45, 9,2,5,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,6,4,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, + 9,0,9,1,6,47, 9,0,9,5,9,15, 9,0,8,1,7,47, 9,0,7,1,8,47, 9,0,7,6,6,31, 10,15,11,1,4,32, 10,15,11,3,4,32, 10,15,11,5,10,0, + 10,15,10,1,5,32, 10,15,10,3,5,32, 10,15,9,1,6,32, 10,15,9,3,6,32, 10,15,8,1,7,32, 10,15,8,3,7,32, 10,15,7,1,8,32, 10,15,7,3,8,32, + 10,15,6,1,9,32, 10,15,6,3,9,32, 10,15,6,6,5,16, 10,14,12,3,3,33, 10,14,12,5,10,1, 10,14,5,3,10,33, 10,14,5,6,5,17, 10,13,13,3,2,34, + 10,13,13,5,10,2, 10,13,4,3,11,34, 10,13,4,6,5,18, 10,12,13,5,10,3, 10,12,3,3,12,35, 10,12,3,6,5,19, 10,11,13,4,10,4, 10,11,13,5,10,4, + 10,11,2,3,13,36, 10,11,2,6,5,20, 10,10,12,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,6,5,22, 10,8,12,5,10,7, 10,8,2,6,5,23, + 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,2,6,5,24, 10,6,11,1,4,41, 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,10,1,5,41, 10,6,9,1,6,41, + 10,6,8,1,7,41, 10,6,7,1,8,41, 10,6,6,1,9,41, 10,6,6,4,10,9, 10,6,5,1,10,41, 10,6,5,4,10,9, 10,6,4,1,11,41, 10,6,4,4,10,9, + 10,6,3,1,12,41, 10,6,3,4,10,9, 10,6,2,1,13,41, 10,6,2,4,10,9, 10,6,2,6,5,25, 10,5,10,4,10,10, 10,5,10,5,10,10, 10,5,7,6,5,26, + 10,4,9,5,10,11, 10,4,6,3,9,43, 10,4,6,6,5,27, 10,3,9,5,10,12, 10,3,6,6,5,28, 10,2,10,1,5,45, 10,2,10,3,5,45, 10,2,10,5,10,13, + 10,2,9,1,6,45, 10,2,8,1,7,45, 10,2,7,1,8,45, 10,2,6,1,9,45, 10,2,5,1,10,45, 10,2,5,3,10,45, 10,2,5,6,5,29, 10,1,10,1,5,46, + 10,1,10,4,10,14, 10,1,10,5,10,14, 10,1,9,1,6,46, 10,1,9,4,10,14, 10,1,8,1,7,46, 10,1,8,4,10,14, 10,1,7,1,8,46, 10,1,7,4,10,14, + 10,1,6,1,9,46, 10,1,6,4,10,14, 10,1,5,1,10,46, 10,1,5,4,10,14, 10,1,5,6,5,30, 11,14,12,1,3,33, 11,14,12,3,3,33, 11,14,12,5,11,1, + 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, 11,14,8,3,7,33, + 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,5,6,4,17, 11,13,13,3,2,34, + 11,13,13,5,11,2, 11,13,4,3,11,34, 11,13,4,6,4,18, 11,12,13,5,11,3, 11,12,3,3,12,35, 11,12,3,6,4,19, 11,11,13,4,11,4, 11,11,13,5,11,4, + 11,11,2,3,13,36, 11,11,2,6,4,20, 11,10,12,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,2,6,4,23, + 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,11,4,11,8, 11,7,10,4,11,8, 11,7,9,4,11,8, 11,7,8,4,11,8, 11,7,7,4,11,8, 11,7,6,4,11,8, + 11,7,5,4,11,8, 11,7,4,4,11,8, 11,7,3,4,11,8, 11,7,2,4,11,8, 11,7,2,6,4,24, 11,5,10,1,5,42, 11,5,10,3,5,42, 11,5,10,4,11,10, + 11,5,10,5,11,10, 11,5,9,1,6,42, 11,5,9,3,6,42, 11,5,8,1,7,42, 11,5,8,3,7,42, 11,5,7,1,8,42, 11,5,7,3,8,42, 11,5,7,6,4,26, + 11,4,9,5,11,11, 11,4,6,3,9,43, 11,4,6,6,4,27, 11,3,9,1,6,44, 11,3,9,4,11,12, 11,3,9,5,11,12, 11,3,8,1,7,44, 11,3,8,4,11,12, + 11,3,7,1,8,44, 11,3,7,4,11,12, 11,3,6,1,9,44, 11,3,6,4,11,12, 11,3,6,6,4,28, 12,13,13,1,2,34, 12,13,13,3,2,34, 12,13,13,5,12,2, + 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, 12,13,9,3,6,34, + 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, 12,13,5,3,10,34, + 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,4,6,3,18, 12,12,13,1,2,35, 12,12,13,5,12,3, 12,12,12,1,3,35, 12,12,11,1,4,35, 12,12,10,1,5,35, + 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, 12,12,6,1,9,35, 12,12,5,1,10,35, 12,12,4,1,11,35, 12,12,3,1,12,35, 12,12,3,3,12,35, + 12,12,3,6,3,19, 12,11,13,4,12,4, 12,11,13,5,12,4, 12,11,2,3,13,36, 12,11,2,6,3,20, 12,10,12,5,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, + 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,2,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,11,4,12,8, 12,7,10,4,12,8, 12,7,9,4,12,8, + 12,7,8,4,12,8, 12,7,7,4,12,8, 12,7,6,4,12,8, 12,7,5,4,12,8, 12,7,4,4,12,8, 12,7,3,4,12,8, 12,7,2,4,12,8, 12,7,2,6,3,24, + 12,4,9,1,6,43, 12,4,9,3,6,43, 12,4,9,4,12,11, 12,4,9,5,12,11, 12,4,8,1,7,43, 12,4,8,3,7,43, 12,4,8,4,12,11, 12,4,7,1,8,43, + 12,4,7,3,8,43, 12,4,7,4,12,11, 12,4,6,1,9,43, 12,4,6,3,9,43, 12,4,6,4,12,11, 12,4,6,6,3,27, 13,11,13,1,2,36, 13,11,13,3,2,36, + 13,11,13,4,13,4, 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, + 13,11,9,1,6,36, 13,11,9,3,6,36, 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, + 13,11,5,1,10,36, 13,11,5,3,10,36, 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, + 13,11,2,6,2,20, 13,10,12,1,3,37, 13,10,12,5,13,5, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, + 13,10,6,1,9,37, 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,6,2,21, 13,9,12,1,3,38, 13,9,12,5,13,6, + 13,9,11,1,4,38, 13,9,10,1,5,38, 13,9,9,1,6,38, 13,9,8,1,7,38, 13,9,7,1,8,38, 13,9,6,1,9,38, 13,9,5,1,10,38, 13,9,4,1,11,38, + 13,9,3,1,12,38, 13,9,2,1,13,38, 13,9,2,6,2,22, 13,8,12,1,3,39, 13,8,12,5,13,7, 13,8,11,1,4,39, 13,8,10,1,5,39, 13,8,9,1,6,39, + 13,8,8,1,7,39, 13,8,7,1,8,39, 13,8,6,1,9,39, 13,8,5,1,10,39, 13,8,4,1,11,39, 13,8,3,1,12,39, 13,8,2,1,13,39, 13,8,2,6,2,23, + 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,11,4,13,8, 13,7,10,1,5,40, 13,7,10,4,13,8, 13,7,9,1,6,40, + 13,7,9,4,13,8, 13,7,8,1,7,40, 13,7,8,4,13,8, 13,7,7,1,8,40, 13,7,7,4,13,8, 13,7,6,1,9,40, 13,7,6,4,13,8, 13,7,5,1,10,40, + 13,7,5,4,13,8, 13,7,4,1,11,40, 13,7,4,4,13,8, 13,7,3,1,12,40, 13,7,3,4,13,8, 13,7,2,1,13,40, 13,7,2,4,13,8, 13,7,2,6,2,24, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1434, + count = 946, + faces = { + 2,10,13,2,2,85, 2,10,13,3,2,85, 2,10,13,4,2,53, 2,10,13,5,2,53, 2,10,12,2,3,85, 2,10,12,3,3,85, 2,10,11,2,4,85, 2,10,11,3,4,85, + 2,10,10,2,5,85, 2,10,10,3,5,85, 2,10,9,2,6,85, 2,10,9,3,6,85, 2,10,8,2,7,85, 2,10,8,3,7,85, 2,10,7,2,8,85, 2,10,7,3,8,85, + 2,10,6,2,9,85, 2,10,6,3,9,85, 2,10,5,2,10,85, 2,10,5,3,10,85, 2,10,4,2,11,85, 2,10,4,3,11,85, 2,10,3,2,12,85, 2,10,3,3,12,85, + 2,10,2,2,13,85, 2,10,2,3,13,85, 2,10,2,6,13,69, 2,9,12,2,3,86, 2,9,12,5,2,54, 2,9,11,2,4,86, 2,9,10,2,5,86, 2,9,9,2,6,86, + 2,9,8,2,7,86, 2,9,7,2,8,86, 2,9,6,2,9,86, 2,9,5,2,10,86, 2,9,4,2,11,86, 2,9,3,2,12,86, 2,9,2,2,13,86, 2,9,2,6,13,70, + 2,8,12,2,3,87, 2,8,12,5,2,55, 2,8,11,2,4,87, 2,8,10,2,5,87, 2,8,9,2,6,87, 2,8,8,2,7,87, 2,8,7,2,8,87, 2,8,6,2,9,87, + 2,8,5,2,10,87, 2,8,4,2,11,87, 2,8,3,2,12,87, 2,8,2,2,13,87, 2,8,2,6,13,71, 2,7,12,2,3,88, 2,7,12,5,2,56, 2,7,11,2,4,88, + 2,7,10,2,5,88, 2,7,9,2,6,88, 2,7,8,2,7,88, 2,7,7,2,8,88, 2,7,6,2,9,88, 2,7,5,2,10,88, 2,7,4,2,11,88, 2,7,3,2,12,88, + 2,7,2,2,13,88, 2,7,2,6,13,72, 2,6,12,2,3,89, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,11,2,4,89, 2,6,10,2,5,89, 2,6,9,2,6,89, + 2,6,8,2,7,89, 2,6,7,2,8,89, 2,6,6,2,9,89, 2,6,5,2,10,89, 2,6,4,2,11,89, 2,6,3,2,12,89, 2,6,2,2,13,89, 2,6,2,6,13,73, + 2,5,11,2,4,90, 2,5,11,4,2,58, 2,5,11,5,2,58, 2,5,10,2,5,90, 2,5,9,2,6,90, 2,5,8,2,7,90, 2,5,7,2,8,90, 2,5,6,2,9,90, + 2,5,5,2,10,90, 2,5,5,4,2,58, 2,5,4,2,11,90, 2,5,4,4,2,58, 2,5,3,2,12,90, 2,5,3,4,2,58, 2,5,2,2,13,90, 2,5,2,4,2,58, + 2,5,2,6,2,58, 2,4,10,2,5,91, 2,4,10,4,13,75, 2,4,10,5,13,75, 2,4,9,2,6,91, 2,4,9,4,13,75, 2,4,8,2,7,91, 2,4,8,4,13,75, + 2,4,7,2,8,91, 2,4,7,4,13,75, 2,4,6,2,9,91, 2,4,6,4,13,75, 2,4,6,6,13,75, 3,12,13,2,2,83, 3,12,13,3,2,83, 3,12,13,5,3,51, + 3,12,12,2,3,83, 3,12,12,3,3,83, 3,12,11,2,4,83, 3,12,11,3,4,83, 3,12,10,2,5,83, 3,12,10,3,5,83, 3,12,9,2,6,83, 3,12,9,3,6,83, + 3,12,8,2,7,83, 3,12,8,3,7,83, 3,12,7,2,8,83, 3,12,7,3,8,83, 3,12,6,2,9,83, 3,12,6,3,9,83, 3,12,5,2,10,83, 3,12,5,3,10,83, + 3,12,4,2,11,83, 3,12,4,3,11,83, 3,12,3,2,12,83, 3,12,3,3,12,83, 3,12,2,2,13,83, 3,12,2,3,13,83, 3,12,2,6,12,67, 3,11,13,2,2,84, + 3,11,13,5,3,52, 3,11,12,2,3,84, 3,11,11,2,4,84, 3,11,10,2,5,84, 3,11,9,2,6,84, 3,11,8,2,7,84, 3,11,7,2,8,84, 3,11,6,2,9,84, + 3,11,5,2,10,84, 3,11,4,2,11,84, 3,11,3,2,12,84, 3,11,2,2,13,84, 3,11,2,6,12,68, 3,10,13,4,3,53, 3,10,13,5,3,53, 3,10,2,6,12,69, + 3,9,12,5,3,54, 3,9,2,6,12,70, 3,8,12,5,3,55, 3,8,2,6,12,71, 3,7,12,5,3,56, 3,7,2,6,12,72, 3,6,12,4,3,57, 3,6,12,5,3,57, + 3,6,2,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,5,4,3,58, 3,5,4,4,3,58, 3,5,3,4,3,58, 3,5,2,4,3,58, 3,5,2,6,12,74, + 3,4,10,5,3,59, 3,4,6,6,12,75, 3,3,11,2,4,92, 3,3,11,3,4,92, 3,3,11,4,12,76, 3,3,11,5,12,76, 3,3,10,2,5,92, 3,3,10,4,12,76, + 3,3,9,2,6,92, 3,3,9,4,12,76, 3,3,8,2,7,92, 3,3,8,4,12,76, 3,3,7,2,8,92, 3,3,7,4,12,76, 3,3,6,2,9,92, 3,3,6,4,12,76, + 3,3,5,2,10,92, 3,3,5,3,10,92, 3,3,5,4,12,76, 3,3,5,6,12,76, 4,13,12,2,3,82, 4,13,12,3,3,82, 4,13,12,5,4,50, 4,13,11,2,4,82, + 4,13,11,3,4,82, 4,13,10,2,5,82, 4,13,10,3,5,82, 4,13,9,2,6,82, 4,13,9,3,6,82, 4,13,8,2,7,82, 4,13,8,3,7,82, 4,13,7,2,8,82, + 4,13,7,3,8,82, 4,13,6,2,9,82, 4,13,6,3,9,82, 4,13,5,2,10,82, 4,13,5,3,10,82, 4,13,4,2,11,82, 4,13,4,3,11,82, 4,13,4,6,11,66, + 4,12,13,3,2,83, 4,12,13,5,4,51, 4,12,3,3,12,83, 4,12,2,3,13,83, 4,12,2,6,11,67, 4,11,13,5,4,52, 4,11,2,6,11,68, 4,10,13,4,4,53, + 4,10,13,5,4,53, 4,10,2,6,11,69, 4,9,12,5,4,54, 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,2,6,11,71, 4,7,12,5,4,56, 4,7,2,6,11,72, + 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,2,6,11,73, 4,5,11,4,4,58, 4,5,11,5,4,58, 4,5,5,4,4,58, 4,5,4,4,4,58, 4,5,3,4,4,58, + 4,5,2,4,4,58, 4,5,2,6,11,74, 4,4,10,5,4,59, 4,4,6,6,11,75, 4,3,11,3,4,92, 4,3,11,5,11,76, 4,3,5,3,10,92, 4,3,5,6,11,76, + 4,2,12,2,3,93, 4,2,12,3,3,93, 4,2,12,4,11,77, 4,2,12,5,11,77, 4,2,11,2,4,93, 4,2,11,4,11,77, 4,2,10,2,5,93, 4,2,10,4,11,77, + 4,2,9,2,6,93, 4,2,9,4,11,77, 4,2,8,2,7,93, 4,2,8,4,11,77, 4,2,7,2,8,93, 4,2,7,4,11,77, 4,2,6,2,9,93, 4,2,6,4,11,77, + 4,2,5,2,10,93, 4,2,5,4,11,77, 4,2,4,2,11,93, 4,2,4,3,11,93, 4,2,4,4,11,77, 4,2,3,2,12,93, 4,2,3,3,12,93, 4,2,3,4,11,77, + 4,2,3,6,11,77, 5,14,11,2,4,81, 5,14,11,3,4,81, 5,14,11,5,5,49, 5,14,10,2,5,81, 5,14,10,3,5,81, 5,14,9,2,6,81, 5,14,9,3,6,81, + 5,14,8,2,7,81, 5,14,8,3,7,81, 5,14,7,2,8,81, 5,14,7,3,8,81, 5,14,6,2,9,81, 5,14,6,3,9,81, 5,14,5,2,10,81, 5,14,5,3,10,81, + 5,14,5,6,10,65, 5,13,12,3,3,82, 5,13,12,5,5,50, 5,13,4,3,11,82, 5,13,4,6,10,66, 5,12,13,3,2,83, 5,12,13,5,5,51, 5,12,3,3,12,83, + 5,12,2,3,13,83, 5,12,2,6,10,67, 5,11,13,5,5,52, 5,11,2,6,10,68, 5,10,13,4,5,53, 5,10,13,5,5,53, 5,10,2,6,10,69, 5,9,12,5,5,54, + 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,2,6,10,71, 5,7,12,5,5,56, 5,7,2,6,10,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,2,6,10,73, + 5,5,11,4,5,58, 5,5,11,5,5,58, 5,5,5,4,5,58, 5,5,4,4,5,58, 5,5,3,4,5,58, 5,5,2,4,5,58, 5,5,2,6,10,74, 5,4,10,5,5,59, + 5,4,6,6,10,75, 5,3,11,3,4,92, 5,3,11,5,5,60, 5,3,5,3,10,92, 5,3,5,6,10,76, 5,2,12,3,3,93, 5,2,12,4,5,61, 5,2,12,5,5,61, + 5,2,4,3,11,93, 5,2,3,3,12,93, 5,2,3,6,10,77, 5,1,11,2,4,94, 5,1,11,4,5,62, 5,1,11,5,5,62, 5,1,10,2,5,94, 5,1,10,4,5,62, + 5,1,9,2,6,94, 5,1,9,4,5,62, 5,1,8,2,7,94, 5,1,8,4,5,62, 5,1,7,2,8,94, 5,1,7,4,5,62, 5,1,6,2,9,94, 5,1,6,4,5,62, + 5,1,5,2,10,94, 5,1,5,4,5,62, 5,1,4,2,11,94, 5,1,4,4,5,62, 5,1,3,2,12,94, 5,1,3,4,5,62, 5,1,3,6,5,62, 6,14,11,3,4,81, + 6,14,11,5,6,49, 6,14,10,3,5,81, 6,14,9,3,6,81, 6,14,8,3,7,81, 6,14,7,3,8,81, 6,14,6,3,9,81, 6,14,5,3,10,81, 6,14,5,6,9,65, + 6,13,12,3,3,82, 6,13,12,5,6,50, 6,13,4,3,11,82, 6,13,4,6,9,66, 6,12,13,3,2,83, 6,12,13,5,6,51, 6,12,3,3,12,83, 6,12,2,3,13,83, + 6,12,2,6,9,67, 6,11,13,5,6,52, 6,11,2,6,9,68, 6,10,13,4,6,53, 6,10,13,5,6,53, 6,10,2,6,9,69, 6,9,12,5,6,54, 6,9,2,6,9,70, + 6,8,12,5,6,55, 6,8,2,6,9,71, 6,7,12,5,6,56, 6,7,2,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,2,6,9,73, 6,5,11,4,6,58, + 6,5,11,5,6,58, 6,5,5,4,6,58, 6,5,4,4,6,58, 6,5,3,4,6,58, 6,5,2,4,6,58, 6,5,2,6,9,74, 6,4,10,5,6,59, 6,4,6,6,9,75, + 6,3,11,3,4,92, 6,3,11,5,6,60, 6,3,5,3,10,92, 6,3,5,6,9,76, 6,2,12,3,3,93, 6,2,12,4,6,61, 6,2,12,5,6,61, 6,2,4,3,11,93, + 6,2,3,3,12,93, 6,2,3,6,9,77, 6,1,11,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,3,4,6,62, 6,1,3,6,9,78, + 6,0,12,2,3,95, 6,0,12,3,3,95, 6,0,12,5,6,63, 6,0,11,2,4,95, 6,0,10,2,5,95, 6,0,9,2,6,95, 6,0,9,6,6,63, 6,0,5,2,10,95, + 6,0,5,5,6,63, 6,0,4,2,11,95, 6,0,4,6,6,63, 7,14,11,3,4,81, 7,14,11,5,7,49, 7,14,10,3,5,81, 7,14,9,3,6,81, 7,14,8,3,7,81, + 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,5,3,10,81, 7,14,5,6,8,65, 7,13,12,3,3,82, 7,13,12,5,7,50, 7,13,4,3,11,82, 7,13,4,6,8,66, + 7,12,13,3,2,83, 7,12,13,5,7,51, 7,12,3,3,12,83, 7,12,2,3,13,83, 7,12,2,6,8,67, 7,11,13,5,7,52, 7,11,2,6,8,68, 7,10,13,4,7,53, + 7,10,13,5,7,53, 7,10,2,6,8,69, 7,9,12,5,7,54, 7,9,2,6,8,70, 7,8,12,5,7,55, 7,8,2,6,8,71, 7,7,12,5,7,56, 7,7,2,6,8,72, + 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,2,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, 7,5,5,4,7,58, 7,5,4,4,7,58, 7,5,3,4,7,58, + 7,5,2,4,7,58, 7,5,2,6,8,74, 7,4,10,5,7,59, 7,4,6,6,8,75, 7,3,11,3,4,92, 7,3,11,5,7,60, 7,3,5,3,10,92, 7,3,5,6,8,76, + 7,2,12,3,3,93, 7,2,12,4,7,61, 7,2,12,5,7,61, 7,2,4,3,11,93, 7,2,3,3,12,93, 7,2,3,6,8,77, 7,1,11,5,7,62, 7,1,8,4,7,62, + 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,3,4,7,62, 7,1,3,6,8,78, 7,0,12,3,3,95, 7,0,12,5,7,63, 7,0,9,6,7,63, 7,0,5,5,7,63, + 7,0,4,6,7,63, 8,14,11,3,4,81, 8,14,11,5,8,49, 8,14,10,3,5,81, 8,14,9,3,6,81, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, + 8,14,5,3,10,81, 8,14,5,6,7,65, 8,13,12,3,3,82, 8,13,12,5,8,50, 8,13,4,3,11,82, 8,13,4,6,7,66, 8,12,13,3,2,83, 8,12,13,5,8,51, + 8,12,3,3,12,83, 8,12,2,3,13,83, 8,12,2,6,7,67, 8,11,13,5,8,52, 8,11,2,6,7,68, 8,10,13,4,8,53, 8,10,13,5,8,53, 8,10,2,6,7,69, + 8,9,12,5,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, 8,8,2,6,7,71, 8,7,12,5,8,56, 8,7,2,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, + 8,6,2,6,7,73, 8,5,11,4,8,58, 8,5,11,5,8,58, 8,5,5,4,8,58, 8,5,4,4,8,58, 8,5,3,4,8,58, 8,5,2,4,8,58, 8,5,2,6,7,74, + 8,4,10,5,8,59, 8,4,6,6,7,75, 8,3,11,3,4,92, 8,3,11,5,8,60, 8,3,5,3,10,92, 8,3,5,6,7,76, 8,2,12,3,3,93, 8,2,12,4,8,61, + 8,2,12,5,8,61, 8,2,4,3,11,93, 8,2,3,3,12,93, 8,2,3,6,7,77, 8,1,11,5,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, + 8,1,3,4,8,62, 8,1,3,6,7,78, 8,0,12,3,3,95, 8,0,12,5,7,79, 8,0,9,6,7,79, 8,0,5,5,7,79, 8,0,4,6,7,79, 9,14,11,3,4,81, + 9,14,11,5,9,49, 9,14,10,3,5,81, 9,14,9,3,6,81, 9,14,8,3,7,81, 9,14,7,3,8,81, 9,14,6,3,9,81, 9,14,5,3,10,81, 9,14,5,6,6,65, + 9,13,12,3,3,82, 9,13,12,5,9,50, 9,13,4,3,11,82, 9,13,4,6,6,66, 9,12,13,3,2,83, 9,12,13,5,9,51, 9,12,3,3,12,83, 9,12,2,3,13,83, + 9,12,2,6,6,67, 9,11,13,5,9,52, 9,11,2,6,6,68, 9,10,13,4,9,53, 9,10,13,5,9,53, 9,10,2,6,6,69, 9,9,12,5,9,54, 9,9,2,6,6,70, + 9,8,12,5,9,55, 9,8,2,6,6,71, 9,7,12,5,9,56, 9,7,2,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,2,6,6,73, 9,5,11,4,9,58, + 9,5,11,5,9,58, 9,5,5,4,9,58, 9,5,4,4,9,58, 9,5,3,4,9,58, 9,5,2,4,9,58, 9,5,2,6,6,74, 9,4,10,5,9,59, 9,4,6,6,6,75, + 9,3,11,3,4,92, 9,3,11,5,9,60, 9,3,5,3,10,92, 9,3,5,6,6,76, 9,2,12,3,3,93, 9,2,12,4,9,61, 9,2,12,5,9,61, 9,2,4,3,11,93, + 9,2,3,3,12,93, 9,2,3,6,6,77, 9,1,11,5,9,62, 9,1,8,4,9,62, 9,1,7,4,9,62, 9,1,6,4,9,62, 9,1,3,4,9,62, 9,1,3,6,6,78, + 9,0,12,1,3,95, 9,0,12,3,3,95, 9,0,12,5,6,79, 9,0,11,1,4,95, 9,0,10,1,5,95, 9,0,9,1,6,95, 9,0,9,6,6,79, 9,0,5,1,10,95, + 9,0,5,5,6,79, 9,0,4,1,11,95, 9,0,4,6,6,79, 10,14,11,1,4,81, 10,14,11,3,4,81, 10,14,11,5,10,49, 10,14,10,1,5,81, 10,14,10,3,5,81, + 10,14,9,1,6,81, 10,14,9,3,6,81, 10,14,8,1,7,81, 10,14,8,3,7,81, 10,14,7,1,8,81, 10,14,7,3,8,81, 10,14,6,1,9,81, 10,14,6,3,9,81, + 10,14,5,1,10,81, 10,14,5,3,10,81, 10,14,5,6,5,65, 10,13,12,3,3,82, 10,13,12,5,10,50, 10,13,4,3,11,82, 10,13,4,6,5,66, 10,12,13,3,2,83, + 10,12,13,5,10,51, 10,12,3,3,12,83, 10,12,2,3,13,83, 10,12,2,6,5,67, 10,11,13,5,10,52, 10,11,2,6,5,68, 10,10,13,4,10,53, 10,10,13,5,10,53, + 10,10,2,6,5,69, 10,9,12,5,10,54, 10,9,2,6,5,70, 10,8,12,5,10,55, 10,8,2,6,5,71, 10,7,12,5,10,56, 10,7,2,6,5,72, 10,6,12,4,10,57, + 10,6,12,5,10,57, 10,6,2,6,5,73, 10,5,11,4,10,58, 10,5,11,5,10,58, 10,5,5,4,10,58, 10,5,4,4,10,58, 10,5,3,4,10,58, 10,5,2,4,10,58, + 10,5,2,6,5,74, 10,4,10,5,10,59, 10,4,6,6,5,75, 10,3,11,3,4,92, 10,3,11,5,10,60, 10,3,5,3,10,92, 10,3,5,6,5,76, 10,2,12,3,3,93, + 10,2,12,4,10,61, 10,2,12,5,10,61, 10,2,4,3,11,93, 10,2,3,3,12,93, 10,2,3,6,5,77, 10,1,11,1,4,94, 10,1,11,4,5,78, 10,1,11,5,5,78, + 10,1,10,1,5,94, 10,1,10,4,5,78, 10,1,9,1,6,94, 10,1,9,4,5,78, 10,1,8,1,7,94, 10,1,8,4,5,78, 10,1,7,1,8,94, 10,1,7,4,5,78, + 10,1,6,1,9,94, 10,1,6,4,5,78, 10,1,5,1,10,94, 10,1,5,4,5,78, 10,1,4,1,11,94, 10,1,4,4,5,78, 10,1,3,1,12,94, 10,1,3,4,5,78, + 10,1,3,6,5,78, 11,13,12,1,3,82, 11,13,12,3,3,82, 11,13,12,5,11,50, 11,13,11,1,4,82, 11,13,11,3,4,82, 11,13,10,1,5,82, 11,13,10,3,5,82, + 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, 11,13,7,1,8,82, 11,13,7,3,8,82, 11,13,6,1,9,82, 11,13,6,3,9,82, + 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,4,1,11,82, 11,13,4,3,11,82, 11,13,4,6,4,66, 11,12,13,3,2,83, 11,12,13,5,11,51, 11,12,3,3,12,83, + 11,12,2,3,13,83, 11,12,2,6,4,67, 11,11,13,5,11,52, 11,11,2,6,4,68, 11,10,13,4,11,53, 11,10,13,5,11,53, 11,10,2,6,4,69, 11,9,12,5,11,54, + 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,2,6,4,71, 11,7,12,5,11,56, 11,7,2,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,2,6,4,73, + 11,5,11,4,11,58, 11,5,11,5,11,58, 11,5,5,4,11,58, 11,5,4,4,11,58, 11,5,3,4,11,58, 11,5,2,4,11,58, 11,5,2,6,4,74, 11,4,10,5,11,59, + 11,4,6,6,4,75, 11,3,11,3,4,92, 11,3,11,5,11,60, 11,3,5,3,10,92, 11,3,5,6,11,60, 11,2,12,1,3,93, 11,2,12,3,3,93, 11,2,12,4,11,61, + 11,2,12,5,11,61, 11,2,11,1,4,93, 11,2,11,4,11,61, 11,2,10,1,5,93, 11,2,10,4,11,61, 11,2,9,1,6,93, 11,2,9,4,11,61, 11,2,8,1,7,93, + 11,2,8,4,11,61, 11,2,7,1,8,93, 11,2,7,4,11,61, 11,2,6,1,9,93, 11,2,6,4,11,61, 11,2,5,1,10,93, 11,2,5,4,11,61, 11,2,4,1,11,93, + 11,2,4,3,11,93, 11,2,4,4,11,61, 11,2,3,1,12,93, 11,2,3,3,12,93, 11,2,3,4,11,61, 11,2,3,6,11,61, 12,12,13,1,2,83, 12,12,13,3,2,83, + 12,12,13,5,12,51, 12,12,12,1,3,83, 12,12,12,3,3,83, 12,12,11,1,4,83, 12,12,11,3,4,83, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, + 12,12,9,3,6,83, 12,12,8,1,7,83, 12,12,8,3,7,83, 12,12,7,1,8,83, 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, + 12,12,5,3,10,83, 12,12,4,1,11,83, 12,12,4,3,11,83, 12,12,3,1,12,83, 12,12,3,3,12,83, 12,12,2,1,13,83, 12,12,2,3,13,83, 12,12,2,6,3,67, + 12,11,13,1,2,84, 12,11,13,5,12,52, 12,11,12,1,3,84, 12,11,11,1,4,84, 12,11,10,1,5,84, 12,11,9,1,6,84, 12,11,8,1,7,84, 12,11,7,1,8,84, + 12,11,6,1,9,84, 12,11,5,1,10,84, 12,11,4,1,11,84, 12,11,3,1,12,84, 12,11,2,1,13,84, 12,11,2,6,3,68, 12,10,13,4,12,53, 12,10,13,5,12,53, + 12,10,2,6,3,69, 12,9,12,5,12,54, 12,9,2,6,3,70, 12,8,12,5,12,55, 12,8,2,6,3,71, 12,7,12,5,12,56, 12,7,2,6,3,72, 12,6,12,4,12,57, + 12,6,12,5,12,57, 12,6,2,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, 12,5,5,4,12,58, 12,5,4,4,12,58, 12,5,3,4,12,58, 12,5,2,4,12,58, + 12,5,2,6,3,74, 12,4,10,5,12,59, 12,4,6,6,3,75, 12,3,11,1,4,92, 12,3,11,3,4,92, 12,3,11,4,12,60, 12,3,11,5,12,60, 12,3,10,1,5,92, + 12,3,10,4,12,60, 12,3,9,1,6,92, 12,3,9,4,12,60, 12,3,8,1,7,92, 12,3,8,4,12,60, 12,3,7,1,8,92, 12,3,7,4,12,60, 12,3,6,1,9,92, + 12,3,6,4,12,60, 12,3,5,1,10,92, 12,3,5,3,10,92, 12,3,5,4,12,60, 12,3,5,6,12,60, 13,10,13,1,2,85, 13,10,13,3,2,85, 13,10,13,4,13,53, + 13,10,13,5,13,53, 13,10,12,1,3,85, 13,10,12,3,3,85, 13,10,11,1,4,85, 13,10,11,3,4,85, 13,10,10,1,5,85, 13,10,10,3,5,85, 13,10,9,1,6,85, + 13,10,9,3,6,85, 13,10,8,1,7,85, 13,10,8,3,7,85, 13,10,7,1,8,85, 13,10,7,3,8,85, 13,10,6,1,9,85, 13,10,6,3,9,85, 13,10,5,1,10,85, + 13,10,5,3,10,85, 13,10,4,1,11,85, 13,10,4,3,11,85, 13,10,3,1,12,85, 13,10,3,3,12,85, 13,10,2,1,13,85, 13,10,2,3,13,85, 13,10,2,6,2,69, + 13,9,12,1,3,86, 13,9,12,5,13,54, 13,9,11,1,4,86, 13,9,10,1,5,86, 13,9,9,1,6,86, 13,9,8,1,7,86, 13,9,7,1,8,86, 13,9,6,1,9,86, + 13,9,5,1,10,86, 13,9,4,1,11,86, 13,9,3,1,12,86, 13,9,2,1,13,86, 13,9,2,6,2,70, 13,8,12,1,3,87, 13,8,12,5,13,55, 13,8,11,1,4,87, + 13,8,10,1,5,87, 13,8,9,1,6,87, 13,8,8,1,7,87, 13,8,7,1,8,87, 13,8,6,1,9,87, 13,8,5,1,10,87, 13,8,4,1,11,87, 13,8,3,1,12,87, + 13,8,2,1,13,87, 13,8,2,6,2,71, 13,7,12,1,3,88, 13,7,12,5,13,56, 13,7,11,1,4,88, 13,7,10,1,5,88, 13,7,9,1,6,88, 13,7,8,1,7,88, + 13,7,7,1,8,88, 13,7,6,1,9,88, 13,7,5,1,10,88, 13,7,4,1,11,88, 13,7,3,1,12,88, 13,7,2,1,13,88, 13,7,2,6,2,72, 13,6,12,1,3,89, + 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,11,1,4,89, 13,6,10,1,5,89, 13,6,9,1,6,89, 13,6,8,1,7,89, 13,6,7,1,8,89, 13,6,6,1,9,89, + 13,6,5,1,10,89, 13,6,4,1,11,89, 13,6,3,1,12,89, 13,6,2,1,13,89, 13,6,2,6,2,73, 13,5,11,1,4,90, 13,5,11,4,2,74, 13,5,11,5,2,74, + 13,5,10,1,5,90, 13,5,9,1,6,90, 13,5,8,1,7,90, 13,5,7,1,8,90, 13,5,6,1,9,90, 13,5,5,1,10,90, 13,5,5,4,2,74, 13,5,4,1,11,90, + 13,5,4,4,2,74, 13,5,3,1,12,90, 13,5,3,4,2,74, 13,5,2,1,13,90, 13,5,2,4,2,74, 13,5,2,6,2,74, 13,4,10,1,5,91, 13,4,10,4,13,59, + 13,4,10,5,13,59, 13,4,9,1,6,91, 13,4,9,4,13,59, 13,4,8,1,7,91, 13,4,8,4,13,59, 13,4,7,1,8,91, 13,4,7,4,13,59, 13,4,6,1,9,91, + 13,4,6,4,13,59, 13,4,6,6,13,59, + }, + }, + }, +} diff --git a/assets/voxels/silph_worker_m.lua b/assets/voxels/silph_worker_m.lua new file mode 100644 index 0000000..f1bc7da --- /dev/null +++ b/assets/voxels/silph_worker_m.lua @@ -0,0 +1,160 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "silph_worker_m" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "silph_worker_m", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1548, + count = 1076, + faces = { + 1,14,13,2,1,33, 1,14,13,3,1,33, 1,14,13,4,1,1, 1,14,13,5,1,1, 1,14,12,2,2,33, 1,14,12,3,2,33, 1,14,12,4,1,1, 1,14,11,2,3,33, + 1,14,11,3,3,33, 1,14,11,4,1,1, 1,14,10,2,4,33, 1,14,10,3,4,33, 1,14,10,4,1,1, 1,14,9,2,5,33, 1,14,9,3,5,33, 1,14,9,4,1,1, + 1,14,8,2,6,33, 1,14,8,3,6,33, 1,14,8,4,1,1, 1,14,7,2,7,33, 1,14,7,3,7,33, 1,14,7,4,1,1, 1,14,6,2,8,33, 1,14,6,3,8,33, + 1,14,6,4,1,1, 1,14,5,2,9,33, 1,14,5,3,9,33, 1,14,5,4,1,1, 1,14,4,2,10,33, 1,14,4,3,10,33, 1,14,4,4,1,1, 1,14,4,6,1,1, + 1,10,11,2,3,37, 1,10,11,3,3,37, 1,10,11,5,1,5, 1,10,10,2,4,37, 1,10,10,3,4,37, 1,10,9,2,5,37, 1,10,9,3,5,37, 1,10,8,2,6,37, + 1,10,8,3,6,37, 1,10,7,2,7,37, 1,10,7,3,7,37, 1,10,6,2,8,37, 1,10,6,3,8,37, 1,10,5,2,9,37, 1,10,5,3,9,37, 1,10,4,2,10,37, + 1,10,4,3,10,37, 1,10,3,2,11,37, 1,10,3,3,11,37, 1,10,2,2,12,37, 1,10,2,3,12,37, 1,10,2,6,14,21, 1,9,11,2,3,38, 1,9,11,5,1,6, + 1,9,10,2,4,38, 1,9,9,2,5,38, 1,9,8,2,6,38, 1,9,7,2,7,38, 1,9,6,2,8,38, 1,9,5,2,9,38, 1,9,4,2,10,38, 1,9,3,2,11,38, + 1,9,2,2,12,38, 1,9,2,4,1,6, 1,9,2,6,14,22, 1,8,11,2,3,39, 1,8,11,4,1,7, 1,8,11,5,1,7, 1,8,10,2,4,39, 1,8,10,4,1,7, + 1,8,9,2,5,39, 1,8,9,4,1,7, 1,8,8,2,6,39, 1,8,8,4,1,7, 1,8,7,2,7,39, 1,8,7,4,1,7, 1,8,6,2,8,39, 1,8,6,4,1,7, + 1,8,5,2,9,39, 1,8,5,4,1,7, 1,8,4,2,10,39, 1,8,4,4,1,7, 1,8,3,2,11,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,9,2,5,42, + 1,5,9,3,5,42, 1,5,9,5,1,10, 1,5,8,2,6,42, 1,5,8,3,6,42, 1,5,7,2,7,42, 1,5,7,3,7,42, 1,5,6,2,8,42, 1,5,6,3,8,42, + 1,5,5,2,9,42, 1,5,5,3,9,42, 1,5,4,2,10,42, 1,5,4,3,10,42, 1,5,4,6,14,26, 1,4,9,2,5,43, 1,4,9,4,1,11, 1,4,9,5,1,11, + 1,4,8,2,6,43, 1,4,8,4,1,11, 1,4,7,2,7,43, 1,4,7,4,1,11, 1,4,6,2,8,43, 1,4,6,4,1,11, 1,4,5,2,9,43, 1,4,5,4,1,11, + 1,4,4,2,10,43, 1,4,4,4,1,11, 1,4,3,2,11,43, 1,4,3,3,11,43, 1,4,3,4,1,11, 1,4,3,6,14,27, 2,14,13,3,1,33, 2,14,13,4,2,1, + 2,14,13,5,2,1, 2,14,12,3,2,33, 2,14,11,3,3,33, 2,14,10,3,4,33, 2,14,9,3,5,33, 2,14,8,3,6,33, 2,14,7,3,7,33, 2,14,6,3,8,33, + 2,14,5,3,9,33, 2,14,4,3,10,33, 2,14,4,6,2,1, 2,13,12,2,2,34, 2,13,12,4,2,2, 2,13,12,5,2,2, 2,13,11,2,3,34, 2,13,11,4,2,2, + 2,13,10,2,4,34, 2,13,10,4,2,2, 2,13,9,2,5,34, 2,13,9,4,2,2, 2,13,8,2,6,34, 2,13,8,4,2,2, 2,13,7,2,7,34, 2,13,7,4,2,2, + 2,13,6,2,8,34, 2,13,6,4,2,2, 2,13,5,2,9,34, 2,13,5,4,2,2, 2,13,4,2,10,34, 2,13,4,4,2,2, 2,13,3,2,11,34, 2,13,3,3,11,34, + 2,13,3,4,2,2, 2,13,3,6,2,2, 2,11,11,2,3,36, 2,11,11,3,3,36, 2,11,11,5,2,4, 2,11,10,2,4,36, 2,11,10,3,4,36, 2,11,9,2,5,36, + 2,11,9,3,5,36, 2,11,8,2,6,36, 2,11,8,3,6,36, 2,11,7,2,7,36, 2,11,7,3,7,36, 2,11,6,2,8,36, 2,11,6,3,8,36, 2,11,5,2,9,36, + 2,11,5,3,9,36, 2,11,4,2,10,36, 2,11,4,3,10,36, 2,11,3,2,11,36, 2,11,3,3,11,36, 2,11,2,2,12,36, 2,11,2,3,12,36, 2,11,2,6,13,20, + 2,10,11,5,2,5, 2,10,2,6,13,21, 2,9,11,5,2,6, 2,9,2,4,2,6, 2,9,2,6,13,22, 2,8,11,5,2,7, 2,8,3,6,13,23, 2,7,11,2,3,40, + 2,7,11,4,2,8, 2,7,11,5,2,8, 2,7,10,2,4,40, 2,7,9,2,5,40, 2,7,8,2,6,40, 2,7,7,2,7,40, 2,7,6,2,8,40, 2,7,5,2,9,40, + 2,7,4,2,10,40, 2,7,3,2,11,40, 2,7,3,4,2,8, 2,7,3,6,13,24, 2,6,10,2,4,41, 2,6,10,4,2,9, 2,6,10,5,2,9, 2,6,9,2,5,41, + 2,6,8,2,6,41, 2,6,7,2,7,41, 2,6,6,2,8,41, 2,6,5,2,9,41, 2,6,4,2,10,41, 2,6,4,6,13,25, 2,5,9,5,2,10, 2,5,4,6,13,26, + 2,4,9,5,2,11, 2,4,3,3,11,43, 2,4,3,6,13,27, 2,3,9,2,5,44, 2,3,9,4,2,12, 2,3,9,5,2,12, 2,3,8,2,6,44, 2,3,8,4,2,12, + 2,3,7,2,7,44, 2,3,7,4,2,12, 2,3,6,2,8,44, 2,3,6,4,2,12, 2,3,5,2,9,44, 2,3,5,4,2,12, 2,3,4,2,10,44, 2,3,4,4,2,12, + 2,3,3,2,11,44, 2,3,3,4,2,12, 2,3,3,6,13,28, 3,14,13,3,1,33, 3,14,13,4,3,1, 3,14,13,5,3,1, 3,14,12,3,2,33, 3,14,11,3,3,33, + 3,14,10,3,4,33, 3,14,9,3,5,33, 3,14,8,3,6,33, 3,14,7,3,7,33, 3,14,6,3,8,33, 3,14,5,3,9,33, 3,14,4,3,10,33, 3,14,4,6,3,1, + 3,13,12,4,3,2, 3,13,12,5,3,2, 3,13,3,3,11,34, 3,13,3,6,12,18, 3,12,11,2,3,35, 3,12,11,5,3,3, 3,12,10,2,4,35, 3,12,9,2,5,35, + 3,12,8,2,6,35, 3,12,7,2,7,35, 3,12,6,2,8,35, 3,12,5,2,9,35, 3,12,4,2,10,35, 3,12,3,2,11,35, 3,12,2,2,12,35, 3,12,2,3,12,35, + 3,12,2,6,12,19, 3,11,11,5,3,4, 3,11,2,6,12,20, 3,10,11,5,3,5, 3,10,2,6,12,21, 3,9,11,5,3,6, 3,9,2,4,3,6, 3,9,2,6,12,22, + 3,8,11,5,3,7, 3,8,3,6,12,23, 3,7,11,4,3,8, 3,7,11,5,3,8, 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,10,4,3,9, 3,6,10,5,3,9, + 3,6,4,6,12,25, 3,5,9,5,3,10, 3,5,4,6,12,26, 3,4,9,5,3,11, 3,4,3,3,11,43, 3,4,3,6,12,27, 3,3,9,5,3,12, 3,3,3,6,12,28, + 3,2,9,2,5,45, 3,2,9,5,3,13, 3,2,8,2,6,45, 3,2,7,2,7,45, 3,2,6,2,8,45, 3,2,5,2,9,45, 3,2,4,2,10,45, 3,2,3,2,11,45, + 3,2,3,6,12,29, 3,1,10,2,4,46, 3,1,10,3,4,46, 3,1,10,4,3,14, 3,1,10,5,3,14, 3,1,9,2,5,46, 3,1,9,4,3,14, 3,1,8,2,6,46, + 3,1,8,4,3,14, 3,1,7,2,7,46, 3,1,7,4,3,14, 3,1,6,2,8,46, 3,1,6,4,3,14, 3,1,5,2,9,46, 3,1,5,4,3,14, 3,1,4,2,10,46, + 3,1,4,4,3,14, 3,1,3,2,11,46, 3,1,3,4,3,14, 3,1,3,6,12,30, 4,14,13,3,1,33, 4,14,13,4,4,1, 4,14,13,5,4,1, 4,14,12,3,2,33, + 4,14,11,3,3,33, 4,14,10,3,4,33, 4,14,9,3,5,33, 4,14,8,3,6,33, 4,14,7,3,7,33, 4,14,6,3,8,33, 4,14,5,3,9,33, 4,14,4,3,10,33, + 4,14,4,6,11,17, 4,13,12,4,4,2, 4,13,12,5,4,2, 4,13,3,3,11,34, 4,13,3,6,11,18, 4,12,11,5,4,3, 4,12,2,3,12,35, 4,12,2,6,11,19, + 4,11,11,5,4,4, 4,11,2,6,11,20, 4,10,11,5,4,5, 4,10,2,6,11,21, 4,9,11,5,4,6, 4,9,2,4,4,6, 4,9,2,6,11,22, 4,8,11,5,4,7, + 4,8,3,6,11,23, 4,7,11,4,4,8, 4,7,11,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,10,4,4,9, 4,6,10,5,4,9, 4,6,4,6,11,25, + 4,5,9,5,4,10, 4,5,4,6,11,26, 4,4,9,5,4,11, 4,4,3,3,11,43, 4,4,3,6,11,27, 4,3,9,5,4,12, 4,3,3,6,11,28, 4,2,9,5,4,13, + 4,2,3,6,11,29, 4,1,10,3,4,46, 4,1,10,5,4,14, 4,1,3,4,4,14, 4,1,3,6,11,30, 4,0,10,2,4,47, 4,0,10,5,4,15, 4,0,9,2,5,47, + 4,0,8,2,6,47, 4,0,7,2,7,47, 4,0,6,2,8,47, 4,0,5,2,9,47, 4,0,4,2,10,47, 4,0,4,6,11,31, 5,14,13,3,1,33, 5,14,13,4,5,1, + 5,14,13,5,5,1, 5,14,12,3,2,33, 5,14,11,3,3,33, 5,14,10,3,4,33, 5,14,9,3,5,33, 5,14,8,3,6,33, 5,14,7,3,7,33, 5,14,6,3,8,33, + 5,14,5,3,9,33, 5,14,4,3,10,33, 5,14,4,6,10,17, 5,13,12,4,5,2, 5,13,12,5,5,2, 5,13,3,3,11,34, 5,13,3,6,10,18, 5,12,11,5,5,3, + 5,12,2,3,12,35, 5,12,2,6,10,19, 5,11,11,5,5,4, 5,11,2,6,10,20, 5,10,11,5,5,5, 5,10,2,6,10,21, 5,9,11,5,5,6, 5,9,2,4,5,6, + 5,9,2,6,10,22, 5,8,11,5,5,7, 5,8,3,6,10,23, 5,7,11,4,5,8, 5,7,11,5,5,8, 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,10,4,5,9, + 5,6,10,5,5,9, 5,6,4,6,10,25, 5,5,9,5,5,10, 5,5,4,6,10,26, 5,4,9,5,5,11, 5,4,3,3,11,43, 5,4,3,6,10,27, 5,3,9,5,5,12, + 5,3,3,6,10,28, 5,2,9,5,5,13, 5,2,3,6,10,29, 5,1,10,3,4,46, 5,1,10,5,5,14, 5,1,3,4,5,14, 5,1,3,6,10,30, 5,0,10,5,5,15, + 5,0,4,6,10,31, 6,15,8,2,6,32, 6,15,8,3,6,32, 6,15,8,5,6,0, 6,15,7,2,7,32, 6,15,7,3,7,32, 6,15,6,2,8,32, 6,15,6,3,8,32, + 6,15,6,6,9,16, 6,14,13,3,1,33, 6,14,13,4,6,1, 6,14,13,5,6,1, 6,14,12,3,2,33, 6,14,11,3,3,33, 6,14,10,3,4,33, 6,14,9,3,5,33, + 6,14,5,3,9,33, 6,14,4,3,10,33, 6,14,4,6,9,17, 6,13,12,4,6,2, 6,13,12,5,6,2, 6,13,3,3,11,34, 6,13,3,6,9,18, 6,12,11,5,6,3, + 6,12,2,3,12,35, 6,12,2,6,9,19, 6,11,11,5,6,4, 6,11,2,6,9,20, 6,10,11,5,6,5, 6,10,2,6,9,21, 6,9,11,5,6,6, 6,9,2,4,6,6, + 6,9,2,6,9,22, 6,8,11,5,6,7, 6,8,3,6,9,23, 6,7,11,4,6,8, 6,7,11,5,6,8, 6,7,3,4,6,8, 6,7,3,6,9,24, 6,6,10,4,6,9, + 6,6,10,5,6,9, 6,6,4,6,9,25, 6,5,9,5,6,10, 6,5,4,6,9,26, 6,4,9,5,6,11, 6,4,3,3,11,43, 6,4,3,6,9,27, 6,3,9,5,6,12, + 6,3,3,6,9,28, 6,2,9,5,6,13, 6,2,3,6,9,29, 6,1,10,3,4,46, 6,1,10,5,6,14, 6,1,3,4,6,14, 6,1,3,6,9,30, 6,0,10,1,4,47, + 6,0,10,5,6,15, 6,0,9,1,5,47, 6,0,8,1,6,47, 6,0,7,1,7,47, 6,0,6,1,8,47, 6,0,5,1,9,47, 6,0,4,1,10,47, 6,0,4,6,9,31, + 7,15,8,3,6,32, 7,15,8,5,7,0, 7,15,7,3,7,32, 7,15,6,3,8,32, 7,15,6,6,8,16, 7,14,13,3,1,33, 7,14,13,4,7,1, 7,14,13,5,7,1, + 7,14,12,3,2,33, 7,14,11,3,3,33, 7,14,10,3,4,33, 7,14,9,3,5,33, 7,14,5,3,9,33, 7,14,4,3,10,33, 7,14,4,6,8,17, 7,13,12,4,7,2, + 7,13,12,5,7,2, 7,13,3,3,11,34, 7,13,3,6,8,18, 7,12,11,5,7,3, 7,12,2,3,12,35, 7,12,2,6,8,19, 7,11,11,5,7,4, 7,11,2,6,8,20, + 7,10,11,5,7,5, 7,10,2,6,8,21, 7,9,11,5,7,6, 7,9,2,4,7,6, 7,9,2,6,8,22, 7,8,11,5,7,7, 7,8,3,6,8,23, 7,7,11,4,7,8, + 7,7,11,5,7,8, 7,7,3,4,7,8, 7,7,3,6,8,24, 7,6,10,4,7,9, 7,6,10,5,7,9, 7,6,4,6,8,25, 7,5,9,5,7,10, 7,5,4,6,8,26, + 7,4,9,5,7,11, 7,4,3,3,11,43, 7,4,3,6,8,27, 7,3,9,5,7,12, 7,3,3,6,8,28, 7,2,9,5,7,13, 7,2,3,6,8,29, 7,1,10,3,4,46, + 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,4,4,7,14, + 7,1,3,4,7,14, 7,1,3,6,8,30, 8,15,8,3,6,32, 8,15,8,5,8,0, 8,15,7,3,7,32, 8,15,6,3,8,32, 8,15,6,6,7,16, 8,14,13,3,1,33, + 8,14,13,4,8,1, 8,14,13,5,8,1, 8,14,12,3,2,33, 8,14,11,3,3,33, 8,14,10,3,4,33, 8,14,9,3,5,33, 8,14,5,3,9,33, 8,14,4,3,10,33, + 8,14,4,6,7,17, 8,13,12,4,8,2, 8,13,12,5,8,2, 8,13,3,3,11,34, 8,13,3,6,7,18, 8,12,11,5,8,3, 8,12,2,3,12,35, 8,12,2,6,7,19, + 8,11,11,5,8,4, 8,11,2,6,7,20, 8,10,11,5,8,5, 8,10,2,6,7,21, 8,9,11,5,8,6, 8,9,2,4,8,6, 8,9,2,6,7,22, 8,8,11,5,8,7, + 8,8,3,6,7,23, 8,7,11,4,8,8, 8,7,11,5,8,8, 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,10,4,8,9, 8,6,10,5,8,9, 8,6,4,6,7,25, + 8,5,9,5,8,10, 8,5,4,6,7,26, 8,4,9,5,8,11, 8,4,3,3,11,43, 8,4,3,6,7,27, 8,3,9,5,8,12, 8,3,3,6,7,28, 8,2,9,5,8,13, + 8,2,3,6,7,29, 8,1,10,3,4,46, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, + 8,1,5,4,8,14, 8,1,4,4,8,14, 8,1,3,4,8,14, 8,1,3,6,7,30, 9,15,8,1,6,32, 9,15,8,3,6,32, 9,15,8,5,9,0, 9,15,7,1,7,32, + 9,15,7,3,7,32, 9,15,6,1,8,32, 9,15,6,3,8,32, 9,15,6,6,6,16, 9,14,13,3,1,33, 9,14,13,4,9,1, 9,14,13,5,9,1, 9,14,12,3,2,33, + 9,14,11,3,3,33, 9,14,10,3,4,33, 9,14,9,3,5,33, 9,14,5,3,9,33, 9,14,4,3,10,33, 9,14,4,6,6,17, 9,13,12,4,9,2, 9,13,12,5,9,2, + 9,13,3,3,11,34, 9,13,3,6,6,18, 9,12,11,5,9,3, 9,12,2,3,12,35, 9,12,2,6,6,19, 9,11,11,5,9,4, 9,11,2,6,6,20, 9,10,11,5,9,5, + 9,10,2,6,6,21, 9,9,11,5,9,6, 9,9,2,4,9,6, 9,9,2,6,6,22, 9,8,11,5,9,7, 9,8,3,6,6,23, 9,7,11,4,9,8, 9,7,11,5,9,8, + 9,7,3,4,9,8, 9,7,3,6,6,24, 9,6,10,4,9,9, 9,6,10,5,9,9, 9,6,4,6,6,25, 9,5,9,5,9,10, 9,5,4,6,6,26, 9,4,9,5,9,11, + 9,4,3,3,11,43, 9,4,3,6,6,27, 9,3,9,5,9,12, 9,3,3,6,6,28, 9,2,9,5,9,13, 9,2,3,6,6,29, 9,1,10,3,4,46, 9,1,10,5,9,14, + 9,1,3,4,9,14, 9,1,3,6,6,30, 9,0,10,2,4,47, 9,0,10,5,9,15, 9,0,9,2,5,47, 9,0,8,2,6,47, 9,0,7,2,7,47, 9,0,6,2,8,47, + 9,0,5,2,9,47, 9,0,4,2,10,47, 9,0,4,6,6,31, 10,14,13,3,1,33, 10,14,13,4,10,1, 10,14,13,5,10,1, 10,14,12,3,2,33, 10,14,11,3,3,33, + 10,14,10,3,4,33, 10,14,9,3,5,33, 10,14,8,3,6,33, 10,14,7,3,7,33, 10,14,6,3,8,33, 10,14,5,3,9,33, 10,14,4,3,10,33, 10,14,4,6,5,17, + 10,13,12,4,10,2, 10,13,12,5,10,2, 10,13,3,3,11,34, 10,13,3,6,5,18, 10,12,11,5,10,3, 10,12,2,3,12,35, 10,12,2,6,5,19, 10,11,11,5,10,4, + 10,11,2,6,5,20, 10,10,11,5,10,5, 10,10,2,6,5,21, 10,9,11,5,10,6, 10,9,2,4,10,6, 10,9,2,6,5,22, 10,8,11,5,10,7, 10,8,3,6,5,23, + 10,7,11,4,10,8, 10,7,11,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,10,4,10,9, 10,6,10,5,10,9, 10,6,4,6,5,25, 10,5,9,5,10,10, + 10,5,4,6,5,26, 10,4,9,5,10,11, 10,4,3,3,11,43, 10,4,3,6,5,27, 10,3,9,5,10,12, 10,3,3,6,5,28, 10,2,9,5,10,13, 10,2,3,6,5,29, + 10,1,10,3,4,46, 10,1,10,5,10,14, 10,1,3,4,10,14, 10,1,3,6,5,30, 10,0,10,5,10,15, 10,0,4,6,5,31, 11,14,13,3,1,33, 11,14,13,4,11,1, + 11,14,13,5,11,1, 11,14,12,3,2,33, 11,14,11,3,3,33, 11,14,10,3,4,33, 11,14,9,3,5,33, 11,14,8,3,6,33, 11,14,7,3,7,33, 11,14,6,3,8,33, + 11,14,5,3,9,33, 11,14,4,3,10,33, 11,14,4,6,4,17, 11,13,12,4,11,2, 11,13,12,5,11,2, 11,13,3,3,11,34, 11,13,3,6,4,18, 11,12,11,5,11,3, + 11,12,2,3,12,35, 11,12,2,6,4,19, 11,11,11,5,11,4, 11,11,2,6,4,20, 11,10,11,5,11,5, 11,10,2,6,4,21, 11,9,11,5,11,6, 11,9,2,4,11,6, + 11,9,2,6,4,22, 11,8,11,5,11,7, 11,8,3,6,4,23, 11,7,11,4,11,8, 11,7,11,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, 11,6,10,4,11,9, + 11,6,10,5,11,9, 11,6,4,6,4,25, 11,5,9,5,11,10, 11,5,4,6,4,26, 11,4,9,5,11,11, 11,4,3,3,11,43, 11,4,3,6,4,27, 11,3,9,5,11,12, + 11,3,3,6,4,28, 11,2,9,5,11,13, 11,2,3,6,4,29, 11,1,10,3,4,46, 11,1,10,5,11,14, 11,1,3,4,11,14, 11,1,3,6,4,30, 11,0,10,1,4,47, + 11,0,10,5,11,15, 11,0,9,1,5,47, 11,0,8,1,6,47, 11,0,7,1,7,47, 11,0,6,1,8,47, 11,0,5,1,9,47, 11,0,4,1,10,47, 11,0,4,6,4,31, + 12,14,13,3,1,33, 12,14,13,4,3,17, 12,14,13,5,3,17, 12,14,12,3,2,33, 12,14,11,3,3,33, 12,14,10,3,4,33, 12,14,9,3,5,33, 12,14,8,3,6,33, + 12,14,7,3,7,33, 12,14,6,3,8,33, 12,14,5,3,9,33, 12,14,4,3,10,33, 12,14,4,6,3,17, 12,13,12,4,12,2, 12,13,12,5,12,2, 12,13,3,3,11,34, + 12,13,3,6,3,18, 12,12,11,1,3,35, 12,12,11,5,12,3, 12,12,10,1,4,35, 12,12,9,1,5,35, 12,12,8,1,6,35, 12,12,7,1,7,35, 12,12,6,1,8,35, + 12,12,5,1,9,35, 12,12,4,1,10,35, 12,12,3,1,11,35, 12,12,2,1,12,35, 12,12,2,3,12,35, 12,12,2,6,3,19, 12,11,11,5,12,4, 12,11,2,6,3,20, + 12,10,11,5,12,5, 12,10,2,6,3,21, 12,9,11,5,12,6, 12,9,2,4,12,6, 12,9,2,6,3,22, 12,8,11,5,12,7, 12,8,3,6,3,23, 12,7,11,4,12,8, + 12,7,11,5,12,8, 12,7,3,4,12,8, 12,7,3,6,3,24, 12,6,10,4,12,9, 12,6,10,5,12,9, 12,6,4,6,3,25, 12,5,9,5,12,10, 12,5,4,6,3,26, + 12,4,9,5,12,11, 12,4,3,3,11,43, 12,4,3,6,3,27, 12,3,9,5,12,12, 12,3,3,6,3,28, 12,2,9,1,5,45, 12,2,9,5,12,13, 12,2,8,1,6,45, + 12,2,7,1,7,45, 12,2,6,1,8,45, 12,2,5,1,9,45, 12,2,4,1,10,45, 12,2,3,1,11,45, 12,2,3,6,3,29, 12,1,10,1,4,46, 12,1,10,3,4,46, + 12,1,10,4,12,14, 12,1,10,5,12,14, 12,1,9,1,5,46, 12,1,9,4,12,14, 12,1,8,1,6,46, 12,1,8,4,12,14, 12,1,7,1,7,46, 12,1,7,4,12,14, + 12,1,6,1,8,46, 12,1,6,4,12,14, 12,1,5,1,9,46, 12,1,5,4,12,14, 12,1,4,1,10,46, 12,1,4,4,12,14, 12,1,3,1,11,46, 12,1,3,4,12,14, + 12,1,3,6,3,30, 13,14,13,3,1,33, 13,14,13,4,2,17, 13,14,13,5,2,17, 13,14,12,3,2,33, 13,14,11,3,3,33, 13,14,10,3,4,33, 13,14,9,3,5,33, + 13,14,8,3,6,33, 13,14,7,3,7,33, 13,14,6,3,8,33, 13,14,5,3,9,33, 13,14,4,3,10,33, 13,14,4,6,2,17, 13,13,12,1,2,34, 13,13,12,4,2,18, + 13,13,12,5,2,18, 13,13,11,1,3,34, 13,13,11,4,2,18, 13,13,10,1,4,34, 13,13,10,4,2,18, 13,13,9,1,5,34, 13,13,9,4,2,18, 13,13,8,1,6,34, + 13,13,8,4,2,18, 13,13,7,1,7,34, 13,13,7,4,2,18, 13,13,6,1,8,34, 13,13,6,4,2,18, 13,13,5,1,9,34, 13,13,5,4,2,18, 13,13,4,1,10,34, + 13,13,4,4,2,18, 13,13,3,1,11,34, 13,13,3,3,11,34, 13,13,3,4,2,18, 13,13,3,6,2,18, 13,11,11,1,3,36, 13,11,11,3,3,36, 13,11,11,5,13,4, + 13,11,10,1,4,36, 13,11,10,3,4,36, 13,11,9,1,5,36, 13,11,9,3,5,36, 13,11,8,1,6,36, 13,11,8,3,6,36, 13,11,7,1,7,36, 13,11,7,3,7,36, + 13,11,6,1,8,36, 13,11,6,3,8,36, 13,11,5,1,9,36, 13,11,5,3,9,36, 13,11,4,1,10,36, 13,11,4,3,10,36, 13,11,3,1,11,36, 13,11,3,3,11,36, + 13,11,2,1,12,36, 13,11,2,3,12,36, 13,11,2,6,2,20, 13,10,11,5,13,5, 13,10,2,6,2,21, 13,9,11,5,13,6, 13,9,2,4,13,6, 13,9,2,6,2,22, + 13,8,11,5,13,7, 13,8,3,6,2,23, 13,7,11,1,3,40, 13,7,11,4,13,8, 13,7,11,5,13,8, 13,7,10,1,4,40, 13,7,9,1,5,40, 13,7,8,1,6,40, + 13,7,7,1,7,40, 13,7,6,1,8,40, 13,7,5,1,9,40, 13,7,4,1,10,40, 13,7,3,1,11,40, 13,7,3,4,13,8, 13,7,3,6,2,24, 13,6,10,1,4,41, + 13,6,10,4,13,9, 13,6,10,5,13,9, 13,6,9,1,5,41, 13,6,8,1,6,41, 13,6,7,1,7,41, 13,6,6,1,8,41, 13,6,5,1,9,41, 13,6,4,1,10,41, + 13,6,4,6,2,25, 13,5,9,5,13,10, 13,5,4,6,2,26, 13,4,9,5,13,11, 13,4,3,3,11,43, 13,4,3,6,2,27, 13,3,9,1,5,44, 13,3,9,4,13,12, + 13,3,9,5,13,12, 13,3,8,1,6,44, 13,3,8,4,13,12, 13,3,7,1,7,44, 13,3,7,4,13,12, 13,3,6,1,8,44, 13,3,6,4,13,12, 13,3,5,1,9,44, + 13,3,5,4,13,12, 13,3,4,1,10,44, 13,3,4,4,13,12, 13,3,3,1,11,44, 13,3,3,4,13,12, 13,3,3,6,2,28, 14,14,13,1,1,33, 14,14,13,3,1,33, + 14,14,13,4,1,17, 14,14,13,5,1,17, 14,14,12,1,2,33, 14,14,12,3,2,33, 14,14,12,4,1,17, 14,14,11,1,3,33, 14,14,11,3,3,33, 14,14,11,4,1,17, + 14,14,10,1,4,33, 14,14,10,3,4,33, 14,14,10,4,1,17, 14,14,9,1,5,33, 14,14,9,3,5,33, 14,14,9,4,1,17, 14,14,8,1,6,33, 14,14,8,3,6,33, + 14,14,8,4,1,17, 14,14,7,1,7,33, 14,14,7,3,7,33, 14,14,7,4,1,17, 14,14,6,1,8,33, 14,14,6,3,8,33, 14,14,6,4,1,17, 14,14,5,1,9,33, + 14,14,5,3,9,33, 14,14,5,4,1,17, 14,14,4,1,10,33, 14,14,4,3,10,33, 14,14,4,4,1,17, 14,14,4,6,1,17, 14,10,11,1,3,37, 14,10,11,3,3,37, + 14,10,11,5,14,5, 14,10,10,1,4,37, 14,10,10,3,4,37, 14,10,9,1,5,37, 14,10,9,3,5,37, 14,10,8,1,6,37, 14,10,8,3,6,37, 14,10,7,1,7,37, + 14,10,7,3,7,37, 14,10,6,1,8,37, 14,10,6,3,8,37, 14,10,5,1,9,37, 14,10,5,3,9,37, 14,10,4,1,10,37, 14,10,4,3,10,37, 14,10,3,1,11,37, + 14,10,3,3,11,37, 14,10,2,1,12,37, 14,10,2,3,12,37, 14,10,2,6,1,21, 14,9,11,1,3,38, 14,9,11,5,14,6, 14,9,10,1,4,38, 14,9,9,1,5,38, + 14,9,8,1,6,38, 14,9,7,1,7,38, 14,9,6,1,8,38, 14,9,5,1,9,38, 14,9,4,1,10,38, 14,9,3,1,11,38, 14,9,2,1,12,38, 14,9,2,4,14,6, + 14,9,2,6,1,22, 14,8,11,1,3,39, 14,8,11,4,14,7, 14,8,11,5,14,7, 14,8,10,1,4,39, 14,8,10,4,14,7, 14,8,9,1,5,39, 14,8,9,4,14,7, + 14,8,8,1,6,39, 14,8,8,4,14,7, 14,8,7,1,7,39, 14,8,7,4,14,7, 14,8,6,1,8,39, 14,8,6,4,14,7, 14,8,5,1,9,39, 14,8,5,4,14,7, + 14,8,4,1,10,39, 14,8,4,4,14,7, 14,8,3,1,11,39, 14,8,3,4,14,7, 14,8,3,6,1,23, 14,5,9,1,5,42, 14,5,9,3,5,42, 14,5,9,5,14,10, + 14,5,8,1,6,42, 14,5,8,3,6,42, 14,5,7,1,7,42, 14,5,7,3,7,42, 14,5,6,1,8,42, 14,5,6,3,8,42, 14,5,5,1,9,42, 14,5,5,3,9,42, + 14,5,4,1,10,42, 14,5,4,3,10,42, 14,5,4,6,1,26, 14,4,9,1,5,43, 14,4,9,4,14,11, 14,4,9,5,14,11, 14,4,8,1,6,43, 14,4,8,4,14,11, + 14,4,7,1,7,43, 14,4,7,4,14,11, 14,4,6,1,8,43, 14,4,6,4,14,11, 14,4,5,1,9,43, 14,4,5,4,14,11, 14,4,4,1,10,43, 14,4,4,4,14,11, + 14,4,3,1,11,43, 14,4,3,3,11,43, 14,4,3,4,14,11, 14,4,3,6,1,27, + }, + }, + }, +} diff --git a/assets/voxels/snorlax.lua b/assets/voxels/snorlax.lua new file mode 100644 index 0000000..f93c5c6 --- /dev/null +++ b/assets/voxels/snorlax.lua @@ -0,0 +1,183 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "snorlax" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "snorlax", + sheetW = 16, + sheetH = 16, + size = 16, + poses = { + stand = { + frames = { 0 }, + voxels = 2852, + count = 1260, + faces = { + 0,8,15,2,15,6, 0,8,15,3,15,6, 0,8,15,5,0,6, 0,8,14,2,14,6, 0,8,14,3,14,6, 0,8,13,2,13,6, 0,8,13,3,13,6, 0,8,12,2,12,6, + 0,8,12,3,12,6, 0,8,11,2,11,6, 0,8,11,3,11,6, 0,8,10,2,10,6, 0,8,10,3,10,6, 0,8,9,2,9,6, 0,8,9,3,9,6, 0,8,8,2,8,6, + 0,8,8,3,8,6, 0,8,7,2,7,6, 0,8,7,3,7,6, 0,8,6,2,6,6, 0,8,6,3,6,6, 0,8,5,2,5,6, 0,8,5,3,5,6, 0,8,4,2,4,6, + 0,8,4,3,4,6, 0,8,3,2,3,6, 0,8,3,3,3,6, 0,8,2,2,2,6, 0,8,2,3,2,6, 0,8,1,2,1,6, 0,8,1,3,1,6, 0,8,0,2,0,6, + 0,8,0,3,0,6, 0,8,0,6,15,6, 0,7,15,2,15,7, 0,7,15,4,0,7, 0,7,15,5,0,7, 0,7,14,2,14,7, 0,7,14,4,0,7, 0,7,13,2,13,7, + 0,7,13,4,0,7, 0,7,12,2,12,7, 0,7,12,4,0,7, 0,7,11,2,11,7, 0,7,11,4,0,7, 0,7,10,2,10,7, 0,7,10,4,0,7, 0,7,9,2,9,7, + 0,7,9,4,0,7, 0,7,8,2,8,7, 0,7,8,4,0,7, 0,7,7,2,7,7, 0,7,7,4,0,7, 0,7,6,2,6,7, 0,7,6,4,0,7, 0,7,5,2,5,7, + 0,7,5,4,0,7, 0,7,4,2,4,7, 0,7,4,4,0,7, 0,7,3,2,3,7, 0,7,3,4,0,7, 0,7,2,2,2,7, 0,7,2,4,0,7, 0,7,1,2,1,7, + 0,7,1,4,0,7, 0,7,0,2,0,7, 0,7,0,4,0,7, 0,7,0,6,15,7, 0,3,15,2,15,11, 0,3,15,3,15,11, 0,3,15,5,0,11, 0,3,14,2,14,11, + 0,3,14,3,14,11, 0,3,13,2,13,11, 0,3,13,3,13,11, 0,3,12,2,12,11, 0,3,12,3,12,11, 0,3,11,2,11,11, 0,3,11,3,11,11, 0,3,10,2,10,11, + 0,3,10,3,10,11, 0,3,9,2,9,11, 0,3,9,3,9,11, 0,3,8,2,8,11, 0,3,8,3,8,11, 0,3,7,2,7,11, 0,3,7,3,7,11, 0,3,6,2,6,11, + 0,3,6,3,6,11, 0,3,5,2,5,11, 0,3,5,3,5,11, 0,3,4,2,4,11, 0,3,4,3,4,11, 0,3,3,2,3,11, 0,3,3,3,3,11, 0,3,2,2,2,11, + 0,3,2,3,2,11, 0,3,1,2,1,11, 0,3,1,3,1,11, 0,3,0,2,0,11, 0,3,0,3,0,11, 0,3,0,6,15,11, 0,2,15,2,15,12, 0,2,15,5,0,12, + 0,2,14,2,14,12, 0,2,13,2,13,12, 0,2,12,2,12,12, 0,2,11,2,11,12, 0,2,10,2,10,12, 0,2,9,2,9,12, 0,2,8,2,8,12, 0,2,7,2,7,12, + 0,2,6,2,6,12, 0,2,5,2,5,12, 0,2,4,2,4,12, 0,2,3,2,3,12, 0,2,2,2,2,12, 0,2,1,2,1,12, 0,2,0,2,0,12, 0,2,0,6,15,12, + 0,1,15,2,15,13, 0,1,15,4,0,13, 0,1,15,5,0,13, 0,1,14,2,14,13, 0,1,14,4,0,13, 0,1,13,2,13,13, 0,1,13,4,0,13, 0,1,12,2,12,13, + 0,1,12,4,0,13, 0,1,11,2,11,13, 0,1,11,4,0,13, 0,1,10,2,10,13, 0,1,10,4,0,13, 0,1,9,2,9,13, 0,1,9,4,0,13, 0,1,8,2,8,13, + 0,1,8,4,0,13, 0,1,7,2,7,13, 0,1,7,4,0,13, 0,1,6,2,6,13, 0,1,6,4,0,13, 0,1,5,2,5,13, 0,1,5,4,0,13, 0,1,4,2,4,13, + 0,1,4,4,0,13, 0,1,3,2,3,13, 0,1,3,4,0,13, 0,1,2,2,2,13, 0,1,2,4,0,13, 0,1,1,2,1,13, 0,1,1,4,0,13, 0,1,0,2,0,13, + 0,1,0,4,0,13, 0,1,0,6,15,13, 1,9,14,2,14,5, 1,9,14,3,14,5, 1,9,14,5,1,5, 1,9,13,2,13,5, 1,9,13,3,13,5, 1,9,12,2,12,5, + 1,9,12,3,12,5, 1,9,11,2,11,5, 1,9,11,3,11,5, 1,9,10,2,10,5, 1,9,10,3,10,5, 1,9,9,2,9,5, 1,9,9,3,9,5, 1,9,8,2,8,5, + 1,9,8,3,8,5, 1,9,7,2,7,5, 1,9,7,3,7,5, 1,9,6,2,6,5, 1,9,6,3,6,5, 1,9,5,2,5,5, 1,9,5,3,5,5, 1,9,4,2,4,5, + 1,9,4,3,4,5, 1,9,3,2,3,5, 1,9,3,3,3,5, 1,9,2,2,2,5, 1,9,2,3,2,5, 1,9,1,2,1,5, 1,9,1,3,1,5, 1,9,1,6,14,5, + 1,8,15,3,15,6, 1,8,15,5,1,6, 1,8,0,3,0,6, 1,8,0,6,14,6, 1,7,15,4,1,7, 1,7,15,5,1,7, 1,7,0,4,1,7, 1,7,0,6,14,7, + 1,6,14,2,14,8, 1,6,14,5,1,8, 1,6,13,2,13,8, 1,6,12,2,12,8, 1,6,11,2,11,8, 1,6,10,2,10,8, 1,6,9,2,9,8, 1,6,8,2,8,8, + 1,6,7,2,7,8, 1,6,6,2,6,8, 1,6,5,2,5,8, 1,6,4,2,4,8, 1,6,3,2,3,8, 1,6,2,2,2,8, 1,6,1,2,1,8, 1,6,1,6,14,8, + 1,5,14,2,14,9, 1,5,14,5,1,9, 1,5,13,2,13,9, 1,5,12,2,12,9, 1,5,11,2,11,9, 1,5,10,2,10,9, 1,5,9,2,9,9, 1,5,8,2,8,9, + 1,5,7,2,7,9, 1,5,6,2,6,9, 1,5,5,2,5,9, 1,5,4,2,4,9, 1,5,3,2,3,9, 1,5,2,2,2,9, 1,5,1,2,1,9, 1,5,1,6,14,9, + 1,4,14,2,14,10, 1,4,14,5,1,10, 1,4,13,2,13,10, 1,4,12,2,12,10, 1,4,11,2,11,10, 1,4,10,2,10,10, 1,4,9,2,9,10, 1,4,8,2,8,10, + 1,4,7,2,7,10, 1,4,6,2,6,10, 1,4,5,2,5,10, 1,4,4,2,4,10, 1,4,3,2,3,10, 1,4,2,2,2,10, 1,4,1,2,1,10, 1,4,1,6,14,10, + 1,3,15,3,15,11, 1,3,15,5,1,11, 1,3,0,3,0,11, 1,3,0,6,14,11, 1,2,15,5,1,12, 1,2,0,6,14,12, 1,1,15,4,1,13, 1,1,15,5,1,13, + 1,1,0,4,1,13, 1,1,0,6,14,13, 1,0,14,2,14,14, 1,0,14,5,1,14, 1,0,13,2,13,14, 1,0,12,2,12,14, 1,0,11,2,11,14, 1,0,10,2,10,14, + 1,0,9,2,9,14, 1,0,8,2,8,14, 1,0,7,2,7,14, 1,0,6,2,6,14, 1,0,5,2,5,14, 1,0,4,2,4,14, 1,0,3,2,3,14, 1,0,2,2,2,14, + 1,0,1,2,1,14, 1,0,1,6,14,14, 2,14,13,2,13,0, 2,14,13,3,13,0, 2,14,13,5,2,0, 2,14,12,2,12,0, 2,14,12,3,12,0, 2,14,12,6,13,0, + 2,14,3,2,3,0, 2,14,3,3,3,0, 2,14,3,5,2,0, 2,14,2,2,2,0, 2,14,2,3,2,0, 2,14,2,6,13,0, 2,13,13,2,13,1, 2,13,13,5,2,1, + 2,13,12,2,12,1, 2,13,11,2,11,1, 2,13,11,3,11,1, 2,13,10,2,10,1, 2,13,10,3,10,1, 2,13,9,2,9,1, 2,13,9,3,9,1, 2,13,8,2,8,1, + 2,13,8,3,8,1, 2,13,7,2,7,1, 2,13,7,3,7,1, 2,13,6,2,6,1, 2,13,6,3,6,1, 2,13,5,2,5,1, 2,13,5,3,5,1, 2,13,4,2,4,1, + 2,13,4,3,4,1, 2,13,3,2,3,1, 2,13,2,2,2,1, 2,13,2,6,13,1, 2,12,13,2,13,2, 2,12,13,5,2,2, 2,12,12,2,12,2, 2,12,11,2,11,2, + 2,12,10,2,10,2, 2,12,9,2,9,2, 2,12,8,2,8,2, 2,12,7,2,7,2, 2,12,6,2,6,2, 2,12,5,2,5,2, 2,12,4,2,4,2, 2,12,3,2,3,2, + 2,12,2,2,2,2, 2,12,2,6,13,2, 2,11,13,2,13,3, 2,11,13,5,2,3, 2,11,12,2,12,3, 2,11,11,2,11,3, 2,11,10,2,10,3, 2,11,9,2,9,3, + 2,11,8,2,8,3, 2,11,7,2,7,3, 2,11,6,2,6,3, 2,11,5,2,5,3, 2,11,4,2,4,3, 2,11,3,2,3,3, 2,11,2,2,2,3, 2,11,2,6,13,3, + 2,10,13,2,13,4, 2,10,13,5,2,4, 2,10,12,2,12,4, 2,10,11,2,11,4, 2,10,10,2,10,4, 2,10,9,2,9,4, 2,10,8,2,8,4, 2,10,7,2,7,4, + 2,10,6,2,6,4, 2,10,5,2,5,4, 2,10,4,2,4,4, 2,10,3,2,3,4, 2,10,2,2,2,4, 2,10,2,6,13,4, 2,9,14,3,14,5, 2,9,14,5,2,5, + 2,9,1,3,1,5, 2,9,1,6,13,5, 2,8,15,3,15,6, 2,8,15,5,2,6, 2,8,0,3,0,6, 2,8,0,6,13,6, 2,7,15,4,2,7, 2,7,15,5,2,7, + 2,7,0,4,2,7, 2,7,0,6,13,7, 2,6,14,5,2,8, 2,6,1,6,13,8, 2,5,14,5,2,9, 2,5,1,6,13,9, 2,4,14,5,2,10, 2,4,1,6,13,10, + 2,3,15,3,15,11, 2,3,15,5,2,11, 2,3,0,3,0,11, 2,3,0,6,13,11, 2,2,15,5,2,12, 2,2,0,6,13,12, 2,1,15,4,2,13, 2,1,15,5,2,13, + 2,1,0,4,2,13, 2,1,0,6,13,13, 2,0,14,5,2,14, 2,0,1,6,13,14, 3,14,13,1,13,0, 3,14,13,3,13,0, 3,14,13,5,3,0, 3,14,12,1,12,0, + 3,14,12,3,12,0, 3,14,12,6,12,0, 3,14,3,1,3,0, 3,14,3,3,3,0, 3,14,3,5,3,0, 3,14,2,1,2,0, 3,14,2,3,2,0, 3,14,2,6,12,0, + 3,13,13,5,3,1, 3,13,11,3,11,1, 3,13,10,3,10,1, 3,13,9,3,9,1, 3,13,8,3,8,1, 3,13,7,3,7,1, 3,13,6,3,6,1, 3,13,5,3,5,1, + 3,13,4,3,4,1, 3,13,2,6,12,1, 3,12,13,5,3,2, 3,12,2,6,12,2, 3,11,13,5,3,3, 3,11,2,6,12,3, 3,10,13,5,3,4, 3,10,2,6,12,4, + 3,9,14,3,14,5, 3,9,14,5,3,5, 3,9,1,3,1,5, 3,9,1,6,12,5, 3,8,15,3,15,6, 3,8,15,5,3,6, 3,8,0,3,0,6, 3,8,0,6,12,6, + 3,7,15,4,3,7, 3,7,15,5,3,7, 3,7,0,4,3,7, 3,7,0,6,12,7, 3,6,14,5,3,8, 3,6,1,6,12,8, 3,5,14,5,3,9, 3,5,1,6,12,9, + 3,4,14,5,3,10, 3,4,1,6,12,10, 3,3,15,3,15,11, 3,3,15,5,3,11, 3,3,0,3,0,11, 3,3,0,6,12,11, 3,2,15,5,3,12, 3,2,0,6,12,12, + 3,1,15,4,3,13, 3,1,15,5,3,13, 3,1,0,4,3,13, 3,1,0,6,12,13, 3,0,14,5,3,14, 3,0,1,6,12,14, 4,13,13,3,13,1, 4,13,13,5,4,1, + 4,13,12,3,12,1, 4,13,11,3,11,1, 4,13,10,3,10,1, 4,13,9,3,9,1, 4,13,8,3,8,1, 4,13,7,3,7,1, 4,13,6,3,6,1, 4,13,5,3,5,1, + 4,13,4,3,4,1, 4,13,3,3,3,1, 4,13,2,3,2,1, 4,13,2,6,11,1, 4,12,13,5,4,2, 4,12,2,6,11,2, 4,11,13,5,4,3, 4,11,2,6,11,3, + 4,10,13,5,4,4, 4,10,2,6,11,4, 4,9,14,3,14,5, 4,9,14,5,4,5, 4,9,1,3,1,5, 4,9,1,6,11,5, 4,8,15,3,15,6, 4,8,15,5,4,6, + 4,8,0,3,0,6, 4,8,0,6,11,6, 4,7,15,4,4,7, 4,7,15,5,4,7, 4,7,0,4,4,7, 4,7,0,6,11,7, 4,6,14,5,4,8, 4,6,1,6,11,8, + 4,5,14,5,4,9, 4,5,1,6,11,9, 4,4,14,5,4,10, 4,4,1,6,11,10, 4,3,15,3,15,11, 4,3,15,5,4,11, 4,3,0,3,0,11, 4,3,0,6,11,11, + 4,2,15,5,4,12, 4,2,0,6,11,12, 4,1,15,4,4,13, 4,1,15,5,4,13, 4,1,0,4,4,13, 4,1,0,6,11,13, 4,0,14,5,4,14, 4,0,1,6,11,14, + 5,13,13,3,13,1, 5,13,13,5,5,1, 5,13,12,3,12,1, 5,13,11,3,11,1, 5,13,10,3,10,1, 5,13,9,3,9,1, 5,13,8,3,8,1, 5,13,7,3,7,1, + 5,13,6,3,6,1, 5,13,5,3,5,1, 5,13,4,3,4,1, 5,13,3,3,3,1, 5,13,2,3,2,1, 5,13,2,6,10,1, 5,12,13,5,5,2, 5,12,2,6,10,2, + 5,11,13,5,5,3, 5,11,2,6,10,3, 5,10,13,5,5,4, 5,10,2,6,10,4, 5,9,14,3,14,5, 5,9,14,5,5,5, 5,9,1,3,1,5, 5,9,1,6,10,5, + 5,8,15,3,15,6, 5,8,15,5,5,6, 5,8,0,3,0,6, 5,8,0,6,10,6, 5,7,15,4,5,7, 5,7,15,5,5,7, 5,7,0,4,5,7, 5,7,0,6,10,7, + 5,6,14,5,5,8, 5,6,1,6,10,8, 5,5,14,5,5,9, 5,5,1,6,10,9, 5,4,14,5,5,10, 5,4,1,6,10,10, 5,3,15,3,15,11, 5,3,15,5,5,11, + 5,3,0,3,0,11, 5,3,0,6,10,11, 5,2,15,5,5,12, 5,2,0,6,10,12, 5,1,15,4,5,13, 5,1,15,5,5,13, 5,1,0,4,5,13, 5,1,0,6,10,13, + 5,0,14,5,5,14, 5,0,1,6,10,14, 6,13,13,3,13,1, 6,13,13,5,6,1, 6,13,12,3,12,1, 6,13,11,3,11,1, 6,13,10,3,10,1, 6,13,9,3,9,1, + 6,13,8,3,8,1, 6,13,7,3,7,1, 6,13,6,3,6,1, 6,13,5,3,5,1, 6,13,4,3,4,1, 6,13,3,3,3,1, 6,13,2,3,2,1, 6,13,2,6,9,1, + 6,12,13,5,6,2, 6,12,2,6,9,2, 6,11,13,5,6,3, 6,11,2,6,9,3, 6,10,13,5,6,4, 6,10,2,6,9,4, 6,9,14,3,14,5, 6,9,14,5,6,5, + 6,9,1,3,1,5, 6,9,1,6,9,5, 6,8,15,3,15,6, 6,8,15,5,6,6, 6,8,0,3,0,6, 6,8,0,6,9,6, 6,7,15,4,6,7, 6,7,15,5,6,7, + 6,7,0,4,6,7, 6,7,0,6,9,7, 6,6,14,5,6,8, 6,6,1,6,9,8, 6,5,14,5,6,9, 6,5,1,6,9,9, 6,4,14,5,6,10, 6,4,1,6,9,10, + 6,3,15,3,15,11, 6,3,15,5,6,11, 6,3,0,3,0,11, 6,3,0,6,9,11, 6,2,15,5,6,12, 6,2,0,6,9,12, 6,1,15,4,6,13, 6,1,15,5,6,13, + 6,1,0,4,6,13, 6,1,0,6,9,13, 6,0,14,5,6,14, 6,0,1,6,9,14, 7,13,13,3,13,1, 7,13,13,5,7,1, 7,13,12,3,12,1, 7,13,11,3,11,1, + 7,13,10,3,10,1, 7,13,9,3,9,1, 7,13,8,3,8,1, 7,13,7,3,7,1, 7,13,6,3,6,1, 7,13,5,3,5,1, 7,13,4,3,4,1, 7,13,3,3,3,1, + 7,13,2,3,2,1, 7,13,2,6,8,1, 7,12,13,5,7,2, 7,12,2,6,8,2, 7,11,13,5,7,3, 7,11,2,6,8,3, 7,10,13,5,7,4, 7,10,2,6,8,4, + 7,9,14,3,14,5, 7,9,14,5,7,5, 7,9,1,3,1,5, 7,9,1,6,8,5, 7,8,15,3,15,6, 7,8,15,5,7,6, 7,8,0,3,0,6, 7,8,0,6,8,6, + 7,7,15,4,7,7, 7,7,15,5,7,7, 7,7,0,4,7,7, 7,7,0,6,8,7, 7,6,14,5,7,8, 7,6,1,6,8,8, 7,5,14,5,7,9, 7,5,1,6,8,9, + 7,4,14,5,7,10, 7,4,1,6,8,10, 7,3,15,3,15,11, 7,3,15,5,7,11, 7,3,0,3,0,11, 7,3,0,6,8,11, 7,2,15,5,7,12, 7,2,0,6,8,12, + 7,1,15,4,7,13, 7,1,15,5,7,13, 7,1,0,4,7,13, 7,1,0,6,8,13, 7,0,14,5,7,14, 7,0,1,6,8,14, 8,13,13,3,13,1, 8,13,13,5,8,1, + 8,13,12,3,12,1, 8,13,11,3,11,1, 8,13,10,3,10,1, 8,13,9,3,9,1, 8,13,8,3,8,1, 8,13,7,3,7,1, 8,13,6,3,6,1, 8,13,5,3,5,1, + 8,13,4,3,4,1, 8,13,3,3,3,1, 8,13,2,3,2,1, 8,13,2,6,7,1, 8,12,13,5,8,2, 8,12,2,6,7,2, 8,11,13,5,8,3, 8,11,2,6,7,3, + 8,10,13,5,8,4, 8,10,2,6,7,4, 8,9,14,3,14,5, 8,9,14,5,8,5, 8,9,1,3,1,5, 8,9,1,6,7,5, 8,8,15,3,15,6, 8,8,15,5,8,6, + 8,8,0,3,0,6, 8,8,0,6,7,6, 8,7,15,4,8,7, 8,7,15,5,8,7, 8,7,0,4,8,7, 8,7,0,6,7,7, 8,6,14,5,8,8, 8,6,1,6,7,8, + 8,5,14,5,8,9, 8,5,1,6,7,9, 8,4,14,5,8,10, 8,4,1,6,7,10, 8,3,15,3,15,11, 8,3,15,5,8,11, 8,3,0,3,0,11, 8,3,0,6,7,11, + 8,2,15,5,8,12, 8,2,0,6,7,12, 8,1,15,4,8,13, 8,1,15,5,8,13, 8,1,0,4,8,13, 8,1,0,6,7,13, 8,0,14,5,8,14, 8,0,1,6,7,14, + 9,13,13,3,13,1, 9,13,13,5,9,1, 9,13,12,3,12,1, 9,13,11,3,11,1, 9,13,10,3,10,1, 9,13,9,3,9,1, 9,13,8,3,8,1, 9,13,7,3,7,1, + 9,13,6,3,6,1, 9,13,5,3,5,1, 9,13,4,3,4,1, 9,13,3,3,3,1, 9,13,2,3,2,1, 9,13,2,6,6,1, 9,12,13,5,9,2, 9,12,2,6,6,2, + 9,11,13,5,9,3, 9,11,2,6,6,3, 9,10,13,5,9,4, 9,10,2,6,6,4, 9,9,14,3,14,5, 9,9,14,5,9,5, 9,9,1,3,1,5, 9,9,1,6,6,5, + 9,8,15,3,15,6, 9,8,15,5,9,6, 9,8,0,3,0,6, 9,8,0,6,6,6, 9,7,15,4,9,7, 9,7,15,5,9,7, 9,7,0,4,9,7, 9,7,0,6,6,7, + 9,6,14,5,9,8, 9,6,1,6,6,8, 9,5,14,5,9,9, 9,5,1,6,6,9, 9,4,14,5,9,10, 9,4,1,6,6,10, 9,3,15,3,15,11, 9,3,15,5,9,11, + 9,3,0,3,0,11, 9,3,0,6,6,11, 9,2,15,5,9,12, 9,2,0,6,6,12, 9,1,15,4,9,13, 9,1,15,5,9,13, 9,1,0,4,9,13, 9,1,0,6,6,13, + 9,0,14,5,9,14, 9,0,1,6,6,14, 10,13,13,3,13,1, 10,13,13,5,10,1, 10,13,12,3,12,1, 10,13,11,3,11,1, 10,13,10,3,10,1, 10,13,9,3,9,1, + 10,13,8,3,8,1, 10,13,7,3,7,1, 10,13,6,3,6,1, 10,13,5,3,5,1, 10,13,4,3,4,1, 10,13,3,3,3,1, 10,13,2,3,2,1, 10,13,2,6,5,1, + 10,12,13,5,10,2, 10,12,2,6,5,2, 10,11,13,5,10,3, 10,11,2,6,5,3, 10,10,13,5,10,4, 10,10,2,6,5,4, 10,9,14,3,14,5, 10,9,14,5,10,5, + 10,9,1,3,1,5, 10,9,1,6,5,5, 10,8,15,3,15,6, 10,8,15,5,10,6, 10,8,0,3,0,6, 10,8,0,6,5,6, 10,7,15,4,10,7, 10,7,15,5,10,7, + 10,7,0,4,10,7, 10,7,0,6,5,7, 10,6,14,5,10,8, 10,6,1,6,5,8, 10,5,14,5,10,9, 10,5,1,6,5,9, 10,4,14,5,10,10, 10,4,1,6,5,10, + 10,3,15,3,15,11, 10,3,15,5,10,11, 10,3,0,3,0,11, 10,3,0,6,5,11, 10,2,15,5,10,12, 10,2,0,6,5,12, 10,1,15,4,10,13, 10,1,15,5,10,13, + 10,1,0,4,10,13, 10,1,0,6,5,13, 10,0,14,5,10,14, 10,0,1,6,5,14, 11,13,13,3,13,1, 11,13,13,5,11,1, 11,13,12,3,12,1, 11,13,11,3,11,1, + 11,13,10,3,10,1, 11,13,9,3,9,1, 11,13,8,3,8,1, 11,13,7,3,7,1, 11,13,6,3,6,1, 11,13,5,3,5,1, 11,13,4,3,4,1, 11,13,3,3,3,1, + 11,13,2,3,2,1, 11,13,2,6,4,1, 11,12,13,5,11,2, 11,12,2,6,4,2, 11,11,13,5,11,3, 11,11,2,6,4,3, 11,10,13,5,11,4, 11,10,2,6,4,4, + 11,9,14,3,14,5, 11,9,14,5,11,5, 11,9,1,3,1,5, 11,9,1,6,4,5, 11,8,15,3,15,6, 11,8,15,5,11,6, 11,8,0,3,0,6, 11,8,0,6,4,6, + 11,7,15,4,11,7, 11,7,15,5,11,7, 11,7,0,4,11,7, 11,7,0,6,4,7, 11,6,14,5,11,8, 11,6,1,6,4,8, 11,5,14,5,11,9, 11,5,1,6,4,9, + 11,4,14,5,11,10, 11,4,1,6,4,10, 11,3,15,3,15,11, 11,3,15,5,11,11, 11,3,0,3,0,11, 11,3,0,6,4,11, 11,2,15,5,11,12, 11,2,0,6,4,12, + 11,1,15,4,11,13, 11,1,15,5,11,13, 11,1,0,4,11,13, 11,1,0,6,4,13, 11,0,14,5,11,14, 11,0,1,6,4,14, 12,14,13,2,13,0, 12,14,13,3,13,0, + 12,14,13,5,12,0, 12,14,12,2,12,0, 12,14,12,3,12,0, 12,14,12,6,3,0, 12,14,3,2,3,0, 12,14,3,3,3,0, 12,14,3,5,12,0, 12,14,2,2,2,0, + 12,14,2,3,2,0, 12,14,2,6,3,0, 12,13,13,5,12,1, 12,13,11,3,11,1, 12,13,10,3,10,1, 12,13,9,3,9,1, 12,13,8,3,8,1, 12,13,7,3,7,1, + 12,13,6,3,6,1, 12,13,5,3,5,1, 12,13,4,3,4,1, 12,13,2,6,3,1, 12,12,13,5,12,2, 12,12,2,6,3,2, 12,11,13,5,12,3, 12,11,2,6,3,3, + 12,10,13,5,12,4, 12,10,2,6,3,4, 12,9,14,3,14,5, 12,9,14,5,12,5, 12,9,1,3,1,5, 12,9,1,6,3,5, 12,8,15,3,15,6, 12,8,15,5,12,6, + 12,8,0,3,0,6, 12,8,0,6,3,6, 12,7,15,4,12,7, 12,7,15,5,12,7, 12,7,0,4,12,7, 12,7,0,6,3,7, 12,6,14,5,12,8, 12,6,1,6,3,8, + 12,5,14,5,12,9, 12,5,1,6,3,9, 12,4,14,5,12,10, 12,4,1,6,3,10, 12,3,15,3,15,11, 12,3,15,5,12,11, 12,3,0,3,0,11, 12,3,0,6,3,11, + 12,2,15,5,12,12, 12,2,0,6,3,12, 12,1,15,4,12,13, 12,1,15,5,12,13, 12,1,0,4,12,13, 12,1,0,6,3,13, 12,0,14,5,12,14, 12,0,1,6,3,14, + 13,14,13,1,13,0, 13,14,13,3,13,0, 13,14,13,5,13,0, 13,14,12,1,12,0, 13,14,12,3,12,0, 13,14,12,6,2,0, 13,14,3,1,3,0, 13,14,3,3,3,0, + 13,14,3,5,13,0, 13,14,2,1,2,0, 13,14,2,3,2,0, 13,14,2,6,2,0, 13,13,13,1,13,1, 13,13,13,5,13,1, 13,13,12,1,12,1, 13,13,11,1,11,1, + 13,13,11,3,11,1, 13,13,10,1,10,1, 13,13,10,3,10,1, 13,13,9,1,9,1, 13,13,9,3,9,1, 13,13,8,1,8,1, 13,13,8,3,8,1, 13,13,7,1,7,1, + 13,13,7,3,7,1, 13,13,6,1,6,1, 13,13,6,3,6,1, 13,13,5,1,5,1, 13,13,5,3,5,1, 13,13,4,1,4,1, 13,13,4,3,4,1, 13,13,3,1,3,1, + 13,13,2,1,2,1, 13,13,2,6,2,1, 13,12,13,1,13,2, 13,12,13,5,13,2, 13,12,12,1,12,2, 13,12,11,1,11,2, 13,12,10,1,10,2, 13,12,9,1,9,2, + 13,12,8,1,8,2, 13,12,7,1,7,2, 13,12,6,1,6,2, 13,12,5,1,5,2, 13,12,4,1,4,2, 13,12,3,1,3,2, 13,12,2,1,2,2, 13,12,2,6,2,2, + 13,11,13,1,13,3, 13,11,13,5,13,3, 13,11,12,1,12,3, 13,11,11,1,11,3, 13,11,10,1,10,3, 13,11,9,1,9,3, 13,11,8,1,8,3, 13,11,7,1,7,3, + 13,11,6,1,6,3, 13,11,5,1,5,3, 13,11,4,1,4,3, 13,11,3,1,3,3, 13,11,2,1,2,3, 13,11,2,6,2,3, 13,10,13,1,13,4, 13,10,13,5,13,4, + 13,10,12,1,12,4, 13,10,11,1,11,4, 13,10,10,1,10,4, 13,10,9,1,9,4, 13,10,8,1,8,4, 13,10,7,1,7,4, 13,10,6,1,6,4, 13,10,5,1,5,4, + 13,10,4,1,4,4, 13,10,3,1,3,4, 13,10,2,1,2,4, 13,10,2,6,2,4, 13,9,14,3,14,5, 13,9,14,5,13,5, 13,9,1,3,1,5, 13,9,1,6,2,5, + 13,8,15,3,15,6, 13,8,15,5,13,6, 13,8,0,3,0,6, 13,8,0,6,2,6, 13,7,15,4,13,7, 13,7,15,5,13,7, 13,7,0,4,13,7, 13,7,0,6,2,7, + 13,6,14,5,13,8, 13,6,1,6,2,8, 13,5,14,5,13,9, 13,5,1,6,2,9, 13,4,14,5,13,10, 13,4,1,6,2,10, 13,3,15,3,15,11, 13,3,15,5,13,11, + 13,3,0,3,0,11, 13,3,0,6,2,11, 13,2,15,5,13,12, 13,2,0,6,2,12, 13,1,15,4,13,13, 13,1,15,5,13,13, 13,1,0,4,13,13, 13,1,0,6,2,13, + 13,0,14,5,13,14, 13,0,1,6,2,14, 14,9,14,1,14,5, 14,9,14,3,14,5, 14,9,14,5,14,5, 14,9,13,1,13,5, 14,9,13,3,13,5, 14,9,12,1,12,5, + 14,9,12,3,12,5, 14,9,11,1,11,5, 14,9,11,3,11,5, 14,9,10,1,10,5, 14,9,10,3,10,5, 14,9,9,1,9,5, 14,9,9,3,9,5, 14,9,8,1,8,5, + 14,9,8,3,8,5, 14,9,7,1,7,5, 14,9,7,3,7,5, 14,9,6,1,6,5, 14,9,6,3,6,5, 14,9,5,1,5,5, 14,9,5,3,5,5, 14,9,4,1,4,5, + 14,9,4,3,4,5, 14,9,3,1,3,5, 14,9,3,3,3,5, 14,9,2,1,2,5, 14,9,2,3,2,5, 14,9,1,1,1,5, 14,9,1,3,1,5, 14,9,1,6,1,5, + 14,8,15,3,15,6, 14,8,15,5,14,6, 14,8,0,3,0,6, 14,8,0,6,1,6, 14,7,15,4,14,7, 14,7,15,5,14,7, 14,7,0,4,14,7, 14,7,0,6,1,7, + 14,6,14,1,14,8, 14,6,14,5,14,8, 14,6,13,1,13,8, 14,6,12,1,12,8, 14,6,11,1,11,8, 14,6,10,1,10,8, 14,6,9,1,9,8, 14,6,8,1,8,8, + 14,6,7,1,7,8, 14,6,6,1,6,8, 14,6,5,1,5,8, 14,6,4,1,4,8, 14,6,3,1,3,8, 14,6,2,1,2,8, 14,6,1,1,1,8, 14,6,1,6,1,8, + 14,5,14,1,14,9, 14,5,14,5,14,9, 14,5,13,1,13,9, 14,5,12,1,12,9, 14,5,11,1,11,9, 14,5,10,1,10,9, 14,5,9,1,9,9, 14,5,8,1,8,9, + 14,5,7,1,7,9, 14,5,6,1,6,9, 14,5,5,1,5,9, 14,5,4,1,4,9, 14,5,3,1,3,9, 14,5,2,1,2,9, 14,5,1,1,1,9, 14,5,1,6,1,9, + 14,4,14,1,14,10, 14,4,14,5,14,10, 14,4,13,1,13,10, 14,4,12,1,12,10, 14,4,11,1,11,10, 14,4,10,1,10,10, 14,4,9,1,9,10, 14,4,8,1,8,10, + 14,4,7,1,7,10, 14,4,6,1,6,10, 14,4,5,1,5,10, 14,4,4,1,4,10, 14,4,3,1,3,10, 14,4,2,1,2,10, 14,4,1,1,1,10, 14,4,1,6,1,10, + 14,3,15,3,15,11, 14,3,15,5,14,11, 14,3,0,3,0,11, 14,3,0,6,1,11, 14,2,15,5,14,12, 14,2,0,6,1,12, 14,1,15,4,14,13, 14,1,15,5,14,13, + 14,1,0,4,14,13, 14,1,0,6,1,13, 14,0,14,1,14,14, 14,0,14,5,14,14, 14,0,13,1,13,14, 14,0,12,1,12,14, 14,0,11,1,11,14, 14,0,10,1,10,14, + 14,0,9,1,9,14, 14,0,8,1,8,14, 14,0,7,1,7,14, 14,0,6,1,6,14, 14,0,5,1,5,14, 14,0,4,1,4,14, 14,0,3,1,3,14, 14,0,2,1,2,14, + 14,0,1,1,1,14, 14,0,1,6,1,14, 15,8,15,1,15,6, 15,8,15,3,15,6, 15,8,15,5,15,6, 15,8,14,1,14,6, 15,8,14,3,14,6, 15,8,13,1,13,6, + 15,8,13,3,13,6, 15,8,12,1,12,6, 15,8,12,3,12,6, 15,8,11,1,11,6, 15,8,11,3,11,6, 15,8,10,1,10,6, 15,8,10,3,10,6, 15,8,9,1,9,6, + 15,8,9,3,9,6, 15,8,8,1,8,6, 15,8,8,3,8,6, 15,8,7,1,7,6, 15,8,7,3,7,6, 15,8,6,1,6,6, 15,8,6,3,6,6, 15,8,5,1,5,6, + 15,8,5,3,5,6, 15,8,4,1,4,6, 15,8,4,3,4,6, 15,8,3,1,3,6, 15,8,3,3,3,6, 15,8,2,1,2,6, 15,8,2,3,2,6, 15,8,1,1,1,6, + 15,8,1,3,1,6, 15,8,0,1,0,6, 15,8,0,3,0,6, 15,8,0,6,0,6, 15,7,15,1,15,7, 15,7,15,4,15,7, 15,7,15,5,15,7, 15,7,14,1,14,7, + 15,7,14,4,15,7, 15,7,13,1,13,7, 15,7,13,4,15,7, 15,7,12,1,12,7, 15,7,12,4,15,7, 15,7,11,1,11,7, 15,7,11,4,15,7, 15,7,10,1,10,7, + 15,7,10,4,15,7, 15,7,9,1,9,7, 15,7,9,4,15,7, 15,7,8,1,8,7, 15,7,8,4,15,7, 15,7,7,1,7,7, 15,7,7,4,15,7, 15,7,6,1,6,7, + 15,7,6,4,15,7, 15,7,5,1,5,7, 15,7,5,4,15,7, 15,7,4,1,4,7, 15,7,4,4,15,7, 15,7,3,1,3,7, 15,7,3,4,15,7, 15,7,2,1,2,7, + 15,7,2,4,15,7, 15,7,1,1,1,7, 15,7,1,4,15,7, 15,7,0,1,0,7, 15,7,0,4,15,7, 15,7,0,6,0,7, 15,3,15,1,15,11, 15,3,15,3,15,11, + 15,3,15,5,15,11, 15,3,14,1,14,11, 15,3,14,3,14,11, 15,3,13,1,13,11, 15,3,13,3,13,11, 15,3,12,1,12,11, 15,3,12,3,12,11, 15,3,11,1,11,11, + 15,3,11,3,11,11, 15,3,10,1,10,11, 15,3,10,3,10,11, 15,3,9,1,9,11, 15,3,9,3,9,11, 15,3,8,1,8,11, 15,3,8,3,8,11, 15,3,7,1,7,11, + 15,3,7,3,7,11, 15,3,6,1,6,11, 15,3,6,3,6,11, 15,3,5,1,5,11, 15,3,5,3,5,11, 15,3,4,1,4,11, 15,3,4,3,4,11, 15,3,3,1,3,11, + 15,3,3,3,3,11, 15,3,2,1,2,11, 15,3,2,3,2,11, 15,3,1,1,1,11, 15,3,1,3,1,11, 15,3,0,1,0,11, 15,3,0,3,0,11, 15,3,0,6,0,11, + 15,2,15,1,15,12, 15,2,15,5,15,12, 15,2,14,1,14,12, 15,2,13,1,13,12, 15,2,12,1,12,12, 15,2,11,1,11,12, 15,2,10,1,10,12, 15,2,9,1,9,12, + 15,2,8,1,8,12, 15,2,7,1,7,12, 15,2,6,1,6,12, 15,2,5,1,5,12, 15,2,4,1,4,12, 15,2,3,1,3,12, 15,2,2,1,2,12, 15,2,1,1,1,12, + 15,2,0,1,0,12, 15,2,0,6,0,12, 15,1,15,1,15,13, 15,1,15,4,15,13, 15,1,15,5,15,13, 15,1,14,1,14,13, 15,1,14,4,15,13, 15,1,13,1,13,13, + 15,1,13,4,15,13, 15,1,12,1,12,13, 15,1,12,4,15,13, 15,1,11,1,11,13, 15,1,11,4,15,13, 15,1,10,1,10,13, 15,1,10,4,15,13, 15,1,9,1,9,13, + 15,1,9,4,15,13, 15,1,8,1,8,13, 15,1,8,4,15,13, 15,1,7,1,7,13, 15,1,7,4,15,13, 15,1,6,1,6,13, 15,1,6,4,15,13, 15,1,5,1,5,13, + 15,1,5,4,15,13, 15,1,4,1,4,13, 15,1,4,4,15,13, 15,1,3,1,3,13, 15,1,3,4,15,13, 15,1,2,1,2,13, 15,1,2,4,15,13, 15,1,1,1,1,13, + 15,1,1,4,15,13, 15,1,0,1,0,13, 15,1,0,4,15,13, 15,1,0,6,0,13, + }, + }, + }, +} diff --git a/assets/voxels/super_nerd.lua b/assets/voxels/super_nerd.lua new file mode 100644 index 0000000..8b210b4 --- /dev/null +++ b/assets/voxels/super_nerd.lua @@ -0,0 +1,299 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "super_nerd" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "super_nerd", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1582, + count = 970, + faces = { + 1,10,12,2,3,37, 1,10,12,3,3,37, 1,10,12,5,1,5, 1,10,11,2,4,37, 1,10,11,3,4,37, 1,10,10,2,5,37, 1,10,10,3,5,37, 1,10,9,2,6,37, + 1,10,9,3,6,37, 1,10,8,2,7,37, 1,10,8,3,7,37, 1,10,7,2,8,37, 1,10,7,3,8,37, 1,10,6,2,9,37, 1,10,6,3,9,37, 1,10,5,2,10,37, + 1,10,5,3,10,37, 1,10,4,2,11,37, 1,10,4,3,11,37, 1,10,3,2,12,37, 1,10,3,3,12,37, 1,10,2,2,13,37, 1,10,2,3,13,37, 1,10,2,6,14,21, + 1,9,12,2,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,10,2,5,38, 1,9,9,2,6,38, 1,9,8,2,7,38, 1,9,7,2,8,38, 1,9,6,2,9,38, + 1,9,5,2,10,38, 1,9,4,2,11,38, 1,9,3,2,12,38, 1,9,2,2,13,38, 1,9,2,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, 1,8,12,5,1,7, + 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, 1,8,8,4,1,7, + 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, 1,8,4,4,1,7, + 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,2,2,13,39, 1,8,2,4,1,7, 1,8,2,6,14,23, 1,5,11,2,4,42, 1,5,11,3,4,42, 1,5,11,5,1,10, + 1,5,10,2,5,42, 1,5,10,3,5,42, 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, 1,5,7,3,8,42, + 1,5,6,2,9,42, 1,5,6,3,9,42, 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,4,6,14,26, 1,4,11,2,4,43, + 1,4,11,4,1,11, 1,4,11,5,1,11, 1,4,10,2,5,43, 1,4,10,4,1,11, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,8,2,7,43, 1,4,8,4,1,11, + 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, 1,4,4,2,11,43, 1,4,4,4,1,11, + 1,4,4,6,14,27, 2,11,13,2,2,36, 2,11,13,3,2,36, 2,11,13,4,2,4, 2,11,13,5,2,4, 2,11,12,2,3,36, 2,11,12,3,3,36, 2,11,11,2,4,36, + 2,11,11,3,4,36, 2,11,10,2,5,36, 2,11,10,3,5,36, 2,11,9,2,6,36, 2,11,9,3,6,36, 2,11,8,2,7,36, 2,11,8,3,7,36, 2,11,7,2,8,36, + 2,11,7,3,8,36, 2,11,6,2,9,36, 2,11,6,3,9,36, 2,11,5,2,10,36, 2,11,5,3,10,36, 2,11,4,2,11,36, 2,11,4,3,11,36, 2,11,3,2,12,36, + 2,11,3,3,12,36, 2,11,2,2,13,36, 2,11,2,3,13,36, 2,11,2,6,13,20, 2,10,12,5,2,5, 2,10,2,6,13,21, 2,9,12,5,2,6, 2,9,2,6,13,22, + 2,8,12,5,2,7, 2,8,2,4,2,7, 2,8,2,6,13,23, 2,7,12,2,3,40, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, + 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,3,2,12,40, 2,7,3,4,2,8, + 2,7,3,6,13,24, 2,6,11,2,4,41, 2,6,11,5,2,9, 2,6,10,2,5,41, 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, 2,6,6,2,9,41, + 2,6,5,2,10,41, 2,6,4,2,11,41, 2,6,4,6,13,25, 2,5,11,5,2,10, 2,5,4,6,13,26, 2,4,11,5,2,11, 2,4,4,6,13,27, 2,3,11,2,4,44, + 2,3,11,4,2,12, 2,3,11,5,2,12, 2,3,10,2,5,44, 2,3,10,4,2,12, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,8,2,7,44, 2,3,8,4,2,12, + 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, 2,3,4,4,2,12, + 2,3,4,6,13,28, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, 3,13,10,3,5,34, + 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, 3,13,6,3,9,34, + 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, 3,12,13,2,2,35, + 3,12,13,3,2,35, 3,12,13,5,3,3, 3,12,12,2,3,35, 3,12,11,2,4,35, 3,12,10,2,5,35, 3,12,9,2,6,35, 3,12,8,2,7,35, 3,12,7,2,8,35, + 3,12,6,2,9,35, 3,12,5,2,10,35, 3,12,4,2,11,35, 3,12,3,2,12,35, 3,12,3,6,12,19, 3,11,13,4,3,4, 3,11,13,5,3,4, 3,11,2,3,13,36, + 3,11,2,6,12,20, 3,10,12,5,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,2,6,12,22, 3,8,12,5,3,7, 3,8,2,4,3,7, 3,8,2,6,12,23, + 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,3,4,3,8, 3,7,3,6,12,24, 3,6,11,5,3,9, 3,6,4,6,12,25, 3,5,11,5,3,10, 3,5,4,6,12,26, + 3,4,11,5,3,11, 3,4,4,6,12,27, 3,3,11,4,3,12, 3,3,11,5,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, 3,2,10,5,3,13, + 3,2,9,2,6,45, 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,5,6,12,29, 3,1,10,2,5,46, 3,1,10,4,3,14, + 3,1,10,5,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, 3,1,7,2,8,46, 3,1,7,4,3,14, 3,1,6,2,9,46, + 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,5,6,12,30, 4,14,11,2,4,33, 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, + 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, + 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, 4,14,4,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, + 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, 4,12,3,6,11,19, 4,11,13,4,4,4, 4,11,13,5,4,4, 4,11,2,3,13,36, + 4,11,2,6,11,20, 4,10,12,5,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, 4,9,2,6,11,22, 4,8,12,5,4,7, 4,8,2,4,4,7, 4,8,2,6,11,23, + 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,3,4,4,8, 4,7,3,6,11,24, 4,6,11,5,4,9, 4,6,4,6,11,25, 4,5,11,5,4,10, 4,5,4,6,11,26, + 4,4,11,5,4,11, 4,4,4,6,11,27, 4,3,11,4,4,12, 4,3,11,5,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,10,5,4,13, 4,2,5,6,11,29, + 4,1,10,4,4,14, 4,1,10,5,4,14, 4,1,5,6,11,30, 4,0,9,2,6,47, 4,0,9,5,4,15, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, + 4,0,5,2,10,47, 4,0,5,6,11,31, 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,10,3,5,33, 5,14,9,3,6,33, 5,14,8,3,7,33, 5,14,7,3,8,33, + 5,14,6,3,9,33, 5,14,5,3,10,33, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, + 5,12,13,3,2,35, 5,12,13,5,5,3, 5,12,3,6,10,19, 5,11,13,4,5,4, 5,11,13,5,5,4, 5,11,2,3,13,36, 5,11,2,6,10,20, 5,10,12,5,5,5, + 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,2,6,10,22, 5,8,12,5,5,7, 5,8,2,4,5,7, 5,8,2,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, + 5,7,3,4,5,8, 5,7,3,6,10,24, 5,6,11,5,5,9, 5,6,4,6,10,25, 5,5,11,5,5,10, 5,5,4,6,10,26, 5,4,11,5,5,11, 5,4,4,6,10,27, + 5,3,11,4,5,12, 5,3,11,5,5,12, 5,3,4,4,5,12, 5,3,4,6,10,28, 5,2,10,5,5,13, 5,2,5,6,10,29, 5,1,10,4,5,14, 5,1,10,5,5,14, + 5,1,5,6,10,30, 5,0,9,5,5,15, 5,0,5,6,10,31, 6,15,9,2,6,32, 6,15,9,3,6,32, 6,15,9,5,6,0, 6,15,8,2,7,32, 6,15,8,3,7,32, + 6,15,7,2,8,32, 6,15,7,3,8,32, 6,15,6,2,9,32, 6,15,6,3,9,32, 6,15,6,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,10,3,5,33, + 6,14,5,3,10,33, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, 6,13,12,5,6,2, 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,13,3,2,35, + 6,12,13,5,6,3, 6,12,3,6,9,19, 6,11,13,4,6,4, 6,11,13,5,6,4, 6,11,2,3,13,36, 6,11,2,6,9,20, 6,10,12,5,6,5, 6,10,2,6,9,21, + 6,9,12,5,6,6, 6,9,2,6,9,22, 6,8,12,5,6,7, 6,8,2,4,6,7, 6,8,2,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,3,4,6,8, + 6,7,3,6,9,24, 6,6,11,5,6,9, 6,6,4,6,9,25, 6,5,11,5,6,10, 6,5,4,6,9,26, 6,4,11,5,6,11, 6,4,4,6,9,27, 6,3,11,4,6,12, + 6,3,11,5,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,10,5,6,13, 6,2,5,6,9,29, 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,5,6,9,30, + 6,0,9,1,6,47, 6,0,9,5,6,15, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,5,1,10,47, 6,0,5,6,9,31, 7,15,9,3,6,32, + 7,15,9,5,7,0, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,6,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,10,3,5,33, + 7,14,5,3,10,33, 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, + 7,12,13,5,7,3, 7,12,3,6,8,19, 7,11,13,4,7,4, 7,11,13,5,7,4, 7,11,2,3,13,36, 7,11,2,6,8,20, 7,10,12,5,7,5, 7,10,2,6,8,21, + 7,9,12,5,7,6, 7,9,2,6,8,22, 7,8,12,5,7,7, 7,8,2,4,7,7, 7,8,2,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,3,4,7,8, + 7,7,3,6,8,24, 7,6,11,5,7,9, 7,6,4,6,8,25, 7,5,11,5,7,10, 7,5,4,6,8,26, 7,4,11,5,7,11, 7,4,4,6,8,27, 7,3,11,4,7,12, + 7,3,11,5,7,12, 7,3,4,4,7,12, 7,3,4,6,8,28, 7,2,10,5,7,13, 7,2,5,6,8,29, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, + 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, 8,15,9,3,6,32, 8,15,9,5,8,0, 8,15,8,3,7,32, + 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,11,3,4,33, 8,14,11,5,8,1, 8,14,10,3,5,33, 8,14,5,3,10,33, 8,14,4,3,11,33, + 8,14,4,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, 8,13,3,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,3,6,7,19, + 8,11,13,4,8,4, 8,11,13,5,8,4, 8,11,2,3,13,36, 8,11,2,6,7,20, 8,10,12,5,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,2,6,7,22, + 8,8,12,5,8,7, 8,8,2,4,8,7, 8,8,2,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,3,4,8,8, 8,7,3,6,7,24, 8,6,11,5,8,9, + 8,6,4,6,7,25, 8,5,11,5,8,10, 8,5,4,6,7,26, 8,4,11,5,8,11, 8,4,4,6,7,27, 8,3,11,4,8,12, 8,3,11,5,8,12, 8,3,4,4,8,12, + 8,3,4,6,7,28, 8,2,10,5,8,13, 8,2,5,6,7,29, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, + 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,9,1,6,32, 9,15,9,3,6,32, 9,15,9,5,9,0, 9,15,8,1,7,32, 9,15,8,3,7,32, + 9,15,7,1,8,32, 9,15,7,3,8,32, 9,15,6,1,9,32, 9,15,6,3,9,32, 9,15,6,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,10,3,5,33, + 9,14,5,3,10,33, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, + 9,12,13,5,9,3, 9,12,3,6,6,19, 9,11,13,4,9,4, 9,11,13,5,9,4, 9,11,2,3,13,36, 9,11,2,6,6,20, 9,10,12,5,9,5, 9,10,2,6,6,21, + 9,9,12,5,9,6, 9,9,2,6,6,22, 9,8,12,5,9,7, 9,8,2,4,9,7, 9,8,2,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,3,4,9,8, + 9,7,3,6,6,24, 9,6,11,5,9,9, 9,6,4,6,6,25, 9,5,11,5,9,10, 9,5,4,6,6,26, 9,4,11,5,9,11, 9,4,4,6,6,27, 9,3,11,4,9,12, + 9,3,11,5,9,12, 9,3,4,4,9,12, 9,3,4,6,6,28, 9,2,10,5,9,13, 9,2,5,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,5,6,6,30, + 9,0,9,2,6,47, 9,0,9,5,9,15, 9,0,8,2,7,47, 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,5,2,10,47, 9,0,5,6,6,31, 10,14,11,3,4,33, + 10,14,11,5,10,1, 10,14,10,3,5,33, 10,14,9,3,6,33, 10,14,8,3,7,33, 10,14,7,3,8,33, 10,14,6,3,9,33, 10,14,5,3,10,33, 10,14,4,3,11,33, + 10,14,4,6,5,17, 10,13,12,3,3,34, 10,13,12,5,10,2, 10,13,3,3,12,34, 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,3,6,5,19, + 10,11,13,4,10,4, 10,11,13,5,10,4, 10,11,2,3,13,36, 10,11,2,6,5,20, 10,10,12,5,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,2,6,5,22, + 10,8,12,5,10,7, 10,8,2,4,10,7, 10,8,2,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,3,4,10,8, 10,7,3,6,5,24, 10,6,11,5,10,9, + 10,6,4,6,5,25, 10,5,11,5,10,10, 10,5,4,6,5,26, 10,4,11,5,10,11, 10,4,4,6,5,27, 10,3,11,4,10,12, 10,3,11,5,10,12, 10,3,4,4,10,12, + 10,3,4,6,5,28, 10,2,10,5,10,13, 10,2,5,6,5,29, 10,1,10,4,10,14, 10,1,10,5,10,14, 10,1,5,6,5,30, 10,0,9,5,10,15, 10,0,5,6,5,31, + 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, 11,14,8,1,7,33, + 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, 11,14,4,1,11,33, + 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, 11,12,13,5,11,3, + 11,12,3,6,4,19, 11,11,13,4,11,4, 11,11,13,5,11,4, 11,11,2,3,13,36, 11,11,2,6,4,20, 11,10,12,5,11,5, 11,10,2,6,4,21, 11,9,12,5,11,6, + 11,9,2,6,4,22, 11,8,12,5,11,7, 11,8,2,4,11,7, 11,8,2,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,3,4,11,8, 11,7,3,6,4,24, + 11,6,11,5,11,9, 11,6,4,6,4,25, 11,5,11,5,11,10, 11,5,4,6,4,26, 11,4,11,5,11,11, 11,4,4,6,4,27, 11,3,11,4,11,12, 11,3,11,5,11,12, + 11,3,4,4,11,12, 11,3,4,6,4,28, 11,2,10,5,11,13, 11,2,5,6,4,29, 11,1,10,4,11,14, 11,1,10,5,11,14, 11,1,5,6,4,30, 11,0,9,1,6,47, + 11,0,9,5,11,15, 11,0,8,1,7,47, 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,5,1,10,47, 11,0,5,6,4,31, 12,13,12,1,3,34, 12,13,12,3,3,34, + 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, + 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, + 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, 12,13,3,6,3,18, 12,12,13,1,2,35, 12,12,13,3,2,35, 12,12,13,5,12,3, 12,12,12,1,3,35, + 12,12,11,1,4,35, 12,12,10,1,5,35, 12,12,9,1,6,35, 12,12,8,1,7,35, 12,12,7,1,8,35, 12,12,6,1,9,35, 12,12,5,1,10,35, 12,12,4,1,11,35, + 12,12,3,1,12,35, 12,12,3,6,3,19, 12,11,13,4,12,4, 12,11,13,5,12,4, 12,11,2,3,13,36, 12,11,2,6,3,20, 12,10,12,5,12,5, 12,10,2,6,3,21, + 12,9,12,5,12,6, 12,9,2,6,3,22, 12,8,12,5,12,7, 12,8,2,4,12,7, 12,8,2,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,3,4,12,8, + 12,7,3,6,3,24, 12,6,11,5,12,9, 12,6,4,6,3,25, 12,5,11,5,12,10, 12,5,4,6,3,26, 12,4,11,5,12,11, 12,4,4,6,3,27, 12,3,11,4,12,12, + 12,3,11,5,12,12, 12,3,4,4,12,12, 12,3,4,6,3,28, 12,2,10,1,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, + 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,5,6,3,29, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,10,5,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, + 12,1,8,1,7,46, 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, + 12,1,5,6,3,30, 13,11,13,1,2,36, 13,11,13,3,2,36, 13,11,13,4,13,4, 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,12,3,3,36, 13,11,11,1,4,36, + 13,11,11,3,4,36, 13,11,10,1,5,36, 13,11,10,3,5,36, 13,11,9,1,6,36, 13,11,9,3,6,36, 13,11,8,1,7,36, 13,11,8,3,7,36, 13,11,7,1,8,36, + 13,11,7,3,8,36, 13,11,6,1,9,36, 13,11,6,3,9,36, 13,11,5,1,10,36, 13,11,5,3,10,36, 13,11,4,1,11,36, 13,11,4,3,11,36, 13,11,3,1,12,36, + 13,11,3,3,12,36, 13,11,2,1,13,36, 13,11,2,3,13,36, 13,11,2,6,2,20, 13,10,12,5,13,5, 13,10,2,6,2,21, 13,9,12,5,13,6, 13,9,2,6,2,22, + 13,8,12,5,13,7, 13,8,2,4,13,7, 13,8,2,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, 13,7,10,1,5,40, + 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,3,1,12,40, 13,7,3,4,13,8, + 13,7,3,6,2,24, 13,6,11,1,4,41, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, 13,6,6,1,9,41, + 13,6,5,1,10,41, 13,6,4,1,11,41, 13,6,4,6,2,25, 13,5,11,5,13,10, 13,5,4,6,2,26, 13,4,11,5,13,11, 13,4,4,6,2,27, 13,3,11,1,4,44, + 13,3,11,4,13,12, 13,3,11,5,13,12, 13,3,10,1,5,44, 13,3,10,4,13,12, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, + 13,3,7,1,8,44, 13,3,7,4,13,12, 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, + 13,3,4,6,2,28, 14,10,12,1,3,37, 14,10,12,3,3,37, 14,10,12,5,14,5, 14,10,11,1,4,37, 14,10,11,3,4,37, 14,10,10,1,5,37, 14,10,10,3,5,37, + 14,10,9,1,6,37, 14,10,9,3,6,37, 14,10,8,1,7,37, 14,10,8,3,7,37, 14,10,7,1,8,37, 14,10,7,3,8,37, 14,10,6,1,9,37, 14,10,6,3,9,37, + 14,10,5,1,10,37, 14,10,5,3,10,37, 14,10,4,1,11,37, 14,10,4,3,11,37, 14,10,3,1,12,37, 14,10,3,3,12,37, 14,10,2,1,13,37, 14,10,2,3,13,37, + 14,10,2,6,1,21, 14,9,12,1,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,10,1,5,38, 14,9,9,1,6,38, 14,9,8,1,7,38, 14,9,7,1,8,38, + 14,9,6,1,9,38, 14,9,5,1,10,38, 14,9,4,1,11,38, 14,9,3,1,12,38, 14,9,2,1,13,38, 14,9,2,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, + 14,8,12,5,14,7, 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, + 14,8,8,4,14,7, 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, + 14,8,4,4,14,7, 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,2,1,13,39, 14,8,2,4,14,7, 14,8,2,6,1,23, 14,5,11,1,4,42, 14,5,11,3,4,42, + 14,5,11,5,14,10, 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,9,1,6,42, 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, + 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, 14,5,5,3,10,42, 14,5,4,1,11,42, 14,5,4,3,11,42, 14,5,4,6,1,26, + 14,4,11,1,4,43, 14,4,11,4,14,11, 14,4,11,5,14,11, 14,4,10,1,5,43, 14,4,10,4,14,11, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,8,1,7,43, + 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, + 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1749, + count = 1160, + faces = { + 0,9,12,2,3,86, 0,9,12,3,3,86, 0,9,12,5,14,70, 0,9,11,2,4,86, 0,9,11,3,4,86, 0,9,10,2,5,86, 0,9,10,3,5,86, 0,9,9,2,6,86, + 0,9,9,3,6,86, 0,9,8,2,7,86, 0,9,8,3,7,86, 0,9,7,2,8,86, 0,9,7,3,8,86, 0,9,6,2,9,86, 0,9,6,3,9,86, 0,9,5,2,10,86, + 0,9,5,3,10,86, 0,9,4,2,11,86, 0,9,4,3,11,86, 0,9,3,2,12,86, 0,9,3,3,12,86, 0,9,2,2,13,86, 0,9,2,3,13,86, 0,9,2,6,14,70, + 0,8,12,2,3,87, 0,8,12,5,14,71, 0,8,11,2,4,87, 0,8,10,2,5,87, 0,8,9,2,6,87, 0,8,8,2,7,87, 0,8,7,2,8,87, 0,8,6,2,9,87, + 0,8,5,2,10,87, 0,8,4,2,11,87, 0,8,3,2,12,87, 0,8,2,2,13,87, 0,8,2,6,14,71, 0,7,12,2,3,88, 0,7,12,5,14,72, 0,7,11,2,4,88, + 0,7,10,2,5,88, 0,7,9,2,6,88, 0,7,8,2,7,88, 0,7,7,2,8,88, 0,7,6,2,9,88, 0,7,5,2,10,88, 0,7,4,2,11,88, 0,7,3,2,12,88, + 0,7,2,2,13,88, 0,7,2,4,14,72, 0,7,2,6,14,72, 0,6,12,2,3,89, 0,6,12,4,0,57, 0,6,12,5,0,57, 0,6,11,2,4,89, 0,6,11,4,0,57, + 0,6,10,2,5,89, 0,6,10,4,0,57, 0,6,9,2,6,89, 0,6,9,4,0,57, 0,6,8,2,7,89, 0,6,8,4,0,57, 0,6,7,2,8,89, 0,6,7,4,0,57, + 0,6,6,2,9,89, 0,6,6,4,0,57, 0,6,5,2,10,89, 0,6,5,4,0,57, 0,6,4,2,11,89, 0,6,4,4,0,57, 0,6,3,2,12,89, 0,6,3,4,0,57, + 0,6,3,6,0,57, 0,4,11,2,4,91, 0,4,11,3,4,91, 0,4,11,5,14,75, 0,4,10,2,5,91, 0,4,10,3,5,91, 0,4,9,2,6,91, 0,4,9,3,6,91, + 0,4,8,2,7,91, 0,4,8,3,7,91, 0,4,7,2,8,91, 0,4,7,3,8,91, 0,4,6,2,9,91, 0,4,6,3,9,91, 0,4,5,2,10,91, 0,4,5,3,10,91, + 0,4,5,6,14,75, 0,3,12,2,3,92, 0,3,12,3,3,92, 0,3,12,4,14,76, 0,3,12,5,14,76, 0,3,11,2,4,92, 0,3,11,4,14,76, 0,3,10,2,5,92, + 0,3,10,4,14,76, 0,3,9,2,6,92, 0,3,9,4,14,76, 0,3,8,2,7,92, 0,3,8,4,14,76, 0,3,7,2,8,92, 0,3,7,4,14,76, 0,3,6,2,9,92, + 0,3,6,4,14,76, 0,3,5,2,10,92, 0,3,5,4,14,76, 0,3,4,2,11,92, 0,3,4,3,11,92, 0,3,4,4,14,76, 0,3,3,2,12,92, 0,3,3,3,12,92, + 0,3,3,4,14,76, 0,3,3,6,14,76, 1,10,13,2,2,85, 1,10,13,3,2,85, 1,10,13,4,13,69, 1,10,13,5,13,69, 1,10,12,2,3,85, 1,10,12,3,3,85, + 1,10,11,2,4,85, 1,10,11,3,4,85, 1,10,10,2,5,85, 1,10,10,3,5,85, 1,10,9,2,6,85, 1,10,9,3,6,85, 1,10,8,2,7,85, 1,10,8,3,7,85, + 1,10,7,2,8,85, 1,10,7,3,8,85, 1,10,6,2,9,85, 1,10,6,3,9,85, 1,10,5,2,10,85, 1,10,5,3,10,85, 1,10,4,2,11,85, 1,10,4,3,11,85, + 1,10,3,2,12,85, 1,10,3,3,12,85, 1,10,2,2,13,85, 1,10,2,3,13,85, 1,10,2,6,13,69, 1,9,12,5,1,54, 1,9,2,6,13,70, 1,8,12,5,1,55, + 1,8,2,6,13,71, 1,7,12,5,1,56, 1,7,2,4,1,56, 1,7,2,6,13,72, 1,6,12,4,1,57, 1,6,12,5,1,57, 1,6,4,4,1,57, 1,6,3,4,1,57, + 1,6,3,6,13,73, 1,5,11,2,4,90, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, 1,5,8,2,7,90, 1,5,7,2,8,90, 1,5,6,2,9,90, + 1,5,5,2,10,90, 1,5,5,6,13,74, 1,4,11,5,13,75, 1,4,5,6,13,75, 1,3,12,3,3,92, 1,3,12,5,13,76, 1,3,4,3,11,92, 1,3,3,3,12,92, + 1,3,3,6,13,76, 1,2,13,2,2,93, 1,2,13,3,2,93, 1,2,13,4,13,77, 1,2,13,5,13,77, 1,2,12,2,3,93, 1,2,12,4,13,77, 1,2,11,2,4,93, + 1,2,11,4,13,77, 1,2,10,2,5,93, 1,2,10,4,13,77, 1,2,9,2,6,93, 1,2,9,4,13,77, 1,2,8,2,7,93, 1,2,8,4,13,77, 1,2,7,2,8,93, + 1,2,7,4,13,77, 1,2,6,2,9,93, 1,2,6,4,13,77, 1,2,5,2,10,93, 1,2,5,4,13,77, 1,2,4,2,11,93, 1,2,4,4,13,77, 1,2,3,2,12,93, + 1,2,3,4,13,77, 1,2,2,2,13,93, 1,2,2,3,13,93, 1,2,2,4,13,77, 1,2,2,6,13,77, 2,12,12,2,3,83, 2,12,12,3,3,83, 2,12,12,5,12,67, + 2,12,11,2,4,83, 2,12,11,3,4,83, 2,12,10,2,5,83, 2,12,10,3,5,83, 2,12,9,2,6,83, 2,12,9,3,6,83, 2,12,8,2,7,83, 2,12,8,3,7,83, + 2,12,7,2,8,83, 2,12,7,3,8,83, 2,12,6,2,9,83, 2,12,6,3,9,83, 2,12,5,2,10,83, 2,12,5,3,10,83, 2,12,4,2,11,83, 2,12,4,3,11,83, + 2,12,3,2,12,83, 2,12,3,3,12,83, 2,12,3,6,12,67, 2,11,13,2,2,84, 2,11,13,3,2,84, 2,11,13,5,12,68, 2,11,12,2,3,84, 2,11,11,2,4,84, + 2,11,10,2,5,84, 2,11,9,2,6,84, 2,11,8,2,7,84, 2,11,7,2,8,84, 2,11,6,2,9,84, 2,11,5,2,10,84, 2,11,4,2,11,84, 2,11,3,2,12,84, + 2,11,3,6,12,68, 2,10,13,4,2,53, 2,10,13,5,2,53, 2,10,2,3,13,85, 2,10,2,6,12,69, 2,9,12,5,2,54, 2,9,2,6,12,70, 2,8,12,5,2,55, + 2,8,2,6,12,71, 2,7,12,5,2,56, 2,7,2,4,2,56, 2,7,2,6,12,72, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,4,4,2,57, 2,6,3,4,2,57, + 2,6,3,6,12,73, 2,5,11,5,2,58, 2,5,5,6,12,74, 2,4,11,5,2,59, 2,4,5,6,12,75, 2,3,12,3,3,92, 2,3,12,5,12,76, 2,3,4,3,11,92, + 2,3,3,3,12,92, 2,3,3,6,12,76, 2,2,13,3,2,93, 2,2,13,4,12,77, 2,2,13,5,12,77, 2,2,12,4,12,77, 2,2,11,4,12,77, 2,2,10,4,12,77, + 2,2,9,4,12,77, 2,2,8,4,12,77, 2,2,7,4,12,77, 2,2,6,4,12,77, 2,2,5,4,12,77, 2,2,4,4,12,77, 2,2,3,4,12,77, 2,2,2,3,13,93, + 2,2,2,4,12,77, 2,2,2,6,12,77, 3,13,11,2,4,82, 3,13,11,3,4,82, 3,13,11,5,11,66, 3,13,10,2,5,82, 3,13,10,3,5,82, 3,13,9,2,6,82, + 3,13,9,3,6,82, 3,13,8,2,7,82, 3,13,8,3,7,82, 3,13,7,2,8,82, 3,13,7,3,8,82, 3,13,6,2,9,82, 3,13,6,3,9,82, 3,13,5,2,10,82, + 3,13,5,3,10,82, 3,13,4,2,11,82, 3,13,4,3,11,82, 3,13,4,6,11,66, 3,12,12,3,3,83, 3,12,12,5,3,51, 3,12,3,3,12,83, 3,12,3,6,11,67, + 3,11,13,3,2,84, 3,11,13,5,3,52, 3,11,3,6,11,68, 3,10,13,4,3,53, 3,10,13,5,3,53, 3,10,2,3,13,85, 3,10,2,6,11,69, 3,9,12,5,3,54, + 3,9,2,6,11,70, 3,8,12,5,3,55, 3,8,2,6,11,71, 3,7,12,5,3,56, 3,7,2,4,3,56, 3,7,2,6,11,72, 3,6,12,4,3,57, 3,6,12,5,3,57, + 3,6,4,4,3,57, 3,6,3,4,3,57, 3,6,3,6,11,73, 3,5,11,5,3,58, 3,5,5,6,11,74, 3,4,11,5,3,59, 3,4,5,6,11,75, 3,3,12,3,3,92, + 3,3,12,5,3,60, 3,3,4,3,11,92, 3,3,3,3,12,92, 3,3,3,6,11,76, 3,2,13,3,2,93, 3,2,13,4,3,61, 3,2,13,5,3,61, 3,2,2,3,13,93, + 3,2,2,6,11,77, 3,1,12,2,3,94, 3,1,12,4,3,62, 3,1,12,5,3,62, 3,1,11,2,4,94, 3,1,11,4,3,62, 3,1,10,2,5,94, 3,1,10,4,3,62, + 3,1,9,2,6,94, 3,1,9,4,3,62, 3,1,8,2,7,94, 3,1,8,4,3,62, 3,1,7,2,8,94, 3,1,7,4,3,62, 3,1,6,2,9,94, 3,1,6,4,3,62, + 3,1,5,2,10,94, 3,1,5,4,3,62, 3,1,4,2,11,94, 3,1,4,4,3,62, 3,1,3,2,12,94, 3,1,3,4,3,62, 3,1,2,2,13,94, 3,1,2,4,3,62, + 3,1,2,6,3,62, 4,13,11,3,4,82, 4,13,11,5,4,50, 4,13,10,3,5,82, 4,13,9,3,6,82, 4,13,8,3,7,82, 4,13,7,3,8,82, 4,13,6,3,9,82, + 4,13,5,3,10,82, 4,13,4,3,11,82, 4,13,4,6,10,66, 4,12,12,3,3,83, 4,12,12,5,4,51, 4,12,3,3,12,83, 4,12,3,6,10,67, 4,11,13,3,2,84, + 4,11,13,5,4,52, 4,11,3,6,10,68, 4,10,13,4,4,53, 4,10,13,5,4,53, 4,10,2,3,13,85, 4,10,2,6,10,69, 4,9,12,5,4,54, 4,9,2,6,10,70, + 4,8,12,5,4,55, 4,8,2,6,10,71, 4,7,12,5,4,56, 4,7,2,4,4,56, 4,7,2,6,10,72, 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,4,4,57, + 4,6,3,4,4,57, 4,6,3,6,10,73, 4,5,11,5,4,58, 4,5,5,6,10,74, 4,4,11,5,4,59, 4,4,5,6,10,75, 4,3,12,3,3,92, 4,3,12,5,4,60, + 4,3,4,3,11,92, 4,3,3,3,12,92, 4,3,3,6,10,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, 4,2,2,3,13,93, 4,2,2,6,10,77, + 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,9,4,4,62, 4,1,8,4,4,62, 4,1,7,4,4,62, 4,1,6,4,4,62, 4,1,5,4,4,62, 4,1,2,4,4,62, + 4,1,2,6,4,62, 4,0,11,2,4,95, 4,0,11,5,4,63, 4,0,10,2,5,95, 4,0,10,6,4,63, 4,0,4,2,11,95, 4,0,4,5,4,63, 4,0,3,2,12,95, + 4,0,3,6,4,63, 5,14,9,2,6,81, 5,14,9,3,6,81, 5,14,9,5,9,65, 5,14,8,2,7,81, 5,14,8,3,7,81, 5,14,7,2,8,81, 5,14,7,3,8,81, + 5,14,6,2,9,81, 5,14,6,3,9,81, 5,14,6,6,9,65, 5,13,11,3,4,82, 5,13,11,5,5,50, 5,13,10,3,5,82, 5,13,5,3,10,82, 5,13,4,3,11,82, + 5,13,4,6,9,66, 5,12,12,3,3,83, 5,12,12,5,5,51, 5,12,3,3,12,83, 5,12,3,6,9,67, 5,11,13,3,2,84, 5,11,13,5,5,52, 5,11,3,6,9,68, + 5,10,13,4,5,53, 5,10,13,5,5,53, 5,10,2,3,13,85, 5,10,2,6,9,69, 5,9,12,5,5,54, 5,9,2,6,9,70, 5,8,12,5,5,55, 5,8,2,6,9,71, + 5,7,12,5,5,56, 5,7,2,4,5,56, 5,7,2,6,9,72, 5,6,12,4,5,57, 5,6,12,5,5,57, 5,6,4,4,5,57, 5,6,3,4,5,57, 5,6,3,6,9,73, + 5,5,11,5,5,58, 5,5,5,6,9,74, 5,4,11,5,5,59, 5,4,5,6,9,75, 5,3,12,3,3,92, 5,3,12,5,5,60, 5,3,4,3,11,92, 5,3,3,3,12,92, + 5,3,3,6,9,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,3,13,93, 5,2,2,6,9,77, 5,1,12,4,5,62, 5,1,12,5,5,62, + 5,1,9,4,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, 5,1,2,6,9,78, 5,0,11,5,5,63, + 5,0,10,6,5,63, 5,0,4,5,5,63, 5,0,3,6,5,63, 6,14,9,3,6,81, 6,14,9,5,6,49, 6,14,8,3,7,81, 6,14,7,3,8,81, 6,14,6,3,9,81, + 6,14,6,6,8,65, 6,13,11,3,4,82, 6,13,11,5,6,50, 6,13,10,3,5,82, 6,13,5,3,10,82, 6,13,4,3,11,82, 6,13,4,6,8,66, 6,12,12,3,3,83, + 6,12,12,5,6,51, 6,12,3,3,12,83, 6,12,3,6,8,67, 6,11,13,3,2,84, 6,11,13,5,6,52, 6,11,3,6,8,68, 6,10,13,4,6,53, 6,10,13,5,6,53, + 6,10,2,3,13,85, 6,10,2,6,8,69, 6,9,12,5,6,54, 6,9,2,6,8,70, 6,8,12,5,6,55, 6,8,2,6,8,71, 6,7,12,5,6,56, 6,7,2,4,6,56, + 6,7,2,6,8,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,4,4,6,57, 6,6,3,4,6,57, 6,6,3,6,8,73, 6,5,11,5,6,58, 6,5,5,6,8,74, + 6,4,11,5,6,59, 6,4,5,6,8,75, 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,4,3,11,92, 6,3,3,3,12,92, 6,3,3,6,8,76, 6,2,13,3,2,93, + 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, 6,2,2,6,8,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,9,4,6,62, 6,1,8,4,6,62, + 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, 6,1,2,6,8,78, 6,0,11,1,4,95, 6,0,11,5,6,63, 6,0,10,1,5,95, + 6,0,10,6,6,63, 6,0,4,1,11,95, 6,0,4,5,6,63, 6,0,3,1,12,95, 6,0,3,6,6,63, 7,14,9,3,6,81, 7,14,9,5,7,49, 7,14,8,3,7,81, + 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,6,6,7,65, 7,13,11,3,4,82, 7,13,11,5,7,50, 7,13,10,3,5,82, 7,13,5,3,10,82, 7,13,4,3,11,82, + 7,13,4,6,7,66, 7,12,12,3,3,83, 7,12,12,5,7,51, 7,12,3,3,12,83, 7,12,3,6,7,67, 7,11,13,3,2,84, 7,11,13,5,7,52, 7,11,3,6,7,68, + 7,10,13,4,7,53, 7,10,13,5,7,53, 7,10,2,3,13,85, 7,10,2,6,7,69, 7,9,12,5,7,54, 7,9,2,6,7,70, 7,8,12,5,7,55, 7,8,2,6,7,71, + 7,7,12,5,7,56, 7,7,2,4,7,56, 7,7,2,6,7,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,4,7,57, 7,6,3,4,7,57, 7,6,3,6,7,73, + 7,5,11,5,7,58, 7,5,5,6,7,74, 7,4,11,5,7,59, 7,4,5,6,7,75, 7,3,12,3,3,92, 7,3,12,5,7,60, 7,3,4,3,11,92, 7,3,3,3,12,92, + 7,3,3,6,7,76, 7,2,13,3,2,93, 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, 7,2,2,6,7,77, 7,1,12,4,7,62, 7,1,12,5,7,62, + 7,1,11,4,7,62, 7,1,10,4,7,62, 7,1,9,4,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,4,4,7,62, + 7,1,3,4,7,62, 7,1,2,4,7,62, 7,1,2,6,7,78, 8,14,9,3,6,81, 8,14,9,5,8,49, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, + 8,14,6,6,6,65, 8,13,11,3,4,82, 8,13,11,5,8,50, 8,13,10,3,5,82, 8,13,5,3,10,82, 8,13,4,3,11,82, 8,13,4,6,6,66, 8,12,12,3,3,83, + 8,12,12,5,8,51, 8,12,3,3,12,83, 8,12,3,6,6,67, 8,11,13,3,2,84, 8,11,13,5,8,52, 8,11,3,6,6,68, 8,10,13,4,8,53, 8,10,13,5,8,53, + 8,10,2,3,13,85, 8,10,2,6,6,69, 8,9,12,5,8,54, 8,9,2,6,6,70, 8,8,12,5,8,55, 8,8,2,6,6,71, 8,7,12,5,8,56, 8,7,2,4,8,56, + 8,7,2,6,6,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,4,8,57, 8,6,3,4,8,57, 8,6,3,6,6,73, 8,5,11,5,8,58, 8,5,5,6,6,74, + 8,4,11,5,8,59, 8,4,5,6,6,75, 8,3,12,3,3,92, 8,3,12,5,8,60, 8,3,4,3,11,92, 8,3,3,3,12,92, 8,3,3,6,6,76, 8,2,13,3,2,93, + 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,6,77, 8,1,12,4,8,62, 8,1,12,5,8,62, 8,1,9,4,8,62, 8,1,8,4,8,62, + 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,6,78, 8,0,11,2,4,95, 8,0,11,5,6,79, 8,0,10,2,5,95, + 8,0,10,6,6,79, 8,0,4,2,11,95, 8,0,4,5,6,79, 8,0,3,2,12,95, 8,0,3,6,6,79, 9,14,9,1,6,81, 9,14,9,3,6,81, 9,14,9,5,9,49, + 9,14,8,1,7,81, 9,14,8,3,7,81, 9,14,7,1,8,81, 9,14,7,3,8,81, 9,14,6,1,9,81, 9,14,6,3,9,81, 9,14,6,6,9,49, 9,13,11,3,4,82, + 9,13,11,5,9,50, 9,13,10,3,5,82, 9,13,5,3,10,82, 9,13,4,3,11,82, 9,13,4,6,5,66, 9,12,12,3,3,83, 9,12,12,5,9,51, 9,12,3,3,12,83, + 9,12,3,6,5,67, 9,11,13,3,2,84, 9,11,13,5,9,52, 9,11,3,6,5,68, 9,10,13,4,9,53, 9,10,13,5,9,53, 9,10,2,3,13,85, 9,10,2,6,5,69, + 9,9,12,5,9,54, 9,9,2,6,5,70, 9,8,12,5,9,55, 9,8,2,6,5,71, 9,7,12,5,9,56, 9,7,2,4,9,56, 9,7,2,6,5,72, 9,6,12,4,9,57, + 9,6,12,5,9,57, 9,6,4,4,9,57, 9,6,3,4,9,57, 9,6,3,6,5,73, 9,5,11,5,9,58, 9,5,5,6,5,74, 9,4,11,5,9,59, 9,4,5,6,5,75, + 9,3,12,3,3,92, 9,3,12,5,9,60, 9,3,4,3,11,92, 9,3,3,3,12,92, 9,3,3,6,5,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, + 9,2,2,3,13,93, 9,2,2,6,5,77, 9,1,12,4,9,62, 9,1,12,5,9,62, 9,1,9,4,9,62, 9,1,8,4,9,62, 9,1,7,4,9,62, 9,1,6,4,9,62, + 9,1,5,4,9,62, 9,1,2,4,9,62, 9,1,2,6,5,78, 9,0,11,5,5,79, 9,0,10,6,5,79, 9,0,4,5,5,79, 9,0,3,6,5,79, 10,13,11,3,4,82, + 10,13,11,5,10,50, 10,13,10,3,5,82, 10,13,9,3,6,82, 10,13,8,3,7,82, 10,13,7,3,8,82, 10,13,6,3,9,82, 10,13,5,3,10,82, 10,13,4,3,11,82, + 10,13,4,6,4,66, 10,12,12,3,3,83, 10,12,12,5,10,51, 10,12,3,3,12,83, 10,12,3,6,4,67, 10,11,13,3,2,84, 10,11,13,5,10,52, 10,11,3,6,4,68, + 10,10,13,4,10,53, 10,10,13,5,10,53, 10,10,2,3,13,85, 10,10,2,6,4,69, 10,9,12,5,10,54, 10,9,2,6,4,70, 10,8,12,5,10,55, 10,8,2,6,4,71, + 10,7,12,5,10,56, 10,7,2,4,10,56, 10,7,2,6,4,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,4,4,10,57, 10,6,3,4,10,57, 10,6,3,6,4,73, + 10,5,11,5,10,58, 10,5,5,6,4,74, 10,4,11,5,10,59, 10,4,5,6,4,75, 10,3,12,3,3,92, 10,3,12,5,10,60, 10,3,4,3,11,92, 10,3,3,3,12,92, + 10,3,3,6,4,76, 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,3,13,93, 10,2,2,6,4,77, 10,1,12,4,4,78, 10,1,12,5,4,78, + 10,1,9,4,4,78, 10,1,8,4,4,78, 10,1,7,4,4,78, 10,1,6,4,4,78, 10,1,5,4,4,78, 10,1,2,4,4,78, 10,1,2,6,4,78, 10,0,11,1,4,95, + 10,0,11,5,4,79, 10,0,10,1,5,95, 10,0,10,6,4,79, 10,0,4,1,11,95, 10,0,4,5,4,79, 10,0,3,1,12,95, 10,0,3,6,4,79, 11,13,11,1,4,82, + 11,13,11,3,4,82, 11,13,11,5,11,50, 11,13,10,1,5,82, 11,13,10,3,5,82, 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, + 11,13,7,1,8,82, 11,13,7,3,8,82, 11,13,6,1,9,82, 11,13,6,3,9,82, 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,4,1,11,82, 11,13,4,3,11,82, + 11,13,4,6,11,50, 11,12,12,3,3,83, 11,12,12,5,11,51, 11,12,3,3,12,83, 11,12,3,6,3,67, 11,11,13,3,2,84, 11,11,13,5,11,52, 11,11,3,6,3,68, + 11,10,13,4,11,53, 11,10,13,5,11,53, 11,10,2,3,13,85, 11,10,2,6,3,69, 11,9,12,5,11,54, 11,9,2,6,3,70, 11,8,12,5,11,55, 11,8,2,6,3,71, + 11,7,12,5,11,56, 11,7,2,4,11,56, 11,7,2,6,3,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,4,11,57, 11,6,3,4,11,57, 11,6,3,6,3,73, + 11,5,11,5,11,58, 11,5,5,6,3,74, 11,4,11,5,11,59, 11,4,5,6,3,75, 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,4,3,11,92, 11,3,3,3,12,92, + 11,3,3,6,3,76, 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,3,13,93, 11,2,2,6,3,77, 11,1,12,1,3,94, 11,1,12,4,3,78, + 11,1,12,5,3,78, 11,1,11,1,4,94, 11,1,11,4,3,78, 11,1,10,1,5,94, 11,1,10,4,3,78, 11,1,9,1,6,94, 11,1,9,4,3,78, 11,1,8,1,7,94, + 11,1,8,4,3,78, 11,1,7,1,8,94, 11,1,7,4,3,78, 11,1,6,1,9,94, 11,1,6,4,3,78, 11,1,5,1,10,94, 11,1,5,4,3,78, 11,1,4,1,11,94, + 11,1,4,4,3,78, 11,1,3,1,12,94, 11,1,3,4,3,78, 11,1,2,1,13,94, 11,1,2,4,3,78, 11,1,2,6,3,78, 12,12,12,1,3,83, 12,12,12,3,3,83, + 12,12,12,5,12,51, 12,12,11,1,4,83, 12,12,11,3,4,83, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, 12,12,8,1,7,83, + 12,12,8,3,7,83, 12,12,7,1,8,83, 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, 12,12,4,1,11,83, + 12,12,4,3,11,83, 12,12,3,1,12,83, 12,12,3,3,12,83, 12,12,3,6,12,51, 12,11,13,1,2,84, 12,11,13,3,2,84, 12,11,13,5,12,52, 12,11,12,1,3,84, + 12,11,11,1,4,84, 12,11,10,1,5,84, 12,11,9,1,6,84, 12,11,8,1,7,84, 12,11,7,1,8,84, 12,11,6,1,9,84, 12,11,5,1,10,84, 12,11,4,1,11,84, + 12,11,3,1,12,84, 12,11,3,6,12,52, 12,10,13,4,12,53, 12,10,13,5,12,53, 12,10,2,3,13,85, 12,10,2,6,2,69, 12,9,12,5,12,54, 12,9,2,6,2,70, + 12,8,12,5,12,55, 12,8,2,6,2,71, 12,7,12,5,12,56, 12,7,2,4,12,56, 12,7,2,6,2,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,4,4,12,57, + 12,6,3,4,12,57, 12,6,3,6,2,73, 12,5,11,5,12,58, 12,5,5,6,2,74, 12,4,11,5,12,59, 12,4,5,6,2,75, 12,3,12,3,3,92, 12,3,12,5,12,60, + 12,3,4,3,11,92, 12,3,3,3,12,92, 12,3,3,6,12,60, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,4,12,61, 12,2,11,4,12,61, + 12,2,10,4,12,61, 12,2,9,4,12,61, 12,2,8,4,12,61, 12,2,7,4,12,61, 12,2,6,4,12,61, 12,2,5,4,12,61, 12,2,4,4,12,61, 12,2,3,4,12,61, + 12,2,2,3,13,93, 12,2,2,4,12,61, 12,2,2,6,12,61, 13,10,13,1,2,85, 13,10,13,3,2,85, 13,10,13,4,13,53, 13,10,13,5,13,53, 13,10,12,1,3,85, + 13,10,12,3,3,85, 13,10,11,1,4,85, 13,10,11,3,4,85, 13,10,10,1,5,85, 13,10,10,3,5,85, 13,10,9,1,6,85, 13,10,9,3,6,85, 13,10,8,1,7,85, + 13,10,8,3,7,85, 13,10,7,1,8,85, 13,10,7,3,8,85, 13,10,6,1,9,85, 13,10,6,3,9,85, 13,10,5,1,10,85, 13,10,5,3,10,85, 13,10,4,1,11,85, + 13,10,4,3,11,85, 13,10,3,1,12,85, 13,10,3,3,12,85, 13,10,2,1,13,85, 13,10,2,3,13,85, 13,10,2,6,13,53, 13,9,12,5,13,54, 13,9,2,6,1,70, + 13,8,12,5,13,55, 13,8,2,6,1,71, 13,7,12,5,13,56, 13,7,2,4,13,56, 13,7,2,6,1,72, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,4,4,13,57, + 13,6,3,4,13,57, 13,6,3,6,1,73, 13,5,11,1,4,90, 13,5,11,5,13,58, 13,5,10,1,5,90, 13,5,9,1,6,90, 13,5,8,1,7,90, 13,5,7,1,8,90, + 13,5,6,1,9,90, 13,5,5,1,10,90, 13,5,5,6,1,74, 13,4,11,5,13,59, 13,4,5,6,13,59, 13,3,12,3,3,92, 13,3,12,5,13,60, 13,3,4,3,11,92, + 13,3,3,3,12,92, 13,3,3,6,13,60, 13,2,13,1,2,93, 13,2,13,3,2,93, 13,2,13,4,13,61, 13,2,13,5,13,61, 13,2,12,1,3,93, 13,2,12,4,13,61, + 13,2,11,1,4,93, 13,2,11,4,13,61, 13,2,10,1,5,93, 13,2,10,4,13,61, 13,2,9,1,6,93, 13,2,9,4,13,61, 13,2,8,1,7,93, 13,2,8,4,13,61, + 13,2,7,1,8,93, 13,2,7,4,13,61, 13,2,6,1,9,93, 13,2,6,4,13,61, 13,2,5,1,10,93, 13,2,5,4,13,61, 13,2,4,1,11,93, 13,2,4,4,13,61, + 13,2,3,1,12,93, 13,2,3,4,13,61, 13,2,2,1,13,93, 13,2,2,3,13,93, 13,2,2,4,13,61, 13,2,2,6,13,61, 14,9,12,1,3,86, 14,9,12,3,3,86, + 14,9,12,5,14,54, 14,9,11,1,4,86, 14,9,11,3,4,86, 14,9,10,1,5,86, 14,9,10,3,5,86, 14,9,9,1,6,86, 14,9,9,3,6,86, 14,9,8,1,7,86, + 14,9,8,3,7,86, 14,9,7,1,8,86, 14,9,7,3,8,86, 14,9,6,1,9,86, 14,9,6,3,9,86, 14,9,5,1,10,86, 14,9,5,3,10,86, 14,9,4,1,11,86, + 14,9,4,3,11,86, 14,9,3,1,12,86, 14,9,3,3,12,86, 14,9,2,1,13,86, 14,9,2,3,13,86, 14,9,2,6,14,54, 14,8,12,1,3,87, 14,8,12,5,14,55, + 14,8,11,1,4,87, 14,8,10,1,5,87, 14,8,9,1,6,87, 14,8,8,1,7,87, 14,8,7,1,8,87, 14,8,6,1,9,87, 14,8,5,1,10,87, 14,8,4,1,11,87, + 14,8,3,1,12,87, 14,8,2,1,13,87, 14,8,2,6,14,55, 14,7,12,1,3,88, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, 14,7,9,1,6,88, + 14,7,8,1,7,88, 14,7,7,1,8,88, 14,7,6,1,9,88, 14,7,5,1,10,88, 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,2,1,13,88, 14,7,2,4,14,56, + 14,7,2,6,14,56, 14,6,12,1,3,89, 14,6,12,4,0,73, 14,6,12,5,0,73, 14,6,11,1,4,89, 14,6,11,4,0,73, 14,6,10,1,5,89, 14,6,10,4,0,73, + 14,6,9,1,6,89, 14,6,9,4,0,73, 14,6,8,1,7,89, 14,6,8,4,0,73, 14,6,7,1,8,89, 14,6,7,4,0,73, 14,6,6,1,9,89, 14,6,6,4,0,73, + 14,6,5,1,10,89, 14,6,5,4,0,73, 14,6,4,1,11,89, 14,6,4,4,0,73, 14,6,3,1,12,89, 14,6,3,4,0,73, 14,6,3,6,0,73, 14,4,11,1,4,91, + 14,4,11,3,4,91, 14,4,11,5,14,59, 14,4,10,1,5,91, 14,4,10,3,5,91, 14,4,9,1,6,91, 14,4,9,3,6,91, 14,4,8,1,7,91, 14,4,8,3,7,91, + 14,4,7,1,8,91, 14,4,7,3,8,91, 14,4,6,1,9,91, 14,4,6,3,9,91, 14,4,5,1,10,91, 14,4,5,3,10,91, 14,4,5,6,14,59, 14,3,12,1,3,92, + 14,3,12,3,3,92, 14,3,12,4,14,60, 14,3,12,5,14,60, 14,3,11,1,4,92, 14,3,11,4,14,60, 14,3,10,1,5,92, 14,3,10,4,14,60, 14,3,9,1,6,92, + 14,3,9,4,14,60, 14,3,8,1,7,92, 14,3,8,4,14,60, 14,3,7,1,8,92, 14,3,7,4,14,60, 14,3,6,1,9,92, 14,3,6,4,14,60, 14,3,5,1,10,92, + 14,3,5,4,14,60, 14,3,4,1,11,92, 14,3,4,3,11,92, 14,3,4,4,14,60, 14,3,3,1,12,92, 14,3,3,3,12,92, 14,3,3,4,14,60, 14,3,3,6,14,60, + }, + }, + }, +} diff --git a/assets/voxels/swimmer.lua b/assets/voxels/swimmer.lua new file mode 100644 index 0000000..8d35564 --- /dev/null +++ b/assets/voxels/swimmer.lua @@ -0,0 +1,223 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "swimmer" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "swimmer", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1158, + count = 774, + faces = { + 1,5,11,2,3,42, 1,5,11,3,3,42, 1,5,11,5,14,26, 1,5,10,2,4,42, 1,5,10,3,4,42, 1,5,9,2,5,42, 1,5,9,3,5,42, 1,5,8,2,6,42, + 1,5,8,3,6,42, 1,5,7,2,7,42, 1,5,7,3,7,42, 1,5,6,2,8,42, 1,5,6,3,8,42, 1,5,5,2,9,42, 1,5,5,3,9,42, 1,5,4,2,10,42, + 1,5,4,3,10,42, 1,5,3,2,11,42, 1,5,3,3,11,42, 1,5,2,2,12,42, 1,5,2,3,12,42, 1,5,1,2,13,42, 1,5,1,3,13,42, 1,5,1,4,14,26, + 1,5,1,6,14,26, 1,4,11,2,3,43, 1,4,11,5,1,11, 1,4,10,2,4,43, 1,4,9,2,5,43, 1,4,8,2,6,43, 1,4,7,2,7,43, 1,4,6,2,8,43, + 1,4,5,2,9,43, 1,4,4,2,10,43, 1,4,3,2,11,43, 1,4,2,2,12,43, 1,4,2,4,1,11, 1,4,2,6,14,27, 1,3,11,2,3,44, 1,3,11,5,1,12, + 1,3,10,2,4,44, 1,3,9,2,5,44, 1,3,8,2,6,44, 1,3,7,2,7,44, 1,3,6,2,8,44, 1,3,5,2,9,44, 1,3,4,2,10,44, 1,3,3,2,11,44, + 1,3,3,4,1,12, 1,3,3,6,1,12, 1,2,12,2,2,45, 1,2,12,3,2,45, 1,2,12,5,1,13, 1,2,11,2,3,45, 1,2,10,2,4,45, 1,2,9,2,5,45, + 1,2,8,2,6,45, 1,2,7,2,7,45, 1,2,6,2,8,45, 1,2,5,2,9,45, 1,2,4,2,10,45, 1,2,4,4,1,13, 1,2,4,6,14,29, 1,1,12,2,2,46, + 1,1,12,4,1,14, 1,1,12,5,1,14, 1,1,11,2,3,46, 1,1,11,4,1,14, 1,1,10,2,4,46, 1,1,10,4,1,14, 1,1,9,2,5,46, 1,1,9,4,1,14, + 1,1,8,2,6,46, 1,1,8,4,1,14, 1,1,7,2,7,46, 1,1,7,4,1,14, 1,1,6,2,8,46, 1,1,6,4,1,14, 1,1,5,2,9,46, 1,1,5,4,1,14, + 1,1,5,6,14,30, 2,7,11,2,3,40, 2,7,11,3,3,40, 2,7,11,5,13,24, 2,7,10,2,4,40, 2,7,10,3,4,40, 2,7,9,2,5,40, 2,7,9,3,5,40, + 2,7,8,2,6,40, 2,7,8,3,6,40, 2,7,7,2,7,40, 2,7,7,3,7,40, 2,7,6,2,8,40, 2,7,6,3,8,40, 2,7,5,2,9,40, 2,7,5,3,9,40, + 2,7,4,2,10,40, 2,7,4,3,10,40, 2,7,3,2,11,40, 2,7,3,3,11,40, 2,7,2,2,12,40, 2,7,2,3,12,40, 2,7,1,2,13,40, 2,7,1,3,13,40, + 2,7,1,6,13,24, 2,6,11,2,3,41, 2,6,11,5,2,9, 2,6,10,2,4,41, 2,6,9,2,5,41, 2,6,8,2,6,41, 2,6,7,2,7,41, 2,6,6,2,8,41, + 2,6,5,2,9,41, 2,6,4,2,10,41, 2,6,3,2,11,41, 2,6,2,2,12,41, 2,6,1,2,13,41, 2,6,1,6,13,25, 2,5,11,5,2,10, 2,5,1,4,2,10, + 2,5,1,6,13,26, 2,4,11,5,2,11, 2,4,2,4,2,11, 2,4,2,6,13,27, 2,3,11,5,2,12, 2,3,3,4,2,12, 2,3,3,6,13,28, 2,2,12,3,2,45, + 2,2,12,5,2,13, 2,2,4,4,2,13, 2,2,4,6,13,29, 2,1,12,4,2,14, 2,1,12,5,2,14, 2,1,9,4,2,14, 2,1,8,4,2,14, 2,1,7,4,2,14, + 2,1,6,4,2,14, 2,1,5,4,2,14, 2,1,5,6,13,30, 2,0,11,2,3,47, 2,0,11,5,2,15, 2,0,10,2,4,47, 2,0,10,6,13,31, 3,8,10,2,4,39, + 3,8,10,3,4,39, 3,8,10,5,3,7, 3,8,9,2,5,39, 3,8,9,3,5,39, 3,8,8,2,6,39, 3,8,8,3,6,39, 3,8,7,2,7,39, 3,8,7,3,7,39, + 3,8,6,2,8,39, 3,8,6,3,8,39, 3,8,5,2,9,39, 3,8,5,3,9,39, 3,8,4,2,10,39, 3,8,4,3,10,39, 3,8,3,2,11,39, 3,8,3,3,11,39, + 3,8,2,2,12,39, 3,8,2,3,12,39, 3,8,1,2,13,39, 3,8,1,3,13,39, 3,8,1,6,12,23, 3,7,11,3,3,40, 3,7,11,5,3,8, 3,7,1,6,12,24, + 3,6,11,5,3,9, 3,6,1,6,12,25, 3,5,11,5,3,10, 3,5,1,4,3,10, 3,5,1,6,12,26, 3,4,11,5,3,11, 3,4,2,4,3,11, 3,4,2,6,12,27, + 3,3,11,5,3,12, 3,3,3,4,3,12, 3,3,3,6,12,28, 3,2,12,3,2,45, 3,2,12,5,3,13, 3,2,4,4,3,13, 3,2,4,6,12,29, 3,1,12,4,3,14, + 3,1,12,5,3,14, 3,1,9,4,3,14, 3,1,8,4,3,14, 3,1,7,4,3,14, 3,1,6,4,3,14, 3,1,5,4,3,14, 3,1,5,6,12,30, 3,0,11,1,3,47, + 3,0,11,5,3,15, 3,0,10,1,4,47, 3,0,10,6,12,31, 4,9,10,2,4,38, 4,9,10,3,4,38, 4,9,10,5,4,6, 4,9,9,2,5,38, 4,9,9,3,5,38, + 4,9,8,2,6,38, 4,9,8,3,6,38, 4,9,7,2,7,38, 4,9,7,3,7,38, 4,9,6,2,8,38, 4,9,6,3,8,38, 4,9,5,2,9,38, 4,9,5,3,9,38, + 4,9,4,2,10,38, 4,9,4,3,10,38, 4,9,3,2,11,38, 4,9,3,3,11,38, 4,9,2,2,12,38, 4,9,2,3,12,38, 4,9,1,2,13,38, 4,9,1,3,13,38, + 4,9,1,6,11,22, 4,8,10,5,4,7, 4,8,1,6,11,23, 4,7,11,3,3,40, 4,7,11,5,4,8, 4,7,1,6,11,24, 4,6,11,5,4,9, 4,6,1,6,11,25, + 4,5,11,5,4,10, 4,5,1,4,4,10, 4,5,1,6,11,26, 4,4,11,5,4,11, 4,4,2,4,4,11, 4,4,2,6,11,27, 4,3,11,5,4,12, 4,3,3,4,4,12, + 4,3,3,6,11,28, 4,2,12,3,2,45, 4,2,12,5,4,13, 4,2,4,4,4,13, 4,2,4,6,11,29, 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,11,4,4,14, + 4,1,10,4,4,14, 4,1,9,4,4,14, 4,1,8,4,4,14, 4,1,7,4,4,14, 4,1,6,4,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, 5,10,9,2,5,37, + 5,10,9,3,5,37, 5,10,9,5,5,5, 5,10,8,2,6,37, 5,10,8,3,6,37, 5,10,7,2,7,37, 5,10,7,3,7,37, 5,10,6,2,8,37, 5,10,6,3,8,37, + 5,10,5,2,9,37, 5,10,5,3,9,37, 5,10,4,2,10,37, 5,10,4,3,10,37, 5,10,3,2,11,37, 5,10,3,3,11,37, 5,10,2,2,12,37, 5,10,2,3,12,37, + 5,10,2,6,10,21, 5,9,10,3,4,38, 5,9,10,5,5,6, 5,9,1,3,13,38, 5,9,1,6,10,22, 5,8,10,5,5,7, 5,8,1,6,10,23, 5,7,11,3,3,40, + 5,7,11,5,5,8, 5,7,1,6,10,24, 5,6,11,5,5,9, 5,6,1,6,10,25, 5,5,11,5,5,10, 5,5,1,4,5,10, 5,5,1,6,10,26, 5,4,11,5,5,11, + 5,4,2,4,5,11, 5,4,2,6,10,27, 5,3,11,5,5,12, 5,3,3,4,5,12, 5,3,3,6,10,28, 5,2,12,3,2,45, 5,2,12,5,5,13, 5,2,4,4,5,13, + 5,2,4,6,10,29, 5,1,12,4,5,14, 5,1,12,5,5,14, 5,1,11,4,5,14, 5,1,10,4,5,14, 5,1,9,4,5,14, 5,1,8,4,5,14, 5,1,7,4,5,14, + 5,1,6,4,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 6,10,9,3,5,37, 6,10,9,5,6,5, 6,10,8,3,6,37, 6,10,7,3,7,37, 6,10,6,3,8,37, + 6,10,5,3,9,37, 6,10,4,3,10,37, 6,10,3,3,11,37, 6,10,2,3,12,37, 6,10,2,6,9,21, 6,9,10,3,4,38, 6,9,10,5,6,6, 6,9,1,3,13,38, + 6,9,1,6,9,22, 6,8,10,5,6,7, 6,8,1,6,9,23, 6,7,11,3,3,40, 6,7,11,5,6,8, 6,7,1,6,9,24, 6,6,11,5,6,9, 6,6,1,6,9,25, + 6,5,11,5,6,10, 6,5,1,4,6,10, 6,5,1,6,9,26, 6,4,11,5,6,11, 6,4,2,4,6,11, 6,4,2,6,9,27, 6,3,11,5,6,12, 6,3,3,4,6,12, + 6,3,3,6,9,28, 6,2,12,3,2,45, 6,2,12,5,6,13, 6,2,4,4,6,13, 6,2,4,6,9,29, 6,1,12,4,6,14, 6,1,12,5,6,14, 6,1,11,4,6,14, + 6,1,10,4,6,14, 6,1,9,4,6,14, 6,1,8,4,6,14, 6,1,7,4,6,14, 6,1,6,4,6,14, 6,1,5,4,6,14, 6,1,5,6,9,30, 7,10,9,3,5,37, + 7,10,9,5,7,5, 7,10,8,3,6,37, 7,10,7,3,7,37, 7,10,6,3,8,37, 7,10,5,3,9,37, 7,10,4,3,10,37, 7,10,3,3,11,37, 7,10,2,3,12,37, + 7,10,2,6,8,21, 7,9,10,3,4,38, 7,9,10,5,7,6, 7,9,1,3,13,38, 7,9,1,6,8,22, 7,8,10,5,7,7, 7,8,1,6,8,23, 7,7,11,3,3,40, + 7,7,11,5,7,8, 7,7,1,6,8,24, 7,6,11,5,7,9, 7,6,1,6,8,25, 7,5,11,5,7,10, 7,5,1,4,7,10, 7,5,1,6,8,26, 7,4,11,5,7,11, + 7,4,2,4,7,11, 7,4,2,6,8,27, 7,3,11,5,7,12, 7,3,3,4,7,12, 7,3,3,6,8,28, 7,2,12,3,2,45, 7,2,12,5,7,13, 7,2,4,4,7,13, + 7,2,4,6,8,29, 7,1,12,4,7,14, 7,1,12,5,7,14, 7,1,11,4,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, + 7,1,6,4,7,14, 7,1,5,4,7,14, 7,1,5,6,8,30, 8,10,9,3,5,37, 8,10,9,5,8,5, 8,10,8,3,6,37, 8,10,7,3,7,37, 8,10,6,3,8,37, + 8,10,5,3,9,37, 8,10,4,3,10,37, 8,10,3,3,11,37, 8,10,2,3,12,37, 8,10,2,6,7,21, 8,9,10,3,4,38, 8,9,10,5,8,6, 8,9,1,3,13,38, + 8,9,1,6,7,22, 8,8,10,5,8,7, 8,8,1,6,7,23, 8,7,11,3,3,40, 8,7,11,5,8,8, 8,7,1,6,7,24, 8,6,11,5,8,9, 8,6,1,6,7,25, + 8,5,11,5,8,10, 8,5,1,4,8,10, 8,5,1,6,7,26, 8,4,11,5,8,11, 8,4,2,4,8,11, 8,4,2,6,7,27, 8,3,11,5,8,12, 8,3,3,4,8,12, + 8,3,3,6,7,28, 8,2,12,3,2,45, 8,2,12,5,8,13, 8,2,4,4,8,13, 8,2,4,6,7,29, 8,1,12,4,8,14, 8,1,12,5,8,14, 8,1,11,4,8,14, + 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,10,9,3,5,37, + 9,10,9,5,9,5, 9,10,8,3,6,37, 9,10,7,3,7,37, 9,10,6,3,8,37, 9,10,5,3,9,37, 9,10,4,3,10,37, 9,10,3,3,11,37, 9,10,2,3,12,37, + 9,10,2,6,6,21, 9,9,10,3,4,38, 9,9,10,5,9,6, 9,9,1,3,13,38, 9,9,1,6,6,22, 9,8,10,5,9,7, 9,8,1,6,6,23, 9,7,11,3,3,40, + 9,7,11,5,9,8, 9,7,1,6,6,24, 9,6,11,5,9,9, 9,6,1,6,6,25, 9,5,11,5,9,10, 9,5,1,4,9,10, 9,5,1,6,6,26, 9,4,11,5,9,11, + 9,4,2,4,9,11, 9,4,2,6,6,27, 9,3,11,5,9,12, 9,3,3,4,9,12, 9,3,3,6,6,28, 9,2,12,3,2,45, 9,2,12,5,9,13, 9,2,4,4,9,13, + 9,2,4,6,6,29, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,11,4,9,14, 9,1,10,4,9,14, 9,1,9,4,9,14, 9,1,8,4,9,14, 9,1,7,4,9,14, + 9,1,6,4,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 10,10,9,1,5,37, 10,10,9,3,5,37, 10,10,9,5,10,5, 10,10,8,1,6,37, 10,10,8,3,6,37, + 10,10,7,1,7,37, 10,10,7,3,7,37, 10,10,6,1,8,37, 10,10,6,3,8,37, 10,10,5,1,9,37, 10,10,5,3,9,37, 10,10,4,1,10,37, 10,10,4,3,10,37, + 10,10,3,1,11,37, 10,10,3,3,11,37, 10,10,2,1,12,37, 10,10,2,3,12,37, 10,10,2,6,5,21, 10,9,10,3,4,38, 10,9,10,5,10,6, 10,9,1,3,13,38, + 10,9,1,6,5,22, 10,8,10,5,10,7, 10,8,1,6,5,23, 10,7,11,3,3,40, 10,7,11,5,10,8, 10,7,1,6,5,24, 10,6,11,5,10,9, 10,6,1,6,5,25, + 10,5,11,5,10,10, 10,5,1,4,10,10, 10,5,1,6,5,26, 10,4,11,5,10,11, 10,4,2,4,10,11, 10,4,2,6,5,27, 10,3,11,5,10,12, 10,3,3,4,10,12, + 10,3,3,6,5,28, 10,2,12,3,2,45, 10,2,12,5,10,13, 10,2,4,4,10,13, 10,2,4,6,5,29, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,11,4,10,14, + 10,1,10,4,10,14, 10,1,9,4,10,14, 10,1,8,4,10,14, 10,1,7,4,10,14, 10,1,6,4,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 11,9,10,1,4,38, + 11,9,10,3,4,38, 11,9,10,5,11,6, 11,9,9,1,5,38, 11,9,9,3,5,38, 11,9,8,1,6,38, 11,9,8,3,6,38, 11,9,7,1,7,38, 11,9,7,3,7,38, + 11,9,6,1,8,38, 11,9,6,3,8,38, 11,9,5,1,9,38, 11,9,5,3,9,38, 11,9,4,1,10,38, 11,9,4,3,10,38, 11,9,3,1,11,38, 11,9,3,3,11,38, + 11,9,2,1,12,38, 11,9,2,3,12,38, 11,9,1,1,13,38, 11,9,1,3,13,38, 11,9,1,6,4,22, 11,8,10,5,11,7, 11,8,1,6,4,23, 11,7,11,3,3,40, + 11,7,11,5,11,8, 11,7,1,6,4,24, 11,6,11,5,11,9, 11,6,1,6,4,25, 11,5,11,5,11,10, 11,5,1,4,11,10, 11,5,1,6,4,26, 11,4,11,5,11,11, + 11,4,2,4,11,11, 11,4,2,6,4,27, 11,3,11,5,11,12, 11,3,3,4,11,12, 11,3,3,6,4,28, 11,2,12,3,2,45, 11,2,12,5,11,13, 11,2,4,4,11,13, + 11,2,4,6,4,29, 11,1,12,4,11,14, 11,1,12,5,11,14, 11,1,11,4,11,14, 11,1,10,4,11,14, 11,1,9,4,11,14, 11,1,8,4,11,14, 11,1,7,4,11,14, + 11,1,6,4,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 12,8,10,1,4,39, 12,8,10,3,4,39, 12,8,10,5,12,7, 12,8,9,1,5,39, 12,8,9,3,5,39, + 12,8,8,1,6,39, 12,8,8,3,6,39, 12,8,7,1,7,39, 12,8,7,3,7,39, 12,8,6,1,8,39, 12,8,6,3,8,39, 12,8,5,1,9,39, 12,8,5,3,9,39, + 12,8,4,1,10,39, 12,8,4,3,10,39, 12,8,3,1,11,39, 12,8,3,3,11,39, 12,8,2,1,12,39, 12,8,2,3,12,39, 12,8,1,1,13,39, 12,8,1,3,13,39, + 12,8,1,6,3,23, 12,7,11,3,3,40, 12,7,11,5,12,8, 12,7,1,6,3,24, 12,6,11,5,12,9, 12,6,1,6,3,25, 12,5,11,5,12,10, 12,5,1,4,12,10, + 12,5,1,6,3,26, 12,4,11,5,12,11, 12,4,2,4,12,11, 12,4,2,6,3,27, 12,3,11,5,12,12, 12,3,3,4,12,12, 12,3,3,6,3,28, 12,2,12,3,2,45, + 12,2,12,5,12,13, 12,2,4,4,12,13, 12,2,4,6,3,29, 12,1,12,4,12,14, 12,1,12,5,12,14, 12,1,9,4,12,14, 12,1,8,4,12,14, 12,1,7,4,12,14, + 12,1,6,4,12,14, 12,1,5,4,12,14, 12,1,5,6,3,30, 12,0,11,2,3,47, 12,0,11,5,12,15, 12,0,10,2,4,47, 12,0,10,6,3,31, 13,7,11,1,3,40, + 13,7,11,3,3,40, 13,7,11,5,2,24, 13,7,10,1,4,40, 13,7,10,3,4,40, 13,7,9,1,5,40, 13,7,9,3,5,40, 13,7,8,1,6,40, 13,7,8,3,6,40, + 13,7,7,1,7,40, 13,7,7,3,7,40, 13,7,6,1,8,40, 13,7,6,3,8,40, 13,7,5,1,9,40, 13,7,5,3,9,40, 13,7,4,1,10,40, 13,7,4,3,10,40, + 13,7,3,1,11,40, 13,7,3,3,11,40, 13,7,2,1,12,40, 13,7,2,3,12,40, 13,7,1,1,13,40, 13,7,1,3,13,40, 13,7,1,6,2,24, 13,6,11,1,3,41, + 13,6,11,5,13,9, 13,6,10,1,4,41, 13,6,9,1,5,41, 13,6,8,1,6,41, 13,6,7,1,7,41, 13,6,6,1,8,41, 13,6,5,1,9,41, 13,6,4,1,10,41, + 13,6,3,1,11,41, 13,6,2,1,12,41, 13,6,1,1,13,41, 13,6,1,6,2,25, 13,5,11,5,13,10, 13,5,1,4,13,10, 13,5,1,6,2,26, 13,4,11,5,13,11, + 13,4,2,4,13,11, 13,4,2,6,2,27, 13,3,11,5,13,12, 13,3,3,4,13,12, 13,3,3,6,2,28, 13,2,12,3,2,45, 13,2,12,5,13,13, 13,2,4,4,13,13, + 13,2,4,6,2,29, 13,1,12,4,13,14, 13,1,12,5,13,14, 13,1,9,4,13,14, 13,1,8,4,13,14, 13,1,7,4,13,14, 13,1,6,4,13,14, 13,1,5,4,13,14, + 13,1,5,6,2,30, 13,0,11,1,3,47, 13,0,11,5,13,15, 13,0,10,1,4,47, 13,0,10,6,2,31, 14,5,11,1,3,42, 14,5,11,3,3,42, 14,5,11,5,1,26, + 14,5,10,1,4,42, 14,5,10,3,4,42, 14,5,9,1,5,42, 14,5,9,3,5,42, 14,5,8,1,6,42, 14,5,8,3,6,42, 14,5,7,1,7,42, 14,5,7,3,7,42, + 14,5,6,1,8,42, 14,5,6,3,8,42, 14,5,5,1,9,42, 14,5,5,3,9,42, 14,5,4,1,10,42, 14,5,4,3,10,42, 14,5,3,1,11,42, 14,5,3,3,11,42, + 14,5,2,1,12,42, 14,5,2,3,12,42, 14,5,1,1,13,42, 14,5,1,3,13,42, 14,5,1,4,1,26, 14,5,1,6,1,26, 14,4,11,1,3,43, 14,4,11,5,14,11, + 14,4,10,1,4,43, 14,4,9,1,5,43, 14,4,8,1,6,43, 14,4,7,1,7,43, 14,4,6,1,8,43, 14,4,5,1,9,43, 14,4,4,1,10,43, 14,4,3,1,11,43, + 14,4,2,1,12,43, 14,4,2,4,14,11, 14,4,2,6,1,27, 14,3,11,1,3,44, 14,3,11,5,14,12, 14,3,10,1,4,44, 14,3,9,1,5,44, 14,3,8,1,6,44, + 14,3,7,1,7,44, 14,3,6,1,8,44, 14,3,5,1,9,44, 14,3,4,1,10,44, 14,3,3,1,11,44, 14,3,3,4,14,12, 14,3,3,6,14,12, 14,2,12,1,2,45, + 14,2,12,3,2,45, 14,2,12,5,14,13, 14,2,11,1,3,45, 14,2,10,1,4,45, 14,2,9,1,5,45, 14,2,8,1,6,45, 14,2,7,1,7,45, 14,2,6,1,8,45, + 14,2,5,1,9,45, 14,2,4,1,10,45, 14,2,4,4,14,13, 14,2,4,6,1,29, 14,1,12,1,2,46, 14,1,12,4,14,14, 14,1,12,5,14,14, 14,1,11,1,3,46, + 14,1,11,4,14,14, 14,1,10,1,4,46, 14,1,10,4,14,14, 14,1,9,1,5,46, 14,1,9,4,14,14, 14,1,8,1,6,46, 14,1,8,4,14,14, 14,1,7,1,7,46, + 14,1,7,4,14,14, 14,1,6,1,8,46, 14,1,6,4,14,14, 14,1,5,1,9,46, 14,1,5,4,14,14, 14,1,5,6,1,30, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1062, + count = 752, + faces = { + 1,5,11,2,4,90, 1,5,11,3,4,90, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,10,3,5,90, 1,5,9,2,6,90, 1,5,9,3,6,90, 1,5,8,2,7,90, + 1,5,8,3,7,90, 1,5,7,2,8,90, 1,5,7,3,8,90, 1,5,6,2,9,90, 1,5,6,3,9,90, 1,5,5,2,10,90, 1,5,5,3,10,90, 1,5,4,2,11,90, + 1,5,4,3,11,90, 1,5,3,2,12,90, 1,5,3,3,12,90, 1,5,2,2,13,90, 1,5,2,3,13,90, 1,5,2,4,1,58, 1,5,2,6,14,74, 1,4,11,2,4,91, + 1,4,11,4,1,59, 1,4,11,5,1,59, 1,4,10,2,5,91, 1,4,10,4,1,59, 1,4,9,2,6,91, 1,4,9,4,1,59, 1,4,8,2,7,91, 1,4,8,4,1,59, + 1,4,7,2,8,91, 1,4,7,4,1,59, 1,4,6,2,9,91, 1,4,6,4,1,59, 1,4,5,2,10,91, 1,4,5,4,1,59, 1,4,4,2,11,91, 1,4,4,4,1,59, + 1,4,3,2,12,91, 1,4,3,4,1,59, 1,4,3,6,14,75, 1,2,9,2,6,93, 1,2,9,3,6,93, 1,2,9,4,1,61, 1,2,9,5,1,61, 1,2,8,2,7,93, + 1,2,8,3,7,93, 1,2,8,4,1,61, 1,2,7,2,8,93, 1,2,7,3,8,93, 1,2,6,2,9,93, 1,2,6,3,9,93, 1,2,5,2,10,93, 1,2,5,3,10,93, + 1,2,4,2,11,93, 1,2,4,3,11,93, 1,2,4,6,14,77, 1,1,7,2,8,94, 1,1,7,4,1,62, 1,1,7,5,1,62, 1,1,6,2,9,94, 1,1,6,4,1,62, + 1,1,5,2,10,94, 1,1,5,4,1,62, 1,1,4,2,11,94, 1,1,4,4,1,62, 1,1,4,6,14,78, 2,7,11,2,4,88, 2,7,11,3,4,88, 2,7,11,5,2,56, + 2,7,10,2,5,88, 2,7,10,3,5,88, 2,7,9,2,6,88, 2,7,9,3,6,88, 2,7,8,2,7,88, 2,7,8,3,7,88, 2,7,7,2,8,88, 2,7,7,3,8,88, + 2,7,6,2,9,88, 2,7,6,3,9,88, 2,7,5,2,10,88, 2,7,5,3,10,88, 2,7,4,2,11,88, 2,7,4,3,11,88, 2,7,3,2,12,88, 2,7,3,3,12,88, + 2,7,2,2,13,88, 2,7,2,3,13,88, 2,7,1,2,14,88, 2,7,1,3,14,88, 2,7,1,6,13,72, 2,6,11,2,4,89, 2,6,11,5,2,57, 2,6,10,2,5,89, + 2,6,9,2,6,89, 2,6,8,2,7,89, 2,6,7,2,8,89, 2,6,6,2,9,89, 2,6,5,2,10,89, 2,6,4,2,11,89, 2,6,3,2,12,89, 2,6,2,2,13,89, + 2,6,1,2,14,89, 2,6,1,4,2,57, 2,6,1,6,13,73, 2,5,11,5,2,58, 2,5,2,4,2,58, 2,5,2,6,13,74, 2,4,11,4,2,59, 2,4,11,5,2,59, + 2,4,3,4,2,59, 2,4,3,6,13,75, 2,3,10,2,5,92, 2,3,10,4,2,60, 2,3,10,5,2,60, 2,3,9,2,6,92, 2,3,8,2,7,92, 2,3,7,2,8,92, + 2,3,6,2,9,92, 2,3,5,2,10,92, 2,3,4,2,11,92, 2,3,4,6,13,76, 2,2,9,4,2,61, 2,2,9,5,2,61, 2,2,8,4,2,61, 2,2,4,6,13,77, + 2,1,7,4,2,62, 2,1,7,5,2,62, 2,1,4,4,2,62, 2,1,4,6,13,78, 2,0,6,2,9,95, 2,0,6,5,2,63, 2,0,5,2,10,95, 2,0,5,6,13,79, + 3,9,11,2,4,86, 3,9,11,3,4,86, 3,9,11,5,3,54, 3,9,10,2,5,86, 3,9,10,3,5,86, 3,9,9,2,6,86, 3,9,9,3,6,86, 3,9,8,2,7,86, + 3,9,8,3,7,86, 3,9,7,2,8,86, 3,9,7,3,8,86, 3,9,6,2,9,86, 3,9,6,3,9,86, 3,9,5,2,10,86, 3,9,5,3,10,86, 3,9,4,2,11,86, + 3,9,4,3,11,86, 3,9,3,2,12,86, 3,9,3,3,12,86, 3,9,2,2,13,86, 3,9,2,3,13,86, 3,9,2,6,12,70, 3,8,11,2,4,87, 3,8,11,5,3,55, + 3,8,10,2,5,87, 3,8,9,2,6,87, 3,8,8,2,7,87, 3,8,7,2,8,87, 3,8,6,2,9,87, 3,8,5,2,10,87, 3,8,4,2,11,87, 3,8,3,2,12,87, + 3,8,2,2,13,87, 3,8,1,2,14,87, 3,8,1,3,14,87, 3,8,1,6,12,71, 3,7,11,5,3,56, 3,7,1,6,12,72, 3,6,11,5,3,57, 3,6,1,4,3,57, + 3,6,1,6,12,73, 3,5,11,5,3,58, 3,5,2,4,3,58, 3,5,2,6,12,74, 3,4,11,4,3,59, 3,4,11,5,3,59, 3,4,3,4,3,59, 3,4,3,6,12,75, + 3,3,10,4,3,60, 3,3,10,5,3,60, 3,3,4,6,12,76, 3,2,9,4,3,61, 3,2,9,5,3,61, 3,2,8,4,3,61, 3,2,4,6,12,77, 3,1,7,4,3,62, + 3,1,7,5,3,62, 3,1,4,4,3,62, 3,1,4,6,12,78, 3,0,6,1,9,95, 3,0,6,5,3,63, 3,0,5,1,10,95, 3,0,5,6,12,79, 4,10,11,2,4,85, + 4,10,11,3,4,85, 4,10,11,5,4,53, 4,10,10,2,5,85, 4,10,10,3,5,85, 4,10,9,2,6,85, 4,10,9,3,6,85, 4,10,8,2,7,85, 4,10,8,3,7,85, + 4,10,7,2,8,85, 4,10,7,3,8,85, 4,10,6,2,9,85, 4,10,6,3,9,85, 4,10,5,2,10,85, 4,10,5,3,10,85, 4,10,4,2,11,85, 4,10,4,3,11,85, + 4,10,3,2,12,85, 4,10,3,3,12,85, 4,10,2,2,13,85, 4,10,2,3,13,85, 4,10,2,6,11,69, 4,9,11,5,4,54, 4,9,2,6,11,70, 4,8,11,5,4,55, + 4,8,1,3,14,87, 4,8,1,6,11,71, 4,7,11,5,4,56, 4,7,1,6,11,72, 4,6,11,5,4,57, 4,6,1,4,4,57, 4,6,1,6,11,73, 4,5,11,5,4,58, + 4,5,2,4,4,58, 4,5,2,6,11,74, 4,4,11,4,4,59, 4,4,11,5,4,59, 4,4,3,4,4,59, 4,4,3,6,11,75, 4,3,10,4,4,60, 4,3,10,5,4,60, + 4,3,4,6,11,76, 4,2,9,4,4,61, 4,2,9,5,4,61, 4,2,8,4,4,61, 4,2,4,6,11,77, 4,1,7,4,4,62, 4,1,7,5,4,62, 4,1,6,4,4,62, + 4,1,5,4,4,62, 4,1,4,4,4,62, 4,1,4,6,11,78, 5,11,10,2,5,84, 5,11,10,3,5,84, 5,11,10,5,5,52, 5,11,9,2,6,84, 5,11,9,3,6,84, + 5,11,8,2,7,84, 5,11,8,3,7,84, 5,11,7,2,8,84, 5,11,7,3,8,84, 5,11,6,2,9,84, 5,11,6,3,9,84, 5,11,5,2,10,84, 5,11,5,3,10,84, + 5,11,4,2,11,84, 5,11,4,3,11,84, 5,11,3,2,12,84, 5,11,3,3,12,84, 5,11,3,6,10,68, 5,10,11,3,4,85, 5,10,11,5,5,53, 5,10,2,3,13,85, + 5,10,2,6,10,69, 5,9,11,5,5,54, 5,9,2,6,10,70, 5,8,11,5,5,55, 5,8,1,3,14,87, 5,8,1,6,10,71, 5,7,11,5,5,56, 5,7,1,6,10,72, + 5,6,11,5,5,57, 5,6,1,4,5,57, 5,6,1,6,10,73, 5,5,11,5,5,58, 5,5,2,4,5,58, 5,5,2,6,10,74, 5,4,11,4,5,59, 5,4,11,5,5,59, + 5,4,3,4,5,59, 5,4,3,6,10,75, 5,3,10,4,5,60, 5,3,10,5,5,60, 5,3,4,6,10,76, 5,2,9,4,5,61, 5,2,9,5,5,61, 5,2,8,4,5,61, + 5,2,4,6,10,77, 5,1,7,4,5,62, 5,1,7,5,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,4,4,5,62, 5,1,4,6,10,78, 6,11,10,3,5,84, + 6,11,10,5,6,52, 6,11,9,3,6,84, 6,11,8,3,7,84, 6,11,7,3,8,84, 6,11,6,3,9,84, 6,11,5,3,10,84, 6,11,4,3,11,84, 6,11,3,3,12,84, + 6,11,3,6,9,68, 6,10,11,3,4,85, 6,10,11,5,6,53, 6,10,2,3,13,85, 6,10,2,6,9,69, 6,9,11,5,6,54, 6,9,2,6,9,70, 6,8,11,5,6,55, + 6,8,1,3,14,87, 6,8,1,6,9,71, 6,7,11,5,6,56, 6,7,1,6,9,72, 6,6,11,5,6,57, 6,6,1,4,6,57, 6,6,1,6,9,73, 6,5,11,5,6,58, + 6,5,2,4,6,58, 6,5,2,6,9,74, 6,4,11,4,6,59, 6,4,11,5,6,59, 6,4,3,4,6,59, 6,4,3,6,9,75, 6,3,10,4,6,60, 6,3,10,5,6,60, + 6,3,4,6,9,76, 6,2,9,4,6,61, 6,2,9,5,6,61, 6,2,8,4,6,61, 6,2,4,6,9,77, 6,1,7,4,6,62, 6,1,7,5,6,62, 6,1,6,4,6,62, + 6,1,5,4,6,62, 6,1,4,4,6,62, 6,1,4,6,9,78, 7,11,10,3,5,84, 7,11,10,5,7,52, 7,11,9,3,6,84, 7,11,8,3,7,84, 7,11,7,3,8,84, + 7,11,6,3,9,84, 7,11,5,3,10,84, 7,11,4,3,11,84, 7,11,3,3,12,84, 7,11,3,6,8,68, 7,10,11,3,4,85, 7,10,11,5,7,53, 7,10,2,3,13,85, + 7,10,2,6,8,69, 7,9,11,5,7,54, 7,9,2,6,8,70, 7,8,11,5,7,55, 7,8,1,3,14,87, 7,8,1,6,8,71, 7,7,11,5,7,56, 7,7,1,6,8,72, + 7,6,11,5,7,57, 7,6,1,4,7,57, 7,6,1,6,8,73, 7,5,11,5,7,58, 7,5,2,4,7,58, 7,5,2,6,8,74, 7,4,11,4,7,59, 7,4,11,5,7,59, + 7,4,3,4,7,59, 7,4,3,6,8,75, 7,3,10,4,7,60, 7,3,10,5,7,60, 7,3,4,6,8,76, 7,2,9,4,7,61, 7,2,9,5,7,61, 7,2,8,4,7,61, + 7,2,4,6,8,77, 7,1,7,4,7,62, 7,1,7,5,7,62, 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,4,4,7,62, 7,1,4,6,8,78, 8,11,10,3,5,84, + 8,11,10,5,8,52, 8,11,9,3,6,84, 8,11,8,3,7,84, 8,11,7,3,8,84, 8,11,6,3,9,84, 8,11,5,3,10,84, 8,11,4,3,11,84, 8,11,3,3,12,84, + 8,11,3,6,7,68, 8,10,11,3,4,85, 8,10,11,5,8,53, 8,10,2,3,13,85, 8,10,2,6,7,69, 8,9,11,5,8,54, 8,9,2,6,7,70, 8,8,11,5,8,55, + 8,8,1,3,14,87, 8,8,1,6,7,71, 8,7,11,5,8,56, 8,7,1,6,7,72, 8,6,11,5,8,57, 8,6,1,4,8,57, 8,6,1,6,7,73, 8,5,11,5,8,58, + 8,5,2,4,8,58, 8,5,2,6,7,74, 8,4,11,4,8,59, 8,4,11,5,8,59, 8,4,3,4,8,59, 8,4,3,6,7,75, 8,3,10,4,8,60, 8,3,10,5,8,60, + 8,3,4,6,7,76, 8,2,9,4,8,61, 8,2,9,5,8,61, 8,2,8,4,8,61, 8,2,4,6,7,77, 8,1,7,4,8,62, 8,1,7,5,8,62, 8,1,6,4,8,62, + 8,1,5,4,8,62, 8,1,4,4,8,62, 8,1,4,6,7,78, 9,11,10,3,5,84, 9,11,10,5,9,52, 9,11,9,3,6,84, 9,11,8,3,7,84, 9,11,7,3,8,84, + 9,11,6,3,9,84, 9,11,5,3,10,84, 9,11,4,3,11,84, 9,11,3,3,12,84, 9,11,3,6,6,68, 9,10,11,3,4,85, 9,10,11,5,9,53, 9,10,2,3,13,85, + 9,10,2,6,6,69, 9,9,11,5,9,54, 9,9,2,6,6,70, 9,8,11,5,9,55, 9,8,1,3,14,87, 9,8,1,6,6,71, 9,7,11,5,9,56, 9,7,1,6,6,72, + 9,6,11,5,9,57, 9,6,1,4,9,57, 9,6,1,6,6,73, 9,5,11,5,9,58, 9,5,2,4,9,58, 9,5,2,6,6,74, 9,4,11,4,9,59, 9,4,11,5,9,59, + 9,4,3,4,9,59, 9,4,3,6,6,75, 9,3,10,4,9,60, 9,3,10,5,9,60, 9,3,4,6,6,76, 9,2,9,4,9,61, 9,2,9,5,9,61, 9,2,8,4,9,61, + 9,2,4,6,6,77, 9,1,7,4,9,62, 9,1,7,5,9,62, 9,1,6,4,9,62, 9,1,5,4,9,62, 9,1,4,4,9,62, 9,1,4,6,6,78, 10,11,10,1,5,84, + 10,11,10,3,5,84, 10,11,10,5,10,52, 10,11,9,1,6,84, 10,11,9,3,6,84, 10,11,8,1,7,84, 10,11,8,3,7,84, 10,11,7,1,8,84, 10,11,7,3,8,84, + 10,11,6,1,9,84, 10,11,6,3,9,84, 10,11,5,1,10,84, 10,11,5,3,10,84, 10,11,4,1,11,84, 10,11,4,3,11,84, 10,11,3,1,12,84, 10,11,3,3,12,84, + 10,11,3,6,5,68, 10,10,11,3,4,85, 10,10,11,5,10,53, 10,10,2,3,13,85, 10,10,2,6,5,69, 10,9,11,5,10,54, 10,9,2,6,5,70, 10,8,11,5,10,55, + 10,8,1,3,14,87, 10,8,1,6,5,71, 10,7,11,5,10,56, 10,7,1,6,5,72, 10,6,11,5,10,57, 10,6,1,4,10,57, 10,6,1,6,5,73, 10,5,11,5,10,58, + 10,5,2,4,10,58, 10,5,2,6,5,74, 10,4,11,4,10,59, 10,4,11,5,10,59, 10,4,3,4,10,59, 10,4,3,6,5,75, 10,3,10,4,10,60, 10,3,10,5,10,60, + 10,3,4,6,5,76, 10,2,9,4,10,61, 10,2,9,5,10,61, 10,2,8,4,10,61, 10,2,4,6,5,77, 10,1,7,1,8,94, 10,1,7,4,10,62, 10,1,7,5,10,62, + 10,1,6,1,9,94, 10,1,6,4,10,62, 10,1,5,1,10,94, 10,1,5,4,10,62, 10,1,4,1,11,94, 10,1,4,4,10,62, 10,1,4,6,5,78, 11,10,11,1,4,85, + 11,10,11,3,4,85, 11,10,11,5,11,53, 11,10,10,1,5,85, 11,10,10,3,5,85, 11,10,9,1,6,85, 11,10,9,3,6,85, 11,10,8,1,7,85, 11,10,8,3,7,85, + 11,10,7,1,8,85, 11,10,7,3,8,85, 11,10,6,1,9,85, 11,10,6,3,9,85, 11,10,5,1,10,85, 11,10,5,3,10,85, 11,10,4,1,11,85, 11,10,4,3,11,85, + 11,10,3,1,12,85, 11,10,3,3,12,85, 11,10,2,1,13,85, 11,10,2,3,13,85, 11,10,2,6,4,69, 11,9,11,5,11,54, 11,9,2,6,4,70, 11,8,11,5,11,55, + 11,8,1,3,14,87, 11,8,1,6,4,71, 11,7,11,5,11,56, 11,7,1,6,4,72, 11,6,11,5,11,57, 11,6,1,4,11,57, 11,6,1,6,4,73, 11,5,11,5,11,58, + 11,5,2,4,11,58, 11,5,2,6,4,74, 11,4,11,4,11,59, 11,4,11,5,11,59, 11,4,3,4,11,59, 11,4,3,6,4,75, 11,3,10,4,11,60, 11,3,10,5,11,60, + 11,3,4,6,4,76, 11,2,9,1,6,93, 11,2,9,4,11,61, 11,2,9,5,11,61, 11,2,8,1,7,93, 11,2,8,4,11,61, 11,2,7,1,8,93, 11,2,7,4,11,61, + 11,2,6,1,9,93, 11,2,6,4,11,61, 11,2,5,1,10,93, 11,2,5,4,11,61, 11,2,4,1,11,93, 11,2,4,4,11,61, 11,2,4,6,4,77, 12,9,11,1,4,86, + 12,9,11,3,4,86, 12,9,11,5,12,54, 12,9,10,1,5,86, 12,9,10,3,5,86, 12,9,9,1,6,86, 12,9,9,3,6,86, 12,9,8,1,7,86, 12,9,8,3,7,86, + 12,9,7,1,8,86, 12,9,7,3,8,86, 12,9,6,1,9,86, 12,9,6,3,9,86, 12,9,5,1,10,86, 12,9,5,3,10,86, 12,9,4,1,11,86, 12,9,4,3,11,86, + 12,9,3,1,12,86, 12,9,3,3,12,86, 12,9,2,1,13,86, 12,9,2,3,13,86, 12,9,2,6,3,70, 12,8,11,1,4,87, 12,8,11,5,12,55, 12,8,10,1,5,87, + 12,8,9,1,6,87, 12,8,8,1,7,87, 12,8,7,1,8,87, 12,8,6,1,9,87, 12,8,5,1,10,87, 12,8,4,1,11,87, 12,8,3,1,12,87, 12,8,2,1,13,87, + 12,8,1,1,14,87, 12,8,1,3,14,87, 12,8,1,6,3,71, 12,7,11,5,12,56, 12,7,1,6,3,72, 12,6,11,5,12,57, 12,6,1,4,12,57, 12,6,1,6,3,73, + 12,5,11,5,12,58, 12,5,2,4,12,58, 12,5,2,6,3,74, 12,4,11,4,12,59, 12,4,11,5,12,59, 12,4,3,4,12,59, 12,4,3,6,3,75, 12,3,10,4,12,60, + 12,3,10,5,12,60, 12,3,9,4,12,60, 12,3,8,4,12,60, 12,3,7,4,12,60, 12,3,6,4,12,60, 12,3,5,4,12,60, 12,3,4,4,12,60, 12,3,4,6,3,76, + 13,7,11,1,4,88, 13,7,11,3,4,88, 13,7,11,5,13,56, 13,7,10,1,5,88, 13,7,10,3,5,88, 13,7,9,1,6,88, 13,7,9,3,6,88, 13,7,8,1,7,88, + 13,7,8,3,7,88, 13,7,7,1,8,88, 13,7,7,3,8,88, 13,7,6,1,9,88, 13,7,6,3,9,88, 13,7,5,1,10,88, 13,7,5,3,10,88, 13,7,4,1,11,88, + 13,7,4,3,11,88, 13,7,3,1,12,88, 13,7,3,3,12,88, 13,7,2,1,13,88, 13,7,2,3,13,88, 13,7,1,1,14,88, 13,7,1,3,14,88, 13,7,1,6,2,72, + 13,6,11,1,4,89, 13,6,11,5,13,57, 13,6,10,1,5,89, 13,6,9,1,6,89, 13,6,8,1,7,89, 13,6,7,1,8,89, 13,6,6,1,9,89, 13,6,5,1,10,89, + 13,6,4,1,11,89, 13,6,3,1,12,89, 13,6,2,1,13,89, 13,6,1,1,14,89, 13,6,1,4,13,57, 13,6,1,6,2,73, 13,5,11,5,13,58, 13,5,2,4,13,58, + 13,5,2,6,2,74, 13,4,11,4,13,59, 13,4,11,5,13,59, 13,4,3,4,13,59, 13,4,3,6,2,75, 13,3,10,1,5,92, 13,3,10,4,13,60, 13,3,10,5,13,60, + 13,3,9,1,6,92, 13,3,9,4,13,60, 13,3,8,1,7,92, 13,3,8,4,13,60, 13,3,7,1,8,92, 13,3,7,4,13,60, 13,3,6,1,9,92, 13,3,6,4,13,60, + 13,3,5,1,10,92, 13,3,5,4,13,60, 13,3,4,1,11,92, 13,3,4,4,13,60, 13,3,4,6,2,76, 14,5,11,1,4,90, 14,5,11,3,4,90, 14,5,11,5,14,58, + 14,5,10,1,5,90, 14,5,10,3,5,90, 14,5,9,1,6,90, 14,5,9,3,6,90, 14,5,8,1,7,90, 14,5,8,3,7,90, 14,5,7,1,8,90, 14,5,7,3,8,90, + 14,5,6,1,9,90, 14,5,6,3,9,90, 14,5,5,1,10,90, 14,5,5,3,10,90, 14,5,4,1,11,90, 14,5,4,3,11,90, 14,5,3,1,12,90, 14,5,3,3,12,90, + 14,5,2,1,13,90, 14,5,2,3,13,90, 14,5,2,4,14,58, 14,5,2,6,1,74, 14,4,11,1,4,91, 14,4,11,4,14,59, 14,4,11,5,14,59, 14,4,10,1,5,91, + 14,4,10,4,14,59, 14,4,9,1,6,91, 14,4,9,4,14,59, 14,4,8,1,7,91, 14,4,8,4,14,59, 14,4,7,1,8,91, 14,4,7,4,14,59, 14,4,6,1,9,91, + 14,4,6,4,14,59, 14,4,5,1,10,91, 14,4,5,4,14,59, 14,4,4,1,11,91, 14,4,4,4,14,59, 14,4,3,1,12,91, 14,4,3,4,14,59, 14,4,3,6,1,75, + }, + }, + }, +} diff --git a/assets/voxels/waiter.lua b/assets/voxels/waiter.lua new file mode 100644 index 0000000..e24df5a --- /dev/null +++ b/assets/voxels/waiter.lua @@ -0,0 +1,290 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "waiter" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "waiter", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1614, + count = 1016, + faces = { + 1,9,13,2,3,38, 1,9,13,3,3,38, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,12,3,4,38, 1,9,11,2,5,38, 1,9,11,3,5,38, 1,9,10,2,6,38, + 1,9,10,3,6,38, 1,9,9,2,7,38, 1,9,9,3,7,38, 1,9,8,2,8,38, 1,9,8,3,8,38, 1,9,7,2,9,38, 1,9,7,3,9,38, 1,9,6,2,10,38, + 1,9,6,3,10,38, 1,9,5,2,11,38, 1,9,5,3,11,38, 1,9,4,2,12,38, 1,9,4,3,12,38, 1,9,3,2,13,38, 1,9,3,3,13,38, 1,9,3,4,1,6, + 1,9,3,6,14,22, 1,8,13,2,3,39, 1,8,13,4,1,7, 1,8,13,5,1,7, 1,8,12,2,4,39, 1,8,12,4,1,7, 1,8,11,2,5,39, 1,8,11,4,1,7, + 1,8,10,2,6,39, 1,8,10,4,1,7, 1,8,9,2,7,39, 1,8,9,4,1,7, 1,8,8,2,8,39, 1,8,8,4,1,7, 1,8,7,2,9,39, 1,8,7,4,1,7, + 1,8,6,2,10,39, 1,8,6,4,1,7, 1,8,5,2,11,39, 1,8,5,4,1,7, 1,8,4,2,12,39, 1,8,4,4,1,7, 1,8,4,6,14,23, 1,5,11,2,5,42, + 1,5,11,3,5,42, 1,5,11,4,14,26, 1,5,11,5,14,26, 1,5,10,2,6,42, 1,5,10,3,6,42, 1,5,9,2,7,42, 1,5,9,3,7,42, 1,5,8,2,8,42, + 1,5,8,3,8,42, 1,5,7,2,9,42, 1,5,7,3,9,42, 1,5,6,2,10,42, 1,5,6,3,10,42, 1,5,5,2,11,42, 1,5,5,3,11,42, 1,5,4,2,12,42, + 1,5,4,3,12,42, 1,5,4,6,14,26, 1,4,10,2,6,43, 1,4,10,5,1,11, 1,4,9,2,7,43, 1,4,8,2,8,43, 1,4,7,2,9,43, 1,4,6,2,10,43, + 1,4,5,2,11,43, 1,4,4,2,12,43, 1,4,4,6,14,27, 1,3,10,2,6,44, 1,3,10,4,1,12, 1,3,10,5,1,12, 1,3,9,2,7,44, 1,3,9,4,1,12, + 1,3,8,2,8,44, 1,3,8,4,1,12, 1,3,7,2,9,44, 1,3,7,4,1,12, 1,3,6,2,10,44, 1,3,6,4,1,12, 1,3,5,2,11,44, 1,3,5,4,1,12, + 1,3,4,2,12,44, 1,3,4,4,1,12, 1,3,4,6,1,12, 2,11,13,2,3,36, 2,11,13,3,3,36, 2,11,13,5,13,20, 2,11,12,2,4,36, 2,11,12,3,4,36, + 2,11,11,2,5,36, 2,11,11,3,5,36, 2,11,10,2,6,36, 2,11,10,3,6,36, 2,11,9,2,7,36, 2,11,9,3,7,36, 2,11,8,2,8,36, 2,11,8,3,8,36, + 2,11,7,2,9,36, 2,11,7,3,9,36, 2,11,6,2,10,36, 2,11,6,3,10,36, 2,11,5,2,11,36, 2,11,5,3,11,36, 2,11,4,2,12,36, 2,11,4,3,12,36, + 2,11,3,2,13,36, 2,11,3,3,13,36, 2,11,3,6,13,20, 2,10,13,2,3,37, 2,10,13,5,2,5, 2,10,12,2,4,37, 2,10,11,2,5,37, 2,10,10,2,6,37, + 2,10,9,2,7,37, 2,10,8,2,8,37, 2,10,7,2,9,37, 2,10,6,2,10,37, 2,10,5,2,11,37, 2,10,4,2,12,37, 2,10,3,2,13,37, 2,10,3,6,13,21, + 2,9,13,5,2,6, 2,9,3,4,2,6, 2,9,3,6,13,22, 2,8,13,5,2,7, 2,8,4,4,2,7, 2,8,4,6,13,23, 2,7,13,2,3,40, 2,7,13,4,2,8, + 2,7,13,5,2,8, 2,7,12,2,4,40, 2,7,11,2,5,40, 2,7,10,2,6,40, 2,7,9,2,7,40, 2,7,8,2,8,40, 2,7,7,2,9,40, 2,7,6,2,10,40, + 2,7,5,2,11,40, 2,7,5,6,13,24, 2,6,12,2,4,41, 2,6,12,4,13,25, 2,6,12,5,13,25, 2,6,11,2,5,41, 2,6,10,2,6,41, 2,6,9,2,7,41, + 2,6,8,2,8,41, 2,6,7,2,9,41, 2,6,6,2,10,41, 2,6,5,2,11,41, 2,6,4,2,12,41, 2,6,4,3,12,41, 2,6,4,6,13,25, 2,5,11,4,2,10, + 2,5,11,5,2,10, 2,5,4,6,13,26, 2,4,10,5,2,11, 2,4,4,6,13,27, 2,3,10,5,2,12, 2,3,4,4,2,12, 2,3,4,6,13,28, 2,2,11,2,5,45, + 2,2,11,3,5,45, 2,2,11,4,2,13, 2,2,11,5,2,13, 2,2,10,2,6,45, 2,2,10,4,2,13, 2,2,9,2,7,45, 2,2,9,4,2,13, 2,2,8,2,8,45, + 2,2,8,4,2,13, 2,2,7,2,9,45, 2,2,7,4,2,13, 2,2,6,2,10,45, 2,2,6,4,2,13, 2,2,5,2,11,45, 2,2,5,4,2,13, 2,2,5,6,2,13, + 3,14,13,2,3,33, 3,14,13,3,3,33, 3,14,13,5,3,1, 3,14,12,2,4,33, 3,14,12,3,4,33, 3,14,11,2,5,33, 3,14,11,3,5,33, 3,14,10,2,6,33, + 3,14,10,3,6,33, 3,14,9,2,7,33, 3,14,9,3,7,33, 3,14,8,2,8,33, 3,14,8,3,8,33, 3,14,7,2,9,33, 3,14,7,3,9,33, 3,14,6,2,10,33, + 3,14,6,3,10,33, 3,14,5,2,11,33, 3,14,5,3,11,33, 3,14,4,2,12,33, 3,14,4,3,12,33, 3,14,4,6,12,17, 3,13,13,2,3,34, 3,13,13,5,3,2, + 3,13,12,2,4,34, 3,13,11,2,5,34, 3,13,10,2,6,34, 3,13,9,2,7,34, 3,13,8,2,8,34, 3,13,7,2,9,34, 3,13,6,2,10,34, 3,13,5,2,11,34, + 3,13,4,2,12,34, 3,13,4,6,12,18, 3,12,13,2,3,35, 3,12,13,5,3,3, 3,12,12,2,4,35, 3,12,11,2,5,35, 3,12,10,2,6,35, 3,12,9,2,7,35, + 3,12,8,2,8,35, 3,12,7,2,9,35, 3,12,6,2,10,35, 3,12,5,2,11,35, 3,12,4,2,12,35, 3,12,4,6,12,19, 3,11,13,5,3,4, 3,11,3,3,13,36, + 3,11,3,6,12,20, 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,3,4,3,6, 3,9,3,6,12,22, 3,8,13,5,3,7, 3,8,4,4,3,7, + 3,8,4,6,12,23, 3,7,13,4,3,8, 3,7,13,5,3,8, 3,7,5,6,12,24, 3,6,12,4,3,9, 3,6,12,5,3,9, 3,6,4,3,12,41, 3,6,4,6,12,25, + 3,5,11,4,3,10, 3,5,11,5,3,10, 3,5,4,6,12,26, 3,4,10,5,3,11, 3,4,4,6,12,27, 3,3,10,5,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, + 3,2,11,3,5,45, 3,2,11,5,3,13, 3,2,5,4,3,13, 3,2,5,6,12,29, 3,1,11,2,5,46, 3,1,11,4,3,14, 3,1,11,5,3,14, 3,1,10,2,6,46, + 3,1,10,4,3,14, 3,1,9,2,7,46, 3,1,9,4,3,14, 3,1,8,2,8,46, 3,1,8,4,3,14, 3,1,7,2,9,46, 3,1,7,4,3,14, 3,1,6,2,10,46, + 3,1,6,4,3,14, 3,1,6,6,12,30, 4,15,12,2,4,32, 4,15,12,3,4,32, 4,15,12,5,4,0, 4,15,11,2,5,32, 4,15,11,3,5,32, 4,15,10,2,6,32, + 4,15,10,3,6,32, 4,15,9,2,7,32, 4,15,9,3,7,32, 4,15,8,2,8,32, 4,15,8,3,8,32, 4,15,7,2,9,32, 4,15,7,3,9,32, 4,15,6,2,10,32, + 4,15,6,3,10,32, 4,15,5,2,11,32, 4,15,5,3,11,32, 4,15,5,6,11,16, 4,14,13,3,3,33, 4,14,13,5,4,1, 4,14,4,3,12,33, 4,14,4,6,11,17, + 4,13,13,5,4,2, 4,13,4,6,11,18, 4,12,13,5,4,3, 4,12,4,6,11,19, 4,11,13,5,4,4, 4,11,3,3,13,36, 4,11,3,6,11,20, 4,10,13,5,4,5, + 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,4,4,6, 4,9,3,6,11,22, 4,8,13,5,4,7, 4,8,4,4,4,7, 4,8,4,6,11,23, 4,7,13,4,4,8, + 4,7,13,5,4,8, 4,7,5,6,11,24, 4,6,12,4,4,9, 4,6,12,5,4,9, 4,6,4,3,12,41, 4,6,4,6,11,25, 4,5,11,4,4,10, 4,5,11,5,4,10, + 4,5,4,6,11,26, 4,4,10,5,4,11, 4,4,4,6,11,27, 4,3,10,5,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,11,3,5,45, 4,2,11,5,4,13, + 4,2,5,4,4,13, 4,2,5,6,11,29, 4,1,11,4,4,14, 4,1,11,5,4,14, 4,1,6,4,4,14, 4,1,6,6,11,30, 4,0,10,2,6,47, 4,0,10,5,4,15, + 4,0,9,2,7,47, 4,0,8,2,8,47, 4,0,7,2,9,47, 4,0,7,6,11,31, 5,15,12,3,4,32, 5,15,12,5,5,0, 5,15,11,3,5,32, 5,15,10,3,6,32, + 5,15,9,3,7,32, 5,15,8,3,8,32, 5,15,7,3,9,32, 5,15,6,3,10,32, 5,15,5,3,11,32, 5,15,5,6,10,16, 5,14,13,3,3,33, 5,14,13,5,5,1, + 5,14,4,3,12,33, 5,14,4,6,10,17, 5,13,13,5,5,2, 5,13,4,6,10,18, 5,12,13,5,5,3, 5,12,4,6,10,19, 5,11,13,5,5,4, 5,11,3,3,13,36, + 5,11,3,6,10,20, 5,10,13,5,5,5, 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,3,4,5,6, 5,9,3,6,10,22, 5,8,13,5,5,7, 5,8,4,4,5,7, + 5,8,4,6,10,23, 5,7,13,4,5,8, 5,7,13,5,5,8, 5,7,5,6,10,24, 5,6,12,4,5,9, 5,6,12,5,5,9, 5,6,4,3,12,41, 5,6,4,6,10,25, + 5,5,11,4,5,10, 5,5,11,5,5,10, 5,5,4,6,10,26, 5,4,10,5,5,11, 5,4,4,6,10,27, 5,3,10,5,5,12, 5,3,4,4,5,12, 5,3,4,6,10,28, + 5,2,11,3,5,45, 5,2,11,5,5,13, 5,2,5,4,5,13, 5,2,5,6,10,29, 5,1,11,4,5,14, 5,1,11,5,5,14, 5,1,6,4,5,14, 5,1,6,6,10,30, + 5,0,10,5,5,15, 5,0,7,6,10,31, 6,15,12,3,4,32, 6,15,12,5,6,0, 6,15,11,3,5,32, 6,15,10,3,6,32, 6,15,9,3,7,32, 6,15,8,3,8,32, + 6,15,7,3,9,32, 6,15,6,3,10,32, 6,15,5,3,11,32, 6,15,5,6,9,16, 6,14,13,3,3,33, 6,14,13,5,6,1, 6,14,4,3,12,33, 6,14,4,6,9,17, + 6,13,13,5,6,2, 6,13,4,6,9,18, 6,12,13,5,6,3, 6,12,4,6,9,19, 6,11,13,5,6,4, 6,11,3,3,13,36, 6,11,3,6,9,20, 6,10,13,5,6,5, + 6,10,3,6,9,21, 6,9,13,5,6,6, 6,9,3,4,6,6, 6,9,3,6,9,22, 6,8,13,5,6,7, 6,8,4,4,6,7, 6,8,4,6,9,23, 6,7,13,4,6,8, + 6,7,13,5,6,8, 6,7,5,6,9,24, 6,6,12,4,6,9, 6,6,12,5,6,9, 6,6,4,3,12,41, 6,6,4,6,9,25, 6,5,11,4,6,10, 6,5,11,5,6,10, + 6,5,4,6,9,26, 6,4,10,5,6,11, 6,4,4,6,9,27, 6,3,10,5,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,11,3,5,45, 6,2,11,5,6,13, + 6,2,5,4,6,13, 6,2,5,6,9,29, 6,1,11,4,6,14, 6,1,11,5,6,14, 6,1,6,4,6,14, 6,1,6,6,9,30, 6,0,10,1,6,47, 6,0,10,5,6,15, + 6,0,9,1,7,47, 6,0,8,1,8,47, 6,0,7,1,9,47, 6,0,7,6,9,31, 7,15,12,3,4,32, 7,15,12,5,7,0, 7,15,11,3,5,32, 7,15,10,3,6,32, + 7,15,9,3,7,32, 7,15,8,3,8,32, 7,15,7,3,9,32, 7,15,6,3,10,32, 7,15,5,3,11,32, 7,15,5,6,8,16, 7,14,13,3,3,33, 7,14,13,5,7,1, + 7,14,4,3,12,33, 7,14,4,6,8,17, 7,13,13,5,7,2, 7,13,4,6,8,18, 7,12,13,5,7,3, 7,12,4,6,8,19, 7,11,13,5,7,4, 7,11,3,3,13,36, + 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,3,4,7,6, 7,9,3,6,8,22, 7,8,13,5,7,7, 7,8,4,4,7,7, + 7,8,4,6,8,23, 7,7,13,4,7,8, 7,7,13,5,7,8, 7,7,5,6,8,24, 7,6,12,4,7,9, 7,6,12,5,7,9, 7,6,4,3,12,41, 7,6,4,6,8,25, + 7,5,11,4,7,10, 7,5,11,5,7,10, 7,5,4,6,8,26, 7,4,10,5,7,11, 7,4,4,6,8,27, 7,3,10,5,7,12, 7,3,4,4,7,12, 7,3,4,6,8,28, + 7,2,11,3,5,45, 7,2,11,5,7,13, 7,2,5,4,7,13, 7,2,5,6,8,29, 7,1,11,4,7,14, 7,1,11,5,7,14, 7,1,10,4,7,14, 7,1,9,4,7,14, + 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,6,6,8,30, 8,15,12,3,4,32, 8,15,12,5,8,0, 8,15,11,3,5,32, 8,15,10,3,6,32, + 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,5,3,11,32, 8,15,5,6,7,16, 8,14,13,3,3,33, 8,14,13,5,8,1, + 8,14,4,3,12,33, 8,14,4,6,7,17, 8,13,13,5,8,2, 8,13,4,6,7,18, 8,12,13,5,8,3, 8,12,4,6,7,19, 8,11,13,5,8,4, 8,11,3,3,13,36, + 8,11,3,6,7,20, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,4,8,6, 8,9,3,6,7,22, 8,8,13,5,8,7, 8,8,4,4,8,7, + 8,8,4,6,7,23, 8,7,13,4,8,8, 8,7,13,5,8,8, 8,7,5,6,7,24, 8,6,12,4,8,9, 8,6,12,5,8,9, 8,6,4,3,12,41, 8,6,4,6,7,25, + 8,5,11,4,8,10, 8,5,11,5,8,10, 8,5,4,6,7,26, 8,4,10,5,8,11, 8,4,4,6,7,27, 8,3,10,5,8,12, 8,3,4,4,8,12, 8,3,4,6,7,28, + 8,2,11,3,5,45, 8,2,11,5,8,13, 8,2,5,4,8,13, 8,2,5,6,7,29, 8,1,11,4,8,14, 8,1,11,5,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, + 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,6,6,7,30, 9,15,12,3,4,32, 9,15,12,5,9,0, 9,15,11,3,5,32, 9,15,10,3,6,32, + 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, 9,15,6,3,10,32, 9,15,5,3,11,32, 9,15,5,6,6,16, 9,14,13,3,3,33, 9,14,13,5,9,1, + 9,14,4,3,12,33, 9,14,4,6,6,17, 9,13,13,5,9,2, 9,13,4,6,6,18, 9,12,13,5,9,3, 9,12,4,6,6,19, 9,11,13,5,9,4, 9,11,3,3,13,36, + 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, 9,9,3,4,9,6, 9,9,3,6,6,22, 9,8,13,5,9,7, 9,8,4,4,9,7, + 9,8,4,6,6,23, 9,7,13,4,9,8, 9,7,13,5,9,8, 9,7,5,6,6,24, 9,6,12,4,9,9, 9,6,12,5,9,9, 9,6,4,3,12,41, 9,6,4,6,6,25, + 9,5,11,4,9,10, 9,5,11,5,9,10, 9,5,4,6,6,26, 9,4,10,5,9,11, 9,4,4,6,6,27, 9,3,10,5,9,12, 9,3,4,4,9,12, 9,3,4,6,6,28, + 9,2,11,3,5,45, 9,2,11,5,9,13, 9,2,5,4,9,13, 9,2,5,6,6,29, 9,1,11,4,9,14, 9,1,11,5,9,14, 9,1,6,4,9,14, 9,1,6,6,6,30, + 9,0,10,2,6,47, 9,0,10,5,9,15, 9,0,9,2,7,47, 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,7,6,6,31, 10,15,12,3,4,32, 10,15,12,5,10,0, + 10,15,11,3,5,32, 10,15,10,3,6,32, 10,15,9,3,7,32, 10,15,8,3,8,32, 10,15,7,3,9,32, 10,15,6,3,10,32, 10,15,5,3,11,32, 10,15,5,6,5,16, + 10,14,13,3,3,33, 10,14,13,5,10,1, 10,14,4,3,12,33, 10,14,4,6,5,17, 10,13,13,5,10,2, 10,13,4,6,5,18, 10,12,13,5,10,3, 10,12,4,6,5,19, + 10,11,13,5,10,4, 10,11,3,3,13,36, 10,11,3,6,5,20, 10,10,13,5,10,5, 10,10,3,6,5,21, 10,9,13,5,10,6, 10,9,3,4,10,6, 10,9,3,6,5,22, + 10,8,13,5,10,7, 10,8,4,4,10,7, 10,8,4,6,5,23, 10,7,13,4,10,8, 10,7,13,5,10,8, 10,7,5,6,5,24, 10,6,12,4,10,9, 10,6,12,5,10,9, + 10,6,4,3,12,41, 10,6,4,6,5,25, 10,5,11,4,10,10, 10,5,11,5,10,10, 10,5,4,6,5,26, 10,4,10,5,10,11, 10,4,4,6,5,27, 10,3,10,5,10,12, + 10,3,4,4,10,12, 10,3,4,6,5,28, 10,2,11,3,5,45, 10,2,11,5,10,13, 10,2,5,4,10,13, 10,2,5,6,5,29, 10,1,11,4,10,14, 10,1,11,5,10,14, + 10,1,6,4,10,14, 10,1,6,6,5,30, 10,0,10,5,10,15, 10,0,7,6,5,31, 11,15,12,1,4,32, 11,15,12,3,4,32, 11,15,12,5,11,0, 11,15,11,1,5,32, + 11,15,11,3,5,32, 11,15,10,1,6,32, 11,15,10,3,6,32, 11,15,9,1,7,32, 11,15,9,3,7,32, 11,15,8,1,8,32, 11,15,8,3,8,32, 11,15,7,1,9,32, + 11,15,7,3,9,32, 11,15,6,1,10,32, 11,15,6,3,10,32, 11,15,5,1,11,32, 11,15,5,3,11,32, 11,15,5,6,4,16, 11,14,13,3,3,33, 11,14,13,5,11,1, + 11,14,4,3,12,33, 11,14,4,6,4,17, 11,13,13,5,11,2, 11,13,4,6,4,18, 11,12,13,5,11,3, 11,12,4,6,4,19, 11,11,13,5,11,4, 11,11,3,3,13,36, + 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,4,11,6, 11,9,3,6,4,22, 11,8,13,5,11,7, 11,8,4,4,11,7, + 11,8,4,6,4,23, 11,7,13,4,11,8, 11,7,13,5,11,8, 11,7,5,6,4,24, 11,6,12,4,11,9, 11,6,12,5,11,9, 11,6,4,3,12,41, 11,6,4,6,4,25, + 11,5,11,4,11,10, 11,5,11,5,11,10, 11,5,4,6,4,26, 11,4,10,5,11,11, 11,4,4,6,4,27, 11,3,10,5,11,12, 11,3,4,4,11,12, 11,3,4,6,4,28, + 11,2,11,3,5,45, 11,2,11,5,11,13, 11,2,5,4,11,13, 11,2,5,6,4,29, 11,1,11,4,11,14, 11,1,11,5,11,14, 11,1,6,4,11,14, 11,1,6,6,4,30, + 11,0,10,1,6,47, 11,0,10,5,11,15, 11,0,9,1,7,47, 11,0,8,1,8,47, 11,0,7,1,9,47, 11,0,7,6,4,31, 12,14,13,1,3,33, 12,14,13,3,3,33, + 12,14,13,5,12,1, 12,14,12,1,4,33, 12,14,12,3,4,33, 12,14,11,1,5,33, 12,14,11,3,5,33, 12,14,10,1,6,33, 12,14,10,3,6,33, 12,14,9,1,7,33, + 12,14,9,3,7,33, 12,14,8,1,8,33, 12,14,8,3,8,33, 12,14,7,1,9,33, 12,14,7,3,9,33, 12,14,6,1,10,33, 12,14,6,3,10,33, 12,14,5,1,11,33, + 12,14,5,3,11,33, 12,14,4,1,12,33, 12,14,4,3,12,33, 12,14,4,6,3,17, 12,13,13,1,3,34, 12,13,13,5,12,2, 12,13,12,1,4,34, 12,13,11,1,5,34, + 12,13,10,1,6,34, 12,13,9,1,7,34, 12,13,8,1,8,34, 12,13,7,1,9,34, 12,13,6,1,10,34, 12,13,5,1,11,34, 12,13,4,1,12,34, 12,13,4,6,3,18, + 12,12,13,1,3,35, 12,12,13,5,12,3, 12,12,12,1,4,35, 12,12,11,1,5,35, 12,12,10,1,6,35, 12,12,9,1,7,35, 12,12,8,1,8,35, 12,12,7,1,9,35, + 12,12,6,1,10,35, 12,12,5,1,11,35, 12,12,4,1,12,35, 12,12,4,6,3,19, 12,11,13,5,12,4, 12,11,3,3,13,36, 12,11,3,6,3,20, 12,10,13,5,12,5, + 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,3,4,12,6, 12,9,3,6,3,22, 12,8,13,5,12,7, 12,8,4,4,12,7, 12,8,4,6,3,23, 12,7,13,4,12,8, + 12,7,13,5,12,8, 12,7,5,6,3,24, 12,6,12,4,12,9, 12,6,12,5,12,9, 12,6,4,3,12,41, 12,6,4,6,3,25, 12,5,11,4,12,10, 12,5,11,5,12,10, + 12,5,4,6,3,26, 12,4,10,5,12,11, 12,4,4,6,3,27, 12,3,10,5,12,12, 12,3,4,4,12,12, 12,3,4,6,3,28, 12,2,11,3,5,45, 12,2,11,5,12,13, + 12,2,5,4,12,13, 12,2,5,6,3,29, 12,1,11,1,5,46, 12,1,11,4,12,14, 12,1,11,5,12,14, 12,1,10,1,6,46, 12,1,10,4,12,14, 12,1,9,1,7,46, + 12,1,9,4,12,14, 12,1,8,1,8,46, 12,1,8,4,12,14, 12,1,7,1,9,46, 12,1,7,4,12,14, 12,1,6,1,10,46, 12,1,6,4,12,14, 12,1,6,6,3,30, + 13,11,13,1,3,36, 13,11,13,3,3,36, 13,11,13,5,2,20, 13,11,12,1,4,36, 13,11,12,3,4,36, 13,11,11,1,5,36, 13,11,11,3,5,36, 13,11,10,1,6,36, + 13,11,10,3,6,36, 13,11,9,1,7,36, 13,11,9,3,7,36, 13,11,8,1,8,36, 13,11,8,3,8,36, 13,11,7,1,9,36, 13,11,7,3,9,36, 13,11,6,1,10,36, + 13,11,6,3,10,36, 13,11,5,1,11,36, 13,11,5,3,11,36, 13,11,4,1,12,36, 13,11,4,3,12,36, 13,11,3,1,13,36, 13,11,3,3,13,36, 13,11,3,6,2,20, + 13,10,13,1,3,37, 13,10,13,5,13,5, 13,10,12,1,4,37, 13,10,11,1,5,37, 13,10,10,1,6,37, 13,10,9,1,7,37, 13,10,8,1,8,37, 13,10,7,1,9,37, + 13,10,6,1,10,37, 13,10,5,1,11,37, 13,10,4,1,12,37, 13,10,3,1,13,37, 13,10,3,6,2,21, 13,9,13,5,13,6, 13,9,3,4,13,6, 13,9,3,6,2,22, + 13,8,13,5,13,7, 13,8,4,4,13,7, 13,8,4,6,2,23, 13,7,13,1,3,40, 13,7,13,4,13,8, 13,7,13,5,13,8, 13,7,12,1,4,40, 13,7,11,1,5,40, + 13,7,10,1,6,40, 13,7,9,1,7,40, 13,7,8,1,8,40, 13,7,7,1,9,40, 13,7,6,1,10,40, 13,7,5,1,11,40, 13,7,5,6,2,24, 13,6,12,1,4,41, + 13,6,12,4,2,25, 13,6,12,5,2,25, 13,6,11,1,5,41, 13,6,10,1,6,41, 13,6,9,1,7,41, 13,6,8,1,8,41, 13,6,7,1,9,41, 13,6,6,1,10,41, + 13,6,5,1,11,41, 13,6,4,1,12,41, 13,6,4,3,12,41, 13,6,4,6,2,25, 13,5,11,4,13,10, 13,5,11,5,13,10, 13,5,4,6,2,26, 13,4,10,5,13,11, + 13,4,4,6,2,27, 13,3,10,5,13,12, 13,3,4,4,13,12, 13,3,4,6,2,28, 13,2,11,1,5,45, 13,2,11,3,5,45, 13,2,11,4,13,13, 13,2,11,5,13,13, + 13,2,10,1,6,45, 13,2,10,4,13,13, 13,2,9,1,7,45, 13,2,9,4,13,13, 13,2,8,1,8,45, 13,2,8,4,13,13, 13,2,7,1,9,45, 13,2,7,4,13,13, + 13,2,6,1,10,45, 13,2,6,4,13,13, 13,2,5,1,11,45, 13,2,5,4,13,13, 13,2,5,6,13,13, 14,9,13,1,3,38, 14,9,13,3,3,38, 14,9,13,5,14,6, + 14,9,12,1,4,38, 14,9,12,3,4,38, 14,9,11,1,5,38, 14,9,11,3,5,38, 14,9,10,1,6,38, 14,9,10,3,6,38, 14,9,9,1,7,38, 14,9,9,3,7,38, + 14,9,8,1,8,38, 14,9,8,3,8,38, 14,9,7,1,9,38, 14,9,7,3,9,38, 14,9,6,1,10,38, 14,9,6,3,10,38, 14,9,5,1,11,38, 14,9,5,3,11,38, + 14,9,4,1,12,38, 14,9,4,3,12,38, 14,9,3,1,13,38, 14,9,3,3,13,38, 14,9,3,4,14,6, 14,9,3,6,1,22, 14,8,13,1,3,39, 14,8,13,4,14,7, + 14,8,13,5,14,7, 14,8,12,1,4,39, 14,8,12,4,14,7, 14,8,11,1,5,39, 14,8,11,4,14,7, 14,8,10,1,6,39, 14,8,10,4,14,7, 14,8,9,1,7,39, + 14,8,9,4,14,7, 14,8,8,1,8,39, 14,8,8,4,14,7, 14,8,7,1,9,39, 14,8,7,4,14,7, 14,8,6,1,10,39, 14,8,6,4,14,7, 14,8,5,1,11,39, + 14,8,5,4,14,7, 14,8,4,1,12,39, 14,8,4,4,14,7, 14,8,4,6,1,23, 14,5,11,1,5,42, 14,5,11,3,5,42, 14,5,11,4,1,26, 14,5,11,5,1,26, + 14,5,10,1,6,42, 14,5,10,3,6,42, 14,5,9,1,7,42, 14,5,9,3,7,42, 14,5,8,1,8,42, 14,5,8,3,8,42, 14,5,7,1,9,42, 14,5,7,3,9,42, + 14,5,6,1,10,42, 14,5,6,3,10,42, 14,5,5,1,11,42, 14,5,5,3,11,42, 14,5,4,1,12,42, 14,5,4,3,12,42, 14,5,4,6,1,26, 14,4,10,1,6,43, + 14,4,10,5,14,11, 14,4,9,1,7,43, 14,4,8,1,8,43, 14,4,7,1,9,43, 14,4,6,1,10,43, 14,4,5,1,11,43, 14,4,4,1,12,43, 14,4,4,6,1,27, + 14,3,10,1,6,44, 14,3,10,4,14,12, 14,3,10,5,14,12, 14,3,9,1,7,44, 14,3,9,4,14,12, 14,3,8,1,8,44, 14,3,8,4,14,12, 14,3,7,1,9,44, + 14,3,7,4,14,12, 14,3,6,1,10,44, 14,3,6,4,14,12, 14,3,5,1,11,44, 14,3,5,4,14,12, 14,3,4,1,12,44, 14,3,4,4,14,12, 14,3,4,6,14,12, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1658, + count = 1042, + faces = { + 1,8,12,2,3,87, 1,8,12,3,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,11,3,4,87, 1,8,10,2,5,87, 1,8,10,3,5,87, 1,8,9,2,6,87, + 1,8,9,3,6,87, 1,8,8,2,7,87, 1,8,8,3,7,87, 1,8,7,2,8,87, 1,8,7,3,8,87, 1,8,6,2,9,87, 1,8,6,3,9,87, 1,8,5,2,10,87, + 1,8,5,3,10,87, 1,8,4,2,11,87, 1,8,4,3,11,87, 1,8,3,2,12,87, 1,8,3,3,12,87, 1,8,2,2,13,87, 1,8,2,3,13,87, 1,8,2,4,1,55, + 1,8,2,6,14,71, 1,7,12,2,3,88, 1,7,12,5,1,56, 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, + 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, 1,7,3,2,12,88, 1,7,3,4,1,56, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, + 1,6,12,5,1,57, 1,6,11,2,4,89, 1,6,10,2,5,89, 1,6,9,2,6,89, 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, + 1,6,4,2,11,89, 1,6,4,6,1,57, 1,5,11,2,4,90, 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, 1,5,8,2,7,90, + 1,5,7,2,8,90, 1,5,6,2,9,90, 1,5,5,2,10,90, 1,5,4,2,11,90, 1,5,3,2,12,90, 1,5,3,3,12,90, 1,5,3,6,1,58, 1,4,10,2,5,91, + 1,4,10,5,14,75, 1,4,9,2,6,91, 1,4,8,2,7,91, 1,4,7,2,8,91, 1,4,6,2,9,91, 1,4,5,2,10,91, 1,4,4,2,11,91, 1,4,3,2,12,91, + 1,4,3,6,14,75, 1,3,12,2,3,92, 1,3,12,3,3,92, 1,3,12,4,14,76, 1,3,12,5,14,76, 1,3,11,2,4,92, 1,3,11,3,4,92, 1,3,11,4,14,76, + 1,3,10,2,5,92, 1,3,10,4,14,76, 1,3,9,2,6,92, 1,3,9,4,14,76, 1,3,8,2,7,92, 1,3,8,4,14,76, 1,3,7,2,8,92, 1,3,7,4,14,76, + 1,3,6,2,9,92, 1,3,6,4,14,76, 1,3,5,2,10,92, 1,3,5,4,14,76, 1,3,4,2,11,92, 1,3,4,4,14,76, 1,3,3,2,12,92, 1,3,3,4,14,76, + 1,3,3,6,14,76, 2,10,12,2,3,85, 2,10,12,3,3,85, 2,10,12,5,2,53, 2,10,11,2,4,85, 2,10,11,3,4,85, 2,10,10,2,5,85, 2,10,10,3,5,85, + 2,10,9,2,6,85, 2,10,9,3,6,85, 2,10,8,2,7,85, 2,10,8,3,7,85, 2,10,7,2,8,85, 2,10,7,3,8,85, 2,10,6,2,9,85, 2,10,6,3,9,85, + 2,10,5,2,10,85, 2,10,5,3,10,85, 2,10,4,2,11,85, 2,10,4,3,11,85, 2,10,3,2,12,85, 2,10,3,3,12,85, 2,10,2,2,13,85, 2,10,2,3,13,85, + 2,10,2,6,13,69, 2,9,12,2,3,86, 2,9,12,5,2,54, 2,9,11,2,4,86, 2,9,10,2,5,86, 2,9,9,2,6,86, 2,9,8,2,7,86, 2,9,7,2,8,86, + 2,9,6,2,9,86, 2,9,5,2,10,86, 2,9,4,2,11,86, 2,9,3,2,12,86, 2,9,2,2,13,86, 2,9,2,6,13,70, 2,8,12,5,2,55, 2,8,2,4,2,55, + 2,8,2,6,13,71, 2,7,12,5,2,56, 2,7,3,4,2,56, 2,7,3,6,13,72, 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,4,6,13,73, 2,5,11,4,2,58, + 2,5,11,5,2,58, 2,5,3,3,12,90, 2,5,3,6,13,74, 2,4,10,5,2,59, 2,4,3,6,13,75, 2,3,12,3,3,92, 2,3,12,5,13,76, 2,3,11,3,4,92, + 2,3,3,6,13,76, 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, 2,2,13,5,13,77, 2,2,12,2,3,93, 2,2,12,4,13,77, 2,2,11,2,4,93, + 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, 2,2,9,4,13,77, 2,2,8,2,7,93, 2,2,8,4,13,77, 2,2,7,2,8,93, + 2,2,7,4,13,77, 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, 2,2,5,4,13,77, 2,2,4,2,11,93, 2,2,4,4,13,77, 2,2,3,2,12,93, + 2,2,3,4,13,77, 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, 2,2,2,6,13,77, 3,13,12,2,3,82, 3,13,12,3,3,82, 3,13,12,5,3,50, + 3,13,11,2,4,82, 3,13,11,3,4,82, 3,13,10,2,5,82, 3,13,10,3,5,82, 3,13,9,2,6,82, 3,13,9,3,6,82, 3,13,8,2,7,82, 3,13,8,3,7,82, + 3,13,7,2,8,82, 3,13,7,3,8,82, 3,13,6,2,9,82, 3,13,6,3,9,82, 3,13,5,2,10,82, 3,13,5,3,10,82, 3,13,4,2,11,82, 3,13,4,3,11,82, + 3,13,3,2,12,82, 3,13,3,3,12,82, 3,13,3,6,12,66, 3,12,12,2,3,83, 3,12,12,5,3,51, 3,12,11,2,4,83, 3,12,10,2,5,83, 3,12,9,2,6,83, + 3,12,8,2,7,83, 3,12,7,2,8,83, 3,12,6,2,9,83, 3,12,5,2,10,83, 3,12,4,2,11,83, 3,12,3,2,12,83, 3,12,3,6,12,67, 3,11,12,2,3,84, + 3,11,12,5,3,52, 3,11,11,2,4,84, 3,11,10,2,5,84, 3,11,9,2,6,84, 3,11,8,2,7,84, 3,11,7,2,8,84, 3,11,6,2,9,84, 3,11,5,2,10,84, + 3,11,4,2,11,84, 3,11,3,2,12,84, 3,11,3,6,12,68, 3,10,12,5,3,53, 3,10,2,3,13,85, 3,10,2,6,12,69, 3,9,12,5,3,54, 3,9,2,6,12,70, + 3,8,12,5,3,55, 3,8,2,4,3,55, 3,8,2,6,12,71, 3,7,12,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, 3,6,12,5,3,57, + 3,6,4,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,3,3,12,90, 3,5,3,6,12,74, 3,4,10,5,3,59, 3,4,3,6,12,75, 3,3,12,3,3,92, + 3,3,12,5,3,60, 3,3,11,3,4,92, 3,3,3,6,12,76, 3,2,13,3,2,93, 3,2,13,4,12,77, 3,2,13,5,12,77, 3,2,12,4,12,77, 3,2,11,4,12,77, + 3,2,10,4,12,77, 3,2,9,4,12,77, 3,2,8,4,12,77, 3,2,7,4,12,77, 3,2,6,4,12,77, 3,2,5,4,12,77, 3,2,4,4,12,77, 3,2,3,4,12,77, + 3,2,2,3,13,93, 3,2,2,4,12,77, 3,2,2,6,12,77, 4,14,11,2,4,81, 4,14,11,3,4,81, 4,14,11,5,4,49, 4,14,10,2,5,81, 4,14,10,3,5,81, + 4,14,9,2,6,81, 4,14,9,3,6,81, 4,14,8,2,7,81, 4,14,8,3,7,81, 4,14,7,2,8,81, 4,14,7,3,8,81, 4,14,6,2,9,81, 4,14,6,3,9,81, + 4,14,5,2,10,81, 4,14,5,3,10,81, 4,14,4,2,11,81, 4,14,4,3,11,81, 4,14,4,6,11,65, 4,13,12,3,3,82, 4,13,12,5,4,50, 4,13,3,3,12,82, + 4,13,3,6,11,66, 4,12,12,5,4,51, 4,12,3,6,11,67, 4,11,12,5,4,52, 4,11,3,6,11,68, 4,10,12,5,4,53, 4,10,2,3,13,85, 4,10,2,6,11,69, + 4,9,12,5,4,54, 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,2,4,4,55, 4,8,2,6,11,71, 4,7,12,5,4,56, 4,7,3,4,4,56, 4,7,3,6,11,72, + 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,6,11,73, 4,5,11,4,4,58, 4,5,11,5,4,58, 4,5,3,3,12,90, 4,5,3,6,11,74, 4,4,10,5,4,59, + 4,4,3,6,11,75, 4,3,12,3,3,92, 4,3,12,5,4,60, 4,3,11,3,4,92, 4,3,3,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, + 4,2,2,3,13,93, 4,2,2,6,11,77, 4,1,12,2,3,94, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,2,4,94, 4,1,11,4,4,62, 4,1,10,2,5,94, + 4,1,10,4,4,62, 4,1,9,2,6,94, 4,1,9,4,4,62, 4,1,8,2,7,94, 4,1,8,4,4,62, 4,1,7,2,8,94, 4,1,7,4,4,62, 4,1,6,2,9,94, + 4,1,6,4,4,62, 4,1,5,2,10,94, 4,1,5,4,4,62, 4,1,4,2,11,94, 4,1,4,4,4,62, 4,1,3,2,12,94, 4,1,3,4,4,62, 4,1,2,2,13,94, + 4,1,2,4,4,62, 4,1,2,6,4,62, 5,14,11,3,4,81, 5,14,11,5,5,49, 5,14,10,3,5,81, 5,14,9,3,6,81, 5,14,8,3,7,81, 5,14,7,3,8,81, + 5,14,6,3,9,81, 5,14,5,3,10,81, 5,14,4,3,11,81, 5,14,4,6,10,65, 5,13,12,3,3,82, 5,13,12,5,5,50, 5,13,3,3,12,82, 5,13,3,6,10,66, + 5,12,12,5,5,51, 5,12,3,6,10,67, 5,11,12,5,5,52, 5,11,3,6,10,68, 5,10,12,5,5,53, 5,10,2,3,13,85, 5,10,2,6,10,69, 5,9,12,5,5,54, + 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,2,4,5,55, 5,8,2,6,10,71, 5,7,12,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, + 5,6,12,5,5,57, 5,6,4,6,10,73, 5,5,11,4,5,58, 5,5,11,5,5,58, 5,5,3,3,12,90, 5,5,3,6,10,74, 5,4,10,5,5,59, 5,4,3,6,10,75, + 5,3,12,3,3,92, 5,3,12,5,5,60, 5,3,11,3,4,92, 5,3,3,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,3,13,93, + 5,2,2,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, + 5,1,2,6,5,62, 5,0,11,2,4,95, 5,0,11,5,5,63, 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,4,2,11,95, 5,0,4,5,5,63, + 5,0,3,2,12,95, 5,0,3,6,5,63, 6,14,11,3,4,81, 6,14,11,5,6,49, 6,14,10,3,5,81, 6,14,9,3,6,81, 6,14,8,3,7,81, 6,14,7,3,8,81, + 6,14,6,3,9,81, 6,14,5,3,10,81, 6,14,4,3,11,81, 6,14,4,6,9,65, 6,13,12,3,3,82, 6,13,12,5,6,50, 6,13,3,3,12,82, 6,13,3,6,9,66, + 6,12,12,5,6,51, 6,12,3,6,9,67, 6,11,12,5,6,52, 6,11,3,6,9,68, 6,10,12,5,6,53, 6,10,2,3,13,85, 6,10,2,6,9,69, 6,9,12,5,6,54, + 6,9,2,6,9,70, 6,8,12,5,6,55, 6,8,2,4,6,55, 6,8,2,6,9,71, 6,7,12,5,6,56, 6,7,3,4,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, + 6,6,12,5,6,57, 6,6,4,6,9,73, 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,3,3,12,90, 6,5,3,6,9,74, 6,4,10,5,6,59, 6,4,3,6,9,75, + 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,11,3,4,92, 6,3,3,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, + 6,2,2,6,9,77, 6,1,12,4,6,62, 6,1,12,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, + 6,1,2,6,9,78, 6,0,11,5,6,63, 6,0,9,6,6,63, 6,0,4,5,6,63, 6,0,3,6,6,63, 7,14,11,3,4,81, 7,14,11,5,7,49, 7,14,10,3,5,81, + 7,14,9,3,6,81, 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, 7,14,5,3,10,81, 7,14,4,3,11,81, 7,14,4,6,8,65, 7,13,12,3,3,82, + 7,13,12,5,7,50, 7,13,3,3,12,82, 7,13,3,6,8,66, 7,12,12,5,7,51, 7,12,3,6,8,67, 7,11,12,5,7,52, 7,11,3,6,8,68, 7,10,12,5,7,53, + 7,10,2,3,13,85, 7,10,2,6,8,69, 7,9,12,5,7,54, 7,9,2,6,8,70, 7,8,12,5,7,55, 7,8,2,4,7,55, 7,8,2,6,8,71, 7,7,12,5,7,56, + 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, 7,5,3,3,12,90, + 7,5,3,6,8,74, 7,4,10,5,7,59, 7,4,3,6,8,75, 7,3,12,3,3,92, 7,3,12,5,7,60, 7,3,11,3,4,92, 7,3,3,6,8,76, 7,2,13,3,2,93, + 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, 7,2,2,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, + 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,2,4,7,62, 7,1,2,6,8,78, 7,0,11,5,7,63, 7,0,9,6,7,63, 7,0,4,5,7,63, 7,0,3,6,7,63, + 8,14,11,3,4,81, 8,14,11,5,8,49, 8,14,10,3,5,81, 8,14,9,3,6,81, 8,14,8,3,7,81, 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,5,3,10,81, + 8,14,4,3,11,81, 8,14,4,6,7,65, 8,13,12,3,3,82, 8,13,12,5,8,50, 8,13,3,3,12,82, 8,13,3,6,7,66, 8,12,12,5,8,51, 8,12,3,6,7,67, + 8,11,12,5,8,52, 8,11,3,6,7,68, 8,10,12,5,8,53, 8,10,2,3,13,85, 8,10,2,6,7,69, 8,9,12,5,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, + 8,8,2,4,8,55, 8,8,2,6,7,71, 8,7,12,5,8,56, 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,6,7,73, + 8,5,11,4,8,58, 8,5,11,5,8,58, 8,5,3,3,12,90, 8,5,3,6,7,74, 8,4,10,5,8,59, 8,4,3,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, + 8,3,11,3,4,92, 8,3,3,6,7,76, 8,2,13,3,2,93, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,7,77, 8,1,12,4,8,62, + 8,1,12,5,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, 8,0,11,5,7,79, + 8,0,9,6,7,79, 8,0,4,5,7,79, 8,0,3,6,7,79, 9,14,11,3,4,81, 9,14,11,5,9,49, 9,14,10,3,5,81, 9,14,9,3,6,81, 9,14,8,3,7,81, + 9,14,7,3,8,81, 9,14,6,3,9,81, 9,14,5,3,10,81, 9,14,4,3,11,81, 9,14,4,6,6,65, 9,13,12,3,3,82, 9,13,12,5,9,50, 9,13,3,3,12,82, + 9,13,3,6,6,66, 9,12,12,5,9,51, 9,12,3,6,6,67, 9,11,12,5,9,52, 9,11,3,6,6,68, 9,10,12,5,9,53, 9,10,2,3,13,85, 9,10,2,6,6,69, + 9,9,12,5,9,54, 9,9,2,6,6,70, 9,8,12,5,9,55, 9,8,2,4,9,55, 9,8,2,6,6,71, 9,7,12,5,9,56, 9,7,3,4,9,56, 9,7,3,6,6,72, + 9,6,12,4,9,57, 9,6,12,5,9,57, 9,6,4,6,6,73, 9,5,11,4,9,58, 9,5,11,5,9,58, 9,5,3,3,12,90, 9,5,3,6,6,74, 9,4,10,5,9,59, + 9,4,3,6,6,75, 9,3,12,3,3,92, 9,3,12,5,9,60, 9,3,11,3,4,92, 9,3,3,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, + 9,2,2,3,13,93, 9,2,2,6,6,77, 9,1,12,4,6,78, 9,1,12,5,6,78, 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,5,4,6,78, + 9,1,2,4,6,78, 9,1,2,6,6,78, 9,0,11,5,6,79, 9,0,9,6,6,79, 9,0,4,5,6,79, 9,0,3,6,6,79, 10,14,11,3,4,81, 10,14,11,5,10,49, + 10,14,10,3,5,81, 10,14,9,3,6,81, 10,14,8,3,7,81, 10,14,7,3,8,81, 10,14,6,3,9,81, 10,14,5,3,10,81, 10,14,4,3,11,81, 10,14,4,6,5,65, + 10,13,12,3,3,82, 10,13,12,5,10,50, 10,13,3,3,12,82, 10,13,3,6,5,66, 10,12,12,5,10,51, 10,12,3,6,5,67, 10,11,12,5,10,52, 10,11,3,6,5,68, + 10,10,12,5,10,53, 10,10,2,3,13,85, 10,10,2,6,5,69, 10,9,12,5,10,54, 10,9,2,6,5,70, 10,8,12,5,10,55, 10,8,2,4,10,55, 10,8,2,6,5,71, + 10,7,12,5,10,56, 10,7,3,4,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, 10,6,4,6,5,73, 10,5,11,4,10,58, 10,5,11,5,10,58, + 10,5,3,3,12,90, 10,5,3,6,5,74, 10,4,10,5,10,59, 10,4,3,6,5,75, 10,3,12,3,3,92, 10,3,12,5,10,60, 10,3,11,3,4,92, 10,3,3,6,5,76, + 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,3,13,93, 10,2,2,6,5,77, 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, + 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,2,4,10,62, 10,1,2,6,5,78, 10,0,11,1,4,95, 10,0,11,5,5,79, 10,0,10,1,5,95, + 10,0,9,1,6,95, 10,0,9,6,5,79, 10,0,4,1,11,95, 10,0,4,5,5,79, 10,0,3,1,12,95, 10,0,3,6,5,79, 11,14,11,1,4,81, 11,14,11,3,4,81, + 11,14,11,5,11,49, 11,14,10,1,5,81, 11,14,10,3,5,81, 11,14,9,1,6,81, 11,14,9,3,6,81, 11,14,8,1,7,81, 11,14,8,3,7,81, 11,14,7,1,8,81, + 11,14,7,3,8,81, 11,14,6,1,9,81, 11,14,6,3,9,81, 11,14,5,1,10,81, 11,14,5,3,10,81, 11,14,4,1,11,81, 11,14,4,3,11,81, 11,14,4,6,4,65, + 11,13,12,3,3,82, 11,13,12,5,11,50, 11,13,3,3,12,82, 11,13,3,6,4,66, 11,12,12,5,11,51, 11,12,3,6,4,67, 11,11,12,5,11,52, 11,11,3,6,4,68, + 11,10,12,5,11,53, 11,10,2,3,13,85, 11,10,2,6,4,69, 11,9,12,5,11,54, 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,2,4,11,55, 11,8,2,6,4,71, + 11,7,12,5,11,56, 11,7,3,4,11,56, 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,6,4,73, 11,5,11,4,11,58, 11,5,11,5,11,58, + 11,5,3,3,12,90, 11,5,3,6,4,74, 11,4,10,5,11,59, 11,4,3,6,4,75, 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,11,3,4,92, 11,3,3,6,4,76, + 11,2,13,3,2,93, 11,2,13,4,11,61, 11,2,13,5,11,61, 11,2,2,3,13,93, 11,2,2,6,4,77, 11,1,12,1,3,94, 11,1,12,4,11,62, 11,1,12,5,11,62, + 11,1,11,1,4,94, 11,1,11,4,11,62, 11,1,10,1,5,94, 11,1,10,4,11,62, 11,1,9,1,6,94, 11,1,9,4,11,62, 11,1,8,1,7,94, 11,1,8,4,11,62, + 11,1,7,1,8,94, 11,1,7,4,11,62, 11,1,6,1,9,94, 11,1,6,4,11,62, 11,1,5,1,10,94, 11,1,5,4,11,62, 11,1,4,1,11,94, 11,1,4,4,11,62, + 11,1,3,1,12,94, 11,1,3,4,11,62, 11,1,2,1,13,94, 11,1,2,4,11,62, 11,1,2,6,4,78, 12,13,12,1,3,82, 12,13,12,3,3,82, 12,13,12,5,12,50, + 12,13,11,1,4,82, 12,13,11,3,4,82, 12,13,10,1,5,82, 12,13,10,3,5,82, 12,13,9,1,6,82, 12,13,9,3,6,82, 12,13,8,1,7,82, 12,13,8,3,7,82, + 12,13,7,1,8,82, 12,13,7,3,8,82, 12,13,6,1,9,82, 12,13,6,3,9,82, 12,13,5,1,10,82, 12,13,5,3,10,82, 12,13,4,1,11,82, 12,13,4,3,11,82, + 12,13,3,1,12,82, 12,13,3,3,12,82, 12,13,3,6,3,66, 12,12,12,1,3,83, 12,12,12,5,12,51, 12,12,11,1,4,83, 12,12,10,1,5,83, 12,12,9,1,6,83, + 12,12,8,1,7,83, 12,12,7,1,8,83, 12,12,6,1,9,83, 12,12,5,1,10,83, 12,12,4,1,11,83, 12,12,3,1,12,83, 12,12,3,6,3,67, 12,11,12,1,3,84, + 12,11,12,5,12,52, 12,11,11,1,4,84, 12,11,10,1,5,84, 12,11,9,1,6,84, 12,11,8,1,7,84, 12,11,7,1,8,84, 12,11,6,1,9,84, 12,11,5,1,10,84, + 12,11,4,1,11,84, 12,11,3,1,12,84, 12,11,3,6,3,68, 12,10,12,5,12,53, 12,10,2,3,13,85, 12,10,2,6,3,69, 12,9,12,5,12,54, 12,9,2,6,3,70, + 12,8,12,5,12,55, 12,8,2,4,12,55, 12,8,2,6,3,71, 12,7,12,5,12,56, 12,7,3,4,12,56, 12,7,3,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, + 12,6,4,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, 12,5,3,3,12,90, 12,5,3,6,3,74, 12,4,10,5,12,59, 12,4,3,6,3,75, 12,3,12,3,3,92, + 12,3,12,5,12,60, 12,3,11,3,4,92, 12,3,3,6,3,76, 12,2,13,1,2,93, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,1,3,93, + 12,2,12,4,12,61, 12,2,11,1,4,93, 12,2,11,4,12,61, 12,2,10,1,5,93, 12,2,10,4,12,61, 12,2,9,1,6,93, 12,2,9,4,12,61, 12,2,8,1,7,93, + 12,2,8,4,12,61, 12,2,7,1,8,93, 12,2,7,4,12,61, 12,2,6,1,9,93, 12,2,6,4,12,61, 12,2,5,1,10,93, 12,2,5,4,12,61, 12,2,4,1,11,93, + 12,2,4,4,12,61, 12,2,3,1,12,93, 12,2,3,4,12,61, 12,2,2,1,13,93, 12,2,2,3,13,93, 12,2,2,4,12,61, 12,2,2,6,12,61, 13,10,12,1,3,85, + 13,10,12,3,3,85, 13,10,12,5,13,53, 13,10,11,1,4,85, 13,10,11,3,4,85, 13,10,10,1,5,85, 13,10,10,3,5,85, 13,10,9,1,6,85, 13,10,9,3,6,85, + 13,10,8,1,7,85, 13,10,8,3,7,85, 13,10,7,1,8,85, 13,10,7,3,8,85, 13,10,6,1,9,85, 13,10,6,3,9,85, 13,10,5,1,10,85, 13,10,5,3,10,85, + 13,10,4,1,11,85, 13,10,4,3,11,85, 13,10,3,1,12,85, 13,10,3,3,12,85, 13,10,2,1,13,85, 13,10,2,3,13,85, 13,10,2,6,2,69, 13,9,12,1,3,86, + 13,9,12,5,13,54, 13,9,11,1,4,86, 13,9,10,1,5,86, 13,9,9,1,6,86, 13,9,8,1,7,86, 13,9,7,1,8,86, 13,9,6,1,9,86, 13,9,5,1,10,86, + 13,9,4,1,11,86, 13,9,3,1,12,86, 13,9,2,1,13,86, 13,9,2,6,2,70, 13,8,12,5,13,55, 13,8,2,4,13,55, 13,8,2,6,2,71, 13,7,12,5,13,56, + 13,7,3,4,13,56, 13,7,3,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,4,6,2,73, 13,5,11,4,13,58, 13,5,11,5,13,58, 13,5,3,3,12,90, + 13,5,3,6,2,74, 13,4,10,1,5,91, 13,4,10,5,13,59, 13,4,9,1,6,91, 13,4,8,1,7,91, 13,4,7,1,8,91, 13,4,6,1,9,91, 13,4,5,1,10,91, + 13,4,4,1,11,91, 13,4,3,1,12,91, 13,4,3,6,2,75, 13,3,12,1,3,92, 13,3,12,3,3,92, 13,3,12,4,13,60, 13,3,12,5,13,60, 13,3,11,1,4,92, + 13,3,11,3,4,92, 13,3,11,4,13,60, 13,3,10,1,5,92, 13,3,10,4,13,60, 13,3,9,1,6,92, 13,3,9,4,13,60, 13,3,8,1,7,92, 13,3,8,4,13,60, + 13,3,7,1,8,92, 13,3,7,4,13,60, 13,3,6,1,9,92, 13,3,6,4,13,60, 13,3,5,1,10,92, 13,3,5,4,13,60, 13,3,4,1,11,92, 13,3,4,4,13,60, + 13,3,3,1,12,92, 13,3,3,4,13,60, 13,3,3,6,13,60, 14,8,12,1,3,87, 14,8,12,3,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,11,3,4,87, + 14,8,10,1,5,87, 14,8,10,3,5,87, 14,8,9,1,6,87, 14,8,9,3,6,87, 14,8,8,1,7,87, 14,8,8,3,7,87, 14,8,7,1,8,87, 14,8,7,3,8,87, + 14,8,6,1,9,87, 14,8,6,3,9,87, 14,8,5,1,10,87, 14,8,5,3,10,87, 14,8,4,1,11,87, 14,8,4,3,11,87, 14,8,3,1,12,87, 14,8,3,3,12,87, + 14,8,2,1,13,87, 14,8,2,3,13,87, 14,8,2,4,14,55, 14,8,2,6,1,71, 14,7,12,1,3,88, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, + 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, 14,7,6,1,9,88, 14,7,5,1,10,88, 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,3,4,14,56, + 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, 14,6,12,5,1,73, 14,6,11,1,4,89, 14,6,10,1,5,89, 14,6,9,1,6,89, 14,6,8,1,7,89, + 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, 14,6,4,1,11,89, 14,6,4,6,1,73, 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, + 14,5,10,1,5,90, 14,5,10,4,1,74, 14,5,9,1,6,90, 14,5,9,4,1,74, 14,5,8,1,7,90, 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, + 14,5,6,1,9,90, 14,5,6,4,1,74, 14,5,5,1,10,90, 14,5,5,4,1,74, 14,5,4,1,11,90, 14,5,4,4,1,74, 14,5,3,1,12,90, 14,5,3,3,12,90, + 14,5,3,4,1,74, 14,5,3,6,1,74, + }, + }, + }, +} diff --git a/assets/voxels/warden.lua b/assets/voxels/warden.lua new file mode 100644 index 0000000..40253ec --- /dev/null +++ b/assets/voxels/warden.lua @@ -0,0 +1,163 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "warden" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "warden", + sheetW = 16, + sheetH = 48, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1772, + count = 1100, + faces = { + 0,6,11,2,5,41, 0,6,11,3,5,41, 0,6,11,5,0,9, 0,6,10,2,6,41, 0,6,10,3,6,41, 0,6,9,2,7,41, 0,6,9,3,7,41, 0,6,8,2,8,41, + 0,6,8,3,8,41, 0,6,7,2,9,41, 0,6,7,3,9,41, 0,6,6,2,10,41, 0,6,6,3,10,41, 0,6,5,2,11,41, 0,6,5,3,11,41, 0,6,5,6,15,25, + 0,5,12,2,4,42, 0,5,12,3,4,42, 0,5,12,4,0,10, 0,5,12,5,0,10, 0,5,11,2,5,42, 0,5,11,4,0,10, 0,5,10,2,6,42, 0,5,10,4,0,10, + 0,5,9,2,7,42, 0,5,9,4,0,10, 0,5,8,2,8,42, 0,5,8,4,0,10, 0,5,7,2,9,42, 0,5,7,4,0,10, 0,5,6,2,10,42, 0,5,6,4,0,10, + 0,5,5,2,11,42, 0,5,5,4,0,10, 0,5,4,2,12,42, 0,5,4,3,12,42, 0,5,4,4,0,10, 0,5,4,6,15,26, 1,11,13,2,3,36, 1,11,13,3,3,36, + 1,11,13,5,1,4, 1,11,12,2,4,36, 1,11,12,3,4,36, 1,11,11,2,5,36, 1,11,11,3,5,36, 1,11,10,2,6,36, 1,11,10,3,6,36, 1,11,9,2,7,36, + 1,11,9,3,7,36, 1,11,8,2,8,36, 1,11,8,3,8,36, 1,11,7,2,9,36, 1,11,7,3,9,36, 1,11,6,2,10,36, 1,11,6,3,10,36, 1,11,5,2,11,36, + 1,11,5,3,11,36, 1,11,4,2,12,36, 1,11,4,3,12,36, 1,11,3,2,13,36, 1,11,3,3,13,36, 1,11,3,6,14,20, 1,10,13,2,3,37, 1,10,13,5,1,5, + 1,10,12,2,4,37, 1,10,11,2,5,37, 1,10,10,2,6,37, 1,10,9,2,7,37, 1,10,8,2,8,37, 1,10,7,2,9,37, 1,10,6,2,10,37, 1,10,5,2,11,37, + 1,10,4,2,12,37, 1,10,3,2,13,37, 1,10,3,6,14,21, 1,9,13,2,3,38, 1,9,13,4,1,6, 1,9,13,5,1,6, 1,9,12,2,4,38, 1,9,12,4,1,6, + 1,9,11,2,5,38, 1,9,11,4,1,6, 1,9,10,2,6,38, 1,9,10,4,1,6, 1,9,9,2,7,38, 1,9,9,4,1,6, 1,9,8,2,8,38, 1,9,8,4,1,6, + 1,9,7,2,9,38, 1,9,7,4,1,6, 1,9,6,2,10,38, 1,9,6,4,1,6, 1,9,5,2,11,38, 1,9,5,4,1,6, 1,9,4,2,12,38, 1,9,4,4,1,6, + 1,9,3,2,13,38, 1,9,3,4,1,6, 1,9,3,6,14,22, 1,7,12,2,4,40, 1,7,12,3,4,40, 1,7,12,4,1,8, 1,7,12,5,1,8, 1,7,11,2,5,40, + 1,7,11,3,5,40, 1,7,10,2,6,40, 1,7,10,3,6,40, 1,7,9,2,7,40, 1,7,9,3,7,40, 1,7,8,2,8,40, 1,7,8,3,8,40, 1,7,7,2,9,40, + 1,7,7,3,9,40, 1,7,6,2,10,40, 1,7,6,3,10,40, 1,7,5,2,11,40, 1,7,5,3,11,40, 1,7,4,2,12,40, 1,7,4,3,12,40, 1,7,4,4,1,8, + 1,7,4,6,14,24, 1,6,11,5,1,9, 1,6,5,6,14,25, 1,5,12,3,4,42, 1,5,12,5,1,10, 1,5,4,3,12,42, 1,5,4,6,14,26, 1,4,13,2,3,43, + 1,4,13,3,3,43, 1,4,13,4,1,11, 1,4,13,5,1,11, 1,4,12,2,4,43, 1,4,12,4,1,11, 1,4,11,2,5,43, 1,4,11,4,1,11, 1,4,10,2,6,43, + 1,4,10,4,1,11, 1,4,9,2,7,43, 1,4,9,4,1,11, 1,4,8,2,8,43, 1,4,8,4,1,11, 1,4,7,2,9,43, 1,4,7,4,1,11, 1,4,6,2,10,43, + 1,4,6,4,1,11, 1,4,5,2,11,43, 1,4,5,4,1,11, 1,4,4,2,12,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,12,13,2,3,35, 2,12,13,3,3,35, + 2,12,13,5,2,3, 2,12,12,2,4,35, 2,12,12,3,4,35, 2,12,11,2,5,35, 2,12,11,3,5,35, 2,12,10,2,6,35, 2,12,10,3,6,35, 2,12,9,2,7,35, + 2,12,9,3,7,35, 2,12,8,2,8,35, 2,12,8,3,8,35, 2,12,7,2,9,35, 2,12,7,3,9,35, 2,12,6,2,10,35, 2,12,6,3,10,35, 2,12,5,2,11,35, + 2,12,5,3,11,35, 2,12,4,2,12,35, 2,12,4,3,12,35, 2,12,3,2,13,35, 2,12,3,3,13,35, 2,12,3,6,13,19, 2,11,13,5,2,4, 2,11,3,6,13,20, + 2,10,13,5,2,5, 2,10,3,6,13,21, 2,9,13,5,2,6, 2,9,3,6,13,22, 2,8,13,2,3,39, 2,8,13,4,2,7, 2,8,13,5,2,7, 2,8,12,2,4,39, + 2,8,11,2,5,39, 2,8,10,2,6,39, 2,8,9,2,7,39, 2,8,8,2,8,39, 2,8,7,2,9,39, 2,8,6,2,10,39, 2,8,5,2,11,39, 2,8,4,2,12,39, + 2,8,3,2,13,39, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,4,4,2,8, 2,7,4,6,13,24, 2,6,11,5,2,9, + 2,6,5,6,13,25, 2,5,12,3,4,42, 2,5,12,5,2,10, 2,5,4,3,12,42, 2,5,4,6,13,26, 2,4,13,3,3,43, 2,4,13,5,2,11, 2,4,4,6,13,27, + 2,3,13,2,3,44, 2,3,13,4,2,12, 2,3,13,5,2,12, 2,3,12,2,4,44, 2,3,11,2,5,44, 2,3,10,2,6,44, 2,3,9,2,7,44, 2,3,8,2,8,44, + 2,3,7,2,9,44, 2,3,6,2,10,44, 2,3,5,2,11,44, 2,3,4,2,12,44, 2,3,4,4,2,12, 2,3,4,6,13,28, 2,2,12,2,4,45, 2,2,12,5,2,13, + 2,2,11,2,5,45, 2,2,10,2,6,45, 2,2,9,2,7,45, 2,2,8,2,8,45, 2,2,7,2,9,45, 2,2,6,2,10,45, 2,2,5,2,11,45, 2,2,5,4,2,13, + 2,2,5,6,13,29, 2,1,12,2,4,46, 2,1,12,4,2,14, 2,1,12,5,2,14, 2,1,11,2,5,46, 2,1,11,4,2,14, 2,1,10,2,6,46, 2,1,10,4,2,14, + 2,1,9,2,7,46, 2,1,9,4,2,14, 2,1,8,2,8,46, 2,1,8,4,2,14, 2,1,7,2,9,46, 2,1,7,4,2,14, 2,1,6,2,10,46, 2,1,6,4,2,14, + 2,1,6,6,13,30, 3,13,12,2,4,34, 3,13,12,3,4,34, 3,13,12,5,3,2, 3,13,11,2,5,34, 3,13,11,3,5,34, 3,13,10,2,6,34, 3,13,10,3,6,34, + 3,13,9,2,7,34, 3,13,9,3,7,34, 3,13,8,2,8,34, 3,13,8,3,8,34, 3,13,7,2,9,34, 3,13,7,3,9,34, 3,13,6,2,10,34, 3,13,6,3,10,34, + 3,13,5,2,11,34, 3,13,5,3,11,34, 3,13,4,2,12,34, 3,13,4,3,12,34, 3,13,4,6,12,18, 3,12,13,3,3,35, 3,12,13,5,3,3, 3,12,3,3,13,35, + 3,12,3,6,12,19, 3,11,13,5,3,4, 3,11,3,6,12,20, 3,10,13,5,3,5, 3,10,3,6,12,21, 3,9,13,5,3,6, 3,9,3,6,12,22, 3,8,13,4,3,7, + 3,8,13,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, 3,7,12,5,3,8, 3,7,4,4,3,8, 3,7,4,6,12,24, 3,6,11,5,3,9, + 3,6,5,6,12,25, 3,5,12,3,4,42, 3,5,12,5,3,10, 3,5,4,3,12,42, 3,5,4,6,12,26, 3,4,13,3,3,43, 3,4,13,5,3,11, 3,4,4,6,12,27, + 3,3,13,4,3,12, 3,3,13,5,3,12, 3,3,4,4,3,12, 3,3,4,6,12,28, 3,2,12,5,3,13, 3,2,5,4,3,13, 3,2,5,6,12,29, 3,1,12,4,3,14, + 3,1,12,5,3,14, 3,1,6,6,12,30, 3,0,11,2,5,47, 3,0,11,5,3,15, 3,0,10,2,6,47, 3,0,9,2,7,47, 3,0,8,2,8,47, 3,0,7,2,9,47, + 3,0,6,2,10,47, 3,0,6,6,12,31, 4,14,11,2,5,33, 4,14,11,3,5,33, 4,14,11,5,4,1, 4,14,10,2,6,33, 4,14,10,3,6,33, 4,14,9,2,7,33, + 4,14,9,3,7,33, 4,14,8,2,8,33, 4,14,8,3,8,33, 4,14,7,2,9,33, 4,14,7,3,9,33, 4,14,6,2,10,33, 4,14,6,3,10,33, 4,14,5,2,11,33, + 4,14,5,3,11,33, 4,14,5,6,11,17, 4,13,12,3,4,34, 4,13,12,5,4,2, 4,13,4,3,12,34, 4,13,4,6,11,18, 4,12,13,3,3,35, 4,12,13,5,4,3, + 4,12,3,3,13,35, 4,12,3,6,11,19, 4,11,13,5,4,4, 4,11,3,6,11,20, 4,10,13,5,4,5, 4,10,3,6,11,21, 4,9,13,5,4,6, 4,9,3,6,11,22, + 4,8,13,4,4,7, 4,8,13,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,4,4,8, 4,7,4,6,11,24, + 4,6,11,5,4,9, 4,6,5,6,11,25, 4,5,12,3,4,42, 4,5,12,5,4,10, 4,5,4,3,12,42, 4,5,4,6,11,26, 4,4,13,3,3,43, 4,4,13,5,4,11, + 4,4,4,6,11,27, 4,3,13,4,4,12, 4,3,13,5,4,12, 4,3,4,4,4,12, 4,3,4,6,11,28, 4,2,12,5,4,13, 4,2,5,4,4,13, 4,2,5,6,11,29, + 4,1,12,4,4,14, 4,1,12,5,4,14, 4,1,6,6,11,30, 4,0,11,5,4,15, 4,0,6,6,11,31, 5,15,10,2,6,32, 5,15,10,3,6,32, 5,15,10,5,5,0, + 5,15,9,2,7,32, 5,15,9,3,7,32, 5,15,8,2,8,32, 5,15,8,3,8,32, 5,15,7,2,9,32, 5,15,7,3,9,32, 5,15,6,2,10,32, 5,15,6,3,10,32, + 5,15,6,6,10,16, 5,14,11,3,5,33, 5,14,11,5,5,1, 5,14,5,3,11,33, 5,14,5,6,10,17, 5,13,12,3,4,34, 5,13,12,5,5,2, 5,13,4,3,12,34, + 5,13,4,6,10,18, 5,12,13,3,3,35, 5,12,13,5,5,3, 5,12,3,3,13,35, 5,12,3,6,10,19, 5,11,13,5,5,4, 5,11,3,6,10,20, 5,10,13,5,5,5, + 5,10,3,6,10,21, 5,9,13,5,5,6, 5,9,3,6,10,22, 5,8,13,4,5,7, 5,8,13,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, + 5,7,12,5,5,8, 5,7,4,4,5,8, 5,7,4,6,10,24, 5,6,11,5,5,9, 5,6,5,6,10,25, 5,5,12,3,4,42, 5,5,12,5,5,10, 5,5,4,3,12,42, + 5,5,4,6,10,26, 5,4,13,3,3,43, 5,4,13,5,5,11, 5,4,4,6,10,27, 5,3,13,4,5,12, 5,3,13,5,5,12, 5,3,4,4,5,12, 5,3,4,6,10,28, + 5,2,12,5,5,13, 5,2,5,4,5,13, 5,2,5,6,10,29, 5,1,12,4,5,14, 5,1,12,5,5,14, 5,1,6,6,10,30, 5,0,11,5,5,15, 5,0,6,6,10,31, + 6,15,10,3,6,32, 6,15,10,5,6,0, 6,15,9,3,7,32, 6,15,8,3,8,32, 6,15,7,3,9,32, 6,15,6,3,10,32, 6,15,6,6,9,16, 6,14,11,3,5,33, + 6,14,11,5,6,1, 6,14,5,3,11,33, 6,14,5,6,9,17, 6,13,12,3,4,34, 6,13,12,5,6,2, 6,13,4,3,12,34, 6,13,4,6,9,18, 6,12,13,3,3,35, + 6,12,13,5,6,3, 6,12,3,3,13,35, 6,12,3,6,9,19, 6,11,13,5,6,4, 6,11,3,6,9,20, 6,10,13,5,6,5, 6,10,3,6,9,21, 6,9,13,5,6,6, + 6,9,3,6,9,22, 6,8,13,4,6,7, 6,8,13,5,6,7, 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,4,4,6,8, + 6,7,4,6,9,24, 6,6,11,5,6,9, 6,6,5,6,9,25, 6,5,12,3,4,42, 6,5,12,5,6,10, 6,5,4,3,12,42, 6,5,4,6,9,26, 6,4,13,3,3,43, + 6,4,13,5,6,11, 6,4,4,6,9,27, 6,3,13,4,6,12, 6,3,13,5,6,12, 6,3,4,4,6,12, 6,3,4,6,9,28, 6,2,12,5,6,13, 6,2,5,4,6,13, + 6,2,5,6,9,29, 6,1,12,4,6,14, 6,1,12,5,6,14, 6,1,6,6,9,30, 6,0,11,1,5,47, 6,0,11,5,6,15, 6,0,10,1,6,47, 6,0,9,1,7,47, + 6,0,8,1,8,47, 6,0,7,1,9,47, 6,0,6,1,10,47, 6,0,6,6,9,31, 7,15,10,3,6,32, 7,15,10,5,7,0, 7,15,9,3,7,32, 7,15,8,3,8,32, + 7,15,7,3,9,32, 7,15,6,3,10,32, 7,15,6,6,8,16, 7,14,11,3,5,33, 7,14,11,5,7,1, 7,14,5,3,11,33, 7,14,5,6,8,17, 7,13,12,3,4,34, + 7,13,12,5,7,2, 7,13,4,3,12,34, 7,13,4,6,8,18, 7,12,13,3,3,35, 7,12,13,5,7,3, 7,12,3,3,13,35, 7,12,3,6,8,19, 7,11,13,5,7,4, + 7,11,3,6,8,20, 7,10,13,5,7,5, 7,10,3,6,8,21, 7,9,13,5,7,6, 7,9,3,6,8,22, 7,8,13,4,7,7, 7,8,13,5,7,7, 7,8,3,4,7,7, + 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, 7,7,4,4,7,8, 7,7,4,6,8,24, 7,6,11,5,7,9, 7,6,5,6,8,25, 7,5,12,3,4,42, + 7,5,12,5,7,10, 7,5,4,3,12,42, 7,5,4,6,8,26, 7,4,13,3,3,43, 7,4,13,5,7,11, 7,4,4,6,8,27, 7,3,13,4,7,12, 7,3,13,5,7,12, + 7,3,4,4,7,12, 7,3,4,6,8,28, 7,2,12,5,7,13, 7,2,5,4,7,13, 7,2,5,6,8,29, 7,1,12,4,7,14, 7,1,12,5,7,14, 7,1,11,4,7,14, + 7,1,10,4,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,6,6,8,30, 8,15,10,3,6,32, 8,15,10,5,8,0, + 8,15,9,3,7,32, 8,15,8,3,8,32, 8,15,7,3,9,32, 8,15,6,3,10,32, 8,15,6,6,7,16, 8,14,11,3,5,33, 8,14,11,5,8,1, 8,14,5,3,11,33, + 8,14,5,6,7,17, 8,13,12,3,4,34, 8,13,12,5,8,2, 8,13,4,3,12,34, 8,13,4,6,7,18, 8,12,13,3,3,35, 8,12,13,5,8,3, 8,12,3,3,13,35, + 8,12,3,6,7,19, 8,11,13,5,8,4, 8,11,3,6,7,20, 8,10,13,5,8,5, 8,10,3,6,7,21, 8,9,13,5,8,6, 8,9,3,6,7,22, 8,8,13,4,8,7, + 8,8,13,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,4,8,8, 8,7,4,6,7,24, 8,6,11,5,8,9, + 8,6,5,6,7,25, 8,5,12,3,4,42, 8,5,12,5,8,10, 8,5,4,3,12,42, 8,5,4,6,7,26, 8,4,13,3,3,43, 8,4,13,5,8,11, 8,4,4,6,7,27, + 8,3,13,4,8,12, 8,3,13,5,8,12, 8,3,4,4,8,12, 8,3,4,6,7,28, 8,2,12,5,8,13, 8,2,5,4,8,13, 8,2,5,6,7,29, 8,1,12,4,8,14, + 8,1,12,5,8,14, 8,1,11,4,8,14, 8,1,10,4,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, 8,1,6,4,8,14, 8,1,6,6,7,30, + 9,15,10,3,6,32, 9,15,10,5,9,0, 9,15,9,3,7,32, 9,15,8,3,8,32, 9,15,7,3,9,32, 9,15,6,3,10,32, 9,15,6,6,6,16, 9,14,11,3,5,33, + 9,14,11,5,9,1, 9,14,5,3,11,33, 9,14,5,6,6,17, 9,13,12,3,4,34, 9,13,12,5,9,2, 9,13,4,3,12,34, 9,13,4,6,6,18, 9,12,13,3,3,35, + 9,12,13,5,9,3, 9,12,3,3,13,35, 9,12,3,6,6,19, 9,11,13,5,9,4, 9,11,3,6,6,20, 9,10,13,5,9,5, 9,10,3,6,6,21, 9,9,13,5,9,6, + 9,9,3,6,6,22, 9,8,13,4,9,7, 9,8,13,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, 9,7,4,4,9,8, + 9,7,4,6,6,24, 9,6,11,5,9,9, 9,6,5,6,6,25, 9,5,12,3,4,42, 9,5,12,5,9,10, 9,5,4,3,12,42, 9,5,4,6,6,26, 9,4,13,3,3,43, + 9,4,13,5,9,11, 9,4,4,6,6,27, 9,3,13,4,9,12, 9,3,13,5,9,12, 9,3,4,4,9,12, 9,3,4,6,6,28, 9,2,12,5,9,13, 9,2,5,4,9,13, + 9,2,5,6,6,29, 9,1,12,4,9,14, 9,1,12,5,9,14, 9,1,6,6,6,30, 9,0,11,2,5,47, 9,0,11,5,9,15, 9,0,10,2,6,47, 9,0,9,2,7,47, + 9,0,8,2,8,47, 9,0,7,2,9,47, 9,0,6,2,10,47, 9,0,6,6,6,31, 10,15,10,1,6,32, 10,15,10,3,6,32, 10,15,10,5,10,0, 10,15,9,1,7,32, + 10,15,9,3,7,32, 10,15,8,1,8,32, 10,15,8,3,8,32, 10,15,7,1,9,32, 10,15,7,3,9,32, 10,15,6,1,10,32, 10,15,6,3,10,32, 10,15,6,6,5,16, + 10,14,11,3,5,33, 10,14,11,5,10,1, 10,14,5,3,11,33, 10,14,5,6,5,17, 10,13,12,3,4,34, 10,13,12,5,10,2, 10,13,4,3,12,34, 10,13,4,6,5,18, + 10,12,13,3,3,35, 10,12,13,5,10,3, 10,12,3,3,13,35, 10,12,3,6,5,19, 10,11,13,5,10,4, 10,11,3,6,5,20, 10,10,13,5,10,5, 10,10,3,6,5,21, + 10,9,13,5,10,6, 10,9,3,6,5,22, 10,8,13,4,10,7, 10,8,13,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, 10,7,12,4,10,8, 10,7,12,5,10,8, + 10,7,4,4,10,8, 10,7,4,6,5,24, 10,6,11,5,10,9, 10,6,5,6,5,25, 10,5,12,3,4,42, 10,5,12,5,10,10, 10,5,4,3,12,42, 10,5,4,6,5,26, + 10,4,13,3,3,43, 10,4,13,5,10,11, 10,4,4,6,5,27, 10,3,13,4,10,12, 10,3,13,5,10,12, 10,3,4,4,10,12, 10,3,4,6,5,28, 10,2,12,5,10,13, + 10,2,5,4,10,13, 10,2,5,6,5,29, 10,1,12,4,10,14, 10,1,12,5,10,14, 10,1,6,6,5,30, 10,0,11,5,10,15, 10,0,6,6,5,31, 11,14,11,1,5,33, + 11,14,11,3,5,33, 11,14,11,5,11,1, 11,14,10,1,6,33, 11,14,10,3,6,33, 11,14,9,1,7,33, 11,14,9,3,7,33, 11,14,8,1,8,33, 11,14,8,3,8,33, + 11,14,7,1,9,33, 11,14,7,3,9,33, 11,14,6,1,10,33, 11,14,6,3,10,33, 11,14,5,1,11,33, 11,14,5,3,11,33, 11,14,5,6,4,17, 11,13,12,3,4,34, + 11,13,12,5,11,2, 11,13,4,3,12,34, 11,13,4,6,4,18, 11,12,13,3,3,35, 11,12,13,5,11,3, 11,12,3,3,13,35, 11,12,3,6,4,19, 11,11,13,5,11,4, + 11,11,3,6,4,20, 11,10,13,5,11,5, 11,10,3,6,4,21, 11,9,13,5,11,6, 11,9,3,6,4,22, 11,8,13,4,11,7, 11,8,13,5,11,7, 11,8,3,4,11,7, + 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, 11,7,4,4,11,8, 11,7,4,6,4,24, 11,6,11,5,11,9, 11,6,5,6,4,25, 11,5,12,3,4,42, + 11,5,12,5,11,10, 11,5,4,3,12,42, 11,5,4,6,4,26, 11,4,13,3,3,43, 11,4,13,5,11,11, 11,4,4,6,4,27, 11,3,13,4,11,12, 11,3,13,5,11,12, + 11,3,4,4,11,12, 11,3,4,6,4,28, 11,2,12,5,11,13, 11,2,5,4,11,13, 11,2,5,6,4,29, 11,1,12,4,11,14, 11,1,12,5,11,14, 11,1,6,6,4,30, + 11,0,11,5,11,15, 11,0,6,6,4,31, 12,13,12,1,4,34, 12,13,12,3,4,34, 12,13,12,5,12,2, 12,13,11,1,5,34, 12,13,11,3,5,34, 12,13,10,1,6,34, + 12,13,10,3,6,34, 12,13,9,1,7,34, 12,13,9,3,7,34, 12,13,8,1,8,34, 12,13,8,3,8,34, 12,13,7,1,9,34, 12,13,7,3,9,34, 12,13,6,1,10,34, + 12,13,6,3,10,34, 12,13,5,1,11,34, 12,13,5,3,11,34, 12,13,4,1,12,34, 12,13,4,3,12,34, 12,13,4,6,3,18, 12,12,13,3,3,35, 12,12,13,5,12,3, + 12,12,3,3,13,35, 12,12,3,6,3,19, 12,11,13,5,12,4, 12,11,3,6,3,20, 12,10,13,5,12,5, 12,10,3,6,3,21, 12,9,13,5,12,6, 12,9,3,6,3,22, + 12,8,13,4,12,7, 12,8,13,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,4,12,8, 12,7,4,6,3,24, + 12,6,11,5,12,9, 12,6,5,6,3,25, 12,5,12,3,4,42, 12,5,12,5,12,10, 12,5,4,3,12,42, 12,5,4,6,3,26, 12,4,13,3,3,43, 12,4,13,5,12,11, + 12,4,4,6,3,27, 12,3,13,4,12,12, 12,3,13,5,12,12, 12,3,4,4,12,12, 12,3,4,6,3,28, 12,2,12,5,12,13, 12,2,5,4,12,13, 12,2,5,6,3,29, + 12,1,12,4,12,14, 12,1,12,5,12,14, 12,1,6,6,3,30, 12,0,11,1,5,47, 12,0,11,5,12,15, 12,0,10,1,6,47, 12,0,9,1,7,47, 12,0,8,1,8,47, + 12,0,7,1,9,47, 12,0,6,1,10,47, 12,0,6,6,3,31, 13,12,13,1,3,35, 13,12,13,3,3,35, 13,12,13,5,13,3, 13,12,12,1,4,35, 13,12,12,3,4,35, + 13,12,11,1,5,35, 13,12,11,3,5,35, 13,12,10,1,6,35, 13,12,10,3,6,35, 13,12,9,1,7,35, 13,12,9,3,7,35, 13,12,8,1,8,35, 13,12,8,3,8,35, + 13,12,7,1,9,35, 13,12,7,3,9,35, 13,12,6,1,10,35, 13,12,6,3,10,35, 13,12,5,1,11,35, 13,12,5,3,11,35, 13,12,4,1,12,35, 13,12,4,3,12,35, + 13,12,3,1,13,35, 13,12,3,3,13,35, 13,12,3,6,2,19, 13,11,13,5,13,4, 13,11,3,6,2,20, 13,10,13,5,13,5, 13,10,3,6,2,21, 13,9,13,5,13,6, + 13,9,3,6,2,22, 13,8,13,1,3,39, 13,8,13,4,13,7, 13,8,13,5,13,7, 13,8,12,1,4,39, 13,8,11,1,5,39, 13,8,10,1,6,39, 13,8,9,1,7,39, + 13,8,8,1,8,39, 13,8,7,1,9,39, 13,8,6,1,10,39, 13,8,5,1,11,39, 13,8,4,1,12,39, 13,8,3,1,13,39, 13,8,3,4,13,7, 13,8,3,6,2,23, + 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,4,4,13,8, 13,7,4,6,2,24, 13,6,11,5,13,9, 13,6,5,6,2,25, 13,5,12,3,4,42, 13,5,12,5,13,10, + 13,5,4,3,12,42, 13,5,4,6,2,26, 13,4,13,3,3,43, 13,4,13,5,13,11, 13,4,4,6,2,27, 13,3,13,1,3,44, 13,3,13,4,13,12, 13,3,13,5,13,12, + 13,3,12,1,4,44, 13,3,11,1,5,44, 13,3,10,1,6,44, 13,3,9,1,7,44, 13,3,8,1,8,44, 13,3,7,1,9,44, 13,3,6,1,10,44, 13,3,5,1,11,44, + 13,3,4,1,12,44, 13,3,4,4,13,12, 13,3,4,6,2,28, 13,2,12,1,4,45, 13,2,12,5,13,13, 13,2,11,1,5,45, 13,2,10,1,6,45, 13,2,9,1,7,45, + 13,2,8,1,8,45, 13,2,7,1,9,45, 13,2,6,1,10,45, 13,2,5,1,11,45, 13,2,5,4,13,13, 13,2,5,6,2,29, 13,1,12,1,4,46, 13,1,12,4,13,14, + 13,1,12,5,13,14, 13,1,11,1,5,46, 13,1,11,4,13,14, 13,1,10,1,6,46, 13,1,10,4,13,14, 13,1,9,1,7,46, 13,1,9,4,13,14, 13,1,8,1,8,46, + 13,1,8,4,13,14, 13,1,7,1,9,46, 13,1,7,4,13,14, 13,1,6,1,10,46, 13,1,6,4,13,14, 13,1,6,6,2,30, 14,11,13,1,3,36, 14,11,13,3,3,36, + 14,11,13,5,14,4, 14,11,12,1,4,36, 14,11,12,3,4,36, 14,11,11,1,5,36, 14,11,11,3,5,36, 14,11,10,1,6,36, 14,11,10,3,6,36, 14,11,9,1,7,36, + 14,11,9,3,7,36, 14,11,8,1,8,36, 14,11,8,3,8,36, 14,11,7,1,9,36, 14,11,7,3,9,36, 14,11,6,1,10,36, 14,11,6,3,10,36, 14,11,5,1,11,36, + 14,11,5,3,11,36, 14,11,4,1,12,36, 14,11,4,3,12,36, 14,11,3,1,13,36, 14,11,3,3,13,36, 14,11,3,6,1,20, 14,10,13,1,3,37, 14,10,13,5,14,5, + 14,10,12,1,4,37, 14,10,11,1,5,37, 14,10,10,1,6,37, 14,10,9,1,7,37, 14,10,8,1,8,37, 14,10,7,1,9,37, 14,10,6,1,10,37, 14,10,5,1,11,37, + 14,10,4,1,12,37, 14,10,3,1,13,37, 14,10,3,6,1,21, 14,9,13,1,3,38, 14,9,13,4,14,6, 14,9,13,5,14,6, 14,9,12,1,4,38, 14,9,12,4,14,6, + 14,9,11,1,5,38, 14,9,11,4,14,6, 14,9,10,1,6,38, 14,9,10,4,14,6, 14,9,9,1,7,38, 14,9,9,4,14,6, 14,9,8,1,8,38, 14,9,8,4,14,6, + 14,9,7,1,9,38, 14,9,7,4,14,6, 14,9,6,1,10,38, 14,9,6,4,14,6, 14,9,5,1,11,38, 14,9,5,4,14,6, 14,9,4,1,12,38, 14,9,4,4,14,6, + 14,9,3,1,13,38, 14,9,3,4,14,6, 14,9,3,6,1,22, 14,7,12,1,4,40, 14,7,12,3,4,40, 14,7,12,4,14,8, 14,7,12,5,14,8, 14,7,11,1,5,40, + 14,7,11,3,5,40, 14,7,10,1,6,40, 14,7,10,3,6,40, 14,7,9,1,7,40, 14,7,9,3,7,40, 14,7,8,1,8,40, 14,7,8,3,8,40, 14,7,7,1,9,40, + 14,7,7,3,9,40, 14,7,6,1,10,40, 14,7,6,3,10,40, 14,7,5,1,11,40, 14,7,5,3,11,40, 14,7,4,1,12,40, 14,7,4,3,12,40, 14,7,4,4,14,8, + 14,7,4,6,1,24, 14,6,11,5,14,9, 14,6,5,6,1,25, 14,5,12,3,4,42, 14,5,12,5,14,10, 14,5,4,3,12,42, 14,5,4,6,1,26, 14,4,13,1,3,43, + 14,4,13,3,3,43, 14,4,13,4,14,11, 14,4,13,5,14,11, 14,4,12,1,4,43, 14,4,12,4,14,11, 14,4,11,1,5,43, 14,4,11,4,14,11, 14,4,10,1,6,43, + 14,4,10,4,14,11, 14,4,9,1,7,43, 14,4,9,4,14,11, 14,4,8,1,8,43, 14,4,8,4,14,11, 14,4,7,1,9,43, 14,4,7,4,14,11, 14,4,6,1,10,43, + 14,4,6,4,14,11, 14,4,5,1,11,43, 14,4,5,4,14,11, 14,4,4,1,12,43, 14,4,4,4,14,11, 14,4,4,6,1,27, 15,6,11,1,5,41, 15,6,11,3,5,41, + 15,6,11,5,15,9, 15,6,10,1,6,41, 15,6,10,3,6,41, 15,6,9,1,7,41, 15,6,9,3,7,41, 15,6,8,1,8,41, 15,6,8,3,8,41, 15,6,7,1,9,41, + 15,6,7,3,9,41, 15,6,6,1,10,41, 15,6,6,3,10,41, 15,6,5,1,11,41, 15,6,5,3,11,41, 15,6,5,6,0,25, 15,5,12,1,4,42, 15,5,12,3,4,42, + 15,5,12,4,15,10, 15,5,12,5,15,10, 15,5,11,1,5,42, 15,5,11,4,15,10, 15,5,10,1,6,42, 15,5,10,4,15,10, 15,5,9,1,7,42, 15,5,9,4,15,10, + 15,5,8,1,8,42, 15,5,8,4,15,10, 15,5,7,1,9,42, 15,5,7,4,15,10, 15,5,6,1,10,42, 15,5,6,4,15,10, 15,5,5,1,11,42, 15,5,5,4,15,10, + 15,5,4,1,12,42, 15,5,4,3,12,42, 15,5,4,4,15,10, 15,5,4,6,0,26, + }, + }, + }, +} diff --git a/assets/voxels/youngster.lua b/assets/voxels/youngster.lua new file mode 100644 index 0000000..bffc33a --- /dev/null +++ b/assets/voxels/youngster.lua @@ -0,0 +1,288 @@ +-- Generated by tools/build_voxels.py. DO NOT EDIT. +-- Visual-hull voxel model carved from the "youngster" overworld +-- sprite sheet. Geometry only -- no sheet path, no baked pixel. +-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v. +-- mx/my/mz voxel corner in model space (X east, Y up, Z south), +-- 0..15, character faces +Z at rest. +-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z +-- u/v pixel this face samples in a sheet of sheetW x sheetH. +-- The runtime pairs the model with the LIVE sheet the +-- engine handed it, so palette/mod recolors apply. +return { + name = "youngster", + sheetW = 16, + sheetH = 96, + size = 16, + poses = { + stand = { + frames = { 0, 1, 2 }, + voxels = 1480, + count = 994, + faces = { + 1,9,12,2,3,38, 1,9,12,3,3,38, 1,9,12,5,1,6, 1,9,11,2,4,38, 1,9,11,3,4,38, 1,9,10,2,5,38, 1,9,10,3,5,38, 1,9,9,2,6,38, + 1,9,9,3,6,38, 1,9,8,2,7,38, 1,9,8,3,7,38, 1,9,7,2,8,38, 1,9,7,3,8,38, 1,9,6,2,9,38, 1,9,6,3,9,38, 1,9,5,2,10,38, + 1,9,5,3,10,38, 1,9,4,2,11,38, 1,9,4,3,11,38, 1,9,3,2,12,38, 1,9,3,3,12,38, 1,9,3,6,14,22, 1,8,12,2,3,39, 1,8,12,4,1,7, + 1,8,12,5,1,7, 1,8,11,2,4,39, 1,8,11,4,1,7, 1,8,10,2,5,39, 1,8,10,4,1,7, 1,8,9,2,6,39, 1,8,9,4,1,7, 1,8,8,2,7,39, + 1,8,8,4,1,7, 1,8,7,2,8,39, 1,8,7,4,1,7, 1,8,6,2,9,39, 1,8,6,4,1,7, 1,8,5,2,10,39, 1,8,5,4,1,7, 1,8,4,2,11,39, + 1,8,4,4,1,7, 1,8,3,2,12,39, 1,8,3,4,1,7, 1,8,3,6,14,23, 1,5,10,2,5,42, 1,5,10,3,5,42, 1,5,10,4,1,10, 1,5,10,5,1,10, + 1,5,9,2,6,42, 1,5,9,3,6,42, 1,5,8,2,7,42, 1,5,8,3,7,42, 1,5,7,2,8,42, 1,5,7,3,8,42, 1,5,6,2,9,42, 1,5,6,3,9,42, + 1,5,5,2,10,42, 1,5,5,3,10,42, 1,5,4,2,11,42, 1,5,4,3,11,42, 1,5,4,6,14,26, 1,4,9,2,6,43, 1,4,9,4,1,11, 1,4,9,5,1,11, + 1,4,8,2,7,43, 1,4,8,4,1,11, 1,4,7,2,8,43, 1,4,7,4,1,11, 1,4,6,2,9,43, 1,4,6,4,1,11, 1,4,5,2,10,43, 1,4,5,4,1,11, + 1,4,4,2,11,43, 1,4,4,4,1,11, 1,4,4,6,14,27, 2,12,13,2,2,35, 2,12,13,3,2,35, 2,12,13,5,2,3, 2,12,12,2,3,35, 2,12,12,3,3,35, + 2,12,11,2,4,35, 2,12,11,3,4,35, 2,12,10,2,5,35, 2,12,10,3,5,35, 2,12,9,2,6,35, 2,12,9,3,6,35, 2,12,8,2,7,35, 2,12,8,3,7,35, + 2,12,7,2,8,35, 2,12,7,3,8,35, 2,12,6,2,9,35, 2,12,6,3,9,35, 2,12,5,2,10,35, 2,12,5,3,10,35, 2,12,4,2,11,35, 2,12,4,3,11,35, + 2,12,3,2,12,35, 2,12,3,3,12,35, 2,12,2,2,13,35, 2,12,2,3,13,35, 2,12,2,6,13,19, 2,11,13,2,2,36, 2,11,13,4,2,4, 2,11,13,5,2,4, + 2,11,12,2,3,36, 2,11,11,2,4,36, 2,11,10,2,5,36, 2,11,9,2,6,36, 2,11,8,2,7,36, 2,11,7,2,8,36, 2,11,6,2,9,36, 2,11,5,2,10,36, + 2,11,4,2,11,36, 2,11,3,2,12,36, 2,11,2,2,13,36, 2,11,2,6,13,20, 2,10,12,2,3,37, 2,10,12,5,2,5, 2,10,11,2,4,37, 2,10,10,2,5,37, + 2,10,9,2,6,37, 2,10,8,2,7,37, 2,10,7,2,8,37, 2,10,6,2,9,37, 2,10,5,2,10,37, 2,10,4,2,11,37, 2,10,3,2,12,37, 2,10,2,2,13,37, + 2,10,2,4,2,5, 2,10,2,6,13,21, 2,9,12,5,2,6, 2,9,3,6,13,22, 2,8,12,5,2,7, 2,8,3,4,2,7, 2,8,3,6,13,23, 2,7,12,2,3,40, + 2,7,12,4,2,8, 2,7,12,5,2,8, 2,7,11,2,4,40, 2,7,10,2,5,40, 2,7,9,2,6,40, 2,7,8,2,7,40, 2,7,7,2,8,40, 2,7,6,2,9,40, + 2,7,5,2,10,40, 2,7,4,2,11,40, 2,7,4,4,2,8, 2,7,4,6,13,24, 2,6,11,2,4,41, 2,6,11,4,2,9, 2,6,11,5,2,9, 2,6,10,2,5,41, + 2,6,9,2,6,41, 2,6,8,2,7,41, 2,6,7,2,8,41, 2,6,6,2,9,41, 2,6,5,2,10,41, 2,6,5,6,13,25, 2,5,10,4,2,10, 2,5,10,5,2,10, + 2,5,4,3,11,42, 2,5,4,6,13,26, 2,4,9,5,2,11, 2,4,4,6,13,27, 2,3,9,2,6,44, 2,3,9,4,2,12, 2,3,9,5,2,12, 2,3,8,2,7,44, + 2,3,8,4,2,12, 2,3,7,2,8,44, 2,3,7,4,2,12, 2,3,6,2,9,44, 2,3,6,4,2,12, 2,3,5,2,10,44, 2,3,5,4,2,12, 2,3,4,2,11,44, + 2,3,4,4,2,12, 2,3,4,6,13,28, 3,13,12,2,3,34, 3,13,12,3,3,34, 3,13,12,5,3,2, 3,13,11,2,4,34, 3,13,11,3,4,34, 3,13,10,2,5,34, + 3,13,10,3,5,34, 3,13,9,2,6,34, 3,13,9,3,6,34, 3,13,8,2,7,34, 3,13,8,3,7,34, 3,13,7,2,8,34, 3,13,7,3,8,34, 3,13,6,2,9,34, + 3,13,6,3,9,34, 3,13,5,2,10,34, 3,13,5,3,10,34, 3,13,4,2,11,34, 3,13,4,3,11,34, 3,13,3,2,12,34, 3,13,3,3,12,34, 3,13,3,6,12,18, + 3,12,13,3,2,35, 3,12,13,5,3,3, 3,12,2,3,13,35, 3,12,2,6,12,19, 3,11,13,4,3,4, 3,11,13,5,3,4, 3,11,2,6,12,20, 3,10,12,5,3,5, + 3,10,2,4,3,5, 3,10,2,6,12,21, 3,9,12,5,3,6, 3,9,3,6,12,22, 3,8,12,5,3,7, 3,8,3,4,3,7, 3,8,3,6,12,23, 3,7,12,4,3,8, + 3,7,12,5,3,8, 3,7,4,4,3,8, 3,7,4,6,12,24, 3,6,11,4,3,9, 3,6,11,5,3,9, 3,6,5,6,12,25, 3,5,10,4,3,10, 3,5,10,5,3,10, + 3,5,4,3,11,42, 3,5,4,6,12,26, 3,4,9,5,3,11, 3,4,4,6,12,27, 3,3,9,5,3,12, 3,3,4,6,12,28, 3,2,10,2,5,45, 3,2,10,3,5,45, + 3,2,10,5,3,13, 3,2,9,2,6,45, 3,2,8,2,7,45, 3,2,7,2,8,45, 3,2,6,2,9,45, 3,2,5,2,10,45, 3,2,4,2,11,45, 3,2,4,4,3,13, + 3,2,4,6,12,29, 3,1,10,2,5,46, 3,1,10,4,3,14, 3,1,10,5,3,14, 3,1,9,2,6,46, 3,1,9,4,3,14, 3,1,8,2,7,46, 3,1,8,4,3,14, + 3,1,7,2,8,46, 3,1,7,4,3,14, 3,1,6,2,9,46, 3,1,6,4,3,14, 3,1,5,2,10,46, 3,1,5,4,3,14, 3,1,5,6,12,30, 4,14,11,2,4,33, + 4,14,11,3,4,33, 4,14,11,5,4,1, 4,14,10,2,5,33, 4,14,10,3,5,33, 4,14,9,2,6,33, 4,14,9,3,6,33, 4,14,8,2,7,33, 4,14,8,3,7,33, + 4,14,7,2,8,33, 4,14,7,3,8,33, 4,14,6,2,9,33, 4,14,6,3,9,33, 4,14,5,2,10,33, 4,14,5,3,10,33, 4,14,4,2,11,33, 4,14,4,3,11,33, + 4,14,4,6,11,17, 4,13,12,3,3,34, 4,13,12,5,4,2, 4,13,3,3,12,34, 4,13,3,6,11,18, 4,12,13,3,2,35, 4,12,13,5,4,3, 4,12,2,3,13,35, + 4,12,2,6,11,19, 4,11,13,4,4,4, 4,11,13,5,4,4, 4,11,2,6,11,20, 4,10,12,5,4,5, 4,10,2,4,4,5, 4,10,2,6,11,21, 4,9,12,5,4,6, + 4,9,3,6,11,22, 4,8,12,5,4,7, 4,8,3,4,4,7, 4,8,3,6,11,23, 4,7,12,4,4,8, 4,7,12,5,4,8, 4,7,4,4,4,8, 4,7,4,6,11,24, + 4,6,11,4,4,9, 4,6,11,5,4,9, 4,6,5,6,11,25, 4,5,10,4,4,10, 4,5,10,5,4,10, 4,5,4,3,11,42, 4,5,4,6,11,26, 4,4,9,5,4,11, + 4,4,4,6,11,27, 4,3,9,5,4,12, 4,3,4,6,11,28, 4,2,10,3,5,45, 4,2,10,5,4,13, 4,2,4,4,4,13, 4,2,4,6,11,29, 4,1,10,4,4,14, + 4,1,10,5,4,14, 4,1,5,4,4,14, 4,1,5,6,11,30, 4,0,9,2,6,47, 4,0,9,5,4,15, 4,0,8,2,7,47, 4,0,7,2,8,47, 4,0,6,2,9,47, + 4,0,6,6,11,31, 5,14,11,3,4,33, 5,14,11,5,5,1, 5,14,10,3,5,33, 5,14,9,3,6,33, 5,14,8,3,7,33, 5,14,7,3,8,33, 5,14,6,3,9,33, + 5,14,5,3,10,33, 5,14,4,3,11,33, 5,14,4,6,10,17, 5,13,12,3,3,34, 5,13,12,5,5,2, 5,13,3,3,12,34, 5,13,3,6,10,18, 5,12,13,3,2,35, + 5,12,13,5,5,3, 5,12,2,3,13,35, 5,12,2,6,10,19, 5,11,13,4,5,4, 5,11,13,5,5,4, 5,11,2,6,10,20, 5,10,12,5,5,5, 5,10,2,4,5,5, + 5,10,2,6,10,21, 5,9,12,5,5,6, 5,9,3,6,10,22, 5,8,12,5,5,7, 5,8,3,4,5,7, 5,8,3,6,10,23, 5,7,12,4,5,8, 5,7,12,5,5,8, + 5,7,4,4,5,8, 5,7,4,6,10,24, 5,6,11,4,5,9, 5,6,11,5,5,9, 5,6,5,6,10,25, 5,5,10,4,5,10, 5,5,10,5,5,10, 5,5,4,3,11,42, + 5,5,4,6,10,26, 5,4,9,5,5,11, 5,4,4,6,10,27, 5,3,9,5,5,12, 5,3,4,6,10,28, 5,2,10,3,5,45, 5,2,10,5,5,13, 5,2,4,4,5,13, + 5,2,4,6,10,29, 5,1,10,4,5,14, 5,1,10,5,5,14, 5,1,5,4,5,14, 5,1,5,6,10,30, 5,0,9,5,5,15, 5,0,6,6,10,31, 6,15,9,2,6,32, + 6,15,9,3,6,32, 6,15,9,5,6,0, 6,15,8,2,7,32, 6,15,8,3,7,32, 6,15,7,2,8,32, 6,15,7,3,8,32, 6,15,6,2,9,32, 6,15,6,3,9,32, + 6,15,6,6,9,16, 6,14,11,3,4,33, 6,14,11,5,6,1, 6,14,10,3,5,33, 6,14,5,3,10,33, 6,14,4,3,11,33, 6,14,4,6,9,17, 6,13,12,3,3,34, + 6,13,12,5,6,2, 6,13,3,3,12,34, 6,13,3,6,9,18, 6,12,13,3,2,35, 6,12,13,5,6,3, 6,12,2,3,13,35, 6,12,2,6,9,19, 6,11,13,4,6,4, + 6,11,13,5,6,4, 6,11,2,6,9,20, 6,10,12,5,6,5, 6,10,2,4,6,5, 6,10,2,6,9,21, 6,9,12,5,6,6, 6,9,3,6,9,22, 6,8,12,5,6,7, + 6,8,3,4,6,7, 6,8,3,6,9,23, 6,7,12,4,6,8, 6,7,12,5,6,8, 6,7,4,4,6,8, 6,7,4,6,9,24, 6,6,11,4,6,9, 6,6,11,5,6,9, + 6,6,5,6,9,25, 6,5,10,4,6,10, 6,5,10,5,6,10, 6,5,4,3,11,42, 6,5,4,6,9,26, 6,4,9,5,6,11, 6,4,4,6,9,27, 6,3,9,5,6,12, + 6,3,4,6,9,28, 6,2,10,3,5,45, 6,2,10,5,6,13, 6,2,4,4,6,13, 6,2,4,6,9,29, 6,1,10,4,6,14, 6,1,10,5,6,14, 6,1,5,4,6,14, + 6,1,5,6,9,30, 6,0,9,1,6,47, 6,0,9,5,6,15, 6,0,8,1,7,47, 6,0,7,1,8,47, 6,0,6,1,9,47, 6,0,6,6,9,31, 7,15,9,3,6,32, + 7,15,9,5,7,0, 7,15,8,3,7,32, 7,15,7,3,8,32, 7,15,6,3,9,32, 7,15,6,6,8,16, 7,14,11,3,4,33, 7,14,11,5,7,1, 7,14,10,3,5,33, + 7,14,5,3,10,33, 7,14,4,3,11,33, 7,14,4,6,8,17, 7,13,12,3,3,34, 7,13,12,5,7,2, 7,13,3,3,12,34, 7,13,3,6,8,18, 7,12,13,3,2,35, + 7,12,13,5,7,3, 7,12,2,3,13,35, 7,12,2,6,8,19, 7,11,13,4,7,4, 7,11,13,5,7,4, 7,11,2,6,8,20, 7,10,12,5,7,5, 7,10,2,4,7,5, + 7,10,2,6,8,21, 7,9,12,5,7,6, 7,9,3,6,8,22, 7,8,12,5,7,7, 7,8,3,4,7,7, 7,8,3,6,8,23, 7,7,12,4,7,8, 7,7,12,5,7,8, + 7,7,4,4,7,8, 7,7,4,6,8,24, 7,6,11,4,7,9, 7,6,11,5,7,9, 7,6,5,6,8,25, 7,5,10,4,7,10, 7,5,10,5,7,10, 7,5,4,3,11,42, + 7,5,4,6,8,26, 7,4,9,5,7,11, 7,4,4,6,8,27, 7,3,9,5,7,12, 7,3,4,6,8,28, 7,2,10,3,5,45, 7,2,10,5,7,13, 7,2,4,4,7,13, + 7,2,4,6,8,29, 7,1,10,4,7,14, 7,1,10,5,7,14, 7,1,9,4,7,14, 7,1,8,4,7,14, 7,1,7,4,7,14, 7,1,6,4,7,14, 7,1,5,4,7,14, + 7,1,5,6,8,30, 8,15,9,3,6,32, 8,15,9,5,8,0, 8,15,8,3,7,32, 8,15,7,3,8,32, 8,15,6,3,9,32, 8,15,6,6,7,16, 8,14,11,3,4,33, + 8,14,11,5,8,1, 8,14,10,3,5,33, 8,14,5,3,10,33, 8,14,4,3,11,33, 8,14,4,6,7,17, 8,13,12,3,3,34, 8,13,12,5,8,2, 8,13,3,3,12,34, + 8,13,3,6,7,18, 8,12,13,3,2,35, 8,12,13,5,8,3, 8,12,2,3,13,35, 8,12,2,6,7,19, 8,11,13,4,8,4, 8,11,13,5,8,4, 8,11,2,6,7,20, + 8,10,12,5,8,5, 8,10,2,4,8,5, 8,10,2,6,7,21, 8,9,12,5,8,6, 8,9,3,6,7,22, 8,8,12,5,8,7, 8,8,3,4,8,7, 8,8,3,6,7,23, + 8,7,12,4,8,8, 8,7,12,5,8,8, 8,7,4,4,8,8, 8,7,4,6,7,24, 8,6,11,4,8,9, 8,6,11,5,8,9, 8,6,5,6,7,25, 8,5,10,4,8,10, + 8,5,10,5,8,10, 8,5,4,3,11,42, 8,5,4,6,7,26, 8,4,9,5,8,11, 8,4,4,6,7,27, 8,3,9,5,8,12, 8,3,4,6,7,28, 8,2,10,3,5,45, + 8,2,10,5,8,13, 8,2,4,4,8,13, 8,2,4,6,7,29, 8,1,10,4,8,14, 8,1,10,5,8,14, 8,1,9,4,8,14, 8,1,8,4,8,14, 8,1,7,4,8,14, + 8,1,6,4,8,14, 8,1,5,4,8,14, 8,1,5,6,7,30, 9,15,9,1,6,32, 9,15,9,3,6,32, 9,15,9,5,9,0, 9,15,8,1,7,32, 9,15,8,3,7,32, + 9,15,7,1,8,32, 9,15,7,3,8,32, 9,15,6,1,9,32, 9,15,6,3,9,32, 9,15,6,6,6,16, 9,14,11,3,4,33, 9,14,11,5,9,1, 9,14,10,3,5,33, + 9,14,5,3,10,33, 9,14,4,3,11,33, 9,14,4,6,6,17, 9,13,12,3,3,34, 9,13,12,5,9,2, 9,13,3,3,12,34, 9,13,3,6,6,18, 9,12,13,3,2,35, + 9,12,13,5,9,3, 9,12,2,3,13,35, 9,12,2,6,6,19, 9,11,13,4,9,4, 9,11,13,5,9,4, 9,11,2,6,6,20, 9,10,12,5,9,5, 9,10,2,4,9,5, + 9,10,2,6,6,21, 9,9,12,5,9,6, 9,9,3,6,6,22, 9,8,12,5,9,7, 9,8,3,4,9,7, 9,8,3,6,6,23, 9,7,12,4,9,8, 9,7,12,5,9,8, + 9,7,4,4,9,8, 9,7,4,6,6,24, 9,6,11,4,9,9, 9,6,11,5,9,9, 9,6,5,6,6,25, 9,5,10,4,9,10, 9,5,10,5,9,10, 9,5,4,3,11,42, + 9,5,4,6,6,26, 9,4,9,5,9,11, 9,4,4,6,6,27, 9,3,9,5,9,12, 9,3,4,6,6,28, 9,2,10,3,5,45, 9,2,10,5,9,13, 9,2,4,4,9,13, + 9,2,4,6,6,29, 9,1,10,4,9,14, 9,1,10,5,9,14, 9,1,5,4,9,14, 9,1,5,6,6,30, 9,0,9,2,6,47, 9,0,9,5,9,15, 9,0,8,2,7,47, + 9,0,7,2,8,47, 9,0,6,2,9,47, 9,0,6,6,6,31, 10,14,11,3,4,33, 10,14,11,5,10,1, 10,14,10,3,5,33, 10,14,9,3,6,33, 10,14,8,3,7,33, + 10,14,7,3,8,33, 10,14,6,3,9,33, 10,14,5,3,10,33, 10,14,4,3,11,33, 10,14,4,6,5,17, 10,13,12,3,3,34, 10,13,12,5,10,2, 10,13,3,3,12,34, + 10,13,3,6,5,18, 10,12,13,3,2,35, 10,12,13,5,10,3, 10,12,2,3,13,35, 10,12,2,6,5,19, 10,11,13,4,10,4, 10,11,13,5,10,4, 10,11,2,6,5,20, + 10,10,12,5,10,5, 10,10,2,4,10,5, 10,10,2,6,5,21, 10,9,12,5,10,6, 10,9,3,6,5,22, 10,8,12,5,10,7, 10,8,3,4,10,7, 10,8,3,6,5,23, + 10,7,12,4,10,8, 10,7,12,5,10,8, 10,7,4,4,10,8, 10,7,4,6,5,24, 10,6,11,4,10,9, 10,6,11,5,10,9, 10,6,5,6,5,25, 10,5,10,4,10,10, + 10,5,10,5,10,10, 10,5,4,3,11,42, 10,5,4,6,5,26, 10,4,9,5,10,11, 10,4,4,6,5,27, 10,3,9,5,10,12, 10,3,4,6,5,28, 10,2,10,3,5,45, + 10,2,10,5,10,13, 10,2,4,4,10,13, 10,2,4,6,5,29, 10,1,10,4,10,14, 10,1,10,5,10,14, 10,1,5,4,10,14, 10,1,5,6,5,30, 10,0,9,5,10,15, + 10,0,6,6,5,31, 11,14,11,1,4,33, 11,14,11,3,4,33, 11,14,11,5,11,1, 11,14,10,1,5,33, 11,14,10,3,5,33, 11,14,9,1,6,33, 11,14,9,3,6,33, + 11,14,8,1,7,33, 11,14,8,3,7,33, 11,14,7,1,8,33, 11,14,7,3,8,33, 11,14,6,1,9,33, 11,14,6,3,9,33, 11,14,5,1,10,33, 11,14,5,3,10,33, + 11,14,4,1,11,33, 11,14,4,3,11,33, 11,14,4,6,4,17, 11,13,12,3,3,34, 11,13,12,5,11,2, 11,13,3,3,12,34, 11,13,3,6,4,18, 11,12,13,3,2,35, + 11,12,13,5,11,3, 11,12,2,3,13,35, 11,12,2,6,4,19, 11,11,13,4,11,4, 11,11,13,5,11,4, 11,11,2,6,4,20, 11,10,12,5,11,5, 11,10,2,4,11,5, + 11,10,2,6,4,21, 11,9,12,5,11,6, 11,9,3,6,4,22, 11,8,12,5,11,7, 11,8,3,4,11,7, 11,8,3,6,4,23, 11,7,12,4,11,8, 11,7,12,5,11,8, + 11,7,4,4,11,8, 11,7,4,6,4,24, 11,6,11,4,11,9, 11,6,11,5,11,9, 11,6,5,6,4,25, 11,5,10,4,11,10, 11,5,10,5,11,10, 11,5,4,3,11,42, + 11,5,4,6,4,26, 11,4,9,5,11,11, 11,4,4,6,4,27, 11,3,9,5,11,12, 11,3,4,6,4,28, 11,2,10,3,5,45, 11,2,10,5,11,13, 11,2,4,4,11,13, + 11,2,4,6,4,29, 11,1,10,4,11,14, 11,1,10,5,11,14, 11,1,5,4,11,14, 11,1,5,6,4,30, 11,0,9,1,6,47, 11,0,9,5,11,15, 11,0,8,1,7,47, + 11,0,7,1,8,47, 11,0,6,1,9,47, 11,0,6,6,4,31, 12,13,12,1,3,34, 12,13,12,3,3,34, 12,13,12,5,12,2, 12,13,11,1,4,34, 12,13,11,3,4,34, + 12,13,10,1,5,34, 12,13,10,3,5,34, 12,13,9,1,6,34, 12,13,9,3,6,34, 12,13,8,1,7,34, 12,13,8,3,7,34, 12,13,7,1,8,34, 12,13,7,3,8,34, + 12,13,6,1,9,34, 12,13,6,3,9,34, 12,13,5,1,10,34, 12,13,5,3,10,34, 12,13,4,1,11,34, 12,13,4,3,11,34, 12,13,3,1,12,34, 12,13,3,3,12,34, + 12,13,3,6,3,18, 12,12,13,3,2,35, 12,12,13,5,12,3, 12,12,2,3,13,35, 12,12,2,6,3,19, 12,11,13,4,12,4, 12,11,13,5,12,4, 12,11,2,6,3,20, + 12,10,12,5,12,5, 12,10,2,4,12,5, 12,10,2,6,3,21, 12,9,12,5,12,6, 12,9,3,6,3,22, 12,8,12,5,12,7, 12,8,3,4,12,7, 12,8,3,6,3,23, + 12,7,12,4,12,8, 12,7,12,5,12,8, 12,7,4,4,12,8, 12,7,4,6,3,24, 12,6,11,4,12,9, 12,6,11,5,12,9, 12,6,5,6,3,25, 12,5,10,4,12,10, + 12,5,10,5,12,10, 12,5,4,3,11,42, 12,5,4,6,3,26, 12,4,9,5,12,11, 12,4,4,6,3,27, 12,3,9,5,12,12, 12,3,4,6,3,28, 12,2,10,1,5,45, + 12,2,10,3,5,45, 12,2,10,5,12,13, 12,2,9,1,6,45, 12,2,8,1,7,45, 12,2,7,1,8,45, 12,2,6,1,9,45, 12,2,5,1,10,45, 12,2,4,1,11,45, + 12,2,4,4,12,13, 12,2,4,6,3,29, 12,1,10,1,5,46, 12,1,10,4,12,14, 12,1,10,5,12,14, 12,1,9,1,6,46, 12,1,9,4,12,14, 12,1,8,1,7,46, + 12,1,8,4,12,14, 12,1,7,1,8,46, 12,1,7,4,12,14, 12,1,6,1,9,46, 12,1,6,4,12,14, 12,1,5,1,10,46, 12,1,5,4,12,14, 12,1,5,6,3,30, + 13,12,13,1,2,35, 13,12,13,3,2,35, 13,12,13,5,13,3, 13,12,12,1,3,35, 13,12,12,3,3,35, 13,12,11,1,4,35, 13,12,11,3,4,35, 13,12,10,1,5,35, + 13,12,10,3,5,35, 13,12,9,1,6,35, 13,12,9,3,6,35, 13,12,8,1,7,35, 13,12,8,3,7,35, 13,12,7,1,8,35, 13,12,7,3,8,35, 13,12,6,1,9,35, + 13,12,6,3,9,35, 13,12,5,1,10,35, 13,12,5,3,10,35, 13,12,4,1,11,35, 13,12,4,3,11,35, 13,12,3,1,12,35, 13,12,3,3,12,35, 13,12,2,1,13,35, + 13,12,2,3,13,35, 13,12,2,6,2,19, 13,11,13,1,2,36, 13,11,13,4,13,4, 13,11,13,5,13,4, 13,11,12,1,3,36, 13,11,11,1,4,36, 13,11,10,1,5,36, + 13,11,9,1,6,36, 13,11,8,1,7,36, 13,11,7,1,8,36, 13,11,6,1,9,36, 13,11,5,1,10,36, 13,11,4,1,11,36, 13,11,3,1,12,36, 13,11,2,1,13,36, + 13,11,2,6,2,20, 13,10,12,1,3,37, 13,10,12,5,13,5, 13,10,11,1,4,37, 13,10,10,1,5,37, 13,10,9,1,6,37, 13,10,8,1,7,37, 13,10,7,1,8,37, + 13,10,6,1,9,37, 13,10,5,1,10,37, 13,10,4,1,11,37, 13,10,3,1,12,37, 13,10,2,1,13,37, 13,10,2,4,13,5, 13,10,2,6,2,21, 13,9,12,5,13,6, + 13,9,3,6,2,22, 13,8,12,5,13,7, 13,8,3,4,13,7, 13,8,3,6,2,23, 13,7,12,1,3,40, 13,7,12,4,13,8, 13,7,12,5,13,8, 13,7,11,1,4,40, + 13,7,10,1,5,40, 13,7,9,1,6,40, 13,7,8,1,7,40, 13,7,7,1,8,40, 13,7,6,1,9,40, 13,7,5,1,10,40, 13,7,4,1,11,40, 13,7,4,4,13,8, + 13,7,4,6,2,24, 13,6,11,1,4,41, 13,6,11,4,13,9, 13,6,11,5,13,9, 13,6,10,1,5,41, 13,6,9,1,6,41, 13,6,8,1,7,41, 13,6,7,1,8,41, + 13,6,6,1,9,41, 13,6,5,1,10,41, 13,6,5,6,2,25, 13,5,10,4,13,10, 13,5,10,5,13,10, 13,5,4,3,11,42, 13,5,4,6,2,26, 13,4,9,5,13,11, + 13,4,4,6,2,27, 13,3,9,1,6,44, 13,3,9,4,13,12, 13,3,9,5,13,12, 13,3,8,1,7,44, 13,3,8,4,13,12, 13,3,7,1,8,44, 13,3,7,4,13,12, + 13,3,6,1,9,44, 13,3,6,4,13,12, 13,3,5,1,10,44, 13,3,5,4,13,12, 13,3,4,1,11,44, 13,3,4,4,13,12, 13,3,4,6,2,28, 14,9,12,1,3,38, + 14,9,12,3,3,38, 14,9,12,5,14,6, 14,9,11,1,4,38, 14,9,11,3,4,38, 14,9,10,1,5,38, 14,9,10,3,5,38, 14,9,9,1,6,38, 14,9,9,3,6,38, + 14,9,8,1,7,38, 14,9,8,3,7,38, 14,9,7,1,8,38, 14,9,7,3,8,38, 14,9,6,1,9,38, 14,9,6,3,9,38, 14,9,5,1,10,38, 14,9,5,3,10,38, + 14,9,4,1,11,38, 14,9,4,3,11,38, 14,9,3,1,12,38, 14,9,3,3,12,38, 14,9,3,6,1,22, 14,8,12,1,3,39, 14,8,12,4,14,7, 14,8,12,5,14,7, + 14,8,11,1,4,39, 14,8,11,4,14,7, 14,8,10,1,5,39, 14,8,10,4,14,7, 14,8,9,1,6,39, 14,8,9,4,14,7, 14,8,8,1,7,39, 14,8,8,4,14,7, + 14,8,7,1,8,39, 14,8,7,4,14,7, 14,8,6,1,9,39, 14,8,6,4,14,7, 14,8,5,1,10,39, 14,8,5,4,14,7, 14,8,4,1,11,39, 14,8,4,4,14,7, + 14,8,3,1,12,39, 14,8,3,4,14,7, 14,8,3,6,1,23, 14,5,10,1,5,42, 14,5,10,3,5,42, 14,5,10,4,14,10, 14,5,10,5,14,10, 14,5,9,1,6,42, + 14,5,9,3,6,42, 14,5,8,1,7,42, 14,5,8,3,7,42, 14,5,7,1,8,42, 14,5,7,3,8,42, 14,5,6,1,9,42, 14,5,6,3,9,42, 14,5,5,1,10,42, + 14,5,5,3,10,42, 14,5,4,1,11,42, 14,5,4,3,11,42, 14,5,4,6,1,26, 14,4,9,1,6,43, 14,4,9,4,14,11, 14,4,9,5,14,11, 14,4,8,1,7,43, + 14,4,8,4,14,11, 14,4,7,1,8,43, 14,4,7,4,14,11, 14,4,6,1,9,43, 14,4,6,4,14,11, 14,4,5,1,10,43, 14,4,5,4,14,11, 14,4,4,1,11,43, + 14,4,4,4,14,11, 14,4,4,6,1,27, + }, + }, + walk = { + frames = { 3, 4, 5 }, + voxels = 1590, + count = 1044, + faces = { + 1,8,12,2,3,87, 1,8,12,3,3,87, 1,8,12,5,1,55, 1,8,11,2,4,87, 1,8,11,3,4,87, 1,8,10,2,5,87, 1,8,10,3,5,87, 1,8,9,2,6,87, + 1,8,9,3,6,87, 1,8,8,2,7,87, 1,8,8,3,7,87, 1,8,7,2,8,87, 1,8,7,3,8,87, 1,8,6,2,9,87, 1,8,6,3,9,87, 1,8,5,2,10,87, + 1,8,5,3,10,87, 1,8,4,2,11,87, 1,8,4,3,11,87, 1,8,3,2,12,87, 1,8,3,3,12,87, 1,8,3,6,14,71, 1,7,12,2,3,88, 1,7,12,5,1,56, + 1,7,11,2,4,88, 1,7,10,2,5,88, 1,7,9,2,6,88, 1,7,8,2,7,88, 1,7,7,2,8,88, 1,7,6,2,9,88, 1,7,5,2,10,88, 1,7,4,2,11,88, + 1,7,3,2,12,88, 1,7,3,4,1,56, 1,7,3,6,14,72, 1,6,12,2,3,89, 1,6,12,4,1,57, 1,6,12,5,1,57, 1,6,11,2,4,89, 1,6,10,2,5,89, + 1,6,9,2,6,89, 1,6,8,2,7,89, 1,6,7,2,8,89, 1,6,6,2,9,89, 1,6,5,2,10,89, 1,6,4,2,11,89, 1,6,4,6,14,73, 1,5,11,2,4,90, + 1,5,11,4,1,58, 1,5,11,5,1,58, 1,5,10,2,5,90, 1,5,9,2,6,90, 1,5,8,2,7,90, 1,5,7,2,8,90, 1,5,6,2,9,90, 1,5,5,2,10,90, + 1,5,4,2,11,90, 1,5,4,6,1,58, 1,4,10,2,5,91, 1,4,10,5,14,75, 1,4,9,2,6,91, 1,4,8,2,7,91, 1,4,7,2,8,91, 1,4,6,2,9,91, + 1,4,5,2,10,91, 1,4,4,2,11,91, 1,4,4,6,14,75, 1,3,12,2,3,92, 1,3,12,3,3,92, 1,3,12,4,14,76, 1,3,12,5,14,76, 1,3,11,2,4,92, + 1,3,11,3,4,92, 1,3,11,4,14,76, 1,3,10,2,5,92, 1,3,10,4,14,76, 1,3,9,2,6,92, 1,3,9,4,14,76, 1,3,8,2,7,92, 1,3,8,4,14,76, + 1,3,7,2,8,92, 1,3,7,4,14,76, 1,3,6,2,9,92, 1,3,6,4,14,76, 1,3,5,2,10,92, 1,3,5,4,14,76, 1,3,4,2,11,92, 1,3,4,4,14,76, + 1,3,3,2,12,92, 1,3,3,3,12,92, 1,3,3,4,14,76, 1,3,3,6,14,76, 2,11,13,2,2,84, 2,11,13,3,2,84, 2,11,13,5,2,52, 2,11,12,2,3,84, + 2,11,12,3,3,84, 2,11,11,2,4,84, 2,11,11,3,4,84, 2,11,10,2,5,84, 2,11,10,3,5,84, 2,11,9,2,6,84, 2,11,9,3,6,84, 2,11,8,2,7,84, + 2,11,8,3,7,84, 2,11,7,2,8,84, 2,11,7,3,8,84, 2,11,6,2,9,84, 2,11,6,3,9,84, 2,11,5,2,10,84, 2,11,5,3,10,84, 2,11,4,2,11,84, + 2,11,4,3,11,84, 2,11,3,2,12,84, 2,11,3,3,12,84, 2,11,2,2,13,84, 2,11,2,3,13,84, 2,11,2,6,13,68, 2,10,13,2,2,85, 2,10,13,4,2,53, + 2,10,13,5,2,53, 2,10,12,2,3,85, 2,10,11,2,4,85, 2,10,10,2,5,85, 2,10,9,2,6,85, 2,10,8,2,7,85, 2,10,7,2,8,85, 2,10,6,2,9,85, + 2,10,5,2,10,85, 2,10,4,2,11,85, 2,10,3,2,12,85, 2,10,2,2,13,85, 2,10,2,6,13,69, 2,9,12,2,3,86, 2,9,12,5,2,54, 2,9,11,2,4,86, + 2,9,10,2,5,86, 2,9,9,2,6,86, 2,9,8,2,7,86, 2,9,7,2,8,86, 2,9,6,2,9,86, 2,9,5,2,10,86, 2,9,4,2,11,86, 2,9,3,2,12,86, + 2,9,2,2,13,86, 2,9,2,4,2,54, 2,9,2,6,13,70, 2,8,12,5,2,55, 2,8,3,6,13,71, 2,7,12,5,2,56, 2,7,3,4,2,56, 2,7,3,6,13,72, + 2,6,12,4,2,57, 2,6,12,5,2,57, 2,6,4,6,13,73, 2,5,11,4,2,58, 2,5,11,5,2,58, 2,5,4,6,13,74, 2,4,10,5,2,59, 2,4,4,6,13,75, + 2,3,12,3,3,92, 2,3,12,5,13,76, 2,3,11,3,4,92, 2,3,3,3,12,92, 2,3,3,6,13,76, 2,2,13,2,2,93, 2,2,13,3,2,93, 2,2,13,4,13,77, + 2,2,13,5,13,77, 2,2,12,2,3,93, 2,2,12,4,13,77, 2,2,11,2,4,93, 2,2,11,4,13,77, 2,2,10,2,5,93, 2,2,10,4,13,77, 2,2,9,2,6,93, + 2,2,9,4,13,77, 2,2,8,2,7,93, 2,2,8,4,13,77, 2,2,7,2,8,93, 2,2,7,4,13,77, 2,2,6,2,9,93, 2,2,6,4,13,77, 2,2,5,2,10,93, + 2,2,5,4,13,77, 2,2,4,2,11,93, 2,2,4,4,13,77, 2,2,3,2,12,93, 2,2,3,4,13,77, 2,2,2,2,13,93, 2,2,2,3,13,93, 2,2,2,4,13,77, + 2,2,2,6,13,77, 3,12,12,2,3,83, 3,12,12,3,3,83, 3,12,12,5,3,51, 3,12,11,2,4,83, 3,12,11,3,4,83, 3,12,10,2,5,83, 3,12,10,3,5,83, + 3,12,9,2,6,83, 3,12,9,3,6,83, 3,12,8,2,7,83, 3,12,8,3,7,83, 3,12,7,2,8,83, 3,12,7,3,8,83, 3,12,6,2,9,83, 3,12,6,3,9,83, + 3,12,5,2,10,83, 3,12,5,3,10,83, 3,12,4,2,11,83, 3,12,4,3,11,83, 3,12,3,2,12,83, 3,12,3,3,12,83, 3,12,3,6,12,67, 3,11,13,3,2,84, + 3,11,13,5,3,52, 3,11,2,3,13,84, 3,11,2,6,12,68, 3,10,13,4,3,53, 3,10,13,5,3,53, 3,10,2,6,12,69, 3,9,12,5,3,54, 3,9,2,4,3,54, + 3,9,2,6,12,70, 3,8,12,5,3,55, 3,8,3,6,12,71, 3,7,12,5,3,56, 3,7,3,4,3,56, 3,7,3,6,12,72, 3,6,12,4,3,57, 3,6,12,5,3,57, + 3,6,4,6,12,73, 3,5,11,4,3,58, 3,5,11,5,3,58, 3,5,4,6,12,74, 3,4,10,5,3,59, 3,4,4,6,12,75, 3,3,12,3,3,92, 3,3,12,5,12,76, + 3,3,11,3,4,92, 3,3,3,3,12,92, 3,3,3,6,12,76, 3,2,13,3,2,93, 3,2,13,4,12,77, 3,2,13,5,12,77, 3,2,12,4,12,77, 3,2,11,4,12,77, + 3,2,10,4,12,77, 3,2,9,4,12,77, 3,2,8,4,12,77, 3,2,7,4,12,77, 3,2,6,4,12,77, 3,2,5,4,12,77, 3,2,4,4,12,77, 3,2,3,4,12,77, + 3,2,2,3,13,93, 3,2,2,4,12,77, 3,2,2,6,12,77, 4,13,11,2,4,82, 4,13,11,3,4,82, 4,13,11,5,4,50, 4,13,10,2,5,82, 4,13,10,3,5,82, + 4,13,9,2,6,82, 4,13,9,3,6,82, 4,13,8,2,7,82, 4,13,8,3,7,82, 4,13,7,2,8,82, 4,13,7,3,8,82, 4,13,6,2,9,82, 4,13,6,3,9,82, + 4,13,5,2,10,82, 4,13,5,3,10,82, 4,13,4,2,11,82, 4,13,4,3,11,82, 4,13,4,6,11,66, 4,12,12,3,3,83, 4,12,12,5,4,51, 4,12,3,3,12,83, + 4,12,3,6,11,67, 4,11,13,3,2,84, 4,11,13,5,4,52, 4,11,2,3,13,84, 4,11,2,6,11,68, 4,10,13,4,4,53, 4,10,13,5,4,53, 4,10,2,6,11,69, + 4,9,12,5,4,54, 4,9,2,4,4,54, 4,9,2,6,11,70, 4,8,12,5,4,55, 4,8,3,6,11,71, 4,7,12,5,4,56, 4,7,3,4,4,56, 4,7,3,6,11,72, + 4,6,12,4,4,57, 4,6,12,5,4,57, 4,6,4,6,11,73, 4,5,11,4,4,58, 4,5,11,5,4,58, 4,5,4,6,11,74, 4,4,10,5,4,59, 4,4,4,6,11,75, + 4,3,12,3,3,92, 4,3,12,5,4,60, 4,3,11,3,4,92, 4,3,3,3,12,92, 4,3,3,6,11,76, 4,2,13,3,2,93, 4,2,13,4,4,61, 4,2,13,5,4,61, + 4,2,2,3,13,93, 4,2,2,6,11,77, 4,1,12,2,3,94, 4,1,12,4,4,62, 4,1,12,5,4,62, 4,1,11,2,4,94, 4,1,11,4,4,62, 4,1,10,2,5,94, + 4,1,10,4,4,62, 4,1,9,2,6,94, 4,1,9,4,4,62, 4,1,8,2,7,94, 4,1,8,4,4,62, 4,1,7,2,8,94, 4,1,7,4,4,62, 4,1,6,2,9,94, + 4,1,6,4,4,62, 4,1,5,2,10,94, 4,1,5,4,4,62, 4,1,4,2,11,94, 4,1,4,4,4,62, 4,1,3,2,12,94, 4,1,3,4,4,62, 4,1,2,2,13,94, + 4,1,2,4,4,62, 4,1,2,6,4,62, 5,13,11,3,4,82, 5,13,11,5,5,50, 5,13,10,3,5,82, 5,13,9,3,6,82, 5,13,8,3,7,82, 5,13,7,3,8,82, + 5,13,6,3,9,82, 5,13,5,3,10,82, 5,13,4,3,11,82, 5,13,4,6,10,66, 5,12,12,3,3,83, 5,12,12,5,5,51, 5,12,3,3,12,83, 5,12,3,6,10,67, + 5,11,13,3,2,84, 5,11,13,5,5,52, 5,11,2,3,13,84, 5,11,2,6,10,68, 5,10,13,4,5,53, 5,10,13,5,5,53, 5,10,2,6,10,69, 5,9,12,5,5,54, + 5,9,2,4,5,54, 5,9,2,6,10,70, 5,8,12,5,5,55, 5,8,3,6,10,71, 5,7,12,5,5,56, 5,7,3,4,5,56, 5,7,3,6,10,72, 5,6,12,4,5,57, + 5,6,12,5,5,57, 5,6,4,6,10,73, 5,5,11,4,5,58, 5,5,11,5,5,58, 5,5,4,6,10,74, 5,4,10,5,5,59, 5,4,4,6,10,75, 5,3,12,3,3,92, + 5,3,12,5,5,60, 5,3,11,3,4,92, 5,3,3,3,12,92, 5,3,3,6,10,76, 5,2,13,3,2,93, 5,2,13,4,5,61, 5,2,13,5,5,61, 5,2,2,3,13,93, + 5,2,2,6,10,77, 5,1,12,4,5,62, 5,1,12,5,5,62, 5,1,8,4,5,62, 5,1,7,4,5,62, 5,1,6,4,5,62, 5,1,5,4,5,62, 5,1,2,4,5,62, + 5,1,2,6,5,62, 5,0,11,2,4,95, 5,0,11,5,5,63, 5,0,10,2,5,95, 5,0,9,2,6,95, 5,0,9,6,5,63, 5,0,4,2,11,95, 5,0,4,5,5,63, + 5,0,3,2,12,95, 5,0,3,6,5,63, 6,14,9,2,6,81, 6,14,9,3,6,81, 6,14,9,5,6,49, 6,14,8,2,7,81, 6,14,8,3,7,81, 6,14,7,2,8,81, + 6,14,7,3,8,81, 6,14,6,2,9,81, 6,14,6,3,9,81, 6,14,6,6,9,65, 6,13,11,3,4,82, 6,13,11,5,6,50, 6,13,10,3,5,82, 6,13,5,3,10,82, + 6,13,4,3,11,82, 6,13,4,6,9,66, 6,12,12,3,3,83, 6,12,12,5,6,51, 6,12,3,3,12,83, 6,12,3,6,9,67, 6,11,13,3,2,84, 6,11,13,5,6,52, + 6,11,2,3,13,84, 6,11,2,6,9,68, 6,10,13,4,6,53, 6,10,13,5,6,53, 6,10,2,6,9,69, 6,9,12,5,6,54, 6,9,2,4,6,54, 6,9,2,6,9,70, + 6,8,12,5,6,55, 6,8,3,6,9,71, 6,7,12,5,6,56, 6,7,3,4,6,56, 6,7,3,6,9,72, 6,6,12,4,6,57, 6,6,12,5,6,57, 6,6,4,6,9,73, + 6,5,11,4,6,58, 6,5,11,5,6,58, 6,5,4,6,9,74, 6,4,10,5,6,59, 6,4,4,6,9,75, 6,3,12,3,3,92, 6,3,12,5,6,60, 6,3,11,3,4,92, + 6,3,3,3,12,92, 6,3,3,6,9,76, 6,2,13,3,2,93, 6,2,13,4,6,61, 6,2,13,5,6,61, 6,2,2,3,13,93, 6,2,2,6,9,77, 6,1,12,4,6,62, + 6,1,12,5,6,62, 6,1,8,4,6,62, 6,1,7,4,6,62, 6,1,6,4,6,62, 6,1,5,4,6,62, 6,1,2,4,6,62, 6,1,2,6,6,62, 6,0,11,5,6,63, + 6,0,9,6,6,63, 6,0,4,5,6,63, 6,0,3,6,6,63, 7,14,9,3,6,81, 7,14,9,5,7,49, 7,14,8,3,7,81, 7,14,7,3,8,81, 7,14,6,3,9,81, + 7,14,6,6,8,65, 7,13,11,3,4,82, 7,13,11,5,7,50, 7,13,10,3,5,82, 7,13,5,3,10,82, 7,13,4,3,11,82, 7,13,4,6,8,66, 7,12,12,3,3,83, + 7,12,12,5,7,51, 7,12,3,3,12,83, 7,12,3,6,8,67, 7,11,13,3,2,84, 7,11,13,5,7,52, 7,11,2,3,13,84, 7,11,2,6,8,68, 7,10,13,4,7,53, + 7,10,13,5,7,53, 7,10,2,6,8,69, 7,9,12,5,7,54, 7,9,2,4,7,54, 7,9,2,6,8,70, 7,8,12,5,7,55, 7,8,3,6,8,71, 7,7,12,5,7,56, + 7,7,3,4,7,56, 7,7,3,6,8,72, 7,6,12,4,7,57, 7,6,12,5,7,57, 7,6,4,6,8,73, 7,5,11,4,7,58, 7,5,11,5,7,58, 7,5,4,6,8,74, + 7,4,10,5,7,59, 7,4,4,6,8,75, 7,3,12,3,3,92, 7,3,12,5,7,60, 7,3,11,3,4,92, 7,3,3,3,12,92, 7,3,3,6,8,76, 7,2,13,3,2,93, + 7,2,13,4,7,61, 7,2,13,5,7,61, 7,2,2,3,13,93, 7,2,2,6,8,77, 7,1,12,4,7,62, 7,1,12,5,7,62, 7,1,8,4,7,62, 7,1,7,4,7,62, + 7,1,6,4,7,62, 7,1,5,4,7,62, 7,1,2,4,7,62, 7,1,2,6,8,78, 7,0,11,1,4,95, 7,0,11,5,7,63, 7,0,10,1,5,95, 7,0,9,1,6,95, + 7,0,9,6,7,63, 7,0,4,1,11,95, 7,0,4,5,7,63, 7,0,3,1,12,95, 7,0,3,6,7,63, 8,14,9,3,6,81, 8,14,9,5,8,49, 8,14,8,3,7,81, + 8,14,7,3,8,81, 8,14,6,3,9,81, 8,14,6,6,7,65, 8,13,11,3,4,82, 8,13,11,5,8,50, 8,13,10,3,5,82, 8,13,5,3,10,82, 8,13,4,3,11,82, + 8,13,4,6,7,66, 8,12,12,3,3,83, 8,12,12,5,8,51, 8,12,3,3,12,83, 8,12,3,6,7,67, 8,11,13,3,2,84, 8,11,13,5,8,52, 8,11,2,3,13,84, + 8,11,2,6,7,68, 8,10,13,4,8,53, 8,10,13,5,8,53, 8,10,2,6,7,69, 8,9,12,5,8,54, 8,9,2,4,8,54, 8,9,2,6,7,70, 8,8,12,5,8,55, + 8,8,3,6,7,71, 8,7,12,5,8,56, 8,7,3,4,8,56, 8,7,3,6,7,72, 8,6,12,4,8,57, 8,6,12,5,8,57, 8,6,4,6,7,73, 8,5,11,4,8,58, + 8,5,11,5,8,58, 8,5,4,6,7,74, 8,4,10,5,8,59, 8,4,4,6,7,75, 8,3,12,3,3,92, 8,3,12,5,8,60, 8,3,11,3,4,92, 8,3,3,3,12,92, + 8,3,3,6,7,76, 8,2,13,3,2,93, 8,2,13,4,8,61, 8,2,13,5,8,61, 8,2,2,3,13,93, 8,2,2,6,7,77, 8,1,12,4,8,62, 8,1,12,5,8,62, + 8,1,11,4,8,62, 8,1,10,4,8,62, 8,1,9,4,8,62, 8,1,8,4,8,62, 8,1,7,4,8,62, 8,1,6,4,8,62, 8,1,5,4,8,62, 8,1,4,4,8,62, + 8,1,3,4,8,62, 8,1,2,4,8,62, 8,1,2,6,7,78, 9,14,9,1,6,81, 9,14,9,3,6,81, 9,14,9,5,9,49, 9,14,8,1,7,81, 9,14,8,3,7,81, + 9,14,7,1,8,81, 9,14,7,3,8,81, 9,14,6,1,9,81, 9,14,6,3,9,81, 9,14,6,6,6,65, 9,13,11,3,4,82, 9,13,11,5,9,50, 9,13,10,3,5,82, + 9,13,5,3,10,82, 9,13,4,3,11,82, 9,13,4,6,6,66, 9,12,12,3,3,83, 9,12,12,5,9,51, 9,12,3,3,12,83, 9,12,3,6,6,67, 9,11,13,3,2,84, + 9,11,13,5,9,52, 9,11,2,3,13,84, 9,11,2,6,6,68, 9,10,13,4,9,53, 9,10,13,5,9,53, 9,10,2,6,6,69, 9,9,12,5,9,54, 9,9,2,4,9,54, + 9,9,2,6,6,70, 9,8,12,5,9,55, 9,8,3,6,6,71, 9,7,12,5,9,56, 9,7,3,4,9,56, 9,7,3,6,6,72, 9,6,12,4,9,57, 9,6,12,5,9,57, + 9,6,4,6,6,73, 9,5,11,4,9,58, 9,5,11,5,9,58, 9,5,4,6,6,74, 9,4,10,5,9,59, 9,4,4,6,6,75, 9,3,12,3,3,92, 9,3,12,5,9,60, + 9,3,11,3,4,92, 9,3,3,3,12,92, 9,3,3,6,6,76, 9,2,13,3,2,93, 9,2,13,4,9,61, 9,2,13,5,9,61, 9,2,2,3,13,93, 9,2,2,6,6,77, + 9,1,12,4,6,78, 9,1,12,5,6,78, 9,1,8,4,6,78, 9,1,7,4,6,78, 9,1,6,4,6,78, 9,1,5,4,6,78, 9,1,2,4,6,78, 9,1,2,6,6,78, + 9,0,11,2,4,95, 9,0,11,5,6,79, 9,0,10,2,5,95, 9,0,9,2,6,95, 9,0,9,6,6,79, 9,0,4,2,11,95, 9,0,4,5,6,79, 9,0,3,2,12,95, + 9,0,3,6,6,79, 10,13,11,3,4,82, 10,13,11,5,10,50, 10,13,10,3,5,82, 10,13,9,3,6,82, 10,13,8,3,7,82, 10,13,7,3,8,82, 10,13,6,3,9,82, + 10,13,5,3,10,82, 10,13,4,3,11,82, 10,13,4,6,5,66, 10,12,12,3,3,83, 10,12,12,5,10,51, 10,12,3,3,12,83, 10,12,3,6,5,67, 10,11,13,3,2,84, + 10,11,13,5,10,52, 10,11,2,3,13,84, 10,11,2,6,5,68, 10,10,13,4,10,53, 10,10,13,5,10,53, 10,10,2,6,5,69, 10,9,12,5,10,54, 10,9,2,4,10,54, + 10,9,2,6,5,70, 10,8,12,5,10,55, 10,8,3,6,5,71, 10,7,12,5,10,56, 10,7,3,4,10,56, 10,7,3,6,5,72, 10,6,12,4,10,57, 10,6,12,5,10,57, + 10,6,4,6,5,73, 10,5,11,4,10,58, 10,5,11,5,10,58, 10,5,4,6,5,74, 10,4,10,5,10,59, 10,4,4,6,5,75, 10,3,12,3,3,92, 10,3,12,5,10,60, + 10,3,11,3,4,92, 10,3,3,3,12,92, 10,3,3,6,5,76, 10,2,13,3,2,93, 10,2,13,4,10,61, 10,2,13,5,10,61, 10,2,2,3,13,93, 10,2,2,6,5,77, + 10,1,12,4,10,62, 10,1,12,5,10,62, 10,1,8,4,10,62, 10,1,7,4,10,62, 10,1,6,4,10,62, 10,1,5,4,10,62, 10,1,2,4,10,62, 10,1,2,6,5,78, + 10,0,11,5,5,79, 10,0,9,6,5,79, 10,0,4,5,5,79, 10,0,3,6,5,79, 11,13,11,1,4,82, 11,13,11,3,4,82, 11,13,11,5,11,50, 11,13,10,1,5,82, + 11,13,10,3,5,82, 11,13,9,1,6,82, 11,13,9,3,6,82, 11,13,8,1,7,82, 11,13,8,3,7,82, 11,13,7,1,8,82, 11,13,7,3,8,82, 11,13,6,1,9,82, + 11,13,6,3,9,82, 11,13,5,1,10,82, 11,13,5,3,10,82, 11,13,4,1,11,82, 11,13,4,3,11,82, 11,13,4,6,4,66, 11,12,12,3,3,83, 11,12,12,5,11,51, + 11,12,3,3,12,83, 11,12,3,6,4,67, 11,11,13,3,2,84, 11,11,13,5,11,52, 11,11,2,3,13,84, 11,11,2,6,4,68, 11,10,13,4,11,53, 11,10,13,5,11,53, + 11,10,2,6,4,69, 11,9,12,5,11,54, 11,9,2,4,11,54, 11,9,2,6,4,70, 11,8,12,5,11,55, 11,8,3,6,4,71, 11,7,12,5,11,56, 11,7,3,4,11,56, + 11,7,3,6,4,72, 11,6,12,4,11,57, 11,6,12,5,11,57, 11,6,4,6,4,73, 11,5,11,4,11,58, 11,5,11,5,11,58, 11,5,4,6,4,74, 11,4,10,5,11,59, + 11,4,4,6,4,75, 11,3,12,3,3,92, 11,3,12,5,11,60, 11,3,11,3,4,92, 11,3,3,3,12,92, 11,3,3,6,4,76, 11,2,13,3,2,93, 11,2,13,4,11,61, + 11,2,13,5,11,61, 11,2,2,3,13,93, 11,2,2,6,4,77, 11,1,12,4,11,62, 11,1,12,5,11,62, 11,1,8,4,11,62, 11,1,7,4,11,62, 11,1,6,4,11,62, + 11,1,5,4,11,62, 11,1,2,4,11,62, 11,1,2,6,4,78, 11,0,11,1,4,95, 11,0,11,5,4,79, 11,0,10,1,5,95, 11,0,9,1,6,95, 11,0,9,6,4,79, + 11,0,4,1,11,95, 11,0,4,5,4,79, 11,0,3,1,12,95, 11,0,3,6,4,79, 12,12,12,1,3,83, 12,12,12,3,3,83, 12,12,12,5,12,51, 12,12,11,1,4,83, + 12,12,11,3,4,83, 12,12,10,1,5,83, 12,12,10,3,5,83, 12,12,9,1,6,83, 12,12,9,3,6,83, 12,12,8,1,7,83, 12,12,8,3,7,83, 12,12,7,1,8,83, + 12,12,7,3,8,83, 12,12,6,1,9,83, 12,12,6,3,9,83, 12,12,5,1,10,83, 12,12,5,3,10,83, 12,12,4,1,11,83, 12,12,4,3,11,83, 12,12,3,1,12,83, + 12,12,3,3,12,83, 12,12,3,6,3,67, 12,11,13,3,2,84, 12,11,13,5,12,52, 12,11,2,3,13,84, 12,11,2,6,3,68, 12,10,13,4,12,53, 12,10,13,5,12,53, + 12,10,2,6,3,69, 12,9,12,5,12,54, 12,9,2,4,12,54, 12,9,2,6,3,70, 12,8,12,5,12,55, 12,8,3,6,3,71, 12,7,12,5,12,56, 12,7,3,4,12,56, + 12,7,3,6,3,72, 12,6,12,4,12,57, 12,6,12,5,12,57, 12,6,4,6,3,73, 12,5,11,4,12,58, 12,5,11,5,12,58, 12,5,4,6,3,74, 12,4,10,5,12,59, + 12,4,4,6,3,75, 12,3,12,1,3,92, 12,3,12,3,3,92, 12,3,12,5,12,60, 12,3,11,1,4,92, 12,3,11,3,4,92, 12,3,10,1,5,92, 12,3,9,1,6,92, + 12,3,8,1,7,92, 12,3,7,1,8,92, 12,3,6,1,9,92, 12,3,5,1,10,92, 12,3,4,1,11,92, 12,3,3,1,12,92, 12,3,3,3,12,92, 12,3,3,6,3,76, + 12,2,13,1,2,93, 12,2,13,3,2,93, 12,2,13,4,12,61, 12,2,13,5,12,61, 12,2,12,1,3,93, 12,2,11,1,4,93, 12,2,10,1,5,93, 12,2,9,1,6,93, + 12,2,8,1,7,93, 12,2,7,1,8,93, 12,2,6,1,9,93, 12,2,5,1,10,93, 12,2,4,1,11,93, 12,2,3,1,12,93, 12,2,2,1,13,93, 12,2,2,3,13,93, + 12,2,2,6,3,77, 12,1,12,1,3,94, 12,1,12,4,3,78, 12,1,12,5,3,78, 12,1,11,1,4,94, 12,1,11,4,3,78, 12,1,10,1,5,94, 12,1,10,4,3,78, + 12,1,9,1,6,94, 12,1,9,4,3,78, 12,1,8,1,7,94, 12,1,8,4,3,78, 12,1,7,1,8,94, 12,1,7,4,3,78, 12,1,6,1,9,94, 12,1,6,4,3,78, + 12,1,5,1,10,94, 12,1,5,4,3,78, 12,1,4,1,11,94, 12,1,4,4,3,78, 12,1,3,1,12,94, 12,1,3,4,3,78, 12,1,2,1,13,94, 12,1,2,4,3,78, + 12,1,2,6,3,78, 13,11,13,1,2,84, 13,11,13,3,2,84, 13,11,13,5,13,52, 13,11,12,1,3,84, 13,11,12,3,3,84, 13,11,11,1,4,84, 13,11,11,3,4,84, + 13,11,10,1,5,84, 13,11,10,3,5,84, 13,11,9,1,6,84, 13,11,9,3,6,84, 13,11,8,1,7,84, 13,11,8,3,7,84, 13,11,7,1,8,84, 13,11,7,3,8,84, + 13,11,6,1,9,84, 13,11,6,3,9,84, 13,11,5,1,10,84, 13,11,5,3,10,84, 13,11,4,1,11,84, 13,11,4,3,11,84, 13,11,3,1,12,84, 13,11,3,3,12,84, + 13,11,2,1,13,84, 13,11,2,3,13,84, 13,11,2,6,2,68, 13,10,13,1,2,85, 13,10,13,4,13,53, 13,10,13,5,13,53, 13,10,12,1,3,85, 13,10,11,1,4,85, + 13,10,10,1,5,85, 13,10,9,1,6,85, 13,10,8,1,7,85, 13,10,7,1,8,85, 13,10,6,1,9,85, 13,10,5,1,10,85, 13,10,4,1,11,85, 13,10,3,1,12,85, + 13,10,2,1,13,85, 13,10,2,6,2,69, 13,9,12,1,3,86, 13,9,12,5,13,54, 13,9,11,1,4,86, 13,9,10,1,5,86, 13,9,9,1,6,86, 13,9,8,1,7,86, + 13,9,7,1,8,86, 13,9,6,1,9,86, 13,9,5,1,10,86, 13,9,4,1,11,86, 13,9,3,1,12,86, 13,9,2,1,13,86, 13,9,2,4,13,54, 13,9,2,6,2,70, + 13,8,12,5,13,55, 13,8,3,6,2,71, 13,7,12,5,13,56, 13,7,3,4,13,56, 13,7,3,6,2,72, 13,6,12,4,13,57, 13,6,12,5,13,57, 13,6,4,6,2,73, + 13,5,11,4,13,58, 13,5,11,5,13,58, 13,5,4,6,2,74, 13,4,10,1,5,91, 13,4,10,4,13,59, 13,4,10,5,13,59, 13,4,9,1,6,91, 13,4,9,4,13,59, + 13,4,8,1,7,91, 13,4,8,4,13,59, 13,4,7,1,8,91, 13,4,7,4,13,59, 13,4,6,1,9,91, 13,4,6,4,13,59, 13,4,5,1,10,91, 13,4,5,4,13,59, + 13,4,4,1,11,91, 13,4,4,4,13,59, 13,4,4,6,2,75, 14,8,12,1,3,87, 14,8,12,3,3,87, 14,8,12,5,14,55, 14,8,11,1,4,87, 14,8,11,3,4,87, + 14,8,10,1,5,87, 14,8,10,3,5,87, 14,8,9,1,6,87, 14,8,9,3,6,87, 14,8,8,1,7,87, 14,8,8,3,7,87, 14,8,7,1,8,87, 14,8,7,3,8,87, + 14,8,6,1,9,87, 14,8,6,3,9,87, 14,8,5,1,10,87, 14,8,5,3,10,87, 14,8,4,1,11,87, 14,8,4,3,11,87, 14,8,3,1,12,87, 14,8,3,3,12,87, + 14,8,3,6,1,71, 14,7,12,1,3,88, 14,7,12,5,14,56, 14,7,11,1,4,88, 14,7,10,1,5,88, 14,7,9,1,6,88, 14,7,8,1,7,88, 14,7,7,1,8,88, + 14,7,6,1,9,88, 14,7,5,1,10,88, 14,7,4,1,11,88, 14,7,3,1,12,88, 14,7,3,4,14,56, 14,7,3,6,1,72, 14,6,12,1,3,89, 14,6,12,4,1,73, + 14,6,12,5,1,73, 14,6,11,1,4,89, 14,6,10,1,5,89, 14,6,9,1,6,89, 14,6,8,1,7,89, 14,6,7,1,8,89, 14,6,6,1,9,89, 14,6,5,1,10,89, + 14,6,4,1,11,89, 14,6,4,6,1,73, 14,5,11,1,4,90, 14,5,11,4,1,74, 14,5,11,5,1,74, 14,5,10,1,5,90, 14,5,10,4,1,74, 14,5,9,1,6,90, + 14,5,9,4,1,74, 14,5,8,1,7,90, 14,5,8,4,1,74, 14,5,7,1,8,90, 14,5,7,4,1,74, 14,5,6,1,9,90, 14,5,6,4,1,74, 14,5,5,1,10,90, + 14,5,5,4,1,74, 14,5,4,1,11,90, 14,5,4,4,1,74, 14,5,4,6,1,74, + }, + }, + }, +} diff --git a/data/voxel_heights.lua b/data/voxel_heights.lua new file mode 100644 index 0000000..2757fa9 --- /dev/null +++ b/data/voxel_heights.lua @@ -0,0 +1,1000 @@ +-- Voxel world mode: the shape PROFILE -- hand-authored pins over the +-- automatic structure detector, the way a 3dSen game profile pins a +-- graphic to a geometry type. +-- +-- Hand-authored by this mod, and read only from here: unlike the tables the +-- ROM extractor writes into the player's own cache, nothing below is +-- extracted, derived or copied from the ROM. +-- Nothing here reaches gameplay, collision or scripts; an entry can only +-- ever change how a tile LOOKS in voxel mode. +-- +-- Most of the world needs no entry. The runtime detects structures on its +-- own (src/render/voxel/Structures.lua): it flood-fills each connected +-- drawn thing, voxelizes small props per pixel at their real drawn height +-- with transparency (a 2-row plant is a 16px-tall silhouette, not a box), +-- and raises everything else as a volume whose height is measured from the +-- drawing itself -- repeat-aware, so a 6-row house is 48px while a 40-row +-- border forest is rows of 16px trees, not a monolith. +-- +-- Listing a tile here BYPASSES that detection: the tile takes the class's +-- height and art mode, always. Use it where the detector reads art wrong, +-- or from a mod to pin its own tiles. Resolution order per tile: +-- +-- 1. a group listed under tilesets[] below (this profile) +-- 2. the tile sits in a water cell -> "water" +-- 3. the tile sits in a WALKABLE cell -> "ground" +-- 4. tile-level fallback: the map's water set -> "water", its walkable +-- list -> "ground", anything left over -> "wall" +-- +-- Rules 2-3 work at CELL granularity (16x16, the walk grid) because that +-- is the granularity collision actually has: the engine judges a cell by +-- its bottom-left tile alone, so the other three tiles of a cell carry no +-- collision meaning -- flowers and grass tufts sit in walkable cells and +-- must stay flat ground even though no walkable list names them. +-- +-- Classes (heights in world pixels; a map cell is 16x16): +-- ground / water / void flat; water recesses so shorelines show a lip +-- ledge / roof / bed box with the art on its TOP face; partial side +-- faces crop the art (a 6px ledge face is the +-- bottom of the lip drawing; a bed is its +-- mattress drawn from above, lying low) +-- wall / tree / fence / sign / counter / table / desk +-- box whose SOUTH face folds the 2D artwork +-- upright, 8px band by band; authored boxes fold +-- every face and wear their top row's art on top. +-- A counter is half a cell -- one band, so its +-- drawn front panel stands and its top stays on top +-- stair_e / stair_w real steps rising toward the named side, the +-- full cell deep, treads and slices textured +-- from the drawn staircase +-- stair_down_e / _down_w a sunken stairwell: the cell opens into a +-- hole with steps descending toward the named +-- side -- stairs that lead DOWN a floor +-- relief a prop drawn from above (a console on the +-- floor): the drawing stays flat and the +-- pixels inside its black outline extrude a +-- few voxels, art on top +-- bookcase a free-standing shelf drawn tall: each rank +-- collapses onto a one-cell-deep box at its +-- full drawn height; back rows become hidden +-- floor, and an unpinnable trim row above +-- becomes the cap +-- billboard / prop a prop drawn face-on: a standing per-pixel +-- cutout, black-outline segmented; drawn above +-- a pinned box it stands ON that box (a +-- monitor on its desk). prop is a second pool +-- so two touching cutouts stay separate +-- +-- Whole BUILDINGS are not tile pins -- one drawing packs a roof seen from +-- above, a facade seen face-on and sloped ends as diagonal silhouettes, +-- and no single class covers that. They live in the `buildings` list at +-- the bottom of this file, as a band table over the drawing's rows. + +return { + version = 1, + + -- class -> height in world pixels + heights = { + ground = 0, + water = -2, + void = 0, + ledge = 6, + fence = 10, + sign = 12, + wall = 16, + tree = 16, + roof = 28, + bed = 7, + stool = 8, + counter = 8, + table = 12, + desk = 24, + prop = 16, + cutout = 16, + relief = 3, + bookcase = 32, + stair_e = 16, + stair_w = 16, + stair_down_e = 16, + stair_down_w = 16, + }, + + -- Only tiles the detector must not touch need listing. Tile ids are + -- indices into the tileset's own 8x8 atlas. + tilesets = { + OVERWORLD = { + -- the hop-down edges named by data.field.ledges' ledgeTile: their + -- art is a ground lip seen from above, which the detector would + -- otherwise raise as a wall + ledge = { 13, 29, 39, 54, 55 }, + -- trees are drawn ROUND -- the lone canopy (42/43/58/59) and the + -- border tree wall (64/65/80/81, blockset $0F). Boxes and per-pixel + -- cutouts both read wrong for them; the cylinder archetype carves + -- one voxel ball per 16x16 cell from the canopy's darkest-pixel + -- outline, round in depth, so tree rows become rows of real canopies + cylinder = { 42, 43, 58, 59, 64, 65, 80, 81 }, + -- the town sign (blockset 8's SE cell): a standing per-pixel slab + -- 2 voxels thin, transparency respected -- never a solid box + signpost = { 70, 71, 86, 87 }, + -- the fence posts drawn in VERTICAL runs (14 the post tops, 85 + -- the bottoms -- across all 222 maps the two tiles pair only in + -- this one cell). The detector already turns the HORIZONTAL runs + -- (tile 57) into per-post standees, but a vertical run of repeated + -- cells trips its scenery guard and fell to the volume path as a + -- fence-textured tower. `post` extracts each cell alone, so these + -- render as the same thin posts, marching north + post = { 14, 85 }, + }, + + -- ledge pairs from data.field.tilePairs + CAVERN = { + ledge = { 5 }, + }, + FOREST = { + ledge = { 46 }, + }, + + -- Oak's Lab (the tileset also serves the Fighting Dojo and Lance's + -- room, which use none of these tiles). The free-standing shelf + -- ranks: book rows and base pinned; the shared trim tiles above + -- (41/42, also the lab tables' corners) are adopted as caps by the + -- bookcase builder rather than pinned. + DOJO = { + bookcase = { 13, 14, 29, 30 }, + -- the lab tables (the starter-ball display and the north tables): + -- 41/42 are also the shelf trim the bookcase builder adopts as + -- caps, which its cap rule allows for authored table rows. + -- Pinning stops the display frame's black corner brackets from + -- auto-extracting into standing prisms, and the ball/Pokedex + -- sprites ride the table's authored height. + table = { 41, 42, 57, 59, 78, 79 }, + }, + + -- Red's room and the Copycat's room (one tileset). The detector reads + -- this furniture as wall-height volumes -- and merges the wall-touching + -- table and desk INTO the wall, towering both -- so every object here + -- is pinned to the shape it depicts. + REDS_HOUSE_2 = { + -- the wall band with its windows stays one 16px face + wall = { 0, 36, 37, 52, 53 }, + -- the bed: a mattress drawn from above, half a block high + bed = { 45, 46, 47, 61, 62, 63 }, + -- stools: a seat-high box, seat art on top, legs on the front + stool = { 2, 3, 18, 19 }, + -- the long table under the windows, and the PC desk's body with + -- its hutch row -- the monitor standing on it is pinned below + table = { 38, 39, 41, 42, 43, 44, 50, 51, + 58, 59, 60, 66, 67 }, + -- standing per-pixel props, black-outline segmented. The PC + -- (64/65 monitor top, 32/33 monitor bottom + keyboard) is drawn + -- above the desk's body, so it stands ON the desk; the TV stands + -- on the floor + billboard = { 6, 7, 22, 23, 32, 33, 64, 65 }, + -- the potted plant: mostly silhouette, so it takes the THIN + -- standee pool + prop = { 8, 9, 24, 25, 68, 69, 70, 71 }, + -- the small potted plant on the table: a paper-thin profile + -- cutout standing on the tabletop, its leaf crown (in 40) included + cutout = { 40, 54, 55, 56, 57 }, + -- the game console in front of the TV is drawn from above: it + -- lies flat and extrudes a few voxels inside its outline + relief = { 14, 15, 30, 31 }, + -- the staircase leads DOWN to 1F: a sunken stairwell. The player + -- enters at the east lip and the flight descends westward, the way + -- the drawn railing slopes (high at the east, low at the west) + stair_down_w = { 10, 11, 26, 27 }, + }, + + -- Red's and the Copycat's ground floor (one tileset, same atlas as + -- the floor above). Bookcases, dining table with its flower pot, + -- stools, the TV on the floor, and the staircase up. + REDS_HOUSE_1 = { + wall = { 0, 36, 37, 52, 53 }, + stool = { 2, 3, 18, 19 }, + -- the dining table (38-44/58-60); its top row also caps the + -- bookcases below + table = { 38, 39, 41, 42, 43, 44, 58, 59, 60 }, + -- the bookcase bodies: tall shelf boxes; their drawn top-edge row + -- (38/41, pinned table above) becomes their top face + desk = { 34, 35, 48, 49, 50, 51 }, + -- the TV on the floor + billboard = { 6, 7, 22, 23 }, + -- the small potted plant on the table: a paper-thin profile + -- cutout standing on the tabletop, its leaf crown (in 40) included + cutout = { 40, 54, 55, 56, 57 }, + -- the staircase leads UP to 2F: a rising flight climbing east + stair_e = { 12, 13, 28, 29 }, + -- the front-door mat: its collision tile is $14, which the engine's + -- stale-cache fallback counts as water in every tileset, so the rug + -- would recess into a pond lip. It is a flat rug on the floor + ground = { 4, 20 }, + }, + + -- The generic town house (Blue's, Daisy at her table, and eighteen + -- more homes; the schoolhouse and the trashed house reuse it too). + -- Same failure as Red's rooms: the detector reads the furniture as + -- wall-height volumes and towers the table, so every object is + -- pinned to the shape it depicts. + HOUSE = { + -- the wall band stays one 16px face: blank courses, the window, + -- the framed picture, and the schoolhouse blackboard (72-75/88-91) + wall = { 0, 36, 45, 46, 52, 61, 62, 72, 73, 75, 88, 89, 90, 91 }, + -- stools: a seat-high box that also seats Daisy + stool = { 2, 3, 18, 19 }, + -- the dining table (top edge 38/41 also caps the bookcases); + -- 80-83 are its ransacked corner in CERULEAN_TRASHED_HOUSE, which + -- stays at table height rather than de-merging into a wall stub + table = { 38, 39, 41, 47, 54, 57, 58, 59, 60, 80, 81, 82, 83 }, + -- the bookcase bodies: book ranks (14/15 left pair, 48/49 right) + -- and the base course; the drawn top edge (38/41, pinned table + -- above) becomes their top face + desk = { 14, 15, 30, 31, 48, 49 }, + -- the corner potted plants: mostly silhouette, the THIN standee + -- pool (crown 10/11, leaves 8/9/26/27, pot 24/25) + prop = { 8, 9, 10, 11, 24, 25, 26, 27 }, + -- the open book on the schoolhouse table: a paper-thin cutout + -- standing on the pinned tabletop + cutout = { 70, 71, 86, 87 }, + -- the front-door mat: same $14 water-fallback trap as Red's; flat + ground = { 4, 20 }, + }, + + -- The Pokemon Center lobby. One tileset serves all eleven Centers + -- and the Celadon Hotel, and VIRIDIAN_POKECENTER places every tile + -- the other maps use, so this list -- read off Viridian -- covers + -- them all. (The Marts are a DIFFERENT tileset id, MART, that only + -- shares the atlas image; pins do not carry over.) Same failure as + -- the houses: the detector merges the wall-touching counters and + -- machines into the wall and towers them, and the lounge seat -- + -- which has a PERSON drawn into the tile art -- becomes a monolith + -- wearing his face. + POKECENTER = { + -- the wall band stays one 16px face: striped panels (40), the high + -- windows (92-95; 94 doubles as the map's warp tile, and pins are + -- look-only), the pokeball poster (2/3/18/19), and the pillars + -- (16/41) with their bases (4/5/20/21; 20 is the $14 water-fallback + -- trap and would recess into a pond lip). The healing machines' + -- bodies (72/76/77 console face, 6/22 button panel, 73 light edge, + -- 7/13 shadowed edge) are ALSO wall: drawn 16px tall against the + -- band, so wall height is their drawn height and they read as + -- consoles jutting from it; the near-black screen tiles must be + -- pinned or the void rule flattens them, and 72 is the $48 + -- water-fallback trap + wall = { 2, 3, 4, 5, 6, 7, 13, 16, 18, 19, 20, 21, 22, 40, 41, + 72, 73, 76, 77, 92, 93, 94, 95 }, + -- the counters, half a cell high: top band (8) with the nurse's + -- tray (10), front face (24/25, the game's counterTiles), left end + -- cap (56) and the Cable Club's light sections (90/91). 8px is + -- one clean band, so the drawn front panel stands up and the + -- counter top stays on top; at 12 they read as wall stubs + counter = { 8, 10, 24, 25, 56, 90, 91, + -- and the lounge couch with the man sitting on it. + -- Same half-cell box: its bottom row (42/43, the front + -- base) stands up as the couch's front, and the three + -- rows above it -- cushion (38/39) and the man + -- (36/37 head, 52/53 face) -- ride the top face in + -- drawn order, each exactly once. See the note below + -- on why he cannot be stood upright. + 36, 37, 38, 39, 42, 43, 52, 53 }, + -- standing per-pixel props, black-outline segmented: the healing + -- machines' screen tops (58/59/74/75, drawn above the pinned + -- bodies so they stand ON them) and the PC (66/70/82/86), which + -- stands on its pinned desk + billboard = { 58, 59, 66, 70, 74, 75, 82, 86 }, + -- Why the man on the couch rides the top face instead of standing + -- up. He is drawn across two tile rows (skin pixels appear in + -- rows 8 and 9 and stop dead at the row 9/10 seam), and folding + -- two rows upright requires both to share a class, which makes the + -- box two tiles deep -- and a fully folded box repeats its north + -- row across its whole top face. So every upright arrangement + -- puts his head on screen two or three times: as a 16px seat-back + -- his head lands on the front AND twice on the top; as a 32px + -- bookcase he becomes a cabinet taller than the room's walls. + -- Dropping the seat to floor level to clear his face does not help + -- either, it only moves which copy you see. He also cannot be a + -- standee: the drawing has no floor margin, so all three non-black + -- shades touch the cluster rim and the mask drains 307 of its 420 + -- interior pixels -- 46% of him even segmented alone, because his + -- skin is the same light shade as the couch behind him. Riding + -- the top face is the one arrangement that draws him exactly once. + -- the PC's desk body, which the PC stands on + table = { 9, 88 }, + -- the potted plants: bush (32/33/48/49) over pot (34/35/50/51, + -- 50 is the $32 water-fallback trap). Standing per-pixel + -- billboards in the THIN pool, like every other interior plant -- + -- and a pool apart from the sofa, which touches the corner pair + -- and must stay a separate object. The bush's light checker + -- highlights share the floor's shades, so the mask drains some of + -- them; the standee reads darker than the flat art, which is the + -- accepted trade for a real plant silhouette + prop = { 32, 33, 34, 35, 48, 49, 50, 51 }, + }, + }, + + -- Buildings whose whole sprite is voxelized band by band (lib/Buildings.lua, + -- the pipeline in assets/docs/buidling_to_voxel/). A building is matched by its + -- exact tile grid -- the drawings are catalogued in assets/docs/buildings/ -- so + -- every map that places the same art gets the same model: one entry + -- voxelizes Red's house, Blue's house, Bill's, the Copycat's and the two + -- Fuchsia houses alike. + -- + -- Only the BAND TABLE is authored here, because only it needs a human to + -- read the drawing. Everything measurable is measured off the pixels: + -- the silhouette, the taper rate (which IS the roof's slope), the eave + -- height, and every window and doorway (a non-black region its own black + -- frame seals off). Fields: + -- + -- tiles the tile-id grid that identifies the building, rows of the + -- 8px tile atlas, north row first + -- roofRows how many rows off the top are drawn as TOP-FACING roof; + -- the rest of the drawing is the facade, seen face-on + -- roofBack rows laid along the north rim, one row per voxel of depth + -- roofFront rows laid along the south rim (the fascia and eave course) + -- roofCycle the row run the middle depth cycles; its length must be + -- the roof texture's period or the courses will not line up + -- slab roof thickness in voxels + -- frontEave how far the roof overhangs the facade + -- ledge a band that juts two voxels past the walls (an awning), + -- or nil + -- seal sides the drawing runs off rather than closing with its + -- own outline, as a string of n/s/e/w; the silhouette + -- flood does not seed there. Only needed by a drawing + -- trimmed flush to its art -- one whose base course is a + -- row of brick rather than the black threshold every other + -- building stands on. Omit it unless the fill says + -- otherwise: sealing a side the drawing does NOT run off + -- swallows the terrain beside it. + -- + -- Nothing here describes the roof's SHAPE, because nothing needs to: the + -- topmost drawn row of each column is the elevation profile, so a drawn + -- taper becomes a slope and a roof drawn from straight above comes out + -- level. That is why the flat-roofed civic block and its sixteen + -- relatives -- every Center and Mart, the gyms and gates, the department + -- store and Silph Co -- share one band table below, differing only in + -- their tile grids. The sloped ones fall into three groups just as + -- cleanly, by the depth of the roof band: 16 rows (Red's house), 32 + -- (Oak's lab) or 64 (the museum). Before authoring a new one, check + -- whether its roof band is already pixel for pixel one of those. + -- + -- assets/docs/buildings/B26 is deliberately absent. Its drawing has no + -- black base course -- it ends on a row of light brick -- so the + -- silhouette flood, which comes in from the border through light pixels, + -- climbs up through the wall and hollows it out. Every other building + -- is sealed by a black threshold row. Reading it would mean changing + -- the flood itself, which every model here depends on, for one scenery + -- placement. + buildings = { + OVERWORLD = { + -- assets/docs/buildings/B07: the two-storey gabled house. Coursed cap over + -- a gable wall, an awning with its double black underline, then the + -- ground floor with the door. 7 placements, Red's and Blue's among + -- them. Course rhythm: a dark line every 4 rows. + { + id = "gabled_house", + tiles = { + { 5, 6, 7, 7, 7, 7, 8, 9 }, + { 21, 22, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 10, 34, 10, 10, 40, 41 }, + { 92, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 34, 11, 12, 10, 10, 34, 31 }, + { 78, 26, 27, 28, 26, 26, 26, 79 }, + }, + roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 }, + slab = 4, frontEave = 4, ledge = { 24, 31 }, + }, + + -- assets/docs/buildings/B31: Oak's lab. The same architecture with a roof + -- band twice as deep -- the extra rows are DEPTH, not height, so the + -- lab is a bigger footprint under the same storey. Its cross-hatch + -- roof texture repeats every 8 rows, and it has no awning: the band + -- that would be one is the roof's own eave course. + { + id = "oaks_lab", + tiles = { + { 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 10, 10, 10, 75, 75, 10, 10, 10, 40, 41 }, + { 15, 34, 34, 34, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 11, 12, 10, 10, 10, 10, 10, 31 }, + { 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B03: the flat-roofed commercial block -- + -- Celadon's diner, hotel, chief's house and prize room, the Bike + -- Shop, the Fan Club, Mr. Psychic's, the Underground Path entrances. + -- 15 placements, the most of any voxelized drawing. The lattice + -- field is drawn from straight above, so the measured taper is flat + -- and the whole band is depth under one level roof; the eave course + -- is the roof's own south rim, lab-style, no awning. Lattice period + -- 8, the lab's rhythm again. + { + id = "flat_commercial", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 11, 12, 75, 75, 75, 31 }, + { 78, 26, 27, 28, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B05: every Pokemon Center in the game + -- (Celadon, Cerulean, Cinnabar, Fuchsia, Lavender, Pewter, + -- Saffron, Vermilion, Viridian, Mt Moon, Rock Tunnel). B03's + -- block with the POKe sign hung beside the door; the sign is + -- too wide to be a pane, so it stays flush. + { + id = "pokecenter", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 11, 12, 66, 67, 75, 31 }, + { 78, 26, 27, 28, 74, 74, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B06: every Poke Mart (Cerulean, + -- Cinnabar, Fuchsia, Lavender, Pewter, Saffron, Vermilion, + -- Viridian). The Center's twin, MART on the sign. + { + id = "pokemart", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 11, 12, 68, 69, 75, 31 }, + { 78, 26, 27, 28, 74, 74, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B02: the plain 4x4 block: one window + -- course over blank brick and no door. 15 placements, scenery + -- in every city bar the Celadon Mart roof stair. + { + id = "flat_block_4x4", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B08: the same block two cells deeper, + -- 6 placements, all scenery. + { + id = "flat_block_4x6", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B13: the 6x4 scenery block, 4 + -- placements. + { + id = "flat_block_6x4", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B14: the 6x6 scenery block, 3 + -- placements. + { + id = "flat_block_6x6", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B27: the 8x4 scenery block, one + -- placement on Route 11. + { + id = "flat_block_8x4", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B09: the wide storefront: Celadon's + -- Game Corner, the Pokemon Mansion, Cinnabar Lab, the Safari + -- Zone gate and Fuchsia's meeting room. + { + id = "game_corner", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B15: Celadon Mansion and the Route 6 + -- and Route 12 gates. + { + id = "celadon_mansion", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B18: the Route 2 gate, and the museum's + -- east entrance beside it in Pewter. The museum HALL itself is + -- B24 below, a different drawing with a sloped roof. + { + id = "route_2_gate", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 11, 12, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B29: Fuchsia Gym, the block with GYM + -- on the sign. + { + id = "fuchsia_gym", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 34, 47, 63, 34, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 34, 34, 34, 34, 75, 75, 75, 31 }, + { 15, 75, 11, 12, 10, 10, 10, 10, 75, 75, 75, 31 }, + { 78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B28: the Route 5 underground-path + -- gate. + { + id = "route_5_gate", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B21: the Route 22 league gate, the + -- widest of the family at 12 cells. + { + id = "route_22_gate", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B25: the Power Plant. + { + id = "power_plant", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B22: Celadon's department store: six + -- window courses over the MART sign. + { + id = "celadon_mart", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 75, 75, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 11, 12, 10, 10, 11, 12, 10, 10, 68, 69, 75, 31 }, + { 78, 26, 26, 26, 27, 28, 26, 26, 27, 28, 26, 26, 74, 74, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B20: Silph Co. Twelve cells of plot + -- and ten courses of windows under the same roof band, so it + -- stands as the tallest thing in Kanto. + { + id = "silph_co", + tiles = { + { 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 }, + { 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B24: the Pewter museum's hall, and the only + -- building in the family with a SLOPED roof: the same 2:1 taper the + -- lab and Red's house are drawn with, over a roof band twice the + -- lab's depth. The drawing repeats its whole lattice-and-course + -- motif -- rows 8..31 again at 32..55 -- which is what fixes the + -- cycle at 24 rather than the bare lattice's 8: the drawing proves + -- the period. The last band (rows 56..63) is the roof's fascia, + -- wider than the wall it covers, so it stays in the roof band and + -- lands on the south rim. + { + id = "museum", + tiles = { + { 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 41 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 64, roofBack = 8, roofFront = 8, roofCycle = { 8, 31 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B10: the gym. Cinnabar, Pewter, + -- Vermilion and Viridian wear this drawing, and so does the + -- Fighting Dojo next door to Saffron's. Oak's lab's roof band + -- exactly, tile for tile, over a facade with GYM on the sign. + { + id = "gym", + tiles = { + { 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 10, 10, 34, 47, 63, 34, 10, 10, 40, 41 }, + { 15, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 11, 12, 10, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B16: the big-city gym: Celadon, + -- Cerulean and Saffron. Two cells wider than the standard + -- gym, and it carries the GYM sign twice. + { + id = "gym_large", + tiles = { + { 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 10, 10, 34, 47, 63, 34, 34, 47, 63, 34, 10, 10, 40, 41 }, + { 15, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 10, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B01: the commonest drawing in the + -- game at 19 placements, and every one of them scenery: a + -- gabled block with two window courses and no door. Red's + -- house's roof band, tile for tile, but no awning under it. + { + id = "gabled_block_4x3", + tiles = { + { 5, 6, 7, 7, 7, 7, 8, 9 }, + { 21, 22, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 10, 10, 10, 10, 40, 41 }, + { 15, 34, 34, 34, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 31 }, + { 78, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B04: the little 4x2 cottage, 12 + -- placements and nearly all of them somebody's home: Mr + -- Fuji's, the Cubone house, Bill's grandpa's, the Name + -- Rater's, the Viridian school house, the Route 8 underground + -- path. + { + id = "gabled_cottage", + tiles = { + { 5, 6, 7, 7, 7, 7, 8, 9 }, + { 21, 22, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 11, 12, 10, 10, 40, 41 }, + { 78, 26, 27, 28, 26, 26, 26, 79 }, + }, + roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B17: the wide 6x2 house: Cerulean's + -- badge, trade and trashed houses. + { + id = "gabled_house_wide", + tiles = { + { 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9 }, + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 11, 12, 35, 10, 10, 35, 10, 10, 40, 41 }, + { 78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B11: the 6x2 scenery block, 5 + -- placements, no door. + { + id = "gabled_block_6x2", + tiles = { + { 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9 }, + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 10, 34, 35, 10, 10, 35, 10, 10, 40, 41 }, + { 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B34: the 4x2 scenery block, one + -- placement in Fuchsia. + { + id = "gabled_block_4x2", + tiles = { + { 5, 6, 7, 7, 7, 7, 8, 9 }, + { 21, 22, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 10, 34, 10, 10, 40, 41 }, + { 78, 26, 26, 26, 26, 26, 26, 79 }, + }, + roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B33: the Route 5 day care. + { + id = "daycare", + tiles = { + { 5, 6, 83, 83, 83, 83, 8, 9 }, + { 21, 56, 18, 18, 18, 18, 56, 25 }, + { 21, 56, 18, 18, 18, 18, 56, 25 }, + { 21, 22, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 10, 10, 10, 10, 40, 41 }, + { 15, 34, 34, 34, 34, 34, 34, 31 }, + { 15, 10, 10, 10, 11, 12, 10, 31 }, + { 78, 26, 26, 26, 27, 28, 26, 79 }, + }, + roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + + -- assets/docs/buildings/B26: the Route 10 scenery block, + -- structurally the museum's twin -- Oak's lab's roof band, + -- and its rows 8..31 repeat at 32..55 exactly as the museum's + -- do. It needs `seal` because its drawing has no black base + -- course: it ends on a row of light brick, and unsealed the + -- flood climbs in from the south border through the mortar + -- and hollows the wall out (72% of the sprite survives + -- instead of 95%, in 65 pieces instead of 1). + { + id = "gabled_block_6x6", + tiles = { + { 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 }, + { 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 }, + { 37, 38, 34, 34, 34, 34, 34, 34, 34, 34, 40, 41 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + { 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 }, + { 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 }, + }, + roofRows = 64, roofBack = 8, roofFront = 8, roofCycle = { 8, 31 }, + slab = 4, frontEave = 4, ledge = nil, seal = "s", + }, + }, + + FOREST = { + -- assets/docs/buildings/B12: the Safari Zone rest houses -- + -- Center, East, North, West and the Secret House. A + -- corrugated roof over a plank facade; its stripe repeats + -- every 5 rows, not the OVERWORLD lattice's 8. + { + id = "safari_rest_house", + tiles = { + { 8, 9, 9, 9, 9, 9, 9, 12 }, + { 24, 25, 25, 25, 25, 25, 25, 28 }, + { 40, 41, 42, 43, 1, 1, 41, 44 }, + { 56, 41, 58, 59, 41, 41, 41, 60 }, + }, + roofRows = 17, roofBack = 5, roofFront = 3, roofCycle = { 5, 9 }, + slab = 4, frontEave = 4, ledge = nil, + }, + }, + + PLATEAU = { + -- assets/docs/buildings/B23: the Victory Road entrance on + -- Route 23: a long rock face with two barred doors cut into + -- it. Not a house -- what the roof band reads is the pale top + -- of the cliff seen from above, and the facade is the + -- striated rock below it. + { + id = "victory_road_gate", + tiles = { + { 37, 38, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 37, 38 }, + { 40, 41, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 40, 41 }, + { 21, 22, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 15, 15, 15, 15, 15, 15, 21, 22 }, + { 5, 6, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 15, 15, 15, 15, 15, 15, 5, 6 }, + { 5, 6, 15, 15, 15, 15, 15, 15, 11, 12, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 11, 12, 15, 15, 15, 15, 5, 6 }, + { 21, 22, 14, 14, 14, 14, 14, 14, 27, 28, 14, 14, 14, 14, 14, 14, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 27, 28, 14, 14, 14, 14, 21, 22 }, + }, + roofRows = 16, roofBack = 7, roofFront = 8, roofCycle = { 9, 12 }, + slab = 4, frontEave = 4, ledge = nil, + }, + }, + }, +} diff --git a/lib/BuildBudget.lua b/lib/BuildBudget.lua new file mode 100644 index 0000000..a7056d2 --- /dev/null +++ b/lib/BuildBudget.lua @@ -0,0 +1,61 @@ +-- Voxel world mode: the cooperative build budget. +-- +-- Mesh building runs inside a plain coroutine that ChunkMesher pumps for +-- a few milliseconds a frame (there is no worker thread: LOVE's graphics +-- objects are main-thread only, and the build is pure Lua that slices +-- cleanly). The long loops in Structures and ChunkMesher call tick() as +-- they go; when the frame's slice is spent, tick() suspends the build +-- coroutine and the frame carries on rendering whatever is already +-- cached. +-- +-- tick() is deliberately safe to call from ANY context: outside the pump +-- (headless tests, the pure geometry API, a driver poking a build +-- function directly) it recognises it is not inside the build coroutine +-- and does nothing, so synchronous callers keep their synchronous +-- behavior. + +local B = { n = 0 } + +local clock = (love and love.timer and love.timer.getTime) or os.clock + +local deadline = math.huge +local buildCo = nil + +-- Enter/leave a pumped slice. `co` is the coroutine being resumed, so +-- tick() can tell the build apart from any other coroutine the engine +-- happens to be running (drivers are coroutines too). +function B.begin(co, seconds) + buildCo = co + deadline = clock() + seconds +end + +function B.finish() + buildCo = nil + deadline = math.huge +end + +function B.expired() + return clock() > deadline +end + +-- Cheap enough to sprinkle through inner loops: one modulo most calls, +-- a clock read every 32nd. +function B.tick() + local n = B.n + 1 + B.n = n + if n % 32 ~= 0 then return end + if buildCo and coroutine.running() == buildCo and clock() > deadline then + coroutine.yield("budget") + end +end + +-- Like tick() but consults the clock every call -- for coarse loops +-- whose single iteration already costs milliseconds (mesh upload +-- slices), where tick()'s 1-in-32 sampling would never fire. +function B.check() + if buildCo and coroutine.running() == buildCo and clock() > deadline then + coroutine.yield("budget") + end +end + +return B diff --git a/lib/Buildings.lua b/lib/Buildings.lua new file mode 100644 index 0000000..11ad190 --- /dev/null +++ b/lib/Buildings.lua @@ -0,0 +1,694 @@ +-- Voxel world mode: a building voxelized from its own sprite. +-- +-- A Game Boy overworld building is a fake-3D projection that packs several +-- different 3D facings into one flat drawing: the roof is drawn as if seen +-- from above, the facade as if seen face-on, and the sloped ends as +-- diagonal silhouettes. Raising the whole footprint as one box (what the +-- generic volume path does) folds all three into a wall, so a house comes +-- out as a cube wearing its own elevation. +-- +-- This module does the other thing: it classifies each BAND of the drawing +-- by the surface it depicts and applies the matching operation per band -- +-- the pipeline written up in assets/docs/buidling_to_voxel/. Two rules govern it: +-- +-- 1. Every visible voxel colour is a real texel of the drawing. Nothing +-- is invented but the geometry the sprite implies and never paints +-- (undersides, the depth behind the facade), and those wear the +-- drawing's own four shades. +-- 2. The sprite is ground truth, not the tile grid. The silhouette, the +-- taper rate, the eave height and every window are MEASURED off the +-- pixels; the profile only says which rows are roof and which are +-- facade. +-- +-- The pipeline, per template (see data/voxel_heights.lua `buildings`): +-- +-- read composite the building out of the atlas and flood its +-- silhouette in from the border through light pixels only -- +-- the black outline and the #555 shading together are the +-- boundary, and a "not black" test eats the shaded flanks. +-- measure the topmost drawn row of each column IS the roof's elevation +-- profile (the drawn taper is the slope); the facade's panes +-- are the non-black regions its black frames seal off. +-- build facade rows extrude straight back over the footprint, the +-- awning band juts past them, panes sink one voxel, and the +-- roof lays the top-facing rows flat -- level over the +-- plateau, stepping down the drawn taper at the ends -- then +-- overwrites the walls it intersects. +-- emit cull to the shell and merge runs of texel-adjacent faces into +-- single quads, so a 90k-voxel house ships as ~2k quads. +-- +-- One model is built per template and stamped at every placement: Red's +-- and Blue's houses are the same seven-placement drawing, so they cost one +-- build between them. mods/DRAMATIC_SHAPE/tools/building_voxels.py is the +-- reference implementation of the same algorithm and prints the voxel and +-- shell counts this one must agree with. +-- +-- Purely presentational, like everything else in the mod: the tiles a +-- building claims keep the collision, warps and triggers they always had. + +-- the mod namespace (see main.lua): V.data loads a shipped data file +local V = ... + +local Budget = V.require("BuildBudget") + +local Buildings = {} + +-- The four GB shades, lightest first (same cutoffs as Structures.shadeClass, +-- which reasons about the same art). +local WHITE, GREY, DARK, BLACK = 0, 1, 2, 3 + +-- A pane is a window or a doorway: a non-black region the drawing seals +-- off behind its own black frame. Anything wider or taller than this is a +-- band of the facade itself -- a siding course, the awning's grey field -- +-- and must stay flush. +local RECESS_MAX = 24 + +-- Face shades, matching the rest of the mod's objects: the south face is +-- the drawing itself and draws at full brightness. +local SHADE = { top = 0.95, south = 1.0, north = 0.68, + side = 0.78, bottom = 0.5 } + +local function keyOf(tx, ty) + return (ty + 64) * 4096 + (tx + 64) +end + +local function shadeOf(r, g, b, a) + if a == 0 then return WHITE end + local v = math.min(r, g, b) + if v <= 0.25 then return BLACK end + if v <= 0.55 then return DARK end + if v <= 0.85 then return GREY end + return WHITE +end + +-- The shape profile ships with the mod; absent or broken simply means no +-- building templates, and every building falls back to the volume path. +local spec = nil +local function profile() + if spec == nil then + local ok, s = pcall(V.data, "voxel_heights") + spec = (ok and type(s) == "table") and s or false + end + return spec or nil +end + +local models = {} -- ":" -> prebuilt local quads + +-- ------------------------------------------------------------------ read -- + +-- Composite the template out of the atlas and flood the silhouette in from +-- the border. Returns flat arrays indexed y * W + x. +local function read(t, data, perRow) + local tiles = t.tiles + local bh, bw = #tiles, #tiles[1] + local W, H = bw * 8, bh * 8 + local col, ax, ay = {}, {}, {} + for sy = 0, H - 1 do + Budget.tick() + local row = tiles[math.floor(sy / 8) + 1] + for sx = 0, W - 1 do + local tile = row[math.floor(sx / 8) + 1] + local px = (tile % perRow) * 8 + sx % 8 + local py = math.floor(tile / perRow) * 8 + sy % 8 + local i = sy * W + sx + ax[i], ay[i] = px, py + local r, g, b, a = data:getPixel(px, py) + col[i] = shadeOf(r, g, b, a) + end + end + + local outside = {} + local queue, n = {}, 0 + local function seed(x, y) + local i = y * W + x + if not outside[i] and col[i] <= GREY then + outside[i] = true + n = n + 1 + queue[n] = i + end + end + -- The flood comes in from the border, which assumes the drawing is + -- bounded by its own outline on every side. A drawing trimmed flush to + -- its art -- one whose base course is a row of brick rather than the + -- black threshold every other building stands on -- names the sides it + -- runs off in `seal`, and the flood does not seed there. Without it the + -- flood climbs in through the light mortar and hollows the wall out. + local seal = t.seal or "" + local function sealed(side) return string.find(seal, side, 1, true) ~= nil end + for x = 0, W - 1 do + if not sealed("n") then seed(x, 0) end + if not sealed("s") then seed(x, H - 1) end + end + for y = 0, H - 1 do + if not sealed("w") then seed(0, y) end + if not sealed("e") then seed(W - 1, y) end + end + while n > 0 do + local i = queue[n] + n = n - 1 + local x, y = i % W, math.floor(i / W) + if x + 1 < W then seed(x + 1, y) end + if x > 0 then seed(x - 1, y) end + if y + 1 < H then seed(x, y + 1) end + if y > 0 then seed(x, y - 1) end + end + + local inside = {} + for i = 0, W * H - 1 do inside[i] = not outside[i] end + return { W = W, H = H, col = col, ax = ax, ay = ay, inside = inside } +end + +-- --------------------------------------------------------------- measure -- + +local function measure(sp, t) + local W, H = sp.W, sp.H + local roofRows = t.roofRows + + -- The drawn taper IS the slope: the first drawn row of a column is how + -- far the roof has stepped down by the time it reaches that column. + local top = {} + for x = 0, W - 1 do + local r = roofRows + for y = 0, roofRows - 1 do + if sp.inside[y * W + x] then r = y break end + end + top[x] = r + end + + local wallH = H - roofRows + local ytop = wallH - 1 + t.slab + + -- Side faces must not come out as slabs of outline black: where the + -- drawing's own pixel is the outline, walk inward for the first painted + -- colour, which is what the flanks of the real thing would show. + local interior = {} + for sy = roofRows, H - 1 do + for sx = 0, W - 1 do + local i = sy * W + sx + local src = i + if sp.inside[i] and sp.col[i] == BLACK then + local step = sx < W / 2 and 1 or -1 + for d = 1, 3 do + local nx = sx + step * d + if nx >= 0 and nx < W then + local ni = sy * W + nx + if sp.inside[ni] and sp.col[ni] ~= BLACK then + src = ni + break + end + end + end + end + interior[i] = src + end + end + + -- Panes: the facade's non-black pixels split into regions across the + -- black frames, and a region small enough to be a window or a doorway + -- sinks a voxel. Frames stay proud, so the pane behind them reads as + -- glass set into the wall -- and a nested frame (the door's own little + -- window) layers for free. + local recess, seen = {}, {} + for sy = roofRows, H - 1 do + for sx = 0, W - 1 do + local i0 = sy * W + sx + if not seen[i0] and sp.inside[i0] and sp.col[i0] ~= BLACK then + local cells, stack = {}, { i0 } + seen[i0] = true + local x0, x1, y0, y1 = sx, sx, sy, sy + local function step(nx, ny) + if nx < 0 or nx >= W or ny < roofRows or ny >= H then return end + local ni = ny * W + nx + if not seen[ni] and sp.inside[ni] and sp.col[ni] ~= BLACK then + seen[ni] = true + stack[#stack + 1] = ni + end + end + while #stack > 0 do + local i = table.remove(stack) + cells[#cells + 1] = i + local cx, cy = i % W, math.floor(i / W) + if cx < x0 then x0 = cx end + if cx > x1 then x1 = cx end + if cy < y0 then y0 = cy end + if cy > y1 then y1 = cy end + step(cx + 1, cy) + step(cx - 1, cy) + step(cx, cy + 1) + step(cx, cy - 1) + end + if x1 - x0 < RECESS_MAX and y1 - y0 < RECESS_MAX then + for _, i in ipairs(cells) do recess[i] = true end + end + end + end + end + + -- One representative texel per shade, taken from the building's own art: + -- the roof's fascia and its undersides are geometry the drawing implies + -- but never paints, and they must still wear its palette (and pick up + -- whatever SGB recolouring the atlas carries). + local shadeTexel = {} + for i = 0, sp.W * sp.H - 1 do + if sp.inside[i] and not shadeTexel[sp.col[i]] then + shadeTexel[sp.col[i]] = i + end + end + for s = WHITE, BLACK do + shadeTexel[s] = shadeTexel[s] or shadeTexel[BLACK] or 0 + end + + return { top = top, ytop = ytop, D = H, + recess = recess, interior = interior, shadeTexel = shadeTexel } +end + +-- ----------------------------------------------------------------- build -- + +-- The voxel model as a lookup: `at(x, y, z)` is the index of the sprite +-- pixel that voxel wears, or nil. Build ORDER is expressed as lookup +-- order -- roof first, so it overwrites the walls it intersects, and walls +-- are trimmed to its underside so nothing pokes through the surface. +local function model(sp, pr, t) + local W, H, D = sp.W, sp.H, pr.D + local slab, roofRows = t.slab, t.roofRows + local top, ytop = pr.top, pr.ytop + + -- The roof's drawn span. A sprite inset from its box (B03) leaves outer + -- columns undrawn in the roof band; they carry no roof at all, and the + -- rim treatment belongs to the outermost drawn columns instead of the + -- box edge. + local x0d, x1d + for x = 0, W - 1 do + if top[x] < roofRows then + x0d = x0d or x + x1d = x + end + end + local ledge0, ledge1 = nil, nil + if t.ledge then ledge0, ledge1 = t.ledge[1], t.ledge[2] end + + local rz0, rz1 = 0, D - 1 + (t.frontEave or 0) + local back, front = t.roofBack, t.roofFront + local cyc0, cyc1 = t.roofCycle[1], t.roofCycle[2] + local cycN = cyc1 - cyc0 + 1 + + -- Which drawn row lies at depth z. The drawing looks at the roof from + -- the north, so its top rows ARE the far edge and its bottom rows the + -- eave over the facade. The band is shallower than the building, so the + -- rims map one row per voxel and the middle cycles a run whose period is + -- the course rhythm -- picked up where the north rim left off, which + -- continues both the course lines and the roof texture seamlessly. + local roofSy = {} + for z = rz0, rz1 do + local df, db = z - rz0, rz1 - z -- from the north / south edge + if df < back then + roofSy[z] = df + elseif db < front then + roofSy[z] = roofRows - 1 - db + else + roofSy[z] = cyc0 + (df - cyc0) % cycN + end + end + + local T = {} + for x = 0, W - 1 do T[x] = ytop - top[x] end + + local function at(x, y, z) + if x < 0 or x >= W then return nil end + local tx = T[x] + + -- roof: a solid of constant thickness following the elevation profile + if top[x] < roofRows + and y > tx - slab and y <= tx and z >= rz0 and z <= rz1 then + if y == tx and x > x0d and x < x1d and z > rz0 and z < rz1 then + -- the surface itself. Clamping the row into the column's first + -- drawn row keeps the flank battens running down the slope + -- instead of falling off the silhouette. + local sy = roofSy[z] + if sy < top[x] then sy = top[x] end + return sy * W + x + end + -- The rim reproduces the eave the drawing itself paints under the + -- roof: a black outline, a shaded fascia, closed by the outline + -- again. (A GREY fascia band -- what the first cut had -- comes out + -- WHITE once the atlas is recoloured and turns every sloped end + -- into a black-and-white zip.) Under the surface it is all shadow. + local outer = x == x0d or x == x1d or z == rz0 or z == rz1 + if not outer then return pr.shadeTexel[DARK] end + if y == tx or y == tx - slab + 1 then return pr.shadeTexel[BLACK] end + return pr.shadeTexel[DARK] + end + + -- trimmed: under the slope. A column with no roof over it has no + -- underside to trim to, and must not be cut away by a profile the + -- drawing never set. + if top[x] < roofRows and y > tx - slab then return nil end + + -- the awning: the band juts two voxels past the walls, front and back + if ledge0 and (z == -2 or z == -1 or z == D or z == D + 1) then + local sy = H - 1 - y + if sy >= ledge0 and sy <= ledge1 and sp.inside[sy * W + x] then + return sy * W + x + end + return nil + end + + -- the facade, extruded straight back over the footprint + if z < 0 or z >= D then return nil end + local sy = H - 1 - y + local i = sy * W + x + if y == 0 and not sp.inside[i] and sy > 0 and sp.inside[i - W] then + -- the drawing's last row is the ground the building stands on, so + -- its base course is one row up; without this the walls float a + -- voxel over their own plot + sy, i = sy - 1, i - W + end + if not sp.inside[i] then return nil end + if z == D - 1 then + if pr.recess[i] then return nil end + return i + end + if z == 0 then return i end + return pr.interior[i] + end + + return { at = at, W = W, ytop = ytop, + zmin = ledge0 and -2 or 0, + zmax = math.max(rz1, ledge0 and (D + 1) or 0) } +end + +-- ------------------------------------------------------------------ emit -- + +-- Cull to the shell and merge. A run of faces collapses into one quad when +-- its texels are the SAME (a flat-coloured strip, which is most of a side +-- face) or ADJACENT IN THE ATLAS along the run (the drawing continuing +-- across the face, which is most of a front face or a roof top). Both keep +-- every texel exactly where the sprite put it. +local function emit(m, sp, atlasW, atlasH) + local W = m.W + local quads = { voxels = 0, shell = 0 } + local cell = {} -- (y, z, x) -> sprite pixel index + + local zmin, zmax, ytop = m.zmin, m.zmax, m.ytop + local zn = zmax - zmin + 1 + local function ci(x, y, z) + if x < 0 or x >= W or y < 0 or y > ytop or z < zmin or z > zmax then + return nil + end + return cell[(y * zn + (z - zmin)) * W + x] + end + for y = 0, ytop do + Budget.tick() + for z = zmin, zmax do + local base = (y * zn + (z - zmin)) * W + for x = 0, W - 1 do + local v = m.at(x, y, z) + cell[base + x] = v + if v then quads.voxels = quads.voxels + 1 end + end + end + end + -- the shell: what survives hidden-face culling. Counted here rather than + -- derived from the quads because it is the number + -- tools/building_voxels.py checks this build against. + for y = 0, ytop do + Budget.tick() + for z = zmin, zmax do + for x = 0, W - 1 do + if ci(x, y, z) and not (ci(x + 1, y, z) and ci(x - 1, y, z) + and ci(x, y + 1, z) and ci(x, y - 1, z) + and ci(x, y, z + 1) and ci(x, y, z - 1)) then + quads.shell = quads.shell + 1 + end + end + end + end + + -- u/v of a run: `n` texels starting at sprite pixel `i`, stepping along + -- the atlas when the run is a strip and standing still when it is flat. + local function uvOf(i, strip, n) + local x0 = sp.ax[i] + local y0 = sp.ay[i] + local x1 = strip and (x0 + n) or (x0 + 1) + return (x0 + 0.05) / atlasW, (x1 - 0.05) / atlasW, + (y0 + 0.05) / atlasH, (y0 + 1 - 0.05) / atlasH + end + + local function put(c1, c2, c3, c4, uv, shade) + quads[#quads + 1] = { c1, c2, c3, c4, uv = uv, shade = shade } + end + + -- How far a run of exposed faces reaches from `x`, and whether it is a + -- strip (texels marching along the atlas) or flat (one texel repeated). + local function runX(y, z, dx, dy, dz, x) + local i0 = ci(x, y, z) + local strip, n = nil, 1 + while true do + local nx = x + n + local i = ci(nx, y, z) + if not i or ci(nx + dx, y + dy, z + dz) then break end + local prev = ci(nx - 1, y, z) + if sp.ay[i] ~= sp.ay[prev] then break end + local d = sp.ax[i] - sp.ax[prev] + if d == 1 then + if strip == false then break end + strip = true + elseif d == 0 then + if strip == true then break end + strip = false + else + break + end + n = n + 1 + end + return i0, strip == true, n + end + + -- ---- faces along +-Z (the facade, the roof's rims): merge along x ---- + for _, d in ipairs({ 1, -1 }) do + local shade = d == 1 and SHADE.south or SHADE.north + for y = 0, ytop do + Budget.tick() + for z = zmin, zmax do + local x = 0 + while x < W do + if ci(x, y, z) and not ci(x, y, z + d) then + local i, strip, n = runX(y, z, 0, 0, d, x) + local u0, u1, v0, v1 = uvOf(i, strip, n) + local zf = d == 1 and (z + 1) or z + if d == 1 then + put({ x, y, zf }, { x + n, y, zf }, + { x + n, y + 1, zf }, { x, y + 1, zf }, + { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, shade) + else + put({ x + n, y, zf }, { x, y, zf }, + { x, y + 1, zf }, { x + n, y + 1, zf }, + { { u1, v1 }, { u0, v1 }, { u0, v0 }, { u1, v0 } }, shade) + end + x = x + n + else + x = x + 1 + end + end + end + end + end + + -- ---- faces along +-Y (roof surfaces, undersides): merge along x ---- + for _, d in ipairs({ 1, -1 }) do + local shade = d == 1 and SHADE.top or SHADE.bottom + for y = 0, ytop do + Budget.tick() + -- the underside of the bottom layer is the ground it stands on + if not (d == -1 and y == 0) then + for z = zmin, zmax do + local x = 0 + while x < W do + if ci(x, y, z) and not ci(x, y + d, z) then + local i, strip, n = runX(y, z, 0, d, 0, x) + local u0, u1, v0, v1 = uvOf(i, strip, n) + local yf = d == 1 and (y + 1) or y + if d == 1 then + put({ x, yf, z }, { x + n, yf, z }, + { x + n, yf, z + 1 }, { x, yf, z + 1 }, + { { u0, v0 }, { u1, v0 }, { u1, v1 }, { u0, v1 } }, shade) + else + put({ x, yf, z + 1 }, { x + n, yf, z + 1 }, + { x + n, yf, z }, { x, yf, z }, + { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, shade) + end + x = x + n + else + x = x + 1 + end + end + end + end + end + end + + -- ---- faces along +-X (the flanks): merge along z, one texel each ---- + for _, d in ipairs({ 1, -1 }) do + for y = 0, ytop do + for x = 0, W - 1 do + local z = zmin + while z <= zmax do + local i = ci(x, y, z) + if i and not ci(x + d, y, z) then + local n = 1 + while z + n <= zmax do + local j = ci(x, y, z + n) + if j ~= i or ci(x + d, y, z + n) then break end + n = n + 1 + end + local u0, u1, v0, v1 = uvOf(i, false, n) + local xf = d == 1 and (x + 1) or x + if d == 1 then + put({ xf, y, z + n }, { xf, y, z }, + { xf, y + 1, z }, { xf, y + 1, z + n }, + { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, + SHADE.side) + else + put({ xf, y, z }, { xf, y, z + n }, + { xf, y + 1, z + n }, { xf, y + 1, z }, + { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, + SHADE.side) + end + z = z + n + else + z = z + 1 + end + end + end + end + end + + return quads +end + +-- ------------------------------------------------------------- placement -- + +-- Does the template's tile grid sit at (tx, ty)? +local function matches(S, t, tx, ty) + local tiles = t.tiles + for r = 1, #tiles do + local row = tiles[r] + for c = 1, #row do + if S.tileAt[keyOf(tx + c - 1, ty + r - 1)] ~= row[c] then + return false + end + end + end + return true +end + +-- Find every placement of every template for this map's tileset, build one +-- model per template, and stamp it. Returns nothing; the quads land in +-- S.objectQuads and the tiles are claimed so the volume path never boxes a +-- building this module has already modelled. +function Buildings.build(S, map, data, perRow) + if not data then return end + local tileset = map.tileset + local s = profile() + local list = s and s.buildings and s.buildings[tileset.id] + if not list then return end + + local atlasW = tileset.imageWidth or 128 + local atlasH = tileset.imageHeight or 48 + local tw, th = map.def.width * 4, map.def.height * 4 + local quads = S.objectQuads + + for index, t in ipairs(list) do + if type(t.tiles) == "table" and #t.tiles > 0 then + local bh, bw = #t.tiles, #t.tiles[1] + local first = t.tiles[1][1] + local built = nil + for ty = 0, th - bh do + Budget.tick() + for tx = 0, tw - bw do + if S.tileAt[keyOf(tx, ty)] == first and matches(S, t, tx, ty) then + if not built then + local key = tileset.id .. ":" .. index + if not models[key] then + local sp = read(t, data, perRow) + local pr = measure(sp, t) + models[key] = emit(model(sp, pr, t), sp, atlasW, atlasH) + end + built = models[key] + end + Buildings.stamp(S, map, built, tx, ty, bw, bh) + end + end + end + end + end +end + +-- One placement: claim its tiles (so the detector leaves them alone and +-- the mesher paints ground under them) and copy the model into place. +function Buildings.stamp(S, map, quads, tx, ty, bw, bh) + local shape = { class = "building", h = 0, art = "building", + flat = false, authored = true } + + -- the ground the building stands on: the commonest flat tile around its + -- feet, so a house on a path keeps its path + local votes, best, bestN = {}, nil, 0 + local function vote(x, y) + local k = keyOf(x, y) + local ns = S.shapeAt[k] + if ns and ns.flat and ns.class ~= "void" then + local tile = S.tileAt[k] + votes[tile] = (votes[tile] or 0) + 1 + if votes[tile] > bestN then best, bestN = tile, votes[tile] end + end + end + for c = 0, bw - 1 do + vote(tx + c, ty - 1) + vote(tx + c, ty + bh) + end + for r = 0, bh - 1 do + vote(tx - 1, ty + r) + vote(tx + bw, ty + r) + end + + for r = 0, bh - 1 do + for c = 0, bw - 1 do + local k = keyOf(tx + c, ty + r) + S.shapeAt[k] = shape + S.skip[k] = true + S.ground[k] = best or false + end + end + + local mx, mz = tx * 8, ty * 8 + local out = S.objectQuads + for _, q in ipairs(quads) do + out[#out + 1] = { + { q[1][1] + mx, q[1][2], q[1][3] + mz }, + { q[2][1] + mx, q[2][2], q[2][3] + mz }, + { q[3][1] + mx, q[3][2], q[3][3] + mz }, + { q[4][1] + mx, q[4][2], q[4][3] + mz }, + uv = q.uv, shade = q.shade, + } + end +end + +-- What the models built so far cost, keyed ":": the voxel +-- and shell counts tools/building_voxels.py checks this implementation +-- against (Stage 5 of the methodology), and the quad count that ships. +function Buildings.stats() + local out = {} + for key, quads in pairs(models) do + out[key] = { voxels = quads.voxels, shell = quads.shell, + quads = #quads } + end + return out +end + +-- Drop the prebuilt models (hot reload, or a mod shadowing the profile). +function Buildings.invalidate() + spec = nil + models = {} +end + +return Buildings diff --git a/lib/ChunkMesher.lua b/lib/ChunkMesher.lua new file mode 100644 index 0000000..77c2d4b --- /dev/null +++ b/lib/ChunkMesher.lua @@ -0,0 +1,963 @@ +-- Voxel world mode: turn a map's tile layer into one static 3D mesh. +-- +-- The scene description comes from Structures.lua, which -- 3dSen-style -- +-- detects each connected drawn thing on the map and picks its model: +-- +-- flat ground / water / void: a single quad. +-- top art ledges, roofs (profile-authored): a box with the art on its +-- TOP face; partial side bands crop the art (a 6px ledge face +-- is the bottom of the lip drawing). +-- volume walls, buildings, tree lines: each column rises to the +-- structure's REAL drawn height (Structures measures it, +-- repeat-aware and region-consistent -- a 6-row house is 48px, +-- a 40-row border forest is rows of 16px trees). The south +-- face folds the full artwork upright, 8px band by band, band +-- k sampling the map row k tiles north; the top wears the +-- structure's top rows. +-- object small props with a silhouette (plants, signs, lone trees): +-- per-pixel voxel prisms prebuilt by Structures, standing on +-- synthesized ground -- this mesher just emits their quads. +-- Round trees arrive as STAMPS (a shared hull template plus a +-- cell offset) and expand here, straight into the vertex +-- stream, so no map retains per-cell copies of its forests. +-- +-- Side faces are never stretched: all sides are 8px bands with the art +-- tiled per band and cropped at partial bands. +-- +-- Texturing samples the TILESET ATLAS, not a rendered copy of the map. The +-- atlas is 128x48; a map-space canvas covering the biggest routes would be +-- ~5 MB each with up to five live at once (connected maps), which is real +-- memory on the mobile targets. Sampling the atlas costs 24 KB, and costs +-- nothing in fidelity because TerrainAtlas hands back the same atlas +-- TileRenderer draws with -- including the fully recolored one RED++ +-- bakes -- so terrain color comes through untouched. +-- +-- BUILDS ARE ASYNCHRONOUS. A frame never blocks on meshing: VoxelScene +-- requests what it wants to draw, request() queues a build job, and +-- pump() -- called once a frame from the pipeline's update -- advances +-- the queue inside a few-millisecond budget (BuildBudget suspends the +-- job's coroutine mid-loop when the slice is spent). Until a mesh lands +-- the scene simply draws without it: the engine's flat path while the +-- current map has nothing, the body-only variant while the full one (the +-- border ring) is still cooking, neighbours popping in as they finish. +-- The synchronous get() remains for probes and tests. +-- +-- Meshes are cached per map id and EVICTED down to the live set (current +-- map + connected neighbours) whenever that set changes -- setLive() +-- releases far maps' GPU meshes and their Structures analysis, which is +-- what used to grow the heap by gigabytes over a cross-region trek. + +-- the mod namespace (see main.lua): V.require loads a sibling module +local V = ... + +local Assets = require("src.render.Assets") +local Structures = V.require("Structures") +local TileShape = V.require("TileShape") +local Voxel3D = V.require("Voxel3D") +local Budget = V.require("BuildBudget") + +local ffi = nil +do + local ok, mod = pcall(require, "ffi") + if ok then ffi = mod end +end + +local ChunkMesher = {} + +-- Ring of border blocks meshed around the body, matching the width +-- TileRenderer draws so the two modes end at the same place. +local RING = 3 + +-- A sliver of a texel, to keep a quad's sampling inside its own tile. +-- Without any inset the perspective rasteriser lands on a NEIGHBOURING +-- tile's texel along the shared edge and stitches bright seams across the +-- whole map. +-- +-- It has to be a sliver and not, as it first was, half a texel. A tile is +-- 8 texels of art across 8 world pixels -- one texel per pixel exactly -- +-- and insetting the uv by half a texel at each end squeezes that art into +-- a 7-texel sample range while the quad still covers 8 world pixels. The +-- art then advances 7/8 of a texel per pixel: boundaries drift off the +-- pixel grid, one art pixel gets sampled twice and another never at all. +-- Nothing showed it until the voxel wireframe drew the grid those pixels +-- were supposed to be sitting on. Interpolation error is nowhere near a +-- fiftieth of a texel, so this is as safe against bleed and costs 0.25% of +-- a pixel of drift across a whole tile. +local INSET = 0.02 + +-- The south face of a volume is the artwork itself, so it draws at full +-- brightness; its top face darkens a touch so the plateau behind a +-- standing drawing reads as depth rather than repeating the same art at +-- the same energy. +local VOLUME_TOP_SHADE = 0.85 + +local cache = {} -- map id -> { full = mesh|false, body = ..., grass = ... } +local gen = {} -- map id -> generation, bumped by invalidate/evict + +-- Horizontal neighbours: tile step, face direction id (see Voxel3D). +local SIDES = { + { 1, 0, 1 }, -- +X east + { -1, 0, 2 }, -- -X west + { 0, 1, 5 }, -- +Z south + { 0, -1, 6 }, -- -Z north +} + +local function keyOf(tx, ty) + return (ty + 64) * 4096 + (tx + 64) +end + +-- ------------------------------------------------------------ vertex sinks + +-- A sink accepts quads (4 corners, 4 uv pairs, flat or per-corner shade) +-- and finishes into a drawable mesh. The TABLE sink reproduces the +-- historical pure-Lua output -- geometry() returns its arrays for the +-- headless suite. The FFI sink packs the same six floats per vertex +-- straight into one growing native buffer, unindexed (v1 v2 v3 v1 v3 v4), +-- skipping ~a million short-lived Lua tables per route and LOVE's slow +-- table-by-table vertex upload. + +local function newTableSink() + local verts, indices, quads = {}, {}, 0 + return { + push = function(c, uv, shade) + local flat = type(shade) ~= "table" + for i = 1, 4 do + local cc, t = c[i], uv[i] + verts[#verts + 1] = { cc[1], cc[2], cc[3], t[1], t[2], + flat and shade or shade[i] } + end + Voxel3D.pushQuad(indices, quads) + quads = quads + 1 + end, + results = function() + return verts, indices, quads + end, + finish = function() + return Voxel3D.newMesh(verts, indices) + end, + } +end + +local TRI_ORDER = { 1, 2, 3, 1, 3, 4 } + +local function newFfiSink() + local cap = 4096 * 6 + local buf = ffi.new("float[?]", cap * 6) + local n = 0 + local sink + sink = { + push = function(c, uv, shade) + if n + 6 > cap then + local grown = ffi.new("float[?]", cap * 2 * 6) + ffi.copy(grown, buf, n * 6 * 4) + buf, cap = grown, cap * 2 + end + local flat = type(shade) ~= "table" + local base = n * 6 + for k = 1, 6 do + local i = TRI_ORDER[k] + local cc, t = c[i], uv[i] + buf[base] = cc[1] + buf[base + 1] = cc[2] + buf[base + 2] = cc[3] + buf[base + 3] = t[1] + buf[base + 4] = t[2] + buf[base + 5] = flat and shade or shade[i] + base = base + 6 + end + n = n + 6 + end, + finish = function() + if n == 0 then return nil end + -- upload in slices with budget ticks between: a route-sized mesh + -- is ~10-20MB and one atomic setVertices was the last remaining + -- frame spike. The mesh is not cached (so never drawn) until the + -- whole upload lands, and LuaJIT yields fine across pcall. + local ok, mesh = pcall(function() + local m = love.graphics.newMesh(Voxel3D.FORMAT, n, + "triangles", "static") + local CHUNK = 65536 -- vertices per slice (~1.5MB) + local i = 0 + while i < n do + local count = math.min(CHUNK, n - i) + local bytes = count * 6 * 4 + local data = love.data.newByteData(bytes) + ffi.copy(data:getFFIPointer(), buf + i * 6, bytes) + m:setVertices(data, i + 1) + data:release() + i = i + count + Budget.check() + end + return m + end) + return ok and mesh or nil + end, + } + return sink +end + +local function newSink() + if ffi and love and love.data and love.data.newByteData + and love.graphics and love.graphics.newMesh then + return newFfiSink() + end + return newTableSink() +end + +-- -------------------------------------------------------------- geometry + +-- Emit the raw geometry for `map` into `sink`. `bodyOnly` skips the +-- border ring -- the shape the 2D path's drawMapOnly has always had: a +-- neighbour map contributes its body, and only the CURRENT map supplies +-- the ring around the view. +-- +-- `masks` (full variant only) lists rectangles, in this map's world +-- pixels, where connected neighbour BODIES sit: ring geometry inside them +-- is suppressed. The 2D renderer never needed this because it painted +-- neighbour bodies OVER the ring; with a depth buffer the ring's standing +-- trees would rise straight through the neighbour's flat ground -- cross +-- into Route 1 and a wall of border trees sprouts over Pallet. +-- +-- Kept free of any GPU call so it can be exercised headless -- the +-- geometry is the part with the interesting invariants, and a suite that +-- needed a real GL context to check them would never run in CI. +local function runGeometry(map, bodyOnly, masks, sink) + local push = sink.push + local tileset = map.tileset + local S = Structures.forMap(map) + local perRow = tileset.tilesPerRow or 16 + local atlasW = tileset.imageWidth or (perRow * 8) + local atlasH = tileset.imageHeight or 48 + + local function heightAt(tx, ty) + local k = keyOf(tx, ty) + if S.skip[k] then return 0 end + local run = S.runs[k] + if run then return run.h end + local s = S.shapeAt[k] + return s and s.h or 0 + end + + -- one atlas-rect UV, optionally cropped to art rows [vTop, vBot] of 8 + local function uvRect(tile, vTop, vBot) + local ax = (tile % perRow) * 8 + local ay = math.floor(tile / perRow) * 8 + local vi = math.min(INSET, (vBot - vTop) / 4) + return (ax + INSET) / atlasW, (ax + 8 - INSET) / atlasW, + (ay + vTop + vi) / atlasH, (ay + vBot - vi) / atlasH + end + + -- ------------------------------------------------------ ambient occlusion + -- + -- Ambient light is what reaches a surface from the sky at large, so it is + -- blocked by how much geometry crowds a point rather than by where the + -- sun happens to be -- which makes it the exact complement of the shadow + -- pass, and the reason both are worth having. The shadow map draws the + -- long directional shadow a building throws; this draws the dark seam in + -- every corner the sky cannot see into, at every scale finer than a + -- shadow map texel. + -- + -- Baked per vertex, the classic voxel way: each corner counts the + -- neighbours that crowd it and steps down once per neighbour, and the + -- rasteriser interpolates the steps into a smooth falloff. Costs exactly + -- nothing at draw time, and it is resolution-independent -- a screen + -- space pass would blur across the pixel grid this whole mode is built + -- to keep crisp. + -- + -- (What was here before was a one-directional contact shadow keyed to a + -- sun in the northwest: two neighbours, one corner, top faces only.) + + -- Intensity. Both terms below are DARKENING amounts rather than + -- multipliers, so this one number scales the whole effect: 1.0 is the + -- barely-there first cut, and everything is expressed against it. + local AO_STRENGTH = 2.4 + local AO_STEP = 0.09 * AO_STRENGTH -- per crowding neighbour, max 3 + local AO_EDGE = 1 - 0.14 * AO_STRENGTH -- creases / corners on a face + local AO_GROUND = 0.12 * AO_STRENGTH -- a prop's contact with the floor + local AO_RISE = 6 -- px over which the floor lets go + local AO_FLOOR = 0.25 -- never let a vertex reach black + + -- Both sinks copy a per-corner shade straight out into the vertex stream + -- and keep no reference, so these two scratch rows are reused for every + -- quad on the map rather than allocating a table per face -- a route + -- builds a few hundred thousand of them. + local aoTop = { 0, 0, 0, 0 } + local aoSide = { 0, 0, 0, 0 } + + -- A top face's four corners, each occluded by the three cells that touch + -- it: two edge neighbours and the diagonal between them. + local function aoShades(tx, ty, h, shade) + local n = heightAt(tx, ty - 1) > h + local s = heightAt(tx, ty + 1) > h + local e = heightAt(tx + 1, ty) > h + local w = heightAt(tx - 1, ty) > h + local nw = heightAt(tx - 1, ty - 1) > h + local ne = heightAt(tx + 1, ty - 1) > h + local sw = heightAt(tx - 1, ty + 1) > h + local se = heightAt(tx + 1, ty + 1) > h + if not (n or s or e or w or nw or ne or sw or se) then return shade end + local function corner(a, b, d) + local k = 0 + if a then k = k + 1 end + if b then k = k + 1 end + -- a diagonal wedged behind both of its edges adds nothing: the + -- corner is already as enclosed as it can get, and counting it + -- again is what turns an ordinary inside corner black + if d and not (a and b) then k = k + 1 end + -- floored, so cranking AO_STRENGTH deepens the seams instead of + -- punching holes of pure black through the world + return shade * math.max(AO_FLOOR, 1 - AO_STEP * k) + end + -- corners in topQuad order: NW, NE, SE, SW + aoTop[1], aoTop[2] = corner(n, w, nw), corner(n, e, ne) + aoTop[3], aoTop[4] = corner(s, e, se), corner(s, w, sw) + return aoTop + end + + -- The same idea on an upright face, where the crowding is of two kinds: + -- the CREASE it rises out of (the band sitting on the ground, or on + -- whatever lower neighbour exposed the face) and the INSIDE CORNERS + -- where the columns flanking it stand proud of the band. `hl`/`hr` are + -- those flanking heights in FACE order -- left then right as seen from + -- outside, per LATERAL below -- so the shades line up with sideQuad's + -- corners without the caller thinking about compass directions. + local LATERAL = { + [1] = { 0, 1, 0, -1 }, -- east face: left south, right north + [2] = { 0, -1, 0, 1 }, -- west face: left north, right south + [5] = { -1, 0, 1, 0 }, -- south face: left west, right east + [6] = { 1, 0, -1, 0 }, -- north face: left east, right west + } + -- Ground contact for the prebuilt prop quads -- the per-pixel plants, + -- signs and lone trees, and the round-tree stamps. Those arrive from + -- Structures already finished, so the neighbour counting above has no + -- columns to count. What it CAN say is that the ground plane itself + -- blocks half the sky, so the closer a voxel sits to it the less ambient + -- light reaches it -- which is what plants a prop on the floor instead + -- of leaving it looking pasted over the top. + local aoProp = { 0, 0, 0, 0 } + local function groundShades(c, shade) + if type(shade) == "table" then return shade end + local y1, y2, y3, y4 = c[1][2], c[2][2], c[3][2], c[4][2] + if math.min(y1, y2, y3, y4) >= AO_RISE then return shade end + for i = 1, 4 do + local t = c[i][2] / AO_RISE + aoProp[i] = shade * (t >= 1 and 1 or (1 - AO_GROUND * (1 - t))) + end + return aoProp + end + + local AO_CORNER = math.max(AO_FLOOR, AO_EDGE * AO_EDGE) -- crease AND flank + local function sideShades(hl, hr, y0, y1, crease, shade) + if not (crease or hl > y0 or hr > y0) then return shade end + -- corners run bottom-left, bottom-right, top-right, top-left + local base = crease and AO_EDGE or 1 + aoSide[1] = shade * (hl > y0 and (crease and AO_CORNER or AO_EDGE) or base) + aoSide[2] = shade * (hr > y0 and (crease and AO_CORNER or AO_EDGE) or base) + aoSide[3] = shade * (hr > y1 and AO_EDGE or 1) + aoSide[4] = shade * (hl > y1 and AO_EDGE or 1) + return aoSide + end + + local function topQuad(x0, z0, h, tile, shade) + local u0, u1, v0, v1 = uvRect(tile, 0, 8) + push({ { x0, h, z0 }, { x0 + 8, h, z0 }, + { x0 + 8, h, z0 + 8 }, { x0, h, z0 + 8 } }, + { { u0, v0 }, { u1, v0 }, { u1, v1 }, { u0, v1 } }, + aoShades(x0 / 8, z0 / 8, h, shade)) + end + + -- vertical quad for face direction `d` of the tile column at (x0, z0), + -- spanning heights [y0, y1] and showing art rows [vTop, vBot] of `tile`. + -- Corners run bottom-left, bottom-right, top-right, top-left as seen + -- from outside; u follows +X on the north/south faces so a door or sign + -- never draws mirrored. + local function sideQuad(d, x0, z0, y0, y1, tile, vTop, vBot, shade) + local x1, z1 = x0 + 8, z0 + 8 + local c + if d == 5 then -- south, at z1 + c = { { x0, y0, z1 }, { x1, y0, z1 }, { x1, y1, z1 }, { x0, y1, z1 } } + elseif d == 6 then -- north, at z0 + c = { { x1, y0, z0 }, { x0, y0, z0 }, { x0, y1, z0 }, { x1, y1, z0 } } + elseif d == 1 then -- east, at x1 + c = { { x1, y0, z1 }, { x1, y0, z0 }, { x1, y1, z0 }, { x1, y1, z1 } } + else -- west, at x0 + c = { { x0, y0, z0 }, { x0, y0, z1 }, { x0, y1, z1 }, { x0, y1, z0 } } + end + local u0, u1, v0, v1 = uvRect(tile, vTop, vBot) + push(c, { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, shade) + end + + local def = map.def + local tw, th = def.width * 4, def.height * 4 -- map size in tiles + local r = bodyOnly and 0 or RING * 4 + + -- true when the (ring) position lies under a connected neighbour's body + local function masked(px0, pz0, px1, pz1) + if not masks then return false end + for _, mk in ipairs(masks) do + if px1 > mk[1] and px0 < mk[3] and pz1 > mk[2] and pz0 < mk[4] then + return true + end + end + return false + end + + -- The inclusive variant for OBJECT quads: a quad TOUCHING a neighbour + -- body counts as under it. The old test took the quad's center with + -- strict bounds, and a quad whose center sat exactly on the body's + -- edge line escaped the mask -- stringing stray pixel fragments of + -- otherwise-dropped border trees along every map seam. + local function maskedClosed(px0, pz0, px1, pz1) + if not masks then return false end + for _, mk in ipairs(masks) do + if px1 >= mk[1] and px0 <= mk[3] and pz1 >= mk[2] and pz0 <= mk[4] then + return true + end + end + return false + end + + for ty = -r, th + r - 1 do + for tx = -r, tw + r - 1 do + Budget.tick() + local k = keyOf(tx, ty) + local s, tile = S.shapeAt[k], S.tileAt[k] + local inBody = tx >= 0 and ty >= 0 and tx < tw and ty < th + if not inBody and masked(tx * 8, ty * 8, tx * 8 + 8, ty * 8 + 8) then + s = nil + end + + if s and S.skip[k] then + -- an object stands here; paint its synthesized ground and let the + -- prebuilt prism quads (appended below) carry the art + if S.ground[k] then topQuad(tx * 8, ty * 8, 0, S.ground[k], 1) end + elseif s then + local run = S.runs[k] + local h = run and run.h or s.h + local x0, z0 = tx * 8, ty * 8 + + -- top face. A roofed volume gets a GABLE segment: the roof rises + -- from the facade top at the south eave to a ridge across the + -- footprint's middle, then falls back to the facade at the north + -- edge -- so the far side sits LOW. (The first cut was a shed + -- plane rising all the way north, which turns a building into a + -- ramp.) The south slope wears the structure's roof rows (ridge + -- art at the ridge, eaves art at the eave); the back slope + -- mirrors them. Exposed east/west flanks hip: their outer edge + -- drops toward the eave, rounding the drawn corner tiles into 45 + -- degree corners. Flat-topped volumes wear their top rows; + -- everything else its own art. + if run and run.rise > 0 then + local mid = run.extent / 2 + local function gableH(d) -- d = rows north of the south eave + local t = d <= mid and d / mid or (run.extent - d) / (run.extent - mid) + return run.h + run.rise * math.max(0, math.min(1, t)) + end + local d0 = run.front - ty -- rows from the south edge + local hS = gableH(d0) + local hN = gableH(d0 + 1) + -- art by proximity to the ridge, mirrored over the back + local rel = 1 - math.abs(d0 + 0.5 - mid) / math.max(mid, 0.5) + local idx = math.min(run.roofRows - 1, + math.floor((1 - rel) * run.roofRows)) + local roofTile = map:tileAt(tx, run.north + idx) + local swY, seY, neY, nwY = hS, hS, hN, hN + if heightAt(tx - 1, ty) < run.h then -- west flank: hip + swY = math.max(run.h, hS - 8) + nwY = math.max(run.h, hN - 8) + end + if heightAt(tx + 1, ty) < run.h then -- east flank: hip + seY = math.max(run.h, hS - 8) + neY = math.max(run.h, hN - 8) + end + local u0, u1, v0, v1 = uvRect(roofTile, 0, 8) + push({ { x0, swY, z0 + 8 }, { x0 + 8, seY, z0 + 8 }, + { x0 + 8, neY, z0 }, { x0, nwY, z0 } }, + { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, 0.95) + elseif run then + local m = math.min(2, run.extent) + local topTile = map:tileAt(tx, run.north + ((ty - run.north) % m)) + topQuad(x0, z0, h, topTile, VOLUME_TOP_SHADE) + else + local topTile = tile + if s.art == "upright" and s.authored then + -- Top art for a pinned box. A furniture drawing is top-view + -- rows over floor(h/8) face-on rows the fold stands upright; + -- a face row's top would repeat its front art lying flat, so + -- it wears the nearest row above the face block instead -- + -- the drawn tabletop (and whatever sits on it) stays on top, + -- and a fully-folded structure (wall, desk) tops with its + -- northmost row. + local north, front = ty, ty + while ty - north < 6 do + local bs = S.shapeAt[keyOf(tx, north - 1)] + if bs and bs.authored and bs.class == s.class then + north = north - 1 + else + break + end + end + while front - ty < 6 do + local bs = S.shapeAt[keyOf(tx, front + 1)] + if bs and bs.authored and bs.class == s.class then + front = front + 1 + else + break + end + end + local row = math.min(ty, front - math.floor(h / 8)) + if row < north then + -- the whole run folded onto the face: top with the drawn + -- row just above it when that row is furniture too (a + -- bookcase wearing its shelf-top trim), else with the + -- run's own top row + local above = S.shapeAt[keyOf(tx, north - 1)] + row = (above and above.authored and above.art == "upright") + and (north - 1) or north + end + topTile = S.tileAt[keyOf(tx, row)] + end + topQuad(x0, z0, h, topTile, + s.art == "upright" and VOLUME_TOP_SHADE or 1) + end + + -- sides: 8px bands wherever the neighbour is lower. Band k spans + -- heights [8k, 8k+8) and shows one full tile of art; a partial + -- band crops the art rows to match, so nothing ever stretches. + for _, side in ipairs(SIDES) do + local nh = heightAt(tx + side[1], ty + side[2]) + if nh < h then + local d = side[3] + -- the columns flanking this face, for the inside-corner term: + -- fixed for the whole face, so they are read once rather than + -- once per 8px band + local lat = LATERAL[d] + local hl = lat and heightAt(tx + lat[1], ty + lat[2]) or 0 + local hr = lat and heightAt(tx + lat[3], ty + lat[4]) or 0 + for band = math.floor(nh / 8), math.ceil(h / 8) - 1 do + local y0 = math.max(nh, band * 8) + local y1 = math.min(h, band * 8 + 8) + if y1 > y0 then + local src, shade = tile, Voxel3D.FACE_SHADE[d] + if run then + -- fold the structure's artwork up this face: band k + -- samples the map row k tiles north of the structure's + -- front, clamped to its extent. The south face is the + -- drawing itself (full brightness); the other sides wear + -- the same rows darkened, so a building's flank matches + -- its face instead of smearing one tile + if d == 6 then + src = map:tileAt(tx, math.min(run.front, + run.north + band)) + else + src = map:tileAt(tx, math.max(run.north, + run.front - band)) + end + if d == 5 then shade = 1 end + elseif s.art == "upright" then + -- profile-authored upright (a pinned wall or furniture + -- box): fold the drawing up the face, band 0 the + -- structure's southmost same-class row and higher bands + -- the rows north of it, repeating past the top. The + -- south face is the drawing itself (full brightness); + -- flanks and back wear the same front stack darkened, so + -- a desk's side matches its face instead of smearing a + -- different jumble per row. + if d == 5 then shade = 1 end + local front = ty + while front < ty + 6 do + local fs2 = S.shapeAt[keyOf(tx, front + 1)] + if fs2 and fs2.authored and fs2.class == s.class then + front = front + 1 + else + break + end + end + local fk = keyOf(tx, front - band) + local fs = S.shapeAt[fk] + if fs and fs.authored and fs.class == s.class then + src = S.tileAt[fk] + end + end + sideQuad(d, x0, z0, y0, y1, src, + (band * 8 + 8) - y1, (band * 8 + 8) - y0, + sideShades(hl, hr, y0, y1, y0 <= nh, shade)) + end + end + end + end + end + end + end + + -- Prebuilt quads from Structures (per-pixel voxel props, lathed + -- columns) plus the round-tree stamps expanded in place. Keep rules, + -- by the quad's own extent: + -- body-only the quad must overlap the OPEN body interval -- a + -- neighbour's ring props must not march past its edge + -- into this map, and a quad lying exactly ON the edge + -- plane would z-fight the map that owns that plane. + -- full anything overlapping the body stays whole (props that + -- straddle the edge no longer shed their outer half); + -- pure ring quads drop when they touch a neighbour body + -- (maskedClosed), which is what strings of seam pixels + -- were: fragments of dropped border trees whose centers + -- sat exactly on the boundary line. + local bw, bh = tw * 8, th * 8 + local function keepQuad(x0, z0, x1, z1) + local overBody = x1 > 0 and x0 < bw and z1 > 0 and z0 < bh + if bodyOnly then return overBody end + return overBody or not maskedClosed(x0, z0, x1, z1) + end + + local scUV = { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } } + local function quadUV(q) + if q.uv then return q.uv end + for i = 1, 4 do + scUV[i][1], scUV[i][2] = q.u, q.v + end + return scUV + end + + for _, q in ipairs(S.objectQuads) do + Budget.tick() + local x0 = math.min(q[1][1], q[2][1], q[3][1], q[4][1]) + local x1 = math.max(q[1][1], q[2][1], q[3][1], q[4][1]) + local z0 = math.min(q[1][3], q[2][3], q[3][3], q[4][3]) + local z1 = math.max(q[1][3], q[2][3], q[3][3], q[4][3]) + if keepQuad(x0, z0, x1, z1) then + push({ q[1], q[2], q[3], q[4] }, quadUV(q), groundShades(q, q.shade)) + end + end + + -- true when the rect sits entirely inside one neighbour-body rect + local function containedInMask(x0, z0, x1, z1) + if not masks then return false end + for _, mk in ipairs(masks) do + if x0 >= mk[1] and x1 <= mk[3] and z0 >= mk[2] and z1 <= mk[4] then + return true + end + end + return false + end + + -- round-tree stamps: the shared hull template translated per cell, + -- through reusable scratch corners so expansion allocates nothing. + -- A hull spans at most its own 16px cell, so one rect test usually + -- answers for the whole stamp: strictly interior stamps keep every + -- quad, ring stamps buried under a neighbour body (or, body-only, ring + -- stamps full stop) skip without touching their quads. Only stamps + -- crossing a boundary walk quad by quad. + local sc = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } } + for _, st in ipairs(S.roundStamps or {}) do + local mx, mz = st.mx, st.mz + local sx0, sz0, sx1, sz1 = mx - 8, mz - 8, mx + 8, mz + 8 + local interior = sx0 > 0 and sx1 < bw and sz0 > 0 and sz1 < bh + local overBody = sx1 > 0 and sx0 < bw and sz1 > 0 and sz0 < bh + local keepAll, skipAll + if bodyOnly then + keepAll = interior + skipAll = not overBody + else + keepAll = interior or not maskedClosed(sx0, sz0, sx1, sz1) + skipAll = not overBody and containedInMask(sx0, sz0, sx1, sz1) + end + if not skipAll then + for _, q in ipairs(st.quads) do + Budget.tick() + for i = 1, 4 do + local c, s2 = q[i], sc[i] + s2[1] = c[1] + mx + s2[2] = c[2] + s2[3] = c[3] + mz + end + local ok = keepAll + if not ok then + local x0 = math.min(sc[1][1], sc[2][1], sc[3][1], sc[4][1]) + local x1 = math.max(sc[1][1], sc[2][1], sc[3][1], sc[4][1]) + local z0 = math.min(sc[1][3], sc[2][3], sc[3][3], sc[4][3]) + local z1 = math.max(sc[1][3], sc[2][3], sc[3][3], sc[4][3]) + ok = keepQuad(x0, z0, x1, z1) + end + if ok then + push(sc, quadUV(q), groundShades(sc, q.shade)) + end + end + end + end +end + +-- The raw geometry for `map`: (vertex list, triangle index list, quad +-- count). Synchronous and GPU-free -- the headless suite and the probes +-- exercise the invariants through this. +function ChunkMesher.geometry(map, bodyOnly, masks) + local sink = newTableSink() + runGeometry(map, bodyOnly, masks, sink) + return sink.results() +end + +-- Build the mesh for `map` synchronously. Returns nil when there is +-- nothing to draw or meshes are unavailable (headless). +function ChunkMesher.build(map, bodyOnly, masks) + local sink = newSink() + runGeometry(map, bodyOnly, masks, sink) + return sink.finish() +end + +-- The tall-grass rows as their own mesh: VoxelScene draws it AFTER the +-- characters so the southern row of a grass cell still overdraws a +-- walker's feet (characters stamp over terrain, Gen 1 style, so ordinary +-- terrain could never do this). +local function buildGrassMesh(map) + local S = Structures.forMap(map) + if #S.grassQuads == 0 then return nil end + local verts, indices, n = {}, {}, 0 + for _, q in ipairs(S.grassQuads) do + for i = 1, 4 do + local c = q[i] + local uv = q.uv and q.uv[i] or { q.u, q.v } + verts[#verts + 1] = { c[1], c[2], c[3], uv[1], uv[2], q.shade } + end + Voxel3D.pushQuad(indices, n) + n = n + 1 + end + return Voxel3D.newMesh(verts, indices) +end + +-- ------------------------------------------------------------- the cache + +local function entry(id) + local c = cache[id] + if not c then + c = {} + cache[id] = c + end + return c +end + +local function releaseEntry(c) + for _, slot in ipairs({ "full", "body", "grass" }) do + local mesh = c[slot] + if mesh and mesh.release then pcall(mesh.release, mesh) end + c[slot] = nil + end +end + +-- ---------------------------------------------------------- async builds + +local jobs = {} -- FIFO of pending jobs +local jobIndex = {} -- "id:slot" -> job + +local clock = (love and love.timer and love.timer.getTime) or os.clock + +local function jobKey(id, slot) + return id .. ":" .. slot +end + +local function finishJob(job, ok, err) + jobIndex[jobKey(job.id, job.slot)] = nil + for i, j in ipairs(jobs) do + if j == job then + table.remove(jobs, i) + break + end + end + if not ok then + -- name the reason: in a real session a lost build is a black map + print("[warn] voxel mesh build failed for " .. tostring(job.id) + .. ": " .. tostring(err)) + if (gen[job.id] or 0) == job.gen then + entry(job.id)[job.slot] = false + end + end +end + +-- A build only lands if the map's generation still matches the one the +-- job was queued under -- invalidate/evict bump it to cancel in-flight +-- work whose inputs went stale. +local function runJob(job) + local map = job.map + local c = entry(job.id) + if c.grass == nil then + local okG, grass = pcall(buildGrassMesh, map) + if (gen[job.id] or 0) ~= job.gen then return end + c.grass = (okG and grass) or false + end + local sink = newSink() + runGeometry(map, job.slot == "body", job.masks, sink) + local mesh = sink.finish() + if (gen[job.id] or 0) ~= job.gen then return end + c[job.slot] = mesh or false +end + +-- Queue a build unless the slot is already cached or queued. Returns the +-- cached mesh when there is one (false-cached misses return nil). +-- `urgent` marks the current map's meshes: pump() gives those a bigger +-- slice and runs them before neighbour jobs. +function ChunkMesher.request(map, bodyOnly, masks, urgent) + local slot = bodyOnly and "body" or "full" + local c = cache[map.id] + if c and c[slot] ~= nil then return c[slot] or nil end + local key = jobKey(map.id, slot) + local job = jobIndex[key] + if not job then + job = { id = map.id, map = map, slot = slot, masks = masks, + urgent = urgent or false, gen = gen[map.id] or 0 } + jobIndex[key] = job + jobs[#jobs + 1] = job + elseif urgent then + job.urgent = true + end + return nil +end + +function ChunkMesher.pending() + return #jobs +end + +-- Advance queued builds inside a per-frame time budget. Urgent jobs (the +-- current map) come first and get the larger slice -- the first voxel +-- frame after a toggle is worth more milliseconds than a neighbour +-- popping in one frame later. `covered` says the world pass is hidden +-- this frame (a warp's fade, a menu): nothing visible can hitch, so the +-- slice opens up and a door fade swallows most of a destination build. +local URGENT_SLICE = 0.012 +local IDLE_SLICE = 0.005 +local COVERED_SLICE = 0.030 + +function ChunkMesher.pump(covered) + if #jobs == 0 then return end + local pick = jobs[1] + for _, j in ipairs(jobs) do + if j.urgent then + pick = j + break + end + end + local slice = covered and COVERED_SLICE + or (pick.urgent and URGENT_SLICE or IDLE_SLICE) + local deadline = clock() + slice + while pick do + if not pick.co then + pick.co = coroutine.create(runJob) + end + Budget.begin(pick.co, deadline - clock()) + local ok, err = coroutine.resume(pick.co, pick) + Budget.finish() + if not ok then + finishJob(pick, false, err) + elseif coroutine.status(pick.co) == "dead" then + finishJob(pick, true) + else + return -- slice spent mid-build; resume next frame + end + if clock() >= deadline or #jobs == 0 then return end + pick = jobs[1] + for _, j in ipairs(jobs) do + if j.urgent then + pick = j + break + end + end + end +end + +-- Meshes for `map`, built SYNCHRONOUSLY on first use -- the historical +-- contract, kept for probes and any direct caller. `false` is cached for +-- a map whose mesh could not be built so a headless run does not retry +-- every frame. `masks` (the full variant's neighbour-body rects) is +-- static per map id -- a map's connections never change -- so it caches +-- like everything else. +function ChunkMesher.get(map, bodyOnly, masks) + local slot = bodyOnly and "body" or "full" + local c = entry(map.id) + if c.grass == nil then + local okG, grass = pcall(buildGrassMesh, map) + c.grass = (okG and grass) or false + end + if c[slot] == nil then + local ok, mesh = pcall(ChunkMesher.build, map, bodyOnly, masks) + if not ok then + print("[warn] voxel mesh build failed for " .. tostring(map.id) + .. ": " .. tostring(mesh)) + end + c[slot] = (ok and mesh) or false + local key = jobKey(map.id, slot) + local job = jobIndex[key] + if job then finishJob(job, true) end + end + return c[slot] or nil +end + +-- The cached mesh, or nil -- never builds. The async path's read side. +function ChunkMesher.peek(map, bodyOnly) + local c = cache[map.id] + local mesh = c and c[bodyOnly and "body" or "full"] + return mesh or nil +end + +function ChunkMesher.grass(map) + local c = cache[map.id] + return c and c.grass or nil +end + +-- Evict everything outside `live` (a set of map ids): far maps' meshes +-- are released -- GPU buffer and LOVE's CPU copy both -- and their +-- Structures analysis dropped. The live set is the current map plus its +-- rendered neighbours, so memory stays bounded by what is on or near the +-- screen instead of growing with every area ever visited. +-- +-- The PREVIOUS live set is retained too: warping into a building +-- collapses the set to one small interior, and evicting the town at the +-- door means rebuilding the whole neighbourhood on the way out -- a +-- flat-world flash after every house. One set of history makes the +-- round trip free while staying bounded at two neighbourhoods. +local prevLive = {} + +function ChunkMesher.setLive(live) + for id, c in pairs(cache) do + if not live[id] and not prevLive[id] then + releaseEntry(c) + cache[id] = nil + gen[id] = (gen[id] or 0) + 1 + Structures.invalidate(id) + end + end + for i = #jobs, 1, -1 do + local job = jobs[i] + if not live[job.id] and not prevLive[job.id] then + jobIndex[jobKey(job.id, job.slot)] = nil + table.remove(jobs, i) + end + end + prevLive = live +end + +-- Drop one map's mesh (Cut swapped a block) or all of them (hot reload). +-- Structures' analysis is derived from the same block layer, so it drops +-- in the same breath; in-flight builds of the map are cancelled through +-- the generation counter. +function ChunkMesher.invalidate(mapId) + Structures.invalidate(mapId) + if mapId then + local c = cache[mapId] + if c then releaseEntry(c) end + cache[mapId] = nil + gen[mapId] = (gen[mapId] or 0) + 1 + else + for _, c in pairs(cache) do releaseEntry(c) end + cache = {} + for id in pairs(gen) do gen[id] = gen[id] + 1 end + end + for i = #jobs, 1, -1 do + local job = jobs[i] + if mapId == nil or job.id == mapId then + jobIndex[jobKey(job.id, job.slot)] = nil + table.remove(jobs, i) + end + end +end + +Assets.register(function() ChunkMesher.invalidate() end) + +return ChunkMesher diff --git a/lib/Mat4.lua b/lib/Mat4.lua new file mode 100644 index 0000000..a08d0ca --- /dev/null +++ b/lib/Mat4.lua @@ -0,0 +1,112 @@ +-- Minimal 4x4 matrix math for voxel world mode. +-- +-- Row-major, and sent to the shader with shader:send("mvp", "row", m). +-- LOVE 11.5's matrix uniform defaults to column-major, so the "row" layout +-- argument is what lets these tables read the same way they are written +-- here -- translation in the fourth column, m[4]/m[8]/m[12]. +-- +-- Only what the renderer actually needs: a perspective projection (the +-- camera), an orthographic one (the sun's shadow pass), a look-based view, +-- and the translate/rotateY/scale a model matrix is built from. No general +-- inverse, no quaternions. + +local Mat4 = {} + +function Mat4.identity() + return { 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 } +end + +-- a * b, both row-major +function Mat4.mul(a, b) + local o = {} + for r = 0, 3 do + local a0, a1 = a[r * 4 + 1], a[r * 4 + 2] + local a2, a3 = a[r * 4 + 3], a[r * 4 + 4] + for c = 1, 4 do + o[r * 4 + c] = a0 * b[c] + a1 * b[4 + c] + a2 * b[8 + c] + a3 * b[12 + c] + end + end + return o +end + +function Mat4.translate(x, y, z) + return { 1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1 } +end + +function Mat4.scale(x, y, z) + return { x, 0, 0, 0, + 0, y, 0, 0, + 0, 0, z, 0, + 0, 0, 0, 1 } +end + +function Mat4.rotateY(a) + local c, s = math.cos(a), math.sin(a) + return { c, 0, s, 0, + 0, 1, 0, 0, + -s, 0, c, 0, + 0, 0, 0, 1 } +end + +function Mat4.rotateX(a) + local c, s = math.cos(a), math.sin(a) + return { 1, 0, 0, 0, + 0, c, -s, 0, + 0, s, c, 0, + 0, 0, 0, 1 } +end + +-- Right-handed perspective onto GL clip space (z in [-1, 1]). +function Mat4.perspective(fovY, aspect, near, far) + local f = 1 / math.tan(fovY / 2) + local d = near - far + return { f / aspect, 0, 0, 0, + 0, f, 0, 0, + 0, 0, (far + near) / d, (2 * far * near) / d, + 0, 0, -1, 0 } +end + +-- Right-handed orthographic projection onto GL clip space (z in [-1, 1]). +-- The view-space box is x in [l, r], y in [b, t], z in [-f, -n] -- near and +-- far are DISTANCES down the view's -z, exactly as in perspective() above. +-- Parallel, so a sun is a direction and nothing else: no eye point, no +-- foreshortening, and clip z stays linear in world units, which is what +-- lets the shadow pass store depth as a plain number. +function Mat4.ortho(l, r, b, t, n, f) + return { 2 / (r - l), 0, 0, -(r + l) / (r - l), + 0, 2 / (t - b), 0, -(t + b) / (t - b), + 0, 0, -2 / (f - n), -(f + n) / (f - n), + 0, 0, 0, 1 } +end + +-- Right-handed look-at. eye/target/up are {x, y, z}. +function Mat4.lookAt(eye, target, up) + local function sub(a, b) return { a[1] - b[1], a[2] - b[2], a[3] - b[3] } end + local function norm(v) + local l = math.sqrt(v[1] * v[1] + v[2] * v[2] + v[3] * v[3]) + if l == 0 then return { 0, 0, 0 } end + return { v[1] / l, v[2] / l, v[3] / l } + end + local function cross(a, b) + return { a[2] * b[3] - a[3] * b[2], + a[3] * b[1] - a[1] * b[3], + a[1] * b[2] - a[2] * b[1] } + end + local function dot(a, b) return a[1] * b[1] + a[2] * b[2] + a[3] * b[3] end + + local f = norm(sub(target, eye)) -- forward + local s = norm(cross(f, up)) -- right + local u = cross(s, f) -- true up + return { s[1], s[2], s[3], -dot(s, eye), + u[1], u[2], u[3], -dot(u, eye), + -f[1], -f[2], -f[3], dot(f, eye), + 0, 0, 0, 1 } +end + +return Mat4 diff --git a/lib/ModSetting.lua b/lib/ModSetting.lua new file mode 100644 index 0000000..2bed605 --- /dev/null +++ b/lib/ModSetting.lua @@ -0,0 +1,132 @@ +-- One of this mod's own settings: a ladder of values, where it persists, +-- and the row the player cycles it on. +-- +-- The engine gives a render pipeline all of this for free -- ladder, +-- options row, hotkey, persistence -- but only to something that OWNS a +-- pass of the frame. The voxel wireframe and the world curve do not: they +-- parameterise the voxel pass, so they have nothing to put in drawWorld or +-- present and the registry rightly rejects them. What is left is a plain +-- mod setting, and this is the boilerplate two of them would otherwise +-- each carry a copy of: +-- +-- options:define a home in options.modOptions.DRAMATIC_SHAPE, plus a row +-- on this mod's page in the mod manager. +-- ui.options.rows the same setting on the OPTIONS menu, where the +-- player already goes for VOXEL and T-SHIFT. +-- +-- Both rows read and write the one stored value, so they cannot disagree. +-- Writing mirrors what the manager's own page does (ManagerState:setOption): +-- the live save's options table, the loader's copy that mod.options:get +-- reads, and then the file. + +-- the mod namespace (see main.lua): V.require loads a sibling module +local V = ... + +local ModSetting = {} +ModSetting.__index = ModSetting + +local function modId() + local mod = V.mod + return (mod and mod.id) or "DRAMATIC_SHAPE" +end + +-- `values` are the stored values in ladder order and `labels` what the row +-- shows for each; values[1] is the default, and the one an unreadable or +-- unrecognised stored value falls back to. +function ModSetting.new(key, label, values, labels) + return setmetatable({ + key = key, label = label, values = values, labels = labels, + index = nil, -- nil = not yet read back from the persisted options + }, ModSetting) +end + +local function indexOf(self, value) + for i, v in ipairs(self.values) do + if v == value then return i end + end + return 1 +end + +-- What the player left it at last session. Read lazily rather than at load +-- time: the loader fills modOptions before a mod runs, but reading through +-- the API keeps this honest about where the value lives. +function ModSetting:read() + if self.index then return self.index end + local mod = V.mod + local value + if mod and mod.options then + local ok, got = pcall(mod.options.get, mod.options, self.key) + if ok then value = got end + end + self.index = indexOf(self, value) + return self.index +end + +function ModSetting:get() + return self.values[self:read()] +end + +function ModSetting:level() + return self:read() - 1 +end + +function ModSetting:setIndex(i, game) + local n = #self.values + i = ((i - 1) % n + n) % n + 1 + self.index = i + local value, id = self.values[i], modId() + local opts = game and game.save and game.save.options + if opts then + opts.modOptions = opts.modOptions or {} + opts.modOptions[id] = opts.modOptions[id] or {} + opts.modOptions[id][self.key] = value + end + local loader = game and game.mods + if loader then + loader.modOptions = loader.modOptions or {} + loader.modOptions[id] = loader.modOptions[id] or {} + loader.modOptions[id][self.key] = value + end + if game and game.writeOptions then pcall(game.writeOptions, game) end + return value +end + +function ModSetting:cycle(game, dir) + return self:setIndex(self:read() + (dir or 1), game) +end + +-- Adopt a value set from somewhere else (the mod manager's settings page, +-- which writes and persists on its own). Nothing to store: just move the +-- cached index so the next read agrees with it. +function ModSetting:sync(value) + self.index = indexOf(self, value) +end + +-- The descriptor src/ui/OptionRows.lua renders, in the shape the +-- ui.options.rows hook appends. +function ModSetting:row() + local self_ = self + return { + id = "DRAMATIC_SHAPE:" .. self.key, + label = self.label, + value = function() return self_.labels[self_:read()] end, + step = function(game, dir) + self_:cycle(game, dir) + return true + end, + } +end + +-- The row the mod manager's own settings page builds for this mod. +function ModSetting:schema(help) + local choices = {} + for i, v in ipairs(self.values) do choices[i] = { self.labels[i], v } end + if #self.values == 2 and self.values[1] == false then + return { key = self.key, type = "toggle", label = self.label, + default = self.values[1], help = help } + end + return { key = self.key, type = "choice", label = self.label, + choices = choices, default = self.values[1], help = help } +end + +return ModSetting diff --git a/lib/ShadowMap.lua b/lib/ShadowMap.lua new file mode 100644 index 0000000..d1b43cd --- /dev/null +++ b/lib/ShadowMap.lua @@ -0,0 +1,392 @@ +-- Voxel world mode: the sun's own pass -- a real shadow map. +-- +-- The old drop shadows were decals: each character's sprite frame squashed +-- flat onto the ground plane it stood on. That can only ever paint the +-- FLOOR, so a shadow stopped dead at the foot of a wall, and nothing but a +-- character cast one at all -- buildings, trees, signs and ledges threw +-- nothing. +-- +-- So render the scene once from the sun instead. An orthographic camera +-- pointed down the sun line stores, per texel, how far the light travelled +-- before it hit something; the main pass transforms each fragment into that +-- same space and asks whether anything got there first. What the sun cannot +-- see is in shadow, whatever surface it happens to be -- so a shadow climbs +-- a wall, drapes over a roof and slides across a passing NPC without a +-- single case in the code, and every caster is simply whatever the pass +-- draws: the terrain mesh (buildings, trees, ledges, props -- all of it) +-- plus one upright card per character. +-- +-- Depth is stored in an ORDINARY color canvas, packed into two 8-bit +-- channels (~16 bits over the frustum, well under a tenth of a world +-- pixel). A readable depth texture would be tidier, but depth sampling is +-- the least portable corner of the graphics API and this mod's whole +-- contract is that an unsupported driver falls back rather than errors -- +-- everything here is pcall-guarded and `available()` reports the result, +-- with VoxelScene dropping back to the flat decal shadows when it says no. + +-- the mod namespace (see main.lua): V.require loads a sibling module +local V = ... + +local Mat4 = V.require("Mat4") +local Voxel = V.require("VoxelState") + +local ShadowMap = {} + +-- The sun, as the shear a shadow takes: a point `y` world-pixels above the +-- ground drops its shadow (KX*y, KZ*y) away from the point under it. Both +-- negative hangs the sun in the SOUTHEAST, so every shadow falls northwest +-- -- up and to the left on screen, since the camera puts north at the top +-- and east to the right at every tilt. +-- +-- Their MAGNITUDE is how low the sun sits: hypot(KX, KZ) = 1.01 puts it +-- about 45 degrees up, so a 16px character throws a shadow about as long +-- as it is tall -- against the 62-degree noon these started at, which read +-- as a smudge under everybody's feet. +-- +-- Their RATIO is the compass bearing, and it leans WEST of northwest on +-- purpose. A character is drawn as a slab leaning back away from the +-- camera, which covers the ground directly north of its feet -- so a +-- shadow thrown due north lands entirely underneath the figure casting it +-- and is never seen. At 0.85 west the shadow reaches 13px out against the +-- sprite's own 8px half-width, so it clears the slab and reads, while 0.55 +-- north still puts it a clear 23 degrees up from horizontal on screen. +ShadowMap.KX = -0.85 -- west drift per pixel of height +ShadowMap.KZ = -0.55 -- north drift per pixel of height + +-- Shadow map edge, in texels -- chosen per frame from this ladder, because +-- the light frustum is sized to the WORLD VIEW and that swings by 3x +-- between the closest zoom and a maximised window at the widest. A fixed +-- edge is either wasteful at one end or a blur at the other. +-- +-- TARGET is the world pixels per texel worth paying for: at a third of a +-- pixel a shadow edge lands inside the pixel grid this whole mode exists +-- to keep crisp, and finer buys nothing the grid can show. The smallest +-- size that meets it wins, and the ladder tops out at 2048 (16 MB, and the +-- depth buffer behind it matches) rather than chasing the target forever. +ShadowMap.SIZES = { 1024, 1536, 2048 } +ShadowMap.TARGET = 0.45 +ShadowMap.res = 1024 -- the rung in use; read by the main pass's filter + +-- The tallest geometry the pass covers: gabled buildings and border forest +-- run well under this, and the margin it buys costs only resolution -- +-- with the sun this low the frustum has to widen by most of HEIGHT again +-- on every side to catch what casts in from off-screen. +ShadowMap.HEIGHT = 160 + +-- Depth slack at the comparison, in world pixels. Too little and a lit +-- surface shadows itself in a moire of acne; too much and a shadow detaches +-- from the foot of what casts it. The frustum is ~400 world pixels deep and +-- the packed depth resolves under 0.01 of one, so there is room. +ShadowMap.BIAS = 1.0 + +local SHADER = [[ + varying float vDepth; +#ifdef VERTEX + uniform mat4 lightVP; + uniform mat4 model; + vec4 position(mat4 transform_projection, vec4 vertex_position) { + vec4 c = lightVP * (model * vertex_position); + // the projection is orthographic, so w is 1 and clip z IS the depth, + // linear in world units along the sun line + vDepth = c.z * 0.5 + 0.5; + return c; + } +#endif +#ifdef PIXEL + vec4 effect(vec4 color, Image tex, vec2 tc, vec2 sc) { + // the same alpha discard the main pass uses: a sprite card casts its + // silhouette, not its 16x16 bounding box + if (Texel(tex, tc).a < 0.5) discard; + // pack into two channels: the high byte in red, the low in green + float d = clamp(vDepth, 0.0, 1.0) * 255.0; + return vec4(floor(d) / 255.0, fract(d), 0.0, 1.0); + } +#endif +]] + +local shader = nil -- nil = untried, false = unavailable +local canvas = nil -- nil = untried, false = unavailable +local canvasRes = 0 -- the edge `canvas` was made at +local blank = nil -- 1x1 stand-in so the sampler is never unbound +local drawing = false +local ready = false +local lastSig = nil +local prevBlend, prevAlphaMode = nil, nil + +local IDENTITY = Mat4.identity() + +-- world -> [0,1] cube, applied on top of the clip matrix: the main pass +-- samples the map with the xy and compares against the z +local TO_UNIT = { 0.5, 0, 0, 0.5, + 0, 0.5, 0, 0.5, + 0, 0, 0.5, 0.5, + 0, 0, 0, 1 } + +-- world -> light clip space, for the pass that FILLS the map +ShadowMap.clipVP = IDENTITY +-- world -> the unit cube, for the pass that READS it +ShadowMap.uvVP = IDENTITY +-- ShadowMap.BIAS expressed in the [0,1] depth the map stores +ShadowMap.bias = 0 + +local function getShader() + if shader == nil then + local ok, sh = pcall(love.graphics.newShader, SHADER) + shader = (ok and sh) or false + end + return shader or nil +end + +-- The map canvas at edge `res`, rebuilt when the rung changes (a zoom +-- step, a window resize). `false` is sticky: a driver that could not make +-- one at all is not asked again every frame. +local function getCanvas(res) + if canvas == false then return nil end + if canvas and canvasRes == res then return canvas end + local ok, c = pcall(love.graphics.newCanvas, res, res) + if not (ok and c) then + canvas = false + return nil + end + -- nearest: the 2x2 filter in the main pass wants raw texels, and a + -- linearly blended PACKED depth is not a depth at all + c:setFilter("nearest", "nearest") + pcall(c.setWrap, c, "clamp", "clamp") + if canvas and canvas.release then pcall(canvas.release, canvas) end + canvas, canvasRes = c, res + ready = false + return canvas +end + +-- A 1x1 opaque white image. The main pass's shader always declares the +-- shadow sampler, so something has to be bound even on the frames (and the +-- drivers) where there is no map -- unpacked it reads as depth 1 + 1/255, +-- which is beyond the far plane and therefore "nothing occludes anything". +local function getBlank() + if blank == nil then + local ok, img = pcall(function() + local data = love.image.newImageData(1, 1) + data:setPixel(0, 0, 1, 1, 1, 1) + return love.graphics.newImage(data) + end) + blank = (ok and img) or false + end + return blank or nil +end + +-- Whether the sun pass can run at all. False headless, without shaders, or +-- where the canvas cannot be made -- VoxelScene then keeps the flat decal +-- shadows, which need nothing but a quad. +function ShadowMap.available() + if not (love.graphics and love.graphics.newCanvas + and love.graphics.setDepthMode) then + return false + end + -- the smallest rung is enough to answer the question; fit() picks the + -- one this frame actually wants + return getShader() ~= nil and getCanvas(ShadowMap.SIZES[1]) ~= nil +end + +-- The map to sample, or the blank stand-in. Never nil once the main pass +-- has a shader at all, because an unbound sampler is a driver-dependent +-- crash rather than a driver-dependent fallback. +function ShadowMap.texture() + if ready and canvas then return canvas end + return getBlank() +end + +-- True while the map holds a frame the main pass can read. +function ShadowMap.active() + return ready and canvas ~= nil and canvas ~= false +end + +-- The direction the light TRAVELS, normalized. The shear is the shadow a +-- unit of height throws, so the displacement from a point to where its +-- shadow lands is (KX, -1, KZ) -- which is the ray. +local function sunDir() + local x, y, z = ShadowMap.KX, -1, ShadowMap.KZ + local l = math.sqrt(x * x + y * y + z * z) + return { x / l, y / l, z / l } +end + +ShadowMap.sunDir = sunDir + +-- How far NORTH of the view centre the camera can still see ground, in +-- world pixels: the top edge of the view frustum dropped onto the ground +-- plane. The lower the camera the further that reaches, and past about 64 +-- degrees the ray clears the horizon and the honest answer is "forever" -- +-- hence the cap. Ground beyond it compresses into a few pixels near the +-- skyline, and its shadows with it, so the border fade in the main pass +-- eases them out rather than the frustum ending on a hard line. +ShadowMap.FAR_CAP = 2.5 -- multiples of the view height + +local function groundReach(vh) + local a = Voxel.angle or 0 + local cap = ShadowMap.FAR_CAP * vh + -- half the vertical field of view: the same FOCAL the camera projects + -- with, so the two frusta agree about what is on screen + local half = math.atan(1 / (2 * Voxel.FOCAL)) + local below = (math.pi / 2 - a) - half -- top ray, below horizontal + if below <= 0.02 then return cap end + local dist = Voxel.FOCAL * vh + local horizon = dist * math.cos(a) / math.tan(below) + return math.max(vh / 2, math.min(cap, horizon - dist * math.sin(a))) +end + +-- Fit the light frustum to the ground the camera can see, plus the margin +-- the casters for it stand in. +-- +-- Both are ASYMMETRIC, and for opposite reasons. The camera sits south of +-- its focus and looks north, so the ground it sees runs far north and +-- barely south. The sun sits southeast, so the things whose shadows land +-- on that ground stand south and east of it -- which means the caster +-- margin is only ever needed on two of the four sides. Paying for it on +-- all four (and for a view-sized box at every pitch) is what the first cut +-- did, and at 75 degrees it covered about a third of what was on screen. +-- +-- The box is snapped to whole texels. Without that, a frustum that slides +-- continuously with the camera reprojects every shadow edge a fraction of a +-- texel every frame and the whole world's shadows crawl and shimmer while +-- you walk. +local function fit(cx, cy, vw, vh) + local f = sunDir() + local view = Mat4.lookAt({ 0, 0, 0 }, f, { 0, 0, -1 }) + + local reach = ShadowMap.HEIGHT + * math.max(math.abs(ShadowMap.KX), math.abs(ShadowMap.KZ)) + 24 + local north = groundReach(vh) + -- the view widens with distance, so the far ground spans more than the + -- near ground does; half the depth is a serviceable stand-in for the + -- frustum's true spread and costs a good deal less resolution + local spread = north * 0.5 + local xs = { cx - vw / 2 - spread, cx + vw / 2 + spread + reach } + local ys = { -32, ShadowMap.HEIGHT } -- -32 covers recessed water + local zs = { cy - north, cy + vh / 2 + reach } + + local l, r, b, t, zn, zf + for _, x in ipairs(xs) do + for _, y in ipairs(ys) do + for _, z in ipairs(zs) do + local px = view[1] * x + view[2] * y + view[3] * z + view[4] + local py = view[5] * x + view[6] * y + view[7] * z + view[8] + local pz = view[9] * x + view[10] * y + view[11] * z + view[12] + l = l and math.min(l, px) or px + r = r and math.max(r, px) or px + b = b and math.min(b, py) or py + t = t and math.max(t, py) or py + zn = zn and math.min(zn, pz) or pz + zf = zf and math.max(zf, pz) or pz + end + end + end + + local w, h = r - l, t - b + + -- pick the resolution rung: the smallest that resolves TARGET world + -- pixels per texel across the wider side, else the largest there is + local res = ShadowMap.SIZES[#ShadowMap.SIZES] + for _, size in ipairs(ShadowMap.SIZES) do + if math.max(w, h) / size <= ShadowMap.TARGET then + res = size + break + end + end + ShadowMap.res = res + + -- the box's SIZE is fixed (the sun and the view size are), so snapping + -- its corner to a texel multiple moves it in whole texels only + local tx, ty = w / res, h / res + l = math.floor(l / tx) * tx + b = math.floor(b / ty) * ty + r, t = l + w, b + h + + -- view-space z runs NEGATIVE into the scene; ortho() wants distances, + -- and the slack keeps geometry taller than HEIGHT from being clipped + -- clean out of the pass instead of merely casting a truncated shadow + local near, far = -zf - 64, -zn + 64 + local proj = Mat4.ortho(l, r, b, t, near, far) + -- flip clip-space Y for the same reason the camera does: we bypass + -- LOVE's transform_projection, and canvas coordinates run Y DOWN, so + -- without this the map is stored upside down relative to the uv the + -- main pass reads it with + proj = Mat4.mul(Mat4.scale(1, -1, 1), proj) + + ShadowMap.clipVP = Mat4.mul(proj, view) + ShadowMap.uvVP = Mat4.mul(TO_UNIT, ShadowMap.clipVP) + -- what the frustum ended up covering, for probes: the lateral extent in + -- world pixels divided by RES is how fine a shadow edge can land + ShadowMap.extent = { r - l, t - b, far - near } + -- the stored depth spans the frustum, so a world-pixel bias is that + -- fraction of it + ShadowMap.bias = ShadowMap.BIAS / math.max(1, far - near) +end + +-- Whether the map has to be redrawn for `sig` -- a caller-built stamp of +-- everything the pass depends on (camera, terrain meshes, every pose). A +-- frame that changes none of it reuses the map it already has, which is +-- most of a dialog, a menu or any moment standing still. +function ShadowMap.stale(sig) + return not ready or sig ~= lastSig +end + +-- Begin the sun pass. Returns false when it could not start, in which case +-- the caller must not draw into it or call finish. +function ShadowMap.begin(cx, cy, vw, vh) + local sh = getShader() + if not sh then return false end + -- fit first: it is what decides which resolution rung this view wants + fit(cx, cy, vw, vh) + local c = getCanvas(ShadowMap.res) + if not c then return false end + local ok = pcall(love.graphics.setCanvas, { c, depth = true }) + if not ok then + pcall(love.graphics.setCanvas) + return false + end + prevBlend, prevAlphaMode = love.graphics.getBlendMode() + -- white clears to depth 1 + 1/255, past the far plane: a texel nothing + -- was drawn into can never shadow anything + love.graphics.clear(1, 1, 0, 1, true, true) + love.graphics.setDepthMode("lequal", true) + love.graphics.setMeshCullMode("none") + -- replace, not alpha blend: these are packed numbers, not colors + love.graphics.setBlendMode("replace", "premultiplied") + love.graphics.setShader(sh) + love.graphics.setColor(1, 1, 1, 1) + pcall(sh.send, sh, "lightVP", "row", ShadowMap.clipVP) + drawing = true + ready = false + return true +end + +-- Draw one caster. Same signature as Voxel3D.draw minus the camera-ward +-- pull, which is a trick for the VIEW's depth buffer and would drag a +-- shadow off whatever throws it. +function ShadowMap.draw(mesh, texture, model) + if not (drawing and mesh) then return end + local sh = getShader() + if texture then mesh:setTexture(texture) end + pcall(sh.send, sh, "model", "row", model or IDENTITY) + love.graphics.draw(mesh) +end + +-- Close the pass and stamp it with the signature it was drawn for. +function ShadowMap.finish(sig) + if not drawing then return end + drawing = false + love.graphics.setShader() + love.graphics.setDepthMode() + love.graphics.setCanvas() + love.graphics.setBlendMode(prevBlend or "alpha", prevAlphaMode) + love.graphics.setColor(1, 1, 1, 1) + lastSig = sig + ready = true +end + +-- Drop the GPU objects (window resize, hot reload). +function ShadowMap.invalidate() + canvas, canvasRes, blank = nil, 0, nil + drawing, ready, lastSig = false, false, nil +end + +return ShadowMap diff --git a/lib/SpriteBillboards.lua b/lib/SpriteBillboards.lua new file mode 100644 index 0000000..faf796d --- /dev/null +++ b/lib/SpriteBillboards.lua @@ -0,0 +1,200 @@ +-- Voxel world mode: characters as forward-facing sprite billboards WITH +-- relief. +-- +-- Each entity renders as its CURRENT 2D sprite frame voxelized into a +-- contoured slab: opaque pixels become geometry (the sheets carry real +-- alpha, so transparency is exact), and each ROW's thickness comes from +-- the sheet's own SIDE-VIEW silhouette at that row -- the same +-- match-the-pixel-profile idea the tree lathe uses, applied along depth. +-- The cap brim stays thin, the head rounds back deep, shoulders step out +-- past the neck, feet taper: viewed at tilt angles the top rims trace the +-- character's real profile instead of a uniform one-voxel wafer. Rows are +-- centered on the sprite plane, so the front face relief is symmetric +-- with the back. +-- +-- Meshes are built per (sheet, frame) and cached; right-facing and the +-- alternating walk step are matrix mirrors, not extra meshes. UVs point +-- into the live sheet image, so RED++ OBP bakes, SGB palette bakes and +-- sprite-replacing mods all texture the slab with no rebuild. + +-- the mod namespace (see main.lua): V.require loads a sibling module +local V = ... + +local Assets = require("src.render.Assets") +local Voxel3D = V.require("Voxel3D") + +local SpriteBillboards = {} + +-- depth = side-view span * SCALE, clamped -- full span would make heads +-- as deep as the sprite is wide, which reads bulbous at these sizes +SpriteBillboards.DEPTH_SCALE = 0.5 +SpriteBillboards.MIN_DEPTH = 2 +SpriteBillboards.MAX_DEPTH = 8 + +local meshes = {} + +local function build(def, frame) + local ok, id = pcall(Assets.imageData, def.image) + if not (ok and id and id.getPixel) then return nil end + local iw, ih = id:getDimensions() + local frames = math.floor(ih / 16) + local fy = frame * 16 + if fy + 16 > ih then fy = 0 end + + local function opaqueAt(fbase, x, y) + if x < 0 or x > 15 or y < 0 or y > 15 then return false end + local _, _, _, a = id:getPixel(x, fbase + y) + return a > 0 + end + local function opaque(x, y) return opaqueAt(fy, x, y) end + + -- Per-row depth from the sheet's side view: the LEFT-facing frame that + -- matches this frame's pose (stand 2 / walk 5, data/sprites/facings.asm + -- layout). Sheets without one (items, boulders) stay uniform. + local depth = {} + do + local sideFrame = nil + if frames >= 6 then + sideFrame = frame >= 3 and 5 or 2 + elseif frames >= 3 then + sideFrame = 2 + end + local sy = sideFrame and sideFrame * 16 + for iy = 0, 15 do + local d = 3 + if sy then + local lo, hi = nil, nil + for ix = 0, 15 do + if opaqueAt(sy, ix, iy) then + lo = lo or ix + hi = ix + end + end + if lo then + d = (hi - lo + 1) * SpriteBillboards.DEPTH_SCALE + d = math.max(SpriteBillboards.MIN_DEPTH, + math.min(SpriteBillboards.MAX_DEPTH, d)) + end + end + depth[iy] = d + end + end + + local verts, indices = {}, {} + local function quad(c, uv, shade) + for i = 1, 4 do + verts[#verts + 1] = { c[i][1], c[i][2], c[i][3], + uv[i][1], uv[i][2], shade } + end + Voxel3D.pushQuad(indices, #verts / 4 - 1) + end + local function uvx(x) return x / iw end + local function uvy(y) return (fy + y) / ih end + + -- horizontal runs of opaque pixels; each row is a box slice as deep as + -- its side profile, centered on the sprite plane (z = 0) + for iy = 0, 15 do + local yT, yB = 16 - iy, 15 - iy + local zF, zB = depth[iy] / 2, -depth[iy] / 2 + local ix = 0 + while ix < 16 do + if opaque(ix, iy) then + local ix2 = ix + while ix2 + 1 < 16 and opaque(ix2 + 1, iy) do ix2 = ix2 + 1 end + local u0, u1 = uvx(ix + 0.02), uvx(ix2 + 0.98) + local v0, v1 = uvy(iy + 0.02), uvy(iy + 0.98) + quad({ { ix, yB, zF }, { ix2 + 1, yB, zF }, + { ix2 + 1, yT, zF }, { ix, yT, zF } }, + { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, 1) + quad({ { ix2 + 1, yB, zB }, { ix, yB, zB }, + { ix, yT, zB }, { ix2 + 1, yT, zB } }, + { { u1, v1 }, { u0, v1 }, { u0, v0 }, { u1, v0 } }, 0.7) + -- rims: exposed where the neighbouring row lacks the pixel OR is + -- shallower than this row (the step of the depth profile); a full + -- row-depth quad is safe either way -- any overlap is sandwiched + -- inside the thicker slice and never visible + for px = ix, ix2 do + local pu0, pu1 = uvx(px + 0.1), uvx(px + 0.9) + local pv = uvy(iy + 0.5) + if not opaque(px, iy - 1) or depth[iy - 1 >= 0 and iy - 1 or 0] + < depth[iy] then + quad({ { px, yT, zB }, { px + 1, yT, zB }, + { px + 1, yT, zF }, { px, yT, zF } }, + { { pu0, pv }, { pu1, pv }, { pu1, pv }, { pu0, pv } }, 0.9) + end + if yB > 0 and (not opaque(px, iy + 1) + or depth[iy + 1 <= 15 and iy + 1 or 15] + < depth[iy]) then + quad({ { px + 1, yB, zB }, { px, yB, zB }, + { px, yB, zF }, { px + 1, yB, zF } }, + { { pu1, pv }, { pu0, pv }, { pu0, pv }, { pu1, pv } }, 0.55) + end + end + local lv = { uvx(ix + 0.5), uvy(iy + 0.5) } + if not opaque(ix - 1, iy) then + quad({ { ix, yB, zB }, { ix, yB, zF }, + { ix, yT, zF }, { ix, yT, zB } }, + { lv, lv, lv, lv }, 0.78) + end + if not opaque(ix2 + 1, iy) then + quad({ { ix2 + 1, yB, zF }, { ix2 + 1, yB, zB }, + { ix2 + 1, yT, zB }, { ix2 + 1, yT, zF } }, + { lv, lv, lv, lv }, 0.78) + end + ix = ix2 + 1 + else + ix = ix + 1 + end + end + end + return Voxel3D.newMesh(verts, indices) +end + +-- The slab mesh for one (sprite def, frame index), or nil (headless / no +-- pixel access), cached like every other derived GPU object. +function SpriteBillboards.mesh(def, frame) + local key = def.image .. "#" .. frame + if meshes[key] == nil then + local ok, m = pcall(build, def, frame) + meshes[key] = (ok and m) or false + end + return meshes[key] or nil +end + +-- One flat 16x16 quad UV-mapped to a whole frame, for the drop-shadow +-- pass: the shader's alpha discard cuts the sprite's silhouette out of it, +-- so a single quad casts the exact outline with no self-overlap to +-- double-darken. Needs only the sheet dimensions, not pixel access. +local function buildShadowQuad(def, frame) + local ok, img = pcall(Assets.image, def.image) + if not (ok and img) then return nil end + local iw, ih = img:getDimensions() + local fy = frame * 16 + if fy + 16 > ih then fy = 0 end + local u0, u1 = 0.02 / iw, (16 - 0.02) / iw + local v0, v1 = (fy + 0.05) / ih, (fy + 15.95) / ih + local verts = { + { 0, 0, 0, u0, v1, 1 }, { 16, 0, 0, u1, v1, 1 }, + { 16, 16, 0, u1, v0, 1 }, { 0, 16, 0, u0, v0, 1 }, + } + local indices = {} + Voxel3D.pushQuad(indices, 0) + return Voxel3D.newMesh(verts, indices) +end + +function SpriteBillboards.shadowQuad(def, frame) + local key = def.image .. "#s" .. frame + if meshes[key] == nil then + local ok, m = pcall(buildShadowQuad, def, frame) + meshes[key] = (ok and m) or false + end + return meshes[key] or nil +end + +function SpriteBillboards.invalidate() + meshes = {} +end + +Assets.register(SpriteBillboards.invalidate) + +return SpriteBillboards diff --git a/lib/Structures.lua b/lib/Structures.lua new file mode 100644 index 0000000..8019046 --- /dev/null +++ b/lib/Structures.lua @@ -0,0 +1,2001 @@ +-- Voxel world mode: detect the map's structures and pick a 3D model for +-- each -- the 3dSen idea applied to a tile map. 3dSen turns flat NES +-- scenes into 3D by classifying every graphic into a geometry archetype +-- (floor, wall, box, voxelized sprite) and building real geometry that +-- keeps the original art as its texture; this module does the same with +-- the map's tile layer as the scene description: +-- +-- 1. Flood-fill every connected region of solid (upright, unauthored) +-- tiles -- a house with its mailbox, the potted plant, a fence row, +-- a stretch of border forest. +-- +-- 2. Decide which pixels of the region's art are BACKGROUND. Tileset +-- art carries no alpha and white is a paint color (window frames, +-- wall stripes), so whiteness alone says nothing. The map does: the +-- background is the white that CONNECTS TO WALKABLE GROUND in the +-- assembled scene. Seeding a flood from the surrounding ground +-- eats the air around a fence post or a plant's leaves but cannot +-- reach an interior wall's white stripes sealed behind its dark +-- trim -- exactly the distinction a human reads. +-- +-- 3. Tiles whose art turned out mostly background are SPRITE-LIKE; +-- their connected clusters become per-pixel voxel OBJECTS at the +-- art's real drawn height (a 2-row plant is a 16px silhouette, a +-- fence a row of true posts with air between), thin voxel depth, +-- standing on synthesized ground. This splits mixed regions: the +-- mailbox voxelizes even where it touches the house. +-- +-- 4. Everything else becomes a VOLUME: each column rises to the height +-- the structure is actually DRAWN. A column's run gives its extent, +-- repetition caps it -- the border forest repeats a 2-row canopy +-- for forty rows and must be rows of 16px trees, not a monolith -- +-- and columns answer to their region: the column above a doorway +-- repeats internally but adopts its 48px house. The south face +-- folds the artwork up (ChunkMesher's band rule). +-- +-- data/voxel_heights.lua is the PROFILE over this: a tile authored there +-- (ledges, or a mod pinning a shape) bypasses detection entirely, the way +-- a 3dSen game profile pins a pattern to a geometry type. +-- +-- Everything here is derived per map and cached; pixel access (object +-- voxelization, void detection) degrades gracefully headless -- regions +-- simply stay volumes and the geometry tests keep passing. + +-- the mod namespace (see main.lua): V.require loads a sibling module +local V = ... + +local Assets = require("src.render.Assets") +local Map = require("src.world.Map") +local Buildings = V.require("Buildings") +local TileShape = V.require("TileShape") +local Budget = V.require("BuildBudget") + +local Structures = {} + +-- must match ChunkMesher's ring (3 border blocks, in tiles) +local RING = 12 + +-- object-mode gates +local OBJECT_MAX_ROWS = 6 -- a prop is at most 48px of drawing +local OBJECT_MAX_QUADS = 4096 -- safety cap per cluster +local TILE_BG_RATIO = 0.20 -- art background for "sprite-like" +local CLUSTER_MIN_BG = 0.05 -- a silhouette must actually exist +local OBJECT_DEPTH = 6 -- voxel thickness of a detected prop +-- thickness of profile-pinned standees per class: a TV is a deliberate +-- object and reads better with body; `prop` doubles as the THIN pool +-- (plants, stools -- mostly silhouette); `cutout` is paper: one voxel, +-- pure profile; `post` matches the 6px the detector gives the fence +-- rows it finds on its own, so pinned and detected fences look alike; +-- `signpost` is a plate on a stick -- 2 voxels, the thinnest that still +-- shows an edge +local PINNED_DEPTH = { billboard = 10, prop = 5, stool = 10, cutout = 1, + post = 6, signpost = 2 } + +local MAX_ROWS = 6 -- volume height cap: 48px + +local cache = {} + +-- ---------------------------------------------------------------- pixels -- + +local atlasData = {} + +local function pixels(tileset) + local path = tileset.image + if atlasData[path] == nil then + local ok, data = pcall(Assets.imageData, path) + atlasData[path] = (ok and data and data.getPixel) and data or false + end + return atlasData[path] or nil +end + +-- tiles whose art is entirely black or transparent (interior darkness): +-- these never extrude, whatever class they resolved to +local function voidTiles(tileset) + local data = pixels(tileset) + if not data then return nil end + local perRow = tileset.tilesPerRow or 16 + local iw, ih = data:getDimensions() + local set = {} + for t = 0, (iw / 8) * (ih / 8) - 1 do + local ox = (t % perRow) * 8 + local oy = math.floor(t / perRow) * 8 + local void = true + for py = 0, 7 do + for px = 0, 7 do + local r, g, b, a = data:getPixel(ox + px, oy + py) + if a > 0 and math.max(r, g, b) > 0.17 then + void = false + break + end + end + if not void then break end + end + if void then set[t] = true end + end + return set +end + +-- ----------------------------------------------------------------- build -- + +local DIRS4 = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } } + +local function keyOf(tx, ty) + return (ty + 64) * 4096 + (tx + 64) +end + +function Structures.forMap(map) + local S = cache[map.id] + if S then return S end + + local tileset = map.tileset + local shapes = TileShape.forMap(map) + local void = voidTiles(tileset) + local perRow = tileset.tilesPerRow or 16 + + local def = map.def + local tw, th = def.width * 4, def.height * 4 + local x0, x1 = -RING, tw + RING - 1 + local y0, y1 = -RING, th + RING - 1 + + -- resolve the whole grid once: shape + tile per key. Ring positions use + -- the same border override the 2D renderer draws with + -- (TileRenderer.borderBlockFor: outdoor maps ring with the solid tree + -- wall, NOT their own borderBlock) -- a route's borderBlock is the GRASS + -- block, and meshing that grew a 12-tile apron of tall grass past every + -- route edge, which leaked into the neighbouring town's plaza. + -- BLACK void fill is not a block at all: borderBlockFor answers `false`, + -- and there is simply nothing out there to build. tileLookup then returns + -- nil past the body and the ring keys are never written, which the whole + -- file already copes with -- every neighbour query reaches one step + -- outside the analysed range and reads nil for its trouble, so an absent + -- cell is the shape "nothing" has always had here. (It used to add 1 to + -- that `false`, which threw, failed the mesh build for every map on the + -- route, and dropped the mode to the flat 2D path entirely.) + local TileRenderer = require("src.render.TileRenderer") + local borderId = TileRenderer.borderBlockFor(map) + local borderBlk = borderId and tileset.blocks[borderId + 1] or nil + local tw2, th2 = tw, th + local function tileLookup(tx, ty) + if tx >= 0 and ty >= 0 and tx < tw2 and ty < th2 then + return map:tileAt(tx, ty) + end + if not borderBlk then return nil end + return borderBlk[(ty % 4) * 4 + (tx % 4) + 1] or 0 + end + local shapeAt, tileAt = {}, {} + for ty = y0, y1 do + for tx = x0, x1 do + Budget.tick() + local tile = tileLookup(tx, ty) + if tile then + local k = keyOf(tx, ty) + local s = TileShape.at(map, shapes, tile, tx, ty) + if s and void and void[tile] and not s.authored then + s = shapes.classes.void + end + shapeAt[k], tileAt[k] = s, tile + end + end + end + + -- ---- buildings: whole sprites voxelized band by band ---- + -- + -- Before anything else looks at this grid. A profiled building is a + -- drawing whose bands depict DIFFERENT 3D surfaces (roof from above, + -- facade face-on, ends sloped), and the passes below -- the door fold, + -- the region flood, the volume builder -- all assume one drawing is one + -- upright thing. Modelling the building first and claiming its tiles + -- keeps every one of them off it. + -- + -- (grassQuads live apart from objectQuads: grass renders as its own mesh + -- AFTER the characters -- see VoxelScene -- so the southern tuft row + -- still overdraws a walker's feet even though characters stamp over + -- terrain.) + S = { shapeAt = shapeAt, tileAt = tileAt, outdoor = Map.isOutdoor(def), + runs = {}, skip = {}, ground = {}, objectQuads = {}, + grassQuads = {}, roundStamps = {} } + Buildings.build(S, map, pixels(tileset), perRow) + + -- Fold doors into their buildings. A door cell is WALKABLE (the player + -- steps onto it to warp), so it resolves to ground and punches a hole in + -- the facade: the door lies flat, the rows above it recess, and -- worse + -- -- the hole lets the background flood into the building's interior + -- whites, shredding it into misdetected sprite clusters. Visually the + -- door is part of the facade, so mark the door cell's tiles structural: + -- the fold then shows the door art standing at ground level in the + -- building's front face. Door graphics only (the tileset's doorTiles); + -- interior stair/mat warps stay flat. + for cy = math.floor(y0 / 2), math.floor(y1 / 2) do + for cx = math.floor(x0 / 2), math.floor(x1 / 2) do + if map.doorTiles[map:cellTile(cx, cy)] then + local northK = keyOf(cx * 2, cy * 2 - 1) + local ns = shapeAt[northK] + if ns and ns.art == "upright" then + for dy = 0, 1 do + for dx = 0, 1 do + shapeAt[keyOf(cx * 2 + dx, cy * 2 + dy)] = shapes.classes.wall + end + end + end + end + end + end + + -- a structure cell: solid art the detector may model (authored tiles are + -- profile-pinned and keep their authored shape) + local function structural(k) + local s = shapeAt[k] + return s and s.art == "upright" and not s.authored + end + + -- ---- cylinders: profile-pinned round graphics, one per 16x16 cell ---- + -- the flat ground tiles this map actually places, for the hull's + -- ground matching: the ball's own drawn background picks its floor + local groundTiles = {} + do + local seenG = {} + for k, s in pairs(shapeAt) do + if s and s.flat and s.class == "ground" then + local t = tileAt[k] + if t and not seenG[t] then + seenG[t] = true + groundTiles[#groundTiles + 1] = t + end + end + end + end + Structures.buildCylinders(S, map, x0, x1, y0, y1, groundTiles) + + -- ---- stairs: profile-pinned cells that render as real steps ---- + Structures.buildStairs(S, map, x0, x1, y0, y1) + + -- ---- bookcases: pinned shelves collapsed to one cell of depth ---- + Structures.buildBookcases(S, map, x0, x1, y0, y1) + + -- ---- flood-fill regions of structural tiles ---- + local seen = {} + local regions = {} + for ty = y0, y1 do + for tx = x0, x1 do + local k = keyOf(tx, ty) + if structural(k) and not seen[k] then + local region = { tiles = {}, minX = tx, maxX = tx, + minY = ty, maxY = ty } + local queue = { { tx, ty } } + seen[k] = true + while #queue > 0 do + Budget.tick() + local c = table.remove(queue) + local cx, cy = c[1], c[2] + region.tiles[#region.tiles + 1] = c + region.minX = math.min(region.minX, cx) + region.maxX = math.max(region.maxX, cx) + region.minY = math.min(region.minY, cy) + region.maxY = math.max(region.maxY, cy) + for _, d in ipairs(DIRS4) do + local nx, ny = cx + d[1], cy + d[2] + if nx >= x0 and nx <= x1 and ny >= y0 and ny <= y1 then + local nk = keyOf(nx, ny) + if structural(nk) and not seen[nk] then + seen[nk] = true + queue[#queue + 1] = { nx, ny } + end + end + end + end + regions[#regions + 1] = region + end + end + end + + -- ---- model each region: carve out per-pixel objects, volume the rest -- + local data = pixels(tileset) + for _, region in ipairs(regions) do + local leftover = region.tiles + if data then + leftover = Structures.extractObjects(S, map, region, data, perRow) + end + if #leftover > 0 then + Structures.buildVolume(S, map, leftover) + end + end + + -- ---- profile-pinned billboards (signs): forced per-pixel slabs ---- + if data then + local seenB = {} + for ty = y0, y1 do + for tx = x0, x1 do + local k = keyOf(tx, ty) + local s = shapeAt[k] + if s and s.art == "billboard" and not seenB[k] then + local reg = { tiles = {}, minX = tx, maxX = tx, + minY = ty, maxY = ty } + local queue = { { tx, ty } } + seenB[k] = true + while #queue > 0 do + local c = table.remove(queue) + reg.tiles[#reg.tiles + 1] = c + reg.minX = math.min(reg.minX, c[1]) + reg.maxX = math.max(reg.maxX, c[1]) + reg.minY = math.min(reg.minY, c[2]) + reg.maxY = math.max(reg.maxY, c[2]) + for _, d in ipairs(DIRS4) do + local nk = keyOf(c[1] + d[1], c[2] + d[2]) + local ns = shapeAt[nk] + -- same CLASS, not just billboard art: `billboard` and + -- `prop` are two pools precisely so touching drawings (a TV + -- behind its console) become two standing objects instead + -- of one stacked cutout + if ns and ns.art == "billboard" and ns.class == s.class + and not seenB[nk] then + seenB[nk] = true + queue[#queue + 1] = { c[1] + d[1], c[2] + d[2] } + end + end + end + Structures.extractObjects(S, map, reg, data, perRow, true) + end + end + end + + -- ---- profile-pinned fence posts: per-CELL standee slabs ---- + -- A fence line repeats one drawing for a dozen cells, and its art + -- touches across cell seams. Pooled like a billboard the whole line + -- would stand as ONE drawing-tall tower at one depth (the detector's + -- vertical-repetition guard exists precisely to refuse that, which + -- is why undetected fence columns fell to the volume path as boxes). + -- Each CELL extracts alone instead: its posts stand in their own row + -- band and the fence marches north cell by cell. + local postCells = {} + for ty = y0, y1 do + for tx = x0, x1 do + local s = shapeAt[keyOf(tx, ty)] + if s and s.art == "post" then + local ck = keyOf(math.floor(tx / 2), math.floor(ty / 2)) + postCells[ck] = postCells[ck] or {} + local list = postCells[ck] + list[#list + 1] = { tx, ty } + end + end + end + for _, tiles in pairs(postCells) do + local reg = { tiles = tiles, + minX = tiles[1][1], maxX = tiles[1][1], + minY = tiles[1][2], maxY = tiles[1][2] } + for _, c in ipairs(tiles) do + reg.minX = math.min(reg.minX, c[1]) + reg.maxX = math.max(reg.maxX, c[1]) + reg.minY = math.min(reg.minY, c[2]) + reg.maxY = math.max(reg.maxY, c[2]) + end + Structures.extractObjects(S, map, reg, data, perRow, "opaque") + end + + -- ---- profile-pinned relief props: top-down drawings that extrude ---- + local seenR = {} + for ty = y0, y1 do + for tx = x0, x1 do + local k = keyOf(tx, ty) + local s = shapeAt[k] + if s and s.art == "relief" and not seenR[k] then + local reg = { tiles = {}, minX = tx, maxX = tx, + minY = ty, maxY = ty } + local queue = { { tx, ty } } + seenR[k] = true + while #queue > 0 do + local c = table.remove(queue) + reg.tiles[#reg.tiles + 1] = c + reg.minX = math.min(reg.minX, c[1]) + reg.maxX = math.max(reg.maxX, c[1]) + reg.minY = math.min(reg.minY, c[2]) + reg.maxY = math.max(reg.maxY, c[2]) + for _, d in ipairs(DIRS4) do + local nk = keyOf(c[1] + d[1], c[2] + d[2]) + local ns = shapeAt[nk] + if ns and ns.art == "relief" and ns.class == s.class + and not seenR[nk] then + seenR[nk] = true + queue[#queue + 1] = { c[1] + d[1], c[2] + d[2] } + end + end + end + for _, c in ipairs(reg.tiles) do + local ck = keyOf(c[1], c[2]) + S.skip[ck] = true + S.ground[ck] = false + end + Structures.buildRelief(S, map, reg, data, perRow, s.h or 5) + end + end + end + + -- ---- tall grass: two standing tuft rows per tile. BODY only: the 2D + -- renderer never draws a neighbour's ring, and standing scenery past a + -- map's edge would poke into the map next door ---- + Structures.buildGrass(S, map, 0, tw - 1, 0, th - 1, data) + end + + -- unresolved claimed ground (a hull with no art match, headless + -- cylinders): no flat neighbour to vote with, so fall back to the + -- map's commonest ground tile + local votes, best, bestN = {}, nil, 0 + for k, s in pairs(shapeAt) do + if s and s.flat and s.class == "ground" then + local t = tileAt[k] + votes[t] = (votes[t] or 0) + 1 + if votes[t] > bestN then best, bestN = t, votes[t] end + end + end + for k, g in pairs(S.ground) do + if g == false then S.ground[k] = best end + end + + cache[map.id] = S + return S +end + +-- ---- round scenery: outline-hulled voxel balls ---- + +-- Cells the profile pins as round (tree canopies -- the class keeps its +-- historical `cylinder` name in the data file) render as a VOXEL HULL cut +-- from the drawing itself. The first shipped attempt was a lathe -- the +-- per-row silhouette width revolved into a 12-segment column with the art +-- wrapped by sin(angle) -- and it read exactly like what it was: the +-- sprite pasted on a cylinder, with the wrap smearing the pixels into +-- vertical stripes. This replaces it with real voxels. +-- +-- Segmentation first, silhouette-width second: the tree cell's art is a +-- ball drawn over background grass, and the background's mid greens pass +-- any brightness test (they inflated every lathe row to full width). The +-- ball's own DARKEST pixels are what bound it, so the mask is "the +-- darkest-shade outline plus everything it encloses": flood from the cell +-- border through every non-black pixel; what the flood cannot reach is +-- the tree, and the cast shadow under the canopy (dark but not enclosed) +-- floods away with the grass. Art with no closed black outline -- the +-- border tree wall is a dither of black and canopy with no drawn ring -- +-- encloses nothing; there the flood passes only through the LIGHT shades +-- (the methodology doc's rule: black and dark together form the +-- boundary), and the dither mass itself becomes the mask, checker holes +-- and all, because a 4-connected flood cannot thread a diagonal checker. +-- +-- Volume: each mask row is a disc. The row's span gives a center and +-- half-width, and every mask pixel's column runs that circle's chord in +-- z, quantized to whole voxels -- the front view IS the sprite, the plan +-- view is the sprite's own width profile turned in depth, and both step +-- pixel by pixel. Rows below the mask (the drawn shadow) repeat the +-- bottom row's discs down to the ground so the canopy stands on a short +-- dark foot instead of floating. +-- +-- Skin: front and back faces carry the drawing per-pixel (the back reads +-- mirrored, sprite-pure); side and step faces take their column's own +-- texel, which puts the drawn outline exactly on the silhouette's rim; +-- and a fully exposed cap keeps its outline only on the rim cells while +-- the interior samples the canopy a couple of rows deeper -- painting the +-- whole cap with the outline row blacked out every dome on the first +-- attempt (the lathe hit the same bug with its top discs). +-- +-- Tree walls repeat the same four tiles for hundreds of cells, so the +-- hull is built once per distinct art signature and stamped per cell. +local ROUND_SHADE = { front = 1.0, back = 0.68, side = 0.78, + top = 1.0, bottom = 0.55 } + +local function roundTemplate(S, map, data, cx, cy, groundTiles) + local perRow = map.tileset.tilesPerRow or 16 + local atlasW = map.tileset.imageWidth or 128 + local atlasH = map.tileset.imageHeight or 48 + + -- cell-space art access (16x16, row 0 = top) + local function tileOf(px, py) + return S.tileAt[keyOf(cx * 2 + (px >= 8 and 1 or 0), + cy * 2 + (py >= 8 and 1 or 0))] + end + local function texel(px, py) + local tile = tileOf(px, py) + return (tile % perRow) * 8 + px % 8, + math.floor(tile / perRow) * 8 + py % 8 + end + + -- shade class of every cell pixel, indexed py * 16 + px + local cls = {} + for py = 0, 15 do + for px = 0, 15 do + local ax, ay = texel(px, py) + local r, g, b, a = data:getPixel(ax, ay) + cls[py * 16 + px] = a == 0 and "off" + or Structures.shadeClass(math.min(r, g, b)) + end + end + + -- 4-connected flood from the cell border through `passable` classes + local function floodOutside(passable) + local out, stack = {}, {} + local function seed(i) + if not out[i] and passable[cls[i]] then + out[i] = true + stack[#stack + 1] = i + end + end + for i = 0, 15 do + seed(i); seed(240 + i); seed(i * 16); seed(i * 16 + 15) + end + while #stack > 0 do + local i = table.remove(stack) + local px = i % 16 + if px > 0 then seed(i - 1) end + if px < 15 then seed(i + 1) end + if i >= 16 then seed(i - 16) end + if i < 240 then seed(i + 16) end + end + return out + end + + -- the mask: darkest-pixel outline plus its enclosure; dither fallback + local out = floodOutside({ off = true, dark = true, + light = true, white = true }) + local mask, enclosed = {}, 0 + for i = 0, 255 do + if not out[i] then + mask[i] = true + if cls[i] ~= "black" then enclosed = enclosed + 1 end + end + end + if enclosed < 32 then + out = floodOutside({ off = true, light = true, white = true }) + mask = {} + for i = 0, 255 do + if not out[i] and cls[i] ~= "off" then mask[i] = true end + end + end + local any = nil + for i = 0, 255 do any = any or mask[i] end + if not any then return {} end + + -- the ground the ball stands on: the drawing's own background names + -- it. Score every flat ground tile the map places against the cell's + -- unmasked light pixels and keep the closest -- mid-forest trees have + -- no flat neighbour to vote with, and the commonest-ground fallback + -- paints pale path under trees whose art sits on grass. Dark unmasked + -- pixels (the drawn cast shadow) stay out of the score: no ground + -- tile carries a shadow, and their darks would drag every match. + local bg = nil + if groundTiles and #groundTiles > 0 then + local bestScore = nil + for _, t in ipairs(groundTiles) do + local ox = (t % perRow) * 8 + local oy = math.floor(t / perRow) * 8 + local score, n = 0, 0 + for py = 0, 15 do + for px = 0, 15 do + local i = py * 16 + px + local c = cls[i] + if not mask[i] and (c == "light" or c == "white") then + local ax, ay = texel(px, py) + local r1, g1, b1 = data:getPixel(ax, ay) + local r2, g2, b2 = data:getPixel(ox + px % 8, oy + py % 8) + local dr, dg, db = r1 - r2, g1 - g2, b1 - b2 + score = score + dr * dr + dg * dg + db * db + n = n + 1 + end + end + end + if n > 0 then + score = score / n + if not bestScore or score < bestScore then bestScore, bg = score, t end + end + end + end + + -- discs: per mask pixel a z chord [z0, z1), from its row's span circle + local z0, z1, src = {}, {}, {} + local loRow, hiRow = {}, {} + local yBot = nil + for iy = 0, 15 do + local lo, hi = nil, nil + for ix = 0, 15 do + if mask[iy * 16 + ix] then + lo = lo or ix + hi = ix + end + end + if lo then + loRow[iy], hiRow[iy] = lo, hi + yBot = iy + local c = (lo + hi + 1) / 2 + local hw = (hi - lo + 1) / 2 + for ix = lo, hi do + local i = iy * 16 + ix + if mask[i] then + local dx = ix + 0.5 - c + local n = 1 + if hw * hw > dx * dx then + n = math.max(1, math.floor(2 * math.sqrt(hw * hw - dx * dx) + + 0.5)) + end + z0[i] = math.floor(8 - n / 2 + 0.5) + z1[i] = z0[i] + n + src[i] = iy + end + end + end + end + + -- foot: rows under the mask repeat the bottom row's discs, wearing the + -- bottom row's (outline-dark) pixels + for iy = yBot + 1, 15 do + loRow[iy], hiRow[iy] = loRow[yBot], hiRow[yBot] + for ix = loRow[yBot], hiRow[yBot] do + local b = yBot * 16 + ix + if z0[b] then + local i = iy * 16 + ix + z0[i], z1[i], src[i] = z0[b], z1[b], yBot + end + end + end + + local function solidAt(ix, iy, iz) + if ix < 0 or ix > 15 or iy < 0 or iy > 15 then return false end + local i = iy * 16 + ix + return z0[i] ~= nil and iz >= z0[i] and iz < z1[i] + end + + -- cap interiors sample the canopy a couple of rows below the rim, + -- skipping outline-dark pixels + local function deepTexel(ix, iy) + for iy2 = iy + 2, math.min(15, iy + 4) do + local i = iy2 * 16 + ix + if mask[i] and cls[i] ~= "black" then return texel(ix, iy2) end + end + return texel(ix, iy) + end + + -- side walls read as material, not outline: walk inward past black + -- pixels (the building extruder's de-outline rule). The silhouette's + -- edge columns are all outline, and without this every flank of the + -- ball paints solid black the moment the camera turns. The foot rows + -- stay dark on purpose: their whole source row is outline-black. + local function sideTexel(ix, iy) + local r = src[iy * 16 + ix] + local dir = ix + ix < loRow[iy] + hiRow[iy] and 1 or -1 + for step = 0, 3 do + local x2 = ix + dir * step + local i2 = r * 16 + x2 + if x2 < 0 or x2 > 15 or not mask[i2] then break end + if cls[i2] ~= "black" then return texel(x2, r) end + end + return texel(ix, r) + end + + local quads = {} + + for iy = 0, 15 do + if loRow[iy] then + local yB, yT = 15 - iy, 16 - iy + + -- front and back: the drawing per-pixel, columns merged where they + -- share a chord plane; a run never crosses the 8px atlas tile seam + -- (its u range must interpolate inside one tile) + local ix = loRow[iy] + while ix <= hiRow[iy] do + local i = iy * 16 + ix + if z0[i] then + local ix2 = ix + while ix2 + 1 <= hiRow[iy] do + local j = iy * 16 + ix2 + 1 + if z0[j] == z0[i] and z1[j] == z1[i] + and math.floor((ix2 + 1) / 8) == math.floor(ix / 8) then + ix2 = ix2 + 1 + else + break + end + end + local ax0, ay = texel(ix, src[i]) + local ax1 = (texel(ix2, src[i])) + local u0, u1 = (ax0 + 0.05) / atlasW, (ax1 + 0.95) / atlasW + local v0, v1 = (ay + 0.05) / atlasH, (ay + 0.95) / atlasH + local x0, x1 = ix - 8, ix2 - 7 + local zF, zB = z1[i] - 8, z0[i] - 8 + quads[#quads + 1] = { + { x0, yB, zF }, { x1, yB, zF }, { x1, yT, zF }, { x0, yT, zF }, + uv = { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, + shade = ROUND_SHADE.front, + } + quads[#quads + 1] = { + { x1, yB, zB }, { x0, yB, zB }, { x0, yT, zB }, { x1, yT, zB }, + uv = { { u1, v1 }, { u0, v1 }, { u0, v0 }, { u1, v0 } }, + shade = ROUND_SHADE.back, + } + ix = ix2 + 1 + else + ix = ix + 1 + end + end + + -- sides, steps, undersides: constant-texel quads over the z runs a + -- neighbour doesn't cover + for ix = loRow[iy], hiRow[iy] do + local i = iy * 16 + ix + if z0[i] then + local ax, ay = texel(ix, src[i]) + local u, v = (ax + 0.5) / atlasW, (ay + 0.5) / atlasH + local x0, x1 = ix - 8, ix - 7 + + -- exposed z pieces against one neighbouring column + local function pieces(nx, ny, emit) + local iz = z0[i] + while iz < z1[i] do + if not solidAt(nx, ny, iz) then + local iz2 = iz + while iz2 + 1 < z1[i] and not solidAt(nx, ny, iz2 + 1) do + iz2 = iz2 + 1 + end + emit(iz - 8, iz2 - 7, iz, iz2) + iz = iz2 + 1 + else + iz = iz + 1 + end + end + end + + local sax, say = sideTexel(ix, iy) + local su, sv = (sax + 0.5) / atlasW, (say + 0.5) / atlasH + pieces(ix - 1, iy, function(zA, zB) + quads[#quads + 1] = { + { x0, yB, zA }, { x0, yB, zB }, { x0, yT, zB }, { x0, yT, zA }, + u = su, v = sv, shade = ROUND_SHADE.side, + } + end) + pieces(ix + 1, iy, function(zA, zB) + quads[#quads + 1] = { + { x1, yB, zB }, { x1, yB, zA }, { x1, yT, zA }, { x1, yT, zB }, + u = su, v = sv, shade = ROUND_SHADE.side, + } + end) + pieces(ix, iy - 1, function(zA, zB, izA, izB) + local function top(za, zb, tu, tv) + quads[#quads + 1] = { + { x0, yT, za }, { x1, yT, za }, { x1, yT, zb }, { x0, yT, zb }, + u = tu, v = tv, shade = ROUND_SHADE.top, + } + end + if izA == z0[i] and izB == z1[i] - 1 and izB - izA >= 2 then + -- the dome cap: outline on the rim cells, canopy inside + local du, dv = deepTexel(ix, iy) + top(zA, zA + 1, u, v) + top(zA + 1, zB - 1, (du + 0.5) / atlasW, (dv + 0.5) / atlasH) + top(zB - 1, zB, u, v) + else + top(zA, zB, u, v) + end + end) + if iy < 15 then + pieces(ix, iy + 1, function(zA, zB) + quads[#quads + 1] = { + { x0, yB, zB }, { x1, yB, zB }, { x1, yB, zA }, { x0, yB, zA }, + u = u, v = v, shade = ROUND_SHADE.bottom, + } + end) + end + end + end + end + end + return quads, bg +end + +-- how far past the map body cells still get the hull. A route's ring is +-- nearly as big as its body; modelling all of it costs hundreds of +-- thousands of quads of border trees nobody walks near. Beyond this, +-- pinned cells simply are not claimed and fall through to the mesher's +-- plain box -- cheap distant scenery. +local ROUND_RING = 4 + +-- Hull templates dedupe GLOBALLY per (tileset, four tiles, ground set): +-- the same four-tile tree repeats for hundreds of cells on a map and +-- across every route of its tileset, so the carve runs once per distinct +-- drawing per session. What a map keeps is a STAMP LIST -- (template, +-- cell offset) pairs the mesher expands while packing vertices -- rather +-- than materialized per-cell quad tables, which retained ~500 quads x +-- hundreds of tree cells x six Lua tables each PER MAP (the multi-GB +-- heap growth on a cross-region trek). +local roundCache = {} + +function Structures.buildCylinders(S, map, x0, x1, y0, y1, groundTiles) + local data = pixels(map.tileset) + local tw, th = map.def.width * 4, map.def.height * 4 + + -- ground-set fingerprint: the template's art-matched floor depends on + -- which ground tiles this map places, so maps sharing a tileset but + -- not a palette of floors carve separately + local gsig + do + local g = {} + for i, t in ipairs(groundTiles or {}) do g[i] = t end + table.sort(g) + gsig = table.concat(g, ",") + end + local tsid = tostring(map.tileset.id or map.tileset.image or "?") + + for cy = math.floor(y0 / 2), math.floor(y1 / 2) do + for cx = math.floor(x0 / 2), math.floor(x1 / 2) do + Budget.tick() + local k = keyOf(cx * 2, cy * 2) + local s = S.shapeAt[k] + local near = cx * 2 >= -ROUND_RING and cx * 2 < tw + ROUND_RING + and cy * 2 >= -ROUND_RING and cy * 2 < th + ROUND_RING + if s and s.art == "cylinder" and near then + local ground = false + if data then + local sig = tsid .. "|" .. gsig .. "|" .. table.concat({ + S.tileAt[k], S.tileAt[keyOf(cx * 2 + 1, cy * 2)], + S.tileAt[keyOf(cx * 2, cy * 2 + 1)], + S.tileAt[keyOf(cx * 2 + 1, cy * 2 + 1)] }, ":") + local tpl = roundCache[sig] + if not tpl then + local tq, tbg = roundTemplate(S, map, data, cx, cy, groundTiles) + tpl = { quads = tq, bg = tbg } + roundCache[sig] = tpl + end + ground = tpl.bg or false + S.roundStamps[#S.roundStamps + 1] = + { quads = tpl.quads, mx = cx * 16 + 8, mz = cy * 16 + 8 } + end + -- headless (no pixels): no hull, but still claim the tiles so + -- the volume path never boxes a pinned cell. Ground is the + -- template's own art-matched tile; `false` (no match, headless) + -- falls to the commonest-ground pass below. + for dy = 0, 1 do + for dx = 0, 1 do + local tk = keyOf(cx * 2 + dx, cy * 2 + dy) + S.skip[tk] = true + S.ground[tk] = ground + end + end + end + end + end +end + +-- ---- relief props: top-down drawings lying on their surface ---- + +-- A cell pinned `relief` is a prop DRAWN FROM ABOVE (a game console on +-- the floor): standing it up would be wrong, and a solid box would carry +-- the drawn floor around it. The drawing is segmented like any forced +-- prop (black outline; the shades touching the cluster's edge are the +-- background) and the object pixels extrude straight up a few voxels, +-- art on the top face -- a piece of the drawing pushed out of the +-- ground. The floor the flood removed is repainted by the claimed +-- tiles' common-ground fill. +local RELIEF_SHADE = { top = 1.0, south = 0.9, north = 0.62, side = 0.75 } + +function Structures.buildRelief(S, map, region, data, perRow, h) + local atlasW = map.tileset.imageWidth or 128 + local atlasH = map.tileset.imageHeight or 48 + local bw = (region.maxX - region.minX + 1) * 8 + local bh = (region.maxY - region.minY + 1) * 8 + local member = {} + for _, c in ipairs(region.tiles) do member[keyOf(c[1], c[2])] = true end + + local cls, srcU, srcV = {}, {}, {} + for py = 0, bh - 1 do + for px = 0, bw - 1 do + local i = py * bw + px + local k = keyOf(region.minX + math.floor(px / 8), + region.minY + math.floor(py / 8)) + if member[k] then + local tile = S.tileAt[k] + local ax = (tile % perRow) * 8 + px % 8 + local ay = math.floor(tile / perRow) * 8 + py % 8 + srcU[i], srcV[i] = ax, ay + local r, g, b, a = data:getPixel(ax, ay) + cls[i] = a == 0 and "off" or Structures.shadeClass(math.min(r, g, b)) + end + end + end + + local bg = {} + for py = 0, bh - 1 do + for px = 0, bw - 1 do + if px == 0 or px == bw - 1 or py == 0 or py == bh - 1 then + local c = cls[py * bw + px] + if c and c ~= "black" and c ~= "off" then bg[c] = true end + end + end + end + + local flooded, queue = {}, {} + local function seed(i) + local c = cls[i] + if c and c ~= "black" and (c == "off" or bg[c]) and not flooded[i] then + flooded[i] = true + queue[#queue + 1] = i + end + end + for px = 0, bw - 1 do + seed(px) + seed((bh - 1) * bw + px) + end + for py = 0, bh - 1 do + seed(py * bw) + seed(py * bw + bw - 1) + end + while #queue > 0 do + local i = table.remove(queue) + local px, py = i % bw, math.floor(i / bw) + for _, d in ipairs(DIRS4) do + local nx, ny = px + d[1], py + d[2] + if nx >= 0 and nx < bw and ny >= 0 and ny < bh then + seed(ny * bw + nx) + end + end + end + + local function on(px, py) + if px < 0 or px >= bw or py < 0 or py >= bh then return false end + local i = py * bw + px + return cls[i] ~= nil and cls[i] ~= "off" and not flooded[i] + end + + local quads = S.objectQuads + local wx0, wz0 = region.minX * 8, region.minY * 8 + for py = 0, bh - 1 do + for px = 0, bw - 1 do + if on(px, py) then + local i = py * bw + px + local u = (srcU[i] + 0.5) / atlasW + local v = (srcV[i] + 0.5) / atlasH + local x, z = wx0 + px, wz0 + py + local function quad(c1, c2, c3, c4, shade) + quads[#quads + 1] = { c1, c2, c3, c4, u = u, v = v, shade = shade } + end + quad({ x, h, z }, { x + 1, h, z }, { x + 1, h, z + 1 }, + { x, h, z + 1 }, RELIEF_SHADE.top) + if not on(px, py + 1) then + quad({ x, 0, z + 1 }, { x + 1, 0, z + 1 }, { x + 1, h, z + 1 }, + { x, h, z + 1 }, RELIEF_SHADE.south) + end + if not on(px, py - 1) then + quad({ x + 1, 0, z }, { x, 0, z }, { x, h, z }, + { x + 1, h, z }, RELIEF_SHADE.north) + end + if not on(px - 1, py) then + quad({ x, 0, z }, { x, 0, z + 1 }, { x, h, z + 1 }, + { x, h, z }, RELIEF_SHADE.side) + end + if not on(px + 1, py) then + quad({ x + 1, 0, z + 1 }, { x + 1, 0, z }, { x + 1, h, z }, + { x + 1, h, z + 1 }, RELIEF_SHADE.side) + end + end + end + end +end + +-- ---- bookcases: free-standing shelves collapsed to true depth ---- + +-- A drawn bookcase is TALL, not deep: the graphic spans two cell rows +-- because the shelf is 32px high, while the object stands one cell +-- (16px) deep. Columns of tiles pinned `bookcase` collapse in ranks +-- (at most four drawn rows each, measured from the south): every rank +-- raises one box over its front two tile rows -- the drawing folded up +-- its south face band by band -- and its back rows become hidden floor. +-- When the row just above a rank is undetected structure (a shared trim +-- tile the profile cannot pin), the rank adopts it as its CAP: one more +-- band of height and the art its top face wears. +local BOOK_SHADE = { south = 1.0, north = 0.68, flank = 0.8, top = 0.85 } + +local function bookcaseRank(S, map, tx, northTy, frontTy, capTile) + local quads = S.objectQuads + local perRow = map.tileset.tilesPerRow or 16 + local atlasW = map.tileset.imageWidth or 128 + local atlasH = map.tileset.imageHeight or 48 + local function uvRect(tile) + local ax = (tile % perRow) * 8 + local ay = math.floor(tile / perRow) * 8 + return (ax + 0.5) / atlasW, (ax + 7.5) / atlasW, + (ay + 0.5) / atlasH, (ay + 7.5) / atlasH + end + + local size = frontTy - northTy + 1 + local bands = size + (capTile and 1 or 0) + local h = bands * 8 + local depth = math.min(2, size) * 8 + local x0, x1 = tx * 8, tx * 8 + 8 + local z1 = frontTy * 8 + 8 + local z0 = z1 - depth + + -- does the neighbouring column continue this shelf? (flanks only cap + -- the ends of a run of bookcases standing side by side) + local function joined(nx) + local ns = S.shapeAt[keyOf(nx, frontTy)] + return ns ~= nil and ns.art == "bookcase" + end + + for band = 0, bands - 1 do + local tile = band < size and map:tileAt(tx, frontTy - band) or capTile + local u0, u1, v0, v1 = uvRect(tile) + local y0, y1 = band * 8, band * 8 + 8 + quads[#quads + 1] = { { x0, y0, z1 }, { x1, y0, z1 }, + { x1, y1, z1 }, { x0, y1, z1 }, + uv = { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, + shade = BOOK_SHADE.south } + quads[#quads + 1] = { { x1, y0, z0 }, { x0, y0, z0 }, + { x0, y1, z0 }, { x1, y1, z0 }, + uv = { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, + shade = BOOK_SHADE.north } + if not joined(tx - 1) then + quads[#quads + 1] = { { x0, y0, z0 }, { x0, y0, z1 }, + { x0, y1, z1 }, { x0, y1, z0 }, + uv = { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, + shade = BOOK_SHADE.flank } + end + if not joined(tx + 1) then + quads[#quads + 1] = { { x1, y0, z1 }, { x1, y0, z0 }, + { x1, y1, z0 }, { x1, y1, z1 }, + uv = { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, + shade = BOOK_SHADE.flank } + end + end + + local topTile = capTile or map:tileAt(tx, northTy) + local u0, u1, v0, v1 = uvRect(topTile) + for seg = 0, depth / 8 - 1 do + local sz0 = z0 + seg * 8 + quads[#quads + 1] = { { x0, h, sz0 }, { x1, h, sz0 }, + { x1, h, sz0 + 8 }, { x0, h, sz0 + 8 }, + uv = { { u0, v0 }, { u1, v0 }, { u1, v1 }, { u0, v1 } }, + shade = BOOK_SHADE.top } + end +end + +function Structures.buildBookcases(S, map, x0, x1, y0, y1) + for tx = x0, x1 do + local ty = y1 + while ty >= y0 do + local s = S.shapeAt[keyOf(tx, ty)] + if s and s.art == "bookcase" then + -- the contiguous pinned run above this front row + local north = ty + while north > y0 do + local ns = S.shapeAt[keyOf(tx, north - 1)] + if ns and ns.art == "bookcase" then north = north - 1 else break end + end + -- ranks of at most four drawn rows, southmost first + local front = ty + while front >= north do + local top = math.max(north, front - 3) + -- adopt the trim row just above as the cap: either undetected + -- structure the profile could not pin, or a row pinned `table` + -- because the same trim tiles cap other furniture too + local capTile = nil + if top == north then + local ck = keyOf(tx, north - 1) + local cs = S.shapeAt[ck] + if cs and not cs.flat and not S.skip[ck] and not S.runs[ck] + and (not cs.authored or cs.class == "table") then + capTile = S.tileAt[ck] + end + end + for cy = top, front do + local tk = keyOf(tx, cy) + S.skip[tk] = true + S.ground[tk] = false + end + bookcaseRank(S, map, tx, top, front, capTile) + front = top - 1 + end + ty = north - 1 + else + ty = ty - 1 + end + end + end +end + +-- ---- stairs: pinned cells that render as real steps ---- + +-- A cell the profile pins stair_e / stair_w (art "stair") becomes a +-- flight of STAIR_STEPS boxes rising evenly across the cell toward the +-- named side, each the full cell deep. stair_down_e / stair_down_w is +-- the same flight EXCAVATED: the cell opens into a stairwell and the +-- steps descend below floor level toward the named side -- the shape a +-- staircase leading down a floor actually has. The 2D staircase is +-- drawn from the side, so vertical faces (step fronts and stairwell +-- walls) wear the matching slice of that drawing -- the railing's +-- diagonal lands along the stepped silhouette -- while treads sample the +-- art band drawn at their own height. +local STAIR_STEPS = 4 + +local STAIR_SHADE = { south = 1.0, north = 0.68, tread = 1.0, + riser = 0.82, cap = 0.78, + wellN = 0.9, wellS = 0.55, wellEnd = 0.15, + wellTread = 0.8 } + +local function stairCell(S, map, data, cx, cy, s) + local perRow = map.tileset.tilesPerRow or 16 + local atlasW = map.tileset.imageWidth or 128 + local atlasH = map.tileset.imageHeight or 48 + local quads = S.objectQuads + local down = s.class == "stair_down_e" or s.class == "stair_down_w" + local east = s.class == "stair_e" or s.class == "stair_down_e" + local mx, mz = cx * 16, cy * 16 + local h = s.h or 16 + local rise = h / STAIR_STEPS + local runW = 16 / STAIR_STEPS + local z0, z1 = mz, mz + 16 + + -- cell-space art coords (16x16, row 0 the top) -> atlas uv; callers keep + -- a quad's range inside one 8px tile so it never samples across a seam + local function uv(px, py) + px = math.max(0.05, math.min(15.95, px)) + py = math.max(0.05, math.min(15.95, py)) + local tile = S.tileAt[keyOf(cx * 2 + (px >= 8 and 1 or 0), + cy * 2 + (py >= 8 and 1 or 0))] + return ((tile % perRow) * 8 + px % 8) / atlasW, + (math.floor(tile / perRow) * 8 + py % 8) / atlasH + end + -- corners run bottom-left, bottom-right, top-right, top-left as seen + -- from outside (the mesher's side convention); art rect in cell space + local function face(c1, c2, c3, c4, ax0, ay0, ax1, ay1, shade) + local u0, v0 = uv(ax0, ay0) + local u1, v1 = uv(ax1, ay1) + quads[#quads + 1] = { c1, c2, c3, c4, + uv = { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, + shade = shade } + end + -- a vertical face spanning heights [fy0, fy1] wearing art rows + -- [ay0, ay1], emitted per 8-row art band so no quad crosses the seam + local function banded(z, ax0, ax1, fy0, fy1, ay0, ay1, shade, flip) + local scale = (fy1 - fy0) / math.max(ay1 - ay0, 0.001) + for _, band in ipairs({ { ay0, math.min(8, ay1) }, + { math.max(ay0, 8), ay1 } }) do + local a0, a1 = band[1], band[2] + if a1 > a0 then + local by1 = fy1 - (a0 - ay0) * scale + local by0 = fy1 - (a1 - ay0) * scale + local xa, xb = mx + ax0, mx + ax1 + if flip then + face({ xb, by0, z }, { xa, by0, z }, { xa, by1, z }, + { xb, by1, z }, ax0, a0, ax1, a1, shade) + else + face({ xa, by0, z }, { xb, by0, z }, { xb, by1, z }, + { xa, by1, z }, ax0, a0, ax1, a1, shade) + end + end + end + end + + for i = 0, STAIR_STEPS - 1 do + local sx0 = east and (i * runW) or (16 - (i + 1) * runW) + local sx1 = sx0 + runW + local x0, x1 = mx + sx0, mx + sx1 + + if down then + -- stairwell: tread i sits (i+1) rises below the floor; the walls + -- above it are the excavation, wearing the drawing at its depth + local yTop = -(i + 1) * rise + local dep = (i + 1) * rise + + face({ x0, yTop, z0 }, { x1, yTop, z0 }, + { x1, yTop, z1 }, { x0, yTop, z1 }, + sx0, dep - 1.4, sx1, dep, STAIR_SHADE.wellTread) + + -- stairwell walls above this tread: north wall faces the camera + banded(z0, sx0, sx1, yTop, 0, 0, dep, STAIR_SHADE.wellN) + banded(z1, sx0, sx1, yTop, 0, 0, dep, STAIR_SHADE.wellS, true) + + -- riser dropping to this tread from the shallower step + local rx = east and x0 or x1 + local ry1 = -i * rise + local rax = east and (sx0 + 0.1) or (sx1 - 1.3) + if east then + face({ rx, yTop, z0 }, { rx, yTop, z1 }, + { rx, ry1, z1 }, { rx, ry1, z0 }, + rax, i * rise, rax + 1.2, dep, STAIR_SHADE.riser) + else + face({ rx, yTop, z1 }, { rx, yTop, z0 }, + { rx, ry1, z0 }, { rx, ry1, z1 }, + rax, i * rise, rax + 1.2, dep, STAIR_SHADE.riser) + end + + -- the deep end: a dark opening under the wall the flight leaves by + if i == STAIR_STEPS - 1 then + local px = east and (mx + 16) or mx + local cax = east and 14.7 or 0.1 + if east then + face({ px, -h, z1 }, { px, -h, z0 }, { px, 0, z0 }, { px, 0, z1 }, + cax, 0, cax + 1.2, 16, STAIR_SHADE.wellEnd) + else + face({ px, -h, z0 }, { px, -h, z1 }, { px, 0, z1 }, { px, 0, z0 }, + cax, 0, cax + 1.2, 16, STAIR_SHADE.wellEnd) + end + end + else + -- rising flight + local yTop = (i + 1) * rise + local py0 = 16 - yTop + + -- south + north faces: the drawn flight sliced at this step's column + banded(z1, sx0, sx1, 0, yTop, py0, 16, STAIR_SHADE.south) + banded(z0, sx0, sx1, 0, yTop, py0, 16, STAIR_SHADE.north, true) + + -- tread: the step's top, wearing the art band drawn at its height + face({ x0, yTop, z0 }, { x1, yTop, z0 }, + { x1, yTop, z1 }, { x0, yTop, z1 }, + sx0, py0, sx1, py0 + 1.4, STAIR_SHADE.tread) + + -- riser: the vertical strip exposed above the previous step + local rx = east and x0 or x1 + local ry0 = i * rise + local rax = east and (sx0 + 0.1) or (sx1 - 1.3) + if east then + face({ rx, ry0, z0 }, { rx, ry0, z1 }, + { rx, yTop, z1 }, { rx, yTop, z0 }, + rax, 16 - yTop, rax + 1.2, 16 - ry0, STAIR_SHADE.riser) + else + face({ rx, ry0, z1 }, { rx, ry0, z0 }, + { rx, yTop, z0 }, { rx, yTop, z1 }, + rax, 16 - yTop, rax + 1.2, 16 - ry0, STAIR_SHADE.riser) + end + + -- cap the tall end of the flight so it never shows a hole + if i == STAIR_STEPS - 1 then + local px = east and (mx + 16) or mx + local cax = east and 14.7 or 0.1 + if east then + face({ px, 0, z1 }, { px, 0, z0 }, { px, h, z0 }, { px, h, z1 }, + cax, 0, cax + 1.2, 16, STAIR_SHADE.cap) + else + face({ px, 0, z0 }, { px, 0, z1 }, { px, h, z1 }, { px, h, z0 }, + cax, 0, cax + 1.2, 16, STAIR_SHADE.cap) + end + end + end + end +end + +function Structures.buildStairs(S, map, x0, x1, y0, y1) + local data = pixels(map.tileset) + for cy = math.floor(y0 / 2), math.floor(y1 / 2) do + for cx = math.floor(x0 / 2), math.floor(x1 / 2) do + local s = S.shapeAt[keyOf(cx * 2, cy * 2)] + if s and s.art == "stair" then + -- claim the cell whichever way the quads go: the mesher must not + -- box or floor it. A rising flight stands on the map's common + -- floor; a stairwell IS the hole, so nothing is painted under it + local down = s.class == "stair_down_e" or s.class == "stair_down_w" + for dy = 0, 1 do + for dx = 0, 1 do + local tk = keyOf(cx * 2 + dx, cy * 2 + dy) + S.skip[tk] = true + if not down then S.ground[tk] = false end + end + end + if data then stairCell(S, map, data, cx, cy, s) end + end + end + end +end + +-- ---- volume mode: per-column runs with real drawn heights ---- + +-- `tiles` is a list of {tx, ty} forming one region (or what is left of one +-- after object extraction); runs are column-local, heights are measured +-- per column and reconciled per region. +function Structures.buildVolume(S, map, tiles) + local cols = {} + for _, c in ipairs(tiles) do + cols[c[1]] = cols[c[1]] or {} + cols[c[1]][c[2]] = true + end + + local runs = {} + local heightVotes = {} + for tx, ys in pairs(cols) do + -- visit each contiguous vertical run in this column + local sorted = {} + for y in pairs(ys) do sorted[#sorted + 1] = y end + table.sort(sorted) + local i = 1 + while i <= #sorted do + local north = sorted[i] + local front = north + while i + 1 <= #sorted and sorted[i + 1] == front + 1 do + i = i + 1 + front = sorted[i] + end + i = i + 1 + local extent = front - north + 1 + + -- the column's own reading: its extent, unless its tile sequence + -- repeats -- then the repeat period is the drawn unit. Both readings + -- cap at MAX_ROWS (a long-period repeat is still not one column of + -- drawing). + local unit, repeatRead = math.min(extent, MAX_ROWS), false + if extent > 1 then + local t0 = map:tileAt(tx, front) + for k = 1, extent - 1 do + if map:tileAt(tx, front - k) == t0 then + unit = math.min(math.max(k, 2), MAX_ROWS) + repeatRead = true + break + end + end + end + local run = { front = front, north = north, extent = extent, + unit = unit, fromRepeat = repeatRead } + runs[#runs + 1] = { tx = tx, run = run } + local h = unit * 8 + heightVotes[h] = (heightVotes[h] or 0) + 1 + end + end + + -- region consensus: the dominant height. A column whose reading came + -- from a repeat adopts it when taller (the column above a doorway + -- repeats internally but belongs to a 48px house); a column that read + -- its full extent keeps it (an attached low wing stays low). + local modeH, modeN = 16, 0 + for h, n in pairs(heightVotes) do + if n > modeN or (n == modeN and h > modeH) then modeH, modeN = h, n end + end + for _, r in ipairs(runs) do + local run = r.run + local h = run.unit * 8 + local adopted = false + if run.fromRepeat and modeH > h then + h = modeH + adopted = true + end + -- Outdoors, a structure's top rows are its ROOF: the drawn height + -- splits into a vertical facade and a slope rising north to the drawn + -- peak (the mesher builds it; hips close the exposed flanks). Repeat + -- patterns (a border wall) stay flat-topped -- unless they adopted + -- their region's height, which means they are part of a building (the + -- column above a doorway) and roof with it. Total height is always + -- the drawn height: facade + rise = extent rows * 8. + -- + -- But only PITCHED roofs slope. Gen 1 draws two kinds: a pitched roof + -- has distinct ridge and eaves rows (the houses' stripes), while a + -- flat ROOFTOP (the lab, the mart) repeats one texture tile over the + -- whole roof area -- and a rooftop tilted into a 48px ramp reads + -- wrong instantly. Distinct top rows -> slope; repeated -> level top. + local roofRows = 0 + if S.outdoor and (not run.fromRepeat or adopted) and h >= 16 then + roofRows = math.min(2, math.floor(h / 8) - 1) + if roofRows > 0 and map:tileAt(r.tx, run.north) + == map:tileAt(r.tx, run.north + 1) then + roofRows = 0 + end + end + run.roofRows = roofRows + run.rise = roofRows * 8 + run.peak = h + run.h = h - run.rise -- facade height: what sides build to + for ty = run.north, run.front do + S.runs[keyOf(r.tx, ty)] = run + end + end +end + +-- ---- object mode: per-pixel voxelization of drawn props ---- + +local OBJ_SHADE = { front = 1.0, back = 0.68, side = 0.78, + top = 1.0, bottom = 0.55 } + +-- The four GB shades, by a pixel's darkest channel. Force-mode +-- segmentation reasons in these: black is always outline/object, the +-- other three are background only where they touch the cluster's edge. +function Structures.shadeClass(v) + if v <= 0.25 then return "black" end + if v <= 0.55 then return "dark" end + if v <= 0.85 then return "light" end + return "white" +end + +-- Analyze one region's art against its surroundings, voxelize the +-- sprite-like clusters, and return the tiles that remain for volume mode. +-- `force` (profile-pinned billboards) voxelizes every tile of the region +-- unconditionally -- the pin IS the classification. `force = "opaque"` +-- (the `post` pool) keeps the decree -- every tile is a prop, aprons +-- seed the flood, validation is skipped -- but classifies pixels the way +-- the DETECTOR does (everything non-white is solid) instead of by +-- outline shade: a fence's mid browns are its body, and the outline +-- rule would strip the posts to black skeletons. +function Structures.extractObjects(S, map, region, data, perRow, force) + local bw = (region.maxX - region.minX + 1) * 8 + local bh = (region.maxY - region.minY + 1) * 8 + + local member = {} + for _, c in ipairs(region.tiles) do member[keyOf(c[1], c[2])] = true end + + -- Image over the region bbox plus a 1px ground apron. Pixel states: + -- solid opaque member art (non-white, or white that survives) + -- cand member white: background candidate, the flood decides + -- air ground the flood may travel: INSIDE the bbox (the gaps + -- between fence posts), or the SOUTH apron row. This is the + -- direction the viewer reads background from -- a prop's + -- white meets the ground at its feet. OUTDOORS the other + -- aprons are barriers on purpose: a building's roof stripes + -- touch the grass BEHIND it, and a flood allowed to walk + -- around the sides would pour in from the north and shred the + -- roof into misdetected sprite clusters (it did). INDOORS all + -- four aprons seed: furniture backs onto walls and bottom-row + -- props meet the void ring, so the south row alone often + -- cannot reach the background at all -- and there are no + -- roofs inside to protect. + -- barrier everything else + local W, H = bw + 2, bh + 2 + local state = {} + local srcU, srcV = {}, {} + for iy = 0, H - 1 do + for ix = 0, W - 1 do + Budget.tick() + local i = iy * W + ix + local px, py = ix - 1, iy - 1 + local tx = region.minX + math.floor(px / 8) + local ty = region.minY + math.floor(py / 8) + local k = keyOf(tx, ty) + local inside = px >= 0 and px < bw and py >= 0 and py < bh + -- a forced (pinned) prop floods from every apron even when the + -- neighbours are solid: the pin itself declares the art a prop + -- whose whites are background -- a monitor pinned atop its desk has + -- no flat neighbour anywhere to seed from + local apron = iy == H - 1 + or ((force or not S.outdoor) + and (iy == 0 or ix == 0 or ix == W - 1)) + if inside and member[k] then + local tile = S.tileAt[k] + local ax = (tile % perRow) * 8 + px % 8 + local ay = math.floor(tile / perRow) * 8 + py % 8 + srcU[i], srcV[i] = ax, ay + local r, g, b, a = data:getPixel(ax, ay) + if a == 0 then + state[i] = "cand" + elseif force and force ~= "opaque" then + state[i] = Structures.shadeClass(math.min(r, g, b)) + else + state[i] = math.min(r, g, b) > 0.83 and "cand" or "solid" + end + elseif inside or apron then + if force then + -- a pinned prop's surroundings are background BY DECREE -- the + -- pin declares the drawing a prop even when every neighbour is + -- solid furniture (a vase boxed in by its table). Ring pixels + -- seed the flood outright; interior non-member pixels ("iair") + -- seed it too but never drain paint whites -- only a white run + -- reaching the RING is background white. + state[i] = inside and "iair" or "air" + else + local s = S.shapeAt[k] + state[i] = (s and s.flat and s.class ~= "void") and "air" + or "barrier" + end + else + state[i] = "barrier" + end + end + end + + -- Forced (pinned) props are segmented the way the art is authored: + -- objects wear a BLACK OUTLINE, and the background is whatever shades + -- actually touch the cluster's edge -- the white floor around a TV, + -- the grey tabletop around a vase. Only those shades flood; the + -- outline, its interior, the drawing's paint whites and anything they + -- enclose all survive as the object. + -- + -- The `cutout` pool is STRICTER, per the pure-profile contract: mid + -- shades are always background (a drawn cast shadow must not ring the + -- object in brown), and whites flood only along white runs from the + -- edge -- a background white sheet drains away, but paint whites the + -- flood could only reach through grey are the object. + if force and force ~= "opaque" then + local strict = false + do + local fs = S.shapeAt[keyOf(region.tiles[1][1], region.tiles[1][2])] + strict = fs ~= nil and fs.class == "cutout" + end + local bg = {} + for iy = 0, H - 1 do + for ix = 0, W - 1 do + local px, py = ix - 1, iy - 1 + local edge = px == 0 or px == bw - 1 or py == 0 or py == bh - 1 + local st = state[iy * W + ix] + if edge and (st == "dark" or st == "light" or st == "white") then + bg[st] = true + end + end + end + if not (bg.dark or bg.light or bg.white) then bg.white = true end + for i, st in pairs(state) do + if strict then + if st == "dark" or st == "light" then + state[i] = "cand" + elseif st == "white" then + state[i] = "wcand" + elseif st == "black" then + state[i] = "solid" + end + elseif st == "dark" or st == "light" or st == "white" then + state[i] = bg[st] and "cand" or "solid" + elseif st == "black" then + state[i] = "solid" + end + end + end + + -- flood background in from the ground at the structure's feet + local flooded = {} + local queue = {} + for i, st in pairs(state) do + if st == "air" or st == "iair" then + flooded[i] = true + queue[#queue + 1] = i + end + end + while #queue > 0 do + Budget.tick() + local i = table.remove(queue) + local ix, iy = i % W, math.floor(i / W) + for _, d in ipairs(DIRS4) do + local nx, ny = ix + d[1], iy + d[2] + if nx >= 0 and nx < W and ny >= 0 and ny < H then + local ni = ny * W + nx + if not flooded[ni] then + local ns = state[ni] + -- "wcand" (a strict cutout's white) drains only along a white + -- run that reaches the RING: entered from the outer apron or + -- from another flooded white, never through grey or through + -- interior air + if ns == "cand" or ns == "air" or ns == "iair" + or (ns == "wcand" + and (state[i] == "air" or state[i] == "wcand")) then + flooded[ni] = true + queue[#queue + 1] = ni + end + end + end + end + end + + -- per-tile background ratio -> sprite-like tiles (a pinned billboard is + -- sprite-like by decree) + local sprite = {} + for _, c in ipairs(region.tiles) do + Budget.tick() + if force then + sprite[keyOf(c[1], c[2])] = true + else + local bx = (c[1] - region.minX) * 8 + local by = (c[2] - region.minY) * 8 + local bg = 0 + for py = 0, 7 do + for px = 0, 7 do + if flooded[(by + py + 1) * W + (bx + px + 1)] then bg = bg + 1 end + end + end + if bg / 64 >= TILE_BG_RATIO then sprite[keyOf(c[1], c[2])] = true end + end + end + + -- cluster sprite-like tiles; validate each cluster as one prop + local leftover, claimed = {}, {} + local clusterSeen = {} + for _, c in ipairs(region.tiles) do + local k = keyOf(c[1], c[2]) + if sprite[k] and not clusterSeen[k] then + local cluster = { tiles = {}, minX = c[1], maxX = c[1], + minY = c[2], maxY = c[2] } + local queue2 = { c } + clusterSeen[k] = true + while #queue2 > 0 do + local cc = table.remove(queue2) + cluster.tiles[#cluster.tiles + 1] = cc + cluster.minX = math.min(cluster.minX, cc[1]) + cluster.maxX = math.max(cluster.maxX, cc[1]) + cluster.minY = math.min(cluster.minY, cc[2]) + cluster.maxY = math.max(cluster.maxY, cc[2]) + for _, d in ipairs(DIRS4) do + local nk = keyOf(cc[1] + d[1], cc[2] + d[2]) + if sprite[nk] and not clusterSeen[nk] then + clusterSeen[nk] = true + queue2[#queue2 + 1] = { cc[1] + d[1], cc[2] + d[2] } + end + end + end + if Structures.buildObject(S, map, region, cluster, + state, flooded, srcU, srcV, W, force) then + for _, cc in ipairs(cluster.tiles) do + claimed[keyOf(cc[1], cc[2])] = true + end + end + end + end + + for _, c in ipairs(region.tiles) do + if not claimed[keyOf(c[1], c[2])] then leftover[#leftover + 1] = c end + end + return leftover +end + +-- One sprite-like cluster -> a per-pixel voxel prism, or false when it +-- fails validation (too tall, vertically repeating, too big) and should +-- stay part of the volume. +function Structures.buildObject(S, map, region, cluster, + state, flooded, srcU, srcV, W, force) + local rows = cluster.maxY - cluster.minY + 1 + if not force then + if rows > OBJECT_MAX_ROWS then return false end + + -- a prop stands ON the ground: somewhere the cluster must meet flat + -- ground to its south. A cluster carved out of a structure's middle + -- (roof rows whose whites leaked) fails this and stays in the volume. + -- Indoors any side will do -- furniture backs onto walls and bottom-row + -- props meet the void ring, so south alone is too strict. + local dirs = S.outdoor and { { 0, 1 } } or DIRS4 + local touchesGround = false + for _, c in ipairs(cluster.tiles) do + for _, d in ipairs(dirs) do + local ss = S.shapeAt[keyOf(c[1] + d[1], c[2] + d[2])] + if ss and ss.flat and ss.class ~= "void" then + touchesGround = true + break + end + end + if touchesGround then break end + end + if not touchesGround then return false end + + -- a vertically repeating cluster (tree wall edge) is scenery, not a + -- prop + local cols = {} + for _, c in ipairs(cluster.tiles) do + cols[c[1]] = cols[c[1]] or {} + cols[c[1]][c[2]] = true + end + for tx, ys in pairs(cols) do + local front = nil + for y in pairs(ys) do front = math.max(front or y, y) end + local extent = 0 + while ys[front - extent] do extent = extent + 1 end + if extent > 1 then + local t0 = map:tileAt(tx, front) + for k = 1, extent - 1 do + if map:tileAt(tx, front - k) == t0 then return false end + end + end + end + end + + local memberC = {} + for _, c in ipairs(cluster.tiles) do memberC[keyOf(c[1], c[2])] = true end + + -- solid pixels of this cluster (art minus flooded background) + local solidPx, count, bgCount = {}, 0, 0 + local bw = (cluster.maxX - cluster.minX + 1) * 8 + local bh = (cluster.maxY - cluster.minY + 1) * 8 + for _, c in ipairs(cluster.tiles) do + local rx = (c[1] - region.minX) * 8 + local ry = (c[2] - region.minY) * 8 + for py = 0, 7 do + Budget.tick() + for px = 0, 7 do + local i = (ry + py + 1) * W + (rx + px + 1) + local on = state[i] ~= nil and state[i] ~= "air" + and state[i] ~= "iair" and state[i] ~= "barrier" + and not flooded[i] + if on then + local lx = (c[1] - cluster.minX) * 8 + px + local ly = (c[2] - cluster.minY) * 8 + py + solidPx[ly * bw + lx] = i + count = count + 1 + else + bgCount = bgCount + 1 + end + end + end + end + if count == 0 or count > OBJECT_MAX_QUADS then return false end + if not force and bgCount / (count + bgCount) < CLUSTER_MIN_BG then + return false + end + + -- geometry: each solid pixel is one voxel column deep enough to read as + -- a body, standing at the cluster's south row, base on the ground plane + local depth = OBJECT_DEPTH + if force then + local cs = S.shapeAt[keyOf(cluster.tiles[1][1], cluster.tiles[1][2])] + depth = (cs and PINNED_DEPTH[cs.class]) or PINNED_DEPTH.billboard + end + local wx0 = cluster.minX * 8 + + -- A pinned prop drawn directly above an authored box stands ON it -- a + -- monitor on its desk, a flower pot on the table. The prism rises from + -- the box's top with its feet on the box's north row, and the claimed + -- tiles keep rendering as that box (wearing its plain art) instead of + -- punching a floor-level hole through it. + local baseY, support = 0, nil + if force then + local bs = S.shapeAt[keyOf(cluster.minX, cluster.maxY + 1)] + if bs and bs.authored and bs.art == "upright" and (bs.h or 0) > 0 then + baseY, support = bs.h, bs + end + end + local atlasW = map.tileset.imageWidth or 128 + local atlasH = map.tileset.imageHeight or 48 + local quads = S.objectQuads + + local function at(lx, ly) + if lx < 0 or lx >= bw or ly < 0 or ly >= bh then return nil end + return solidPx[ly * bw + lx] + end + + -- Connected components: one cluster can hold several OBJECTS -- two + -- stools stacked in adjacent cells, a loose leaf beside a vase. Each + -- component stands on its own feet (base on the ground or the support + -- box, never floating at its bbox height) in the depth band of the + -- tile row its lowest pixel is drawn in, so stacked drawings become + -- separate standees in their own cells instead of one tower. + -- 8-connectivity keeps diagonal strokes whole. + local comp, comps = {}, {} + for ly = 0, bh - 1 do + Budget.tick() + for lx = 0, bw - 1 do + local idx = ly * bw + lx + if solidPx[idx] and not comp[idx] then + local c = { lowY = ly, n = 0 } + comps[#comps + 1] = c + local stack = { idx } + comp[idx] = c + while #stack > 0 do + local p = table.remove(stack) + local px, py = p % bw, math.floor(p / bw) + c.n = c.n + 1 + if py > c.lowY then c.lowY = py end + for dy = -1, 1 do + for dx = -1, 1 do + local nx, ny = px + dx, py + dy + if (dx ~= 0 or dy ~= 0) and nx >= 0 and nx < bw + and ny >= 0 and ny < bh then + local ni = ny * bw + nx + if solidPx[ni] and not comp[ni] then + comp[ni] = c + stack[#stack + 1] = ni + end + end + end + end + end + end + end + end + for _, c in ipairs(comps) do + c.z0 = cluster.minY * 8 + math.floor(c.lowY / 8) * 8 + + (support and 8 or 0) + (8 - depth) / 2 + c.z1 = c.z0 + depth + end + + -- A `cutout` pin is ONE object by contract: keep only the largest + -- connected drawing. Loose black scraps -- a cast shadow's drawn + -- edge, a seam -- are background even though black pixels always + -- survive the shade flood, and this is what removes them. + if force then + local cs = S.shapeAt[keyOf(cluster.tiles[1][1], cluster.tiles[1][2])] + if cs and cs.class == "cutout" and #comps > 1 then + local biggest = comps[1] + for _, c in ipairs(comps) do + if c.n > biggest.n then biggest = c end + end + for idx, c in pairs(comp) do + if c ~= biggest then solidPx[idx] = nil end + end + end + end + + for ly = 0, bh - 1 do + Budget.tick() + for lx = 0, bw - 1 do + local i = at(lx, ly) + if i then + local c = comp[ly * bw + lx] + local z0, z1 = c.z0, c.z1 + local x, y = wx0 + lx, baseY + c.lowY - ly + local u = (srcU[i] + 0.5) / atlasW + local v = (srcV[i] + 0.5) / atlasH + local function quad(c1, c2, c3, c4, shade) + quads[#quads + 1] = { c1, c2, c3, c4, u = u, v = v, shade = shade } + end + quad({ x, y, z1 }, { x + 1, y, z1 }, { x + 1, y + 1, z1 }, + { x, y + 1, z1 }, OBJ_SHADE.front) + quad({ x + 1, y, z0 }, { x, y, z0 }, { x, y + 1, z0 }, + { x + 1, y + 1, z0 }, OBJ_SHADE.back) + if not at(lx, ly - 1) then + quad({ x, y + 1, z0 }, { x + 1, y + 1, z0 }, { x + 1, y + 1, z1 }, + { x, y + 1, z1 }, OBJ_SHADE.top) + end + if y > baseY and not at(lx, ly + 1) then + quad({ x, y, z1 }, { x + 1, y, z1 }, { x + 1, y, z0 }, + { x, y, z0 }, OBJ_SHADE.bottom) + end + if not at(lx - 1, ly) then + quad({ x, y, z0 }, { x, y, z1 }, { x, y + 1, z1 }, + { x, y + 1, z0 }, OBJ_SHADE.side) + end + if not at(lx + 1, ly) then + quad({ x + 1, y, z1 }, { x + 1, y, z0 }, { x + 1, y + 1, z0 }, + { x + 1, y + 1, z1 }, OBJ_SHADE.side) + end + end + end + end + + -- the ground the prop stands on: the commonest flat tile touching the + -- cluster, painted under every cluster tile (the art that was there is + -- now standing up as the object) + local votes, best, bestN = {}, nil, 0 + for _, c in ipairs(cluster.tiles) do + for _, d in ipairs(DIRS4) do + local nk = keyOf(c[1] + d[1], c[2] + d[2]) + local ns = S.shapeAt[nk] + if ns and ns.flat and ns.class ~= "void" and not memberC[nk] then + local t = S.tileAt[nk] + votes[t] = (votes[t] or 0) + 1 + if votes[t] > bestN then best, bestN = t, votes[t] end + end + end + end + for _, c in ipairs(cluster.tiles) do + local k = keyOf(c[1], c[2]) + if support then + -- the claimed tile keeps rendering as the box the prop stands on, + -- wearing the art its own ROW would have without the drawing (the + -- trim row stays trim); only when the whole row is the prop does + -- it fall back to the row below + S.shapeAt[k] = support + local src = keyOf(c[1], cluster.maxY + 1) + for dx = 1, 3 do + for _, sx in ipairs({ c[1] - dx, c[1] + dx }) do + local nk = keyOf(sx, c[2]) + local ns = S.shapeAt[nk] + if not memberC[nk] and ns and ns.authored + and ns.class == support.class then + src = nk + break + end + end + if src ~= keyOf(c[1], cluster.maxY + 1) then break end + end + S.tileAt[k] = S.tileAt[src] + else + S.skip[k] = true + S.ground[k] = best + end + end + return true +end + +-- ---- tall grass ---- + +-- A tall-grass tile draws its four tuft segments in two ROWS: the art's +-- top half is one row of grass, the bottom half another. Each row stands +-- as a thin per-pixel slab at its own drawn depth inside the tile, over +-- the flat grass base the tile already renders -- so the player walks +-- BETWEEN rows, and the southern row occludes their feet the way the 2D +-- grass overdraw did. Transparency respected: only the tuft strokes stand. +-- Runs of adjacent pixels merge into single quads, and one template per +-- grass tile id is stamped across the map (grass comes in fields). +local GRASS_THICK = 2 + +local function grassTemplate(map, data, tileId) + local perRow = map.tileset.tilesPerRow or 16 + local atlasW = map.tileset.imageWidth or 128 + local atlasH = map.tileset.imageHeight or 48 + local ax0 = (tileId % perRow) * 8 + local ay0 = math.floor(tileId / perRow) * 8 + + local function opaque(px, py) + if px < 0 or px > 7 or py < 0 or py > 7 then return false end + local r, g, b, a = data:getPixel(ax0 + px, ay0 + py) + return a > 0 and math.min(r, g, b) <= 0.83 + end + + local quads = {} + for half = 0, 1 do + local rowBase = half * 4 + local zMid = half == 0 and 2.5 or 6.5 + local zB, zF = zMid - GRASS_THICK / 2, zMid + GRASS_THICK / 2 + for iy = 0, 3 do + local yTop = 4 - iy + local yBot = yTop - 1 + local ix = 0 + while ix < 8 do + if opaque(ix, rowBase + iy) then + local ix2 = ix + while ix2 + 1 < 8 and opaque(ix2 + 1, rowBase + iy) do + ix2 = ix2 + 1 + end + local u0 = (ax0 + ix + 0.05) / atlasW + local u1 = (ax0 + ix2 + 0.95) / atlasW + local v0 = (ay0 + rowBase + iy + 0.05) / atlasH + local v1 = (ay0 + rowBase + iy + 0.95) / atlasH + quads[#quads + 1] = { -- front + { ix, yBot, zF }, { ix2 + 1, yBot, zF }, + { ix2 + 1, yTop, zF }, { ix, yTop, zF }, + uv = { { u0, v1 }, { u1, v1 }, { u1, v0 }, { u0, v0 } }, + shade = 1, + } + quads[#quads + 1] = { -- back + { ix2 + 1, yBot, zB }, { ix, yBot, zB }, + { ix, yTop, zB }, { ix2 + 1, yTop, zB }, + uv = { { u1, v1 }, { u0, v1 }, { u0, v0 }, { u1, v0 } }, + shade = 0.68, + } + -- blade tips: a top strip where the row above is clear + if not opaque(ix, rowBase + iy - 1) then + quads[#quads + 1] = { + { ix, yTop, zB }, { ix2 + 1, yTop, zB }, + { ix2 + 1, yTop, zF }, { ix, yTop, zF }, + uv = { { u0, v0 }, { u1, v0 }, { u1, v0 }, { u0, v0 } }, + shade = 1, + } + end + ix = ix2 + 1 + else + ix = ix + 1 + end + end + end + end + return quads +end + +function Structures.buildGrass(S, map, x0, x1, y0, y1, data) + local templates = {} + local quads = S.grassQuads + for ty = y0, y1 do + for tx = x0, x1 do + Budget.tick() + local k = keyOf(tx, ty) + local s = S.shapeAt[k] + -- tufts only where the CELL is tall grass by the engine's own rule + -- (isGrassCell: the cell's collision tile). The grass GRAPHIC also + -- appears as decorative filler inside ordinary ground blocks, and a + -- tile-level test sprouted tufts all over town plazas. + if s and s.art == "grass" + and map:isGrassCell(math.floor(tx / 2), math.floor(ty / 2)) then + local tileId = S.tileAt[k] + local tpl = templates[tileId] + if not tpl then + tpl = grassTemplate(map, data, tileId) + templates[tileId] = tpl + end + local wx, wz = tx * 8, ty * 8 + for _, q in ipairs(tpl) do + quads[#quads + 1] = { + { q[1][1] + wx, q[1][2], q[1][3] + wz }, + { q[2][1] + wx, q[2][2], q[2][3] + wz }, + { q[3][1] + wx, q[3][2], q[3][3] + wz }, + { q[4][1] + wx, q[4][2], q[4][3] + wz }, + uv = q.uv, shade = q.shade, + } + end + end + end + end +end + +-- Drop one map's analysis (Cut changed the block layer) or everything. +-- Hull templates key on art content (tileset + tiles), which a block edit +-- cannot change, so only the full drop clears them (atlas reload). +function Structures.invalidate(mapId) + if mapId then + cache[mapId] = nil + else + cache = {} + atlasData = {} + roundCache = {} + Buildings.invalidate() + end +end + +Assets.register(function() Structures.invalidate() end) + +return Structures diff --git a/lib/TerrainAtlas.lua b/lib/TerrainAtlas.lua new file mode 100644 index 0000000..a658cad --- /dev/null +++ b/lib/TerrainAtlas.lua @@ -0,0 +1,344 @@ +-- Voxel world mode: the texture terrain samples. +-- +-- Voxel terrain is textured from the tileset atlas, so a map's colors have +-- to live IN that atlas. Two of the three color paths already do: +-- +-- RED++ TileRenderer.new bakes a fully recolored per-map atlas +-- (getGbcAtlas) and hands it over as renderer.image -- nothing +-- to do here, true GBC terrain color comes through untouched. +-- trueColor a mod's full-color atlas is already its own colors. +-- +-- The SGB modes are the gap. There the atlas is raw 4-shade grayscale and +-- the color normally arrives as a screen-space shade-remap pass over +-- rectangular zones (PaletteFX) -- which has no meaning once the ground is +-- geometry rather than a rectangle. So bake instead: one atlas copy per +-- (atlas, palette), remapped through the same cutoffs the shader uses. +-- +-- A map has exactly one world palette, so this is a handful of 128x48 +-- images for a whole session, built once and cached. +-- +-- ANIMATED TILES (water, flowers) are the other thing this file owns. The +-- 2D path animates them by OVERDRAWING the animated cells on top of the +-- static tile layer each frame, which a single static mesh has no +-- equivalent of -- the geometry samples one texture and that is that. So +-- animate the texture: rewrite the animated tile's slot in a private copy +-- of the atlas whenever the step advances, and every instance of that tile +-- across the whole mesh moves at once. Which is what the Game Boy does in +-- the first place (home/vcopy.asm rewrites the tile's VRAM bytes); the 2D +-- overdraw is the port's workaround, not the original. + +local Assets = require("src.render.Assets") +local TileRenderer = require("src.render.TileRenderer") + +local TerrainAtlas = {} + +local cache = {} +local cacheData = {} -- the pixels behind the atlases we baked ourselves +local animated = {} -- key -> one map's private, mutable animated atlas + +local function paletteKey(colors) + local parts = {} + for i = 1, 4 do + local c = colors[i] + parts[i] = c and (c[1] .. "," .. c[2] .. "," .. c[3]) or "-" + end + return table.concat(parts, ";") +end + +-- The atlas image `map`'s terrain should sample, given the 4-color world +-- palette it sits under (nil to leave the atlas as-is). Falls back to the +-- renderer's own image whenever a bake is impossible -- headless, or no +-- pixel access -- which just means grayscale terrain rather than no +-- terrain. +-- The static atlas for `map` under `colors`: the answer this file gave +-- before animation existed, and the base every animated frame is patched +-- over. Returns the image and, when we baked it ourselves, its pixels. +local function staticAtlas(map, colors) + local renderer = map.renderer + local base = renderer and renderer.image + if not base then return nil end + -- already true color: RED++'s baked per-map atlas, or a mod's own art + if not colors or renderer.gbcAtlas or map.tileset.trueColor then + return base, false + end + if not (love.image and love.image.newImageData) then return base, false end + + local path = map.tileset.image + local key = path .. "#" .. paletteKey(colors) + if cache[key] ~= nil then return cache[key] or base, cacheData[key] end + + local data + local ok, img = pcall(function() + local src = Assets.imageData(path) + local w, h = src:getDimensions() + local out = love.image.newImageData(w, h) + for y = 0, h - 1 do + for x = 0, w - 1 do + local r, g, b, a = src:getPixel(x, y) + r, g, b, a = TileRenderer.recolorSample(r, g, b, a, colors) + out:setPixel(x, y, r, g, b, a) + end + end + local image = love.graphics.newImage(out) + image:setFilter("nearest", "nearest") + data = out + return image + end) + cache[key] = ok and img or false + cacheData[key] = (ok and data) or false + return cache[key] or base, cacheData[key] +end + +-- ------------------------------------------------------------ animation -- + +-- The four GB shades as the ORIGINAL art carries them, by the same cutoffs +-- TileRenderer.recolorSample splits on -- so a shade learned here and a +-- shade recolored there are the same shade. +local function shadeOf(r) + if r > 0.83 then return 1 end + if r > 0.5 then return 2 end + if r > 0.17 then return 3 end + return 4 +end + +-- How this atlas recolored one tile, learned by reading the tile's slot in +-- the raw art and in the finished atlas side by side: shade -> the colour +-- it became. +-- +-- Learned rather than recomputed because the two recolour paths do not +-- share a rule -- SGB bakes one world palette over everything, RED++ picks +-- a palette group per tile GRAPHIC -- and a flower frame arrives as its own +-- little grayscale file that never went through either. Asking "what +-- happened to the tile I am replacing" gets the right answer from both +-- without this file knowing which one ran. +local function learnShades(raw, baked, tile, perRow) + local sx, sy = (tile % perRow) * 8, math.floor(tile / perRow) * 8 + local map = {} + for y = 0, 7 do + for x = 0, 7 do + local k = shadeOf(raw:getPixel(sx + x, sy + y)) + if not map[k] then + local r, g, b, a = baked:getPixel(sx + x, sy + y) + map[k] = { r, g, b, a } + end + end + end + return map +end + +-- One animated entry's tile slot, written into `out` at step `step`. +local function patch(out, entry, spec, step) + local perRow, tile = entry.perRow, spec.tile + local dx, dy = (tile % perRow) * 8, math.floor(tile / perRow) * 8 + if spec.kind == "hshift" then + -- the water rotate (the asm's rrca/rlca run): the tile's own pixels, + -- rolled sideways. Read from the UNANIMATED base, or each step would + -- compound on the last one's shift. + local o = spec.offsets[step % #spec.offsets + 1] + for y = 0, 7 do + for x = 0, 7 do + local r, g, b, a = entry.base:getPixel(dx + x, dy + y) + out:setPixel(dx + (x + o) % 8, dy + y, r, g, b, a) + end + end + elseif spec.kind == "frames" then + local path = spec.images[spec.sequence[step % #spec.sequence + 1]] + if not path then return end + local ok, frame = pcall(Assets.imageData, path) + if not ok or not frame then return end + local shades = entry.shades and entry.shades[tile] + for y = 0, 7 do + for x = 0, 7 do + local r, g, b, a = frame:getPixel(x, y) + local col = shades and shades[shadeOf(r)] + if col and a > 0 then r, g, b = col[1], col[2], col[3] end + out:setPixel(dx + x, dy + y, r, g, b, a) + end + end + end +end + +-- The animation specs this file can serve: the two that rewrite a tile's +-- pixels. "toggle" (the spinner-puzzle blur) is a whole-atlas swap gated on +-- a gameplay state, and is left to the 2D path -- voxel mode does not draw +-- the spinner rooms' tile layer any differently for it. +local function specsFor(tileset) + local declared = tileset.animatedTiles + or TileRenderer.defaultAnimatedTiles(tileset) + local out = nil + for _, spec in ipairs(declared or {}) do + local usable = spec.tile + and ((spec.kind == "hshift" and spec.offsets and #spec.offsets > 0) + or (spec.kind == "frames" and spec.images and spec.sequence + and #spec.sequence > 0)) + if usable then + out = out or {} + out[#out + 1] = spec + end + end + return out +end + +local function newEntry(map, base, baked) + local tileset = map.tileset + local specs = specsFor(tileset) + if not specs then return false end + if not (love.image and love.image.newImageData + and base.replacePixels) then + return false + end + -- the pixels the atlas texture was built from: our own SGB bake when we + -- made one, else whatever the engine's renderer is drawing with + local src = baked or TileRenderer.atlasImageData(map.renderer) + if not src then return false end + + local ok, entry = pcall(function() + local w, h = src:getDimensions() + -- A PRIVATE copy, always. The base may be the engine's own atlas, and + -- the 2D path draws the static tile from it and overdraws the animated + -- cell on top -- rewriting the slot underneath would animate the tile + -- twice over there and corrupt every still frame of it. + local data = love.image.newImageData(w, h) + data:paste(src, 0, 0, 0, 0, w, h) + local image = love.graphics.newImage(data) + image:setFilter("nearest", "nearest") + local e = { base = src, data = data, image = image, specs = specs, + perRow = tileset.tilesPerRow or 16, step = nil } + -- the frame files are raw grayscale; learn what the atlas did to the + -- tile each one stands in for, so they land on the same colours + local recolored = baked or (map.renderer and map.renderer.gbcAtlas) + if recolored and not tileset.trueColor then + local raw = Assets.imageData(tileset.image) + e.shades = {} + for _, spec in ipairs(specs) do + if spec.kind == "frames" then + e.shades[spec.tile] = learnShades(raw, src, spec.tile, e.perRow) + end + end + end + return e + end) + return (ok and entry) or false +end + +-- The atlas for this frame: the static one when nothing on this tileset +-- animates (or anything at all goes wrong), else a private copy with the +-- animated slots rewritten to the current step. Repatched only when the +-- step actually changes -- three times a second, ~130 pixels of work. +function TerrainAtlas.animate(map, colors, base, baked) + -- RED++ bakes a per-MAP atlas, so its animated copy is per map too and + -- has to be evicted with the meshes (setLive below); the shared paths key + -- on the tileset and palette alone, which is bounded by how many of those + -- exist at all. + local perMap = map.renderer and map.renderer.gbcAtlas and map.id or nil + local key = map.tileset.image .. "#a#" .. paletteKey(colors or {}) + .. (perMap or "") + local entry = animated[key] + if entry == nil then + entry = newEntry(map, base, baked) + if entry then entry.mapId = perMap end + animated[key] = entry + end + if not entry then return nil end + + local frame = TileRenderer.animFrame and TileRenderer.animFrame() or 0 + -- one number for the whole entry: every spec's own step, folded together, + -- so a repatch happens when ANY of them turns over + local step = 0 + for i, spec in ipairs(entry.specs) do + local n = spec.kind == "hshift" and #spec.offsets or #spec.sequence + step = step + (math.floor(frame / (spec.period or 20)) % n) * (16 ^ i) + end + if step ~= entry.step then + entry.step = step + local ok = pcall(function() + for _, spec in ipairs(entry.specs) do + local n = spec.kind == "hshift" and #spec.offsets or #spec.sequence + patch(entry.data, entry, spec, + math.floor(frame / (spec.period or 20)) % n) + end + entry.image:replacePixels(entry.data) + end) + if not ok then + animated[key] = false + return nil + end + end + return entry.image +end + +function TerrainAtlas.forMap(map, colors) + local base, baked = staticAtlas(map, colors) + if not base then return nil end + return TerrainAtlas.animate(map, colors, base, baked) or base +end + +-- The image a character model should texture from under an SGB palette. +-- +-- In the 2D SGB modes, sprites are colorized by the screen-space +-- shade-remap shader at blit time -- the sheet itself stays grayscale. The +-- voxel canvas composites 1:1 with no shader pass, so a model textured +-- straight from the sheet renders in raw DMG grays (a black-and-gray +-- character standing in a colored room). Bake instead, exactly like the +-- terrain above: one recolored sheet per (sheet, palette), remapped +-- through the same cutoffs the shader uses, alpha preserved so OBJ color +-- 0 stays transparent. Falls back to nil (caller keeps its texture) when +-- pixels are unreachable. +function TerrainAtlas.forSprite(path, colors) + if not (colors and love.image and love.image.newImageData) then + return nil + end + local key = "spr:" .. path .. "#" .. paletteKey(colors) + if cache[key] ~= nil then return cache[key] or nil end + + local ok, img = pcall(function() + local src = Assets.imageData(path) + local w, h = src:getDimensions() + local out = love.image.newImageData(w, h) + for y = 0, h - 1 do + for x = 0, w - 1 do + local r, g, b, a = src:getPixel(x, y) + r, g, b, a = TileRenderer.recolorSample(r, g, b, a, colors) + out:setPixel(x, y, r, g, b, a) + end + end + local image = love.graphics.newImage(out) + image:setFilter("nearest", "nearest") + return image + end) + cache[key] = ok and img or false + return cache[key] or nil +end + +-- Release the animated copies of maps outside `live` (a set of map ids), +-- the same neighbourhood ChunkMesher bounds its meshes to and called from +-- the same place. Only the per-map RED++ copies are held this way; the rest +-- are keyed by tileset and palette, of which a session sees a handful. +-- Without this a cross-region trek accumulates one atlas and one texture +-- per map ever entered, and each pins the engine's own baked ImageData +-- alive behind it. +function TerrainAtlas.setLive(live) + for key, entry in pairs(animated) do + if entry and entry.mapId and not live[entry.mapId] then + if entry.image and entry.image.release then + pcall(entry.image.release, entry.image) + end + animated[key] = nil + end + end +end + +function TerrainAtlas.invalidate() + cache = {} + cacheData = {} + for _, entry in pairs(animated) do + if entry and entry.image and entry.image.release then + pcall(entry.image.release, entry.image) + end + end + animated = {} +end + +Assets.register(TerrainAtlas.invalidate) + +return TerrainAtlas diff --git a/lib/TileShape.lua b/lib/TileShape.lua new file mode 100644 index 0000000..00deba6 --- /dev/null +++ b/lib/TileShape.lua @@ -0,0 +1,259 @@ +-- Voxel world mode: resolve every tile of a tileset to an extrusion shape. +-- +-- Reads the hand-authored groups in data/voxel_heights.lua and fills the +-- gaps from data the ROM extractor already emits. Resolution happens at two +-- granularities, and the order matters: +-- +-- per tile 1. a group named in data/voxel_heights.lua (hand-authored) +-- per CELL 2. the cell is water -> "water" +-- 3. the cell is walkable -> "ground" +-- per tile 4. tile-level fallback: the map's water set -> "water", +-- its walkable set -> "ground", else -> "wall" +-- +-- The cell steps (TileShape.at) are the load-bearing part. Collision in +-- this engine -- like the GB original -- is defined per 16x16 CELL, judged +-- by the cell's bottom-left 8x8 tile alone. The other three tiles of a +-- cell carry no collision meaning, and treating their walkable-list +-- membership as one (which is what a pure per-tile lookup does) misfiles +-- every decorative tile: flowers become 16px pillars, the gap tiles of a +-- fence row become wall, grass tufts extrude. A tile in a walkable cell is +-- ground the player is standing on, whatever the walkable list says about +-- it; hand-authoring (rule 1) is the only thing that overrides that. +-- +-- Rule 4 covers positions whose cell IS blocked: there, walkable-listed +-- tiles (the gaps between fence posts) stay ground and the rest rise. +-- +-- Every class also carries an ART mode, which is what the mesher renders: +-- +-- flat ground/water/void: a single quad, no box. +-- top ledge/roof: a box with its art on the TOP face -- things +-- whose 2D art depicts a surface seen from above. +-- upright wall/tree/fence/sign: a box whose SOUTH face reconstructs +-- the 2D artwork standing up (the mesher's fold-up rule) -- +-- things whose 2D art depicts a surface seen face-on, which is +-- most of Gen 1: interior walls, furniture, tree canopies, +-- building facades. +-- +-- Purely presentational: a shape decides how a tile DRAWS in voxel mode +-- and nothing else. Collision still reads the same walkable list it +-- always did. + +-- the mod namespace (see main.lua): V.data loads a shipped data file +local V = ... + +local TileShape = {} + +-- class -> height fallbacks, used when data/voxel_heights.lua is missing +-- or omits a class. Same numbers the shipped file carries; a cell is 16x16. +local FALLBACK_HEIGHTS = { + ground = 0, + water = -2, + void = 0, + ledge = 6, + fence = 10, + sign = 12, + wall = 16, + tree = 16, + roof = 28, + cylinder = 16, + billboard = 16, + signpost = 16, + post = 16, + grass = 0, + -- interior furniture: face-on drawings the detector would otherwise + -- raise to wall height (or merge into the wall). A bed is drawn from + -- above and lies low; tables and desks are boxes at their real height; + -- stairs become stepped geometry rising toward the named side. + bed = 7, + stool = 8, + counter = 8, + table = 12, + desk = 24, + prop = 16, + cutout = 16, + relief = 3, + bookcase = 32, + stair_e = 16, + stair_w = 16, + stair_down_e = 16, + stair_down_w = 16, +} + +-- class -> how the mesher draws it (see the header). The last three are +-- profile archetypes Structures.lua builds special geometry for: +-- cylinder round-drawn cells (tree canopies) become voxel hulls cut +-- from the art's darkest-pixel outline, round in depth +-- billboard signs, props: the art stands as a thin per-pixel voxel +-- slab, transparency respected +-- post fence posts: the same thin per-pixel slab, but every CELL +-- stands alone in its own depth band -- a north-south fence +-- line is a march of separate posts, not one tall drawing +-- (which is what a shared cluster would make of it) +-- grass tall grass: flat ground PLUS two thin standing rows of +-- tufts per tile (the art's top and bottom halves), each at +-- its drawn depth -- the player walks between them +local ART = { + ground = "flat", + water = "flat", + void = "flat", + ledge = "top", + roof = "top", + wall = "upright", + tree = "upright", + fence = "upright", + sign = "upright", + cylinder = "cylinder", + billboard = "billboard", + -- signposts share the billboard treatment but as their own pool at a + -- 2-voxel depth: a sign is a thin plate on a stick, and the standard + -- 10px standee body reads as a chunk of furniture outdoors + signpost = "billboard", + post = "post", + grass = "grass", + -- furniture: a bed's art depicts its top surface; tables and desks are + -- boxes whose fronts fold up (the mesher's authored-fold rule). + -- Stools, `prop` and `cutout` are standee pools alongside `billboard` + -- -- same per-pixel cutout, different thickness (see Structures' + -- PINNED_DEPTH), and separate pools cluster separately so touching + -- drawings never stack; a stool keeps its 8px height so a character + -- standing on its (walkable) cell sits at seat height. Stairs are a + -- profile archetype Structures builds real steps for -- rising flights + -- for stairs leading up, sunken stairwells for stairs leading down + bed = "top", + stool = "billboard", + -- half-cell furniture: a service counter, a low couch. One 8px band, + -- so exactly the drawing's bottom row stands up as the front and + -- every row above it rides the top face in drawn order -- which is + -- also the only way to place a figure drawn INTO the furniture (the + -- Center's seated man) without repeating him, since a taller box + -- folds two rows upright and then repeats its north row across the + -- top. Reads as something you lean on rather than a wall stub + counter = "upright", + table = "upright", + desk = "upright", + prop = "billboard", + cutout = "billboard", + relief = "relief", + -- free-standing shelves: the drawing is TALL, not deep -- Structures + -- collapses each drawn rank onto a one-cell-deep box at full height + bookcase = "bookcase", + stair_e = "stair", + stair_w = "stair", + stair_down_e = "stair", + stair_down_w = "stair", +} + +local spec = nil -- the loaded data file, or false when absent +local cache = {} -- tileset id -> resolved shape list + +-- The shape profile ships with the mod (data/voxel_heights.lua) and is read +-- through the mod's own file loader rather than package.path: a mod's +-- directory is not on it, and may live inside a mounted .love archive that +-- plain require cannot reach either. Absent or broken degrades to the +-- derived defaults, which is a rougher-looking world rather than no world. +local function load() + if spec == nil then + local ok, s = pcall(V.data, "voxel_heights") + spec = (ok and type(s) == "table") and s or false + end + return spec or nil +end + +function TileShape.heights() + local s = load() + local out = {} + for class, h in pairs(FALLBACK_HEIGHTS) do out[class] = h end + for class, h in pairs(s and s.heights or {}) do + if type(h) == "number" and FALLBACK_HEIGHTS[class] then out[class] = h end + end + return out +end + +-- tile id -> class, from the hand-authored groups for one tileset. Unknown +-- class names are dropped rather than trusted: a typo in the data file +-- should degrade to the derived default, not invent a zero-height class. +local function authoredGroups(tilesetId, heights) + local s = load() + local entry = s and s.tilesets and s.tilesets[tilesetId] + local out = {} + if not entry then return out end + for class, tiles in pairs(entry) do + if heights[class] and type(tiles) == "table" then + for _, t in ipairs(tiles) do out[t] = class end + end + end + return out +end + +local function shapeFor(class, heights, authored) + return { class = class, h = heights[class] or 0, + art = ART[class] or "upright", + -- grass draws its flat ground base like any walkable tile; the + -- standing tuft rows are additive geometry from Structures + flat = ART[class] == "flat" or class == "grass", + authored = authored or false } +end + +-- Resolved TILE-LEVEL shapes for the tileset `map` uses: a list indexed by +-- tile id holding { class, h, art, flat, authored }, plus `classes`, one +-- canonical shape per class for the cell-level overrides in TileShape.at. +-- Cached per tileset id -- this table depends only on the tileset record +-- and the data file, both constant for a given id. The per-map part of +-- resolution (cell walkability) lives in TileShape.at, NOT here. +function TileShape.forMap(map) + local tileset = map.tileset + local id = tileset.id + if cache[id] then return cache[id] end + + local heights = TileShape.heights() + local authored = authoredGroups(id, heights) + local count = math.floor((tileset.imageWidth or 128) / 8) + * math.floor((tileset.imageHeight or 48) / 8) + + local shapes = { classes = {} } + for class in pairs(FALLBACK_HEIGHTS) do + shapes.classes[class] = shapeFor(class, heights) + end + for t = 0, count - 1 do + local class = authored[t] + if class then + shapes[t] = shapeFor(class, heights, true) + elseif t == tileset.grassTile then + -- derived pin: every tileset already names its tall-grass tile, so + -- the standing-tuft treatment needs no profile entry anywhere + shapes[t] = shapeFor("grass", heights, true) + elseif map.waterTiles and map.waterTiles[t] then + shapes[t] = shapes.classes.water + elseif map.walkable and map.walkable[t] then + shapes[t] = shapes.classes.ground + else + shapes[t] = shapes.classes.wall + end + end + shapes.count = count + cache[id] = shapes + return shapes +end + +-- The shape of the tile at TILE coordinates (tx, ty) -- the full +-- resolution including the cell-granularity steps (see the header). +-- `shapes` is the table forMap returned for this map; `tile` is +-- map:tileAt(tx, ty), passed in because every caller already has it. +function TileShape.at(map, shapes, tile, tx, ty) + local s = shapes[tile] + if not s or s.authored then return s end + local cx = math.floor(tx / 2) + local cy = math.floor(ty / 2) + if map:isWaterCell(cx, cy) then return shapes.classes.water end + if map:isWalkableCell(cx, cy) then return shapes.classes.ground end + return s +end + +-- Drop the cache: a mod that shadows data/voxel_heights.lua or a tileset +-- record needs the next lookup to re-resolve (hot reload, mod toggle). +function TileShape.invalidate() + spec = nil + cache = {} +end + +return TileShape diff --git a/lib/TiltShift.lua b/lib/TiltShift.lua new file mode 100644 index 0000000..d95c10e --- /dev/null +++ b/lib/TiltShift.lua @@ -0,0 +1,177 @@ +-- Voxel world mode: tilt-shift post-process (the miniature-diorama look). +-- +-- A depth-of-field fake that reads perfectly on a tilted voxel scene: a +-- horizontal band through the view centre (where the camera focuses -- the +-- player) stays sharp, and the frame blurs progressively toward the top +-- and bottom edges, with a slight saturation lift to sell the model-photo +-- feel. It runs on the finished voxel canvas as two separable gaussian +-- passes, so it costs two fullscreen draws and touches nothing in the 3D +-- pass itself. +-- +-- This is a render pipeline in its own right -- a worldPresent pass, which +-- is the stage that post-processes the finished world BEFORE the UI +-- composites over it. That placement is the whole point: a miniature-photo +-- blur belongs on the diorama, not on the dialog box in front of it. +-- +-- The engine owns the level: the T-SHIFT options row, its hotkey, the +-- OFF -> 1 -> 2 -> 3 -> OFF ladder and persistence in +-- save.options.pipelines all come from the render_pipelines record in +-- main.lua, and the current level arrives through update(). Each step +-- narrows the sharp band, deepens the blur and pushes the saturation a +-- little further. +-- +-- Because worldPresent only runs when some pipeline rendered the world, +-- this draws over the voxel scene and nothing else. With it off (or on any +-- failure -- headless, no shader support) apply() hands the canvas back +-- untouched, so every other path is byte-for-byte what it always was. + +local TiltShift = {} + +TiltShift.level = 0 +TiltShift.LABELS = { "OFF", "1", "2", "3" } + +-- The strength ladder. `spacing` is the gap between the gaussian's taps +-- at full blur, as a fraction of the canvas height (so the miniature +-- reads the same in a window and fullscreen; the blur's reach is 4x the +-- spacing per pass, and the two passes compound). `band` is the +-- half-height of the fully sharp zone and `range` the ramp to full blur, +-- both in canvas-uv units. The focus line sits at the vertical centre +-- because that is where the voxel camera parks the player. +TiltShift.FOCUS_Y = 0.5 +TiltShift.PRESETS = { + [1] = { spacing = 0.0016, band = 0.14, range = 0.42, saturation = 1.10 }, + [2] = { spacing = 0.0028, band = 0.10, range = 0.36, saturation = 1.18 }, + [3] = { spacing = 0.0042, band = 0.07, range = 0.30, saturation = 1.28 }, +} + +local SHADER = [[ + uniform vec2 dir; // one texel step along the axis being blurred + uniform float focusY; + uniform float band; + uniform float range; + uniform float spacing; // gap between taps at full blur, in texels + uniform float boost; // 0 = plain blur pass, 1 = final pass (color pop) + uniform float saturation; + vec4 effect(vec4 color, Image tex, vec2 tc, vec2 sc) { + float d = abs(tc.y - focusY) - band; + float s = clamp(d / range, 0.0, 1.0); + s = s * s; // ease in, so the band edge has no visible seam + // 9 taps a small step apart: dense enough that even the strongest + // preset blurs smoothly instead of ghosting into streaks + vec2 o = dir * (s * spacing); + vec4 sum = Texel(tex, tc) * 0.2270270270; + sum += (Texel(tex, tc + o) + Texel(tex, tc - o)) * 0.1945945946; + sum += (Texel(tex, tc + 2.0 * o) + Texel(tex, tc - 2.0 * o)) * 0.1216216216; + sum += (Texel(tex, tc + 3.0 * o) + Texel(tex, tc - 3.0 * o)) * 0.0540540541; + sum += (Texel(tex, tc + 4.0 * o) + Texel(tex, tc - 4.0 * o)) * 0.0162162162; + if (boost > 0.5) { + float luma = dot(sum.rgb, vec3(0.299, 0.587, 0.114)); + sum.rgb = mix(vec3(luma), sum.rgb, saturation); + } + return sum * color; + } +]] + +local shader = nil -- nil = untried, false = unavailable +local ping, pong, cw, ch = nil, nil, 0, 0 + +local function getShader() + if shader == nil then + local ok, sh = pcall(function() return love.graphics.newShader(SHADER) end) + shader = (ok and sh) or false + end + return shader or nil +end + +local function getCanvases(w, h) + if not ping or cw ~= w or ch ~= h then + local ok, a = pcall(love.graphics.newCanvas, w, h) + if not ok then return nil end + local okB, b = pcall(love.graphics.newCanvas, w, h) + if not okB then return nil end + -- the gaussian's fractional tap offsets need linear filtering + a:setFilter("linear", "linear") + b:setFilter("linear", "linear") + ping, pong, cw, ch = a, b, w, h + end + return ping, pong +end + +function TiltShift.setLevel(level) + level = math.floor(tonumber(level) or 0) + if level < 0 then level = 0 end + if level > 3 then level = 3 end + TiltShift.level = level +end + +-- The pipeline's per-frame tick: the engine hands over the level the +-- player has the T-SHIFT row set to. No tween -- unlike the camera angle, +-- a blur strength has nothing to ease through. +function TiltShift.update(_, level) + TiltShift.setLevel(level) +end + +function TiltShift.levelLabel(level) + return TiltShift.LABELS[(level or TiltShift.level) + 1] or "OFF" +end + +function TiltShift.active() + return TiltShift.level > 0 +end + +function TiltShift.reset() + TiltShift.level = 0 +end + +-- Run the effect over `canvas` and return the processed canvas. Returns +-- the input unchanged when the effect is off or cannot run (headless, no +-- shader support), so the caller composites exactly what it was handed. +function TiltShift.apply(canvas) + local preset = TiltShift.PRESETS[TiltShift.level] + if not (preset and canvas) then return canvas end + local sh = getShader() + if not sh then return canvas end + local w, h = canvas:getDimensions() + local a, b = getCanvases(w, h) + if not a then return canvas end + + local spacing = math.max(0.75, math.min(3, h * preset.spacing)) + local prevBlend, prevAlpha = love.graphics.getBlendMode() + + -- the voxel canvas filters nearest for its 1:1 blit; the blur taps need + -- linear, restored below so the composite path sees what it expects + canvas:setFilter("linear", "linear") + love.graphics.setShader(sh) + love.graphics.setColor(1, 1, 1, 1) + -- replace, not alpha-blend: these are image-processing copies + love.graphics.setBlendMode("replace", "premultiplied") + pcall(sh.send, sh, "focusY", TiltShift.FOCUS_Y) + pcall(sh.send, sh, "band", preset.band) + pcall(sh.send, sh, "range", preset.range) + pcall(sh.send, sh, "spacing", spacing) + pcall(sh.send, sh, "saturation", preset.saturation) + + local ok = pcall(function() + love.graphics.setCanvas(a) + pcall(sh.send, sh, "dir", { 1 / w, 0 }) + pcall(sh.send, sh, "boost", 0) + love.graphics.draw(canvas) + love.graphics.setCanvas(b) + pcall(sh.send, sh, "dir", { 0, 1 / h }) + pcall(sh.send, sh, "boost", 1) + love.graphics.draw(a) + end) + + love.graphics.setCanvas() + love.graphics.setShader() + love.graphics.setBlendMode(prevBlend or "alpha", prevAlpha) + canvas:setFilter("nearest", "nearest") + return ok and b or canvas +end + +-- Drop the GPU objects (window resize, hot reload). +function TiltShift.invalidate() + ping, pong, cw, ch = nil, nil, 0, 0 +end + +return TiltShift diff --git a/lib/Voxel3D.lua b/lib/Voxel3D.lua new file mode 100644 index 0000000..e9a8869 --- /dev/null +++ b/lib/Voxel3D.lua @@ -0,0 +1,582 @@ +-- Voxel world mode: the 3D pass -- shader, depth buffer and camera. +-- +-- World space is world PIXELS, so every coordinate the 2D paths already +-- compute drops straight in with no unit conversion: +-- +-- +X map east (world-pixel x) +-- +Y up (0 is the ground plane) +-- +Z map south (world-pixel y) +-- +-- A character at rest faces +Z, i.e. toward a camera parked to the south, +-- which is what "facing down" means in the 2D game -- so a facing is just a +-- yaw and tools/build_voxels.py bakes its models in that pose. +-- +-- The camera orbits the view centre at Voxel.angle: 0 is straight down +-- (what the flat 2D view already is) and 50 degrees leans toward the +-- horizon. Distance and field of view are tied to Voxel.FOCAL, which is the +-- same constant Tilt projects with, so a given angle frames the world +-- identically in both modes -- switching between them changes the geometry, +-- not the framing. +-- +-- Every GPU object is pcall-guarded and `available()` reports the result: +-- headless test runs and any driver without depth-canvas support fall back +-- to the existing tilt/flat paths rather than erroring. + +-- the mod namespace (see main.lua): V.require loads a sibling module +local V = ... + +local Mat4 = V.require("Mat4") +local Voxel = V.require("VoxelState") +local ShadowMap = V.require("ShadowMap") +local VoxelGrid = V.require("VoxelGrid") +local WorldCurve = V.require("WorldCurve") + +local Voxel3D = {} + +-- Vertex format shared by terrain chunks and character models: a position, +-- the map-canvas / sprite-sheet pixel it samples, and a per-vertex darken +-- factor that gives a face its angle to the sun without a normal or a +-- light uniform. Cast shadows are a separate thing entirely -- see +-- ShadowMap, which the pixel shader below samples on top of this. +Voxel3D.FORMAT = { + { "VertexPosition", "float", 3 }, + { "VertexTexCoord", "float", 2 }, + { "VertexShade", "float", 1 }, +} + +-- Face shading by direction id (see tools/build_voxels.py): top faces stay +-- full brightness, sides step down so an extruded block reads as solid +-- instead of a flat sticker, and the faces turned away from the sun are +-- darkest. The sun hangs in the SOUTHEAST (see ShadowMap), so south and +-- east are the lit flanks and north and west the shaded ones -- east and +-- west used to share one value back when the sun sat due northwest and the +-- two were symmetric about it. +-- +-- This is still worth baking even now that the shadow pass throws real +-- shadows: a face turned away from the sun is dark because of its ANGLE, +-- which no shadow map measures, and the two compound the way they should +-- -- an away-facing wall that is also occluded goes darker still. +Voxel3D.FACE_SHADE = { + [1] = 0.84, -- +X east (toward the sun) + [2] = 0.72, -- -X west (away) + [3] = 1.00, -- +Y up + [4] = 0.55, -- -Y down + [5] = 0.90, -- +Z south (toward the camera, and toward the sun) + [6] = 0.68, -- -Z north (away) +} + +local SHADER = [[ + varying float vShade; + varying vec3 vSun; // this fragment's place in the sun's view +#ifdef VOXEL_GRID + // model space, one unit per voxel -- see VoxelGrid. Precision matters + // here in a way it does not for a colour: the seam is the FRACTIONAL + // part of a coordinate that runs to a few thousand across a big route, + // so a mediump varying would quantise the fraction away entirely. + varying LOVE_HIGHP_OR_MEDIUMP vec3 vGrid; +#endif +#ifdef VERTEX + uniform mat4 vp; + uniform mat4 model; + uniform mat4 sunModel; // where the SUN sees this vertex (see below) + uniform mat4 sunVP; // world -> the shadow map's unit cube + uniform vec3 eye; + uniform float pull; + uniform vec3 curve; // xy = the focus in world XZ, z = k; 0 = off + attribute float VertexShade; + vec4 position(mat4 transform_projection, vec4 vertex_position) { + vShade = VertexShade; +#ifdef VOXEL_GRID + // MODEL space, deliberately: every mesh here is built a unit per + // voxel in its own frame, so the seams ride the model however it is + // posed rather than the world's grid sliding across a leaning sprite + vGrid = vertex_position.xyz; +#endif + vec4 w = model * vertex_position; + // The shadow lookup runs off `sunModel`, not `model`. For terrain the + // two are the same matrix, but a character is drawn as a slab LEANING + // back by the camera's pitch -- a trick played on the viewer, which + // the sun never saw: it lit the upright card. Looking up with the + // leaned position asks whether the sun reached a place the figure is + // not, and since the lean tips the body north and shadows now fall + // north, every sprite's own card fell across its front. Looking up + // with the card's position asks the question the sun actually + // answered. (The pull below is excluded for the same reason: it is a + // depth trick aimed at the camera's own buffer.) + vSun = (sunVP * (sunModel * vertex_position)).xyz; + // The curved world (see WorldCurve): drop every vertex by the square + // of how far its column stands from the camera's focus. Applied AFTER + // the shadow lookup above and clear of the wireframe's model space, so + // both are worked out on the flat world and the bend carries them + // along -- which is why neither has to know this exists. Along Y only, + // so a column moves as one piece: the world tips away and the + // buildings standing on it stay upright. + if (curve.z > 0.0) { + vec2 cd = w.xz - curve.xy; + w.y -= dot(cd, cd) * curve.z; + } + // camera-ward pull: move the vertex along ITS OWN ray to the eye. + // This is a pure depth bias -- the projection of a point moved along + // its eye ray is bit-identical, so there is no screen drift at all. + // (An earlier CPU version translated along the central view axis, + // which preserved only the screen centre and made off-centre sprites + // and grass swim against the ground while the camera scrolled.) + if (pull > 0.0) { + w.xyz += normalize(eye - w.xyz) * pull; + } + return vp * w; + } +#endif +#ifdef PIXEL + uniform Image sunMap; + uniform float sunDark; // how far into black a shadow goes; 0 = off + uniform float sunBias; + uniform vec2 sunTexel; + + // the two-channel pack ShadowMap writes: high byte, then low + float sunDepth(vec2 uv) { + vec4 c = Texel(sunMap, uv); + return c.r + c.g * (1.0 / 255.0); + } + + // 1.0 in full sun, 1.0 - sunDark in full shadow. Four taps half a texel + // out on the diagonals: a 2x2 box filter, which is what turns the + // shadow map's texel staircase into a one-pixel soft edge. + float sunlight(vec3 p) { + if (sunDark <= 0.0) return 1.0; + // outside the sun's frustum nothing was recorded, so nothing occludes + if (p.x < 0.0 || p.x > 1.0 || p.y < 0.0 || p.y > 1.0 || p.z > 1.0) { + return 1.0; + } + // Ease the shadows off at the frustum's rim. The map covers the ground + // the camera can see out to a cap, and past the low rungs -- 75 degrees + // especially -- the horizon is further than any box worth paying for. + // Without this the covered region simply ENDS, drawing a hard line + // across the middle distance where every shadow stops at once; with it + // the far field just loses them, which reads as distance. + vec2 e = min(p.xy, 1.0 - p.xy); + float edge = smoothstep(0.0, 0.06, min(e.x, e.y)); + if (edge <= 0.0) return 1.0; + float z = p.z - sunBias; + float lit = step(z, sunDepth(p.xy + sunTexel * vec2(-0.5, -0.5))) + + step(z, sunDepth(p.xy + sunTexel * vec2( 0.5, -0.5))) + + step(z, sunDepth(p.xy + sunTexel * vec2(-0.5, 0.5))) + + step(z, sunDepth(p.xy + sunTexel * vec2( 0.5, 0.5))); + return 1.0 - sunDark * edge * (1.0 - lit * 0.25); + } + +#ifdef VOXEL_GRID + uniform float gridDark; // how far toward black a seam pulls; 0 = off + uniform float gridWidth; // seam width, in display pixels + + // How much of this fragment a voxel seam covers, 0 to 1. + float voxelSeam(vec3 p) { + // how much of `p` this fragment spans on screen, per axis: the + // conversion from model units to display pixels, measured rather than + // derived, so it holds under any camera pitch or zoom + vec3 w = fwidth(p); + vec3 d = abs(fract(p + 0.5) - 0.5); // distance to the nearest plane + // The axis a face does not vary along is that face's own normal, and + // its distance is a constant zero -- take it at face value and every + // face floods solid. Push those axes out of reach instead of dividing + // by their zero. + vec3 live = step(1e-4, w); + vec3 px = d / max(w, vec3(1e-6)) + (1.0 - live) * 1e6; + float near = min(min(px.x, px.y), px.z); + // Fade out where a voxel is too small to hold a line. Survey zoom + // draws a world pixel at about a display pixel, and a wall seen nearly + // edge-on squashes one to nothing at any zoom -- either way the seams + // land closer together than they are wide, and drawn anyway they stop + // being a wireframe and become a flat 45% dimming of the whole scene. + // The tightest axis decides, which is the honest test of whether the + // grid can be resolved at all. + float span = 1.0 / max(max(w.x, max(w.y, w.z)), 1e-6); + float fade = clamp((span - 2.0) * 0.5, 0.0, 1.0); + // the textbook antialiased line: solid within the half-width, fading + // over the one pixel outside it + return fade * clamp(gridWidth * 0.5 + 0.5 - near, 0.0, 1.0); + } +#endif + + vec4 effect(vec4 color, Image tex, vec2 tc, vec2 sc) { + vec4 p = Texel(tex, tc); + // sprite sheets key GB OBJ color 0 to alpha 0; discarding rather than + // blending keeps those texels out of the depth buffer, so a model never + // carves a transparent hole out of whatever stands behind it + if (p.a < 0.5) discard; + vec3 rgb = p.rgb * vShade * sunlight(vSun); +#ifdef VOXEL_GRID + // darken what is there rather than painting a colour, so a seam across + // dark grass and one across a white roof each stay in their own palette + rgb *= 1.0 - gridDark * voxelSeam(vGrid); +#endif + return vec4(rgb, 1.0) * color; + } +#endif +]] + +-- Two compilations of SHADER: the plain scene, and the same thing with the +-- voxel wireframe compiled in. The wireframe needs shader derivatives +-- (fwidth), the one piece of this a driver can refuse, so it is a separate +-- build rather than a branch -- a refusal costs the grid and nothing else. +-- Each entry is nil = untried, false = unavailable. +local shaders = { [false] = nil, [true] = nil } +local activeShader = nil -- the variant this pass bound +local canvas, canvasW, canvasH = nil, 0, 0 +local active = false + +local IDENTITY = Mat4.identity() + +-- Whether the driver admits to supporting derivatives. Only a hint -- +-- the compile below is the real test -- but it saves building a shader +-- that was never going to work, and it is how LOVE reports the ES2 +-- extension the grid rides on. +local function derivativesOK() + if not (love.graphics and love.graphics.getSupported) then return false end + local ok, caps = pcall(love.graphics.getSupported) + return ok and caps and caps.shaderderivatives == true +end + +-- The scene shader. `grid` asks for the wireframe variant, and nil comes +-- back when that one will not build -- callers then fall back to the plain +-- one rather than losing the whole 3D pass. +function Voxel3D.shader(grid) + grid = grid and true or false + if shaders[grid] == nil then + if grid and not derivativesOK() then + shaders[grid] = false + else + local src = grid and ("#define VOXEL_GRID 1\n" .. SHADER) or SHADER + local ok, sh = pcall(love.graphics.newShader, src) + shaders[grid] = ok and sh or false + end + end + return shaders[grid] or nil +end + +-- Whether the 3D path can run at all. False on a headless test run (no +-- love.graphics), without shader support, or where a depth canvas cannot be +-- created -- every caller treats that as "stay on the 2D path". +function Voxel3D.available() + if not (love.graphics and love.graphics.newCanvas + and love.graphics.setDepthMode) then + return false + end + return Voxel3D.shader() ~= nil +end + +-- Build a mesh in the shared format. `verts` is the LOVE vertex list and +-- `map` the triangle index list. Returns nil when meshes are unavailable, +-- which the callers treat the same way they treat a missing model. +function Voxel3D.newMesh(verts, map) + if #verts == 0 then return nil end + local ok, mesh = pcall(love.graphics.newMesh, Voxel3D.FORMAT, verts, + "triangles", "static") + if not ok then return nil end + if map and #map > 0 then pcall(mesh.setVertexMap, mesh, map) end + return mesh +end + +-- The quad corner offsets and UV corners for one face direction, in the +-- order the vertex map below stitches into two triangles. Corners are unit +-- offsets from the voxel's (x, y, z) minimum corner. +Voxel3D.FACE_CORNERS = { + [1] = { { 1, 0, 0 }, { 1, 0, 1 }, { 1, 1, 1 }, { 1, 1, 0 } }, -- +X + [2] = { { 0, 0, 1 }, { 0, 0, 0 }, { 0, 1, 0 }, { 0, 1, 1 } }, -- -X + [3] = { { 0, 1, 0 }, { 1, 1, 0 }, { 1, 1, 1 }, { 0, 1, 1 } }, -- +Y + [4] = { { 0, 0, 1 }, { 1, 0, 1 }, { 1, 0, 0 }, { 0, 0, 0 } }, -- -Y + [5] = { { 0, 0, 1 }, { 1, 0, 1 }, { 1, 1, 1 }, { 0, 1, 1 } }, -- +Z + [6] = { { 1, 0, 0 }, { 0, 0, 0 }, { 0, 1, 0 }, { 1, 1, 0 } }, -- -Z +} + +-- Append the six indices of quad `n` (0-based) to a triangle index list. +function Voxel3D.pushQuad(map, n) + local b = n * 4 + map[#map + 1] = b + 1 + map[#map + 1] = b + 2 + map[#map + 1] = b + 3 + map[#map + 1] = b + 1 + map[#map + 1] = b + 3 + map[#map + 1] = b + 4 +end + +-- ---------------------------------------------------------------- camera -- + +-- View and projection for a `vw` x `vh` world-pixel view centred on +-- (cx, cy) in world pixels. Returns the combined matrix. +function Voxel3D.viewProjection(cx, cy, vw, vh) + local a = Voxel.angle + local focal = Voxel.FOCAL + local dist = focal * vh + -- the FOV that makes a straight-down camera at `dist` frame exactly `vh` + -- world pixels, which is the framing the flat view already has + local fov = 2 * math.atan(1 / (2 * focal)) + + local focus = { cx, 0, cy } + local eye = { cx, dist * math.cos(a), cy + dist * math.sin(a) } + -- exposed for camera-facing billboards (VoxelScene yaws sprites at it) + Voxel3D.eye = eye + -- perpendicular to the view direction in the YZ plane: north is screen-up + -- when looking straight down, +Y is screen-up when looking level. Never + -- parallel to the view direction, so there is no degenerate a = 0 case. + local up = { 0, math.sin(a), -math.cos(a) } + + local proj = Mat4.perspective(fov, vw / vh, + math.max(1, dist * 0.05), dist * 4 + 4096) + -- Flip clip-space Y. Mat4.perspective emits textbook GL clip space with + -- +Y up, but we bypass LOVE's own transform_projection, and LOVE's canvas + -- coordinates run Y DOWN -- so without this the entire scene composites + -- vertically mirrored: north at the bottom and buildings extruding + -- downward. Winding flips with it, which is free here because the pass + -- draws with culling off. + proj = Mat4.mul(Mat4.scale(1, -1, 1), proj) + return Mat4.mul(proj, Mat4.lookAt(eye, focus, up)) +end + +-- ----------------------------------------------------------------- scene -- + +-- Begin the 3D pass into a `w` x `h` pixel canvas centred on world +-- (cx, cy), covering `vw` x `vh` world pixels. Returns false when the pass +-- could not start, in which case the caller must not call endScene. +function Voxel3D.beginScene(w, h, cx, cy, vw, vh) + -- the wireframe variant when the player has it on AND it built; either + -- answer falls through to the plain scene rather than to no scene + local grid = VoxelGrid.enabled() + local sh = grid and Voxel3D.shader(true) or nil + if not sh then + grid, sh = false, Voxel3D.shader() + end + if not sh then return false end + if not canvas or canvasW ~= w or canvasH ~= h then + local ok, c = pcall(love.graphics.newCanvas, w, h) + if not ok then return false end + c:setFilter("nearest", "nearest") + canvas, canvasW, canvasH = c, w, h + end + -- a depth buffer is what makes occlusion real: walk behind a building and + -- the building wins, with no y-sorting anywhere + local ok = pcall(love.graphics.setCanvas, + { canvas, depth = true }) + if not ok then + pcall(love.graphics.setCanvas) + return false + end + love.graphics.clear(0, 0, 0, 0, true, true) + love.graphics.setDepthMode("lequal", true) + -- models mirror on X for right-facing and alternate walk steps, which + -- flips winding; hidden faces are already culled at build time, so there + -- is nothing to gain from backface culling and a real bug to avoid + love.graphics.setMeshCullMode("none") + love.graphics.setShader(sh) + love.graphics.setColor(1, 1, 1, 1) + Voxel3D.vp = Voxel3D.viewProjection(cx, cy, vw, vh) + pcall(sh.send, sh, "vp", "row", Voxel3D.vp) + pcall(sh.send, sh, "eye", Voxel3D.eye) + -- the sun's frame, filled by ShadowMap just before this pass opened. + -- Sent unconditionally: the sampler is declared either way, and leaving + -- one unbound is a driver-dependent crash rather than a fallback. + local map = ShadowMap.active() + pcall(sh.send, sh, "sunVP", "row", map and ShadowMap.uvVP or IDENTITY) + local tex = ShadowMap.texture() + if tex then pcall(sh.send, sh, "sunMap", tex) end + pcall(sh.send, sh, "sunDark", map and Voxel3D.SHADOW_ALPHA or 0) + pcall(sh.send, sh, "sunBias", ShadowMap.bias) + local texel = 1 / ShadowMap.res + pcall(sh.send, sh, "sunTexel", { texel, texel }) + if grid then + pcall(sh.send, sh, "gridDark", VoxelGrid.DARK) + pcall(sh.send, sh, "gridWidth", VoxelGrid.WIDTH) + end + -- the curved world bends about the camera's focus, so the horizon keeps + -- a fixed distance ahead of the player rather than sitting on the map + Voxel3D.curveK = WorldCurve.k(vh) + Voxel3D.curveX, Voxel3D.curveZ = cx, cy + pcall(sh.send, sh, "curve", { cx, cy, Voxel3D.curveK }) + -- clip w at the focus point, the reference depth project() reports scale + -- against (so scale == 1 for anything standing at the view centre) + local m = Voxel3D.vp + Voxel3D.focusW = m[13] * cx + m[14] * 0 + m[15] * cy + m[16] + activeShader = sh + active = true + return true +end + +-- Depth handling for the character pass. Gen 1 draws sprites over the +-- background unconditionally, so characters render with the depth test +-- forced to pass (still writing depth: the grass mesh drawn after them +-- tests against it to overdraw feet). "test" restores normal occlusion. +function Voxel3D.depth(mode) + if not active then return end + pcall(love.graphics.setDepthMode, mode == "always" and "always" or "lequal", + true) +end + +-- -------------------------------------------------------------- shadows -- + +-- The sun. One direction, shared by everything that needs to know where +-- the light comes from: the shadow map, the flat fallback below, and the +-- baked contact shading in ChunkMesher. Both shears are negative, which +-- hangs it in the SOUTHEAST and throws every shadow northwest -- up and to +-- the left on screen. +Voxel3D.SHADOW_KX = ShadowMap.KX -- west drift per pixel of height +Voxel3D.SHADOW_KZ = ShadowMap.KZ -- north drift per pixel of height +Voxel3D.SHADOW_EPS = 0.25 -- float above the ground to dodge z-fighting +Voxel3D.SHADOW_ALPHA = 0.40 -- how far into black a shadowed surface goes + +-- Whether real shadows are running this frame. False headless and on any +-- driver the sun pass could not start on, which is when VoxelScene falls +-- back to the flat decals below. +function Voxel3D.shadowsActive() + return ShadowMap.active() +end + +-- The upright card a character presents to the sun: its 16x16 sprite quad +-- (corners (0,0,0)..(16,16,0), feet at y = 0) standing on the middle of +-- the cell whose top-left is world (px, py), feet at height `y`. +-- +-- This is the caster the shadow pass draws -- deliberately NOT the leaning +-- slab the camera sees. The slab tips back by the camera's pitch to read +-- face-on, which is a trick played on the viewer; letting the sun see it +-- too would shrink every shadow to nothing as the camera flattened toward +-- top-down. The sun sees the figure standing up, at every tilt. +-- +-- The z-flatten matters when this is used the other way round, as the +-- lookup transform a lit slab reads its own shadowing with (Voxel3D.draw's +-- `sunModel`): it collapses the slab's side relief onto the card plane, so +-- every vertex asks about the exact surface the sun recorded rather than +-- one a few pixels behind it, and a figure cannot fringe itself. On the +-- caster itself it is a no-op -- that quad is already flat. +function Voxel3D.casterMatrix(px, py, y, mirror) + local m = Mat4.translate(px + 8, y, py + 8) + if mirror then m = Mat4.mul(m, Mat4.scale(-1, 1, 1)) end + return Mat4.mul(Mat4.mul(m, Mat4.translate(-8, 0, 0)), + Mat4.scale(1, 1, 0)) +end + +-- FALLBACK ONLY (no shadow map: headless, or a driver that cannot make the +-- canvas). Character drop shadows as decals -- the sprite frame squashed +-- flat onto its ground plane and drawn translucent black. It can only ever +-- paint the floor, which is the whole reason ShadowMap exists. +-- +-- Flattening is measured from the ground plane, so a hop slides the whole +-- shadow along the sun line while it stays glued to the ground -- the +-- classic jump-shadow tell. +function Voxel3D.shadowMatrix(px, py, gh, lift, mirror) + local card = Voxel3D.casterMatrix(px, py, gh + (lift or 0), mirror) + -- flatten about the ground plane: y' = 0, x/z shear by height above it + local squash = { 1, Voxel3D.SHADOW_KX, 0, 0, + 0, 0, 0, 0, + 0, Voxel3D.SHADOW_KZ, 1, 0, + 0, 0, 0, 1 } + local m = Mat4.mul(squash, Mat4.mul(Mat4.translate(0, -gh, 0), card)) + return Mat4.mul(Mat4.translate(0, gh + Voxel3D.SHADOW_EPS, 0), m) +end + +-- The decal pass draws between terrain and characters: depth-tested so a +-- building still hides a shadow behind it, but NOT depth-writing -- the +-- grass tufts drawn at the end of the frame must keep beating the ground +-- plane, and one quad per entity has no self-overlap to guard against. +function Voxel3D.beginShadows() + if not active then return end + pcall(love.graphics.setDepthMode, "lequal", false) + love.graphics.setColor(0, 0, 0, Voxel3D.SHADOW_ALPHA) +end + +function Voxel3D.endShadows() + if not active then return end + pcall(love.graphics.setDepthMode, "lequal", true) + love.graphics.setColor(1, 1, 1, 1) +end + +-- Draw one mesh with `model` (a Mat4) applied. Texture may be nil to keep +-- whatever the mesh already carries. `pull` moves every vertex toward the +-- eye along its own ray (see the shader) -- the artifact-free depth bias +-- the character and grass passes ride in front of the terrain. +-- +-- `sunModel` is where the SHADOW PASS put this same geometry, and defaults +-- to `model` because for everything but a character the two are one matrix. +-- A character is drawn leaning and cast upright, so it must hand over the +-- upright transform or it reads its own shadow as falling on itself. +function Voxel3D.draw(mesh, texture, model, pull, sunModel) + if not (active and mesh) then return end + -- the variant beginScene actually bound, not whichever one is default: + -- sending a uniform to the other shader would go nowhere + local sh = activeShader + if not sh then return end + if texture then mesh:setTexture(texture) end + -- LOVE defaults matrix uniforms to column-major; Mat4 is row-major + pcall(sh.send, sh, "model", "row", model or IDENTITY) + pcall(sh.send, sh, "sunModel", "row", sunModel or model or IDENTITY) + pcall(sh.send, sh, "pull", pull or 0) + love.graphics.draw(mesh) +end + +-- Project a world point to canvas pixels: returns (x, y, scale), or nil +-- when the point is behind the camera. `scale` is how much bigger a thing +-- at that depth appears than one at the focus point, so a caller can size +-- with it -- or ignore it and draw unscaled, which is what tilt mode's +-- billboards do. +-- +-- This is what lets the overworld's FX closures (the "!" bubble, the heal +-- machine, the Fly bird, the fishing rod) draw in voxel mode completely +-- unchanged: they stay ordinary 2D draws, anchored to wherever their ground +-- point lands under the same camera the 3D pass used. +function Voxel3D.project(wx, wy, wz) + local m = Voxel3D.vp + if not m then return nil end + -- the same drop the vertex shader applies, or every FX anchored to a + -- ground point floats off its own feet the moment that ground bends + wy = wy - WorldCurve.drop(Voxel3D.curveK or 0, Voxel3D.curveX or 0, + Voxel3D.curveZ or 0, wx, wz) + local cx = m[1] * wx + m[2] * wy + m[3] * wz + m[4] + local cy = m[5] * wx + m[6] * wy + m[7] * wz + m[8] + local cw = m[13] * wx + m[14] * wy + m[15] * wz + m[16] + if cw <= 1e-6 then return nil end + -- viewProjection already flipped clip-space Y into LOVE's Y-down canvas + -- convention, so both axes map the same way here -- no second flip + local x = (cx / cw * 0.5 + 0.5) * canvasW + local y = (cy / cw * 0.5 + 0.5) * canvasH + return x, y, (Voxel3D.focusW or cw) / cw +end + +-- Re-bind the scene canvas for ordinary 2D drawing (no depth test), so +-- screen-space overlays can be composited into the same image the 3D pass +-- just filled. Pairs with endScene, which unbinds it. +function Voxel3D.beginOverlay() + if not canvas then return false end + love.graphics.setShader() + love.graphics.setDepthMode() + local ok = pcall(love.graphics.setCanvas, canvas) + if not ok then return false end + love.graphics.setColor(1, 1, 1, 1) + return true +end + +-- Close the overlay begun by beginOverlay. +function Voxel3D.endOverlay() + love.graphics.setCanvas() + active, activeShader = false, nil +end + +-- End the pass and hand back the rendered canvas. +function Voxel3D.endScene() + if not active then return nil end + love.graphics.setShader() + love.graphics.setDepthMode() + love.graphics.setMeshCullMode("none") + love.graphics.setCanvas() + active, activeShader = false, nil + return canvas +end + +function Voxel3D.canvas() + return canvas +end + +-- Drop the GPU objects (window resize, hot reload). +function Voxel3D.invalidate() + canvas, canvasW, canvasH = nil, 0, 0 + ShadowMap.invalidate() +end + +return Voxel3D diff --git a/lib/VoxelGrid.lua b/lib/VoxelGrid.lua new file mode 100644 index 0000000..a73994b --- /dev/null +++ b/lib/VoxelGrid.lua @@ -0,0 +1,71 @@ +-- Voxel world mode: the voxel wireframe, 3D Dot Game Heroes style. +-- +-- Every mesh in this mode is built on a one-unit-per-voxel grid in its OWN +-- model space -- terrain in world pixels, a character slab in the sprite's +-- own pixels, a carved model in its voxels. So the seams are simply the +-- integer planes of that space, and drawing them is a pixel-shader job: +-- measure how far the fragment is from the nearest integer plane, in +-- DISPLAY pixels, and darken the ones within half a pixel of it. Sitting in +-- model space is what keeps the wireframe glued to a thing however it is +-- posed -- a character's slab leans back by the camera's pitch and its +-- seams lean with it, instead of the world's grid sliding across the +-- sprite. +-- +-- Deriving "in display pixels" needs shader derivatives (fwidth), which is +-- the one part of this that a driver can refuse. So the grid is a SECOND +-- COMPILATION of the scene shader rather than a branch inside the first +-- one: if it will not build, the mod loses the wireframe and nothing else +-- (see Voxel3D.shader). +-- +-- This file owns the toggle rather than the drawing: the level, where it +-- persists, and the row the player finds it on. + +-- the mod namespace (see main.lua): V.require loads a sibling module +local V = ... + +local ModSetting = V.require("ModSetting") + +local VoxelGrid = {} + +-- the key under options.modOptions.DRAMATIC_SHAPE, shared by the row in +-- OPTIONS and the mod manager's own settings page for this mod +VoxelGrid.KEY = "grid" +VoxelGrid.LABEL = "V-GRID" + +-- How far toward black a seam pulls the surface it cuts across. The +-- wireframe reads as a shading of the model rather than an overlay drawn +-- on top of it, so it darkens what is already there instead of painting a +-- colour -- a seam across dark grass and one across a white roof both stay +-- in the palette they belong to. +VoxelGrid.DARK = 0.45 + +-- Line width, in display pixels. The scene canvas renders at window +-- resolution and composites 1:1, so a canvas pixel IS a display pixel and +-- 1.0 here is the one-pixel wireframe. +VoxelGrid.WIDTH = 1.0 + +-- where it persists and the rows that cycle it (see ModSetting) +VoxelGrid.setting = ModSetting.new(VoxelGrid.KEY, VoxelGrid.LABEL, + { false, true }, { "OFF", "ON" }) + +function VoxelGrid.enabled() + return VoxelGrid.setting:get() and true or false +end + +function VoxelGrid.set(enabled, game) + return VoxelGrid.setting:setIndex(enabled and 2 or 1, game) +end + +function VoxelGrid.toggle(game) + return VoxelGrid.setting:cycle(game) +end + +function VoxelGrid.sync(value) + VoxelGrid.setting:sync(value and true or false) +end + +function VoxelGrid.row() + return VoxelGrid.setting:row() +end + +return VoxelGrid diff --git a/lib/VoxelModels.lua b/lib/VoxelModels.lua new file mode 100644 index 0000000..4cad6f2 --- /dev/null +++ b/lib/VoxelModels.lua @@ -0,0 +1,147 @@ +-- Voxel world mode: character models. +-- +-- Loads the face lists tools/build_voxels.py carves into this mod's own +-- assets/voxels/.lua and turns them into meshes. A face carries the +-- sheet pixel it samples rather than a baked color, so a model textures +-- from the LIVE sprite sheet image -- the very image SpriteRenderer would +-- have drawn. That is what makes RED++ OBJ palette recolors and mod sprite +-- replacements apply to the 3D model with no rebuild and no second copy of +-- the palette logic. +-- +-- A model is geometry alone: it names no sheet, and never points into the +-- player's imported cache (MK301). The sheet comes from the spriteDef the +-- engine already handed us, so the pairing is the engine's, not ours. +-- +-- The carved models ship inside this mod, but another mod may shadow one +-- by dropping overrides/voxels/.lua -- the same overrides/ directory +-- and the same priority order the engine uses for art. Our own copy is the +-- fallback when nothing shadows it. + +-- the mod namespace (see main.lua): V.require loads a sibling module +local V = ... + +local Assets = require("src.render.Assets") +local Voxel3D = V.require("Voxel3D") + +local VoxelModels = {} + +-- Where a model may live, in priority order. A voxel model is this mod's +-- own file type -- the cache never holds one -- so rather than route the +-- lookup through Assets.resolve (which only ever rewrites cache paths, and +-- would mean naming a cache path we have no business naming), we walk the +-- engine's override order ourselves and read the same overrides/ directory +-- it would have read. Highest-priority mod first; our copy last. +local OVERRIDE_DIR = "/overrides/voxels/" +local OWN_DIR = V.path .. "/assets/voxels/" + +-- Assets.loader is nil on a mod-free boot and in the headless harness, in +-- which case nothing can be shadowing anything and our own copy is it. +local function candidates(name) + local paths = {} + local loader = Assets.loader + if loader then + for _, other in ipairs(loader:overrideOrder()) do + paths[#paths + 1] = other.path .. OVERRIDE_DIR .. name .. ".lua" + end + end + paths[#paths + 1] = OWN_DIR .. name .. ".lua" + return paths +end + +local specs = {} -- sprite name -> face-list table, or false +local meshes = {} -- "name#pose" -> mesh, or false + +-- the sprite's own image path -> model name, its basename ("red"). The +-- path is whatever the engine put in the spriteDef; we only read its stem. +local function modelName(spriteDef) + local image = spriteDef and spriteDef.image + if type(image) ~= "string" then return nil end + return image:match("([^/\\]+)%.png$") +end + +-- The carved face list for a sprite, or nil. Missing models are cached as +-- false: a sprite with no model falls back to a flat billboard, and must +-- not re-hit the filesystem every frame to discover that. +function VoxelModels.spec(spriteDef) + local name = modelName(spriteDef) + if not name then return nil end + if specs[name] == nil then + local spec = false + -- first candidate that yields a usable model wins. A candidate that + -- is missing OR fails to load keeps the walk going, so a broken + -- override costs that mod its model, never ours. + for _, path in ipairs(candidates(name)) do + if Assets.exists(path) then + -- love.filesystem, not loadfile: the path may live inside a mounted + -- .love archive or a mod directory, which plain io cannot reach + local ok, chunk = pcall(love.filesystem.load, path) + if ok and chunk then + local good, value = pcall(chunk) + if good and type(value) == "table" and value.poses then + spec = value + break + end + end + end + end + specs[name] = spec + end + return specs[name] or nil +end + +-- Expand a pose's flat face runs into a mesh. Each face is one quad whose +-- four corners share a single texel centre, so every face is flat-shaded +-- from exactly one sheet pixel -- which is what voxel art wants, and side +-- steps filtering bleed at every face edge for free. +local function buildMesh(spec, pose) + local p = spec.poses[pose] + if not p or not p.faces then return nil end + local faces, n = p.faces, p.count or (#p.faces / 6) + local sw, sh = spec.sheetW or 16, spec.sheetH or 16 + local verts, indices = {}, {} + for i = 0, n - 1 do + local b = i * 6 + local x, y, z = faces[b + 1], faces[b + 2], faces[b + 3] + local dir, u, v = faces[b + 4], faces[b + 5], faces[b + 6] + local corners = Voxel3D.FACE_CORNERS[dir] + if corners then + local tu, tv = (u + 0.5) / sw, (v + 0.5) / sh + local shade = Voxel3D.FACE_SHADE[dir] or 1 + for c = 1, 4 do + local o = corners[c] + verts[#verts + 1] = { x + o[1], y + o[2], z + o[3], tu, tv, shade } + end + Voxel3D.pushQuad(indices, #verts / 4 - 1) + end + end + return Voxel3D.newMesh(verts, indices) +end + +-- The mesh for one (sprite, pose). `pose` is "stand" or "walk"; a sheet +-- with no walk frames falls back to its stand model, which is what a +-- 3-frame NPC does in 2D too (it turns to face but never animates). +function VoxelModels.mesh(spriteDef, pose) + local spec = VoxelModels.spec(spriteDef) + if not spec then return nil end + if not spec.poses[pose] then pose = "stand" end + local key = (spec.name or "?") .. "#" .. pose + if meshes[key] == nil then + local ok, mesh = pcall(buildMesh, spec, pose) + meshes[key] = (ok and mesh) or false + end + return meshes[key] or nil +end + +function VoxelModels.size(spriteDef) + local spec = VoxelModels.spec(spriteDef) + return spec and spec.size or 16 +end + +function VoxelModels.invalidate() + specs = {} + meshes = {} +end + +Assets.register(VoxelModels.invalidate) + +return VoxelModels diff --git a/lib/VoxelScene.lua b/lib/VoxelScene.lua new file mode 100644 index 0000000..dc5cd0a --- /dev/null +++ b/lib/VoxelScene.lua @@ -0,0 +1,433 @@ +-- Voxel world mode: assemble and draw one frame of the 3D scene. +-- +-- World space is world pixels and shares its origin with the 2D paths, so +-- the terrain mesh needs no transform at all and a connected map just +-- translates by the same (ox, oy) the flat renderer already offsets it by. +-- +-- Order is: the sun's shadow pass, then terrain, then characters, then a 2D +-- overlay for the field FX. There is no y-sort anywhere -- the depth buffer +-- resolves occlusion, which is the whole point of the mode. Walk behind a +-- building and the building is simply in front. + +-- the mod namespace (see main.lua): V.require loads a sibling module +local V = ... + +local Mat4 = V.require("Mat4") +local Voxel3D = V.require("Voxel3D") +local ShadowMap = V.require("ShadowMap") +local ChunkMesher = V.require("ChunkMesher") +local VoxelModels = V.require("VoxelModels") +local SpriteBillboards = V.require("SpriteBillboards") +local TileShape = V.require("TileShape") +local TerrainAtlas = V.require("TerrainAtlas") + +local VoxelScene = {} + +-- A facing is a yaw about +Y. Models are carved facing +Z (south, "down"), +-- and Mat4.rotateY(+90 deg) maps +Z to +X, so east is +90 and west is -90. +-- Nothing is mirrored: yawing to face east shows the model's east side, +-- which carries the left-view art -- exactly the mirror the 2D game draws +-- for right-facing, arrived at by turning the model instead of flipping it. +local YAW = { + down = 0, + up = math.pi, + right = math.pi / 2, + left = -math.pi / 2, +} + +-- The ground height a cell stands at, so a character on a ledge stands on +-- top of it rather than sunk into it. Uses the same bottom-left collision +-- tile the engine walks on (Map:cellTile). +local function groundAt(map, cellX, cellY) + -- Off the map, cellTile border-extends into the map's borderBlock -- + -- which on maps ringed with trees is a RAISED tile. The only entity + -- ever standing off-map is the player mid seam-step (placed one cell + -- before the connection entry), and the ground actually rendered + -- there is the departed neighbour's flat walkway: height 0. Without + -- this, crossing into such a map hoisted the walker tree-high for + -- exactly one step -- the "hops like a ledge" seam bug. + if not map:inBounds(cellX, cellY) then return 0 end + local shapes = TileShape.forMap(map) + local s = shapes[map:cellTile(cellX, cellY)] + if not s then return 0 end + -- a recessed class (water) still supports whatever stands on it; only + -- raised ground lifts the model. Stairs never do: the class height is + -- the flight's TALL end, but the player enters at floor level and the + -- warp fires as they step in -- lifting them onto the geometry read as + -- climbing an invisible block + if s.art == "stair" then return 0 end + return s.h > 0 and s.h or 0 +end + +-- Model matrix for a 16x16 character whose cell's top-left is world +-- (px, py), standing on ground height `gh`, yawed to `facing`. The yaw is +-- taken about the cell centre, not the model corner, so turning in place +-- keeps the character on its own tile. +local function characterMatrix(px, py, gh, facing, mirror) + local m = Mat4.mul(Mat4.translate(px + 8, gh, py + 8), + Mat4.rotateY(YAW[facing] or 0)) + if mirror then + m = Mat4.mul(m, Mat4.scale(-1, 1, 1)) + end + return Mat4.mul(m, Mat4.translate(-8, 0, -8)) +end + +VoxelScene.characterMatrix = characterMatrix +VoxelScene.YAW = YAW + +-- Character style: "billboard" renders each entity as its current sprite +-- frame voxelized with side-view relief, leaning back toward the camera; +-- "model" is the carved visual-hull figure that turns with its facing. +VoxelScene.style = "billboard" + +-- Camera-ward pull distance for billboards (and the grass rows, which +-- must keep their relative depth to feet): just enough that a leaned-back +-- slab clears the wall it leans over. The lean flattens toward top-down, +-- so the needed pull grows exactly as real occlusion stops mattering. +function VoxelScene.pull(a) + return 6 + math.max(0, 16 * math.cos(a) - 8) / math.max(math.sin(a), 0.2) +end + +-- The sheet frame and mirror flag the 2D path would draw for this pose +-- (same tables as SpriteRenderer). Shared by the billboard pass and the +-- shadow pass so a walking character's shadow swings its legs too. +local function frameFor(def, facing, phase, flip) + local SR = require("src.render.SpriteRenderer") + local frame, mirror = 0, false + if (def.frames or 1) > 1 then + frame = (def.walker and phase == 1) and SR.WALK[facing] + or SR.STAND[facing] + mirror = facing == "right" + or ((facing == "down" or facing == "up") and phase == 1 and flip) + end + return frame, mirror +end + +-- FALLBACK ONLY (see castShadows below). Draw one entity's drop shadow as +-- a decal: its current sprite frame as a single quad, flattened onto the +-- ground along the sun line (Voxel3D.shadowMatrix). Runs inside +-- beginShadows, which supplies the translucent black; the texture is only +-- consulted for its alpha, so no palette work is needed. +local function drawShadow(sprite, px, py, facing, phase, flip, gh, lift) + local def = sprite.def + local frame, mirror = frameFor(def, facing, phase, flip) + local mesh = SpriteBillboards.shadowQuad(def, frame) + if not mesh then return end + Voxel3D.draw(mesh, sprite:resolveImage(), + Voxel3D.shadowMatrix(px, py, gh, lift, mirror)) +end + +-- Draw one posed entity. Returns true if 3D geometry carried it, false +-- when nothing could be built and the caller should fall back. +-- `colors` is the 4-color world palette the entity stands under in the SGB +-- modes (nil under RED++/trueColor): the 2D path colorizes sprites with a +-- screen-space shader the voxel canvas never runs through, so the model's +-- texture gets the palette baked in instead (TerrainAtlas.forSprite). +-- `lift` raises the figure off the ground plane (ledge hops arc UP in 3D, +-- where the 2D path could only slide the sprite north). +local function drawEntity(sprite, px, py, facing, phase, flip, gh, colors, + lift) + local def = sprite.def + local tex = sprite:resolveImage() + if colors and not def.trueColor then + tex = TerrainAtlas.forSprite(def.image, colors) or tex + end + local y = gh + (lift or 0) + + if VoxelScene.style == "billboard" then + -- pick the very frame the 2D path would draw (same tables). The slab + -- always faces SOUTH -- the direction the 2D game implies -- and only + -- LEANS BACK, pivoting at its feet, by exactly the camera's pitch, so + -- at every tilt level the sprite reads face-on like the flat game. + -- No camera-tracking yaw: every sprite leans in parallel. + local frame, mirror = frameFor(def, facing, phase, flip) + local mesh = SpriteBillboards.mesh(def, frame) + if mesh then + local Voxel = V.require("VoxelState") + local pitch = Voxel.angle - math.pi / 2 + -- Camera-ward pull (applied per vertex in the shader, along each + -- vertex's own eye ray, so it is a PURE depth bias with zero screen + -- drift): lets the leaned-back head win against the wall it leans + -- OVER while a character genuinely BEHIND a building is dozens of + -- pixels deeper and still loses, so real occlusion works. + local a = math.max(Voxel.angle, 0.05) + local pull = VoxelScene.pull(a) + local m = Mat4.mul(Mat4.translate(px + 8, y, py + 8), + Mat4.rotateX(pitch)) + if mirror then m = Mat4.mul(m, Mat4.scale(-1, 1, 1)) end + -- the slab is built centered on its sprite plane (z = 0), so only + -- the x anchor shifts; the relief bulges symmetrically front/back + m = Mat4.mul(m, Mat4.translate(-8, 0, 0)) + -- the same slab UNLEANED is what the sun saw (castShadows draws + -- exactly this card), so that is where each vertex asks whether the + -- light reached it -- see Voxel3D.draw + Voxel3D.draw(mesh, tex, m, pull, Voxel3D.casterMatrix(px, py, y, mirror)) + return true + end + -- no pixel access: fall through to the carved model + end + + local mesh = VoxelModels.mesh(def, phase == 1 and "walk" or "stand") + if not mesh then return false end + -- alternate walk steps mirror the down/up frames in 2D (the GB uses an + -- OAM flip); mirroring the model about its own centre is the same idea + local mirror = flip and phase == 1 and (facing == "down" or facing == "up") + Voxel3D.draw(mesh, tex, characterMatrix(px, py, y, facing, mirror)) + return true +end + +VoxelScene.drawEntity = drawEntity + +-- Render the world. `state` is the OverworldState; `vw`/`vh` the world view +-- size in world pixels; `w`/`h` the pixel size of the canvas to render +-- into; `paletteFor(map)` yields a map's 4-color world palette (nil in the +-- color modes whose atlas is already true color). Returns the finished +-- canvas, or nil if the 3D pass could not run (headless, no depth support) +-- so the caller can fall back to 2D. +-- The last live-set key, so eviction only runs when the neighbourhood +-- actually changes (a map crossing), not every frame. +local lastLiveKey = nil + +-- Request everything `state`'s frame wants and evict what it no longer +-- does; returns the current map's terrain mesh (or nil while it builds) +-- and the neighbour meshes ready to draw. render() calls this for the +-- frame it is drawing, and the pipeline's update hook calls it EVERY +-- frame -- including the frames a warp's Transition covers, when the +-- world pass is off. That update-side call is what lets a door fade hide +-- the destination's build: the map swaps behind the fade, and waiting +-- for the first visible frame to request meshes would show the flat +-- fallback while the first slices run. +function VoxelScene.prefetch(state) + local Voxel = V.require("VoxelState") + + -- The live set is the current map plus its rendered neighbours. When + -- it changes, everything outside it (and the previous set, which + -- ChunkMesher retains so stepping into a house keeps the town warm) + -- is evicted -- meshes released, analysis dropped -- so memory stays + -- bounded by the neighbourhood instead of growing with every area + -- ever visited. + local liveKey = state.map.id + local live = { [state.map.id] = true } + for _, nb in ipairs(state.neighbors or {}) do + live[nb.map.id] = true + liveKey = liveKey .. "|" .. nb.map.id + end + if liveKey ~= lastLiveKey then + lastLiveKey = liveKey + ChunkMesher.setLive(live) + -- RED++ bakes one atlas per map, so its animated copy is per map too + -- and is bounded by the same neighbourhood + TerrainAtlas.setLive(live) + end + + -- masks: where connected neighbour BODIES sit, so the border ring is + -- suppressed under them (see runGeometry) + local masks = {} + for _, nb in ipairs(state.neighbors or {}) do + masks[#masks + 1] = { nb.ox, nb.oy, + nb.ox + nb.map.def.width * 32, + nb.oy + nb.map.def.height * 32 } + end + + -- Builds are asynchronous (ChunkMesher.pump runs in the pipeline's + -- update): request what this frame wants and draw what is ready. + -- The current map draws its body-only mesh while the full one (the + -- border ring) is still building -- a seam crossing promotes a + -- neighbour whose body is already cached, and the ring pops in a few + -- frames later, mostly hidden behind the map just left. A neighbour + -- missing its body-only mesh draws its cached FULL mesh instead -- a + -- crossing demotes the map just left, and it must not vanish from + -- behind the player while its body variant builds; its ring is + -- already masked out under this map's body, so the stand-in is safe. + local terrain = ChunkMesher.request(state.map, false, masks, true) + if not terrain then + terrain = ChunkMesher.peek(state.map, true) + end + local nbMesh = {} + for i, nb in ipairs(state.neighbors or {}) do + nbMesh[i] = ChunkMesher.request(nb.map, true) + or ChunkMesher.peek(nb.map, false) + end + Voxel.ready = terrain ~= nil + return terrain, nbMesh +end + +-- Capture every entity's pose for this frame. pose() advances the hop / +-- surf bob / spinner timers, so it must be called EXACTLY once per entity +-- per frame -- the sun pass and the character pass then read the same +-- answer instead of disagreeing by a tick. Ghost NPCs live on a neighbour +-- map, so their position, ground lookup and palette all belong to that +-- map. pose() returns the VISUAL y (ledge hops arc it, surfing bobs it); +-- the difference from the entity's base y becomes vertical LIFT in 3D, so +-- a hop rises off the ground instead of sliding north. +local function posesOf(state, spriteColors) + local colors = spriteColors(state.map) + local posed = {} + for _, g in ipairs(state.ghosts or {}) do + local sprite, vx, vy, facing, phase, flip = g.npc:pose() + posed[#posed + 1] = { + sprite = sprite, px = vx + g.ox, py = g.npc.py + g.oy, + facing = facing, phase = phase, flip = flip, + gh = groundAt(g.map or state.map, g.npc.cellX, g.npc.cellY), + lift = g.npc.py - vy, colors = spriteColors(g.map or state.map), + } + end + for _, e in ipairs(state.entities or {}) do + if not (state.flyAnim and e == state.player) then + local sprite, vx, vy, facing, phase, flip = e:pose() + posed[#posed + 1] = { + sprite = sprite, px = vx, py = e.py, + facing = facing, phase = phase, flip = flip, + gh = groundAt(state.map, e.cellX, e.cellY), + lift = e.py - vy, colors = colors, + } + end + end + return posed +end + +-- A stamp of everything the sun pass depends on. Nothing in it moving +-- means the shadow map it produced last frame is still exactly right, and +-- redrawing the whole world from the sun would buy nothing -- which is +-- most of a dialog, a menu, or any moment standing still. +local sigBuf = {} +local function shadowSignature(terrain, nbMesh, posed, cx, cy, vw, vh) + local n = 0 + local function put(v) + n = n + 1 + sigBuf[n] = v + end + -- quarter-pixel camera granularity: the light frustum is snapped to + -- whole texels anyway, each a third of a world pixel + put(math.floor(cx * 4)) + put(math.floor(cy * 4)) + -- the view size and the camera PITCH are both what the light frustum is + -- fitted to (a lower camera sees further north, so the box grows), so a + -- zoom step, a window resize or a rung change invalidates the map even + -- standing perfectly still + put(vw); put(vh) + put(math.floor((V.require("VoxelState").angle or 0) * 512)) + put(tostring(terrain)) + for i = 1, #nbMesh do put(tostring(nbMesh[i])) end + for _, p in ipairs(posed) do + put(p.sprite.def.image) + put(p.px); put(p.py); put(p.gh); put(p.lift or 0) + put(p.facing); put(p.phase); put(p.flip and 1 or 0) + end + for i = n + 1, #sigBuf do sigBuf[i] = nil end + return table.concat(sigBuf, ",") +end + +-- The sun pass: render the scene once from the light, so the main pass can +-- ask any fragment whether the sun reached it. Every caster the main pass +-- draws goes in -- the terrain mesh, which is where buildings, trees, +-- ledges, signs and every prop live, plus one UPRIGHT card per character +-- (Voxel3D.casterMatrix; the leaning slab is a trick for the camera, not +-- for the sun) -- so shadows land on walls, roofs, ledges and passing NPCs +-- as readily as on the floor. +-- +-- Runs BEFORE Voxel3D.beginScene, because canvases do not nest. Grass is +-- left out on purpose: thousands of tufts would cast a speckle no bigger +-- than the pixels it lands on, at the cost of the mesh being drawn twice. +local function castShadows(state, terrain, nbMesh, posed, cx, cy, vw, vh, + atlasFor) + if not ShadowMap.available() then return end + local sig = shadowSignature(terrain, nbMesh, posed, cx, cy, vw, vh) + if not ShadowMap.stale(sig) then return end + if not ShadowMap.begin(cx, cy, vw, vh) then return end + + ShadowMap.draw(terrain, atlasFor(state.map), nil) + for i, nb in ipairs(state.neighbors or {}) do + ShadowMap.draw(nbMesh[i], atlasFor(nb.map), + Mat4.translate(nb.ox, 0, nb.oy)) + end + for _, p in ipairs(posed) do + local def = p.sprite.def + local frame, mirror = frameFor(def, p.facing, p.phase, p.flip) + local mesh = SpriteBillboards.shadowQuad(def, frame) + if mesh then + ShadowMap.draw(mesh, p.sprite:resolveImage(), + Voxel3D.casterMatrix(p.px, p.py, p.gh + (p.lift or 0), + mirror)) + end + end + + ShadowMap.finish(sig) +end + +function VoxelScene.render(state, w, h, vw, vh, paletteFor) + -- With nothing cached at all (the first frame of a fresh toggle), + -- return nil: the engine keeps the 2D path for the frame and + -- Voxel.ready holds the camera tween at flat, so the switch waits + -- invisibly instead of freezing or tilting an empty stage. + local terrain, nbMesh = VoxelScene.prefetch(state) + if not terrain then return nil end + + local cam = state.camera + local cx, cy = cam.x + vw / 2, cam.y + vh / 2 + + local function atlasFor(map) + return TerrainAtlas.forMap(map, paletteFor and paletteFor(map) or nil) + end + + -- sprite palettes only exist in the SGB modes; under RED++ the OBP bake + -- inside sprite:resolveImage() already colors the sheet + local PaletteFX = require("src.render.PaletteFX") + local function spriteColors(map) + if PaletteFX.usesGbcPack() then return nil end + return paletteFor and paletteFor(map) or nil + end + + local posed = posesOf(state, spriteColors) + castShadows(state, terrain, nbMesh, posed, cx, cy, vw, vh, atlasFor) + + if not Voxel3D.beginScene(w, h, cx, cy, vw, vh) then return nil end + + Voxel3D.draw(terrain, atlasFor(state.map), nil) + for i, nb in ipairs(state.neighbors or {}) do + Voxel3D.draw(nbMesh[i], atlasFor(nb.map), + Mat4.translate(nb.ox, 0, nb.oy)) + end + + -- Without a shadow map (headless, or a driver that could not make the + -- canvas) the old flat decals stand in: ground-only, characters only, + -- but better than a world with nothing under anybody. They go down + -- first, as decals the characters then stand over -- depth-tested + -- against the terrain just drawn (a shadow behind a building stays + -- hidden) but never depth-writing, so the grass pass at the end of the + -- frame still wins its feet-overdraw fights. + if not Voxel3D.shadowsActive() then + Voxel3D.beginShadows() + for _, p in ipairs(posed) do + drawShadow(p.sprite, p.px, p.py, p.facing, p.phase, p.flip, p.gh, + p.lift) + end + Voxel3D.endShadows() + end + + -- characters, normally depth-tested: the camera-ward pull inside + -- drawEntity resolves the lean-over-the-wall-in-front case, and a + -- character genuinely behind a building is far deeper and loses the + -- test, so buildings and trees really occlude. + for _, p in ipairs(posed) do + drawEntity(p.sprite, p.px, p.py, p.facing, p.phase, p.flip, p.gh, + p.colors, p.lift) + end + -- tall grass last, pulled camera-ward exactly as far as the characters + -- were (same per-vertex shader bias, so grass never drifts either): + -- relative depth between a walker and the tuft row south of their feet + -- is preserved, so the row still overdraws feet -- the 3D version of + -- the GB's grass-over-feet trick -- while grass keeps losing to the + -- buildings it genuinely stands behind (far deeper than the pull). + local Voxel = V.require("VoxelState") + local pull = VoxelScene.pull(math.max(Voxel.angle, 0.05)) + Voxel3D.draw(ChunkMesher.grass(state.map), atlasFor(state.map), nil, pull) + for _, nb in ipairs(state.neighbors or {}) do + Voxel3D.draw(ChunkMesher.grass(nb.map), atlasFor(nb.map), + Mat4.translate(nb.ox, 0, nb.oy), pull) + end + + return Voxel3D.endScene() +end + +return VoxelScene diff --git a/lib/VoxelState.lua b/lib/VoxelState.lua new file mode 100644 index 0000000..38a920b --- /dev/null +++ b/lib/VoxelState.lua @@ -0,0 +1,111 @@ +-- Voxel world mode: the camera angle and its tween. +-- +-- Deliberately the same shape as src/render/Tilt.lua -- level 0 is off and +-- 1..3 are the same 15/35/50 degree ladder, eased the same way. What +-- differs is what the renderer does with the angle: tilt projects the flat +-- world canvas as one rigid plane, voxel mode drives a real 3D camera over +-- extruded terrain and voxel character models. +-- +-- And because it is a real camera over real geometry, it has a rung tilt +-- could never have: 75 degrees, low enough to read as a diorama shot from +-- table height. Tilt's flat plane degenerates into a horizon line there, +-- but geometry only gets more of itself to show. +-- +-- The LEVEL is not ours. The engine's render_pipelines plumbing owns it -- +-- the options row, the hotkey, the ladder labels, persistence in +-- save.options.pipelines.voxel, and the mutual exclusion with tilt -- and +-- hands it to update() every frame. All this module keeps is the eased +-- ANGLE that level implies, because the tween is renderer state and only +-- the renderer knows what to do with a half-raised camera. +-- +-- Purely presentational, like tilt and survey zoom: nothing here reaches +-- collision, movement, triggers or scripts. + +local Voxel = {} + +Voxel.ANGLES_DEG = { 0, 15, 35, 50, 75 } +Voxel.ANGLE_LABELS = { "OFF", "15", "35", "50", "75" } +Voxel.MAX_LEVEL = #Voxel.ANGLES_DEG - 1 + +Voxel.level = 0 +Voxel.angle = 0 +Voxel.from = 0 +Voxel.goal = 0 +Voxel.t = 1 + +-- Whether the scene has terrain to show for the current map. VoxelScene +-- maintains it every frame; while the first mesh of a fresh toggle is +-- still building, update() holds the camera tween at flat -- the 2D +-- fallback IS the flat pose, so the switch waits invisibly instead of +-- tilting an empty stage (or, before builds went asynchronous, freezing +-- the whole frame for seconds). +Voxel.ready = true + +Voxel.TWEEN_TIME = 0.25 +-- Camera distance as a multiple of the view height, and the matching field +-- of view. Kept equal to Tilt.FOCAL so a given angle frames the world the +-- same way in both modes; Voxel3D derives the FOV from it. +Voxel.FOCAL = 1.0 + +local function ease(t) + return t * t * (3 - 2 * t) +end + +local function goalFor(level) + return math.rad(Voxel.ANGLES_DEG[level + 1] or 0) +end + +function Voxel.setLevel(level) + level = math.floor(tonumber(level) or 0) + if level < 0 then level = 0 end + if level > Voxel.MAX_LEVEL then level = Voxel.MAX_LEVEL end + local goal = goalFor(level) + if goal ~= Voxel.goal or level ~= Voxel.level then + Voxel.from = Voxel.angle + Voxel.goal = goal + Voxel.t = 0 + -- leaving flat: presume no terrain until the scene reports some, so + -- the tween's very first frame already waits instead of easing over + -- an empty stage (render() confirms readiness the same frame when + -- the meshes are already cached) + if Voxel.angle == 0 and goal > 0 then Voxel.ready = false end + end + Voxel.level = level +end + +function Voxel.reset() + Voxel.level, Voxel.angle = 0, 0 + Voxel.from, Voxel.goal, Voxel.t = 0, 0, 1 +end + +function Voxel.levelLabel(level) + return Voxel.ANGLE_LABELS[(level or Voxel.level) + 1] or "OFF" +end + +-- The pipeline's per-frame tick. `level` is what the engine currently has +-- the mode set to, so a hotkey press or an options row lands here as a new +-- goal to ease toward rather than as a jump. dt is real frame time, so +-- fast-forward does not speed the camera up. +function Voxel.update(dt, level) + if level ~= nil and level ~= Voxel.level then Voxel.setLevel(level) end + -- hold at flat until there is geometry to tilt over; easing OUT (goal + -- below the current angle) never waits + if Voxel.angle == 0 and Voxel.goal > 0 and not Voxel.ready then + return + end + if Voxel.t < 1 then + Voxel.t = math.min(1, Voxel.t + dt / Voxel.TWEEN_TIME) + Voxel.angle = Voxel.from + (Voxel.goal - Voxel.from) * ease(Voxel.t) + else + Voxel.angle = Voxel.goal + end +end + +-- True while voxel mode is on *or* still easing out -- i.e. whenever the +-- renderer must take the 3D path instead of the flat blit. Mirrors +-- Tilt.active so the two gate the same way. +function Voxel.active() + return Voxel.level > 0 or Voxel.angle > 0 +end + +return Voxel diff --git a/lib/WorldCurve.lua b/lib/WorldCurve.lua new file mode 100644 index 0000000..7abc6f7 --- /dev/null +++ b/lib/WorldCurve.lua @@ -0,0 +1,101 @@ +-- Voxel world mode: the curved world -- the Animal Crossing horizon. +-- +-- Every vertex is pushed DOWN by the square of its horizontal distance from +-- the camera's focus: +-- +-- y' = y - k * ((x - cx)^2 + (z - cz)^2) +-- +-- and that is the whole effect. The ground you are standing on stays flat +-- (a quadratic is nearly zero near its vertex -- at half a tile out the drop +-- is a hundredth of a pixel), and the falloff accelerates with distance, so +-- the far edge of the map bends away and rolls over a near horizon. The +-- town reads as sitting on top of a small sphere. +-- +-- WHAT IT IS NOT is a fisheye. A fisheye is a LENS -- a screen-space +-- warp -- and it bends straight lines everywhere, including right in front +-- of the player, and resamples every pixel to do it. On pixel art that +-- means a blurred, crawling image and a bent HUD. This bends the WORLD +-- instead: one line in the vertex shader, straight lines near the camera +-- stay straight, and not a single pixel is resampled, so the art stays as +-- crisp as it was. +-- +-- Two properties are what keep it readable rather than nauseating, and both +-- fall out of displacing along Y only: +-- +-- Things stay UPRIGHT. The drop depends on where a column stands, not on +-- how tall it is, so a building's whole column moves together -- the +-- world tips away, the buildings on it do not lean. +-- Shadows and the voxel grid RIDE ALONG. Both are worked out before the +-- bend -- the shadow map in flat world space, the wireframe in model +-- space -- so the bend carries them with it exactly as if it had been +-- painted on. Nothing has to be recomputed and the light frustum never +-- moves. +-- +-- The strength is scaled by the VIEW HEIGHT, so a rung looks the same at +-- every zoom: `amount` is the drop, in view-heights, one view-height out. + +-- the mod namespace (see main.lua): V.require loads a sibling module +local V = ... + +local ModSetting = V.require("ModSetting") + +local WorldCurve = {} + +WorldCurve.KEY = "curve" +WorldCurve.LABEL = "V-CURVE" + +-- The ladder, calibrated against the FAR EDGE of the visible ground -- a +-- little over two view-heights out at the low camera rungs. Since the drop +-- goes as the square, that edge falls `amount * 4` view-heights while the +-- ground within a screen of the player barely moves, which is the whole +-- shape of the effect: flat where you are playing, rolling where you are +-- only looking. +-- +-- 1 is a hint of roll at the frame edges, 2 is the Animal Crossing read, +-- 3 is as far as it goes before the horizon closes inside the next block +-- of the town -- which stops being a look and starts being an occlusion +-- bug, since what has rolled away is still there to walk into. (The first +-- cut ran 0.18/0.35/0.60 and every rung of it was a marble.) +WorldCurve.AMOUNTS = { 0, 0.05, 0.10, 0.18 } + +WorldCurve.setting = ModSetting.new(WorldCurve.KEY, WorldCurve.LABEL, + { 0, 1, 2, 3 }, + { "OFF", "1", "2", "3" }) + +function WorldCurve.level() + return WorldCurve.setting:get() or 0 +end + +function WorldCurve.active() + return WorldCurve.level() > 0 +end + +-- The quadratic's coefficient for a view `vh` world pixels tall: the drop +-- in world pixels per squared world pixel of distance. Zero when off, which +-- is also the shader's "skip it" signal. +function WorldCurve.k(vh) + local amount = WorldCurve.AMOUNTS[WorldCurve.level() + 1] or 0 + if amount <= 0 or not vh or vh <= 0 then return 0 end + return amount / vh +end + +-- The same displacement the vertex shader applies, for the callers that +-- have to agree with it on the CPU -- Voxel3D.project, which anchors the +-- overworld's 2D field FX (the "!" bubble, the fishing rod, the Fly bird) +-- to their ground points. Miss this and every one of them floats off its +-- own feet the moment the ground under it bends. +function WorldCurve.drop(k, cx, cy, wx, wz) + if k <= 0 then return 0 end + local dx, dz = wx - cx, wz - cy + return (dx * dx + dz * dz) * k +end + +function WorldCurve.row() + return WorldCurve.setting:row() +end + +function WorldCurve.sync(value) + WorldCurve.setting:sync(value) +end + +return WorldCurve diff --git a/main.lua b/main.lua new file mode 100644 index 0000000..fca7d13 --- /dev/null +++ b/main.lua @@ -0,0 +1,248 @@ +-- Dramatic Shape Voxel Mod: a full 3D diorama overworld, shipped as a +-- rendering pipeline mod. +-- +-- The engine's render_pipelines registry (src/mods/Schemas.lua) lets a mod +-- own part of the frame. This mod registers two: +-- +-- voxel a drawWorld pipeline. Instead of the flat tile blit, the +-- overworld's terrain is extruded into real geometry, walked +-- by a depth-buffered 3D camera, with characters as leaning +-- sprite slabs and a shadow map throwing real cast shadows +-- across whatever they land on. Occlusion is the depth +-- buffer, not a y-sort: walk behind a building and the +-- building is simply in front. +-- +-- tiltshift a worldPresent pipeline -- the stage that post-processes +-- the finished world BEFORE the UI composites over it. A +-- tilt-shift blur that sells the miniature-model look, on the +-- diorama only, leaving text boxes and menus crisp. +-- +-- Everything a display mode needs beyond the two draw functions -- the +-- OFF/15/35/50 ladder, the options rows, the hotkeys, persistence in +-- save.options.pipelines, the free-roam gate, the mutual exclusion with +-- the engine's TILT mode -- is engine plumbing driven by the records +-- below. This file declares; lib/ draws. +-- +-- Nothing here reaches collision, movement, triggers or scripts. Voxel +-- mode is purely presentational: it changes what the world LOOKS like and +-- nothing about what it IS. + +local mod = ... + +-- ------- the mod namespace +-- +-- lib/ modules require each other through V rather than package.path: a +-- mod directory is not on it, and may live inside a mounted .love archive +-- that plain require cannot reach. Each module is loaded once, with V +-- passed in as its vararg (`local V = ...`). + +local V = { mod = mod, path = mod.path } + +local function chunkFor(rel) + local source = mod:read(rel) + if not source then + error(("DRAMATIC_SHAPE: %s is missing -- reinstall the mod"):format(rel), 0) + end + local chunk, err = load(source, "@" .. mod.path .. "/" .. rel) + if not chunk then + error(("DRAMATIC_SHAPE: %s did not compile: %s"):format(rel, tostring(err)), 0) + end + return chunk +end + +local modules = {} +function V.require(name) + local hit = modules[name] + if hit ~= nil then return hit end + local value = chunkFor("lib/" .. name .. ".lua")(V) + modules[name] = value + return value +end + +local dataFiles = {} +function V.data(name) + local hit = dataFiles[name] + if hit ~= nil then return hit end + local value = chunkFor("data/" .. name .. ".lua")(V) + dataFiles[name] = value + return value +end + +-- ------- pipelines + +local Voxel = V.require("VoxelState") +local Voxel3D = V.require("Voxel3D") +local VoxelScene = V.require("VoxelScene") +local TiltShift = V.require("TiltShift") +local ChunkMesher = V.require("ChunkMesher") +local VoxelGrid = V.require("VoxelGrid") +local WorldCurve = V.require("WorldCurve") + +-- The last VOID FILL the terrain was meshed under; see the update hook. +local voidFill = { last = nil } +function voidFill.check() + local TileRenderer = require("src.render.TileRenderer") + local now = TileRenderer.voidFill + if voidFill.last ~= nil and now ~= voidFill.last then + ChunkMesher.invalidate() -- no map id: every ring on every map is stale + end + voidFill.last = now +end + +mod.content.render_pipelines:register("voxel", { + label = "VOXEL", + levels = Voxel.ANGLE_LABELS, + -- 2/3/4/5 are the engine's own display hotkeys + hotkey = "6", + -- above tiltshift, so the two sort together in the options list with the + -- mode first and its post-process under it + priority = 20, + + -- Headless runs and drivers without a depth canvas or shader support + -- answer false here, and the engine keeps the vanilla 2D path -- which + -- is why no caller ever has to guard for a missing 3D pass. + available = function() + return Voxel3D.available() + end, + + -- the engine hands over the live level; we ease the camera toward it. + -- pump() advances queued mesh builds inside a few-millisecond budget, + -- so entering voxel mode (and streaming neighbours while walking) + -- costs frames nothing visible -- the old synchronous build froze the + -- first frame for seconds. prefetch() runs here as well as in the + -- draw, because update ticks even while a warp's Transition covers + -- the screen: the destination's meshes start building the moment the + -- map swaps behind the fade, and the fade-covered frames get a wider + -- pump slice -- so stepping out of a door lands on terrain that is + -- already there instead of a flat flash. + update = function(dt, level) + Voxel.update(dt, level) + -- VOID FILL picks the block the border ring is made of, and in this + -- mode that ring is BAKED INTO THE MESH rather than drawn each frame. + -- So the option has to reach the cache or nothing happens on screen + -- until the meshes are dropped for some other reason -- which reads + -- exactly like the option doing nothing at all. Polled rather than + -- hooked because the engine changes it from three places (the options + -- row, applyOptions on load, TileRenderer.setVoidFill) and none of + -- them announces it. Ahead of the active() gate, so switching it + -- while voxel mode is OFF still invalidates what is cached. + voidFill.check() + if not Voxel.active() then return end + local Game = require("src.core.Game") + local ow = Game and Game.overworld + if ow and ow.map and ow.camera then + pcall(VoxelScene.prefetch, ow) + end + ChunkMesher.pump(Game and Game.stack + and Game.stack:top() ~= ow) + end, + + drawWorld = function(ctx) + -- Terrain and characters are geometry; the field FX stay ordinary 2D + -- draws composited on top, anchored through the same camera the 3D + -- pass used (ctx.drawFx below). The scene renders at window + -- resolution so the 3D pass is crisp rather than a magnified low-res + -- image, while the FX closures keep drawing in world-pixel units. + local canvas = VoxelScene.render(ctx.state, ctx.width, ctx.height, + ctx.vw, ctx.vh, ctx.paletteFor) + if not canvas then return nil end -- fall back to the 2D path + if Voxel3D.beginOverlay() then + ctx.drawFx(function(wx, wy) return Voxel3D.project(wx, 0, wy) end, + ctx.scale) + Voxel3D.endOverlay() + end + return canvas + end, + + invalidate = function() + Voxel3D.invalidate() + ChunkMesher.invalidate() -- no map id = every cached mesh + end, +}) + +mod.content.render_pipelines:register("tiltshift", { + label = "T-SHIFT", + levels = TiltShift.LABELS, + hotkey = "9", + priority = 10, + + update = function(dt, level) + TiltShift.update(dt, level) + end, + + -- worldPresent, not present: the blur belongs on the diorama, not on the + -- dialog box in front of it. A pass-through when the level is 0 or the + -- shader is unavailable, so the frame is untouched in every other case. + worldPresent = function(canvas) + return TiltShift.apply(canvas) + end, + + invalidate = function() + TiltShift.invalidate() + end, +}) + +-- ------- this mod's own settings +-- +-- Neither of these is a pipeline: they own no pass of the frame, they +-- PARAMETERISE the voxel one, so they have nothing to put in drawWorld or +-- present and the registry would rightly reject them. Plain mod settings +-- instead -- see ModSetting for where they persist and how the two rows +-- each ends up on stay in step. + +local SETTINGS = { + { VoxelGrid.setting, "One-pixel wireframe along every voxel edge." }, + { WorldCurve.setting, + "Bend the world down over the horizon, Animal Crossing style." }, +} + +local schema = {} +for i, entry in ipairs(SETTINGS) do + schema[i] = entry[1]:schema(entry[2]) +end +mod.options:define(schema) + +-- call next() first and decorate what comes back, so every other mod's +-- rows survive this one +mod.hooks:wrap("ui.options.rows", function(next, game, rows) + local out = next(game, rows) + if type(out) ~= "table" then return out end + for _, entry in ipairs(SETTINGS) do + out[#out + 1] = entry[1]:row() + end + return out +end) + +-- The mod manager writes and persists on its own, so the only thing left +-- to do is move our cached index and pick the new value up. +mod.events:on("mod.options_changed", function(payload) + if not (payload and payload.mod == mod.id) then return end + for _, entry in ipairs(SETTINGS) do + if payload.key == entry[1].key then entry[1]:sync(payload.value) end + end +end) + +-- ------- keeping the geometry in step with the world +-- +-- Terrain meshes are derived from a map's block layer, so anything that +-- rewrites a block (a cut tree, a smashed rock, a script's replaceBlock) +-- has to drop that map's cached mesh or the 3D world keeps showing the +-- tree that is no longer there. The 2D tile renderer invalidates its own +-- caches off the same edit. + +mod.events:on("world.block_replaced", function(payload) + local mapId = payload and (payload.mapId or (payload.map and payload.map.id)) + if mapId then ChunkMesher.invalidate(mapId) end +end) + +-- A reloaded map is rebuilt from scratch (palette pack switches, warps +-- that re-enter the same map), so its mesh is stale for the same reason. +mod.events:on("map.reloaded", function(payload) + local mapId = payload and (payload.mapId or (payload.map and payload.map.id)) + if mapId then ChunkMesher.invalidate(mapId) end +end) + +mod.exports.version = "1.0.0" +-- exposed so a companion mod can pin its own tiles' shapes or read the +-- camera without reaching into this mod's file layout +mod.exports.lib = V diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..eae4ca9 --- /dev/null +++ b/manifest.json @@ -0,0 +1,17 @@ +{ + "id": "DRAMATIC_SHAPE", + "name": "Dramatic Shape Voxel Mod", + "version": "1.0.0", + "api": 2, + "entry": "main.lua", + "profile": "content", + "category": "GRAPHICS", + "game_version": "<2.0.0", + "priority": 100, + "dependencies": [], + "optional_dependencies": [], + "conflicts": [], + "permissions": ["engine_internals"], + "affects_link": false, + "description": "A full 3D diorama overworld: extruded terrain, depth-buffered occlusion, voxel characters and a tilt-shift miniature pass. Registers two render pipelines (hotkeys 6 and 9); presentational only." +} diff --git a/mod.card b/mod.card new file mode 100644 index 0000000..7b442b5 --- /dev/null +++ b/mod.card @@ -0,0 +1,30 @@ +-- Sharing metadata (25-community-and-ecosystem.md 3.2). Read by tooling +-- and the manager detail pane; never by the loader's merge. +return { + summary = "The overworld as a 3D diorama: extruded terrain, real occlusion, voxel characters, tilt-shift miniature blur.", + author = "Pokemon Gen 1 Recompilation Project", + contact = "https://github.com/bryanthaboi/pokemon-gen1-recomp-project", + tags = { "graphics", "3d", "voxel", "render-pipeline", "presentation" }, + differences = { + changed = { + "with VOXEL on, the overworld draws as 3D geometry instead of flat tiles", + "occlusion comes from a depth buffer rather than a y-sort, so buildings really hide what is behind them", + "VOXEL and the engine's TILT are mutually exclusive -- turning one on switches the other off", + }, + added = { + "VOXEL options row and hotkey 6 (OFF / 15 / 35 / 50 degrees)", + "T-SHIFT options row and hotkey 9 (OFF / 1 / 2 / 3), the miniature blur", + "carved voxel models for 67 overworld sprites (assets/voxels/)", + "a hand-authored tile shape profile (data/voxel_heights.lua) a mod can extend", + }, + known = { + "needs shader and depth-canvas support; without them the row still cycles but the world stays 2D", + "battles, menus and cutscenes are unaffected -- the mode only draws the free-roam overworld", + "terrain meshes are cached per map, so the first frame after entering a large map costs a build", + }, + }, + credits = { + { who = "pret/pokered", for_ = "the tile and sprite data the geometry is derived from" }, + }, + compat = { engine = ">=0.1.0 <2.0.0", modApi = 2 }, +} diff --git a/tests/dramatic_shape_test.lua b/tests/dramatic_shape_test.lua new file mode 100644 index 0000000..e26b46a --- /dev/null +++ b/tests/dramatic_shape_test.lua @@ -0,0 +1,173 @@ +-- Dramatic Shape Voxel Mod's own SDK suite: the mod loads clean, both +-- render pipelines land in the "render_pipelines" registry with the shape +-- the engine dispatches on, and the whole thing stays inert on a machine +-- that cannot run the 3D pass (which is exactly what the headless harness +-- is). + +package.path = "./?.lua;./?/init.lua;" .. package.path + +local T = require("tests.modkit") +local Pipelines = require("src.render.Pipelines") + +local Data = T.fixtures.load() +local run = T.sdk.loadMod("mods/DRAMATIC_SHAPE", { data = Data }) + +T.eq(#run.errors, 0, + "DRAMATIC_SHAPE loads clean: " .. table.concat(run.errors, "; ")) + +-- Game:load does this after the merge; the SDK harness merges into a +-- fixture dataset instead, so point the dispatcher at that one. +Pipelines.install(Data) + +-- ------- the records reached the registry + +local defs = Data.render_pipelines +T.check(type(defs) == "table", "the merge created the render_pipelines namespace") +T.check(type(defs.voxel) == "table", "the voxel pipeline is registered") +T.check(type(defs.tiltshift) == "table", "the tiltshift pipeline is registered") + +T.eq(defs.voxel.label, "VOXEL", "voxel carries its options-row label") +T.eq(defs.tiltshift.label, "T-SHIFT", "tiltshift carries its options-row label") +T.eq(defs.voxel.hotkey, "6", "voxel claims hotkey 6") +T.eq(defs.tiltshift.hotkey, "9", "tiltshift claims hotkey 9") +T.check(type(defs.voxel.drawWorld) == "function", + "voxel is a world pipeline (drawWorld)") +T.check(type(defs.tiltshift.worldPresent) == "function", + "tiltshift is a world post-process (worldPresent)") +T.check(defs.tiltshift.drawWorld == nil, + "tiltshift does not claim the world pass") + +-- provenance: a callback that throws at play time must be attributable to +-- this mod, not reported as an engine fault +T.eq(defs._owners and defs._owners.voxel, "DRAMATIC_SHAPE", + "the merge stamped the pipeline's owning mod") + +-- ------- the ladders the engine drives + +T.eq(#defs.voxel.levels, 5, "voxel exposes a five-rung ladder") +T.eq(defs.voxel.levels[1], "OFF", "rung 0 is OFF") +T.eq(defs.voxel.levels[5], "75", "the top rung is the 75-degree camera") +T.eq(Pipelines.maxLevel("voxel"), 4, "the engine reads the ladder height") +T.eq(Pipelines.levelLabel("voxel", 2), "35", "the engine reads the rung labels") + +-- ------- gating: inert until switched on, and inert without a GPU + +T.eq(Pipelines.level("voxel"), 0, "the mode starts switched off") +T.eq(Pipelines.worldPipeline(), nil, + "nothing owns the world pass while every pipeline is off") + +Pipelines.setLevel("voxel", 2) +T.eq(Pipelines.level("voxel"), 2, "the engine can set the mode's level") +-- the headless love stub has no depth canvas, so `available` says no and +-- the engine keeps the vanilla 2D path -- the property that makes the mod +-- safe to ship enabled +T.eq(Pipelines.worldPipeline(), nil, + "an unavailable pipeline never takes the world pass") + +-- one world pipeline at a time, and never alongside the engine's tilt +local Tilt = require("src.render.Tilt") +Tilt.setLevel(3) +Pipelines.setLevel("voxel", 1) +T.eq(Tilt.level, 0, "switching a world pipeline on switches TILT off") + +-- a post-process is not a world pipeline, so it composes with tilt +Tilt.setLevel(2) +Pipelines.setLevel("tiltshift", 3) +T.eq(Tilt.level, 2, "a worldPresent pipeline leaves TILT alone") + +-- ------- persistence round-trip + +local opts = { tilt = 0, pipelines = {} } +Pipelines.syncOptions(opts) +T.eq(opts.pipelines.voxel, 1, "the level is written back to save.options") +T.eq(opts.pipelines.tiltshift, 3, "every pipeline's level is written back") + +Pipelines.reset() +T.eq(Pipelines.level("voxel"), 0, "reset clears the live levels") +Pipelines.applyOptions(opts) +T.eq(Pipelines.level("voxel"), 1, "a restored save restores the mode") +T.eq(Pipelines.level("tiltshift"), 3, "a restored save restores the blur") + +-- ------- the options rows the menu splices in + +local rows = Pipelines.rows({ save = { options = opts } }) +T.eq(#rows, 2, "each pipeline contributes exactly one options row") +local byLabel = {} +for _, row in ipairs(rows) do byLabel[row.label] = row end +T.check(byLabel.VOXEL ~= nil, "the VOXEL row is offered") +T.check(byLabel["T-SHIFT"] ~= nil, "the T-SHIFT row is offered") +T.eq(byLabel.VOXEL.value(), "15", "the row renders the current rung's label") + +-- ------- this mod's own settings +-- +-- Neither is a pipeline (they parameterise the voxel pass rather than +-- owning one), so they reach the same menu through the ui.options.rows +-- hook, and store themselves where the mod manager's settings page looks. + +local Runtime = require("src.mods.Runtime") +local hookedRows = Runtime.call("ui.options.rows", function(_, r) return r end, + { data = Data }, { { id = "text_speed" } }) +T.eq(#hookedRows, 3, "the options hook added a row per setting") +local grid, curve = hookedRows[2], hookedRows[3] +T.eq(grid.label, "V-GRID", "the grid row carries its label") +T.eq(grid.value(), "OFF", "the grid starts off") +T.eq(curve.label, "V-CURVE", "the curve row carries its label") +T.eq(curve.value(), "OFF", "the curve starts off") + +-- stepping writes through to the one place both rows read +local settingGame = { save = { options = {} }, mods = { modOptions = {} } } +grid.step(settingGame) +T.eq(grid.value(), "ON", "stepping the row toggles the grid") +T.eq(settingGame.save.options.modOptions.DRAMATIC_SHAPE.grid, true, + "the toggle lands in options.modOptions, where the mod manager reads it") +T.eq(settingGame.mods.modOptions.DRAMATIC_SHAPE.grid, true, + "and in the loader's live copy, which mod.options:get reads") +grid.step(settingGame) +T.eq(grid.value(), "OFF", "stepping again toggles it back") + +-- the curve is a four-rung ladder rather than a toggle, and wraps +curve.step(settingGame, 1) +T.eq(curve.value(), "1", "stepping the curve climbs its ladder") +T.eq(settingGame.save.options.modOptions.DRAMATIC_SHAPE.curve, 1, + "the curve level persists alongside the grid, not over it") +T.eq(settingGame.save.options.modOptions.DRAMATIC_SHAPE.grid, false, + "and the grid it shares a bucket with is untouched") +curve.step(settingGame, 1) +curve.step(settingGame, 1) +T.eq(curve.value(), "3", "the ladder reaches its top rung") +curve.step(settingGame, 1) +T.eq(curve.value(), "OFF", "and wraps back to OFF") +curve.step(settingGame, -1) +T.eq(curve.value(), "3", "stepping down from OFF wraps to the top") +curve.step(settingGame, 1) + +-- the strength scales with the view height, so a rung looks the same at +-- every zoom -- and is exactly zero when the setting is off +local WorldCurve = run.loader.exports.DRAMATIC_SHAPE.lib.require("WorldCurve") +T.eq(WorldCurve.k(154), 0, "an OFF curve bends nothing") +curve.step(settingGame, 1) +T.check(math.abs(WorldCurve.k(154) - WorldCurve.AMOUNTS[2] / 154) < 1e-9, + "rung 1's coefficient is its amount over the view height") +T.check(WorldCurve.AMOUNTS[2] < WorldCurve.AMOUNTS[3] + and WorldCurve.AMOUNTS[3] < WorldCurve.AMOUNTS[4], + "the ladder climbs") +T.check(math.abs(WorldCurve.k(308) * 2 - WorldCurve.k(154)) < 1e-9, + "halving the zoom halves the coefficient, so the bend looks the same") +-- the CPU copy Voxel3D.project uses must agree with the shader's quadratic +local k = WorldCurve.k(154) +T.eq(WorldCurve.drop(k, 100, 100, 100, 100), 0, + "nothing drops at the focus, so the ground underfoot stays flat") +T.check(math.abs(WorldCurve.drop(k, 0, 0, 3, 4) - 25 * k) < 1e-9, + "the drop is the squared distance times the coefficient") +T.check(WorldCurve.drop(k, 0, 0, 20, 0) > 4 * WorldCurve.drop(k, 0, 0, 10, 0) + - 1e-9, + "and accelerates, so the far edge rolls away faster than the near one") +curve.step(settingGame, 1) +curve.step(settingGame, 1) +curve.step(settingGame, 1) +T.eq(curve.value(), "OFF", "the curve is left off for the rows below") + +Pipelines.reset() +run.release() + +T.finish("DRAMATIC_SHAPE") diff --git a/tools/__pycache__/build_voxels.cpython-313.pyc b/tools/__pycache__/build_voxels.cpython-313.pyc new file mode 100644 index 0000000..fafb4fe Binary files /dev/null and b/tools/__pycache__/build_voxels.cpython-313.pyc differ diff --git a/tools/__pycache__/building_images.cpython-313.pyc b/tools/__pycache__/building_images.cpython-313.pyc new file mode 100644 index 0000000..40befad Binary files /dev/null and b/tools/__pycache__/building_images.cpython-313.pyc differ diff --git a/tools/__pycache__/building_voxels.cpython-313.pyc b/tools/__pycache__/building_voxels.cpython-313.pyc new file mode 100644 index 0000000..5897c97 Binary files /dev/null and b/tools/__pycache__/building_voxels.cpython-313.pyc differ diff --git a/tools/build_voxels.py b/tools/build_voxels.py new file mode 100644 index 0000000..acc13cb --- /dev/null +++ b/tools/build_voxels.py @@ -0,0 +1,645 @@ +#!/usr/bin/env python3 +"""Build voxel models for the overworld sprites (voxel world mode, Tier 3). + +An AUTHORING tool, run by hand against a machine that has imported its own +ROM. It reads the extracted overworld sprite sheets out of the local cache +and emits, per sheet, the mod's own assets/voxels/.lua -- a face list +the runtime (lib/VoxelModels.lua) turns into a LOVE Mesh. + +The emitted model is geometry only: it names no sheet and bakes no pixel, +so what ships is the mod's own carving, not cache content (MK301). The +runtime pairs a model with the LIVE sheet the engine already handed it. + +Core idea +--------- +A GB overworld sheet gives THREE orthographic silhouettes of one character: +facing down (front), facing up (back), facing left (side; right is the +mirror). Three orthogonal views is exactly what visual-hull / space carving +needs: + + solid(x, y, z) = (front[y, x] OR back'[y, x]) AND side[y, z] + +where back' is the back view mirrored horizontally so it registers with the +front (walk behind someone and left/right swap). + +Note the OR. The front and back constrain the SAME axis -- they are two +observations of one [x, y] outline -- so ANDing them erodes the model +wherever the two frames disagree, and GB walk art disagrees often (Seel's +back frame splays its flippers where the front frame has body). Measured +over all 67 sheets, the union is never worse on reprojection IoU and better +on 16, and it fails toward "slightly fat" rather than "chunks missing", +which is the right failure mode for voxel art: 51 sheets whose two frames +agree exactly are bit-identical either way. Only the orthogonal side view +actually carves depth, and it still ANDs. `--silhouette intersect` restores +the strict three-way hull. + +Carving grid (sprite-pixel aligned): + x = front-sprite column y = sprite row, 0 = top + z = side-sprite column, 0 = the character's front (nose / hat brim) + +Faces are exported in MODEL space, which is the runtime's world convention +(X = map east, Y = up, Z = map south) with the character facing +Z (south, +"down") at rest, so the runtime only has to yaw by facing: + + mx = x my = 15 - y mz = 15 - z + +Texturing +--------- +A face does NOT carry a baked color. It carries the sheet pixel (u, v) of +the view it faces, so the runtime samples the LIVE sprite sheet image. That +is what makes RED++ OBJ-palette recolors (SpriteRenderer's OBP bake) and +mod sprite replacements color the voxel model for free, with no rebuild. + +Pipeline +-------- + 1. decode PNG (RGBA, GB 4-shade) or raw 2bpp -> shade indices 0..3 + 2. alpha the PNG alpha channel when the source has one (extracted + sheets key GB OBJ color 0 to alpha 0, matching the hardware + rule that OBJ palette index 0 is always transparent); raw + 2bpp has no alpha, so it falls back to flood-filling shade 0 + in from the frame border + 3. anchor bottom-center align each view's opaque bbox (feet on ground) + so views authored with different padding still register + 4. carve intersect the three extruded silhouettes + 5. clean keep the largest 6-connected component (kills carve speckle) + 6. faces emit every exposed voxel face with the sheet pixel it samples + 7. export .lua (+ optional .vox / .ply for authoring in + MagicaVoxel / Blender) + 8. validate re-project the hull along each axis, report IoU against the + source silhouettes -- the hull can only shrink, so IoU < 1 + flags real loss (misregistered views, over-carving) + +Poses +----- +6-frame sheets (16x96) carry stand down/up/left in frames 0,1,2 and walk +down/up/left in 3,4,5 -> a "stand" and a "walk" model. +3-frame sheets (16x48) are stand-only. +1-frame sheets (16x16, props: boulder / fossil / clipboard) have no other +view at all, so the side silhouette is the mirrored front -- which carves +the symmetric solid a prop reads as. + +Usage +----- + python3 tools/build_voxels.py # whole sprite dir + python3 tools/build_voxels.py --only red,oak + python3 tools/build_voxels.py --debug-exports -o /tmp/vox +""" + +from __future__ import annotations + +import argparse +import struct +import sys +from collections import deque +from pathlib import Path + +import numpy as np +from PIL import Image + +FRAME = 16 # overworld sprites are 16x16 +SHADES = 4 # GB is 2bpp + +# the author's own imported cache is the INPUT to this build step; only the +# carved output below is what the mod ships +SPRITE_DIR = Path("assets/generated/sprites") +# ...and it lands in the mod's own asset tree, never back in the cache +VOXEL_DIR = Path("mods/DRAMATIC_SHAPE/assets/voxels") + +# shade index (0 = lightest) -> RGBA, for the .vox / .ply debug exports only +# (the runtime textures from the live sheet instead -- see module docstring) +PALETTES = { + "gray": [(248, 248, 248, 255), (168, 168, 168, 255), + (88, 88, 88, 255), (16, 16, 16, 255)], + "gb": [(224, 248, 208, 255), (136, 192, 112, 255), + (52, 104, 86, 255), (8, 24, 32, 255)], + "sgb": [(255, 239, 206, 255), (222, 148, 74, 255), + (173, 41, 33, 255), (49, 24, 82, 255)], +} + + +# ---------------------------------------------------------------- decoding -- + +def decode_2bpp(data: bytes, tiles_wide: int = 2) -> np.ndarray: + """Raw GB 2bpp -> 2D array of shade indices. 16 bytes per 8x8 tile, two + bytes per row: byte0 = low bitplane, byte1 = high bitplane.""" + ntiles = len(data) // 16 + tiles = [] + for t in range(ntiles): + chunk = data[t * 16:(t + 1) * 16] + tile = np.zeros((8, 8), np.uint8) + for row in range(8): + lo, hi = chunk[row * 2], chunk[row * 2 + 1] + for bit in range(8): + tile[row, bit] = (((hi >> (7 - bit)) & 1) << 1) | \ + ((lo >> (7 - bit)) & 1) + tiles.append(tile) + rows = [np.hstack(tiles[i:i + tiles_wide]) + for i in range(0, ntiles, tiles_wide)] + return np.vstack(rows) + + +def load_sheet(path: Path): + """Load a sheet as (shade indices 0..3, alpha mask or None). + + The extracted PNGs are RGBA with GB OBJ color 0 written as transparent + white, so their alpha channel IS the opacity mask -- exact, and what the + hardware does. `None` means the source carried no alpha (raw 2bpp, or a + flat grayscale PNG) and the caller must derive opacity itself.""" + if path.suffix.lower() == ".2bpp": + return decode_2bpp(path.read_bytes()), None + arr = np.array(Image.open(path).convert("RGBA")) + lum = arr[..., 0].astype(np.int16) # GB art is gray: R == G == B + shade = np.zeros(lum.shape, np.uint8) # bucket; don't trust exact values + shade[lum < 213] = 1 + shade[lum < 128] = 2 + shade[lum < 43] = 3 + alpha = arr[..., 3] > 0 if arr[..., 3].min() < 255 else None + return shade, alpha + + +def slice_frames(shade: np.ndarray, alpha): + """Split a sheet into 16x16 frames, row-major over any grid layout. + Returns (shade, alpha_or_None, origin_x, origin_y) per frame; the origin + is the frame's top-left in sheet pixels, which is what the exported UVs + are relative to.""" + h, w = shade.shape + out = [] + for fy in range(h // FRAME): + for fx in range(w // FRAME): + sy, sx = fy * FRAME, fx * FRAME + sub = shade[sy:sy + FRAME, sx:sx + FRAME] + sub_a = alpha[sy:sy + FRAME, sx:sx + FRAME] if alpha is not None \ + else None + out.append((sub, sub_a, sx, sy)) + return out + + +# ------------------------------------------------------------------- alpha -- + +def flood_alpha(shade: np.ndarray) -> np.ndarray: + """Fallback opacity for alpha-less sources: shade 0 is transparent ONLY + where it flood-connects to the frame border, so an enclosed light region + (a face, a hand) stays opaque instead of punching a hole through the + model.""" + h, w = shade.shape + bg = np.zeros((h, w), bool) + dq = deque() + + def seed(y, x): + if shade[y, x] == 0 and not bg[y, x]: + bg[y, x] = True + dq.append((y, x)) + + for x in range(w): + seed(0, x) + seed(h - 1, x) + for y in range(h): + seed(y, 0) + seed(y, w - 1) + while dq: + y, x = dq.popleft() + for dy, dx in ((1, 0), (-1, 0), (0, 1), (0, -1)): + ny, nx = y + dy, x + dx + if 0 <= ny < h and 0 <= nx < w: + seed(ny, nx) + return ~bg + + +def anchor_bottom_center(shade: np.ndarray, alpha: np.ndarray): + """Shift a frame so its opaque bbox sits bottom-anchored and horizontally + centered, returning (shade, alpha, dy, dx). Views are authored with + slightly different padding; without this the hull loses a pixel shell + wherever they disagree. The shifts come back out because the exported UVs + must point at the ORIGINAL sheet pixel, not the shifted one.""" + ys, xs = np.nonzero(alpha) + if len(ys) == 0: + return shade, alpha, 0, 0 + dy = (FRAME - 1) - int(ys.max()) + dx = (FRAME - (int(xs.max()) - int(xs.min()) + 1)) // 2 - int(xs.min()) + out_s = np.zeros_like(shade) + out_a = np.zeros_like(alpha) + out_s[ys + dy, xs + dx] = shade[ys, xs] + out_a[ys + dy, xs + dx] = True + return out_s, out_a, dy, dx + + +class View: + """One aligned silhouette plus the mapping back to its sheet pixels. + + `mirror` is applied BEFORE alignment: the back view is pre-mirrored so it + registers with the front (and a prop's synthetic side view is the + mirrored front), which keeps the carve and the UV lookup working in one + consistent aligned space with no second flip anywhere downstream.""" + + def __init__(self, shade, alpha, ox, oy, mirror=False): + if mirror: + shade = shade[:, ::-1].copy() + alpha = alpha[:, ::-1].copy() + self.shade, self.alpha, self.dy, self.dx = \ + anchor_bottom_center(shade, alpha) + self.ox, self.oy, self.mirror = ox, oy, mirror + + def opaque(self, row: int, col: int) -> bool: + return bool(self.alpha[row, col]) + + def uv(self, row: int, col: int): + """Aligned (row, col) -> (u, v) sheet pixel. Callers only ask for + positions this view proved opaque (see `sample`), so the inverse + lands inside the frame; the clamp guards a degenerate frame.""" + y0 = row - self.dy + x0 = col - self.dx + if self.mirror: + x0 = FRAME - 1 - x0 + y0 = min(max(y0, 0), FRAME - 1) + x0 = min(max(x0, 0), FRAME - 1) + return self.ox + x0, self.oy + y0 + + +# ------------------------------------------------------------------- carve -- + +def carve(front: View, side: View, back: View, mode="union") -> np.ndarray: + """Visual hull: solid[x, y, z]. `back` is already registered with the + front (pre-mirrored at construction), so no flip here. The front/back + pair combines by `mode` (see the module docstring); the orthogonal side + view always intersects, since it is the only view carving depth.""" + fb = front.alpha | back.alpha if mode == "union" else \ + front.alpha & back.alpha + return fb.T[:, :, None] & side.alpha[None, :, :] # [x,y,1] & [1,y,z] + + +def largest_component(solid: np.ndarray) -> np.ndarray: + """Keep only the largest 6-connected blob (drops carving speckle).""" + labels = np.zeros(solid.shape, np.int32) + best_id, best_n, cur = 0, 0, 0 + for idx in zip(*np.nonzero(solid)): + if labels[idx]: + continue + cur += 1 + n = 0 + dq = deque([idx]) + labels[idx] = cur + while dq: + x, y, z = dq.popleft() + n += 1 + for dx, dy, dz in ((1, 0, 0), (-1, 0, 0), (0, 1, 0), + (0, -1, 0), (0, 0, 1), (0, 0, -1)): + nx, ny, nz = x + dx, y + dy, z + dz + if 0 <= nx < FRAME and 0 <= ny < FRAME and 0 <= nz < FRAME \ + and solid[nx, ny, nz] and not labels[nx, ny, nz]: + labels[nx, ny, nz] = cur + dq.append((nx, ny, nz)) + if n > best_n: + best_id, best_n = cur, n + return labels == best_id + + +# ------------------------------------------------------------------- faces -- + +# carve-grid neighbour offset -> (model direction id, which view colors it). +# Model dirs: 1 = +X east, 2 = -X west, 3 = +Y up, 4 = -Y down, +# 5 = +Z south (toward the camera), 6 = -Z north (away). +# A profile face takes the side view -- and so do TOP faces: the camera in +# game looks steeply down, so tops dominate what you see, and the axis a +# top face varies along on screen is DEPTH (z). The side view is the one +# view that resolves depth -- its pixel at (row, z) puts cap-front red and +# hair-back black in the right z order. Sampling the front view there (the +# obvious first guess, and what shipped first) gives every top voxel of a +# row the same front pixel, which painted the entire head cap-color and +# turned every character into a red-topped blob. +FACE_DIRS = ( + ((1, 0, 0), 1, "side"), + ((-1, 0, 0), 2, "side"), + ((0, -1, 0), 3, "side"), + ((0, 1, 0), 4, "front"), + ((0, 0, -1), 5, "front"), + ((0, 0, 1), 6, "back"), +) + + +def source_view(which, x, y, z, front: View, side: View, back: View): + """The view a face takes its pixel from, as (view, row, col) in that + view's ALIGNED space, with a fallback chain. + + Under the union rule a voxel can be proved solid by the back view alone, + so its front-facing face has no front pixel to take -- sampling one + anyway would read the frame's transparent background and punch a hole in + the model. Fall back to the opposite same-axis view, then to the side + view, which every solid voxel satisfies by construction (the side is the + one view that always intersects), so this always terminates on an opaque + pixel.""" + if which == "side": + return side, y, z + first, second = (front, back) if which == "front" else (back, front) + if first.opaque(y, x): + return first, y, x + if second.opaque(y, x): + return second, y, x + return side, y, z + + +def build_faces(solid, front: View, side: View, back: View): + """Every exposed voxel face as (mx, my, mz, dir, u, v) in model space. + + The model's own underside (my == 0) is dropped: it sits flat on the + ground plane and can never be seen, and it is ~1 face in 8.""" + faces = [] + for x, y, z in zip(*np.nonzero(solid)): + x, y, z = int(x), int(y), int(z) + mx, my, mz = x, FRAME - 1 - y, FRAME - 1 - z + for (dx, dy, dz), d, which in FACE_DIRS: + nx, ny, nz = x + dx, y + dy, z + dz + if 0 <= nx < FRAME and 0 <= ny < FRAME and 0 <= nz < FRAME \ + and solid[nx, ny, nz]: + continue + if d == 4 and my == 0: + continue + v, r, c = source_view(which, x, y, z, front, side, back) + u, w = v.uv(r, c) + faces.append((mx, my, mz, d, u, w)) + return faces + + +def colorize(solid, front: View, side: View, back: View) -> np.ndarray: + """Per-voxel shade index for the .vox / .ply debug exports. Priority + front > side > back > top, matching the face order the runtime sees; + bottom-only voxels keep the darkest shade (they read as shadow). Shades + resolve through `source_view`'s fallback chain for the same reason the + exported UVs do -- a back-only voxel has no front pixel.""" + shade = np.full(solid.shape, 3, np.uint8) + + def free(x, y, z, dx, dy, dz): + nx, ny, nz = x + dx, y + dy, z + dz + return not (0 <= nx < FRAME and 0 <= ny < FRAME and 0 <= nz < FRAME + and solid[nx, ny, nz]) + + def shade_at(which, x, y, z): + v, r, c = source_view(which, x, y, z, front, side, back) + return v.shade[r, c] + + for x, y, z in zip(*np.nonzero(solid)): + x, y, z = int(x), int(y), int(z) + if free(x, y, z, 0, 0, -1): + shade[x, y, z] = shade_at("front", x, y, z) + elif free(x, y, z, 1, 0, 0) or free(x, y, z, -1, 0, 0): + shade[x, y, z] = shade_at("side", x, y, z) + elif free(x, y, z, 0, 0, 1): + shade[x, y, z] = shade_at("back", x, y, z) + elif free(x, y, z, 0, -1, 0): + shade[x, y, z] = shade_at("side", x, y, z) + return shade + + +# -------------------------------------------------------------- validation -- + +def reprojection_iou(solid, front: View, side: View, back: View) -> dict: + """Project the hull back along each axis against the source silhouettes. + Front and back project along the same axis (the back is pre-registered), + so they share a projection and differ only in what they are compared to.""" + proj_fb = solid.any(axis=2).T # [y, x] + proj_side = solid.any(axis=0) # [y, z] + + def iou(a, b): + u = (a | b).sum() + return float((a & b).sum()) / u if u else 1.0 + + return {"front": iou(proj_fb, front.alpha), + "side": iou(proj_side, side.alpha), + "back": iou(proj_fb, back.alpha)} + + +# ----------------------------------------------------------- debug exports -- + +def _chunk(cid: bytes, content: bytes, children: bytes = b"") -> bytes: + return cid + struct.pack(" 4 corner offsets (unit cube, CCW from outside) + (0, 0, -1): [(0, 0, 0), (1, 0, 0), (1, 1, 0), (0, 1, 0)], + (0, 0, 1): [(1, 0, 1), (0, 0, 1), (0, 1, 1), (1, 1, 1)], + (-1, 0, 0): [(0, 0, 1), (0, 0, 0), (0, 1, 0), (0, 1, 1)], + (1, 0, 0): [(1, 0, 0), (1, 0, 1), (1, 1, 1), (1, 1, 0)], + (0, -1, 0): [(0, 0, 1), (1, 0, 1), (1, 0, 0), (0, 0, 0)], + (0, 1, 0): [(0, 1, 0), (1, 1, 0), (1, 1, 1), (0, 1, 1)], +} + + +def write_ply(path: Path, solid, shade, palette): + """ASCII PLY, hidden faces culled, vertex colors. y flipped so +up.""" + verts, faces = [], [] + for x, y, z in zip(*np.nonzero(solid)): + r, g, b, _ = palette[shade[x, y, z]] + for (dx, dy, dz), corners in _PLY_FACES.items(): + nx, ny, nz = x + dx, y + dy, z + dz + if 0 <= nx < FRAME and 0 <= ny < FRAME and 0 <= nz < FRAME \ + and solid[nx, ny, nz]: + continue + base = len(verts) + for cx, cy, cz in corners: + verts.append((x + cx, FRAME - (y + cy), z + cz, r, g, b)) + faces.append((base, base + 1, base + 2, base + 3)) + with open(path, "w") as f: + f.write("ply\nformat ascii 1.0\n" + f"element vertex {len(verts)}\n" + "property float x\nproperty float y\nproperty float z\n" + "property uchar red\nproperty uchar green\n" + "property uchar blue\n" + f"element face {len(faces)}\n" + "property list uchar int vertex_indices\nend_header\n") + for v in verts: + f.write("%g %g %g %d %d %d\n" % v) + for a, b, c, d in faces: + f.write(f"4 {a} {b} {c} {d}\n") + + +# ------------------------------------------------------------- lua exports -- + +FACES_PER_LINE = 8 + + +def lua_source(name: str, sheet_w: int, sheet_h: int, poses: dict) -> str: + out = [ + "-- Generated by tools/build_voxels.py. DO NOT EDIT.", + f"-- Visual-hull voxel model carved from the {name!r} overworld" + .replace("'", '"'), + "-- sprite sheet. Geometry only -- no sheet path, no baked pixel.", + "-- faces: flat runs of 6 ints -- mx, my, mz, dir, u, v.", + "-- mx/my/mz voxel corner in model space (X east, Y up, Z south),", + "-- 0..15, character faces +Z at rest.", + "-- dir 1 +X 2 -X 3 +Y 4 -Y 5 +Z 6 -Z", + "-- u/v pixel this face samples in a sheet of sheetW x sheetH.", + "-- The runtime pairs the model with the LIVE sheet the", + "-- engine handed it, so palette/mod recolors apply.", + "return {", + f" name = {name!r},".replace("'", '"'), + f" sheetW = {sheet_w},", + f" sheetH = {sheet_h},", + f" size = {FRAME},", + " poses = {", + ] + for pose in ("stand", "walk"): + p = poses.get(pose) + if not p: + continue + faces = p["faces"] + out.append(f" {pose} = {{") + out.append(f" frames = {{ {', '.join(str(f) for f in p['frames'])} }},") + out.append(f" voxels = {p['voxels']},") + out.append(f" count = {len(faces)},") + out.append(" faces = {") + for i in range(0, len(faces), FACES_PER_LINE): + chunk = faces[i:i + FACES_PER_LINE] + row = " ".join( + ",".join(str(n) for n in face) + "," for face in chunk) + out.append(" " + row) + out.append(" },") + out.append(" },") + out.append(" },") + out.append("}") + return "\n".join(out) + "\n" + + +# ---------------------------------------------------------------- pipeline -- + +def build_pose(frames, picks, mode="union"): + """Carve one pose. `picks` is (down, up, left) frame indices, or a + 1-tuple for a prop, whose side view is the mirrored front.""" + def view(i, mirror=False): + shade, alpha, ox, oy = frames[i] + if alpha is None: + alpha = flood_alpha(shade) + return View(shade, alpha, ox, oy, mirror) + + if len(picks) == 1: + front = view(picks[0]) + back = view(picks[0], mirror=True) # a prop reads the same from behind + side = view(picks[0], mirror=True) + else: + front = view(picks[0]) + back = view(picks[1], mirror=True) # register the back with the front + side = view(picks[2]) + + solid = largest_component(carve(front, side, back, mode)) + return solid, front, side, back + + +def convert(path: Path, outdir: Path, debug: Path = None, + palette_name="sgb", min_iou=0.0, mode="union") -> dict: + shade, alpha = load_sheet(path) + frames = slice_frames(shade, alpha) + sheet_h, sheet_w = shade.shape + + if len(frames) >= 6: + pose_picks = {"stand": (0, 1, 2), "walk": (3, 4, 5)} + elif len(frames) >= 3: + pose_picks = {"stand": (0, 1, 2)} + else: + pose_picks = {"stand": (0,)} + + poses, scores = {}, {} + for pose, picks in pose_picks.items(): + solid, front, side, back = build_pose(frames, picks, mode) + poses[pose] = { + "frames": picks, + "voxels": int(solid.sum()), + "faces": build_faces(solid, front, side, back), + } + scores[pose] = reprojection_iou(solid, front, side, back) + if debug is not None: + palette = PALETTES[palette_name] + sh = colorize(solid, front, side, back) + debug.mkdir(parents=True, exist_ok=True) + write_vox(debug / f"{path.stem}_{pose}.vox", solid, sh, palette) + write_ply(debug / f"{path.stem}_{pose}.ply", solid, sh, palette) + + outdir.mkdir(parents=True, exist_ok=True) + dest = outdir / f"{path.stem}.lua" + dest.write_text(lua_source(path.stem, sheet_w, sheet_h, poses)) + + # report the WORST pose, not just stand: `ok` gates on every pose, so a + # summary line showing stand's numbers could print "!!" beside three + # healthy-looking scores when it is the walk pose that carved badly + worst_pose = min(scores, key=lambda p: min(scores[p].values())) + worst = min(scores[worst_pose].values()) + return {"name": path.stem, "poses": poses, "iou": scores, + "worst": worst, "worstPose": worst_pose, "ok": worst >= min_iou, + "bytes": dest.stat().st_size} + + +def main(argv=None): + ap = argparse.ArgumentParser(description=__doc__.split("\n")[0]) + ap.add_argument("input", nargs="?", type=Path, default=SPRITE_DIR, + help="sprite PNG/.2bpp or directory " + f"(default {SPRITE_DIR})") + ap.add_argument("-o", "--outdir", type=Path, default=VOXEL_DIR) + ap.add_argument("--only", help="comma-separated sprite stems to build") + ap.add_argument("--debug-exports", type=Path, default=None, + metavar="DIR", help="also write .vox/.ply there") + ap.add_argument("--palette", choices=PALETTES, default="sgb", + help="debug-export palette only") + ap.add_argument("--min-iou", type=float, default=0.0, + help="fail the run if any view scores below this") + ap.add_argument("--silhouette", choices=("union", "intersect"), + default="union", + help="how the front/back pair combines (see the module " + "docstring); intersect is the strict three-way hull") + args = ap.parse_args(argv) + + if args.input.is_dir(): + targets = sorted(args.input.glob("*.png")) + \ + sorted(args.input.glob("*.2bpp")) + else: + targets = [args.input] + if args.only: + keep = {s.strip() for s in args.only.split(",") if s.strip()} + targets = [t for t in targets if t.stem in keep] + if not targets: + print(f"no sprite sheets found under {args.input}") + return 1 + + failed, total_faces, total_bytes = 0, 0, 0 + for t in targets: + try: + r = convert(t, args.outdir, args.debug_exports, args.palette, + args.min_iou, args.silhouette) + except Exception as e: # noqa: BLE001 - batch robustness + print(f"[FAIL] {t.name}: {e}") + failed += 1 + continue + nf = sum(len(p["faces"]) for p in r["poses"].values()) + total_faces += nf + total_bytes += r["bytes"] + s = r["iou"][r["worstPose"]] + flag = "" if r["ok"] else " <-- below min IoU" + pose = "" if r["worstPose"] == "stand" else f" [{r['worstPose']}]" + print(f"[{'ok' if r['ok'] else '!!'}] {r['name']:<20}" + f" {len(r['poses'])} pose(s) {nf:>5} faces " + f"IoU f={s['front']:.3f} s={s['side']:.3f} b={s['back']:.3f}" + f"{pose}{flag}") + failed += not r["ok"] + + print(f"\n{len(targets) - failed}/{len(targets)} models -> {args.outdir}" + f" ({total_faces} faces, {total_bytes / 1024:.0f} KiB)") + return 1 if failed else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/building_images.py b/tools/building_images.py new file mode 100644 index 0000000..de4ed8b --- /dev/null +++ b/tools/building_images.py @@ -0,0 +1,112 @@ +"""Composite the reference PNGs that +assets/docs/buildings/B##-unnamed-building.md files link to (img/B##.png, +img/B##_x{scale}.png, img/B##_atlas.png) but the repo does not ship, since +they land in the gitignored .scratchpad/ -- run this to regenerate them +locally. + +Parses each doc's raw tile-id grid (the `local rows = {...}` Lua array), its +named tileset, and its scale factor straight out of the markdown, then +composites the building out of the tileset atlas the same way +building_voxels.py's sprite() does: paste each tile's 8x8 block, 16 tiles +per row. Emits, per building: + - B##.png native resolution + - B##_x{N}.png nearest-neighbor upscale, at the scale the doc references + - B##_atlas.png a strip of the building's distinct tiles, first-appearance + order (matches the doc's legend lettering) + + python mods/DRAMATIC_SHAPE/tools/building_images.py [outdir] + +outdir defaults to .scratchpad/img at the repo root. +""" +import os +import re +import sys +import glob +from PIL import Image + +MOD_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +ROOT = os.path.dirname(os.path.dirname(MOD_ROOT)) +DOCS = os.path.join(MOD_ROOT, "assets", "docs", "buildings") +TILESETS = os.path.join(ROOT, "assets", "generated", "tilesets") +PER_ROW = 16 + + +def parse_doc(path): + text = open(path, encoding="utf-8").read() + bid = re.search(r"^# (B\d+)", text, re.M).group(1) + scale = int(re.search(r"img/B\d+_x(\d+)\.png", text).group(1)) + tileset = re.search(r"assets/generated/tilesets/(\w+)\.png", text).group(1) + lua = re.search(r"local rows = \{(.*?)\n\}", text, re.S).group(1) + rows = [] + for line in lua.strip().splitlines(): + code = line.split("--")[0] + nums = re.findall(r"\d+", code) + if nums: + rows.append([int(n) for n in nums]) + return bid, scale, tileset, rows + + +def composite(rows, atlas): + h, w = len(rows), len(rows[0]) + im = Image.new("RGB", (w * 8, h * 8)) + for r, row in enumerate(rows): + for c, t in enumerate(row): + ax, ay = (t % PER_ROW) * 8, (t // PER_ROW) * 8 + im.paste(atlas.crop((ax, ay, ax + 8, ay + 8)), (c * 8, r * 8)) + return im + + +def atlas_strip(rows, atlas, cell=32, pad=2, per_row=12): + """Every distinct tile the building uses, in first-appearance (row-major) + order -- the same order the doc's legend assigns A, B, C, ... to.""" + seen, seenset = [], set() + for row in rows: + for t in row: + if t not in seenset: + seenset.add(t) + seen.append(t) + n = len(seen) + cols = min(n, per_row) + lines = (n + per_row - 1) // per_row + W = cols * cell + (cols + 1) * pad + H = lines * cell + (lines + 1) * pad + img = Image.new("RGB", (W, H), (255, 255, 255)) + for i, t in enumerate(seen): + ax, ay = (t % PER_ROW) * 8, (t // PER_ROW) * 8 + tile = atlas.crop((ax, ay, ax + 8, ay + 8)).resize((cell, cell), Image.NEAREST) + col, line = i % per_row, i // per_row + img.paste(tile, (pad + col * (cell + pad), pad + line * (cell + pad))) + return img + + +def main(): + out = sys.argv[1] if len(sys.argv) > 1 else os.path.join(ROOT, ".scratchpad", "img") + os.makedirs(out, exist_ok=True) + + atlas_cache = {} + docs = sorted( + glob.glob(os.path.join(DOCS, "B*-unnamed-building.md")), + key=lambda p: int(re.search(r"B(\d+)", os.path.basename(p)).group(1)), + ) + for path in docs: + bid, scale, tileset, rows = parse_doc(path) + if tileset not in atlas_cache: + atlas_cache[tileset] = Image.open( + os.path.join(TILESETS, tileset + ".png") + ).convert("RGB") + atlas = atlas_cache[tileset] + + native = composite(rows, atlas) + native.save(os.path.join(out, f"{bid}.png")) + + big = native.resize((native.width * scale, native.height * scale), Image.NEAREST) + big.save(os.path.join(out, f"{bid}_x{scale}.png")) + + atl = atlas_strip(rows, atlas) + atl.save(os.path.join(out, f"{bid}_atlas.png")) + + print(f"{bid}: {tileset} {native.size} -> x{scale} {big.size}, atlas {atl.size}") + + +if __name__ == "__main__": + main() diff --git a/tools/building_voxels.py b/tools/building_voxels.py new file mode 100644 index 0000000..0fb1b12 --- /dev/null +++ b/tools/building_voxels.py @@ -0,0 +1,911 @@ +"""Reference implementation of the building voxelizer -- the Python half of +the dual-implementation parity check demanded by +assets/docs/buidling_to_voxel/sprite_to_voxel_methodology.md (Stage 5). + +It composites a building out of the tileset atlas exactly the way the map +does, extracts palette + silhouette (light-only flood fill), builds the +voxel model with the same rules lib/Buildings.lua ships, asserts the +geometric intent, and renders isometric previews. + + python mods/DRAMATIC_SHAPE/tools/building_voxels.py [outdir] + +Keep the TEMPLATES table below in sync with the `buildings` section of +data/voxel_heights.lua: the two implementations are meant to be +independent restatements of the same algorithm, and the voxel/shell +counts they print must match. +""" +import os +import sys +from collections import deque, Counter +from PIL import Image, ImageDraw + +ROOT = os.path.dirname(os.path.dirname(os.path.dirname( + os.path.dirname(os.path.abspath(__file__))))) +TILESETS = os.path.join(ROOT, "assets/generated/tilesets") +PER_ROW = 16 + +WHITE, GREY, DARK, BLACK = 0, 1, 2, 3 # by luminance, light first + +# --- the shape profile, mirroring data/voxel_heights.lua's `buildings` ------ +TEMPLATES = { + # B07: Red's house / Blue's house / Bill's / the Copycat's -- 7 placements + "gabled_house": dict( + tiles=[ + [5, 6, 7, 7, 7, 7, 8, 9], + [21, 22, 23, 23, 23, 23, 24, 25], + [37, 38, 10, 34, 10, 10, 40, 41], + [92, 23, 23, 23, 23, 23, 23, 93], + [15, 34, 11, 12, 10, 10, 34, 31], + [78, 26, 27, 28, 26, 26, 26, 79], + ], + roof_rows=16, roof_back=7, roof_front=9, roof_cycle=(5, 8), + slab=4, front_eave=4, ledge=(24, 31), + ), + # B31: Oak's lab -- the same architecture with a roof band twice as deep + "lab": dict( + tiles=[ + [5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25], + [37, 38, 10, 10, 10, 75, 75, 10, 10, 10, 40, 41], + [15, 34, 34, 34, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 11, 12, 10, 10, 10, 10, 10, 31], + [78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B03: the flat-roofed commercial block -- 15 placements, the most of + # any voxelized drawing. The lattice is drawn from straight above, so + # the measured taper is flat; the eave course is the roof's own south + # rim, lab-style. Its sprite is inset from its box: the outer columns + # carry no roof. + "flat_commercial": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 11, 12, 75, 75, 75, 31], + [78, 26, 27, 28, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B05: every Pokemon Center in the game (Celadon, Cerulean, + # Cinnabar, Fuchsia, Lavender, Pewter, Saffron, Vermilion, Viridian, + # Mt Moon, Rock Tunnel). B03's block with the POKe sign hung beside + # the door; the sign is too wide to be a pane, so it stays flush. + "pokecenter": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 11, 12, 66, 67, 75, 31], + [78, 26, 27, 28, 74, 74, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B06: every Poke Mart (Cerulean, Cinnabar, Fuchsia, Lavender, + # Pewter, Saffron, Vermilion, Viridian). The Center's twin, MART on + # the sign. + "pokemart": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 11, 12, 68, 69, 75, 31], + [78, 26, 27, 28, 74, 74, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B02: the plain 4x4 block: one window course over blank brick and + # no door. 15 placements, scenery in every city bar the Celadon Mart + # roof stair. + "flat_block_4x4": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 75, 75, 75, 31], + [78, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B08: the same block two cells deeper, 6 placements, all scenery. + "flat_block_4x6": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 75, 75, 75, 31], + [78, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B13: the 6x4 scenery block, 4 placements. + "flat_block_6x4": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B14: the 6x6 scenery block, 3 placements. + "flat_block_6x6": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B27: the 8x4 scenery block, one placement on Route 11. + "flat_block_8x4": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B09: the wide storefront: Celadon's Game Corner, the Pokemon + # Mansion, Cinnabar Lab, the Safari Zone gate and Fuchsia's meeting + # room. + "game_corner": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31], + [78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B15: Celadon Mansion and the Route 6 and Route 12 gates. + "celadon_mansion": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31], + [78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B18: the Route 2 gate, and the museum's east entrance beside it in + # Pewter. The museum hall itself is B24 below -- a sloped roof. + "route_2_gate": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 11, 12, 75, 75, 75, 75, 75, 75, 75, 31], + [78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B29: Fuchsia Gym, the block with GYM on the sign. + "fuchsia_gym": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 34, 47, 63, 34, 10, 10, 10, 31], + [15, 75, 75, 75, 34, 34, 34, 34, 75, 75, 75, 31], + [15, 75, 11, 12, 10, 10, 10, 10, 75, 75, 75, 31], + [78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B28: the Route 5 underground-path gate. + "route_5_gate": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31], + [78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B21: the Route 22 league gate, the widest of the family at 12 + # cells. + "route_22_gate": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 75, 75, 75, 75, 31], + [78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B25: the Power Plant. + "power_plant": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31], + [78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B22: Celadon's department store: six window courses over the MART + # sign. + "celadon_mart": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 75, 75, 10, 10, 75, 75, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 11, 12, 10, 10, 11, 12, 10, 10, 68, 69, 75, 31], + [78, 26, 26, 26, 27, 28, 26, 26, 27, 28, 26, 26, 74, 74, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B20: Silph Co. Twelve cells of plot and ten courses of windows + # under the same roof band, so it stands as the tallest thing in + # Kanto. + "silph_co": dict( + tiles=[ + [76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90], + [92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 75, 75, 75, 75, 31], + [78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B24: the Pewter museum's hall, and the only building in the family + # with a SLOPED roof: the same 2:1 taper the lab and Red's house are + # drawn with, over a roof band twice the lab's depth. The drawing + # repeats its whole lattice-and-course motif -- rows 8..31 again at + # 32..55 -- which is what fixes the cycle at 24 rather than the bare + # lattice's 8: the drawing proves the period. The last band (rows + # 56..63) is the roof's fascia, wider than the wall it covers, so it + # stays in the roof band and lands on the south rim. + "museum": dict( + tiles=[ + [ 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25], + [37, 38, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 41], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31], + [78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79], + ], + roof_rows=64, roof_back=8, roof_front=8, roof_cycle=(8, 31), + slab=4, front_eave=4, ledge=None, + ), + # B10: the gym. Cinnabar, Pewter, Vermilion and Viridian wear this + # drawing, and so does the Fighting Dojo next door to Saffron's. + # Oak's lab's roof band exactly, tile for tile, over a facade with + # GYM on the sign. + "gym": dict( + tiles=[ + [ 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25], + [37, 38, 10, 10, 34, 47, 63, 34, 10, 10, 40, 41], + [15, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 11, 12, 10, 31], + [78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B16: the big-city gym: Celadon, Cerulean and Saffron. Two cells + # wider than the standard gym, and it carries the GYM sign twice. + "gym_large": dict( + tiles=[ + [ 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25], + [37, 38, 10, 10, 34, 47, 63, 34, 34, 47, 63, 34, 10, 10, 40, 41], + [15, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 10, 31], + [78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B01: the commonest drawing in the game at 19 placements, and every + # one of them scenery: a gabled block with two window courses and no + # door. Red's house's roof band, tile for tile, but no awning under + # it. + "gabled_block_4x3": dict( + tiles=[ + [ 5, 6, 7, 7, 7, 7, 8, 9], + [21, 22, 23, 23, 23, 23, 24, 25], + [37, 38, 10, 10, 10, 10, 40, 41], + [15, 34, 34, 34, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 31], + [78, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=16, roof_back=7, roof_front=9, roof_cycle=(5, 8), + slab=4, front_eave=4, ledge=None, + ), + # B04: the little 4x2 cottage, 12 placements and nearly all of them + # somebody's home: Mr Fuji's, the Cubone house, Bill's grandpa's, + # the Name Rater's, the Viridian school house, the Route 8 + # underground path. + "gabled_cottage": dict( + tiles=[ + [ 5, 6, 7, 7, 7, 7, 8, 9], + [21, 22, 23, 23, 23, 23, 24, 25], + [37, 38, 11, 12, 10, 10, 40, 41], + [78, 26, 27, 28, 26, 26, 26, 79], + ], + roof_rows=16, roof_back=7, roof_front=9, roof_cycle=(5, 8), + slab=4, front_eave=4, ledge=None, + ), + # B17: the wide 6x2 house: Cerulean's badge, trade and trashed + # houses. + "gabled_house_wide": dict( + tiles=[ + [ 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9], + [21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25], + [37, 38, 11, 12, 35, 10, 10, 35, 10, 10, 40, 41], + [78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=16, roof_back=7, roof_front=9, roof_cycle=(5, 8), + slab=4, front_eave=4, ledge=None, + ), + # B11: the 6x2 scenery block, 5 placements, no door. + "gabled_block_6x2": dict( + tiles=[ + [ 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9], + [21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25], + [37, 38, 10, 34, 35, 10, 10, 35, 10, 10, 40, 41], + [78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=16, roof_back=7, roof_front=9, roof_cycle=(5, 8), + slab=4, front_eave=4, ledge=None, + ), + # B34: the 4x2 scenery block, one placement in Fuchsia. + "gabled_block_4x2": dict( + tiles=[ + [ 5, 6, 7, 7, 7, 7, 8, 9], + [21, 22, 23, 23, 23, 23, 24, 25], + [37, 38, 10, 34, 10, 10, 40, 41], + [78, 26, 26, 26, 26, 26, 26, 79], + ], + roof_rows=16, roof_back=7, roof_front=9, roof_cycle=(5, 8), + slab=4, front_eave=4, ledge=None, + ), + # B33: the Route 5 day care. + "daycare": dict( + tiles=[ + [ 5, 6, 83, 83, 83, 83, 8, 9], + [21, 56, 18, 18, 18, 18, 56, 25], + [21, 56, 18, 18, 18, 18, 56, 25], + [21, 22, 23, 23, 23, 23, 24, 25], + [37, 38, 10, 10, 10, 10, 40, 41], + [15, 34, 34, 34, 34, 34, 34, 31], + [15, 10, 10, 10, 11, 12, 10, 31], + [78, 26, 26, 26, 27, 28, 26, 79], + ], + roof_rows=32, roof_back=7, roof_front=8, roof_cycle=(5, 12), + slab=4, front_eave=4, ledge=None, + ), + # B26: the Route 10 scenery block, structurally the museum's twin. + # Needs `seal`: its drawing has no black base course, so unsealed + # the flood climbs in from the south border and hollows the wall out + # (72% surviving in 65 pieces, against 95% in one). + "gabled_block_6x6": dict( + tiles=[ + [ 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25], + [21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25], + [37, 38, 34, 34, 34, 34, 34, 34, 34, 34, 40, 41], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + [15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31], + [15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31], + ], + roof_rows=64, roof_back=8, roof_front=8, roof_cycle=(8, 31), + slab=4, front_eave=4, ledge=None, seal="s", + ), + # B12: the Safari Zone rest houses. A corrugated roof over a plank + # facade; the stripe repeats every 5 rows, not the OVERWORLD + # lattice's 8. + "safari_rest_house": dict( + tiles=[ + [ 8, 9, 9, 9, 9, 9, 9, 12], + [24, 25, 25, 25, 25, 25, 25, 28], + [40, 41, 42, 43, 1, 1, 41, 44], + [56, 41, 58, 59, 41, 41, 41, 60], + ], + roof_rows=17, roof_back=5, roof_front=3, roof_cycle=(5, 9), + slab=4, front_eave=4, ledge=None, tileset="forest", + ), + # B23: the Victory Road entrance on Route 23: a rock face with two + # barred doors. The roof band is the pale cliff top seen from above. + "victory_road_gate": dict( + tiles=[ + [37, 38, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 37, 38], + [40, 41, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 40, 41], + [21, 22, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 15, 15, 15, 15, 15, 15, 21, 22], + [ 5, 6, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 15, 15, 15, 15, 15, 15, 5, 6], + [ 5, 6, 15, 15, 15, 15, 15, 15, 11, 12, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 11, 12, 15, 15, 15, 15, 5, 6], + [21, 22, 14, 14, 14, 14, 14, 14, 27, 28, 14, 14, 14, 14, 14, 14, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 27, 28, 14, 14, 14, 14, 21, 22], + ], + roof_rows=16, roof_back=7, roof_front=8, roof_cycle=(9, 12), + slab=4, front_eave=4, ledge=None, tileset="plateau", + ), +} + +# a recess is a window or a doorway: a non-black region the art seals off +# behind its own black frame. Anything wider or taller than this is a band +# of the facade itself (siding courses, the awning's grey field). +RECESS_MAX = 24 + + +# --------------------------------------------------------------- stage 1 -- +def sprite(tiles, seal="", tileset="overworld"): + """Composite the building and read it the way Structures reads the map: + palette index per pixel plus the light-only silhouette flood. + + `seal` names the sides the drawing runs off (a string of n/s/e/w). The + flood does not seed there: a drawing trimmed flush to its art, whose + base course is brick rather than the black threshold every other + building stands on, would otherwise be hollowed out through its own + mortar.""" + atlas = Image.open(os.path.join(TILESETS, tileset + ".png")).convert("RGB") + h, w = len(tiles), len(tiles[0]) + W, H = w * 8, h * 8 + im = Image.new("RGB", (W, H)) + for r, row in enumerate(tiles): + for c, t in enumerate(row): + ax, ay = (t % PER_ROW) * 8, (t // PER_ROW) * 8 + im.paste(atlas.crop((ax, ay, ax + 8, ay + 8)), (c * 8, r * 8)) + px = im.load() + + counts = Counter(px[x, y] for y in range(H) for x in range(W)) + lum = lambda c: 0.299 * c[0] + 0.587 * c[1] + 0.114 * c[2] + pal = sorted(counts, key=lambda c: -lum(c)) # white, grey, dark, black + assert len(pal) == 4, pal + idx = {c: i for i, c in enumerate(pal)} + col = [[idx[px[x, y]] for x in range(W)] for y in range(H)] + + # The flood spreads only through LIGHT pixels: the black outline and the + # #555 shading together are the boundary. A "not black" threshold lets it + # eat the shaded flanks and the silhouette collapses. + out = [[False] * W for _ in range(H)] + q = deque() + + def seed(x, y): + if not out[y][x] and col[y][x] <= GREY: + out[y][x] = True + q.append((x, y)) + + for x in range(W): + if "n" not in seal: + seed(x, 0) + if "s" not in seal: + seed(x, H - 1) + for y in range(H): + if "w" not in seal: + seed(0, y) + if "e" not in seal: + seed(W - 1, y) + while q: + x, y = q.popleft() + for nx, ny in ((x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)): + if 0 <= nx < W and 0 <= ny < H: + seed(nx, ny) + + # source texel per pixel, so every voxel can name where its colour came from + src = [[((tiles[y // 8][x // 8] % PER_ROW) * 8 + x % 8, + (tiles[y // 8][x // 8] // PER_ROW) * 8 + y % 8) + for x in range(W)] for y in range(H)] + return dict(W=W, H=H, col=col, out=out, src=src, pal=pal) + + +# --------------------------------------------------------------- stage 2 -- +def profile(sp, t): + """Everything the band table implies, measured off the mask.""" + W, H = sp["W"], sp["H"] + inside = lambda x, y: 0 <= x < W and 0 <= y < H and not sp["out"][y][x] + + # the taper IS the slope: the topmost drawn row of each column + top = [] + for x in range(W): + r = next((y for y in range(H) if inside(x, y)), t["roof_rows"]) + top.append(min(r, t["roof_rows"])) + + wall_h = H - t["roof_rows"] + ytop = wall_h - 1 + t["slab"] + + # Recesses: the panes the art seals behind a black frame. Non-black + # pixels of the facade split into components across the black outline; + # a component small enough to be a window or a doorway sinks one voxel. + wall_y0 = t["roof_rows"] + comp = {} + recess = set() + for sy in range(wall_y0, H): + for sx in range(W): + if (sx, sy) in comp or not inside(sx, sy) or sp["col"][sy][sx] == BLACK: + continue + cells, stack = [], [(sx, sy)] + comp[(sx, sy)] = True + x0 = x1 = sx + y0 = y1 = sy + while stack: + cx, cy = stack.pop() + cells.append((cx, cy)) + x0, x1 = min(x0, cx), max(x1, cx) + y0, y1 = min(y0, cy), max(y1, cy) + for nx, ny in ((cx + 1, cy), (cx - 1, cy), + (cx, cy + 1), (cx, cy - 1)): + if (ny >= wall_y0 and (nx, ny) not in comp + and inside(nx, ny) + and sp["col"][ny][nx] != BLACK): + comp[(nx, ny)] = True + stack.append((nx, ny)) + if x1 - x0 + 1 <= RECESS_MAX and y1 - y0 + 1 <= RECESS_MAX: + recess.update(cells) + + return dict(top=top, wall_h=wall_h, ytop=ytop, recess=recess, + inside=inside, D=H, W=W, H=H) + + +# --------------------------------------------------------------- stage 3 -- +def build(sp, pr, t): + """The voxel model. Order is load-bearing: walls, ledge, recesses, then + the roof solid overwrites what it intersects and the walls are trimmed + to the roof's underside.""" + W, H, D = pr["W"], pr["H"], pr["D"] + inside, top, ytop = pr["inside"], pr["top"], pr["ytop"] + col, src = sp["col"], sp["src"] + slab = t["slab"] + + def T(x): + return ytop - top[max(0, min(W - 1, x))] + + def interior(sx, sy): + """Side faces must not be slabs of outline black: walk inward for the + first painted colour, the way the drawing's own shading does.""" + if col[sy][sx] != BLACK: + return sx + step = 1 if sx < W // 2 else -1 + for d in range(1, 4): + nx = sx + step * d + if inside(nx, sy) and col[sy][nx] != BLACK: + return nx + return sx + + # the roof's drawn span: a sprite inset from its box leaves outer + # columns undrawn in the roof band, and they carry no roof at all + roofed = [x for x in range(W) if top[x] < t["roof_rows"]] + x0d, x1d = (roofed[0], roofed[-1]) if roofed else (0, W - 1) + + def trimmed(x, y): + """Under the roof's underside -- a column with no roof over it has + no underside, and must not be cut by a profile never drawn.""" + return top[max(0, min(W - 1, x))] < t["roof_rows"] and y > T(x) - slab + + vox = {} + + def put(x, y, z, sx, sy): + vox[(x, y, z)] = (col[sy][sx], src[sy][sx]) + + # ---- walls: the facade rows extruded straight back, trimmed under the roof + for sy in range(t["roof_rows"], H): + y = H - 1 - sy + for sx in range(W): + if not inside(sx, sy) or trimmed(sx, y): + continue + ix = interior(sx, sy) + for z in range(D): + if z == 0 or z == D - 1: + put(sx, y, z, sx, sy) + else: + put(sx, y, z, ix, sy) + + # a base course: the drawing's last row is the ground the house stands + # on, so without this the wall floats one voxel over its own plot + for x in range(W): + for z in range(D): + if (x, 0, z) not in vox and (x, 1, z) in vox: + vox[(x, 0, z)] = vox[(x, 1, z)] + + # ---- ledge: the awning slab juts two voxels past the walls + if t["ledge"]: + l0, l1 = t["ledge"] + for sy in range(l0, l1 + 1): + y = H - 1 - sy + for sx in range(W): + if inside(sx, sy) and not trimmed(sx, y): + for z in (-2, -1, D, D + 1): + put(sx, y, z, sx, sy) + + # ---- recesses: the front voxel of every pane sinks, its frame stays proud + for sx, sy in pr["recess"]: + vox.pop((sx, H - 1 - sy, D - 1), None) + + # ---- roof: flat top over the plateau, stepped diagonal ends + z0, z1 = 0, D - 1 + t["front_eave"] + back, front = t["roof_back"], t["roof_front"] + c0, c1 = t["roof_cycle"] + + def roof_sy(z): + df, db = z - z0, z1 - z # from the north / the south edge + if df < back: + return df # north rim: the drawing's top rows + if db < front: + return t["roof_rows"] - 1 - db # south rim: fascia and eave course + return c0 + (df - c0) % (c1 - c0 + 1) + + shade_px = {} + for sy in range(H): + for sx in range(W): + if inside(sx, sy): + shade_px.setdefault(col[sy][sx], (sx, sy)) + + for x in roofed: + tt = T(x) + for z in range(z0, z1 + 1): + outer = x == x0d or x == x1d or z == z0 or z == z1 + # the slope's texture is the drawing's own: clamping into the + # column's first drawn row keeps flank battens running down the + # slope instead of falling off the silhouette + sy = max(roof_sy(z), pr["top"][x]) + for y in range(tt - slab + 1, tt + 1): + if y == tt and not outer: + put(x, y, z, x, sy) + else: + # the rim: the drawing's own eave -- a black outline + # over a shaded fascia, closed by the outline again + if not outer: + shade = DARK + elif y == tt or y == tt - slab + 1: + shade = BLACK + else: + shade = DARK + px = shade_px.get(shade) or shade_px[BLACK] + put(x, y, z, px[0], px[1]) + return vox + + +# --------------------------------------------------------------- stage 5 -- +def verify(vox, sp, pr, t): + W, H, D = pr["W"], pr["H"], pr["D"] + ytop, top, slab = pr["ytop"], pr["top"], t["slab"] + T = lambda x: ytop - top[max(0, min(W - 1, x))] + + for (x, y, z), _ in vox.items(): + assert y <= T(x), f"voxel pokes through the roof at {x},{y},{z}" + + # The roof surface reads over the columns the drawing actually paints: + # a sprite inset from its box says nothing about the rest. + roofed = [x for x in range(W) if top[x] < t["roof_rows"]] + assert roofed, "no roof band is drawn" + prof = [T(x) for x in roofed] + assert prof == prof[::-1], "the roof is not symmetric" + plateau = [i for i, v in enumerate(prof) if v == ytop] + assert plateau, "no flat top" + + if max(top[x] for x in roofed) > 1: + # a slope: eave tip, one step per N columns, flat plateau + for i in range(1, plateau[0]): + assert 0 <= prof[i] - prof[i - 1] <= 1, "the taper is not monotonic" + # the taper rate the drawing sets is the slope: one step per N + # columns, the same N the whole way down to the eave tip + steps = [i for i in range(1, plateau[0] + 1) if prof[i] != prof[i - 1]] + # a rate needs two steps to be a rate. One step is a lip, not a + # slope, and there is nothing to hold it to. + if len(steps) >= 2: + rate = steps[1] - steps[0] + assert all(b - a == rate for a, b in zip(steps, steps[1:])), \ + f"the slope is not a constant {rate}:1" + assert prof[0] == ytop - (plateau[0] + rate - 1) // rate, \ + "the eave tip does not land where the drawn taper ends" + else: + # flat: one level roof the whole drawn span, give or take the + # drawing's own corner rounding + assert all(ytop - v <= 1 for v in prof), "the flat roof is not level" + + # every wall column carries roof over it -- and a column the roof never + # reaches carries nothing at all, rather than being silently trimmed away + over = set(roofed) + for x in range(W): + for z in range(D): + if x not in over: + assert not any((x, y, z) in vox for y in range(ytop + 1)), \ + f"wall stands where no roof reaches at {x},{z}" + elif any((x, y, z) in vox for y in range(0, T(x) - slab + 1)): + assert (x, T(x), z) in vox, f"wall uncovered at {x},{z}" + + shell = [k for k in vox if not all( + (k[0] + d[0], k[1] + d[1], k[2] + d[2]) in vox + for d in ((1, 0, 0), (-1, 0, 0), (0, 1, 0), + (0, -1, 0), (0, 0, 1), (0, 0, -1)))] + return shell + + +def preview(shell, vox, sp, name, out, flip, canvas=(1700, 900), pad=20): + # Mirroring depth swings the camera round to the other side. Mirror + # about the model's own depth range, not a fixed one, or a building + # deeper or shallower than the first two walks off the canvas. + zs = [z for _, _, z in shell] + zlo, zhi = min(zs), max(zs) + pts = [(x, y, (zlo + zhi - z) if flip else z, vox[(x, y, z)][0]) + for (x, y, z) in shell] + pts.sort(key=lambda p: (p[0] + p[2], p[1])) + + # Fit the projection to the model: Silph Co is four times the height of + # Red's house and would otherwise render off the edge. + px = lambda x, z: 2 * (x - z) + py = lambda x, y, z: (x + z) - 2 * y + xs = [px(x, z) for x, _, z, _ in pts] + [px(x + 1, z + 1) for x, _, z, _ in pts] + ys = [py(x, y, z) for x, y, z, _ in pts] + [py(x + 1, y + 1, z + 1) + for x, y, z, _ in pts] + W, H = canvas + S = max(1, min((W - 2 * pad) // max(1, max(xs) - min(xs)), + (H - 2 * pad) // max(1, max(ys) - min(ys)))) + ox = pad - min(xs) * S + (W - 2 * pad - (max(xs) - min(xs)) * S) // 2 + oy = pad - min(ys) * S + (H - 2 * pad - (max(ys) - min(ys)) * S) // 2 + P = lambda x, y, z: (px(x, z) * S + ox, py(x, y, z) * S + oy) + img = Image.new("RGB", canvas, (0xca, 0xdc, 0x9f)) + dr = ImageDraw.Draw(img) + has = {(x, y, z) for x, y, z, _ in pts} + sh = lambda c, f: tuple(int(v * f) for v in sp["pal"][c]) + for x, y, z, c in pts: + if (x, y + 1, z) not in has: + dr.polygon([P(x, y + 1, z), P(x + 1, y + 1, z), + P(x + 1, y + 1, z + 1), P(x, y + 1, z + 1)], fill=sh(c, 1.0)) + if (x + 1, y, z) not in has: + dr.polygon([P(x + 1, y, z), P(x + 1, y + 1, z), + P(x + 1, y + 1, z + 1), P(x + 1, y, z + 1)], fill=sh(c, 0.62)) + if (x, y, z + 1) not in has: + dr.polygon([P(x, y, z + 1), P(x + 1, y, z + 1), + P(x + 1, y + 1, z + 1), P(x, y + 1, z + 1)], fill=sh(c, 0.82)) + img.save(os.path.join(out, name)) + + +def main(): + out = sys.argv[1] if len(sys.argv) > 1 else "." + os.makedirs(out, exist_ok=True) + for name, t in TEMPLATES.items(): + sp = sprite(t["tiles"], t.get("seal", ""), t.get("tileset", "overworld")) + pr = profile(sp, t) + vox = build(sp, pr, t) + shell = verify(vox, sp, pr, t) + print(f"{name}: {sp['W']}x{sp['H']} sprite, depth {pr['D']}, " + f"height {pr['ytop'] + 1} -> voxels {len(vox)} " + f"shell {len(shell)} recessed {len(pr['recess'])}") + preview(shell, vox, sp, f"{name}_front.png", out, True) + preview(shell, vox, sp, f"{name}_back.png", out, False) + + +if __name__ == "__main__": + main()