// title: DOT DASH PIT // desc: Defeat endless waves of enemies using Morse code. // author: He4eT // site: https://github.com/He4eT/DotDashPit // license: MIT License // input: gamepad // saveid: DotDashPit // script: js // version: 1.0 const DOT_DASH_THRESHOLD = 200 const DOT_DASH_IDLE_TIMEOUT = 500 const FONT_SIZE = 1 const HINT_DISTANCE = 30 /* Game Screens */ /** @type {keyof typeof gameScreens} */ let currentScreen = 'startScreen' const gameScreens = { startScreen, gameScreen, gameoverScreen, } function TIC() { gameScreens[currentScreen]() } /* Morse Code */ const morseCode = [ ['A', ' .- '], ['B', ' -... '], ['C', ' -.-. '], ['D', ' -.. '], ['E', ' . '], ['F', ' ..-. '], ['G', ' --. '], ['H', ' .... '], ['I', ' .. '], ['J', ' .--- '], ['K', ' -.- '], ['L', ' .-.. '], ['M', ' -- '], ['N', ' -. '], ['O', ' --- '], ['P', ' .--. '], ['Q', ' --.- '], ['R', ' .-. '], ['S', ' ... '], ['T', ' - '], ['U', ' ..- '], ['V', ' ...- '], ['W', ' .-- '], ['X', ' -..- '], ['Y', ' -.-- '], ['Z', ' --.. '], ].map(([letter, code]) => [letter, code.trim()]) const alphabet = morseCode.map(([letter]) => letter) const letterToMorse = Object.fromEntries(morseCode) const morseToLetter = Object.fromEntries( morseCode.map((pair) => pair.reverse()), ) function morseWidth(codeList) { return codeList.reduce( (acc, x) => acc + MORSE_GAP + MORSE_SYMBOL_WIDTHS[x], 0, ) } function drawMorse(codeList, x, y, color, width) { const paddingLeft = width ? (width - morseWidth(codeList)) / 2 : MORSE_GAP let offset = x + paddingLeft codeList.forEach((c) => { rect(offset, y, MORSE_SYMBOL_WIDTHS[c], MORSE_GAP, color) offset += MORSE_SYMBOL_WIDTHS[c] + MORSE_GAP }) } function playMorseKey(seed) { const note = rnd(57, 72, seed) const volume = rnd(8, 10, seed) sfx(0, note, 4, 0, volume, 0) } /* Arena */ /** @type {Arena} */ const arena = { screenPosition: { x: 7, y: 7, }, bounds: { top: 0, right: 225, bottom: 105, left: 0, }, gameoverTimestamp: 0, highscore: pmem(0), wave: 0, waveSeed: 0, } function drawArena() { cls(0) map(30, 0, 30, 17) } /* Player */ /** @type {Player} */ const player = { state: 'default', score: 0, key: { history: '', buffer: '.-----', isDown: false, downAt: 0, upAt: 0, }, position: { x: rnd(arena.bounds.left, arena.bounds.right), y: rnd(arena.bounds.top, arena.bounds.bottom), }, } const playerStates = { default: { speed: 1, sprite: 256, }, dot: { speed: 1.5, sprite: 257, }, dash: { speed: 2, sprite: 258, }, } function handleMoves() { let dx = 0 if (btn(BTN_L)) dx -= 1 if (btn(BTN_R)) dx += 1 let dy = 0 if (btn(BTN_U)) dy -= 1 if (btn(BTN_D)) dy += 1 const norm = playerStates[player.state].speed / ([dx, dy].every((d) => d !== 0) ? Math.SQRT2 : 1) player.position = { x: clamp( arena.bounds.left, arena.bounds.right, )(player.position.x + dx * norm), y: clamp( arena.bounds.top, arena.bounds.bottom, )(player.position.y + dy * norm), } } function handleMorse() { const { key } = player const now = time() const buttonPressed = [BTN_A, BTN_B, BTN_X, BTN_Y].some(btn) /* Down */ if (buttonPressed && !key.isDown) { key.isDown = true key.downAt = now } /* Hold */ if (buttonPressed && key.isDown) { const isDash = now - key.downAt > DOT_DASH_THRESHOLD player.state = isDash ? 'dash' : 'dot' playMorseKey(arena.waveSeed) } /* Release */ if (!buttonPressed && key.isDown) { player.state = 'default' key.isDown = false key.upAt = now key.buffer += key.upAt - key.downAt < DOT_DASH_THRESHOLD ? '.' : '-' effects.push({ type: 'detection', frames: [15], to: player.position, }) } /* Flush */ if ( !buttonPressed && key.buffer.length > 0 && now - key.upAt > DOT_DASH_IDLE_TIMEOUT ) { if (morseToLetter[key.buffer]) { const letter = morseToLetter[key.buffer] destroyEnemiesByLetter(letter) key.history += letter } else { key.history += ' ' } key.buffer = '' key.history = key.history.slice(-1 * HISTORY_LENGTH) } } function drawPlayer() { drawSprite(playerStates[player.state].sprite, player.position) } /* Enemies */ /** @type {Enemy[]} */ let enemies = [] const enemyBlueprints = { point: { sprite: 272, spawnDistance: 20, maxSpeed: 0, dangerZone: 8, value: 1, behaviour: () => {}, }, fidget: { sprite: 273, spawnDistance: 40, maxSpeed: 0.9, dangerZone: 6, value: 3, behaviour: (enemy) => { const jitter = 0.05 if (Math.random() < jitter) { const angle = Math.random() * 2 * Math.PI const current = enemy.positions[0] const randomPrevious = { x: current.x - Math.cos(angle), y: current.y - Math.sin(angle), } enemy.positions[1] = randomPrevious } enemyBlueprints.bounce.behaviour(enemy) }, }, bounce: { sprite: 274, spawnDistance: 100, maxSpeed: 1.2, dangerZone: 6, value: 5, behaviour: (enemy) => { const minSpeed = 0.6 const speed = Math.max(minSpeed, enemy.speed) const current = enemy.positions[0] const previous = enemy.positions[1] const d = getDirection(previous, current) let dx = d.x * speed let dy = d.y * speed let newX = current.x + dx let newY = current.y + dy if (newX < arena.bounds.left || newX > arena.bounds.right) { dx = -dx newX = current.x + dx } if (newY < arena.bounds.top || newY > arena.bounds.bottom) { dy = -dy newY = current.y + dy } enemy.positions = [ { x: newX, y: newY }, { x: current.x, y: current.y }, ] }, }, zombie: { sprite: 276, spawnDistance: 80, maxSpeed: 2, dangerZone: 5, value: 10, behaviour: (enemy) => { const laziness = 0.8 if (Math.random() > laziness) { enemyBlueprints.follower.behaviour(enemy) } }, }, follower: { sprite: 275, spawnDistance: 80, maxSpeed: 1, dangerZone: 5, value: 10, behaviour: (enemy) => { const minSpeed = 0.5 const speed = Math.max(minSpeed, enemy.speed) const current = enemy.positions[0] const target = player.position const d = getDirection(current, target) enemy.positions = [ { x: current.x + d.x * speed, y: current.y + d.y * speed, }, ] }, }, } function checkCollisions() { const collide = (enemy) => getDistance(player.position, enemy.positions[0]) < enemy.dangerZone if (enemies.some(collide)) { gameover() } } function spawnEnemies() { if (enemies.length > 0) { return } arena.wave += 1 arena.waveSeed = (Math.sin(arena.wave * 91.17) * 10000) % 1 const enemyCount = 1 + Math.floor(arena.wave / 2) const getType = (wave) => { if (wave <= 2) return 'point' const availableTypes = Object.keys(enemyBlueprints) return availableTypes[rnd(0, availableTypes.length - 1)] } const getSpawnPosition = (type) => { const minDistance = enemyBlueprints[type].spawnDistance const b = 4 * SPRITE_RADIUS let x, y, distance do { x = rnd(arena.bounds.left + b, arena.bounds.right - b) y = rnd(arena.bounds.top + b, arena.bounds.bottom - b) distance = getDistance({ x, y }, player.position) } while (distance < minDistance) return { x, y } } enemies = arr(enemyCount).map(() => { const type = getType(arena.wave) return { type, speed: enemyBlueprints[type].maxSpeed * Math.random(), value: enemyBlueprints[type].value, letter: alphabet[rnd(0, alphabet.length - 1)], positions: [getSpawnPosition(type), getSpawnPosition(type)], dangerZone: enemyBlueprints[type].dangerZone, } }) enemies.forEach((enemy) => { effects.push({ type: 'detection', to: enemy.positions[0], frames: arr(10, 4), }) }) } function moveEnemies() { enemies.forEach((enemy) => { enemyBlueprints[enemy.type].behaviour(enemy) }) } function destroyEnemiesByLetter(letter) { const destructionEffects = [ ['laser', '13577531'], ['laser', '24667642'], ['laser', '1234777654321'], ['nuke', '765432'], ['verticalLine', '45677654'], ['horizontalLine', '45677654'], ].map(([name, frames]) => [name, frames.split('')]) enemies .filter((enemy) => enemy.letter === letter) .forEach((enemy) => { player.score += enemy.value const [type, frames] = destructionEffects[rnd(0, destructionEffects.length - 1)] effects.push({ type, frames, from: player.position, to: enemy.positions[0], }) }) enemies = enemies.filter((enemy) => enemy.letter !== letter) } function drawEnemies() { enemies.forEach((enemy) => drawSprite(enemyBlueprints[enemy.type].sprite, enemy.positions[0]), ) } function drawEnemyLetters() { const backgroundColor = 2 const borderColor = 5 const letterWidth = 8 * FONT_SIZE const letterHeight = 7 * FONT_SIZE const boxWidth = letterWidth + 2 * FONT_SIZE const boxHeight = letterHeight + 4 * FONT_SIZE const offset = 9 + 2 * SPRITE_RADIUS * FONT_SIZE enemies.forEach((enemy) => { const enemyPosition = enemy.positions[0] const d = getDirection(player.position, enemyPosition) const letterPosition = { x: enemyPosition.x + d.x * offset, y: enemyPosition.y + d.y * offset, } const screenPosition = worldToScreen(letterPosition) const boxX = screenPosition.x - boxWidth / 2 + FONT_SIZE const boxY = screenPosition.y - boxHeight / 2 + FONT_SIZE const letterX = screenPosition.x - letterWidth / 2 + FONT_SIZE const letterY = screenPosition.y - letterHeight / 2 + FONT_SIZE rect(boxX, boxY, boxWidth, boxHeight, backgroundColor) rectb(boxX, boxY, boxWidth, boxHeight, borderColor) font(enemy.letter, letterX, letterY, 0, 8, 8, true, FONT_SIZE) if (getDistance(player.position, enemy.positions[0]) < HINT_DISTANCE) { const code = letterToMorse[enemy.letter].split('') const hintWidth = MORSE_GAP + morseWidth(code) const hintPosition = { x: boxX, y: boxY + boxHeight + 2, } rect( hintPosition.x, hintPosition.y - 1, Math.max(boxWidth, hintWidth), MORSE_GAP + 2, borderColor, ) drawMorse(code, hintPosition.x, hintPosition.y, backgroundColor) } }) } /* Effects */ /** @type {Effect[]} */ let effects = [] const effectRenderers = { flash: ({ frames }) => { const color = parseInt(frames.shift()) cls(color) }, laser: ({ from, to, frames }) => { const color = frames.shift() line(from.x, from.y, to.x, to.y, color) circ(from.x, from.y, frames.length / 3, color) circ(to.x, to.y, frames.length / 2, color) circb(to.x, to.y, frames.length, color + 3) }, nuke: ({ to, frames }) => { const color = frames.shift() circ(to.x, to.y, Math.pow(frames.length, 5), color) }, verticalLine: ({ to, frames }) => { const color = frames.shift() rect(0, to.y - frames.length, SCREEN_W, frames.length * 2, color) }, horizontalLine: ({ to, frames }) => { const color = frames.shift() rect(to.x - frames.length, 0, frames.length * 2, SCREEN_W, color) }, detection: ({ to, frames }) => { const color = frames.shift() const w = SPRITE_RADIUS const d = frames.length + 2 * w const corners = [ [+1, +1], [+1, -1], [-1, +1], [-1, -1], ] corners.forEach(([dx, dy]) => { const x = to.x + dx * d const y = to.y + dy * d line(x, y, x - dx * w, y, color) line(x, y, x, y - dy * w, color) }) }, } function drawFX() { effects .map((effect) => ({ ...effect, from: worldToScreen(effect.from ?? {}), to: worldToScreen(effect.to ?? {}), })) .forEach((effect) => effectRenderers[effect.type](effect)) effects = effects.filter(({ frames }) => frames.length > 0) } /* HUD */ function drawHUD() { const recentMorse = player.key.buffer.slice(-MORSE_DISPLAY_LIMIT).split('') drawMorse(recentMorse, 101, 123, 15, 36) print( player.key.history.padStart(HISTORY_LENGTH), HISTORY_X, HISTORY_Y, 6, true, ) print( player.score.toString().padStart(SCORE_LENGTH), SCORE_X, SCORE_Y, 6, true, ) } /* Start Screen */ function startScreen() { cls(0) map(0, 0, 30, 17) font('DOT DASH PIT', 15, 15, 0, 7, 8, false, 1) print('HIGH SCORE:', HISTORY_X, HISTORY_Y, 6, false) print( String(arena.highscore).padStart(SCORE_LENGTH), SCORE_X, SCORE_Y, 6, true, ) if (anyKeyPressed()) { currentScreen = 'gameScreen' } } /* Gameplay */ function gameScreen() { checkCollisions() spawnEnemies() handleMoves() handleMorse() moveEnemies() drawArena() drawHUD() drawFX() drawEnemies() drawPlayer() drawEnemyLetters() } /* Game Over */ function gameoverScreen() { cls(0) map(0, 0, 30, 17) drawFX() drawEnemies() drawPlayer() if (effects.length === 0) { print( player.score.toString().padStart(SCORE_LENGTH), SCORE_X, SCORE_Y, 6, true, ) print( player.score > arena.highscore ? 'NEW HIGH SCORE!' : 'GAME OVER', HISTORY_X, HISTORY_Y, player.score > arena.highscore ? 9 : 10, false, ) if (time() - arena.gameoverTimestamp >= 500 && anyKeyPressed()) { reset() } } } function gameover() { currentScreen = 'gameoverScreen' arena.gameoverTimestamp = time() if (player.score > arena.highscore) { pmem(0, player.score) sfx(0, 38, 30, 1, 6) } else { sfx(0, 17, 30, 1, 5) } effects = [ { type: 'flash', frames: '77777777777765432'.split(''), }, ] } /* Utils */ function arr(n, filler) { const result = [] for (let i = 0; i < n; i++) { result.push(filler) } return result } function clamp(min, max) { return (value) => Math.max(min, Math.min(max, value)) } function rnd(from, to, seed) { const rand = typeof seed === 'number' ? seed : Math.random() return Math.floor(rand * (to - from + 1)) + from } function getDistance(from, to) { return Math.hypot(from.x - to.x, from.y - to.y) } function getDirection(from, to) { const dx = to.x - from.x const dy = to.y - from.y const distance = Math.hypot(dx, dy) || 1 return { x: dx / distance, y: dy / distance, } } function worldToScreen({ x, y }) { return { x: Math.floor(x + arena.screenPosition.x), y: Math.floor(y + arena.screenPosition.y), } } function drawSprite(spriteIndex, position) { const colorkey = 0 const center = worldToScreen(position) spr(spriteIndex, center.x - SPRITE_RADIUS, center.y - SPRITE_RADIUS, colorkey) } function anyKeyPressed() { return arr(8) .map((_, i) => i) .some((b) => btnp(b, 500)) } /* Constants */ /* Interface */ const SPRITE_RADIUS = 3 const HISTORY_LENGTH = 14 const HISTORY_X = 7 const HISTORY_Y = 118 const SCORE_LENGTH = 14 const SCORE_X = 152 const SCORE_Y = 125 const MORSE_DISPLAY_LIMIT = 7 const MORSE_GAP = 1 const MORSE_SYMBOL_WIDTHS = { '.': 1 * MORSE_GAP, '-': 3 * MORSE_GAP, } /* Screen */ const SCREEN_W = 240 const SCREEN_H = 136 /* Buttons */ const BTN_U = 0 const BTN_D = 1 const BTN_L = 2 const BTN_R = 3 const BTN_A = 4 const BTN_B = 5 const BTN_X = 6 const BTN_Y = 7 /* Types */ /** * @typedef {{ x: number, y: number }} Point * * @typedef {{ * screenPosition: Point, * bounds: { * top: number, * right: number, * bottom: number, * left: number, * }, * gameoverTimestamp: number, * highscore: number, * wave: number, * waveSeed: number, * }} Arena * * @typedef {{ * state: keyof typeof playerStates, * score: number, * key: { * history: string, * buffer: string, * isDown: boolean, * downAt: number, * upAt: number, * }, * position: Point, * }} Player * * @typedef {{ * type: keyof typeof enemyBlueprints, * speed: number, * positions: Point[], * letter: string, * dangerZone: number, * value: number, * }} Enemy * * @typedef {{ * type: keyof typeof effectRenderers * from: Point, * to: Point, * frames: number[], * }} Effect */ // // 001:0000000000000000000000000000000000000000000000000000055400000544 // 002:0000000000000000000000000000000000000000000000004444444444444444 // 003:0000000000000000000000000000000000000000000000000000000044444444 // 004:0000000000000000000000000000000000000000000000040000004444444444 // 005:0000444400044444004444440444444144444411444444444444444444444444 // 006:4444444444444444111111111111111111111111444444444444444444444444 // 007:4444444444444444111111141111114411111444444444444444444444444444 // 008:4444444444444440444444114444411144441111444111144400004440000444 // 009:0000444400044440114444001444400044440000444000004400000040000000 // 010:4444004400000444444444440000000000000000000000000000000000000000 // 011:4444444444444444444444400000000000000000000000000000000000000000 // 012:4444444400000000000000000000000000000000000000000000000000000000 // 013:4444444444444444000000000000000000000000000000000000000000000000 // 014:4450000045500000000000000000000000000000000000000000000000000000 // 016:0000000000000000000000000000000000000000000003330000030000000304 // 017:0000000000000000000000000000000000000000000000000000000044444444 // 018:0000000000000000000000000000000000000000333000000030000040300000 // 019:0000000000000000000000000000000000000000000001110000012200000124 // 020:0000000000000000000000000000000000000000111111112222222244444444 // 021:0000000000000000000000000000000000000000111000002210000042100000 // 032:0000000400000004000000040000000400000004000000040000000400000004 // 033:3000000300000000000000000000000000000000000000000000000030000003 // 034:4000000040000000400000004000000040000000400000004000000040000000 // 035:0000012400000124000001240000012400000124000001240000012400000124 // 036:2111111211111111111111111111111111111111111111111111111121111112 // 037:4210000042100000421000004210000042100000421000004210000042100000 // 048:0000030400000300000003330000000000000000000000000000000000000000 // 049:4444444400000000000000000000000000000000000000000000000000000000 // 050:4030000000300000333000000000000000000000000000000000000000000000 // 051:0000012400000122000001110000000000000000000000000000000000000000 // 052:4444444422222222111111110000000000000000000000000000000000000000 // 053:4210000022100000111000000000000000000000000000000000000000000000 // // // 000:8800088080000080008880000088800000888000800000808800088000000000 // 001:8800088080000080000000000008000000000000800000808800088000000000 // 002:0000000008808800080008000008000008000800088088000000000000000000 // 016:aaaaaaa0aaaaaaa0aa000aa0aa000aa0aa000aa0aaaaaaa0aaaaaaa000000000 // 017:aaaaaaa0a00a00a0a00a00a0aaaaaaa0a00a00a0a00a00a0aaaaaaa000000000 // 018:00a0a00000000000a0aaa0a000aaa000a0aaa0a00000000000a0a00000000000 // 019:aa000aa0aa000aa000aaa00000aaa00000aaa000aa000aa0aa000aa000000000 // 020:aa000aa0aaaaaaa00aaaaa000aaaaa000aaaaa00aaaaaaa0aa000aa000000000 // 065:0eeeeee00ee000e00ee000e00eeeeee00ee000e00ee000e00ee000e000000000 // 066:0eeeee000ee00e000ee00e000eeeeee00ee000e00ee000e00eeeeee000000000 // 067:0eeeeee00ee000e00ee000000ee000000ee000000ee000e00eeeeee000000000 // 068:0eeeee000ee000e00ee000e00ee000e00ee000e00ee000e00eeeee0000000000 // 069:0eeeeee00ee000000ee000000eeee0000ee000000ee000000eeeeee000000000 // 070:0eeeeee00ee000000ee000000eeeee000ee000000ee000000ee0000000000000 // 071:0eeeeee00ee000e00ee000000ee00ee00ee000e00ee000e00eeeeee000000000 // 072:0ee000e00ee000e00ee000e00eeeeee00ee000e00ee000e00ee000e000000000 // 073:0eeeeee0000ee000000ee000000ee000000ee000000ee0000eeeeee000000000 // 074:00eeeee00000ee000000ee000000ee000e00ee000e00ee000eeeee0000000000 // 075:0ee000e00ee00e000ee0e0000eee0e000ee000e00ee000e00ee000e000000000 // 076:0ee000000ee000000ee000000ee000000ee000000ee000e00eeeeee000000000 // 077:0eee0ee00eeeeee00ee0e0e00ee0e0e00ee000e00ee000e00ee000e000000000 // 078:0ee000e00eee00e00ee0e0e00ee00ee00ee000e00ee000e00ee000e000000000 // 079:0eeeeee00ee000e00ee000e00ee000e00ee000e00ee000e00eeeeee000000000 // 080:0eeeeee00ee000e00ee000e00ee000e00eeeeee00ee000000ee0000000000000 // 081:0eeeeee00ee000e00ee000e00ee000e00ee000e00ee00e000eeee0e000000000 // 082:0eeeeee00ee000e00ee000e00ee000e00eeeeee00ee00e000ee000e000000000 // 083:0eeeeee00ee000e00ee000000eeeeee000000ee00e000ee00eeeeee000000000 // 084:0eeeeee0000ee000000ee000000ee000000ee000000ee000000ee00000000000 // 085:0ee000e00ee000e00ee000e00ee000e00ee000e00ee000e000eeee0000000000 // 086:0ee000e00ee000e00ee000e00ee000e00ee000e000ee0e00000ee00000000000 // 087:0ee000e00ee000e00ee000e00ee0e0e00ee0e0e00eeeeee000ee0e0000000000 // 088:0ee00ee00ee00ee000eeee00000ee00000eeee000ee00ee00ee00ee000000000 // 089:0ee00ee00ee00ee00ee00ee000eeee00000ee000000ee000000ee00000000000 // 090:0eeeeee00e000ee00000ee00000ee00000ee00000ee000e00eeeeee000000000 // // // 000:011111111111111111111111111111111111111111111111111111111121314141414141414141414141414141414141414141414141414141414151000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 001:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 002:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 003:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 004:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 005:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 006:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 007:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 008:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 009:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 010:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 011:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 012:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 013:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 014:031313131313131313131313131313131313131313131313131313131323334343434343434343434343434343434343434343434343434343434353000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // 015:10202020303030303030304050606060708090a0b0c0c0c0c0c0c0c0d0e010202020303030303030304050606060708090a0b0c0c0c0c0c0c0c0d0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // // // 000:00000000ffffffff00000000ffffffff // 001:0123456789abcdeffedcba9876543210 // 002:0123456789abcdef0123456789abcdef // // // 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000 // // // 000:100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 // // // 000:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 001:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 002:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 003:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 004:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 005:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 006:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 007:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 008:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 009:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 010:111111118888888888888881111188888111118888811111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888888888888881111188888111118888811111111 // 011:111111118888888888888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888888888888882111188888211118888821111111 // 012:111111118888888888888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888888888888882111188888211118888821111111 // 013:111111118888888888888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888888888888882111188888211118888821111111 // 014:111111118888888888888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888888888888882111188888211118888821111111 // 015:111111111222222222222222111112222211111222221111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222111112222211111222221111111 // 016:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 017:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 018:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 019:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 020:111111118888888888888881111188888888888888811111888888888888888111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888888888888888111118888888888888881111188888888888888811111111 // 021:111111118888888888888882111188888888888888821111888888888888888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888888888888888211118888888888888882111188888888888888821111111 // 022:111111118888888888888882111188888888888888821111888888888888888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888888888888888211118888888888888882111188888888888888821111111 // 023:111111118888888888888882111188888888888888821111888888888888888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888888888888888211118888888888888882111188888888888888821111111 // 024:111111118888888888888882111188888888888888821111888888888888888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888888888888888211118888888888888882111188888888888888821111111 // 025:111111111222222222222222111112222222222222221111122222222222222211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222211111222222222222222111112222222222222221111111 // 026:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 027:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 028:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 029:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 030:111111118888888888888881111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888888888888811111111 // 031:111111118888888888888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888888888888821111111 // 032:111111118888888888888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888888888888821111111 // 033:111111118888888888888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888888888888821111111 // 034:111111118888888888888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888888888888821111111 // 035:111111111222222222222222111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222222222222221111111 // 036:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 037:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 038:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 039:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 040:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 041:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 042:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 043:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 044:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 045:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 046:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 047:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 048:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 049:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 050:111111118888888888888881111188888111118888811111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888888888888881111188888111118888811111111 // 051:111111118888888888888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888888888888882111188888211118888821111111 // 052:111111118888888888888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888888888888882111188888211118888821111111 // 053:111111118888888888888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888888888888882111188888211118888821111111 // 054:111111118888888888888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888888888888882111188888211118888821111111 // 055:111111111222222222222222111112222211111222221111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222111112222211111222221111111 // 056:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 057:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 058:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 059:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 060:111111118888811111888888888888888111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888881111188888888888888811111111 // 061:111111118888821111888888888888888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888888888888821111111 // 062:111111118888821111888888888888888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888888888888821111111 // 063:111111118888821111888888888888888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888888888888821111111 // 064:111111118888821111888888888888888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888888888888821111111 // 065:111111111222221111122222222222222211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222111112222222222222221111111 // 066:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 067:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 068:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 069:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 070:111111118888811111888881111188888111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888881111188888111118888811111111 // 071:111111118888821111888882111188888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888211118888821111111 // 072:111111118888821111888882111188888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888211118888821111111 // 073:111111118888821111888882111188888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888211118888821111111 // 074:111111118888821111888882111188888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888211118888821111111 // 075:111111111222221111122222111112222211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222111112222211111222221111111 // 076:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 077:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 078:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 079:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 080:111111118888811111888881111188888111118888811111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888811111888881111188888111118888811111111 // 081:111111118888821111888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888821111888882111188888211118888821111111 // 082:111111118888821111888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888821111888882111188888211118888821111111 // 083:111111118888821111888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888821111888882111188888211118888821111111 // 084:111111118888821111888882111188888211118888821111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111118888821111888882111188888211118888821111111 // 085:111111111222221111122222111112222211111222221111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222221111122222111112222211111222221111111 // 086:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 087:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 088:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 089:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 090:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 091:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 092:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 093:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 094:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 095:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 096:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 097:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 098:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 099:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 100:111111118888811111888888888888888111118888888888888881111188888111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888881111188888888888888811111888888888888888111118888811111111 // 101:111111118888821111888888888888888211118888888888888882111188888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888888888888821111888888888888888211118888821111111 // 102:111111118888821111888888888888888211118888888888888882111188888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888888888888821111888888888888888211118888821111111 // 103:111111118888821111888888888888888211118888888888888882111188888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888888888888821111888888888888888211118888821111111 // 104:111111118888821111888888888888888211118888888888888882111188888211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111888882111188888888888888821111888888888888888211118888821111111 // 105:111111111222221111122222222222222211111222222222222222111112222211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222111112222222222222221111122222222222222211111222221111111 // 106:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 107:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 108:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 109:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 110:111111118888811111888881111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888111118888811111111 // 111:111111118888821111888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888211118888821111111 // 112:111111118888821111888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888211118888821111111 // 113:111111118888821111888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888211118888821111111 // 114:111111118888821111888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888211118888821111111 // 115:111111111222221111122222111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222211111222221111111 // 116:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 117:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 118:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 119:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 120:111111118888888888888881111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888888888888811111111 // 121:111111118888888888888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888888888888821111111 // 122:111111118888888888888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888888888888821111111 // 123:111111118888888888888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888888888888821111111 // 124:111111118888888888888882111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111188888888888888821111111 // 125:111111111222222222222222111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222222222222221111111 // 126:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 127:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 128:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 129:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 130:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 131:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 132:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 133:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 134:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // 135:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 // // // 000:000000002b3607364221292c586e75657b83839496ffffffb58900cb4b16dc322fd336826c71c4268bd22aa198859900 //