Browse Source

various changes

master
James Fenn 2 months ago
parent
commit
3b48c9ea1a
9 changed files with 209 additions and 179 deletions
  1. +5
    -27
      dungeon/src/commonMain/kotlin/me/jfenn/dungeon/api/file/MapParser.kt
  2. +4
    -0
      dungeon/src/commonMain/kotlin/me/jfenn/dungeon/api/view/ViewEventListener.kt
  3. +6
    -3
      dungeon/src/commonMain/kotlin/me/jfenn/dungeon/core/graphics/pixel/PixelGroup.kt
  4. +1
    -1
      dungeon/src/commonMain/kotlin/me/jfenn/dungeon/core/graphics/render/DynamicCachedRenderEngine.kt
  5. +1
    -1
      dungeon/src/commonMain/kotlin/me/jfenn/dungeon/core/vector/area/LineArea.kt
  6. +24
    -6
      dungeon/src/jvmMain/kotlin/me/jfenn/dungeon/api/view/JDungeonCanvas.kt
  7. +91
    -91
      example-swing/src/main/java/me/jfenn/dungeon/CreeperScene.kt
  8. +2
    -2
      example-swing/src/main/java/me/jfenn/dungeon/Main.kt
  9. +75
    -48
      example-swing/src/main/java/me/jfenn/dungeon/SnakeScene.kt

+ 5
- 27
dungeon/src/commonMain/kotlin/me/jfenn/dungeon/api/file/MapParser.kt View File

@@ -1,7 +1,7 @@
package me.jfenn.dungeon.api.file

import me.jfenn.dungeon.core.color.Color.Companion.color
import me.jfenn.dungeon.core.extensions.colorString
import me.jfenn.dungeon.core.extensions.set
import me.jfenn.dungeon.core.graphics.Luminance
import me.jfenn.dungeon.core.graphics.pixel.LuminousPixel
import me.jfenn.dungeon.core.graphics.pixel.PixelGroup
@@ -113,36 +113,14 @@ class MapParser {
private fun parseColor(str: String) : Int {
val arr = str.split(COLOR_SEPARATOR.toRegex());
var alpha = 1f
val colorString: String
val color: String

if (arr.size > 1) {
alpha = arr[0].toFloat()
colorString = arr[1]
} else colorString = arr[0]

val rgb: IntArray = parseHexString(colorString)
return color(
red = rgb[0],
green = rgb[1],
blue = rgb[2],
alpha = alpha
)
}
color = arr[1]
} else color = arr[0]

private fun parseHexString(str: String) : IntArray {
return when (str.length) {
6 -> intArrayOf(
str.substring(0, 2).toInt(16),
str.substring(2, 4).toInt(16),
str.substring(4, 6).toInt(16)
)
3 -> intArrayOf(
str[0].toString().toInt(16) * 16,
str[1].toString().toInt(16) * 16,
str[2].toString().toInt(16) * 16
)
else -> throw Exception("Incorrectly formatted color string: $str")
}
return colorString(color)
}

}

+ 4
- 0
dungeon/src/commonMain/kotlin/me/jfenn/dungeon/api/view/ViewEventListener.kt View File

@@ -8,4 +8,8 @@ interface ViewEventListener {

fun onMouseUp(x: Int, y: Int) {}

fun onKeyDown(keyCode: Int) {}

fun onKeyUp(keyCode: Int) {}

}

+ 6
- 3
dungeon/src/commonMain/kotlin/me/jfenn/dungeon/core/graphics/pixel/PixelGroup.kt View File

@@ -53,11 +53,14 @@ open class PixelGroup (
}

fun applyTo(other: PixelGroup) {
for (p in pixels)
other.pixels.add(p)
for (p in pixels) {
if (other.pixels[p.position] == null)
other.pixels.add(p)
}

for (l in lights)
other.lights.add(l)
if (other.lights[l.position] == null)
other.lights.add(l)
}

fun move(block: Vector<Int>.MoveTransaction<Int>.() -> Unit) {


+ 1
- 1
dungeon/src/commonMain/kotlin/me/jfenn/dungeon/core/graphics/render/DynamicCachedRenderEngine.kt View File

@@ -60,7 +60,7 @@ class DynamicCachedRenderEngine(
} ?: SpatialMap()*/

for (pixelPos in rootGroup.pixels.keys()) {
if (pixelPos.z > light.position.z || (lightMap[pixelPos] != null && !isPixelSpecial(light.position, pixelPos)))
if (pixelPos.z != light.position.z || light.position.distanceTo(pixelPos) > light.getAffectedRadius() || (lightMap[pixelPos] != null && !isPixelSpecial(light.position, pixelPos)))
continue

var intensity = 1f // start at light source center


+ 1
- 1
dungeon/src/commonMain/kotlin/me/jfenn/dungeon/core/vector/area/LineArea.kt View File

@@ -11,7 +11,7 @@ class LineArea(
): Area<IntVector> {

companion object {
const val SQUARE_MULTIPLIER = 1f // approximation of sqrt(2)
const val SQUARE_MULTIPLIER = 1.5f // approximation of sqrt(2)
}

private val delta: FloatVector


+ 24
- 6
dungeon/src/jvmMain/kotlin/me/jfenn/dungeon/api/view/JDungeonCanvas.kt View File

@@ -5,16 +5,13 @@ import me.jfenn.dungeon.core.color.Color
import me.jfenn.dungeon.core.spatial.SpatialCollection
import me.jfenn.dungeon.core.extensions.vectorOf
import java.awt.Graphics
import java.awt.event.ComponentEvent
import java.awt.event.ComponentListener
import java.awt.event.MouseEvent
import java.awt.event.MouseMotionListener
import java.awt.event.*
import javax.swing.JComponent

open class JDungeonCanvas(
val env: Config,
val listener: ViewEventListener
): JComponent(), ComponentListener, MouseMotionListener {
): JComponent(), ComponentListener, MouseMotionListener, KeyListener {

private var pixels: SpatialCollection<Int>? = null
private var pixelSize: Int = 1
@@ -23,6 +20,11 @@ open class JDungeonCanvas(
init {
addComponentListener(this)
addMouseMotionListener(this)
addKeyListener(this)

isFocusable = true
focusTraversalKeysEnabled = false
requestFocusInWindow()
}

fun onPixelsChanged(pixels: SpatialCollection<Int>) {
@@ -33,6 +35,9 @@ open class JDungeonCanvas(
}

override fun paintComponent(g: Graphics) {
g.color = java.awt.Color(env.ambientLight)
g.fillRect(0, 0, width, height)

pixels?.forEach { position, color ->
g.color = java.awt.Color(color)
g.fillRect(
@@ -56,7 +61,6 @@ open class JDungeonCanvas(
}

override fun componentHidden(p0: ComponentEvent?) {}

override fun componentShown(p0: ComponentEvent?) {}

override fun mouseMoved(p0: MouseEvent?) {
@@ -69,5 +73,19 @@ open class JDungeonCanvas(
}

override fun mouseDragged(p0: MouseEvent?) {}
override fun keyTyped(p0: KeyEvent?) {}

override fun keyPressed(p0: KeyEvent?) {
p0?.let {
listener.onKeyDown(it.keyCode)
}

}

override fun keyReleased(p0: KeyEvent?) {
p0?.let {
listener.onKeyUp(it.keyCode)
}
}

}

+ 91
- 91
example-swing/src/main/java/me/jfenn/dungeon/CreeperScene.kt View File

@@ -10,102 +10,102 @@ import me.jfenn.dungeon.core.graphics.Sprite

const val MAP_BACKGROUND = """
[map]
FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0
393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0
3F3@0,333@0,333@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0
3F3@0,333@0,333@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0
393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0
3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0
FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0
3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0
FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0
393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0
3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0
3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0
393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0
3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0
FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0
3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0
FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0
393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0
3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000|5,000|5,393@0,3F3@0,000|5,000|5,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000|5,000|5,393@0,3F3@0,000|5,000|5,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0
3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000|5,000|5,3F3@0,393@0,000|5,000|5,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000|5,000|5,3F3@0,393@0,000|5,000|5,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0
393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000|5,000|5,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000|5,000|5,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0
3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000|5,000|5,000|5,000|5,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000|5,000|5,000|5,000|5,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0
FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000|5,000|5,000|5,000|5,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000|5,000|5,000|5,000|5,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0
3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000|5,3F3@0,FFF@0,000|5,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000|5,3F3@0,FFF@0,000|5,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0
FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0
393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0
3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0
3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0
393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0
3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0
FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0
3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0
FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0
393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0
3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0
3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0
393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0
3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0
FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0
3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0
FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0
393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0
3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0
3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0
393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0
3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0
FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0
3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0
FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0
393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0
3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0
3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0
393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0
3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0
FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0
3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0
FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0
393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0
3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000|5,000|5,393@0,3F3@0,000|5,000|5,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000|5,000|5,393@0,3F3@0,000|5,000|5,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0
3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000|5,000|5,3F3@0,393@0,000|5,000|5,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000|5,000|5,3F3@0,393@0,000|5,000|5,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0
393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000|5,000|5,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000|5,000|5,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0
3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000|5,000|5,000|5,000|5,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000|5,000|5,000|5,000|5,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0
FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000|5,000|5,000|5,000|5,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000|5,000|5,000|5,000|5,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0
3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000|5,3F3@0,FFF@0,000|5,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000|5,3F3@0,FFF@0,000|5,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0
FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0
393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0
3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0
3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0
393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0
3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0
FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0
3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0
FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0,FFF@0,393@0,3F3@0,3F3@0,FFF@0,3F3@0,3F3@0,393@0
393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0,393@0,3F3@0,393@0,3F3@0,393@0,3F3@0,393@0,FFF@0
3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0,3F3@0,000@0,000@0,393@0,3F3@0,000@0,000@0,FFF@0
3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0,3F3@0,000@0,000@0,3F3@0,393@0,000@0,000@0,3F3@0
393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0,393@0,3F3@0,3F3@0,000@0,000@0,FFF@0,393@0,393@0
3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0,3F3@0,393@0,000@0,000@0,000@0,000@0,3F3@0,FFF@0
FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0,FFF@0,393@0,000@0,000@0,000@0,000@0,3F3@0,393@0
3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0,3F3@0,3F3@0,000@0,3F3@0,FFF@0,000@0,393@0,3F3@0
0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393
0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF
03F3,0333,0333,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF
03F3,0333,0333,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3
0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393
03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF
0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393
03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3
0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393
0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF
03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF
03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3
0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393
03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF
0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393
03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3
0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393
0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF
03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,A000,A000,0393,03F3,A000,A000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF
03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,A000,A000,03F3,0393,A000,A000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3
0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,A000,A000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393
03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,A000,A000,A000,A000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF
0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,A000,A000,A000,A000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393
03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,A000,03F3,0FFF,A000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3
0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393
0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF
03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF
03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3
0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393
03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF
0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393
03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3
0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393
0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF
03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF
03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3
0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393
03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF
0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393
03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3
0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393
0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF
03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF
03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3
0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393
03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF
0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393
03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3
0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393
0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF
03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF
03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3
0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393
03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF
0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393
03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3
0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393
0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF
03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF
03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3
0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393
03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF
0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393
03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3
0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393
0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF
03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF
03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3
0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393
03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF
0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393
03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3
0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393,0FFF,0393,03F3,03F3,0FFF,03F3,03F3,0393
0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF,0393,03F3,0393,03F3,0393,03F3,0393,0FFF
03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF,03F3,0000,0000,0393,03F3,0000,0000,0FFF
03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3,03F3,0000,0000,03F3,0393,0000,0000,03F3
0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393,0393,03F3,03F3,0000,0000,0FFF,0393,0393
03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF,03F3,0393,0000,0000,0000,0000,03F3,0FFF
0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393,0FFF,0393,0000,0000,0000,0000,03F3,0393
03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3,03F3,03F3,0000,03F3,0FFF,0000,0393,03F3
"""

const val MAP_TORCH = """
[map]
!0#f4d632@3,!0#da923f@3
!0#f4eb8b@3,!0#ffffff@3
0#7c6446@3,0#564939@3
0#94744a@3,0#463830@3
0#94744a@3,0#463830@3
0#95754b@3,0#463830@3
0#6b5536@3,0#463830@3
0#98784e@3,0#463830@3
0#6b5536@3,0#463830@3
!00f4d632@1,!00da923f@1
!00f4eb8b@1,!00ffffff@1
!007c6446@1,!00564939@1
!0094744a@1,!00463830@1
!0094744a@1,!00463830@1
!0095754b@1,!00463830@1
!006b5536@1,!00463830@1
!0098784e@1,!00463830@1
!006b5536@1,!00463830@1

[light]
0.8#fff98f/0.02@3
60ffda8f/0.02
"""


@@ -114,7 +114,7 @@ class CreeperScene : Scene() {

val moon = Luminance(
color(200, 200, 255, 0.1f),
vectorOf(7, 5, 2),
vectorOf(7, 5, 0),
0f
)



+ 2
- 2
example-swing/src/main/java/me/jfenn/dungeon/Main.kt View File

@@ -12,8 +12,8 @@ fun main() {
appName = "Swing / DungeonGL Example"
fullscreen = false
scalingMethod = Config.ScalingMethod.Fixed(80, 80)
ambientLight = Color.color(100, 100, 120)
//ambientLight = Color.color(100, 100, 120)
}
scene = SnakeScene()
scene = CreeperScene()
}.start()
}

+ 75
- 48
example-swing/src/main/java/me/jfenn/dungeon/SnakeScene.kt View File

@@ -3,56 +3,56 @@ package me.jfenn.dungeon
import me.jfenn.dungeon.api.Canvas
import me.jfenn.dungeon.api.Scene
import me.jfenn.dungeon.core.color.Color.Companion.color
import me.jfenn.dungeon.core.color.RGBColor
import me.jfenn.dungeon.core.extensions.colorString
import me.jfenn.dungeon.core.extensions.vectorOf
import me.jfenn.dungeon.core.graphics.Luminance
import me.jfenn.dungeon.core.graphics.Sprite
import me.jfenn.dungeon.core.graphics.pixel.LuminousPixel
import kotlin.math.floor

const val SNAKE_BACKGROUND = """
[map]
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0,FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0,0FFF@0
"""

val DIRECTION_UP = vectorOf(0, -1)
@@ -65,14 +65,15 @@ class SnakeScene : Scene() {
val displaySize = 39

val background = Sprite(fromString(SNAKE_BACKGROUND.trimIndent()))
val moon = Luminance(
val light = Luminance(
color(200, 200, 255, 0.4f),
vectorOf(10, 0, 1),
vectorOf(-10, -10, 1),
0f
)

val snake = mutableListOf(vectorOf(0, 5), vectorOf(1, 5), vectorOf(2, 5), vectorOf(3, 5))
val direction = DIRECTION_RIGHT
var apple = vectorOf(10, 10)
var direction = DIRECTION_RIGHT

fun moveSnake() {
snake.removeAt(0)
@@ -88,6 +89,15 @@ class SnakeScene : Scene() {
newPixel.y = displaySize

snake.add(newPixel)

if (newPixel.isEqual(apple)) {
apple = vectorOf(
floor(Math.random() * displaySize).toInt(),
floor(Math.random() * displaySize).toInt()
)

snake.add(newPixel)
}
}

override fun create(canvas: Canvas) {
@@ -95,15 +105,32 @@ class SnakeScene : Scene() {
}

override fun draw(canvas: Canvas) {
canvas.light(moon)

moveSnake()
snake.forEach { position ->
canvas.pixel(LuminousPixel(
colorString("#3F3"),
position.move { forward(1) }
position,
isColorMixable = false
))
}

canvas.pixel(LuminousPixel(
colorString("#F00"),
apple,
isColorMixable = false
))

light.position = apple
canvas.light(light)
}

override fun onKeyDown(keyCode: Int) {
when (keyCode) {
37 -> direction = DIRECTION_LEFT
38 -> direction = DIRECTION_UP
39 -> direction = DIRECTION_RIGHT
40 -> direction = DIRECTION_DOWN
}
}

}

Loading…
Cancel
Save