Browse Source

Add DNA demo. Fix #3

jamesbowman 8 years ago
parent
commit
5cb0cf95d1
4 changed files with 1573 additions and 3 deletions
  1. 1351 0
      converted-assets/dna.h
  2. 218 0
      dna.ino
  3. 1 1
      go
  4. 3 2
      publish.py

+ 1351 - 0
converted-assets/dna.h

@@ -0,0 +1,1351 @@
+#define SPHERE_FRAMES 64
+static void draw_sphere(int x, int y, byte anim, byte rot, byte jk = 0) {
+  switch (anim) {
+  case 0:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 0, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 1:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 0, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 2:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 1, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 3:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 1, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 4:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 2, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 5:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 2, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 6:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 3, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 7:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 3, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 8:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 4, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 9:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 4, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 10:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 5, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 11:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 5, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 12:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 6, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 13:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 6, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 14:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 7, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 15:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 7, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 16:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 8, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 17:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 8, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 18:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 9, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 19:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 9, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 20:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 10, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 21:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 10, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 22:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 11, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 23:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 11, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 24:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 12, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 25:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 12, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 26:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 13, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 27:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 13, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 28:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 14, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 29:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 14, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 30:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 15, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 31:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 15, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 32:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 16, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 33:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 16, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 34:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 17, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 35:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 17, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 36:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 18, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 37:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 18, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 38:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 19, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 39:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 19, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 40:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 20, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 41:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 20, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 42:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 21, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 43:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 21, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 44:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 22, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 45:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 22, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 46:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 23, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 47:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 23, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 48:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 24, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 49:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 24, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 50:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 25, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 51:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 25, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 52:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 26, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 53:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 26, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 54:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 27, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 55:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 27, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 56:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 28, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 57:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 28, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 58:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 29, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 59:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 29, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 60:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 30, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 61:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 30, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 62:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 31, 4}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  case 63:
+{
+    static PROGMEM sprplot sp[] = {{-8, -8, 31, 6}};
+    GD.plots(x, y, sp, 1, rot, jk);
+}
+    break;
+  }
+}
+
+static PROGMEM prog_uchar sphere_img[] = {
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xf3,  0x32,  0x32,  0x33,  0x33,  0xf3,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xf3,  0x22,  0x10,  0x00,  0x00,  0x11,  0x32,  0x44,  0x55,  0xf6,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x33,  0x22,  0x00,  0x00,  0x00,  0x00,  0x11,  0x44,  0x55,  0x66,  0x77,  0x88,  0xff,  0xff, 
+0xff,  0xf3,  0x33,  0x22,  0x11,  0x00,  0x11,  0x11,  0x24,  0x56,  0x77,  0x88,  0x89,  0x99,  0xfb,  0xff, 
+0xff,  0x55,  0x44,  0x44,  0x22,  0x22,  0x44,  0x45,  0x67,  0x88,  0x89,  0x99,  0xaa,  0xbb,  0xdc,  0xff, 
+0xf6,  0x66,  0x66,  0x66,  0x66,  0x67,  0x77,  0x88,  0x99,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xfd, 
+0x77,  0x77,  0x88,  0x88,  0x88,  0x99,  0x99,  0xaa,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd, 
+0x99,  0x99,  0x99,  0xaa,  0xaa,  0xbb,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd, 
+0xbb,  0xbb,  0xbb,  0xcc,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd, 
+0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd, 
+0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd, 
+0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xf3,  0x33,  0x33,  0xf3,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x21,  0x10,  0x11,  0x22,  0x33,  0x44,  0x55,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x32,  0x11,  0x00,  0x00,  0x00,  0x11,  0x34,  0x55,  0x66,  0x77,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x33,  0x22,  0x11,  0x00,  0x00,  0x11,  0x22,  0x55,  0x77,  0x77,  0x88,  0x99,  0xff,  0xff, 
+0xff,  0x55,  0x44,  0x34,  0x22,  0x22,  0x22,  0x44,  0x66,  0x77,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xff, 
+0xff,  0x56,  0x66,  0x66,  0x66,  0x66,  0x77,  0x88,  0x99,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xff, 
+0xf7,  0x77,  0x77,  0x88,  0x88,  0x99,  0x99,  0xaa,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd, 
+0x99,  0x99,  0x99,  0xaa,  0xaa,  0xaa,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd, 
+0xcb,  0xbb,  0xbb,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd, 
+0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd, 
+0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xf3,  0x22,  0x21,  0x21,  0x22,  0x33,  0x44,  0xf5,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x33,  0x21,  0x00,  0x00,  0x00,  0x11,  0x33,  0x55,  0x66,  0x77,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x33,  0x22,  0x11,  0x00,  0x00,  0x11,  0x22,  0x44,  0x66,  0x77,  0x88,  0xaa,  0xff,  0xff, 
+0xff,  0xf4,  0x44,  0x33,  0x22,  0x12,  0x22,  0x44,  0x66,  0x77,  0x88,  0x99,  0xaa,  0xbb,  0xfd,  0xff, 
+0xff,  0x55,  0x56,  0x56,  0x56,  0x66,  0x66,  0x78,  0x88,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xff, 
+0xff,  0x77,  0x77,  0x88,  0x88,  0x89,  0x99,  0xaa,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0x99,  0x99,  0x9a,  0xaa,  0xaa,  0xbb,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xbb,  0xbb,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x22,  0x32,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xf3,  0x22,  0x00,  0x00,  0x00,  0x11,  0x33,  0x55,  0x55,  0xf7,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xf3,  0x33,  0x11,  0x00,  0x00,  0x01,  0x22,  0x44,  0x66,  0x77,  0x88,  0xfa,  0xff,  0xff, 
+0xff,  0xff,  0x44,  0x33,  0x22,  0x11,  0x12,  0x22,  0x45,  0x77,  0x88,  0x99,  0xaa,  0xbb,  0xff,  0xff, 
+0xff,  0x55,  0x55,  0x55,  0x45,  0x45,  0x66,  0x77,  0x88,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xff, 
+0xff,  0x77,  0x77,  0x77,  0x88,  0x88,  0x99,  0x9a,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0x99,  0x99,  0x99,  0xaa,  0xaa,  0xbb,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xbb,  0xbb,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x32,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x32,  0x11,  0x00,  0x00,  0x11,  0x33,  0x55,  0x55,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x33,  0x11,  0x00,  0x00,  0x00,  0x22,  0x44,  0x66,  0x77,  0x88,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x34,  0x33,  0x22,  0x11,  0x11,  0x22,  0x44,  0x77,  0x88,  0x99,  0xaa,  0xbb,  0xff,  0xff, 
+0xff,  0xff,  0x55,  0x55,  0x44,  0x44,  0x66,  0x77,  0x88,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xff,  0xff, 
+0xff,  0x77,  0x77,  0x77,  0x78,  0x88,  0x99,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0x99,  0x99,  0x99,  0xaa,  0xaa,  0xbb,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xbb,  0xbb,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xf3,  0x33,  0x33,  0xf3,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x21,  0x10,  0x10,  0x22,  0x33,  0x55,  0x55,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x33,  0x21,  0x00,  0x00,  0x00,  0x11,  0x44,  0x66,  0x77,  0x88,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x33,  0x33,  0x22,  0x11,  0x11,  0x22,  0x44,  0x66,  0x88,  0x99,  0xaa,  0xcc,  0xff,  0xff, 
+0xff,  0xff,  0x55,  0x55,  0x44,  0x44,  0x45,  0x66,  0x88,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xff,  0xff, 
+0xff,  0xf7,  0x77,  0x77,  0x77,  0x88,  0x89,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xfd,  0xff, 
+0xff,  0x99,  0x99,  0x99,  0xaa,  0xaa,  0xbb,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xcc,  0xbb,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff, 
+0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x11,  0x11,  0x22,  0x33,  0x55,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x33,  0x22,  0x00,  0x00,  0x00,  0x11,  0x44,  0x56,  0x77,  0x88,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x33,  0x22,  0x11,  0x11,  0x12,  0x44,  0x66,  0x77,  0x89,  0xaa,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x55,  0x55,  0x44,  0x44,  0x44,  0x66,  0x77,  0x99,  0x99,  0xab,  0xcc,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0x77,  0x77,  0x77,  0x88,  0x88,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0x99,  0x99,  0x99,  0xaa,  0xbb,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xbb,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x21,  0x22,  0x33,  0x45,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x22,  0x00,  0x00,  0x00,  0x11,  0x44,  0x55,  0x77,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x33,  0x22,  0x01,  0x00,  0x11,  0x44,  0x66,  0x77,  0x88,  0xaa,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x55,  0x55,  0x44,  0x44,  0x44,  0x66,  0x77,  0x88,  0x99,  0xaa,  0xcc,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0x77,  0x77,  0x77,  0x78,  0x88,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0x99,  0x99,  0x99,  0xaa,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xbb,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x23,  0x22,  0x22,  0x33,  0x33,  0x44,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x11,  0x00,  0x00,  0x11,  0x44,  0x55,  0x77,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x33,  0x22,  0x00,  0x00,  0x11,  0x22,  0x66,  0x77,  0x88,  0xaa,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x55,  0x55,  0x44,  0x22,  0x44,  0x56,  0x77,  0x88,  0x99,  0xaa,  0xcc,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0x77,  0x77,  0x77,  0x77,  0x88,  0x99,  0xaa,  0xaa,  0xcc,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0x99,  0x99,  0x99,  0xaa,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xcb,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x32,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x11,  0x00,  0x00,  0x11,  0x44,  0x55,  0x77,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x33,  0x22,  0x00,  0x00,  0x11,  0x22,  0x56,  0x77,  0x88,  0xaa,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x55,  0x44,  0x22,  0x22,  0x44,  0x77,  0x88,  0x99,  0xaa,  0xcc,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x77,  0x77,  0x77,  0x77,  0x88,  0x99,  0x9a,  0xaa,  0xbc,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0x99,  0x99,  0x99,  0xaa,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xcc,  0xbb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x23,  0x33,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x00,  0x00,  0x11,  0x44,  0x55,  0x77,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x33,  0x22,  0x00,  0x00,  0x01,  0x22,  0x55,  0x77,  0x88,  0xba,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x55,  0x44,  0x22,  0x22,  0x44,  0x67,  0x88,  0x99,  0xaa,  0xcc,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x77,  0x66,  0x77,  0x77,  0x78,  0x89,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0x99,  0x99,  0x99,  0xaa,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xcc,  0xcb,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x00,  0x00,  0x22,  0x44,  0x55,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x00,  0x00,  0x00,  0x22,  0x55,  0x77,  0x88,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x55,  0x44,  0x22,  0x22,  0x44,  0x66,  0x88,  0x99,  0xaa,  0xdc,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x66,  0x67,  0x77,  0x77,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0x99,  0x99,  0x99,  0x9a,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xdc,  0xcc,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x32,  0x11,  0x10,  0x22,  0x44,  0x55,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x11,  0x00,  0x00,  0x22,  0x55,  0x77,  0x88,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x45,  0x44,  0x22,  0x22,  0x44,  0x66,  0x88,  0x99,  0xaa,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x66,  0x66,  0x66,  0x77,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x99,  0x99,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xcc,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x21,  0x11,  0x22,  0x33,  0x55,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x11,  0x00,  0x00,  0x22,  0x55,  0x77,  0x88,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x44,  0x44,  0x22,  0x11,  0x22,  0x66,  0x78,  0x99,  0xaa,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x66,  0x66,  0x66,  0x77,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x99,  0x99,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xcc,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x11,  0x22,  0x33,  0x55,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x11,  0x00,  0x00,  0x22,  0x55,  0x67,  0x88,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x44,  0x44,  0x22,  0x11,  0x22,  0x56,  0x77,  0x99,  0xaa,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x66,  0x66,  0x66,  0x77,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x99,  0x99,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xcc,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x22,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x11,  0x00,  0x00,  0x22,  0x55,  0x66,  0x88,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x34,  0x22,  0x11,  0x22,  0x55,  0x77,  0x99,  0xaa,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x66,  0x66,  0x66,  0x67,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x99,  0x99,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xcc,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x22,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xf3,  0x22,  0x00,  0x00,  0x22,  0x55,  0x66,  0xf8,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x11,  0x22,  0x44,  0x77,  0x99,  0xaa,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x66,  0x66,  0x66,  0x66,  0x77,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x99,  0x99,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xcc,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x32,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x00,  0x00,  0x22,  0x55,  0x66,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x11,  0x11,  0x44,  0x77,  0x89,  0xaa,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x66,  0x56,  0x56,  0x66,  0x77,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x99,  0x89,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xcc,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xf2,  0x33,  0x33,  0xf3,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x00,  0x00,  0x22,  0x55,  0x66,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x01,  0x11,  0x44,  0x77,  0x88,  0xba,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xf6,  0x55,  0x55,  0x66,  0x77,  0x99,  0xaa,  0xbb,  0xdd,  0xfd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x99,  0x88,  0x99,  0xaa,  0xbb,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdc,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x00,  0x00,  0x22,  0x55,  0x66,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x00,  0x11,  0x44,  0x77,  0x88,  0xbb,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x55,  0x55,  0x66,  0x77,  0x88,  0xaa,  0xbb,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0x99,  0x88,  0x99,  0xaa,  0xaa,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xdd,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xf3,  0xf3,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x10,  0x00,  0x22,  0x55,  0x66,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x00,  0x11,  0x44,  0x77,  0x88,  0xbb,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x55,  0x55,  0x55,  0x77,  0x88,  0xaa,  0xbb,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xf9,  0x88,  0x99,  0x99,  0xaa,  0xcc,  0xdd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xfd,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xfd,  0xfd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x11,  0x00,  0x22,  0x55,  0x66,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x00,  0x11,  0x44,  0x77,  0x88,  0xbb,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x55,  0x55,  0x45,  0x67,  0x88,  0xaa,  0xbb,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x99,  0x99,  0xaa,  0xcc,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x11,  0x00,  0x22,  0x55,  0x66,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x00,  0x01,  0x44,  0x67,  0x88,  0xbb,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x55,  0x55,  0x44,  0x66,  0x88,  0xaa,  0xbb,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x99,  0x99,  0xaa,  0xcc,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x11,  0x22,  0x45,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x00,  0x00,  0x22,  0x66,  0x88,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x55,  0x55,  0x44,  0x66,  0x88,  0x9a,  0xbb,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x89,  0x99,  0xaa,  0xcc,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xcc,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x11,  0x22,  0x44,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x00,  0x00,  0x22,  0x66,  0x88,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x55,  0x55,  0x44,  0x66,  0x88,  0x99,  0xbb,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x88,  0x99,  0xaa,  0xbc,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xcc,  0xdc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x11,  0x32,  0x44,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x32,  0x00,  0x00,  0x22,  0x66,  0x88,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x55,  0x55,  0x44,  0x66,  0x88,  0x99,  0xbb,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xcc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x22,  0x33,  0x44,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x00,  0x00,  0x22,  0x66,  0x88,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x55,  0x45,  0x44,  0x56,  0x88,  0x99,  0xbb,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdc,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x22,  0x33,  0x44,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x00,  0x00,  0x22,  0x66,  0x88,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x55,  0x44,  0x44,  0x45,  0x78,  0x99,  0xbb,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x22,  0x22,  0x33,  0x44,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x00,  0x00,  0x22,  0x66,  0x88,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x55,  0x44,  0x44,  0x44,  0x77,  0x99,  0xbb,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xf2,  0x22,  0x33,  0xf4,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x00,  0x00,  0x22,  0x66,  0x88,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xf5,  0x44,  0x22,  0x44,  0x77,  0x99,  0xbb,  0xfd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xfd,  0xdd,  0xdd,  0xfd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x00,  0x00,  0x22,  0x66,  0x88,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x44,  0x22,  0x44,  0x77,  0x99,  0xbb,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x33,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x33,  0x00,  0x00,  0x22,  0x56,  0x88,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0x44,  0x22,  0x44,  0x77,  0x99,  0xbb,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0x88,  0x88,  0x99,  0xaa,  0xbb,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xdd,  0xdd,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
+};
+static PROGMEM prog_uchar sphere_pal[] = {
+
+0x7a,  0x7f,  0xb3,  0x6a,  0xec,  0x59,  0xa8,  0x55,  0x88,  0x49,  0x46,  0x45,  0x46,  0x41,  0x25,  0x3d, 
+0x05,  0x35,  0xe4,  0x30,  0xc4,  0x2c,  0xa3,  0x24,  0x82,  0x20,  0x62,  0x18,  0x00,  0x00,  0x00,  0x80, 
+};
+static PROGMEM prog_char cloud[] = {
+0,107,-127,
+0,-69,-127,
+17,75,-124,
+8,-102,-124,
+-10,88,-122,
+-27,-88,-122,
+27,101,-120,
+0,-74,-120,
+17,68,-118,
+-18,-106,-118,
+9,99,-116,
+-35,-72,-116,
+45,84,-114,
+-7,-85,-114,
+16,70,-112,
+-44,-96,-112,
+35,100,-110,
+-33,-62,-110,
+51,65,-108,
+-26,-94,-108,
+23,79,-106,
+-61,-76,-106,
+61,88,-104,
+-32,-63,-104,
+48,54,-102,
+-51,-92,-102,
+41,85,-100,
+-66,-56,-100,
+76,66,-98,
+-38,-69,-98,
+46,52,-96,
+-75,-76,-96,
+65,80,-94,
+-62,-42,-94,
+79,43,-92,
+-55,-73,-92,
+50,57,-90,
+-88,-52,-90,
+87,63,-88,
+-57,-39,-88,
+72,28,-86,
+-77,-66,-86,
+65,58,-84,
+-88,-28,-84,
+98,37,-82,
+-60,-42,-82,
+66,24,-80,
+-96,-47,-80,
+85,50,-78,
+-80,-12,-78,
+95,12,-76,
+-73,-42,-76,
+67,26,-74,
+-104,-20,-74,
+102,29,-72,
+-71,-7,-72,
+84,-4,-70,
+-91,-33,-70,
+77,25,-68,
+-99,5,-68,
+107,2,-66,
+-70,-9,-66,
+73,-9,-64,
+-104,-11,-64,
+92,15,-61,
+-85,22,-61,
+98,-23,-59,
+-78,-8,-59,
+69,-8,-57,
+-106,16,-57,
+103,-6,-55,
+-71,26,-55,
+82,-39,-53,
+-90,2,-53,
+75,-9,-51,
+-95,41,-51,
+102,-34,-49,
+-65,25,-49,
+65,-43,-47,
+-98,23,-47,
+85,-19,-45,
+-75,56,-45,
+88,-58,-43,
+-68,25,-43,
+57,-40,-41,
+-94,50,-41,
+90,-40,-39,
+-57,58,-39,
+66,-71,-37,
+-76,34,-37,
+59,-39,-35,
+-77,73,-35,
+83,-65,-33,
+-47,54,-33,
+45,-72,-31,
+-79,54,-31,
+64,-48,-29,
+-53,84,-29,
+64,-86,-27,
+-47,52,-27,
+34,-66,-25,
+-70,77,-25,
+65,-65,-23,
+-31,82,-23,
+38,-94,-21,
+-50,58,-21,
+32,-61,-19,
+-49,96,-19,
+54,-87,-17,
+-18,74,-17,
+15,-90,-15,
+-49,74,-15,
+35,-66,-13,
+-21,102,-13,
+32,-102,-11,
+-16,68,-11,
+2,-79,-9,
+-37,93,-9,
+32,-79,-7,
+1,95,-7,
+4,-105,-5,
+-18,70,-5,
+0,-71,-3,
+-14,106,-3,
+19,-96,-1,
+15,81,-1,
+-19,-96,1,
+-15,81,1,
+0,-71,3,
+14,106,3,
+-4,-105,5,
+18,70,5,
+-32,-79,7,
+-1,95,7,
+-2,-79,9,
+37,93,9,
+-32,-102,11,
+16,68,11,
+-35,-66,13,
+21,102,13,
+-15,-90,15,
+49,74,15,
+-54,-87,17,
+18,74,17,
+-32,-61,19,
+49,96,19,
+-38,-94,21,
+50,58,21,
+-65,-65,23,
+31,82,23,
+-34,-66,25,
+70,77,25,
+-64,-86,27,
+47,52,27,
+-64,-48,29,
+53,84,29,
+-45,-72,31,
+79,54,31,
+-83,-65,33,
+47,54,33,
+-59,-39,35,
+77,73,35,
+-66,-71,37,
+76,34,37,
+-90,-40,39,
+57,58,39,
+-57,-40,41,
+94,50,41,
+-88,-58,43,
+68,25,43,
+-85,-19,45,
+75,56,45,
+-65,-43,47,
+98,23,47,
+-102,-34,49,
+65,25,49,
+-75,-9,51,
+95,41,51,
+-82,-39,53,
+90,2,53,
+-103,-6,55,
+71,26,55,
+-69,-8,57,
+106,16,57,
+-98,-23,59,
+78,-8,59,
+-92,15,61,
+85,22,61,
+-73,-9,64,
+104,-11,64,
+-107,2,66,
+70,-9,66,
+-77,25,68,
+99,5,68,
+-84,-4,70,
+91,-33,70,
+-102,29,72,
+71,-7,72,
+-67,26,74,
+104,-20,74,
+-95,12,76,
+73,-42,76,
+-85,50,78,
+80,-12,78,
+-66,24,80,
+96,-47,80,
+-98,37,82,
+60,-42,82,
+-65,58,84,
+88,-28,84,
+-72,28,86,
+77,-66,86,
+-87,63,88,
+57,-39,88,
+-50,57,90,
+88,-52,90,
+-79,43,92,
+55,-73,92,
+-65,80,94,
+62,-42,94,
+-46,52,96,
+75,-76,96,
+-76,66,98,
+38,-69,98,
+-41,85,100,
+66,-56,100,
+-48,54,102,
+51,-92,102,
+-61,88,104,
+32,-63,104,
+-23,79,106,
+61,-76,106,
+-51,65,108,
+26,-94,108,
+-35,100,110,
+33,-62,110,
+-16,70,112,
+44,-96,112,
+-45,84,114,
+7,-85,114,
+-9,99,116,
+35,-72,116,
+-17,68,118,
+18,-106,118,
+-27,101,120,
+0,-74,120,
+10,88,122,
+27,-88,122,
+-17,75,124,
+-8,-102,124,
+};
+static PROGMEM prog_uchar ramp_pic[] = {
+
+0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80, 
+0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80, 
+0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80, 
+0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80, 
+0x81,  0x82,  0x83,  0x84,  0x85,  0x86,  0x87,  0x88,  0x89,  0x8a,  0x8b,  0x8c,  0x8d,  0x8e,  0x8f,  0x90, 
+0x91,  0x92,  0x93,  0x94,  0x95,  0x96,  0x97,  0x98,  0x99,  0x9a,  0x9b,  0x9c,  0x9d,  0x9e,  0x9f,  0xa0, 
+0xa1,  0xa2,  0xa3,  0xa4,  0xa5,  0xa6,  0xa7,  0xa8,  0xa9,  0xaa,  0xab,  0xac,  0xad,  0xae,  0xaf,  0xb0, 
+0xb1,  0xb2,  0xb3,  0xb4,  0xb5,  0xb6,  0xb7,  0xb8,  0xb9,  0xba,  0xbb,  0xbc,  0xbd,  0xbe,  0xbf,  0xc0, 
+0xc1,  0xc2,  0xc3,  0xc4,  0xc5,  0xc6,  0xc7,  0xc8,  0xc9,  0xca,  0xcb,  0xcc,  0xcd,  0xce,  0xcf,  0xd0, 
+0xd1,  0xd2,  0xd3,  0xd4,  0xd5,  0xd6,  0xd6,  0xd7, 
+};
+static PROGMEM prog_uchar ramp_chr[] = {
+
+0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00, 
+0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x45,  0x54,  0x51,  0x40,  0x05,  0x45, 
+0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x45,  0x55,  0x01,  0x40,  0x50,  0x00, 
+0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x51,  0x54,  0x05,  0x50,  0x01, 
+0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x14,  0x55,  0x55,  0x11, 
+0xaa,  0x80,  0xaa,  0xaa,  0xaa,  0x9a,  0x9a,  0x56,  0x96,  0x59,  0x65,  0x95,  0x55,  0x66,  0x55,  0x55, 
+0xaa,  0xaa,  0xa2,  0xaa,  0xaa,  0x9a,  0x6a,  0xa6,  0xa5,  0x69,  0x55,  0x59,  0x65,  0x69,  0x55,  0x55, 
+0xa8,  0xaa,  0xaa,  0xa8,  0xaa,  0x66,  0xa9,  0xa9,  0x69,  0x99,  0x65,  0x69,  0x55,  0x66,  0x55,  0x55, 
+0x88,  0xaa,  0xaa,  0xaa,  0xa6,  0x6a,  0xa6,  0x65,  0x99,  0xa6,  0x5a,  0xa6,  0x55,  0x55,  0x55,  0x55, 
+0xaa,  0xa8,  0x0a,  0x28,  0x8a,  0x08,  0x20,  0x00,  0x00,  0x00,  0x00,  0x41,  0x55,  0x04,  0x40,  0x15, 
+0x80,  0x0a,  0x02,  0x0a,  0xaa,  0xa8,  0x8a,  0xaa,  0xaa,  0xaa,  0x5a,  0xa9,  0x5a,  0x6a,  0x95,  0x96, 
+0xa2,  0x2a,  0x2a,  0x80,  0x80,  0x00,  0x02,  0x08,  0x00,  0x00,  0x00,  0x50,  0x14,  0x00,  0x55,  0x10, 
+0xa2,  0xaa,  0x8a,  0xa8,  0x22,  0x08,  0x00,  0x00,  0x00,  0x00,  0x10,  0x00,  0x40,  0x01,  0x45,  0x54, 
+0xa5,  0x6a,  0x6a,  0x6a,  0xa8,  0xaa,  0xaa,  0xaa,  0x0a,  0xa2,  0x20,  0x8a,  0x00,  0x20,  0x03,  0x00, 
+0xaa,  0x9a,  0xaa,  0xaa,  0xaa,  0xaa,  0x2a,  0xa2,  0x80,  0x82,  0x80,  0x02,  0x00,  0x00,  0x00,  0x00, 
+0xa6,  0x95,  0x65,  0x55,  0x15,  0x55,  0x45,  0x51,  0x00,  0x45,  0x14,  0x01,  0x04,  0x00,  0x00,  0x00, 
+
+0x9a,  0x5a,  0x59,  0xa9,  0xa0,  0x0a,  0x82,  0x2a,  0xa0,  0x02,  0x08,  0x08,  0x80,  0x00,  0x00,  0x00, 
+0x45,  0x41,  0x54,  0x15,  0x00,  0x00,  0x41,  0x04,  0x00,  0x00,  0x00,  0x28,  0x82,  0x02,  0x88,  0x28, 
+0x40,  0x54,  0x55,  0x50,  0x44,  0x50,  0x40,  0x04,  0x00,  0x00,  0x00,  0x20,  0x88,  0xa2,  0xaa,  0x2a, 
+0x51,  0x55,  0x55,  0x04,  0x00,  0x04,  0x00,  0x01,  0x00,  0x00,  0x20,  0x02,  0x20,  0x22,  0x28,  0x82, 
+0x54,  0x51,  0x11,  0x41,  0x04,  0x00,  0x41,  0x04,  0x00,  0x00,  0x00,  0x00,  0x2a,  0x80,  0x02,  0x2a, 
+0x45,  0x01,  0x00,  0x00,  0x00,  0x00,  0x08,  0x80,  0x08,  0x82,  0xaa,  0xa2,  0xaa,  0xaa,  0xaa,  0xaa, 
+0x55,  0x11,  0x55,  0x55,  0x55,  0xa5,  0x65,  0x99,  0x5a,  0x6a,  0x96,  0xa6,  0xaa,  0xaa,  0xaa,  0xaa, 
+0x55,  0x15,  0x55,  0x55,  0x55,  0x55,  0x56,  0x99,  0x56,  0x95,  0xa9,  0xaa,  0xaa,  0xaa,  0xaa,  0xaa, 
+0x50,  0x15,  0x55,  0x55,  0xa5,  0x95,  0x99,  0x66,  0xa9,  0x56,  0xa9,  0xaa,  0xaa,  0x9a,  0xaa,  0xaa, 
+0x40,  0x00,  0x15,  0x11,  0x54,  0x15,  0x15,  0x55,  0x55,  0x55,  0x95,  0x65,  0x69,  0x55,  0xaa,  0x69, 
+0x44,  0x10,  0x54,  0x50,  0x10,  0x11,  0x10,  0x01,  0x00,  0x00,  0xa2,  0xa2,  0x02,  0x00,  0x2a,  0x20, 
+0x50,  0x00,  0x50,  0x00,  0x50,  0x41,  0x55,  0x55,  0x55,  0x55,  0x6a,  0x59,  0xa5,  0xa5,  0x66,  0x9a, 
+0x55,  0x55,  0x51,  0x14,  0x10,  0x40,  0x41,  0x04,  0x00,  0x00,  0x80,  0x8a,  0x00,  0x20,  0xa8,  0xa8, 
+0x8a,  0x20,  0xaa,  0xaa,  0xaa,  0xa9,  0x66,  0x99,  0xaa,  0xa6,  0x55,  0x55,  0x59,  0x55,  0x55,  0x55, 
+0xaa,  0x8a,  0xaa,  0xaa,  0xaa,  0xaa,  0xa6,  0xa9,  0x66,  0x95,  0x56,  0x5a,  0x55,  0x55,  0x5d,  0x5d, 
+0xa2,  0x8a,  0xaa,  0xaa,  0xa6,  0xa6,  0x66,  0x55,  0x6a,  0xaa,  0x65,  0x95,  0x55,  0x55,  0x55,  0xdd, 
+
+0xaa,  0x28,  0xaa,  0xaa,  0x66,  0xaa,  0xa9,  0x69,  0x95,  0x6a,  0x65,  0x95,  0x55,  0x55,  0x55,  0x57, 
+0xa0,  0x8a,  0x2a,  0xa0,  0x80,  0xa2,  0x00,  0x00,  0x00,  0x00,  0x01,  0x10,  0x11,  0x14,  0x45,  0x15, 
+0xa8,  0xaa,  0x2a,  0x20,  0x22,  0xa2,  0x20,  0x00,  0x00,  0x00,  0x10,  0x11,  0x40,  0x10,  0x15,  0x55, 
+0x88,  0x82,  0x88,  0x2a,  0x00,  0x82,  0x00,  0x00,  0x00,  0x00,  0x40,  0x00,  0x00,  0x50,  0x51,  0x55, 
+0x82,  0xaa,  0xa0,  0x88,  0x0a,  0x02,  0x80,  0x02,  0x00,  0x00,  0x10,  0x00,  0x45,  0x05,  0x44,  0x55, 
+0x8a,  0xa2,  0xaa,  0xaa,  0xaa,  0xaa,  0xff,  0xab,  0xfb,  0xab,  0xfb,  0xef,  0xff,  0xef,  0xfd,  0xff, 
+0xa2,  0x88,  0xaa,  0xaa,  0xbe,  0xaa,  0xbf,  0xab,  0xab,  0xee,  0xfb,  0xff,  0xff,  0xff,  0xdf,  0x7f, 
+0x55,  0x44,  0x55,  0x55,  0x59,  0x56,  0xa5,  0x65,  0x6a,  0x6a,  0xa9,  0xaa,  0x9a,  0xa6,  0xaa,  0xaa, 
+0x41,  0x00,  0x00,  0x00,  0x00,  0x08,  0x0a,  0x00,  0x80,  0xaa,  0xa0,  0xa0,  0x2a,  0xaa,  0xaa,  0xaa, 
+0x45,  0x45,  0x44,  0x45,  0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0x22,  0xaa,  0x0a,  0x80,  0xa8, 
+0x55,  0x55,  0x11,  0x51,  0x40,  0x40,  0x00,  0x00,  0x00,  0x00,  0x28,  0x20,  0x28,  0x2a,  0xa2,  0xa0, 
+0x55,  0x54,  0x44,  0x44,  0x54,  0x40,  0x00,  0x10,  0x20,  0x00,  0x00,  0x08,  0xa2,  0x8a,  0x82,  0x22, 
+0x55,  0x51,  0x41,  0x54,  0x00,  0x40,  0x00,  0x00,  0x00,  0x00,  0x00,  0x22,  0x08,  0xa2,  0x00,  0x82, 
+0xa2,  0xaa,  0xaa,  0xaa,  0xa5,  0x9a,  0xa9,  0xa9,  0x99,  0x5a,  0x56,  0x65,  0x55,  0x55,  0x55,  0x55, 
+0x88,  0x8a,  0xaa,  0xaa,  0xa6,  0xaa,  0x96,  0x6a,  0x66,  0x66,  0x55,  0x55,  0x95,  0x56,  0x55,  0xd5, 
+0xa2,  0xaa,  0xaa,  0x9a,  0xaa,  0xa9,  0xaa,  0x6a,  0x95,  0x56,  0x99,  0x55,  0x55,  0x55,  0x75,  0x7d, 
+
+0xa8,  0xaa,  0xaa,  0xaa,  0xaa,  0x69,  0x66,  0xa6,  0xa9,  0x9a,  0x55,  0x65,  0x56,  0x55,  0x55,  0x55, 
+0xa2,  0x2a,  0x88,  0xa8,  0x08,  0x20,  0x00,  0x00,  0x40,  0x10,  0x54,  0x40,  0x40,  0x01,  0x45,  0x45, 
+0x80,  0x02,  0x28,  0x00,  0x28,  0x82,  0xaa,  0xa8,  0xaa,  0xa9,  0x6a,  0x5a,  0x56,  0xa9,  0x56,  0x56, 
+0x80,  0xa0,  0x88,  0x28,  0xa8,  0xaa,  0xaa,  0xaa,  0xaa,  0xaa,  0xa6,  0xaa,  0x99,  0xa5,  0x55,  0x69, 
+0x80,  0x80,  0x8a,  0x00,  0x82,  0x8a,  0xaa,  0xa8,  0xaa,  0xaa,  0x5a,  0xaa,  0x55,  0x9a,  0x59,  0xa9, 
+0x95,  0x55,  0x55,  0x55,  0x55,  0x05,  0x44,  0x11,  0x50,  0x44,  0x40,  0x01,  0x00,  0x00,  0x30,  0x00, 
+0x9a,  0xaa,  0xa8,  0xaa,  0x0a,  0xaa,  0x0a,  0x28,  0x20,  0x88,  0x00,  0x02,  0x00,  0x00,  0xc0,  0x00, 
+0xaa,  0xa6,  0xaa,  0xaa,  0x88,  0xa2,  0x00,  0x80,  0x08,  0x00,  0x00,  0x08,  0x08,  0x00,  0x00,  0x00, 
+0x55,  0x55,  0x55,  0x55,  0x44,  0x50,  0x15,  0x41,  0x41,  0x51,  0x40,  0x54,  0x00,  0x00,  0x00,  0x20, 
+0x95,  0x56,  0xa6,  0xaa,  0x9a,  0x66,  0xaa,  0xaa,  0xa2,  0xaa,  0xaa,  0xaa,  0x28,  0x82,  0x00,  0x00, 
+0xa5,  0xaa,  0xa5,  0xaa,  0xaa,  0x96,  0x69,  0xaa,  0xaa,  0xa2,  0xa2,  0x28,  0x00,  0xa8,  0x80,  0xa2, 
+0xa5,  0x56,  0x56,  0xa9,  0xaa,  0xa5,  0x9a,  0xa9,  0xa8,  0xaa,  0x2a,  0xaa,  0xaa,  0x8a,  0x28,  0x08, 
+0xaa,  0x6a,  0xa6,  0xa6,  0x95,  0xa5,  0x55,  0x59,  0x55,  0x55,  0x55,  0x45,  0x44,  0x01,  0x40,  0x00, 
+0x40,  0x00,  0x00,  0x00,  0x20,  0x00,  0xaa,  0xa2,  0xaa,  0x08,  0xa2,  0x28,  0xaa,  0xaa,  0xaa,  0xaa, 
+0x55,  0x55,  0x55,  0x55,  0x54,  0x45,  0x55,  0x51,  0x40,  0x05,  0x00,  0x40,  0x00,  0x00,  0x02,  0x02, 
+0x55,  0x11,  0x55,  0x65,  0x59,  0x5a,  0x55,  0x59,  0x9a,  0x56,  0xaa,  0x6a,  0xaa,  0xaa,  0xaa,  0xaa, 
+
+0x55,  0x55,  0x55,  0x55,  0x55,  0x15,  0x15,  0x11,  0x44,  0x00,  0x00,  0x11,  0x00,  0x00,  0x80,  0x00, 
+0x40,  0x45,  0x10,  0x14,  0x55,  0x15,  0x55,  0x55,  0x65,  0x56,  0x65,  0x55,  0x55,  0xa5,  0x5a,  0x6a, 
+0x54,  0x15,  0x14,  0x41,  0x04,  0x51,  0x04,  0x00,  0x82,  0x00,  0x00,  0x22,  0x2a,  0x20,  0xaa,  0x0a, 
+0x40,  0x10,  0x04,  0x11,  0x54,  0x50,  0x04,  0x55,  0x55,  0x65,  0x56,  0x55,  0x6a,  0x99,  0xaa,  0x9a, 
+0x44,  0x15,  0x05,  0x45,  0x55,  0x55,  0x55,  0x55,  0x55,  0x66,  0x55,  0x55,  0x95,  0xa5,  0xaa,  0x96, 
+0x41,  0x54,  0x55,  0x55,  0x55,  0x75,  0xf5,  0xdd,  0xff,  0x7f,  0x55,  0x57,  0xff,  0xff,  0xfb,  0xff, 
+0x55,  0x55,  0x55,  0x55,  0x51,  0x05,  0x41,  0x54,  0x04,  0x50,  0x11,  0x00,  0x00,  0x00,  0x00,  0x00, 
+0x51,  0x55,  0x55,  0x55,  0x55,  0x55,  0x77,  0x5f,  0x5f,  0x7d,  0xff,  0xff,  0xff,  0xff,  0xaf,  0xff, 
+0x55,  0x45,  0x55,  0x65,  0x69,  0x59,  0xa9,  0x65,  0x9a,  0xaa,  0xaa,  0x99,  0xaa,  0xaa,  0xaa,  0xaa, 
+0xa2,  0x88,  0x02,  0x28,  0x00,  0x88,  0x00,  0x00,  0x40,  0x00,  0x10,  0x11,  0x55,  0x05,  0x40,  0x55, 
+0x80,  0x08,  0x02,  0x2a,  0x00,  0x00,  0x20,  0x00,  0x00,  0x00,  0x01,  0x41,  0x15,  0x50,  0x51,  0x51, 
+0xa2,  0x02,  0x00,  0x08,  0x80,  0x80,  0x00,  0x00,  0x10,  0x00,  0x04,  0x04,  0x01,  0x11,  0x44,  0x55, 
+0x82,  0xa2,  0x80,  0xa8,  0x00,  0x00,  0x00,  0x20,  0x40,  0x00,  0x01,  0x00,  0x50,  0x01,  0x45,  0x54, 
+0xaa,  0xaa,  0x2a,  0xaa,  0xaa,  0xaa,  0x22,  0xa2,  0x22,  0x80,  0x20,  0x80,  0x00,  0x00,  0x00,  0x10, 
+0x51,  0x55,  0x55,  0x55,  0x55,  0x56,  0x95,  0xa6,  0xa9,  0xa5,  0xaa,  0x9a,  0xaa,  0xaa,  0xaa,  0xaa, 
+0xaa,  0xaa,  0xaa,  0xaa,  0xa8,  0x88,  0x08,  0x2a,  0x88,  0x20,  0x08,  0x02,  0x00,  0x00,  0x01,  0x04, 
+
+0xaa,  0xaa,  0xaa,  0xaa,  0x82,  0xaa,  0x00,  0x0a,  0x02,  0x28,  0x00,  0x80,  0x00,  0x00,  0x04,  0x00, 
+0x41,  0x55,  0x55,  0x54,  0x01,  0x40,  0x00,  0x00,  0x00,  0x00,  0x0a,  0xa2,  0x0a,  0xa0,  0xa8,  0xaa, 
+0x40,  0x14,  0x51,  0x04,  0x55,  0x54,  0x55,  0x51,  0x55,  0x55,  0x56,  0x69,  0x69,  0x59,  0x6a,  0xaa, 
+0x55,  0x55,  0x45,  0x05,  0x00,  0x04,  0x00,  0x00,  0xa2,  0x00,  0x80,  0xa2,  0x00,  0x8a,  0xaa,  0xaa, 
+0x41,  0x14,  0x00,  0x54,  0x14,  0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x08,  0x22,  0xa0,  0xa2,  0xaa, 
+0x40,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00, 
+0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00, 
+0x55,  0x54,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55,  0x55, 
+};
+static PROGMEM prog_uchar ramp_pal[] = {
+
+0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x21,  0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00, 
+0x21,  0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x21,  0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00, 
+0x21,  0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x42,  0x08,  0x21,  0x04,  0x00,  0x00, 
+0x00,  0x00,  0x42,  0x08,  0x21,  0x04,  0x00,  0x00,  0x00,  0x00,  0x42,  0x08,  0x21,  0x04,  0x00,  0x00, 
+0x00,  0x00,  0x42,  0x08,  0x21,  0x04,  0x00,  0x00,  0x63,  0x0c,  0x84,  0x10,  0x42,  0x08,  0x00,  0x00, 
+0x42,  0x08,  0x84,  0x10,  0x63,  0x0c,  0x00,  0x00,  0x63,  0x0c,  0x84,  0x10,  0x42,  0x08,  0x00,  0x00, 
+0x63,  0x0c,  0x84,  0x10,  0x42,  0x08,  0x00,  0x00,  0xa5,  0x14,  0x63,  0x0c,  0x84,  0x10,  0xc6,  0x18, 
+0xa5,  0x14,  0x63,  0x0c,  0x84,  0x10,  0x00,  0x00,  0xa5,  0x14,  0x84,  0x10,  0x63,  0x0c,  0x00,  0x00, 
+0xa5,  0x14,  0x63,  0x0c,  0x84,  0x10,  0x00,  0x00,  0xc6,  0x18,  0xa5,  0x14,  0xe7,  0x1c,  0x00,  0x00, 
+0xc6,  0x18,  0xa5,  0x14,  0xe7,  0x1c,  0x00,  0x00,  0xc6,  0x18,  0xa5,  0x14,  0xe7,  0x1c,  0x00,  0x00, 
+0xc6,  0x18,  0xa5,  0x14,  0xe7,  0x1c,  0x00,  0x00,  0xe7,  0x1c,  0xc6,  0x18,  0x08,  0x21,  0x00,  0x00, 
+0xc6,  0x18,  0xe7,  0x1c,  0x08,  0x21,  0x00,  0x00,  0xc6,  0x18,  0xe7,  0x1c,  0x08,  0x21,  0x00,  0x00, 
+0xc6,  0x18,  0xe7,  0x1c,  0x08,  0x21,  0x00,  0x00,  0x08,  0x21,  0x29,  0x25,  0x4a,  0x29,  0x00,  0x00, 
+0x29,  0x25,  0x08,  0x21,  0x4a,  0x29,  0x00,  0x00,  0x08,  0x21,  0x29,  0x25,  0x4a,  0x29,  0x00,  0x00, 
+0x29,  0x25,  0x08,  0x21,  0x4a,  0x29,  0x00,  0x00,  0x29,  0x25,  0x6b,  0x2d,  0x4a,  0x29,  0x00,  0x00, 
+0x29,  0x25,  0x6b,  0x2d,  0x4a,  0x29,  0x8c,  0x31,  0x29,  0x25,  0x6b,  0x2d,  0x4a,  0x29,  0x8c,  0x31, 
+
+0x29,  0x25,  0x6b,  0x2d,  0x4a,  0x29,  0x8c,  0x31,  0x8c,  0x31,  0xad,  0x35,  0x6b,  0x2d,  0x00,  0x00, 
+0x8c,  0x31,  0xad,  0x35,  0x6b,  0x2d,  0x00,  0x00,  0x8c,  0x31,  0xad,  0x35,  0x6b,  0x2d,  0x00,  0x00, 
+0x8c,  0x31,  0xad,  0x35,  0x6b,  0x2d,  0x00,  0x00,  0x8c,  0x31,  0xef,  0x3d,  0xad,  0x35,  0xce,  0x39, 
+0x8c,  0x31,  0xef,  0x3d,  0xad,  0x35,  0xce,  0x39,  0x8c,  0x31,  0xad,  0x35,  0xce,  0x39,  0x00,  0x00, 
+0xad,  0x35,  0x8c,  0x31,  0xce,  0x39,  0x00,  0x00,  0xef,  0x3d,  0xce,  0x39,  0x10,  0x42,  0x00,  0x00, 
+0xef,  0x3d,  0xce,  0x39,  0x10,  0x42,  0x00,  0x00,  0xef,  0x3d,  0xce,  0x39,  0x10,  0x42,  0x00,  0x00, 
+0xef,  0x3d,  0xce,  0x39,  0x10,  0x42,  0x00,  0x00,  0xef,  0x3d,  0x31,  0x46,  0x10,  0x42,  0x00,  0x00, 
+0xef,  0x3d,  0x31,  0x46,  0x10,  0x42,  0x52,  0x4a,  0xef,  0x3d,  0x31,  0x46,  0x10,  0x42,  0x52,  0x4a, 
+0xef,  0x3d,  0x31,  0x46,  0x10,  0x42,  0x00,  0x00,  0x52,  0x4a,  0x73,  0x4e,  0x31,  0x46,  0x00,  0x00, 
+0x31,  0x46,  0x73,  0x4e,  0x52,  0x4a,  0x00,  0x00,  0x31,  0x46,  0x73,  0x4e,  0x52,  0x4a,  0x00,  0x00, 
+0x31,  0x46,  0x73,  0x4e,  0x52,  0x4a,  0x00,  0x00,  0x94,  0x52,  0x73,  0x4e,  0x52,  0x4a,  0xb5,  0x56, 
+0x94,  0x52,  0x52,  0x4a,  0x73,  0x4e,  0xb5,  0x56,  0x94,  0x52,  0x52,  0x4a,  0x73,  0x4e,  0x00,  0x00, 
+0x94,  0x52,  0x73,  0x4e,  0xb5,  0x56,  0x00,  0x00,  0xd6,  0x5a,  0x94,  0x52,  0xb5,  0x56,  0x00,  0x00, 
+0xd6,  0x5a,  0x94,  0x52,  0xb5,  0x56,  0x00,  0x00,  0xd6,  0x5a,  0x94,  0x52,  0xb5,  0x56,  0x00,  0x00, 
+0xd6,  0x5a,  0xb5,  0x56,  0x94,  0x52,  0x00,  0x00,  0xd6,  0x5a,  0xb5,  0x56,  0xf7,  0x5e,  0x00,  0x00, 
+0xf7,  0x5e,  0xd6,  0x5a,  0x18,  0x63,  0x00,  0x00,  0xb5,  0x56,  0xd6,  0x5a,  0xf7,  0x5e,  0x00,  0x00, 
+
+0xf7,  0x5e,  0xd6,  0x5a,  0x18,  0x63,  0x00,  0x00,  0xf7,  0x5e,  0x18,  0x63,  0x39,  0x67,  0x00,  0x00, 
+0x18,  0x63,  0xf7,  0x5e,  0x39,  0x67,  0x00,  0x00,  0xf7,  0x5e,  0x18,  0x63,  0x39,  0x67,  0x00,  0x00, 
+0xf7,  0x5e,  0x18,  0x63,  0x39,  0x67,  0x00,  0x00,  0x18,  0x63,  0x39,  0x67,  0x7b,  0x6f,  0x5a,  0x6b, 
+0x5a,  0x6b,  0x39,  0x67,  0x00,  0x00,  0x00,  0x00,  0x18,  0x63,  0x39,  0x67,  0x7b,  0x6f,  0x5a,  0x6b, 
+0x18,  0x63,  0x39,  0x67,  0x5a,  0x6b,  0x00,  0x00,  0x7b,  0x6f,  0x9c,  0x73,  0x5a,  0x6b,  0x00,  0x00, 
+0x7b,  0x6f,  0x9c,  0x73,  0x5a,  0x6b,  0x00,  0x00,  0x7b,  0x6f,  0x9c,  0x73,  0x5a,  0x6b,  0x00,  0x00, 
+0x7b,  0x6f,  0x9c,  0x73,  0x5a,  0x6b,  0x00,  0x00,  0xbd,  0x77,  0xde,  0x7b,  0x9c,  0x73,  0x00,  0x00, 
+0x7b,  0x6f,  0x9c,  0x73,  0xbd,  0x77,  0x00,  0x00,  0xbd,  0x77,  0xde,  0x7b,  0x9c,  0x73,  0x00,  0x00, 
+0xbd,  0x77,  0xde,  0x7b,  0x9c,  0x73,  0x00,  0x00,  0xde,  0x7b,  0xbd,  0x77,  0xff,  0x7f,  0x00,  0x00, 
+0xbd,  0x77,  0xde,  0x7b,  0xff,  0x7f,  0x00,  0x00,  0xde,  0x7b,  0xbd,  0x77,  0xff,  0x7f,  0x00,  0x00, 
+0xde,  0x7b,  0xbd,  0x77,  0xff,  0x7f,  0x00,  0x00,  0xff,  0x7f,  0xde,  0x7b,  0x00,  0x00,  0x00,  0x00, 
+0xff,  0x7f,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xde,  0x7b,  0xff,  0x7f,  0x00,  0x00,  0x00,  0x00, 
+};

+ 218 - 0
dna.ino

@@ -0,0 +1,218 @@
+#include <stdlib.h>
+#include <SPI.h>
+#include <GD.h>
+
+static uint16_t SWAP_RB(uint16_t color) // Swap red and blue channel
+{
+  byte r = (color >> 10) & 31;
+  byte g = (color >> 5) & 31;
+  byte b = color & 31;
+  return (color & 0x8000) | (b << 10) | (g << 5) | (r);
+}
+
+static uint16_t SWAP_RG(uint16_t color) // Swap red and blue channel
+{
+  byte r = (color >> 10) & 31;
+  byte g = (color >> 5) & 31;
+  byte b = color & 31;
+  return (color & 0x8000) | (g << 10) | (r << 5) | (b);
+}
+
+#include "dna.h"
+
+////////////////////////////////////////////////////////////////////////////////
+//                                  3D Projection
+////////////////////////////////////////////////////////////////////////////////
+
+static float mats[2][9];
+
+static float mat[9];
+
+// Taken from glRotate()
+static void rotation(float phi)
+{
+  float x = 0.57735026918962573;
+  float y = 0.57735026918962573;
+  float z = 0.57735026918962573;
+
+  float s = sin(phi);
+  float c = cos(phi);
+
+  mat[0] = x*x*(1-c)+c;
+  mat[1] = x*y*(1-c)-z*s;
+  mat[2] = x*z*(1-c)+y*s;
+
+  mat[3] = y*x*(1-c)+z*s;
+  mat[4] = y*y*(1-c)+c;
+  mat[5] = y*z*(1-c)-x*s;
+
+  mat[6] = x*z*(1-c)-y*s;
+  mat[7] = y*z*(1-c)+x*s;
+  mat[8] = z*z*(1-c)+c;
+}
+
+#ifdef MAPLE_IDE
+#define NVERTICES 250
+#else
+#define NVERTICES 220   // Arduino does not have enough RAM for all 250 
+#endif
+
+struct screenpt {
+  short x, y, z;
+};
+static struct screenpt projected[NVERTICES];
+
+void project(float distance)
+{
+  byte vx;
+  prog_char *pm = cloud; 
+  prog_char *pm_e = cloud + (NVERTICES*3);
+  struct screenpt *dst = projected;
+  signed char x, y, z;
+
+  while (pm < pm_e) {
+    x = pgm_read_byte_near(pm++);
+    y = pgm_read_byte_near(pm++);
+    z = pgm_read_byte_near(pm++);
+    float xx = x * mat[0] + y * mat[3] + z * mat[6];
+    float yy = x * mat[1] + y * mat[4] + z * mat[7];
+    float zz = x * mat[2] + y * mat[5] + z * mat[8] + distance;
+    int scale = 200;
+    float q = scale / (250 + zz);
+    dst->x = (511 & int(200 + xx * q)) | (((x^y^z) & 3) << 14);
+    dst->y = int(150 + yy * q);
+    dst->z = int(zz * 100);
+    dst++;
+  }
+}
+
+// point depth comparison, for depth sort
+int ptcmp(const void *va, const void *vb)
+{
+  struct screenpt *a = (struct screenpt *)va;
+  struct screenpt *b = (struct screenpt *)vb;
+
+  if (a->z < b->z)
+    return 1;
+  else if (a->z > b->z)
+    return -1;
+  else
+    return 0;
+}
+
+// load a sprite at (x,y).  z is distance 0-63, color is 0-3
+static void render_sphere(int x, int y, byte z, byte color)
+{
+  static byte pals[4][2] = {
+    { 4,6 },
+    { 5,7 },
+    { 0,1 },
+    { 2,3 }};
+
+  int ox = x - 8;
+  int oy = y - 8;
+  byte palette = pals[color][z & 1];
+  byte image = (z >> 1);
+
+  SPI.transfer(lowByte(ox));
+  SPI.transfer((palette << 4) | (highByte(ox) & 1));
+  SPI.transfer(lowByte(oy));
+  SPI.transfer((image << 1) | (highByte(oy) & 1));
+}
+
+void draw(float distance)
+{
+  project(distance);
+  qsort(projected, NVERTICES, sizeof(struct screenpt), ptcmp);
+
+  static byte flip;
+  GD.__wstartspr(flip ? 256 : 0);
+  for (int i = 0; i < NVERTICES; i++) {
+    byte color = (projected[i].x >> 14) & 3;
+    short x = projected[i].x & 511;
+    short y = projected[i].y;
+    int z = max(0, min(63, int(32 + projected[i].z / 500)));
+    render_sphere(x, y, z, color);
+  }
+  GD.__end();
+  GD.wr(SPR_PAGE, flip);
+  // if (flip == 0) rawdump(RAM_SPR, 1024);  // JCB
+  flip = !flip;
+}
+
+static float phi;    // Current rotation angle
+
+// Draw one frame of ship
+void cycle(float distance)
+{
+  rotation(phi);
+  phi += 0.02;
+  draw(distance);
+
+  // if (0)  // JCB
+  { // report frame rate in top-right
+    static byte every;
+    if (++every == 4) {
+      static long tprev;
+      long t = micros();
+      every = 0;
+
+      char msg[30];
+      int fps10 = int(4 * 10000000UL / (t - tprev));
+      sprintf(msg, "%3d.%d fps  ", fps10 / 10, fps10 % 10);
+      GD.putstr(41, 0, msg);
+      tprev = t;
+    }
+  }
+}
+
+static uint16_t rdpal(byte i)
+{
+  return pgm_read_word_near(sphere_pal + (i << 1));
+}
+
+void setup()
+{
+  GD.begin();
+  GD.ascii();
+  Serial.begin(1000000);  // JCB
+
+  for (byte y = 0; y < 38; y++) {
+    prog_uchar *src = ramp_pic + y * 4;
+    for (byte x = 0; x < 50; x++)
+      GD.wr(RAM_PIC + y * 64 + x, pgm_read_byte(src + random(4)));
+  }
+  GD.copy(RAM_CHR + 128 * 16, ramp_chr, sizeof(ramp_chr));
+  GD.copy(RAM_PAL + 128 * 8, ramp_pal, sizeof(ramp_pal));
+
+  GD.copy(PALETTE16A, sphere_pal, sizeof(sphere_pal));
+  for (byte i = 0; i < 16; i++) {
+    GD.wr16(PALETTE16B + 2 * i, SWAP_RB(rdpal(i)));
+  }
+
+  for (int i = 0; i < 256; i++) {
+    // palette 0 decodes low nibble, hence (i & 15)
+    GD.wr16(RAM_SPRPAL + (i << 1), SWAP_RG(rdpal(i & 15)));
+    // palette 1 decodes nigh nibble, hence (i >> 4)
+    GD.wr16(RAM_SPRPAL + 512 + (i << 1), SWAP_RG(rdpal(i >> 4)));
+
+    // palette 0 decodes low nibble, hence (i & 15)
+    GD.wr16(RAM_SPRPAL + 1024 + (i << 1), SWAP_RB(SWAP_RG(rdpal(i & 15))));
+    // palette 1 decodes nigh nibble, hence (i >> 4)
+    GD.wr16(RAM_SPRPAL + 1024 + 512 + (i << 1), SWAP_RB(SWAP_RG(rdpal(i >> 4))));
+  }
+
+  GD.copy(RAM_SPRIMG, sphere_img, sizeof(sphere_img));
+  // rawdump(0, 32768);  // JCB
+
+#ifdef MAPLE_IDE
+  GD.putstr(0, 0, "DNA demo: Gameduino with Maple");
+#else
+  GD.putstr(0, 0, "DNA demo: Gameduino with Arduino");
+#endif
+}
+
+void loop()
+{
+  cycle(0.0);
+}

+ 1 - 1
go

@@ -6,5 +6,5 @@ cp Gameduino.zip ~
 unzip -o ~/Gameduino.zip -d $HOME/Arduino/libraries/ &&
 
 # ./runtests `cat testset` ; exit
-./mkino collision
+./mkino dna
 # python /usr/share/doc/python-serial/examples/miniterm.py /dev/ttyUSB0 115200

+ 3 - 2
publish.py

@@ -9,8 +9,9 @@ inventory = {
     '1.Basics'          : "sprites256 palettes rotate collision scroll",
     '2.Audio'           : "toccata player sample instruments2",
     '3.Advanced'        : "interrupt splitscreen jkcollision bitmap wireframe snow assets",
-    '4.Demo'            : "ball chessboard asteroids frogger",
-    '5.Tools'           : "selftest screenshot memloader joytest",
+    '4.Demo'            : "ball chessboard dna",
+    '5.Games'           : "asteroids frogger",
+    '6.Tools'           : "selftest screenshot memloader joytest",
 }
 
 import zipfile