2023-05-04 11:03:02 +02:00
#!/usr/bin/env python3
2021-01-14 20:17:14 +01:00
from sys import argv
from collections import OrderedDict
import re
2023-07-29 19:03:17 +02:00
import msgpack # way faster than pickle
2021-01-14 20:17:14 +01:00
class Message :
def __init__ ( self , name , section , index ) :
self . name = name
self . section = section
self . index = index
2023-07-29 19:03:17 +02:00
self . bytes = [ ] # XXX: bytearray would be better
2021-01-14 20:17:14 +01:00
def try_convert_int ( s ) :
try :
return int ( s , base = 0 )
except :
return s
2023-07-29 19:03:17 +02:00
2021-01-14 20:17:14 +01:00
def parse_command ( source ) :
if source [ 0 ] != " [ " :
2021-04-13 09:47:52 +02:00
return None , [ ] , { } , source
2023-07-29 19:03:17 +02:00
source = source [ 1 : ] # "["
2021-01-14 20:17:14 +01:00
inside_brackets = " "
while source [ 0 ] != " ] " :
if source [ 0 ] == " \n " :
2021-04-13 09:47:52 +02:00
return None , [ ] , { } , source
2021-01-14 20:17:14 +01:00
inside_brackets + = source [ 0 ]
source = source [ 1 : ]
2023-07-29 19:03:17 +02:00
source = source [ 1 : ] # "]"
2021-01-14 20:17:14 +01:00
2021-04-13 09:47:52 +02:00
command , * raw_args = inside_brackets . split ( " " )
2021-01-14 20:17:14 +01:00
2021-02-10 01:12:28 +01:00
args = [ ]
2021-01-14 20:17:14 +01:00
named_args = { }
2021-04-13 09:47:52 +02:00
for arg in raw_args :
2021-01-14 20:17:14 +01:00
if " = " in arg :
key , value = arg . split ( " = " , 1 )
2021-04-13 09:47:52 +02:00
if " , " in value :
named_args [ key . lower ( ) ] = [ try_convert_int ( v ) for v in value . lower ( ) . split ( " , " ) ]
else :
named_args [ key . lower ( ) ] = try_convert_int ( value . lower ( ) )
2021-01-14 20:17:14 +01:00
else :
2021-04-13 09:47:52 +02:00
if " , " in arg :
args . append ( [ try_convert_int ( value ) for value in arg . lower ( ) . split ( " , " ) ] )
else :
args . append ( try_convert_int ( arg . lower ( ) ) )
2021-01-14 20:17:14 +01:00
2021-04-13 09:47:52 +02:00
# args = []
# for arg in raw_args:
# args.append(try_convert_int(arg.lower()))
2021-01-14 20:17:14 +01:00
2021-04-13 09:47:52 +02:00
return command . lower ( ) , args , named_args , source
2021-02-10 01:12:28 +01:00
2023-07-29 19:03:17 +02:00
2021-02-10 01:12:28 +01:00
def color_to_code ( color , style ) :
2021-01-14 20:17:14 +01:00
COLORS = {
" diary " : {
" normal " : 0x00 ,
" red " : 0x07 ,
} ,
" inspect " : {
" dark " : 0x17 ,
} ,
" button " : {
" blue " : 0x10 ,
" green " : 0x11 ,
" red " : 0x12 ,
" yellow " : 0x13 ,
" gray " : 0x14 ,
" grey " : 0x14 ,
} ,
" popup " : {
" red " : 0x28 ,
" pink " : 0x29 ,
" purple " : 0x2A ,
" blue " : 0x2B ,
" teal " : 0x2C ,
" green " : 0x2D ,
" yellow " : 0x2E ,
" normal " : 0x2F ,
} ,
" sign " : {
" normal " : 0x18 ,
" red " : 0x19 ,
" blue " : 0x1A ,
" green " : 0x1B ,
2023-07-29 19:03:17 +02:00
} ,
2021-01-14 20:17:14 +01:00
}
if type ( color ) is int :
return color
2023-07-29 19:03:17 +02:00
return COLORS . get (
style ,
{
# [style:left], [style:right]
" normal " : 0x0A ,
" red " : 0x20 ,
" pink " : 0x21 ,
" purple " : 0x22 ,
" blue " : 0x23 ,
" cyan " : 0x24 ,
" green " : 0x25 ,
" yellow " : 0x26 ,
} ,
) . get ( color )
2021-02-10 01:12:28 +01:00
2023-12-25 14:15:30 +01:00
CHARSET_STANDARD = {
2023-07-29 19:03:17 +02:00
# "𝅘𝅥𝅮": 0x00,
2021-01-14 20:17:14 +01:00
" ! " : 0x01 ,
' " ' : 0x02 ,
" # " : 0x03 ,
" $ " : 0x04 ,
" % " : 0x05 ,
" & " : 0x06 ,
" ' " : 0x07 ,
" ( " : 0x08 ,
" ) " : 0x09 ,
" * " : 0x0A ,
" + " : 0x0B ,
" , " : 0x0C ,
" - " : 0x0D ,
" . " : 0x0E ,
" / " : 0x0F ,
" 0 " : 0x10 ,
" 1 " : 0x11 ,
" 2 " : 0x12 ,
" 3 " : 0x13 ,
" 4 " : 0x14 ,
" 5 " : 0x15 ,
" 6 " : 0x16 ,
" 7 " : 0x17 ,
" 8 " : 0x18 ,
" 9 " : 0x19 ,
" : " : 0x1A ,
" ; " : 0x1B ,
" < " : 0x1C ,
" = " : 0x1D ,
" > " : 0x1E ,
" ? " : 0x1F ,
" @ " : 0x20 ,
" A " : 0x21 ,
" B " : 0x22 ,
" C " : 0x23 ,
" D " : 0x24 ,
" E " : 0x25 ,
" F " : 0x26 ,
" G " : 0x27 ,
" H " : 0x28 ,
" I " : 0x29 ,
" J " : 0x2A ,
" K " : 0x2B ,
" L " : 0x2C ,
" M " : 0x2D ,
" N " : 0x2E ,
" O " : 0x2F ,
" P " : 0x30 ,
" Q " : 0x31 ,
" R " : 0x32 ,
" S " : 0x33 ,
" T " : 0x34 ,
" U " : 0x35 ,
" V " : 0x36 ,
" W " : 0x37 ,
" X " : 0x38 ,
" Y " : 0x39 ,
" Z " : 0x3A ,
" [ " : 0x3B ,
" ¥ " : 0x3C ,
" ] " : 0x3D ,
" ^ " : 0x3E ,
" _ " : 0x3F ,
" ` " : 0x40 ,
" a " : 0x41 ,
" b " : 0x42 ,
" c " : 0x43 ,
" d " : 0x44 ,
" e " : 0x45 ,
" f " : 0x46 ,
" g " : 0x47 ,
" h " : 0x48 ,
" i " : 0x49 ,
" j " : 0x4A ,
" k " : 0x4B ,
" l " : 0x4C ,
" m " : 0x4D ,
" n " : 0x4E ,
" o " : 0x4F ,
" p " : 0x50 ,
" q " : 0x51 ,
" r " : 0x52 ,
" s " : 0x53 ,
" t " : 0x54 ,
" u " : 0x55 ,
" v " : 0x56 ,
" w " : 0x57 ,
" x " : 0x58 ,
" y " : 0x59 ,
" z " : 0x5A ,
" { " : 0x5B ,
" | " : 0x5C ,
" } " : 0x5D ,
" ~ " : 0x5E ,
" ° " : 0x5F ,
" À " : 0x60 ,
" Á " : 0x61 ,
" Â " : 0x62 ,
" Ä " : 0x63 ,
" Ç " : 0x64 ,
" È " : 0x65 ,
" É " : 0x66 ,
" Ê " : 0x67 ,
" Ë " : 0x68 ,
" Ì " : 0x69 ,
" Í " : 0x6A ,
" Î " : 0x6B ,
" Ï " : 0x6C ,
" Ñ " : 0x6D ,
" Ò " : 0x6E ,
" Ó " : 0x6F ,
" Ô " : 0x70 ,
" Ö " : 0x71 ,
" Ù " : 0x72 ,
" Ú " : 0x73 ,
" Û " : 0x74 ,
" Ü " : 0x75 ,
" ß " : 0x76 ,
" à " : 0x77 ,
" á " : 0x78 ,
" â " : 0x79 ,
" ä " : 0x7A ,
" ç " : 0x7B ,
" è " : 0x7C ,
" é " : 0x7D ,
" ê " : 0x7E ,
" ë " : 0x7F ,
" ì " : 0x80 ,
" í " : 0x81 ,
" î " : 0x82 ,
" ï " : 0x83 ,
" ñ " : 0x84 ,
" ò " : 0x85 ,
" ó " : 0x86 ,
" ô " : 0x87 ,
" ö " : 0x88 ,
" ù " : 0x89 ,
" ú " : 0x8A ,
" û " : 0x8B ,
" ü " : 0x8C ,
" ¡ " : 0x8D ,
" ¿ " : 0x8E ,
" ª " : 0x8F ,
2021-02-10 01:12:28 +01:00
# "♥": 0x90,
# "★": 0x91,
# "↑": 0x92,
# "↓": 0x93,
# "←": 0x94,
# "→": 0x95,
# "●": 0x96,
# "✖": 0x97,
2021-01-14 20:17:14 +01:00
" “ " : 0xA2 ,
" ” " : 0xA3 ,
" ‘ " : 0xA4 ,
" ’ " : 0xA5 ,
" " : 0xF7 ,
2023-12-25 14:15:30 +01:00
" " : 0xF7 ,
2021-02-10 01:12:28 +01:00
# "Ⓐ": [0xFF, 0x24, 0xFF, 0x05, 0x10, 0x98, 0xFF, 0x25],
# "Ⓑ": [0xFF, 0x24, 0xFF, 0x05, 0x11, 0x99, 0xFF, 0x25],
# "Ⓢ": [0xFF, 0x24, 0xFF, 0x05, 0x12, 0xA1, 0xFF, 0x25],
# "▲": [0xFF, 0x24, 0xFF, 0x05, 0x13, 0x9D, 0xFF, 0x25],
# "▼": [0xFF, 0x24, 0xFF, 0x05, 0x13, 0x9E, 0xFF, 0x25],
# "◀": [0xFF, 0x24, 0xFF, 0x05, 0x13, 0x9F, 0xFF, 0x25],
# "▶": [0xFF, 0x24, 0xFF, 0x05, 0x13, 0xA0, 0xFF, 0x25],
# "Ⓛ": [0xFF, 0x24, 0xFF, 0x05, 0x14, 0x9A, 0xFF, 0x25],
# "Ⓡ": [0xFF, 0x24, 0xFF, 0x05, 0x14, 0x9B, 0xFF, 0x25],
# "Ⓩ": [0xFF, 0x24, 0xFF, 0x05, 0x14, 0x9C, 0xFF, 0x25],
2021-01-14 20:17:14 +01:00
}
CHARSET_CREDITS = {
" A " : 0x00 ,
" B " : 0x01 ,
" C " : 0x02 ,
" D " : 0x03 ,
" E " : 0x04 ,
" F " : 0x05 ,
" G " : 0x06 ,
" H " : 0x07 ,
" I " : 0x08 ,
" J " : 0x09 ,
" K " : 0x0A ,
" L " : 0x0B ,
" M " : 0x0C ,
" N " : 0x0D ,
" O " : 0x0E ,
" P " : 0x0F ,
" Q " : 0x10 ,
" R " : 0x11 ,
" S " : 0x12 ,
" T " : 0x13 ,
" U " : 0x14 ,
" V " : 0x15 ,
" W " : 0x16 ,
" X " : 0x17 ,
" Y " : 0x18 ,
" Z " : 0x19 ,
" ' " : 0x1A ,
" . " : 0x1B ,
" , " : 0x1C ,
" 0 " : 0x1D ,
" 1 " : 0x1E ,
" 2 " : 0x1F ,
" 3 " : 0x20 ,
" 4 " : 0x21 ,
" 5 " : 0x22 ,
" 6 " : 0x23 ,
" 7 " : 0x24 ,
" 8 " : 0x25 ,
" 9 " : 0x26 ,
" © " : 0x27 ,
" & " : 0x28 ,
" " : 0xF7 ,
2023-12-25 14:15:30 +01:00
" " : 0xF8 ,
2021-01-14 20:17:14 +01:00
}
2023-12-25 14:15:30 +01:00
CHARSET_KANA = {
" あ " : 0x00 ,
" い " : 0x01 ,
" う " : 0x02 ,
" え " : 0x03 ,
" お " : 0x04 ,
" か " : 0x05 ,
" き " : 0x06 ,
" く " : 0x07 ,
" け " : 0x08 ,
" こ " : 0x09 ,
" さ " : 0x0A ,
" し " : 0x0B ,
" す " : 0x0C ,
" せ " : 0x0D ,
" そ " : 0x0E ,
" た " : 0x0F ,
" ち " : 0x10 ,
" つ " : 0x11 ,
" て " : 0x12 ,
" と " : 0x13 ,
" な " : 0x14 ,
" に " : 0x15 ,
" ぬ " : 0x16 ,
" ね " : 0x17 ,
" の " : 0x18 ,
" は " : 0x19 ,
" ひ " : 0x1A ,
" ふ " : 0x1B ,
" へ " : 0x1C ,
" ほ " : 0x1D ,
" ま " : 0x1E ,
" み " : 0x1F ,
" む " : 0x20 ,
" め " : 0x21 ,
" も " : 0x22 ,
" や " : 0x23 ,
" ゆ " : 0x24 ,
" よ " : 0x25 ,
" ら " : 0x26 ,
" り " : 0x27 ,
" る " : 0x28 ,
" れ " : 0x29 ,
" ろ " : 0x2A ,
" わ " : 0x2B ,
" を " : 0x2C ,
" ん " : 0x2D ,
" ゔ " : 0x2E ,
" が " : 0x2F ,
" ぎ " : 0x30 ,
" ぐ " : 0x31 ,
" げ " : 0x32 ,
" ご " : 0x33 ,
" ざ " : 0x34 ,
" じ " : 0x35 ,
" ず " : 0x36 ,
" ぜ " : 0x37 ,
" ぞ " : 0x38 ,
" だ " : 0x39 ,
" ぢ " : 0x3A ,
" づ " : 0x3B ,
" で " : 0x3C ,
" ど " : 0x3D ,
" ば " : 0x3E ,
" び " : 0x3F ,
" ぶ " : 0x40 ,
" べ " : 0x41 ,
" ぼ " : 0x42 ,
" ぱ " : 0x43 ,
" ぴ " : 0x44 ,
" ぷ " : 0x45 ,
" ぺ " : 0x46 ,
" ぽ " : 0x47 ,
" ぁ " : 0x48 ,
" ぃ " : 0x49 ,
" ぅ " : 0x4A ,
" ぇ " : 0x4B ,
" ぉ " : 0x4C ,
" っ " : 0x4D ,
" ゃ " : 0x4E ,
" ゅ " : 0x4F ,
" ょ " : 0x50 ,
" ア " : 0x51 ,
" イ " : 0x52 ,
" ウ " : 0x53 ,
" エ " : 0x54 ,
" オ " : 0x55 ,
" カ " : 0x56 ,
" キ " : 0x57 ,
" ク " : 0x58 ,
" ケ " : 0x59 ,
" コ " : 0x5A ,
" サ " : 0x5B ,
" シ " : 0x5C ,
" ス " : 0x5D ,
" セ " : 0x5E ,
" ソ " : 0x5F ,
" タ " : 0x60 ,
" チ " : 0x61 ,
" ツ " : 0x62 ,
" テ " : 0x63 ,
" ト " : 0x64 ,
" ナ " : 0x65 ,
" ニ " : 0x66 ,
" ヌ " : 0x67 ,
" ネ " : 0x68 ,
" ノ " : 0x69 ,
" ハ " : 0x6A ,
" ヒ " : 0x6B ,
" フ " : 0x6C ,
" ヘ " : 0x6D ,
" ホ " : 0x6E ,
" マ " : 0x6F ,
" ミ " : 0x70 ,
" ム " : 0x71 ,
" メ " : 0x72 ,
" モ " : 0x73 ,
" ヤ " : 0x74 ,
" ユ " : 0x75 ,
" ヨ " : 0x76 ,
" ラ " : 0x77 ,
" リ " : 0x78 ,
" ル " : 0x79 ,
" レ " : 0x7A ,
" ロ " : 0x7B ,
" ワ " : 0x7C ,
" ヲ " : 0x7D ,
" ン " : 0x7E ,
" ヴ " : 0x7F ,
" ガ " : 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 ,
" ~ " : 0xA3 ,
# "―": 0xA4,
# "―": 0xA5,
# "―": 0xA6,
" 0 " : 0xA7 ,
" 0 " : 0xA7 ,
" 1 " : 0xA8 ,
" 1 " : 0xA8 ,
" 2 " : 0xA9 ,
" 2 " : 0xA9 ,
" 3 " : 0xAA ,
" 3 " : 0xAA ,
" 4 " : 0xAB ,
" 4 " : 0xAB ,
" 5 " : 0xAC ,
" 5 " : 0xAC ,
" 6 " : 0xAD ,
" 6 " : 0xAD ,
" 7 " : 0xAE ,
" 7 " : 0xAE ,
" 8 " : 0xAF ,
" 8 " : 0xAF ,
" 9 " : 0xB0 ,
" 9 " : 0xB0 ,
" [up] " : 0xB1 ,
" [down] " : 0xB2 ,
" [left] " : 0xB3 ,
" [right] " : 0xB4 ,
" ! " : 0xB5 ,
" ! " : 0xB5 ,
" ? " : 0xB6 ,
" ? " : 0xB6 ,
" + " : 0xB7 ,
" + " : 0xB7 ,
" - " : 0xB8 ,
" / " : 0xB9 ,
" / " : 0xB9 ,
" . " : 0xBA ,
" . " : 0xBA ,
" & " : 0xBB ,
" & " : 0xBB ,
" # " : 0xBC ,
" # " : 0xBC ,
" [heart] " : 0xBD ,
" [star] " : 0xBE ,
" ( " : 0xBF ,
" ( " : 0xBF ,
" ) " : 0xC0 ,
" ) " : 0xC0 ,
" 『 " : 0xC1 ,
" 』 " : 0xC2 ,
" ・ " : 0xC3 ,
" [hiragana smalln] " : 0xC4 ,
" [katakana smalln] " : 0xC5 ,
" 星 " : 0xC6 ,
# 0xC7 is unused
" " : 0xF7 ,
" " : 0xF8 ,
}
CHARSET_LATIN = {
" A " : 0x00 ,
" A " : 0x00 ,
" B " : 0x01 ,
" B " : 0x01 ,
" C " : 0x02 ,
" C " : 0x02 ,
" D " : 0x03 ,
" D " : 0x03 ,
" E " : 0x04 ,
" E " : 0x04 ,
" F " : 0x05 ,
" F " : 0x05 ,
" G " : 0x06 ,
" G " : 0x06 ,
" H " : 0x07 ,
" H " : 0x07 ,
" I " : 0x08 ,
" I " : 0x08 ,
" J " : 0x09 ,
" J " : 0x09 ,
" K " : 0x0A ,
" K " : 0x0A ,
" L " : 0x0B ,
" L " : 0x0B ,
" M " : 0x0C ,
" M " : 0x0C ,
" N " : 0x0D ,
" N " : 0x0D ,
" O " : 0x0E ,
" O " : 0x0E ,
" P " : 0x0F ,
" P " : 0x0F ,
" Q " : 0x10 ,
" Q " : 0x10 ,
" R " : 0x11 ,
" R " : 0x11 ,
" S " : 0x12 ,
" S " : 0x12 ,
" T " : 0x13 ,
" T " : 0x13 ,
" U " : 0x14 ,
" U " : 0x14 ,
" V " : 0x15 ,
" V " : 0x15 ,
" W " : 0x16 ,
" W " : 0x16 ,
" X " : 0x17 ,
" X " : 0x17 ,
" Y " : 0x18 ,
" Y " : 0x18 ,
" Z " : 0x19 ,
" Z " : 0x19 ,
" z " : 0x1A ,
" z " : 0x1A ,
" " : 0xF7 ,
" " : 0xF8 ,
}
CHARSET_KANJI = {
" 上 " : 0x00 ,
" 下 " : 0x01 ,
" 左 " : 0x02 ,
" 右 " : 0x03 ,
" 中 " : 0x04 ,
" 東 " : 0x05 ,
" 西 " : 0x06 ,
" 南 " : 0x07 ,
" 北 " : 0x08 ,
" 一 " : 0x09 ,
" 二 " : 0x0A ,
" 三 " : 0x0B ,
" 名 " : 0x0C ,
" 国 " : 0x0D ,
" 城 " : 0x0E ,
" 姫 " : 0x0F ,
" 大 " : 0x10 ,
" 王 " : 0x11 ,
" 花 " : 0x12 ,
" 世 " : 0x13 ,
" 界 " : 0x14 ,
" 草 " : 0x15 ,
" 気 " : 0x16 ,
" 間 " : 0x17 ,
" 門 " : 0x18 ,
" 家 " : 0x19 ,
" 地 " : 0x1A ,
" 岩 " : 0x1B ,
" 駅 " : 0x1C ,
" 山 " : 0x1D ,
" 海 " : 0x1E ,
" 火 " : 0x1F ,
" 水 " : 0x20 ,
" 氷 " : 0x21 ,
" 日 " : 0x22 ,
" 根 " : 0x23 ,
" 雲 " : 0x24 ,
" 口 " : 0x25 ,
" 原 " : 0x26 ,
" 前 " : 0x27 ,
" 店 " : 0x28 ,
" 天 " : 0x29 ,
" 森 " : 0x2A ,
" 木 " : 0x2B ,
" 力 " : 0x2C ,
" 空 " : 0x2D ,
" 人 " : 0x2E ,
" 島 " : 0x2F ,
" 出 " : 0x30 ,
" 入 " : 0x31 ,
" 本 " : 0x32 ,
" 石 " : 0x33 ,
" 村 " : 0x34 ,
" 休 " : 0x35 ,
" 先 " : 0x36 ,
" 見 " : 0x37 ,
" 近 " : 0x38 ,
" 方 " : 0x39 ,
" 法 " : 0x3A ,
" 手 " : 0x3B ,
" 紙 " : 0x3C ,
" 引 " : 0x3D ,
" 場 " : 0x3E ,
" 所 " : 0x3F ,
" 使 " : 0x40 ,
" 回 " : 0x41 ,
" 道 " : 0x42 ,
" 物 " : 0x43 ,
" 弟 " : 0x44 ,
" 子 " : 0x45 ,
" 汽 " : 0x46 ,
" 車 " : 0x47 ,
" 何 " : 0x48 ,
" 黒 " : 0x49 ,
" 分 " : 0x4A ,
" 時 " : 0x4B ,
" 屋 " : 0x4C ,
" 音 " : 0x4D ,
" 目 " : 0x4E ,
" 行 " : 0x4F ,
" 絵 " : 0x50 ,
" 月 " : 0x51 ,
" 野 " : 0x52 ,
" 外 " : 0x53 ,
" 図 " : 0x54 ,
" 部 " : 0x55 ,
" 小 " : 0x56 ,
" 風 " : 0x57 ,
" 魔 " : 0x58 ,
" 元 " : 0x59 ,
" 太 " : 0x5A ,
" 陽 " : 0x5B ,
" 実 " : 0x5C ,
" 赤 " : 0x5D ,
" 雪 " : 0x5E ,
" 谷 " : 0x5F ,
" 通 " : 0x60 ,
" [circle] " : 0x61 ,
" [cross] " : 0x62 ,
" 長 " : 0x63 ,
" 話 " : 0x64 ,
" 色 " : 0x65 ,
" 光 " : 0x66 ,
" 合 " : 0x67 ,
" 青 " : 0x68 ,
" 黄 " : 0x69 ,
" [note] " : 0x6A ,
" 当 " : 0x6B ,
" 数 " : 0x6C ,
" 兄 " : 0x6D ,
" 用 " : 0x6E ,
" 心 " : 0x6F ,
" 今 " : 0x70 ,
" 正 " : 0x71 ,
" 直 " : 0x72 ,
" 全 " : 0x73 ,
" 体 " : 0x74 ,
" 夜 " : 0x75 ,
" 面 " : 0x76 ,
" 虫 " : 0x77 ,
" x " : 0x78 ,
" x " : 0x78 ,
" " : 0xF7 ,
" " : 0xF8 ,
}
CHARSET_BUTTONS = {
" [~a] " : 0x00 ,
" [~b] " : 0x01 ,
" [~start] " : 0x02 ,
" [~c-up] " : 0x03 ,
" [~c-down] " : 0x04 ,
" [~c-left] " : 0x05 ,
" [~c-right] " : 0x06 ,
" [~z] " : 0x07 ,
" [~l] " : 0x08 ,
" [~r] " : 0x09 ,
}
2024-02-03 15:27:25 +01:00
CHARSET_IQUE = {
" " : 0xF7 ,
" 栗 " : [ 0x5F , 0x01 ] ,
" 萨 " : [ 0x5F , 0x02 ] ,
" 带 " : [ 0x5F , 0x03 ] ,
" 块 " : [ 0x5F , 0x04 ] ,
" 珍 " : [ 0x5F , 0x05 ] ,
" 美 " : [ 0x5F , 0x06 ] ,
" 啧 " : [ 0x5F , 0x07 ] ,
" 荣 " : [ 0x5F , 0x08 ] ,
" 吗 " : [ 0x5F , 0x09 ] ,
" 前 " : [ 0x5F , 0x0A ] ,
" 破 " : [ 0x5F , 0x0B ] ,
" 孙 " : [ 0x5F , 0x0C ] ,
" 因 " : [ 0x5F , 0x0D ] ,
" 激 " : [ 0x5F , 0x0E ] ,
" 曾 " : [ 0x5F , 0x0F ] ,
" 震 " : [ 0x5F , 0x10 ] ,
" 芒 " : [ 0x5F , 0x11 ] ,
" 峰 " : [ 0x5F , 0x12 ] ,
" 略 " : [ 0x5F , 0x13 ] ,
" 居 " : [ 0x5F , 0x14 ] ,
" 课 " : [ 0x5F , 0x15 ] ,
" 父 " : [ 0x5F , 0x16 ] ,
" 扑 " : [ 0x5F , 0x17 ] ,
" 数 " : [ 0x5F , 0x18 ] ,
" 腻 " : [ 0x5F , 0x19 ] ,
" 吸 " : [ 0x5F , 0x1A ] ,
" 化 " : [ 0x5F , 0x1B ] ,
" 死 " : [ 0x5F , 0x1C ] ,
" 逸 " : [ 0x5F , 0x1D ] ,
" 婪 " : [ 0x5F , 0x1E ] ,
" 售 " : [ 0x5F , 0x1F ] ,
" 采 " : [ 0x5F , 0x20 ] ,
" 质 " : [ 0x5F , 0x21 ] ,
" 积 " : [ 0x5F , 0x22 ] ,
" 窄 " : [ 0x5F , 0x23 ] ,
" 徘 " : [ 0x5F , 0x24 ] ,
" 睦 " : [ 0x5F , 0x25 ] ,
" 悉 " : [ 0x5F , 0x26 ] ,
" 骂 " : [ 0x5F , 0x27 ] ,
" 践 " : [ 0x5F , 0x28 ] ,
" 益 " : [ 0x5F , 0x29 ] ,
" 魄 " : [ 0x5F , 0x2A ] ,
" 侧 " : [ 0x5F , 0x2B ] ,
" 辖 " : [ 0x5F , 0x2C ] ,
" 酱 " : [ 0x5F , 0x2D ] ,
" 咐 " : [ 0x5F , 0x2E ] ,
" 剔 " : [ 0x5F , 0x2F ] ,
" 妇 " : [ 0x5F , 0x30 ] ,
" 掀 " : [ 0x5F , 0x31 ] ,
" 子 " : [ 0x60 , 0x01 ] ,
" 秃 " : [ 0x60 , 0x02 ] ,
" 长 " : [ 0x60 , 0x03 ] ,
" 埃 " : [ 0x60 , 0x04 ] ,
" 贵 " : [ 0x60 , 0x05 ] ,
" 光 " : [ 0x60 , 0x06 ] ,
" 嗯 " : [ 0x60 , 0x07 ] ,
" 幸 " : [ 0x60 , 0x08 ] ,
" 倒 " : [ 0x60 , 0x09 ] ,
" 探 " : [ 0x60 , 0x0A ] ,
" 坏 " : [ 0x60 , 0x0B ] ,
" 进 " : [ 0x60 , 0x0C ] ,
" 此 " : [ 0x60 , 0x0D ] ,
" 动 " : [ 0x60 , 0x0E ] ,
" 害 " : [ 0x60 , 0x0F ] ,
" 危 " : [ 0x60 , 0x10 ] ,
" 强 " : [ 0x60 , 0x11 ] ,
" 雷 " : [ 0x60 , 0x12 ] ,
" 玻 " : [ 0x60 , 0x13 ] ,
" 企 " : [ 0x60 , 0x14 ] ,
" 程 " : [ 0x60 , 0x15 ] ,
" 贝 " : [ 0x60 , 0x16 ] ,
" 鼻 " : [ 0x60 , 0x17 ] ,
" 声 " : [ 0x60 , 0x18 ] ,
" 莓 " : [ 0x60 , 0x19 ] ,
" 盾 " : [ 0x60 , 0x1A ] ,
" 汽 " : [ 0x60 , 0x1B ] ,
" 衰 " : [ 0x60 , 0x1C ] ,
" 魁 " : [ 0x60 , 0x1D ] ,
" 率 " : [ 0x60 , 0x1E ] ,
" 广 " : [ 0x60 , 0x1F ] ,
" 捉 " : [ 0x60 , 0x20 ] ,
" 埋 " : [ 0x60 , 0x21 ] ,
" 鸦 " : [ 0x60 , 0x22 ] ,
" 仆 " : [ 0x60 , 0x23 ] ,
" 徊 " : [ 0x60 , 0x24 ] ,
" 脾 " : [ 0x60 , 0x25 ] ,
" 含 " : [ 0x60 , 0x26 ] ,
" 蔼 " : [ 0x60 , 0x27 ] ,
" 艳 " : [ 0x60 , 0x28 ] ,
" 阵 " : [ 0x60 , 0x29 ] ,
" 宜 " : [ 0x60 , 0x2A ] ,
" 罕 " : [ 0x60 , 0x2B ] ,
" 肚 " : [ 0x60 , 0x2C ] ,
" 娱 " : [ 0x60 , 0x2D ] ,
" 妄 " : [ 0x60 , 0x2E ] ,
" 栅 " : [ 0x60 , 0x2F ] ,
" 郑 " : [ 0x60 , 0x30 ] ,
" 兼 " : [ 0x60 , 0x31 ] ,
" 小 " : [ 0x61 , 0x01 ] ,
" 鹫 " : [ 0x61 , 0x02 ] ,
" 矛 " : [ 0x61 , 0x03 ] ,
" 莫 " : [ 0x61 , 0x04 ] ,
" 的 " : [ 0x61 , 0x05 ] ,
" 就 " : [ 0x61 , 0x06 ] ,
" 好 " : [ 0x61 , 0x07 ] ,
" 某 " : [ 0x61 , 0x08 ] ,
" 提 " : [ 0x61 , 0x09 ] ,
" 十 " : [ 0x61 , 0x0A ] ,
" 果 " : [ 0x61 , 0x0B ] ,
" 疑 " : [ 0x61 , 0x0C ] ,
" 忙 " : [ 0x61 , 0x0D ] ,
" 及 " : [ 0x61 , 0x0E ] ,
" 怕 " : [ 0x61 , 0x0F ] ,
" 使 " : [ 0x61 , 0x10 ] ,
" 烈 " : [ 0x61 , 0x11 ] ,
" 沙 " : [ 0x61 , 0x12 ] ,
" 尼 " : [ 0x61 , 0x13 ] ,
" 鹅 " : [ 0x61 , 0x14 ] ,
" 晚 " : [ 0x61 , 0x15 ] ,
" 胆 " : [ 0x61 , 0x16 ] ,
" 坚 " : [ 0x61 , 0x17 ] ,
" 警 " : [ 0x61 , 0x18 ] ,
" 搅 " : [ 0x61 , 0x19 ] ,
" 避 " : [ 0x61 , 0x1A ] ,
" 脸 " : [ 0x61 , 0x1B ] ,
" 淘 " : [ 0x61 , 0x1C ] ,
" 梧 " : [ 0x61 , 0x1D ] ,
" 幅 " : [ 0x61 , 0x1E ] ,
" 温 " : [ 0x61 , 0x1F ] ,
" 占 " : [ 0x61 , 0x20 ] ,
" 喝 " : [ 0x61 , 0x21 ] ,
" 叉 " : [ 0x61 , 0x22 ] ,
" 搞 " : [ 0x61 , 0x23 ] ,
" 务 " : [ 0x61 , 0x24 ] ,
" 挤 " : [ 0x61 , 0x25 ] ,
" 欲 " : [ 0x61 , 0x26 ] ,
" 骚 " : [ 0x61 , 0x27 ] ,
" 驴 " : [ 0x61 , 0x28 ] ,
" 刷 " : [ 0x61 , 0x29 ] ,
" 赫 " : [ 0x61 , 0x2A ] ,
" 刮 " : [ 0x61 , 0x2B ] ,
" 勃 " : [ 0x61 , 0x2C ] ,
" 卧 " : [ 0x61 , 0x2D ] ,
" 堕 " : [ 0x61 , 0x2E ] ,
" 睹 " : [ 0x61 , 0x2F ] ,
" 综 " : [ 0x61 , 0x30 ] ,
" 瞧 " : [ 0x61 , 0x31 ] ,
" 刺 " : [ 0x62 , 0x01 ] ,
" 哥 " : [ 0x62 , 0x02 ] ,
" 毒 " : [ 0x62 , 0x03 ] ,
" 斯 " : [ 0x62 , 0x04 ] ,
" 星 " : [ 0x62 , 0x05 ] ,
" 是 " : [ 0x62 , 0x06 ] ,
" 任 " : [ 0x62 , 0x07 ] ,
" 受 " : [ 0x62 , 0x08 ] ,
" 醒 " : [ 0x62 , 0x09 ] ,
" 分 " : [ 0x62 , 0x0A ] ,
" 村 " : [ 0x62 , 0x0B ] ,
" 问 " : [ 0x62 , 0x0C ] ,
" 闻 " : [ 0x62 , 0x0D ] ,
" 迎 " : [ 0x62 , 0x0E ] ,
" 肯 " : [ 0x62 , 0x0F ] ,
" 伦 " : [ 0x62 , 0x10 ] ,
" 拥 " : [ 0x62 , 0x11 ] ,
" 漠 " : [ 0x62 , 0x12 ] ,
" 拓 " : [ 0x62 , 0x13 ] ,
" 格 " : [ 0x62 , 0x14 ] ,
" 愚 " : [ 0x62 , 0x15 ] ,
" 接 " : [ 0x62 , 0x16 ] ,
" 叶 " : [ 0x62 , 0x17 ] ,
" 型 " : [ 0x62 , 0x18 ] ,
" 拌 " : [ 0x62 , 0x19 ] ,
" 钧 " : [ 0x62 , 0x1A ] ,
" 类 " : [ 0x62 , 0x1B ] ,
" 捣 " : [ 0x62 , 0x1C ] ,
" 捡 " : [ 0x62 , 0x1D ] ,
" 伏 " : [ 0x62 , 0x1E ] ,
" 暖 " : [ 0x62 , 0x1F ] ,
" 座 " : [ 0x62 , 0x20 ] ,
" 肤 " : [ 0x62 , 0x21 ] ,
" 轨 " : [ 0x62 , 0x22 ] ,
" 右 " : [ 0x62 , 0x23 ] ,
" 悠 " : [ 0x62 , 0x24 ] ,
" 社 " : [ 0x62 , 0x25 ] ,
" 圣 " : [ 0x62 , 0x26 ] ,
" 拔 " : [ 0x62 , 0x27 ] ,
" 犟 " : [ 0x62 , 0x28 ] ,
" 梳 " : [ 0x62 , 0x29 ] ,
" 诱 " : [ 0x62 , 0x2A ] ,
" 池 " : [ 0x62 , 0x2B ] ,
" 卓 " : [ 0x62 , 0x2C ] ,
" 框 " : [ 0x62 , 0x2D ] ,
" 君 " : [ 0x62 , 0x2E ] ,
" 敛 " : [ 0x62 , 0x2F ] ,
" 嫌 " : [ 0x62 , 0x30 ] ,
" 斤 " : [ 0x62 , 0x31 ] ,
" 头 " : [ 0x63 , 0x01 ] ,
" 哈 " : [ 0x63 , 0x02 ] ,
" 壳 " : [ 0x63 , 0x03 ] ,
" 枯 " : [ 0x63 , 0x04 ] ,
" 杖 " : [ 0x63 , 0x05 ] ,
" 对 " : [ 0x63 , 0x06 ] ,
" 何 " : [ 0x63 , 0x07 ] ,
" 尊 " : [ 0x63 , 0x08 ] ,
" 跟 " : [ 0x63 , 0x09 ] ,
" 耶 " : [ 0x63 , 0x0A ] ,
" 英 " : [ 0x63 , 0x0B ] ,
" 赛 " : [ 0x63 , 0x0C ] ,
" 各 " : [ 0x63 , 0x0D ] ,
" 渴 " : [ 0x63 , 0x0E ] ,
" 莉 " : [ 0x63 , 0x0F ] ,
" 绑 " : [ 0x63 , 0x10 ] ,
" 繁 " : [ 0x63 , 0x11 ] ,
" 置 " : [ 0x63 , 0x12 ] ,
" 莱 " : [ 0x63 , 0x13 ] ,
" 细 " : [ 0x63 , 0x14 ] ,
" 蠢 " : [ 0x63 , 0x15 ] ,
" 剩 " : [ 0x63 , 0x16 ] ,
" 深 " : [ 0x63 , 0x17 ] ,
" 饰 " : [ 0x63 , 0x18 ] ,
" 拿 " : [ 0x63 , 0x19 ] ,
" 良 " : [ 0x63 , 0x1A ] ,
" 扔 " : [ 0x63 , 0x1B ] ,
" 跺 " : [ 0x63 , 0x1C ] ,
" 嘴 " : [ 0x63 , 0x1D ] ,
" 坑 " : [ 0x63 , 0x1E ] ,
" 遭 " : [ 0x63 , 0x1F ] ,
" 桥 " : [ 0x63 , 0x20 ] ,
" 祖 " : [ 0x63 , 0x21 ] ,
" 承 " : [ 0x63 , 0x22 ] ,
" 膝 " : [ 0x63 , 0x23 ] ,
" 赋 " : [ 0x63 , 0x24 ] ,
" 怂 " : [ 0x63 , 0x25 ] ,
" 凋 " : [ 0x63 , 0x26 ] ,
" 详 " : [ 0x63 , 0x27 ] ,
" 沟 " : [ 0x63 , 0x28 ] ,
" 撤 " : [ 0x63 , 0x29 ] ,
" 攥 " : [ 0x63 , 0x2A ] ,
" 绳 " : [ 0x63 , 0x2B ] ,
" 枕 " : [ 0x63 , 0x2C ] ,
" 插 " : [ 0x63 , 0x2D ] ,
" 絞 " : [ 0x63 , 0x2E ] ,
" 萌 " : [ 0x63 , 0x2F ] ,
" 亡 " : [ 0x63 , 0x30 ] ,
" 撑 " : [ 0x63 , 0x31 ] ,
" 飞 " : [ 0x64 , 0x01 ] ,
" 金 " : [ 0x64 , 0x02 ] ,
" 炎 " : [ 0x64 , 0x03 ] ,
" 骨 " : [ 0x64 , 0x04 ] ,
" 从 " : [ 0x64 , 0x05 ] ,
" 真 " : [ 0x64 , 0x06 ] ,
" 言 " : [ 0x64 , 0x07 ] ,
" 敬 " : [ 0x64 , 0x08 ] ,
" 起 " : [ 0x64 , 0x09 ] ,
" 交 " : [ 0x64 , 0x0A ] ,
" 雄 " : [ 0x64 , 0x0B ] ,
" 只 " : [ 0x64 , 0x0C ] ,
" 邪 " : [ 0x64 , 0x0D ] ,
" 秘 " : [ 0x64 , 0x0E ] ,
" 波 " : [ 0x64 , 0x0F ] ,
" 架 " : [ 0x64 , 0x10 ] ,
" 衷 " : [ 0x64 , 0x11 ] ,
" 烹 " : [ 0x64 , 0x12 ] ,
" 咒 " : [ 0x64 , 0x13 ] ,
" 侵 " : [ 0x64 , 0x14 ] ,
" 称 " : [ 0x64 , 0x15 ] ,
" 余 " : [ 0x64 , 0x16 ] ,
" 稀 " : [ 0x64 , 0x17 ] ,
" 古 " : [ 0x64 , 0x18 ] ,
" 洗 " : [ 0x64 , 0x19 ] ,
" A " : [ 0x64 , 0x1A ] ,
" 式 " : [ 0x64 , 0x1B ] ,
" 脚 " : [ 0x64 , 0x1C ] ,
" 吐 " : [ 0x64 , 0x1D ] ,
" 建 " : [ 0x64 , 0x1E ] ,
" 袭 " : [ 0x64 , 0x1F ] ,
" 修 " : [ 0x64 , 0x20 ] ,
" 胃 " : [ 0x64 , 0x21 ] ,
" 钮 " : [ 0x64 , 0x22 ] ,
" 富 " : [ 0x64 , 0x23 ] ,
" 倔 " : [ 0x64 , 0x24 ] ,
" 恿 " : [ 0x64 , 0x25 ] ,
" 零 " : [ 0x64 , 0x26 ] ,
" 支 " : [ 0x64 , 0x27 ] ,
" 岔 " : [ 0x64 , 0x28 ] ,
" 悚 " : [ 0x64 , 0x29 ] ,
" 赊 " : [ 0x64 , 0x2A ] ,
" 枝 " : [ 0x64 , 0x2B ] ,
" 绅 " : [ 0x64 , 0x2C ] ,
" 讶 " : [ 0x64 , 0x2D ] ,
" 晬 " : [ 0x64 , 0x2E ] ,
" 绍 " : [ 0x64 , 0x2F ] ,
" 讯 " : [ 0x64 , 0x30 ] ,
" 订 " : [ 0x64 , 0x31 ] ,
" 行 " : [ 0x65 , 0x01 ] ,
" 面 " : [ 0x65 , 0x02 ] ,
" 芽 " : [ 0x65 , 0x03 ] ,
" 魔 " : [ 0x65 , 0x04 ] ,
" 底 " : [ 0x65 , 0x05 ] ,
" 打 " : [ 0x65 , 0x06 ] ,
" 语 " : [ 0x65 , 0x07 ] ,
" 家 " : [ 0x65 , 0x08 ] ,
" 些 " : [ 0x65 , 0x09 ] ,
" 完 " : [ 0x65 , 0x0A ] ,
" 顺 " : [ 0x65 , 0x0B ] ,
" 玩 " : [ 0x65 , 0x0C ] ,
" 恶 " : [ 0x65 , 0x0D ] ,
" 凡 " : [ 0x65 , 0x0E ] ,
" 园 " : [ 0x65 , 0x0F ] ,
" 迹 " : [ 0x65 , 0x10 ] ,
" 题 " : [ 0x65 , 0x11 ] ,
" 饪 " : [ 0x65 , 0x12 ] ,
" 糕 " : [ 0x65 , 0x13 ] ,
" 守 " : [ 0x65 , 0x14 ] ,
" 奖 " : [ 0x65 , 0x15 ] ,
" 抗 " : [ 0x65 , 0x16 ] ,
" 烤 " : [ 0x65 , 0x17 ] ,
" 娃 " : [ 0x65 , 0x18 ] ,
" 餐 " : [ 0x65 , 0x19 ] ,
" D " : [ 0x65 , 0x1A ] ,
" 射 " : [ 0x65 , 0x1B ] ,
" 碍 " : [ 0x65 , 0x1C ] ,
" 棍 " : [ 0x65 , 0x1D ] ,
" 议 " : [ 0x65 , 0x1E ] ,
" 闹 " : [ 0x65 , 0x1F ] ,
" 晴 " : [ 0x65 , 0x20 ] ,
" 狗 " : [ 0x65 , 0x21 ] ,
" 伸 " : [ 0x65 , 0x22 ] ,
" 堂 " : [ 0x65 , 0x23 ] ,
" 执 " : [ 0x65 , 0x24 ] ,
" 途 " : [ 0x65 , 0x25 ] ,
" 争 " : [ 0x65 , 0x26 ] ,
" 伫 " : [ 0x65 , 0x27 ] ,
" 脉 " : [ 0x65 , 0x28 ] ,
" 轰 " : [ 0x65 , 0x29 ] ,
" 憾 " : [ 0x65 , 0x2A ] ,
" 茂 " : [ 0x65 , 0x2B ] ,
" 咆 " : [ 0x65 , 0x2C ] ,
" 钉 " : [ 0x65 , 0x2D ] ,
" 痕 " : [ 0x65 , 0x2E ] ,
" 屑 " : [ 0x65 , 0x2F ] ,
" 咽 " : [ 0x65 , 0x30 ] ,
" 驯 " : [ 0x65 , 0x31 ] ,
" 红 " : [ 0x66 , 0x01 ] ,
" 龟 " : [ 0x66 , 0x02 ] ,
" 钳 " : [ 0x66 , 0x03 ] ,
" 法 " : [ 0x66 , 0x04 ] ,
" 里 " : [ 0x66 , 0x05 ] ,
" 败 " : [ 0x66 , 0x06 ] ,
" 无 " : [ 0x66 , 0x07 ] ,
" 梦 " : [ 0x66 , 0x08 ] ,
" 伙 " : [ 0x66 , 0x09 ] ,
" 全 " : [ 0x66 , 0x0A ] ,
" 消 " : [ 0x66 , 0x0B ] ,
" 笑 " : [ 0x66 , 0x0C ] ,
" 忧 " : [ 0x66 , 0x0D ] ,
" 智 " : [ 0x66 , 0x0E ] ,
" 越 " : [ 0x66 , 0x0F ] ,
" 恩 " : [ 0x66 , 0x10 ] ,
" 宇 " : [ 0x66 , 0x11 ] ,
" 凯 " : [ 0x66 , 0x12 ] ,
" 幽 " : [ 0x66 , 0x13 ] ,
" 据 " : [ 0x66 , 0x14 ] ,
" 励 " : [ 0x66 , 0x15 ] ,
" 持 " : [ 0x66 , 0x16 ] ,
" 源 " : [ 0x66 , 0x17 ] ,
" 罐 " : [ 0x66 , 0x18 ] ,
" 清 " : [ 0x66 , 0x19 ] ,
" B " : [ 0x66 , 0x1A ] ,
" 断 " : [ 0x66 , 0x1B ] ,
" 备 " : [ 0x66 , 0x1C ] ,
" 仿 " : [ 0x66 , 0x1D ] ,
" 赴 " : [ 0x66 , 0x1E ] ,
" 供 " : [ 0x66 , 0x1F ] ,
" 朗 " : [ 0x66 , 0x20 ] ,
" 般 " : [ 0x66 , 0x21 ] ,
" 五 " : [ 0x66 , 0x22 ] ,
" 璃 " : [ 0x66 , 0x23 ] ,
" 髦 " : [ 0x66 , 0x24 ] ,
" 疏 " : [ 0x66 , 0x25 ] ,
" 逗 " : [ 0x66 , 0x26 ] ,
" 猖 " : [ 0x66 , 0x27 ] ,
" 掘 " : [ 0x66 , 0x28 ] ,
" 释 " : [ 0x66 , 0x29 ] ,
" 巅 " : [ 0x66 , 0x2A ] ,
" 坪 " : [ 0x66 , 0x2B ] ,
" 哮 " : [ 0x66 , 0x2C ] ,
" 贺 " : [ 0x66 , 0x2D ] ,
" 锢 " : [ 0x66 , 0x2E ] ,
" 咂 " : [ 0x66 , 0x2F ] ,
" 唐 " : [ 0x66 , 0x30 ] ,
" 堪 " : [ 0x66 , 0x31 ] ,
" 色 " : [ 0x67 , 0x01 ] ,
" 汪 " : [ 0x67 , 0x02 ] ,
" 朱 " : [ 0x67 , 0x03 ] ,
" 卫 " : [ 0x67 , 0x04 ] ,
" 感 " : [ 0x67 , 0x05 ] ,
" 狠 " : [ 0x67 , 0x06 ] ,
" 表 " : [ 0x67 , 0x07 ] ,
" 朋 " : [ 0x67 , 0x08 ] ,
" 伴 " : [ 0x67 , 0x09 ] ,
" 解 " : [ 0x67 , 0x0A ] ,
" 息 " : [ 0x67 , 0x0B ] ,
" 尽 " : [ 0x67 , 0x0C ] ,
" 虑 " : [ 0x67 , 0x0D ] ,
" 慧 " : [ 0x67 , 0x0E ] ,
" 愉 " : [ 0x67 , 0x0F ] ,
" 客 " : [ 0x67 , 0x10 ] ,
" 碎 " : [ 0x67 , 0x11 ] ,
" 茜 " : [ 0x67 , 0x12 ] ,
" 床 " : [ 0x67 , 0x13 ] ,
" 或 " : [ 0x67 , 0x14 ] ,
" 厉 " : [ 0x67 , 0x15 ] ,
" 焦 " : [ 0x67 , 0x16 ] ,
" 汁 " : [ 0x67 , 0x17 ] ,
" 月 " : [ 0x67 , 0x18 ] ,
" 洁 " : [ 0x67 , 0x19 ] ,
" E " : [ 0x67 , 0x1A ] ,
" 突 " : [ 0x67 , 0x1B ] ,
" 武 " : [ 0x67 , 0x1C ] ,
" 替 " : [ 0x67 , 0x1D ] ,
" 磋 " : [ 0x67 , 0x1E ] ,
" 妈 " : [ 0x67 , 0x1F ] ,
" 據 " : [ 0x67 , 0x20 ] ,
" 窝 " : [ 0x67 , 0x21 ] ,
" 宽 " : [ 0x67 , 0x22 ] ,
" 闭 " : [ 0x67 , 0x23 ] ,
" 卦 " : [ 0x67 , 0x24 ] ,
" 凑 " : [ 0x67 , 0x25 ] ,
" 侦 " : [ 0x67 , 0x26 ] ,
" 獗 " : [ 0x67 , 0x27 ] ,
" 政 " : [ 0x67 , 0x28 ] ,
" 愁 " : [ 0x67 , 0x29 ] ,
" 枚 " : [ 0x67 , 0x2A ] ,
" 褐 " : [ 0x67 , 0x2B ] ,
" 恰 " : [ 0x67 , 0x2C ] ,
" 廉 " : [ 0x67 , 0x2D ] ,
" 槽 " : [ 0x67 , 0x2E ] ,
" 妒 " : [ 0x67 , 0x2F ] ,
" 诡 " : [ 0x67 , 0x30 ] ,
" 摄 " : [ 0x67 , 0x31 ] ,
" 蓝 " : [ 0x68 , 0x01 ] ,
" 食 " : [ 0x68 , 0x02 ] ,
" 盖 " : [ 0x68 , 0x03 ] ,
" 锤 " : [ 0x68 , 0x04 ] ,
" 会 " : [ 0x68 , 0x05 ] ,
" 地 " : [ 0x68 , 0x06 ] ,
" 达 " : [ 0x68 , 0x07 ] ,
" 友 " : [ 0x68 , 0x08 ] ,
" 怎 " : [ 0x68 , 0x09 ] ,
" 方 " : [ 0x68 , 0x0A ] ,
" 闲 " : [ 0x68 , 0x0B ] ,
" 情 " : [ 0x68 , 0x0C ] ,
" 兴 " : [ 0x68 , 0x0D ] ,
" 痛 " : [ 0x68 , 0x0E ] ,
" 既 " : [ 0x68 , 0x0F ] ,
" 砰 " : [ 0x68 , 0x10 ] ,
" 颜 " : [ 0x68 , 0x11 ] ,
" 制 " : [ 0x68 , 0x12 ] ,
" 单 " : [ 0x68 , 0x13 ] ,
" 睬 " : [ 0x68 , 0x14 ] ,
" 论 " : [ 0x68 , 0x15 ] ,
" 急 " : [ 0x68 , 0x16 ] ,
" 熟 " : [ 0x68 , 0x17 ] ,
" 角 " : [ 0x68 , 0x18 ] ,
" 剂 " : [ 0x68 , 0x19 ] ,
" C " : [ 0x68 , 0x1A ] ,
" 尚 " : [ 0x68 , 0x1B ] ,
" 涉 " : [ 0x68 , 0x1C ] ,
" 扮 " : [ 0x68 , 0x1D ] ,
" 犹 " : [ 0x68 , 0x1E ] ,
" 配 " : [ 0x68 , 0x1F ] ,
" 研 " : [ 0x68 , 0x20 ] ,
" 窜 " : [ 0x68 , 0x21 ] ,
" 阔 " : [ 0x68 , 0x22 ] ,
" 旺 " : [ 0x68 , 0x23 ] ,
" 谣 " : [ 0x68 , 0x24 ] ,
" 陌 " : [ 0x68 , 0x25 ] ,
" 焉 " : [ 0x68 , 0x26 ] ,
" 奴 " : [ 0x68 , 0x27 ] ,
" 慌 " : [ 0x68 , 0x28 ] ,
" 焚 " : [ 0x68 , 0x29 ] ,
" 秒 " : [ 0x68 , 0x2A ] ,
" 毯 " : [ 0x68 , 0x2B ] ,
" 溃 " : [ 0x68 , 0x2C ] ,
" 妥 " : [ 0x68 , 0x2D ] ,
" 仇 " : [ 0x68 , 0x2E ] ,
" 忌 " : [ 0x68 , 0x2F ] ,
" 戒 " : [ 0x68 , 0x30 ] ,
" 拾 " : [ 0x68 , 0x31 ] ,
" 王 " : [ 0x69 , 0x01 ] ,
" 人 " : [ 0x69 , 0x02 ] ,
" 蜜 " : [ 0x69 , 0x03 ] ,
" 巫 " : [ 0x69 , 0x04 ] ,
" 用 " : [ 0x69 , 0x05 ] ,
" 教 " : [ 0x69 , 0x06 ] ,
" 所 " : [ 0x69 , 0x07 ] ,
" 没 " : [ 0x69 , 0x08 ] ,
" 嗨 " : [ 0x69 , 0x09 ] ,
" 风 " : [ 0x69 , 0x0A ] ,
" 荡 " : [ 0x69 , 0x0B ] ,
" 享 " : [ 0x69 , 0x0C ] ,
" 甜 " : [ 0x69 , 0x0D ] ,
" 苦 " : [ 0x69 , 0x0E ] ,
" 简 " : [ 0x69 , 0x0F ] ,
" 姐 " : [ 0x69 , 0x10 ] ,
" 砖 " : [ 0x69 , 0x11 ] ,
" 柠 " : [ 0x69 , 0x12 ] ,
" 撞 " : [ 0x69 , 0x13 ] ,
" 私 " : [ 0x69 , 0x14 ] ,
" 两 " : [ 0x69 , 0x15 ] ,
" 俘 " : [ 0x69 , 0x16 ] ,
" 瓜 " : [ 0x69 , 0x17 ] ,
" 男 " : [ 0x69 , 0x18 ] ,
" 烘 " : [ 0x69 , 0x19 ] ,
" F " : [ 0x69 , 0x1A ] ,
" 咖 " : [ 0x69 , 0x1B ] ,
" 驾 " : [ 0x69 , 0x1C ] ,
" 众 " : [ 0x69 , 0x1D ] ,
" 豫 " : [ 0x69 , 0x1E ] ,
" 饲 " : [ 0x69 , 0x1F ] ,
" 沿 " : [ 0x69 , 0x20 ] ,
" 且 " : [ 0x69 , 0x21 ] ,
" 舌 " : [ 0x69 , 0x22 ] ,
" 摔 " : [ 0x69 , 0x23 ] ,
" 讲 " : [ 0x69 , 0x24 ] ,
" 织 " : [ 0x69 , 0x25 ] ,
" 卤 " : [ 0x69 , 0x26 ] ,
" 役 " : [ 0x69 , 0x27 ] ,
" 悲 " : [ 0x69 , 0x28 ] ,
" 稽 " : [ 0x69 , 0x29 ] ,
" 辱 " : [ 0x69 , 0x2A ] ,
" 淡 " : [ 0x69 , 0x2B ] ,
" 咕 " : [ 0x69 , 0x2C ] ,
" 衬 " : [ 0x69 , 0x2D ] ,
" 弦 " : [ 0x69 , 0x2E ] ,
" 辑 " : [ 0x69 , 0x2F ] ,
" 勺 " : [ 0x69 , 0x30 ] ,
" 树 " : [ 0x6A , 0x01 ] ,
" 花 " : [ 0x6A , 0x02 ] ,
" 蜂 " : [ 0x6A , 0x03 ] ,
" 婆 " : [ 0x6A , 0x04 ] ,
" 它 " : [ 0x6A , 0x05 ] ,
" 训 " : [ 0x6A , 0x06 ] ,
" 切 " : [ 0x6A , 0x07 ] ,
" 什 " : [ 0x6A , 0x08 ] ,
" 邮 " : [ 0x6A , 0x09 ] ,
" 把 " : [ 0x6A , 0x0A ] ,
" 差 " : [ 0x6A , 0x0B ] ,
" 咳 " : [ 0x6A , 0x0C ] ,
" 伤 " : [ 0x6A , 0x0D ] ,
" 誓 " : [ 0x6A , 0x0E ] ,
" 徒 " : [ 0x6A , 0x0F ] ,
" 穿 " : [ 0x6A , 0x10 ] ,
" 技 " : [ 0x6A , 0x11 ] ,
" 檬 " : [ 0x6A , 0x12 ] ,
" 椰 " : [ 0x6A , 0x13 ] ,
" 致 " : [ 0x6A , 0x14 ] ,
" 优 " : [ 0x6A , 0x15 ] ,
" 虏 " : [ 0x6A , 0x16 ] ,
" 药 " : [ 0x6A , 0x17 ] ,
" 肖 " : [ 0x6A , 0x18 ] ,
" 牛 " : [ 0x6A , 0x19 ] ,
" 注 " : [ 0x6A , 0x1A ] ,
" 喱 " : [ 0x6A , 0x1B ] ,
" 驶 " : [ 0x6A , 0x1C ] ,
" 喂 " : [ 0x6A , 0x1D ] ,
" 术 " : [ 0x6A , 0x1E ] ,
" 农 " : [ 0x6A , 0x1F ] ,
" 踏 " : [ 0x6A , 0x20 ] ,
" 桩 " : [ 0x6A , 0x21 ] ,
" 绵 " : [ 0x6A , 0x22 ] ,
" 氛 " : [ 0x6A , 0x23 ] ,
" 疲 " : [ 0x6A , 0x24 ] ,
" 统 " : [ 0x6A , 0x25 ] ,
" 莽 " : [ 0x6A , 0x26 ] ,
" 辜 " : [ 0x6A , 0x27 ] ,
" 躁 " : [ 0x6A , 0x28 ] ,
" 兔 " : [ 0x6A , 0x29 ] ,
" 箭 " : [ 0x6A , 0x2A ] ,
" 央 " : [ 0x6A , 0x2B ] ,
" 哝 " : [ 0x6A , 0x2C ] ,
" 衫 " : [ 0x6A , 0x2D ] ,
" 缉 " : [ 0x6A , 0x2E ] ,
" 箩 " : [ 0x6A , 0x2F ] ,
" 飕 " : [ 0x6A , 0x30 ] ,
" 喏 " : [ 0x6B , 0x01 ] ,
" 超 " : [ 0x6B , 0x02 ] ,
" 催 " : [ 0x6B , 0x03 ] ,
" 钱 " : [ 0x6B , 0x04 ] ,
" 给 " : [ 0x6B , 0x05 ] ,
" 他 " : [ 0x6B , 0x06 ] ,
" 国 " : [ 0x6B , 0x07 ] ,
" 介 " : [ 0x6B , 0x08 ] ,
" 递 " : [ 0x6B , 0x09 ] ,
" 吹 " : [ 0x6B , 0x0A ] ,
" 劲 " : [ 0x6B , 0x0B ] ,
" 干 " : [ 0x6B , 0x0C ] ,
" 放 " : [ 0x6B , 0x0D ] ,
" 末 " : [ 0x6B , 0x0E ] ,
" 劳 " : [ 0x6B , 0x0F ] ,
" 衣 " : [ 0x6B , 0x10 ] ,
" 裤 " : [ 0x6B , 0x11 ] ,
" 糖 " : [ 0x6B , 0x12 ] ,
" 苹 " : [ 0x6B , 0x13 ] ,
" 适 " : [ 0x6B , 0x14 ] ,
" 秀 " : [ 0x6B , 0x15 ] ,
" 惊 " : [ 0x6B , 0x16 ] ,
" 区 " : [ 0x6B , 0x17 ] ,
" 钥 " : [ 0x6B , 0x18 ] ,
" 奶 " : [ 0x6B , 0x19 ] ,
" 踱 " : [ 0x6B , 0x1A ] ,
" 烦 " : [ 0x6B , 0x1B ] ,
" 漂 " : [ 0x6B , 0x1C ] ,
" 锻 " : [ 0x6B , 0x1D ] ,
" 惕 " : [ 0x6B , 0x1E ] ,
" 市 " : [ 0x6B , 0x1F ] ,
" 拱 " : [ 0x6B , 0x20 ] ,
" 弯 " : [ 0x6B , 0x21 ] ,
" 滩 " : [ 0x6B , 0x22 ] ,
" 纯 " : [ 0x6B , 0x23 ] ,
" 惫 " : [ 0x6B , 0x24 ] ,
" 辨 " : [ 0x6B , 0x25 ] ,
" 播 " : [ 0x6B , 0x26 ] ,
" 肆 " : [ 0x6B , 0x27 ] ,
" 损 " : [ 0x6B , 0x28 ] ,
" 臂 " : [ 0x6B , 0x29 ] ,
" 哭 " : [ 0x6B , 0x2A ] ,
" 六 " : [ 0x6B , 0x2B ] ,
" 诀 " : [ 0x6B , 0x2C ] ,
" 饶 " : [ 0x6B , 0x2D ] ,
" 授 " : [ 0x6B , 0x2E ] ,
" 勉 " : [ 0x6B , 0x2F ] ,
" 劈 " : [ 0x6B , 0x30 ] ,
" 库 " : [ 0x6C , 0x01 ] ,
" 级 " : [ 0x6C , 0x02 ] ,
" 眠 " : [ 0x6C , 0x03 ] ,
" 乌 " : [ 0x6C , 0x04 ] ,
" 这 " : [ 0x6C , 0x05 ] ,
" 多 " : [ 0x6C , 0x06 ] ,
" 整 " : [ 0x6C , 0x07 ] ,
" 意 " : [ 0x6C , 0x08 ] ,
" 员 " : [ 0x6C , 0x09 ] ,
" 唷 " : [ 0x6C , 0x0A ] ,
" 丈 " : [ 0x6C , 0x0B ] ,
" 伟 " : [ 0x6C , 0x0C ] ,
" 然 " : [ 0x6C , 0x0D ] ,
" 四 " : [ 0x6C , 0x0E ] ,
" 冷 " : [ 0x6C , 0x0F ] ,
" 服 " : [ 0x6C , 0x10 ] ,
" 左 " : [ 0x6C , 0x11 ] ,
" 除 " : [ 0x6C , 0x12 ] ,
" 酸 " : [ 0x6C , 0x13 ] ,
" 足 " : [ 0x6C , 0x14 ] ,
" 未 " : [ 0x6C , 0x15 ] ,
" 病 " : [ 0x6C , 0x16 ] ,
" 硬 " : [ 0x6C , 0x17 ] ,
" 匙 " : [ 0x6C , 0x18 ] ,
" 赢 " : [ 0x6C , 0x19 ] ,
" 寒 " : [ 0x6C , 0x1A ] ,
" 软 " : [ 0x6C , 0x1B ] ,
" 浮 " : [ 0x6C , 0x1C ] ,
" 炼 " : [ 0x6C , 0x1D ] ,
" 泼 " : [ 0x6C , 0x1E ] ,
" 民 " : [ 0x6C , 0x1F ] ,
" 墙 " : [ 0x6C , 0x20 ] ,
" 缘 " : [ 0x6C , 0x21 ] ,
" 炽 " : [ 0x6C , 0x22 ] ,
" 粹 " : [ 0x6C , 0x23 ] ,
" 聊 " : [ 0x6C , 0x24 ] ,
" 血 " : [ 0x6C , 0x25 ] ,
" 短 " : [ 0x6C , 0x26 ] ,
" 虐 " : [ 0x6C , 0x27 ] ,
" 喊 " : [ 0x6C , 0x28 ] ,
" 牌 " : [ 0x6C , 0x29 ] ,
" 睁 " : [ 0x6C , 0x2A ] ,
" 返 " : [ 0x6C , 0x2B ] ,
" 碌 " : [ 0x6C , 0x2C ] ,
" 疼 " : [ 0x6C , 0x2D ] ,
" 芮 " : [ 0x6C , 0x2E ] ,
" 黏 " : [ 0x6C , 0x2F ] ,
" 猫 " : [ 0x6C , 0x30 ] ,
" 啪 " : [ 0x6D , 0x01 ] ,
" 加 " : [ 0x6D , 0x02 ] ,
" 神 " : [ 0x6D , 0x03 ] ,
" 电 " : [ 0x6D , 0x04 ] ,
" 个 " : [ 0x6D , 0x05 ] ,
" 么 " : [ 0x6D , 0x06 ] ,
" 蘑 " : [ 0x6D , 0x07 ] ,
" 必 " : [ 0x6D , 0x08 ] ,
" 工 " : [ 0x6D , 0x09 ] ,
" 终 " : [ 0x6D , 0x0A ] ,
" 夫 " : [ 0x6D , 0x0B ] ,
" 斗 " : [ 0x6D , 0x0C ] ,
" 恙 " : [ 0x6D , 0x0D ] ,
" 奔 " : [ 0x6D , 0x0E ] ,
" 丢 " : [ 0x6D , 0x0F ] ,
" 传 " : [ 0x6D , 0x10 ] ,
" 边 " : [ 0x6D , 0x11 ] ,
" 迷 " : [ 0x6D , 0x12 ] ,
" 橙 " : [ 0x6D , 0x13 ] ,
" 集 " : [ 0x6D , 0x14 ] ,
" 职 " : [ 0x6D , 0x15 ] ,
" 慢 " : [ 0x6D , 0x16 ] ,
" 铃 " : [ 0x6D , 0x17 ] ,
" 储 " : [ 0x6D , 0x18 ] ,
" 厦 " : [ 0x6D , 0x19 ] ,
" 赔 " : [ 0x6D , 0x1A ] ,
" 敏 " : [ 0x6D , 0x1B ] ,
" 族 " : [ 0x6D , 0x1C ] ,
" 胖 " : [ 0x6D , 0x1D ] ,
" 袍 " : [ 0x6D , 0x1E ] ,
" 宅 " : [ 0x6D , 0x1F ] ,
" 澡 " : [ 0x6D , 0x20 ] ,
" 低 " : [ 0x6D , 0x21 ] ,
" 蔽 " : [ 0x6D , 0x22 ] ,
" 沉 " : [ 0x6D , 0x23 ] ,
" 背 " : [ 0x6D , 0x24 ] ,
" 沸 " : [ 0x6D , 0x25 ] ,
" 尤 " : [ 0x6D , 0x26 ] ,
" 祸 " : [ 0x6D , 0x27 ] ,
" 掩 " : [ 0x6D , 0x28 ] ,
" 鲁 " : [ 0x6D , 0x29 ] ,
" 酬 " : [ 0x6D , 0x2A ] ,
" 拨 " : [ 0x6D , 0x2B ] ,
" 篝 " : [ 0x6D , 0x2C ] ,
" 祥 " : [ 0x6D , 0x2D ] ,
" 抚 " : [ 0x6D , 0x2E ] ,
" 填 " : [ 0x6D , 0x2F ] ,
" 俏 " : [ 0x6D , 0x30 ] ,
" 嗒 " : [ 0x6E , 0x01 ] ,
" 邦 " : [ 0x6E , 0x02 ] ,
" 奇 " : [ 0x6E , 0x03 ] ,
" 宝 " : [ 0x6E , 0x04 ] ,
" 世 " : [ 0x6E , 0x05 ] ,
" 另 " : [ 0x6E , 0x06 ] ,
" 菇 " : [ 0x6E , 0x07 ] ,
" 须 " : [ 0x6E , 0x08 ] ,
" 作 " : [ 0x6E , 0x09 ] ,
" 盛 " : [ 0x6E , 0x0A ] ,
" 妻 " : [ 0x6E , 0x0B ] ,
" 庆 " : [ 0x6E , 0x0C ] ,
" 三 " : [ 0x6E , 0x0D ] ,
" 相 " : [ 0x6E , 0x0E ] ,
" 累 " : [ 0x6E , 0x0F ] ,
" 遍 " : [ 0x6E , 0x10 ] ,
" 扇 " : [ 0x6E , 0x11 ] ,
" 森 " : [ 0x6E , 0x12 ] ,
" 调 " : [ 0x6E , 0x13 ] ,
" 唉 " : [ 0x6E , 0x14 ] ,
" 隐 " : [ 0x6E , 0x15 ] ,
" 弱 " : [ 0x6E , 0x16 ] ,
" 薯 " : [ 0x6E , 0x17 ] ,
" 设 " : [ 0x6E , 0x18 ] ,
" 港 " : [ 0x6E , 0x19 ] ,
" 偿 " : [ 0x6E , 0x1A ] ,
" 睛 " : [ 0x6E , 0x1B ] ,
" 坦 " : [ 0x6E , 0x1C ] ,
" 唠 " : [ 0x6E , 0x1D ] ,
" 羡 " : [ 0x6E , 0x1E ] ,
" 唯 " : [ 0x6E , 0x1F ] ,
" 嘛 " : [ 0x6E , 0x20 ] ,
" 值 " : [ 0x6E , 0x21 ] ,
" 春 " : [ 0x6E , 0x22 ] ,
" 疙 " : [ 0x6E , 0x23 ] ,
" 夸 " : [ 0x6E , 0x24 ] ,
" 腾 " : [ 0x6E , 0x25 ] ,
" 蒜 " : [ 0x6E , 0x26 ] ,
" 毫 " : [ 0x6E , 0x27 ] ,
" 溢 " : [ 0x6E , 0x28 ] ,
" 兜 " : [ 0x6E , 0x29 ] ,
" 贫 " : [ 0x6E , 0x2A ] ,
" 符 " : [ 0x6E , 0x2B ] ,
" 熙 " : [ 0x6E , 0x2C ] ,
" 毙 " : [ 0x6E , 0x2D ] ,
" 嘱 " : [ 0x6E , 0x2E ] ,
" 喀 " : [ 0x6E , 0x2F ] ,
" 曙 " : [ 0x6E , 0x30 ] ,
" 绒 " : [ 0x6F , 0x01 ] ,
" 图 " : [ 0x6F , 0x02 ] ,
" 史 " : [ 0x6F , 0x03 ] ,
" 师 " : [ 0x6F , 0x04 ] ,
" 界 " : [ 0x6F , 0x05 ] ,
" 难 " : [ 0x6F , 0x06 ] ,
" 充 " : [ 0x6F , 0x07 ] ,
" 走 " : [ 0x6F , 0x08 ] ,
" 呢 " : [ 0x6F , 0x09 ] ,
" 亲 " : [ 0x6F , 0x0A ] ,
" 告 " : [ 0x6F , 0x0B ] ,
" 祝 " : [ 0x6F , 0x0C ] ,
" 少 " : [ 0x6F , 0x0D ] ,
" 耐 " : [ 0x6F , 0x0E ] ,
" 喔 " : [ 0x6F , 0x0F ] ,
" 彩 " : [ 0x6F , 0x10 ] ,
" 窗 " : [ 0x6F , 0x11 ] ,
" 林 " : [ 0x6F , 0x12 ] ,
" 酒 " : [ 0x6F , 0x13 ] ,
" 耗 " : [ 0x6F , 0x14 ] ,
" 才 " : [ 0x6F , 0x15 ] ,
" 健 " : [ 0x6F , 0x16 ] ,
" 效 " : [ 0x6F , 0x17 ] ,
" 妙 " : [ 0x6F , 0x18 ] ,
" 玛 " : [ 0x6F , 0x19 ] ,
" 驭 " : [ 0x6F , 0x1A ] ,
" 耍 " : [ 0x6F , 0x1B ] ,
" 仅 " : [ 0x6F , 0x1C ] ,
" 叨 " : [ 0x6F , 0x1D ] ,
" 慕 " : [ 0x6F , 0x1E ] ,
" 厅 " : [ 0x6F , 0x1F ] ,
" 荒 " : [ 0x6F , 0x20 ] ,
" 吊 " : [ 0x6F , 0x21 ] ,
" 藤 " : [ 0x6F , 0x22 ] ,
" 瘩 " : [ 0x6F , 0x23 ] ,
" 宠 " : [ 0x6F , 0x24 ] ,
" 穆 " : [ 0x6F , 0x25 ] ,
" 撼 " : [ 0x6F , 0x26 ] ,
" 诚 " : [ 0x6F , 0x27 ] ,
" 验 " : [ 0x6F , 0x28 ] ,
" 奈 " : [ 0x6F , 0x29 ] ,
" 穷 " : [ 0x6F , 0x2A ] ,
" 猪 " : [ 0x6F , 0x2B ] ,
" 攘 " : [ 0x6F , 0x2C ] ,
" 铰 " : [ 0x6F , 0x2D ] ,
" 裔 " : [ 0x6F , 0x2E ] ,
" 滞 " : [ 0x6F , 0x2F ] ,
" 囱 " : [ 0x6F , 0x30 ] ,
" 毛 " : [ 0x70 , 0x01 ] ,
" 巴 " : [ 0x70 , 0x02 ] ,
" 派 " : [ 0x70 , 0x03 ] ,
" 陈 " : [ 0x70 , 0x04 ] ,
" 重 " : [ 0x70 , 0x05 ] ,
" 忘 " : [ 0x70 , 0x06 ] ,
" 满 " : [ 0x70 , 0x07 ] ,
" 非 " : [ 0x70 , 0x08 ] ,
" 普 " : [ 0x70 , 0x09 ] ,
" 笔 " : [ 0x70 , 0x0A ] ,
" 诉 " : [ 0x70 , 0x0B ] ,
" 缺 " : [ 0x70 , 0x0C ] ,
" 旅 " : [ 0x70 , 0x0D ] ,
" 极 " : [ 0x70 , 0x0E ] ,
" 旱 " : [ 0x70 , 0x0F ] ,
" 啸 " : [ 0x70 , 0x10 ] ,
" 首 " : [ 0x70 , 0x11 ] ,
" 击 " : [ 0x70 , 0x12 ] ,
" 顽 " : [ 0x70 , 0x13 ] ,
" 虽 " : [ 0x70 , 0x14 ] ,
" 显 " : [ 0x70 , 0x15 ] ,
" 康 " : [ 0x70 , 0x16 ] ,
" 眩 " : [ 0x70 , 0x17 ] ,
" 具 " : [ 0x70 , 0x18 ] ,
" 归 " : [ 0x70 , 0x19 ] ,
" 双 " : [ 0x70 , 0x1A ] ,
" 仙 " : [ 0x70 , 0x1B ] ,
" 模 " : [ 0x70 , 0x1C ] ,
" 尝 " : [ 0x70 , 0x1D ] ,
" 肃 " : [ 0x70 , 0x1E ] ,
" 码 " : [ 0x70 , 0x1F ] ,
" 芜 " : [ 0x70 , 0x20 ] ,
" 橱 " : [ 0x70 , 0x21 ] ,
" 泉 " : [ 0x70 , 0x22 ] ,
" 煞 " : [ 0x70 , 0x23 ] ,
" 慷 " : [ 0x70 , 0x24 ] ,
" 奏 " : [ 0x70 , 0x25 ] ,
" 攀 " : [ 0x70 , 0x26 ] ,
" 陆 " : [ 0x70 , 0x27 ] ,
" 惦 " : [ 0x70 , 0x28 ] ,
" 赘 " : [ 0x70 , 0x29 ] ,
" 慰 " : [ 0x70 , 0x2A ] ,
" 屿 " : [ 0x70 , 0x2B ] ,
" 瘫 " : [ 0x70 , 0x2C ] ,
" 链 " : [ 0x70 , 0x2D ] ,
" 芬 " : [ 0x70 , 0x2E ] ,
" 肠 " : [ 0x70 , 0x2F ] ,
" 逝 " : [ 0x70 , 0x30 ] ,
" 怪 " : [ 0x71 , 0x01 ] ,
" 布 " : [ 0x71 , 0x02 ] ,
" 克 " : [ 0x71 , 0x03 ] ,
" 李 " : [ 0x71 , 0x04 ] ,
" 新 " : [ 0x71 , 0x05 ] ,
" 量 " : [ 0x71 , 0x06 ] ,
" 欠 " : [ 0x71 , 0x07 ] ,
" 常 " : [ 0x71 , 0x08 ] ,
" 通 " : [ 0x71 , 0x09 ] ,
" 签 " : [ 0x71 , 0x0A ] ,
" 出 " : [ 0x71 , 0x0B ] ,
" 席 " : [ 0x71 , 0x0C ] ,
" 早 " : [ 0x71 , 0x0D ] ,
" 限 " : [ 0x71 , 0x0E ] ,
" 落 " : [ 0x71 , 0x0F ] ,
" 谷 " : [ 0x71 , 0x10 ] ,
" 易 " : [ 0x71 , 0x11 ] ,
" 乱 " : [ 0x71 , 0x12 ] ,
" 皮 " : [ 0x71 , 0x13 ] ,
" 影 " : [ 0x71 , 0x14 ] ,
" 存 " : [ 0x71 , 0x15 ] ,
" 福 " : [ 0x71 , 0x16 ] ,
" 晕 " : [ 0x71 , 0x17 ] ,
" 煎 " : [ 0x71 , 0x18 ] ,
" 眼 " : [ 0x71 , 0x19 ] ,
" 赏 " : [ 0x71 , 0x1A ] ,
" 惯 " : [ 0x71 , 0x1B ] ,
" 威 " : [ 0x71 , 0x1C ] ,
" 拍 " : [ 0x71 , 0x1D ] ,
" 袖 " : [ 0x71 , 0x1E ] ,
" 凝 " : [ 0x71 , 0x1F ] ,
" 陡 " : [ 0x71 , 0x20 ] ,
" 董 " : [ 0x71 , 0x21 ] ,
" 堵 " : [ 0x71 , 0x22 ] ,
" 碾 " : [ 0x71 , 0x23 ] ,
" 慨 " : [ 0x71 , 0x24 ] ,
" 乞 " : [ 0x71 , 0x25 ] ,
" 宿 " : [ 0x71 , 0x26 ] ,
" 魅 " : [ 0x71 , 0x27 ] ,
" 劝 " : [ 0x71 , 0x28 ] ,
" 母 " : [ 0x71 , 0x29 ] ,
" 盼 " : [ 0x71 , 0x2A ] ,
" 洽 " : [ 0x71 , 0x2B ] ,
" 痪 " : [ 0x71 , 0x2C ] ,
" 哔 " : [ 0x71 , 0x2D ] ,
" 忽 " : [ 0x71 , 0x2E ] ,
" 畜 " : [ 0x71 , 0x2F ] ,
" 逞 " : [ 0x71 , 0x30 ] ,
" 炸 " : [ 0x72 , 0x01 ] ,
" 路 " : [ 0x72 , 0x02 ] ,
" 云 " : [ 0x72 , 0x03 ] ,
" 暗 " : [ 0x72 , 0x04 ] ,
" 来 " : [ 0x72 , 0x05 ] ,
" 啊 " : [ 0x72 , 0x06 ] ,
" 很 " : [ 0x72 , 0x07 ] ,
" 直 " : [ 0x72 , 0x08 ] ,
" 封 " : [ 0x72 , 0x09 ] ,
" 名 " : [ 0x72 , 0x0A ] ,
" 抓 " : [ 0x72 , 0x0B ] ,
" 培 " : [ 0x72 , 0x0C ] ,
" 纪 " : [ 0x72 , 0x0D ] ,
" 脑 " : [ 0x72 , 0x0E ] ,
" 向 " : [ 0x72 , 0x0F ] ,
" 婚 " : [ 0x72 , 0x10 ] ,
" 吉 " : [ 0x72 , 0x11 ] ,
" 洲 " : [ 0x72 , 0x12 ] ,
" 学 " : [ 0x72 , 0x13 ] ,
" 联 " : [ 0x72 , 0x14 ] ,
" 份 " : [ 0x72 , 0x15 ] ,
" 颗 " : [ 0x72 , 0x16 ] ,
" 汤 " : [ 0x72 , 0x17 ] ,
" 盘 " : [ 0x72 , 0x18 ] ,
" 镜 " : [ 0x72 , 0x19 ] ,
" 透 " : [ 0x72 , 0x1A ] ,
" 呼 " : [ 0x72 , 0x1B ] ,
" 佳 " : [ 0x72 , 0x1C ] ,
" 挣 " : [ 0x72 , 0x1D ] ,
" 雅 " : [ 0x72 , 0x1E ] ,
" 海 " : [ 0x72 , 0x1F ] ,
" 峭 " : [ 0x72 , 0x20 ] ,
" 昂 " : [ 0x72 , 0x21 ] ,
" 肥 " : [ 0x72 , 0x22 ] ,
" 炬 " : [ 0x72 , 0x23 ] ,
" 借 " : [ 0x72 , 0x24 ] ,
" 丐 " : [ 0x72 , 0x25 ] ,
" 仰 " : [ 0x72 , 0x26 ] ,
" 拆 " : [ 0x72 , 0x27 ] ,
" 惭 " : [ 0x72 , 0x28 ] ,
" 忆 " : [ 0x72 , 0x29 ] ,
" 顿 " : [ 0x72 , 0x2A ] ,
" 荐 " : [ 0x72 , 0x2B ] ,
" 伍 " : [ 0x72 , 0x2C ] ,
" 谬 " : [ 0x72 , 0x2D ] ,
" 趁 " : [ 0x72 , 0x2E ] ,
" 搁 " : [ 0x72 , 0x2F ] ,
" 措 " : [ 0x72 , 0x30 ] ,
" 弹 " : [ 0x73 , 0x01 ] ,
" 之 " : [ 0x73 , 0x02 ] ,
" 雾 " : [ 0x73 , 0x03 ] ,
" 诺 " : [ 0x73 , 0x04 ] ,
" 和 " : [ 0x73 , 0x05 ] ,
" 一 " : [ 0x73 , 0x06 ] ,
" 汀 " : [ 0x73 , 0x07 ] ,
" 样 " : [ 0x73 , 0x08 ] ,
" 信 " : [ 0x73 , 0x09 ] ,
" 太 " : [ 0x73 , 0x0A ] ,
" 关 " : [ 0x73 , 0x0B ] ,
" 理 " : [ 0x73 , 0x0C ] ,
" 念 " : [ 0x73 , 0x0D ] ,
" 筋 " : [ 0x73 , 0x0E ] ,
" 炫 " : [ 0x73 , 0x0F ] ,
" 嘘 " : [ 0x73 , 0x10 ] ,
" 聪 " : [ 0x73 , 0x11 ] ,
" 掉 " : [ 0x73 , 0x12 ] ,
" 者 " : [ 0x73 , 0x13 ] ,
" 押 " : [ 0x73 , 0x14 ] ,
" 乓 " : [ 0x73 , 0x15 ] ,
" 七 " : [ 0x73 , 0x16 ] ,
" 菜 " : [ 0x73 , 0x17 ] ,
" 读 " : [ 0x73 , 0x18 ] ,
" 异 " : [ 0x73 , 0x19 ] ,
" 瓶 " : [ 0x73 , 0x1A ] ,
" 援 " : [ 0x73 , 0x1B ] ,
" 衡 " : [ 0x73 , 0x1C ] ,
" 脱 " : [ 0x73 , 0x1D ] ,
" 较 " : [ 0x73 , 0x1E ] ,
" 输 " : [ 0x73 , 0x1F ] ,
" 卑 " : [ 0x73 , 0x20 ] ,
" 窥 " : [ 0x73 , 0x21 ] ,
" 巢 " : [ 0x73 , 0x22 ] ,
" 惑 " : [ 0x73 , 0x23 ] ,
" 贴 " : [ 0x73 , 0x24 ] ,
" 贩 " : [ 0x73 , 0x25 ] ,
" 仗 " : [ 0x73 , 0x26 ] ,
" 姑 " : [ 0x73 , 0x27 ] ,
" 惧 " : [ 0x73 , 0x28 ] ,
" 策 " : [ 0x73 , 0x29 ] ,
" 嬉 " : [ 0x73 , 0x2A ] ,
" 冠 " : [ 0x73 , 0x2B ] ,
" 泪 " : [ 0x73 , 0x2C ] ,
" 屈 " : [ 0x73 , 0x2D ] ,
" 呐 " : [ 0x73 , 0x2E ] ,
" 嚷 " : [ 0x73 , 0x2F ] ,
" 拖 " : [ 0x73 , 0x30 ] ,
" 兵 " : [ 0x74 , 0x01 ] ,
" 心 " : [ 0x74 , 0x02 ] ,
" 老 " : [ 0x74 , 0x03 ] ,
" 灰 " : [ 0x74 , 0x04 ] ,
" 平 " : [ 0x74 , 0x05 ] ,
" 定 " : [ 0x74 , 0x06 ] ,
" 说 " : [ 0x74 , 0x07 ] ,
" ? " : [ 0x74 , 0x08 ] ,
" 她 " : [ 0x74 , 0x09 ] ,
" 棒 " : [ 0x74 , 0x0A ] ,
" 键 " : [ 0x74 , 0x0B ] ,
" 由 " : [ 0x74 , 0x0C ] ,
" 品 " : [ 0x74 , 0x0D ] ,
" 谁 " : [ 0x74 , 0x0E ] ,
" 遇 " : [ 0x74 , 0x0F ] ,
" 吓 " : [ 0x74 , 0x10 ] ,
" 栋 " : [ 0x74 , 0x11 ] ,
" 改 " : [ 0x74 , 0x12 ] ,
" 包 " : [ 0x74 , 0x13 ] ,
" 求 " : [ 0x74 , 0x14 ] ,
" 乒 " : [ 0x74 , 0x15 ] ,
" 予 " : [ 0x74 , 0x16 ] ,
" 茶 " : [ 0x74 , 0x17 ] ,
" 懂 " : [ 0x74 , 0x18 ] ,
" 聚 " : [ 0x74 , 0x19 ] ,
" 钻 " : [ 0x74 , 0x1A ] ,
" 狡 " : [ 0x74 , 0x1B ] ,
" 矮 " : [ 0x74 , 0x1C ] ,
" 悬 " : [ 0x74 , 0x1D ] ,
" 胁 " : [ 0x74 , 0x1E ] ,
" 踪 " : [ 0x74 , 0x1F ] ,
" 鄙 " : [ 0x74 , 0x20 ] ,
" 蜡 " : [ 0x74 , 0x21 ] ,
" 纹 " : [ 0x74 , 0x22 ] ,
" 索 " : [ 0x74 , 0x23 ] ,
" 彼 " : [ 0x74 , 0x24 ] ,
" 哒 " : [ 0x74 , 0x25 ] ,
" 姆 " : [ 0x74 , 0x26 ] ,
" 娘 " : [ 0x74 , 0x27 ] ,
" 怖 " : [ 0x74 , 0x28 ] ,
" 艇 " : [ 0x74 , 0x29 ] ,
" 晃 " : [ 0x74 , 0x2A ] ,
" 构 " : [ 0x74 , 0x2B ] ,
" 俯 " : [ 0x74 , 0x2C ] ,
" 睿 " : [ 0x74 , 0x2D ] ,
" 粒 " : [ 0x74 , 0x2E ] ,
" 辉 " : [ 0x74 , 0x2F ] ,
" 逮 " : [ 0x74 , 0x30 ] ,
" 杀 " : [ 0x75 , 0x01 ] ,
" 嘿 " : [ 0x75 , 0x02 ] ,
" 呜 " : [ 0x75 , 0x03 ] ,
" 马 " : [ 0x75 , 0x04 ] ,
" 。 " : [ 0x75 , 0x05 ] ,
" … " : [ 0x75 , 0x06 ] ,
" 灵 " : [ 0x75 , 0x07 ] ,
" 如 " : [ 0x75 , 0x08 ] ,
" 写 " : [ 0x75 , 0x09 ] ,
" 绝 " : [ 0x75 , 0x0A ] ,
" 速 " : [ 0x75 , 0x0B ] ,
" 甚 " : [ 0x75 , 0x0C ] ,
" 彻 " : [ 0x75 , 0x0D ] ,
" 便 " : [ 0x75 , 0x0E ] ,
" 旋 " : [ 0x75 , 0x0F ] ,
" 唬 " : [ 0x75 , 0x10 ] ,
" 币 " : [ 0x75 , 0x11 ] ,
" 态 " : [ 0x75 , 0x12 ] ,
" 裹 " : [ 0x75 , 0x13 ] ,
" 严 " : [ 0x75 , 0x14 ] ,
" 寻 " : [ 0x75 , 0x15 ] ,
" 船 " : [ 0x75 , 0x16 ] ,
" 升 " : [ 0x75 , 0x17 ] ,
" 喷 " : [ 0x75 , 0x18 ] ,
" 资 " : [ 0x75 , 0x19 ] ,
" 画 " : [ 0x75 , 0x1A ] ,
" 猾 " : [ 0x75 , 0x1B ] ,
" 粗 " : [ 0x75 , 0x1C ] ,
" 挂 " : [ 0x75 , 0x1D ] ,
" 拳 " : [ 0x75 , 0x1E ] ,
" 楼 " : [ 0x75 , 0x1F ] ,
" 症 " : [ 0x75 , 0x20 ] ,
" 烛 " : [ 0x75 , 0x21 ] ,
" 丝 " : [ 0x75 , 0x22 ] ,
" 俗 " : [ 0x75 , 0x23 ] ,
" 笆 " : [ 0x75 , 0x24 ] ,
" 咚 " : [ 0x75 , 0x25 ] ,
" 秩 " : [ 0x75 , 0x26 ] ,
" 嗅 " : [ 0x75 , 0x27 ] ,
" 挺 " : [ 0x75 , 0x28 ] ,
" 弛 " : [ 0x75 , 0x29 ] ,
" 熔 " : [ 0x75 , 0x2A ] ,
" 撕 " : [ 0x75 , 0x2B ] ,
" 涡 " : [ 0x75 , 0x2C ] ,
" 竭 " : [ 0x75 , 0x2D ] ,
" 蔚 " : [ 0x75 , 0x2E ] ,
" 妨 " : [ 0x75 , 0x2F ] ,
" 慈 " : [ 0x75 , 0x30 ] ,
" 手 " : [ 0x76 , 0x01 ] ,
" 虎 " : [ 0x76 , 0x02 ] ,
" 噜 " : [ 0x76 , 0x03 ] ,
" 力 " : [ 0x76 , 0x04 ] ,
" 现 " : [ 0x76 , 0x05 ] ,
" 不 " : [ 0x76 , 0x06 ] ,
" 证 " : [ 0x76 , 0x07 ] ,
" 夺 " : [ 0x76 , 0x08 ] ,
" 看 " : [ 0x76 , 0x09 ] ,
" 错 " : [ 0x76 , 0x0A ] ,
" 听 " : [ 0x76 , 0x0B ] ,
" 至 " : [ 0x76 , 0x0C ] ,
" 丽 " : [ 0x76 , 0x0D ] ,
" 久 " : [ 0x76 , 0x0E ] ,
" 转 " : [ 0x76 , 0x0F ] ,
" 岸 " : [ 0x76 , 0x10 ] ,
" 预 " : [ 0x76 , 0x11 ] ,
" 第 " : [ 0x76 , 0x12 ] ,
" 艺 " : [ 0x76 , 0x13 ] ,
" 哎 " : [ 0x76 , 0x14 ] ,
" 围 " : [ 0x76 , 0x15 ] ,
" 艘 " : [ 0x76 , 0x16 ] ,
" 控 " : [ 0x76 , 0x17 ] ,
" 豆 " : [ 0x76 , 0x18 ] ,
" 料 " : [ 0x76 , 0x19 ] ,
" 沃 " : [ 0x76 , 0x1A ] ,
" 携 " : [ 0x76 , 0x1B ] ,
" 牺 " : [ 0x76 , 0x1C ] ,
" 幻 " : [ 0x76 , 0x1D ] ,
" 残 " : [ 0x76 , 0x1E ] ,
" 究 " : [ 0x76 , 0x1F ] ,
" 畏 " : [ 0x76 , 0x20 ] ,
" 壶 " : [ 0x76 , 0x21 ] ,
" 察 " : [ 0x76 , 0x22 ] ,
" 囚 " : [ 0x76 , 0x23 ] ,
" 剧 " : [ 0x76 , 0x24 ] ,
" 揭 " : [ 0x76 , 0x25 ] ,
" 操 " : [ 0x76 , 0x26 ] ,
" 恼 " : [ 0x76 , 0x27 ] ,
" 列 " : [ 0x76 , 0x28 ] ,
" 绷 " : [ 0x76 , 0x29 ] ,
" 您 " : [ 0x76 , 0x2A ] ,
" 页 " : [ 0x76 , 0x2B ] ,
" 腹 " : [ 0x76 , 0x2C ] ,
" 乖 " : [ 0x76 , 0x2D ] ,
" 耳 " : [ 0x76 , 0x2E ] ,
" 嗜 " : [ 0x76 , 0x2F ] ,
" 眨 " : [ 0x76 , 0x30 ] ,
" 大 " : [ 0x77 , 0x01 ] ,
" 舞 " : [ 0x77 , 0x02 ] ,
" 妖 " : [ 0x77 , 0x03 ] ,
" 机 " : [ 0x77 , 0x04 ] ,
" 在 " : [ 0x77 , 0x05 ] ,
" 做 " : [ 0x77 , 0x06 ] ,
" 明 " : [ 0x77 , 0x07 ] ,
" 似 " : [ 0x77 , 0x08 ] ,
" 送 " : [ 0x77 , 0x09 ] ,
" 过 " : [ 0x77 , 0x0A ] ,
" 外 " : [ 0x77 , 0x0B ] ,
" 假 " : [ 0x77 , 0x0C ] ,
" 奥 " : [ 0x77 , 0x0D ] ,
" 连 " : [ 0x77 , 0x0E ] ,
" 屋 " : [ 0x77 , 0x0F ] ,
" 物 " : [ 0x77 , 0x10 ] ,
" 示 " : [ 0x77 , 0x11 ] ,
" 试 " : [ 0x77 , 0x12 ] ,
" 垂 " : [ 0x77 , 0x13 ] ,
" 匆 " : [ 0x77 , 0x14 ] ,
" 内 " : [ 0x77 , 0x15 ] ,
" 燃 " : [ 0x77 , 0x16 ] ,
" 排 " : [ 0x77 , 0x17 ] ,
" 颤 " : [ 0x77 , 0x18 ] ,
" 壁 " : [ 0x77 , 0x19 ] ,
" 谱 " : [ 0x77 , 0x1A ] ,
" 款 " : [ 0x77 , 0x1B ] ,
" 牲 " : [ 0x77 , 0x1C ] ,
" 烫 " : [ 0x77 , 0x1D ] ,
" 案 " : [ 0x77 , 0x1E ] ,
" 廊 " : [ 0x77 , 0x1F ] ,
" 痒 " : [ 0x77 , 0x20 ] ,
" 褪 " : [ 0x77 , 0x21 ] ,
" 窟 " : [ 0x77 , 0x22 ] ,
" 杂 " : [ 0x77 , 0x23 ] ,
" 势 " : [ 0x77 , 0x24 ] ,
" 免 " : [ 0x77 , 0x25 ] ,
" 立 " : [ 0x77 , 0x26 ] ,
" 罪 " : [ 0x77 , 0x27 ] ,
" 蕾 " : [ 0x77 , 0x28 ] ,
" 逼 " : [ 0x77 , 0x29 ] ,
" 幕 " : [ 0x77 , 0x2A ] ,
" 估 " : [ 0x77 , 0x2B ] ,
" 罩 " : [ 0x77 , 0x2C ] ,
" 霍 " : [ 0x77 , 0x2D ] ,
" 泣 " : [ 0x77 , 0x2E ] ,
" 淌 " : [ 0x77 , 0x2F ] ,
" 谓 " : [ 0x77 , 0x30 ] ,
" 炮 " : [ 0x78 , 0x01 ] ,
" 步 " : [ 0x78 , 0x02 ] ,
" 冰 " : [ 0x78 , 0x03 ] ,
" ( " : [ 0x78 , 0x04 ] ,
" 又 " : [ 0x78 , 0x05 ] ,
" 努 " : [ 0x78 , 0x06 ] ,
" 自 " : [ 0x78 , 0x07 ] ,
" 书 " : [ 0x78 , 0x08 ] ,
" 吧 " : [ 0x78 , 0x09 ] ,
" 次 " : [ 0x78 , 0x0A ] ,
" 下 " : [ 0x78 , 0x0B ] ,
" 令 " : [ 0x78 , 0x0C ] ,
" 够 " : [ 0x78 , 0x0D ] ,
" 门 " : [ 0x78 , 0x0E ] ,
" 顶 " : [ 0x78 , 0x0F ] ,
" 拜 " : [ 0x78 , 0x10 ] ,
" 运 " : [ 0x78 , 0x11 ] ,
" 暴 " : [ 0x78 , 0x12 ] ,
" 钓 " : [ 0x78 , 0x13 ] ,
" 捎 " : [ 0x78 , 0x14 ] ,
" 弃 " : [ 0x78 , 0x15 ] ,
" 烧 " : [ 0x78 , 0x16 ] ,
" 丧 " : [ 0x78 , 0x17 ] ,
" 抖 " : [ 0x78 , 0x18 ] ,
" 垒 " : [ 0x78 , 0x19 ] ,
" 仓 " : [ 0x78 , 0x1A ] ,
" 素 " : [ 0x78 , 0x1B ] ,
" 逐 " : [ 0x78 , 0x1C ] ,
" 抵 " : [ 0x78 , 0x1D ] ,
" 肿 " : [ 0x78 , 0x1E ] ,
" 厨 " : [ 0x78 , 0x1F ] ,
" 划 " : [ 0x78 , 0x20 ] ,
" 椅 " : [ 0x78 , 0x21 ] ,
" 勘 " : [ 0x78 , 0x22 ] ,
" 臊 " : [ 0x78 , 0x23 ] ,
" 导 " : [ 0x78 , 0x24 ] ,
" 响 " : [ 0x78 , 0x25 ] ,
" 臣 " : [ 0x78 , 0x26 ] ,
" 饱 " : [ 0x78 , 0x27 ] ,
" 寐 " : [ 0x78 , 0x28 ] ,
" 杳 " : [ 0x78 , 0x29 ] ,
" 馨 " : [ 0x78 , 0x2A ] ,
" 稿 " : [ 0x78 , 0x2B ] ,
" 飓 " : [ 0x78 , 0x2C ] ,
" 跨 " : [ 0x78 , 0x2D ] ,
" 狈 " : [ 0x78 , 0x2E ] ,
" 涌 " : [ 0x78 , 0x2F ] ,
" 蜗 " : [ 0x78 , 0x30 ] ,
" 酷 " : [ 0x79 , 0x01 ] ,
" 间 " : [ 0x79 , 0x02 ] ,
" 冻 " : [ 0x79 , 0x03 ] ,
" 开 " : [ 0x79 , 0x04 ] ,
" 可 " : [ 0x79 , 0x05 ] ,
" 那 " : [ 0x79 , 0x06 ] ,
" 己 " : [ 0x79 , 0x07 ] ,
" 疯 " : [ 0x79 , 0x08 ] ,
" 计 " : [ 0x79 , 0x09 ] ,
" 停 " : [ 0x79 , 0x0A ] ,
" 猜 " : [ 0x79 , 0x0B ] ,
" 忍 " : [ 0x79 , 0x0C ] ,
" 更 " : [ 0x79 , 0x0D ] ,
" 隆 " : [ 0x79 , 0x0E ] ,
" 房 " : [ 0x79 , 0x0F ] ,
" 访 " : [ 0x79 , 0x10 ] ,
" 露 " : [ 0x79 , 0x11 ] ,
" 同 " : [ 0x79 , 0x12 ] ,
" 街 " : [ 0x79 , 0x13 ] ,
" 范 " : [ 0x79 , 0x14 ] ,
" 视 " : [ 0x79 , 0x15 ] ,
" : " : [ 0x79 , 0x16 ] ,
" 防 " : [ 0x79 , 0x17 ] ,
" 污 " : [ 0x79 , 0x18 ] ,
" 文 " : [ 0x79 , 0x19 ] ,
" 抒 " : [ 0x79 , 0x1A ] ,
" 阴 " : [ 0x79 , 0x1B ] ,
" 渐 " : [ 0x79 , 0x1C ] ,
" 遗 " : [ 0x79 , 0x1D ] ,
" 奋 " : [ 0x79 , 0x1E ] ,
" 肴 " : [ 0x79 , 0x1F ] ,
" 倦 " : [ 0x79 , 0x20 ] ,
" 盹 " : [ 0x79 , 0x21 ] ,
" 渊 " : [ 0x79 , 0x22 ] ,
" 南 " : [ 0x79 , 0x23 ] ,
" 饵 " : [ 0x79 , 0x24 ] ,
" 衔 " : [ 0x79 , 0x25 ] ,
" 惩 " : [ 0x79 , 0x26 ] ,
" 址 " : [ 0x79 , 0x27 ] ,
" 栽 " : [ 0x79 , 0x28 ] ,
" 嘟 " : [ 0x79 , 0x29 ] ,
" 雀 " : [ 0x79 , 0x2A ] ,
" 延 " : [ 0x79 , 0x2B ] ,
" 陛 " : [ 0x79 , 0x2C ] ,
" 欺 " : [ 0x79 , 0x2D ] ,
" 吻 " : [ 0x79 , 0x2E ] ,
" 评 " : [ 0x79 , 0x2F ] ,
" 瞄 " : [ 0x79 , 0x30 ] ,
" 霸 " : [ 0x7A , 0x01 ] ,
" 谍 " : [ 0x7A , 0x02 ] ,
" 白 " : [ 0x7A , 0x03 ] ,
" 始 " : [ 0x7A , 0x04 ] ,
" 以 " : [ 0x7A , 0x05 ] ,
" 困 " : [ 0x7A , 0x06 ] ,
" 位 " : [ 0x7A , 0x07 ] ,
" 狂 " : [ 0x7A , 0x08 ] ,
" 上 " : [ 0x7A , 0x09 ] ,
" 止 " : [ 0x7A , 0x0A ] ,
" 并 " : [ 0x7A , 0x0B ] ,
" 苛 " : [ 0x7A , 0x0C ] ,
" 追 " : [ 0x7A , 0x0D ] ,
" 卖 " : [ 0x7A , 0x0E ] ,
" 啦 " : [ 0x7A , 0x0F ] ,
" 山 " : [ 0x7A , 0x10 ] ,
" 塞 " : [ 0x7A , 0x11 ] ,
" 种 " : [ 0x7A , 0x12 ] ,
" 喇 " : [ 0x7A , 0x13 ] ,
" 选 " : [ 0x7A , 0x14 ] ,
" 糟 " : [ 0x7A , 0x15 ] ,
" 压 " : [ 0x7A , 0x16 ] ,
" 御 " : [ 0x7A , 0x17 ] ,
" 染 " : [ 0x7A , 0x18 ] ,
" 涸 " : [ 0x7A , 0x19 ] ,
" 律 " : [ 0x7A , 0x1A ] ,
" 蝙 " : [ 0x7A , 0x1B ] ,
" 劣 " : [ 0x7A , 0x1C ] ,
" 骸 " : [ 0x7A , 0x1D ] ,
" 周 " : [ 0x7A , 0x1E ] ,
" 抽 " : [ 0x7A , 0x1F ] ,
" 炭 " : [ 0x7A , 0x20 ] ,
" 昼 " : [ 0x7A , 0x21 ] ,
" 泳 " : [ 0x7A , 0x22 ] ,
" 北 " : [ 0x7A , 0x23 ] ,
" 沛 " : [ 0x7A , 0x24 ] ,
" 垄 " : [ 0x7A , 0x25 ] ,
" 罚 " : [ 0x7A , 0x26 ] ,
" 纵 " : [ 0x7A , 0x27 ] ,
" 盆 " : [ 0x7A , 0x28 ] ,
" 囔 " : [ 0x7A , 0x29 ] ,
" 羽 " : [ 0x7A , 0x2A ] ,
" 挫 " : [ 0x7A , 0x2B ] ,
" 杞 " : [ 0x7A , 0x2C ] ,
" 凌 " : [ 0x7A , 0x2D ] ,
" 项 " : [ 0x7A , 0x2E ] ,
" 茁 " : [ 0x7A , 0x2F ] ,
" 捷 " : [ 0x7A , 0x30 ] ,
" 黑 " : [ 0x7B , 0x01 ] ,
" 火 " : [ 0x7B , 0x02 ] ,
" 霹 " : [ 0x7B , 0x03 ] ,
" ) " : [ 0x7B , 0x04 ] ,
" 实 " : [ 0x7B , 0x05 ] ,
" 永 " : [ 0x7B , 0x06 ] ,
" 年 " : [ 0x7B , 0x07 ] ,
" 冒 " : [ 0x7B , 0x08 ] ,
" 中 " : [ 0x7B , 0x09 ] ,
" 答 " : [ 0x7B , 0x0A ] ,
" 与 " : [ 0x7B , 0x0B ] ,
" 刻 " : [ 0x7B , 0x0C ] ,
" 随 " : [ 0x7B , 0x0D ] ,
" 勋 " : [ 0x7B , 0x0E ] ,
" 咪 " : [ 0x7B , 0x0F ] ,
" 岛 " : [ 0x7B , 0x10 ] ,
" 入 " : [ 0x7B , 0x11 ] ,
" 丛 " : [ 0x7B , 0x12 ] ,
" 叭 " : [ 0x7B , 0x13 ] ,
" 择 " : [ 0x7B , 0x14 ] ,
" 退 " : [ 0x7B , 0x15 ] ,
" 雪 " : [ 0x7B , 0x16 ] ,
" 捶 " : [ 0x7B , 0x17 ] ,
" 土 " : [ 0x7B , 0x18 ] ,
" 毁 " : [ 0x7B , 0x19 ] ,
" 誉 " : [ 0x7B , 0x1A ] ,
" 蝠 " : [ 0x7B , 0x1B ] ,
" 甩 " : [ 0x7B , 0x1C ] ,
" 爬 " : [ 0x7B , 0x1D ] ,
" 推 " : [ 0x7B , 0x1E ] ,
" 屉 " : [ 0x7B , 0x1F ] ,
" 陷 " : [ 0x7B , 0x20 ] ,
" 塌 " : [ 0x7B , 0x21 ] ,
" 层 " : [ 0x7B , 0x22 ] ,
" 痴 " : [ 0x7B , 0x23 ] ,
" 枪 " : [ 0x7B , 0x24 ] ,
" 靴 " : [ 0x7B , 0x25 ] ,
" 氓 " : [ 0x7B , 0x26 ] ,
" 劫 " : [ 0x7B , 0x27 ] ,
" 幢 " : [ 0x7B , 0x28 ] ,
" 拘 " : [ 0x7B , 0x29 ] ,
" 嘭 " : [ 0x7B , 0x2A ] ,
" 额 " : [ 0x7B , 0x2B ] ,
" 漏 " : [ 0x7B , 0x2C ] ,
" 咯 " : [ 0x7B , 0x2D ] ,
" 概 " : [ 0x7B , 0x2E ] ,
" 厄 " : [ 0x7B , 0x2F ] ,
" 径 " : [ 0x7B , 0x30 ] ,
" 黄 " : [ 0x7C , 0x01 ] ,
" 焰 " : [ 0x7C , 0x02 ] ,
" 雳 " : [ 0x7C , 0x03 ] ,
" 结 " : [ 0x7C , 0x04 ] ,
" 每 " : [ 0x7C , 0x05 ] ,
" 远 " : [ 0x7C , 0x06 ] ,
" 噢 " : [ 0x7C , 0x07 ] ,
" 险 " : [ 0x7C , 0x08 ] ,
" 让 " : [ 0x7C , 0x09 ] ,
" 应 " : [ 0x7C , 0x0A ] ,
" 着 " : [ 0x7C , 0x0B ] ,
" 乐 " : [ 0x7C , 0x0C ] ,
" 折 " : [ 0x7C , 0x0D ] ,
" 章 " : [ 0x7C , 0x0E ] ,
" ー " : [ 0x7C , 0x0F ] ,
" 附 " : [ 0x7C , 0x10 ] ,
" 救 " : [ 0x7C , 0x11 ] ,
" 爆 " : [ 0x7C , 0x12 ] ,
" 钟 " : [ 0x7C , 0x13 ] ,
" 攻 " : [ 0x7C , 0x14 ] ,
" 临 " : [ 0x7C , 0x15 ] ,
" 尘 " : [ 0x7C , 0x16 ] ,
" 板 " : [ 0x7C , 0x17 ] ,
" 壤 " : [ 0x7C , 0x18 ] ,
" 灭 " : [ 0x7C , 0x19 ] ,
" 银 " : [ 0x7C , 0x1A ] ,
" 栖 " : [ 0x7C , 0x1B ] ,
" 戚 " : [ 0x7C , 0x1C ] ,
" 烬 " : [ 0x7C , 0x1D ] ,
" 垫 " : [ 0x7C , 0x1E ] ,
" 螺 " : [ 0x7C , 0x1F ] ,
" 展 " : [ 0x7C , 0x20 ] ,
" 倾 " : [ 0x7C , 0x21 ] ,
" 遮 " : [ 0x7C , 0x22 ] ,
" 醉 " : [ 0x7C , 0x23 ] ,
" 庞 " : [ 0x7C , 0x24 ] ,
" 偏 " : [ 0x7C , 0x25 ] ,
" 囊 " : [ 0x7C , 0x26 ] ,
" 弓 " : [ 0x7C , 0x27 ] ,
" 匿 " : [ 0x7C , 0x28 ] ,
" 航 " : [ 0x7C , 0x29 ] ,
" 扯 " : [ 0x7C , 0x2A ] ,
" 扭 " : [ 0x7C , 0x2B ] ,
" 炉 " : [ 0x7C , 0x2C ] ,
" 鞋 " : [ 0x7C , 0x2D ] ,
" 峡 " : [ 0x7C , 0x2E ] ,
" 厚 " : [ 0x7C , 0x2F ] ,
" 括 " : [ 0x7C , 0x30 ] ,
" 绿 " : [ 0x7D , 0x01 ] ,
" 气 " : [ 0x7D , 0x02 ] ,
" 女 " : [ 0x7D , 0x03 ] ,
" 束 " : [ 0x7D , 0x04 ] ,
" 愿 " : [ 0x7D , 0x05 ] ,
" 记 " : [ 0x7D , 0x06 ] ,
" 继 " : [ 0x7D , 0x07 ] ,
" 经 " : [ 0x7D , 0x08 ] ,
" 妹 " : [ 0x7D , 0x09 ] ,
" 查 " : [ 0x7D , 0x0A ] ,
" 抱 " : [ 0x7D , 0x0B ] ,
" 游 " : [ 0x7D , 0x0C ] ,
" 磨 " : [ 0x7D , 0x0D ] ,
" 赚 " : [ 0x7D , 0x0E ] ,
" 否 " : [ 0x7D , 0x0F ] ,
" 近 " : [ 0x7D , 0x10 ] ,
" 魂 " : [ 0x7D , 0x11 ] ,
" 裂 " : [ 0x7D , 0x12 ] ,
" 形 " : [ 0x7D , 0x13 ] ,
" 敌 " : [ 0x7D , 0x14 ] ,
" 柜 " : [ 0x7D , 0x15 ] ,
" 旧 " : [ 0x7D , 0x16 ] ,
" 轻 " : [ 0x7D , 0x17 ] ,
" 凉 " : [ 0x7D , 0x18 ] ,
" 帽 " : [ 0x7D , 0x19 ] ,
" 磁 " : [ 0x7D , 0x1A ] ,
" 鸟 " : [ 0x7D , 0x1B ] ,
" 留 " : [ 0x7D , 0x1C ] ,
" 锐 " : [ 0x7D , 0x1D ] ,
" 检 " : [ 0x7D , 0x1E ] ,
" 梯 " : [ 0x7D , 0x1F ] ,
" 雨 " : [ 0x7D , 0x20 ] ,
" 斜 " : [ 0x7D , 0x21 ] ,
" 怜 " : [ 0x7D , 0x22 ] ,
" 协 " : [ 0x7D , 0x23 ] ,
" 印 " : [ 0x7D , 0x24 ] ,
" 僻 " : [ 0x7D , 0x25 ] ,
" 译 " : [ 0x7D , 0x26 ] ,
" 恭 " : [ 0x7D , 0x27 ] ,
" 托 " : [ 0x7D , 0x28 ] ,
" 恒 " : [ 0x7D , 0x29 ] ,
" 苗 " : [ 0x7D , 0x2A ] ,
" 窃 " : [ 0x7D , 0x2B ] ,
" 悄 " : [ 0x7D , 0x2C ] ,
" 尾 " : [ 0x7D , 0x2D ] ,
" 拐 " : [ 0x7D , 0x2E ] ,
" 隙 " : [ 0x7D , 0x2F ] ,
" 崎 " : [ 0x7D , 0x30 ] ,
" 兄 " : [ 0x7E , 0x01 ] ,
" 医 " : [ 0x7E , 0x02 ] ,
" 孩 " : [ 0x7E , 0x03 ] ,
" 哇 " : [ 0x7E , 0x04 ] ,
" 望 " : [ 0x7E , 0x05 ] ,
" 希 " : [ 0x7E , 0x06 ] ,
" 续 " : [ 0x7E , 0x07 ] ,
" 历 " : [ 0x7E , 0x08 ] ,
" 天 " : [ 0x7E , 0x09 ] ,
" 尔 " : [ 0x7E , 0x0A ] ,
" 歉 " : [ 0x7E , 0x0B ] ,
" 找 " : [ 0x7E , 0x0C ] ,
" 却 " : [ 0x7E , 0x0D ] ,
" 别 " : [ 0x7E , 0x0E ] ,
" 唱 " : [ 0x7E , 0x0F ] ,
" 故 " : [ 0x7E , 0x10 ] ,
" 指 " : [ 0x7E , 0x11 ] ,
" 植 " : [ 0x7E , 0x12 ] ,
" 粉 " : [ 0x7E , 0x13 ] ,
" 旦 " : [ 0x7E , 0x14 ] ,
" 台 " : [ 0x7E , 0x15 ] ,
" 投 " : [ 0x7E , 0x16 ] ,
" 缓 " : [ 0x7E , 0x17 ] ,
" 爽 " : [ 0x7E , 0x18 ] ,
" 臭 " : [ 0x7E , 0x19 ] ,
" 际 " : [ 0x7E , 0x1A ] ,
" 锋 " : [ 0x7E , 0x1B ] ,
" 肮 " : [ 0x7E , 0x1C ] ,
" 丑 " : [ 0x7E , 0x1D ] ,
" 标 " : [ 0x7E , 0x1E ] ,
" 绕 " : [ 0x7E , 0x1F ] ,
" 荫 " : [ 0x7E , 0x20 ] ,
" 坡 " : [ 0x7E , 0x21 ] ,
" 篱 " : [ 0x7E , 0x22 ] ,
" 辛 " : [ 0x7E , 0x23 ] ,
" 夏 " : [ 0x7E , 0x24 ] ,
" 帅 " : [ 0x7E , 0x25 ] ,
" 询 " : [ 0x7E , 0x26 ] ,
" 阶 " : [ 0x7E , 0x27 ] ,
" 娇 " : [ 0x7E , 0x28 ] ,
" 司 " : [ 0x7E , 0x29 ] ,
" 约 " : [ 0x7E , 0x2A ] ,
" 财 " : [ 0x7E , 0x2B ] ,
" 挠 " : [ 0x7E , 0x2C ] ,
" 嗖 " : [ 0x7E , 0x2D ] ,
" 铭 " : [ 0x7E , 0x2E ] ,
" 趾 " : [ 0x7E , 0x2F ] ,
" 岖 " : [ 0x7E , 0x30 ] ,
" 弟 " : [ 0x7F , 0x01 ] ,
" 疗 " : [ 0x7F , 0x02 ] ,
" 卡 " : [ 0x7F , 0x03 ] ,
" 咔 " : [ 0x7F , 0x04 ] ,
" 都 " : [ 0x7F , 0x05 ] ,
" 件 " : [ 0x7F , 0x06 ] ,
" 想 " : [ 0x7F , 0x07 ] ,
" 城 " : [ 0x7F , 0x08 ] ,
" 呀 " : [ 0x7F , 0x09 ] ,
" 博 " : [ 0x7F , 0x0A ] ,
" 密 " : [ 0x7F , 0x0B ] ,
" 今 " : [ 0x7F , 0x0C ] ,
" 松 " : [ 0x7F , 0x0D ] ,
" 迫 " : [ 0x7F , 0x0E ] ,
" 歌 " : [ 0x7F , 0x0F ] ,
" 浪 " : [ 0x7F , 0x10 ] ,
" 跑 " : [ 0x7F , 0x11 ] ,
" 几 " : [ 0x7F , 0x12 ] ,
" 懒 " : [ 0x7F , 0x13 ] ,
" 踩 " : [ 0x7F , 0x14 ] ,
" 固 " : [ 0x7F , 0x15 ] ,
" 掷 " : [ 0x7F , 0x16 ] ,
" 节 " : [ 0x7F , 0x17 ] ,
" 阳 " : [ 0x7F , 0x18 ] ,
" 篮 " : [ 0x7F , 0x19 ] ,
" 敲 " : [ 0x7F , 0x1A ] ,
" 爪 " : [ 0x7F , 0x1B ] ,
" 脏 " : [ 0x7F , 0x1C ] ,
" 陋 " : [ 0x7F , 0x1D ] ,
" 缝 " : [ 0x7F , 0x1E ] ,
" 圈 " : [ 0x7F , 0x1F ] ,
" 垠 " : [ 0x7F , 0x20 ] ,
" 崩 " : [ 0x7F , 0x21 ] ,
" 善 " : [ 0x7F , 0x22 ] ,
" 侍 " : [ 0x7F , 0x23 ] ,
" 籁 " : [ 0x7F , 0x24 ] ,
" 丰 " : [ 0x7F , 0x25 ] ,
" 育 " : [ 0x7F , 0x26 ] ,
" 亏 " : [ 0x7F , 0x27 ] ,
" 谚 " : [ 0x7F , 0x28 ] ,
" 渡 " : [ 0x7F , 0x29 ] ,
" 叛 " : [ 0x7F , 0x2A ] ,
" 拯 " : [ 0x7F , 0x2B ] ,
" 闯 " : [ 0x7F , 0x2C ] ,
" 诅 " : [ 0x7F , 0x2D ] ,
" 矫 " : [ 0x7F , 0x2E ] ,
" 扬 " : [ 0x7F , 0x2F ] ,
" 脊 " : [ 0x7F , 0x30 ] ,
" 蛋 " : [ 0x80 , 0x01 ] ,
" 灯 " : [ 0x80 , 0x02 ] ,
" 米 " : [ 0x80 , 0x03 ] ,
" 战 " : [ 0x80 , 0x04 ] ,
" 要 " : [ 0x80 , 0x05 ] ,
" 事 " : [ 0x80 , 0x06 ] ,
" 候 " : [ 0x80 , 0x07 ] ,
" 堡 " : [ 0x80 , 0x08 ] ,
" 邀 " : [ 0x80 , 0x09 ] ,
" 士 " : [ 0x80 , 0x0A ] ,
" 爱 " : [ 0x80 , 0x0B ] ,
" 练 " : [ 0x80 , 0x0C ] ,
" 口 " : [ 0x80 , 0x0D ] ,
" 典 " : [ 0x80 , 0x0E ] ,
" 怯 " : [ 0x80 , 0x0F ] ,
" 漫 " : [ 0x80 , 0x10 ] ,
" 腿 " : [ 0x80 , 0x11 ] ,
" 描 " : [ 0x80 , 0x12 ] ,
" 散 " : [ 0x80 , 0x13 ] ,
" 准 " : [ 0x80 , 0x14 ] ,
" 孪 " : [ 0x80 , 0x15 ] ,
" 造 " : [ 0x80 , 0x16 ] ,
" 省 " : [ 0x80 , 0x17 ] ,
" 灿 " : [ 0x80 , 0x18 ] ,
" 静 " : [ 0x80 , 0x19 ] ,
" 万 " : [ 0x80 , 0x1A ] ,
" 孵 " : [ 0x80 , 0x1B ] ,
" 巨 " : [ 0x80 , 0x1C ] ,
" 拼 " : [ 0x80 , 0x1D ] ,
" 箱 " : [ 0x80 , 0x1E ] ,
" 组 " : [ 0x80 , 0x1F ] ,
" 扎 " : [ 0x80 , 0x20 ] ,
" 尺 " : [ 0x80 , 0x21 ] ,
" 橘 " : [ 0x80 , 0x22 ] ,
" 挑 " : [ 0x80 , 0x23 ] ,
" 萦 " : [ 0x80 , 0x24 ] ,
" 肌 " : [ 0x80 , 0x25 ] ,
" 悍 " : [ 0x80 , 0x26 ] ,
" 号 " : [ 0x80 , 0x27 ] ,
" 润 " : [ 0x80 , 0x28 ] ,
" 拂 " : [ 0x80 , 0x29 ] ,
" 谅 " : [ 0x80 , 0x2A ] ,
" 锅 " : [ 0x80 , 0x2B ] ,
" 呸 " : [ 0x80 , 0x2C ] ,
" 爵 " : [ 0x80 , 0x2D ] ,
" 寂 " : [ 0x80 , 0x2E ] ,
" 泽 " : [ 0x80 , 0x2F ] ,
" 矗 " : [ 0x80 , 0x30 ] ,
" 仔 " : [ 0x81 , 0x01 ] ,
" 笼 " : [ 0x81 , 0x02 ] ,
" 欧 " : [ 0x81 , 0x03 ] ,
" 车 " : [ 0x81 , 0x04 ] ,
" 当 " : [ 0x81 , 0x05 ] ,
" 得 " : [ 0x81 , 0x06 ] ,
" 有 " : [ 0x81 , 0x07 ] ,
" 恢 " : [ 0x81 , 0x08 ] ,
" 请 " : [ 0x81 , 0x09 ] ,
" 待 " : [ 0x81 , 0x0A ] ,
" 爷 " : [ 0x81 , 0x0B ] ,
" 嚯 " : [ 0x81 , 0x0C ] ,
" 毕 " : [ 0x81 , 0x0D ] ,
" 段 " : [ 0x81 , 0x0E ] ,
" 场 " : [ 0x81 , 0x0F ] ,
" 壮 " : [ 0x81 , 0x10 ] ,
" 监 " : [ 0x81 , 0x11 ] ,
" 述 " : [ 0x81 , 0x12 ] ,
" 专 " : [ 0x81 , 0x13 ] ,
" 按 " : [ 0x81 , 0x14 ] ,
" 巷 " : [ 0x81 , 0x15 ] ,
" 圆 " : [ 0x81 , 0x16 ] ,
" 频 " : [ 0x81 , 0x17 ] ,
" 烂 " : [ 0x81 , 0x18 ] ,
" 恐 " : [ 0x81 , 0x19 ] ,
" 麻 " : [ 0x81 , 0x1A ] ,
" 召 " : [ 0x81 , 0x1B ] ,
" 朵 " : [ 0x81 , 0x1C ] ,
" 猛 " : [ 0x81 , 0x1D ] ,
" 盒 " : [ 0x81 , 0x1E ] ,
" 筑 " : [ 0x81 , 0x1F ] ,
" 儿 " : [ 0x81 , 0x20 ] ,
" 寸 " : [ 0x81 , 0x21 ] ,
" 竞 " : [ 0x81 , 0x22 ] ,
" 贸 " : [ 0x81 , 0x23 ] ,
" 招 " : [ 0x81 , 0x24 ] ,
" 肉 " : [ 0x81 , 0x25 ] ,
" 哧 " : [ 0x81 , 0x26 ] ,
" 虔 " : [ 0x81 , 0x27 ] ,
" 沐 " : [ 0x81 , 0x28 ] ,
" 涯 " : [ 0x81 , 0x29 ] ,
" 擦 " : [ 0x81 , 0x2A ] ,
" 冬 " : [ 0x81 , 0x2B ] ,
" 扼 " : [ 0x81 , 0x2C ] ,
" 灾 " : [ 0x81 , 0x2D ] ,
" 寞 " : [ 0x81 , 0x2E ] ,
" 垮 " : [ 0x81 , 0x2F ] ,
" 纠 " : [ 0x81 , 0x30 ] ,
" 鼹 " : [ 0x82 , 0x01 ] ,
" 鬼 " : [ 0x82 , 0x02 ] ,
" 苏 " : [ 0x82 , 0x03 ] ,
" 泡 " : [ 0x82 , 0x04 ] ,
" 遥 " : [ 0x82 , 0x05 ] ,
" 到 " : [ 0x82 , 0x06 ] ,
" 等 " : [ 0x82 , 0x07 ] ,
" 复 " : [ 0x82 , 0x08 ] ,
" 举 " : [ 0x82 , 0x09 ] ,
" 废 " : [ 0x82 , 0x0A ] ,
" 欣 " : [ 0x82 , 0x0B ] ,
" 商 " : [ 0x82 , 0x0C ] ,
" 竟 " : [ 0x82 , 0x0D ] ,
" 趣 " : [ 0x82 , 0x0E ] ,
" 担 " : [ 0x82 , 0x0F ] ,
" 观 " : [ 0x82 , 0x10 ] ,
" 狱 " : [ 0x82 , 0x11 ] ,
" 戴 " : [ 0x82 , 0x12 ] ,
" 横 " : [ 0x82 , 0x13 ] ,
" 味 " : [ 0x82 , 0x14 ] ,
" 惜 " : [ 0x82 , 0x15 ] ,
" 暂 " : [ 0x82 , 0x16 ] ,
" 偶 " : [ 0x82 , 0x17 ] ,
" 算 " : [ 0x82 , 0x18 ] ,
" 胶 " : [ 0x82 , 0x19 ] ,
" 痹 " : [ 0x82 , 0x1A ] ,
" 唤 " : [ 0x82 , 0x1B ] ,
" 棵 " : [ 0x82 , 0x1C ] ,
" 怀 " : [ 0x82 , 0x1D ] ,
" 摆 " : [ 0x82 , 0x1E ] ,
" 滴 " : [ 0x82 , 0x1F ] ,
" 嗬 " : [ 0x82 , 0x20 ] ,
" 蜘 " : [ 0x82 , 0x21 ] ,
" 革 " : [ 0x82 , 0x22 ] ,
" 捏 " : [ 0x82 , 0x23 ] ,
" 裁 " : [ 0x82 , 0x24 ] ,
" 梭 " : [ 0x82 , 0x25 ] ,
" 敞 " : [ 0x82 , 0x26 ] ,
" 哼 " : [ 0x82 , 0x27 ] ,
" 互 " : [ 0x82 , 0x28 ] ,
" 钩 " : [ 0x82 , 0x29 ] ,
" 铺 " : [ 0x82 , 0x2A ] ,
" 季 " : [ 0x82 , 0x2B ] ,
" 嘎 " : [ 0x82 , 0x2C ] ,
" 权 " : [ 0x82 , 0x2D ] ,
" 茬 " : [ 0x82 , 0x2E ] ,
" 俊 " : [ 0x82 , 0x2F ] ,
" 僧 " : [ 0x82 , 0x30 ] ,
" 鼠 " : [ 0x83 , 0x01 ] ,
" 将 " : [ 0x83 , 0x02 ] ,
" 莎 " : [ 0x83 , 0x03 ] ,
" 队 " : [ 0x83 , 0x04 ] ,
" 夜 " : [ 0x83 , 0x05 ] ,
" 也 " : [ 0x83 , 0x06 ] ,
" 去 " : [ 0x83 , 0x07 ] ,
" 原 " : [ 0x83 , 0x08 ] ,
" 办 " : [ 0x83 , 0x09 ] ,
" 话 " : [ 0x83 , 0x0A ] ,
" 喜 " : [ 0x83 , 0x0B ] ,
" 店 " : [ 0x83 , 0x0C ] ,
" 变 " : [ 0x83 , 0x0D ] ,
" 哟 " : [ 0x83 , 0x0E ] ,
" 皱 " : [ 0x83 , 0x0F ] ,
" ❝ " : [ 0x83 , 0x10 ] ,
" 身 " : [ 0x83 , 0x11 ] ,
" 胸 " : [ 0x83 , 0x12 ] ,
" 乏 " : [ 0x83 , 0x13 ] ,
" 瞬 " : [ 0x83 , 0x14 ] ,
" 遵 " : [ 0x83 , 0x15 ] ,
" 降 " : [ 0x83 , 0x16 ] ,
" 半 " : [ 0x83 , 0x17 ] ,
" 器 " : [ 0x83 , 0x18 ] ,
" 皇 " : [ 0x83 , 0x19 ] ,
" 翅 " : [ 0x83 , 0x1A ] ,
" 忠 " : [ 0x83 , 0x1B ] ,
" 仍 " : [ 0x83 , 0x1C ] ,
" 绚 " : [ 0x83 , 0x1D ] ,
" 脆 " : [ 0x83 , 0x1E ] ,
" 湿 " : [ 0x83 , 0x1F ] ,
" 丘 " : [ 0x83 , 0x20 ] ,
" 蛛 " : [ 0x83 , 0x21 ] ,
" 紫 " : [ 0x83 , 0x22 ] ,
" 艰 " : [ 0x83 , 0x23 ] ,
" 判 " : [ 0x83 , 0x24 ] ,
" 属 " : [ 0x83 , 0x25 ] ,
" 懦 " : [ 0x83 , 0x26 ] ,
" 撒 " : [ 0x83 , 0x27 ] ,
" 稳 " : [ 0x83 , 0x28 ] ,
" 辈 " : [ 0x83 , 0x29 ] ,
" 栏 " : [ 0x83 , 0x2A ] ,
" 册 " : [ 0x83 , 0x2B ] ,
" 吱 " : [ 0x83 , 0x2C ] ,
" 祈 " : [ 0x83 , 0x2D ] ,
" 咙 " : [ 0x83 , 0x2E ] ,
" 孔 " : [ 0x83 , 0x2F ] ,
" 漆 " : [ 0x83 , 0x30 ] ,
" 岩 " : [ 0x84 , 0x01 ] ,
" 军 " : [ 0x84 , 0x02 ] ,
" 阿 " : [ 0x84 , 0x03 ] ,
" 洞 " : [ 0x84 , 0x04 ] ,
" 空 " : [ 0x84 , 0x05 ] ,
" 许 " : [ 0x84 , 0x06 ] ,
" 该 " : [ 0x84 , 0x07 ] ,
" 貌 " : [ 0x84 , 0x08 ] ,
" 被 " : [ 0x84 , 0x09 ] ,
" 胡 " : [ 0x84 , 0x0A ] ,
" 若 " : [ 0x84 , 0x0B ] ,
" 营 " : [ 0x84 , 0x0C ] ,
" 孤 " : [ 0x84 , 0x0D ] ,
" 特 " : [ 0x84 , 0x0E ] ,
" 眉 " : [ 0x84 , 0x0F ] ,
" 纸 " : [ 0x84 , 0x10 ] ,
" 站 " : [ 0x84 , 0x11 ] ,
" 针 " : [ 0x84 , 0x12 ] ,
" 二 " : [ 0x84 , 0x13 ] ,
" 减 " : [ 0x84 , 0x14 ] ,
" 价 " : [ 0x84 , 0x15 ] ,
" 燥 " : [ 0x84 , 0x16 ] ,
" 抢 " : [ 0x84 , 0x17 ] ,
" 翡 " : [ 0x84 , 0x18 ] ,
" 腌 " : [ 0x84 , 0x19 ] ,
" 膀 " : [ 0x84 , 0x1A ] ,
" 根 " : [ 0x84 , 0x1B ] ,
" 乘 " : [ 0x84 , 0x1C ] ,
" 盯 " : [ 0x84 , 0x1D ] ,
" 铙 " : [ 0x84 , 0x1E ] ,
" 河 " : [ 0x84 , 0x1F ] ,
" 晒 " : [ 0x84 , 0x20 ] ,
" 网 " : [ 0x84 , 0x21 ] ,
" 序 " : [ 0x84 , 0x22 ] ,
" 掠 " : [ 0x84 , 0x23 ] ,
" 赖 " : [ 0x84 , 0x24 ] ,
" 骗 " : [ 0x84 , 0x25 ] ,
" 呵 " : [ 0x84 , 0x26 ] ,
" 兆 " : [ 0x84 , 0x27 ] ,
" 柱 " : [ 0x84 , 0x28 ] ,
" 讽 " : [ 0x84 , 0x29 ] ,
" 迄 " : [ 0x84 , 0x2A ] ,
" 驱 " : [ 0x84 , 0x2B ] ,
" 校 " : [ 0x84 , 0x2C ] ,
" 祷 " : [ 0x84 , 0x2D ] ,
" 亚 " : [ 0x84 , 0x2E ] ,
" 溉 " : [ 0x84 , 0x2F ] ,
" 启 " : [ 0x84 , 0x30 ] ,
" 石 " : [ 0x85 , 0x01 ] ,
" 团 " : [ 0x85 , 0x02 ] ,
" 姨 " : [ 0x85 , 0x03 ] ,
" 哦 " : [ 0x85 , 0x04 ] ,
" 时 " : [ 0x85 , 0x05 ] ,
" 规 " : [ 0x85 , 0x06 ] ,
" 再 " : [ 0x85 , 0x07 ] ,
" 安 " : [ 0x85 , 0x08 ] ,
" 参 " : [ 0x85 , 0x09 ] ,
" 八 " : [ 0x85 , 0x0A ] ,
" 哪 " : [ 0x85 , 0x0B ] ,
" 业 " : [ 0x85 , 0x0C ] ,
" 独 " : [ 0x85 , 0x0D ] ,
" 鲜 " : [ 0x85 , 0x0E ] ,
" 识 " : [ 0x85 , 0x0F ] ,
" 片 " : [ 0x85 , 0x10 ] ,
" 目 " : [ 0x85 , 0x11 ] ,
" 戏 " : [ 0x85 , 0x12 ] ,
" 百 " : [ 0x85 , 0x13 ] ,
" 巧 " : [ 0x85 , 0x14 ] ,
" 著 " : [ 0x85 , 0x15 ] ,
" 滋 " : [ 0x85 , 0x16 ] ,
" 昏 " : [ 0x85 , 0x17 ] ,
" 翠 " : [ 0x85 , 0x18 ] ,
" 豪 " : [ 0x85 , 0x19 ] ,
" 狼 " : [ 0x85 , 0x1A ] ,
" 怨 " : [ 0x85 , 0x1B ] ,
" 尖 " : [ 0x85 , 0x1C ] ,
" 副 " : [ 0x85 , 0x1D ] ,
" 钹 " : [ 0x85 , 0x1E ] ,
" 环 " : [ 0x85 , 0x1F ] ,
" 郁 " : [ 0x85 , 0x20 ] ,
" 巡 " : [ 0x85 , 0x21 ] ,
" 淹 " : [ 0x85 , 0x22 ] ,
" 奉 " : [ 0x85 , 0x23 ] ,
" 货 " : [ 0x85 , 0x24 ] ,
" 骑 " : [ 0x85 , 0x25 ] ,
" 愤 " : [ 0x85 , 0x26 ] ,
" 嚓 " : [ 0x85 , 0x27 ] ,
" 轮 " : [ 0x85 , 0x28 ] ,
" 嗓 " : [ 0x85 , 0x29 ] ,
" 腰 " : [ 0x85 , 0x2A ] ,
" 档 " : [ 0x85 , 0x2B ] ,
" 碗 " : [ 0x85 , 0x2C ] ,
" 氧 " : [ 0x85 , 0x2D ] ,
" 卟 " : [ 0x85 , 0x2E ] ,
" 谋 " : [ 0x85 , 0x2F ] ,
" 捕 " : [ 0x85 , 0x30 ] ,
" 球 " : [ 0x86 , 0x01 ] ,
" 叠 " : [ 0x86 , 0x02 ] ,
" 比 " : [ 0x86 , 0x03 ] ,
" , " : [ 0x86 , 0x04 ] ,
" 知 " : [ 0x86 , 0x05 ] ,
" 矩 " : [ 0x86 , 0x06 ] ,
" 见 " : [ 0x86 , 0x07 ] ,
" 最 " : [ 0x86 , 0x08 ] ,
" 于 " : [ 0x86 , 0x09 ] ,
" 犯 " : [ 0x86 , 0x0A ] ,
" 呆 " : [ 0x86 , 0x0B ] ,
" 总 " : [ 0x86 , 0x0C ] ,
" 爸 " : [ 0x86 , 0x0D ] ,
" 殊 " : [ 0x86 , 0x0E ] ,
" 潮 " : [ 0x86 , 0x0F ] ,
" ❞ " : [ 0x86 , 0x10 ] ,
" 录 " : [ 0x86 , 0x11 ] ,
" 室 " : [ 0x86 , 0x12 ] ,
" 合 " : [ 0x86 , 0x13 ] ,
" 依 " : [ 0x86 , 0x14 ] ,
" 收 " : [ 0x86 , 0x15 ] ,
" 补 " : [ 0x86 , 0x16 ] ,
" 冲 " : [ 0x86 , 0x17 ] ,
" 雕 " : [ 0x86 , 0x18 ] ,
" 华 " : [ 0x86 , 0x19 ] ,
" 籍 " : [ 0x86 , 0x1A ] ,
" 恨 " : [ 0x86 , 0x1B ] ,
" 卷 " : [ 0x86 , 0x1C ] ,
" 景 " : [ 0x86 , 0x1D ] ,
" 肩 " : [ 0x86 , 0x1E ] ,
" 境 " : [ 0x86 , 0x1F ] ,
" 葱 " : [ 0x86 , 0x20 ] ,
" 逻 " : [ 0x86 , 0x21 ] ,
" 啰 " : [ 0x86 , 0x22 ] ,
" 句 " : [ 0x86 , 0x23 ] ,
" 宾 " : [ 0x86 , 0x24 ] ,
" 童 " : [ 0x86 , 0x25 ] ,
" 怒 " : [ 0x86 , 0x26 ] ,
" 卿 " : [ 0x86 , 0x27 ] ,
" 嘶 " : [ 0x86 , 0x28 ] ,
" 蒙 " : [ 0x86 , 0x29 ] ,
" 扛 " : [ 0x86 , 0x2A ] ,
" 官 " : [ 0x86 , 0x2B ] ,
" 骤 " : [ 0x86 , 0x2C ] ,
" 嘲 " : [ 0x86 , 0x2D ] ,
" 炙 " : [ 0x86 , 0x2E ] ,
" 纱 " : [ 0x86 , 0x2F ] ,
" 峻 " : [ 0x86 , 0x30 ] ,
" 盗 " : [ 0x87 , 0x01 ] ,
" 罗 " : [ 0x87 , 0x02 ] ,
" 帕 " : [ 0x87 , 0x03 ] ,
" ! " : [ 0x87 , 0x04 ] ,
" 道 " : [ 0x87 , 0x05 ] ,
" 点 " : [ 0x87 , 0x06 ] ,
" 亮 " : [ 0x87 , 0x07 ] ,
" 后 " : [ 0x87 , 0x08 ] ,
" 先 " : [ 0x87 , 0x09 ] ,
" 傻 " : [ 0x87 , 0x0A ] ,
" 住 " : [ 0x87 , 0x0B ] ,
" 买 " : [ 0x87 , 0x0C ] ,
" 讨 " : [ 0x87 , 0x0D ] ,
" 期 " : [ 0x87 , 0x0E ] ,
" 、 " : [ 0x87 , 0x0F ] ,
" 认 " : [ 0x87 , 0x10 ] ,
" 音 " : [ 0x87 , 0x11 ] ,
" 管 " : [ 0x87 , 0x12 ] ,
" 玫 " : [ 0x87 , 0x13 ] ,
" 靠 " : [ 0x87 , 0x14 ] ,
" 换 " : [ 0x87 , 0x15 ] ,
" 治 " : [ 0x87 , 0x16 ] ,
" 距 " : [ 0x87 , 0x17 ] ,
" 桶 " : [ 0x87 , 0x18 ] ,
" 浓 " : [ 0x87 , 0x19 ] ,
" 阻 " : [ 0x87 , 0x1A ] ,
" 咄 " : [ 0x87 , 0x1B ] ,
" 饿 " : [ 0x87 , 0x1C ] ,
" 佩 " : [ 0x87 , 0x1D ] ,
" 瓣 " : [ 0x87 , 0x1E ] ,
" 呕 " : [ 0x87 , 0x1F ] ,
" 澈 " : [ 0x87 , 0x20 ] ,
" 饭 " : [ 0x87 , 0x21 ] ,
" 砍 " : [ 0x87 , 0x22 ] ,
" 购 " : [ 0x87 , 0x23 ] ,
" 浴 " : [ 0x87 , 0x24 ] ,
" 悔 " : [ 0x87 , 0x25 ] ,
" 杰 " : [ 0x87 , 0x26 ] ,
" 惨 " : [ 0x87 , 0x27 ] ,
" 鸣 " : [ 0x87 , 0x28 ] ,
" 词 " : [ 0x87 , 0x29 ] ,
" 崖 " : [ 0x87 , 0x2A ] ,
" 遣 " : [ 0x87 , 0x2B ] ,
" 届 " : [ 0x87 , 0x2C ] ,
" 晰 " : [ 0x87 , 0x2D ] ,
" 泄 " : [ 0x87 , 0x2E ] ,
" 浸 " : [ 0x87 , 0x2F ] ,
" 媲 " : [ 0x87 , 0x30 ] ,
" 贼 " : [ 0x88 , 0x01 ] ,
" 汉 " : [ 0x88 , 0x02 ] ,
" 瑞 " : [ 0x88 , 0x03 ] ,
" 谢 " : [ 0x88 , 0x04 ] ,
" 闪 " : [ 0x88 , 0x05 ] ,
" 但 " : [ 0x88 , 0x06 ] ,
" 照 " : [ 0x88 , 0x07 ] ,
" 胜 " : [ 0x88 , 0x08 ] ,
" 测 " : [ 0x88 , 0x09 ] ,
" 拒 " : [ 0x88 , 0x0A ] ,
" 紧 " : [ 0x88 , 0x0B ] ,
" 东 " : [ 0x88 , 0x0C ] ,
" 厌 " : [ 0x88 , 0x0D ] ,
" 局 " : [ 0x88 , 0x0E ] ,
" 即 " : [ 0x88 , 0x0F ] ,
" 锁 " : [ 0x88 , 0x10 ] ,
" 崇 " : [ 0x88 , 0x11 ] ,
" 俱 " : [ 0x88 , 0x12 ] ,
" 瑰 " : [ 0x88 , 0x13 ] ,
" 摇 " : [ 0x88 , 0x14 ] ,
" 产 " : [ 0x88 , 0x15 ] ,
" 愈 " : [ 0x88 , 0x16 ] ,
" 离 " : [ 0x88 , 0x17 ] ,
" 巾 " : [ 0x88 , 0x18 ] ,
" 饼 " : [ 0x88 , 0x19 ] ,
" 虚 " : [ 0x88 , 0x1A ] ,
" 牙 " : [ 0x88 , 0x1B ] ,
" 蛰 " : [ 0x88 , 0x1C ] ,
" 献 " : [ 0x88 , 0x1D ] ,
" 僵 " : [ 0x88 , 0x1E ] ,
" 舒 " : [ 0x88 , 0x1F ] ,
" 岁 " : [ 0x88 , 0x20 ] ,
" 帘 " : [ 0x88 , 0x21 ] ,
" 惹 " : [ 0x88 , 0x22 ] ,
" 寄 " : [ 0x88 , 0x23 ] ,
" 报 " : [ 0x88 , 0x24 ] ,
" 茸 " : [ 0x88 , 0x25 ] ,
" 宁 " : [ 0x88 , 0x26 ] ,
" 昨 " : [ 0x88 , 0x27 ] ,
" 烟 " : [ 0x88 , 0x28 ] ,
" 灌 " : [ 0x88 , 0x29 ] ,
" 葡 " : [ 0x88 , 0x2A ] ,
" 踢 " : [ 0x88 , 0x2B ] ,
" 翰 " : [ 0x88 , 0x2C ] ,
" 科 " : [ 0x88 , 0x2D ] ,
" 饥 " : [ 0x88 , 0x2E ] ,
" 洪 " : [ 0x88 , 0x2F ] ,
" 拦 " : [ 0x88 , 0x30 ] ,
" 木 " : [ 0x89 , 0x01 ] ,
" 高 " : [ 0x89 , 0x02 ] ,
" 塔 " : [ 0x89 , 0x03 ] ,
" 你 " : [ 0x89 , 0x04 ] ,
" 耀 " : [ 0x89 , 0x05 ] ,
" 发 " : [ 0x89 , 0x06 ] ,
" 还 " : [ 0x89 , 0x07 ] ,
" 利 " : [ 0x89 , 0x08 ] ,
" 宫 " : [ 0x89 , 0x09 ] ,
" 失 " : [ 0x89 , 0x0A ] ,
" 张 " : [ 0x89 , 0x0B ] ,
" 西 " : [ 0x89 , 0x0C ] ,
" 保 " : [ 0x89 , 0x0D ] ,
" 顾 " : [ 0x89 , 0x0E ] ,
" 跳 " : [ 0x89 , 0x0F ] ,
" 牢 " : [ 0x89 , 0x10 ] ,
" 擅 " : [ 0x89 , 0x11 ] ,
" 部 " : [ 0x89 , 0x12 ] ,
" 莲 " : [ 0x89 , 0x13 ] ,
" 杆 " : [ 0x89 , 0x14 ] ,
" 反 " : [ 0x89 , 0x15 ] ,
" 萎 " : [ 0x89 , 0x16 ] ,
" 则 " : [ 0x89 , 0x17 ] ,
" 伞 " : [ 0x89 , 0x18 ] ,
" 荷 " : [ 0x89 , 0x19 ] ,
" 思 " : [ 0x89 , 0x1A ] ,
" 齿 " : [ 0x89 , 0x1B ] ,
" 迈 " : [ 0x89 , 0x1C ] ,
" 端 " : [ 0x89 , 0x1D ] ,
" 咀 " : [ 0x89 , 0x1E ] ,
" 振 " : [ 0x89 , 0x1F ] ,
" 暑 " : [ 0x89 , 0x20 ] ,
" 桌 " : [ 0x89 , 0x21 ] ,
" 覆 " : [ 0x89 , 0x22 ] ,
" 癫 " : [ 0x89 , 0x23 ] ,
" 吝 " : [ 0x89 , 0x24 ] ,
" 浑 " : [ 0x89 , 0x25 ] ,
" 陪 " : [ 0x89 , 0x26 ] ,
" 棕 " : [ 0x89 , 0x27 ] ,
" 兽 " : [ 0x89 , 0x28 ] ,
" 铅 " : [ 0x89 , 0x29 ] ,
" 萄 " : [ 0x89 , 0x2A ] ,
" 涨 " : [ 0x89 , 0x2B ] ,
" 九 " : [ 0x89 , 0x2C ] ,
" 呻 " : [ 0x89 , 0x2D ] ,
" 咦 " : [ 0x89 , 0x2E ] ,
" 恕 " : [ 0x89 , 0x2F ] ,
" 浇 " : [ 0x89 , 0x30 ] ,
" 乃 " : [ 0x8A , 0x01 ] ,
" 跷 " : [ 0x8A , 0x02 ] ,
" 妞 " : [ 0x8A , 0x03 ] ,
" 成 " : [ 0x8A , 0x04 ] ,
" 正 " : [ 0x8A , 0x05 ] ,
" 生 " : [ 0x8A , 0x06 ] ,
" 桃 " : [ 0x8A , 0x07 ] ,
" 象 " : [ 0x8A , 0x08 ] ,
" 殿 " : [ 0x8A , 0x09 ] ,
" 礼 " : [ 0x8A , 0x0A ] ,
" 刚 " : [ 0x8A , 0x0B ] ,
" 宴 " : [ 0x8A , 0x0C ] ,
" 护 " : [ 0x8A , 0x0D ] ,
" 糊 " : [ 0x8A , 0x0E ] ,
" 饮 " : [ 0x8A , 0x0F ] ,
" 噩 " : [ 0x8A , 0x10 ] ,
" 躲 " : [ 0x8A , 0x11 ] ,
" 系 " : [ 0x8A , 0x12 ] ,
" 菟 " : [ 0x8A , 0x13 ] ,
" 移 " : [ 0x8A , 0x14 ] ,
" 增 " : [ 0x8A , 0x15 ] ,
" 缩 " : [ 0x8A , 0x16 ] ,
" 伐 " : [ 0x8A , 0x17 ] ,
" 诗 " : [ 0x8A , 0x18 ] ,
" 拉 " : [ 0x8A , 0x19 ] ,
" 付 " : [ 0x8A , 0x1A ] ,
" 咬 " : [ 0x8A , 0x1B ] ,
" 创 " : [ 0x8A , 0x1C ] ,
" 凶 " : [ 0x8A , 0x1D ] ,
" 嚼 " : [ 0x8A , 0x1E ] ,
" 熬 " : [ 0x8A , 0x1F ] ,
" 德 " : [ 0x8A , 0x20 ] ,
" 井 " : [ 0x8A , 0x21 ] ,
" 湖 " : [ 0x8A , 0x22 ] ,
" 宣 " : [ 0x8A , 0x23 ] ,
" 啬 " : [ 0x8A , 0x24 ] ,
" 呱 " : [ 0x8A , 0x25 ] ,
" 闷 " : [ 0x8A , 0x26 ] ,
" 榈 " : [ 0x8A , 0x27 ] ,
" 叔 " : [ 0x8A , 0x28 ] ,
" 旷 " : [ 0x8A , 0x29 ] ,
" 妆 " : [ 0x8A , 0x2A ] ,
" 烁 " : [ 0x8A , 0x2B ] ,
" 嘉 " : [ 0x8A , 0x2C ] ,
" 吟 " : [ 0x8A , 0x2D ] ,
" 腥 " : [ 0x8A , 0x2E ] ,
" 逆 " : [ 0x8A , 0x2F ] ,
" 缭 " : [ 0x8A , 0x30 ] ,
" 伊 " : [ 0x8B , 0x01 ] ,
" 噬 " : [ 0x8B , 0x02 ] ,
" 咻 " : [ 0x8B , 0x03 ] ,
" 功 " : [ 0x8B , 0x04 ] ,
" 为 " : [ 0x8B , 0x05 ] ,
" 能 " : [ 0x8B , 0x06 ] ,
" 公 " : [ 0x8B , 0x07 ] ,
" 已 " : [ 0x8B , 0x08 ] ,
" 霜 " : [ 0x8B , 0x09 ] ,
" 千 " : [ 0x8B , 0x0A ] ,
" 镇 " : [ 0x8B , 0x0B ] ,
" 欢 " : [ 0x8B , 0x0C ] ,
" 叫 " : [ 0x8B , 0x0D ] ,
" 涂 " : [ 0x8B , 0x0E ] ,
" 命 " : [ 0x8B , 0x0F ] ,
" 决 " : [ 0x8B , 0x10 ] ,
" 藏 " : [ 0x8B , 0x11 ] ,
" 诞 " : [ 0x8B , 0x12 ] ,
" 弗 " : [ 0x8B , 0x13 ] ,
" 况 " : [ 0x8B , 0x14 ] ,
" 基 " : [ 0x8B , 0x15 ] ,
" 浆 " : [ 0x8B , 0x16 ] ,
" 碰 " : [ 0x8B , 0x17 ] ,
" 盐 " : [ 0x8B , 0x18 ] ,
" 仁 " : [ 0x8B , 0x19 ] ,
" 班 " : [ 0x8B , 0x1A ] ,
" 朝 " : [ 0x8B , 0x1B ] ,
" 铁 " : [ 0x8B , 0x1C ] ,
" 呃 " : [ 0x8B , 0x1D ] ,
" 缠 " : [ 0x8B , 0x1E ] ,
" 垃 " : [ 0x8B , 0x1F ] ,
" 阱 " : [ 0x8B , 0x20 ] ,
" 摸 " : [ 0x8B , 0x21 ] ,
" 溜 " : [ 0x8B , 0x22 ] ,
" 恋 " : [ 0x8B , 0x23 ] ,
" 例 " : [ 0x8B , 0x24 ] ,
" 馆 " : [ 0x8B , 0x25 ] ,
" 庭 " : [ 0x8B , 0x26 ] ,
" 袋 " : [ 0x8B , 0x27 ] ,
" 皙 " : [ 0x8B , 0x28 ] ,
" 怡 " : [ 0x8B , 0x29 ] ,
" 匣 " : [ 0x8B , 0x2A ] ,
" 施 " : [ 0x8B , 0x2B ] ,
" 岗 " : [ 0x8B , 0x2C ] ,
" 初 " : [ 0x8B , 0x2D ] ,
" 祟 " : [ 0x8B , 0x2E ] ,
" 贯 " : [ 0x8B , 0x2F ] ,
" 徽 " : [ 0x8B , 0x30 ] ,
" 钢 " : [ 0x8C , 0x01 ] ,
" 草 " : [ 0x8C , 0x02 ] ,
" 像 " : [ 0x8C , 0x03 ] ,
" 了 " : [ 0x8C , 0x04 ] ,
" 勇 " : [ 0x8C , 0x05 ] ,
" 性 " : [ 0x8C , 0x06 ] ,
" 主 " : [ 0x8C , 0x07 ] ,
" 往 " : [ 0x8C , 0x08 ] ,
" 度 " : [ 0x8C , 0x09 ] ,
" 载 " : [ 0x8C , 0x0A ] ,
" 稍 " : [ 0x8C , 0x0B ] ,
" 处 " : [ 0x8C , 0x0C ] ,
" 滚 " : [ 0x8C , 0x0D ] ,
" 午 " : [ 0x8C , 0x0E ] ,
" 条 " : [ 0x8C , 0x0F ] ,
" 坐 " : [ 0x8C , 0x10 ] ,
" 墟 " : [ 0x8C , 0x11 ] ,
" 共 " : [ 0x8C , 0x12 ] ,
" 蹈 " : [ 0x8C , 0x13 ] ,
" 习 " : [ 0x8C , 0x14 ] ,
" 本 " : [ 0x8C , 0x15 ] ,
" 枫 " : [ 0x8C , 0x16 ] ,
" 触 " : [ 0x8C , 0x17 ] ,
" 鸡 " : [ 0x8C , 0x18 ] ,
" 煮 " : [ 0x8C , 0x19 ] ,
" 翻 " : [ 0x8C , 0x1A ] ,
" 洋 " : [ 0x8C , 0x1B ] ,
" 吞 " : [ 0x8C , 0x1C ] ,
" 线 " : [ 0x8C , 0x1D ] ,
" 懈 " : [ 0x8C , 0x1E ] ,
" 圾 " : [ 0x8C , 0x1F ] ,
" 谜 " : [ 0x8C , 0x20 ] ,
" 净 " : [ 0x8C , 0x21 ] ,
" 融 " : [ 0x8C , 0x22 ] ,
" 耻 " : [ 0x8C , 0x23 ] ,
" 义 " : [ 0x8C , 0x24 ] ,
" 柔 " : [ 0x8C , 0x25 ] ,
" 济 " : [ 0x8C , 0x26 ] ,
" 阁 " : [ 0x8C , 0x27 ] ,
" 斑 " : [ 0x8C , 0x28 ] ,
" 哀 " : [ 0x8C , 0x29 ] ,
" 障 " : [ 0x8C , 0x2A ] ,
" 苍 " : [ 0x8C , 0x2B ] ,
" 谨 " : [ 0x8C , 0x2C ] ,
" 趟 " : [ 0x8C , 0x2D ] ,
" 汗 " : [ 0x8C , 0x2E ] ,
" 薄 " : [ 0x8C , 0x2F ] ,
" 删 " : [ 0x8C , 0x30 ] ,
" 盔 " : [ 0x8D , 0x01 ] ,
" 伪 " : [ 0x8D , 0x02 ] ,
" 嗦 " : [ 0x8D , 0x03 ] ,
" 回 " : [ 0x8D , 0x04 ] ,
" 敢 " : [ 0x8D , 0x05 ] ,
" 微 " : [ 0x8D , 0x06 ] ,
" 需 " : [ 0x8D , 0x07 ] ,
" 日 " : [ 0x8D , 0x08 ] ,
" 负 " : [ 0x8D , 0x09 ] ,
" 逢 " : [ 0x8D , 0x0A ] ,
" 休 " : [ 0x8D , 0x0B ] ,
" 谈 " : [ 0x8D , 0x0C ] ,
" 扰 " : [ 0x8D , 0x0D ] ,
" 代 " : [ 0x8D , 0x0E ] ,
" 鲸 " : [ 0x8D , 0x0F ] ,
" 吃 " : [ 0x8D , 0x10 ] ,
" 棺 " : [ 0x8D , 0x11 ] ,
" 跃 " : [ 0x8D , 0x12 ] ,
" 曲 " : [ 0x8D , 0x13 ] ,
" 掌 " : [ 0x8D , 0x14 ] ,
" 混 " : [ 0x8D , 0x15 ] ,
" 养 " : [ 0x8D , 0x16 ] ,
" 倍 " : [ 0x8D , 0x17 ] ,
" 乳 " : [ 0x8D , 0x18 ] ,
" 蓄 " : [ 0x8D , 0x19 ] ,
" 容 " : [ 0x8D , 0x1A ] ,
" 叮 " : [ 0x8D , 0x1B ] ,
" 飘 " : [ 0x8D , 0x1C ] ,
" 费 " : [ 0x8D , 0x1D ] ,
" 域 " : [ 0x8D , 0x1E ] ,
" 脖 " : [ 0x8D , 0x1F ] ,
" 喻 " : [ 0x8D , 0x20 ] ,
" 维 " : [ 0x8D , 0x21 ] ,
" 堆 " : [ 0x8D , 0x22 ] ,
" 羞 " : [ 0x8D , 0x23 ] ,
" 嘈 " : [ 0x8D , 0x24 ] ,
" 茎 " : [ 0x8D , 0x25 ] ,
" 逛 " : [ 0x8D , 0x26 ] ,
" 迟 " : [ 0x8D , 0x27 ] ,
" 允 " : [ 0x8D , 0x28 ] ,
" 默 " : [ 0x8D , 0x29 ] ,
" 秋 " : [ 0x8D , 0x2A ] ,
" 傲 " : [ 0x8D , 0x2B ] ,
" 慎 " : [ 0x8D , 0x2C ] ,
" 噗 " : [ 0x8D , 0x2D ] ,
" 辆 " : [ 0x8D , 0x2E ] ,
" 揍 " : [ 0x8D , 0x2F ] ,
" ・ " : [ 0x8D , 0x30 ] ,
" 甲 " : [ 0x8E , 0x01 ] ,
" 装 " : [ 0x8E , 0x02 ] ,
" 水 " : [ 0x8E , 0x03 ] ,
" 我 " : [ 0x8E , 0x04 ] ,
" 而 " : [ 0x8E , 0x05 ] ,
" 乎 " : [ 0x8E , 0x06 ] ,
" 帮 " : [ 0x8E , 0x07 ] ,
" 活 " : [ 0x8E , 0x08 ] ,
" 责 " : [ 0x8E , 0x09 ] ,
" 赶 " : [ 0x8E , 0x0A ] ,
" 觉 " : [ 0x8E , 0x0B ] ,
" 确 " : [ 0x8E , 0x0C ] ,
" 耽 " : [ 0x8E , 0x0D ] ,
" 野 " : [ 0x8E , 0x0E ] ,
" 鱼 " : [ 0x8E , 0x0F ] ,
" 刨 " : [ 0x8E , 0x10 ] ,
" 材 " : [ 0x8E , 0x11 ] ,
" 扫 " : [ 0x8E , 0x12 ] ,
" 演 " : [ 0x8E , 0x13 ] ,
" 握 " : [ 0x8E , 0x14 ] ,
" 弄 " : [ 0x8E , 0x15 ] ,
" 芳 " : [ 0x8E , 0x16 ] ,
" 逃 " : [ 0x8E , 0x17 ] ,
" 酪 " : [ 0x8E , 0x18 ] ,
" 群 " : [ 0x8E , 0x19 ] ,
" 迅 " : [ 0x8E , 0x1A ] ,
" 蛮 " : [ 0x8E , 0x1B ] ,
" 考 " : [ 0x8E , 0x1C ] ,
" 笨 " : [ 0x8E , 0x1D ] ,
" 征 " : [ 0x8E , 0x1E ] ,
" 塘 " : [ 0x8E , 0x1F ] ,
" 户 " : [ 0x8E , 0x20 ] ,
" 挖 " : [ 0x8E , 0x21 ] ,
" 滑 " : [ 0x8E , 0x22 ] ,
" 引 " : [ 0x8E , 0x23 ] ,
" 志 " : [ 0x8E , 0x24 ] ,
" 猎 " : [ 0x8E , 0x25 ] ,
" 挡 " : [ 0x8E , 0x26 ] ,
" 帐 " : [ 0x8E , 0x27 ] ,
" 隔 " : [ 0x8E , 0x28 ] ,
" 穴 " : [ 0x8E , 0x29 ] ,
" 喉 " : [ 0x8E , 0x2A ] ,
" 销 " : [ 0x8E , 0x2B ] ,
" 鼓 " : [ 0x8E , 0x2C ] ,
" 嗤 " : [ 0x8E , 0x2D ] ,
" 搭 " : [ 0x8E , 0x2E ] ,
" 尸 " : [ 0x8E , 0x2F ] ,
" 登 " : [ 0x8E , 0x30 ] ,
" 虫 " : [ 0x8F , 0x01 ] ,
" 热 " : [ 0x8F , 0x02 ] ,
" 晶 " : [ 0x8F , 0x03 ] ,
" 们 " : [ 0x8F , 0x04 ] ,
" 赞 " : [ 0x8F , 0x05 ] ,
" 其 " : [ 0x8F , 0x06 ] ,
" 助 " : [ 0x8F , 0x07 ] ,
" 赌 " : [ 0x8F , 0x08 ] ,
" 领 " : [ 0x8F , 0x09 ] ,
" 快 " : [ 0x8F , 0x0A ] ,
" 精 " : [ 0x8F , 0x0B ] ,
" 状 " : [ 0x8F , 0x0C ] ,
" 误 " : [ 0x8F , 0x0D ] ,
" 睡 " : [ 0x8F , 0x0E ] ,
" 取 " : [ 0x8F , 0x0F ] ,
" 偷 " : [ 0x8F , 0x10 ] ,
" 流 " : [ 0x8F , 0x11 ] ,
" 潜 " : [ 0x8F , 0x12 ] ,
" 邻 " : [ 0x8F , 0x13 ] ,
" 愧 " : [ 0x8F , 0x14 ] ,
" 勒 " : [ 0x8F , 0x15 ] ,
" 香 " : [ 0x8F , 0x16 ] ,
" 获 " : [ 0x8F , 0x17 ] ,
" 油 " : [ 0x8F , 0x18 ] ,
" 体 " : [ 0x8F , 0x19 ] ,
" 绪 " : [ 0x8F , 0x1A ] ,
" 吵 " : [ 0x8F , 0x1B ] ,
" 楚 " : [ 0x8F , 0x1C ] ,
" 贪 " : [ 0x8F , 0x1D ] ,
" 乡 " : [ 0x8F , 0x1E ] ,
" 旁 " : [ 0x8F , 0x1F ] ,
" 晓 " : [ 0x8F , 0x20 ] ,
" 躺 " : [ 0x8F , 0x21 ] ,
" 狭 " : [ 0x8F , 0x22 ] ,
" 审 " : [ 0x8F , 0x23 ] ,
" 禁 " : [ 0x8F , 0x24 ] ,
" 谎 " : [ 0x8F , 0x25 ] ,
" 挨 " : [ 0x8F , 0x26 ] ,
" 泥 " : [ 0x8F , 0x27 ] ,
" 沮 " : [ 0x8F , 0x28 ] ,
" 嘻 " : [ 0x8F , 0x29 ] ,
" 擔 " : [ 0x8F , 0x2A ] ,
" 靓 " : [ 0x8F , 0x2B ] ,
" 丫 " : [ 0x8F , 0x2C ] ,
" 吩 " : [ 0x8F , 0x2D ] ,
" 杠 " : [ 0x8F , 0x2E ] ,
" 杯 " : [ 0x8F , 0x2F ] ,
" 屏 " : [ 0x8F , 0x30 ] ,
}
2023-12-25 14:15:30 +01:00
def check_if_correct_charset ( char , cur_charset , filename , lineno ) :
warn_msg = f " { filename } : { lineno } : Warning: character ' { char } ' is present but is completely in a wrong charset currently set. Add {{ }} before the character to silence this warning. "
if char == " " or char == " " :
return - 1 , cur_charset
elif char in CHARSET_KANA and cur_charset is not CHARSET_KANA :
print ( warn_msg . format ( " [Charset Kana] " ) )
return 0 , CHARSET_KANA
elif char in CHARSET_LATIN and cur_charset is not CHARSET_LATIN :
print ( warn_msg . format ( " [Charset Latin] " ) )
return 1 , CHARSET_LATIN
elif char in CHARSET_KANJI and cur_charset is not CHARSET_KANJI :
print ( warn_msg . format ( " [Charset Kanji] " ) )
return 2 , CHARSET_KANJI
elif char in CHARSET_BUTTONS and cur_charset is not CHARSET_BUTTONS :
print ( warn_msg . format ( " [Charset Buttons] " ) )
return 3 , CHARSET_BUTTONS
return - 1 , cur_charset
2023-07-29 19:03:17 +02:00
2021-02-10 01:12:28 +01:00
def strip_c_comments ( text ) :
def replacer ( match ) :
s = match . group ( 0 )
2023-07-29 19:03:17 +02:00
if s . startswith ( " / " ) :
2021-02-10 01:12:28 +01:00
return " "
else :
return s
2023-07-29 19:03:17 +02:00
2021-02-10 01:12:28 +01:00
pattern = re . compile (
r ' //.*?$|/ \ *.*? \ */| \' (?: \\ .|[^ \\ \' ])* \' | " (?: \\ .|[^ \\ " ])* " ' ,
2023-07-29 19:03:17 +02:00
re . DOTALL | re . MULTILINE ,
2021-02-10 01:12:28 +01:00
)
return re . sub ( pattern , replacer , text )
2023-07-29 19:03:17 +02:00
2021-01-14 20:17:14 +01:00
if __name__ == " __main__ " :
if len ( argv ) < 3 :
2023-12-25 14:15:30 +01:00
print ( " usage: parse_compile.py [version] [in.msg] [out.msgpack] [--c] " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2023-12-25 14:15:30 +01:00
version = argv [ 1 ]
filename = argv [ 2 ]
outfile = argv [ 3 ]
2022-01-08 16:45:42 +01:00
is_output_format_c = " --c " in argv
2021-01-14 20:17:14 +01:00
messages = [ ]
message = None
with open ( filename , " r " ) as f :
2021-02-10 01:12:28 +01:00
source = strip_c_comments ( f . read ( ) )
2021-01-14 20:17:14 +01:00
lineno = 1
2021-02-10 01:12:28 +01:00
directive = " "
indent_level = 0
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset = CHARSET_KANA
2024-02-03 15:27:25 +01:00
elif version == " ique " :
charset = CHARSET_IQUE
2023-12-25 14:15:30 +01:00
else :
charset = CHARSET_STANDARD
2021-01-14 20:17:14 +01:00
font_stack = [ 0 ]
sound_stack = [ 0 ]
color_stack = [ 0x0A ]
2021-04-13 09:47:52 +02:00
fx_stack = [ ]
2021-02-10 01:12:28 +01:00
style = None
explicit_end = False
2021-04-13 09:47:52 +02:00
choiceindex = - 1
2021-01-14 20:17:14 +01:00
while len ( source ) > 0 :
2021-02-10 15:26:58 +01:00
if source [ 0 ] == " \r " or source [ 0 ] == " \t " :
2021-02-10 01:12:28 +01:00
source = source [ 1 : ]
continue
if source [ 0 ] == " \n " :
2021-01-14 20:17:14 +01:00
lineno + = 1
source = source [ 1 : ]
2021-02-10 01:12:28 +01:00
for i in range ( indent_level ) :
2021-02-10 15:26:58 +01:00
if source [ 0 ] == " \t " :
2021-02-10 01:12:28 +01:00
source = source [ 1 : ]
else :
break
2021-01-14 20:17:14 +01:00
continue
if message is None :
2021-02-10 01:12:28 +01:00
directive = " "
while source [ 0 ] != " " :
if source [ 0 ] == " \n " :
lineno + = 1
elif source [ 0 ] == " \r " :
pass
else :
directive + = source [ 0 ]
source = source [ 1 : ]
directive = directive . split ( " : " )
2022-01-08 16:45:42 +01:00
if directive [ 0 ] != " #message " :
print ( f " { filename } : { lineno } : expected #message directive " )
2021-02-10 01:12:28 +01:00
exit ( 1 )
2022-01-08 16:45:42 +01:00
if is_output_format_c :
if len ( directive ) != 2 :
print ( f " { filename } : { lineno } : expected #message:NAME directive " )
exit ( 1 )
2021-02-10 01:12:28 +01:00
2022-01-08 16:45:42 +01:00
message = Message ( directive [ 1 ] , None , None )
2021-01-14 20:17:14 +01:00
else :
2022-01-08 16:45:42 +01:00
if len ( directive ) != 3 :
print ( f " { filename } : { lineno } : expected #message:SECTION:INDEX directive " )
exit ( 1 )
2021-02-10 01:12:28 +01:00
2022-01-08 16:45:42 +01:00
section = int ( directive [ 1 ] , 16 )
if directive [ 2 ] . startswith ( " ( " ) and directive [ 2 ] . endswith ( " ) " ) :
name = directive [ 2 ] [ 1 : - 1 ]
index = None
else :
name = None
index = int ( directive [ 2 ] , 16 )
directive = " "
2021-02-10 01:12:28 +01:00
2022-01-08 16:45:42 +01:00
message = Message ( name , section , index )
2021-02-10 01:12:28 +01:00
messages . append ( message )
2021-01-14 20:17:14 +01:00
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset = CHARSET_KANA
2024-02-03 15:27:25 +01:00
elif version == " ique " :
charset = CHARSET_IQUE
2023-12-25 14:15:30 +01:00
else :
charset = CHARSET_STANDARD
2021-02-10 01:12:28 +01:00
while source [ 0 ] != " { " :
source = source [ 1 : ]
if source [ 0 ] == " \n " :
lineno + = 1
elif source [ 0 ] == " \r " :
pass
elif source [ 0 ] == " { " :
break
elif source [ 0 ] != " " and source [ 0 ] != " \t " :
print ( f " { filename } : { lineno } : expected opening brace ( ' {{ ' ) " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2023-07-29 19:03:17 +02:00
source = source [ 1 : ] # {
2021-02-10 01:12:28 +01:00
# count indent level
indent_level = 0
2021-02-10 15:26:58 +01:00
"""
2021-02-10 01:12:28 +01:00
while source [ 0 ] == " " or source [ 0 ] == " \t " or source [ 0 ] == " \n " or source [ 0 ] == " \r " :
if source [ 0 ] == " " or source [ 0 ] == " \t " :
indent_level + = 1
source = source [ 1 : ]
2021-02-10 15:26:58 +01:00
"""
2021-01-14 20:17:14 +01:00
else :
2021-04-13 09:47:52 +02:00
command , args , named_args , source = parse_command ( source )
2021-01-14 20:17:14 +01:00
if command :
2021-02-10 01:12:28 +01:00
if command == " end " :
2021-01-14 20:17:14 +01:00
message . bytes + = [ 0xFD ]
2021-02-10 01:12:28 +01:00
explicit_end = True
2021-01-14 20:17:14 +01:00
elif command == " raw " :
2021-02-10 01:12:28 +01:00
message . bytes + = [ * args ]
2021-01-14 20:17:14 +01:00
elif command == " br " :
message . bytes + = [ 0xF0 ]
2021-02-10 01:12:28 +01:00
elif command == " wait " :
2021-01-14 20:17:14 +01:00
message . bytes + = [ 0xF1 ]
2021-02-10 01:12:28 +01:00
elif command == " pause " :
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xF2 , args [ 0 ] ]
2021-01-14 20:17:14 +01:00
elif command == " next " :
message . bytes + = [ 0xFB ]
2021-04-13 09:47:52 +02:00
elif command == " yield " :
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x04 ]
2021-04-13 09:47:52 +02:00
elif command == " savecolor " :
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x24 ]
2021-04-13 09:47:52 +02:00
elif command == " restorecolor " :
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x25 ]
2021-01-14 20:17:14 +01:00
elif command == " color " :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : color command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
color = color_to_code ( args [ 0 ] , style )
2021-01-14 20:17:14 +01:00
if color is None :
2021-02-10 01:12:28 +01:00
print ( f " { filename } : { lineno } : unknown color " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
message . bytes + = [ 0xFF , 0x05 , color ]
2023-07-29 19:03:17 +02:00
# color_stack.append(color)
# elif command == "/color":
2021-02-10 01:12:28 +01:00
# color_stack.pop()
# message.bytes += [0xFF, 0x05, color_stack[0]]
2021-01-14 20:17:14 +01:00
elif command == " style " :
message . bytes + = [ 0xFC ]
2021-02-10 01:12:28 +01:00
style = args [ 0 ]
args = args [ 1 : ]
2021-01-14 20:17:14 +01:00
if type ( style ) is int :
2021-02-10 01:12:28 +01:00
message . bytes + = [ style , * args ]
2021-01-14 20:17:14 +01:00
else :
if style == " right " :
message . bytes + = [ 0x01 ]
elif style == " left " :
message . bytes + = [ 0x02 ]
elif style == " center " :
message . bytes + = [ 0x03 ]
elif style == " tattle " :
message . bytes + = [ 0x04 ]
elif style == " choice " :
2021-04-13 09:47:52 +02:00
pos = named_args . get ( " pos " )
if not isinstance ( pos , list ) or len ( pos ) != 2 :
print ( f " { filename } : { lineno } : ' choice ' style requires pos=_,_ " )
exit ( 1 )
size = named_args . get ( " size " )
if not isinstance ( size , list ) or len ( size ) != 2 :
print ( f " { filename } : { lineno } : ' choice ' style requires size=_,_ " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2023-07-29 19:03:17 +02:00
message . bytes + = [
0x05 ,
pos [ 0 ] ,
pos [ 1 ] ,
size [ 0 ] ,
size [ 1 ] ,
]
2021-01-14 20:17:14 +01:00
elif style == " inspect " :
message . bytes + = [ 0x06 ]
elif style == " sign " :
message . bytes + = [ 0x07 ]
elif style == " lamppost " :
2021-04-13 09:47:52 +02:00
height = named_args . get ( " height " )
if not isinstance ( height , int ) :
print ( f " { filename } : { lineno } : ' lamppost ' style requires height=_ " )
2021-02-10 01:12:28 +01:00
exit ( 1 )
2021-04-13 09:47:52 +02:00
message . bytes + = [ 0x08 , height ]
2021-01-14 20:17:14 +01:00
elif style == " postcard " :
2021-04-13 09:47:52 +02:00
index = named_args . get ( " index " )
if not isinstance ( index , int ) :
print ( f " { filename } : { lineno } : ' postcard ' style requires index=_ " )
2021-02-10 01:12:28 +01:00
exit ( 1 )
2021-04-13 09:47:52 +02:00
message . bytes + = [ 0x09 , index ]
2021-01-14 20:17:14 +01:00
elif style == " popup " :
message . bytes + = [ 0x0A ]
2023-12-25 14:15:30 +01:00
elif style == " popup2 " :
message . bytes + = [ 0x0B ]
2021-01-14 20:17:14 +01:00
elif style == " upgrade " :
2021-04-13 09:47:52 +02:00
pos = named_args . get ( " pos " )
if not isinstance ( pos , list ) or len ( pos ) != 2 :
print ( f " { filename } : { lineno } : ' upgrade ' style requires pos=_,_ " )
exit ( 1 )
size = named_args . get ( " size " )
if not isinstance ( size , list ) or len ( size ) != 2 :
print ( f " { filename } : { lineno } : ' upgrade ' style requires size=_,_ " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2023-07-29 19:03:17 +02:00
message . bytes + = [
0x0C ,
pos [ 0 ] ,
pos [ 1 ] ,
size [ 0 ] ,
size [ 1 ] ,
]
2021-01-14 20:17:14 +01:00
elif style == " narrate " :
message . bytes + = [ 0x0D ]
elif style == " epilogue " :
message . bytes + = [ 0x0E ]
elif command == " font " :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : font command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
font = args [ 0 ]
2021-01-14 20:17:14 +01:00
2021-04-13 09:47:52 +02:00
if font == " standard " :
2021-01-14 20:17:14 +01:00
font = 0
2021-04-13 09:47:52 +02:00
elif font == " menu " :
font = 1
2023-12-25 14:15:30 +01:00
elif font == " menu2 " :
font = 2
2021-01-14 20:17:14 +01:00
elif font == " title " :
font = 3
elif font == " subtitle " :
font = 4
if type ( font ) is not int :
print ( f " { filename } : { lineno } : unknown font ' { font } ' " )
exit ( 1 )
message . bytes + = [ 0xFF , 0x00 , font ]
2023-07-29 19:03:17 +02:00
# font_stack.append(font)
2021-01-14 20:17:14 +01:00
if font == 3 or font == 4 :
charset = CHARSET_CREDITS
else :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset = CHARSET_KANA
2024-02-03 15:27:25 +01:00
elif version == " ique " :
charset = CHARSET_IQUE
2023-12-25 14:15:30 +01:00
else :
charset = CHARSET_STANDARD
2021-02-10 01:12:28 +01:00
# elif command == "/font":
# font_stack.pop()
# message.bytes += [0xFF, 0x00, font_stack[0]]
# if font == 3 or font == 4:
# charset = CHARSET_CREDITS
# else:
# charset = CHARSET
2023-12-25 14:15:30 +01:00
elif command == " charset " :
if version != " jp " :
print ( f " { filename } : { lineno } : charset command is only supported in the JP version " )
exit ( 1 )
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : charset command requires 1 parameter " )
exit ( 1 )
arg_charset = args [ 0 ]
if arg_charset == " kana " :
arg_charset = 0
elif arg_charset == " latin " :
arg_charset = 1
elif arg_charset == " kanji " :
arg_charset = 2
elif arg_charset == " buttons " :
arg_charset = 3
if type ( arg_charset ) is not int :
print ( f " { filename } : { lineno } : unknown charset ' { arg_charset } ' " )
exit ( 1 )
message . bytes + = [ 0xF3 + arg_charset ]
if arg_charset == 0 :
charset = CHARSET_KANA
elif arg_charset == 1 :
charset = CHARSET_LATIN
elif arg_charset == 2 :
charset = CHARSET_KANJI
elif arg_charset == 3 :
charset = CHARSET_BUTTONS
2021-02-10 01:12:28 +01:00
elif command == " inputoff " :
2021-01-14 20:17:14 +01:00
message . bytes + = [ 0xFF , 0x07 ]
2021-02-10 01:12:28 +01:00
elif command == " inputon " :
2021-01-14 20:17:14 +01:00
message . bytes + = [ 0xFF , 0x08 ]
2021-02-10 01:12:28 +01:00
elif command == " delayoff " :
2021-01-14 20:17:14 +01:00
message . bytes + = [ 0xFF , 0x09 ]
2021-02-10 01:12:28 +01:00
elif command == " delayon " :
2021-01-14 20:17:14 +01:00
message . bytes + = [ 0xFF , 0x0A ]
2021-04-13 09:47:52 +02:00
elif command == " charwidth " :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x0B , args [ 0 ] ]
2021-01-14 20:17:14 +01:00
elif command == " scroll " :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x0C , args [ 0 ] ]
2021-01-14 20:17:14 +01:00
elif command == " size " :
2021-04-13 09:47:52 +02:00
args = args [ 0 ]
if len ( args ) == 1 :
args . append ( args [ 0 ] )
2021-02-10 01:12:28 +01:00
if len ( args ) != 2 :
print ( f " { filename } : { lineno } : { command } command requires 2 parameters " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-04-13 09:47:52 +02:00
message . bytes + = [ 0xFF , 0x0D , args [ 0 ] , args [ 1 ] ]
2021-02-10 01:12:28 +01:00
elif command == " sizereset " :
2021-01-14 20:17:14 +01:00
message . bytes + = [ 0xFF , 0x0E ]
elif command == " speed " :
2021-04-13 09:47:52 +02:00
delay = named_args . get ( " delay " )
if not isinstance ( delay , int ) :
print ( f " { filename } : { lineno } : { command } command requires delay=_ " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-04-13 09:47:52 +02:00
chars = named_args . get ( " chars " )
if not isinstance ( delay , int ) :
print ( f " { filename } : { lineno } : { command } command requires chars=_ " )
exit ( 1 )
message . bytes + = [ 0xFF , 0x0F , delay , chars ]
2021-02-10 01:12:28 +01:00
# elif command == "pos":
# if "y" not in named_args:
# print(f"{filename}:{lineno}: pos command requires parameter: y (x is optional)")
# exit(1)
# if "x" in named_args:
# message.bytes += [0xFF, 0x10, named_args["x"], named_args["y"]]
# else:
# message.bytes += [0xFF, 0x11, named_args["y"]]
2021-04-13 09:47:52 +02:00
elif command == " setposx " :
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-04-13 09:47:52 +02:00
message . bytes + = [ 0xFF , 0x10 , args [ 0 ] >> 8 , args [ 0 ] & 0xFF ]
elif command == " setposy " :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x11 , * args ]
2021-04-13 09:47:52 +02:00
elif command == " right " :
if len ( args ) == 0 :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [right] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0xB4 ]
else :
message . bytes + = [ 0x95 ]
2021-04-13 09:47:52 +02:00
else :
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
exit ( 1 )
message . bytes + = [ 0xFF , 0x12 , args [ 0 ] ]
elif command == " down " :
if len ( args ) == 0 :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [down] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0xB2 ]
else :
message . bytes + = [ 0x93 ]
2021-04-13 09:47:52 +02:00
else :
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
exit ( 1 )
message . bytes + = [ 0xFF , 0x13 , args [ 0 ] ]
elif command == " up " :
if len ( args ) == 0 :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [up] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0xB1 ]
else :
message . bytes + = [ 0x92 ]
2021-04-13 09:47:52 +02:00
else :
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
exit ( 1 )
message . bytes + = [ 0xFF , 0x14 , args [ 0 ] ]
elif command == " inlineimage " :
index = named_args . get ( " index " )
if not isinstance ( index , int ) :
print ( f " { filename } : { lineno } : { command } command requires index=_ " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-04-13 09:47:52 +02:00
message . bytes + = [ 0xFF , 0x15 , index ]
elif command == " animsprite " :
spriteid = named_args . get ( " spriteid " )
raster = named_args . get ( " raster " )
# TODO: named sprite id and raster
if not isinstance ( spriteid , int ) :
print ( f " { filename } : { lineno } : { command } command requires spriteid=_ " )
exit ( 1 )
if not isinstance ( raster , int ) :
print ( f " { filename } : { lineno } : { command } command requires raster=_ " )
exit ( 1 )
2023-07-29 19:03:17 +02:00
message . bytes + = [
0xFF ,
0x16 ,
spriteid >> 8 ,
spriteid & 0xFF ,
raster ,
]
2021-04-13 09:47:52 +02:00
elif command == " itemicon " :
itemid = named_args . get ( " itemid " )
# TODO: itemname
if not isinstance ( itemid , int ) :
print ( f " { filename } : { lineno } : { command } command requires itemid=_ " )
exit ( 1 )
message . bytes + = [ 0xFF , 0x17 , itemid >> 8 , itemid & 0xFF ]
elif command == " image " :
index = named_args . get ( " index " )
2023-07-29 19:03:17 +02:00
pos = named_args . get ( " pos " ) # xx,y
2021-04-13 09:47:52 +02:00
hasborder = named_args . get ( " hasborder " )
alpha = named_args . get ( " alpha " )
fadeamount = named_args . get ( " fadeamount " )
if not isinstance ( index , int ) :
print ( f " { filename } : { lineno } : { command } command requires index=_ " )
exit ( 1 )
if not isinstance ( pos , list ) or len ( pos ) != 2 :
print ( f " { filename } : { lineno } : { command } command requires pos=_,_ " )
exit ( 1 )
if not isinstance ( hasborder , int ) :
print ( f " { filename } : { lineno } : { command } command requires hasborder=_ " )
exit ( 1 )
if not isinstance ( alpha , int ) :
print ( f " { filename } : { lineno } : { command } command requires alpha=_ " )
exit ( 1 )
if not isinstance ( fadeamount , int ) :
print ( f " { filename } : { lineno } : { command } command requires fadeamount=_ " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2023-07-29 19:03:17 +02:00
message . bytes + = [
0xFF ,
0x18 ,
index ,
pos [ 0 ] >> 8 ,
pos [ 0 ] & 0xFF ,
pos [ 1 ] ,
hasborder ,
alpha ,
fadeamount ,
]
2021-04-13 09:47:52 +02:00
elif command == " hideimage " :
fadeamount = named_args . get ( " fadeamount " , 0 )
if not isinstance ( fadeamount , int ) :
print ( f " { filename } : { lineno } : { command } command requires fadeamount=_ " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
2021-04-13 09:47:52 +02:00
message . bytes + = [ 0xFF , 0x19 , fadeamount ]
elif command == " animdelay " :
index = named_args . get ( " index " )
delay = named_args . get ( " delay " )
if not isinstance ( index , int ) :
print ( f " { filename } : { lineno } : { command } command requires index=_ " )
exit ( 1 )
if not isinstance ( delay , int ) :
print ( f " { filename } : { lineno } : { command } command requires delay=_ " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-04-13 09:47:52 +02:00
message . bytes + = [ 0xFF , 0x1A , 0 , index , delay ]
elif command == " animloop " :
2021-04-18 15:26:00 +02:00
if len ( args ) != 2 :
print ( f " { filename } : { lineno } : { command } command requires 2 parameters " )
exit ( 1 )
message . bytes + = [ 0xFF , 0x1B , args [ 0 ] , args [ 1 ] ]
2021-04-13 09:47:52 +02:00
elif command == " animdone " :
2021-04-18 15:26:00 +02:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
exit ( 1 )
message . bytes + = [ 0xFF , 0x1C , args [ 0 ] ]
2021-04-13 09:47:52 +02:00
elif command == " setcursorpos " :
index = named_args . get ( " index " )
pos = named_args . get ( " pos " )
if not isinstance ( index , int ) :
print ( f " { filename } : { lineno } : { command } command requires index=_ " )
exit ( 1 )
if not isinstance ( pos , list ) or len ( pos ) != 2 :
print ( f " { filename } : { lineno } : { command } command requires pos=_,_ " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-04-13 09:47:52 +02:00
message . bytes + = [ 0xFF , 0x1D , index , pos , pos ]
2021-01-14 20:17:14 +01:00
elif command == " cursor " :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : cursor command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x1E , * args ]
2021-04-13 09:47:52 +02:00
elif command == " option " and choiceindex == - 1 :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : option command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x21 , * args ]
2021-04-13 09:47:52 +02:00
elif command == " endchoice " and choiceindex == - 1 :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x1F , args [ 0 ] ]
elif command == " setcancel " :
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x20 , args [ 0 ] ]
2021-04-13 09:47:52 +02:00
# elif command == "startfx":
# message.bytes += [0xFF, 0x26, resolve_effect(args[0]), *args[1:]]
# elif command == "endfx":
# message.bytes += [0xFF, 0x27, resolve_effect(args[0]), *args[1:]]
elif command == " /fx " :
message . bytes + = [ 0xFF , 0x27 , fx_stack . pop ( ) ]
elif command == " shake " :
fx_stack . append ( 0x00 )
message . bytes + = [ 0xFF , 0x26 , 0x00 ]
elif command == " /shake " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x00 ]
elif command == " wave " :
fx_stack . append ( 0x01 )
message . bytes + = [ 0xFF , 0x26 , 0x01 ]
elif command == " /wave " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x01 ]
elif command == " noiseoutline " :
fx_stack . append ( 0x02 )
message . bytes + = [ 0xFF , 0x26 , 0x02 ]
elif command == " /noiseoutline " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x02 ]
elif command == " static " :
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
exit ( 1 )
fx_stack . append ( 0x03 )
message . bytes + = [ 0xFF , 0x26 , 0x03 , args [ 0 ] ]
elif command == " /static " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x03 ]
elif command == " blur " :
_dir = named_args . get ( " dir " )
if _dir == " x " :
_dir = 0
elif _dir == " y " :
_dir = 1
elif _dir == " xy " :
_dir = 2
if not isinstance ( _dir , int ) :
print ( f " { filename } : { lineno } : { command } command requires dir=_ " )
exit ( 1 )
fx_stack . append ( 0x05 )
message . bytes + = [ 0xFF , 0x26 , 0x05 , _dir ]
elif command == " /blur " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x05 ]
elif command == " rainbow " :
fx_stack . append ( 0x06 )
2021-09-08 12:36:06 +02:00
message . bytes + = [ 0xFF , 0x26 , 0x06 ]
2021-04-13 09:47:52 +02:00
elif command == " /rainbow " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x06 ]
elif command == " ditherfade " :
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
exit ( 1 )
fx_stack . append ( 0x07 )
message . bytes + = [ 0xFF , 0x26 , 0x07 , args [ 0 ] ]
elif command == " /ditherfade " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x07 ]
elif command == " printrising " :
fx_stack . append ( 0x0A )
message . bytes + = [ 0xFF , 0x26 , 0x0A ]
elif command == " /printrising " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x0A ]
elif command == " printgrowing " :
fx_stack . append ( 0x0B )
message . bytes + = [ 0xFF , 0x26 , 0x0B ]
elif command == " /printgrowing " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x0B ]
elif command == " sizejitter " :
fx_stack . append ( 0x0C )
message . bytes + = [ 0xFF , 0x26 , 0x0C ]
elif command == " /sizejitter " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x0C ]
elif command == " sizewave " :
fx_stack . append ( 0x0D )
message . bytes + = [ 0xFF , 0x26 , 0x0D ]
elif command == " /sizewave " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x0D ]
elif command == " dropshadow " :
fx_stack . append ( 0x0E )
message . bytes + = [ 0xFF , 0x26 , 0x0E ]
elif command == " /dropshadow " :
fx_stack . pop ( )
message . bytes + = [ 0xFF , 0x27 , 0x0E ]
2021-01-14 20:17:14 +01:00
elif command == " var " :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : var command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x28 , * args ]
2021-04-13 09:47:52 +02:00
elif command == " centerx " :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x29 , * args ]
2021-04-13 09:47:52 +02:00
elif command == " rewindoff " :
message . bytes + = [ 0xFF , 0x2A , 0 ]
elif command == " rewindon " :
message . bytes + = [ 0xFF , 0x2A , 1 ]
elif command == " customvoice " :
soundids = named_args . get ( " soundids " )
if not isinstance ( soundids , list ) or len ( pos ) != 2 :
print ( f " { filename } : { lineno } : { command } command requires soundids=_,_ " )
exit ( 1 )
message . bytes + = [
2023-07-29 19:03:17 +02:00
0xFF ,
0x2C ,
soundids [ 0 ] >> 24 ,
( soundids [ 0 ] >> 16 ) & 0xFF ,
( soundids [ 0 ] >> 8 ) & 0xFF ,
soundids [ 0 ] & 0xFF ,
soundids [ 1 ] >> 24 ,
( soundids [ 1 ] >> 16 ) & 0xFF ,
( soundids [ 1 ] >> 8 ) & 0xFF ,
soundids [ 1 ] & 0xFF ,
2021-04-13 09:47:52 +02:00
]
2021-01-14 20:17:14 +01:00
elif command == " volume " :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x2E , * args ]
2021-04-13 09:47:52 +02:00
elif command == " voice " :
2021-02-10 01:12:28 +01:00
if len ( args ) != 1 :
print ( f " { filename } : { lineno } : { command } command requires 1 parameter " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2021-02-10 01:12:28 +01:00
sound = args [ 0 ]
2021-01-14 20:17:14 +01:00
2021-04-13 09:47:52 +02:00
if sound == " normal " :
sound = 0
elif sound == " bowser " :
sound = 1
elif sound == " star " or sound == " spirit " :
sound = 2
2021-01-14 20:17:14 +01:00
if type ( sound ) is not int :
2021-04-13 09:47:52 +02:00
print ( f " { filename } : { lineno } : unknown voice ' { sound } ' " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
message . bytes + = [ 0xFF , 0x2F , sound ]
2023-07-29 19:03:17 +02:00
# sound_stack.append(sound)
2021-02-10 01:12:28 +01:00
# elif command == "/sound":
# sound_stack.pop()
# message.bytes += [0xFF, 0x2F, sound_stack[0]]
2021-01-14 20:17:14 +01:00
elif command == " a " :
2021-04-13 09:47:52 +02:00
color_code = color_to_code ( " blue " , " button " )
assert color_code is not None
2023-12-25 14:15:30 +01:00
if version == " jp " :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xF6 ,
0x00 ,
0xFF ,
0x25 ,
]
else :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0x98 ,
0xFF ,
0x25 ,
]
2021-01-14 20:17:14 +01:00
elif command == " b " :
2023-07-29 19:03:17 +02:00
color_code = color_to_code (
named_args . get ( " color " , " green " ) ,
named_args . get ( " ctx " , " button " ) ,
)
2021-04-13 09:47:52 +02:00
assert color_code is not None
2023-12-25 14:15:30 +01:00
if version == " jp " :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xF6 ,
0x01 ,
0xFF ,
0x25 ,
]
else :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0x99 ,
0xFF ,
0x25 ,
]
2021-01-14 20:17:14 +01:00
elif command == " l " :
2023-07-29 19:03:17 +02:00
color_code = color_to_code (
named_args . get ( " color " , " gray " ) ,
named_args . get ( " ctx " , " button " ) ,
)
2021-04-13 09:47:52 +02:00
assert color_code is not None
2023-12-25 14:15:30 +01:00
if version == " jp " :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xF6 ,
0x08 ,
0xFF ,
0x25 ,
]
else :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0x9A ,
0xFF ,
0x25 ,
]
2021-01-14 20:17:14 +01:00
elif command == " r " :
2023-07-29 19:03:17 +02:00
color_code = color_to_code (
named_args . get ( " color " , " gray " ) ,
named_args . get ( " ctx " , " button " ) ,
)
2021-04-13 09:47:52 +02:00
assert color_code is not None
2023-12-25 14:15:30 +01:00
if version == " jp " :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xF6 ,
0x09 ,
0xFF ,
0x25 ,
]
else :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0x9B ,
0xFF ,
0x25 ,
]
2021-01-14 20:17:14 +01:00
elif command == " z " :
2021-04-13 09:47:52 +02:00
color_code = color_to_code ( " grey " , " button " )
assert color_code is not None
2023-12-25 14:15:30 +01:00
if version == " jp " :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xF6 ,
0x07 ,
0xFF ,
0x25 ,
]
else :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0x9C ,
0xFF ,
0x25 ,
]
2021-01-14 20:17:14 +01:00
elif command == " c-up " :
2023-07-29 19:03:17 +02:00
color_code = color_to_code (
named_args . get ( " color " , " yellow " ) ,
named_args . get ( " ctx " , " button " ) ,
)
2021-04-13 09:47:52 +02:00
assert color_code is not None
2023-12-25 14:15:30 +01:00
if version == " jp " :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xF6 ,
0x03 ,
0xFF ,
0x25 ,
]
else :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0x9D ,
0xFF ,
0x25 ,
]
2021-01-14 20:17:14 +01:00
elif command == " c-down " :
2023-07-29 19:03:17 +02:00
color_code = color_to_code (
named_args . get ( " color " , " yellow " ) ,
named_args . get ( " ctx " , " button " ) ,
)
2021-04-13 09:47:52 +02:00
assert color_code is not None
2023-12-25 14:15:30 +01:00
if version == " jp " :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xF6 ,
0x04 ,
0xFF ,
0x25 ,
]
else :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0x9E ,
0xFF ,
0x25 ,
]
2021-01-14 20:17:14 +01:00
elif command == " c-left " :
2023-07-29 19:03:17 +02:00
color_code = color_to_code (
named_args . get ( " color " , " yellow " ) ,
named_args . get ( " ctx " , " button " ) ,
)
2021-04-13 09:47:52 +02:00
assert color_code is not None
2023-12-25 14:15:30 +01:00
if version == " jp " :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xF6 ,
0x05 ,
0xFF ,
0x25 ,
]
else :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0x9F ,
0xFF ,
0x25 ,
]
2021-01-14 20:17:14 +01:00
elif command == " c-right " :
2023-07-29 19:03:17 +02:00
color_code = color_to_code (
named_args . get ( " color " , " yellow " ) ,
named_args . get ( " ctx " , " button " ) ,
)
2021-04-13 09:47:52 +02:00
assert color_code is not None
2023-12-25 14:15:30 +01:00
if version == " jp " :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xF6 ,
0x06 ,
0xFF ,
0x25 ,
]
else :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xA0 ,
0xFF ,
0x25 ,
]
2021-01-14 20:17:14 +01:00
elif command == " start " :
2023-07-29 19:03:17 +02:00
color_code = color_to_code (
named_args . get ( " color " , " red " ) ,
named_args . get ( " ctx " , " button " ) ,
) #
2021-04-13 09:47:52 +02:00
assert color_code is not None
2023-12-25 14:15:30 +01:00
if version == " jp " :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xF6 ,
0x02 ,
0xFF ,
0x25 ,
]
else :
message . bytes + = [
0xFF ,
0x24 ,
0xFF ,
0x05 ,
color_code ,
0xA1 ,
0xFF ,
0x25 ,
]
2021-04-13 09:47:52 +02:00
elif command == " ~a " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [~a] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x00 ]
else :
message . bytes + = [ 0x98 ]
2021-04-13 09:47:52 +02:00
elif command == " ~b " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [~b] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x01 ]
else :
message . bytes + = [ 0x99 ]
2021-04-13 09:47:52 +02:00
elif command == " ~l " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [~l] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x08 ]
else :
message . bytes + = [ 0x9A ]
2021-04-13 09:47:52 +02:00
elif command == " ~r " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [~r] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x09 ]
else :
message . bytes + = [ 0x9B ]
2021-04-13 09:47:52 +02:00
elif command == " ~z " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [~z] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x07 ]
else :
message . bytes + = [ 0x9C ]
2021-04-13 09:47:52 +02:00
elif command == " ~c-up " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [~c-up] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x03 ]
else :
message . bytes + = [ 0x9D ]
2021-04-13 09:47:52 +02:00
elif command == " ~c-down " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [~c-down] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x04 ]
else :
message . bytes + = [ 0x9E ]
2021-04-13 09:47:52 +02:00
elif command == " ~c-left " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [~c-left] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x05 ]
else :
message . bytes + = [ 0x9F ]
2021-04-13 09:47:52 +02:00
elif command == " ~c-right " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [~c-right] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x06 ]
else :
message . bytes + = [ 0xA0 ]
2021-04-13 09:47:52 +02:00
elif command == " ~start " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [~start] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x02 ]
else :
message . bytes + = [ 0xA1 ]
2021-01-14 20:17:14 +01:00
elif command == " note " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [note] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x6A ]
else :
message . bytes + = [ 0x00 ]
2021-01-14 20:17:14 +01:00
elif command == " heart " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [heart] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0xBD ]
else :
message . bytes + = [ 0x90 ]
2021-01-14 20:17:14 +01:00
elif command == " star " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [star] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0xBE ]
else :
message . bytes + = [ 0x91 ]
2021-02-10 01:12:28 +01:00
elif command == " left " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [left] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0xB3 ]
else :
message . bytes + = [ 0x94 ]
2021-01-14 20:17:14 +01:00
elif command == " circle " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [circle] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x61 ]
else :
message . bytes + = [ 0x96 ]
2021-01-14 20:17:14 +01:00
elif command == " cross " :
2023-12-25 14:15:30 +01:00
if version == " jp " :
charset_byte , charset = check_if_correct_charset ( " [cross] " , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0x62 ]
else :
message . bytes + = [ 0x97 ]
elif command == " katakana " :
if version != " jp " :
print ( f " { filename } : { lineno } : Command katakana is only supported in the JP version " )
exit ( 1 )
kana_char = args [ 0 ]
if kana_char == " smalln " :
charset_byte , charset = check_if_correct_charset (
" [katakana smalln] " , charset , filename , lineno
)
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0xC5 ]
else :
print ( f " { filename } : { lineno } : Invalid or unimplemented katakana character name { kana_char } " )
exit ( 1 )
elif command == " hiragana " :
if version != " jp " :
print ( f " { filename } : { lineno } : Command hiragana is only supported in the JP version " )
exit ( 1 )
kana_char = args [ 0 ]
if kana_char == " smalln " :
charset_byte , charset = check_if_correct_charset (
" [hiragana smalln] " , charset , filename , lineno
)
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
message . bytes + = [ 0xC4 ]
else :
print ( f " { filename } : { lineno } : Invalid or unimplemented hiragana character name { kana_char } " )
exit ( 1 )
elif command == " fullspace " :
message . bytes + = [ 0xF8 ]
elif command == " halfspace " :
message . bytes + = [ 0xF9 ]
2021-04-13 09:47:52 +02:00
elif command == " savepos " :
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x22 ]
2021-04-13 09:47:52 +02:00
elif command == " restorepos " :
2021-02-10 01:12:28 +01:00
message . bytes + = [ 0xFF , 0x23 ]
2021-04-13 09:47:52 +02:00
elif command == " enablecdownnext " :
2023-07-29 19:03:17 +02:00
message . bytes + = [ 0xFF , 0x2B ]
2021-04-13 09:47:52 +02:00
elif command == " beginchoice " :
choiceindex = 0
2023-07-29 19:03:17 +02:00
message . bytes + = [ 0xFF , 0x09 ] # delayoff
2021-04-13 09:47:52 +02:00
elif command == " option " and choiceindex > = 0 :
2023-07-29 19:03:17 +02:00
message . bytes + = [ 0xFF , 0x1E , choiceindex ] # cursor n
message . bytes + = [ 0xFF , 0x21 , choiceindex ] # option n
2021-04-13 09:47:52 +02:00
choiceindex + = 1
elif command == " endchoice " and choiceindex > = 0 :
cancel = named_args . get ( " cancel " )
2023-07-29 19:03:17 +02:00
message . bytes + = [ 0xFF , 0x21 , 255 ] # option 255
message . bytes + = [ 0xFF , 0x0A ] # delayon
2021-04-13 09:47:52 +02:00
if isinstance ( cancel , int ) :
2023-07-29 19:03:17 +02:00
message . bytes + = [ 0xFF , 0x20 , cancel ] # setcancel n
2021-04-13 09:47:52 +02:00
2023-07-29 19:03:17 +02:00
message . bytes + = [ 0xFF , 0x1F , choiceindex ] # endchoice n
2021-04-13 09:47:52 +02:00
choiceindex = - 1
elif command == " animation " and choiceindex > = 0 :
# TODO
print ( f " { filename } : { lineno } : ' { command } ' tag is not yet implemented " )
exit ( 1 )
2021-01-14 20:17:14 +01:00
else :
print ( f " { filename } : { lineno } : unknown command ' { command } ' " )
exit ( 1 )
else :
2021-02-10 01:12:28 +01:00
if source [ 0 ] == " } " :
if not explicit_end :
2021-02-10 14:43:55 +01:00
print ( f " { filename } : { lineno } : warning: string lacks an [end] command " )
2023-07-29 19:03:17 +02:00
# message.bytes += [0xFD]
2021-02-10 01:12:28 +01:00
explicit_end = False
2021-04-13 09:47:52 +02:00
# sanity check
for b in message . bytes :
if not isinstance ( b , int ) :
print ( b )
2021-02-10 01:12:28 +01:00
# padding
while len ( message . bytes ) % 4 != 0 :
message . bytes + = [ 0x00 ]
message = None
2023-07-29 19:03:17 +02:00
source = source [ 1 : ] # }
2021-02-10 01:12:28 +01:00
indent_level = 0
2021-04-13 09:47:52 +02:00
choiceindex = - 1
2021-02-10 01:12:28 +01:00
continue
2021-01-14 20:17:14 +01:00
if source [ 0 ] == " \\ " :
source = source [ 1 : ]
2023-12-25 14:15:30 +01:00
if version == " jp " and charset is not CHARSET_CREDITS :
charset_byte , charset = check_if_correct_charset ( source [ 0 ] , charset , filename , lineno )
if charset_byte != - 1 :
message . bytes + = [ 0xF3 + charset_byte ]
elif (
source [ 0 ] not in CHARSET_KANA
and source [ 0 ] not in CHARSET_LATIN
and source [ 0 ] not in CHARSET_KANJI
and source [ 0 ] not in CHARSET_BUTTONS
) :
print ( f " { filename } : { lineno } : unsupported character ' { source [ 0 ] } ' for current font " )
exit ( 1 )
2021-01-14 20:17:14 +01:00
data = charset [ source [ 0 ] ]
if type ( data ) is int :
message . bytes . append ( data )
else :
message . bytes + = data
source = source [ 1 : ]
else :
2023-12-25 14:15:30 +01:00
if source [ 0 ] in charset :
data = charset [ source [ 0 ] ]
if type ( data ) is int :
message . bytes . append ( data )
else :
message . bytes + = data
source = source [ 1 : ]
else :
print ( f " { filename } : { lineno } : unsupported character ' { source [ 0 ] } ' for current font " )
exit ( 1 )
2021-01-14 20:17:14 +01:00
if message != None :
2021-04-13 09:47:52 +02:00
print ( f " { filename } : missing [end] " )
2021-01-14 20:17:14 +01:00
exit ( 1 )
2022-01-08 16:45:42 +01:00
if is_output_format_c :
with open ( outfile , " w " ) as f :
f . write ( f " #include <ultra64.h> \n " )
for message in messages :
f . write ( f " static s8 { message . name } [] = {{ \n " )
for b in message . bytes :
f . write ( f " 0x { b : 02X } , " )
f . write ( f " \n }} ; \n " )
else :
with open ( outfile , " wb " ) as f :
2023-07-29 19:03:17 +02:00
msgpack . pack (
[
{
" section " : message . section ,
" index " : message . index ,
" name " : message . name ,
" bytes " : bytes ( message . bytes ) ,
}
for message in messages
] ,
f ,
)