Difference between revisions of "1.54-inch E-paper Display"

From
Jump to: navigation, search
(Support)
([Code 2 Display a clock - WIFI v2])
 
(3 intermediate revisions by the same user not shown)
Line 8: Line 8:
 
<b>Setup</b>
 
<b>Setup</b>
  
Install Seeed <b>GFX Library</b><br>
+
Install Seeed <b>GFX Library</b>
https://github.com/Seeed-Studio/Seeed_GFX
+
https://github.com/Seeed-Studio/Seeed_GFX
  
 
This library has same function as TFT library and no compatible with it. If you have installed TFT library or other similary display libraries, please uninstall it first.
 
This library has same function as TFT library and no compatible with it. If you have installed TFT library or other similary display libraries, please uninstall it first.
Line 665: Line 665:
 
   delay(1000); // Boucle chaque seconde mais rafraîchit seulement à chaque minute
 
   delay(1000); // Boucle chaque seconde mais rafraîchit seulement à chaque minute
 
}
 
}
 +
</pre>
 +
 +
=== [Code 2 Display a clock - WIFI v2] ===
 +
 +
version modifié
 +
 +
<pre>
 +
#include <WiFi.h>
 +
#include <time.h>
 +
#include <TFT_eSPI.h>  // Librairie pour ton écran E-paper
 +
#include <SPI.h>
 +
 +
#ifdef EPAPER_ENABLE
 +
EPaper epaper = EPaper();  // Pins définis dans User_Setup.h
 +
#endif
 +
 +
// ⚙️ Paramètres WiFi
 +
const char* ssid    = "TON_SSID";
 +
const char* password = "TON_MOTDEPASSE";
 +
 +
// ⚙️ Paramètres NTP
 +
const char* ntpServer = "pool.ntp.org";
 +
const long  gmtOffset_sec = 3600;      // Décalage GMT (ex: +1h pour Suisse en hiver)
 +
const int  daylightOffset_sec = 3600;  // Décalage été (DST)
 +
 +
// Variables pour éviter scintillement
 +
int lastMinute = -1;
 +
 +
void setup() {
 +
  Serial.begin(115200);
 +
 +
#ifdef EPAPER_ENABLE
 +
  epaper.begin();
 +
  epaper.setRotation(1);
 +
  epaper.fillScreen(TFT_WHITE);              // Fond blanc
 +
  epaper.setTextColor(TFT_BLACK, TFT_WHITE); // Texte noir sur fond blanc
 +
  epaper.update();
 +
  epaper.sleep(); // Mise en veille après init
 +
#endif
 +
 +
  // Connexion WiFi
 +
  WiFi.begin(ssid, password);
 +
  Serial.print("Connexion au WiFi ");
 +
  Serial.println(ssid);
 +
 +
  while (WiFi.status() != WL_CONNECTED) {
 +
    delay(500);
 +
    Serial.print(".");
 +
  }
 +
  Serial.println("\nWiFi connecté !");
 +
  Serial.print("Adresse IP : ");
 +
  Serial.println(WiFi.localIP());
 +
  Serial.print("Adresse MAC : ");
 +
  Serial.println(WiFi.macAddress());
 +
 +
  // Initialisation NTP
 +
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
 +
}
 +
 +
void loop() {
 +
  // Récupérer l’heure système
 +
  struct tm timeinfo;
 +
  if (!getLocalTime(&timeinfo)) {
 +
    Serial.println("Erreur récupération heure NTP");
 +
    return; // Si pas d’heure dispo
 +
  }
 +
 +
  // Rafraîchir uniquement si la minute change
 +
  if (timeinfo.tm_min != lastMinute) {
 +
    lastMinute = timeinfo.tm_min;
 +
 +
#ifdef EPAPER_ENABLE
 +
    //epaper.wakeup(); // Réveille l’écran avant mise à jour
 +
    epaper.fillScreen(TFT_WHITE);
 +
 +
    // --- Affichage DATE (plus petite, centrée en haut) ---
 +
    epaper.setTextColor(TFT_BLACK, TFT_WHITE);
 +
    epaper.setTextDatum(TC_DATUM); // Centrage horizontal (Top Center)
 +
    epaper.drawString(
 +
      String(timeinfo.tm_mday) + "/" +
 +
      String(timeinfo.tm_mon+1) + "/" +
 +
      String(timeinfo.tm_year+1900),
 +
      epaper.width()/2, 30, 4  // police taille 2 -> 4
 +
    );
 +
 +
    // --- Affichage HEURE (plus grande, centrée au milieu) ---
 +
    char buffer[6];
 +
    sprintf(buffer, "%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min);
 +
    epaper.setTextDatum(MC_DATUM); // Centrage horizontal + vertical (Middle Center)
 +
    epaper.drawString(buffer, epaper.width()/2, epaper.height()/2, 7); // police taille 6 -> 7
 +
 +
    epaper.update(); // Mise à jour écran
 +
    //epaper.sleep();  // Mise en veille après mise à jour
 +
#endif
 +
 +
    // --- Sortie série ---
 +
    Serial.printf("Heure actuelle : %02d:%02d:%02d\n",
 +
                  timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
 +
  }
 +
 +
  delay(1000); // Boucle chaque seconde mais rafraîchit seulement à chaque minute
 +
}
 +
 
</pre>
 
</pre>

Latest revision as of 22:56, 12 December 2025

Support[edit]

1.54-inch E-paper Display

EPaper-Display-1.54.PNG

Setup

Install Seeed GFX Library
https://github.com/Seeed-Studio/Seeed_GFX

This library has same function as TFT library and no compatible with it. If you have installed TFT library or other similary display libraries, please uninstall it first.


Create a driver.h file and paste the following code into it.

Seeed GFX Library - Online Configuration Generator
https://seeed-studio.github.io/Seeed_GFX/

// driver.h file 
#define BOARD_SCREEN_COMBO 505 // 1.54 inch monochrome ePaper Screen (SSD1681)
#define USE_XIAO_EPAPER_BREAKOUT_BOARD

Sketch -> Include Library -> Add .ZIP
Seeed_GFX-master.zip

Upload the Code
driver.h
HelloWorld.ino


Liens externes[edit]

https://www.seeedstudio.com/1-54-Monochrome-ePaper-Display-with-200x200-Pixels-p-5776.html Shop

https://wiki.seeedstudio.com/XIAO-eInk-Expansion-Board/ Wiki

Exemples[edit]

/examples/ePaper/Basic

1 Bitmap: Display a bitmap image.
2 Clock: Display a clock.
3 Clock_digital: Display a digital clock.
4 HelloWorld:
5 Shape: Display different sizes of words and shape randomly.

[Code 1] Display a bitmap image[edit]

#include "TFT_eSPI.h"
#include "image.h"

#ifdef EPAPER_ENABLE
EPaper epaper;
#endif

void setup()
{
#ifdef EPAPER_ENABLE
  Serial.begin(115200);
  delay(2000);
  Serial.println("1.54\" E-Paper Bitmap Display Example");
  
  epaper.begin();
  
  // Clear screen to white
  epaper.fillScreen(TFT_WHITE);
  epaper.update();
  delay(1000);
  
  // Display bitmap image using drawBitmap API
  // drawBitmap(x, y, bitmap_data, width, height, color)
  epaper.drawBitmap(0, 0, gImage_1inch54, 200, 200, TFT_BLACK);
  epaper.update();
  
  Serial.println("Bitmap displayed successfully");
  
  // Put display to sleep to save power
  epaper.sleep();
#else
  Serial.begin(115200);
  Serial.println("EPAPER_ENABLE not defined. Please select the correct setup file.");
#endif
}

void loop()
{
  // Nothing to do here
}

onglet driver.h

// driver.h file 
#define BOARD_SCREEN_COMBO 505 // 1.54 inch monochrome ePaper Screen (SSD1681)
#define USE_XIAO_EPAPER_BREAKOUT_BOARD

onglet image.h

/*
 * Image header file for 1.54" E-Paper Display
 * 
 * Image specifications:
 * - Size: 200x200 pixels
 * - Format: 1-bit monochrome bitmap
 * - Color depth: Black and White
 * 
 * To generate your own image:
 * 1. Prepare a 200x200 pixel image
 * 2. Convert to 1-bit monochrome bitmap
 * 3. Use image2cpp or similar tool to generate C array
 * 4. Replace the array below with your generated data
 */

#ifndef _IMAGE_H_
#define _IMAGE_H_

// Placeholder for 200x200 bitmap image
// Replace this with your actual image data
const unsigned char gImage_1inch54[] PROGMEM = {
  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, 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, 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, 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, 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, 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, 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, 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,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x00,
  0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x07, 0xC0,
  0x7C, 0x07, 0xC0, 0xFD, 0x81, 0xFC, 0xC6, 0x18, 0x7E, 0xC0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x0F, 0xF0, 0xFE, 0x1F, 0xE1, 0xFF, 0x83, 0xFC, 0xEE,
  0x18, 0xFF, 0xCC, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
  0x1C, 0x71, 0xC7, 0x1C, 0x73, 0xC7, 0x83, 0x00, 0xEE, 0x19, 0xE3, 0xCC, 0xE3, 0xC0, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x3B, 0x83, 0x38, 0x33, 0x83, 0x83,
  0x80, 0xCE, 0x19, 0xC1, 0xCD, 0xC1, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x7C, 0x3F, 0xFB, 0xFF, 0xBF, 0xF3, 0x03, 0x83, 0xF0, 0xCE, 0x19, 0x81, 0xCD, 0xC0, 0xC0,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0xFB, 0xFF, 0xBF, 0xF3,
  0x03, 0x81, 0xFC, 0xCE, 0x19, 0x81, 0xCD, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x07, 0xB8, 0x03, 0x80, 0x38, 0x03, 0x03, 0x80, 0x1C, 0xCE, 0x19, 0x81, 0xCD,
  0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9C, 0x01, 0x80,
  0x38, 0x03, 0x87, 0x80, 0x0C, 0xC6, 0x19, 0xC3, 0xCC, 0xE1, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x9F, 0xF1, 0xFF, 0x1F, 0xE1, 0xFF, 0x83, 0x1C, 0xE7, 0xF8,
  0xFF, 0xCC, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x0F,
  0xE0, 0xFE, 0x0F, 0xE0, 0xFF, 0x83, 0xF8, 0xE3, 0xF0, 0x7F, 0xCC, 0x7F, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x03, 0x80, 0x38, 0x03, 0x80, 0x39, 0x80, 0xE0,
  0x20, 0xC0, 0x1C, 0xCC, 0x1C, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xC0, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79,
  0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xDC, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x18, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0xFC, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
  0x00, 0x01, 0x80, 0x13, 0xC6, 0xE6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0xB7, 0xE6, 0x66, 0xE4,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xF8, 0xE6, 0x66, 0x66, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFC, 0xC6, 0x76,
  0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xF0,
  0x00, 0x00, 0x00, 0x00, 0x04, 0x3C, 0xCC, 0xC6, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x30, 0xCC,
  0xC3, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
  0xFF, 0xF8, 0x00, 0x03, 0x00, 0x3F, 0x3B, 0x70, 0xCE, 0xC1, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x43, 0x06, 0x3F, 0x33,
  0xB0, 0xE6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE,
  0x00, 0x00, 0xFF, 0xF8, 0x00, 0xE3, 0x9F, 0xBB, 0xB3, 0xBE, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0xF7, 0x99,
  0x99, 0xBB, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F,
  0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0xF7, 0x99, 0x99, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFC, 0x00,
  0x7F, 0x99, 0x99, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x03, 0xFB, 0xFC, 0x00, 0x7D, 0x9F, 0x98, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x30, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x03, 0xFB,
  0xFC, 0x00, 0x6C, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xE7, 0x60, 0x00, 0x00,
  0x0C, 0x00, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x07, 0xF3, 0xFC, 0x00, 0x64, 0xC0, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xC0, 0x02, 0x31, 0x33, 0x60, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00,
  0x07, 0xF3, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0xB8, 0x71, 0xE0,
  0x00, 0x03, 0xFC, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x07, 0xF3, 0xFE, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xFC, 0x07, 0x99, 0x99, 0xB1, 0xC0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, 0xE0,
  0x00, 0x00, 0x0F, 0xF3, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x66, 0x19, 0x99,
  0xB8, 0xC0, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xE3, 0xFE, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x67, 0x19, 0x99, 0xF8, 0xC1, 0x00, 0x7F, 0xFE, 0x00, 0x00,
  0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xE1, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xC6, 0x67,
  0xD9, 0x9C, 0xC1, 0xFF, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xE1, 0xFE,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xE7, 0x60, 0xDF, 0x80, 0x0F, 0xFF, 0x01, 0xFF, 0xFE,
  0x00, 0x00, 0x0F, 0xF7, 0xFC, 0x00, 0x1F, 0xC1, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xE0,
  0x66, 0x77, 0xDE, 0x01, 0xFF, 0xFF, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x00, 0x3F,
  0xC1, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x3E, 0x66, 0xC0, 0x66, 0x37, 0x8C, 0x7F, 0xFF, 0xFF, 0x01,
  0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0x81, 0xFF, 0xF0, 0x00, 0x3F, 0x0E, 0x7F,
  0x7E, 0xE0, 0x7C, 0x20, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF,
  0xC0, 0x3F, 0x81, 0xFF, 0xF0, 0x00, 0x3B, 0xBE, 0x73, 0x78, 0x60, 0x78, 0x03, 0xFF, 0xFF, 0xFF,
  0xFF, 0x00, 0x81, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0x9F, 0xFF, 0xF0, 0x00, 0x31,
  0x87, 0x73, 0x70, 0x60, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x07,
  0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0xF0, 0x0F, 0x3B, 0x8F, 0x33, 0x3E, 0x40, 0x0F, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x07, 0xF8, 0x7F, 0xF0, 0x7F, 0xFF, 0xFF, 0xF8,
  0x0D, 0x9F, 0x1B, 0x3F, 0x18, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0x00,
  0x00, 0x07, 0xE0, 0x3F, 0xF0, 0xFF, 0xFF, 0xFF, 0xF8, 0x19, 0x9C, 0x3B, 0x3E, 0x00, 0x7F, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0xF8, 0x7F, 0xFF,
  0xFF, 0xF0, 0x1F, 0x98, 0x1F, 0x30, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
  0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x7F, 0xFF, 0xFF, 0x80, 0x1C, 0x18, 0x00, 0x33, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xF8,
  0x7F, 0xFF, 0xFF, 0x80, 0x0F, 0x98, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x7F, 0xC0, 0x7F, 0x80, 0x07, 0x00, 0x1F,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00,
  0x0F, 0xF8, 0x78, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xC0, 0x00,
  0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F,
  0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F,
  0xC0, 0x00, 0x01, 0x80, 0x1F, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xE0, 0x7F, 0xF0, 0x00,
  0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
  0x00, 0x7F, 0xC0, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x07, 0xFF, 0xFF,
  0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07,
  0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xE7, 0xC1, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xFF,
  0xC3, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0xFF, 0xC3, 0xE0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F,
  0xFF, 0xFF, 0xC3, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0x00, 0x1F, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFE, 0x7F, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF,
  0xFF, 0xEF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFE, 0x7F, 0xF7, 0x3F, 0xFF, 0xFF,
  0xF1, 0xE3, 0xE7, 0xF2, 0x39, 0x3F, 0xFF, 0xC7, 0x8F, 0x9F, 0xCC, 0xE7, 0x7F, 0xFF, 0xFF, 0xFF,
  0xC0, 0xFF, 0xFF, 0xFE, 0x7F, 0xE7, 0xFF, 0xFF, 0xFF, 0xC0, 0xC1, 0xC3, 0xF3, 0x39, 0xBC, 0xF3,
  0x03, 0x07, 0x0F, 0xCC, 0xE7, 0x3F, 0xFF, 0xFF, 0xFF, 0xCE, 0x61, 0xC3, 0x8E, 0x66, 0x41, 0x38,
  0x70, 0x73, 0xFC, 0xCC, 0x99, 0xF7, 0x33, 0xBE, 0x67, 0xF3, 0x32, 0x67, 0xDC, 0xE7, 0x3F, 0xFF,
  0xFF, 0xFF, 0xCC, 0x40, 0x83, 0x06, 0x66, 0x41, 0x30, 0x30, 0x33, 0xFC, 0xCC, 0x99, 0xF7, 0x33,
  0x9F, 0x0F, 0xF3, 0x32, 0x67, 0xDC, 0x67, 0xBF, 0xFF, 0xFF, 0xFF, 0xC0, 0xCC, 0x8E, 0x62, 0x66,
  0x67, 0x33, 0x33, 0x33, 0xF8, 0xCC, 0x99, 0xE7, 0x13, 0x9F, 0x9F, 0xE3, 0x32, 0x67, 0x9C, 0x07,
  0xBF, 0xFF, 0xFF, 0xFF, 0xC1, 0xC0, 0xC2, 0x72, 0x66, 0x67, 0x33, 0x33, 0x3F, 0xF9, 0xCC, 0x99,
  0xE7, 0x97, 0x9F, 0x0F, 0xE7, 0x32, 0x67, 0x9C, 0x67, 0xBF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCF, 0xF2,
  0x62, 0x66, 0x67, 0x33, 0x33, 0x3F, 0xF3, 0xCC, 0x99, 0xF7, 0x87, 0x9E, 0x67, 0xCF, 0x32, 0x67,
  0xDC, 0xE7, 0xBF, 0xFF, 0xFF, 0xFF, 0xCC, 0xC5, 0x93, 0x06, 0x20, 0x63, 0x30, 0x33, 0x33, 0xE0,
  0xC1, 0x81, 0xF7, 0x87, 0x9C, 0xF3, 0x83, 0x06, 0x07, 0xDC, 0xE7, 0x3F, 0xFF, 0xFF, 0xFF, 0xCE,
  0x61, 0x87, 0x0F, 0x30, 0x71, 0x38, 0x73, 0x33, 0xC0, 0xE1, 0xC3, 0xF3, 0xC7, 0xBF, 0xFF, 0x03,
  0x8F, 0x0F, 0xCC, 0xE7, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0x3F, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0x7F,
  0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x8F, 0xCE, 0x0E, 0x7F, 0xFC,
  0x18, 0x3E, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFE, 0x7F, 0xFF, 0xFF, 0x07, 0x86, 0x07, 0xFF, 0xFC, 0x18, 0x1C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xE1, 0xD1, 0x91, 0xC3, 0xC4, 0x18, 0x74, 0xDF, 0xE7, 0x86, 0x62,
  0x60, 0xFC, 0xF9, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xC0, 0xC0,
  0x81, 0xC1, 0x84, 0x10, 0x60, 0x8F, 0xE7, 0x26, 0x62, 0x60, 0x7C, 0xF9, 0x99, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xCC, 0xCC, 0x88, 0x99, 0x1E, 0x73, 0x23, 0xDF, 0xE6,
  0x66, 0x06, 0x66, 0x7C, 0x18, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF,
  0xCC, 0xCC, 0x8C, 0x81, 0x3E, 0x63, 0x23, 0xFF, 0xCE, 0x06, 0x0E, 0x66, 0x7C, 0x38, 0x39, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xCC, 0xCC, 0x8C, 0x9F, 0x3E, 0x73, 0x23,
  0xFF, 0x8E, 0x06, 0x7E, 0x66, 0x7C, 0xF9, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xC0, 0xC0, 0xCC, 0x8C, 0x8B, 0x86, 0x30, 0x23, 0x8F, 0x03, 0xE6, 0x7E, 0x66, 0x7C, 0xF9,
  0xFC, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE1, 0xCC, 0x8C, 0xC3, 0x87,
  0x18, 0x63, 0x9F, 0x03, 0xE6, 0x7E, 0x66, 0x7C, 0xF9, 0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF,
  0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x7C, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0x7C,
  0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF,
  0xE9, 0x0E, 0x66, 0x1C, 0x61, 0xCE, 0x1D, 0xF8, 0x7C, 0xE1, 0x99, 0xC7, 0x30, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xE1, 0x06, 0x64, 0x18, 0x60, 0xCC, 0x18,
  0xF8, 0x7C, 0xC0, 0x99, 0x83, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xCC, 0x67, 0xE6, 0x64, 0x71, 0xFC, 0xCC, 0xCD, 0xF2, 0x7C, 0xCC, 0x99, 0x33, 0x23, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x67, 0x07, 0x0E, 0x13, 0xE0,
  0xCC, 0x0F, 0xF0, 0x3C, 0xC0, 0xCB, 0x03, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xCE, 0x67, 0x27, 0x0F, 0x93, 0xE4, 0xCC, 0xFF, 0xF0, 0x3C, 0xCF, 0xC3, 0x3F,
  0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x67, 0x07, 0x9C,
  0x98, 0x60, 0xC4, 0x58, 0xFE, 0x7C, 0x45, 0xC3, 0x17, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE7, 0x07, 0x9C, 0x38, 0x60, 0xE6, 0x19, 0xFE, 0x7E, 0x61,
  0xE7, 0x83, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFE, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF,
  0x87, 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xCF, 0xFC, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x07, 0x03, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x98, 0x30, 0xC8, 0x18, 0x78,
  0xE3, 0x9F, 0x3F, 0x33, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xCC, 0x08, 0x20, 0xC0, 0x18, 0x30, 0xC1, 0x9F, 0x1F, 0x33, 0x3F, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, 0xE6, 0x47,
  0x3E, 0x23, 0x89, 0x9F, 0x07, 0x03, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, 0xE0, 0x4F, 0x38, 0x27, 0x81, 0xFF, 0xE3, 0x07, 0x3F,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC,
  0xE7, 0xCF, 0x33, 0x23, 0x8F, 0xFF, 0xF3, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, 0x62, 0xCF, 0x30, 0x30, 0xC1, 0x9F, 0x03,
  0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xCC, 0xCE, 0x30, 0xCF, 0x38, 0x30, 0xE1, 0x9F, 0x07, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};

#endif

[Code 2 Display a clock][edit]

/*
 An example digital clock using a TFT LCD screen to show the time.
 Demonstrates use of the font printing routines. (Time updates but date does not.)
 
 For a more accurate clock, it would be better to use the RTClib library.
 But this is just a demo. 
 
 This examples uses the hardware SPI only. Non-hardware SPI
 is just too slow (~8 times slower!)
 
 Based on clock sketch by Gilchrist 6/2/2014 1.0
 Updated by Bodmer
A few colour codes:
 
code	color
0x0000	Black
0xFFFF	White
0xBDF7	Light Gray
0x7BEF	Dark Gray
0xF800	Red
0xFFE0	Yellow
0xFBE0	Orange
0x79E0	Brown
0x7E0	Green
0x7FF	Cyan
0x1F	Blue
0xF81F	Pink

 */
#include <TFT_eSPI.h> // Graphics and font library for ST7735 driver chip
#include <SPI.h>

#ifdef EPAPER_ENABLE // Only compile this code if the EPAPER_ENABLE is defined in User_Setup.h

EPaper epaper = EPaper();  // Invoke library, pins defined in User_Setup.h

uint32_t targetTime = 0;       // for next 1 second timeout

byte omm = 99;
bool initial = 1;
byte xcolon = 0;
unsigned int colour = 0;

static uint8_t conv2d(const char* p) {
  uint8_t v = 0;
  if ('0' <= *p && *p <= '9')
    v = *p - '0';
  return 10 * v + *++p - '0';
}

uint8_t hh=conv2d(__TIME__), mm=conv2d(__TIME__+3), ss=conv2d(__TIME__+6);  // Get H, M, S from compile time

#endif

void setup(void) {
#ifdef EPAPER_ENABLE
  epaper.begin();
  epaper.setRotation(1);
  epaper.fillScreen(TFT_BLACK);

  epaper.setTextColor(TFT_YELLOW, TFT_BLACK); // Note: the new fonts do not draw the background colour
  epaper.update(); // update the display
  targetTime = millis() + 1000; 
#endif
}

void loop() {
#ifdef EPAPER_ENABLE
  if (targetTime < millis()) {
    targetTime = millis()+1000;
    ss++;              // Advance second
    if (ss==60) {
      ss=0;
      omm = mm;
      mm++;            // Advance minute
      if(mm>59) {
        mm=0;
        hh++;          // Advance hour
        if (hh>23) {
          hh=0;
        }
      }
    }

    if (ss==0 || initial) {
      initial = 0;
      epaper.setTextColor(TFT_GREEN, TFT_BLACK);
      epaper.setCursor (8, 52);
      epaper.print(__DATE__); // This uses the standard ADAFruit small font

      epaper.setTextColor(TFT_BLUE, TFT_BLACK);
      epaper.drawCentreString("It is windy",120,48,2); // Next size up font 2

      //epaper.setTextColor(0xF81F, TFT_BLACK); // Pink
      //epaper.drawCentreString("12.34",80,100,6); // Large font 6 only contains characters [space] 0 1 2 3 4 5 6 7 8 9 . : a p m
    }

    // Update digital time
    byte xpos = 6;
    byte ypos = 0;
    if (omm != mm) { // Only redraw every minute to minimise flicker
      // Uncomment ONE of the next 2 lines, using the ghost image demonstrates text overlay as time is drawn over it
      epaper.setTextColor(TFT_BLACK, TFT_BLACK);  // Leave a 7 segment ghost image, comment out next line!
      //epaper.setTextColor(TFT_BLACK, TFT_BLACK); // Set font colour to black to wipe image
      // Font 7 is to show a pseudo 7 segment display.
      // Font 7 only contains characters [space] 0 1 2 3 4 5 6 7 8 9 0 : .
      epaper.drawString("88:88",xpos,ypos,7); // Overwrite the text to clear it
      epaper.setTextColor(0xFBE0); // Orange
      omm = mm;

      if (hh<10) xpos+= epaper.drawChar('0',xpos,ypos,7);
      xpos+= epaper.drawNumber(hh,xpos,ypos,7);
      xcolon=xpos;
      xpos+= epaper.drawChar(':',xpos,ypos,7);
      if (mm<10) xpos+= epaper.drawChar('0',xpos,ypos,7);
      epaper.drawNumber(mm,xpos,ypos,7);
    }

    if (ss%2) { // Flash the colon
      epaper.setTextColor(TFT_BLACK, TFT_BLACK);
      xpos+= epaper.drawChar(':',xcolon,ypos,7);
      epaper.setTextColor(0xFBE0, TFT_BLACK);
    }
    else {
      epaper.drawChar(':',xcolon,ypos,7);
      colour = random(0xFFFF);
      // Erase the old text with a rectangle, the disadvantage of this method is increased display flicker
      epaper.fillRect (0, 64, 160, 20, TFT_BLACK);
      epaper.setTextColor(TFT_WHITE);
    }
    epaper.update(); // update the display
  }
#endif
}

onglet driver.h

// driver.h file 
#define BOARD_SCREEN_COMBO 505 // 1.54 inch monochrome ePaper Screen (SSD1681)
#define USE_XIAO_EPAPER_BREAKOUT_BOARD

[Code 2 Display a clock - WIFI][edit]

#include <WiFi.h>
#include <time.h>
#include <TFT_eSPI.h>   // Librairie pour ton écran E-paper
#include <SPI.h>

#ifdef EPAPER_ENABLE
EPaper epaper = EPaper();  // Pins définis dans User_Setup.h
#endif

// ⚙️ Paramètres WiFi
const char* ssid     = "TON_SSID";
const char* password = "TON_MOTDEPASSE";

// ⚙️ Paramètres NTP
const char* ntpServer = "pool.ntp.org";
const long  gmtOffset_sec = 3600;       // Décalage GMT (ex: +1h pour Suisse en hiver)
const int   daylightOffset_sec = 3600;  // Décalage été (DST)

// Variables pour éviter scintillement
int lastMinute = -1;

void setup() {
#ifdef EPAPER_ENABLE
  epaper.begin();
  epaper.setRotation(1);
  epaper.fillScreen(TFT_BLACK);
  epaper.setTextColor(TFT_WHITE, TFT_BLACK);
  epaper.update();
#endif

  // Connexion WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }

  // Initialisation NTP
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
}

void loop() {
  // Récupérer l’heure système
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    return; // Si pas d’heure dispo
  }

  // Rafraîchir uniquement si la minute change
  if (timeinfo.tm_min != lastMinute) {
    lastMinute = timeinfo.tm_min;

#ifdef EPAPER_ENABLE
    epaper.fillScreen(TFT_BLACK);

    // Afficher la date
    epaper.setTextColor(TFT_GREEN, TFT_BLACK);
    epaper.setCursor(10, 20);
    epaper.printf("%02d/%02d/%04d", timeinfo.tm_mday, timeinfo.tm_mon+1, timeinfo.tm_year+1900);

    // Afficher l’heure
    epaper.setTextColor(TFT_ORANGE, TFT_BLACK);
    epaper.setCursor(10, 60);
    epaper.printf("%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min);

    epaper.update(); // Mise à jour écran
#endif
  }

  delay(1000); // Boucle chaque seconde mais rafraîchit seulement à chaque minute
}

[Code 2 Display a clock - WIFI v2][edit]

version modifié

#include <WiFi.h>
#include <time.h>
#include <TFT_eSPI.h>   // Librairie pour ton écran E-paper
#include <SPI.h>

#ifdef EPAPER_ENABLE
EPaper epaper = EPaper();  // Pins définis dans User_Setup.h
#endif

// ⚙️ Paramètres WiFi
const char* ssid     = "TON_SSID";
const char* password = "TON_MOTDEPASSE";

// ⚙️ Paramètres NTP
const char* ntpServer = "pool.ntp.org";
const long  gmtOffset_sec = 3600;       // Décalage GMT (ex: +1h pour Suisse en hiver)
const int   daylightOffset_sec = 3600;  // Décalage été (DST)

// Variables pour éviter scintillement
int lastMinute = -1;

void setup() {
  Serial.begin(115200);

#ifdef EPAPER_ENABLE
  epaper.begin();
  epaper.setRotation(1);
  epaper.fillScreen(TFT_WHITE);              // Fond blanc
  epaper.setTextColor(TFT_BLACK, TFT_WHITE); // Texte noir sur fond blanc
  epaper.update();
  epaper.sleep(); // Mise en veille après init
#endif

  // Connexion WiFi
  WiFi.begin(ssid, password);
  Serial.print("Connexion au WiFi ");
  Serial.println(ssid);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi connecté !");
  Serial.print("Adresse IP : ");
  Serial.println(WiFi.localIP());
  Serial.print("Adresse MAC : ");
  Serial.println(WiFi.macAddress());

  // Initialisation NTP
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
}

void loop() {
  // Récupérer l’heure système
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    Serial.println("Erreur récupération heure NTP");
    return; // Si pas d’heure dispo
  }

  // Rafraîchir uniquement si la minute change
  if (timeinfo.tm_min != lastMinute) {
    lastMinute = timeinfo.tm_min;

#ifdef EPAPER_ENABLE
    //epaper.wakeup(); // Réveille l’écran avant mise à jour
    epaper.fillScreen(TFT_WHITE);

    // --- Affichage DATE (plus petite, centrée en haut) ---
    epaper.setTextColor(TFT_BLACK, TFT_WHITE);
    epaper.setTextDatum(TC_DATUM); // Centrage horizontal (Top Center)
    epaper.drawString(
      String(timeinfo.tm_mday) + "/" + 
      String(timeinfo.tm_mon+1) + "/" + 
      String(timeinfo.tm_year+1900),
      epaper.width()/2, 30, 4   // police taille 2 -> 4
    );

    // --- Affichage HEURE (plus grande, centrée au milieu) ---
    char buffer[6];
    sprintf(buffer, "%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min);
    epaper.setTextDatum(MC_DATUM); // Centrage horizontal + vertical (Middle Center)
    epaper.drawString(buffer, epaper.width()/2, epaper.height()/2, 7); // police taille 6 -> 7

    epaper.update(); // Mise à jour écran
    //epaper.sleep();  // Mise en veille après mise à jour
#endif

    // --- Sortie série ---
    Serial.printf("Heure actuelle : %02d:%02d:%02d\n", 
                  timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
  }

  delay(1000); // Boucle chaque seconde mais rafraîchit seulement à chaque minute
}